diff options
-rw-r--r-- | init.vim | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -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' |