From b3d6b3ffb2e8fb2c2f6dca90120673f22a40b0a3 Mon Sep 17 00:00:00 2001 From: Xander Swan Date: Wed, 3 Dec 2025 10:00:42 -0500 Subject: compress plugins further, crawl back to oil --- .config/nvim/lua/plugin/lsp.lua | 81 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 .config/nvim/lua/plugin/lsp.lua (limited to '.config/nvim/lua/plugin/lsp.lua') diff --git a/.config/nvim/lua/plugin/lsp.lua b/.config/nvim/lua/plugin/lsp.lua new file mode 100644 index 0000000..50eed85 --- /dev/null +++ b/.config/nvim/lua/plugin/lsp.lua @@ -0,0 +1,81 @@ +local lspconf = require("lspconfig") +local cmp = require("cmp") +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +vim.opt.signcolumn = "yes" + +local servers = { + ["lua_ls"] = { + settings = { + Lua = { + runtime = { + version = "LuaJIT" + }, + }, + }, + }, + ["clangd"] = {}, +} + +for lsp, conf in pairs(servers) do + conf.capabilities = capabilities + lspconf[lsp].setup(conf) +end + +cmp.setup({ + preselect = "item", + completion = { + completeopt = "menu,menuone,noinsert", + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + formatting = { + fields = { "menu", "abbr", "kind" }, + + format = function(entry, item) + local menu_icon = { + nvim_lsp = "L", + buffer = "B", + path = "P", + nvim_lua = "V", + } + + item.menu = menu_icon[entry.source.name] + + return item + end, + }, + mapping = { + [""] = cmp.mapping.confirm({ select = false }), + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.select_prev_item(), + }, + sources = { + { name = "path" }, + { name = "nvim_lsp" }, + { name = "buffer", keyword_length = 3 }, + }, +}) + +vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserLspConfig", {}), + callback = function(ev) + vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc" + local opts = { buffer = ev.buf } + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) + vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) + vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) + vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) + vim.keymap.set("n", "go", vim.lsp.buf.type_definition, opts) + vim.keymap.set("n", "ls", vim.lsp.buf.signature_help, opts) + vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) + vim.keymap.set("n", "h", vim.lsp.buf.hover, opts) + vim.keymap.set({"n", "v"}, "ca", vim.lsp.buf.code_action, opts) + vim.keymap.set("n", "f", + function() + vim.lsp.buf.format({async = true}) + end, opts) + end +}) -- cgit v1.3-2-g0d8e