Skip to content

Commit fcbd570

Browse files
committed
Fix the variable initializer such that new lines are handled better.
If the expression starts on same line use end of line to end the scope Otherwise do not use end of line as end of scope unless its complete blank line
1 parent 0ed9d4e commit fcbd570

9 files changed

+250
-178
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,7 @@ repository:
484484
- include: '#variable-initializer'
485485
- include: '#access-modifier'
486486
- include: '#property-accessor'
487+
- include: '#after-operator-block'
487488
- include: '#decl-block'
488489
- include: '#expression'
489490
- include: '#punctuation-comma'
@@ -1021,12 +1022,21 @@ repository:
10211022
- include: '#punctuation-comma'
10221023

10231024
variable-initializer:
1024-
begin: (?<!=|!)(=)(?!=)
1025-
beginCaptures:
1026-
'1': { name: keyword.operator.assignment.ts }
1027-
end: (?=$|[,);}\]])
10281025
patterns:
1026+
# if it is assignment with expression on same line, use end of line as end of scope
1027+
- begin: (?<!=|!)(=)(?!=)(?=\s*\S)
1028+
beginCaptures:
1029+
'1': { name: keyword.operator.assignment.ts }
1030+
end: (?=$|[,);}\]])
1031+
patterns:
10291032
- include: '#expression'
1033+
# if the expression doesnt start on same line do not use end of line as end of unless the complete line is blank
1034+
- begin: (?<!=|!)(=)(?!=)
1035+
beginCaptures:
1036+
'1': { name: keyword.operator.assignment.ts }
1037+
end: (?=[,);}\]])|(?=^\s*$)
1038+
patterns:
1039+
- include: '#expression'
10301040

10311041
for-loop:
10321042
begin: (?<!\.|\$)\b(for)(?:\s+(await))?\s*(\()

TypeScript.tmLanguage

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,6 +1545,10 @@
15451545
<key>include</key>
15461546
<string>#property-accessor</string>
15471547
</dict>
1548+
<dict>
1549+
<key>include</key>
1550+
<string>#after-operator-block</string>
1551+
</dict>
15481552
<dict>
15491553
<key>include</key>
15501554
<string>#decl-block</string>
@@ -3104,23 +3108,49 @@
31043108
</dict>
31053109
<key>variable-initializer</key>
31063110
<dict>
3107-
<key>begin</key>
3108-
<string>(?&lt;!=|!)(=)(?!=)</string>
3109-
<key>beginCaptures</key>
3110-
<dict>
3111-
<key>1</key>
3112-
<dict>
3113-
<key>name</key>
3114-
<string>keyword.operator.assignment.ts</string>
3115-
</dict>
3116-
</dict>
3117-
<key>end</key>
3118-
<string>(?=$|[,);}\]])</string>
31193111
<key>patterns</key>
31203112
<array>
31213113
<dict>
3122-
<key>include</key>
3123-
<string>#expression</string>
3114+
<key>begin</key>
3115+
<string>(?&lt;!=|!)(=)(?!=)(?=\s*\S)</string>
3116+
<key>beginCaptures</key>
3117+
<dict>
3118+
<key>1</key>
3119+
<dict>
3120+
<key>name</key>
3121+
<string>keyword.operator.assignment.ts</string>
3122+
</dict>
3123+
</dict>
3124+
<key>end</key>
3125+
<string>(?=$|[,);}\]])</string>
3126+
<key>patterns</key>
3127+
<array>
3128+
<dict>
3129+
<key>include</key>
3130+
<string>#expression</string>
3131+
</dict>
3132+
</array>
3133+
</dict>
3134+
<dict>
3135+
<key>begin</key>
3136+
<string>(?&lt;!=|!)(=)(?!=)</string>
3137+
<key>beginCaptures</key>
3138+
<dict>
3139+
<key>1</key>
3140+
<dict>
3141+
<key>name</key>
3142+
<string>keyword.operator.assignment.ts</string>
3143+
</dict>
3144+
</dict>
3145+
<key>end</key>
3146+
<string>(?=[,);}\]])|(?=^\s*$)</string>
3147+
<key>patterns</key>
3148+
<array>
3149+
<dict>
3150+
<key>include</key>
3151+
<string>#expression</string>
3152+
</dict>
3153+
</array>
31243154
</dict>
31253155
</array>
31263156
</dict>

