local vim = vim require("conform").setup({ formatters_by_ft = { mason = { "html_beautify" }, html = { "html_beautify" }, xml = { "xmllint" }, javascript = { "prettier" }, 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", "ft", format, { noremap = true, silent = true }, "Format buffer") vim.keymap.set("v", "ft", "Format", { noremap = true, silent = true }, "Format range")