use helix_lsp::{lsp, LanguageServerId}; #[derive(Debug, PartialEq, Clone)] pub struct LspCompletionItem { pub item: lsp::CompletionItem, pub provider: LanguageServerId, pub resolved: bool, } #[derive(Debug, PartialEq, Clone)] pub enum CompletionItem { Lsp(LspCompletionItem), Other(helix_core::CompletionItem), } impl PartialEq for LspCompletionItem { fn eq(&self, other: &CompletionItem) -> bool { match other { CompletionItem::Lsp(other) => self == other, _ => false, } } } impl PartialEq for helix_core::CompletionItem { fn eq(&self, other: &CompletionItem) -> bool { match other { CompletionItem::Other(other) => self == other, _ => false, } } } impl CompletionItem { pub fn preselect(&self) -> bool { match self { CompletionItem::Lsp(LspCompletionItem { item, .. }) => item.preselect.unwrap_or(false), CompletionItem::Other(_) => false, } } }