@@ -971,15 +971,11 @@ fn merge_text_and_snippet_edits(
971
971
snippet_range
972
972
} ;
973
973
974
- let range = range ( line_index, snippet_range) ;
975
- let new_text = format ! ( "${snippet_index}" ) ;
976
-
977
- edits. push ( SnippetTextEdit {
978
- range,
979
- new_text,
980
- insert_text_format : Some ( lsp_types:: InsertTextFormat :: SNIPPET ) ,
981
- annotation_id : None ,
982
- } )
974
+ edits. push ( snippet_text_edit (
975
+ line_index,
976
+ true ,
977
+ Indel { insert : format ! ( "${snippet_index}" ) , delete : snippet_range } ,
978
+ ) )
983
979
}
984
980
985
981
if snippets. peek ( ) . is_some_and ( |( _, range) | {
@@ -1002,31 +998,30 @@ fn merge_text_and_snippet_edits(
1002
998
)
1003
999
} ) ;
1004
1000
1005
- let mut text_edit = text_edit ( line_index , current_indel) ;
1001
+ let mut new_text = current_indel. insert ;
1006
1002
1007
1003
// escape out snippet text
1008
- stdx:: replace ( & mut text_edit . new_text , '\\' , r"\\" ) ;
1009
- stdx:: replace ( & mut text_edit . new_text , '$' , r"\$" ) ;
1004
+ stdx:: replace ( & mut new_text, '\\' , r"\\" ) ;
1005
+ stdx:: replace ( & mut new_text, '$' , r"\$" ) ;
1010
1006
1011
1007
// ...and apply!
1012
1008
for ( index, range) in all_snippets. iter ( ) . rev ( ) {
1013
1009
let start = ( range. start ( ) - new_range. start ( ) ) . into ( ) ;
1014
1010
let end = ( range. end ( ) - new_range. start ( ) ) . into ( ) ;
1015
1011
1016
1012
if range. is_empty ( ) {
1017
- text_edit . new_text . insert_str ( start, & format ! ( "${index}" ) ) ;
1013
+ new_text. insert_str ( start, & format ! ( "${index}" ) ) ;
1018
1014
} else {
1019
- text_edit . new_text . insert ( end, '}' ) ;
1020
- text_edit . new_text . insert_str ( start, & format ! ( "${{{index}:" ) ) ;
1015
+ new_text. insert ( end, '}' ) ;
1016
+ new_text. insert_str ( start, & format ! ( "${{{index}:" ) ) ;
1021
1017
}
1022
1018
}
1023
1019
1024
- edits. push ( SnippetTextEdit {
1025
- range : text_edit. range ,
1026
- new_text : text_edit. new_text ,
1027
- insert_text_format : Some ( lsp_types:: InsertTextFormat :: SNIPPET ) ,
1028
- annotation_id : None ,
1029
- } )
1020
+ edits. push ( snippet_text_edit (
1021
+ line_index,
1022
+ true ,
1023
+ Indel { insert : new_text, delete : current_indel. delete } ,
1024
+ ) )
1030
1025
} else {
1031
1026
// snippet edit was beyond the current one
1032
1027
// since it wasn't consumed, it's available for the next pass
@@ -1052,15 +1047,11 @@ fn merge_text_and_snippet_edits(
1052
1047
snippet_range
1053
1048
} ;
1054
1049
1055
- let range = range ( line_index, snippet_range) ;
1056
- let new_text = format ! ( "${snippet_index}" ) ;
1057
-
1058
- SnippetTextEdit {
1059
- range,
1060
- new_text,
1061
- insert_text_format : Some ( lsp_types:: InsertTextFormat :: SNIPPET ) ,
1062
- annotation_id : None ,
1063
- }
1050
+ snippet_text_edit (
1051
+ line_index,
1052
+ true ,
1053
+ Indel { insert : format ! ( "${snippet_index}" ) , delete : snippet_range } ,
1054
+ )
1064
1055
} ) ) ;
1065
1056
1066
1057
edits
0 commit comments