From 2a512f7c487f0a707a7eb158e24bd478433bcd91 Mon Sep 17 00:00:00 2001 From: Philipp Mildenberger Date: Thu, 18 May 2023 22:24:09 +0200 Subject: [PATCH] Rebase cleanup/fixes and use lsp::CompletionItem in item_to_transaction directly --- helix-lsp/src/lib.rs | 2 +- helix-term/src/commands.rs | 2 +- helix-term/src/ui/completion.rs | 15 +++++++-------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/helix-lsp/src/lib.rs b/helix-lsp/src/lib.rs index 989c5e2f..d053dbf9 100644 --- a/helix-lsp/src/lib.rs +++ b/helix-lsp/src/lib.rs @@ -682,7 +682,7 @@ fn start_client( /// If this method is called, all documents that have a reference to language servers used by the language config have to refresh their language servers, /// as it could be that language servers of these documents were stopped by this method. - /// See [helix_view::editor::Editor::refresh_language_servers] + /// See helix_view::editor::Editor::refresh_language_servers pub fn restart( &mut self, language_config: &LanguageConfiguration, diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 749b0ecf..9859f64b 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -4242,7 +4242,7 @@ pub fn completion(cx: &mut Context) { .map(|language_server| { let language_server_id = language_server.id(); let offset_encoding = language_server.offset_encoding(); - let pos = pos_to_lsp_pos(doc.text(), cursor, offset_encoding); + let pos = pos_to_lsp_pos(&text, cursor, offset_encoding); let doc_id = doc.identifier(); let completion_request = language_server.completion(doc_id, pos, None).unwrap(); diff --git a/helix-term/src/ui/completion.rs b/helix-term/src/ui/completion.rs index eaa63e93..d997e8ae 100644 --- a/helix-term/src/ui/completion.rs +++ b/helix-term/src/ui/completion.rs @@ -119,7 +119,7 @@ pub fn new( fn item_to_transaction( doc: &Document, view_id: ViewId, - item: &CompletionItem, + item: &lsp::CompletionItem, offset_encoding: OffsetEncoding, trigger_offset: usize, include_placeholder: bool, @@ -130,7 +130,7 @@ fn item_to_transaction( let text = doc.text().slice(..); let primary_cursor = selection.primary().cursor(text); - let (edit_offset, new_text) = if let Some(edit) = &item.item.text_edit { + let (edit_offset, new_text) = if let Some(edit) = &item.text_edit { let edit = match edit { lsp::CompletionTextEdit::Edit(edit) => edit.clone(), lsp::CompletionTextEdit::InsertAndReplace(item) => { @@ -153,10 +153,9 @@ fn item_to_transaction( (Some((start_offset, end_offset)), edit.new_text) } else { let new_text = item - .item .insert_text .clone() - .unwrap_or_else(|| item.item.label.clone()); + .unwrap_or_else(|| item.label.clone()); // check that we are still at the correct savepoint // we can still generate a transaction regardless but if the // document changed (and not just the selection) then we will @@ -165,9 +164,9 @@ fn item_to_transaction( (None, new_text) }; - if matches!(item.item.kind, Some(lsp::CompletionItemKind::SNIPPET)) + if matches!(item.kind, Some(lsp::CompletionItemKind::SNIPPET)) || matches!( - item.item.insert_text_format, + item.insert_text_format, Some(lsp::InsertTextFormat::SNIPPET) ) { @@ -256,7 +255,7 @@ macro_rules! language_server { let transaction = item_to_transaction( doc, view.id, - item, + &item.item, language_server!(item).offset_encoding(), trigger_offset, true, @@ -294,7 +293,7 @@ macro_rules! language_server { let transaction = item_to_transaction( doc, view.id, - &item, + &item.item, offset_encoding, trigger_offset, false,