summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.vim49
1 files changed, 49 insertions, 0 deletions
diff --git a/init.vim b/init.vim
index 76095be..4bd7d8b 100644
--- a/init.vim
+++ b/init.vim
@@ -51,6 +51,8 @@ Plug 'vito-c/jq.vim'
Plug 'EdenEast/nightfox.nvim'
Plug 'sphamba/smear-cursor.nvim'
+Plug 'lewis6991/gitsigns.nvim'
+
if has('rneovim')
Plug 'git@git.josher.dev:rneovim-userregs.git'
endif
@@ -442,6 +444,53 @@ lua << EOF
end
end
+ local gitsigns = require("gitsigns")
+ gitsigns.setup({
+ on_attach = function(bufnr)
+ vim.keymap.set({'o', 'x'}, 'ih', '<Cmd>Gitsigns select_hunk<CR>')
+
+ local function map(mode, l, r, opts)
+ opts = opts or {}
+ opts.buffer = bufnr
+ vim.keymap.set(mode, l, r, opts)
+ end
+
+ -- Navigation
+ map('n', ']h', function()
+ if vim.wo.diff then
+ vim.cmd.normal({']c', bang = true})
+ else
+ gitsigns.nav_hunk('next')
+ end
+ end)
+
+ map('n', '[h', function()
+ if vim.wo.diff then
+ vim.cmd.normal({'[c', bang = true})
+ else
+ gitsigns.nav_hunk('prev')
+ end
+ end)
+
+ -- Actions
+ map('n', '<leader>hs', gitsigns.stage_hunk)
+ map('n', '<leader>hr', gitsigns.reset_hunk)
+
+ map('v', '<leader>hs', function()
+ gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') })
+ end)
+
+ map('v', '<leader>hr', function()
+ gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') })
+ end)
+
+ map('n', '<leader>hS', gitsigns.stage_buffer)
+ map('n', '<leader>hR', gitsigns.reset_buffer)
+ map('n', '<leader>hp', gitsigns.preview_hunk)
+ map('n', '<leader>hi', gitsigns.preview_hunk_inline)
+ end
+ })
+
require("nvim-surround").setup({})
require('smear_cursor').enabled = true
require('smear_cursor').cursor_color = '#ff0000'