summaryrefslogtreecommitdiff
path: root/dot-config/nvim/plugin/gitsigns.lua
blob: 5e5646f0e8417af64282c4720e5b08c33769dc08 (plain)
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
vim.pack.add({
	"https://github.com/lewis6991/gitsigns.nvim",
})

require("gitsigns").setup({
	-- signs copied from LazyVim
	signs = {
		add = { text = "▎" },
		change = { text = "▎" },
		delete = { text = "" },
		topdelete = { text = "" },
		changedelete = { text = "▎" },
		untracked = { text = "▎" },
	},
	signs_staged = {
		add = { text = "▎" },
		change = { text = "▎" },
		delete = { text = "" },
		topdelete = { text = "" },
		changedelete = { text = "▎" },
	},
})

local gitsigns = require("gitsigns")

-- Suggested keymap
-- see https://github.com/lewis6991/gitsigns.nvim?tab=readme-ov-file#-keymaps

vim.keymap.set("n", "<leader>hs", gitsigns.stage_hunk)
vim.keymap.set("n", "<leader>hr", gitsigns.reset_hunk)

vim.keymap.set("v", "<leader>hs", function()
	gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
end)

vim.keymap.set("v", "<leader>hr", function()
	gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
end)

vim.keymap.set("n", "<leader>hS", gitsigns.stage_buffer)
vim.keymap.set("n", "<leader>hR", gitsigns.reset_buffer)
vim.keymap.set("n", "<leader>hp", gitsigns.preview_hunk)
vim.keymap.set("n", "<leader>hi", gitsigns.preview_hunk_inline)

vim.keymap.set("n", "<leader>hb", function()
	gitsigns.blame_line({ full = true })
end)

vim.keymap.set("n", "<leader>hd", gitsigns.diffthis)

vim.keymap.set("n", "<leader>hD", function()
	gitsigns.diffthis("~")
end)

vim.keymap.set("n", "<leader>hQ", function()
	gitsigns.setqflist("all")
end)
vim.keymap.set("n", "<leader>hq", gitsigns.setqflist)

-- Toggles
vim.keymap.set("n", "<leader>tb", gitsigns.toggle_current_line_blame)
vim.keymap.set("n", "<leader>tw", gitsigns.toggle_word_diff)

-- Text object
vim.keymap.set({ "o", "x" }, "ih", gitsigns.select_hunk)