Skip to content

Commit 1babbb7

Browse files
committed
improve raw strings
1 parent 47e2807 commit 1babbb7

8 files changed

+90
-64
lines changed

autogenerated/cpp.embedded.macro.tmLanguage.json

+1-1
Large diffs are not rendered by default.

autogenerated/cpp.tmLanguage.json

+29-7
Original file line numberDiff line numberDiff line change
@@ -14337,11 +14337,33 @@
1433714337
}
1433814338
]
1433914339
},
14340+
{
14341+
"begin": "((?:[uUL]8?)?R)\\\"\\(",
14342+
"end": "\\)\\\"",
14343+
"beginCaptures": {
14344+
"0": {
14345+
"name": "punctuation.definition.string.begin.cpp"
14346+
},
14347+
"1": {
14348+
"name": "meta.encoding.cpp"
14349+
}
14350+
},
14351+
"endCaptures": {
14352+
"0": {
14353+
"name": "punctuation.definition.string.end.cpp"
14354+
}
14355+
},
14356+
"name": "string.quoted.double.raw.cpp",
14357+
"patterns": [
14358+
{
14359+
}
14360+
]
14361+
},
1434014362
{
1434114363
"begin": "((?:u|u8|U|L)?R)\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(",
1434214364
"beginCaptures": {
1434314365
"0": {
14344-
"name": "punctuation.definition.string.begin"
14366+
"name": "punctuation.definition.string.$2.begin"
1434514367
},
1434614368
"1": {
1434714369
"name": "meta.encoding"
@@ -14350,22 +14372,22 @@
1435014372
"name": "invalid.illegal.delimiter-too-long"
1435114373
}
1435214374
},
14353-
"end": "(\\)\\2(\\3)\")(?:((?:[a-zA-Z]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)|(_(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?",
14375+
"end": "(\\)(\\2)(\\3)\")(?:((?:[a-zA-Z]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)|(_(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?",
1435414376
"endCaptures": {
1435514377
"1": {
14356-
"name": "punctuation.definition.string.end"
14378+
"name": "punctuation.definition.string.$2.end"
1435714379
},
14358-
"2": {
14380+
"3": {
1435914381
"name": "invalid.illegal.delimiter-too-long"
1436014382
},
14361-
"3": {
14383+
"4": {
1436214384
"name": "keyword.other.suffix.literal.user-defined.reserved.string.cpp"
1436314385
},
14364-
"4": {
14386+
"5": {
1436514387
"name": "keyword.other.suffix.literal.user-defined.string.cpp"
1436614388
}
1436714389
},
14368-
"name": "string.quoted.double.raw"
14390+
"name": "string.quoted.double.raw.$2"
1436914391
}
1437014392
]
1437114393
},

autogenerated/cpp_scopes.txt

+4-3
Original file line numberDiff line numberDiff line change
@@ -287,10 +287,10 @@ punctuation.definition.parameters.begin.lambda.cpp
287287
punctuation.definition.parameters.begin.preprocessor.cpp
288288
punctuation.definition.parameters.end.lambda.cpp
289289
punctuation.definition.parameters.end.preprocessor.cpp
290-
punctuation.definition.string.begin
290+
punctuation.definition.string.$2.begin
291+
punctuation.definition.string.$2.end
291292
punctuation.definition.string.begin.assembly.cpp
292293
punctuation.definition.string.begin.cpp
293-
punctuation.definition.string.end
294294
punctuation.definition.string.end.assembly.cpp
295295
punctuation.definition.string.end.cpp
296296
punctuation.section.angle-brackets.begin.template.call.cpp
@@ -464,7 +464,8 @@ storage.type.union.declare.cpp
464464
storage.type.union.parameter.cpp
465465
string.quoted.double.cpp
466466
string.quoted.double.include.cpp
467-
string.quoted.double.raw
467+
string.quoted.double.raw.$2
468+
string.quoted.double.raw.cpp
468469
string.quoted.double.raw.regex.cpp
469470
string.quoted.other.lt-gt.include.cpp
470471
string.quoted.single.cpp

language_examples/#610.spec.yaml

+5-5
Original file line numberDiff line numberDiff line change
@@ -382,22 +382,22 @@
382382
- keyword.operator.assignment
383383
- source: LR
384384
scopesBegin:
385-
- string.quoted.double.raw
386-
- punctuation.definition.string.begin
385+
- string.quoted.double.raw.--
386+
- punctuation.definition.string.--.begin
387387
scopes:
388388
- meta.encoding
389389
- source: '"--('
390390
scopesEnd:
391-
- punctuation.definition.string.begin
391+
- punctuation.definition.string.--.begin
392392
- source: rws
393393
- source: )--"
394394
scopes:
395-
- punctuation.definition.string.end
395+
- punctuation.definition.string.--.end
396396
- source: _wrap
397397
scopes:
398398
- keyword.other.suffix.literal.user-defined.string
399399
scopesEnd:
400-
- string.quoted.double.raw
400+
- string.quoted.double.raw.--
401401
- source: ;
402402
scopes:
403403
- punctuation.terminator.statement

