diff options
author | Nuno David <74260683+ndavd@users.noreply.github.com> | 2024-01-08 23:44:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-08 15:44:12 -0800 |
commit | 47ceff644e9d00872f410be374cc973eefa20ba9 (patch) | |
tree | 93ab57d185e343d45745b7a03d8ee48040b2ae7e | |
parent | 0e61fc88f725b4411e63b43470a397c6102534c7 (diff) |
feat(formatexpr): don't require LSP range formatting if operating on whole file (#272)
solves: https://github.com/stevearc/conform.nvim/issues/271
-rw-r--r-- | lua/conform/init.lua | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lua/conform/init.lua b/lua/conform/init.lua index f6ffe38..35ffb6e 100644 --- a/lua/conform/init.lua +++ b/lua/conform/init.lua @@ -721,10 +721,17 @@ M.formatexpr = function(opts) end local end_line = vim.fn.getline(end_lnum) local end_col = end_line:len() - opts.range = { - start = { start_lnum, 0 }, - ["end"] = { end_lnum, end_col }, - } + + if vim.v.count == vim.fn.line("$") then + -- Whole buffer is selected; use buffer formatting + opts.range = nil + else + opts.range = { + start = { start_lnum, 0 }, + ["end"] = { end_lnum, end_col }, + } + end + if M.format(opts) then return 0 elseif opts.lsp_fallback and not vim.tbl_isempty(lsp_format.get_format_clients(opts)) then |