github-linguist 5.0.0 → 5.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +10 -2
  3. data/bin/linguist +26 -9
  4. data/grammars/config.xcompose.json +83 -0
  5. data/grammars/hint.haskell.json +21 -30
  6. data/grammars/hint.message.haskell.json +21 -30
  7. data/grammars/hint.type.haskell.json +21 -30
  8. data/grammars/source.bsl.json +42 -28
  9. data/grammars/source.cs.json +656 -131
  10. data/grammars/source.csound-document.json +142 -25
  11. data/grammars/source.csound-score.json +13 -10
  12. data/grammars/source.csound.json +136 -81
  13. data/grammars/source.css.json +1501 -331
  14. data/grammars/source.css.less.json +3 -3
  15. data/grammars/source.d.json +60 -44
  16. data/grammars/source.gn.json +240 -138
  17. data/grammars/source.graphql.json +781 -155
  18. data/grammars/source.haskell.json +21 -30
  19. data/grammars/source.js.json +46 -46
  20. data/grammars/source.mask.json +1 -1
  21. data/grammars/source.perl6fe.json +1151 -763
  22. data/grammars/source.python.json +45 -23
  23. data/grammars/source.quoting.perl6fe.json +2170 -0
  24. data/grammars/source.reason.json +296 -0
  25. data/grammars/source.regexp.perl6fe.json +27 -0
  26. data/grammars/source.rust.json +522 -125
  27. data/grammars/source.sdbl.json +2 -2
  28. data/grammars/source.shell.json +125 -161
  29. data/grammars/source.solidity.json +137 -0
  30. data/grammars/source.ts.json +385 -137
  31. data/grammars/source.tsx.json +394 -167
  32. data/grammars/source.yaml.json +176 -171
  33. data/grammars/text.html.php.blade.json +2 -2
  34. data/grammars/text.tex.latex.haskell.json +1 -10
  35. data/lib/linguist/generated.rb +50 -4
  36. data/lib/linguist/heuristics.rb +1 -1
  37. data/lib/linguist/language.rb +12 -8
  38. data/lib/linguist/languages.json +1 -1
  39. data/lib/linguist/languages.yml +38 -1
  40. data/lib/linguist/samples.json +4605 -581
  41. data/lib/linguist/vendor.yml +6 -0
  42. data/lib/linguist/version.rb +1 -1
  43. metadata +10 -7
  44. data/grammars/source.hy.json +0 -270
@@ -11,18 +11,18 @@
11
11
  "classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
12
12
  "functionName": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
13
13
  "className": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",
14
- "operatorChar": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]",
15
- "operator": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+",
16
- "operatorFun": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))",
14
+ "operatorChar": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))",
15
+ "operator": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+",
16
+ "operatorFun": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))",
17
17
  "basicChar": "[\\ -\\[\\]-~]",
18
18
  "escapeChar": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])",
19
19
  "octalChar": "(?:\\\\o[0-7]+)",
20
20
  "hexChar": "(?:\\\\x[0-9A-Fa-f]+)",
21
21
  "controlChar": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
22
- "character": "(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
23
- "functionTypeDeclaration": "(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
24
- "doubleColonOperator": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
25
- "ctorTypeDeclaration": "(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
22
+ "character": "(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
23
+ "functionTypeDeclaration": "(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
24
+ "doubleColonOperator": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
25
+ "ctorTypeDeclaration": "(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
26
26
  "ctorArgs": "(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)",
27
27
  "ctor": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)))*)?))",
28
28
  "typeDeclOne": "(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))",
@@ -92,11 +92,6 @@
92
92
  {
93
93
  "begin": "(^[ \\t]+)?(?=--+\\s+[|^])",
94
94
  "end": "(?!\\G)",
95
- "beginCaptures": {
96
- "1": {
97
- "name": "punctuation.whitespace.comment.leading.haskell"
98
- }
99
- },
100
95
  "patterns": [
101
96
  {
102
97
  "name": "comment.line.double-dash.haddock.haskell",
@@ -114,13 +109,8 @@
114
109
  ]
115
110
  },
116
111
  {
117
- "begin": "(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
112
+ "begin": "(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))",
118
113
  "end": "(?!\\G)",
119
- "beginCaptures": {
120
- "1": {
121
- "name": "punctuation.whitespace.comment.leading.haskell"
122
- }
123
- },
124
114
  "patterns": [
125
115
  {
126
116
  "name": "comment.line.double-dash.haskell",
@@ -163,7 +153,7 @@
163
153
  "patterns": [
164
154
  {
165
155
  "name": "entity.name.function.infix.haskell",
166
- "match": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))"
156
+ "match": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))"
167
157
  }
168
158
  ]
169
159
  },
@@ -173,6 +163,7 @@
173
163
  "name": "meta.declaration.exports.haskell",
174
164
  "begin": "\\(",
175
165
  "end": "\\)",
