local lsp = vim.lsp local diagnostic = vim.diagnostic local keymap = vim.keymap keymap.set("n", "gd", lsp.buf.definition) keymap.set("n", "rn", lsp.buf.rename) keymap.set("n", "gr", lsp.buf.references) keymap.set("n", "[d", diagnostic.goto_prev) keymap.set("n", "]d", diagnostic.goto_next) diagnostic.config({ signs = false, }) local lspconfig = require("lspconfig") local capabilities = require("cmp_nvim_lsp").default_capabilities() lspconfig.pylsp.setup({ capabilities = capabilities }) lspconfig.clangd.setup({ capabilities = capabilities }) lspconfig.bashls.setup({ capabilities = capabilities }) lspconfig.rust_analyzer.setup({ capabilities = capabilities, }) lspconfig.gopls.setup({ settings = { gopls = { analyses = { unusedparams = true, }, staticcheck = true, gofumpt = true, }, }, capabilities = capabilities, }) lspconfig.lua_ls.setup({ capabilities = capabilities, on_init = function(client) if client.workspace_folders then local path = client.workspace_folders[1].name if vim.uv.fs_stat(path .. "/.luarc.json") or vim.uv.fs_stat(path .. "/.luarc.jsonc") then return end end client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, { runtime = { -- Tell the language server which version of Lua you're using -- (most likely LuaJIT in the case of Neovim) version = "LuaJIT", }, -- Make the server aware of Neovim runtime files workspace = { checkThirdParty = false, library = { vim.env.VIMRUNTIME, -- Depending on the usage, you might want to add additional paths here. -- "${3rd}/luv/library" -- "${3rd}/busted/library", }, -- or pull in all of 'runtimepath'. NOTE: this is a lot slower -- library = vim.api.nvim_get_runtime_file("", true) }, }) end, settings = { Lua = {}, }, }) lspconfig.nixd.setup({ capabilities = capabilities }) lspconfig.terraformls.setup({ capabilities = capabilities })