nvim: Add conform.nvim formatter
In the process of moving away from null-ls, added formatting with the help of conform.nvim. Brings one new command, :ConformInfo which can also be reached via `<leader>vc`. AutoFormat on saving remains disabled by default but can be enabled with :FormatEnable (and disabled again with :FormatDisable) or quickly through `<localleader>lL`. Manual formatting works like before with `<localleader>ll`. Uses the formatters set in the plugin (similar setup to null-ls before) but automatically falls back to lsp formatters if it does not have its own and lsp has one enabled.
This commit is contained in:
parent
1def627edd
commit
293dc8a467
8 changed files with 81 additions and 48 deletions
|
|
@ -66,6 +66,85 @@ return {
|
|||
require("plugins.config.lsp")
|
||||
end,
|
||||
},
|
||||
|
||||
|
||||
-- formatting setup
|
||||
{
|
||||
"stevearc/conform.nvim",
|
||||
config = function()
|
||||
require("conform").setup({
|
||||
lsp_fallback = true,
|
||||
format_after_save = function(bufnr)
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
return { lsp_fallback = true }
|
||||
end,
|
||||
formatters_by_ft = {
|
||||
angular = { { "prettierd", "prettier" } },
|
||||
astro = { { "prettierd", "prettier" } },
|
||||
bash = { "shfmt" },
|
||||
bib = { "bibtex-tidy" },
|
||||
javascript = { { "prettierd", "prettier" } },
|
||||
javascriptreact = { { "prettierd", "prettier" } },
|
||||
json = { "jq" },
|
||||
lua = { "stylua" },
|
||||
python = { "ruff_fix", "ruff_format" },
|
||||
sh = { "shfmt" },
|
||||
typescript = { { "prettierd", "prettier" } },
|
||||
vue = { { "prettierd", "prettier" } },
|
||||
zsh = { "shfmt" },
|
||||
},
|
||||
formatters = {
|
||||
-- enable python isort functionality
|
||||
ruff_fix = {
|
||||
prepend_args = { "--select", "I" },
|
||||
},
|
||||
},
|
||||
})
|
||||
vim.api.nvim_create_user_command("FormatDisable", function(args)
|
||||
if args.bang then
|
||||
-- FormatDisable! will disable formatting just for this buffer
|
||||
vim.b.disable_autoformat = true
|
||||
else
|
||||
vim.g.disable_autoformat = true
|
||||
end
|
||||
end, {
|
||||
desc = "Disable formatting on save",
|
||||
bang = true,
|
||||
})
|
||||
vim.api.nvim_create_user_command("FormatEnable", function()
|
||||
vim.b.disable_autoformat = false
|
||||
vim.g.disable_autoformat = false
|
||||
end, {
|
||||
desc = "Enable formatting on save",
|
||||
})
|
||||
end,
|
||||
cmd = { "ConformInfo" },
|
||||
event = { "BufReadPre" },
|
||||
keys = {
|
||||
{
|
||||
"<localleader>ll",
|
||||
function()
|
||||
require("conform").format({ async = true, lsp_fallback = true })
|
||||
end,
|
||||
desc = "Format buffer",
|
||||
},
|
||||
{
|
||||
"<localleader>lL",
|
||||
function()
|
||||
vim.g.disable_autoformat = not vim.g.disable_autoformat
|
||||
end,
|
||||
desc = "Toggle AutoFormat",
|
||||
},
|
||||
{
|
||||
"<leader>vf",
|
||||
":ConformInfo<cr>",
|
||||
desc = "ConformInfo",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- completion setup
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue