format.lua
Branches > main > 829c2fd > files / nvim / lua / format.lua
local ac = vim.api.nvim_create_autocmd
local ag = vim.api.nvim_create_augroup
--- Format with the LSP before writing (clojure-lsp uses cljfmt under the hood)
--- Disable with `:let b:format_on_write = v:false` (or g: for everything)
local function enabled(bufnr)
local b = vim.b[bufnr].format_on_write
if b ~= nil then return b end
return vim.g.format_on_write ~= false
end
local format_group = ag("Format", {clear = true})
ac("BufWritePre",
{callback = function(args)
if not enabled(args.buf) then return end
if #vim.lsp.get_clients({bufnr = args.buf, method = "textDocument/formatting"}) == 0 then return end
vim.lsp.buf.format({bufnr = args.buf, timeout_ms = 2000})
end,
group = format_group})