diff --git a/lua/cosmic/config/examples/config.lua b/lua/cosmic/config/examples/config.lua index d4af4b2..512b5a0 100644 --- a/lua/cosmic/config/examples/config.lua +++ b/lua/cosmic/config/examples/config.lua @@ -22,6 +22,9 @@ local config = { -- see :h vim.diagnostic.config for all diagnostic configuration options diagnostic = {}, + -- see :h gitsigns-usage + gitsigns = {}, + -- lsp settings lsp = { diff --git a/lua/cosmic/core/pluginsInit.lua b/lua/cosmic/core/pluginsInit.lua index 92aca65..5a99669 100644 --- a/lua/cosmic/core/pluginsInit.lua +++ b/lua/cosmic/core/pluginsInit.lua @@ -159,7 +159,7 @@ return packer.startup(function() opt = true, event = 'BufRead', config = function() - require('gitsigns').setup() + require('cosmic.plugins.gitsigns') end, disable = vim.tbl_contains(user_plugins.disable, 'gitsigns'), }) diff --git a/lua/cosmic/plugins/gitsigns/init.lua b/lua/cosmic/plugins/gitsigns/init.lua new file mode 100644 index 0000000..304220e --- /dev/null +++ b/lua/cosmic/plugins/gitsigns/init.lua @@ -0,0 +1,67 @@ +local config = require('cosmic.config') + +require('gitsigns').setup(vim.tbl_deep_extend('force', { + signs = { + add = { hl = 'GitSignsAdd', text = '│', numhl = 'GitSignsAddNr', linehl = 'GitSignsAddLn' }, + change = { hl = 'GitSignsChange', text = '│', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, + delete = { hl = 'GitSignsDelete', text = '_', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, + topdelete = { hl = 'GitSignsDelete', text = '‾', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, + changedelete = { hl = 'GitSignsChange', text = '~', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, + }, + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = false, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` + keymaps = { + -- Default keymap options + noremap = true, + + ['n ]c'] = { expr = true, "&diff ? ']c' : 'Gitsigns next_hunk'" }, + ['n [c'] = { expr = true, "&diff ? '[c' : 'Gitsigns prev_hunk'" }, + + ['n hs'] = 'Gitsigns stage_hunk', + ['v hs'] = ':Gitsigns stage_hunk', + ['n hu'] = 'Gitsigns undo_stage_hunk', + ['n hr'] = 'Gitsigns reset_hunk', + ['v hr'] = ':Gitsigns reset_hunk', + ['n hR'] = 'Gitsigns reset_buffer', + ['n hp'] = 'Gitsigns preview_hunk', + ['n hb'] = 'lua require"gitsigns".blame_line{full=true}', + ['n hS'] = 'Gitsigns stage_buffer', + ['n hU'] = 'Gitsigns reset_buffer_index', + + -- Text objects + ['o ih'] = ':Gitsigns select_hunk', + ['x ih'] = ':Gitsigns select_hunk', + }, + watch_gitdir = { + interval = 1000, + follow_files = true, + }, + attach_to_untracked = true, + current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` + current_line_blame_opts = { + virt_text = true, + virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' + delay = 1000, + ignore_whitespace = false, + }, + current_line_blame_formatter_opts = { + relative_time = false, + }, + sign_priority = 6, + update_debounce = 100, + status_formatter = nil, -- Use default + max_file_length = 40000, + preview_config = { + -- Options passed to nvim_open_win + border = config.border, + style = 'minimal', + relative = 'cursor', + row = 0, + col = 1, + }, + yadm = { + enable = false, + }, +}, config.gitsigns or {}))