From ef85f34f21f88d04b2c447d9ce5be2dc80a69977 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20F=2E=20Bortl=C3=ADk?= Date: Sat, 11 Jul 2026 14:38:11 +0200 Subject: [PATCH] fix: set diffview hook for added files The hook for setting up keymaps and autocommands didn't fire correctly if the first file in the review was a new file, so it was diffed against diffview://null, which caused some autocommands to not fire appropriately or some state (reviewer.tabid) not to be set correctly. --- lua/gitlab/actions/discussions/init.lua | 1 + lua/gitlab/reviewer/init.lua | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lua/gitlab/actions/discussions/init.lua b/lua/gitlab/actions/discussions/init.lua index 98cbfde5..51a5c7e5 100644 --- a/lua/gitlab/actions/discussions/init.lua +++ b/lua/gitlab/actions/discussions/init.lua @@ -90,6 +90,7 @@ M.initialize_discussions = function() end) reviewer.set_callback_for_buf_read(function(args) vim.api.nvim_set_option_value("modifiable", false, { buf = args.buf }) + reviewer.update_winid_for_buffer(args.buf) reviewer.set_keymaps(args.buf) reviewer.set_reviewer_autocommands(args.buf) end) diff --git a/lua/gitlab/reviewer/init.lua b/lua/gitlab/reviewer/init.lua index 28d85f5c..3b276a38 100644 --- a/lua/gitlab/reviewer/init.lua +++ b/lua/gitlab/reviewer/init.lua @@ -59,9 +59,9 @@ M.open = function() end end + M.is_open = true vim.api.nvim_command(string.format("%s %s..%s", diffview_open_command, diff_refs.base_sha, diff_refs.head_sha)) - M.is_open = true M.diffview = require("diffview.lib").get_current_view() if M.diffview == nil then u.notify("Could not find Diffview view", vim.log.levels.ERROR) @@ -304,7 +304,11 @@ M.set_callback_for_buf_read = function(callback) pattern = { "DiffviewDiffBufRead" }, group = group, callback = function(...) - if vim.api.nvim_get_current_tabpage() == M.tabid then + -- Only run the callback when we're in the MR's tabpage or when the tabpage has + -- not yet been set (tabid = nil) in a freshly started review (is_open = true). + -- TODO: This is a hacky workaround for cases when an added file is diffeed + -- against diffview://null and this autocommand fires before tabid is set. + if vim.api.nvim_get_current_tabpage() == M.tabid or (M.is_open and M.tabid == nil) then callback(...) end end,