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