Skip to content

Commit 543d7e9

Browse files
committed
Auto merge of rust-lang#16618 - DropDemBits:structured-snippet-fix-escape-left-curly, r=Veykril
fix: Don't add `\` before `{` Fixes rust-lang#16607 for `{`. The `}` case is already fixed by rust-lang#16475. The [LSP snippet grammar](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#snippet_syntax) only specifies that `$`, `}`, and `\` can be escaped with backslashes, but not `{`.
2 parents 4760d85 + 07421c1 commit 543d7e9

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

crates/rust-analyzer/src/lsp/to_proto.rs

+7-9
Original file line numberDiff line numberDiff line change
@@ -1002,10 +1002,8 @@ fn merge_text_and_snippet_edits(
10021002
let mut new_text = current_indel.insert;
10031003

10041004
// find which snippet bits need to be escaped
1005-
let escape_places = new_text
1006-
.rmatch_indices(['\\', '$', '{', '}'])
1007-
.map(|(insert, _)| insert)
1008-
.collect_vec();
1005+
let escape_places =
1006+
new_text.rmatch_indices(['\\', '$', '}']).map(|(insert, _)| insert).collect_vec();
10091007
let mut escape_places = escape_places.into_iter().peekable();
10101008
let mut escape_prior_bits = |new_text: &mut String, up_to: usize| {
10111009
for before in escape_places.peeking_take_while(|insert| *insert >= up_to) {
@@ -2176,7 +2174,7 @@ fn bar(_: usize) {}
21762174
character: 0,
21772175
},
21782176
},
2179-
new_text: "\\$${1:ab\\{\\}\\$c\\\\d}ef",
2177+
new_text: "\\$${1:ab{\\}\\$c\\\\d}ef",
21802178
insert_text_format: Some(
21812179
Snippet,
21822180
),
@@ -2272,7 +2270,7 @@ struct ProcMacro {
22722270
character: 5,
22732271
},
22742272
},
2275-
new_text: "$0disabled = false;\n ProcMacro \\{\n disabled,\n \\}",
2273+
new_text: "$0disabled = false;\n ProcMacro {\n disabled,\n \\}",
22762274
insert_text_format: Some(
22772275
Snippet,
22782276
),
@@ -2336,7 +2334,7 @@ struct P {
23362334
character: 5,
23372335
},
23382336
},
2339-
new_text: "$0disabled = false;\n ProcMacro \\{\n disabled,\n \\}",
2337+
new_text: "$0disabled = false;\n ProcMacro {\n disabled,\n \\}",
23402338
insert_text_format: Some(
23412339
Snippet,
23422340
),
@@ -2401,7 +2399,7 @@ struct ProcMacro {
24012399
character: 5,
24022400
},
24032401
},
2404-
new_text: "${0:disabled} = false;\n ProcMacro \\{\n disabled,\n \\}",
2402+
new_text: "${0:disabled} = false;\n ProcMacro {\n disabled,\n \\}",
24052403
insert_text_format: Some(
24062404
Snippet,
24072405
),
@@ -2466,7 +2464,7 @@ struct P {
24662464
character: 5,
24672465
},
24682466
},
2469-
new_text: "${0:disabled} = false;\n ProcMacro \\{\n disabled,\n \\}",
2467+
new_text: "${0:disabled} = false;\n ProcMacro {\n disabled,\n \\}",
24702468
insert_text_format: Some(
24712469
Snippet,
24722470
),

0 commit comments

Comments
 (0)