summaryrefslogtreecommitdiffstats
path: root/lua/conform/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/conform/init.lua')
-rw-r--r--lua/conform/init.lua23
1 files changed, 21 insertions, 2 deletions
diff --git a/lua/conform/init.lua b/lua/conform/init.lua
index da55067..1a648f0 100644
--- a/lua/conform/init.lua
+++ b/lua/conform/init.lua
@@ -9,6 +9,7 @@ M.formatters_by_ft = {}
M.formatters = {}
M.notify_on_error = true
+M.notify_no_formatters = true
---@type conform.DefaultFormatOpts
M.default_format_opts = {}
@@ -38,6 +39,10 @@ M.setup = function(opts)
if notify_on_error ~= nil then
M.notify_on_error = notify_on_error
end
+ local notify_no_formatters = opts.notify_no_formatters
+ if notify_no_formatters ~= nil then
+ M.notify_no_formatters = notify_no_formatters
+ end
local aug = vim.api.nvim_create_augroup("Conform", { clear = true })
if opts.format_on_save then
@@ -370,6 +375,8 @@ local function has_lsp_formatter(opts)
return not vim.tbl_isempty(lsp_format.get_format_clients(opts))
end
+local has_notified_ft_no_formatters = {}
+
---Format a buffer
---@param opts? conform.FormatOpts
---@param callback? fun(err: nil|string, did_edit: nil|boolean) Called once formatting has completed
@@ -504,8 +511,20 @@ M.format = function(opts, callback)
return true
else
local level = has_explicit_formatters and "warn" or "debug"
- log[level]("No formatters found for %s", vim.api.nvim_buf_get_name(opts.bufnr))
- callback("No formatters found for buffer")
+ log[level]("Formatters unavailable for %s", vim.api.nvim_buf_get_name(opts.bufnr))
+
+ local ft = vim.bo[opts.bufnr].filetype
+ if
+ not vim.tbl_isempty(formatter_names)
+ and not has_notified_ft_no_formatters[ft]
+ and not opts.quiet
+ and M.notify_no_formatters
+ then
+ notify(string.format("Formatters unavailable for %s file", ft), vim.log.levels.WARN)
+ has_notified_ft_no_formatters[ft] = true
+ end
+
+ callback("No formatters available for buffer")
return false
end
end