From 339171fe27a16242c2f09bf82241cbd3d23d8273 Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Mon, 2 Feb 2026 15:47:16 -0500 Subject: [PATCH] fix: short circuit logic --- lua/fugitive-ts/init.lua | 57 +++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/lua/fugitive-ts/init.lua b/lua/fugitive-ts/init.lua index 7f2c037..5a2d064 100644 --- a/lua/fugitive-ts/init.lua +++ b/lua/fugitive-ts/init.lua @@ -180,6 +180,14 @@ function M.attach(bufnr) end, }) + vim.api.nvim_create_autocmd('BufReadPost', { + buffer = bufnr, + callback = function() + dbg('BufReadPost event, re-highlighting buffer %d', bufnr) + highlight_buffer(bufnr) + end, + }) + vim.api.nvim_create_autocmd('BufWipeout', { buffer = bufnr, callback = function() @@ -194,6 +202,28 @@ function M.refresh(bufnr) highlight_buffer(bufnr) end +local function compute_highlight_groups() + local normal = vim.api.nvim_get_hl(0, { name = 'Normal' }) + local diff_add = vim.api.nvim_get_hl(0, { name = 'DiffAdd' }) + local diff_delete = vim.api.nvim_get_hl(0, { name = 'DiffDelete' }) + local diff_added = resolve_hl('diffAdded') + local diff_removed = resolve_hl('diffRemoved') + + local bg = normal.bg or 0x1e1e2e + local add_bg = diff_add.bg or 0x2e4a3a + local del_bg = diff_delete.bg or 0x4a2e3a + local add_fg = diff_added.fg or diff_add.fg or 0x80c080 + local del_fg = diff_removed.fg or diff_delete.fg or 0xc08080 + + local blended_add = blend_color(add_bg, bg, 0.4) + local blended_del = blend_color(del_bg, bg, 0.4) + + vim.api.nvim_set_hl(0, 'FugitiveTsAdd', { bg = blended_add }) + vim.api.nvim_set_hl(0, 'FugitiveTsDelete', { bg = blended_del }) + vim.api.nvim_set_hl(0, 'FugitiveTsAddNr', { fg = add_fg, bg = blended_add }) + vim.api.nvim_set_hl(0, 'FugitiveTsDeleteNr', { fg = del_fg, bg = blended_del }) +end + ---@param opts? fugitive-ts.Config function M.setup(opts) opts = opts or {} @@ -233,25 +263,16 @@ function M.setup(opts) parser.set_debug(config.debug) highlight.set_debug(config.debug) - local normal = vim.api.nvim_get_hl(0, { name = 'Normal' }) - local diff_add = vim.api.nvim_get_hl(0, { name = 'DiffAdd' }) - local diff_delete = vim.api.nvim_get_hl(0, { name = 'DiffDelete' }) - local diff_added = resolve_hl('diffAdded') - local diff_removed = resolve_hl('diffRemoved') + compute_highlight_groups() - local bg = normal.bg or 0x1e1e2e - local add_bg = diff_add.bg or 0x2e4a3a - local del_bg = diff_delete.bg or 0x4a2e3a - local add_fg = diff_added.fg or diff_add.fg or 0x80c080 - local del_fg = diff_removed.fg or diff_delete.fg or 0xc08080 - - local blended_add = blend_color(add_bg, bg, 0.4) - local blended_del = blend_color(del_bg, bg, 0.4) - - vim.api.nvim_set_hl(0, 'FugitiveTsAdd', { bg = blended_add }) - vim.api.nvim_set_hl(0, 'FugitiveTsDelete', { bg = blended_del }) - vim.api.nvim_set_hl(0, 'FugitiveTsAddNr', { fg = add_fg, bg = blended_add }) - vim.api.nvim_set_hl(0, 'FugitiveTsDeleteNr', { fg = del_fg, bg = blended_del }) + vim.api.nvim_create_autocmd('ColorScheme', { + callback = function() + compute_highlight_groups() + for bufnr, _ in pairs(attached_buffers) do + highlight_buffer(bufnr) + end + end, + }) end return M