nvim-mini/lua/pika/plugins/git.lua
2025-03-21 19:58:13 +01:00

212 lines
6.1 KiB
Lua

return {
{
"tanvirtin/vgit.nvim",
dependencies = { "nvim-lua/plenary.nvim", "nvim-tree/nvim-web-devicons" },
-- Lazy loading on 'VimEnter' event is necessary.
event = "VimEnter",
config = function()
require("vgit").setup(
-- keymaps = {
-- ["n <C-k>"] = {
-- function()
-- require("vgit").hunk_up()
-- end,
-- desc = "VGit Hunk Up",
-- },
-- ["n <C-j>"] = {
-- function()
-- require("vgit").hunk_down()
-- end,
-- desc = "VGit Hunk Down",
-- },
-- ["n <leader>gs"] = {
-- function()
-- require("vgit").buffer_hunk_stage()
-- end,
-- desc = "VGit Stage Hunk",
-- },
-- ["n <leader>gr"] = {
-- function()
-- require("vgit").buffer_hunk_reset()
-- end,
-- desc = "VGit Reset Hunk",
-- },
-- ["n <leader>gp"] = {
-- function()
-- require("vgit").buffer_hunk_preview()
-- end,
-- desc = "VGit Preview Hunk",
-- },
-- ["n <leader>gb"] = {
-- function()
-- require("vgit").buffer_blame_preview()
-- end,
-- desc = "VGit Blame Preview",
-- },
-- ["n <leader>gf"] = {
-- function()
-- require("vgit").buffer_diff_preview()
-- end,
-- desc = "VGit Diff Preview",
-- },
-- ["n <leader>gh"] = {
-- function()
-- require("vgit").buffer_history_preview()
-- end,
-- desc = "VGit History Preview",
-- },
-- ["n <leader>gu"] = {
-- function()
-- require("vgit").buffer_reset()
-- end,
-- desc = "VGit Reset Buffer",
-- },
-- ["n <leader>gcm"] = {
-- function()
-- require("vgit").project_commit_preview()
-- end,
-- desc = "VGit Commit Preview",
-- },
-- ["n <leader>gcc"] = {
-- function()
-- require("vgit").project_commits_preview()
-- end,
-- desc = "VGit Commits Preview",
-- },
-- ["n <leader>gcl"] = {
-- function()
-- require("vgit").project_logs_preview()
-- end,
-- desc = "VGit Logs Preview",
-- },
-- ["n <leader>gd"] = {
-- function()
-- require("vgit").project_diff_preview()
-- end,
-- desc = "VGit Project Diff",
-- },
-- ["n <leader>gx"] = {
-- function()
-- require("vgit").toggle_diff_preference()
-- end,
-- desc = "VGit Toggle Diff Preference",
-- },
-- },
)
end,
vim.keymap.set("n", "<C-k>", function()
require("vgit").hunk_up()
end, { desc = "VGit Hunk Up" }),
vim.keymap.set("n", "<C-j>", function()
require("vgit").hunk_down()
end, { desc = "VGit Hunk Down" }),
vim.keymap.set("n", "<leader>gs", function()
require("vgit").buffer_hunk_stage()
end, { desc = "VGit Stage Hunk" }),
vim.keymap.set("n", "<leader>gr", function()
require("vgit").buffer_hunk_reset()
end, { desc = "VGit Reset Hunk" }),
vim.keymap.set("n", "<leader>gp", function()
require("vgit").buffer_hunk_preview()
end, { desc = "VGit Preview Hunk" }),
vim.keymap.set("n", "<leader>gb", function()
require("vgit").buffer_blame_preview()
end, { desc = "VGit Blame Preview" }),
vim.keymap.set("n", "<leader>gf", function()
require("vgit").buffer_diff_preview()
end, { desc = "VGit Diff Preview" }),
vim.keymap.set("n", "<leader>gh", function()
require("vgit").buffer_history_preview()
end, { desc = "VGit History Preview" }),
vim.keymap.set("n", "<leader>gu", function()
require("vgit").buffer_reset()
end, { desc = "VGit Reset Buffer" }),
vim.keymap.set("n", "<leader>gcm", function()
require("vgit").project_commit_preview()
end, { desc = "VGit Commit Preview" }),
vim.keymap.set("n", "<leader>gcc", function()
require("vgit").project_commits_preview()
end, { desc = "VGit Commits Preview" }),
vim.keymap.set("n", "<leader>gcl", function()
require("vgit").project_logs_preview()
end, { desc = "VGit Logs Preview" }),
vim.keymap.set("n", "<leader>gd", function()
require("vgit").project_diff_preview()
end, { desc = "VGit Project Diff" }),
vim.keymap.set("n", "<leader>gx", function()
require("vgit").toggle_diff_preference()
end, { desc = "VGit Toggle Diff Preference" }),
},
{
"lewis6991/gitsigns.nvim",
opts = {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
signs_staged = {
add = { text = "" },
change = { text = "" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
signs_staged_enable = true,
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = true, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
follow_files = true,
},
auto_attach = true,
attach_to_untracked = false,
current_line_blame = true, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
delay = 300,
ignore_whitespace = true,
virt_text_priority = 100,
},
current_line_blame_formatter = "<author>, <author_time:%R> - <summary>",
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
border = "single",
style = "minimal",
relative = "cursor",
row = 0,
col = 1,
},
vim.keymap.set("n", "<leader>gr", "<cmd>Gitsigns refresh<CR>", { desc = "Gitsigns Refresh" }),
vim.keymap.set("n", "<leader>gs", "<cmd>Gitsigns toggle_signs<CR>", { desc = "Gitsigns ToggleSigns" }),
vim.keymap.set("n", "<leader>gl", "<cmd>Gitsigns toggle_linehl<CR>", { desc = "Gitsigns ToggleLine" }),
vim.keymap.set("n", "<leader>gw", "<cmd>Gitsigns toggle_word_diff<CR>", { desc = "Gitsigns ToggleWord" }),
},
},
}