3# http://www.sublimetext.com/docs/3/syntax.html
12 - include: compiler_directives
17 - include: double_tick
19 - include: abstract_definition
22 - include: anonymous_functions
23 - include: du_declaration
24 - include: record_declaration
26 - include: strp_inlined
31 - match: '\b(abstract)\s+(member)?(\s+\[\<.*\>\])?\s*([_[:alpha:]0-9,\._`\s]+)(:)'
35 3: support.function.attribute.fsharp
38 - meta_scope: abstract.definition.fsharp
39 - match: \s*(with)\b|=|$
44 - include: common_declaration
45 - match: '(\?{0,1})([[:alpha:]0-9''`^._ ]+)\s*(:)(\s*([[:alpha:]0-9''`^._ ]+)){0,1}'
47 1: keyword.symbol.fsharp
48 2: variable.parameter.fsharp
49 3: keyword.symbol.fsharp
50 4: entity.name.type.fsharp
51 - match: '(?!with|get|set\b)\b([\w0-9''`^._]+)'
53 1: entity.name.type.fsharp
60 - meta_scope: function.anonymous
68 1: keyword.symbol.fsharp
72 1: keyword.symbol.fsharp
74 - include: member_declaration
79 - meta_scope: support.function.attribute.fsharp
84 - match: '\b(async|seq|promise|task|maybe|asyncMaybe|controller|scope|application|pipeline)\s*\{'
92 1: string.quoted.single.fsharp
96 1: comment.block.fsharp
98 - meta_scope: comment.block.fsharp
101 1: comment.block.fsharp
104 scope: comment.line.double-slash.fsharp
105 common_binding_definition:
107 - include: attributes
108 - match: (:)\s*(\()\s*(static member|member)
110 1: keyword.symbol.fsharp
111 2: keyword.symbol.fsharp
114 - match: (\))\s*((?=,)|(?=\=))
116 1: keyword.symbol.fsharp
118 - match: '(\^[[:alpha:]0-9''._]+)'
120 1: entity.name.type.fsharp
125 1: keyword.symbol.fsharp
126 2: keyword.symbol.fsharp
128 - match: '(\)\s*(([?[:alpha:]0-9''`^._ ]*)))'
130 1: keyword.symbol.fsharp
131 2: entity.name.type.fsharp
133 - include: tuple_signature
134 - match: '(:)\s*(\^[[:alpha:]0-9''._]+)\s*(when)'
136 1: keyword.symbol.fsharp
137 2: entity.name.type.fsharp
142 1: keyword.symbol.fsharp
144 - match: \b(and|when|or)\b
145 scope: keyword.fsharp
146 - match: "([[:alpha:]0-9'^._]+)"
147 comment: Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition
149 1: entity.name.type.fsharp
151 scope: keyword.symbol.fsharp
152 - match: '(:)\s*([?[:alpha:]0-9''`^._ ]+)'
154 1: keyword.symbol.fsharp
155 2: entity.name.type.fsharp
156 - match: '(->)\s*(\()?\s*([?[:alpha:]0-9''`^._ ]+)*'
158 1: keyword.symbol.fsharp
159 2: keyword.symbol.fsharp
160 3: entity.name.type.fsharp
163 1: keyword.symbol.fsharp
164 2: keyword.symbol.fsharp
166 - match: '(\)\s*(([?[:alpha:]0-9''`^._ ]+))+)'
168 1: keyword.symbol.fsharp
169 2: entity.name.type.fsharp
171 - include: tuple_signature
172 - match: '(\*)(\s*([?[:alpha:]0-9''`^._ ]+))*'
174 1: keyword.symbol.fsharp
175 2: entity.name.type.fsharp
176 - match: '(<(?![[:space:]]*\)))'
178 1: keyword.symbol.fsharp
182 1: keyword.symbol.fsharp
184 - include: generic_declaration
187 1: keyword.symbol.fsharp
191 1: keyword.symbol.fsharp
193 - include: record_signature
194 - include: definition
198 - match: '\s*(->)\s*([[:alpha:]0-9''`^._ ]+)(<)'
200 1: keyword.symbol.fsharp
201 2: entity.name.type.fsharp
202 3: keyword.symbol.fsharp
206 1: keyword.symbol.fsharp
208 - match: "([[:alpha:]0-9'`^._ ]+)"
210 1: entity.name.type.fsharp
212 - match: '\s*(->)\s*(?!with|get|set\b)\b([\w0-9''`^._]+)'
214 1: keyword.symbol.fsharp
215 2: entity.name.type.fsharp
216 - match: '(\?{0,1})([[:alpha:]0-9''`^._ ]+)\s*(:)(\s*([?[:alpha:]0-9''`^._ ]+)(<))'
218 1: keyword.symbol.fsharp
219 2: variable.parameter.fsharp
220 3: keyword.symbol.fsharp
221 4: keyword.symbol.fsharp
222 5: entity.name.type.fsharp
226 1: keyword.symbol.fsharp
228 - match: "([[:alpha:]0-9'`^._ ]+)"
230 1: entity.name.type.fsharp
233 - match: \s?(#if|#elif|#else|#elseif|#endif|#light|#nowarn)
234 scope: compiler_directive.fsharp
238 scope: constant.language.unit.fsharp
239 - match: '\b-?[0-9][0-9_]*((\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))'
240 scope: constant.numeric.floating-point.fsharp
241 - match: '\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))'
242 scope: constant.numeric.integer.nativeint.fsharp
243 - match: \b(true|false|null|unit)\b
244 scope: constant.others.fsharp
246 - match: '\b(let mutable|static let mutable|let inline|let|member val|static member inline|static member|default|member|override|let!)(\s+rec|mutable)?(\s+\[\<.*\>\])?\s*(private|internal|public)?\s+(\[[^-=]*\]|[_[:alpha:]]([_[:alpha:]0-9,\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\._`\s]+|(?<=,)\s)*)?'
250 3: support.function.attribute.fsharp
254 - meta_scope: binding.fsharp
255 - match: \s*(with\b|=|\n+=|(?<=\=))
259 - include: common_binding_definition
260 - match: '\b(static val mutable|val mutable|val)(\s+rec|mutable)?(\s+\[\<.*\>\])?\s*(private|internal|public)?\s+(\[[^-=]*\]|[_[:alpha:]]([_[:alpha:]0-9,\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\._`\s]+|(?<=,)\s)*)?'
264 3: support.function.attribute.fsharp
268 - meta_scope: binding.fsharp
271 - include: common_binding_definition
273 - match: (``)(.*)(``)
274 scope: variable.other.binding.fsharp
276 1: string.quoted.single.fsharp
277 2: variable.other.binding.fsharp
278 3: string.quoted.single.fsharp
284 - meta_scope: du_declaration.fsharp
287 1: keyword.symbol.fsharp
290 - match: '([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)\s*(:)\s*([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)'
292 1: variable.parameter.fsharp
293 2: keyword.symbol.fsharp
294 3: entity.name.type.fsharp
295 - match: "([[:alpha:]0-9'`^._]+)|``([[:alpha:]0-9'^._ ]+)``"
297 1: entity.name.type.fsharp
300 - match: (:)\s*(\()\s*(static member|member)
302 1: keyword.symbol.fsharp
303 2: keyword.symbol.fsharp
308 1: keyword.symbol.fsharp
312 1: keyword.symbol.fsharp
316 1: keyword.symbol.fsharp
318 - include: member_declaration
319 - match: '((''|\^)[[:alpha:]0-9''._]+)'
321 1: entity.name.type.fsharp
324 - match: \b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\!|return\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|use|use\!|struct|while|mutable)(?!')\b
325 scope: keyword.fsharp
327 scope: keyword.fsharp
329 - match: '((''|\^)[[:alpha:]0-9''._]+)'
331 1: entity.name.type.fsharp
334 1: keyword.symbol.fsharp
338 1: keyword.symbol.fsharp
340 - match: '((''|\^)[[:alpha:]0-9''._]+)'
342 1: entity.name.type.fsharp
343 - include: tuple_signature
344 - include: generic_declaration
345 - match: '(?!when|and|or\b)\b([\w0-9''`^._]+)'
347 1: entity.name.type.fsharp
350 1: keyword.symbol.fsharp
353 - match: \b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\!|return\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|or|use|use\!|struct|while|mutable)(?!')\b
354 scope: keyword.fsharp
355 - match: '(&&&|\|\|\||\^\^\^|~~~|<<<|>>>|\|>|\->|\<\-|:>|:\?>|:|\[|\]|\;|<>|=|@|\|\||&&|{|}|\||_|\.\.|\,|\+|\-|\*|\/|\^|\!|\>|\>\=|\>\>|\<|\<\=|\(|\)|\<\<)'
356 scope: keyword.symbol.fsharp
359 - include: common_declaration
360 - match: (:)\s*(\()\s*(static member|member)
362 1: keyword.symbol.fsharp
363 2: keyword.symbol.fsharp
366 - match: (\))\s*((?=,)|(?=\=))
368 1: keyword.symbol.fsharp
372 1: keyword.symbol.fsharp
376 1: keyword.symbol.fsharp
378 - include: member_declaration
379 - match: '(\^[[:alpha:]0-9''._]+)'
381 1: entity.name.type.fsharp
384 - match: '(\^[[:alpha:]0-9''._]+)'
386 1: entity.name.type.fsharp
387 - match: \b(and|when|or)\b
388 scope: keyword.fsharp
390 scope: keyword.symbol.fsharp
391 - match: '(\?{0,1})([[:alpha:]0-9''`^._]+|``[[:alpha:]0-9''`^:,._ ]+``)\s*(:{0,1})(\s*([?[:alpha:]0-9''`<>._ ]+)){0,1}'
393 1: keyword.symbol.fsharp
394 2: variable.parameter.fsharp
395 3: keyword.symbol.fsharp
396 4: entity.name.type.fsharp
399 - match: '\b(namespace|module)\s*(public|internal|private)?\s+([[:alpha:]][[:alpha:]0-9''_. ]*)'
403 3: entity.name.section.fsharp
405 - meta_scope: entity.name.section.fsharp
408 1: keyword.symbol.fsharp
410 - match: '(\.)([A-Z][[:alpha:]0-9''_]*)'
411 scope: entity.name.section.fsharp
413 1: punctuation.separator.namespace-reference.fsharp
414 2: entity.name.section.fsharp
415 - match: '\b(open)\s+([[:alpha:]][[:alpha:]0-9''_]*)(?=(\.[A-Z][[:alpha:]0-9_]*)*)'
418 2: entity.name.section.fsharp
420 - meta_scope: namespace.open.fsharp
423 - match: '(\.)([[:alpha:]][[:alpha:]0-9''_]*)'
424 scope: entity.name.section.fsharp
426 1: punctuation.separator.namespace-reference.fsharp
427 2: entity.name.section.fsharp
428 - match: '^\s*(module)\s+([A-Z][[:alpha:]0-9''_]*)\s*(=)\s*([A-Z][[:alpha:]0-9''_]*)'
431 2: entity.name.type.namespace.fsharp
432 3: punctuation.separator.namespace-definition.fsharp
433 4: entity.name.section.fsharp
435 - meta_scope: namespace.alias.fsharp
438 - match: '(\.)([A-Z][[:alpha:]0-9''_]*)'
439 scope: entity.name.section.fsharp
441 1: punctuation.separator.namespace-reference.fsharp
442 2: entity.name.section.fsharp
446 1: keyword.symbol.fsharp
451 - match: '(((mutable)\s[[:alpha:]]+)|[[:alpha:]0-9''`<>^._]*)\s*((?<!:):(?!:))\s*'
454 4: keyword.symbol.fsharp
458 1: keyword.symbol.fsharp
461 - match: "([[:alpha:]0-9'`^_ ]+)"
463 1: entity.name.type.fsharp
465 - include: compiler_directives
469 - include: double_tick
470 - include: definition
471 - include: attributes
472 - include: anonymous_functions
477 - match: "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)"
479 1: keyword.symbol.fsharp
480 2: variable.parameter.fsharp
483 1: keyword.symbol.fsharp
487 1: keyword.symbol.fsharp
489 - match: "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)"
491 1: keyword.symbol.fsharp
492 2: variable.parameter.fsharp
493 - include: record_signature
496 - match: '\b(type)[\s]+(private|internal|public)?\s*'
501 - meta_scope: record.fsharp
502 - match: '\s*((with)|((as)\s+([[:alpha:]0-9'']+))|(=)|[\n=]|(\(\)))'
507 5: variable.parameter.fsharp
508 6: keyword.symbol.fsharp
509 7: constant.language.unit.fsharp
512 - include: attributes
513 - match: "([[:alpha:]0-9'^._]+|``[[:alpha:]0-9'`^:,._ ]+``)"
515 1: entity.name.type.fsharp
524 - match: '((''|\^)``[[:alpha:]0-9`^:,._ ]+``|(''|\^)[[:alpha:]0-9`^:._]+)'
526 1: entity.name.type.fsharp
527 - match: \b(interface|with|abstract|and|when|or|not|struct|equality|comparison|unmanaged|delegate|enum)\b
528 scope: keyword.fsharp
531 1: keyword.symbol.fsharp
535 1: keyword.symbol.fsharp
537 - match: (static member|member|new)
540 - include: common_binding_definition
541 - match: '([\w0-9''`^._]+)'
543 1: entity.name.type.fsharp
545 - match: \s*(private|internal|public)
547 1: keyword.symbol.fsharp
551 1: keyword.symbol.fsharp
553 - match: '\s*(?=(=)|[\n=]|(\(\))|(as))'
555 1: keyword.symbol.fsharp
557 - include: member_declaration
560 - match: (%0?-?(\d+)?((a|t)|(\.\d+)?(f|F|e|E|g|G|M)|(b|c|s|d|i|x|X|o|u)|(s|b|O)|(\+?A)))
561 scope: entity.name.type.format.specifier.fsharp
563 1: keyword.format.specifier.fsharp
565 - match: '(?=[^\\])(@")'
567 1: punctuation.definition.string.begin.fsharp
569 - meta_scope: string.quoted.literal.fsharp
572 1: punctuation.definition.string.end.fsharp
575 scope: constant.character.string.escape.fsharp
576 - match: '(?=[^\\])(""")'
578 1: punctuation.definition.string.begin.fsharp
580 - meta_scope: string.quoted.triple.fsharp
583 1: punctuation.definition.string.end.fsharp
585 - include: string_formatter
586 - match: '(?=[^\\])(")'
588 1: punctuation.definition.string.begin.fsharp
590 - meta_scope: string.quoted.double.fsharp
593 1: punctuation.definition.string.end.fsharp
596 scope: punctuation.separator.string.ignore-eol.fsharp
597 - match: '\\([\\''''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})'
598 scope: constant.character.string.escape.fsharp
599 - match: '\\(?![\\''''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8}).'
600 scope: invalid.illeagal.character.string.fsharp
601 - include: string_formatter
605 1: keyword.symbol.fsharp
609 1: keyword.symbol.fsharp
611 - include: strp_inlined_body
614 - include: anonymous_functions
615 - match: '(\^[[:alpha:]0-9''._]+)'
617 1: entity.name.type.fsharp
618 - match: \b(and|when|or)\b
619 scope: keyword.fsharp
622 1: keyword.symbol.fsharp
626 1: keyword.symbol.fsharp
628 - include: strp_inlined_body
629 - match: '(static member|member)\s*([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)\s*(:)'
633 3: keyword.symbol.fsharp
634 - include: compiler_directives
638 - include: double_tick
641 - include: definition
642 - include: attributes
650 - match: "(([?[:alpha:]0-9'`^._ ]+))+"
652 1: entity.name.type.fsharp
655 1: keyword.symbol.fsharp
659 1: keyword.symbol.fsharp
661 - match: "(([?[:alpha:]0-9'`^._ ]+))+"
663 1: entity.name.type.fsharp
664 - include: tuple_signature
668 scope: constant.language.unit.fsharp
669 - match: '(\?{0,1})(``[[:alpha:]0-9''`^:,._ ]+``|[[:alpha:]0-9''`<>^._ ]\w*)'
671 1: keyword.symbol.fsharp
672 2: variable.parameter.fsharp
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list