summaryrefslogtreecommitdiffstats
path: root/syntax
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2020-04-25 22:12:56 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2020-04-25 22:12:56 +0200
commit24f0581a96e682ef108c5b417b26563f4df022f5 (patch)
treefac5fc5450eecec5558e66d94192372eabcd4c18 /syntax
parent33c94846710579d685a6b3b55010051045ad108c (diff)
downloadvim-polyglot-24f0581a96e682ef108c5b417b26563f4df022f5.tar.gz
vim-polyglot-24f0581a96e682ef108c5b417b26563f4df022f5.zip
Add rego support, closes #471
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..5fa20d1a
--- /dev/null
+++ b/syntax/rego.vim
@@ -0,0 +1,61 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rego') == -1
+
+" 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
+
+endif