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
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
|
|
})
|