refactoring
This commit is contained in:
+70
-43
@@ -281,6 +281,56 @@ pub fn completion_kind_name(kind: Option<CompletionItemKind>) -> &'static str {
|
||||
}
|
||||
}
|
||||
|
||||
/// Группа элемента автодополнения: по ней выбираются иконка и цвет.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
enum CompletionKindGroup {
|
||||
Function,
|
||||
Type,
|
||||
Variable,
|
||||
Keyword,
|
||||
Module,
|
||||
File,
|
||||
Folder,
|
||||
Snippet,
|
||||
Event,
|
||||
TypeParameter,
|
||||
Operator,
|
||||
Other,
|
||||
Unknown,
|
||||
}
|
||||
|
||||
fn kind_group(kind: Option<CompletionItemKind>) -> CompletionKindGroup {
|
||||
match kind {
|
||||
Some(CompletionItemKind::FUNCTION | CompletionItemKind::METHOD) => {
|
||||
CompletionKindGroup::Function
|
||||
}
|
||||
Some(
|
||||
CompletionItemKind::STRUCT
|
||||
| CompletionItemKind::CLASS
|
||||
| CompletionItemKind::INTERFACE
|
||||
| CompletionItemKind::ENUM
|
||||
| CompletionItemKind::CONSTRUCTOR,
|
||||
) => CompletionKindGroup::Type,
|
||||
Some(
|
||||
CompletionItemKind::VARIABLE
|
||||
| CompletionItemKind::FIELD
|
||||
| CompletionItemKind::PROPERTY
|
||||
| CompletionItemKind::CONSTANT
|
||||
| CompletionItemKind::ENUM_MEMBER,
|
||||
) => CompletionKindGroup::Variable,
|
||||
Some(CompletionItemKind::KEYWORD) => CompletionKindGroup::Keyword,
|
||||
Some(CompletionItemKind::MODULE) => CompletionKindGroup::Module,
|
||||
Some(CompletionItemKind::FILE) => CompletionKindGroup::File,
|
||||
Some(CompletionItemKind::FOLDER) => CompletionKindGroup::Folder,
|
||||
Some(CompletionItemKind::SNIPPET) => CompletionKindGroup::Snippet,
|
||||
Some(CompletionItemKind::EVENT) => CompletionKindGroup::Event,
|
||||
Some(CompletionItemKind::TYPE_PARAMETER) => CompletionKindGroup::TypeParameter,
|
||||
Some(CompletionItemKind::OPERATOR) => CompletionKindGroup::Operator,
|
||||
Some(_) => CompletionKindGroup::Other,
|
||||
None => CompletionKindGroup::Unknown,
|
||||
}
|
||||
}
|
||||
|
||||
/// Иконка для типа элемента автодополнения.
|
||||
///
|
||||
/// Используется полный каталог иконок gpui-kit-assets, а не компактный набор
|
||||
@@ -289,32 +339,20 @@ pub fn completion_kind_name(kind: Option<CompletionItemKind>) -> &'static str {
|
||||
pub fn completion_icon(kind: Option<CompletionItemKind>) -> gpui_kit::assets::IconName {
|
||||
use gpui_kit::assets::IconName as Icon;
|
||||
|
||||
match kind {
|
||||
Some(CompletionItemKind::FUNCTION | CompletionItemKind::METHOD) => Icon::SquareFunction,
|
||||
Some(
|
||||
CompletionItemKind::STRUCT
|
||||
| CompletionItemKind::CLASS
|
||||
| CompletionItemKind::INTERFACE
|
||||
| CompletionItemKind::ENUM
|
||||
| CompletionItemKind::CONSTRUCTOR,
|
||||
) => Icon::Box,
|
||||
Some(
|
||||
CompletionItemKind::VARIABLE
|
||||
| CompletionItemKind::FIELD
|
||||
| CompletionItemKind::PROPERTY
|
||||
| CompletionItemKind::CONSTANT
|
||||
| CompletionItemKind::ENUM_MEMBER,
|
||||
) => Icon::Variable,
|
||||
Some(CompletionItemKind::KEYWORD) => Icon::Type,
|
||||
Some(CompletionItemKind::MODULE) => Icon::Braces,
|
||||
Some(CompletionItemKind::FILE) => Icon::FileText,
|
||||
Some(CompletionItemKind::FOLDER) => Icon::Folder,
|
||||
Some(CompletionItemKind::SNIPPET) => Icon::Component,
|
||||
Some(CompletionItemKind::EVENT) => Icon::Activity,
|
||||
Some(CompletionItemKind::TYPE_PARAMETER) => Icon::TypeOutline,
|
||||
Some(CompletionItemKind::OPERATOR) => Icon::CaseSensitive,
|
||||
Some(_) => Icon::Circle,
|
||||
None => Icon::Sparkles,
|
||||
match kind_group(kind) {
|
||||
CompletionKindGroup::Function => Icon::SquareFunction,
|
||||
CompletionKindGroup::Type => Icon::Box,
|
||||
CompletionKindGroup::Variable => Icon::Variable,
|
||||
CompletionKindGroup::Keyword => Icon::Type,
|
||||
CompletionKindGroup::Module => Icon::Braces,
|
||||
CompletionKindGroup::File => Icon::FileText,
|
||||
CompletionKindGroup::Folder => Icon::Folder,
|
||||
CompletionKindGroup::Snippet => Icon::Component,
|
||||
CompletionKindGroup::Event => Icon::Activity,
|
||||
CompletionKindGroup::TypeParameter => Icon::TypeOutline,
|
||||
CompletionKindGroup::Operator => Icon::CaseSensitive,
|
||||
CompletionKindGroup::Other => Icon::Circle,
|
||||
CompletionKindGroup::Unknown => Icon::Sparkles,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -323,23 +361,12 @@ pub fn completion_icon_color(
|
||||
kind: Option<CompletionItemKind>,
|
||||
theme: &gpui_kit::component::Theme,
|
||||
) -> Hsla {
|
||||
match kind {
|
||||
Some(CompletionItemKind::FUNCTION | CompletionItemKind::METHOD) => theme.blue,
|
||||
Some(
|
||||
CompletionItemKind::STRUCT
|
||||
| CompletionItemKind::CLASS
|
||||
| CompletionItemKind::INTERFACE
|
||||
| CompletionItemKind::ENUM,
|
||||
) => theme.yellow,
|
||||
Some(
|
||||
CompletionItemKind::VARIABLE
|
||||
| CompletionItemKind::FIELD
|
||||
| CompletionItemKind::PROPERTY
|
||||
| CompletionItemKind::CONSTANT
|
||||
| CompletionItemKind::ENUM_MEMBER,
|
||||
) => theme.green,
|
||||
Some(CompletionItemKind::KEYWORD) => theme.magenta,
|
||||
Some(CompletionItemKind::MODULE) => theme.cyan,
|
||||
match kind_group(kind) {
|
||||
CompletionKindGroup::Function => theme.blue,
|
||||
CompletionKindGroup::Type => theme.yellow,
|
||||
CompletionKindGroup::Variable => theme.green,
|
||||
CompletionKindGroup::Keyword => theme.magenta,
|
||||
CompletionKindGroup::Module => theme.cyan,
|
||||
_ => theme.muted_foreground,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user