diff options
author | 2025-09-11 16:38:11 +0100 | |
---|---|---|
committer | 2025-09-11 16:38:11 +0100 | |
commit | aa62e1f27b0cb3d712d6f2b13071cca0f09379be (patch) | |
tree | a6d2a4ba09d66490bc7c1a23f35be707fa0f5c8b /home/.config/nvim/lua/custom/plugins/git.lua | |
parent | c1f310bcc39f6cf4684d938d7be45bb25b427335 (diff) | |
download | dotfiles-aa62e1f27b0cb3d712d6f2b13071cca0f09379be.tar.gz dotfiles-aa62e1f27b0cb3d712d6f2b13071cca0f09379be.tar.bz2 dotfiles-aa62e1f27b0cb3d712d6f2b13071cca0f09379be.zip |
Diffstat (limited to 'home/.config/nvim/lua/custom/plugins/git.lua')
-rw-r--r-- | home/.config/nvim/lua/custom/plugins/git.lua | 166 |
1 files changed, 103 insertions, 63 deletions
diff --git a/home/.config/nvim/lua/custom/plugins/git.lua b/home/.config/nvim/lua/custom/plugins/git.lua index 077cfd4..3e41626 100644 --- a/home/.config/nvim/lua/custom/plugins/git.lua +++ b/home/.config/nvim/lua/custom/plugins/git.lua @@ -1,8 +1,7 @@ -local map = require("mapper") - return { { - 'akinsho/git-conflict.nvim', + "akinsho/git-conflict.nvim", + event = "BufRead", opts = { disable_diagnostics = true, highlights = { @@ -11,10 +10,10 @@ return { ancestor = nil, }, default_mappings = { - next = ']x', - prev = '[x', + next = "]x", + prev = "[x", }, - } + }, }, { "NeogitOrg/neogit", @@ -22,46 +21,55 @@ return { "nvim-lua/plenary.nvim", "nvim-telescope/telescope.nvim", }, - config = function() - local neogit = require("neogit") - neogit.setup({ - disable_commit_confirmation = true, - kind = "split", - console_timeout = 5000, - auto_show_console = false, - }) - map.n("<leader>ng", neogit.open) - end, + keys = { + { + "<leader>go", + function() + require("neogit").open() + end, + desc = "neo[G]it [O]pen", + }, + }, + cmd = "Neogit", + opts = { + disable_commit_confirmation = true, + kind = "split", + console_timeout = 5000, + auto_show_console = false, + }, }, { "ruifm/gitlinker.nvim", keys = { - { "<leader>gy", function() require 'gitlinker'.get_buf_range_url("n") end }, { "<leader>gy", function() - require 'gitlinker'.get_buf_range_url("v") + require("gitlinker").get_buf_range_url("n") end, - mode = "v" + }, + { + "<leader>gy", + function() + require("gitlinker").get_buf_range_url("v") + end, + mode = "v", }, }, dependencies = { "nvim-lua/plenary.nvim", }, - config = function() - require "gitlinker".setup({ - callbacks = { - ["git.sommerfeld.dev"] = function(url_data) - local url = require "gitlinker.hosts".get_base_https_url(url_data) - url = url .. "/tree/" .. url_data.file .. "?id=" .. url_data.rev - if url_data.lstart then - url = url .. "#n" .. url_data.lstart - end - return url + opts = { + callbacks = { + ["git.sommerfeld.dev"] = function(url_data) + local url = require("gitlinker.hosts").get_base_https_url(url_data) + url = url .. "/tree/" .. url_data.file .. "?id=" .. url_data.rev + if url_data.lstart then + url = url .. "#n" .. url_data.lstart end - }, - }) - end, + return url + end, + }, + }, }, { "lewis6991/gitsigns.nvim", @@ -77,48 +85,80 @@ return { _threaded_diff = true, _refresh_staged_on_update = true, on_attach = function(bufnr) - local gs = require('gitsigns') - + local gs = require("gitsigns") + local function map(mode, l, r, desc) + vim.keymap.set(mode, l, r, { buffer = bufnr, desc = desc }) + end + local function nmap(l, r, desc) + map("n", l, r, desc) + end + local function vmap(l, r, desc) + map("v", l, r, desc) + end -- Navigation - map.n(']c', function() + nmap("]c", function() if vim.wo.diff then - vim.cmd.normal({ ']c', bang = true }) + vim.cmd.normal({ "]c", bang = true }) else - gs.nav_hunk('next') + gs.nav_hunk("next") end - end, nil, bufnr) + end, "Jump to next git [c]hange") - map.n('[c', function() + nmap("[c", function() if vim.wo.diff then - vim.cmd.normal({ '[c', bang = true }) + vim.cmd.normal({ "[c", bang = true }) else - gs.nav_hunk('prev') + gs.nav_hunk("prev") end - end, nil, bufnr) + end, "Jump to previous git [c]hange") -- Actions - map.n('<leader>hs', gs.stage_hunk, nil, bufnr) - map.n('<leader>hr', gs.reset_hunk, nil, bufnr) - map.v('<leader>hs', function() gs.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end, nil, bufnr) - map.v('<leader>hr', function() gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end, nil, bufnr) - map.n('<leader>hS', gs.stage_buffer, nil, bufnr) - map.n('<leader>hu', gs.undo_stage_hunk, nil, bufnr) - map.n('<leader>hR', gs.reset_buffer, nil, bufnr) - map.n('<leader>hp', gs.preview_hunk, nil, bufnr) - map.n('<leader>hb', function() gs.blame_line { full = true } end, nil, - bufnr) - map.n('<leader>tb', gs.toggle_current_line_blame, nil, bufnr) - map.n('<leader>hd', gs.diffthis, nil, bufnr) - map.n('<leader>hD', function() gs.diffthis('~') end, nil, bufnr) - map.n('<leader>hc', gs.change_base, nil, bufnr) - map.n('<leader>hC', function() gs.change_base('~') end, nil, bufnr) - map.n('<leader>td', gs.toggle_deleted, nil, bufnr) - map.n('<leader>tw', gs.toggle_word_diff, nil, bufnr) - map.n('<leader>tl', gs.toggle_linehl, nil, bufnr) - + nmap("<leader>hs", gs.stage_hunk, "git [s]tage hunk") + nmap("<leader>hr", gs.reset_hunk, "git [r]eset hunk") + vmap("<leader>hs", function() + gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, "git [s]tage hunk") + vmap("<leader>hr", function() + gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, "git [r]eset hunk") + nmap("<leader>hS", gs.stage_buffer, "git [S]tage buffer") + nmap("<leader>hR", gs.reset_buffer, "git [R]eset buffer") + nmap("<leader>hp", gs.preview_hunk, "git [p]review hunk") + nmap("<leader>hb", function() + gs.blame_line({ full = true }) + end, "git [b]lame line") + nmap( + "<leader>tb", + gs.toggle_current_line_blame, + "[T]oggle git show [b]lame line" + ) + nmap("<leader>hd", gs.diffthis, "git [d]iff against index") + nmap("<leader>hD", function() + gs.diffthis("~") + end, "git [D]iff against last commit") + nmap("<leader>hc", gs.change_base, "git [C]hange base to index") + nmap("<leader>hC", function() + gs.change_base("~") + end, "git [C]hange base to HEAD") + nmap( + "<leader>tgd", + gs.preview_hunk_inline, + "[T]oggle [G]it show [D]eleted" + ) + nmap("<leader>tgw", gs.toggle_word_diff, "[T]oggle [G]it [W]ord diff") + nmap( + "<leader>tgl", + gs.toggle_linehl, + "[T]oggle [G]it [L]ine highlighting" + ) -- Text object - map.map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', nil, bufnr) - end + map( + { "o", "x" }, + "ih", + ":<C-U>Gitsigns select_hunk<CR>", + "git [H]unk text object" + ) + end, }, dependencies = { "nvim-lua/plenary.nvim", |