refactor(git): rewrite diff module around :diffsplit
This commit is contained in:
+14
-12
@@ -142,22 +142,18 @@ end
|
||||
|
||||
local DIFF_DIRECTIONS = { "vertical", "horizontal" }
|
||||
|
||||
local function default_vertical()
|
||||
return vim.tbl_contains(vim.opt.diffopt:get(), "vertical")
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("Gdiffsplit", function(opts)
|
||||
local fargs = opts.fargs
|
||||
local vertical = default_vertical()
|
||||
local mods = nil
|
||||
local rev_idx = 1
|
||||
if fargs[1] == "vertical" then
|
||||
vertical = true
|
||||
mods = { vertical = true }
|
||||
rev_idx = 2
|
||||
elseif fargs[1] == "horizontal" then
|
||||
vertical = false
|
||||
mods = { vertical = false }
|
||||
rev_idx = 2
|
||||
end
|
||||
require("git.diff").split({ rev = fargs[rev_idx], vertical = vertical })
|
||||
require("git.diff").split({ target = fargs[rev_idx], mods = mods })
|
||||
end, {
|
||||
nargs = "*",
|
||||
complete = function(arg_lead, cmd_line, _)
|
||||
@@ -219,16 +215,22 @@ vim.keymap.set("n", "<Plug>(git-edit)", function()
|
||||
end, { silent = true, desc = "Edit a git object" })
|
||||
|
||||
vim.keymap.set("n", "<Plug>(git-diff-vertical)", function()
|
||||
require("git.diff").split({ vertical = true })
|
||||
require("git.diff").split({ mods = { vertical = true } })
|
||||
end, { silent = true, desc = "Diff against index (vertical)" })
|
||||
vim.keymap.set("n", "<Plug>(git-diff-horizontal)", function()
|
||||
require("git.diff").split({ vertical = false })
|
||||
require("git.diff").split({ mods = { vertical = false } })
|
||||
end, { silent = true, desc = "Diff against index (horizontal)" })
|
||||
vim.keymap.set("n", "<Plug>(git-diff-vertical-head)", function()
|
||||
require("git.diff").split({ rev = "HEAD", vertical = true })
|
||||
require("git.diff").split({
|
||||
target = "HEAD",
|
||||
mods = { vertical = true },
|
||||
})
|
||||
end, { silent = true, desc = "Diff against HEAD (vertical)" })
|
||||
vim.keymap.set("n", "<Plug>(git-diff-horizontal-head)", function()
|
||||
require("git.diff").split({ rev = "HEAD", vertical = false })
|
||||
require("git.diff").split({
|
||||
target = "HEAD",
|
||||
mods = { vertical = false },
|
||||
})
|
||||
end, { silent = true, desc = "Diff against HEAD (horizontal)" })
|
||||
|
||||
vim.keymap.set("n", "<Plug>(git-status-toggle)", function()
|
||||
|
||||
Reference in New Issue
Block a user