on master help sign in
Rebase cleanup/fixes and use lsp::CompletionItem in item_to_transaction directly
commit2a512f7c487f0a707a7eb158e24bd478433bcd91 authorPhilipp Mildenberger <philipp@mildenberger.me> dateThu 18 May 2023, 22:24 (3 years ago) parentf8fa0d8
3 files changed+9−10
helix-lsp/src/lib.rs+1−1 helix-term/src/commands.rs+1−1 helix-term/src/ui/completion.rs+7−8
helix-lsp/src/lib.rs+1−1
@@ -682,7 +682,7 @@ impl Registry {
682682
683683 /// 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,
684684 /// as it could be that language servers of these documents were stopped by this method.
685− /// See [helix_view::editor::Editor::refresh_language_servers]
685+ /// See helix_view::editor::Editor::refresh_language_servers
686686 pub fn restart(
687687 &mut self,
688688 language_config: &LanguageConfiguration,
helix-term/src/commands.rs+1−1
@@ -4242,7 +4242,7 @@ pub fn completion(cx: &mut Context) {
42424242 .map(|language_server| {
42434243 let language_server_id = language_server.id();
42444244 let offset_encoding = language_server.offset_encoding();
4245− let pos = pos_to_lsp_pos(doc.text(), cursor, offset_encoding);
4245+ let pos = pos_to_lsp_pos(&text, cursor, offset_encoding);
42464246 let doc_id = doc.identifier();
42474247 let completion_request = language_server.completion(doc_id, pos, None).unwrap();
42484248
helix-term/src/ui/completion.rs+7−8
@@ -119,7 +119,7 @@ impl Completion {
119119 fn item_to_transaction(
120120 doc: &Document,
121121 view_id: ViewId,
122− item: &CompletionItem,
122+ item: &lsp::CompletionItem,
123123 offset_encoding: OffsetEncoding,
124124 trigger_offset: usize,
125125 include_placeholder: bool,
@@ -130,7 +130,7 @@ impl Completion {
130130 let text = doc.text().slice(..);
131131 let primary_cursor = selection.primary().cursor(text);
132132
133− let (edit_offset, new_text) = if let Some(edit) = &item.item.text_edit {
133+ let (edit_offset, new_text) = if let Some(edit) = &item.text_edit {
134134 let edit = match edit {
135135 lsp::CompletionTextEdit::Edit(edit) => edit.clone(),
136136 lsp::CompletionTextEdit::InsertAndReplace(item) => {
@@ -153,10 +153,9 @@ impl Completion {
153153 (Some((start_offset, end_offset)), edit.new_text)
154154 } else {
155155 let new_text = item
156− .item
157156 .insert_text
158157 .clone()
159− .unwrap_or_else(|| item.item.label.clone());
158+ .unwrap_or_else(|| item.label.clone());
160159 // check that we are still at the correct savepoint
161160 // we can still generate a transaction regardless but if the
162161 // document changed (and not just the selection) then we will
@@ -165,9 +164,9 @@ impl Completion {
165164 (None, new_text)
166165 };
167166
168− if matches!(item.item.kind, Some(lsp::CompletionItemKind::SNIPPET))
167+ if matches!(item.kind, Some(lsp::CompletionItemKind::SNIPPET))
169168 || matches!(
170− item.item.insert_text_format,
169+ item.insert_text_format,
171170 Some(lsp::InsertTextFormat::SNIPPET)
172171 )
173172 {
@@ -256,7 +255,7 @@ impl Completion {
256255 let transaction = item_to_transaction(
257256 doc,
258257 view.id,
259− item,
258+ &item.item,
260259 language_server!(item).offset_encoding(),
261260 trigger_offset,
262261 true,
@@ -294,7 +293,7 @@ impl Completion {
294293 let transaction = item_to_transaction(
295294 doc,
296295 view.id,
297− &item,
296+ &item.item,
298297 offset_encoding,
299298 trigger_offset,
300299 false,