From 4bafb41da640c06ce6e7412421bae726332037ee Mon Sep 17 00:00:00 2001 From: José Juan Loeza Sierra Date: Sat, 8 Nov 2025 08:14:00 -0800 Subject: add gitsigns --- dot-config/nvim/nvim-pack-lock.json | 4 +++ dot-config/nvim/plugin/gitsigns.lua | 65 +++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 dot-config/nvim/plugin/gitsigns.lua diff --git a/dot-config/nvim/nvim-pack-lock.json b/dot-config/nvim/nvim-pack-lock.json index f6b4679..593f3d8 100644 --- a/dot-config/nvim/nvim-pack-lock.json +++ b/dot-config/nvim/nvim-pack-lock.json @@ -12,6 +12,10 @@ "rev": "c106c94", "src": "https://github.com/projekt0n/github-nvim-theme" }, + "gitsigns.nvim": { + "rev": "20ad441", + "src": "https://github.com/lewis6991/gitsigns.nvim" + }, "hardtime.nvim": { "rev": "b4e4319", "src": "https://github.com/m4xshen/hardtime.nvim" diff --git a/dot-config/nvim/plugin/gitsigns.lua b/dot-config/nvim/plugin/gitsigns.lua new file mode 100644 index 0000000..5e5646f --- /dev/null +++ b/dot-config/nvim/plugin/gitsigns.lua @@ -0,0 +1,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", "hs", gitsigns.stage_hunk) +vim.keymap.set("n", "hr", gitsigns.reset_hunk) + +vim.keymap.set("v", "hs", function() + gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) +end) + +vim.keymap.set("v", "hr", function() + gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) +end) + +vim.keymap.set("n", "hS", gitsigns.stage_buffer) +vim.keymap.set("n", "hR", gitsigns.reset_buffer) +vim.keymap.set("n", "hp", gitsigns.preview_hunk) +vim.keymap.set("n", "hi", gitsigns.preview_hunk_inline) + +vim.keymap.set("n", "hb", function() + gitsigns.blame_line({ full = true }) +end) + +vim.keymap.set("n", "hd", gitsigns.diffthis) + +vim.keymap.set("n", "hD", function() + gitsigns.diffthis("~") +end) + +vim.keymap.set("n", "hQ", function() + gitsigns.setqflist("all") +end) +vim.keymap.set("n", "hq", gitsigns.setqflist) + +-- Toggles +vim.keymap.set("n", "tb", gitsigns.toggle_current_line_blame) +vim.keymap.set("n", "tw", gitsigns.toggle_word_diff) + +-- Text object +vim.keymap.set({ "o", "x" }, "ih", gitsigns.select_hunk) -- cgit v1.3