on master help sign in
feat(ui): deprecated completions (#5932)
2bebc50Matouš Dzivjak
helix-lsp/src/client.rs+4
@@ -329,6 +329,10 @@ impl Client {
329 ],
329 ],
330 }),
330 }),
331 insert_replace_support: Some(true),
331 insert_replace_support: Some(true),
332+ deprecated_support: Some(true),
333+ tag_support: Some(lsp::TagSupport {
334+ value_set: vec![lsp::CompletionItemTag::DEPRECATED],
335+ }),
332 ..Default::default()
336 ..Default::default()
333 }),
337 }),
334 completion_item_kind: Some(lsp::CompletionItemKindCapability {
338 completion_item_kind: Some(lsp::CompletionItemKindCapability {
helix-term/src/ui/completion.rs+18−3
@@ -1,6 +1,10 @@
1use crate::compositor::{Component, Context, Event, EventResult};
1use crate::compositor::{Component, Context, Event, EventResult};
2+use helix_view::{
2−use helix_view::{editor::CompleteAction, ViewId};
3+ editor::CompleteAction,
4+ theme::{Modifier, Style},
5+ ViewId,
6+};
3−use tui::buffer::Buffer as Surface;
7+use tui::{buffer::Buffer as Surface, text::Span};
4
8
5use std::borrow::Cow;
9use std::borrow::Cow;
6
10
@@ -33,8 +37,19 @@ impl menu::Item for CompletionItem {
33 }
37 }
34
38
35 fn format(&self, _data: &Self::Data) -> menu::Row {
39 fn format(&self, _data: &Self::Data) -> menu::Row {
40+ let deprecated = self.deprecated.unwrap_or_default()
41+ || self.tags.as_ref().map_or(false, |tags| {
42+ tags.contains(&lsp::CompletionItemTag::DEPRECATED)
43+ });
36 menu::Row::new(vec![
44 menu::Row::new(vec![
45+ menu::Cell::from(Span::styled(
37− menu::Cell::from(self.label.as_str()),
46+ self.label.as_str(),
47+ if deprecated {
48+ Style::default().add_modifier(Modifier::CROSSED_OUT)
49+ } else {
50+ Style::default()
51+ },
52+ )),
38 menu::Cell::from(match self.kind {
53 menu::Cell::from(match self.kind {
39 Some(lsp::CompletionItemKind::TEXT) => "text",
54 Some(lsp::CompletionItemKind::TEXT) => "text",
40 Some(lsp::CompletionItemKind::METHOD) => "method",
55 Some(lsp::CompletionItemKind::METHOD) => "method",