feat: fennelize gitsigns config

This commit is contained in:
Youwen Wu 2025-02-01 14:28:07 -08:00
parent 74e58bf808
commit bfc960ff3b
Signed by: youwen5
GPG key ID: 865658ED1FE61EC3
2 changed files with 118 additions and 60 deletions

63
fnl/plugins/gitsigns.fnl Normal file
View file

@ -0,0 +1,63 @@
{1 :gitsigns.nvim
:after (fn []
((. (require :gitsigns) :setup) {:on_attach (fn [bufnr]
(local gitsigns
(require :gitsigns))
(fn map [mode l r opts]
(set-forcibly! opts
(or opts
{}))
(set opts.buffer
bufnr)
(vim.keymap.set mode
l r
opts))
(map :n "]c"
(fn []
(if vim.wo.diff
(vim.cmd.normal {1 "]c"
:bang true})
(gitsigns.nav_hunk :next))))
(map :n "[c"
(fn []
(if vim.wo.diff
(vim.cmd.normal {1 "[c"
:bang true})
(gitsigns.nav_hunk :prev))))
(map :n :<leader>gs
gitsigns.stage_hunk)
(map :n :<leader>gr
gitsigns.reset_hunk)
(map :v :<leader>gs
(fn []
(gitsigns.stage_hunk [(vim.fn.line ".")
(vim.fn.line :v)])))
(map :v :<leader>gr
(fn []
(gitsigns.reset_hunk [(vim.fn.line ".")
(vim.fn.line :v)])))
(map :n :<leader>gS
gitsigns.stage_buffer)
(map :n :<leader>gu
gitsigns.undo_stage_hunk)
(map :n :<leader>gR
gitsigns.reset_buffer)
(map :n :<leader>gp
gitsigns.preview_hunk)
(map :n :<leader>gb
(fn []
(gitsigns.blame_line {:full true})))
(map :n :<leader>gb
gitsigns.toggle_current_line_blame)
(map :n :<leader>gd
gitsigns.diffthis)
(map :n :<leader>gD
(fn []
(gitsigns.diffthis "~")))
(map :n :<leader>gtd
gitsigns.toggle_deleted)
(map [:o :x] :ih
":<C-U>Gitsigns select_hunk<CR>"))}))
:event :BufEnter}

View file

@ -1,60 +1,55 @@
return { -- [nfnl] Compiled from ./fnl/plugins/gitsigns.fnl by https://github.com/Olical/nfnl, do not edit.
"gitsigns.nvim", local function _1_()
event = "BufEnter", local function _2_(bufnr)
after = function()
require("gitsigns").setup({
on_attach = function(bufnr)
local gitsigns = require("gitsigns") local gitsigns = require("gitsigns")
local function map(mode, l, r, opts) local function map(mode, l, r, opts)
opts = opts or {} opts = (opts or {})
opts.buffer = bufnr opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts) return vim.keymap.set(mode, l, r, opts)
end end
local function _3_()
-- Navigation
map("n", "]c", function()
if vim.wo.diff then if vim.wo.diff then
vim.cmd.normal({ "]c", bang = true }) return vim.cmd.normal({"]c", bang = true})
else else
gitsigns.nav_hunk("next") return gitsigns.nav_hunk("next")
end end
end) end
map("n", "]c", _3_)
map("n", "[c", function() local function _5_()
if vim.wo.diff then if vim.wo.diff then
vim.cmd.normal({ "[c", bang = true }) return vim.cmd.normal({"[c", bang = true})
else else
gitsigns.nav_hunk("prev") return gitsigns.nav_hunk("prev")
end end
end) end
map("n", "[c", _5_)
-- Actions
map("n", "<leader>gs", gitsigns.stage_hunk) map("n", "<leader>gs", gitsigns.stage_hunk)
map("n", "<leader>gr", gitsigns.reset_hunk) map("n", "<leader>gr", gitsigns.reset_hunk)
map("v", "<leader>gs", function() local function _7_()
gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) return gitsigns.stage_hunk({vim.fn.line("."), vim.fn.line("v")})
end) end
map("v", "<leader>gr", function() map("v", "<leader>gs", _7_)
gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) local function _8_()
end) return gitsigns.reset_hunk({vim.fn.line("."), vim.fn.line("v")})
end
map("v", "<leader>gr", _8_)
map("n", "<leader>gS", gitsigns.stage_buffer) map("n", "<leader>gS", gitsigns.stage_buffer)
map("n", "<leader>gu", gitsigns.undo_stage_hunk) map("n", "<leader>gu", gitsigns.undo_stage_hunk)
map("n", "<leader>gR", gitsigns.reset_buffer) map("n", "<leader>gR", gitsigns.reset_buffer)
map("n", "<leader>gp", gitsigns.preview_hunk) map("n", "<leader>gp", gitsigns.preview_hunk)
map("n", "<leader>gb", function() local function _9_()
gitsigns.blame_line({ full = true }) return gitsigns.blame_line({full = true})
end) end
map("n", "<leader>gb", _9_)
map("n", "<leader>gb", gitsigns.toggle_current_line_blame) map("n", "<leader>gb", gitsigns.toggle_current_line_blame)
map("n", "<leader>gd", gitsigns.diffthis) map("n", "<leader>gd", gitsigns.diffthis)
map("n", "<leader>gD", function() local function _10_()
gitsigns.diffthis("~") return gitsigns.diffthis("~")
end) end
map("n", "<leader>gD", _10_)
map("n", "<leader>gtd", gitsigns.toggle_deleted) map("n", "<leader>gtd", gitsigns.toggle_deleted)
return map({"o", "x"}, "ih", ":<C-U>Gitsigns select_hunk<CR>")
-- Text object end
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>") return require("gitsigns").setup({on_attach = _2_})
end, end
}) return {"gitsigns.nvim", after = _1_, event = "BufEnter"}
end,
}