language_examples/feature_tagged_strings.spec.yaml

+15-15
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@
88
- keyword.operator.assignment
99
- source: R
1010
scopesBegin:
11-
- string.quoted.double.raw
12-
- punctuation.definition.string.begin
11+
- string.quoted.double.raw._r
12+
- punctuation.definition.string._r.begin
1313
scopes:
1414
- meta.encoding
1515
- source: '"_r('
1616
scopesEnd:
17-
- punctuation.definition.string.begin
17+
- punctuation.definition.string._r.begin
1818
- source: '[0-9''"\+]+'
1919
- source: )_r"
2020
scopes:
21-
- punctuation.definition.string.end
21+
- punctuation.definition.string._r.end
2222
scopesEnd:
23-
- string.quoted.double.raw
23+
- string.quoted.double.raw._r
2424
- source: ;
2525
scopes:
2626
- punctuation.terminator.statement
@@ -34,19 +34,19 @@
3434
- keyword.operator.assignment
3535
- source: R
3636
scopesBegin:
37-
- string.quoted.double.raw
38-
- punctuation.definition.string.begin
37+
- string.quoted.double.raw.re
38+
- punctuation.definition.string.re.begin
3939
scopes:
4040
- meta.encoding
4141
- source: '"re('
4242
scopesEnd:
43-
- punctuation.definition.string.begin
43+
- punctuation.definition.string.re.begin
4444
- source: '[0-9''"\+]+'
4545
- source: )re"
4646
scopes:
47-
- punctuation.definition.string.end
47+
- punctuation.definition.string.re.end
4848
scopesEnd:
49-
- string.quoted.double.raw
49+
- string.quoted.double.raw.re
5050
- source: ;
5151
scopes:
5252
- punctuation.terminator.statement
@@ -60,19 +60,19 @@
6060
- keyword.operator.assignment
6161
- source: R
6262
scopesBegin:
63-
- string.quoted.double.raw
64-
- punctuation.definition.string.begin
63+
- string.quoted.double.raw.regex
64+
- punctuation.definition.string.regex.begin
6565
scopes:
6666
- meta.encoding
6767
- source: '"regex('
6868
scopesEnd:
69-
- punctuation.definition.string.begin
69+
- punctuation.definition.string.regex.begin
7070
- source: '[0-9''"\+]+'
7171
- source: )regex"
7272
scopes:
73-
- punctuation.definition.string.end
73+
- punctuation.definition.string.regex.end
7474
scopesEnd:
75-
- string.quoted.double.raw
75+
- string.quoted.double.raw.regex
7676
- source: ;
7777
scopes:
7878
- punctuation.terminator.statement

language_examples/ranged_for.spec.yaml

