@@ -68,6 +68,7 @@ module FSharpTokenTag =
6868let COLON_EQUALS = tagOfToken COLON_ EQUALS
6969let BAR_BAR = tagOfToken BAR_ BAR
7070let RARROW = tagOfToken RARROW
71+ let LARROW = tagOfToken LARROW
7172let QUOTE = tagOfToken QUOTE
7273
7374
@@ -88,14 +89,15 @@ type FSharpTokenColorKind =
8889| PreprocessorKeyword= 8
8990| Number= 9
9091| Operator= 10
92+ | Punctuation= 11
9193
9294/// Categorize an action the editor should take in response to a token, e.g. brace matching
9395///
9496/// NOTE: This corresponds to a token categorization originally used in Visual Studio 2003 and the original Babel source code.
9597/// It is not clear it is a primary logical classification that should be being used in the
9698/// more recent language service work.
9799type FSharpTokenTriggerClass =
98- None= 0x00000000
100+ | None= 0x00000000
99101| MemberSelect= 0x00000001
100102| MatchBraces= 0x00000002
101103| ChoiceSelect= 0x00000004
@@ -111,7 +113,7 @@ type FSharpTokenTriggerClass =
111113/// It is not clear it is a primary logical classification that should be being used in the
112114/// more recent language service work.
113115type FSharpTokenCharKind =
114- Default= 0x00000000
116+ | Default= 0x00000000
115117| Text= 0x00000000
116118| Keyword= 0x00000001
117119| Identifier= 0x00000002
@@ -126,13 +128,13 @@ type FSharpTokenCharKind =
126128
127129/// Information about a particular token from the tokenizer
128130type FSharpTokenInfo = {
129- LeftColumn: int ;
130- RightColumn: int ;
131- ColorClass: FSharpTokenColorKind ;
132- CharClass: FSharpTokenCharKind ;
133- FSharpTokenTriggerClass: FSharpTokenTriggerClass ;
131+ LeftColumn: int
132+ RightColumn: int
133+ ColorClass: FSharpTokenColorKind
134+ CharClass: FSharpTokenCharKind
135+ FSharpTokenTriggerClass: FSharpTokenTriggerClass
134136 Tag: int
135- TokenName: string ;
137+ TokenName: string
136138 FullMatchedLength: int }
137139
138140//----------------------------------------------------------------------------
@@ -161,7 +163,7 @@ module internal TokenClassifications =
161163
162164// 'in' when used in a 'join' in a query expression
163165| JOIN_ IN->
164- ( FSharpTokenColorKind.Identifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None)
166+ ( FSharpTokenColorKind.Identifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None)
165167| DECIMAL_
166168| BIGNUM_ | INT8_ | UINT8_ | INT16_ | UINT16_ | INT32_ | UINT32_ | INT64_ | UINT64_
167169| UNATIVEINT_ | NATIVEINT_ | IEEE32_ | IEEE64_
@@ -180,14 +182,14 @@ module internal TokenClassifications =
180182| DOLLAR| COLON_ GREATER| COLON_ COLON
181183| PERCENT_ OP_ | PLUS_ MINUS_ OP_ | PREFIX_ OP_ | COLON_ QMARK_ GREATER
182184| AMP| AMP_ AMP| BAR_ BAR| QMARK| QMARK_ QMARK| COLON_ QMARK
183- | QUOTE | STAR | HIGH_ PRECEDENCE_ TYAPP
184- | COLON | COLON_ EQUALS| LARROW | EQUALS| RQUOTE_ DOT_
185+ | HIGH_ PRECEDENCE_ TYAPP
186+ | COLON_ EQUALS| EQUALS| RQUOTE_ DOT_
185187| MINUS| ADJACENT_ PREFIX_ OP_
186188-> ( FSharpTokenColorKind.Operator, FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.None)
187-
189+
188190| INFIX_ COMPARE_ OP_ // This is a whole family: .< .> .= .!= .$
189191| FUNKY_ OPERATOR_ NAME_ // This is another whole family, including: .[] and .()
190- | INFIX_ AT_ HAT_ OP_
192+ // | INFIX_AT_HAT_OP _
191193| INFIX_ STAR_ STAR_ OP_
192194| INFIX_ AMP_ OP_
193195| INFIX_ BAR_ OP_
@@ -200,48 +202,51 @@ module internal TokenClassifications =
200202( FSharpTokenColorKind.Operator, FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.MemberSelect)
201203
202204| COMMA
203- -> ( FSharpTokenColorKind.Text , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.ParamNext)
205+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.ParamNext)
204206
205207| DOT
206- -> ( FSharpTokenColorKind.Operator , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.MemberSelect)
208+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.MemberSelect)
207209
208210| BAR
209- -> ( FSharpTokenColorKind.Text, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None(* FSharpTokenTriggerClass.ChoiceSelect*) )
210-
211- | HASH| UNDERSCORE
212- | SEMICOLON| SEMICOLON_ SEMICOLON
213- -> ( FSharpTokenColorKind.Text, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None)
211+ -> ( FSharpTokenColorKind.Punctuation, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None(* FSharpTokenTriggerClass.ChoiceSelect*) )
212+
213+ | HASH| STAR| SEMICOLON| SEMICOLON_ SEMICOLON| COLON
214+ -> ( FSharpTokenColorKind.Punctuation, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None)
215+
216+ | QUOTE| UNDERSCORE
217+ | INFIX_ AT_ HAT_ OP_
218+ -> ( FSharpTokenColorKind.Identifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None)
214219
215220| LESS_
216- -> ( FSharpTokenColorKind.Operator , FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.ParamStart) // for type provider static arguments
221+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.ParamStart) // for type provider static arguments
217222| GREATER_
218- -> ( FSharpTokenColorKind.Operator , FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.ParamEnd) // for type provider static arguments
223+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.ParamEnd) // for type provider static arguments
219224
220225| LPAREN
221226// We need 'ParamStart' to trigger the 'GetDeclarations' method to show param info automatically
222227// this is needed even if we don't use MPF for determining information about params
223- -> ( FSharpTokenColorKind.Text , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.ParamStart||| FSharpTokenTriggerClass.MatchBraces)
228+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.ParamStart||| FSharpTokenTriggerClass.MatchBraces)
224229
225230| RPAREN| RPAREN_ COMING_ SOON| RPAREN_ IS_ HERE
226- -> ( FSharpTokenColorKind.Text , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.ParamEnd||| FSharpTokenTriggerClass.MatchBraces)
231+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.ParamEnd||| FSharpTokenTriggerClass.MatchBraces)
227232
228233| LBRACK_ LESS| LBRACE_ LESS
229- -> ( FSharpTokenColorKind.Text , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None)
234+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None)
230235
231236| LQUOTE_ | LBRACK| LBRACE| LBRACK_ BAR
232- -> ( FSharpTokenColorKind.Text , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.MatchBraces)
237+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.MatchBraces)
233238
234239| GREATER_ RBRACE| GREATER_ RBRACK| GREATER_ BAR_ RBRACK
235- -> ( FSharpTokenColorKind.Text , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None)
240+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None)
236241
237242| RQUOTE_ | RBRACK| RBRACE| RBRACE_ COMING_ SOON| RBRACE_ IS_ HERE| BAR_ RBRACK
238- -> ( FSharpTokenColorKind.Text , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.MatchBraces)
243+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.MatchBraces)
239244
240245| PUBLIC| PRIVATE| INTERNAL| BASE| GLOBAL
241246| CONSTRAINT| INSTANCE| DELEGATE| INHERIT| CONSTRUCTOR| DEFAULT| OVERRIDE| ABSTRACT| CLASS
242247| MEMBER| STATIC| NAMESPACE
243248| OASSERT| OLAZY| ODECLEND| OBLOCKSEP| OEND| OBLOCKBEGIN| ORIGHT_ BLOCK_ END| OBLOCKEND| OBLOCKEND_ COMING_ SOON| OBLOCKEND_ IS_ HERE| OTHEN| OELSE| OLET(_) | OBINDER_ | BINDER_ | ODO| OWITH| OFUNCTION| OFUN| ORESET| ODUMMY_ | DO_ BANG| ODO_ BANG| YIELD_ | YIELD_ BANG_ | OINTERFACE_ MEMBER
244- | ELIF| RARROW| SIG| STRUCT
249+ | ELIF| RARROW| LARROW | SIG| STRUCT
245250| UPCAST| DOWNCAST| NULL| RESERVED| MODULE| AND| AS| ASSERT| ASR
246251| DOWNTO| EXCEPTION| FALSE| FOR| FUN| FUNCTION
247252| FINALLY| LAZY| MATCH| MUTABLE| NEW| OF| OPEN| OR| VOID| EXTERN