Nixfiles/nvim/lua/lsp.lua
2021-12-14 19:06:36 +01:00

104 lines
2.4 KiB
Lua

vim.lsp.set_log_level("info")
local null_ls = require("null-ls")
local sources = {
--null_ls.builtins.code_actions.gitsigns,
null_ls.builtins.formatting.stylua,
null_ls.builtins.formatting.trim_whitespace,
null_ls.builtins.diagnostics.shellcheck,
--null_ls.builtins.diagnostics.codespell,
}
local lsp_status = require("lsp-status")
lsp_status.register_progress()
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true
capabilities = vim.tbl_extend("keep", capabilities, lsp_status.capabilities)
require("lspkind").init({})
local lspconfig = require("lspconfig")
local configs = require("lspconfig/configs")
local util = require("lspconfig/util")
--[[ if not lspconfig.rsh_lsp then
configs.rsh_lsp = {
default_config = {
cmd = { "rsh-lsp" },
filetypes = { "rsh" },
root_dir = util.path.dirname,
settings = {},
},
}
end ]]
null_ls.setup({
sources = sources,
on_attach = lsp_status.on_attach,
})
lspconfig.rust_analyzer.setup({
on_attach = lsp_status.on_attach,
settings = {
["rust-analyzer"] = {
procMacro = {
enable = true,
},
cargo = {
allFeatures = true,
loadOutDirsFromCheck = true,
},
updates = {
channel = "nightly",
},
},
},
capabilities = capabilities,
})
lspconfig.jsonls.setup({
on_attach = lsp_status.on_attach,
cmd = { "json-languageserver", "--stdio" },
capabilities = capabilities,
})
lspconfig.bashls.setup({
on_attach = lsp_status.on_attach,
capabilities = capabilities,
})
--[[ lspconfig.rsh_lsp.setup({
on_attach = lsp_status.on_attach,
capabilities = capabilities,
}) ]]
lspconfig.clangd.setup({
on_attach = lsp_status.on_attach,
handlers = lsp_status.extensions.clangd.setup(),
init_options = { clangdFileStatus = true },
capabilities = capabilities,
})
lspconfig.texlab.setup({
on_attach = lsp_status.on_attach,
capabilities = capabilities,
})
lspconfig.rnix.setup({
on_attach = lsp_status.on_attach,
capabilities = capabilities,
})
lspconfig.dartls.setup({
on_attach = lsp_status.on_attach,
capabilities = capabilities,
cmd = { "dart", vim.fn.expand("$DART_SDK") .. "/snapshots/analysis_server.dart.snapshot", "--lsp" },
})
lspconfig.vuels.setup({
on_attach = lsp_status.on_attach,
capabilities = capabilities,
config = {
vetur = {
defaultFormatter = {
js = "prettier",
ts = "prettier",
html = "prettier",
},
},
},
})