1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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",
},
},
}
|