diff options
Diffstat (limited to 'syntax/gleam.vim')
-rw-r--r-- | syntax/gleam.vim | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/syntax/gleam.vim b/syntax/gleam.vim new file mode 100644 index 00000000..cc667893 --- /dev/null +++ b/syntax/gleam.vim @@ -0,0 +1,58 @@ +if has_key(g:polyglot_is_disabled, 'gleam') + finish +endif + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let b:current_syntax = "gleam" + +" Keywords +syntax keyword gleamKeyword + \ module import pub external + \ type let as if else todo const + \ case assert tuple try opaque +highlight link gleamKeyword Keyword + +" Function definition +syntax keyword gleamDef fn nextgroup=gleamFunctionDef skipwhite skipempty +highlight link gleamDef Keyword + +syntax match gleamFunctionDef "[a-z_-][0-9a-z_-]*" contained skipwhite skipnl +highlight link gleamFunctionDef Function + +" Int +syntax match gleamInt '\<[0-9][0-9_]*\>' +highlight link gleamInt Number + +" Float +syntax match gleamFloat '\<[0-9][0-9_]*\.[0-9_]*\>' +highlight link gleamFloat Float + +" Operators +syntax match gleamOperator "\([-!#$%`&\*\+./<=>@\\^|~:]\|\<\>\)" +highlight link gleamOperator Operator + +" Type +syntax match gleamType "\([a-z]\)\@<![A-Z]\w*" +highlight link gleamType Identifier + +" Comments +syntax region gleamCommentLine start="//" end="$" contains=gleamTodo +highlight link gleamCommentLine Comment + +syntax keyword gleamTodo contained TODO FIXME XXX NB NOTE +highlight def link gleamTodo Todo + +" String +syntax region gleamString start=/"/ end=/"/ contains=gleamStringModifier +syntax match gleamStringModifier '\\.' contained +highlight link gleamString String +highlight link gleamStringModifier Special + +" Attribute +syntax match gleamAttribute "#[a-z][a-z_]*" +highlight link gleamAttribute PreProc |