From 670f6325a11c2a14546187cec46d299b6d8b51f6 Mon Sep 17 00:00:00 2001 From: Samuel O'Neal Date: Thu, 10 Sep 2026 11:12:36 -0600 Subject: [PATCH 1/2] feat: add merge conflict UI and telescope picker - Add unclash.nvim for interactive merge conflict resolution (inline highlighting, action buttons, 3-way merge editor, snacks picker integration) - Enable LazyVim telescope extra with fzf-native for fuzzy finding --- lua/config/lazy.lua | 4 ++- lua/plugins/git.lua | 63 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/lua/config/lazy.lua b/lua/config/lazy.lua index 4a2110e..8f16d26 100644 --- a/lua/config/lazy.lua +++ b/lua/config/lazy.lua @@ -6,7 +6,7 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then if vim.v.shell_error ~= 0 then vim.api.nvim_echo({ { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, + { out, "WarningMsg" }, { "\nPress any key to exit..." }, }, true, {}) vim.fn.getchar() @@ -30,6 +30,8 @@ require("lazy").setup({ colorscheme = "catppuccin-mocha", }, }, + -- Import LazyVim extras for the picker + { import = "lazyvim.plugins.extras.editor.telescope" }, -- Import LazyVim extras for languages { import = "lazyvim.plugins.extras.lang.go" }, { import = "lazyvim.plugins.extras.lang.json" }, diff --git a/lua/plugins/git.lua b/lua/plugins/git.lua index 6c2c0e7..58f6367 100644 --- a/lua/plugins/git.lua +++ b/lua/plugins/git.lua @@ -12,4 +12,67 @@ return { }, }, }, + { + "madmaxieee/unclash.nvim", + lazy = false, + opts = { + action_buttons = { + enabled = true, + }, + annotations = { + enabled = true, + }, + }, + keys = { + { + "]x", + function() + require("unclash").next_conflict() + end, + desc = "Next Conflict", + }, + { + "[x", + function() + require("unclash").prev_conflict() + end, + desc = "Prev Conflict", + }, + { + "co", + function() + require("unclash").open_merge_editor() + end, + desc = "Open Merge Editor", + }, + { + "cc", + function() + require("unclash").accept_current() + end, + desc = "Accept Current", + }, + { + "ci", + function() + require("unclash").accept_incoming() + end, + desc = "Accept Incoming", + }, + { + "cb", + function() + require("unclash").accept_both() + end, + desc = "Accept Both", + }, + { + "fx", + function() + require("unclash.snacks").pick() + end, + desc = "Pick Conflicts", + }, + }, + }, } -- 2.52.0 From 2906689a299e500740f026f59938c08635e1996f Mon Sep 17 00:00:00 2001 From: Samuel O'Neal Date: Thu, 10 Sep 2026 11:16:43 -0600 Subject: [PATCH 2/2] fix: remap unclash.nvim to conflict-free bindings Avoid overlapping LSP/diffview keymaps on a new Git > Conflict (gx*) group. Navigation stays on ]x/[x. --- lua/plugins/editor.lua | 1 + lua/plugins/git.lua | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/lua/plugins/editor.lua b/lua/plugins/editor.lua index 7392c8f..327ddb4 100644 --- a/lua/plugins/editor.lua +++ b/lua/plugins/editor.lua @@ -82,6 +82,7 @@ return { { "D", group = "Database" }, { "f", group = "Find" }, { "g", group = "Git" }, + { "gx", group = "Conflict" }, { "o", group = "Overseer" }, { "s", group = "Search / Symbols" }, { "t", group = "Test" }, diff --git a/lua/plugins/git.lua b/lua/plugins/git.lua index 58f6367..d924fdb 100644 --- a/lua/plugins/git.lua +++ b/lua/plugins/git.lua @@ -39,39 +39,39 @@ return { desc = "Prev Conflict", }, { - "co", - function() - require("unclash").open_merge_editor() - end, - desc = "Open Merge Editor", - }, - { - "cc", + "gxc", function() require("unclash").accept_current() end, - desc = "Accept Current", + desc = "Accept Current (Conflict)", }, { - "ci", + "gxi", function() require("unclash").accept_incoming() end, - desc = "Accept Incoming", + desc = "Accept Incoming (Conflict)", }, { - "cb", + "gxb", function() require("unclash").accept_both() end, - desc = "Accept Both", + desc = "Accept Both (Conflict)", }, { - "fx", + "gxm", + function() + require("unclash").open_merge_editor() + end, + desc = "Open Merge Editor (Conflict)", + }, + { + "gxp", function() require("unclash.snacks").pick() end, - desc = "Pick Conflicts", + desc = "Pick Conflicts (Snacks)", }, }, }, -- 2.52.0