aboutsummaryrefslogtreecommitdiff
path: root/lua/config/gitsigns.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/config/gitsigns.lua')
-rw-r--r--lua/config/gitsigns.lua44
1 files changed, 44 insertions, 0 deletions
diff --git a/lua/config/gitsigns.lua b/lua/config/gitsigns.lua
new file mode 100644
index 0000000..0543412
--- /dev/null
+++ b/lua/config/gitsigns.lua
@@ -0,0 +1,44 @@
+local gs = require "gitsigns"
+
+gs.setup {
+ signs = {
+ add = { hl = "GitSignsAdd", text = "+", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" },
+ change = { hl = "GitSignsChange", text = "~", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
+ delete = { hl = "GitSignsDelete", text = "_", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
+ topdelete = { hl = "GitSignsDelete", text = "‾", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
+ changedelete = { hl = "GitSignsChange", text = "│", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
+ },
+ word_diff = true, -- Toggle with `:Gitsigns toggle_word_diff`
+ on_attach = function(bufnr)
+ local function map(mode, l, r, opts)
+ opts = opts or {}
+ opts.buffer = bufnr
+ vim.keymap.set(mode, l, r, opts)
+ end
+
+ -- Navigation
+ map("n", "]c", function()
+ if vim.wo.diff then
+ return "]c"
+ end
+ vim.schedule(function()
+ gs.next_hunk()
+ end)
+ return "<Ignore>"
+ end, { expr = true, desc = 'next hunk' })
+
+ map("n", "[c", function()
+ if vim.wo.diff then
+ return "[c"
+ end
+ vim.schedule(function()
+ gs.prev_hunk()
+ end)
+ return "<Ignore>"
+ end, { expr = true, desc = 'previous hunk' })
+
+ -- Actions
+ map("n", "<leader>hp", gs.preview_hunk)
+ map("n", "<leader>hb", function() gs.blame_line { full = true } end)
+ end,
+}