refactor(git): introduce Revision class, normalize naming, slim docs

This commit is contained in:
2026-04-30 09:44:24 +02:00
parent 775add9b15
commit d95de4bc1d
10 changed files with 244 additions and 428 deletions
+19 -19
View File
@@ -1,11 +1,3 @@
local cmd = require("git.cmd")
local commit = require("git.commit")
local diff = require("git.diff")
local log = require("git.log")
local object = require("git.object")
local repo = require("git.repo")
local sidebar = require("git.sidebar")
local HIGHLIGHTS = {
GitDeleted = "Removed",
GitIgnored = "Comment",
@@ -28,10 +20,16 @@ end
---@param path string
---@return string?
function M.head(path)
return repo.head(path)
return require("git.repo").head(path)
end
function M.setup()
local cmd = require("git.cmd")
local commit = require("git.commit")
local diff = require("git.diff")
local log = require("git.log")
local repo = require("git.repo")
for name, link in pairs(HIGHLIGHTS) do
vim.api.nvim_set_hl(0, name, { link = link, default = true })
end
@@ -40,7 +38,7 @@ function M.setup()
pattern = "git://*",
group = group,
callback = function(args)
object.read_uri(args.buf)
require("git.object").read_uri(args.buf)
end,
})
vim.api.nvim_create_autocmd("BufReadCmd", {
@@ -81,21 +79,23 @@ function M.setup()
vim.keymap.set(
"n",
"<leader>gg",
sidebar.toggle,
require("git.sidebar").toggle,
{ desc = "Toggle git status sidebar" }
)
vim.keymap.set("n", "<leader>gl", log.open, { desc = "Show git log" })
vim.keymap.set("n", "<leader>gl", function()
log.open({ max_count = 1000 })
end, { desc = "Show git log" })
vim.keymap.set("n", "<leader>gd", function()
diff.split({ revspec = "", vertical = true })
diff.split({ vertical = true })
end, { desc = "Diff index vs worktree (vsplit)" })
vim.keymap.set("n", "<leader>gD", function()
diff.split({ revspec = "HEAD", vertical = true })
diff.split({ rev = "HEAD", vertical = true })
end, { desc = "Diff HEAD vs worktree (vsplit)" })
vim.keymap.set("n", "<leader>gh", function()
diff.split({ revspec = "", vertical = false })
diff.split({ vertical = false })
end, { desc = "Diff index vs worktree (split)" })
vim.keymap.set("n", "<leader>gH", function()
diff.split({ revspec = "HEAD", vertical = false })
diff.split({ rev = "HEAD", vertical = false })
end, { desc = "Diff HEAD vs worktree (split)" })
vim.keymap.set("n", "<leader>gc", function()
commit.commit()
@@ -110,7 +110,7 @@ function M.setup()
local function diff_split_cmd(vertical)
return function(opts)
diff.split({
revspec = opts.args,
rev = opts.args ~= "" and opts.args or nil,
vertical = vertical,
})
end
@@ -118,12 +118,12 @@ function M.setup()
vim.api.nvim_create_user_command(
"Gdiffsplit",
diff_split_cmd(true),
{ nargs = "?", desc = "Diff against <revspec> (vsplit)" }
{ nargs = "?", desc = "Diff against <rev> (vsplit)" }
)
vim.api.nvim_create_user_command(
"Ghdiffsplit",
diff_split_cmd(false),
{ nargs = "?", desc = "Diff against <revspec> (split)" }
{ nargs = "?", desc = "Diff against <rev> (split)" }
)
cmd.setup()