{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 :gs gitsigns.stage_hunk) (map :n :gr gitsigns.reset_hunk) (map :v :gs (fn [] (gitsigns.stage_hunk [(vim.fn.line ".") (vim.fn.line :v)]))) (map :v :gr (fn [] (gitsigns.reset_hunk [(vim.fn.line ".") (vim.fn.line :v)]))) (map :n :gS gitsigns.stage_buffer) (map :n :gu gitsigns.undo_stage_hunk) (map :n :gR gitsigns.reset_buffer) (map :n :gp gitsigns.preview_hunk) (map :n :gb (fn [] (gitsigns.blame_line {:full true}))) (map :n :gb gitsigns.toggle_current_line_blame) (map :n :gd gitsigns.diffthis) (map :n :gD (fn [] (gitsigns.diffthis "~"))) (map :n :gtd gitsigns.toggle_deleted) (map [:o :x] :ih ":Gitsigns select_hunk"))})) :event :BufEnter}