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.
78 lines
3.2 KiB
78 lines
3.2 KiB
2 years ago
|
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("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,
|
||
|
})
|
||
|
|
||
|
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
|
||
|
})
|
||
|
|
||
|
|
||
|
lspconfig.flux_lsp.setup{}
|