blob: bb849a305a89b199f0a47daa141cd0e872a2ddf0 [file] [log] [blame]
Martin Kraemer8ca2d092007-05-15 23:24:30 +00001" Vim syntax file
2" Language: Thrift
3" Maintainer: Martin Smith <martin@facebook.com>
4" Last Change: $Date: $
5" Copy to ~/.vim/
6" Add to ~/.vimrc
7" au BufRead,BufNewFile *.thrift set filetype=thrift
8" au! Syntax thrift source ~/.vim/thrift.vim
9"
10" $Id: $
11
12if version < 600
13 syntax clear
14elseif exists("b:current_syntax")
15 finish
16endif
17
18" Todo
19syn keyword thriftTodo TODO todo FIXME fixme XXX xxx contained
20
21" Comments
22syn match thriftComment "#.*" contains=thriftTodo
23syn region thriftComment start="/\*" end="\*/" contains=thriftTodo
24syn match thriftComment "//.\{-}\(?>\|$\)\@="
25
26" String
27syn region thriftStringDouble matchgroup=None start=+"+ end=+"+
28
29" Number
30syn match thriftNumber "-\=\<\d\+\>" contained
31
32" Keywords
David Reissae8f1d32007-09-12 01:45:12 +000033syn keyword thriftKeyword namespace cpp_namespace java_package cocoa_prefix
David Reiss7f42bcf2008-01-11 20:59:12 +000034syn keyword thriftKeyword csharp_namespace smalltalk_category smalltalk_prefix
35syn keyword thriftKeyword php_namespace ruby_namespace py_module perl_package
David Reiss8320a922007-08-14 19:59:26 +000036syn keyword thriftKeyword xsd_all xsd_optional xsd_nillable xsd_namespace xsd_attrs
37syn keyword thriftKeyword include cpp_include cpp_type const optional required
38syn keyword thriftBasicTypes void bool byte i16 i32 i64 double string binary
Martin Kraemer8ca2d092007-05-15 23:24:30 +000039syn keyword thriftStructure map list set struct typedef exception enum throws
40
41" Special
42syn match thriftSpecial "\d\+:"
43
44" Structure
45syn keyword thriftStructure service async extends
46"async" { return tok_async; }
47"exception" { return tok_xception; }
48"extends" { return tok_extends; }
49"throws" { return tok_throws; }
50"service" { return tok_service; }
51"enum" { return tok_enum; }
52"const" { return tok_const; }
53
54if version >= 508 || !exists("did_thrift_syn_inits")
55 if version < 508
56 let did_thrift_syn_inits = 1
57 command! -nargs=+ HiLink hi link <args>
58 else
59 command! -nargs=+ HiLink hi def link <args>
60 endif
61
62 HiLink thriftComment Comment
63 HiLink thriftKeyword Special
64 HiLink thriftBasicTypes Type
65 HiLink thriftStructure StorageClass
66 HiLink thriftTodo Todo
67 HiLink thriftString String
68 HiLink thriftNumber Number
69 HiLink thriftSpecial Special
70 HiLink thriftStructure Structure
David Reiss61481752007-08-06 20:56:30 +000071
72 delcommand HiLink
Martin Kraemer8ca2d092007-05-15 23:24:30 +000073endif
74
Mark Slee4b338132008-01-16 21:29:45 +000075let b:current_syntax = "thrift"