@@ -162,15 +162,14 @@ endfunction
162
162
function ! s: generate_sub_cmd_insert (text_edit) abort
163
163
let l: start_line = a: text_edit [' range' ][' start' ][' line' ]
164
164
let l: start_character = a: text_edit [' range' ][' start' ][' character' ]
165
- let l: new_text = s: parse (a: text_edit [' newText' ])
166
165
167
166
let l: sub_cmd = s: preprocess_cmd (a: text_edit [' range' ])
168
167
let l: sub_cmd .= s: generate_move_start_cmd (l: start_line , l: start_character )
169
168
170
169
if l: start_character >= strchars (getline (l: start_line ))
171
170
let l: sub_cmd .= " \" =l:merged_text_edit['merged']['newText']\<CR> p"
172
171
else
173
- let l: sub_cmd .= " \" =l:merged_text_edit['merged']['newText']\<CR> P "
172
+ let l: sub_cmd .= " \" =l:merged_text_edit['merged']['newText'].'?' \<CR> gPh \" _x "
174
173
endif
175
174
176
175
return l: sub_cmd
@@ -181,7 +180,7 @@ function! s:generate_sub_cmd_replace(text_edit) abort
181
180
let l: start_character = a: text_edit [' range' ][' start' ][' character' ]
182
181
let l: end_line = a: text_edit [' range' ][' end' ][' line' ]
183
182
let l: end_character = a: text_edit [' range' ][' end' ][' character' ]
184
- let l: new_text = substitute ( a: text_edit [' newText' ], ' \n$ ' , ' ' , ' ' )
183
+ let l: new_text = a: text_edit [' newText' ]
185
184
186
185
let l: sub_cmd = s: preprocess_cmd (a: text_edit [' range' ])
187
186
let l: sub_cmd .= s: generate_move_start_cmd (l: start_line , l: start_character ) " move to the first position
@@ -199,8 +198,10 @@ function! s:generate_sub_cmd_replace(text_edit) abort
199
198
200
199
if len (l: new_text ) == 0
201
200
let l: sub_cmd .= ' x'
202
- else
201
+ elseif l: start_character == 0 && l: end_character == 0
203
202
let l: sub_cmd .= " \" =l:merged_text_edit['merged']['newText']\<CR> p"
203
+ else
204
+ let l: sub_cmd .= " \" =l:merged_text_edit['merged']['newText'].'?'\<CR> gph\" _x"
204
205
endif
205
206
206
207
return l: sub_cmd
@@ -224,11 +225,6 @@ function! s:generate_move_end_cmd(line_pos, character_pos) abort
224
225
return l: result
225
226
endfunction
226
227
227
- function ! s: parse (text) abort
228
- " https://stackoverflow.com/questions/71417/why-is-r-a-newline-for-vim
229
- return substitute (a: text , ' \(^\n|\n$\|\r\n\)' , ' \r' , ' g' )
230
- endfunction
231
-
232
228
function ! s: preprocess_cmd (range ) abort
233
229
" preprocess by opening the folds, this is needed because the line you are
234
230
" going might have a folding
0 commit comments