Refactor Completions to allow non-LSP ones better (#26300)

A preparation for https://github.com/zed-industries/zed/issues/4957 that
pushes all LSP-related data out from the basic completion item, so that
it's possible to create completion items without any trace of LSP
clearly.

Release Notes:

- N/A
This commit is contained in:
Kirill Bulatov 2025-03-07 22:19:28 +02:00 committed by GitHub
parent ec5e7a2653
commit 103ad635d9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 326 additions and 190 deletions

View file

@ -2,9 +2,9 @@ mod signature_help;
use crate::{
lsp_store::{LocalLspStore, LspStore},
ActionVariant, CodeAction, CoreCompletion, DocumentHighlight, Hover, HoverBlock,
CodeAction, CompletionSource, CoreCompletion, DocumentHighlight, Hover, HoverBlock,
HoverBlockKind, InlayHint, InlayHintLabel, InlayHintLabelPart, InlayHintLabelPartTooltip,
InlayHintTooltip, Location, LocationLink, MarkupContent, PrepareRenameResponse,
InlayHintTooltip, Location, LocationLink, LspAction, MarkupContent, PrepareRenameResponse,
ProjectTransaction, ResolveState,
};
use anyhow::{anyhow, Context as _, Result};
@ -2011,9 +2011,11 @@ impl LspCommand for GetCompletions {
CoreCompletion {
old_range,
new_text,
server_id,
lsp_completion,
resolved: false,
source: CompletionSource::Lsp {
server_id,
lsp_completion: Box::new(lsp_completion),
resolved: false,
},
}
})
.collect())
@ -2256,11 +2258,11 @@ impl LspCommand for GetCodeActions {
return None;
}
}
ActionVariant::Action(Box::new(lsp_action))
LspAction::Action(Box::new(lsp_action))
}
lsp::CodeActionOrCommand::Command(command) => {
if available_commands.contains(&command.command) {
ActionVariant::Command(command)
LspAction::Command(command)
} else {
return None;
}