diff options
Diffstat (limited to 'neovim/.config/nvim/lua/plugins/gitsigns.lua')
-rw-r--r-- | neovim/.config/nvim/lua/plugins/gitsigns.lua | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/neovim/.config/nvim/lua/plugins/gitsigns.lua b/neovim/.config/nvim/lua/plugins/gitsigns.lua new file mode 100644 index 0000000..61f6238 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/gitsigns.lua @@ -0,0 +1,27 @@ +local map = vim.keymap.set + +require("gitsigns").setup({ + signs = { + add = { text = "+" }, + delete = { text = "-" }, + change = { text = "~" }, + changedelete = { text = "⋍" }, + }, + on_attach = function(buf) + local gs = package.loaded.gitsigns + local opts = { buffer = buf, expr = true, replace_keycodes = false } + + -- Navigation + map("n", "]c", "&diff ? ']c' : '<CMD>Gitsigns next_hunk<CR>'", opts) + map("n", "[c", "&diff ? '[c' : '<CMD>Gitsigns prev_hunk<CR>'", opts) + + -- Actions + map({ "n", "v" }, "<leader>hr", gs.reset_hunk, { buffer = buf }) + map({ "n", "v" }, "<leader>hs", gs.stage_hunk) + map("n", "<leader>hS", gs.stage_buffer, { buffer = buf }) + map("n", "<leader>hp", gs.preview_hunk, { buffer = buf }) + + -- Text object + map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", { buffer = buf }) + end, +}) |