File tree Expand file tree Collapse file tree 2 files changed +89
-7
lines changed Expand file tree Collapse file tree 2 files changed +89
-7
lines changed Original file line number Diff line number Diff line change @@ -60,7 +60,7 @@ function! lsp#utils#text_edit#apply_text_edits(uri, text_edits) abort
60
60
set selection = exclusive
61
61
set virtualedit = onemore
62
62
63
- execute l: cmd
63
+ silent execute l: cmd
64
64
finally
65
65
let &paste = l: was_paste
66
66
let &selection = l: was_selection
@@ -158,13 +158,11 @@ function! s:generate_sub_cmd_insert(text_edit) abort
158
158
let l: sub_cmd .= s: generate_move_start_cmd (l: start_line , l: start_character )
159
159
160
160
if l: start_character >= len (getline (l: start_line ))
161
- let l: sub_cmd .= ' a '
161
+ let l: sub_cmd .= " \" =l:merged_text_edit['merged']['newText'] \<CR> p "
162
162
else
163
- let l: sub_cmd .= ' i '
163
+ let l: sub_cmd .= " \" =l:merged_text_edit['merged']['newText'] \<CR> P "
164
164
endif
165
165
166
- let l: sub_cmd .= printf (' %s' , l: new_text )
167
-
168
166
return l: sub_cmd
169
167
endfunction
170
168
@@ -183,8 +181,7 @@ function! s:generate_sub_cmd_replace(text_edit) abort
183
181
if len (l: new_text ) == 0
184
182
let l: sub_cmd .= ' x'
185
183
else
186
- let l: sub_cmd .= ' c'
187
- let l: sub_cmd .= printf (' %s' , l: new_text ) " change text
184
+ let l: sub_cmd .= " \" =l:merged_text_edit['merged']['newText']\<CR> p"
188
185
endif
189
186
190
187
return l: sub_cmd
Original file line number Diff line number Diff line change @@ -115,6 +115,91 @@ Describe lsp#utils#text_edit
115
115
let l:buffer_text = s:get_text()
116
116
Assert Equals(l:buffer_text, ['foo', 'ar', ''])
117
117
End
118
+
119
+ It preserves v:completed_item
120
+ " Add some text to buffer
121
+ call s:set_text(['foo', 'bar'])
122
+
123
+ " Go to end of file and invoke completion
124
+ execute "normal Gof\<C-p>\<Esc>"
125
+
126
+ " Make sure that v:completed_item is set
127
+ Assert Equals(v:completed_item["word"], "foo")
128
+ let l:old_completed_item = v:completed_item
129
+
130
+ " Perform some text edits
131
+
132
+ " Insert
133
+ call lsp#utils#text_edit#apply_text_edits(
134
+ \ expand('%'),
135
+ \ [{
136
+ \ 'range': {
137
+ \ 'start': {
138
+ \ 'line': 1,
139
+ \ 'character': 1
140
+ \ },
141
+ \ 'end': {
142
+ \ 'line': 1,
143
+ \ 'character': 1
144
+ \ }
145
+ \ },
146
+ \ 'newText': 'baz'
147
+ \ }])
148
+
149
+ " Insert empty
150
+ call lsp#utils#text_edit#apply_text_edits(
151
+ \ expand('%'),
152
+ \ [{
153
+ \ 'range': {
154
+ \ 'start': {
155
+ \ 'line': 1,
156
+ \ 'character': 1
157
+ \ },
158
+ \ 'end': {
159
+ \ 'line': 1,
160
+ \ 'character': 1
161
+ \ }
162
+ \ },
163
+ \ 'newText': ''
164
+ \ }])
165
+
166
+ " Replace
167
+ call lsp#utils#text_edit#apply_text_edits(
168
+ \ expand('%'),
169
+ \ [{
170
+ \ 'range': {
171
+ \ 'start': {
172
+ \ 'line': 1,
173
+ \ 'character': 0
174
+ \ },
175
+ \ 'end': {
176
+ \ 'line': 1,
177
+ \ 'character': 1
178
+ \ }
179
+ \ },
180
+ \ 'newText': 'replaced'
181
+ \ }])
182
+
183
+ " Delete
184
+ call lsp#utils#text_edit#apply_text_edits(
185
+ \ expand('%'),
186
+ \ [{
187
+ \ 'range': {
188
+ \ 'start': {
189
+ \ 'line': 1,
190
+ \ 'character': 0
191
+ \ },
192
+ \ 'end': {
193
+ \ 'line': 1,
194
+ \ 'character': 1
195
+ \ }
196
+ \ },
197
+ \ 'newText': ''
198
+ \ }])
199
+
200
+ " Make sure v:completed_item is not changed
201
+ Assert Equals(v:completed_item, l:old_completed_item)
202
+ End
118
203
End
119
204
End
120
205
You can’t perform that action at this time.
0 commit comments