166
+ "applyEndPatternLast": 1,
176
167
  "patterns": [
177
168
  {
178
169
  "include": "#comments"
@@ -248,7 +239,7 @@
248
239
  "patterns": [
249
240
  {
250
241
  "name": "meta.function.type-declaration.haskell",
251
- "begin": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
242
+ "begin": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
252
243
  "end": "^(?!\\1[ \\t]|[ \\t]*$)",
253
244
  "contentName": "meta.type-signature.haskell",
254
245
  "beginCaptures": {
@@ -278,7 +269,7 @@
278
269
  "patterns": [
279
270
  {
280
271
  "name": "meta.ctor.type-declaration.haskell",
281
- "begin": "^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
272
+ "begin": "^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
282
273
  "end": "^(?!\\1[ \\t]|[ \\t]*$)",
283
274
  "contentName": "meta.type-signature.haskell",
284
275
  "beginCaptures": {
@@ -308,8 +299,8 @@
308
299
  "patterns": [
309
300
  {
310
301
  "name": "meta.record-field.type-declaration.haskell",
311
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
312
- "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))|})",
302
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
303
+ "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))|})",
313
304
  "contentName": "meta.type-signature.haskell",
314
305
  "beginCaptures": {
315
306
  "1": {
@@ -357,11 +348,11 @@
357
348
  },
358
349
  {
359
350
  "name": "keyword.other.arrow.haskell",
360
- "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(->|→)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
351
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(->|→)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
361
352
  },
362
353
  {
363
354
  "name": "keyword.other.big-arrow.haskell",
364
- "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(=>|⇒)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
355
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(=>|⇒)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
365
356
  },
366
357
  {
367
358
  "include": "#operator"
@@ -883,7 +874,7 @@
883
874
  "patterns": [
884
875
  {
885
876
  "name": "string.quoted.single.haskell",
886
- "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))(')",
877
+ "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(')",
887
878
  "captures": {
888
879
  "1": {
889
880
  "name": "punctuation.definition.string.begin.haskell"
@@ -905,7 +896,7 @@
905
896
  "scoped_type": {
906
897
  "patterns": [
907
898
  {
908
- "match": "\\(((?<paren>(?:[^\\(\\)]|\\(\\g<paren>\\))*)(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?<paren2>(?:[^\\(\\)]|\\(\\g<paren2>\\))*))\\)",
899
+ "match": "\\(((?<paren>(?:[^\\(\\)]|\\(\\g<paren>\\))*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?<paren2>(?:[^\\(\\)]|\\(\\g<paren2>\\))*))\\)",
909
900
  "captures": {
910
901
  "1": {
911
902
  "patterns": [
@@ -917,7 +908,7 @@
917
908
  }
918
909
  },
919
910
  {
920
- "match": "((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))(.*?)(?=(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(<-|=)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])|$)",
911
+ "match": "((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(.*?)(?=(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))|$)",
921
912
  "captures": {
922
913
  "1": {
923
914
  "name": "keyword.other.double-colon.haskell"
@@ -937,7 +928,7 @@
937
928
  "scoped_type_override": {
938
929
  "patterns": [
939
930
  {
940
- "match": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))(.*)(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(<-|=)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
931
+ "match": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))(.*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
941
932
  "captures": {
942
933
  "2": {
943
934
  "patterns": [
@@ -1003,7 +994,7 @@
1003
994
  "patterns": [
1004
995
  {
1005
996
  "name": "keyword.operator.haskell",
1006
- "match": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+"
997
+ "match": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+"
1007
998
  }
1008
999
  ]
1009
1000
  },
@@ -70,12 +70,26 @@
70
70
  "name": "variable.bsl"
71
71
  }
72
72
  },
73
- "end": "(?i:(Экспорт|Export)?)",
73
+ "end": "(;)",
74
74
  "endCaptures": {
75
75
  "1": {
76
- "name": "storage.modifier.bsl"
76
+ "name": "keyword.operator.bsl"
77
+ }
78
+ },
79
+ "patterns": [
80
+ {
81
+ "name": "keyword.operator.bsl",
82
+ "match": "(,)"
83
+ },
84
+ {
85
+ "name": "storage.modifier.bsl",
86
+ "match": "(?i:(?<=[^\\wа-яё\\.]|^)(Экспорт|Export)(?=[^\\wа-яё\\.]|$))"
87
+ },
88
+ {
89
+ "name": "variable.bsl",
90
+ "match": "(?i:[a-zа-яё0-9_]+)"
77
91
  }
78
- }
92
+ ]
79
93
  },
80
94
  {
81
95
  "comment": "Variable assignment",
@@ -144,17 +158,17 @@
144
158
  {
145
159
  "comment": "Глобальный контекст - функции работы со значениями типа Строка",
146
160
  "name": "support.function.bsl",
147
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(СтрДлина|StrLen|СокрЛ|TrimL|СокрП|TrimR|СокрЛП|TrimAll|Лев|Left|Прав|Right|Сред|Mid|СтрНайти|StrFind|ВРег|Upper|НРег|Lower|ТРег|Title|Символ|Char|КодСимвола|CharCode|ПустаяСтрока|IsBlankString|СтрЗаменить|StrReplace|СтрЧислоСтрок|StrLineCount|СтрПолучитьСтроку|StrGetLine|СтрЧислоВхождений|StrOccurrenceCount|СтрСравнить|StrCompare|СтрНачинаетсяС|StrStartWith|СтрЗаканчиваетсяНа|StrEndsWith|СтрРазделить|StrSplit|СтрСоединить|StrConcat)\\s*(?=\\())"
161
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n СтрДлина|StrLen|\n СокрЛ|TrimL|\n СокрП|TrimR|\n СокрЛП|TrimAll|\n Лев|Left|\n Прав|Right|\n Сред|Mid|\n СтрНайти|StrFind|\n ВРег|Upper|\n НРег|Lower|\n ТРег|Title|\n Символ|Char|\n КодСимвола|CharCode|\n ПустаяСтрока|IsBlankString|\n СтрЗаменить|StrReplace|\n СтрЧислоСтрок|StrLineCount|\n СтрПолучитьСтроку|StrGetLine|\n СтрЧислоВхождений|StrOccurrenceCount|\n СтрСравнить|StrCompare|\n СтрНачинаетсяС|StrStartWith|\n СтрЗаканчиваетсяНа|StrEndsWith|\n СтрРазделить|StrSplit|\n СтрСоединить|StrConcat\n)\\s*(?=\\())"
148
162
  },
149
163
  {
150
164
  "comment": "Глобальный контекст - функции работы со значениями типа Число",
151
165
  "name": "support.function.bsl",
152
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(Цел|Int|Окр|Round|ACos|ACos|ASin|ASin|ATan|ATan|Cos|Cos|Exp|Exp|Log|Log|Log10|Log10|Pow|Pow|Sin|Sin|Sqrt|Sqrt|Tan|Tan)\\s*(?=\\())"
166
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n Цел|Int|\n Окр|Round|\n ACos|\n ASin|\n ATan|\n Cos|\n Exp|\n Log|\n Log10|\n Pow|\n Sin|\n Sqrt|\n Tan\n)\\s*(?=\\())"
153
167
  },
154
168
  {
155
169
  "comment": "Глобальный контекст - функции работы со значениями типа Дата",
156
170
  "name": "support.function.bsl",
157
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(Год|Year|Месяц|Month|День|Day|Час|Hour|Минута|Minute|Секунда|Second|НачалоГода|BegOfYear|НачалоДня|BegOfDay|НачалоКвартала|BegOfQuarter|НачалоМесяца|BegOfMonth|НачалоМинуты|BegOfMinute|НачалоНедели|BegOfWeek|НачалоЧаса|BegOfHour|КонецГода|EndOfYear|КонецДня|EndOfDay|КонецКвартала|EndOfQuarter|КонецМесяца|EndOfMonth|КонецМинуты|EndOfMinute|КонецНедели|EndOfWeek|КонецЧаса|EndOfHour|НеделяГода|WeekOfYear|ДеньГода|DayOfYear|ДеньНедели|WeekDay|ТекущаяДата|CurrentDate|ДобавитьМесяц|AddMonth)\\s*(?=\\())"
171
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n Год|Year|\n Месяц|Month|\n День|Day|\n Час|Hour|\n Минута|Minute|\n Секунда|Second|\n НачалоГода|BegOfYear|\n НачалоДня|BegOfDay|\n НачалоКвартала|BegOfQuarter|\n НачалоМесяца|BegOfMonth|\n НачалоМинуты|BegOfMinute|\n НачалоНедели|BegOfWeek|\n НачалоЧаса|BegOfHour|\n КонецГода|EndOfYear|\n КонецДня|EndOfDay|\n КонецКвартала|EndOfQuarter|\n КонецМесяца|EndOfMonth|\n КонецМинуты|EndOfMinute|\n КонецНедели|EndOfWeek|\n КонецЧаса|EndOfHour|\n НеделяГода|WeekOfYear|\n ДеньГода|DayOfYear|\n ДеньНедели|WeekDay|\n ТекущаяДата|CurrentDate|\n ДобавитьМесяц|AddMonth\n)\\s*(?=\\())"
158
172
  },
159
173
  {
160
174
  "comment": "Глобальный контекст - функции работы со значениями типа Тип",
@@ -169,92 +183,92 @@
169
183
  {
170
184
  "comment": "Глобальный контекст - процедуры и функции интерактивной работы",
171
185
  "name": "support.function.bsl",
172
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ПоказатьВопрос|ShowQueryBox|Вопрос|DoQueryBox|ПоказатьПредупреждение|ShowMessageBox|Предупреждение|DoMessageBox|Сообщить|Message|ОчиститьСообщения|ClearMessages|ОповеститьОбИзменении|NotifyChanged|Состояние|Status|Сигнал|Beep|ПоказатьЗначение|ShowValue|ОткрытьЗначение|OpenValue|Оповестить|Notify|ОбработкаПрерыванияПользователя|UserInterruptProcessing|ОткрытьСодержаниеСправки|OpenHelpContent|ОткрытьИндексСправки|OpenHelpIndex|ОткрытьСправку|OpenHelp|ПоказатьИнформациюОбОшибке|ShowErrorInfo|КраткоеПредставлениеОшибки|BriefErrorDescription|ПодробноеПредставлениеОшибки|DetailErrorDescription|ПолучитьФорму|GetForm|ЗакрытьСправку|CloseHelp|ПоказатьОповещениеПользователя|ShowUserNotification|ОткрытьФорму|OpenForm|ОткрытьФормуМодально|OpenFormModal|АктивноеОкно|ActiveWindow|ВыполнитьОбработкуОповещения|ExecuteNotifyProcessing)\\s*(?=\\())"
186
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ПоказатьВопрос|ShowQueryBox|\n Вопрос|DoQueryBox|\n ПоказатьПредупреждение|ShowMessageBox|\n Предупреждение|DoMessageBox|\n Сообщить|Message|\n ОчиститьСообщения|ClearMessages|\n ОповеститьОбИзменении|NotifyChanged|\n Состояние|Status|\n Сигнал|Beep|\n ПоказатьЗначение|ShowValue|\n ОткрытьЗначение|OpenValue|\n Оповестить|Notify|\n ОбработкаПрерыванияПользователя|UserInterruptProcessing|\n ОткрытьСодержаниеСправки|OpenHelpContent|\n ОткрытьИндексСправки|OpenHelpIndex|\n ОткрытьСправку|OpenHelp|\n ПоказатьИнформациюОбОшибке|ShowErrorInfo|\n КраткоеПредставлениеОшибки|BriefErrorDescription|\n ПодробноеПредставлениеОшибки|DetailErrorDescription|\n ПолучитьФорму|GetForm|\n ЗакрытьСправку|CloseHelp|\n ПоказатьОповещениеПользователя|ShowUserNotification|\n ОткрытьФорму|OpenForm|\n ОткрытьФормуМодально|OpenFormModal|\n АктивноеОкно|ActiveWindow|\n ВыполнитьОбработкуОповещения|ExecuteNotifyProcessing\n)\\s*(?=\\())"
173
187
  },
174
188
  {
175
189
  "comment": "Глобальный контекст - функции для вызова диалога ввода данных",
176
190
  "name": "support.function.bsl",
177
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ПоказатьВводЗначения|ShowInputValue|ВвестиЗначение|InputValue|ПоказатьВводЧисла|ShowInputNumber|ВвестиЧисло|InputNumber|ПоказатьВводСтроки|ShowInputString|ВвестиСтроку|InputString|ПоказатьВводДаты|ShowInputDate|ВвестиДату|InputDate)\\s*(?=\\())"
191
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ПоказатьВводЗначения|ShowInputValue|\n ВвестиЗначение|InputValue|\n ПоказатьВводЧисла|ShowInputNumber|\n ВвестиЧисло|InputNumber|\n ПоказатьВводСтроки|ShowInputString|\n ВвестиСтроку|InputString|\n ПоказатьВводДаты|ShowInputDate|\n ВвестиДату|InputDate\n)\\s*(?=\\())"
178
192
  },
179
193
  {
180
194
  "comment": "Глобальный контекст - функции форматирования",
181
195
  "name": "support.function.bsl",
182
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(Формат|Format|ЧислоПрописью|NumberInWords|НСтр|NStr|ПредставлениеПериода|PeriodPresentation|СтрШаблон|StrTemplate)\\s*(?=\\())"
196
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n Формат|Format|\n ЧислоПрописью|NumberInWords|\n НСтр|NStr|\n ПредставлениеПериода|PeriodPresentation|\n СтрШаблон|StrTemplate\n)\\s*(?=\\())"
183
197
  },
184
198
  {
185
199
  "comment": "Глобальный контекст - функции обращения к конфигурации",
186
200
  "name": "support.function.bsl",
187
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ПолучитьОбщийМакет|GetCommonTemplate|ПолучитьОбщуюФорму|GetCommonForm|ПредопределенноеЗначение|PredefinedValue|ПолучитьПолноеИмяПредопределенногоЗначения|GetPredefinedValueFullName)\\s*(?=\\())"
201
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ПолучитьОбщийМакет|GetCommonTemplate|\n ПолучитьОбщуюФорму|GetCommonForm|\n ПредопределенноеЗначение|PredefinedValue|\n ПолучитьПолноеИмяПредопределенногоЗначения|GetPredefinedValueFullName\n)\\s*(?=\\())"
188
202
  },
189
203
  {
190
204
  "comment": "Глобальный контекст - процедуры и функции сеанса работы",
191
205
  "name": "support.function.bsl",
192
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ПолучитьЗаголовокСистемы|GetCaption|ПолучитьСкоростьКлиентскогоСоединения|GetClientConnectionSpeed|ПодключитьОбработчикОжидания|AttachIdleHandler|УстановитьЗаголовокСистемы|SetCaption|ОтключитьОбработчикОжидания|DetachIdleHandler|ИмяКомпьютера|ComputerName|ЗавершитьРаботуСистемы|Exit|ИмяПользователя|UserName|ПрекратитьРаботуСистемы|Terminate|ПолноеИмяПользователя|UserFullName|ЗаблокироватьРаботуПользователя|LockApplication|КаталогПрограммы|BinDir|КаталогВременныхФайлов|TempFilesDir|ПравоДоступа|AccessRight|РольДоступна|IsInRole|ТекущийЯзык|CurrentLanguage|ТекущийКодЛокализации|CurrentLocaleCode|СтрокаСоединенияИнформационнойБазы|InfoBaseConnectionString|ПодключитьОбработчикОповещения|AttachNotificationHandler|ОтключитьОбработчикОповещения|DetachNotificationHandler|ПолучитьСообщенияПользователю|GetUserMessages|ПараметрыДоступа|AccessParameters|ПредставлениеПриложения|ApplicationPresentation|ТекущийЯзыкСистемы|CurrentSystemLanguage|ЗапуститьСистему|RunSystem|ТекущийРежимЗапуска|CurrentRunMode|УстановитьЧасовойПоясСеанса|SetSessionTimeZone|ЧасовойПоясСеанса|SessionTimeZone|ТекущаяДатаСеанса|CurrentSessionDate|УстановитьКраткийЗаголовокПриложения|SetShortApplicationCaption|ПолучитьКраткийЗаголовокПриложения|GetShortApplicationCaption|ПредставлениеПрава|RightPresentation|ВыполнитьПроверкуПравДоступа|VerifyAccessRights|РабочийКаталогДанныхПользователя|UserDataWorkDir|КаталогДокументов|DocumentsDir|ПолучитьИнформациюЭкрановКлиента|GetClientDisplaysInformation|ТекущийВариантОсновногоШрифтаКлиентскогоПриложения|ClientApplicationBaseFontCurrentVariant|ТекущийВариантИнтерфейсаКлиентскогоПриложения|ClientApplicationInterfaceCurrentVariant|УстановитьЗаголовокКлиентскогоПриложения|SetClientApplicationCaption|ПолучитьЗаголовокКлиентскогоПриложения|GetClientApplicationCaption|НачатьПолучениеКаталогаВременныхФайлов|BeginGettingTempFilesDir|НачатьПолучениеКаталогаДокументов|BeginGettingDocumentsDir|НачатьПолучениеРабочегоКаталогаДанныхПользователя|BeginGettingUserDataWorkDir|ПодключитьОбработчикЗапросаНастроекКлиентаЛицензирования|AttachLicensingClientParametersRequestHandler|ОтключитьОбработчикЗапросаНастроекКлиентаЛицензирования|DetachLicensingClientParametersRequestHandler|КаталогБиблиотекиМобильногоУстройства|MobileDeviceLibraryDir)\\s*(?=\\())"
206
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ПолучитьЗаголовокСистемы|GetCaption|\n ПолучитьСкоростьКлиентскогоСоединения|GetClientConnectionSpeed|\n ПодключитьОбработчикОжидания|AttachIdleHandler|\n УстановитьЗаголовокСистемы|SetCaption|\n ОтключитьОбработчикОжидания|DetachIdleHandler|\n ИмяКомпьютера|ComputerName|\n ЗавершитьРаботуСистемы|Exit|\n ИмяПользователя|UserName|\n ПрекратитьРаботуСистемы|Terminate|\n ПолноеИмяПользователя|UserFullName|\n ЗаблокироватьРаботуПользователя|LockApplication|\n КаталогПрограммы|BinDir|\n КаталогВременныхФайлов|TempFilesDir|\n ПравоДоступа|AccessRight|\n РольДоступна|IsInRole|\n ТекущийЯзык|CurrentLanguage|\n ТекущийКодЛокализации|CurrentLocaleCode|\n СтрокаСоединенияИнформационнойБазы|InfoBaseConnectionString|\n ПодключитьОбработчикОповещения|AttachNotificationHandler|\n ОтключитьОбработчикОповещения|DetachNotificationHandler|\n ПолучитьСообщенияПользователю|GetUserMessages|\n ПараметрыДоступа|AccessParameters|\n ПредставлениеПриложения|ApplicationPresentation|\n ТекущийЯзыкСистемы|CurrentSystemLanguage|\n ЗапуститьСистему|RunSystem|\n ТекущийРежимЗапуска|CurrentRunMode|\n УстановитьЧасовойПоясСеанса|SetSessionTimeZone|\n ЧасовойПоясСеанса|SessionTimeZone|\n ТекущаяДатаСеанса|CurrentSessionDate|\n УстановитьКраткийЗаголовокПриложения|SetShortApplicationCaption|\n ПолучитьКраткийЗаголовокПриложения|GetShortApplicationCaption|\n ПредставлениеПрава|RightPresentation|\n ВыполнитьПроверкуПравДоступа|VerifyAccessRights|\n РабочийКаталогДанныхПользователя|UserDataWorkDir|\n КаталогДокументов|DocumentsDir|\n ПолучитьИнформациюЭкрановКлиента|GetClientDisplaysInformation|\n ТекущийВариантОсновногоШрифтаКлиентскогоПриложения|ClientApplicationBaseFontCurrentVariant|\n ТекущийВариантИнтерфейсаКлиентскогоПриложения|ClientApplicationInterfaceCurrentVariant|\n УстановитьЗаголовокКлиентскогоПриложения|SetClientApplicationCaption|\n ПолучитьЗаголовокКлиентскогоПриложения|GetClientApplicationCaption|\n НачатьПолучениеКаталогаВременныхФайлов|BeginGettingTempFilesDir|\n НачатьПолучениеКаталогаДокументов|BeginGettingDocumentsDir|\n НачатьПолучениеРабочегоКаталогаДанныхПользователя|BeginGettingUserDataWorkDir|\n ПодключитьОбработчикЗапросаНастроекКлиентаЛицензирования|AttachLicensingClientParametersRequestHandler|\n ОтключитьОбработчикЗапросаНастроекКлиентаЛицензирования|DetachLicensingClientParametersRequestHandler|\n КаталогБиблиотекиМобильногоУстройства|MobileDeviceLibraryDir\n)\\s*(?=\\())"
193
207
  },
194
208
  {
195
209
  "comment": "Глобальный контекст - процедуры и функции сохранения значений",
196
210
  "name": "support.function.bsl",
197
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ЗначениеВСтрокуВнутр|ValueToStringInternal|ЗначениеИзСтрокиВнутр|ValueFromStringInternal|ЗначениеВФайл|ValueToFile|ЗначениеИзФайла|ValueFromFile)\\s*(?=\\())"
211
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ЗначениеВСтрокуВнутр|ValueToStringInternal|\n ЗначениеИзСтрокиВнутр|ValueFromStringInternal|\n ЗначениеВФайл|ValueToFile|\n ЗначениеИзФайла|ValueFromFile\n)\\s*(?=\\())"
198
212
  },
199
213
  {
200
214
  "comment": "Глобальный контекст - Процедуры и функции работы с операционной системой",
201
215
  "name": "support.function.bsl",
202
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(КомандаСистемы|System|ЗапуститьПриложение|RunApp|ПолучитьCOMОбъект|GetCOMObject|ПользователиОС|OSUsers|НачатьЗапускПриложения|BeginRunningApplication)\\s*(?=\\())"
216
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n КомандаСистемы|System|\n ЗапуститьПриложение|RunApp|\n ПолучитьCOMОбъект|GetCOMObject|\n ПользователиОС|OSUsers|\n НачатьЗапускПриложения|BeginRunningApplication\n)\\s*(?=\\())"
203
217
  },
204
218
  {
205
219
  "comment": "Глобальный контекст - Процедуры и функции работы с внешними компонентами",
206
220
  "name": "support.function.bsl",
207
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ПодключитьВнешнююКомпоненту|AttachAddIn|НачатьУстановкуВнешнейКомпоненты|BeginInstallAddIn|УстановитьВнешнююКомпоненту|InstallAddIn|НачатьПодключениеВнешнейКомпоненты|BeginAttachingAddIn)\\s*(?=\\())"
221
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ПодключитьВнешнююКомпоненту|AttachAddIn|\n НачатьУстановкуВнешнейКомпоненты|BeginInstallAddIn|\n УстановитьВнешнююКомпоненту|InstallAddIn|\n НачатьПодключениеВнешнейКомпоненты|BeginAttachingAddIn\n)\\s*(?=\\())"
208
222
  },
209
223
  {
210
224
  "comment": "Глобальный контекст - Процедуры и функции работы с файлами",
211
225
  "name": "support.function.bsl",
212
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(КопироватьФайл|FileCopy|ПереместитьФайл|MoveFile|УдалитьФайлы|DeleteFiles|НайтиФайлы|FindFiles|СоздатьКаталог|CreateDirectory|ПолучитьИмяВременногоФайла|GetTempFileName|РазделитьФайл|SplitFile|ОбъединитьФайлы|MergeFiles|ПолучитьФайл|GetFile|НачатьПомещениеФайла|BeginPutFile|ПоместитьФайл|PutFile|ЭтоАдресВременногоХранилища|IsTempStorageURL|УдалитьИзВременногоХранилища|DeleteFromTempStorage|ПолучитьИзВременногоХранилища|GetFromTempStorage|ПоместитьВоВременноеХранилище|PutToTempStorage|ПодключитьРасширениеРаботыСФайлами|AttachFileSystemExtension|НачатьУстановкуРасширенияРаботыСФайлами|BeginInstallFileSystemExtension|УстановитьРасширениеРаботыСФайлами|InstallFileSystemExtension|ПолучитьФайлы|GetFiles|ПоместитьФайлы|PutFiles|ЗапроситьРазрешениеПользователя|RequestUserPermission|ПолучитьМаскуВсеФайлы|GetAllFilesMask|ПолучитьМаскуВсеФайлыКлиента|GetClientAllFilesMask|ПолучитьМаскуВсеФайлыСервера|GetServerAllFilesMask|ПолучитьРазделительПути|GetPathSeparator|ПолучитьРазделительПутиКлиента|GetClientPathSeparator|ПолучитьРазделительПутиСервера|GetServerPathSeparator|НачатьПодключениеРасширенияРаботыСФайлами|BeginAttachingFileSystemExtension|НачатьЗапросРазрешенияПользователя|BeginRequestingUserPermission|НачатьПоискФайлов|BeginFindingFiles|НачатьСозданиеКаталога|BeginCreatingDirectory|НачатьКопированиеФайла|BeginCopyingFile|НачатьПеремещениеФайла|BeginMovingFile|НачатьУдалениеФайлов|BeginDeletingFiles|НачатьПолучениеФайлов|BeginGettingFiles|НачатьПомещениеФайлов|BeginPuttingFiles|НачатьСозданиеДвоичныхДанныхИзФайла|BeginCreateBinaryDataFromFile)\\s*(?=\\())"
226
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n КопироватьФайл|FileCopy|\n ПереместитьФайл|MoveFile|\n УдалитьФайлы|DeleteFiles|\n НайтиФайлы|FindFiles|\n СоздатьКаталог|CreateDirectory|\n ПолучитьИмяВременногоФайла|GetTempFileName|\n РазделитьФайл|SplitFile|\n ОбъединитьФайлы|MergeFiles|\n ПолучитьФайл|GetFile|\n НачатьПомещениеФайла|BeginPutFile|\n ПоместитьФайл|PutFile|\n ЭтоАдресВременногоХранилища|IsTempStorageURL|\n УдалитьИзВременногоХранилища|DeleteFromTempStorage|\n ПолучитьИзВременногоХранилища|GetFromTempStorage|\n ПоместитьВоВременноеХранилище|PutToTempStorage|\n ПодключитьРасширениеРаботыСФайлами|AttachFileSystemExtension|\n НачатьУстановкуРасширенияРаботыСФайлами|BeginInstallFileSystemExtension|\n УстановитьРасширениеРаботыСФайлами|InstallFileSystemExtension|\n ПолучитьФайлы|GetFiles|\n ПоместитьФайлы|PutFiles|\n ЗапроситьРазрешениеПользователя|RequestUserPermission|\n ПолучитьМаскуВсеФайлы|GetAllFilesMask|\n ПолучитьМаскуВсеФайлыКлиента|GetClientAllFilesMask|\n ПолучитьМаскуВсеФайлыСервера|GetServerAllFilesMask|\n ПолучитьРазделительПути|GetPathSeparator|\n ПолучитьРазделительПутиКлиента|GetClientPathSeparator|\n ПолучитьРазделительПутиСервера|GetServerPathSeparator|\n НачатьПодключениеРасширенияРаботыСФайлами|BeginAttachingFileSystemExtension|\n НачатьЗапросРазрешенияПользователя|BeginRequestingUserPermission|\n НачатьПоискФайлов|BeginFindingFiles|\n НачатьСозданиеКаталога|BeginCreatingDirectory|\n НачатьКопированиеФайла|BeginCopyingFile|\n НачатьПеремещениеФайла|BeginMovingFile|\n НачатьУдалениеФайлов|BeginDeletingFiles|\n НачатьПолучениеФайлов|BeginGettingFiles|\n НачатьПомещениеФайлов|BeginPuttingFiles|\n НачатьСозданиеДвоичныхДанныхИзФайла|BeginCreateBinaryDataFromFile\n)\\s*(?=\\())"
213
227
  },
214
228
  {
215
229
  "comment": "Глобальный контекст - Процедуры и функции работы с информационной базой",
216
230
  "name": "support.function.bsl",
217
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(НачатьТранзакцию|BeginTransaction|ЗафиксироватьТранзакцию|CommitTransaction|ОтменитьТранзакцию|RollbackTransaction|УстановитьМонопольныйРежим|SetExclusiveMode|МонопольныйРежим|ExclusiveMode|ПолучитьОперативнуюОтметкуВремени|GetRealTimeTimestamp|ПолучитьСоединенияИнформационнойБазы|GetInfoBaseConnections|НомерСоединенияИнформационнойБазы|InfoBaseConnectionNumber|КонфигурацияИзменена|ConfigurationChanged|КонфигурацияБазыДанныхИзмененаДинамически|DataBaseConfigurationChangedDynamically|УстановитьВремяОжиданияБлокировкиДанных|SetLockWaitTime|ОбновитьНумерациюОбъектов|RefreshObjectsNumbering|ПолучитьВремяОжиданияБлокировкиДанных|GetLockWaitTime|КодЛокализацииИнформационнойБазы|InfoBaseLocaleCode|УстановитьМинимальнуюДлинуПаролейПользователей|SetUserPasswordMinLength|ПолучитьМинимальнуюДлинуПаролейПользователей|GetUserPasswordMinLength|ИнициализироватьПредопределенныеДанные|InitializePredefinedData|УдалитьДанныеИнформационнойБазы|EraseInfoBaseData|УстановитьПроверкуСложностиПаролейПользователей|SetUserPasswordStrengthCheck|ПолучитьПроверкуСложностиПаролейПользователей|GetUserPasswordStrengthCheck|ПолучитьСтруктуруХраненияБазыДанных|GetDBStorageStructureInfo|УстановитьПривилегированныйРежим|SetPrivilegedMode|ПривилегированныйРежим|PrivilegedMode|ТранзакцияАктивна|TransactionActive|НеобходимостьЗавершенияСоединения|ConnectionStopRequest|НомерСеансаИнформационнойБазы|InfoBaseSessionNumber|ПолучитьСеансыИнформационнойБазы|GetInfoBaseSessions|ЗаблокироватьДанныеДляРедактирования|LockDataForEdit|УстановитьСоединениеСВнешнимИсточникомДанных|ConnectExternalDataSource|РазблокироватьДанныеДляРедактирования|UnlockDataForEdit|РазорватьСоединениеСВнешнимИсточникомДанных|DisconnectExternalDataSource|ПолучитьБлокировкуСеансов|GetSessionsLock|УстановитьБлокировкуСеансов|SetSessionsLock|ОбновитьПовторноИспользуемыеЗначения|RefreshReusableValues|УстановитьБезопасныйРежим|SetSafeMode|БезопасныйРежим|SafeMode|ПолучитьДанныеВыбора|GetChoiceData|УстановитьЧасовойПоясИнформационнойБазы|SetInfoBaseTimeZone|ПолучитьЧасовойПоясИнформационнойБазы|GetInfoBaseTimeZone|ПолучитьОбновлениеКонфигурацииБазыДанных|GetDataBaseConfigurationUpdate|УстановитьБезопасныйРежимРазделенияДанных|SetDataSeparationSafeMode|БезопасныйРежимРазделенияДанных|DataSeparationSafeMode|УстановитьВремяЗасыпанияПассивногоСеанса|SetPassiveSessionHibernateTime|ПолучитьВремяЗасыпанияПассивногоСеанса|GetPassiveSessionHibernateTime|УстановитьВремяЗавершенияСпящегоСеанса|SetHibernateSessionTerminateTime|ПолучитьВремяЗавершенияСпящегоСеанса|GetHibernateSessionTerminateTime|ПолучитьТекущийСеансИнформационнойБазы|GetCurrentInfoBaseSession|ПолучитьИдентификаторКонфигурации|GetConfigurationID|УстановитьНастройкиКлиентаЛицензирования|SetLicensingClientParameters|ПолучитьИмяКлиентаЛицензирования|GetLicensingClientName|ПолучитьДополнительныйПараметрКлиентаЛицензирования|GetLicensingClientAdditionalParameter|ПолучитьОтключениеБезопасногоРежима|GetSafeModeDisabled|УстановитьОтключениеБезопасногоРежима|SetSafeModeDisabled)\\s*(?=\\())"
231
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n НачатьТранзакцию|BeginTransaction|\n ЗафиксироватьТранзакцию|CommitTransaction|\n ОтменитьТранзакцию|RollbackTransaction|\n УстановитьМонопольныйРежим|SetExclusiveMode|\n МонопольныйРежим|ExclusiveMode|\n ПолучитьОперативнуюОтметкуВремени|GetRealTimeTimestamp|\n ПолучитьСоединенияИнформационнойБазы|GetInfoBaseConnections|\n НомерСоединенияИнформационнойБазы|InfoBaseConnectionNumber|\n КонфигурацияИзменена|ConfigurationChanged|\n КонфигурацияБазыДанныхИзмененаДинамически|DataBaseConfigurationChangedDynamically|\n УстановитьВремяОжиданияБлокировкиДанных|SetLockWaitTime|\n ОбновитьНумерациюОбъектов|RefreshObjectsNumbering|\n ПолучитьВремяОжиданияБлокировкиДанных|GetLockWaitTime|\n КодЛокализацииИнформационнойБазы|InfoBaseLocaleCode|\n УстановитьМинимальнуюДлинуПаролейПользователей|SetUserPasswordMinLength|\n ПолучитьМинимальнуюДлинуПаролейПользователей|GetUserPasswordMinLength|\n ИнициализироватьПредопределенныеДанные|InitializePredefinedData|\n УдалитьДанныеИнформационнойБазы|EraseInfoBaseData|\n УстановитьПроверкуСложностиПаролейПользователей|SetUserPasswordStrengthCheck|\n ПолучитьПроверкуСложностиПаролейПользователей|GetUserPasswordStrengthCheck|\n ПолучитьСтруктуруХраненияБазыДанных|GetDBStorageStructureInfo|\n УстановитьПривилегированныйРежим|SetPrivilegedMode|\n ПривилегированныйРежим|PrivilegedMode|\n ТранзакцияАктивна|TransactionActive|\n НеобходимостьЗавершенияСоединения|ConnectionStopRequest|\n НомерСеансаИнформационнойБазы|InfoBaseSessionNumber|\n ПолучитьСеансыИнформационнойБазы|GetInfoBaseSessions|\n ЗаблокироватьДанныеДляРедактирования|LockDataForEdit|\n УстановитьСоединениеСВнешнимИсточникомДанных|ConnectExternalDataSource|\n РазблокироватьДанныеДляРедактирования|UnlockDataForEdit|\n РазорватьСоединениеСВнешнимИсточникомДанных|DisconnectExternalDataSource|\n ПолучитьБлокировкуСеансов|GetSessionsLock|\n УстановитьБлокировкуСеансов|SetSessionsLock|\n ОбновитьПовторноИспользуемыеЗначения|RefreshReusableValues|\n УстановитьБезопасныйРежим|SetSafeMode|\n БезопасныйРежим|SafeMode|\n ПолучитьДанныеВыбора|GetChoiceData|\n УстановитьЧасовойПоясИнформационнойБазы|SetInfoBaseTimeZone|\n ПолучитьЧасовойПоясИнформационнойБазы|GetInfoBaseTimeZone|\n ПолучитьОбновлениеКонфигурацииБазыДанных|GetDataBaseConfigurationUpdate|\n УстановитьБезопасныйРежимРазделенияДанных|SetDataSeparationSafeMode|\n БезопасныйРежимРазделенияДанных|DataSeparationSafeMode|\n УстановитьВремяЗасыпанияПассивногоСеанса|SetPassiveSessionHibernateTime|\n ПолучитьВремяЗасыпанияПассивногоСеанса|GetPassiveSessionHibernateTime|\n УстановитьВремяЗавершенияСпящегоСеанса|SetHibernateSessionTerminateTime|\n ПолучитьВремяЗавершенияСпящегоСеанса|GetHibernateSessionTerminateTime|\n ПолучитьТекущийСеансИнформационнойБазы|GetCurrentInfoBaseSession|\n ПолучитьИдентификаторКонфигурации|GetConfigurationID|\n УстановитьНастройкиКлиентаЛицензирования|SetLicensingClientParameters|\n ПолучитьИмяКлиентаЛицензирования|GetLicensingClientName|\n ПолучитьДополнительныйПараметрКлиентаЛицензирования|GetLicensingClientAdditionalParameter|\n ПолучитьОтключениеБезопасногоРежима|GetSafeModeDisabled|\n УстановитьОтключениеБезопасногоРежима|SetSafeModeDisabled\n)\\s*(?=\\())"
218
232
  },
219
233
  {
220
234
  "comment": "Глобальный контекст - Процедуры и функции работы с данными информационной базы",
221
235
  "name": "support.function.bsl",
222
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(НайтиПомеченныеНаУдаление|FindMarkedForDeletion|НайтиПоСсылкам|FindByRef|УдалитьОбъекты|DeleteObjects|УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы|SetInfoBasePredefinedDataUpdate|ПолучитьОбновлениеПредопределенныхДанныхИнформационнойБазы|GetInfoBasePredefinedData)\\s*(?=\\())"
236
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n НайтиПомеченныеНаУдаление|FindMarkedForDeletion|\n НайтиПоСсылкам|FindByRef|\n УдалитьОбъекты|DeleteObjects|\n УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы|SetInfoBasePredefinedDataUpdate|\n ПолучитьОбновлениеПредопределенныхДанныхИнформационнойБазы|GetInfoBasePredefinedData\n)\\s*(?=\\())"
223
237
  },
224
238
  {
225
239
  "comment": "Глобальный контекст - Процедуры и функции работы с XML",
226
240
  "name": "support.function.bsl",
227
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(XMLСтрока|XMLString|XMLЗначение|XMLValue|XMLТип|XMLType|XMLТипЗнч|XMLTypeOf|ИзXMLТипа|FromXMLType|ВозможностьЧтенияXML|CanReadXML|ПолучитьXMLТип|GetXMLType|ПрочитатьXML|ReadXML|ЗаписатьXML|WriteXML|НайтиНедопустимыеСимволыXML|FindDisallowedXMLCharacters|ИмпортМоделиXDTO|ImportXDTOModel|СоздатьФабрикуXDTO|CreateXDTOFactory)\\s*(?=\\())"
241
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n XMLСтрока|XMLString|\n XMLЗначение|XMLValue|\n XMLТип|XMLType|\n XMLТипЗнч|XMLTypeOf|\n ИзXMLТипа|FromXMLType|\n ВозможностьЧтенияXML|CanReadXML|\n ПолучитьXMLТип|GetXMLType|\n ПрочитатьXML|ReadXML|\n ЗаписатьXML|WriteXML|\n НайтиНедопустимыеСимволыXML|FindDisallowedXMLCharacters|\n ИмпортМоделиXDTO|ImportXDTOModel|\n СоздатьФабрикуXDTO|CreateXDTOFactory\n)\\s*(?=\\())"
228
242
  },
229
243
  {
230
244
  "comment": "Глобальный контекст - Процедуры и функции работы с JSON",
231
245
  "name": "support.function.bsl",
232
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ЗаписатьJSON|WriteJSON|ПрочитатьJSON|ReadJSON|ПрочитатьДатуJSON|ReadJSONDate|ЗаписатьДатуJSON|WriteJSONDate)\\s*(?=\\())"
246
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ЗаписатьJSON|WriteJSON|\n ПрочитатьJSON|ReadJSON|\n ПрочитатьДатуJSON|ReadJSONDate|\n ЗаписатьДатуJSON|WriteJSONDate\n)\\s*(?=\\())"
233
247
  },
234
248
  {
235
249
  "comment": "Глобальный контекст - Процедуры и функции работы с журналом регистрации",
236
250
  "name": "support.function.bsl",
237
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ЗаписьЖурналаРегистрации|WriteLogEvent|ПолучитьИспользованиеЖурналаРегистрации|GetEventLogUsing|УстановитьИспользованиеЖурналаРегистрации|SetEventLogUsing|ПредставлениеСобытияЖурналаРегистрации|EventLogEventPresentation|ВыгрузитьЖурналРегистрации|UnloadEventLog|ПолучитьЗначенияОтбораЖурналаРегистрации|GetEventLogFilterValues|УстановитьИспользованиеСобытияЖурналаРегистрации|SetEventLogEventUse|ПолучитьИспользованиеСобытияЖурналаРегистрации|GetEventLogEventUse|СкопироватьЖурналРегистрации|CopyEventLog|ОчиститьЖурналРегистрации|ClearEventLog)\\s*(?=\\())"
251
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ЗаписьЖурналаРегистрации|WriteLogEvent|\n ПолучитьИспользованиеЖурналаРегистрации|GetEventLogUsing|\n УстановитьИспользованиеЖурналаРегистрации|SetEventLogUsing|\n ПредставлениеСобытияЖурналаРегистрации|EventLogEventPresentation|\n ВыгрузитьЖурналРегистрации|UnloadEventLog|\n ПолучитьЗначенияОтбораЖурналаРегистрации|GetEventLogFilterValues|\n УстановитьИспользованиеСобытияЖурналаРегистрации|SetEventLogEventUse|\n ПолучитьИспользованиеСобытияЖурналаРегистрации|GetEventLogEventUse|\n СкопироватьЖурналРегистрации|CopyEventLog|\n ОчиститьЖурналРегистрации|ClearEventLog\n)\\s*(?=\\())"
238
252
  },
239
253
  {
240
254
  "comment": "Глобальный контекст - Процедуры и функции работы с универсальными объектами",
241
255
  "name": "support.function.bsl",
242
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ЗначениеВДанныеФормы|ValueToFormData|ДанныеФормыВЗначение|FormDataToValue|КопироватьДанныеФормы|CopyFormData|УстановитьСоответствиеОбъектаИФормы|SetObjectAndFormConformity|ПолучитьСоответствиеОбъектаИФормы|GetObjectAndFormConformity)\\s*(?=\\())"
256
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ЗначениеВДанныеФормы|ValueToFormData|\n ДанныеФормыВЗначение|FormDataToValue|\n КопироватьДанныеФормы|CopyFormData|\n УстановитьСоответствиеОбъектаИФормы|SetObjectAndFormConformity|\n ПолучитьСоответствиеОбъектаИФормы|GetObjectAndFormConformity\n)\\s*(?=\\())"
243
257
  },
244
258
  {
245
259
  "comment": "Глобальный контекст - Процедуры и функции работы с функциональными опциями",
246
260
  "name": "support.function.bsl",
247
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ПолучитьФункциональнуюОпцию|GetFunctionalOption|ПолучитьФункциональнуюОпциюИнтерфейса|GetInterfaceFunctionalOption|УстановитьПараметрыФункциональныхОпцийИнтерфейса|SetInterfaceFunctionalOptionParameters|ПолучитьПараметрыФункциональныхОпцийИнтерфейса|GetInterfaceFunctionalOptionParameters|ОбновитьИнтерфейс|RefreshInterface)\\s*(?=\\())"
261
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ПолучитьФункциональнуюОпцию|GetFunctionalOption|\n ПолучитьФункциональнуюОпциюИнтерфейса|GetInterfaceFunctionalOption|\n УстановитьПараметрыФункциональныхОпцийИнтерфейса|SetInterfaceFunctionalOptionParameters|\n ПолучитьПараметрыФункциональныхОпцийИнтерфейса|GetInterfaceFunctionalOptionParameters|\n ОбновитьИнтерфейс|RefreshInterface\n)\\s*(?=\\())"
248
262
  },
