diff options
Diffstat (limited to 'lua/ache/plugins/gitsigns.lua')
| -rw-r--r-- | lua/ache/plugins/gitsigns.lua | 190 |
1 files changed, 97 insertions, 93 deletions
diff --git a/lua/ache/plugins/gitsigns.lua b/lua/ache/plugins/gitsigns.lua index 80950bc..fef5906 100644 --- a/lua/ache/plugins/gitsigns.lua +++ b/lua/ache/plugins/gitsigns.lua @@ -1,102 +1,106 @@ +--[ +-- Add next to the line number the "git status" of a line. +--] + return { - "lewis6991/gitsigns.nvim", - event = { "BufReadPre", "BufNewFile" }, - config = function() - require("gitsigns").setup({ - signs = { - add = { text = "┃" }, - change = { text = "┃" }, - delete = { text = "_" }, - topdelete = { text = "‾" }, - changedelete = { text = "~" }, - untracked = { text = "┆" }, - }, - 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 = { - follow_files = true, - }, - auto_attach = true, - attach_to_untracked = false, - 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, - virt_text_priority = 100, - }, - current_line_blame_formatter = "<author>, <author_time:%Y-%m-%d> - <summary>", - -- current_line_blame_formatter_opts = { - -- relative_time = false, - -- }, - 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, - }, - on_attach = function(buf) - local gs = package.loaded.gitsigns + "lewis6991/gitsigns.nvim", + event = { "BufReadPre", "BufNewFile" }, + config = function() + require("gitsigns").setup({ + signs = { + add = { text = "┃" }, + change = { text = "┃" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "┆" }, + }, + 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 = { + follow_files = true, + }, + auto_attach = true, + attach_to_untracked = false, + 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, + virt_text_priority = 100, + }, + current_line_blame_formatter = "<author>, <author_time:%Y-%m-%d> - <summary>", + -- current_line_blame_formatter_opts = { + -- relative_time = false, + -- }, + 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, + }, + on_attach = function(buf) + local gs = package.loaded.gitsigns - -- Navigation - vim.keymap.set("n", ">h", gs.next_hunk, { desc = "Go to next hunk", buffer = buf }) - vim.keymap.set("n", "<h", gs.prev_hunk, { desc = "Go to previous hunk", buffer = buf }) + -- Navigation + vim.keymap.set("n", ">h", gs.next_hunk, { desc = "Go to next hunk", buffer = buf }) + vim.keymap.set("n", "<h", gs.prev_hunk, { desc = "Go to previous hunk", buffer = buf }) - -- Actions - ---- Reset and blame hunk - vim.keymap.set("n", "<leader>hs", gs.stage_hunk, { desc = "Stage hunk", buffer = buf }) - vim.keymap.set("n", "<leader>hr", gs.reset_hunk, { desc = "Reset hunk", buffer = buf }) - vim.keymap.set("v", "<leader>hs", function() - gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) - end, { desc = "Stage hunk", buffer = buf }) - vim.keymap.set("v", "<leader>hr", function() - gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) - end, { desc = "Reset hunk", buffer = buf }) + -- Actions + ---- Reset and blame hunk + vim.keymap.set("n", "<leader>hs", gs.stage_hunk, { desc = "Stage hunk", buffer = buf }) + vim.keymap.set("n", "<leader>hr", gs.reset_hunk, { desc = "Reset hunk", buffer = buf }) + vim.keymap.set("v", "<leader>hs", function() + gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, { desc = "Stage hunk", buffer = buf }) + vim.keymap.set("v", "<leader>hr", function() + gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, { desc = "Reset hunk", buffer = buf }) - ---- Reset and blame hunkcurrent_line_blame_formatter_opts - vim.keymap.set("n", "<leader>hs", gs.stage_hunk, { desc = "Stage hunk", buffer = buf }) - vim.keymap.set("n", "<leader>hS", gs.stage_buffer, { desc = "Stage current buffer", buffer = buf }) - vim.keymap.set("n", "<leader>hR", gs.reset_buffer, { desc = "Reset current buffer", buffer = buf }) + ---- Reset and blame hunkcurrent_line_blame_formatter_opts + vim.keymap.set("n", "<leader>hs", gs.stage_hunk, { desc = "Stage hunk", buffer = buf }) + vim.keymap.set("n", "<leader>hS", gs.stage_buffer, { desc = "Stage current buffer", buffer = buf }) + vim.keymap.set("n", "<leader>hR", gs.reset_buffer, { desc = "Reset current buffer", buffer = buf }) - ---- Undo - vim.keymap.set("n", "<leader>hu", gs.undo_stage_hunk, { desc = "Undo stage hunk", buffer = buf }) - -- vim.keymap.set("n", "<leader>hU", gs.undo_stage_buffer, { desc = "Undo stage buffer", buffer = buf}) + ---- Undo + vim.keymap.set("n", "<leader>hu", gs.undo_stage_hunk, { desc = "Undo stage hunk", buffer = buf }) + -- vim.keymap.set("n", "<leader>hU", gs.undo_stage_buffer, { desc = "Undo stage buffer", buffer = buf}) - -- Blame - vim.keymap.set("n", "<leader>hb", function() - gs.blame_line({ full = true }) - end, { desc = "Toggle line blame", buffer = buf }) - vim.keymap.set( - "n", - "<leader>hB", - gs.toggle_current_line_blame, - { desc = "Toggle current line blame", buffer = buf } - ) + -- Blame + vim.keymap.set("n", "<leader>hb", function() + gs.blame_line({ full = true }) + end, { desc = "Toggle line blame", buffer = buf }) + vim.keymap.set( + "n", + "<leader>hB", + gs.toggle_current_line_blame, + { desc = "Toggle current line blame", buffer = buf } + ) - -- Diff - -- TODO: WTF ? - vim.keymap.set("n", "<leader>hd", gs.diffthis, { desc = "Diff this", buffer = buf }) - vim.keymap.set("n", "<leader>hD", function() - gs.diffthis("~") - end, { desc = "Diff this ~", buffer = buf }) + -- Diff + -- TODO: WTF ? + vim.keymap.set("n", "<leader>hd", gs.diffthis, { desc = "Diff this", buffer = buf }) + vim.keymap.set("n", "<leader>hD", function() + gs.diffthis("~") + end, { desc = "Diff this ~", buffer = buf }) - -- Text objects - vim.keymap.set( - { "o", "x" }, - "<leader>ih", - "<cmd><C-U>Gitsigns select_hunk<CR>", - { desc = "Gitsigns select hunk", buffer = buf } - ) - end, - }) - end, + -- Text objects + vim.keymap.set( + { "o", "x" }, + "<leader>ih", + "<cmd><C-U>Gitsigns select_hunk<CR>", + { desc = "Gitsigns select hunk", buffer = buf } + ) + end, + }) + end, } |