From 8b2a5741e07e2d6d5e8103e5e12356d3a9f0b8ba Mon Sep 17 00:00:00 2001 From: Steven Arcangeli Date: Tue, 29 Aug 2023 16:38:35 -0700 Subject: feat: formatter config function is passed the buffer number (#9) --- lua/conform/init.lua | 17 +++++++++++------ lua/conform/runner.lua | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'lua/conform') 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 M.formatters_by_ft = {} ----@type table +---@type table 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 -- cgit v1.2.3-70-g09d2