aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lua/conform/init.lua17
-rw-r--r--lua/conform/runner.lua4
2 files changed, 13 insertions, 8 deletions
diff --git a/lua/conform/init.lua b/lua/conform/init.lua
index d1a6849..90eedbe 100644
--- a/lua/conform/init.lua
+++ b/lua/conform/init.lua
@@ -47,7 +47,7 @@ local M = {}
---@type table<string, string[]|conform.FormatterList>
M.formatters_by_ft = {}
----@type table<string, conform.FormatterConfig|fun(): conform.FormatterConfig>
+---@type table<string, conform.FormatterConfig|fun(bufnr: integer): nil|conform.FormatterConfig>
M.formatters = {}
M.setup = function(opts)
@@ -334,9 +334,17 @@ end
---@private
---@param formatter string
+---@param bufnr? integer
---@return nil|conform.FormatterConfig
-M.get_formatter_config = function(formatter)
+M.get_formatter_config = function(formatter, bufnr)
+ if not bufnr or bufnr == 0 then
+ bufnr = vim.api.nvim_get_current_buf()
+ end
+ ---@type nil|conform.FormatterConfig|fun(bufnr: integer): nil|conform.FormatterConfig
local config = M.formatters[formatter]
+ if type(config) == "function" then
+ config = config(bufnr)
+ end
if not config then
local ok
ok, config = pcall(require, "conform.formatters." .. formatter)
@@ -344,9 +352,6 @@ M.get_formatter_config = function(formatter)
return nil
end
end
- if type(config) == "function" then
- config = config()
- end
if config.stdin == nil then
config.stdin = true
@@ -362,7 +367,7 @@ M.get_formatter_info = function(formatter, bufnr)
if not bufnr or bufnr == 0 then
bufnr = vim.api.nvim_get_current_buf()
end
- local config = M.get_formatter_config(formatter)
+ local config = M.get_formatter_config(formatter, bufnr)
if not config then
return {
name = formatter,
diff --git a/lua/conform/runner.lua b/lua/conform/runner.lua
index 2471ec2..d546a41 100644
--- a/lua/conform/runner.lua
+++ b/lua/conform/runner.lua
@@ -266,7 +266,7 @@ M.format_async = function(bufnr, formatters, range, callback)
end
idx = idx + 1
- local config = assert(require("conform").get_formatter_config(formatter.name))
+ local config = assert(require("conform").get_formatter_config(formatter.name, bufnr))
local ctx = M.build_context(bufnr, config, range)
local jid
jid = run_formatter(bufnr, formatter, config, ctx, input_lines, function(err, output)
@@ -322,7 +322,7 @@ M.format_sync = function(bufnr, formatters, timeout_ms, quiet, range)
end
local done = false
local result = nil
- local config = assert(require("conform").get_formatter_config(formatter.name))
+ local config = assert(require("conform").get_formatter_config(formatter.name, bufnr))
local ctx = M.build_context(bufnr, config, range)
local jid = run_formatter(bufnr, formatter, config, ctx, input_lines, function(err, output)
if err then