249
263
  {
250
264
  "comment": "Глобальный контекст - Процедуры и функции работы с криптографией",
251
265
  "name": "support.function.bsl",
252
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(УстановитьРасширениеРаботыСКриптографией|InstallCryptoExtension|НачатьУстановкуРасширенияРаботыСКриптографией|BeginInstallCryptoExtension|ПодключитьРасширениеРаботыСКриптографией|AttachCryptoExtension|НачатьПодключениеРасширенияРаботыСКриптографией|BeginAttachingCryptoExtension)\\s*(?=\\())"
266
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n УстановитьРасширениеРаботыСКриптографией|InstallCryptoExtension|\n НачатьУстановкуРасширенияРаботыСКриптографией|BeginInstallCryptoExtension|\n ПодключитьРасширениеРаботыСКриптографией|AttachCryptoExtension|\n НачатьПодключениеРасширенияРаботыСКриптографией|BeginAttachingCryptoExtension\n)\\s*(?=\\())"
253
267
  },
254
268
  {
255
269
  "comment": "Глобальный контекст - Процедуры и функции работы со стандартным интерфейсом OData",
256
270
  "name": "support.function.bsl",
257
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(УстановитьСоставСтандартногоИнтерфейсаOData|SetStandardODataInterfaceContent|ПолучитьСоставСтандартногоИнтерфейсаOData|GetStandardODataInterfaceContent)\\s*(?=\\())"
271
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n УстановитьСоставСтандартногоИнтерфейсаOData|SetStandardODataInterfaceContent|\n ПолучитьСоставСтандартногоИнтерфейсаOData|GetStandardODataInterfaceContent\n)\\s*(?=\\())"
258
272
  },
