diff options
author | Josh Rahm <rahm@google.com> | 2024-03-07 01:25:09 +0000 |
---|---|---|
committer | Josh Rahm <rahm@google.com> | 2024-03-07 01:25:09 +0000 |
commit | 4e2c14eb853ae25b66a9f12250f9856b8d954282 (patch) | |
tree | a111c328646525c8d7ca47b997b40b1605dc8750 /lua | |
parent | db0621bdc9b6e150e842ddc711c9e67f5cdd9361 (diff) | |
download | config.vim-4e2c14eb853ae25b66a9f12250f9856b8d954282.tar.gz config.vim-4e2c14eb853ae25b66a9f12250f9856b8d954282.tar.bz2 config.vim-4e2c14eb853ae25b66a9f12250f9856b8d954282.zip |
Big rice and colors overhaul for neovim
Diffstat (limited to 'lua')
-rw-r--r-- | lua/lsp.lua | 93 |
1 files changed, 73 insertions, 20 deletions
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 = { - ["<C-d>"] = cmp.mapping.scroll_docs(-4), - ["<C-u>"] = cmp.mapping.scroll_docs(4), + ["<C-d>"] = cmp.mapping.scroll_docs(-4, { "i", "s" }), + ["<C-u>"] = cmp.mapping.scroll_docs(4, { "i", "s" }), ["<C-e>"] = cmp.mapping.close(), ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), ["<C-n>"] = cmp.mapping(function(fallback) cmp.select_next_item() + -- Kill any outstanding snippets + vim.fn["vsnip#deactivate"]() end, { "i", "s" }), ["<C-p>"] = cmp.mapping(function(fallback) cmp.select_prev_item() + -- Kill any outstanding snippets + vim.fn["vsnip#deactivate"]() end, { "i", "s" }), ["<Tab>"] = 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("<Plug>(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, |