diff options
m--------- | main/external/fsharpbinding | 14 | ||||
-rw-r--r-- | main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml | 79 |
2 files changed, 70 insertions, 23 deletions
diff --git a/main/external/fsharpbinding b/main/external/fsharpbinding -Subproject 2a8a8bf6ad58e2d685909777b75d57e46caddf8 +Subproject c4337ff58f69857c2a135814ace646ed95bd74a diff --git a/main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml b/main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml index 577331a09c..130ccbf79b 100644 --- a/main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml +++ b/main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml @@ -92,8 +92,8 @@ <Match color="Number">CSharpNumber</Match> - <Match color="Keyword(Iteration)" ignorecase="False">((use|yield|return|do)(!?))\b?</Match> - + <Match color="Keyword(Iteration)" ignorecase="False">(do!|use!|yield!|return!|let!)</Match> + <Match color="Keyword(Iteration)" ignorecase="False">(do|use|yield|return)\b</Match> <!-- reserved-ident-keyword F# spec v3.0 section 3.4 --> <Match color="Keyword(Other)" ignorecase="False">(atomic|break|checked|component|const|constraint|constructor|continue|eager|fixed|fori|functor|include|measure|method|mixin|object|parallel|params|process|protected|pure|recursive|sealed|tailcall|trait|virtual|volatile)[!#]?\s</Match> <Match color="Keyword(Other)" ignorecase="False">(atomic|break|checked|component|const|constraint|constructor|continue|eager|fixed|fori|functor|include|measure|method|mixin|object|parallel|params|process|protected|pure|recursive|sealed|tailcall|trait|virtual|volatile)[!#]?$</Match> @@ -107,7 +107,6 @@ <Word>static</Word> <Word>abstract</Word> <Word>default</Word> - <Word>override</Word> <Word>private</Word> <Word>public</Word> <Word>extern</Word> @@ -266,9 +265,44 @@ </Span> </Rule> <Match color="Plain Text">\b(get|set)\b</Match> + <Match color="User Types" ignorecase="False">\b(string|unit|bool|option|list|int|uint|int16|int32|int64|uint32|uint64|byte|sbyte|double|float|nint|single|float32|bigint|decimal|Char)\b</Match> + <Match expression="(override)(\s+)(\w+)(\.)(\w+)\s[^=:]" ignorecase="False"> + <!-- override x.CanHandle y = --> + <Group color="Keyword(Modifiers)"/> + <Group color="Plain Text" /> + <Group color="User Field Declaration" /> + <Group color="Plain Text" /> + <Group color="User Method Declaration"/> + </Match> + + <Match expression="(of)(\s)(\w+)"> + <Group color="Keyword(Iteration)"/> + <Group color="Plain Text" /> + <Group color="User Types"/> + </Match> + + <Match expression="(\|\s*:\?\s*)(\w+)"> + <!-- | :? §string§ --> + <Group color="Plain Text" /> + <Group color="User Types"/> + </Match> + + <!-- |> |< << >> <= >= <- -> :?> --> <Match color="Plain Text">(\|>|\|<|<<|>>|<=|>=|<-|->|:\?>)</Match> + + <Match expression="(let)(\s)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s)([\w]+)\s[^=:]" ignorecase="False"> + <!-- let inline add x y = x + y --> + <Group color="Keyword(Iteration)"/> + <Group color="Plain Text" /> + <Group color="Keyword(Modifiers)"/> + <Group color="Plain Text" /> + <Group color="Keyword(Modifiers)"/> + <Group color="Plain Text" /> + <Group color="User Method Declaration"/> + </Match> + <Match expression="(let)(\s)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s)([\w]+)\s[^=:]" ignorecase="False"> <!-- let inline add x y = x + y --> <Group color="Keyword(Iteration)"/> @@ -277,6 +311,8 @@ <Group color="Plain Text" /> <Group color="User Method Declaration"/> </Match> + + <Match expression="(let)(\s)(?!(?:static|abstract|default|override|public|extern|internal|mutable|rec|inline|private))([\w]+)\s[^=]" ignorecase="False"> <!-- let add x y = x + y --> <Group color="Keyword(Iteration)"/> @@ -284,37 +320,44 @@ <Group color="User Method Declaration"/> </Match> - <Match expression="(override)(\s)(\w+)(\.)(\w+)" ignorecase="False"> - <!-- override x.CanHandle y = --> - <Group color="Keyword(Modifiers)"/> - <Group color="Plain Text" /> - <Group color="User Field Declaration" /> + <Match color="Keyword(Modifiers)">(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)\b</Match> + + <Match expression="([A-Z]{1}\w*)(\s?=)"> + <Group color="User Field Declaration"/> <Group color="Plain Text" /> - <Group color="User Method Declaration"/> </Match> - <Match color="Keyword(Modifiers)">(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)\b</Match> <Match expression="\b([A-Z][\w]+)\b" ignorecase="False"> <Group color="User Types"/> </Match> - <Match expression="(:\s?)([\w]+)\b"> + <Match expression="(:\s?)(['\w]+)\b"> <Group color="Plain Text"/> <Group color="User Types"/> </Match> - <Match expression="([<])([^_]\w*)\b"> + + <Match expression="(<)([^_]\w*)(>)"> <Group color="Punctuation(Brackets)"/> <Group color="User Types"/> + <Group color="Punctuation(Brackets)"/> </Match> - <Match expression="(namespace|open)(.*)$" ignorecase="False"> + <Match color="User Types">'\w+</Match> + + <Match expression="(namespace|open)\b(.*)$" ignorecase="False"> <Group color="Keyword(Namespace)"/> <Group color="Plain Text"/> </Match> - + + <Match expression="(module|type)(\s*)(\w+)" ignorecase="False"> + <Group color="Keyword(Namespace)"/> + <Group color="Plain Text"/> + <Group color="User Types"/> + </Match> + <Match color="Keyword(Jump)" ignorecase="False">(function|fun|new)\b</Match> - <Match color="Keyword(Iteration)" ignorecase="False">(async|maybe|asyncMaybe|asyncSeq|seq|query|let|finally|try|with|val|while|for|begin|done|elif|else|end|if|match|then|when|void|global|base|inherit|member|type|module|of|class|delegate|exception|interface|struct|as)\b</Match> + <Match color="Keyword(Iteration)" ignorecase="False">(async|maybe|asyncMaybe|asyncSeq|asyncChoice|seq|query|let|finally|try|with|val|while|for|begin|done|elif|else|end|if|match|then|when|void|global|base|inherit|member|type|module|of|class|delegate|exception|interface|struct|as|in)\b</Match> <Match expression="([a-z]{1}\w*)\s\""> <Group color="User Method Declaration"/> @@ -337,13 +380,17 @@ <Group color="User Method Declaration"/> </Match> + <Match expression="([a-z]{1}\w*)\s?[\(]" ignorecase="False"> + <Group color="User Method Declaration"/> + </Match> <Match expression="([a-z]{1}\w*)" ignorecase="False"> <Group color="User Field Declaration"/> </Match> + <Match expression="(\.)([A-Z]{1}\w*)" ignorecase="False"> <Group color="Plain Text" /> - <Group color="User Field Declaration"/> + <Group color="User Property Declaration"/> </Match> </SyntaxMode> |