From 7c674311c1a8d923ee3376de6c5ea7a51d230c58 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Wed, 5 Mar 2025 19:39:19 +0000 Subject: Add gitsigns.nvim. --- init.vim | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) 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', 'Gitsigns select_hunk') + + 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', 'hs', gitsigns.stage_hunk) + map('n', 'hr', gitsigns.reset_hunk) + + map('v', 'hs', function() + gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) + end) + + map('v', 'hr', function() + gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) + end) + + map('n', 'hS', gitsigns.stage_buffer) + map('n', 'hR', gitsigns.reset_buffer) + map('n', 'hp', gitsigns.preview_hunk) + map('n', 'hi', gitsigns.preview_hunk_inline) + end + }) + require("nvim-surround").setup({}) require('smear_cursor').enabled = true require('smear_cursor').cursor_color = '#ff0000' -- cgit