summaryrefslogtreecommitdiff
path: root/lua/ache/plugins/gitsigns.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/ache/plugins/gitsigns.lua')
-rw-r--r--lua/ache/plugins/gitsigns.lua190
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,
}