From dc6fd7a3876dd28a2f213619a7edcd88c0627b3b Mon Sep 17 00:00:00 2001 From: Barrett Ruth <62671086+barrettruth@users.noreply.github.com> Date: Fri, 6 Mar 2026 13:04:21 -0500 Subject: [PATCH] feat: add committia.vim integration (#166) ## Problem committia.vim's diff pane (`ft=git`, buffer name `__committia_diff__`) is rejected by the `ft=git` guard in the `FileType` callback, preventing diffs.nvim from highlighting it. ## Solution Add a `committia` config toggle following the same pattern as `neogit`/`gitsigns`. When enabled, the `ft=git` guard also allows committia's `__committia_diff__` buffer through. Closes #161 --- lua/diffs/init.lua | 17 +++++++++++++++++ plugin/diffs.lua | 5 ++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lua/diffs/init.lua b/lua/diffs/init.lua index 06b6ad9..a9551a5 100644 --- a/lua/diffs/init.lua +++ b/lua/diffs/init.lua @@ -40,6 +40,8 @@ ---@class diffs.GitsignsConfig +---@class diffs.CommittiaConfig + ---@class diffs.ConflictKeymaps ---@field ours string|false ---@field theirs string|false @@ -65,6 +67,7 @@ ---@field fugitive diffs.FugitiveConfig|false ---@field neogit diffs.NeogitConfig|false ---@field gitsigns diffs.GitsignsConfig|false +---@field committia diffs.CommittiaConfig|false ---@field conflict diffs.ConflictConfig ---@class diffs @@ -145,6 +148,7 @@ local default_config = { fugitive = false, neogit = false, gitsigns = false, + committia = false, conflict = { enabled = true, disable_diagnostics = true, @@ -599,6 +603,10 @@ local function init() opts.gitsigns = {} end + if opts.committia == true then + opts.committia = {} + end + vim.validate('debug', opts.debug, function(v) return v == nil or type(v) == 'boolean' or type(v) == 'string' end, 'boolean or string (file path)') @@ -612,6 +620,9 @@ local function init() vim.validate('gitsigns', opts.gitsigns, function(v) return v == nil or v == false or type(v) == 'table' end, 'table or false') + vim.validate('committia', opts.committia, function(v) + return v == nil or v == false or type(v) == 'table' + end, 'table or false') vim.validate('extra_filetypes', opts.extra_filetypes, 'table', true) vim.validate('highlights', opts.highlights, 'table', true) @@ -995,6 +1006,12 @@ function M.get_fugitive_config() return config.fugitive end +---@return diffs.CommittiaConfig|false +function M.get_committia_config() + init() + return config.committia +end + ---@return diffs.ConflictConfig function M.get_conflict_config() init() diff --git a/plugin/diffs.lua b/plugin/diffs.lua index 43c5564..bce599d 100644 --- a/plugin/diffs.lua +++ b/plugin/diffs.lua @@ -23,7 +23,10 @@ vim.api.nvim_create_autocmd('FileType', { callback = function(args) local diffs = require('diffs') if args.match == 'git' then - if not diffs.get_fugitive_config() or not diffs.is_fugitive_buffer(args.buf) then + local is_fugitive = diffs.get_fugitive_config() and diffs.is_fugitive_buffer(args.buf) + local is_committia = diffs.get_committia_config() + and vim.api.nvim_buf_get_name(args.buf):match('__committia_diff__$') + if not is_fugitive and not is_committia then return end end