This repository has been archived on 2024-05-02. You can view files and clone it, but cannot push or open issues or pull requests.
neovim-flake/neovim-ide/plugin/lsp.lua

92 lines
2.9 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,
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"] = {},
["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
vim.g.rustaceanvim = {
server = {
settings = {
-- rust-analyzer language server configuration
["rust-analyzer"] = {
check = { command = "clippy" },
},
},
},
}