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.gitsigns, null_ls.builtins.diagnostics.statix, null_ls.builtins.diagnostics.commitlint, null_ls.builtins.diagnostics.djlint.with({ extra_filetypes = { "html" } }), null_ls.builtins.formatting.shfmt, null_ls.builtins.formatting.ruff, null_ls.builtins.formatting.stylua, null_ls.builtins.formatting.djlint.with({ extra_filetypes = { "html" } }), }, }) local servers = { ["lua_ls"] = {}, ["tsserver"] = {}, ["gopls"] = { settings = { gopls = { gofumpt = true, staticcheck = true, completeUnimported = true, usePlaceholders = true, analyses = { unusedparams = true, }, }, }, }, ["emmet_ls"] = {}, ["html"] = { settings = { provideFormatter = true, }, }, ["cssls"] = {}, ["eslint"] = {}, ["pyright"] = {}, ["ruff_lsp"] = {}, --["nil_ls"] = {}, ["nixd"] = {}, ["rnix"] = {}, ["bashls"] = {}, ["taplo"] = {}, ["sqlls"] = {}, ["clangd"] = {}, ["phpactor"] = {}, ["jsonls"] = {}, ["tailwindcss"] = {}, --["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 vim.g.rustaceanvim = { server = { settings = { -- rust-analyzer language server configuration ["rust-analyzer"] = { check = { command = "clippy" }, }, }, }, }