github-linguist 4.8.17 → 4.8.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/grammars/source.abnf.json +0 -11
- data/grammars/source.c.json +4 -0
- data/grammars/source.fontforge.json +359 -0
- data/grammars/source.gn.json +248 -0
- data/grammars/source.js.json +7 -7
- data/grammars/source.ninja.json +218 -30
- data/grammars/source.opentype.json +452 -0
- data/grammars/source.perl.json +1 -1
- data/grammars/source.rascal.json +287 -0
- data/grammars/source.swift.json +6 -6
- data/grammars/source.viml.json +1 -1
- data/grammars/text.haml.json +305 -118
- data/grammars/text.hamlc.json +225 -0
- data/grammars/text.sfd.json +212 -0
- data/lib/linguist/blob.rb +1 -1
- data/lib/linguist/generated.rb +2 -4
- data/lib/linguist/heuristics.rb +6 -0
- data/lib/linguist/languages.json +1 -1
- data/lib/linguist/languages.yml +56 -6
- data/lib/linguist/samples.json +2232 -153
- data/lib/linguist/vendor.yml +3 -0
- data/lib/linguist/version.rb +1 -1
- metadata +9 -4
- data/grammars/source.xquery.json +0 -211
data/grammars/source.js.json
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
"firstLineMatch": "(?x)\n# Hashbang\n^\\#!.*(?:\\s|\\/|(?<=!)\\b)\n (?:node|iojs|JavaScript)\n(?:$|\\s)\n|\n# Modeline\n(?i:\n # Emacs\n -\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n (?:js|javascript)\n (?=[\\s;]|(?<![-*])-\\*-).*?-\\*-\n |\n # Vim\n (?:(?:\\s|^)vi(?:m[<=>]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s*set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n javascript\n (?=\\s|:|$)\n)",
|
22
22
|
"patterns": [
|
23
23
|
{
|
24
|
-
"begin": "(?<!\\.)\\b(import)(?!\\s
|
24
|
+
"begin": "(?<!\\.)\\b(import)(?!\\s*:)\\b",
|
25
25
|
"beginCaptures": {
|
26
26
|
"1": {
|
27
27
|
"name": "keyword.control.js"
|
@@ -146,7 +146,7 @@
|
|
146
146
|
}
|
147
147
|
},
|
148
148
|
{
|
149
|
-
"begin": "(?<!\\.)\\b(export)(?!\\s
|
149
|
+
"begin": "(?<!\\.)\\b(export)(?!\\s*:)\\b",
|
150
150
|
"beginCaptures": {
|
151
151
|
"1": {
|
152
152
|
"name": "keyword.control.js"
|
@@ -465,7 +465,7 @@
|
|
465
465
|
]
|
466
466
|
},
|
467
467
|
{
|
468
|
-
"begin": "(?x)\n(?=\n (?!\n (break|case|catch|continue|do|else|finally|for|function|if|\n package|return|switch|throw|try|while|with)\n [\\s\\(]\n )\n (\n \\b(get|set) # Property getter/setter: get foo(){}\n (?:\\s+|(?=\\[)) # Followed by whitespace or square bracket\n )?\n ( # Method name\n \\b[a-zA-Z_$][\\w$]* # Fixed name\n |\n \\[ # Computed property key\n .*?[^\\[\\]\\s].*? # Contains at least one non-brace character\n \\]\n )\n \\s*\\(\\s* # Start of arguments list\n (\n \"[^\"]*\" | # Double-quoted string\n '[^']*' | # Single-quoted string\n [^\"()'] # Any non-bracket or non-quote\n )*\n \\)\\s* # End of arguments\n { # Beginning of body\n)",
|
468
|
+
"begin": "(?x)\n(?=\n (?!\n (break|case|catch|continue|do|else|finally|for|function|if|export|\n import|package|return|switch|throw|try|while|with)\n [\\s\\(]\n )\n (\n \\b(get|set) # Property getter/setter: get foo(){}\n (?:\\s+|(?=\\[)) # Followed by whitespace or square bracket\n )?\n ( # Method name\n \\b[a-zA-Z_$][\\w$]* # Fixed name\n |\n \\[ # Computed property key\n .*?[^\\[\\]\\s].*? # Contains at least one non-brace character\n \\]\n )\n \\s*\\(\\s* # Start of arguments list\n (\n \"[^\"]*\" | # Double-quoted string\n '[^']*' | # Single-quoted string\n [^\"()'] # Any non-bracket or non-quote\n )*\n \\)\\s* # End of arguments\n { # Beginning of body\n)",
|
469
469
|
"end": "(?<=})",
|
470
470
|
"patterns": [
|
471
471
|
{
|
@@ -1023,7 +1023,7 @@
|
|
1023
1023
|
"include": "#properties"
|
1024
1024
|
},
|
1025
1025
|
{
|
1026
|
-
"match": "((?<!\\.|[\\w$])(?![_\\$]+[^A-Z0-9_$])\\$*\\b(?:[A-Z_$][A-Z0-9_$]*)\\b\\$*)",
|
1026
|
+
"match": "((?<!\\.|[\\w$])(?![_\\$]+[^A-Z0-9_$])\\$*\\b(?:[A-Z_$][A-Z0-9_$]*)\\b\\$*)(?!\\s*:)",
|
1027
1027
|
"name": "constant.other.js"
|
1028
1028
|
},
|
1029
1029
|
{
|
@@ -1690,7 +1690,7 @@
|
|
1690
1690
|
"name": "storage.type.class.jsdoc"
|
1691
1691
|
},
|
1692
1692
|
{
|
1693
|
-
"match": "(?x)\n(\n \\[\n [^\\]]+ # Optional [link text] preceding {@link syntax}\n \\]\n\n (?! # Check to avoid highlighting two sets of link text\n {\n @\\w+ # Tagname\n \\s+\n [^\\s|}]+ # Namepath/URL\n [\\s|] # Whitespace or bar delimiting description\n [^}]*\n }\n )\n)?\n\n(?:\n {\n (\n @\n (?: link # Name of tag\n | linkcode\n | linkplain\n | tutorial\n )\n )\n\n \\s+\n\n ([^\\s|}]+) # Namepath or URL\n\n (?: # Optional link text following link target\n [\\s|] # Bar or space separating target and text\n [^}]* # Actual text\n )?\n }\n)",
|
1693
|
+
"match": "(?x)\n(\n \\[\n [^\\]]+ # Optional [link text] preceding {@link syntax}\n \\]\n\n (?! # Check to avoid highlighting two sets of link text\n {\n @\\w+ # Tagname\n \\s+\n [^\\s|}]+ # Namepath/URL\n [\\s|] # Whitespace or bar delimiting description\n [^}]*\n }\n )\n)?\n\n(?:\n {\n (\n @\n (?: link # Name of tag\n | linkcode\n | linkplain\n | tutorial\n )\n )\n \n \\s+\n\n ([^\\s|}]+) # Namepath or URL\n\n (?: # Optional link text following link target\n [\\s|] # Bar or space separating target and text\n [^}]* # Actual text\n )?\n }\n)",
|
1694
1694
|
"captures": {
|
1695
1695
|
"0": {
|
1696
1696
|
"name": "entity.name.type.instance.jsdoc"
|
@@ -1708,7 +1708,7 @@
|
|
1708
1708
|
"name": "other.meta.jsdoc"
|
1709
1709
|
},
|
1710
1710
|
{
|
1711
|
-
"match": "(?x)\n(?:(?<=@param)|(?<=@arg)|(?<=@argument)|(?<=@type))\n\\s+\n({(?:\n \\* |
|
1711
|
+
"match": "(?x)\n(?:(?<=@param)|(?<=@arg)|(?<=@argument)|(?<=@type))\n\\s+\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string[]|number)} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {string[]|number} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n)})\n\\s+\n(\n \\[ # [foo] optional parameter\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n (?:\n \\s*\n = # [foo=bar] Default parameter value\n \\s*\n [\\w$\\s]*\n )?\n )\n \\s*\n \\] |\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n )?\n)\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
|
1712
1712
|
"captures": {
|
1713
1713
|
"0": {
|
1714
1714
|
"name": "other.meta.jsdoc"
|
@@ -1725,7 +1725,7 @@
|
|
1725
1725
|
}
|
1726
1726
|
},
|
1727
1727
|
{
|
1728
|
-
"match": "(?x)\n({(?:\n \\* |
|
1728
|
+
"match": "(?x)\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n)})\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
|
1729
1729
|
"captures": {
|
1730
1730
|
"0": {
|
1731
1731
|
"name": "other.meta.jsdoc"
|
data/grammars/source.ninja.json
CHANGED
@@ -1,66 +1,254 @@
|
|
1
1
|
{
|
2
|
+
"scopeName": "source.ninja",
|
3
|
+
"name": "Ninja",
|
2
4
|
"fileTypes": [
|
3
5
|
"ninja"
|
4
6
|
],
|
5
|
-
"
|
6
|
-
"
|
7
|
+
"firstLineMatch": "(?xi)\n# Emacs modeline\n-\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n ninja\n(?=[\\s;]|(?<![-*])-\\*-).*?-\\*-\n|\n# Vim modeline\n(?:(?:\\s|^)vi(?:m[<=>]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s*set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n ninja\n(?=\\s|:|$)",
|
8
|
+
"foldingStartMarker": "^rule",
|
9
|
+
"foldingStopMarker": "^\\S",
|
7
10
|
"patterns": [
|
8
11
|
{
|
9
|
-
"
|
10
|
-
"
|
12
|
+
"name": "comment.line.number-sign.ninja",
|
13
|
+
"begin": "#",
|
14
|
+
"end": "$",
|
15
|
+
"beginCaptures": {
|
16
|
+
"0": {
|
17
|
+
"name": "punctuation.definition.comment.ninja"
|
18
|
+
}
|
19
|
+
}
|
11
20
|
},
|
12
21
|
{
|
13
|
-
"
|
14
|
-
"
|
22
|
+
"name": "meta.$1.ninja",
|
23
|
+
"begin": "^(rule|pool)\\s+(\\S+)",
|
24
|
+
"end": "^(?=\\S)",
|
25
|
+
"beginCaptures": {
|
26
|
+
"1": {
|
27
|
+
"name": "storage.type.$1.ninja"
|
28
|
+
},
|
29
|
+
"2": {
|
30
|
+
"name": "entity.name.function.$1.ninja",
|
31
|
+
"patterns": [
|
32
|
+
{
|
33
|
+
"include": "#escapes"
|
34
|
+
}
|
35
|
+
]
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"patterns": [
|
39
|
+
{
|
40
|
+
"include": "$self"
|
41
|
+
}
|
42
|
+
]
|
15
43
|
},
|
16
44
|
{
|
17
|
-
"
|
18
|
-
"
|
45
|
+
"name": "meta.build.ninja",
|
46
|
+
"begin": "(?x)\n^ (build) \\s+\n((?:[^\\s:|$]|\\$.)+)\n(?:\n (\\|{1,2})\n ((?:[^:$]|\\$.)*)\n (?=:)\n)?",
|
47
|
+
"beginCaptures": {
|
48
|
+
"1": {
|
49
|
+
"name": "storage.type.build.ninja"
|
50
|
+
},
|
51
|
+
"2": {
|
52
|
+
"name": "entity.name.function.build.ninja",
|
53
|
+
"patterns": [
|
54
|
+
{
|
55
|
+
"include": "#escapes"
|
56
|
+
}
|
57
|
+
]
|
58
|
+
},
|
59
|
+
"3": {
|
60
|
+
"name": "keyword.operator.build.ninja"
|
61
|
+
},
|
62
|
+
"4": {
|
63
|
+
"patterns": [
|
64
|
+
{
|
65
|
+
"include": "#escapes"
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"match": "(?:[^\\s:|$]|\\$.)+",
|
69
|
+
"name": "variable.reference.ninja",
|
70
|
+
"captures": {
|
71
|
+
"0": {
|
72
|
+
"patterns": [
|
73
|
+
{
|
74
|
+
"include": "#escapes"
|
75
|
+
}
|
76
|
+
]
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
80
|
+
]
|
81
|
+
}
|
82
|
+
},
|
83
|
+
"end": "(?<!\\$)$",
|
84
|
+
"patterns": [
|
85
|
+
{
|
86
|
+
"match": "\\|{2}",
|
87
|
+
"name": "keyword.operator.build.ninja"
|
88
|
+
},
|
89
|
+
{
|
90
|
+
"match": "(?:[^\\s:|$]|\\$.)+",
|
91
|
+
"name": "variable.reference.ninja"
|
92
|
+
},
|
93
|
+
{
|
94
|
+
"include": "$self"
|
95
|
+
}
|
96
|
+
]
|
19
97
|
},
|
20
98
|
{
|
21
|
-
"match": "\\
|
22
|
-
"
|
99
|
+
"match": "(?<=:)\\s*(phony)\\b",
|
100
|
+
"captures": {
|
101
|
+
"1": {
|
102
|
+
"name": "storage.modifier.phony.build.ninja"
|
103
|
+
}
|
104
|
+
}
|
23
105
|
},
|
24
106
|
{
|
107
|
+
"match": "(?<==)\\s*(\\.\\d+|\\d+(?:\\.\\d+)?)",
|
25
108
|
"captures": {
|
26
109
|
"1": {
|
27
|
-
"name": "
|
110
|
+
"name": "constant.numeric.ninja"
|
28
111
|
}
|
29
|
-
}
|
30
|
-
"match": "(\\$)[a-zA-Z_][a-zA-Z0-9_]*",
|
31
|
-
"name": "variable.other.normal.ninja"
|
112
|
+
}
|
32
113
|
},
|
33
114
|
{
|
34
|
-
"
|
115
|
+
"name": "meta.default.ninja",
|
116
|
+
"begin": "^(default)(?=\\s|$)",
|
117
|
+
"end": "(?<!\\$)$",
|
118
|
+
"beginCaptures": {
|
35
119
|
"1": {
|
36
|
-
"name": "
|
120
|
+
"name": "storage.type.build.default.ninja"
|
37
121
|
}
|
38
122
|
},
|
39
|
-
"
|
40
|
-
|
123
|
+
"patterns": [
|
124
|
+
{
|
125
|
+
"match": "\\S+",
|
126
|
+
"name": "entity.name.function.build.ninja"
|
127
|
+
},
|
128
|
+
{
|
129
|
+
"include": "$self"
|
130
|
+
}
|
131
|
+
]
|
41
132
|
},
|
42
133
|
{
|
43
|
-
"
|
134
|
+
"name": "meta.command.ninja",
|
135
|
+
"begin": "^\\s*(command)\\s*(=)",
|
44
136
|
"beginCaptures": {
|
45
137
|
"1": {
|
46
|
-
"name": "
|
138
|
+
"name": "variable.language.rule.ninja"
|
139
|
+
},
|
140
|
+
"2": {
|
141
|
+
"name": "keyword.operator.assignment.ninja"
|
47
142
|
}
|
48
143
|
},
|
49
|
-
"end": "(
|
144
|
+
"end": "(?<!\\$)$",
|
50
145
|
"patterns": [
|
51
146
|
{
|
52
|
-
"
|
53
|
-
|
54
|
-
|
55
|
-
|
147
|
+
"include": "$self"
|
148
|
+
},
|
149
|
+
{
|
150
|
+
"match": "(?:\\G|^)(.+)(?=$)",
|
151
|
+
"captures": {
|
152
|
+
"1": {
|
153
|
+
"name": "embedded.source.shell",
|
154
|
+
"patterns": [
|
155
|
+
{
|
156
|
+
"include": "source.shell"
|
157
|
+
}
|
158
|
+
]
|
56
159
|
}
|
57
|
-
}
|
58
|
-
"end": "\\n",
|
59
|
-
"name": "comment.line.number-sign.ninja"
|
160
|
+
}
|
60
161
|
}
|
61
162
|
]
|
163
|
+
},
|
164
|
+
{
|
165
|
+
"name": "meta.property.ninja",
|
166
|
+
"match": "(?x) ^ \\s* (depfile|deps|msvc_deps_prefix|description|generator|in |in_newline|out|restat|rspfile|rspfile_content) \\s* (=)",
|
167
|
+
"captures": {
|
168
|
+
"1": {
|
169
|
+
"name": "support.variable.language.rule.ninja"
|
170
|
+
},
|
171
|
+
"2": {
|
172
|
+
"name": "keyword.operator.assignment.ninja"
|
173
|
+
}
|
174
|
+
}
|
175
|
+
},
|
176
|
+
{
|
177
|
+
"name": "meta.$1.ninja",
|
178
|
+
"begin": "^(subninja|include)\\s+",
|
179
|
+
"end": "(?<!\\$)$",
|
180
|
+
"beginCaptures": {
|
181
|
+
"1": {
|
182
|
+
"name": "keyword.operator.$1.ninja"
|
183
|
+
}
|
184
|
+
},
|
185
|
+
"contentName": "string.unquoted.filename.ninja",
|
186
|
+
"patterns": [
|
187
|
+
{
|
188
|
+
"include": "$self"
|
189
|
+
}
|
190
|
+
]
|
191
|
+
},
|
192
|
+
{
|
193
|
+
"match": ":",
|
194
|
+
"name": "punctuation.separator.dictionary.key-value.ninja"
|
195
|
+
},
|
196
|
+
{
|
197
|
+
"match": "^\\s*(\\w+)\\s*(=)",
|
198
|
+
"captures": {
|
199
|
+
"1": {
|
200
|
+
"name": "variable.parameter.reference.ninja"
|
201
|
+
},
|
202
|
+
"2": {
|
203
|
+
"name": "keyword.operator.assignment.ninja"
|
204
|
+
}
|
205
|
+
}
|
206
|
+
},
|
207
|
+
{
|
208
|
+
"match": "(\\$)\\w+",
|
209
|
+
"name": "variable.parameter.reference.ninja",
|
210
|
+
"captures": {
|
211
|
+
"1": {
|
212
|
+
"name": "punctuation.definition.variable.ninja"
|
213
|
+
}
|
214
|
+
}
|
215
|
+
},
|
216
|
+
{
|
217
|
+
"match": "\\$$\\n?",
|
218
|
+
"name": "constant.character.escape.newline.ninja"
|
219
|
+
},
|
220
|
+
{
|
221
|
+
"name": "variable.other.bracket.ninja",
|
222
|
+
"match": "(\\${)\\s*[^{}]+\\s*(})",
|
223
|
+
"captures": {
|
224
|
+
"1": {
|
225
|
+
"name": "punctuation.definition.variable.begin.ninja"
|
226
|
+
},
|
227
|
+
"2": {
|
228
|
+
"name": "punctuation.definition.variable.end.ninja"
|
229
|
+
}
|
230
|
+
}
|
231
|
+
},
|
232
|
+
{
|
233
|
+
"include": "#escapes"
|
62
234
|
}
|
63
235
|
],
|
64
|
-
"
|
65
|
-
|
236
|
+
"repository": {
|
237
|
+
"escapes": {
|
238
|
+
"patterns": [
|
239
|
+
{
|
240
|
+
"match": "\\${2}",
|
241
|
+
"name": "constant.character.escape.dollar-sign.ninja"
|
242
|
+
},
|
243
|
+
{
|
244
|
+
"match": "\\$[ \\t]",
|
245
|
+
"name": "constant.character.escape.whitespace.ninja"
|
246
|
+
},
|
247
|
+
{
|
248
|
+
"match": "\\$:",
|
249
|
+
"name": "constant.character.escape.colon.ninja"
|
250
|
+
}
|
251
|
+
]
|
252
|
+
}
|
253
|
+
}
|
66
254
|
}
|
@@ -0,0 +1,452 @@
|
|
1
|
+
{
|
2
|
+
"name": "OpenType Feature File",
|
3
|
+
"scopeName": "source.opentype",
|
4
|
+
"fileTypes": [
|
5
|
+
"fea",
|
6
|
+
"family"
|
7
|
+
],
|
8
|
+
"patterns": [
|
9
|
+
{
|
10
|
+
"include": "#main"
|
11
|
+
}
|
12
|
+
],
|
13
|
+
"repository": {
|
14
|
+
"main": {
|
15
|
+
"patterns": [
|
16
|
+
{
|
17
|
+
"include": "#comments"
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"include": "#target"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"include": "#blocks"
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"include": "#keywords"
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"include": "#tags"
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"include": "#inclusion"
|
33
|
+
},
|
34
|
+
{
|
35
|
+
"include": "#strings"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"include": "#number"
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"include": "#punctuation"
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"include": "#identifier"
|
45
|
+
}
|
46
|
+
]
|
47
|
+
},
|
48
|
+
"comments": {
|
49
|
+
"name": "comment.line.number-sign.opentype",
|
50
|
+
"begin": "#",
|
51
|
+
"end": "$",
|
52
|
+
"beginCaptures": {
|
53
|
+
"0": {
|
54
|
+
"name": "punctuation.definition.comment.opentype"
|
55
|
+
}
|
56
|
+
}
|
57
|
+
},
|
58
|
+
"blocks": {
|
59
|
+
"patterns": [
|
60
|
+
{
|
61
|
+
"name": "meta.feature.opentype",
|
62
|
+
"begin": "(?<=^|[\\s{}])(feature)\\s+(\\w+)(?:\\s+(useExtension))?\\s*({)",
|
63
|
+
"end": "(})\\s*(\\2)\\s*(?=[#;]|$)",
|
64
|
+
"beginCaptures": {
|
65
|
+
"1": {
|
66
|
+
"name": "storage.type.var.feature.opentype"
|
67
|
+
},
|
68
|
+
"2": {
|
69
|
+
"name": "entity.name.feature.opentype"
|
70
|
+
},
|
71
|
+
"3": {
|
72
|
+
"name": "keyword.operator.opentype"
|
73
|
+
},
|
74
|
+
"4": {
|
75
|
+
"name": "punctuation.section.bracket.curly.begin.opentype"
|
76
|
+
}
|
77
|
+
},
|
78
|
+
"endCaptures": {
|
79
|
+
"1": {
|
80
|
+
"name": "punctuation.section.bracket.curly.end.opentype"
|
81
|
+
},
|
82
|
+
"2": {
|
83
|
+
"name": "entity.name.feature.opentype"
|
84
|
+
}
|
85
|
+
},
|
86
|
+
"patterns": [
|
87
|
+
{
|
88
|
+
"name": "keyword.operator.opentype",
|
89
|
+
"match": "(?<=^|[\\s{};])sizemenuname(?=[\\s#;]|$)"
|
90
|
+
},
|
91
|
+
{
|
92
|
+
"include": "$self"
|
93
|
+
}
|
94
|
+
]
|
95
|
+
},
|
96
|
+
{
|
97
|
+
"name": "meta.lookup.opentype",
|
98
|
+
"begin": "(?<=^|[\\s{}])(lookup)\\s+((?![\\d.])[A-Za-z0-9._]+)(?:\\s+(useExtension))?\\s*({)",
|
99
|
+
"end": "(})\\s*(\\2)\\s*(?=[#;]|$)",
|
100
|
+
"patterns": [
|
101
|
+
{
|
102
|
+
"include": "$self"
|
103
|
+
}
|
104
|
+
],
|
105
|
+
"beginCaptures": {
|
106
|
+
"1": {
|
107
|
+
"name": "storage.type.var.lookup.opentype"
|
108
|
+
},
|
109
|
+
"2": {
|
110
|
+
"name": "entity.name.lookup.opentype"
|
111
|
+
},
|
112
|
+
"3": {
|
113
|
+
"name": "keyword.operator.opentype"
|
114
|
+
},
|
115
|
+
"4": {
|
116
|
+
"name": "punctuation.section.bracket.curly.begin.opentype"
|
117
|
+
}
|
118
|
+
},
|
119
|
+
"endCaptures": {
|
120
|
+
"1": {
|
121
|
+
"name": "punctuation.section.bracket.curly.end.opentype"
|
122
|
+
},
|
123
|
+
"2": {
|
124
|
+
"name": "entity.name.lookup.opentype"
|
125
|
+
}
|
126
|
+
}
|
127
|
+
},
|
128
|
+
{
|
129
|
+
"name": "meta.table.opentype",
|
130
|
+
"begin": "(?<=^|[\\s{};])(table)\\s+([\\w/]+)\\s*({)",
|
131
|
+
"end": "(})\\s*(\\2)\\s*(?=[#;]|$)",
|
132
|
+
"beginCaptures": {
|
133
|
+
"1": {
|
134
|
+
"name": "storage.type.var.table.opentype"
|
135
|
+
},
|
136
|
+
"2": {
|
137
|
+
"name": "entity.name.table.opentype"
|
138
|
+
},
|
139
|
+
"3": {
|
140
|
+
"name": "punctuation.section.bracket.curly.begin.opentype"
|
141
|
+
}
|
142
|
+
},
|
143
|
+
"endCaptures": {
|
144
|
+
"1": {
|
145
|
+
"name": "punctuation.section.bracket.curly.end.opentype"
|
146
|
+
},
|
147
|
+
"2": {
|
148
|
+
"name": "entity.name.table.opentype"
|
149
|
+
}
|
150
|
+
},
|
151
|
+
"patterns": [
|
152
|
+
{
|
153
|
+
"name": "keyword.operator.table-field.opentype",
|
154
|
+
"match": "(?x) (?<=^|[\\s{};])\n(GlyphClassDef|Attach|LigatureCaretBy(?:Dev|Index|Pos)|MarkAttachClass\n|(?:Horiz|Vert)Axis\\.(?:BaseTagList|BaseScriptList|MinMax)|FontRevision\n|CaretOffset|Ascender|Descender|LineGap|Panose|TypoAscender|TypoDescender\n|TypoLineGap|winAscent|winDescent|UnicodeRange|CodePageRange|XHeight|CapHeight\n|Vendor|VertTypoAscender|VertTypoDescender|VertTypoLineGap|VertOriginY|VertAdvanceY)\n(?=[\\s#;]|$)"
|
155
|
+
},
|
156
|
+
{
|
157
|
+
"include": "$self"
|
158
|
+
}
|
159
|
+
]
|
160
|
+
},
|
161
|
+
{
|
162
|
+
"begin": "(?<=^|[\\s{};])(anonymous|anon)\\s+([\\w.]+)\\s*({)",
|
163
|
+
"end": "(})\\s*(\\2)\\s*(;)",
|
164
|
+
"contentName": "string.unquoted.heredoc.opentype",
|
165
|
+
"beginCaptures": {
|
166
|
+
"1": {
|
167
|
+
"name": "storage.type.var.opentype"
|
168
|
+
},
|
169
|
+
"2": {
|
170
|
+
"name": "entity.name.anon-tag.opentype"
|
171
|
+
},
|
172
|
+
"3": {
|
173
|
+
"name": "punctuation.section.bracket.curly.begin.opentype"
|
174
|
+
}
|
175
|
+
},
|
176
|
+
"endCaptures": {
|
177
|
+
"1": {
|
178
|
+
"name": "punctuation.section.bracket.curly.end.opentype"
|
179
|
+
},
|
180
|
+
"2": {
|
181
|
+
"name": "entity.name.anon-tag.opentype"
|
182
|
+
},
|
183
|
+
"3": {
|
184
|
+
"name": "punctuation.terminator.statement.opentype"
|
185
|
+
}
|
186
|
+
}
|
187
|
+
},
|
188
|
+
{
|
189
|
+
"name": "meta.cv-params.opentype",
|
190
|
+
"begin": "(?<=^|[\\s{}])(cvParameters)\\s*({)",
|
191
|
+
"end": "(})",
|
192
|
+
"beginCaptures": {
|
193
|
+
"1": {
|
194
|
+
"name": "storage.type.var.opentype"
|
195
|
+
},
|
196
|
+
"2": {
|
197
|
+
"name": "punctuation.section.bracket.curly.begin.opentype"
|
198
|
+
}
|
199
|
+
},
|
200
|
+
"endCaptures": {
|
201
|
+
"1": {
|
202
|
+
"name": "punctuation.section.bracket.curly.end.opentype"
|
203
|
+
}
|
204
|
+
},
|
205
|
+
"patterns": [
|
206
|
+
{
|
207
|
+
"name": "meta.cv-param.$1.opentype",
|
208
|
+
"begin": "(?<=^|[\\s{}])(FeatUILabelNameID|FeatUITooltipTextNameID|SampleTextNameID|ParamUILabelNameID)\\s*({)",
|
209
|
+
"end": "(})",
|
210
|
+
"patterns": [
|
211
|
+
{
|
212
|
+
"include": "$self"
|
213
|
+
}
|
214
|
+
],
|
215
|
+
"beginCaptures": {
|
216
|
+
"1": {
|
217
|
+
"name": "keyword.operator.parameter.opentype"
|
218
|
+
},
|
219
|
+
"2": {
|
220
|
+
"name": "punctuation.section.bracket.curly.begin.opentype"
|
221
|
+
}
|
222
|
+
},
|
223
|
+
"endCaptures": {
|
224
|
+
"1": {
|
225
|
+
"name": "punctuation.section.bracket.curly.end.opentype"
|
226
|
+
}
|
227
|
+
}
|
228
|
+
},
|
229
|
+
{
|
230
|
+
"name": "keyword.operator.parameter.opentype",
|
231
|
+
"match": "(?<=\\s|^)Character(?=\\s|$|#)"
|
232
|
+
},
|
233
|
+
{
|
234
|
+
"include": "$self"
|
235
|
+
}
|
236
|
+
]
|
237
|
+
},
|
238
|
+
{
|
239
|
+
"name": "meta.$1.opentype",
|
240
|
+
"begin": "(?<=^|[\\s{}])(featureNames)\\s*({)",
|
241
|
+
"end": "(})",
|
242
|
+
"patterns": [
|
243
|
+
{
|
244
|
+
"include": "$self"
|
245
|
+
}
|
246
|
+
],
|
247
|
+
"beginCaptures": {
|
248
|
+
"1": {
|
249
|
+
"name": "storage.type.var.opentype"
|
250
|
+
},
|
251
|
+
"2": {
|
252
|
+
"name": "punctuation.section.bracket.curly.begin.opentype"
|
253
|
+
}
|
254
|
+
},
|
255
|
+
"endCaptures": {
|
256
|
+
"1": {
|
257
|
+
"name": "punctuation.section.bracket.curly.end.opentype"
|
258
|
+
}
|
259
|
+
}
|
260
|
+
}
|
261
|
+
]
|
262
|
+
},
|
263
|
+
"identifier": {
|
264
|
+
"name": "variable.parameter.opentype",
|
265
|
+
"match": "(\\\\)?(@)?(?![\\d.])[A-Za-z0-9._]+",
|
266
|
+
"captures": {
|
267
|
+
"1": {
|
268
|
+
"name": "punctuation.definition.backslash.opentype"
|
269
|
+
},
|
270
|
+
"2": {
|
271
|
+
"name": "punctuation.definition.glyph-class.opentype"
|
272
|
+
}
|
273
|
+
}
|
274
|
+
},
|
275
|
+
"keywords": {
|
276
|
+
"patterns": [
|
277
|
+
{
|
278
|
+
"name": "invalid.deprecated.keyword.opentype",
|
279
|
+
"match": "(?<=^|[\\s{};])(excludeDFLT|includeDFLT)(?=$|[\\s{}#;])"
|
280
|
+
},
|
281
|
+
{
|
282
|
+
"name": "constant.language.null.opentype",
|
283
|
+
"match": "(?<=^|[\\s{};])NULL(?=[\\s{}#;]|$)"
|
284
|
+
},
|
285
|
+
{
|
286
|
+
"name": "storage.type.var.name.opentype",
|
287
|
+
"match": "(?<=^|[\\s{};])name(?=[\\s{}#;]|$)"
|
288
|
+
},
|
289
|
+
{
|
290
|
+
"name": "support.constant.language.opentype",
|
291
|
+
"match": "(?<![\\w.])\\.notdef(?![\\w.])"
|
292
|
+
},
|
293
|
+
{
|
294
|
+
"name": "storage.modifier.ignore.opentype",
|
295
|
+
"match": "(?<=^|[\\s{};])ignore(?=$|[\\s{}\\#;])"
|
296
|
+
},
|
297
|
+
{
|
298
|
+
"name": "keyword.operator.opentype",
|
299
|
+
"match": "(?x) (?<=^|[\\s{};])\n(anchor|anchorDef|by|contour|cursive|device|enumerate|enum|exclude_dflt|feature|from\n|IgnoreBaseGlyphs|IgnoreLigatures|IgnoreMarks|MarkAttachmentType|UseMarkFilteringSet\n|include|include_dflt|language|languagesystem|lookupflag|mark|markClass|nameid|parameters\n|position|pos|required|RightToLeft|reversesub|rsub|script|substitute|sub|subtable|table\n|useExtension|valueRecordDef|FSType|WeightClass|WidthClass)\n(?=$|[\\s{}\\#(;])"
|
300
|
+
}
|
301
|
+
]
|
302
|
+
},
|
303
|
+
"inclusion": {
|
304
|
+
"begin": "\\(",
|
305
|
+
"end": "\\)",
|
306
|
+
"beginCaptures": {
|
307
|
+
"0": {
|
308
|
+
"name": "punctuation.section.bracket.round.begin.opentype"
|
309
|
+
}
|
310
|
+
},
|
311
|
+
"endCaptures": {
|
312
|
+
"0": {
|
313
|
+
"name": "punctuation.section.bracket.round.end.opentype"
|
314
|
+
}
|
315
|
+
},
|
316
|
+
"contentName": "string.other.filename.opentype",
|
317
|
+
"patterns": [
|
318
|
+
{
|
319
|
+
"include": "#strings"
|
320
|
+
}
|
321
|
+
]
|
322
|
+
},
|
323
|
+
"number": {
|
324
|
+
"patterns": [
|
325
|
+
{
|
326
|
+
"name": "constant.numeric.integer.hex.opentype",
|
327
|
+
"match": "(?<!\\w)[-+]?0x[A-Fa-f0-9]+"
|
328
|
+
},
|
329
|
+
{
|
330
|
+
"name": "constant.numeric.integer.opentype",
|
331
|
+
"match": "(?<!\\w)[-+]?\\d+"
|
332
|
+
}
|
333
|
+
]
|
334
|
+
},
|
335
|
+
"punctuation": {
|
336
|
+
"patterns": [
|
337
|
+
{
|
338
|
+
"match": "=",
|
339
|
+
"name": "keyword.operator.assignment.opentype"
|
340
|
+
},
|
341
|
+
{
|
342
|
+
"match": ";",
|
343
|
+
"name": "punctuation.terminator.statement.opentype"
|
344
|
+
},
|
345
|
+
{
|
346
|
+
"match": ",",
|
347
|
+
"name": "punctuation.separator.list.comma.opentype"
|
348
|
+
},
|
349
|
+
{
|
350
|
+
"match": "-",
|
351
|
+
"name": "punctuation.separator.range.dash.opentype"
|
352
|
+
},
|
353
|
+
{
|
354
|
+
"match": "'",
|
355
|
+
"name": "punctuation.definition.context-mark.opentype"
|
356
|
+
},
|
357
|
+
{
|
358
|
+
"match": "{",
|
359
|
+
"name": "punctuation.section.bracket.curly.begin.opentype"
|
360
|
+
},
|
361
|
+
{
|
362
|
+
"match": "}",
|
363
|
+
"name": "punctuation.section.bracket.curly.end.opentype"
|
364
|
+
},
|
365
|
+
{
|
366
|
+
"match": "<",
|
367
|
+
"name": "punctuation.section.bracket.angle.begin.opentype"
|
368
|
+
},
|
369
|
+
{
|
370
|
+
"match": ">",
|
371
|
+
"name": "punctuation.section.bracket.angle.end.opentype"
|
372
|
+
},
|
373
|
+
{
|
374
|
+
"match": "\\[",
|
375
|
+
"name": "punctuation.section.bracket.square.begin.opentype"
|
376
|
+
},
|
377
|
+
{
|
378
|
+
"match": "\\]",
|
379
|
+
"name": "punctuation.section.bracket.square.end.opentype"
|
380
|
+
},
|
381
|
+
{
|
382
|
+
"match": "\\(",
|
383
|
+
"name": "punctuation.section.bracket.round.begin.opentype"
|
384
|
+
},
|
385
|
+
{
|
386
|
+
"match": "\\)",
|
387
|
+
"name": "punctuation.section.bracket.round.end.opentype"
|
388
|
+
}
|
389
|
+
]
|
390
|
+
},
|
391
|
+
"strings": {
|
392
|
+
"patterns": [
|
393
|
+
{
|
394
|
+
"name": "string.quoted.double.opentype",
|
395
|
+
"begin": "\"",
|
396
|
+
"end": "\"",
|
397
|
+
"beginCaptures": {
|
398
|
+
"0": {
|
399
|
+
"name": "punctuation.definition.string.begin.opentype"
|
400
|
+
}
|
401
|
+
},
|
402
|
+
"endCaptures": {
|
403
|
+
"0": {
|
404
|
+
"name": "punctuation.definition.string.end.opentype"
|
405
|
+
}
|
406
|
+
},
|
407
|
+
"patterns": [
|
408
|
+
{
|
409
|
+
"match": "\\\\[A-Fa-f0-9]{1,4}",
|
410
|
+
"name": "constant.character.escape.codepoint.opentype"
|
411
|
+
}
|
412
|
+
]
|
413
|
+
}
|
414
|
+
]
|
415
|
+
},
|
416
|
+
"tags": {
|
417
|
+
"patterns": [
|
418
|
+
{
|
419
|
+
"name": "support.constant.language.tag.feature.opentype",
|
420
|
+
"match": "(?x) (?<=^|[\\s{};])\n(aalt|abvf|abvm|abvs|afrc|akhn|blwf|blwm|blws|calt|case|ccmp|cfar|cjct|clig|cpct|cpsp\n|cswh|curs|cv[0-9]{2}|c2pc|c2sc|dist|dlig|dnom|dtls|expt|falt|fin2|fin3|fina|flac|frac\n|fwid|half|haln|halt|hist|hkna|hlig|hngl|hojo|hwid|init|isol|ital|jalt|jp78|jp83|jp90\n|jp04|kern|lfbd|liga|ljmo|lnum|locl|ltra|ltrm|mark|med2|medi|mgrk|mkmk|mset|nalt|nlck\n|nukt|numr|onum|opbd|ordn|ornm|palt|pcap|pkna|pnum|pref|pres|pstf|psts|pwid|qwid|rand\n|rclt|rkrf|rlig|rphf|rtbd|rtla|rtlm|ruby|rvrn|salt|sinf|size|smcp|smpl|ss[0-9]{2}|ssty\n|stch|subs|sups|swsh|titl|tjmo|tnam|tnum|trad|twid|unic|valt|vatu|vert|vhal|vjmo|vkna\n|vkrn|vpal|vrt2|vrtr|zero)\n(?=[\\s#;]|$)"
|
421
|
+
},
|
422
|
+
{
|
423
|
+
"name": "support.constant.language.tag.script.opentype",
|
424
|
+
"match": "(?x) (?<=^|[\\s{};])\n(arab|armn|avst|bali|bamu|batk|beng|bng2|bopo|brah|brai|bugi|buhd|byzm|cans|cari|cakm\n|cham|cher|hani|copt|cprt|cyrl|DFLT|dsrt|deva|dev2|egyp|ethi|geor|glag|goth|grek|gujr\n|gjr2|guru|gur2|hang|jamo|hano|hebr|kana|armi|phli|prti|java|kthi|knda|knd2|kana|kali\n|khar|khmr|lao|latn|lepc|limb|linb|lisu|lyci|lydi|mlym|mlm2|mand|math|mtei|merc|mero\n|plrd|mong|musc|mymr|mym2|talu|nko|ogam|olck|ital|xpeo|sarb|orkh|orya|ory2|osma|phag\n|phnx|rjng|runr|samr|saur|shrd|shaw|sinh|sora|xsux|sund|sylo|syrc|tglg|tagb|tale|lana\n|tavt|takr|taml|tml2|telu|tel2|thaa|thai|tibt|tfng|ugar|vai|yi)\n(?=[\\s#;]|$)"
|
425
|
+
},
|
426
|
+
{
|
427
|
+
"name": "support.constant.language.tag.opentype",
|
428
|
+
"match": "(?x) (?<=^|[\\s{};])\n(ARA|APPH|ANG|AMH|ALT|ALS|AKA|AIO|AGW|AFR|AFK|ADY|ACR|ACH|ABK|ABA|BGQ|BGC|BEN|BEM|BEL\n|BDY|BCR|BCH|BBR|BBC|BAU|BAR|BAN|BAL|BAG|BAD0|BAD|AZE|AZB|AYM|AWA|AVR|ATH|AST|ASM|ARK\n|ARI|ARG|CHE|CEB|CBK|CAT|CAK|BUG|BTS|BTI|BSH|BRX|BRM|BRI|BRH|BRE|BPY|BOS|BML|BMB|BLT\n|BLN|BLK|BLI|BKF|BJJ|BIS|BIL|BIK|BHO|BHI|BGR|DEU|DCR|DAX|DAR|DAN|CUK|CTG|CSY|CSL|CSB\n|CRT|CRR|CRE|CPP|COS|COR|COP|CMR|CGG|CHY|CHU|CHA|CHR|CHP|CHO|CHK0|CHK|CHI|CHH|CHG|EWE\n|EVN|EVK|EUQ|ETI|ESU|ESP|ERZ|ENG|EMK|ELL|EFI|EDO|ECR|EBI|DZN|DUN|DUJ|DRI|DNK|DNJ|DNG\n|DJR0|DJR|DIV|DIQ|DHV|DHG|DGR|DGO|GLK|GKP|GIL0|GIL|GIH|GEZ|GAW|GAR|GAL|GAG|GAE|GAD|FUV\n|FUL|FTA|FRP|FRL|FRI|FRC|FRA|FOS|FON|FNE|FLE|FJI|FIN|FAT|FAR|FAN0|FAN|HUN|HRV|HRI|HO\n|HND|HMO|HMN|HMA|HIN|HIL|HER|HBN|HAZ|HAY|HAW|HAU|HAR|HAL|HAI|GUZ|GUJ|GUF|GUC|GUA|GRO\n|GRN|GON|GOG|GNN|GMZ|KAB0|KAB|JUL|JUD|JBO|JAN|JAM|JII|JAV|IWR|ITA|ISM|ISL|IRT|IRI|IPPH\n|IPK|INU|ING|IND|INA|ILO|ILE|IDO|IJO|IBO|IBB|IBA|HYE0|HYE|KMS|KMO|KMN|KMB|KLM|KKN|KJP\n|KJD|KIU|KIS|KIR|KIK|KHW|KHV|KHT|KHS|KHM|KHK|KHA|KGE|KEK|KEB|KEA|KDE|KAZ|KAT|KAR|KAN\n|KAL|KAC|KUY|KUU|KUR|KUM|KUL|KUI|KUA|KSW|KSM|KSI|KSH0|KSH|KRT|KRN|KRM|KRL|KRK|KRI|KPL\n|KOZ|KOS|KOR|KOP|KOM|KON0|KON|KOK|KOH|KOD|KNR|LUB|LUA|LTZ|LTH|LSM|LSB|LRC|LOM|LMW|LMO\n|LMB|LMA|LKI|LJP|LIS|LIN|LIM|LIJ|LEZ|LDK|LCR|LAZ|LAT|LAO|LAM|LAK|LAH|LAD|KYU|KYK|MLG\n|MLE|MKW|MKR|MKD|MIZ|MIN|MFE|MER|MEN|MDR|MDE|MCR|MCH|MBN|MAW|MAR|MAP|MAN|MAM|MAL|MAK\n|MAJ|MAH|MAG|MAD|LVI|LUO|LUH|LUG|NAV|NAU|NAS|NAP|NAN|NAH|NAG|MZN|MYN|MWW|MWL|MUS|MUN\n|MTS|MTH|MRI|MOS|MOR|MON|MOL|MOK|MOH|MNX|MNK|MNI|MNG|MND|MLY|MLR|MLN|ORO|ORI|OJB|OCR\n|OCI|NYN|NYM|NTO|NTA|NSO|NSM|NOV|NOR|NOG|NOE|NLD|NKO|NKL|NIU|NIS|NHC|NGR|NGA|NEW|NEP\n|NDS|NDG|NDC|NDB|NCR|QUH|QUC|QIN|PWO|PTG|PRO|PON|POH|PNB|PMS|PLK|PLG|PIL|PIH|PHK|PGR\n|PDC|PCD|PCC|PAU|PAS|PAP0|PAP|PAN|PAM|PAL|PAG|PAA|OSS|SEK|SCO|SCN|SAY|SAT|SAS|SAN|SAD\n|RUS|RUP|RUN|RUA|RTM|RSY|ROY|ROM|RMY|RMS|RKW|RIT|RIF|RIA|REJ|RBU|RCR|RAR|RAJ|QWH|QVI\n|QUZ|SSM|SSL|SRR|SRK|SRD|SRB|SQI|SOT|SOP|SOG|SNK|SNH|SND|SNA0|SNA|SMO|SML|SLV|SLA|SKY\n|SKS|SIG|SID|SIB|SHN|SHI|SGS|SGO|SGA|SEL|TIV|TIB|THT|THA|TGY|TGR|TGN|TGL|TET|TEL|TDD\n|TCR|TAT|TAM|TAJ|TAB|SZL|SYR|SYL|SXU|SXT|SWZ|SWK|SWA|SVE|SVA|SUR|SUN|SUK|STQ|VIT|VEN\n|VEC|UZB|UYG|USB|URD|UMB|UKR|UDM|TZO|TZM|TYZ|TWI|TVL|TUV|TUM|TUL|TUA|TSG|TRK|TPI|TOD0\n|TOD|TNG|TNE|TNA|TMN|TMH|TKM|ZUL|ZZA|dflt)\n(?=[\\s#;]|$)"
|
429
|
+
},
|
430
|
+
{
|
431
|
+
"name": "support.constant.language.tag.baseline.opentype",
|
432
|
+
"match": "(?<=^|[\\s{};])(hang|icfb|icft|ideo|idtp|math|romn)(?=[\\s#;]|$)"
|
433
|
+
}
|
434
|
+
]
|
435
|
+
},
|
436
|
+
"target": {
|
437
|
+
"match": "(\\\\)?(@)?(?![\\d.])[A-Za-z0-9._]+(')",
|
438
|
+
"name": "entity.name.subject.opentype",
|
439
|
+
"captures": {
|
440
|
+
"1": {
|
441
|
+
"name": "punctuation.definition.backslash.opentype"
|
442
|
+
},
|
443
|
+
"2": {
|
444
|
+
"name": "punctuation.definition.context-mark.opentype"
|
445
|
+
},
|
446
|
+
"3": {
|
447
|
+
"name": "punctuation.definition.glyph-class.opentype"
|
448
|
+
}
|
449
|
+
}
|
450
|
+
}
|
451
|
+
}
|
452
|
+
}
|