Skip to content

Commit b898442

Browse files
committed
Stop format highlighting if '{%...%}' is detected.
Detecting this type of matching braces indicates that neither of the python formatting is likely to be used on the string.
1 parent 0d3f9ec commit b898442

File tree

6 files changed

+310
-20
lines changed

6 files changed

+310
-20
lines changed

grammars/MagicPython.cson

Lines changed: 96 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2966,7 +2966,10 @@ repository:
29662966
name: "invalid.illegal.newline.python"
29672967
patterns: [
29682968
{
2969-
include: "#string-single-bad-brace-formatting-raw"
2969+
include: "#string-single-bad-brace1-formatting-raw"
2970+
}
2971+
{
2972+
include: "#string-single-bad-brace2-formatting-raw"
29702973
}
29712974
{
29722975
include: "#string-raw-guts"
@@ -3028,13 +3031,54 @@ repository:
30283031
name: "invalid.illegal.newline.python"
30293032
patterns: [
30303033
{
3031-
include: "#string-single-bad-brace-formatting-unicode"
3034+
include: "#string-single-bad-brace1-formatting-unicode"
3035+
}
3036+
{
3037+
include: "#string-single-bad-brace2-formatting-unicode"
30323038
}
30333039
{
30343040
include: "#string-unicode-guts"
30353041
}
30363042
]
3037-
"string-single-bad-brace-formatting-unicode":
3043+
"string-single-bad-brace1-formatting-unicode":
3044+
comment: "template using {% ... %}"
3045+
begin: '''
3046+
(?x)
3047+
(?= \\{%
3048+
( .*? (?!(['"])|((?<!\\\\)\\n)) )
3049+
%\\}
3050+
)
3051+
3052+
'''
3053+
end: "(?=(['\"])|((?<!\\\\)\\n))"
3054+
patterns: [
3055+
{
3056+
include: "#escape-sequence-unicode"
3057+
}
3058+
{
3059+
include: "#escape-sequence"
3060+
}
3061+
{
3062+
include: "#string-line-continuation"
3063+
}
3064+
]
3065+
"string-single-bad-brace1-formatting-raw":
3066+
comment: "template using {% ... %}"
3067+
begin: '''
3068+
(?x)
3069+
(?= \\{%
3070+
( .*? (?!(['"])|((?<!\\\\)\\n)) )
3071+
%\\}
3072+
)
3073+
3074+
'''
3075+
end: "(?=(['\"])|((?<!\\\\)\\n))"
3076+
patterns: [
3077+
{
3078+
include: "#string-consume-escape"
3079+
}
3080+
]
3081+
"string-single-bad-brace2-formatting-unicode":
30383082
comment: "odd format or format-like syntax"
30393083
begin: '''
30403084
(?x)
@@ -3056,7 +3100,7 @@ repository:
30563100
include: "#string-entity"
30573101
}
30583102
]
3059-
"string-single-bad-brace-formatting-raw":
3103+
"string-single-bad-brace2-formatting-raw":
30603104
comment: "odd format or format-like syntax"
30613105
begin: '''
30623106
(?x)
@@ -3096,7 +3140,10 @@ repository:
30963140
name: "invalid.illegal.newline.python"
30973141
patterns: [
30983142
{
3099-
include: "#string-multi-bad-brace-formatting-raw"
3143+
include: "#string-multi-bad-brace1-formatting-raw"
3144+
}
3145+
{
3146+
include: "#string-multi-bad-brace2-formatting-raw"
31003147
}
31013148
{
31023149
include: "#string-raw-guts"
@@ -3158,13 +3205,54 @@ repository:
31583205
name: "invalid.illegal.newline.python"
31593206
patterns: [
31603207
{
3161-
include: "#string-multi-bad-brace-formatting-unicode"
3208+
include: "#string-multi-bad-brace1-formatting-unicode"
3209+
}
3210+
{
3211+
include: "#string-multi-bad-brace2-formatting-unicode"
31623212
}
31633213
{
31643214
include: "#string-unicode-guts"
31653215
}
31663216
]
3167-
"string-multi-bad-brace-formatting-unicode":
3217+
"string-multi-bad-brace1-formatting-unicode":
3218+
comment: "template using {% ... %}"
3219+
begin: '''
3220+
(?x)
3221+
(?= \\{%
3222+
( .*? (?!\'''|""") )
3223+
%\\}
3224+
)
3225+
3226+
'''
3227+
end: "(?='''|\"\"\")"
3228+
patterns: [
3229+
{
3230+
include: "#escape-sequence-unicode"
3231+
}
3232+
{
3233+
include: "#escape-sequence"
3234+
}
3235+
{
3236+
include: "#string-line-continuation"
3237+
}
3238+
]
3239+
"string-multi-bad-brace1-formatting-raw":
3240+
comment: "template using {% ... %}"
3241+
begin: '''
3242+
(?x)
3243+
(?= \\{%
3244+
( .*? (?!\'''|""") )
3245+
%\\}
3246+
)
3247+
3248+
'''
3249+
end: "(?='''|\"\"\")"
3250+
patterns: [
3251+
{
3252+
include: "#string-consume-escape"
3253+
}
3254+
]
3255+
"string-multi-bad-brace2-formatting-unicode":
31683256
comment: "odd format or format-like syntax"
31693257
begin: '''
31703258
(?x)
@@ -3186,7 +3274,7 @@ repository:
31863274
include: "#string-entity"
31873275
}
31883276
]
3189-
"string-multi-bad-brace-formatting-raw":
3277+
"string-multi-bad-brace2-formatting-raw":
31903278
comment: "odd format or format-like syntax"
31913279
begin: '''
31923280
(?x)

grammars/MagicPython.tmLanguage

Lines changed: 124 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5068,7 +5068,11 @@ indirectly through syntactic constructs
50685068
<array>
50695069
<dict>
50705070
<key>include</key>
5071-
<string>#string-single-bad-brace-formatting-raw</string>
5071+
<string>#string-single-bad-brace1-formatting-raw</string>
5072+
</dict>
5073+
<dict>
5074+
<key>include</key>
5075+
<string>#string-single-bad-brace2-formatting-raw</string>
50725076
</dict>
50735077
<dict>
50745078
<key>include</key>
@@ -5203,15 +5207,69 @@ indirectly through syntactic constructs
52035207
<array>
52045208
<dict>
52055209
<key>include</key>
5206-
<string>#string-single-bad-brace-formatting-unicode</string>
5210+
<string>#string-single-bad-brace1-formatting-unicode</string>
5211+
</dict>
5212+
<dict>
5213+
<key>include</key>
5214+
<string>#string-single-bad-brace2-formatting-unicode</string>
52075215
</dict>
52085216
<dict>
52095217
<key>include</key>
52105218
<string>#string-unicode-guts</string>
52115219
</dict>
52125220
</array>
52135221
</dict>
5214-
<key>string-single-bad-brace-formatting-unicode</key>
5222+
<key>string-single-bad-brace1-formatting-unicode</key>
5223+
<dict>
5224+
<key>comment</key>
5225+
<string>template using {% ... %}</string>
5226+
<key>begin</key>
5227+
<string>(?x)
5228+
(?= \{%
5229+
( .*? (?!([&apos;&quot;])|((?&lt;!\\)\n)) )
5230+
%\}
5231+
)
5232+
</string>
5233+
<key>end</key>
5234+
<string>(?=([&apos;&quot;])|((?&lt;!\\)\n))</string>
5235+
<key>patterns</key>
5236+
<array>
5237+
<dict>
5238+
<key>include</key>
5239+
<string>#escape-sequence-unicode</string>
5240+
</dict>
5241+
<dict>
5242+
<key>include</key>
5243+
<string>#escape-sequence</string>
5244+
</dict>
5245+
<dict>
5246+
<key>include</key>
5247+
<string>#string-line-continuation</string>
5248+
</dict>
5249+
</array>
5250+
</dict>
5251+
<key>string-single-bad-brace1-formatting-raw</key>
5252+
<dict>
5253+
<key>comment</key>
5254+
<string>template using {% ... %}</string>
5255+
<key>begin</key>
5256+
<string>(?x)
5257+
(?= \{%
5258+
( .*? (?!([&apos;&quot;])|((?&lt;!\\)\n)) )
5259+
%\}
5260+
)
5261+
</string>
5262+
<key>end</key>
5263+
<string>(?=([&apos;&quot;])|((?&lt;!\\)\n))</string>
5264+
<key>patterns</key>
5265+
<array>
5266+
<dict>
5267+
<key>include</key>
5268+
<string>#string-consume-escape</string>
5269+
</dict>
5270+
</array>
5271+
</dict>
5272+
<key>string-single-bad-brace2-formatting-unicode</key>
52155273
<dict>
52165274
<key>comment</key>
52175275
<string>odd format or format-like syntax</string>
@@ -5239,7 +5297,7 @@ indirectly through syntactic constructs
52395297
</dict>
52405298
</array>
52415299
</dict>
5242-
<key>string-single-bad-brace-formatting-raw</key>
5300+
<key>string-single-bad-brace2-formatting-raw</key>
52435301
<dict>
52445302
<key>comment</key>
52455303
<string>odd format or format-like syntax</string>
@@ -5310,7 +5368,11 @@ indirectly through syntactic constructs
53105368
<array>
53115369
<dict>
53125370
<key>include</key>
5313-
<string>#string-multi-bad-brace-formatting-raw</string>
5371+
<string>#string-multi-bad-brace1-formatting-raw</string>
5372+
</dict>
5373+
<dict>
5374+
<key>include</key>
5375+
<string>#string-multi-bad-brace2-formatting-raw</string>
53145376
</dict>
53155377
<dict>
53165378
<key>include</key>
@@ -5445,15 +5507,69 @@ indirectly through syntactic constructs
54455507
<array>
54465508
<dict>
54475509
<key>include</key>
5448-
<string>#string-multi-bad-brace-formatting-unicode</string>
5510+
<string>#string-multi-bad-brace1-formatting-unicode</string>
5511+
</dict>
5512+
<dict>
5513+
<key>include</key>
5514+
<string>#string-multi-bad-brace2-formatting-unicode</string>
54495515
</dict>
54505516
<dict>
54515517
<key>include</key>
54525518
<string>#string-unicode-guts</string>
54535519
</dict>
54545520
</array>
54555521
</dict>
5456-
<key>string-multi-bad-brace-formatting-unicode</key>
5522+
<key>string-multi-bad-brace1-formatting-unicode</key>
5523+
<dict>
5524+
<key>comment</key>
5525+
<string>template using {% ... %}</string>
5526+
<key>begin</key>
5527+
<string>(?x)
5528+
(?= \{%
5529+
( .*? (?!&apos;&apos;&apos;|&quot;&quot;&quot;) )
5530+
%\}
5531+
)
5532+
</string>
5533+
<key>end</key>
5534+
<string>(?=&apos;&apos;&apos;|&quot;&quot;&quot;)</string>
5535+
<key>patterns</key>
5536+
<array>
5537+
<dict>
5538+
<key>include</key>
5539+
<string>#escape-sequence-unicode</string>
5540+
</dict>
5541+
<dict>
5542+
<key>include</key>
5543+
<string>#escape-sequence</string>
5544+
</dict>
5545+
<dict>
5546+
<key>include</key>
5547+
<string>#string-line-continuation</string>
5548+
</dict>
5549+
</array>
5550+
</dict>
5551+
<key>string-multi-bad-brace1-formatting-raw</key>
5552+
<dict>
5553+
<key>comment</key>
5554+
<string>template using {% ... %}</string>
5555+
<key>begin</key>
5556+
<string>(?x)
5557+
(?= \{%
5558+
( .*? (?!&apos;&apos;&apos;|&quot;&quot;&quot;) )
5559+
%\}
5560+
)
5561+
</string>
5562+
<key>end</key>
5563+
<string>(?=&apos;&apos;&apos;|&quot;&quot;&quot;)</string>
5564+
<key>patterns</key>
5565+
<array>
5566+
<dict>
5567+
<key>include</key>
5568+
<string>#string-consume-escape</string>
5569+
</dict>
5570+
</array>
5571+
</dict>
5572+
<key>string-multi-bad-brace2-formatting-unicode</key>
54575573
<dict>
54585574
<key>comment</key>
54595575
<string>odd format or format-like syntax</string>
@@ -5481,7 +5597,7 @@ indirectly through syntactic constructs
54815597
</dict>
54825598
</array>
54835599
</dict>
5484-
<key>string-multi-bad-brace-formatting-raw</key>
5600+
<key>string-multi-bad-brace2-formatting-raw</key>
54855601
<dict>
54865602
<key>comment</key>
54875603
<string>odd format or format-like syntax</string>

0 commit comments

Comments
 (0)