diff --git a/init.lua b/init.lua index 4ccd516c..e10c5dfe 100644 --- a/init.lua +++ b/init.lua @@ -360,47 +360,46 @@ do topdelete = { text = '‾' }, ---@diagnostic disable-line: missing-fields changedelete = { text = '~' }, ---@diagnostic disable-line: missing-fields }, - -- Uncomment the following if you want to use gitsigns.nvim's recommended keymaps: - -- - -- on_attach = function(bufnr) - -- -- Navigation - -- vim.keymap.set('n', ']c', function() - -- if vim.wo.diff then - -- vim.cmd.normal { ']c', bang = true } - -- else - -- gitsigns.nav_hunk 'next' - -- end - -- end, { desc = 'Jump to next git [c]hange' }) - -- - -- vim.keymap.set('n', '[c', function() - -- if vim.wo.diff then - -- vim.cmd.normal { '[c', bang = true } - -- else - -- gitsigns.nav_hunk 'prev' - -- end - -- end, { desc = 'Jump to previous git [c]hange' }) - -- - -- -- Visual mode actions - -- vim.keymap.set('v', 'hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' }) - -- vim.keymap.set('v', 'hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' }) - -- -- Normal mode actions - -- vim.keymap.set('n', 'hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) - -- vim.keymap.set('n', 'hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' }) - -- vim.keymap.set('n', 'hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' }) - -- vim.keymap.set('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) - -- vim.keymap.set('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) - -- vim.keymap.set('n', 'hi', gitsigns.preview_hunk_inline, { desc = 'git preview hunk [i]nline' }) - -- vim.keymap.set('n', 'hb', function() gitsigns.blame_line { full = true } end, { desc = 'git [b]lame line' }) - -- vim.keymap.set('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) - -- vim.keymap.set('n', 'hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' }) - -- vim.keymap.set('n', 'hQ', function() gitsigns.setqflist 'all' end, { desc = 'git hunk [Q]uickfix list (all files in repo)' }) - -- vim.keymap.set('n', 'hq', gitsigns.setqflist, { desc = 'git hunk [q]uickfix list (all changes in this file)' }) - -- -- Toggles - -- vim.keymap.set('n', 'tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) - -- vim.keymap.set('n', 'tw', gitsigns.toggle_word_diff, { desc = '[T]oggle git intra-line [w]ord diff' }) - -- -- Text object - -- vim.keymap.set({ 'o', 'x' }, 'ih', gitsigns.select_hunk) - -- end, + -- gitsigns.nvim's recommended keymaps: + on_attach = function(bufnr) + -- Navigation + vim.keymap.set('n', ']c', function() + if vim.wo.diff then + vim.cmd.normal { ']c', bang = true } + else + gitsigns.nav_hunk 'next' + end + end, { desc = 'Jump to next git [c]hange' }) + + vim.keymap.set('n', '[c', function() + if vim.wo.diff then + vim.cmd.normal { '[c', bang = true } + else + gitsigns.nav_hunk 'prev' + end + end, { desc = 'Jump to previous git [c]hange' }) + + -- Visual mode actions + vim.keymap.set('v', 'hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' }) + vim.keymap.set('v', 'hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' }) + -- Normal mode actions + vim.keymap.set('n', 'hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) + vim.keymap.set('n', 'hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' }) + vim.keymap.set('n', 'hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' }) + vim.keymap.set('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) + vim.keymap.set('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) + vim.keymap.set('n', 'hi', gitsigns.preview_hunk_inline, { desc = 'git preview hunk [i]nline' }) + vim.keymap.set('n', 'hb', function() gitsigns.blame_line { full = true } end, { desc = 'git [b]lame line' }) + vim.keymap.set('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) + vim.keymap.set('n', 'hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' }) + vim.keymap.set('n', 'hQ', function() gitsigns.setqflist 'all' end, { desc = 'git hunk [Q]uickfix list (all files in repo)' }) + vim.keymap.set('n', 'hq', gitsigns.setqflist, { desc = 'git hunk [q]uickfix list (all changes in this file)' }) + -- Toggles + vim.keymap.set('n', 'tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) + vim.keymap.set('n', 'tw', gitsigns.toggle_word_diff, { desc = '[T]oggle git intra-line [w]ord diff' }) + -- Text object + vim.keymap.set({ 'o', 'x' }, 'ih', gitsigns.select_hunk) + end, } -- Useful plugin to show you pending keybinds.