Skip to content

Commit 1d5c6db

Browse files
committed
feat: Additions to glob
1 parent 21f76a3 commit 1d5c6db

16 files changed

Lines changed: 2969 additions & 76 deletions

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
"publish": "vsce publish",
3333
"test": "npm run test:JSON && npm run test:JSONC",
3434
"test:grammars": "vscode-tmgrammar-snap --grammar ./syntaxes/tests/grammars/markdown.tmLanguage.json --grammar ./syntaxes/tests/grammars/shell-unix-bash.tmLanguage.json --grammar ./syntaxes/tests/grammars/snippets.tmLanguage.json",
35-
"test:JSON": "npm run test:grammars -- ./syntaxes/tests/JSON/*.json --scope source.json.embedded",
36-
"test:JSONC": "npm run test:grammars -- ./syntaxes/tests/JSONC/*.json --scope source.json.comments.embedded",
35+
"test:JSON": "npm run test:grammars -- ./syntaxes/tests/JSON/*.* --scope source.json.embedded",
36+
"test:JSONC": "npm run test:grammars -- ./syntaxes/tests/JSONC/*.* --scope source.json.comments.embedded",
3737
"test:update": "npm run test:JSON -- --updateSnapshot && npm run test:JSONC -- --updateSnapshot"
3838
},
3939
"contributes": {

syntaxes/glob.tmLanguage.json

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,19 @@
66
"scopeName": "source.json.glob",
77
"injectionSelector": [
88
"L:source.json.embedded .meta.contributes. .meta.languages. meta.structure.array.json .meta.filenamePatterns. meta.structure.array.json string.quoted.double.json\n-meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json\n-meta.structure.array.json meta.structure.array.json meta.structure.array.json\n-meta.embedded.glob.json -comment",
9-
"L:source.json.embedded .meta.contributes. .meta.jsonValidation. meta.structure.array.json .meta.fileMatch. string.quoted.double.json\n-meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json\n-meta.structure.array.json meta.structure.array.json\n-meta.embedded.glob.json -comment",
10-
"L:source.json.embedded .meta.workspaces. meta.structure.array.json string.quoted.double.json\n-meta.structure.dictionary.json meta.structure.dictionary.json\n-meta.structure.array.json meta.structure.array.json\n-meta.embedded.glob.json -comment",
9+
"L:source.json.embedded .meta.contributes. meta.structure.dictionary.json meta.structure.array.json .meta.fileMatch. string.quoted.double.json\n(.meta.jsonValidation. | .meta.yamlValidation. | .meta.ymlValidation. | .meta.tomlValidation.)\n-meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json\n-meta.structure.array.json meta.structure.array.json meta.structure.array.json\n-meta.structure.array.json meta.structure.array.json .meta.fileMatch.\n-meta.embedded.glob.json -comment",
10+
"L:source.json.embedded .meta.contributes. .meta.customEditors. meta.structure.array.json .meta.selector. meta.structure.array.json .meta.filenamePattern. string.quoted.double.json\n-meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json\n-meta.structure.array.json meta.structure.array.json meta.structure.array.json\n-meta.embedded.glob.json -comment",
1111
"L:source.json.embedded .meta.workspaces. .meta.packages. meta.structure.array.json string.quoted.double.json\n-meta.structure.dictionary.json meta.structure.dictionary.json meta.structure.dictionary.json\n-meta.structure.array.json meta.structure.array.json\n-meta.embedded.glob.json -comment",
12-
"L:source.json.comments.embedded .meta.configurations. meta.structure.array.json.comments string.quoted.double.json.comments\n(.meta.skipFiles. | .meta.outFiles.)\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments meta.structure.array.json.comments meta.structure.array.json.comments\n-meta.embedded.glob.json -comment",
13-
"L:source.json.comments.embedded meta.structure.array.json.comments string.quoted.double.json.comments\n(.meta.include. | .meta.exclude.)\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments meta.structure.array.json.comments\n-meta.embedded.glob.json -comment",
14-
"L:source.json.comments.embedded .meta.ts-node. .meta.moduleTypes. meta.structure.dictionary.json.comments support.type.property-name.json.comments\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments\n-meta.embedded.glob.json -comment"
12+
"L:source.json.embedded meta.structure.dictionary.json meta.structure.array.json string.quoted.double.json\n(.meta.files. | .meta.workspaces.)\n-meta.structure.dictionary.json meta.structure.dictionary.json\n-meta.structure.array.json meta.structure.array.json\n-meta.embedded.glob.json -comment",
13+
"R:source.json.embedded .meta.activationEvents. meta.structure.array.json\n-meta.structure.dictionary.json meta.structure.dictionary.json\n-meta.structure.array.json meta.structure.array.json\n-string.quoted.double.json\n-meta.embedded.glob.json -comment",
14+
"L:source.json.comments.embedded .meta.configurations. meta.structure.array.json.comments meta.structure.dictionary.json.comments string.quoted.double.json.comments\n(.meta.skipFiles. | .meta.outFiles | .meta.resolveSourceMapLocations.)\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments meta.structure.array.json.comments meta.structure.array.json.comments\n-meta.embedded.glob.json -comment",
15+
"L:source.json.comments.embedded .meta.launch. .meta.configurations. meta.structure.array.json.comments meta.structure.dictionary.json.comments string.quoted.double.json.comments\n(.meta.skipFiles. | .meta.outFiles | .meta.resolveSourceMapLocations.)\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments meta.structure.array.json.comments meta.structure.array.json.comments\n-meta.embedded.glob.json -comment",
16+
"L:source.json.comments.embedded meta.structure.dictionary.json.comments meta.structure.array.json.comments string.quoted.double.json.comments\n(.meta.include. | .meta.exclude.)\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments meta.structure.array.json.comments\n-meta.embedded.glob.json -comment",
17+
"L:source.json.comments.embedded .meta.ts-node. .meta.moduleTypes. meta.structure.dictionary.json.comments support.type.property-name.json.comments\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments\n-meta.embedded.glob.json -comment",
18+
"L:source.json.comments.embedded .meta.settings. .meta.cSpell.ignorePaths. meta.structure.array.json.comments string.quoted.double.json.comments\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments meta.structure.array.json.comments\n-meta.embedded.glob.json -comment",
19+
"L:source.json.comments.embedded .meta.cSpell.ignorePaths. meta.structure.array.json.comments string.quoted.double.json.comments\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments meta.structure.array.json.comments\n-meta.embedded.glob.json -comment",
20+
"L:source.json.comments.embedded .meta.settings. meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments support.type.property-name.json.comments\n(.meta.files.associations. meta.structure.dictionary.json.comments | .meta.files.exclude. meta.structure.dictionary.json.comments | .meta.files.readonlyExclude. meta.structure.dictionary.json.comments | .meta.workbench.editorAssociations. meta.structure.dictionary.json.comments | .meta.workbench.localHistory.exclude. meta.structure.dictionary.json.comments)\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments\n-meta.embedded.glob.json -comment",
21+
"L:source.json.comments.embedded meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments support.type.property-name.json.comments\n(.meta.files.associations. meta.structure.dictionary.json.comments | .meta.files.exclude. meta.structure.dictionary.json.comments | .meta.files.readonlyExclude. meta.structure.dictionary.json.comments | .meta.workbench.editorAssociations. meta.structure.dictionary.json.comments | .meta.workbench.localHistory.exclude. meta.structure.dictionary.json.comments)\n-meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments meta.structure.dictionary.json.comments\n-meta.structure.array.json.comments\n-meta.embedded.glob.json -comment"
1522
],
1623
"patterns": [
1724
{
@@ -20,24 +27,40 @@
2027
"name": "meta.embedded.glob.json",
2128
"contentName": "string.regexp.glob.json",
2229
"patterns": [ { "include": "#glob" } ]
30+
},
31+
{
32+
"begin": "(?<=\\[)\\G\\s*",
33+
"end": "(?=])",
34+
"patterns": [
35+
{ "include": "#activationEvents" },
36+
{ "include": "source.json.embedded#value" },
37+
{
38+
"match": ",",
39+
"name": "punctuation.separator.array.json"
40+
},
41+
{
42+
"match": "\\S",
43+
"name": "invalid.illegal.expected-array-separator.json"
44+
}
45+
]
2346
}
2447
],
2548
"repository": {
2649
"glob": {
2750
"patterns": [
2851
{
2952
"match": "(\\\\?)/",
30-
"name": "keyword.separator.path.glob-split.glob.json",
31-
"captures": { "1": { "name": "constant.character.escape.glob.json" } }
53+
"captures": { "1": { "name": "constant.character.escape.glob.json" } },
54+
"name": "keyword.separator.path.glob-split.glob.json"
3255
},
3356
{
3457
"match": "(\\*\\*)(\\**)|(\\*)",
35-
"name": "keyword.operator.quantifier.regexp.glob.json",
3658
"captures": {
3759
"1": { "name": "punctuation.definition.globstar.glob.json" },
3860
"2": { "name": "comment.globstar.glob.json" },
3961
"3": { "name": "punctuation.definition.star.glob.json" }
40-
}
62+
},
63+
"name": "keyword.operator.quantifier.regexp.glob.json"
4164
},
4265
{
4366
"match": "\\?",
@@ -64,8 +87,8 @@
6487
},
6588
{
6689
"match": "]",
67-
"name": "meta.embedded.character-class.glob.json",
68-
"captures": { "0": { "name": "invalid.illegal.character-class.end.glob.json" } }
90+
"captures": { "0": { "name": "invalid.illegal.character-class.end.glob.json" } },
91+
"name": "meta.embedded.character-class.glob.json"
6992
},
7093
{
7194
"begin": "(\\[)((?:\\\\?/)*)([!^]?)((?:\\\\?/)*)",
@@ -122,8 +145,17 @@
122145
"glob-split": {
123146
"comment": "glob-split / is ignored inside square brackets https://man7.org/linux/man-pages/man7/glob.7.html",
124147
"match": "(\\\\?)/",
125-
"name": "comment.invalid.illegal.glob-split.glob.json",
126-
"captures": { "1": { "name": "constant.character.escape.glob.json" } }
148+
"captures": { "1": { "name": "constant.character.escape.glob.json" } },
149+
"name": "comment.invalid.illegal.glob-split.glob.json"
150+
},
151+
"activationEvents": {
152+
"begin": "(\")workspaceContains:(?=(?>[^\\x00-\\x1F\"\\\\]++|\\\\.)++\"(?!\\s*:))",
153+
"end": "\"|$",
154+
"beginCaptures": { "1": { "name": "punctuation.definition.string.begin.json" } },
155+
"endCaptures": { "0": { "name": "punctuation.definition.string.end.json" } },
156+
"name": "string.quoted.double.json",
157+
"contentName": "meta.embedded.glob.json string.regexp.glob.json",
158+
"patterns": [ { "include": "#glob" } ]
127159
}
128160
}
129161
}

syntaxes/tests/JSON/negatives.json

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"contributes": {
3+
"jsonValidation": [
4+
[
5+
{
6+
"fileMatch": "*.tmLanguage.not-glob"
7+
}
8+
]
9+
],
10+
"debuggers": [
11+
{
12+
"type": "sqlopsExtensionHost",
13+
"label": "Azure Data Studio Extension Development",
14+
"program": "./out/src/nodeDebug.js",
15+
"runtime": "node",
16+
"configurationSnippets": [
17+
{
18+
"label": "%extensionHost.snippet.launch.label%",
19+
"description": "%extensionHost.snippet.launch.description%",
20+
"body": {
21+
"type": "extensionHost",
22+
"request": "launch",
23+
"name": "%extensionHost.launch.config.name%",
24+
"runtimeExecutable": "^\"\\azuredatastudio\"",
25+
"args": [
26+
"^\"--extensionDevelopmentPath=\\${workspaceFolder}\""
27+
],
28+
"outFiles": [
29+
"^\"\\${workspaceFolder}/out/**/*.js\"not-glob"
30+
],
31+
"preLaunchTask": "npm",
32+
"timeout": 15000
33+
}
34+
}
35+
]
36+
}
37+
]
38+
}
39+
}

0 commit comments

Comments
 (0)