doc: add plug mappings for merge conflict resolution
This commit is contained in:
parent
669cca53ae
commit
f3a72926d2
3 changed files with 73 additions and 29 deletions
|
|
@ -280,6 +280,41 @@ Example configuration: >lua
|
|||
vim.keymap.set('n', '<leader>gD', '<Plug>(diffs-gvdiff)')
|
||||
<
|
||||
|
||||
*<Plug>(diffs-conflict-ours)*
|
||||
<Plug>(diffs-conflict-ours)
|
||||
Accept current (ours) change. Replaces the
|
||||
conflict block with ours content.
|
||||
|
||||
*<Plug>(diffs-conflict-theirs)*
|
||||
<Plug>(diffs-conflict-theirs)
|
||||
Accept incoming (theirs) change. Replaces the
|
||||
conflict block with theirs content.
|
||||
|
||||
*<Plug>(diffs-conflict-both)*
|
||||
<Plug>(diffs-conflict-both)
|
||||
Accept both changes (ours then theirs).
|
||||
|
||||
*<Plug>(diffs-conflict-none)*
|
||||
<Plug>(diffs-conflict-none)
|
||||
Reject both changes (delete entire block).
|
||||
|
||||
*<Plug>(diffs-conflict-next)*
|
||||
<Plug>(diffs-conflict-next)
|
||||
Jump to next conflict marker. Wraps around.
|
||||
|
||||
*<Plug>(diffs-conflict-prev)*
|
||||
<Plug>(diffs-conflict-prev)
|
||||
Jump to previous conflict marker. Wraps around.
|
||||
|
||||
Example configuration: >lua
|
||||
vim.keymap.set('n', 'co', '<Plug>(diffs-conflict-ours)')
|
||||
vim.keymap.set('n', 'ct', '<Plug>(diffs-conflict-theirs)')
|
||||
vim.keymap.set('n', 'cb', '<Plug>(diffs-conflict-both)')
|
||||
vim.keymap.set('n', 'cn', '<Plug>(diffs-conflict-none)')
|
||||
vim.keymap.set('n', ']x', '<Plug>(diffs-conflict-next)')
|
||||
vim.keymap.set('n', '[x', '<Plug>(diffs-conflict-prev)')
|
||||
<
|
||||
|
||||
Diff buffer mappings: ~
|
||||
*diffs-q*
|
||||
q Close the diff window. Available in all `diffs://`
|
||||
|
|
|
|||
|
|
@ -348,35 +348,19 @@ end
|
|||
local function setup_keymaps(bufnr, config)
|
||||
local km = config.keymaps
|
||||
|
||||
if km.ours then
|
||||
vim.keymap.set('n', km.ours, function()
|
||||
M.resolve_ours(bufnr, config)
|
||||
end, { buffer = bufnr })
|
||||
end
|
||||
if km.theirs then
|
||||
vim.keymap.set('n', km.theirs, function()
|
||||
M.resolve_theirs(bufnr, config)
|
||||
end, { buffer = bufnr })
|
||||
end
|
||||
if km.both then
|
||||
vim.keymap.set('n', km.both, function()
|
||||
M.resolve_both(bufnr, config)
|
||||
end, { buffer = bufnr })
|
||||
end
|
||||
if km.none then
|
||||
vim.keymap.set('n', km.none, function()
|
||||
M.resolve_none(bufnr, config)
|
||||
end, { buffer = bufnr })
|
||||
end
|
||||
if km.next then
|
||||
vim.keymap.set('n', km.next, function()
|
||||
M.goto_next(bufnr)
|
||||
end, { buffer = bufnr })
|
||||
end
|
||||
if km.prev then
|
||||
vim.keymap.set('n', km.prev, function()
|
||||
M.goto_prev(bufnr)
|
||||
end, { buffer = bufnr })
|
||||
local maps = {
|
||||
{ km.ours, '<Plug>(diffs-conflict-ours)' },
|
||||
{ km.theirs, '<Plug>(diffs-conflict-theirs)' },
|
||||
{ km.both, '<Plug>(diffs-conflict-both)' },
|
||||
{ km.none, '<Plug>(diffs-conflict-none)' },
|
||||
{ km.next, '<Plug>(diffs-conflict-next)' },
|
||||
{ km.prev, '<Plug>(diffs-conflict-prev)' },
|
||||
}
|
||||
|
||||
for _, map in ipairs(maps) do
|
||||
if map[1] then
|
||||
vim.keymap.set('n', map[1], map[2], { buffer = bufnr })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -57,3 +57,28 @@ end, { desc = 'Unified diff (horizontal)' })
|
|||
vim.keymap.set('n', '<Plug>(diffs-gvdiff)', function()
|
||||
cmds.gdiff(nil, true)
|
||||
end, { desc = 'Unified diff (vertical)' })
|
||||
|
||||
local function conflict_action(fn)
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local config = require('diffs').get_conflict_config()
|
||||
fn(bufnr, config)
|
||||
end
|
||||
|
||||
vim.keymap.set('n', '<Plug>(diffs-conflict-ours)', function()
|
||||
conflict_action(require('diffs.conflict').resolve_ours)
|
||||
end, { desc = 'Accept current (ours) change' })
|
||||
vim.keymap.set('n', '<Plug>(diffs-conflict-theirs)', function()
|
||||
conflict_action(require('diffs.conflict').resolve_theirs)
|
||||
end, { desc = 'Accept incoming (theirs) change' })
|
||||
vim.keymap.set('n', '<Plug>(diffs-conflict-both)', function()
|
||||
conflict_action(require('diffs.conflict').resolve_both)
|
||||
end, { desc = 'Accept both changes' })
|
||||
vim.keymap.set('n', '<Plug>(diffs-conflict-none)', function()
|
||||
conflict_action(require('diffs.conflict').resolve_none)
|
||||
end, { desc = 'Reject both changes' })
|
||||
vim.keymap.set('n', '<Plug>(diffs-conflict-next)', function()
|
||||
require('diffs.conflict').goto_next(vim.api.nvim_get_current_buf())
|
||||
end, { desc = 'Jump to next conflict' })
|
||||
vim.keymap.set('n', '<Plug>(diffs-conflict-prev)', function()
|
||||
require('diffs.conflict').goto_prev(vim.api.nvim_get_current_buf())
|
||||
end, { desc = 'Jump to previous conflict' })
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue