summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2014-12-11 23:02:50 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2014-12-11 23:02:50 +0100
commitbbc6be1099dee66a69dd4d44e029c4c2dc37aee0 (patch)
treeb2ddaa79c35155bcaf5ab276b4644401c532706a
parent7f2e3663341d725b073857fcd3b2f5868ce85248 (diff)
downloadvim-polyglot-bbc6be1099dee66a69dd4d44e029c4c2dc37aee0.tar.gz
vim-polyglot-bbc6be1099dee66a69dd4d44e029c4c2dc37aee0.zip
Add thrift language support, closes #49
-rw-r--r--README.md1
-rwxr-xr-xbuild1
-rw-r--r--ftdetect/polyglot.vim1
-rw-r--r--syntax/thrift.vim98
4 files changed, 101 insertions, 0 deletions
diff --git a/README.md b/README.md
index 08509ee3..f84a1bfb 100644
--- a/README.md
+++ b/README.md
@@ -80,6 +80,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
- [tomdoc](https://github.com/duwanis/tomdoc.vim) (syntax)
- [typescript](https://github.com/leafgarland/typescript-vim) (syntax, compiler, ftplugin, ftdetect)
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
+- [thrift](https://github.com/solarnz/thrift.vim) (syntax, ftdetect)
- [toml](https://github.com/cespare/vim-toml) (syntax, ftdetect)
- [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect)
- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)
diff --git a/build b/build
index 40927cb7..c926985e 100755
--- a/build
+++ b/build
@@ -123,6 +123,7 @@ PACKS="
tomdoc:duwanis/tomdoc.vim
typescript:leafgarland/typescript-vim
vbnet:vim-scripts/vbnet.vim
+ thrift:solarnz/thrift.vim
toml:cespare/vim-toml
twig:beyondwords/vim-twig
xls:vim-scripts/XSLT-syntax
diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim
index 0e60f3ab..042316e3 100644
--- a/ftdetect/polyglot.vim
+++ b/ftdetect/polyglot.vim
@@ -195,6 +195,7 @@ au BufNewFile,BufRead *.swap set filetype=systemd
au BufNewFile,BufRead *.target set filetype=systemd
au BufNewFile,BufRead *.timer set filetype=systemd
au BufRead,BufNewFile *.textile set filetype=textile
+au BufNewFile,BufRead *.thrift setlocal filetype=thrift
autocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux
autocmd BufNewFile,BufRead *.toml set filetype=toml
autocmd BufNewFile,BufRead *.twig set filetype=twig
diff --git a/syntax/thrift.vim b/syntax/thrift.vim
new file mode 100644
index 00000000..da8ebe2e
--- /dev/null
+++ b/syntax/thrift.vim
@@ -0,0 +1,98 @@
+" Vim syntax file
+" Language: Thrift
+" Maintainer: Martin Smith <martin@facebook.com>
+" Last Change: $Date: $
+"
+" $Id: $
+"
+" Licensed to the Apache Software Foundation (ASF) under one
+" or more contributor license agreements. See the NOTICE file
+" distributed with this work for additional information
+" regarding copyright ownership. The ASF licenses this file
+" to you under the Apache License, Version 2.0 (the
+" "License"); you may not use this file except in compliance
+" with the License. You may obtain a copy of the License at
+"
+" http://www.apache.org/licenses/LICENSE-2.0
+"
+" Unless required by applicable law or agreed to in writing,
+" software distributed under the License is distributed on an
+" "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+" KIND, either express or implied. See the License for the
+" specific language governing permissions and limitations
+" under the License.
+"
+
+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,@Spell
+syn region thriftComment start="/\*" end="\*/" contains=thriftTodo,@Spell
+syn match thriftComment "//.\{-}\(?>\|$\)\@="
+
+" String
+syn region thriftStringDouble matchgroup=None start=+"+ end=+"+
+
+" Number
+syn match thriftNumber "-\=\<\d\+\>" contained
+
+" Keywords
+syn keyword thriftStatement namespace
+syn keyword thriftInclude include
+syn keyword thriftKeyword xsd_all xsd_optional xsd_nillable xsd_attrs
+syn keyword thriftKeyword cpp_include cpp_type const optional required
+syn keyword thriftStatement throws typedef
+syn keyword thriftBasicTypes void bool byte string binary
+syn keyword thriftBasicTypes i16 i32 i64 double
+syn keyword thriftType map list set
+syn keyword thriftClass struct exception enum
+syn region thriftString start=+"+ end=+"+
+
+" Special
+syn match thriftNumber "\d\+:"
+
+" Structure
+syn keyword thriftStructure service oneway 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 thriftType Type
+ HiLink thriftStructure StorageClass
+ HiLink thriftTodo Todo
+ HiLink thriftString String
+ HiLink thriftNumber Number
+ HiLink thriftSpecial Special
+ HiLink thriftStructure Structure
+ HiLink thriftStatement Statement
+ HiLink thriftInclude Include
+ HiLink thriftClass Type
+ HiLink thriftString String
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "thrift"
+