on master help sign in
Remove offset_encoding in CompletionItem
commit1d5d5dab4718b9db40a20037c1cb1edf66f7991a authorPhilipp Mildenberger <philipp@mildenberger.me> dateMon 20 Mar 2023, 00:02 (4 years ago) parent2eeac10
2 files changed+24−8
helix-term/src/commands.rs−1 helix-term/src/ui/completion.rs+24−7
helix-term/src/commands.rs−1
@@ -4269,7 +4269,6 @@ pub fn completion(cx: &mut Context) {
42694269 .map(|item| CompletionItem {
42704270 item,
42714271 language_server_id,
4272− offset_encoding,
42734272 resolved: false,
42744273 })
42754274 .collect();
helix-term/src/ui/completion.rs+24−7
@@ -88,7 +88,6 @@ impl menu::Item for CompletionItem {
8888pub struct CompletionItem {
8989 pub item: lsp::CompletionItem,
9090 pub language_server_id: usize,
91− pub offset_encoding: OffsetEncoding,
9291 pub resolved: bool,
9392}
9493
@@ -121,6 +120,7 @@ impl Completion {
121120 doc: &Document,
122121 view_id: ViewId,
123122 item: &CompletionItem,
123+ offset_encoding: OffsetEncoding,
124124 trigger_offset: usize,
125125 include_placeholder: bool,
126126 replace_mode: bool,
@@ -143,8 +143,6 @@ impl Completion {
143143 }
144144 };
145145
146− let offset_encoding = item.offset_encoding;
147−
148146 let Some(range) = util::lsp_range_to_range(doc.text(), edit.range, offset_encoding) else{
149147 return Transaction::new(doc.text());
150148 };
@@ -238,8 +236,21 @@ impl Completion {
238236 // always present here
239237 let item = item.unwrap();
240238
241− let transaction =
242− item_to_transaction(doc, view.id, item, trigger_offset, true, replace_mode);
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+
245+ let transaction = item_to_transaction(
246+ doc,
247+ view.id,
248+ item,
249+ offset_encoding,
250+ trigger_offset,
251+ true,
252+ replace_mode,
253+ );
243254 doc.apply_temporary(&transaction, view.id);
244255 }
245256 PromptEvent::Validate => {
@@ -251,6 +262,12 @@ impl Completion {
251262 // always present here
252263 let mut item = item.unwrap().clone();
253264
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+
254271 let language_server = editor
255272 .language_servers
256273 .get_by_id(item.language_server_id)
@@ -270,6 +287,7 @@ impl Completion {
270287 doc,
271288 view.id,
272289 &item,
290+ offset_encoding,
273291 trigger_offset,
274292 false,
275293 replace_mode,
@@ -287,7 +305,7 @@ impl Completion {
287305 let transaction = util::generate_transaction_from_edits(
288306 doc.text(),
289307 additional_edits,
290− item.offset_encoding, // TODO: should probably transcode in Client
308+ offset_encoding, // TODO: should probably transcode in Client
291309 );
292310 doc.apply(&transaction, view.id);
293311 }
@@ -414,7 +432,6 @@ impl Completion {
414432 let resolved_item = CompletionItem {
415433 item: resolved_item,
416434 language_server_id: current_item.language_server_id,
417− offset_encoding: current_item.offset_encoding,
418435 resolved: true,
419436 };
420437