github-linguist 7.9.0 → 7.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/etc.json +260 -1
  3. data/grammars/hidden.manref.json +1 -1
  4. data/grammars/hidden.regexp.injection-shell.json +28 -0
  5. data/grammars/source.4dm.json +57 -1
  6. data/grammars/source.abap.json +1 -1
  7. data/grammars/source.abl.json +685 -83
  8. data/grammars/source.agda.json +7 -7
  9. data/grammars/source.ballerina.json +1 -1
  10. data/grammars/source.c++.json +4 -4
  11. data/grammars/source.c.platform.json +584 -33
  12. data/grammars/source.chapel.json +5 -2
  13. data/grammars/source.css.json +1 -1
  14. data/grammars/source.curlrc.json +4 -4
  15. data/grammars/source.d.json +2 -2
  16. data/grammars/source.futhark.json +146 -0
  17. data/grammars/source.gcode.json +2 -2
  18. data/grammars/source.gedcom.json +196 -0
  19. data/grammars/source.generic-db.json +41 -0
  20. data/grammars/source.gfm.blade.json +15 -0
  21. data/grammars/source.gfm.json +1697 -1439
  22. data/grammars/source.httpspec.json +1 -1
  23. data/grammars/source.hx.json +5 -5
  24. data/grammars/source.hxml.json +2 -2
  25. data/grammars/source.idris.json +1 -1
  26. data/grammars/source.inputrc.json +1 -1
  27. data/grammars/source.isabelle.root.json +1 -1
  28. data/grammars/source.jison.json +3 -0
  29. data/grammars/source.jisonlex.json +3 -0
  30. data/grammars/source.julia.json +1 -1
  31. data/grammars/source.kotlin.json +17 -51
  32. data/grammars/source.lcov.json +398 -0
  33. data/grammars/source.lean.json +1 -1
  34. data/grammars/source.m2.json +125 -0
  35. data/grammars/source.man-conf.json +2 -2
  36. data/grammars/source.modula-3.json +10 -0
  37. data/grammars/{source.mrc.json → source.msl.json} +114 -99
  38. data/grammars/source.neon.json +381 -0
  39. data/grammars/source.objc.platform.json +493 -35
  40. data/grammars/source.openbsd-pkg.contents.json +128 -0
  41. data/grammars/source.p4.json +5 -21
  42. data/grammars/source.perl6fe.json +1 -1
  43. data/grammars/source.postscript.json +358 -103
  44. data/grammars/source.prisma.json +1 -1
  45. data/grammars/source.purescript.json +29 -2
  46. data/grammars/source.python.json +50 -0
  47. data/grammars/source.q.json +150 -63
  48. data/grammars/source.r.json +4 -4
  49. data/grammars/source.sieve.json +383 -0
  50. data/grammars/source.solidity.json +1 -1
  51. data/grammars/source.tags.json +266 -0
  52. data/grammars/source.ts.json +104 -36
  53. data/grammars/source.tsx.json +104 -36
  54. data/grammars/source.v.json +55 -24
  55. data/grammars/source.viml.json +3 -3
  56. data/grammars/source.webidl.json +8 -0
  57. data/grammars/source.wsd.json +25 -19
  58. data/grammars/source.x86.json +7 -3
  59. data/grammars/source.zig.json +84 -78
  60. data/grammars/text.dfy.dafny.json +188 -0
  61. data/grammars/text.html.php.blade.json +535 -528
  62. data/grammars/text.openbsd-pkg.desc.json +78 -0
  63. data/grammars/text.roff.json +49 -1
  64. data/grammars/text.sfd.json +21 -0
  65. data/grammars/text.xml.svg.json +8 -2
  66. data/grammars/version +1 -1
  67. data/lib/linguist/VERSION +1 -1
  68. data/lib/linguist/generated.rb +23 -6
  69. data/lib/linguist/languages.json +1 -1
  70. data/lib/linguist/languages.yml +74 -6
  71. data/lib/linguist/samples.json +4614 -150
  72. data/lib/linguist/vendor.yml +64 -62
  73. metadata +22 -10
  74. data/grammars/text.html.abl.json +0 -70
@@ -319,7 +319,7 @@
319
319
  },
