You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
4.1 KiB

require("mason-lspconfig").setup({
ensure_installed = {
"ansiblels", "bashls", "docker_compose_language_service", "dockerls",
"eslint", "gopls", "lua_ls", "marksman", "sqlls", "taplo", "vimls",
"yamlls"
}
})
local addDesc = function(t, v)
t["desc"] = v
return t
end
local default_on_attach = function(client, bufnr)
client.server_capabilities.document_formatting = false
client.server_capabilities.document_range_formatting = false
local opts = { buffer = bufnr, remap = false }
if client.name == "eslint" then
vim.cmd.LspStop("eslint")
return
end
vim.keymap.set("n", "gd", vim.lsp.buf.definition,
addDesc(opts, "Go to definition"))
vim.keymap.set("n", "L", vim.lsp.buf.definition,
addDesc(opts, "Go to definition"))
vim.keymap.set("n", "K", vim.lsp.buf.hover, addDesc(opts, "Show Hint"))
vim.keymap.set("n", "gD", vim.diagnostic.setqflist,
addDesc(opts, "Show diagnostics"))
vim.keymap.set("n", "<leader>vws", vim.lsp.buf.workspace_symbol,
addDesc(opts, "Query workspace"))
vim.keymap.set("n", "<leader>vd", vim.diagnostic.open_float,
addDesc(opts, "Open diagnostics"))
vim.keymap.set("n", "[d", vim.diagnostic.goto_next,
addDesc(opts, "Go to next diagnostics item"))
vim.keymap.set("n", "]d", vim.diagnostic.goto_prev,
addDesc(opts, "Go to previous diagnostics item"))
vim.keymap.set("n", "<leader>vca", vim.lsp.buf.code_action,
addDesc(opts, "Code action"))
-- vim.keymap.set("n", "<F3>", vim.lsp.buf.code_action,
vim.keymap.set("n", "<F3>", ":CodeActionMenu<CR>",
addDesc(opts, "Code action"))
vim.keymap.set("n", "<leader>vrr", vim.lsp.buf.references,
addDesc(opts, "Go to reference"))
vim.keymap.set("n", "gr", vim.lsp.buf.references,
addDesc(opts, "Go to reference"))
vim.keymap.set("n", "<leader>vrn", vim.lsp.buf.rename,
addDesc(opts, "Rename"))
vim.keymap.set("n", "<F2>", vim.lsp.buf.rename, addDesc(opts, "Rename"))
vim.keymap.set("i", "<C-h>", vim.lsp.buf.signature_help,
addDesc(opts, "Get signature help"))
end
local default_capabilities = require("cmp_nvim_lsp").default_capabilities(
vim.lsp.protocol.make_client_capabilities())
local lspconfig = require("lspconfig")
lspconfig.util.default_config = vim.tbl_extend("force",
lspconfig.util.default_config, {
on_attach = default_on_attach,
capabilities = default_capabilities
})
require("mason-null-ls").setup({
ensure_installed = { 'shellcheck', 'goimports', 'luaformatter' },
automatic_installation = false,
automatic_setup = true, -- Recommended, but optional
handlers = {}
})
require("null-ls").setup({ sources = {} })
-- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers..
local capabilities = require("cmp_nvim_lsp").default_capabilities()
-- require 'lspconfig'.flux_lsp.setup {
-- cmd = { "/home/nige/.cargo/bin/flux-lsp", "-l", "/tmp/fluxlsp" },
-- capabilities = capabilities,
-- }
-- Version 0.8.30
require 'lspconfig'.flux_lsp.setup {
cmd = {
"/home/nige/dotfiles/.config/nvim/bin/flux-lsp", "-l", "/tmp/fluxlsp"
},
capabilities = capabilities
}
require("mason-lspconfig").setup_handlers({
function(server_name) -- default handler (optional)
require("lspconfig")[server_name].setup({ capabilities = capabilities })
end,
["lua_ls"] = function()
require("lspconfig").lua_ls.setup({
settings = { Lua = { diagnostics = { globals = { "vim" } } } },
capabilities = capabilities
})
end,
["flux_lsp"] = function()
require 'lspconfig'.flux_lsp.setup {
cmd = {
"/home/nige/dotfiles/.config/nvim/bin/flux-lsp", "-l",
"/tmp/fluxlsp"
},
capabilities = capabilities
}
end
})
vim.diagnostic.config({
virtual_text = false,
-- float = { show_header = true, souce = "always", border = "rounded", wrap = true, },
float = {
show_header = true,
source = true,
border = "solid",
},
severity_sort = true -- default to false
})