Compare commits

...

2 Commits

Author SHA1 Message Date
sam_oneal 2906689a29 fix: remap unclash.nvim to conflict-free bindings
Avoid overlapping LSP/diffview keymaps on a new Git > Conflict
(<leader>gx*) group. Navigation stays on ]x/[x.
2026-09-10 11:16:43 -06:00
sam_oneal 670f6325a1 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
2026-09-10 11:12:36 -06:00
3 changed files with 67 additions and 1 deletions
+3 -1
View File
@@ -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" },
+1
View File
@@ -82,6 +82,7 @@ return {
{ "<leader>D", group = "Database" },
{ "<leader>f", group = "Find" },
{ "<leader>g", group = "Git" },
{ "<leader>gx", group = "Conflict" },
{ "<leader>o", group = "Overseer" },
{ "<leader>s", group = "Search / Symbols" },
{ "<leader>t", group = "Test" },
+63
View File
@@ -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",
},
{
"<leader>gxc",
function()
require("unclash").accept_current()
end,
desc = "Accept Current (Conflict)",
},
{
"<leader>gxi",
function()
require("unclash").accept_incoming()
end,
desc = "Accept Incoming (Conflict)",
},
{
"<leader>gxb",
function()
require("unclash").accept_both()
end,
desc = "Accept Both (Conflict)",
},
{
"<leader>gxm",
function()
require("unclash").open_merge_editor()
end,
desc = "Open Merge Editor (Conflict)",
},
{
"<leader>gxp",
function()
require("unclash.snacks").pick()
end,
desc = "Pick Conflicts (Snacks)",
},
},
},
}