@@ -11,14 +11,16 @@ syntax keyword resBoolean true false
1111" Keywords
1212syntax keyword resKeyword let rec type external mutable lazy private of with
1313syntax keyword resKeyword if else switch when
14- syntax keyword resKeyword and as open include module in constraint import export
15- syntax keyword resKeyword for to downto while
16- syntax keyword resKeyword try catch exception assert
14+ syntax keyword resKeyword and as module constraint import export
15+ syntax keyword resInclude open include
16+ syntax keyword resRepeat for to downto while in
17+ syntax keyword resException try catch exception assert
1718syntax keyword resKeyword async await
1819
1920" Types
20- syntax keyword resType bool int float char string unit
21- syntax keyword resType list array option ref exn format
21+ syntax keyword resType bool int float char string unit promise
22+ syntax keyword resType array option ref exn format
23+ syntax match resType " list{\@ !"
2224
2325" Operators
2426syntax keyword resOperator mod land lor lxor lsl lsr asr
@@ -44,9 +46,11 @@ syntax match resOperator "\v\>\="
4446syntax match resOperator " \v\@ "
4547
4648syntax match resOperator " \v\! "
47- syntax match resOperator " \v\| "
4849syntax match resOperator " \v\& "
4950
51+ " Delimiter
52+ syntax match resDelimiter " \v\| "
53+
5054" Refs
5155syntax match resOperator " \v\:\= "
5256
@@ -56,6 +60,9 @@ syntax match resArrowPipe "\v\-\>"
5660syntax match resArrowPipe " \v\|\> "
5761syntax match resArrowPipe " \v\@\@ "
5862
63+ " Builtin functions
64+ syntax match resFunction " list{\@ ="
65+
5966" Comment
6067syntax region resSingleLineComment start =" //" end =" $" contains =resTodo,@Spell
6168syntax region resMultiLineComment start =" /\*\s *" end =" \* /" contains =@Spell,resTodo,resMultiLineComment
@@ -76,7 +83,10 @@ syntax match resModuleOrVariant "\v<[A-Z][A-Za-z0-9_'$]*"
7683syntax match resModuleChain " \v <[A-Z][A-Za-z0-9_'$]*\. "
7784
7885" Attribute
79- syntax match resAttribute " \v\@ ([a-zA-z][A-Za-z0-9_']*)(\. ([a-zA-z])[A-Za-z0-9_']*)*"
86+ syntax match resAttribute " \v (\@ |\@\@ )([a-zA-z][A-Za-z0-9_']*)(\. ([a-zA-z])[A-Za-z0-9_']*)*"
87+
88+ " Extension
89+ syntax match resExtension " \v (\% |\%\% )([a-zA-z][A-Za-z0-9_']*)(\. ([a-zA-z])[A-Za-z0-9_']*)*"
8090
8191" String
8292syntax match resUnicodeChar " \v\\ u[A-Fa-f0-9]\{ 4}" contained
@@ -85,6 +95,9 @@ syntax match resInterpolatedStringEscapeSeq "\v\\[\\`ntbrf]" contained
8595
8696syntax region resString start =" \v\" " end =" \v\" " contains =resStringEscapeSeq,resUnicodeChar
8797
98+ " Custom Operator
99+ syntax region resCustomOperator start =" \v\\\" " end =" \v\" "
100+
88101" Interpolation
89102syntax match resInterpolationVariable " \v\$ [a-z_][A-Za-z0-0_'$]*" contained
90103syntax region resInterpolationBlock matchgroup =resInterpolationDelimiters start =" \v\$\{ " end =" \v\} " contained contains =TOP
@@ -97,11 +110,27 @@ syntax match resPolyVariant "\v#[0-9]+"
97110syntax match resPolyVariant " \v #\" .*\" "
98111syntax match resPolyVariant " \v #\\\" .*\" "
99112
113+ " Errors
114+ syn match resBraceErr " }"
115+ syn match resBrackErr " \] "
116+ syn match resParenErr " )"
117+ syn match resArrErr " |]"
118+
119+ " Enclosing delimiters
120+ syn region resNone transparent matchgroup =resEncl start =" (" matchgroup =resEncl end =" )" contains =ALLBUT,resParenErr
121+ syn region resNone transparent matchgroup =resEncl start =" {" matchgroup =resEncl end =" }" contains =ALLBUT,resBraceErr
122+ syn region resNone transparent matchgroup =resEncl start =" \[ " matchgroup =resEncl end =" \] " contains =ALLBUT,resBrackErr
123+ syn region resNone transparent matchgroup =resEncl start =" \[ |" matchgroup =resEncl end =" |\] " contains =ALLBUT,resArrErr
124+
100125highlight default link resBoolean Boolean
101126highlight default link resKeyword Keyword
127+ highlight default link resInclude Include
128+ highlight default link resException Exception
129+ highlight default link resRepeat Repeat
102130highlight default link resType Type
103131highlight default link resOperator Operator
104132highlight default link resArrowPipe Operator
133+ highlight default link resDelimiter Operator
105134highlight default link resSingleLineComment Comment
106135highlight default link resMultiLineComment Comment
107136highlight default link resTodo TODO
@@ -118,5 +147,9 @@ highlight default link resString String
118147highlight default link resInterpolationDelimiters Macro
119148highlight default link resInterpolationVariable Macro
120149highlight default link resAttribute PreProc
150+ highlight default link resExtension PreProc
151+ highlight default link resEncl Keyword
152+ highlight default link resFunction Function
153+ highlight default link resCustomOperator String
121154
122155let b: current_syntax = " rescript"
0 commit comments