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"
}
})
2 years ago
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"))
2 years ago
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"))
2 years ago
-- 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"))
2 years ago
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"))
2 years ago
end
local default_capabilities = require("cmp_nvim_lsp").default_capabilities(
vim.lsp.protocol.make_client_capabilities())
2 years ago
local lspconfig = require("lspconfig")
lspconfig.util.default_config = vim.tbl_extend("force",
lspconfig.util.default_config, {
on_attach = default_on_attach,
capabilities = default_capabilities
})
2 years ago
require("mason-null-ls").setup({
ensure_installed = { 'shellcheck', 'goimports', 'luaformatter' },
2 years ago
automatic_installation = false,
automatic_setup = true, -- Recommended, but optional
handlers = {}
2 years ago
})
require("null-ls").setup({ sources = {} })
2 years ago
-- 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
}
2 years ago
require("mason-lspconfig").setup_handlers({
function(server_name) -- default handler (optional)
require("lspconfig")[server_name].setup({ capabilities = capabilities })
end,
["lua_ls"] = function()
2 years ago
require("lspconfig").lua_ls.setup({
settings = { Lua = { diagnostics = { globals = { "vim" } } } },
capabilities = capabilities
2 years ago
})
end,
["flux_lsp"] = function()
require 'lspconfig'.flux_lsp.setup {
cmd = {
"/home/nige/dotfiles/.config/nvim/bin/flux-lsp", "-l",
"/tmp/fluxlsp"
},
capabilities = capabilities
}
end
2 years ago
})
vim.diagnostic.config({
virtual_text = false,
2 years ago
-- float = { show_header = true, souce = "always", border = "rounded", wrap = true, },
float = {
show_header = true,
source = true,
border = "solid",
},
severity_sort = true -- default to false
2 years ago
})