Skip to content

Commit e8fea97

Browse files
authored
Merge pull request #557 from mtpc/master
support namespaced tsx
2 parents ebd19c7 + 3d230d3 commit e8fea97

File tree

4 files changed

+389
-41
lines changed

4 files changed

+389
-41
lines changed

TypeScriptReact.YAML-tmLanguage

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,29 @@ repository:
3434
begin: |-
3535
(?x)
3636
(?<=[({\[,?=>:*]|&&|\|\||\?|{{lookBehindReturn}}|{{lookBehindDefault}}|^)\s*
37-
(?=(<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
38-
end: (?!\s*(<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
37+
(?=(<)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
38+
end: (?!\s*(<)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
3939
patterns:
4040
- include: '#jsx-tag-without-attributes'
4141

4242
jsx-tag-without-attributes:
4343
name: meta.tag.without-attributes.tsx
44-
begin: (<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
45-
end: (</)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
44+
begin: (<)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
45+
end: (</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
4646
beginCaptures:
4747
'1': {name: punctuation.definition.tag.begin.tsx}
48-
'2': {name: entity.name.tag.tsx}
49-
'3': {name: support.class.component.tsx}
50-
'4': {name: punctuation.definition.tag.end.tsx}
48+
'2': {name: entity.name.tag.namespace.tsx}
49+
'3': {name: punctuation.separator.namespace.tsx}
50+
'4': {name: entity.name.tag.tsx}
51+
'5': {name: support.class.component.tsx}
52+
'6': {name: punctuation.definition.tag.end.tsx}
5153
endCaptures:
5254
'1': {name: punctuation.definition.tag.begin.tsx}
53-
'2': {name: entity.name.tag.tsx}
54-
'3': {name: support.class.component.tsx}
55-
'4': {name: punctuation.definition.tag.end.tsx}
55+
'2': {name: entity.name.tag.namespace.tsx}
56+
'3': {name: punctuation.separator.namespace.tsx}
57+
'4': {name: entity.name.tag.tsx}
58+
'5': {name: support.class.component.tsx}
59+
'6': {name: punctuation.definition.tag.end.tsx}
5660
contentName: meta.jsx.children.tsx
5761
patterns:
5862
- include: '#jsx-children'
@@ -64,16 +68,19 @@ repository:
6468
(?<=[({\[,?=>:*]|&&|\|\||\?|{{lookBehindReturn}}|{{lookBehindDefault}}|^)\s*
6569
(?!<\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=>])|,)) # look ahead is not type parameter of arrow
6670
(?=(<)\s*
71+
([_$a-zA-Z][-$\w.]*(?<!\.|-):)?
6772
([_$a-zA-Z][-$\w.]*(?<!\.|-))
6873
(?=\s+(?!\?)|/?>))
69-
end: (/>)|(?:(</)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
74+
end: (/>)|(?:(</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
7075
endCaptures:
7176
'0': { name: meta.tag.tsx }
7277
'1': { name: punctuation.definition.tag.end.tsx }
7378
'2': { name: punctuation.definition.tag.begin.tsx }
74-
'3': { name: entity.name.tag.tsx }
75-
'4': { name: support.class.component.tsx }
76-
'5': { name: punctuation.definition.tag.end.tsx }
79+
'3': { name: entity.name.tag.namespace.tsx }
80+
'4': { name: punctuation.separator.namespace.tsx }
81+
'5': { name: entity.name.tag.tsx }
82+
'6': { name: support.class.component.tsx }
83+
'7': { name: punctuation.definition.tag.end.tsx }
7784
patterns:
7885
- include: '#jsx-tag'
7986

@@ -82,16 +89,19 @@ repository:
8289
begin: |-
8390
(?x)
8491
(?=(<)\s*
92+
([_$a-zA-Z][-$\w.]*(?<!\.|-):)?
8593
([_$a-zA-Z][-$\w.]*(?<!\.|-))
8694
(?=\s+(?!\?)|/?>))
87-
end: (/>)|(?:(</)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
95+
end: (/>)|(?:(</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
8896
endCaptures:
89-
'0': { name: meta.tag.tsx }
90-
'1': { name: punctuation.definition.tag.end.tsx }
91-
'2': { name: punctuation.definition.tag.begin.tsx }
92-
'3': { name: entity.name.tag.tsx }
93-
'4': { name: support.class.component.tsx }
94-
'5': { name: punctuation.definition.tag.end.tsx }
97+
'0': { name: meta.tag.tsx }
98+
'1': { name: punctuation.definition.tag.end.tsx }
99+
'2': { name: punctuation.definition.tag.begin.tsx }
100+
'3': { name: entity.name.tag.namespace.tsx }
101+
'4': { name: punctuation.separator.namespace.tsx }
102+
'5': { name: entity.name.tag.tsx }
103+
'6': { name: support.class.component.tsx }
104+
'7': { name: punctuation.definition.tag.end.tsx }
95105
patterns:
96106
- include: '#jsx-tag'
97107

@@ -100,19 +110,23 @@ repository:
100110
begin: |-
101111
(?x)
102112
(?=(<)\s*
113+
(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?
103114
([_$a-zA-Z][-$\w.]*(?<!\.|-))
104115
(?=\s+(?!\?)|/?>))
105-
end: (?=(/>)|(?:(</)\s*([_$a-zA-Z][-$\w.]*(?<!\.|-))\s*(>)))
116+
end: (?=(/>)|(?:(</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?([_$a-zA-Z][-$\w.]*(?<!\.|-))\s*(>)))
106117
patterns:
107118
- begin: |-
108119
(?x)
109120
(<)\s*
121+
(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?
110122
((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))
111123
(?=\s+(?!\?)|/?>)
112124
beginCaptures:
113125
'1': { name: punctuation.definition.tag.begin.tsx }
114-
'2': { name: entity.name.tag.tsx }
115-
'3': { name: support.class.component.tsx }
126+
'2': { name: entity.name.tag.namespace.tsx }
127+
'3': { name: punctuation.separator.namespace.tsx }
128+
'4': { name: entity.name.tag.tsx }
129+
'5': { name: support.class.component.tsx }
116130
end: (?=[/]?>)
117131
contentName: meta.tag.attributes.tsx
118132
patterns:
@@ -170,10 +184,13 @@ repository:
170184
match: |-
171185
(?x)
172186
\s*
187+
(?:([_$a-zA-Z][-$\w.]*)(:))?
173188
([_$a-zA-Z][-$\w]*)
174189
(?=\s|=|/?>|/\*|//)
175190
captures:
176-
'1': {name: entity.other.attribute-name.tsx}
191+
'1': {name: entity.other.attribute-name.namespace.tsx}
192+
'2': {name: punctuation.separator.namespace.tsx}
193+
'3': {name: entity.other.attribute-name.tsx}
177194

178195
jsx-tag-attribute-assignment:
179196
name: keyword.operator.assignment.tsx

TypeScriptReact.tmLanguage

Lines changed: 81 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6897,9 +6897,9 @@
68976897
<key>begin</key>
68986898
<string>(?x)
68996899
(?&lt;=[({\[,?=&gt;:*]|&amp;&amp;|\|\||\?|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^)\s*
6900-
(?=(&lt;)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;))</string>
6900+
(?=(&lt;)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;))</string>
69016901
<key>end</key>
6902-
<string>(?!\s*(&lt;)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;))</string>
6902+
<string>(?!\s*(&lt;)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;))</string>
69036903
<key>patterns</key>
69046904
<array>
69056905
<dict>
@@ -6913,9 +6913,9 @@
69136913
<key>name</key>
69146914
<string>meta.tag.without-attributes.tsx</string>
69156915
<key>begin</key>
6916-
<string>(&lt;)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;)</string>
6916+
<string>(&lt;)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;)</string>
69176917
<key>end</key>
6918-
<string>(&lt;/)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;)</string>
6918+
<string>(&lt;/)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))?\s*(&gt;)</string>
69196919
<key>beginCaptures</key>
69206920
<dict>
69216921
<key>1</key>
@@ -6926,14 +6926,24 @@
69266926
<key>2</key>
69276927
<dict>
69286928
<key>name</key>
6929-
<string>entity.name.tag.tsx</string>
6929+
<string>entity.name.tag.namespace.tsx</string>
69306930
</dict>
69316931
<key>3</key>
69326932
<dict>
69336933
<key>name</key>
6934-
<string>support.class.component.tsx</string>
6934+
<string>punctuation.separator.namespace.tsx</string>
69356935
</dict>
69366936
<key>4</key>
6937+
<dict>
6938+
<key>name</key>
6939+
<string>entity.name.tag.tsx</string>
6940+
</dict>
6941+
<key>5</key>
6942+
<dict>
6943+
<key>name</key>
6944+
<string>support.class.component.tsx</string>
6945+
</dict>
6946+
<key>6</key>
69376947
<dict>
69386948
<key>name</key>
69396949
<string>punctuation.definition.tag.end.tsx</string>
@@ -6949,14 +6959,24 @@
69496959
<key>2</key>
69506960
<dict>
69516961
<key>name</key>
6952-
<string>entity.name.tag.tsx</string>
6962+
<string>entity.name.tag.namespace.tsx</string>
69536963
</dict>
69546964
<key>3</key>
69556965
<dict>
69566966
<key>name</key>
6957-
<string>support.class.component.tsx</string>
6967+
<string>punctuation.separator.namespace.tsx</string>
69586968
</dict>
69596969
<key>4</key>
6970+
<dict>
6971+
<key>name</key>
6972+
<string>entity.name.tag.tsx</string>
6973+
</dict>
6974+
<key>5</key>
6975+
<dict>
6976+
<key>name</key>
6977+
<string>support.class.component.tsx</string>
6978+
</dict>
6979+
<key>6</key>
69606980
<dict>
69616981
<key>name</key>
69626982
<string>punctuation.definition.tag.end.tsx</string>
@@ -6979,10 +6999,11 @@
69796999
(?&lt;=[({\[,?=&gt;:*]|&amp;&amp;|\|\||\?|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^)\s*
69807000
(?!&lt;\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=&gt;])|,)) # look ahead is not type parameter of arrow
69817001
(?=(&lt;)\s*
7002+
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-):)?
69827003
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))
69837004
(?=\s+(?!\?)|/?&gt;))</string>
69847005
<key>end</key>
6985-
<string>(/&gt;)|(?:(&lt;/)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))\s*(&gt;))</string>
7006+
<string>(/&gt;)|(?:(&lt;/)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))\s*(&gt;))</string>
69867007
<key>endCaptures</key>
69877008
<dict>
69887009
<key>0</key>
@@ -7003,14 +7024,24 @@
70037024
<key>3</key>
70047025
<dict>
70057026
<key>name</key>
7006-
<string>entity.name.tag.tsx</string>
7027+
<string>entity.name.tag.namespace.tsx</string>
70077028
</dict>
70087029
<key>4</key>
70097030
<dict>
70107031
<key>name</key>
7011-
<string>support.class.component.tsx</string>
7032+
<string>punctuation.separator.namespace.tsx</string>
70127033
</dict>
70137034
<key>5</key>
7035+
<dict>
7036+
<key>name</key>
7037+
<string>entity.name.tag.tsx</string>
7038+
</dict>
7039+
<key>6</key>
7040+
<dict>
7041+
<key>name</key>
7042+
<string>support.class.component.tsx</string>
7043+
</dict>
7044+
<key>7</key>
70147045
<dict>
70157046
<key>name</key>
70167047
<string>punctuation.definition.tag.end.tsx</string>
@@ -7029,10 +7060,11 @@
70297060
<key>begin</key>
70307061
<string>(?x)
70317062
(?=(&lt;)\s*
7063+
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-):)?
70327064
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))
70337065
(?=\s+(?!\?)|/?&gt;))</string>
70347066
<key>end</key>
7035-
<string>(/&gt;)|(?:(&lt;/)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))\s*(&gt;))</string>
7067+
<string>(/&gt;)|(?:(&lt;/)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))\s*(&gt;))</string>
70367068
<key>endCaptures</key>
70377069
<dict>
70387070
<key>0</key>
@@ -7053,14 +7085,24 @@
70537085
<key>3</key>
70547086
<dict>
70557087
<key>name</key>
7056-
<string>entity.name.tag.tsx</string>
7088+
<string>entity.name.tag.namespace.tsx</string>
70577089
</dict>
70587090
<key>4</key>
70597091
<dict>
70607092
<key>name</key>
7061-
<string>support.class.component.tsx</string>
7093+
<string>punctuation.separator.namespace.tsx</string>
70627094
</dict>
70637095
<key>5</key>
7096+
<dict>
7097+
<key>name</key>
7098+
<string>entity.name.tag.tsx</string>
7099+
</dict>
7100+
<key>6</key>
7101+
<dict>
7102+
<key>name</key>
7103+
<string>support.class.component.tsx</string>
7104+
</dict>
7105+
<key>7</key>
70647106
<dict>
70657107
<key>name</key>
70667108
<string>punctuation.definition.tag.end.tsx</string>
@@ -7081,16 +7123,18 @@
70817123
<key>begin</key>
70827124
<string>(?x)
70837125
(?=(&lt;)\s*
7126+
(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?
70847127
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))
70857128
(?=\s+(?!\?)|/?&gt;))</string>
70867129
<key>end</key>
7087-
<string>(?=(/&gt;)|(?:(&lt;/)\s*([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))\s*(&gt;)))</string>
7130+
<string>(?=(/&gt;)|(?:(&lt;/)\s*(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))\s*(&gt;)))</string>
70887131
<key>patterns</key>
70897132
<array>
70907133
<dict>
70917134
<key>begin</key>
70927135
<string>(?x)
70937136
(&lt;)\s*
7137+
(?:([_$a-zA-Z][-$\w.]*)(?&lt;!\.|-)(:))?
70947138
((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?&lt;!\.|-))
70957139
(?=\s+(?!\?)|/?&gt;)</string>
70967140
<key>beginCaptures</key>
@@ -7103,9 +7147,19 @@
71037147
<key>2</key>
71047148
<dict>
71057149
<key>name</key>
7106-
<string>entity.name.tag.tsx</string>
7150+
<string>entity.name.tag.namespace.tsx</string>
71077151
</dict>
71087152
<key>3</key>
7153+
<dict>
7154+
<key>name</key>
7155+
<string>punctuation.separator.namespace.tsx</string>
7156+
</dict>
7157+
<key>4</key>
7158+
<dict>
7159+
<key>name</key>
7160+
<string>entity.name.tag.tsx</string>
7161+
</dict>
7162+
<key>5</key>
71097163
<dict>
71107164
<key>name</key>
71117165
<string>support.class.component.tsx</string>
@@ -7272,11 +7326,22 @@
72727326
<key>match</key>
72737327
<string>(?x)
72747328
\s*
7329+
(?:([_$a-zA-Z][-$\w.]*)(:))?
72757330
([_$a-zA-Z][-$\w]*)
72767331
(?=\s|=|/?&gt;|/\*|//)</string>
72777332
<key>captures</key>
72787333
<dict>
72797334
<key>1</key>
7335+
<dict>
7336+
<key>name</key>
7337+
<string>entity.other.attribute-name.namespace.tsx</string>
7338+
</dict>
7339+
<key>2</key>
7340+
<dict>
7341+
<key>name</key>
7342+
<string>punctuation.separator.namespace.tsx</string>
7343+
</dict>
7344+
<key>3</key>
72807345
<dict>
72817346
<key>name</key>
72827347
<string>entity.other.attribute-name.tsx</string>

0 commit comments

Comments
 (0)