aboutsummaryrefslogtreecommitdiff
path: root/lua/config
diff options
context:
space:
mode:
authorjdhao <jdhao@hotmail.com>2022-09-08 20:31:33 +0800
committerjdhao <jdhao@hotmail.com>2022-09-08 20:31:33 +0800
commitb504c932e613cf782a4346393eff1fc7ce2537f9 (patch)
tree6d1b02d5ae33bbe9996b1b29027aab55c4434b48 /lua/config
parenta39befff93a33bb41c5320024d4970147f3d1878 (diff)
use gitsigns instead of signify
Diffstat (limited to 'lua/config')
-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,
+}