summaryrefslogtreecommitdiffstats
path: root/syntax/bicep.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/bicep.vim')
-rw-r--r--syntax/bicep.vim83
1 files changed, 83 insertions, 0 deletions
diff --git a/syntax/bicep.vim b/syntax/bicep.vim
new file mode 100644
index 00000000..dcd92142
--- /dev/null
+++ b/syntax/bicep.vim
@@ -0,0 +1,83 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'bicep', 'syntax/bicep.vim')
+ finish
+endif
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpoptions
+set cpoptions&vim
+
+if has('patch-7.4.1142')
+ syn iskeyword a-z,A-Z,48-57,_,-
+endif
+
+syn case match
+
+
+syn keyword bicepDataType array bool int object string contained
+
+syn keyword bicepStatement var module targetScope
+
+syn keyword bicepStatement param nextgroup=bicepParameterName skipwhite
+syn match bicepParameterName /\h\w*/ nextgroup=bicepDataType skipwhite contained
+
+syn keyword bicepStatement output nextgroup=bicepOutputName skipwhite
+syn match bicepOutputName /\h\w*/ nextgroup=bicepDataType skipwhite contained
+
+syn keyword bicepStatement resource nextgroup=bicepResourceName skipwhite
+syn match bicepResourceName /\h\w*/ nextgroup=bicepResourceString skipwhite contained
+syn region bicepResourceString start=/'/ skip=/\\\\\|\\'/ end=/'/ contains=bicepStringInterp nextgroup=bicepExisting skipwhite
+syn keyword bicepExisting existing contained
+
+syn match bicepDecoratorName /@\s*\h\%(\w\|\.\)*/ contains=bicepDecorator
+syn match bicepDecorator /@/ contained
+
+syn region bicepComment start="/\*" end="\*/" contains=bicepTodo,@Spell
+syn region bicepComment start="//" end="$" contains=bicepTodo,@Spell
+syn keyword bicepTodo TODO FIXME XXX BUG contained
+
+syn keyword bicepValueBool true false
+syn keyword bicepValueNull null
+syn match bicepValueDec /\<[0-9]\+\([kKmMgG]b\?\)\?\>/
+
+syn region bicepValueString start=/'/ skip=/\\\\\|\\'/ end=/'/ contains=bicepStringInterp,bicepEscape
+syn region bicepStringInterp start=/${/ end=/}/ contained
+syn match bicepEscape /\\n/ contained
+syn match bicepEscape /\\r/ contained
+
+syn keyword bicepRepeat for in
+syn keyword bicepConditional if
+
+syn match bicepBraces /[{}\[\]]/
+
+
+hi def link bicepDataType Type
+hi def link bicepStatement Statement
+hi def link bicepResourceString String
+hi def link bicepExisting Label
+
+hi def link bicepDecorator Define
+
+hi def link bicepComment Comment
+hi def link bicepTodo Todo
+
+hi def link bicepValueBool Boolean
+hi def link bicepValueDec Number
+hi def link bicepValueNull Constant
+
+hi def link bicepValueString String
+hi def link bicepStringInterp Identifier
+hi def link bicepEscape Special
+
+hi def link bicepRepeat Repeat
+hi def link bicepConditional Conditional
+
+hi def link bicepBraces Delimiter
+
+
+let b:current_syntax = 'bicep'
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save