+10-10
Original file line numberDiff line numberDiff line change
@@ -62545,13 +62545,13 @@
6254562545
- keyword.operator.assignment
6254662546
- source: R
6254762547
scopesBegin:
62548-
- string.quoted.double.raw
62549-
- punctuation.definition.string.begin
62548+
- string.quoted.double.raw.s
62549+
- punctuation.definition.string.s.begin
6255062550
scopes:
6255162551
- meta.encoding
6255262552
- source: '"s('
6255362553
scopesEnd:
62554-
- punctuation.definition.string.begin
62554+
- punctuation.definition.string.s.begin
6255562555
- source: ' Returns a list if the [extended POSIX regular'
6255662556
- source: ' expression](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04)'
6255762557
- source: ' *regex* matches *str* precisely, otherwise returns `null`. Each item'
@@ -62574,9 +62574,9 @@
6257462574
- source: ' Evaluates to `[ "FOO" ]`.'
6257562575
- source: )s"
6257662576
scopes:
62577-
- punctuation.definition.string.end
62577+
- punctuation.definition.string.s.end
6257862578
scopesEnd:
62579-
- string.quoted.double.raw
62579+
- string.quoted.double.raw.s
6258062580
- source: ','
6258162581
scopes:
6258262582
- punctuation.separator.delimiter.comma
@@ -64293,13 +64293,13 @@
6429364293
- keyword.operator.assignment
6429464294
- source: R
6429564295
scopesBegin:
64296-
- string.quoted.double.raw
64297-
- punctuation.definition.string.begin
64296+
- string.quoted.double.raw.s
64297+
- punctuation.definition.string.s.begin
6429864298
scopes:
6429964299
- meta.encoding
6430064300
- source: '"s('
6430164301
scopesEnd:
64302-
- punctuation.definition.string.begin
64302+
- punctuation.definition.string.s.begin
6430364303
- source: ' Returns a list composed of non matched strings interleaved with the'
6430464304
- source: ' lists of the [extended POSIX regular'
6430564305
- source: ' expression](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04)'
@@ -64323,9 +64323,9 @@
6432364323
- source: ' Evaluates to `[ " " [ "FOO" ] " " ]`.'
6432464324
- source: )s"
6432564325
scopes:
64326-
- punctuation.definition.string.end
64326+
- punctuation.definition.string.s.end
6432764327
scopesEnd:
64328-
- string.quoted.double.raw
64328+
- string.quoted.double.raw.s
6432964329
- source: ','
6433064330
scopes:
6433164331
- punctuation.separator.delimiter.comma

language_examples/raw_strings.spec.yaml

+15-15
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@
3838
- punctuation.section.block.begin.bracket.curly
3939
- source: R
4040
scopesBegin:
41-
- string.quoted.double.raw
42-
- punctuation.definition.string.begin
41+
- string.quoted.double.raw.glsl
42+
- punctuation.definition.string.glsl.begin
4343
scopes:
4444
- meta.encoding
4545
- source: '"glsl('
4646
scopesEnd:
47-
- punctuation.definition.string.begin
47+
- punctuation.definition.string.glsl.begin
4848
- source: ' precision highp float;'
4949
- source: ' attribute vec2 vPosition;'
5050
- source: ' attribute vec3 textureCoord;'
@@ -56,9 +56,9 @@
5656
- source: ' }'
5757
- source: )glsl"
5858
scopes:
59-
- punctuation.definition.string.end
59+
- punctuation.definition.string.glsl.end
6060
scopesEnd:
61-
- string.quoted.double.raw
61+
- string.quoted.double.raw.glsl
6262
- source: '}'
6363
scopes:
6464
- punctuation.section.block.end.bracket.curly
@@ -82,19 +82,19 @@
8282
- punctuation.section.block.begin.bracket.curly
8383
- source: R
8484
scopesBegin:
85-
- string.quoted.double.raw
86-
- punctuation.definition.string.begin
85+
- string.quoted.double.raw.sql
86+
- punctuation.definition.string.sql.begin
8787
scopes:
8888
- meta.encoding
8989
- source: '"sql('
9090
scopesEnd:
91-
- punctuation.definition.string.begin
91+
- punctuation.definition.string.sql.begin
9292
- source: ' select a, b, c from someTable where a > 10 order by a asc'
9393
- source: )sql"
9494
scopes:
95-
- punctuation.definition.string.end
95+
- punctuation.definition.string.sql.end
9696
scopesEnd:
97-
- string.quoted.double.raw
97+
- string.quoted.double.raw.sql
9898
- source: '}'
9999
scopes:
100100
- punctuation.section.block.end.bracket.curly
@@ -118,19 +118,19 @@
118118
- punctuation.section.block.begin.bracket.curly
119119
- source: R
120120
scopesBegin:
121-
- string.quoted.double.raw
122-
- punctuation.definition.string.begin
121+
- string.quoted.double.raw.re
122+
- punctuation.definition.string.re.begin
123123
scopes:
124124
- meta.encoding
125125
- source: '"re('
126126
scopesEnd:
127-
- punctuation.definition.string.begin
127+
- punctuation.definition.string.re.begin
128128
- source: ' ((?:[uUL]8?)?R)\\\"(?:(?:_r|re)|regex)\\()'
129129
- source: )re"
130130
scopes:
131-
- punctuation.definition.string.end
131+
- punctuation.definition.string.re.end
132132
scopesEnd:
133-
- string.quoted.double.raw
133+
- string.quoted.double.raw.re
134134
- source: '}'
135135
scopes:
136136
- punctuation.section.block.end.bracket.curly

