summary refs log tree commit diff
path: root/.vim/lua/plugins.lua
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2022-05-27 12:57:26 +0200
committerRobert Günzler <r@gnzler.io>2022-05-27 13:16:14 +0200
commitb74711803a49126fe45d93226c7bd08deab2776e (patch)
tree2d2d192ab3ae04e9f2d5e90c3b298e9f8b45424f /.vim/lua/plugins.lua
parent401cead3093d5ae30bc56bd2f1e978702a411e92 (diff)
vim: update gitsigns config
Diffstat (limited to '.vim/lua/plugins.lua')
-rw-r--r--.vim/lua/plugins.lua42
1 files changed, 41 insertions, 1 deletions
diff --git a/.vim/lua/plugins.lua b/.vim/lua/plugins.lua
index fe6c0e0..56926c3 100644
--- a/.vim/lua/plugins.lua
+++ b/.vim/lua/plugins.lua
@@ -99,7 +99,47 @@ return require('packer').startup({function()
         numhl = false,
         linehl = false,
         word_diff = false,
-        -- on_attach = function(bufnr) end,
+        preview_config = {
+          border = { '', '', '', ' ', '', '', '', ' ' },
+        },
+
+        on_attach = function(bufnr)
+          local gs = package.loaded.gitsigns
+
+          vim.keymap.set('n', ']c', function()
+            if vim.wo.diff then return ']c' end
+            vim.schedule(gs.next_hunk)
+            return '<Ignore>'
+          end, {expr=true, buffer=bufnr})
+
+          vim.keymap.set('n', '[c', function()
+            if vim.wo.diff then return '[c' end
+            vim.schedule(gs.prev_hunk)
+            return '<Ignore>'
+          end, {expr=true, buffer=bufnr})
+
+          vim.keymap.set('n', '<leader>hb', gs.toggle_current_line_blame, {buffer=bufnr})
+          vim.keymap.set('n', '<leader>hB', function() gs.blame_line {full=true} end, {buffer=bufnr})
+          vim.keymap.set('n', '<leader>hp', gs.preview_hunk, {buffer=bufnr})
+          vim.keymap.set('n', '<leader>hd', gs.diffthis, {buffer=bufnr})
+          vim.keymap.set('n', '<leader>hl', function()
+            gs.setqflist(0, {open=false})
+            vim.schedule(function() require('telescope.builtin').quickfix() end)
+          end, {buffer=bufnr})
+
+          wk_register {
+            [']c'] = 'next git hunk',
+            ['[c'] = 'previous git hunk',
+            ['<leader>h'] = {
+              name = '+GitSigns',
+              b = 'toggle line blame',
+              B = 'show full line blame',
+              p = 'preview hunk',
+              d = 'diffthis',
+              l = 'list hunks'
+            }
+          }
+        end,
       }
     end} -- }}}