Add rego support, closes #406

This commit is contained in:
Adam Stankiewicz 2019-06-08 13:36:13 +02:00
parent ebf9ec9d62
commit fca45b2c2b
4 changed files with 75 additions and 1 deletions

View File

@ -10,7 +10,7 @@ A collection of language packs for Vim.
> One to rule them all, one to find them, one to bring them all and in the darkness bind them. > One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*. - It **won't affect your startup time**, as scripts are loaded only on demand\*.
- It **installs and updates 120+ times faster** than the <!--Package Count-->141<!--/Package Count--> packages it consists of. - It **installs and updates 120+ times faster** than the <!--Package Count-->142<!--/Package Count--> packages it consists of.
- Solid syntax and indentation support (other features skipped). Only the best language packs. - Solid syntax and indentation support (other features skipped). Only the best language packs.
- All unnecessary files are ignored (like enormous documentation from php support). - All unnecessary files are ignored (like enormous documentation from php support).
- No support for esoteric languages, only most popular ones (modern too, like `slim`). - No support for esoteric languages, only most popular ones (modern too, like `slim`).
@ -148,6 +148,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [ragel](https://github.com/jneen/ragel.vim) (syntax) - [ragel](https://github.com/jneen/ragel.vim) (syntax)
- [raml](https://github.com/IN3D/vim-raml) (syntax, ftplugin) - [raml](https://github.com/IN3D/vim-raml) (syntax, ftplugin)
- [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent) - [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent)
- [rego](https://github.com/tsandall/vim-rego) (syntax)
- [rspec](https://github.com/sheerun/rspec.vim) (syntax) - [rspec](https://github.com/sheerun/rspec.vim) (syntax)
- [rst](https://github.com/marshallward/vim-restructuredtext) (syntax, autoload, ftplugin) - [rst](https://github.com/marshallward/vim-restructuredtext) (syntax, autoload, ftplugin)
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin) - [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin)

1
build
View File

@ -256,6 +256,7 @@ PACKS="
ragel:jneen/ragel.vim ragel:jneen/ragel.vim
raml:IN3D/vim-raml raml:IN3D/vim-raml
reason:reasonml-editor/vim-reason-plus reason:reasonml-editor/vim-reason-plus
rego:tsandall/vim-rego
rspec:sheerun/rspec.vim rspec:sheerun/rspec.vim
rst:marshallward/vim-restructuredtext rst:marshallward/vim-restructuredtext
ruby:vim-ruby/vim-ruby ruby:vim-ruby/vim-ruby

View File

@ -1103,6 +1103,17 @@ au BufNewFile,BufRead .merlin set ft=merlin
augroup end augroup end
endif endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rego') == -1
augroup filetypedetect
" rego, from rego.vim in tsandall/vim-rego
autocmd BufRead,BufNewFile *.rego set filetype=rego
" Use # as a comment prefix
setlocal comments=b:#,fb:-
setlocal commentstring=#\ %s
augroup end
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
augroup filetypedetect augroup filetypedetect
" ruby, from ruby.vim in vim-ruby/vim-ruby " ruby, from ruby.vim in vim-ruby/vim-ruby

61
syntax/rego.vim Normal file
View File

@ -0,0 +1,61 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rego') != -1
finish
endif
" Vim syntax file
" Language: Rego (http://github.com/open-policy-agent/opa)
" Maintainers: Torin Sandall <torinsandall@gmail.com>
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn case match
" language keywords
syn keyword regoKeyword package import as not with default else some
" comments
syn match regoComment "#.*$" contains=regoTodo,@Spell
syn keyword regoTodo FIXME XXX TODO contained
" data types
syn keyword regoNull null
syn keyword regoBoolean true false
syn match regoNumber "\<\(0[0-7]*\|0[xx]\x\+\|\d\+\)[ll]\=\>"
syn match regoNumber "\(\<\d\+\.\d*\|\.\d\+\)\([ee][-+]\=\d\+\)\=[ffdd]\="
syn match regoNumber "\<\d\+[ee][-+]\=\d\+[ffdd]\=\>"
syn match regoNumber "\<\d\+\([ee][-+]\=\d\+\)\=[ffdd]\>"
syn region regoString start="\"[^"]" skip="\\\"" end="\"" contains=regoStringEscape
syn match regoStringEscape "\\u[0-9a-fA-F]\{4}" contained
syn match regoStringEscape "\\[nrfvb\\\"]" contained
" rules
syn match regoRuleName "^\(\w\+\)"
syn region regoBody start="{" end="}" transparent
" operators
syn match regoEquality "="
syn match regoInequality "[<>!]"
syn match regoArith "[+-/*&|]"
syn match regoBuiltin "\w\+(" nextgroup=regoBuiltinArgs contains=regoBuiltinArgs
syn region regoBuiltinArgs start="(" end=")" contained contains=regoNull,regoBoolean,regoNumber,regoString
" highlighting
hi link regoKeyword Keyword
hi link regoNull Function
hi link regoBoolean Boolean
hi link regoNumber Number
hi link regoString String
hi link regoRuleName Function
hi link regoEquality Keyword
hi link regoInequality Keyword
hi link regoArith Keyword
hi link regoBuiltin Type
hi link regoComment Comment
hi link regoTodo Todo