Skip to content

Commit f4a258c

Browse files
authored
fix(syntaxes): inject template tags to top-level source.ts (#2058)
note: template.tag.ng isn't used here and needs to be directly injected into source.ts scopes at the top level because it relies entirely on the injectionSelector to filter its matching out of non-html tag contexts. Since we don't have any scopes that match HTML tags, we rely entirely on the text.html.derivative pattern matching and apply the tag scope via injectionSelector only rather than being able to include it in a pattern list of another match. fixes #2053
1 parent d02c582 commit f4a258c

File tree

5 files changed

+26
-23
lines changed

5 files changed

+26
-23
lines changed

.aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU=

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
.npmrc=974837034
55
pnpm-lock.yaml=1988059937
66
yarn.lock=448809282
7-
package.json=-1818990980
7+
package.json=-1372627236
88
pnpm-workspace.yaml=1711114604

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@
146146
"source.ts"
147147
],
148148
"embeddedLanguages": {
149-
"text.html": "html",
149+
"text.html.derivative": "html",
150150
"source.css": "css",
151151
"source.js": "javascript"
152152
}
@@ -174,12 +174,15 @@
174174
{
175175
"path": "./syntaxes/let-declaration.json",
176176
"scopeName": "template.let.ng",
177-
"injectTo": [ "text.html.derivative" ]
177+
"injectTo": ["text.html.derivative"]
178178
},
179179
{
180180
"path": "./syntaxes/template-tag.json",
181181
"scopeName": "template.tag.ng",
182-
"injectTo": ["text.html.derivative"]
182+
"injectTo": [
183+
"text.html.derivative",
184+
"source.ts"
185+
]
183186
},
184187
{
185188
"path": "./syntaxes/expression.json",

syntaxes/inline-template.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
"name": "string"
6363
}
6464
},
65-
"contentName": "text.html",
65+
"contentName": "text.html.derivative",
6666
"patterns": [
6767
{
6868
"include": "text.html.derivative"
@@ -73,9 +73,6 @@
7373
{
7474
"include": "template.blocks.ng"
7575
},
76-
{
77-
"include": "template.tag.ng"
78-
},
7976
{
8077
"include": "template.let.ng"
8178
}

syntaxes/src/inline-template.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,16 @@ export const InlineTemplate: GrammarDefinition = {
3737
// @ts-ignore
3838
end: /\1/,
3939
endCaptures: {0: {name: 'string'}},
40-
contentName: 'text.html',
40+
contentName: 'text.html.derivative',
4141
patterns: [
42-
{include: 'text.html.derivative'},
43-
{include: 'template.ng'},
44-
{include: 'template.blocks.ng'},
45-
{include: 'template.tag.ng'},
46-
{include: 'template.let.ng'},
42+
{include: 'text.html.derivative'}, {include: 'template.ng'},
43+
{include: 'template.blocks.ng'}, {include: 'template.let.ng'},
44+
// note: template.tag.ng isn't used here and needs to be directly injected into source.ts
45+
// scopes at the top level because it relies entirely on the injectionSelector to filter its
46+
// matching out of non-html tag contexts. Since we don't have any scopes that match HTML
47+
// tags, we rely entirely on the text.html.derivative pattern matching and apply the tag
48+
// scope via injectionSelector only rather than being able to include it in a pattern list
49+
// of another match.
4750
]
4851
}
4952
}

syntaxes/test/data/inline-template.ts.snap

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# ^ inline-template.ng meta.object-literal.key.ts punctuation.separator.key-value.ts
1414
# ^ inline-template.ng
1515
# ^ inline-template.ng string
16-
# ^^^^^^^^^^^ inline-template.ng text.html
16+
# ^^^^^^^^^^^ inline-template.ng text.html.derivative
1717
# ^ inline-template.ng string
1818
# ^^ inline-template.ng
1919
>
@@ -25,7 +25,7 @@
2525
# ^ inline-template.ng meta.object-literal.key.ts punctuation.separator.key-value.ts
2626
# ^ inline-template.ng
2727
# ^ inline-template.ng string
28-
# ^^^^^^^^^^^ inline-template.ng text.html
28+
# ^^^^^^^^^^^ inline-template.ng text.html.derivative
2929
# ^ inline-template.ng string
3030
# ^^ inline-template.ng
3131
> template: "<div></div>",
@@ -34,7 +34,7 @@
3434
# ^ inline-template.ng meta.object-literal.key.ts punctuation.separator.key-value.ts
3535
# ^ inline-template.ng
3636
# ^ inline-template.ng string
37-
# ^^^^^^^^^^^ inline-template.ng text.html
37+
# ^^^^^^^^^^^ inline-template.ng text.html.derivative
3838
# ^ inline-template.ng string
3939
# ^^ inline-template.ng
4040
> template: '<div></div>',
@@ -43,7 +43,7 @@
4343
# ^ inline-template.ng meta.object-literal.key.ts punctuation.separator.key-value.ts
4444
# ^ inline-template.ng
4545
# ^ inline-template.ng string
46-
# ^^^^^^^^^^^ inline-template.ng text.html
46+
# ^^^^^^^^^^^ inline-template.ng text.html.derivative
4747
# ^ inline-template.ng string
4848
# ^^ inline-template.ng
4949
>
@@ -60,7 +60,7 @@
6060
# ^ inline-template.ng meta.brace.round.ts
6161
# ^ inline-template.ng
6262
# ^ inline-template.ng string
63-
# ^^^^^^^^^^^ inline-template.ng text.html
63+
# ^^^^^^^^^^^ inline-template.ng text.html.derivative
6464
# ^ inline-template.ng string
6565
# ^ inline-template.ng
6666
# ^ inline-template.ng meta.brace.round.ts
@@ -77,7 +77,7 @@
7777
# ^ inline-template.ng meta.object-literal.key.ts punctuation.separator.key-value.ts
7878
# ^ inline-template.ng
7979
# ^ inline-template.ng string
80-
# ^^^^^^^^^^^ inline-template.ng text.html
80+
# ^^^^^^^^^^^ inline-template.ng text.html.derivative
8181
# ^ inline-template.ng string
8282
> /*
8383
#^^^^^ inline-template.ng
@@ -108,9 +108,9 @@
108108
# ^ inline-template.ng meta.object-literal.key.ts punctuation.separator.key-value.ts
109109
# ^ inline-template.ng
110110
# ^ inline-template.ng string
111-
# ^^ inline-template.ng text.html punctuation.definition.block.ts
112-
# ^^^^^^^^ inline-template.ng text.html expression.ng variable.other.readwrite.ts
113-
# ^^ inline-template.ng text.html punctuation.definition.block.ts
111+
# ^^ inline-template.ng text.html.derivative punctuation.definition.block.ts
112+
# ^^^^^^^^ inline-template.ng text.html.derivative expression.ng variable.other.readwrite.ts
113+
# ^^ inline-template.ng text.html.derivative punctuation.definition.block.ts
114114
# ^ inline-template.ng string
115115
# ^^ inline-template.ng
116116
>})

0 commit comments

Comments
 (0)