Skip to content

Commit bbd2a61

Browse files
authored
Add a Vim syntax file under vim/mlscript.vim (#350)
1 parent ea7dc6e commit bbd2a61

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

vim/mlscript.vim

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
" Language: MLScript
2+
3+
if exists("b:current_syntax")
4+
finish
5+
endif
6+
7+
" keywords and constants
8+
syn keyword mlsKeyword let set fun val rec mut declare
9+
syn keyword mlsKeyword override super new of forall exists
10+
syn keyword mlsKeyword class object module pattern trait mixin
11+
syn keyword mlsKeyword interface extends namespace type where with
12+
syn keyword mlsKeyword break return continue as in out
13+
syn keyword mlsKeyword constructor abstract virtual throw
14+
syn keyword mlsKeyword case and or enum data
15+
syn keyword mlsConditional if then else
16+
syn keyword mlsRepeat while for do
17+
syn keyword mlsExternal import
18+
syn keyword mlsExternal open
19+
syn keyword mlsConstant null true false undefined
20+
21+
" number constants
22+
syn match mlsNumbers display transparent "\<\d\|\.\d" contains=mlsNumber,mlsNumberError
23+
syn match mlsNumber display contained "\(\d\|_\)*\.\=\d*\(e[-+]\=\d\+\)\="
24+
25+
" compiler flags
26+
syn match mlsFlag "^:\w\+"
27+
28+
" function names
29+
syn match mlsCustomFunc "\w\+\s*(\@="
30+
syn match mlsCustomFunc "\w\+\s*\(of\)\@="
31+
syn match mlsCustomFunc "\(\.\.\)\@<!\.\@<=\w\+"
32+
33+
" module names
34+
syn match mlsModuleName display "\<[A-Z]\+\w*\>"
35+
36+
" operators
37+
syn match mlsOperator "+"
38+
syn match mlsOperator "*"
39+
syn match mlsOperator "/"
40+
syn match mlsOperator "|>"
41+
syn match mlsOperator "<|"
42+
syn match mlsOperator "\.>"
43+
syn match mlsOperator "<\."
44+
syn match mlsOperator "!>"
45+
syn match mlsOperator "<!"
46+
syn match mlsOperator "|!"
47+
syn match mlsOperator ">>"
48+
syn match mlsOperator "<<"
49+
syn match mlsOperator "\\"
50+
syn match mlsOperator "|\."
51+
syn match mlsOperator "|>\."
52+
syn match mlsOperator "@"
53+
syn match mlsOperator "::"
54+
syn match mlsOperator ":::"
55+
syn match mlsOperator "++"
56+
syn match mlsOperator "\*\*"
57+
58+
" strings
59+
syn region mlsString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=mlsSpecial
60+
syn match mlsSpecial display contained +\(\\\)\@1<!\(\\\\\)*\zs\\"+
61+
62+
" multiline strings
63+
syn region mlsLongString start=+"""+ end=+"""+ " contains=@Spell
64+
65+
" comments and comment strings
66+
syn keyword mlsTodo contained TODO FIXME XXX NOTE
67+
syn region mlsCommentL start="//" skip="\\$" end="$" keepend contains=mlsTodo
68+
syn region mlsComment matchgroup=mlsComment start="/\*" end="\*/" contains=mlsTodo
69+
70+
" linking highlight colors
71+
hi link mlsCommentL Comment
72+
hi link mlsComment Comment
73+
hi link mlsConditional Conditional
74+
hi link mlsKeyword Keyword
75+
hi link mlsRepeat Repeat
76+
hi link mlsNumber Number
77+
hi link mlsOperator Operator
78+
hi link mlsExternal Include
79+
hi link mlsType Type
80+
hi link mlsModuleName Type
81+
hi link mlsConstant Constant
82+
hi link mlsString String
83+
hi link mlsLongString String
84+
hi link mlsSpecial SpecialChar
85+
hi link mlsTodo Todo
86+
hi link mlsFlag Debug
87+
hi link mlsOperator Operator
88+
hi link mlsCustomFunc Function
89+
hi link mlsConst Constant
90+
91+
let b:current_syntax = "mlscript"

0 commit comments

Comments
 (0)