main/patterns/raw_strings.rb

+11-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ def generateTaggedRawString(name, tag_pattern, inner_pattern, tag_as_meta:false)
33
# (because they're part of another language or syntax)
44
meta = ""
55
meta = "meta." if tag_as_meta
6+
name = ".#{name}" if name
67
return PatternRange.new(
78
start_pattern: Pattern.new(
89
match: Pattern.new(
@@ -15,7 +16,7 @@ def generateTaggedRawString(name, tag_pattern, inner_pattern, tag_as_meta:false)
1516
match: Pattern.new(")").then(tag_pattern).then(/\"/),
1617
tag_as: "punctuation.definition.string.end"
1718
),
18-
tag_as: meta+"string.quoted.double.raw.#{name}",
19+
tag_as: meta+"string.quoted.double.raw#{name}",
1920
includes: [
2021
inner_pattern,
2122
]
@@ -28,7 +29,7 @@ def getRawStringPatterns()
2829
begin: "((?:u|u8|U|L)?R)\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(",
2930
beginCaptures: {
3031
"0" => {
31-
name: "punctuation.definition.string.begin"
32+
name: "punctuation.definition.string.$2.begin"
3233
},
3334
"1" => {
3435
name: "meta.encoding"
@@ -37,30 +38,32 @@ def getRawStringPatterns()
3738
name: "invalid.illegal.delimiter-too-long"
3839
}
3940
},
40-
end: "(\\)\\2(\\3)\")(?:((?:[a-zA-Z]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)|(_(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?",
41+
end: "(\\)(\\2)(\\3)\")(?:((?:[a-zA-Z]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)|(_(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?",
4142
endCaptures: {
4243
"1" => {
43-
name: "punctuation.definition.string.end"
44+
name: "punctuation.definition.string.$2.end"
4445
},
45-
"2" => {
46+
"3" => {
4647
name: "invalid.illegal.delimiter-too-long"
4748
},
48-
"3" => {
49+
"4" => {
4950
name: "keyword.other.suffix.literal.user-defined.reserved.string.cpp"
5051
},
51-
"4" => {
52+
"5" => {
5253
name: "keyword.other.suffix.literal.user-defined.string.cpp"
5354
},
5455
},
55-
name: "string.quoted.double.raw"
56+
name: "string.quoted.double.raw.$2"
5657
)
5758
regex = generateTaggedRawString("regex", Pattern.new(/_r/).or(/re/).or(/regex/), "source.regexp.python")
5859
sql = generateTaggedRawString("sql", Pattern.new(/[pP]?(?:sql|SQL)/).or(/d[dm]l/), "source.sql", tag_as_meta: true)
5960
glsl = generateTaggedRawString("glsl", Pattern.new(/glsl/).or(/GLSL/), "source.glsl", tag_as_meta: true)
61+
plain = generateTaggedRawString(nil, Pattern.new(//), "", tag_as_meta: false)
6062
return [
6163
regex,
6264
glsl,
6365
sql,
66+
plain,
6467
default,
6568
]
6669
end

0 commit comments

Comments
 (0)