refactor(git): centralize registrations, defer submodule loads

This commit is contained in:
2026-04-30 16:23:18 +02:00
parent bf9cc73626
commit 8e6b13a7a3
7 changed files with 131 additions and 151 deletions
+88 -6
View File
@@ -17,16 +17,98 @@ function M.status()
return vim.b.git_status or ""
end
function M.setup()
function M.init()
for name, link in pairs(HIGHLIGHTS) do
vim.api.nvim_set_hl(0, name, { link = link, default = true })
end
require("git.repo").setup()
require("git.object").setup()
require("git.diff").setup()
require("git.cmd").setup()
require("git.log").setup()
local group = vim.api.nvim_create_augroup("ow.git", { clear = true })
vim.api.nvim_create_autocmd(
{ "BufReadPost", "BufNewFile", "BufWritePost", "FileChangedShellPost" },
{
group = group,
callback = function(args)
require("git.repo").refresh_buf(args.buf)
end,
}
)
vim.api.nvim_create_autocmd({ "BufDelete", "BufWipeout" }, {
group = group,
callback = function(args)
require("git.repo").unregister(args.buf)
end,
})
vim.api.nvim_create_autocmd("FocusGained", {
group = group,
callback = function()
require("git.repo").refresh_buf(vim.api.nvim_get_current_buf())
end,
})
vim.api.nvim_create_autocmd("VimLeavePre", {
group = group,
callback = function()
require("git.repo").stop_all()
end,
})
vim.api.nvim_create_autocmd("BufReadCmd", {
pattern = "git://*",
group = group,
callback = function(args)
require("git.object").read_uri(args.buf)
end,
})
vim.api.nvim_create_autocmd("BufReadCmd", {
pattern = "gitlog://*",
group = group,
callback = function(args)
require("git.log").read_uri(args.buf)
end,
})
vim.api.nvim_create_user_command("Glog", function(opts)
require("git.log").run_glog(opts)
end, {
nargs = "*",
complete = function(...)
return require("git.log").complete_glog(...)
end,
desc = "Show git log",
})
local function diff_split_cmd(vertical)
return function(opts)
require("git.diff").split({
rev = opts.args ~= "" and opts.args or nil,
vertical = vertical,
})
end
end
vim.api.nvim_create_user_command(
"Gdiffsplit",
diff_split_cmd(true),
{ nargs = "?", desc = "Diff against <rev>" }
)
vim.api.nvim_create_user_command(
"Gvdiffsplit",
diff_split_cmd(true),
{ nargs = "?", desc = "Diff against <rev> (vertical split)" }
)
vim.api.nvim_create_user_command(
"Ghdiffsplit",
diff_split_cmd(false),
{ nargs = "?", desc = "Diff against <rev> (horizontal split)" }
)
vim.api.nvim_create_user_command("G", function(opts)
require("git.cmd").run(opts.fargs)
end, {
nargs = "*",
complete = function(...)
return require("git.cmd").complete(...)
end,
})
end
return M