diff options
Diffstat (limited to 'lua/conform/formatters/injected.lua')
-rw-r--r-- | lua/conform/formatters/injected.lua | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/lua/conform/formatters/injected.lua b/lua/conform/formatters/injected.lua index db5b3ae..b9d3acd 100644 --- a/lua/conform/formatters/injected.lua +++ b/lua/conform/formatters/injected.lua @@ -60,17 +60,29 @@ local function apply_indent(lines, indentation) end end ----@type conform.FileLuaFormatterConfig +---@class conform.InjectedFormatterConfig : conform.FileLuaFormatterConfig +---@field format fun(self: conform.InjectedFormatterConfig, ctx: conform.Context, lines: string[], callback: fun(err: nil|string, new_lines: nil|string[])) +---@field condition? fun(self: conform.InjectedFormatterConfig, ctx: conform.Context): boolean +---@field options conform.InjectedFormatterOptions + +---@class (exact) conform.InjectedFormatterOptions +---@field ignore_errors boolean + +---@type conform.InjectedFormatterConfig return { meta = { url = "lua/conform/formatters/injected.lua", description = "Format treesitter injected languages.", }, - condition = function(ctx) + options = { + -- Set to true to ignore errors + ignore_errors = false, + }, + condition = function(self, ctx) local ok = pcall(vim.treesitter.get_parser, ctx.buf) return ok end, - format = function(ctx, lines, callback) + format = function(self, ctx, lines, callback) local conform = require("conform") local log = require("conform.log") local util = require("conform.util") @@ -112,8 +124,20 @@ return { local function apply_format_results() if format_error then - callback(format_error) - return + if self.options.ignore_errors then + -- Find all of the conform errors in the replacements table and remove them + local i = 1 + while i <= #replacements do + if replacements[i].code then + table.remove(replacements, i) + else + i = i + 1 + end + end + else + callback(format_error) + return + end end local formatted_lines = vim.deepcopy(lines) @@ -133,6 +157,7 @@ return { local formatter_cb = function(err, idx, start_lnum, end_lnum, new_lines) if err then format_error = err + replacements[idx] = err else replacements[idx] = { start_lnum, end_lnum, new_lines } end |