diff --git a/config/neovim/after/plugin/gitsigns.lua b/config/neovim/after/plugin/gitsigns.lua index 14dfb742..cf8f92cf 100644 --- a/config/neovim/after/plugin/gitsigns.lua +++ b/config/neovim/after/plugin/gitsigns.lua @@ -8,9 +8,23 @@ gitsigns.setup { numhl = true, } -vim.keymap.set('n', '[h', "<cmd>Gitsigns prev_hunk<cr>"); -vim.keymap.set('n', ']h', "<cmd>Gitsigns next_hunk<cr>"); -vim.keymap.set('n', 'gS', "<cmd>Gitsigns undo_stage_hunk<cr>"); -vim.keymap.set('n', 'gb', "<cmd>Gitsigns blame_line<cr>"); -vim.keymap.set('n', 'gp', "<cmd>Gitsigns preview_hunk<cr>"); -vim.keymap.set('n', 'gs', "<cmd>Gitsigns stage_hunk<cr>"); +local bufnr = vim.api.nvim_get_current_buf() + +local map = require "opdavies.keymap".map +local nmap = require "opdavies.keymap".nmap +local vmap = require "opdavies.keymap".vmap + +nmap { '[h', "&diff ? '[c' : '<cmd>Gitsigns prev_hunk<CR>'", { expr = true, buffer = bufnr }} +nmap { ']h', "&diff ? ']c' : '<cmd>Gitsigns next_hunk<CR>'", { expr = true, buffer = bufnr }} + +nmap { '<leader>hR', gitsigns.reset_buffer } +nmap { '<leader>hS', gitsigns.stage_buffer } +nmap { '<leader>hp', gitsigns.preview_hunk } +nmap { '<leader>hr', gitsigns.reset_hunk } +nmap { '<leader>hs', gitsigns.stage_hunk } +nmap { '<leader>hu', gitsigns.undo_stage_hunk } +vmap { '<leader>hr', function() gitsigns.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end } +vmap { '<leader>hs', function() gitsigns.stage_hunk { vim.fn.line('.'), vim.fn.line('v')} end } + +-- Text object. +map{ {'o', 'x'}, 'ih', ':<C-U>Gitsigns select_hunk<CR>' }