summaryrefslogtreecommitdiffstats
path: root/syntax
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2019-06-08 13:36:13 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2019-06-08 13:36:13 +0200
commitfca45b2c2b9ed9d07f6d5014c8c3ef8f2f22c964 (patch)
tree70081d79b9b2eb1a37abf4f0b82ace3ffc76f49c /syntax
parentebf9ec9d62302ad95e677572562f5010eebd4e21 (diff)
downloadvim-polyglot-fca45b2c2b9ed9d07f6d5014c8c3ef8f2f22c964.tar.gz
vim-polyglot-fca45b2c2b9ed9d07f6d5014c8c3ef8f2f22c964.zip
Add rego support, closes #406
Diffstat (limited to 'syntax')
-rw-r--r--syntax/rego.vim61
1 files changed, 61 insertions, 0 deletions
diff --git a/syntax/rego.vim b/syntax/rego.vim
new file mode 100644
index 00000000..8fc7d6a5
--- /dev/null
+++ b/syntax/rego.vim
@@ -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