diff --git a/common/.config/nvim/lua/config/keymaps.lua b/common/.config/nvim/lua/config/keymaps.lua index 469d356..933b94a 100644 --- a/common/.config/nvim/lua/config/keymaps.lua +++ b/common/.config/nvim/lua/config/keymaps.lua @@ -88,6 +88,3 @@ vim.keymap.set("n", "]e", diagnostic_goto(true, "ERROR"), { desc = "Next Error" vim.keymap.set("n", "[e", diagnostic_goto(false, "ERROR"), { desc = "Prev Error" }) vim.keymap.set("n", "]w", diagnostic_goto(true, "WARN"), { desc = "Next Warning" }) vim.keymap.set("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" }) - --- Git -vim.keymap.set("n", "gg", "0G", { desc = "Git: Open fugitive in a new buffer" }) diff --git a/common/.config/nvim/lua/plugins/code-git.lua b/common/.config/nvim/lua/plugins/code-git.lua index 214f855..0116479 100644 --- a/common/.config/nvim/lua/plugins/code-git.lua +++ b/common/.config/nvim/lua/plugins/code-git.lua @@ -1,16 +1,30 @@ return { - -- Fugitive - { "tpope/vim-fugitive" }, - - -- Git worktree + -- Better fugitive: neogit { - "ThePrimeagen/git-worktree.nvim", - config = function() - -- FIX: Open files do NOT get replaced with the changed branch - require("telescope").load_extension("git_worktree") + "NeogitOrg/neogit", + dependencies = { + "nvim-lua/plenary.nvim", + "sindrets/diffview.nvim", + "nvim-telescope/telescope.nvim", + }, + config = true, + keys = { + { "gg", "Neogit", desc = "Git: Open Neogit", mode = { "n" } }, + { "gL", "Neogit log", desc = "Git: Open Neogit Log", mode = { "n" } }, + }, + }, - vim.keymap.set("n", "gw", " lua require('telescope').extensions.git_worktree.git_worktrees()") - end, + -- Git Diffview + { + "sindrets/diffview.nvim", + keys = { + + { "gd", "DiffviewOpen", desc = "Git: Open Diffview", mode = { "n" } }, + { "gD", "DiffviewOpen", desc = "Git: Open Diffview against master", mode = { "n" } }, + { "gh", "DiffviewFileHistory", desc = "Git: Show file history", mode = { "n" } }, + }, + -- TODO: + -- Toggle Diffview keymap }, -- Adds git related signs to the gutter, as well as utilities for managing changes @@ -77,18 +91,29 @@ return { -- normal mode map("n", "gp", gs.preview_hunk, { desc = "Git: Preview hunk" }) - map("n", "gD", gs.diffthis, { desc = "Git: diff against index" }) - map("n", "gd", function() - gs.diffthis("~") - end, { desc = "Git: diff against last commit" }) + -- map("n", "gD", gs.diffthis, { desc = "Git: diff against index" }) + -- map("n", "gd", function() + -- gs.diffthis("~") + -- end, { desc = "Git: diff against last commit" }) -- Toggles map("n", "gtb", gs.toggle_current_line_blame, { desc = "Git: toggle blame line" }) map("n", "gtd", gs.toggle_deleted, { desc = "Git: toggle show deleted" }) -- Text object - map({ "o", "x" }, "gih", ":Gitsigns select_hunk", { desc = "Git: Visual select hunk" }) + map({ "o", "x" }, "ih", ":Gitsigns select_hunk", { desc = "Git: Visual select hunk" }) end, }, }, + + -- Git worktree + { + "ThePrimeagen/git-worktree.nvim", + config = function() + -- FIX: Open files do NOT get replaced with the changed branch + require("telescope").load_extension("git_worktree") + + vim.keymap.set("n", "gw", " lua require('telescope').extensions.git_worktree.git_worktrees()") + end, + }, }