From 4e2c14eb853ae25b66a9f12250f9856b8d954282 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Thu, 7 Mar 2024 01:25:09 +0000 Subject: Big rice and colors overhaul for neovim --- lua/lsp.lua | 93 ++++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 73 insertions(+), 20 deletions(-) (limited to 'lua') diff --git a/lua/lsp.lua b/lua/lsp.lua index 0902e06..35f36be 100644 --- a/lua/lsp.lua +++ b/lua/lsp.lua @@ -77,28 +77,60 @@ vim.opt.completeopt = { "menu", "menuone", "noselect" } -- Don't show matching vim.opt.shortmess:append("c") -local lspkind = require("lspkind") lspkind.init() +local lspkind = require("lspkind") lspkind.init({ + symbol_map = { + Text = "󰉿", + Method = "󰊕", + Function = "λ", + Constructor = "", + Field = "󰜢", + Variable = "󰀫", + Class = "󰠱", + Interface = "", + Module = "󰆧", + Property = "󰜢", + Unit = "󰑭", + Value = "󰎠", + Enum = "", + Keyword = "󰌋", + Snippet = "", + Color = "󰏘", + File = "󰈙", + Reference = "󰈇", + Folder = "󰉋", + EnumMember = "", + Constant = "󰏿", + Struct = "󰙅", + Event = "", + Operator = "󰆕", + TypeParameter = "τ", + }, +}) local cmp = require("cmp") cmp.setup({ mapping = { - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.scroll_docs(-4, { "i", "s" }), + [""] = cmp.mapping.scroll_docs(4, { "i", "s" }), [""] = cmp.mapping.close(), [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), [""] = cmp.mapping(function(fallback) cmp.select_next_item() + -- Kill any outstanding snippets + vim.fn["vsnip#deactivate"]() end, { "i", "s" }), [""] = cmp.mapping(function(fallback) cmp.select_prev_item() + -- Kill any outstanding snippets + vim.fn["vsnip#deactivate"]() end, { "i", "s" }), [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.mapping.confirm({ select = true })() - elseif vim.fn["vsnip#available"](1) == 1 then + if vim.fn["vsnip#available"](1) == 1 then feedkey("(vsnip-expand-or-jump)", "") + elseif cmp.visible() then + cmp.mapping.confirm({ select = true })() elseif has_words_before() then cmp.complete() else @@ -115,6 +147,41 @@ cmp.setup({ end, { "i", "s" }), }, + formatting = { + format = lspkind.cmp_format({ + mode = 'symbol_text', + maxwidth = 50, + ellipsis_char = '...', + show_labelDetails = true, + before = function(_, vim_item) + local function split_silly_function_arguments(str) + if string.len(str) == 0 or string.find(str, "[(]") == nil then + return str, "" + end + + local name_start, name_end = 1, string.find(str, "[(]") - 1 + local function_name = string.sub(str, name_start, name_end) + local arguments = string.sub(str, name_end + 1) + + return function_name, arguments + end + + local verbosity = 1 + if vim.bo.filetype == 'java' then + verbosity = 2 + if vim_item.kind == "Method" then + local name, args = split_silly_function_arguments(vim_item.abbr) + vim_item.abbr = name + vim_item.menu = args .. (vim_item.menu or "") + end + end + vim_item.abbr = string.sub(vim_item.abbr, 1, 20 * verbosity) + vim_item.menu = string.sub(vim_item.menu or "", 1, 20 * verbosity) + return vim_item + end + }) + }, + sources = { { name = "nvim_lsp" }, { name = "path" }, @@ -132,20 +199,6 @@ cmp.setup({ end, }, - formatting = { - format = lspkind.cmp_format({ - with_text = true, - maxwidth = 40, -- half max width - menu = { - buffer = "[buffer]", - nvim_lsp = "[LSP]", - nvim_lua = "[API]", - path = "[path]", - vim_vsnip = "[snip]", - }, - }), - }, - experimental = { native_menu = false, ghost_text = true, -- cgit