TypeScriptReact.tmLanguage

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1549,6 +1549,10 @@
15491549
<key>include</key>
15501550
<string>#property-accessor</string>
15511551
</dict>
1552+
<dict>
1553+
<key>include</key>
1554+
<string>#after-operator-block</string>
1555+
</dict>
15521556
<dict>
15531557
<key>include</key>
15541558
<string>#decl-block</string>
@@ -3108,23 +3112,49 @@
31083112
</dict>
31093113
<key>variable-initializer</key>
31103114
<dict>
3111-
<key>begin</key>
3112-
<string>(?&lt;!=|!)(=)(?!=)</string>
3113-
<key>beginCaptures</key>
3114-
<dict>
3115-
<key>1</key>
3116-
<dict>
3117-
<key>name</key>
3118-
<string>keyword.operator.assignment.tsx</string>
3119-
</dict>
3120-
</dict>
3121-
<key>end</key>
3122-
<string>(?=$|[,);}\]])</string>
31233115
<key>patterns</key>
31243116
<array>
31253117
<dict>
3126-
<key>include</key>
3127-
<string>#expression</string>
3118+
<key>begin</key>
3119+
<string>(?&lt;!=|!)(=)(?!=)(?=\s*\S)</string>
3120+
<key>beginCaptures</key>
3121+
<dict>
3122+
<key>1</key>
3123+
<dict>
3124+
<key>name</key>
3125+
<string>keyword.operator.assignment.tsx</string>
3126+
</dict>
3127+
</dict>
3128+
<key>end</key>
3129+
<string>(?=$|[,);}\]])</string>
3130+
<key>patterns</key>
3131+
<array>
3132+
<dict>
3133+
<key>include</key>
3134+
<string>#expression</string>
3135+
</dict>
3136+
</array>
3137+
</dict>
3138+
<dict>
3139+
<key>begin</key>
3140+
<string>(?&lt;!=|!)(=)(?!=)</string>
3141+
<key>beginCaptures</key>
3142+
<dict>
3143+
<key>1</key>
3144+
<dict>
3145+
<key>name</key>
3146+
<string>keyword.operator.assignment.tsx</string>
3147+
</dict>
3148+
</dict>
3149+
<key>end</key>
3150+
<string>(?=[,);}\]])|(?=^\s*$)</string>
3151+
<key>patterns</key>
3152+
<array>
3153+
<dict>
3154+
<key>include</key>
3155+
<string>#expression</string>
3156+
</dict>
3157+
</array>
31283158
</dict>
31293159
</array>
31303160
</dict>

tests/baselines/Issue197.baseline.txt

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -159,101 +159,101 @@ Grammar: TypeScript.tmLanguage
159159
source.ts meta.class.ts meta.field.declaration.ts meta.type.annotation.ts
160160
^
161161
source.ts meta.class.ts meta.field.declaration.ts keyword.operator.assignment.ts
162-
^^^
162+
^^^^
163163
source.ts meta.class.ts meta.field.declaration.ts
164164
> [
165165
^^^^^^^^^^^^
166-
source.ts meta.class.ts
166+
source.ts meta.class.ts meta.field.declaration.ts
167167
^
168-
source.ts meta.class.ts meta.array.literal.ts meta.brace.square.ts
168+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.brace.square.ts
169169
^^^^^^^^^
170-
source.ts meta.class.ts meta.array.literal.ts
170+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts
171171
> { statusText: "Assigned" },
172172
^^^^^^^^^^^^^^^^
173-
source.ts meta.class.ts meta.array.literal.ts
173+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts
174174
^
175-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
175+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
176176
^
177-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts
177+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts
178178
^^^^^^^^^^
179-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts
179+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts
180180
^
181-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
181+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
182182
^
183-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
183+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
184184
^
185-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.begin.ts
185+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.begin.ts
186186
^^^^^^^^
187-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts
187+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts
188188
^
189-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.end.ts
189+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.end.ts
190190
^
191-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
191+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
192192
^
193-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
193+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
194194
^
195-
source.ts meta.class.ts meta.array.literal.ts punctuation.separator.comma.ts
195+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts punctuation.separator.comma.ts
196196
^^
197-
source.ts meta.class.ts meta.array.literal.ts
197+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts
198198
> { statusText: "Faulty" },
199199
^^^^^^^^^^^^^^^^
200-
source.ts meta.class.ts meta.array.literal.ts
200+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts
201201
^
202-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
202+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
203203
^
204-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts
204+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts
205205
^^^^^^^^^^
206-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts
206+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts
207207
^
208-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
208+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
209209
^
210-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
210+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
211211
^
212-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.begin.ts
212+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.begin.ts
213213
^^^^^^
214-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts
214+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts
215215
^
216-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.end.ts
216+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.end.ts
217217
^
218-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
218+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
219219
^
220-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
220+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
221221
^
222-
source.ts meta.class.ts meta.array.literal.ts punctuation.separator.comma.ts
222+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts punctuation.separator.comma.ts
223223
^^^
224-
source.ts meta.class.ts meta.array.literal.ts
224+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts
225225
> { statusText: "Not in Use" },
226226
^^^^^^^^^^^^^^^^
227-
source.ts meta.class.ts meta.array.literal.ts
227+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts
228228
^
229-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
229+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
230230
^
231-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts
231+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts
232232
^^^^^^^^^^
233-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts
233+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts
234234
^
235-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
235+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
236236
^
237-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
237+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
238238
^
239-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.begin.ts
239+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.begin.ts
240240
^^^^^^^^^^
241-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts
241+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts
242242
^
243-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.end.ts
243+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts string.quoted.double.ts punctuation.definition.string.end.ts
244244
^
245-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
245+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts meta.object.member.ts
246246
^
247-
source.ts meta.class.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
247+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.objectliteral.ts punctuation.definition.block.ts
248248
^
249-
source.ts meta.class.ts meta.array.literal.ts punctuation.separator.comma.ts
249+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts punctuation.separator.comma.ts
250250
^^
251-
source.ts meta.class.ts meta.array.literal.ts
251+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts
252252
> ];
253253
^^^^^^^^^^^^
254-
source.ts meta.class.ts meta.array.literal.ts
254+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts
255255
^
256-
source.ts meta.class.ts meta.array.literal.ts meta.brace.square.ts
256+
source.ts meta.class.ts meta.field.declaration.ts meta.array.literal.ts meta.brace.square.ts
257257
^
258258
source.ts meta.class.ts punctuation.terminator.statement.ts
259259
^^

0 commit comments

Comments
 (0)