320
320
  "model_block_definition": {
321
321
  "name": "source.prisma.embedded.source",
322
- "begin": "^\\s*(model|type)\\s+([A-Za-z][\\w]*)\\s+({)",
322
+ "begin": "^\\s*(model|type)\\s+([A-Za-z][\\w]*)\\s*({)",
323
323
  "end": "\\s*\\}",
324
324
  "patterns": [
325
325
  {
@@ -287,8 +287,35 @@
287
287
  "match": "\\b(do|ado|if|then|else|case|of|let|in)(?!')\\b"
288
288
  },
289
289
  {
290
- "name": "constant.numeric.float.purescript",
291
- "match": "\\b(([0-9]+_?)*[0-9]+\\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b"
290
+ "name": "constant.numeric.hex.purescript",
291
+ "match": "\\b(?\u003c!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)"
292
+ },
293
+ {
294
+ "name": "constant.numeric.decimal.purescript",
295
+ "match": "(?x)\n(?\u003c!\\$)(?:\n (?:\\b[0-9]+(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # 1.1E+3\n (?:\\b[0-9]+[eE][+-]?[0-9]+\\b)| # 1E+3\n (?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1\n (?:\\b[0-9]+\\b(?!\\.)) # 1\n)(?!\\$)",
296
+ "captures": {
297
+ "0": {
298
+ "name": "constant.numeric.decimal.purescript"
299
+ },
300
+ "1": {
301
+ "name": "meta.delimiter.decimal.period.purescript"
302
+ },
303
+ "2": {
304
+ "name": "meta.delimiter.decimal.period.purescript"
305
+ },
306
+ "3": {
307
+ "name": "meta.delimiter.decimal.period.purescript"
308
+ },
309
+ "4": {
310
+ "name": "meta.delimiter.decimal.period.purescript"
311
+ },
312
+ "5": {
313
+ "name": "meta.delimiter.decimal.period.purescript"
314
+ },
315
+ "6": {
316
+ "name": "meta.delimiter.decimal.period.purescript"
317
+ }
318
+ }
292
319
  },
293
320
  {
294
321
  "name": "constant.language.boolean.purescript",
@@ -1720,6 +1720,9 @@
1720
1720
  {
1721
1721
  "include": "#lambda"
1722
1722
  },
1723
+ {
1724
+ "include": "#generator"
1725
+ },
1723
1726
  {
1724
1727
  "include": "#illegal-operator"
1725
1728
  },
@@ -1735,6 +1738,9 @@
1735
1738
  {
1736
1739
  "include": "#list"
1737
1740
  },
1741
+ {
1742
+ "include": "#odd-function-call"
1743
+ },
1738
1744
  {
1739
1745
  "include": "#round-braces"
1740
1746
  },
@@ -2605,6 +2611,25 @@
2605
2611
  }
2606
2612
  ]
2607
2613
  },
2614
+ "generator": {
2615
+ "begin": "\\bfor\\b",
2616
+ "end": "\\bin\\b",
2617
+ "patterns": [
2618
+ {
2619
+ "include": "#expression"
2620
+ }
2621
+ ],
2622
+ "beginCaptures": {
2623
+ "0": {
2624
+ "name": "keyword.control.flow.python"
2625
+ }
2626
+ },
2627
+ "endCaptures": {
2628
+ "0": {
2629
+ "name": "keyword.control.flow.python"
2630
+ }
2631
+ }
2632
+ },
2608
2633
  "illegal-anno": {
2609
2634
  "name": "invalid.illegal.annotation.python",
2610
2635
  "match": "-\u003e"
@@ -2760,6 +2785,7 @@
2760
2785
  "include": "#special-names"
2761
2786
  },
2762
2787
  {
2788
+ "name": "meta.indexed-name.python",
2763
2789
  "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
2764
2790
  }
2765
2791
  ]
@@ -2988,6 +3014,9 @@
2988
3014
  },
2989
3015
  {
2990
3016
  "include": "#member-access-base"
3017
+ },
3018
+ {
3019
+ "include": "#member-access-attribute"
2991
3020
  }
2992
3021
  ],
2993
3022
  "beginCaptures": {
@@ -2996,6 +3025,10 @@
2996
3025
  }
2997
3026
  }
2998
3027
  },
3028
+ "member-access-attribute": {
3029
+ "name": "meta.attribute.python",
3030
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
3031
+ },
2999
3032
  "member-access-base": {
3000
3033
  "patterns": [
3001
3034
  {
@@ -3126,6 +3159,20 @@
3126
3159
  }
3127
3160
  }
3128
3161
  },
3162
+ "odd-function-call": {
3163
+ "begin": "(?x)\n (?\u003c= \\] | \\) ) \\s*\n (?=\\()\n",
3164
+ "end": "(\\))",
3165
+ "patterns": [
3166
+ {
3167
+ "include": "#function-arguments"
3168
+ }
3169
+ ],
3170
+ "endCaptures": {
3171
+ "1": {
3172
+ "name": "punctuation.definition.arguments.end.python"
3173
+ }
3174
+ }
3175
+ },
3129
3176
  "operator": {
3130
3177
  "match": "(?x)\n \\b(?\u003c!\\.)\n (?:\n (and | or | not | in | is) (?# 1)\n |\n (for | if | else | await | (?:yield(?:\\s+from)?)) (?# 2)\n )\n (?!\\s*:)\\b\n\n | (\u003c\u003c | \u003e\u003e | \u0026 | \\| | \\^ | ~) (?# 3)\n\n | (\\*\\* | \\* | \\+ | - | % | // | / | @) (?# 4)\n\n | (!= | == | \u003e= | \u003c= | \u003c | \u003e) (?# 5)\n",
3131
3178
  "captures": {
@@ -4711,6 +4758,9 @@
4711
4758
  {
4712
4759
  "include": "#function-declaration"
4713
4760
  },
4761
+ {
4762
+ "include": "#generator"
4763
+ },
4714
4764
  {
4715
4765
  "include": "#statement-keyword"
4716
4766
  },
@@ -1,65 +1,133 @@
1
1
  {
2
- "name": "q",
2
+ "name": "q/kdb",
3
3
  "scopeName": "source.q",
4
4
  "patterns": [
5
5
  {
6
- "name": "comment.block.source.q",
7
- "begin": "/\n",
8
- "end": "\\\\\n"
6
+ "name": "comment.block.q",
7
+ "begin": "^\\s*/\\s*$\\n",
8
+ "end": "^\\s*\\\\\\s*$\\n"
9
9
  },
10
10
  {
11
- "name": "comment.line.source.q",
12
- "match": "\\s/.*|^/.*"
11
+ "name": "comment.block.q",
12
+ "begin": "^\\\\\\s*\\n",
13
+ "end": "'As far as I know, there is no way to exit this kind of block comment'"
13
14
  },
14
15
  {
15
- "name": "comment.block.source.q",
16
- "begin": "\\\\\n",
17
- "end": "\\\\\n"
16
+ "name": "comment.line.q",
17
+ "match": "\\s/.+$\\n?|^/.+$\\n"
18
18
  },
19
19
  {
20
- "name": "other.source.q",
21
- "match": "(?=(\\W|\\b))((\\.Q\\.\\w+)|(\\.z\\.\\w+)|(\\\\\\w+))(?=(\\W|\\b))",
22
- "captures": {
20
+ "name": "string.quoted.string.source.q",
21
+ "begin": "\"",
22
+ "end": "\"",
23
+ "patterns": [
24
+ {
25
+ "name": "constant.numeric.complex.source.q",
26
+ "match": "\\\\[trn\\\\\\\"]"
27
+ },
28
+ {
29
+ "name": "constant.numeric.complex.source.q",
30
+ "match": "\\\\[0-9]{3}"
31
+ },
32
+ {
33
+ "name": "message.error.q",
34
+ "match": "\\\\[0-9]{1,2}"
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ "name": "string.interpolated.symbol.q",
40
+ "match": "(`:[:/a-zA-Z0-9_.]*)|(`[:a-zA-Z0-9_.]*)"
41
+ },
42
+ {
43
+ "begin": "(?=(\\W|\\b))(\\.[a-zA-Z]+[a-zA-Z0-9_]*)(\\.[a-zA-Z0-9_]*)*\\s*\\[(?=.*\\]\\s*([,+\\-*%@$!?\u003c\u003e=~|\u0026\\#]?)(::|:))",
44
+ "end": "\\]([,+\\-*%@$!?\u003c\u003e=~|\u0026\\#]?)(::|:)",
45
+ "patterns": [
46
+ {
47
+ "include": "$self"
48
+ }
49
+ ],
50
+ "beginCaptures": {
23
51
  "2": {
24
- "name": "support.function.q"
52
+ "name": "variable.parameter.complex.namespace_dict_assign.q"
53
+ },
54
+ "3": {
55
+ "name": "variable.parameter.complex.namespace_dict_assign.q"
56
+ }
57
+ },
58
+ "endCaptures": {
59
+ "1": {
60
+ "name": "support.function.assignment.q"
61
+ },
62
+ "2": {
63
+ "name": "support.function.assignment.q"
25
64
  }
26
65
  }
27
66
  },
28
67
  {
29
- "name": "string.quoted.string.source.q",
30
- "match": "\".*?\""
68
+ "name": "variable.parameter.complex.namespace_assignment.q",
69
+ "match": "(?=(\\W|\\b))(\\.[a-zA-Z]+[a-zA-Z0-9_]*)(\\.[a-zA-Z0-9_]*)*\\s*([,+\\-*%@$!?\u003c\u003e=~|\u0026\\#]?)(::|:)",
70
+ "captures": {
71
+ "4": {
72
+ "name": "support.function.assignment.q"
73
+ },
74
+ "5": {
75
+ "name": "support.function.assignment.q"
76
+ }
77
+ }
78
+ },
79
+ {
80
+ "name": "support.function.namespace.q",
81
+ "match": "\\.[qQhkozj]\\.\\w+"
31
82
  },
32
83
  {
33
- "name": "string.interpolated.symbol.source.q",
34
- "match": "`[:/a-zA-Z0-9_.]+"
84
+ "name": "source.other_namespaces.q",
85
+ "match": "(?=(\\W|\\b))(\\.[a-zA-Z]+[a-zA-Z0-9_]*)(\\.[a-zA-Z0-9_]*)*(?=(\\W|\\b))"
35
86
  },
36
87
  {
37
- "name": "other.source.q",
38
- "match": "(?=([^a-zA-Z0-9]|\\b))(\\.?[a-zA-Z]+[a-zA-Z0-9_\\.]*\\s*)(:)\\s*",
88
+ "name": "other.assignment.q",
89
+ "match": "(?=([^a-zA-Z0-9]|\\b))([a-zA-Z]+[a-zA-Z0-9_]*)\\s*([,+\\-*%@$!?\u003c\u003e=~|\u0026\\#]?)(::|:)",
39
90
  "captures": {
40
91
  "2": {
41
- "name": "variable.parameter.complex.source.q"
92
+ "name": "variable.parameter.complex.assignment.q"
42
93
  },
43
94
  "3": {
44
95
  "name": "support.function.q"
96
+ },
97
+ "4": {
98
+ "name": "support.function.q"
45
99
  }
46
100
  }
47
101
  },
48
102
  {
49
- "name": "support.function.q",
50
- "match": "[!$@\\\\/_#?|',`(\\\\:)]"
51
- },
52
- {
53
- "name": "support.function.q",
54
- "match": "\\.(?=\\W)"
103
+ "begin": "(?=([^a-zA-Z0-9]|\\b))([a-zA-Z]+[a-zA-Z0-9_]*)\\s*\\[(?=.*\\]\\s*([,+\\-*%@$!?\u003c\u003e=~|\u0026\\#]?)(::|:))",
104
+ "end": "\\]([,+\\-*%@$!?\u003c\u003e=~|\u0026\\#]?)(::|:)",
105
+ "patterns": [
106
+ {
107
+ "include": "$self"
108
+ }
109
+ ],
110
+ "beginCaptures": {
111
+ "2": {
112
+ "name": "variable.parameter.complex.dict_assign.q"
113
+ }
114
+ },
115
+ "endCaptures": {
116
+ "1": {
117
+ "name": "support.function.assignment.q"
118
+ },
119
+ "2": {
120
+ "name": "support.function.assignment.q"
121
+ }
122
+ }
55
123
  },
56
124
  {
57
125
  "contentName": "meta.function.parameters.q",
58
126
  "begin": "(\\{\\s*\\[)",
59
- "end": "(?=\\]\\s*)",
127
+ "end": "]",
60
128
  "patterns": [
61
129
  {
62
- "match": "\\b([a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(;)|(?=[\\]\\)]))",
130
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?:(;)|(?=[\\]\\)]))",
63
131
  "captures": {
64
132
  "1": {
65
133
  "name": "entity.other.inherited-class.q"
@@ -72,49 +140,68 @@
72
140
  ]
73
141
  },
74
142
  {
75
- "name": "other.source.q",
76
- "match": "(?=(\\W|\\b))(prd|while|wavg|delete|min|like|exp|abs|insert|wsum|last|log|div|cos|sin|sqrt|max|in|exec|within|xexp|avg|second|hour|minute|update|sum|by|from|select|neg|not|null|string|reciprocal|floor|ceiling|signum|mod|xbar|xlog|and|or|each|scan|over|prior|mmu|lsq|inv|md5|ltime|gtime|count|first|var|dev|med|cov|cor|all|any|rand|sums|prds|mins|maxs|fills|deltas|ratios|avgs|differ|prev|next|rank|reverse|iasc|idesc|asc|desc|msum|mcount|mavg|mdev|xrank|mmin|mmax|xprev|rotate|distinct|group|where|flip|type|key|til|get|value|attr|cut|set|upsert|raze|union|inter|except|cross|sv|vs|sublist|enlist|read0|read1|hopen|hclose|hdel|hsym|hcount|peach|system|ltrim|rtrim|trim|lower|upper|ssr|view|tables|views|cols|xcols|keys|xkey|xcol|xasc|xdesc|fkeys|meta|lj|aj|aj0|ij|pj|asof|uj|ww|wj|wj1|fby|xgroup|ungroup|ej|save|load|rsave|rload|show|csv|parse|eval)(?=(\\W|\\b))",
77
- "captures": {
78
- "2": {
79
- "name": "keyword.other.complex.source.q"
80
- }
81
- }
143
+ "name": "keyword.other.complex.keyword.q",
144
+ "match": "(?=(\\W|\\b))(abs|acos|aj|aj0|all|and|any|asc|asin|asof|atan|attr|avg|avgs|bin|binr|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|each|ej|ema|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|idesc|if|ij|ijf|in|insert|inter|inv|key|keys|last|like|lj|ljf|load|log|lower|lsq|ltime|ltrim|mavg|max|maxs|mcount|md5|mdev|med|meta|min|mins|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|prd|prds|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ss|ssr|string|sublist|sum|sums|sv|svar|system|tables|tan|til|trim|type|uj|ujf|ungroup|union|update|upper|upsert|value|var|view|views|vs|wavg|where|while|within|wj|wj1|wsum|xasc|xbar|xcol|xcols|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)(?=(\\W|\\b))"
82
145
  },
83
146
  {
84
- "name": "other.source.q",
85
- "match": "(?=(\\W|\\b))([0-9]{4}\\.[0-9]{2}\\.[0-9]{2}[TD]?[0-9]{2}:[0-9]{2}:[0-9]{2}(:[0-9]{2})?(\\.[0-9]{3,6})?)(?=(\\W|\\b))",
86
- "captures": {
87
- "2": {
88
- "name": "constant.numeric.complex.source.q"
89
- }
90
- }
147
+ "name": "constant.numeric.complex.timestamp.q",
148
+ "match": "(?=(\\W|\\b))([0-9]{4}\\.[0-9]{2}\\.[0-9]{2}D[0-9]{2}(:[0-5][0-9]){0,2}(\\.[0-9]{3}([a-zA-CE-SU-Z0-9]*[ABCEFGHIJKLMNOPQRSUVWXYZagklnopqrtuvwxy0-9])?|\\.[0-9]*|:)?)(?=(\\W|\\b))"
91
149
  },
92
150
  {
93
- "name": "other.source.q",
94
- "match": "(?=(\\W|\\b))([0-9]{4}\\.[0-9]{2}\\.[0-9]{2}[TD]?)(?=(\\W|\\b))",
95
- "captures": {
96
- "2": {
97
- "name": "constant.numeric.complex.source.q"
98
- }
99
- }
151
+ "name": "constant.numeric.complex.datetime.q",
152
+ "match": "(?=(\\W|\\b))([0-9]{4}\\.[0-9]{2}\\.[0-9]{2}T[0-9]{2}(:[0-5][0-9]){0,2}(\\.[0-9]{3}([a-zA-CE-Z0-9]*[ABCEFGHIJKLMNOPQRSUVWXYZagklnopqrtuvwxy0-9])?|\\.[0-9]*|:)?)(?=(\\W|\\b))"
100
153
  },
101
154
  {
102
- "name": "other.source.q",
103
- "match": "(?=(\\W|\\b))([0-9]{2}:[0-9]{2}:[0-9]{2}(:[0-9]{2})?(\\.[0-9]{3,6})?)(?=(\\W|\\b))",
104
- "captures": {
105
- "2": {
106
- "name": "constant.numeric.complex.source.q"
107
- }
108
- }
155
+ "name": "constant.numeric.complex.timespan.q",
156
+ "match": "(?=(\\W|\\b))(([0-9]{1,6}D([0-9]{1,2})((:[0-5][0-9]){0,2}|:)(\\.[0-9]{0,9}[a-zA-Z0-9]*[A-Zacgklnopqrtuvwxy0-9])?)|([0-9]{2}:[0-5][0-9](:[0-5][0-9]\\.[0-9]{4,}|:[0-5][0-9]\\.[0-9]{9,}[a-zA-Z0-9]*[ABCEFGHIJKLMNOPQRSUVWXYZagklnopqrtuvwxy0-9])|\\.[0-9]{8,}))(?=(\\W|\\b))"
109
157
  },
110
158
  {
111
- "name": "other.source.q",
112
- "match": "(?=(\\W|\\b))([-]?[0-9]+[bhijef]{0,1}(\\.[0-9]+[m]?)?|0x[a-f0-9]+)(?=(\\W|\\b))",
113
- "captures": {
114
- "2": {
115
- "name": "constant.numeric.complex.source.q"
116
- }
117
- }
159
+ "name": "constant.numeric.complex.time.q",
160
+ "match": "(?=(\\W|\\b))([0-9]{2}:[0-5][0-9]((:[0-9]{2}(((([ABCEFGHIJKLMNOPQRSUVWXYZacgklnopqrtuvwxy0-9:]){1,2})?([0-5][0-9]){1,2})|\\.[0-9]{3}[ABCEFGHIJKLMNOPQRSUVWXYZacgklnopqrtuvwxy0-9]?|\\.[0-9]{0,3}))|\\.[0-9]{4,7}))(?=(\\W|\\b))"
161
+ },
162
+ {
163
+ "name": "constant.numeric.complex.second.q",
164
+ "match": "(?=(\\W|\\b))([0-9]{2}:[0-5][0-9]([0-5][0-9]([0-5][0-9])?|\\.[0-9]{2}|:[0-9]{2}|([a-zA-Z]){0,2}[0-5][0-9]))(?=(\\W|\\b))"
165
+ },
166
+ {
167
+ "name": "constant.numeric.complex.minute.q",
168
+ "match": "(?=(\\W|\\b))([0-9]{2}:([0-5][0-9]([ABCEFGHIJKLMNOPQRSUVWXYZacgklnopqrtuvwxy0-9:])?)?)(?=(\\W|\\b))"
169
+ },
170
+ {
171
+ "name": "constant.numeric.complex.date.q",
172
+ "match": "(?=(\\W|\\b))([0-9]{4}\\.[0-9]{2}\\.[0-9]{2})(?=(\\W|\\b))"
173
+ },
174
+ {
175
+ "name": "constant.numeric.complex.month.q",
176
+ "match": "(?=(\\W|\\b))([0-9]{4,}\\.([0][1-9]|[1][0-2])m)(?=(\\W|\\b))"
177
+ },
178
+ {
179
+ "name": "support.function.io.q",
180
+ "match": "0:|1:|2:"
181
+ },
182
+ {
183
+ "name": "constant.numeric.complex.q",
184
+ "match": "(?=(\\W|\\b))([-]?[0-9]+[bhijf]?(\\.[0-9]+[m]?)?|0x[a-fA-F0-9]+)(?=(\\W|\\b)|_)"
185
+ },
186
+ {
187
+ "name": "constant.numeric.complex.real.q",
188
+ "match": "(?=(\\W|\\b))([-]?[0-9]+e[-]?[0-9]+)(?=(\\W|\\b))"
189
+ },
190
+ {
191
+ "name": "constant.numeric.complex.null.q",
192
+ "match": "(?=(\\W|\\b))(0n|0N[ghijepmdznuvt]?)(?=(\\W|\\b))"
193
+ },
194
+ {
195
+ "name": "constant.numeric.complex.inf.q",
196
+ "match": "(?=(\\W|\\b))(0w|0W[hijepdznuvt]?)(?=(\\W|\\b))"
197
+ },
198
+ {
199
+ "name": "support.function.q",
200
+ "match": "[!$@\\\\/_#?|',`\\\\:]"
201
+ },
202
+ {
203
+ "name": "support.function.q",
204
+ "match": "\\.(?=\\W)"
118
205
  }
119
206
  ]
120
207
  }
@@ -119,7 +119,7 @@
119
119
  },
120
120
  {
121
121
  "name": "meta.function.r",
122
- "match": "([[:alpha:].][[:alnum:]._]*)\\s*(\u003c-)\\s*(function)",
122
+ "match": "((?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))\\s*(\u003c?\u003c-|=(?!=))\\s*(function)",
123
123
  "captures": {
124
124
  "1": {
125
125
  "name": "entity.name.function.r"
@@ -145,10 +145,10 @@
145
145
  }
146
146
  },
147
147
  {
148
- "match": "([[:alpha:].][[:alnum:]._]*)\\s*\\("
148
+ "match": "((?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))\\s*\\("
149
149
  },
150
150
  {
151
- "match": "([[:alpha:].][[:alnum:]._]*)\\s*(=)(?=[^=])",
151
+ "match": "([[:alpha:].][[:alnum:]._]*)\\s*(=(?!=))",
152
152
  "captures": {
153
153
  "1": {
154
154
  "name": "variable.parameter.r"
@@ -168,7 +168,7 @@
168
168
  },
169
169
  {
170
170
  "name": "variable.other.r",
171
- "match": "\\b([[:alnum:]._]+)\\b"
171
+ "match": "((?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))"
172
172
  },
173
173
  {
174
174
  "name": "meta.block.r",
@@ -0,0 +1,383 @@
1
+ {
2
+ "name": "Sieve",
3
+ "scopeName": "source.sieve",
4
+ "patterns": [
5
+ {
6
+ "include": "#main"
7
+ }
8
+ ],
9
+ "repository": {
10
+ "action": {
11
+ "name": "meta.action.sieve",
12
+ "begin": "\\b(?!\\d)\\w+",
13
+ "end": "(?=\\s*(?:$|\\]|\\)|[};,]))",
14
+ "patterns": [
15
+ {
16
+ "include": "#arguments"
17
+ }
18
+ ],
19
+ "beginCaptures": {
20
+ "0": {
21
+ "name": "keyword.operator.action.sieve"
22
+ }
23
+ }
24
+ },
25
+ "arguments": {
26
+ "patterns": [
27
+ {
28
+ "include": "#taggedArgument"
29
+ },
30
+ {
31
+ "include": "#comparator"
32
+ },
33
+ {
34
+ "include": "#stringBlock"
35
+ },
36
+ {
37
+ "include": "#testList"
38
+ },
39
+ {
40
+ "include": "#stringList"
41
+ },
42
+ {
43
+ "include": "#strings"
44
+ },
45
+ {
46
+ "include": "#numbers"
47
+ },
48
+ {
49
+ "include": "#comments"
50
+ },
51
+ {
52
+ "include": "#punctuation"
53
+ }
54
+ ]
55
+ },
56
+ "block": {
57
+ "name": "meta.block.sieve",
58
+ "begin": "{",
59
+ "end": "}",
60
+ "patterns": [
61
+ {
62
+ "include": "#main"
63
+ }
64
+ ],
65
+ "beginCaptures": {
66
+ "0": {
67
+ "name": "punctuation.definition.brace.bracket.curly.begin.sieve"
68
+ }
69
+ },
70
+ "endCaptures": {
71
+ "0": {
72
+ "name": "punctuation.definition.brace.bracket.curly.end.sieve"
73
+ }
74
+ }
75
+ },
76
+ "comments": {
77
+ "patterns": [
78
+ {
79
+ "name": "comment.line.number-sign.sieve",
80
+ "begin": "#",
81
+ "end": "$",
82
+ "beginCaptures": {
83
+ "0": {
84
+ "name": "punctuation.definition.comment.sieve"
85
+ }
86
+ }
87
+ },
88
+ {
89
+ "name": "comment.block.bracketed.sieve",
90
+ "begin": "/\\*",
91
+ "end": "\\*/",
92
+ "beginCaptures": {
93
+ "0": {
94
+ "name": "punctuation.definition.comment.begin.sieve"
95
+ }
96
+ },
97
+ "endCaptures": {
98
+ "0": {
99
+ "name": "punctuation.definition.comment.end.sieve"
100
+ }
101
+ }
102
+ }
103
+ ]
104
+ },
105
+ "comparator": {
106
+ "patterns": [
107
+ {
108
+ "name": "storage.modifier.comparator.${3:/downcase}.sieve",
109
+ "match": "(?i)(\")i(;)(octet|ascii-casemap)(\")",
110
+ "captures": {
111
+ "1": {
112
+ "name": "punctuation.definition.comparator.begin.sieve"
113
+ },
114
+ "2": {
115
+ "name": "punctuation.separator.delimiter.semicolon.sieve"
116
+ },
117
+ "4": {
118
+ "name": "punctuation.definition.comparator.end.sieve"
119
+ }
120
+ }
121
+ },
122
+ {
123
+ "match": "(?i)(?\u003c=:comparator)\\s*((\")(?!i;(?:octet|ascii-casemap)\")[^\"]+(\"))",
124
+ "captures": {
125
+ "1": {
126
+ "name": "storage.modifier.comparator.non-standard.sieve"
127
+ },
128
+ "2": {
129
+ "name": "punctuation.definition.comparator.begin.sieve"
130
+ },
131
+ "3": {
132
+ "name": "punctuation.definition.comparator.end.sieve"
133
+ }
134
+ }
135
+ }
136
+ ]
137
+ },
138
+ "conditional": {
139
+ "name": "meta.conditional.${1:/downcase}.sieve",
140
+ "begin": "(?i)\\b(if|elsif|else)(?=[\\s{]|$)",
141
+ "end": "(?\u003c=\\})",
142
+ "patterns": [
143
+ {
144
+ "include": "#test"
145
+ },
146
+ {
147
+ "include": "#comment"
148
+ },
149
+ {
150
+ "include": "#block"
151
+ }
152
+ ],
153
+ "beginCaptures": {
154
+ "1": {
155
+ "name": "keyword.control.flow.${1:/downcase}.sieve"
156
+ }
157
+ }
158
+ },
159
+ "encodedCharacter": {
160
+ "name": "meta.encoded-character.${2:/downcase}.sieve",
161
+ "match": "(?i)(\\$\\{)(hex|unicode)(:)([\\s0-9A-Fa-f]+)(})",
162
+ "captures": {
163
+ "1": {
164
+ "name": "punctuation.section.embedded.begin.sieve"
165
+ },
166
+ "2": {
167
+ "name": "entity.name.encoding.${2:/downcase}.sieve"
168
+ },
169
+ "3": {
170
+ "name": "punctuation.delimiter.separator.colon.sieve"
171
+ },
172
+ "4": {
173
+ "patterns": [
174
+ {
175
+ "name": "constant.numeric.integer.hex.sieve",
176
+ "match": "[0-9A-Fa-f]+"
177
+ }
178
+ ]
179
+ },
180
+ "5": {
181
+ "name": "punctuation.section.embedded.end.sieve"
182
+ }
183
+ }
184
+ },
185
+ "main": {
186
+ "patterns": [
187
+ {
188
+ "include": "#comments"
189
+ },
190
+ {
191
+ "include": "#conditional"
192
+ },
193
+ {
194
+ "include": "#require"
195
+ },
196
+ {
197
+ "include": "#arguments"
198
+ },
199
+ {
200
+ "include": "#block"
201
+ },
202
+ {
203
+ "include": "#action"
204
+ }
205
+ ]
206
+ },
207
+ "numbers": {
208
+ "name": "constant.numeric.integer.int.decimal.sieve",
209
+ "match": "(?i)\\d+(K|M|G)?",
210
+ "captures": {
211
+ "1": {
212
+ "name": "constant.language.quantifier.${1:/downcase}b.sieve"
213
+ }
214
+ }
215
+ },
216
+ "punctuation": {
217
+ "patterns": [
218
+ {
219
+ "name": "punctuation.separator.delimiter.sieve",
220
+ "match": ","
221
+ },
222
+ {
223
+ "name": "punctuation.terminator.statement.semicolon.sieve",
224
+ "match": ";"
225
+ }
226
+ ]
227
+ },
228
+ "require": {
229
+ "name": "keyword.control.directive.include.require.sieve",
230
+ "match": "\\b(?i:require)(?=\\s|$|\\[)"
231
+ },
232
+ "stringBlock": {
233
+ "name": "meta.multi-line.sieve",
234
+ "contentName": "string.unquoted.heredoc.multiline.sieve",
235
+ "begin": "(?i)\\b(text(:))\\s*(?:$|(#.*))",
236
+ "end": "^\\.$",
237
+ "beginCaptures": {
238
+ "1": {
239
+ "name": "storage.type.text.sieve"
240
+ },
241
+ "2": {
242
+ "name": "punctuation.definition.heredoc.begin.sieve"
243
+ },
244
+ "3": {
245
+ "patterns": [
246
+ {
247
+ "include": "#comments"
248
+ }
249
+ ]
250
+ }
251
+ },
252
+ "endCaptures": {
253
+ "0": {
254
+ "name": "punctuation.definition.heredoc.end.sieve"
255
+ }
256
+ }
257
+ },
258
+ "stringEscapes": {
259
+ "patterns": [
260
+ {
261
+ "name": "constant.character.escape.backslash.sieve",
262
+ "match": "(\\\\)\\\\",
263
+ "captures": {
264
+ "1": {
265
+ "name": "punctuation.definition.escape.backslash.sieve"
266
+ }
267
+ }
268
+ },
269
+ {
270
+ "name": "constant.character.escape.quote.sieve",
271
+ "match": "(\\\\)\"",
272
+ "captures": {
273
+ "1": {
274
+ "name": "punctuation.definition.escape.backslash.sieve"
275
+ }
276
+ }
277
+ },
278
+ {
279
+ "name": "invalid.deprecated.unknown-escape.sieve",
280
+ "match": "(\\\\).",
281
+ "captures": {
282
+ "1": {
283
+ "name": "punctuation.definition.escape.backslash.sieve"
284
+ }
285
+ }
286
+ }
287
+ ]
288
+ },
289
+ "stringList": {
290
+ "name": "meta.string-list.sieve",
291
+ "begin": "\\[",
292
+ "end": "\\]",
293
+ "patterns": [
294
+ {
295
+ "include": "#main"
296
+ }
297
+ ],
298
+ "beginCaptures": {
299
+ "0": {
300
+ "name": "punctuation.definition.bracket.square.begin.sieve"
301
+ }
302
+ },
303
+ "endCaptures": {
304
+ "0": {
305
+ "name": "punctuation.definition.bracket.square.end.sieve"
306
+ }
307
+ }
308
+ },
309
+ "strings": {
310
+ "name": "string.quoted.double.sieve",
311
+ "begin": "\"",
312
+ "end": "\"",
313
+ "patterns": [
314
+ {
315
+ "include": "#encodedCharacter"
316
+ },
317
+ {
318
+ "include": "#stringEscapes"
319
+ }
320
+ ],
321
+ "beginCaptures": {
322
+ "0": {
323
+ "name": "punctuation.definition.string.begin.sieve"
324
+ }
325
+ },
326
+ "endCaptures": {
327
+ "0": {
328
+ "name": "punctuation.definition.string.end.sieve"
329
+ }
330
+ }
331
+ },
332
+ "taggedArgument": {
333
+ "name": "keyword.operator.tagged-argument.sieve",
334
+ "match": "(:)(?!\\d)\\w+",
335
+ "captures": {
336
+ "1": {
337
+ "name": "punctuation.definition.colon.tagged-argument.sieve"
338
+ }
339
+ }
340
+ },
341
+ "test": {
342
+ "name": "meta.tests.sieve",
343
+ "begin": "(?:\\G|^|(?\u003c=,|\\())\\s*(?i:(not)\\s+)?((?:[^\\s(){},:\\[\\]#/]|/[^*])++)",
344
+ "end": "(?=\\s*[{,\\)])",
345
+ "patterns": [
346
+ {
347
+ "include": "#arguments"
348
+ }
349
+ ],
350
+ "beginCaptures": {
351
+ "1": {
352
+ "name": "entity.name.function.test.negation.sieve"
353
+ },
354
+ "2": {
355
+ "name": "entity.name.function.test.sieve"
356
+ }
357
+ }
358
+ },
359
+ "testList": {
360
+ "name": "meta.test-list.sieve",
361
+ "begin": "\\(",
362
+ "end": "\\)",
363
+ "patterns": [
364
+ {
365
+ "include": "#test"
366
+ },
367
+ {
368
+ "include": "#main"
369
+ }
370
+ ],
371
+ "beginCaptures": {
372
+ "0": {
373
+ "name": "punctuation.definition.bracket.round.begin.sieve"
374
+ }
375
+ },
376
+ "endCaptures": {
377
+ "0": {
378
+ "name": "punctuation.definition.bracket.round.end.sieve"
379
+ }
380
+ }
381
+ }
382
+ }
383
+ }