Add LifetimeParam and ConstParam to CompletionItemKind

This commit is contained in:
Lukas Wirth 2021-01-19 20:21:56 +01:00
parent f647e134a7
commit 83e49200d8
4 changed files with 34 additions and 24 deletions

View file

@ -241,7 +241,7 @@ fn main() {
check( check(
r#"fn quux<const C: usize>() { $0 }"#, r#"fn quux<const C: usize>() { $0 }"#,
expect![[r#" expect![[r#"
tp C cp C
fn quux() fn quux<const C: usize>() fn quux() fn quux<const C: usize>()
"#]], "#]],
); );

View file

@ -117,24 +117,26 @@ pub enum CompletionScore {
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CompletionItemKind { pub enum CompletionItemKind {
Snippet, Attribute,
Keyword, Binding,
Module,
Function,
BuiltinType, BuiltinType,
Struct, Const,
ConstParam,
Enum, Enum,
EnumVariant, EnumVariant,
Binding,
Field, Field,
Function,
Keyword,
LifetimeParam,
Macro,
Method,
Module,
Snippet,
Static, Static,
Const, Struct,
Trait, Trait,
TypeAlias, TypeAlias,
Method,
TypeParam, TypeParam,
Macro,
Attribute,
UnresolvedReference, UnresolvedReference,
} }
@ -146,11 +148,13 @@ impl CompletionItemKind {
CompletionItemKind::Binding => "bn", CompletionItemKind::Binding => "bn",
CompletionItemKind::BuiltinType => "bt", CompletionItemKind::BuiltinType => "bt",
CompletionItemKind::Const => "ct", CompletionItemKind::Const => "ct",
CompletionItemKind::ConstParam => "cp",
CompletionItemKind::Enum => "en", CompletionItemKind::Enum => "en",
CompletionItemKind::EnumVariant => "ev", CompletionItemKind::EnumVariant => "ev",
CompletionItemKind::Field => "fd", CompletionItemKind::Field => "fd",
CompletionItemKind::Function => "fn", CompletionItemKind::Function => "fn",
CompletionItemKind::Keyword => "kw", CompletionItemKind::Keyword => "kw",
CompletionItemKind::LifetimeParam => "lt",
CompletionItemKind::Macro => "ma", CompletionItemKind::Macro => "ma",
CompletionItemKind::Method => "me", CompletionItemKind::Method => "me",
CompletionItemKind::Module => "md", CompletionItemKind::Module => "md",

View file

@ -208,7 +208,11 @@ impl<'a> Render<'a> {
ScopeDef::ModuleDef(Trait(..)) => CompletionItemKind::Trait, ScopeDef::ModuleDef(Trait(..)) => CompletionItemKind::Trait,
ScopeDef::ModuleDef(TypeAlias(..)) => CompletionItemKind::TypeAlias, ScopeDef::ModuleDef(TypeAlias(..)) => CompletionItemKind::TypeAlias,
ScopeDef::ModuleDef(BuiltinType(..)) => CompletionItemKind::BuiltinType, ScopeDef::ModuleDef(BuiltinType(..)) => CompletionItemKind::BuiltinType,
ScopeDef::GenericParam(..) => CompletionItemKind::TypeParam, ScopeDef::GenericParam(param) => match param {
hir::GenericParam::TypeParam(_) => CompletionItemKind::TypeParam,
hir::GenericParam::LifetimeParam(_) => CompletionItemKind::LifetimeParam,
hir::GenericParam::ConstParam(_) => CompletionItemKind::ConstParam,
},
ScopeDef::Local(..) => CompletionItemKind::Binding, ScopeDef::Local(..) => CompletionItemKind::Binding,
// (does this need its own kind?) // (does this need its own kind?)
ScopeDef::AdtSelfType(..) | ScopeDef::ImplSelfType(..) => CompletionItemKind::TypeParam, ScopeDef::AdtSelfType(..) | ScopeDef::ImplSelfType(..) => CompletionItemKind::TypeParam,

View file

@ -87,24 +87,26 @@ pub(crate) fn completion_item_kind(
completion_item_kind: CompletionItemKind, completion_item_kind: CompletionItemKind,
) -> lsp_types::CompletionItemKind { ) -> lsp_types::CompletionItemKind {
match completion_item_kind { match completion_item_kind {
CompletionItemKind::Keyword => lsp_types::CompletionItemKind::Keyword, CompletionItemKind::Attribute => lsp_types::CompletionItemKind::EnumMember,
CompletionItemKind::Snippet => lsp_types::CompletionItemKind::Snippet, CompletionItemKind::Binding => lsp_types::CompletionItemKind::Variable,
CompletionItemKind::Module => lsp_types::CompletionItemKind::Module, CompletionItemKind::BuiltinType => lsp_types::CompletionItemKind::Struct,
CompletionItemKind::Function => lsp_types::CompletionItemKind::Function, CompletionItemKind::Const => lsp_types::CompletionItemKind::Constant,
CompletionItemKind::Struct => lsp_types::CompletionItemKind::Struct, CompletionItemKind::ConstParam => lsp_types::CompletionItemKind::TypeParameter,
CompletionItemKind::Enum => lsp_types::CompletionItemKind::Enum, CompletionItemKind::Enum => lsp_types::CompletionItemKind::Enum,
CompletionItemKind::EnumVariant => lsp_types::CompletionItemKind::EnumMember, CompletionItemKind::EnumVariant => lsp_types::CompletionItemKind::EnumMember,
CompletionItemKind::BuiltinType => lsp_types::CompletionItemKind::Struct,
CompletionItemKind::Binding => lsp_types::CompletionItemKind::Variable,
CompletionItemKind::Field => lsp_types::CompletionItemKind::Field, CompletionItemKind::Field => lsp_types::CompletionItemKind::Field,
CompletionItemKind::Function => lsp_types::CompletionItemKind::Function,
CompletionItemKind::Keyword => lsp_types::CompletionItemKind::Keyword,
CompletionItemKind::LifetimeParam => lsp_types::CompletionItemKind::TypeParameter,
CompletionItemKind::Macro => lsp_types::CompletionItemKind::Method,
CompletionItemKind::Method => lsp_types::CompletionItemKind::Method,
CompletionItemKind::Module => lsp_types::CompletionItemKind::Module,
CompletionItemKind::Snippet => lsp_types::CompletionItemKind::Snippet,
CompletionItemKind::Static => lsp_types::CompletionItemKind::Value,
CompletionItemKind::Struct => lsp_types::CompletionItemKind::Struct,
CompletionItemKind::Trait => lsp_types::CompletionItemKind::Interface, CompletionItemKind::Trait => lsp_types::CompletionItemKind::Interface,
CompletionItemKind::TypeAlias => lsp_types::CompletionItemKind::Struct, CompletionItemKind::TypeAlias => lsp_types::CompletionItemKind::Struct,
CompletionItemKind::Const => lsp_types::CompletionItemKind::Constant,
CompletionItemKind::Static => lsp_types::CompletionItemKind::Value,
CompletionItemKind::Method => lsp_types::CompletionItemKind::Method,
CompletionItemKind::TypeParam => lsp_types::CompletionItemKind::TypeParameter, CompletionItemKind::TypeParam => lsp_types::CompletionItemKind::TypeParameter,
CompletionItemKind::Macro => lsp_types::CompletionItemKind::Method,
CompletionItemKind::Attribute => lsp_types::CompletionItemKind::EnumMember,
CompletionItemKind::UnresolvedReference => lsp_types::CompletionItemKind::Reference, CompletionItemKind::UnresolvedReference => lsp_types::CompletionItemKind::Reference,
} }
} }