nvim: improve git integration (diffview, gitsigns)

This commit is contained in:
2023-07-08 15:20:43 +03:00
parent 55b0c9c4fc
commit fee1efaadd
4 changed files with 58 additions and 0 deletions

View File

@ -11,9 +11,11 @@
"diffview.nvim": { "branch": "main", "commit": "86bf6182e2ea767c21711de8a3c396d9b635d970" },
"formatter.nvim": { "branch": "master", "commit": "fa4f2729cc2909db599169f22d8e55632d4c8d59" },
"friendly-snippets": { "branch": "main", "commit": "0dd6114bea08276d9111d58c5dce5e256bbc8921" },
"gitsigns.nvim": { "branch": "main", "commit": "256569c2fe697a3003dbd49ff474e5935af9066c" },
"lazy.nvim": { "branch": "main", "commit": "e6bf3a0d9c4899dcf832270f79bb1cee8fbc506e" },
"lspkind.nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" },
"lualine.nvim": { "branch": "master", "commit": "05d78e9fd0cdfb4545974a5aa14b1be95a86e9c9" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "d381fcb78d7a562c3244e1c8f76406954649db36" },
"mason.nvim": { "branch": "main", "commit": "7d7efc738e08fc5bee822857db45cb6103f0b0c1" },
"mbc-colorscheme.nvim": { "branch": "main", "commit": "6d74768526fc36d057c393b5aaa174c688b23a10" },
"mini.bracketed": { "branch": "main", "commit": "4d5d8d8cfadb82b4e2d9196da2ecd5cd938a9c48" },

View File

@ -65,6 +65,42 @@ vim.keymap.set("n", "<leader>gn", function()
vim.lsp.buf.rename()
end, { desc = "Rename" })
-- vcs
vim.keymap.set("n", "<leader>vs", function()
require("gitsigns").stage_hunk()
end, { desc = "Stage Hunk" })
vim.keymap.set("n", "<leader>vr", function()
require("gitsigns").reset_hunk()
end, { desc = "Reset Hunk" })
vim.keymap.set("v", "<leader>vs", function()
require("gitsigns").stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
end, { desc = "Stage Hunk" })
vim.keymap.set("v", "<leader>vr", function()
require("gitsigns").reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
end, { desc = "Reset Hunk" })
vim.keymap.set("n", "<leader>va", function()
require("gitsigns").stage_buffer()
end, { desc = "Stage Buffer" })
vim.keymap.set("n", "<leader>vu", function()
require("gitsigns").undo_stage_hunk()
end, { desc = "Undo Stage Hunk" })
vim.keymap.set("n", "<leader>vx", function()
require("gitsigns").reset_buffer()
end, { desc = "Reset Buffer" })
vim.keymap.set("n", "<leader>vp", function()
require("gitsigns").preview_hunk()
end, { desc = "Preview Hunk" })
vim.keymap.set("n", "<leader>vb", function()
require("gitsigns").blame_line({ full = true })
end, { desc = "Blame Line" })
vim.keymap.set("n", "<leader>vB", function()
require("gitsigns").toggle_current_line_blame()
end, { desc = "Toggle Blame" })
vim.keymap.set("n", "<leader>vt", function()
require("gitsigns").toggle_deleted()
end, { desc = "Toggle Deleted" })
vim.keymap.set("n", "<leader>vd", "<cmd>DiffviewToggle<CR>", { desc = "Diff" })
-- neotest
vim.keymap.set("n", "<leader>na", function()
require("neotest").run.attach()

View File

@ -0,0 +1,14 @@
return {
"sindrets/diffview.nvim",
config = function()
vim.api.nvim_create_user_command("DiffviewToggle", function(e)
local view = require("diffview.lib").get_current_view()
if view then
vim.cmd("DiffviewClose")
else
vim.cmd("DiffviewOpen " .. e.args)
end
end, { nargs = "*" })
end,
}

View File

@ -0,0 +1,6 @@
return {
"lewis6991/gitsigns.nvim",
config = function()
require("gitsigns").setup()
end,
}