You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1012 B
Lua
35 lines
1012 B
Lua
local vim = vim
|
|
|
|
require("conform").setup({
|
|
log_level = vim.log.levels.DEBUG,
|
|
formatters_by_ft = {
|
|
mason = { "html_beautify" },
|
|
html = { "html_beautify" },
|
|
xml = { "xmllint" },
|
|
javascript = { "biome" },
|
|
json = { "js_beautify" },
|
|
java = { "prettier" },
|
|
python = { "black" },
|
|
lua = { "stylua" },
|
|
},
|
|
format_on_save = {
|
|
timeout_ms = 5000,
|
|
lsp = "fallback",
|
|
},
|
|
})
|
|
|
|
local format = function(args)
|
|
local range = nil
|
|
if args and 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_format = "fallback", range = range })
|
|
end
|
|
vim.api.nvim_create_user_command("Format", format, { range = true })
|
|
vim.keymap.set("n", "<Leader>ft", format, { noremap = true, silent = true }, "Format buffer")
|
|
vim.keymap.set("v", "<Leader>ft", "<Esc><Cmd>Format<Cr>", { noremap = true, silent = true }, "Format range")
|