summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2024-03-07 01:25:09 +0000
committerJosh Rahm <rahm@google.com>2024-03-07 01:25:09 +0000
commit4e2c14eb853ae25b66a9f12250f9856b8d954282 (patch)
treea111c328646525c8d7ca47b997b40b1605dc8750 /lua
parentdb0621bdc9b6e150e842ddc711c9e67f5cdd9361 (diff)
downloadconfig.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.lua93
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,