fix(neovim): improve formatting setup
This commit is contained in:
parent
c70ecc1dd1
commit
62284ccb57
|
@ -6,6 +6,16 @@ require("nvim-lightbulb").setup({
|
|||
}
|
||||
})
|
||||
|
||||
LspFormat = function(bufnr)
|
||||
vim.lsp.buf.format({
|
||||
filter = function(client)
|
||||
return not vim.tbl_contains({ "tsserver", "jsonls", "rnix" }, client.name)
|
||||
end,
|
||||
bufnr,
|
||||
timeout_ms = 5000,
|
||||
})
|
||||
end
|
||||
|
||||
local format_augroup = vim.api.nvim_create_augroup("LspFormatting", {})
|
||||
local on_attach = function(client, bufnr)
|
||||
-- codelens
|
||||
|
@ -21,8 +31,7 @@ local on_attach = function(client, bufnr)
|
|||
group = format_augroup,
|
||||
buffer = bufnr,
|
||||
callback = function()
|
||||
-- TODO switch to `vim.lsp.buf.format` after updating to nvim 0.8
|
||||
vim.lsp.buf.formatting_seq_sync(nil, nil, { "tsserver", "null-ls" })
|
||||
LspFormat(bufnr)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
@ -42,50 +51,30 @@ if not configs.glslls then
|
|||
}
|
||||
end
|
||||
|
||||
local default_capabilities = function()
|
||||
local capabilities_ = vim.lsp.protocol.make_client_capabilities()
|
||||
local capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities_)
|
||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||
return capabilities
|
||||
end
|
||||
local capabilities_ = vim.lsp.protocol.make_client_capabilities()
|
||||
local capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities_)
|
||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||
|
||||
local capabilities = default_capabilities()
|
||||
local capabilities_no_formatting = default_capabilities()
|
||||
capabilities_no_formatting.textDocument.formatting = false
|
||||
capabilities_no_formatting.textDocument.rangeFormatting = false
|
||||
capabilities_no_formatting.textDocument.range_formatting = false
|
||||
|
||||
-- lsp configs
|
||||
local c = {
|
||||
default = {
|
||||
on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
},
|
||||
no_formatting = {
|
||||
on_attach = function(client, bufnr)
|
||||
client.server_capabilities.documentFormattingProvider = false
|
||||
client.server_capabilities.documentRangeFormattingProvider = false
|
||||
on_attach(client, bufnr)
|
||||
end,
|
||||
capabilities = capabilities_no_formatting,
|
||||
},
|
||||
local default_config = {
|
||||
on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
|
||||
config.bashls.setup(c.default)
|
||||
config.jsonls.setup(c.default)
|
||||
config.yamlls.setup(c.default)
|
||||
config.html.setup(c.default)
|
||||
config.cssls.setup(c.default)
|
||||
config.dockerls.setup(c.default)
|
||||
config.rnix.setup(c.no_formatting)
|
||||
config.tsserver.setup(c.default)
|
||||
config.graphql.setup(c.default)
|
||||
config.pylsp.setup(c.default)
|
||||
config.terraformls.setup(c.default)
|
||||
config.hls.setup(c.default)
|
||||
config.bufls.setup(c.default)
|
||||
config.vimls.setup(c.default)
|
||||
config.glslls.setup(c.default)
|
||||
config.bashls.setup(default_config)
|
||||
config.jsonls.setup(default_config)
|
||||
config.yamlls.setup(default_config)
|
||||
config.html.setup(default_config)
|
||||
config.cssls.setup(default_config)
|
||||
config.dockerls.setup(default_config)
|
||||
config.rnix.setup(default_config)
|
||||
config.tsserver.setup(default_config)
|
||||
config.graphql.setup(default_config)
|
||||
config.pylsp.setup(default_config)
|
||||
config.terraformls.setup(default_config)
|
||||
config.hls.setup(default_config)
|
||||
config.bufls.setup(default_config)
|
||||
config.vimls.setup(default_config)
|
||||
config.glslls.setup(default_config)
|
||||
|
||||
config.rust_analyzer.setup {
|
||||
on_attach = on_attach,
|
||||
|
@ -160,20 +149,17 @@ null_ls.setup({
|
|||
null_ls.builtins.diagnostics.eslint_d,
|
||||
null_ls.builtins.diagnostics.stylelint,
|
||||
null_ls.builtins.formatting.shfmt,
|
||||
null_ls.builtins.formatting.prettier_d_slim.with {
|
||||
filetypes = {
|
||||
"css",
|
||||
"scss",
|
||||
"less",
|
||||
"html",
|
||||
"json",
|
||||
"jsonc",
|
||||
"yaml",
|
||||
"markdown",
|
||||
"graphql",
|
||||
"handlebars",
|
||||
null_ls.builtins.formatting.eslint,
|
||||
-- TODO prettier_d_slim isn't working
|
||||
null_ls.builtins.formatting.prettier.with {
|
||||
disabled_filetypes = {
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
},
|
||||
},
|
||||
null_ls.builtins.formatting.stylelint,
|
||||
null_ls_custom.formatting.nix_fmt,
|
||||
null_ls.builtins.formatting.buf,
|
||||
null_ls.builtins.formatting.rustfmt,
|
||||
|
|
|
@ -21,13 +21,7 @@ wk.register({
|
|||
d = { require("telescope.builtin").lsp_document_symbols, "Document symbol" },
|
||||
w = { require("telescope.builtin").lsp_workspace_symbols, "Workspace symbol" },
|
||||
},
|
||||
f = {
|
||||
function()
|
||||
-- TODO switch to `vim.lsp.buf.format` after updating to nvim 0.8
|
||||
vim.lsp.buf.formatting_seq_sync(nil, nil, { "tsserver", "null-ls" })
|
||||
end,
|
||||
"Format file",
|
||||
},
|
||||
f = { LspFormat, "Format file" },
|
||||
a = { vim.lsp.buf.code_action, "Code actions" },
|
||||
r = { vim.lsp.buf.rename, "Rename" },
|
||||
l = { vim.lsp.codelens.run, "Run codelens" },
|
||||
|
|
Loading…
Reference in a new issue