NeoVim: Use Neogit + Diffview for git operations instead of fugitive

This commit is contained in:
Pratik Tripathy
2024-03-18 00:38:08 +05:30
parent 4a02522419
commit 39992add32
2 changed files with 40 additions and 18 deletions

View File

@@ -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", "[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(true, "WARN"), { desc = "Next Warning" })
vim.keymap.set("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" }) vim.keymap.set("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" })
-- Git
vim.keymap.set("n", "<leader>gg", "<Cmd>0G<cr>", { desc = "Git: Open fugitive in a new buffer" })

View File

@@ -1,16 +1,30 @@
return { return {
-- Fugitive -- Better fugitive: neogit
{ "tpope/vim-fugitive" },
-- Git worktree
{ {
"ThePrimeagen/git-worktree.nvim", "NeogitOrg/neogit",
config = function() dependencies = {
-- FIX: Open files do NOT get replaced with the changed branch "nvim-lua/plenary.nvim",
require("telescope").load_extension("git_worktree") "sindrets/diffview.nvim",
"nvim-telescope/telescope.nvim",
},
config = true,
keys = {
{ "<leader>gg", "<cmd>Neogit<cr>", desc = "Git: Open Neogit", mode = { "n" } },
{ "<leader>gL", "<cmd>Neogit log<cr>", desc = "Git: Open Neogit Log", mode = { "n" } },
},
},
vim.keymap.set("n", "<leader>gw", "<cmd> lua require('telescope').extensions.git_worktree.git_worktrees()<CR>") -- Git Diffview
end, {
"sindrets/diffview.nvim",
keys = {
{ "<leader>gd", "<cmd>DiffviewOpen<cr>", desc = "Git: Open Diffview", mode = { "n" } },
{ "<leader>gD", "<cmd>DiffviewOpen<cr>", desc = "Git: Open Diffview against master", mode = { "n" } },
{ "<leader>gh", "<cmd>DiffviewFileHistory<cr>", 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 -- Adds git related signs to the gutter, as well as utilities for managing changes
@@ -77,18 +91,29 @@ return {
-- normal mode -- normal mode
map("n", "<leader>gp", gs.preview_hunk, { desc = "Git: Preview hunk" }) map("n", "<leader>gp", gs.preview_hunk, { desc = "Git: Preview hunk" })
map("n", "<leader>gD", gs.diffthis, { desc = "Git: diff against index" }) -- map("n", "<leader>gD", gs.diffthis, { desc = "Git: diff against index" })
map("n", "<leader>gd", function() -- map("n", "<leader>gd", function()
gs.diffthis("~") -- gs.diffthis("~")
end, { desc = "Git: diff against last commit" }) -- end, { desc = "Git: diff against last commit" })
-- Toggles -- Toggles
map("n", "<leader>gtb", gs.toggle_current_line_blame, { desc = "Git: toggle blame line" }) map("n", "<leader>gtb", gs.toggle_current_line_blame, { desc = "Git: toggle blame line" })
map("n", "<leader>gtd", gs.toggle_deleted, { desc = "Git: toggle show deleted" }) map("n", "<leader>gtd", gs.toggle_deleted, { desc = "Git: toggle show deleted" })
-- Text object -- Text object
map({ "o", "x" }, "gih", ":<C-U>Gitsigns select_hunk<CR>", { desc = "Git: Visual select hunk" }) map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", { desc = "Git: Visual select hunk" })
end, 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", "<leader>gw", "<cmd> lua require('telescope').extensions.git_worktree.git_worktrees()<CR>")
end,
},
} }