259
273
  {
260
274
  "comment": "Глобальный контекст - Процедуры и функции работы с двоичными данными",
@@ -264,22 +278,22 @@
264
278
  {
265
279
  "comment": "Глобальный контекст - Прочие процедуры и функции",
266
280
  "name": "support.function.bsl",
267
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(Мин|Min|Макс|Max|ОписаниеОшибки|ErrorDescription|Вычислить|Eval|ИнформацияОбОшибке|ErrorInfo|Base64Значение|Base64Value|Base64Строка|Base64String|ЗаполнитьЗначенияСвойств|FillPropertyValues|ЗначениеЗаполнено|ValueIsFilled|ПолучитьПредставленияНавигационныхСсылок|GetURLsPresentations|НайтиОкноПоНавигационнойСсылке|FindWindowByURL|ПолучитьОкна|GetWindows|ПерейтиПоНавигационнойСсылке|GotoURL|ПолучитьНавигационнуюСсылку|GetURL|ПолучитьДопустимыеКодыЛокализации|GetAvailableLocaleCodes|ПолучитьНавигационнуюСсылкуИнформационнойБазы|GetInfoBaseURL|ПредставлениеКодаЛокализации|LocaleCodePresentation|ПолучитьДопустимыеЧасовыеПояса|GetAvailableTimeZones|ПредставлениеЧасовогоПояса|TimeZonePresentation|ТекущаяУниверсальнаяДата|CurrentUniversalDate|ТекущаяУниверсальнаяДатаВМиллисекундах|CurrentUniversalDateInMilliseconds|МестноеВремя|ToLocalTime|УниверсальноеВремя|ToUniversalTime|ЧасовойПояс|TimeZone|СмещениеЛетнегоВремени|DaylightTimeOffset|СмещениеСтандартногоВремени|StandardTimeOffset|КодироватьСтроку|EncodeString|РаскодироватьСтроку|DecodeString|Найти|Find|ПродолжитьВызов|ProceedWithCall)\\s*(?=\\())"
281
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n Мин|Min|\n Макс|Max|\n ОписаниеОшибки|ErrorDescription|\n Вычислить|Eval|\n ИнформацияОбОшибке|ErrorInfo|\n Base64Значение|Base64Value|\n Base64Строка|Base64String|\n ЗаполнитьЗначенияСвойств|FillPropertyValues|\n ЗначениеЗаполнено|ValueIsFilled|\n ПолучитьПредставленияНавигационныхСсылок|GetURLsPresentations|\n НайтиОкноПоНавигационнойСсылке|FindWindowByURL|\n ПолучитьОкна|GetWindows|\n ПерейтиПоНавигационнойСсылке|GotoURL|\n ПолучитьНавигационнуюСсылку|GetURL|\n ПолучитьДопустимыеКодыЛокализации|GetAvailableLocaleCodes|\n ПолучитьНавигационнуюСсылкуИнформационнойБазы|GetInfoBaseURL|\n ПредставлениеКодаЛокализации|LocaleCodePresentation|\n ПолучитьДопустимыеЧасовыеПояса|GetAvailableTimeZones|\n ПредставлениеЧасовогоПояса|TimeZonePresentation|\n ТекущаяУниверсальнаяДата|CurrentUniversalDate|\n ТекущаяУниверсальнаяДатаВМиллисекундах|CurrentUniversalDateInMilliseconds|\n МестноеВремя|ToLocalTime|\n УниверсальноеВремя|ToUniversalTime|\n ЧасовойПояс|TimeZone|\n СмещениеЛетнегоВремени|DaylightTimeOffset|\n СмещениеСтандартногоВремени|StandardTimeOffset|\n КодироватьСтроку|EncodeString|\n РаскодироватьСтроку|DecodeString|\n Найти|Find|\n ПродолжитьВызов|ProceedWithCall\n)\\s*(?=\\())"
268
282
  },
269
283
  {
270
284
  "comment": "Глобальный контекст - События приложения и сеанса",
271
285
  "name": "support.function.bsl",
272
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ПередНачаломРаботыСистемы|BeforeStart|ПриНачалеРаботыСистемы|OnStart|ПередЗавершениемРаботыСистемы|BeforeExit|ПриЗавершенииРаботыСистемы|OnExit|ОбработкаВнешнегоСобытия|ExternEventProcessing|УстановкаПараметровСеанса|SessionParametersSetting|ПриИзмененииПараметровЭкрана|OnChangeDisplaySettings)\\s*(?=\\())"
286
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ПередНачаломРаботыСистемы|BeforeStart|\n ПриНачалеРаботыСистемы|OnStart|\n ПередЗавершениемРаботыСистемы|BeforeExit|\n ПриЗавершенииРаботыСистемы|OnExit|\n ОбработкаВнешнегоСобытия|ExternEventProcessing|\n УстановкаПараметровСеанса|SessionParametersSetting|\n ПриИзмененииПараметровЭкрана|OnChangeDisplaySettings\n)\\s*(?=\\())"
273
287
  },
274
288
  {
275
289
  "comment": "Глобальный контекст - Свойства (классы)",
276
290
  "name": "support.class.bsl",
277
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(WSСсылки|WSReferences|БиблиотекаКартинок|PictureLib|БиблиотекаМакетовОформленияКомпоновкиДанных|DataCompositionAppearanceTemplateLib|БиблиотекаСтилей|StyleLib|БизнесПроцессы|BusinessProcesses|ВнешниеИсточникиДанных|ExternalDataSources|ВнешниеОбработки|ExternalDataProcessors|ВнешниеОтчеты|ExternalReports|Документы|Documents|ДоставляемыеУведомления|DeliverableNotifications|ЖурналыДокументов|DocumentJournals|Задачи|Tasks|ИнформацияОбИнтернетСоединении|InternetConnectionInformation|ИспользованиеРабочейДаты|WorkingDateUse|ИсторияРаботыПользователя|UserWorkHistory|Константы|Constants|КритерииОтбора|FilterCriteria|Метаданные|Metadata|Обработки|DataProcessors|ОтправкаДоставляемыхУведомлений|DeliverableNotificationSend|Отчеты|Reports|ПараметрыСеанса|SessionParameters|Перечисления|Enums|ПланыВидовРасчета|ChartsOfCalculationTypes|ПланыВидовХарактеристик|ChartsOfCharacteristicTypes|ПланыОбмена|ExchangePlans|ПланыСчетов|ChartsOfAccounts|ПолнотекстовыйПоиск|FullTextSearch|ПользователиИнформационнойБазы|InfoBaseUsers|Последовательности|Sequences|РасширенияКонфигурации|ConfigurationExtensions|РегистрыБухгалтерии|AccountingRegisters|РегистрыНакопления|AccumulationRegisters|РегистрыРасчета|CalculationRegisters|РегистрыСведений|InformationRegisters|РегламентныеЗадания|ScheduledJobs|СериализаторXDTO|XDTOSerializer|Справочники|Catalogs|СредстваГеопозиционирования|LocationTools|СредстваКриптографии|CryptoToolsManager|СредстваМультимедиа|MultimediaTools|СредстваОтображенияРекламы|AdvertisingPresentationTools|СредстваПочты|MailTools|СредстваТелефонии|TelephonyTools|ФабрикаXDTO|ФайловыеПотоки|FileStreams|XDTOFactory|ФоновыеЗадания|BackgroundJobs|ХранилищаНастроек|SettingsStorages|ВстроенныеПокупки|InAppPurchases|ОтображениеРекламы|AdRepresentationПанельЗадачОС|OSTaskbar|ПроверкаВстроенныхПокупок|InAppPurchasesValidation)(?=[^\\wа-яё]|$))"
291
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n WSСсылки|WSReferences|\n БиблиотекаКартинок|PictureLib|\n БиблиотекаМакетовОформленияКомпоновкиДанных|DataCompositionAppearanceTemplateLib|\n БиблиотекаСтилей|StyleLib|\n БизнесПроцессы|BusinessProcesses|\n ВнешниеИсточникиДанных|ExternalDataSources|\n ВнешниеОбработки|ExternalDataProcessors|\n ВнешниеОтчеты|ExternalReports|\n Документы|Documents|\n ДоставляемыеУведомления|DeliverableNotifications|\n ЖурналыДокументов|DocumentJournals|\n Задачи|Tasks|\n ИнформацияОбИнтернетСоединении|InternetConnectionInformation|\n ИспользованиеРабочейДаты|WorkingDateUse|\n ИсторияРаботыПользователя|UserWorkHistory|\n Константы|Constants|\n КритерииОтбора|FilterCriteria|\n Метаданные|Metadata|\n Обработки|DataProcessors|\n ОтправкаДоставляемыхУведомлений|DeliverableNotificationSend|\n Отчеты|Reports|\n ПараметрыСеанса|SessionParameters|\n Перечисления|Enums|\n ПланыВидовРасчета|ChartsOfCalculationTypes|\n ПланыВидовХарактеристик|ChartsOfCharacteristicTypes|\n ПланыОбмена|ExchangePlans|\n ПланыСчетов|ChartsOfAccounts|\n ПолнотекстовыйПоиск|FullTextSearch|\n ПользователиИнформационнойБазы|InfoBaseUsers|\n Последовательности|Sequences|\n РасширенияКонфигурации|ConfigurationExtensions|\n РегистрыБухгалтерии|AccountingRegisters|\n РегистрыНакопления|AccumulationRegisters|\n РегистрыРасчета|CalculationRegisters|\n РегистрыСведений|InformationRegisters|\n РегламентныеЗадания|ScheduledJobs|\n СериализаторXDTO|XDTOSerializer|\n Справочники|Catalogs|\n СредстваГеопозиционирования|LocationTools|\n СредстваКриптографии|CryptoToolsManager|\n СредстваМультимедиа|MultimediaTools|\n СредстваОтображенияРекламы|AdvertisingPresentationTools|\n СредстваПочты|MailTools|\n СредстваТелефонии|TelephonyTools|\n ФабрикаXDTO|XDTOFactory|\n ФайловыеПотоки|FileStreams|\n ФоновыеЗадания|BackgroundJobs|\n ХранилищаНастроек|SettingsStorages|\n ВстроенныеПокупки|InAppPurchases|\n ОтображениеРекламы|AdRepresentation|\n ПанельЗадачОС|OSTaskbar|\n ПроверкаВстроенныхПокупок|InAppPurchasesValidation\n)(?=[^\\wа-яё]|$))"
278
292
  },
