Nixfiles/nvim/lua/lsp.lua
2021-11-05 23:25:36 +01:00

105 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,
}
null_ls.config({ sources = sources })
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
lspconfig["null-ls"].setup{
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"
}
}
}
}