diff --git a/nvim/.config/nvim/lua/plug/_gitsigns.lua b/nvim/.config/nvim/lua/plug/_gitsigns.lua index 378a12b..6cbb465 100644 --- a/nvim/.config/nvim/lua/plug/_gitsigns.lua +++ b/nvim/.config/nvim/lua/plug/_gitsigns.lua @@ -1,40 +1,44 @@ --- require('gitsigns').setup { --- on_attach = function(bufnr) --- local gs = package.loaded.gitsigns --- --- 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 return ']h' end --- vim.schedule(function() gs.next_hunk() end) --- return '' --- end, {expr = true}) --- --- map('n', '[h', function() --- if vim.wo.diff then return '[h' end --- vim.schedule(function() gs.prev_hunk() end) --- return '' --- end, {expr = true}) --- --- -- Actions --- map({'n', 'v'}, 'hs', ':Gitsigns stage_hunk') --- map('n', 'hS', gs.stage_buffer) --- map({'n', 'v'}, 'hr', ':Gitsigns reset_hunk') --- map('n', 'hR', gs.reset_buffer) --- map('n', 'hu', gs.undo_stage_hunk) --- map('n', 'hp', gs.preview_hunk) --- map('n', 'hb', function() gs.blame_line {full = true} end) --- map('n', 'hB', gs.toggle_current_line_blame) --- map('n', 'hd', gs.diffthis) --- map('n', 'hD', function() gs.diffthis('~') end) --- map('n', 'hdd', gs.toggle_deleted) --- --- -- Text object --- map({'o', 'x'}, 'ih', ':Gitsigns select_hunk') --- end --- } +require('gitsigns').setup { + numhl = true, + signcolumn = false, + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + + 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 return ']h' end + vim.schedule(function() gs.next_hunk() end) + return '' + end, { expr = true }) + + map('n', '[h', function() + if vim.wo.diff then return '[h' end + vim.schedule(function() gs.prev_hunk() end) + return '' + end, { expr = true }) + + -- Actions + require('which-key').register({ ['h'] = { name = '+git' } }) + map({ 'n', 'v' }, 'hs', ':Gitsigns stage_hunk', { desc = 'stage hunk' }) + map({ 'n', 'v' }, 'hr', ':Gitsigns reset_hunk', { desc = 'reset hunk' }) + map('n', 'hS', gs.stage_buffer, { desc = 'stage buffer' }) + map('n', 'hu', gs.undo_stage_hunk, { desc = 'undo stage hunk' }) + map('n', 'hR', gs.reset_buffer, { desc = 'reset buffer' }) + map('n', 'hp', gs.preview_hunk, { desc = 'preview hunk' }) + map('n', 'hb', function() gs.blame_line { full = true } end, { desc = 'blame line' }) + map('n', 'hB', gs.toggle_current_line_blame, { desc = 'toggle blame' }) + map('n', 'hd', gs.diffthis, { desc = 'diffthis' }) + map('n', 'hD', function() gs.diffthis('~') end, { desc = 'diffbase' }) + map('n', 'ht', gs.toggle_deleted, { desc = 'toggle deleted' }) + + -- Text object + map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk') + map({ 'o', 'x' }, 'ah', ':Gitsigns select_hunk') + end +} diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index ced2b51..ca2b57d 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -8,10 +8,11 @@ return { { 'ggandor/lightspeed.nvim', event = "VeryLazy" }, -- jump between letters with improved fFtT quicksearch, mimics sneak { 'lewis6991/gitsigns.nvim', -- show vcs changes on left-hand gutter - opts = { numhl = true, signcolumn = false }, + config = function() + require('plug._gitsigns') + end, event = "BufRead" - }, - { "m4xshen/smartcolumn.nvim", config = true }, -- auto-hiding colorcolumn + }, { "m4xshen/smartcolumn.nvim", config = true }, -- auto-hiding colorcolumn -- files { 'vifm/vifm.vim' }, -- integrate file manager {