From c489d393695e90d424f9ae51e35c4d42358e6a71 Mon Sep 17 00:00:00 2001 From: Squibid Date: Fri, 9 Aug 2024 02:45:31 -0400 Subject: yes there's a bit of java in my nvim config why do you ask? --- lua/conf/plugins/gitsigns.lua | 78 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 lua/conf/plugins/gitsigns.lua (limited to 'lua/conf/plugins/gitsigns.lua') diff --git a/lua/conf/plugins/gitsigns.lua b/lua/conf/plugins/gitsigns.lua new file mode 100644 index 0000000..f168b93 --- /dev/null +++ b/lua/conf/plugins/gitsigns.lua @@ -0,0 +1,78 @@ +local misc = require('core.misc') +local map = misc.map + +return { 'lewis6991/gitsigns.nvim', + disable = vim.version().minor < 9, + function() + local gs = require("gitsigns") + + gs.setup { + signs = { + add = { text = '│' }, + change = { text = '│' }, + delete = { text = '-' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + untracked = { text = '┆' } + }, + + signcolumn = true, + numhl = false, + linehl = false, + word_diff = false, + + watch_gitdir = { + interval = 1000, + follow_files = true + }, + + attach_to_untracked = true, + current_line_blame_formatter = ', - ', + + preview_config = { border = 'solid' }, + + on_attach = function(bufnr) + local opts = { buffer = bufnr } + + -- Navigation + map('n', ']c', function() + if vim.wo.diff then + return ']c' + end + vim.schedule(function() gs.next_hunk() end) + return '' + end, { expr = true, buffer = bufnr }) + + map('n', '[c', function() + if vim.wo.diff then + return '[c' + end + vim.schedule(function() gs.prev_hunk() end) + return '' + end, { expr = true, buffer = bufnr }) + + -- Actions + map('n', 'hs', gs.stage_hunk, opts) + map('n', 'hr', gs.reset_hunk, opts) + map('v', 'hs', function() + gs.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } + end, opts) + map('v', 'hr', function() + gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } + end, opts) + map('n', 'hS', gs.stage_buffer, opts) + map('n', 'hu', gs.undo_stage_hunk, opts) + map('n', 'hR', gs.reset_buffer, opts) + map('n', 'hp', gs.preview_hunk, opts) + map('n', 'hb', function() gs.blame_line { full=true } end, opts) + map('n', 'tb', gs.toggle_current_line_blame, opts) + map('n', 'hd', gs.diffthis, opts) + map('n', 'hD', function() gs.diffthis('~') end, opts) + map('n', 'td', gs.toggle_deleted, opts) + + -- Text object + map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk', opts) + end + } + end +} -- cgit v1.2.1