diff options
author | Steven Arcangeli <stevearc@stevearc.com> | 2024-05-07 16:25:03 -0700 |
---|---|---|
committer | Steven Arcangeli <stevearc@stevearc.com> | 2024-05-07 16:25:15 -0700 |
commit | 6dc1603ea408f476a57937bbeaf7f86520a21a98 (patch) | |
tree | 095014f597d256cd3c3a4bfc40df8552a7c65470 /lua/conform/runner.lua | |
parent | 393210360b9e807862e5329763526509f52b5218 (diff) |
feat: formatters can use $RELATIVE_FILEPATH in args (#349)
Diffstat (limited to 'lua/conform/runner.lua')
-rw-r--r-- | lua/conform/runner.lua | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lua/conform/runner.lua b/lua/conform/runner.lua index 0f31e64..b3a1e61 100644 --- a/lua/conform/runner.lua +++ b/lua/conform/runner.lua @@ -33,8 +33,17 @@ M.build_cmd = function(formatter_name, ctx, config) end end + local cwd + if config.cwd then + cwd = config.cwd(config, ctx) + end + local relative_filename = fs.relative_path(cwd or vim.fn.getcwd(), ctx.filename) + if type(args) == "string" then - local interpolated = args:gsub("$FILENAME", ctx.filename):gsub("$DIRNAME", ctx.dirname) + local interpolated = args + :gsub("$FILENAME", ctx.filename) + :gsub("$DIRNAME", ctx.dirname) + :gsub("$RELATIVE_FILEPATH", relative_filename) return command .. " " .. interpolated else local cmd = { command } @@ -44,6 +53,8 @@ M.build_cmd = function(formatter_name, ctx, config) v = ctx.filename elseif v == "$DIRNAME" then v = ctx.dirname + elseif v == "$RELATIVE_FILEPATH" then + v = relative_filename end table.insert(cmd, v) end |