Skip to content

Commit d2659c4

Browse files
committed
feat: add close keymaps to commit log panel
1 parent 3dc498c commit d2659c4

File tree

4 files changed

+22
-3
lines changed

4 files changed

+22
-3
lines changed

lua/diffview/config.lua

+4
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,10 @@ M.defaults = {
245245
{ "n", "q", actions.close, { desc = "Close help menu" } },
246246
{ "n", "<esc>", actions.close, { desc = "Close help menu" } },
247247
},
248+
commit_log_panel = {
249+
{ "n", "q", actions.close, { desc = "Close commit log" } },
250+
{ "n", "<esc>", actions.close, { desc = "Close commit log" } },
251+
},
248252
},
249253
}
250254
-- stylua: ignore end

lua/diffview/scene/views/diff/diff_view.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ end
8282
function DiffView:post_open()
8383
vim.cmd("redraw")
8484

85-
self.commit_log_panel = CommitLogPanel(self.adapter, {
85+
self.commit_log_panel = CommitLogPanel(self, self.adapter, {
8686
name = fmt("diffview://%s/log/%d/%s", self.adapter.ctx.dir, self.tabpage, "commit_log"),
8787
})
8888

lua/diffview/scene/views/file_history/file_history_view.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function FileHistoryView:init(opt)
4040
end
4141

4242
function FileHistoryView:post_open()
43-
self.commit_log_panel = CommitLogPanel(self.adapter, {
43+
self.commit_log_panel = CommitLogPanel(self, self.adapter, {
4444
name = ("diffview://%s/log/%d/%s"):format(self.adapter.ctx.dir, self.tabpage, "commit_log"),
4545
})
4646

lua/diffview/ui/panels/commit_log_panel.lua

+16-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ end
5151

5252
---@param adapter VCSAdapter
5353
---@param opt CommitLogPanelSpec
54-
function CommitLogPanel:init(adapter, opt)
54+
function CommitLogPanel:init(parent, adapter, opt)
5555
self:super({
5656
bufname = opt.name,
5757
config = opt.config or get_user_config().commit_log_panel.win_config,
@@ -65,6 +65,21 @@ function CommitLogPanel:init(adapter, opt)
6565
vim.bo[self.bufid].bufhidden = "wipe"
6666
end,
6767
})
68+
69+
local conf = get_user_config().keymaps
70+
local default_opt = { silent = true, nowait = true, buffer = self.bufid }
71+
72+
for _, mapping in ipairs(conf.commit_log_panel) do
73+
local map_opt = vim.tbl_extend("force", default_opt, mapping[4] or {}, { buffer = self.bufid })
74+
vim.keymap.set(mapping[1], mapping[2], mapping[3], map_opt)
75+
end
76+
77+
parent.emitter:on("close", function(e)
78+
if self:is_focused() then
79+
self:close()
80+
e:stop_propagation()
81+
end
82+
end)
6883
end
6984

7085
---@param self CommitLogPanel

0 commit comments

Comments
 (0)