@@ -971,15 +971,11 @@ fn merge_text_and_snippet_edits(
971971 snippet_range
972972 } ;
973973
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+ ) )
983979 }
984980
985981 if snippets. peek ( ) . is_some_and ( |( _, range) | {
@@ -1002,31 +998,30 @@ fn merge_text_and_snippet_edits(
1002998 )
1003999 } ) ;
10041000
1005- let mut text_edit = text_edit ( line_index , current_indel) ;
1001+ let mut new_text = current_indel. insert ;
10061002
10071003 // 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"\$" ) ;
10101006
10111007 // ...and apply!
10121008 for ( index, range) in all_snippets. iter ( ) . rev ( ) {
10131009 let start = ( range. start ( ) - new_range. start ( ) ) . into ( ) ;
10141010 let end = ( range. end ( ) - new_range. start ( ) ) . into ( ) ;
10151011
10161012 if range. is_empty ( ) {
1017- text_edit . new_text . insert_str ( start, & format ! ( "${index}" ) ) ;
1013+ new_text. insert_str ( start, & format ! ( "${index}" ) ) ;
10181014 } 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}:" ) ) ;
10211017 }
10221018 }
10231019
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+ ) )
10301025 } else {
10311026 // snippet edit was beyond the current one
10321027 // since it wasn't consumed, it's available for the next pass
@@ -1052,15 +1047,11 @@ fn merge_text_and_snippet_edits(
10521047 snippet_range
10531048 } ;
10541049
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+ )
10641055 } ) ) ;
10651056
10661057 edits
0 commit comments