@@ -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//----------------------------------------------------------------------------
@@ -181,9 +183,11 @@ module internal TokenClassifications =
181183| PERCENT_ OP_ | PLUS_ MINUS_ OP_ | PREFIX_ OP_ | COLON_ QMARK_ GREATER
182184| AMP| AMP_ AMP| BAR_ BAR| QMARK| QMARK_ QMARK| COLON_ QMARK
183185| QUOTE| STAR| HIGH_ PRECEDENCE_ TYAPP
184- | COLON | COLON_ EQUALS| LARROW | EQUALS| RQUOTE_ DOT_
186+ | COLON_ EQUALS| EQUALS| RQUOTE_ DOT_
185187| MINUS| ADJACENT_ PREFIX_ OP_
186188-> ( FSharpTokenColorKind.Operator, FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.None)
189+ | COLON
190+ -> ( FSharpTokenColorKind.Punctuation, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None)
187191
188192| INFIX_ COMPARE_ OP_ // This is a whole family: .< .> .= .!= .$
189193| FUNKY_ OPERATOR_ NAME_ // This is another whole family, including: .[] and .()
@@ -200,17 +204,18 @@ module internal TokenClassifications =
200204( FSharpTokenColorKind.Operator, FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.MemberSelect)
201205
202206| COMMA
203- -> ( FSharpTokenColorKind.Text , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.ParamNext)
207+ -> ( FSharpTokenColorKind.Punctuation , FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.ParamNext)
204208
205209| DOT
206210-> ( FSharpTokenColorKind.Operator, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.MemberSelect)
207211
208212| BAR
209- -> ( FSharpTokenColorKind.Text, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None(* FSharpTokenTriggerClass.ChoiceSelect*) )
210-
211- | HASH| UNDERSCORE
213+ -> ( FSharpTokenColorKind.Punctuation, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None(* FSharpTokenTriggerClass.ChoiceSelect*) )
214+ | HASH
212215| SEMICOLON| SEMICOLON_ SEMICOLON
213- -> ( FSharpTokenColorKind.Text, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None)
216+ -> ( FSharpTokenColorKind.Punctuation, FSharpTokenCharKind.Delimiter, FSharpTokenTriggerClass.None)
217+ | UNDERSCORE
218+ -> ( FSharpTokenColorKind.Identifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None)
214219
215220| LESS_
216221-> ( FSharpTokenColorKind.Operator, FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.ParamStart) // for type provider static arguments
@@ -220,28 +225,28 @@ module internal TokenClassifications =
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