citadel

My dotfiles, scripts and nix configs
git clone git://jb55.com/citadel
Log | Files | Refs | README | LICENSE

thrift.vim (2837B)


      1 " 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 "
     12 " Licensed to the Apache Software Foundation (ASF) under one
     13 " or more contributor license agreements. See the NOTICE file
     14 " distributed with this work for additional information
     15 " regarding copyright ownership. The ASF licenses this file
     16 " to you under the Apache License, Version 2.0 (the
     17 " "License"); you may not use this file except in compliance
     18 " with the License. You may obtain a copy of the License at
     19 "
     20 "   http://www.apache.org/licenses/LICENSE-2.0
     21 "
     22 " Unless required by applicable law or agreed to in writing,
     23 " software distributed under the License is distributed on an
     24 " "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     25 " KIND, either express or implied. See the License for the
     26 " specific language governing permissions and limitations
     27 " under the License.
     28 "
     29 
     30 if version < 600
     31   syntax clear
     32 elseif exists("b:current_syntax")
     33   finish
     34 endif
     35 
     36 " Todo
     37 syn keyword thriftTodo TODO todo FIXME fixme XXX xxx contained
     38 
     39 " Comments
     40 syn match thriftComment "#.*" contains=thriftTodo
     41 syn region thriftComment start="/\*" end="\*/" contains=thriftTodo
     42 syn match thriftComment "//.\{-}\(?>\|$\)\@="
     43 
     44 " String
     45 syn region thriftStringDouble matchgroup=None start=+"+  end=+"+
     46 
     47 " Number
     48 syn match thriftNumber "-\=\<\d\+\>" contained
     49 
     50 " Keywords
     51 syn keyword thriftKeyword namespace
     52 syn keyword thriftKeyword xsd_all xsd_optional xsd_nillable xsd_attrs
     53 syn keyword thriftKeyword include cpp_include cpp_type const optional required
     54 syn keyword thriftBasicTypes void bool byte i16 i32 i64 double string binary
     55 syn keyword thriftStructure map list set struct typedef exception enum throws
     56 
     57 " Special
     58 syn match thriftSpecial "\d\+:"
     59 
     60 " Structure
     61 syn keyword thriftStructure service oneway extends
     62 "async"         { return tok_async;         }
     63 "exception"     { return tok_xception;      }
     64 "extends"       { return tok_extends;       }
     65 "throws"        { return tok_throws;        }
     66 "service"       { return tok_service;       }
     67 "enum"          { return tok_enum;          }
     68 "const"         { return tok_const;         }
     69 
     70 if version >= 508 || !exists("did_thrift_syn_inits")
     71   if version < 508
     72     let did_thrift_syn_inits = 1
     73     command! -nargs=+ HiLink hi link <args>
     74   else
     75     command! -nargs=+ HiLink hi def link <args>
     76   endif
     77 
     78   HiLink thriftComment Comment
     79   HiLink thriftKeyword Special
     80   HiLink thriftBasicTypes Type
     81   HiLink thriftStructure StorageClass
     82   HiLink thriftTodo Todo
     83   HiLink thriftString String
     84   HiLink thriftNumber Number
     85   HiLink thriftSpecial Special
     86   HiLink thriftStructure Structure
     87 
     88   delcommand HiLink
     89 endif
     90 
     91 let b:current_syntax = "thrift"