refactoring

This commit is contained in:
2026-10-31 01:06:21 +03:00
parent 27385a3edb
commit 19e05e7ed0
17 changed files with 2673 additions and 671 deletions
+70 -43
View File
@@ -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,
}
}