Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'src/complete.rs')
| -rw-r--r-- | src/complete.rs | 52 |
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(); } _ => { |