diff --git a/lua/crentist/lazy/gitsigns.lua b/lua/crentist/lazy/gitsigns.lua index b3b06a6..6dc683f 100644 --- a/lua/crentist/lazy/gitsigns.lua +++ b/lua/crentist/lazy/gitsigns.lua @@ -1,11 +1,74 @@ return { 'lewis6991/gitsigns.nvim', + ---@module 'gitsigns.config' + ---@type Gitsigns.Config opts = { current_line_blame = true, attach_to_untracked = true, current_line_blame_opts = { delay = 500, + ignore_whitespace = true, + virt_text_pos = 'right_align', }, + on_attach = function(bufnr) + local gitsigns = require('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 + vim.cmd.normal({ ']c', bang = true }) + else + gitsigns.nav_hunk('next') + end + end) + + map('n', '[c', 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) + + map('n', 'hd', gitsigns.diffthis) + + map('n', 'hD', function() + gitsigns.diffthis('~') + end) + + map('n', 'hQ', function() gitsigns.setqflist('all') end) + map('n', 'hq', gitsigns.setqflist) + + -- Toggles + map('n', 'tb', gitsigns.toggle_current_line_blame) + map('n', 'tw', gitsigns.toggle_word_diff) + + -- Text object + map({ 'o', 'x' }, 'ih', gitsigns.select_hunk) + end } } diff --git a/lua/crentist/lazy/lualine.lua b/lua/crentist/lazy/lualine.lua index a02cea5..944036f 100644 --- a/lua/crentist/lazy/lualine.lua +++ b/lua/crentist/lazy/lualine.lua @@ -17,53 +17,54 @@ return { lightgray = '#504945', inactivegray = '#7c6f64', } - require('lualine').setup({ - options = { - theme = { - normal = { - a = { bg = colors.yellow, fg = colors.black, gui = 'bold' }, - b = { bg = colors.lightgray, fg = colors.white }, - c = { bg = colors.darkgray, fg = colors.white }, - }, - insert = { - a = { bg = colors.blue, fg = colors.black, gui = 'bold' }, - b = { bg = colors.lightgray, fg = colors.white }, - c = { bg = colors.lightgray, fg = colors.white }, - }, - visual = { - a = { bg = colors.magenta, fg = colors.black, gui = 'bold' }, - b = { bg = colors.lightgray, fg = colors.white }, - c = { bg = colors.inactivegray, fg = colors.black }, - }, - replace = { - a = { bg = colors.red, fg = colors.black, gui = 'bold' }, - b = { bg = colors.lightgray, fg = colors.white }, - c = { bg = colors.black, fg = colors.white }, - }, - command = { - a = { bg = colors.green, fg = colors.black, gui = 'bold' }, - b = { bg = colors.lightgray, fg = colors.white }, - c = { bg = colors.inactivegray, fg = colors.black }, - }, - inactive = { - a = { bg = colors.darkgray, fg = colors.magenta, gui = 'bold' }, - b = { bg = colors.darkgray, fg = colors.magenta }, - c = { bg = colors.darkgray, fg = colors.magenta }, - }, + require('lualine').setup( + { + options = { + theme = { + normal = { + a = { bg = colors.yellow, fg = colors.black, gui = 'bold' }, + b = { bg = colors.lightgray, fg = colors.white }, + c = { bg = colors.darkgray, fg = colors.white }, + }, + insert = { + a = { bg = colors.blue, fg = colors.black, gui = 'bold' }, + b = { bg = colors.lightgray, fg = colors.white }, + c = { bg = colors.lightgray, fg = colors.white }, + }, + visual = { + a = { bg = colors.magenta, fg = colors.black, gui = 'bold' }, + b = { bg = colors.lightgray, fg = colors.white }, + c = { bg = colors.inactivegray, fg = colors.black }, + }, + replace = { + a = { bg = colors.red, fg = colors.black, gui = 'bold' }, + b = { bg = colors.lightgray, fg = colors.white }, + c = { bg = colors.black, fg = colors.white }, + }, + command = { + a = { bg = colors.green, fg = colors.black, gui = 'bold' }, + b = { bg = colors.lightgray, fg = colors.white }, + c = { bg = colors.inactivegray, fg = colors.black }, + }, + inactive = { + a = { bg = colors.darkgray, fg = colors.magenta, gui = 'bold' }, + b = { bg = colors.darkgray, fg = colors.magenta }, + c = { bg = colors.darkgray, fg = colors.magenta }, + }, + } + }, + sections = { + lualine_c = { + { + 'filename', + path = 1, + }, + { + 'navic', + }, + } } - }, - sections = { - lualine_c = { - { - 'filename', - path = 1, - }, - { - 'navic', - }, - } - } - }) + }) end }