Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'src/complete.rs')
-rw-r--r--src/complete.rs52
1 files changed, 28 insertions, 24 deletions
diff --git a/src/complete.rs b/src/complete.rs
index fc652c3..3ab13d3 100644
--- a/src/complete.rs
+++ b/src/complete.rs
@@ -63,8 +63,8 @@ fn filter_c<'a>(
) -> impl Iterator<Item = &'a CompletionItem> {
let x = &completion.r;
let y = match x {
- CompletionResponse::Array(x) => x,
- CompletionResponse::List(x) => &x.items,
+ CompletionResponse::CompletionItemList(x) => x,
+ CompletionResponse::CompletionList(x) => &x.items,
};
filter(y.iter(), f)
}
@@ -82,7 +82,9 @@ pub fn s(completion: &Complete, c: usize, f: &str) -> Vec<Cell> {
});
out
-}
+}pub const fn i<T:Copy>(x: T) -> usize {
+ (unsafe { *<*const _>::from(&x).cast::<u32>() }) as usize
+ }
#[implicit_fn::implicit_fn]
fn r(
x: &CompletionItem,
@@ -96,34 +98,36 @@ fn r(
let ds = Style::new(FG, bg);
let d: Cell = Cell { letter: None, style: ds };
let mut b = vec![d; c];
+
const MAP: [([u8; 3], [u8; 3], &str); 26] = {
(
amap::amap! {
- const { CompletionItemKind::TEXT.0 as usize } => ("#9a9b9a", " "),
- const { CompletionItemKind::METHOD.0 as usize } | const { CompletionItemKind::FUNCTION.0 as usize } => ("#FFD173", "λ "),
- const { CompletionItemKind::CONSTRUCTOR.0 as usize } => ("#FFAD66", "->"),
- const { CompletionItemKind::FIELD.0 as usize } => ("#E06C75", "x."),
- const { CompletionItemKind::VARIABLE.0 as usize } => ("#E06C75", "x "),
- const { CompletionItemKind::MODULE.0 as usize } => ("#D5FF80", "::"),
- const { CompletionItemKind::PROPERTY.0 as usize } => ("#e6e1cf", "x."),
- const { CompletionItemKind::VALUE.0 as usize } => ("#DFBFFF", "4 "),
- const { CompletionItemKind::ENUM.0 as usize } => ("#73b9ff", "󰓹u"),
- const { CompletionItemKind::ENUM_MEMBER.0 as usize } => ("#73b9ff", "󰓹:"),
- const { CompletionItemKind::SNIPPET.0 as usize } => ("#9a9b9a", "! "),
- const { CompletionItemKind::INTERFACE.0 as usize } => ("#E5C07B", "t "),
- const { CompletionItemKind::REFERENCE.0 as usize } => ("#9a9b9a", "& "),
- const { CompletionItemKind::CONSTANT.0 as usize } => ("#DFBFFF", "N "),
- const { CompletionItemKind::STRUCT.0 as usize } => ("#73D0FF", "X{"),
- const { CompletionItemKind::OPERATOR.0 as usize } => ("#F29E74", "+ "),
- const { CompletionItemKind::TYPE_PARAMETER.0 as usize } => ("#9a9b9a", "T "),
- const { CompletionItemKind::KEYWORD.0 as usize } => ("#FFAD66", "as"),
+ const { i(CompletionItemKind::Text) } => ("#9a9b9a", " "),
+ const { i(CompletionItemKind::Method) } | const { i(CompletionItemKind::Function) } => ("#FFD173", "λ "),
+ const { i(CompletionItemKind::Constructor) } => ("#FFAD66", "->"),
+ const { i(CompletionItemKind::Field) } => ("#E06C75", "x."),
+ const { i(CompletionItemKind::Variable) } => ("#E06C75", "x "),
+ const { i(CompletionItemKind::Module) } => ("#D5FF80", "::"),
+ const { i(CompletionItemKind::Property) } => ("#e6e1cf", "x."),
+ const { i(CompletionItemKind::Value) } => ("#DFBFFF", "4 "),
+ const { i(CompletionItemKind::Enum) } => ("#73b9ff", "󰓹u"),
+ const { i(CompletionItemKind::EnumMember) } => ("#73b9ff", "󰓹:"),
+ const { i(CompletionItemKind::Snippet) } => ("#9a9b9a", "! "),
+ const { i(CompletionItemKind::Interface) } => ("#E5C07B", "t "),
+ const { i(CompletionItemKind::Reference) } => ("#9a9b9a", "& "),
+ const { i(CompletionItemKind::Constant) } => ("#DFBFFF", "N "),
+ const { i(CompletionItemKind::Struct) } => ("#73D0FF", "X{"),
+ const { i(CompletionItemKind::Operator) } => ("#F29E74", "+ "),
+ const { i(CompletionItemKind::TypeParameter) } => ("#9a9b9a", "T "),
+ const { i(CompletionItemKind::Keyword) } => ("#FFAD66", "as"),
+
_ => ("#9a9b9a", " ")
}).map(const
|(x, y)| (set_a(color_(x), 0.5), color_(x), y),
)
};
let (bgt, col, ty) =
- MAP[x.kind.unwrap_or(CompletionItemKind(25)).0 as usize];
+ MAP[i(x.kind.unwrap_or(CompletionItemKind::Text))];
b.iter_mut().zip(ty.chars()).for_each(|(x, c)| {
*x = (Style::new(col, bgt) | Style::BOLD).basic(c)
});
@@ -234,7 +238,7 @@ impl Editor {
let sel = x.sel(&crate::filter(&self.text));
let sel = lsp.resolve(sel.clone()).unwrap();
let CompletionItem {
- text_edit: Some(CompletionTextEdit::Edit(ed)),
+ text_edit: Some(CompletionItemTextEdit::TextEdit(ed)),
additional_text_edits,
insert_text_format,
..
@@ -243,7 +247,7 @@ impl Editor {
return;
};
match insert_text_format {
- Some(InsertTextFormat::SNIPPET) => {
+ Some(InsertTextFormat::Snippet) => {
self.text.apply_snippet(&ed).unwrap();
}
_ => {