From 724dabb7be543a3f87a00d5543f7675000b57fe1 Mon Sep 17 00:00:00 2001 From: pr0c3550r <pr0c550r@pr0c3550r.de> Date: Sat, 25 Feb 2023 17:07:16 +0100 Subject: [PATCH] added Gitsigns functionality --- nvim/.config/nvim/lua/plugin/gitsigns.lua | 51 +++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 nvim/.config/nvim/lua/plugin/gitsigns.lua diff --git a/nvim/.config/nvim/lua/plugin/gitsigns.lua b/nvim/.config/nvim/lua/plugin/gitsigns.lua new file mode 100644 index 0000000..87f5426 --- /dev/null +++ b/nvim/.config/nvim/lua/plugin/gitsigns.lua @@ -0,0 +1,51 @@ +return { + { + 'lewis6991/gitsigns.nvim', + event = "VeryLazy", + config = function () + require('gitsigns').setup({ + preview_config = { + border = 'rounded', + }, + 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', ']c', function() + if vim.wo.diff then return ']c' end + vim.schedule(function() gs.next_hunk() end) + return '<Ignore>' + end, {expr=true}) + + map('n', '[c', function() + if vim.wo.diff then return '[c' end + vim.schedule(function() gs.prev_hunk() end) + return '<Ignore>' + end, {expr=true}) + + -- Actions + map({'n', 'v'}, '<leader>hs', ':Gitsigns stage_hunk<CR>') + map({'n', 'v'}, '<leader>hr', ':Gitsigns reset_hunk<CR>') + map('n', '<leader>hS', gs.stage_buffer) + map('n', '<leader>hu', gs.undo_stage_hunk) + map('n', '<leader>hR', gs.reset_buffer) + map('n', '<leader>hp', gs.preview_hunk) + map('n', '<leader>hb', function() gs.blame_line{full=true} end) + map('n', '<leader>tb', gs.toggle_current_line_blame) + map('n', '<leader>hd', gs.diffthis) + map('n', '<leader>hD', function() gs.diffthis('~') end) + map('n', '<leader>td', gs.toggle_deleted) + + -- Text object + map({'o', 'x'}, 'ih', ':<C-U>Gitsigns select_hunk<CR>') + end + }) + end, + } +}