67 lines
1.8 KiB
Lua
67 lines
1.8 KiB
Lua
return {
|
|
"stevearc/conform.nvim",
|
|
event = { "BufReadPre", "BufNewFile" },
|
|
config = function()
|
|
local conform = require("conform")
|
|
|
|
conform.setup({
|
|
formatters_by_ft = {
|
|
javascript = { "prettierd" },
|
|
typescript = { "prettierd" },
|
|
javascriptreact = { "prettierd" },
|
|
typescriptreact = { "prettierd" },
|
|
svelte = { "prettierd" },
|
|
vue = { "prettierd" },
|
|
css = { "prettierd" },
|
|
html = { "prettierd" },
|
|
json = { "prettierd" },
|
|
yaml = { "prettierd" },
|
|
markdown = { "prettierd" },
|
|
graphql = { "prettierd" },
|
|
lua = { "stylua" },
|
|
python = { "isort", "black" },
|
|
astro = { "prettierd" },
|
|
nix = { "alejandra" },
|
|
},
|
|
format_on_save = function(bufnr)
|
|
-- Disable with a global or buffer-local variable
|
|
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
|
return
|
|
end
|
|
return { timeout_ms = 1000, lsp_format = "fallback" }
|
|
end,
|
|
})
|
|
|
|
vim.api.nvim_create_user_command("Format", function(args)
|
|
local range = nil
|
|
if args.count ~= -1 then
|
|
local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1]
|
|
range = {
|
|
start = { args.line1, 0 },
|
|
["end"] = { args.line2, end_line:len() },
|
|
}
|
|
end
|
|
require("conform").format({ async = true, lsp_fallback = true, range = range })
|
|
end, { range = true })
|
|
|
|
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 autoformat-on-save",
|
|
bang = true,
|
|
})
|
|
|
|
vim.api.nvim_create_user_command("FormatEnable", function()
|
|
vim.b.disable_autoformat = false
|
|
vim.g.disable_autoformat = false
|
|
end, {
|
|
desc = "Re-enable autoformat-on-save",
|
|
})
|
|
end,
|
|
}
|