diff options
Diffstat (limited to 'config/nvim/lua/plugins/gitsigns.lua')
| -rw-r--r-- | config/nvim/lua/plugins/gitsigns.lua | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/config/nvim/lua/plugins/gitsigns.lua b/config/nvim/lua/plugins/gitsigns.lua new file mode 100644 index 0000000..5994cc8 --- /dev/null +++ b/config/nvim/lua/plugins/gitsigns.lua @@ -0,0 +1,118 @@ +return { + "lewis6991/gitsigns.nvim", + opts = { + signs = { + add = { text = "│" }, + change = { text = "│" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "┆" }, + }, + auto_attach = true, + 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` + 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 = "<author>, <author_time:%Y-%m-%d> - <summary>", + sign_priority = 6, + update_debounce = 100, + status_formatter = nil, -- Use default + max_file_length = 40000, -- Disable if file is longer than this (in lines) + preview_config = { + -- Options passed to nvim_open_win + border = "single", + style = "minimal", + relative = "cursor", + row = 0, + col = 1, + } + }, + keys = { + { + "]c", + function() + if vim.wo.diff then + vim.cmd.normal({ "]c", bang = true }) + else + require("gitsigns").nav_hunk("next") + end + end, + desc = "Next hunk", + }, + { + "[c", + function() + if vim.wo.diff then + vim.cmd.normal({ "[c", bang = true }) + else + require("gitsigns").nav_hunk("prev") + end + end, + desc = "Previous hunk", + }, + { + "<leader>hs", + function() + require("gitsigns").stage_hunk() + end, + desc = "Stage hunk", + }, + { + "<leader>hr", + function() + require("gitsigns").reset_hunk() + end, + desc = "Reset hunk", + }, + { + "<leader>hp", + function() + require("gitsigns").preview_hunk() + end, + desc = "Preview hunk", + }, + { + "<leader>hi", + function() + require("gitsigns").preview_hunk_inline() + end, + desc = "Preview hunk inline", + }, + { + "<leader>hb", + [[:<C-U>lua require('gitsigns').blame_line{full=true}<CR>]], + desc = "Blame line", + }, + { + "<leader>hd", + [[:<C-U>lua require('gitsigns').diffthis()<CR>]], + desc = "Diff this", + }, + { + "<leader>tb", + function() + require("gitsigns").toggle_current_line_blame() + end, + desc = "Toggle line blame", + }, + { + "ih", + [[:<C-U>lua require('gitsigns').select_hunk()<CR>]], + mode = { "o", "x" }, + desc = "Select hunk", + }, + }, +}
\ No newline at end of file |
