local lspconfig = require("lspconfig") local null_ls = require("null-ls") local cmp_lsp = require("cmp_nvim_lsp") require("neodev").setup() require("luasnip.loaders.from_vscode").lazy_load() local capabilities = vim.lsp.protocol.make_client_capabilities() -- Add com_nvim_lsp capabilities local cmp_lsp_capabilities = cmp_lsp.default_capabilities() capabilities = vim.tbl_deep_extend("keep", capabilities, cmp_lsp_capabilities) vim.fn.sign_define("DiagnosticSignError", { text = " ", texthl = "DiagnosticSignError" }) vim.fn.sign_define("DiagnosticSignWarn", { text = "", texthl = "DiagnosticSignWarn" }) vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" }) vim.fn.sign_define("DiagnosticSignHint", { text = "󰌵", texthl = "DiagnosticSignHint" }) -- -- Diagnostic keymaps vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous diagnostic message" }) vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next diagnostic message" }) vim.keymap.set("n", "xd", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" }) vim.keymap.set("n", "xl", vim.diagnostic.setloclist, { desc = "Open diagnostics list" }) null_ls.setup { sources = { null_ls.builtins.code_actions.shellcheck, null_ls.builtins.code_actions.gitsigns, --null_ls.builtins.completion.spell, null_ls.builtins.diagnostics.eslint, null_ls.builtins.diagnostics.ruff, null_ls.builtins.diagnostics.statix, null_ls.builtins.diagnostics.commitlint, null_ls.builtins.formatting.beautysh, null_ls.builtins.formatting.jq, null_ls.builtins.formatting.ruff, null_ls.builtins.formatting.stylua, }, } local servers = { ["lua_ls"] = {}, ["tsserver"] = {}, ["gopls"] = { settings = { gopls = { gofumpt = true, staticcheck = true, completeUnimported = true, usePlaceholders = true, analyses = { unusedparams = true, }, }, }, }, ["emmet_ls"] = {}, ["html"] = {}, ["pyright"] = {}, ["ruff_lsp"] = {}, --["nil_ls"] = {}, ["nixd"] = {}, ["rnix"] = {}, ["bashls"] = {}, ["taplo"] = {}, ["sqlls"] = {}, ["clangd"] = {}, ["phpactor"] = {}, --["postgres_lsp"] = {}, } for k, v in pairs(servers) do lspconfig[k].setup(vim.tbl_deep_extend("force", { capabilities = capabilities, diagnostic = { virtual_text = true, severity_sort = true, }, }, v)) end