80 lines
2.6 KiB
Lua
80 lines
2.6 KiB
Lua
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", "<leader>xd", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" })
|
|
vim.keymap.set("n", "<leader>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
|