|  | " Vim syntax file | 
|  | " Language: Thrift | 
|  | " Maintainer: Martin Smith <martin@facebook.com> | 
|  | " Last Change: $Date: $ | 
|  | " Copy to ~/.vim/ | 
|  | " Add to ~/.vimrc | 
|  | "  au BufRead,BufNewFile *.thrift set filetype=thrift | 
|  | "  au! Syntax thrift source ~/.vim/thrift.vim | 
|  | " | 
|  | " $Id: $ | 
|  |  | 
|  | if version < 600 | 
|  | syntax clear | 
|  | elseif exists("b:current_syntax") | 
|  | finish | 
|  | endif | 
|  |  | 
|  | " Todo | 
|  | syn keyword thriftTodo TODO todo FIXME fixme XXX xxx contained | 
|  |  | 
|  | " Comments | 
|  | syn match thriftComment "#.*" contains=thriftTodo | 
|  | syn region thriftComment start="/\*" end="\*/" contains=thriftTodo | 
|  | syn match thriftComment "//.\{-}\(?>\|$\)\@=" | 
|  |  | 
|  | " String | 
|  | syn region thriftStringDouble matchgroup=None start=+"+  end=+"+ | 
|  |  | 
|  | " Number | 
|  | syn match thriftNumber "-\=\<\d\+\>" contained | 
|  |  | 
|  | " Keywords | 
|  | syn keyword thriftKeyword namespace | 
|  | syn keyword thriftKeyword php_namespace | 
|  | syn keyword thriftKeyword xsd_all xsd_optional xsd_nillable xsd_namespace xsd_attrs | 
|  | syn keyword thriftKeyword include cpp_include cpp_type const optional required | 
|  | syn keyword thriftBasicTypes void bool byte i16 i32 i64 double string binary | 
|  | syn keyword thriftStructure map list set struct typedef exception enum throws | 
|  |  | 
|  | " Special | 
|  | syn match thriftSpecial "\d\+:" | 
|  |  | 
|  | " Structure | 
|  | syn keyword thriftStructure service async extends | 
|  | "async"         { return tok_async;         } | 
|  | "exception"     { return tok_xception;      } | 
|  | "extends"       { return tok_extends;       } | 
|  | "throws"        { return tok_throws;        } | 
|  | "service"       { return tok_service;       } | 
|  | "enum"          { return tok_enum;          } | 
|  | "const"         { return tok_const;         } | 
|  |  | 
|  | if version >= 508 || !exists("did_thrift_syn_inits") | 
|  | if version < 508 | 
|  | let did_thrift_syn_inits = 1 | 
|  | command! -nargs=+ HiLink hi link <args> | 
|  | else | 
|  | command! -nargs=+ HiLink hi def link <args> | 
|  | endif | 
|  |  | 
|  | HiLink thriftComment Comment | 
|  | HiLink thriftKeyword Special | 
|  | HiLink thriftBasicTypes Type | 
|  | HiLink thriftStructure StorageClass | 
|  | HiLink thriftTodo Todo | 
|  | HiLink thriftString String | 
|  | HiLink thriftNumber Number | 
|  | HiLink thriftSpecial Special | 
|  | HiLink thriftStructure Structure | 
|  |  | 
|  | delcommand HiLink | 
|  | endif | 
|  |  | 
|  | let b:current_syntax = "thrift" |