279
293
  {
280
294
  "comment": "Глобальный контекст - Свойства (переменные)",
281
295
  "name": "support.variable.bsl",
282
- "match": "(?i:(?<=[^\\wа-яё\\.]|^)(ГлавныйИнтерфейс|MainInterface|ГлавныйСтиль|MainStyle|ПараметрЗапуска|LaunchParameter|РабочаяДата|WorkingDate|ХранилищеВариантовОтчетов|ReportsVariantsStorage|ХранилищеНастроекДанныхФорм|FormDataSettingsStorage|ХранилищеОбщихНастроек|CommonSettingsStorage|ХранилищеПользовательскихНастроекДинамическихСписков|DynamicListsUserSettingsStorage|ХранилищеПользовательскихНастроекОтчетов|ReportsUserSettingsStorage|ХранилищеСистемныхНастроек|SystemSettingsStorage)(?=[^\\wа-яё]|$))"
296
+ "match": "(?x)(?i:(?<=[^\\wа-яё\\.]|^)(\n ГлавныйИнтерфейс|MainInterface|\n ГлавныйСтиль|MainStyle|\n ПараметрЗапуска|LaunchParameter|\n РабочаяДата|WorkingDate|\n ХранилищеВариантовОтчетов|ReportsVariantsStorage|\n ХранилищеНастроекДанныхФорм|FormDataSettingsStorage|\n ХранилищеОбщихНастроек|CommonSettingsStorage|\n ХранилищеПользовательскихНастроекДинамическихСписков|DynamicListsUserSettingsStorage|\n ХранилищеПользовательскихНастроекОтчетов|ReportsUserSettingsStorage|\n ХранилищеСистемныхНастроек|SystemSettingsStorage\n)(?=[^\\wа-яё]|$))"
283
297
  },
284
298
  {
285
299
  "name": "storage.modifier.directive.bsl",
@@ -7,6 +7,9 @@
7
7
  "foldingStartMarker": "^\\s*#\\s*region|^\\s*/\\*|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))",
8
8
  "foldingStopMarker": "^\\s*#\\s*endregion|^\\s*\\*/|^\\s*\\}",
9
9
  "patterns": [
10
+ {
11
+ "include": "#attribute"
12
+ },
10
13
  {
11
14
  "include": "#using"
12
15
  },
@@ -15,26 +18,67 @@
15
18
  },
16
19
  {
17
20
  "include": "#code"
21
+ },
22
+ {
23
+ "include": "#method"
18
24
  }
19
25
  ],
