|
|
|
require("mason-lspconfig").setup()
|
|
|
|
|
|
|
|
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", "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("null-ls")
|
|
|
|
local mason_null_ls = require("mason-null-ls")
|
|
|
|
mason_null_ls.setup({
|
|
|
|
ensure_installed = {
|
|
|
|
-- Opt to list sources here, when available in mason.
|
|
|
|
},
|
|
|
|
automatic_installation = false,
|
|
|
|
automatic_setup = true, -- Recommended, but optional
|
|
|
|
})
|
|
|
|
|
|
|
|
-- mason_null_ls.setup_handlers()
|
|
|
|
|
|
|
|
-- 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({
|
|
|
|
-- float = { show_header = true, souce = "always", border = "rounded", wrap = true, },
|
|
|
|
float = { show_header = true, souce = "always", border = "rounded" },
|
|
|
|
severity_sort = true, -- default to false
|
|
|
|
})
|