on master help sign in
Remove offset_encoding in CompletionItem
1d5d5daPhilipp Mildenberger
helix-term/src/commands.rs−1
@@ -4269,7 +4269,6 @@ pub fn completion(cx: &mut Context) {
4269 .map(|item| CompletionItem {
4269 .map(|item| CompletionItem {
4270 item,
4270 item,
4271 language_server_id,
4271 language_server_id,
4272− offset_encoding,
4273 resolved: false,
4272 resolved: false,
4274 })
4273 })
4275 .collect();
4274 .collect();
helix-term/src/ui/completion.rs+24−7
@@ -88,7 +88,6 @@ impl menu::Item for CompletionItem {
88pub struct CompletionItem {
88pub struct CompletionItem {
89 pub item: lsp::CompletionItem,
89 pub item: lsp::CompletionItem,
90 pub language_server_id: usize,
90 pub language_server_id: usize,
91− pub offset_encoding: OffsetEncoding,
92 pub resolved: bool,
91 pub resolved: bool,
93}
92}
94
93
@@ -121,6 +120,7 @@ impl Completion {
121 doc: &Document,
120 doc: &Document,
122 view_id: ViewId,
121 view_id: ViewId,
123 item: &CompletionItem,
122 item: &CompletionItem,
123+ offset_encoding: OffsetEncoding,
124 trigger_offset: usize,
124 trigger_offset: usize,
125 include_placeholder: bool,
125 include_placeholder: bool,
126 replace_mode: bool,
126 replace_mode: bool,
@@ -143,8 +143,6 @@ impl Completion {
143 }
143 }
144 };
144 };
145
145
146− let offset_encoding = item.offset_encoding;
147−
148 let Some(range) = util::lsp_range_to_range(doc.text(), edit.range, offset_encoding) else{
146 let Some(range) = util::lsp_range_to_range(doc.text(), edit.range, offset_encoding) else{
149 return Transaction::new(doc.text());
147 return Transaction::new(doc.text());
150 };
148 };
@@ -238,8 +236,21 @@ impl Completion {
238 // always present here
236 // always present here
239 let item = item.unwrap();
237 let item = item.unwrap();
240
238
239+ let offset_encoding = editor
240+ .language_servers
241+ .get_by_id(item.language_server_id)
242+ .expect("language server disappeared between completion request and application")
243+ .offset_encoding();
244+
241− let transaction =
245+ let transaction = item_to_transaction(
242− item_to_transaction(doc, view.id, item, trigger_offset, true, replace_mode);
246+ doc,
247+ view.id,
248+ item,
249+ offset_encoding,
250+ trigger_offset,
251+ true,
252+ replace_mode,
253+ );
243 doc.apply_temporary(&transaction, view.id);
254 doc.apply_temporary(&transaction, view.id);
244 }
255 }
245 PromptEvent::Validate => {
256 PromptEvent::Validate => {
@@ -251,6 +262,12 @@ impl Completion {
251 // always present here
262 // always present here
252 let mut item = item.unwrap().clone();
263 let mut item = item.unwrap().clone();
253
264
265+ let offset_encoding = editor
266+ .language_servers
267+ .get_by_id(item.language_server_id)
268+ .expect("language server disappeared between completion request and application")
269+ .offset_encoding();
270+
254 let language_server = editor
271 let language_server = editor
255 .language_servers
272 .language_servers
256 .get_by_id(item.language_server_id)
273 .get_by_id(item.language_server_id)
@@ -270,6 +287,7 @@ impl Completion {
270 doc,
287 doc,
271 view.id,
288 view.id,
272 &item,
289 &item,
290+ offset_encoding,
273 trigger_offset,
291 trigger_offset,
274 false,
292 false,
275 replace_mode,
293 replace_mode,
@@ -287,7 +305,7 @@ impl Completion {
287 let transaction = util::generate_transaction_from_edits(
305 let transaction = util::generate_transaction_from_edits(
288 doc.text(),
306 doc.text(),
289 additional_edits,
307 additional_edits,
290− item.offset_encoding, // TODO: should probably transcode in Client
308+ offset_encoding, // TODO: should probably transcode in Client
291 );
309 );
292 doc.apply(&transaction, view.id);
310 doc.apply(&transaction, view.id);
293 }
311 }
@@ -414,7 +432,6 @@ impl Completion {
414 let resolved_item = CompletionItem {
432 let resolved_item = CompletionItem {
415 item: resolved_item,
433 item: resolved_item,
416 language_server_id: current_item.language_server_id,
434 language_server_id: current_item.language_server_id,
417− offset_encoding: current_item.offset_encoding,
418 resolved: true,
435 resolved: true,
419 };
436 };
420
437