20
26
  "repository": {
21
27
  "using": {
22
- "begin": "^\\s*(using)\\b\\s+(static)?\\b\\s*([\\w.]+)",
28
+ "begin": "\\s*\\b(using)\\b",
23
29
  "beginCaptures": {
24
30
  "1": {
25
31
  "name": "keyword.other.using.cs"
32
+ }
33
+ },
34
+ "end": "\\s*(?:$|;)",
35
+ "patterns": [
36
+ {
37
+ "include": "#comments"
26
38
  },
27
- "2": {
28
- "name": "keyword.other.using.cs"
39
+ {
40
+ "match": "\\s*\\b(static)\\b",
41
+ "captures": {
42
+ "1": {
43
+ "name": "keyword.other.static.cs"
44
+ }
45
+ }
29
46
  },
30
- "3": {
47
+ {
48
+ "begin": "(\\w+)(?=.*\\=)",
49
+ "beginCaptures": {
50
+ "1": {
51
+ "name": "entity.name.alias.namespace.cs"
52
+ }
53
+ },
54
+ "patterns": [
55
+ {
56
+ "include": "#comments"
57
+ },
58
+ {
59
+ "begin": "\\s*\\=(?=[\\w\\s/])",
60
+ "patterns": [
61
+ {
62
+ "include": "#comments"
63
+ },
64
+ {
65
+ "match": "[\\w.]+",
66
+ "name": "entity.name.type.namespace.cs"
67
+ }
68
+ ],
69
+ "end": "(?=;)"
70
+ }
71
+ ],
72
+ "end": ";"
73
+ },
74
+ {
75
+ "match": "[\\w.]+",
31
76
  "name": "entity.name.type.namespace.cs"
32
77
  }
33
- },
34
- "end": "\\s*(?:$|(;))"
78
+ ]
35
79
  },
36
80
  "namespace": {
37
- "begin": "^\\s*((namespace)\\s+([\\w.]+))",
81
+ "begin": "\\s*[^@]?((namespace)\\s+([\\w.]+))",
38
82
  "beginCaptures": {
39
83
  "1": {
40
84
  "name": "meta.namespace.identifier.cs"
@@ -52,7 +96,6 @@
52
96
  "name": "punctuation.section.namespace.end.cs"
53
97
  }
54
98
  },
55
- "name": "meta.namespace.cs",
56
99
  "patterns": [
57
100
  {
58
101
  "begin": "{",
@@ -62,7 +105,6 @@
62
105
  }
63
106
  },
64
107
  "end": "(?=})",
65
- "name": "meta.namespace.body.cs",
66
108
  "patterns": [
67
109
  {
68
110
  "include": "#using"
@@ -77,6 +119,83 @@
77
119
  }
78
120
  ]
79
121
  },
122
+ "field-declaration": {
123
+ "patterns": [
124
+ {
125
+ "begin": "(?=(?:(?:(?:private|public|volatile|internal|protected|static|readonly|const|event|extern)\\s*)*)(?:[\\w\\s?*,<>\\[\\]]+?)(?:[\\w]+)\\s*(?:;|=|=>))",
126
+ "end": "(?=;)",
127
+ "name": "meta.field.declaration.cs",
128
+ "patterns": [
129
+ {
130
+ "begin": "(?==>?)",
131
+ "end": "(?=;|$)",
132
+ "patterns": [
133
+ {
134
+ "include": "#code"
135
+ }
136
+ ]
137
+ },
138
+ {
139
+ "begin": "\\s*=\\s*",
140
+ "end": "(?=;)",
141
+ "patterns": [
142
+ {
143
+ "include": "#code"
144
+ }
145
+ ]
146
+ },
147
+ {
148
+ "match": "\\s*((?:(?:private|public|volatile|internal|protected|static|readonly|const|event|extern)\\s*)*)\\s*(.+?)\\s*([\\w]+)\\s*(?=;|=)",
149
+ "captures": {
150
+ "1": {
151
+ "name": "storage.modifier.cs"
152
+ },
153
+ "2": {
154
+ "patterns": [
155
+ {
156
+ "include": "#type"
157
+ }
158
+ ]
159
+ },
160
+ "3": {
161
+ "name": "entity.name.variable.cs"
162
+ }
163
+ }
164
+ }
165
+ ]
166
+ }
167
+ ]
168
+ },
169
+ "variable": {
170
+ "patterns": [
171
+ {
172
+ "match": "\\s*\\b(var)\\s+(.*?)(?=(=|;))",
173
+ "captures": {
174
+ "1": {
175
+ "name": "keyword.other.var.cs"
176
+ },
177
+ "2": {
178
+ "name": "entity.name.variables.cs"
179
+ }
180
+ }
181
+ },
182
+ {
183
+ "match": "\\s*\\b(?!var|return|yield|throw)([\\w+<>*?,\\[\\]]+)\\s+([\\w]+)\\s*(?=(=(?!=)|;))",
184
+ "captures": {
185
+ "1": {
186
+ "patterns": [
187
+ {
188
+ "include": "#type"
189
+ }
190
+ ]
191
+ },
192
+ "2": {
193
+ "name": "entity.name.variables.cs"
194
+ }
195
+ }
196
+ }
197
+ ]
198
+ },
80
199
  "block": {
81
200
  "patterns": [
82
201
  {
@@ -101,10 +220,31 @@
101
220
  }
102
221
  ]
103
222
  },
223
+ "returnType": {
224
+ "patterns": [
225
+ {
226
+ "match": "void",
227
+ "name": "storage.type.cs"
228
+ },
229
+ {
230
+ "include": "#type"
231
+ }
232
+ ]
233
+ },
234
+ "type": {
235
+ "patterns": [
236
+ {
237
+ "include": "#builtinTypes"
238
+ },
239
+ {
240
+ "include": "#typeName"
241
+ }
242
+ ]
243
+ },
104
244
  "builtinTypes": {
105
245
  "patterns": [
106
246
  {
107
- "match": "\\b(bool|byte|sbyte|char|decimal|double|enum|float|int|uint|long|ulong|short|ushort|)\\s*(\\?|\\*|\\[\\s*\\])?\\s",
247
+ "match": "\\b(bool|byte|sbyte|char|decimal|double|enum|float|int|uint|long|ulong|short|ushort)[ ]*(\\?|\\*)?\\b",
108
248
  "name": "storage.value.type.cs",
109
249
  "captures": {
110
250
  "2": {
@@ -113,62 +253,236 @@
113
253
  }
114
254
  },
115
255
  {
116
- "match": "\\b(dynamic|object|string)\\s*(\\*|\\[\\s*\\])?\\s",
256
+ "match": "\\b(dynamic|object|string)[ ]*([*])?\\b",
117
257
  "name": "storage.reference.type.cs",
118
258
  "captures": {
119
259
  "2": {
120
260
  "name": "punctuation.storage.type.modifier.cs"
121
261
  }
122
262
  }
263
+ }
264
+ ]
265
+ },
266
+ "typeName": {
267
+ "patterns": [
268
+ {
269
+ "begin": "\\b([a-zA-Z]+[\\w\\.]*)\\s*<",
270
+ "end": ">",
271
+ "captures": {
272
+ "1": {
273
+ "name": "entity.name.generic.class.cs"
274
+ }
275
+ },
276
+ "patterns": [
277
+ {
278
+ "match": ","
279
+ },
280
+ {
281
+ "match": "(\\w+([?*])?)",
282
+ "captures": {
283
+ "1": {
284
+ "name": "meta.generic.type.specifier.cs",
285
+ "patterns": [
286
+ {
287
+ "include": "#type"
288
+ }
289
+ ]
290
+ }
291
+ }
292
+ }
293
+ ]
294
+ },
295
+ {
296
+ "match": "\\b(I[A-Z]+[\\w\\.]*)\\s*(?:\\s*\\[\\s*\\])?\\*?\\b",
297
+ "captures": {
298
+ "1": {
299
+ "name": "entity.name.interface.class.cs"
300
+ }
301
+ }
123
302
  },
124
303
  {
125
- "match": "\\b(void|class|struct|interface)\\s",
126
- "name": "storage.type.cs"
304
+ "match": "\\b([a-zA-Z]+[\\w\\.]*)\\s*(?:\\s*\\[\\s*\\])?\\*?\\b",
305
+ "captures": {
306
+ "1": {
307
+ "name": "entity.name.class.cs"
308
+ }
309
+ }
310
+ }
311
+ ]
312
+ },
313
+ "generic-constraints": {
314
+ "name": "meta.generic.constraints.cs",
315
+ "begin": "(where)\\s+(\\w+([?*])?)\\s*:",
316
+ "end": "(?=where|{|$)",
317
+ "beginCaptures": {
318
+ "1": {
319
+ "name": "keyword.other.cs"
320
+ },
321
+ "2": {
322
+ "name": "meta.generic.type.specifier.cs",
323
+ "patterns": [
324
+ {
325
+ "include": "#type"
326
+ }
327
+ ]
328
+ }
329
+ },
330
+ "patterns": [
331
+ {
332
+ "match": "\\b(class|struct)\\b",
333
+ "name": "keyword.other.cs"
334
+ },
335
+ {
336
+ "match": "(new)\\s*\\(\\s*\\)",
337
+ "captures": {
338
+ "1": {
339
+ "name": "keyword.other.cs"
340
+ }
341
+ }
342
+ },
343
+ {
344
+ "include": "#type"
345
+ },
346
+ {
347
+ "include": "#generic-constraints"
127
348
  }
128
349
  ]
129
350
  },
130
- "class": {
131
- "begin": "(?=\\w?[\\w\\s]*(?:class|struct|interface|enum)\\s+\\w+)",
351
+ "enum-declaration": {
352
+ "begin": "(?=(?:public|private|protected|internal)?(.*)?(?:enum)\\s+\\w+)",
132
353
  "end": "}",
133
354
  "endCaptures": {
134
355
  "0": {
135
- "name": "punctuation.section.class.end.cs"
356
+ "name": "punctuation.section.enum.end.cs"
136
357
  }
137
358
  },
138
- "name": "meta.class.cs",
139
359
  "patterns": [
140
360
  {
141
- "include": "#storage-modifiers"
361
+ "match": "\\b(public|private|protected|internal|static)\\b",
362
+ "name": "storage.modifier.cs"
142
363
  },
143
364
  {
144
365
  "include": "#comments"
145
366
  },
146
367
  {
147
- "captures": {
368
+ "begin": "(enum)\\s+",
369
+ "end": "(?={)",
370
+ "name": "meta.enum.declaration.cs",
371
+ "beginCaptures": {
148
372
  "1": {
149
- "name": "storage.modifier.cs"
373
+ "name": "keyword.enum.cs"
374
+ }
375
+ },
376
+ "patterns": [
377
+ {
378
+ "match": "\\b([a-zA-Z]+\\w*)\\b",
379
+ "captures": {
380
+ "1": {
381
+ "name": "meta.class.enum.identifier.cs"
382
+ }
383
+ }
384
+ }
385
+ ]
386
+ },
387
+ {
388
+ "begin": "{",
389
+ "beginCaptures": {
390
+ "0": {
391
+ "name": "punctuation.section.enum.begin.cs"
392
+ }
393
+ },
394
+ "end": "(?=})",
395
+ "patterns": [
396
+ {
397
+ "include": "#comments"
150
398
  },
151
- "2": {
152
- "name": "entity.name.type.class.cs"
399
+ {
400
+ "match": ","
401
+ },
402
+ {
403
+ "include": "#attribute"
404
+ },
405
+ {
406
+ "begin": "\\b([a-zA-Z]+\\w*)\\b\\s*",
407
+ "beginCaptures": {
408
+ "1": {
409
+ "name": "entity.name.enum.cs"
410
+ }
411
+ },
412
+ "end": "(?=,|})",
413
+ "patterns": [
414
+ {
415
+ "include": "#comments"
416
+ },
417
+ {
418
+ "begin": "\\s*=\\s*",
419
+ "end": "(?=,|})",
420
+ "patterns": [
421
+ {
422
+ "include": "#comments"
423
+ },
424
+ {
425
+ "include": "#constants"
426
+ }
427
+ ]
428
+ }
429
+ ]
430
+ }
431
+ ]
432
+ }
433
+ ]
434
+ },
435
+ "type-declaration": {
436
+ "begin": "(?=(?:public|private|protected|internal|static|partial)?(.*)?(?:class|struct|interface)\\s+\\w+)",
437
+ "end": "}",
438
+ "endCaptures": {
439
+ "0": {
440
+ "name": "punctuation.section.class.end.cs"
441
+ }
442
+ },
443
+ "patterns": [
444
+ {
445
+ "match": "\\b(public|private|protected|internal|static|partial)\\b",
446
+ "name": "storage.modifier.cs"
447
+ },
448
+ {
449
+ "include": "#comments"
450
+ },
451
+ {
452
+ "begin": "(class|struct|interface)\\s+",
453
+ "end": "(?={|:|$|where)",
454
+ "name": "meta.type.declaration.cs",
455
+ "beginCaptures": {
456
+ "1": {
457
+ "name": "keyword.class.cs"
153
458
  }
154
459
  },
155
- "match": "(class|struct|interface|enum)\\s+(\\w+)",
156
- "name": "meta.class.identifier.cs"
460
+ "patterns": [
461
+ {
462
+ "include": "#typeName"
463
+ }
464
+ ]
157
465
  },
158
466
  {
159
467
  "begin": ":",
160
- "end": "(?={)",
468
+ "end": "(?={|where)",
161
469
  "patterns": [
162
470
  {
471
+ "include": "#typeName"
472
+ },
473
+ {
474
+ "match": "([\\w<>]+)\\s*",
163
475
  "captures": {
164
476
  "1": {
165
477
  "name": "storage.type.cs"
166
478
  }
167
- },
168
- "match": "\\s*,?([A-Za-z_]\\w*)\\b"
479
+ }
169
480
  }
170
481
  ]
171
482
  },
483
+ {
484
+ "include": "#generic-constraints"
485
+ },
172
486
  {
173
487
  "begin": "{",
174
488
  "beginCaptures": {
@@ -177,20 +491,99 @@
177
491
  }
178
492
  },
179
493
  "end": "(?=})",
180
- "name": "meta.class.body.cs",
181
494
  "patterns": [
182
495
  {
183
- "include": "#method"
184
- },
185
- {
186
- "include": "#code"
496
+ "include": "#type-body"
187
497
  }
188
498
  ]
189
499
  }
190
500
  ]
191
501
  },
502
+ "type-body": {
503
+ "patterns": [
504
+ {
505
+ "include": "#attribute"
506
+ },
507
+ {
508
+ "include": "#enum-declaration"
509
+ },
510
+ {
511
+ "include": "#type-declaration"
512
+ },
513
+ {
514
+ "include": "#field-declaration"
515
+ },
516
+ {
517
+ "include": "#property-declaration"
518
+ },
519
+ {
520
+ "include": "#method"
521
+ },
522
+ {
523
+ "include": "#code"
524
+ }
525
+ ]
526
+ },
527
+ "typeOperator": {
528
+ "patterns": [
529
+ {
530
+ "include": "#keywordTypeOperator"
531
+ },
532
+ {
533
+ "include": "#castTypeOperator"
534
+ },
535
+ {
536
+ "include": "#functionTypeOperator"
537
+ }
538
+ ]
539
+ },
540
+ "castTypeOperator": {
541
+ "match": "\\((\\w+[?*,<>\\[\\]]*)\\)",
542
+ "captures": {
543
+ "1": {
544
+ "patterns": [
545
+ {
546
+ "include": "#type"
547
+ }
548
+ ]
549
+ }
550
+ }
551
+ },
552
+ "functionTypeOperator": {
553
+ "match": "\\b(typeof|sizeof)\\s*\\((\\w+[?*,<>\\[\\]]*)\\)",
554
+ "captures": {
555
+ "1": {
556
+ "name": "keyword.operator.cs"
557
+ },
558
+ "2": {
559
+ "patterns": [
560
+ {
561
+ "include": "#type"
562
+ }
563
+ ]
564
+ }
565
+ }
566
+ },
567
+ "keywordTypeOperator": {
568
+ "match": "\\b(is|as|new)\\s+(\\w+[?*,<>\\[\\]]*)",
569
+ "captures": {
570
+ "1": {
571
+ "name": "keyword.operator.cs"
572
+ },
573
+ "2": {
574
+ "patterns": [
575
+ {
576
+ "include": "#type"
577
+ }
578
+ ]
579
+ }
580
+ }
581
+ },
192
582
  "code": {
193
583
  "patterns": [
584
+ {
585
+ "include": "#typeOperator"
586
+ },
194
587
  {
195
588
  "include": "#block"
196
589
  },
@@ -198,13 +591,13 @@
198
591
  "include": "#comments"
199
592
  },
200
593
  {
201
- "include": "#class"
594
+ "include": "#enum-declaration"
202
595
  },
203
596
  {
204
- "include": "#constants"
597
+ "include": "#type-declaration"
205
598
  },
206
599
  {
207
- "include": "#storage-modifiers"
600
+ "include": "#constants"
208
601
  },
209
602
  {
210
603
  "include": "#keywords"
@@ -216,10 +609,10 @@
216
609
  "include": "#method-call"
217
610
  },
218
611
  {
219
- "include": "#builtinTypes"
612
+ "include": "#variable"
220
613
  },
221
614
  {
222
- "include": "#documentation"
615
+ "include": "#builtinTypes"
223
616
  }
224
617
  ]
225
618
  },
@@ -247,7 +640,7 @@
247
640
  "name": "punctuation.definition.comment.cs"
248
641
  }
249
642
  },
250
- "end": "\\*/\\n?",
643
+ "end": "\\*/",
251
644
  "name": "comment.block.cs"
252
645
  },
253
646
  {
@@ -262,15 +655,109 @@
262
655
  }
263
656
  ]
264
657
  },
