Unnamed repository; edit this file 'description' to name the repository.
feat: use `ui.text.directory` for path completion item if its a folder (#12295)
Nikita Revenco 2024-12-20
parent cbc06d1 · commit 355e381
-rw-r--r--helix-term/src/ui/completion.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/helix-term/src/ui/completion.rs b/helix-term/src/ui/completion.rs
index c50832af..ad317e39 100644
--- a/helix-term/src/ui/completion.rs
+++ b/helix-term/src/ui/completion.rs
@@ -28,7 +28,7 @@ use crate::ui::{menu, Markdown, Menu, Popup, PromptEvent};
use helix_lsp::{lsp, util, OffsetEncoding};
impl menu::Item for CompletionItem {
- type Data = ();
+ type Data = Style;
fn sort_text(&self, data: &Self::Data) -> Cow<str> {
self.filter_text(data)
}
@@ -46,7 +46,7 @@ impl menu::Item for CompletionItem {
}
}
- fn format(&self, _data: &Self::Data) -> menu::Row {
+ fn format(&self, dir_style: &Self::Data) -> menu::Row {
let deprecated = match self {
CompletionItem::Lsp(LspCompletionItem { item, .. }) => {
item.deprecated.unwrap_or_default()
@@ -103,6 +103,8 @@ impl menu::Item for CompletionItem {
label,
if deprecated {
Style::default().add_modifier(Modifier::CROSSED_OUT)
+ } else if kind == "folder" {
+ *dir_style
} else {
Style::default()
},
@@ -135,8 +137,10 @@ impl Completion {
// Sort completion items according to their preselect status (given by the LSP server)
items.sort_by_key(|item| !item.preselect());
+ let dir_style = editor.theme.get("ui.text.directory");
+
// Then create the menu
- let menu = Menu::new(items, (), move |editor: &mut Editor, item, event| {
+ let menu = Menu::new(items, dir_style, move |editor: &mut Editor, item, event| {
let (view, doc) = current!(editor);
macro_rules! language_server {