From 188d14e5b2524a7c48dfe176cbb2d7c8b116650d Mon Sep 17 00:00:00 2001 From: Xander Swan Date: Wed, 3 Dec 2025 10:00:42 -0500 Subject: update lsp to use neovim's lsp --- .config/nvim/lua/lsp.lua | 82 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .config/nvim/lua/lsp.lua (limited to '.config/nvim/lua/lsp.lua') diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua new file mode 100644 index 0000000..32ba6f8 --- /dev/null +++ b/.config/nvim/lua/lsp.lua @@ -0,0 +1,82 @@ +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 = "NL", + } + + 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