Revert "Use completion item indices instead of property matching when searching for the completion item to resolve"

This reverts commit fa46a9e2b6.
This commit is contained in:
Kirill Bulatov 2024-11-25 23:30:08 +02:00
parent 60c4250430
commit 669bb6cfda
3 changed files with 15 additions and 33 deletions

View file

@ -1068,7 +1068,7 @@ pub(crate) fn handle_completion_resolve(
else {
return Ok(original_completion);
};
let mut resolved_completions = to_proto::completion_items(
let resolved_completions = to_proto::completion_items(
&snap.config,
&forced_resolve_completions_config.fields_to_resolve,
&line_index,
@ -1077,13 +1077,15 @@ pub(crate) fn handle_completion_resolve(
resolve_data.trigger_character,
resolved_completions,
);
let mut resolved_completion =
if resolved_completions.get(resolve_data.completion_item_index).is_some() {
resolved_completions.swap_remove(resolve_data.completion_item_index)
} else {
return Ok(original_completion);
};
let Some(mut resolved_completion) = resolved_completions.into_iter().find(|completion| {
completion.label == original_completion.label
&& completion.kind == original_completion.kind
&& completion.deprecated == original_completion.deprecated
&& completion.preselect == original_completion.preselect
&& completion.sort_text == original_completion.sort_text
}) else {
return Ok(original_completion);
};
if !resolve_data.imports.is_empty() {
let additional_edits = snap

View file

@ -826,7 +826,6 @@ pub struct CompletionResolveData {
pub imports: Vec<CompletionImport>,
pub version: Option<i32>,
pub trigger_character: Option<char>,
pub completion_item_index: usize,
}
#[derive(Debug, Serialize, Deserialize)]

View file

@ -391,36 +391,18 @@ fn completion_item(
} else {
Vec::new()
};
let (ref_resolve_data, resolve_data) = if something_to_resolve || !imports.is_empty() {
let mut item_index = acc.len();
let ref_resolve_data = if ref_match.is_some() {
let ref_resolve_data = lsp_ext::CompletionResolveData {
position: tdpp.clone(),
imports: Vec::new(),
version,
trigger_character: completion_trigger_character,
completion_item_index: item_index,
};
item_index += 1;
Some(to_value(ref_resolve_data).unwrap())
} else {
None
};
let resolve_data = lsp_ext::CompletionResolveData {
if something_to_resolve || !imports.is_empty() {
let data = lsp_ext::CompletionResolveData {
position: tdpp.clone(),
imports,
version,
trigger_character: completion_trigger_character,
completion_item_index: item_index,
};
(ref_resolve_data, Some(to_value(resolve_data).unwrap()))
} else {
(None, None)
};
lsp_item.data = Some(to_value(data).unwrap());
}
if let Some((label, indel, relevance)) = ref_match {
let mut lsp_item_with_ref =
lsp_types::CompletionItem { label, data: ref_resolve_data, ..lsp_item.clone() };
let mut lsp_item_with_ref = lsp_types::CompletionItem { label, ..lsp_item.clone() };
lsp_item_with_ref
.additional_text_edits
.get_or_insert_with(Default::default)
@ -429,7 +411,6 @@ fn completion_item(
acc.push(lsp_item_with_ref);
};
lsp_item.data = resolve_data;
acc.push(lsp_item);
fn set_score(