265
- "constants": {
658
+ "string-interpolated": {
266
659
  "patterns": [
267
660
  {
268
- "match": "\\b(true|false|null|this|base)\\b",
269
- "name": "constant.language.cs"
661
+ "begin": "\\$\"",
662
+ "end": "\"|$",
663
+ "beginCaptures": {
664
+ "0": {
665
+ "name": "punctuation.definition.string.begin.cs"
666
+ }
667
+ },
668
+ "endCaptures": {
669
+ "0": {
670
+ "name": "punctuation.definition.string.end.cs"
671
+ }
672
+ },
673
+ "patterns": [
674
+ {
675
+ "begin": "([^{}]+?)(?={|\"|$)",
676
+ "end": "(?={|\"|$)",
677
+ "beginCaptures": {
678
+ "1": {
679
+ "name": "string.quoted.double.cs"
680
+ }
681
+ }
682
+ },
683
+ {
684
+ "begin": "{",
685
+ "end": "}",
686
+ "name": "meta.interpolated.expression.cs",
687
+ "patterns": [
688
+ {
689
+ "include": "#code"
690
+ }
691
+ ]
692
+ },
693
+ {
694
+ "begin": "([^{}]+?)(?={|\"|$)",
695
+ "end": "(?={|\"|$)",
696
+ "beginCaptures": {
697
+ "1": {
698
+ "name": "string.quoted.double.cs"
699
+ }
700
+ }
701
+ }
702
+ ]
703
+ }
704
+ ]
705
+ },
706
+ "string-interpolated-verbatim": {
707
+ "patterns": [
708
+ {
709
+ "begin": "\\$@\"",
710
+ "end": "\"",
711
+ "beginCaptures": {
712
+ "0": {
713
+ "name": "punctuation.definition.string.begin.cs"
714
+ }
715
+ },
716
+ "endCaptures": {
717
+ "0": {
718
+ "name": "punctuation.definition.string.end.cs"
719
+ }
720
+ },
721
+ "patterns": [
722
+ {
723
+ "begin": "([^{}]+?)(?={|\"|$)",
724
+ "end": "(?={|\"|$)",
725
+ "beginCaptures": {
726
+ "1": {
727
+ "name": "string.quoted.double.literal.cs"
728
+ }
729
+ }
730
+ },
731
+ {
732
+ "begin": "{",
733
+ "end": "}",
734
+ "name": "meta.interpolated.expression.cs",
735
+ "patterns": [
736
+ {
737
+ "include": "#code"
738
+ }
739
+ ]
740
+ },
741
+ {
742
+ "begin": "([^{}]+?)(?={|\"|$)",
743
+ "end": "(?={|\"|$)",
744
+ "beginCaptures": {
745
+ "1": {
746
+ "name": "string.quoted.double.literal.cs"
747
+ }
748
+ }
749
+ }
750
+ ]
751
+ }
752
+ ]
753
+ },
754
+ "string": {
755
+ "patterns": [
756
+ {
757
+ "include": "#string-interpolated-verbatim"
270
758
  },
271
759
  {
272
- "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(?i:f|d|m|u|l|ul|lu)?\\b",
273
- "name": "constant.numeric.cs"
760
+ "include": "#string-interpolated"
274
761
  },
275
762
  {
276
763
  "captures": {
@@ -325,6 +812,21 @@
325
812
  }
326
813
  ]
327
814
  },
815
+ "constants": {
816
+ "patterns": [
817
+ {
818
+ "match": "\\b(true|false|null|this|base)\\b",
819
+ "name": "constant.language.cs"
820
+ },
821
+ {
822
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(?i:f|d|m|u|l|ul|lu)?\\b",
823
+ "name": "constant.numeric.cs"
824
+ },
825
+ {
826
+ "include": "#string"
827
+ }
828
+ ]
829
+ },
328
830
  "keywords": {
329
831
  "patterns": [
330
832
  {
@@ -336,44 +838,71 @@
336
838
  "name": "keyword.linq.cs"
337
839
  },
338
840
  {
339
- "match": "\\b(new|is|as|using|checked|unchecked|typeof|sizeof|override|readonly|stackalloc|nameof)\\b",
841
+ "match": "\\b(using|checked|unchecked|override|readonly|stackalloc|nameof)\\b",
340
842
  "name": "keyword.operator.cs"
341
843
  },
342
844
  {
343
- "match": "\\b(event|delegate|fixed|add|remove|set|get|value|alias|global)\\b",
845
+ "match": "\\b(event|delegate|fixed|add|remove|set|get|value|alias|global|extern)\\b",
344
846
  "name": "keyword.other.cs"
847
+ }
848
+ ]
849
+ },
850
+ "attribute": {
851
+ "begin": "\\[",
852
+ "end": "\\]",
853
+ "name": "meta.annotation.cs",
854
+ "patterns": [
855
+ {
856
+ "include": "#constants"
345
857
  },
346
858
  {
347
- "match": "\\b(var)\\b",
348
- "name": "storage.type.var.cs"
859
+ "include": "#preprocessor"
349
860
  },
350
861
  {
351
- "match": "[@]\\b(var|event|delegate|add|remove|set|get|value|new|is|as|using|checked|unchecked|typeof|sizeof|override|readonly|stackalloc|from|where|select|group|into|orderby|join|let|on|equals|by|ascending|descending|if|else|while|for|foreach|in|do|return|continue|break|switch|case|default|goto|throw|try|catch|finally|lock|yield|await|nameof|when|alias|global)\\b",
352
- "name": "meta.class.body.cs"
862
+ "include": "#builtinTypes"
863
+ },
864
+ {
865
+ "include": "#comments"
353
866
  }
354
867
  ]
355
868
  },
356
- "method": {
869
+ "property-declaration": {
870
+ "begin": "\\s*(?!.*\\b(?:class|interface|struct)\\b)((?:\\w+\\s+)*?)(?!(?:private|public|internal|protected|static|new|virtual|override))(\\w.+?)\\s+(\\w+)\\s*(?={|$)",
871
+ "end": "}|;|$",
872
+ "beginCaptures": {
873
+ "1": {
874
+ "match": "\\b(private|public|internal|protected|static|new|virtual|override)\\b",
875
+ "name": "storage.modifier.cs"
876
+ },
877
+ "2": {
878
+ "patterns": [
879
+ {
880
+ "include": "#type"
881
+ }
882
+ ]
883
+ },
884
+ "3": {
885
+ "name": "entity.name.function.cs"
886
+ }
887
+ },
888
+ "name": "meta.property.cs",
357
889
  "patterns": [
358
890
  {
359
- "begin": "\\[",
360
- "end": "\\]",
361
- "name": "meta.method.annotation.cs",
891
+ "include": "#block"
892
+ },
893
+ {
894
+ "begin": "=",
895
+ "end": "(?=;)",
362
896
  "patterns": [
363
897
  {
364
- "include": "#constants"
365
- },
366
- {
367
- "include": "#preprocessor"
368
- },
369
- {
370
- "include": "#builtinTypes"
371
- },
372
- {
373
- "include": "#comments"
898
+ "include": "#code"
374
899
  }
375
900
  ]
376
- },
901
+ }
902
+ ]
903
+ },
904
+ "method": {
905
+ "patterns": [
377
906
  {
378
907
  "begin": "(?=\\bnew\\s+)(?=[\\w<].*\\s+)(?=[^=]+\\()",
379
908
  "end": "(?={|;)",
@@ -385,8 +914,22 @@
385
914
  ]
386
915
  },
387
916
  {
388
- "begin": "(?<!=|=\\s)(?!new)(?!.*(=|\\/\\/|\\/\\*).*\\()(?=[\\w<].*\\s+.+\\()",
389
- "end": "(})|(?=;)",
917
+ "match": "\\b(internal|public|protected|private|static|new|abstract|virtual|override|implicit|explicit|operator|async|partial)\\b",
918
+ "name": "storage.modifier.cs"
919
+ },
920
+ {
921
+ "begin": "(void|[\\w<>.?*\\[\\],]+)\\s*(?=.*)",
922
+ "beginCaptures": {
923
+ "1": {
924
+ "name": "meta.method.return-type.cs",
925
+ "patterns": [
926
+ {
927
+ "include": "#returnType"
928
+ }
929
+ ]
930
+ }
931
+ },
932
+ "end": "[};]",
390
933
  "endCaptures": {
391
934
  "1": {
392
935
  "name": "punctuation.section.method.end.cs"
@@ -395,21 +938,47 @@
395
938
  "name": "meta.method.cs",
396
939
  "patterns": [
397
940
  {
398
- "include": "#storage-modifiers"
399
- },
400
- {
401
- "include": "#builtinTypes"
402
- },
403
- {
404
- "begin": "([\\w.]+)\\s*\\(",
941
+ "begin": "([\\w]+)\\s*(<[\\w<>\\s,`?]*>)?\\s*(\\()",
405
942
  "beginCaptures": {
406
943
  "1": {
407
- "name": "entity.name.function.cs"
944
+ "name": "entity.name.function.declaration.cs"
945
+ },
946
+ "2": {
947
+ "name": "meta.generic.method.identifier",
948
+ "patterns": [
949
+ {
950
+ "match": ","
951
+ },
952
+ {
953
+ "match": "(\\w+)",
954
+ "captures": {
955
+ "1": {
956
+ "name": "meta.generic.type.specifier.cs",
957
+ "patterns": [
958
+ {
959
+ "include": "#type"
960
+ }
961
+ ]
962
+ }
963
+ }
964
+ }
965
+ ]
966
+ },
967
+ "3": {
968
+ "name": "punctuation.definition.method-parameters.begin.cs"
408
969
  }
409
970
  },
410
971
  "end": "\\)",
972
+ "endCaptures": {
973
+ "0": {
974
+ "name": "punctuation.definition.method-parameters.end.cs"
975
+ }
976
+ },
411
977
  "name": "meta.method.identifier.cs",
412
978
  "patterns": [
979
+ {
980
+ "include": "#attribute"
981
+ },
413
982
  {
414
983
  "include": "#parameters"
415
984
  },
@@ -418,21 +987,11 @@
418
987
  },
419
988
  {
420
989
  "include": "#comments"
421
- },
422
- {
423
- "include": "#builtinTypes"
424
990
  }
425
991
  ]
426
992
  },
427
993
  {
428
- "begin": "(?=\\w.*\\s+[\\w.]+\\s*\\()",
429
- "end": "(?=[\\w.]+\\s*\\()",
430
- "name": "meta.method.return-type.cs",
431
- "patterns": [
432
- {
433
- "include": "#builtinTypes"
434
- }
435
- ]
994
+ "include": "#generic-constraints"
436
995
  },
437
996
  {
438
997
  "begin": ":\\s*(this|base)\\s*\\(",
@@ -466,50 +1025,15 @@
466
1025
  "include": "#code"
467
1026
  }
468
1027
  ]
469
- }
470
- ]
471
- },
472
- {
473
- "begin": "(?!new)(?=[\\w<].*\\s+)(?=[^=]+\\{)",
474
- "end": "}",
475
- "endCaptures": {
476
- "0": {
477
- "name": "punctuation.section.property.end.cs"
478
- }
479
- },
480
- "name": "meta.property.cs",
481
- "patterns": [
482
- {
483
- "include": "#storage-modifiers"
484
- },
485
- {
486
- "begin": "([\\w.]+)\\s*(?={)",
487
- "captures": {
488
- "1": {
489
- "name": "entity.name.function.cs"
490
- }
491
- },
492
- "end": "(?={)",
493
- "name": "meta.method.identifier.cs"
494
- },
495
- {
496
- "begin": "(?=\\w.*\\s+[\\w.]+\\s*\\{)",
497
- "end": "(?=[\\w.]+\\s*\\{)",
498
- "name": "meta.method.return-type.cs",
499
- "patterns": [
500
- {
501
- "include": "#builtinTypes"
502
- }
503
- ]
504
1028
  },
505
1029
  {
506
- "begin": "{",
1030
+ "begin": "=>",
507
1031
  "beginCaptures": {
508
1032
  "0": {
509
- "name": "punctuation.section.property.begin.cs"
1033
+ "name": "punctuation.section.method.begin.cs"
510
1034
  }
511
1035
  },
512
- "end": "(?=})",
1036
+ "end": "(?=;)",
513
1037
  "name": "meta.method.body.cs",
514
1038
  "patterns": [
515
1039
  {
@@ -541,7 +1065,7 @@
541
1065
  "patterns": [
542
1066
  {
543
1067
  "match": ",",
544
- "name": "punctuation.definition.seperator.parameter.cs"
1068
+ "name": "punctuation.definition.separator.parameter.cs"
545
1069
  },
546
1070
  {
547
1071
  "include": "#code"
@@ -549,13 +1073,18 @@
549
1073
  ]
550
1074
  },
551
1075
  "parameters": {
552
- "begin": "\\b(ref|params|out)?\\s*\\b([\\w.\\[\\]]+)\\s+(\\w+)\\s*(=)?",
1076
+ "name": "meta.parameters.cs",
1077
+ "begin": "\\b(ref|params|out)?\\s*\\b(\\w+(?:\\s*<.*?>)?(?:\\s*\\*)*(?:\\s*\\?)?(?:\\s*\\[.*?\\])?)\\s+(@?\\w+)\\s*(=)?",
553
1078
  "beginCaptures": {
554
1079
  "1": {
555
- "name": "storage.type.modifier.cs"
1080
+ "name": "storage.modifier.cs"
556
1081
  },
557
1082
  "2": {
558
- "name": "storage.type.generic.cs"
1083
+ "patterns": [
1084
+ {
1085
+ "include": "#type"
1086
+ }
1087
+ ]
559
1088
  },
560
1089
  "3": {
561
1090
  "name": "variable.parameter.function.cs"
@@ -597,10 +1126,6 @@
597
1126
  "name": "meta.preprocessor.cs"
598
1127
  }
599
1128
  ]
600
- },
601
- "storage-modifiers": {
602
- "match": "\\b(event|delegate|internal|public|protected|private|static|const|new|sealed|abstract|virtual|override|extern|unsafe|readonly|volatile|implicit|explicit|operator|async|partial|alias)\\b",
603
- "name": "storage.modifier.cs"
604
1129
  }
605
1130
  }
606
1131
  }