Skip to content

Commit 16b6051

Browse files
committed
also highlight interpolations
1 parent 26a3965 commit 16b6051

File tree

2 files changed

+108
-34
lines changed

2 files changed

+108
-34
lines changed

vue.YAML-tmLanguage

Lines changed: 49 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ fileTypes: [vue]
66
uuid: 5512c10d-4cc5-434c-b8fc-53b912f55ab3
77

88
patterns:
9+
- include: '#vue-interpolations'
10+
911
- name: meta.tag.any.html
1012
begin: (<)([a-zA-Z0-9:-]++)(?=[^>]*></\2>)
1113
beginCaptures:
@@ -239,6 +241,48 @@ patterns:
239241
match: <
240242

241243
repository:
244+
vue-interpolations:
245+
patterns:
246+
- name: expression.embbeded.vue
247+
begin: \{\{\{?
248+
end: \}\}\}?
249+
beginCaptures:
250+
'0': {name: punctuation.definition.tag.begin.html}
251+
endCaptures:
252+
'0': {name: punctuation.definition.tag.end.html}
253+
patterns:
254+
- include: source.js
255+
256+
vue-directives:
257+
name: meta.directive.vue
258+
begin: (?:\b(v-)|(:|@))([a-zA-Z\-]+)(?:\:([a-zA-Z\-]+))?(?:\.([a-zA-Z\-]+))*\s*(=)
259+
end: (?<='|")
260+
captures:
261+
'1': {name: entity.other.attribute-name.html}
262+
'2': {name: punctuation.separator.key-value.html}
263+
'3': {name: entity.other.attribute-name.html}
264+
'4': {name: entity.other.attribute-name.html}
265+
'5': {name: entity.other.attribute-name.html}
266+
'6': {name: punctuation.separator.key-value.html}
267+
patterns:
268+
- name: source.directive.vue
269+
begin: '"'
270+
beginCaptures:
271+
'0': {name: punctuation.definition.string.begin.html}
272+
end: '"'
273+
endCaptures:
274+
'0': {name: punctuation.definition.string.end.html}
275+
patterns:
276+
- include: source.js
277+
- name: source.directive.vue
278+
begin: ''''
279+
beginCaptures:
280+
'0': {name: punctuation.definition.string.begin.html}
281+
end: ''''
282+
endCaptures:
283+
'0': {name: punctuation.definition.string.end.html}
284+
patterns:
285+
- include: source.js
242286

243287
entities:
244288
patterns:
@@ -259,6 +303,7 @@ repository:
259303
endCaptures:
260304
'0': {name: punctuation.definition.string.end.html}
261305
patterns:
306+
- include: '#vue-interpolations'
262307
- include: '#entities'
263308

264309
string-single-quoted:
@@ -270,39 +315,9 @@ repository:
270315
endCaptures:
271316
'0': {name: punctuation.definition.string.end.html}
272317
patterns:
318+
- include: '#vue-interpolations'
273319
- include: '#entities'
274320

275-
vue-directive:
276-
name: meta.directive.vue
277-
begin: (?:\b(v-)|(:|@))([a-zA-Z\-]+)(?:\:([a-zA-Z\-]+))?(?:\.([a-zA-Z\-]+))*\s*(=)
278-
end: (?<='|")
279-
captures:
280-
'1': {name: entity.other.attribute-name.html}
281-
'2': {name: punctuation.separator.key-value.html}
282-
'3': {name: entity.other.attribute-name.html}
283-
'4': {name: entity.other.attribute-name.html}
284-
'5': {name: entity.other.attribute-name.html}
285-
'6': {name: punctuation.separator.key-value.html}
286-
patterns:
287-
- name: source.directive.vue
288-
begin: '"'
289-
beginCaptures:
290-
'0': {name: punctuation.definition.string.begin.html}
291-
end: '"'
292-
endCaptures:
293-
'0': {name: punctuation.definition.string.end.html}
294-
patterns:
295-
- include: source.js
296-
- name: source.directive.vue
297-
begin: ''''
298-
beginCaptures:
299-
'0': {name: punctuation.definition.string.begin.html}
300-
end: ''''
301-
endCaptures:
302-
'0': {name: punctuation.definition.string.end.html}
303-
patterns:
304-
- include: source.js
305-
306321
tag-generic-attribute:
307322
name: entity.other.attribute-name.html
308323
match: \b([a-zA-Z\-:]+)
@@ -324,6 +339,7 @@ repository:
324339
endCaptures:
325340
'0': {name: punctuation.definition.string.end.html}
326341
patterns:
342+
- include: '#vue-interpolations'
327343
- include: '#entities'
328344
- name: string.quoted.single.html
329345
contentName: meta.toc-list.id.html
@@ -334,11 +350,12 @@ repository:
334350
endCaptures:
335351
'0': {name: punctuation.definition.string.end.html}
336352
patterns:
353+
- include: '#vue-interpolations'
337354
- include: '#entities'
338355

339356
tag-stuff:
340357
patterns:
341-
- include: '#vue-directive'
358+
- include: '#vue-directives'
342359
- include: '#tag-id-attribute'
343360
- include: '#tag-generic-attribute'
344361
- include: '#string-double-quoted'

vue.tmLanguage

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@
3030
<string>Vue Component</string>
3131
<key>patterns</key>
3232
<array>
33+
<dict>
34+
<key>include</key>
35+
<string>#vue-interpolations</string>
36+
</dict>
3337
<dict>
3438
<key>begin</key>
3539
<string>(&lt;)([a-zA-Z0-9:-]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)</string>
@@ -849,6 +853,10 @@
849853
<string>string.quoted.double.html</string>
850854
<key>patterns</key>
851855
<array>
856+
<dict>
857+
<key>include</key>
858+
<string>#vue-interpolations</string>
859+
</dict>
852860
<dict>
853861
<key>include</key>
854862
<string>#entities</string>
@@ -881,6 +889,10 @@
881889
<string>string.quoted.single.html</string>
882890
<key>patterns</key>
883891
<array>
892+
<dict>
893+
<key>include</key>
894+
<string>#vue-interpolations</string>
895+
</dict>
884896
<dict>
885897
<key>include</key>
886898
<string>#entities</string>
@@ -944,6 +956,10 @@
944956
<string>string.quoted.double.html</string>
945957
<key>patterns</key>
946958
<array>
959+
<dict>
960+
<key>include</key>
961+
<string>#vue-interpolations</string>
962+
</dict>
947963
<dict>
948964
<key>include</key>
949965
<string>#entities</string>
@@ -977,6 +993,10 @@
977993
<string>string.quoted.single.html</string>
978994
<key>patterns</key>
979995
<array>
996+
<dict>
997+
<key>include</key>
998+
<string>#vue-interpolations</string>
999+
</dict>
9801000
<dict>
9811001
<key>include</key>
9821002
<string>#entities</string>
@@ -991,7 +1011,7 @@
9911011
<array>
9921012
<dict>
9931013
<key>include</key>
994-
<string>#vue-directive</string>
1014+
<string>#vue-directives</string>
9951015
</dict>
9961016
<dict>
9971017
<key>include</key>
@@ -1011,7 +1031,7 @@
10111031
</dict>
10121032
</array>
10131033
</dict>
1014-
<key>vue-directive</key>
1034+
<key>vue-directives</key>
10151035
<dict>
10161036
<key>begin</key>
10171037
<string>(?:\b(v-)|(:|@))([a-zA-Z\-]+)(?:\:([a-zA-Z\-]+))?(?:\.([a-zA-Z\-]+))*\s*(=)</string>
@@ -1118,6 +1138,43 @@
11181138
</dict>
11191139
</array>
11201140
</dict>
1141+
<key>vue-interpolations</key>
1142+
<dict>
1143+
<key>patterns</key>
1144+
<array>
1145+
<dict>
1146+
<key>begin</key>
1147+
<string>\{\{\{?</string>
1148+
<key>beginCaptures</key>
1149+
<dict>
1150+
<key>0</key>
1151+
<dict>
1152+
<key>name</key>
1153+
<string>punctuation.definition.tag.begin.html</string>
1154+
</dict>
1155+
</dict>
1156+
<key>end</key>
1157+
<string>\}\}\}?</string>
1158+
<key>endCaptures</key>
1159+
<dict>
1160+
<key>0</key>
1161+
<dict>
1162+
<key>name</key>
1163+
<string>punctuation.definition.tag.end.html</string>
1164+
</dict>
1165+
</dict>
1166+
<key>name</key>
1167+
<string>expression.embbeded.vue</string>
1168+
<key>patterns</key>
1169+
<array>
1170+
<dict>
1171+
<key>include</key>
1172+
<string>source.js</string>
1173+
</dict>
1174+
</array>
1175+
</dict>
1176+
</array>
1177+
</dict>
11211178
</dict>
11221179
<key>scopeName</key>
11231180
<string>text.html.vue</string>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy