;; Add git signs to source files. (local mappings [[:n :mq "Gitsigns diffthis HEAD" {:desc "Gitsigns diff"}] [:n :gR "lua require 'gitsigns'.reset_buffer()" {:desc "Reset Buffer"}] [:n :gd "Gitsigns diffthis HEAD" {:desc :Diff}] [:n :gj "lua require 'gitsigns'.next_hunk()" {:desc "Next Hunk"}] [:n :gk "lua require 'gitsigns'.prev_hunk()" {:desc "Prev Hunk"}] [:n :gl "lua require 'gitsigns'.blame_line()" {:desc :Blame}] [:n :gp "lua require 'gitsigns'.preview_hunk()" {:desc "Preview Hunk"}] [:n :gr "lua require 'gitsigns'.reset_hunk()" {:desc "Reset Hunk"}] [:n :gs "lua require 'gitsigns'.stage_hunk()" {:desc "Stage Hunk"}] [:n :gu "lua require 'gitsigns'.undo_stage_hunk()" {:desc "Undo Stage Hunk"}] [[:o :x] :gn ":Gitsigns select_hunk" {:desc "GitSigns Select Hunk"}]]) (fn on-attach [bufnr] (each [_ mapping (ipairs mappings)] (match mapping [mode key cmd desc] (vim.keymap.set mode key cmd (vim.tbl_extend :force {:buffer bufnr} desc))))) (local icons (require :plugins.icons)) (local signs {:add {:text (. icons :git-add)} :change {:text (. icons :git-add)} :delete {:text (. icons :git-delete)} :topdelete {:text (. icons :git-top-delete)} :changedelete {:text (. icons :git-change-delete)} :untracked {:text (. icons :git-untracked)}}) (local opts {: signs :signcolumn true :numhl false :linehl false :word_diff false :watch_gitdir {:follow_files true} :attach_to_untracked true :current_line_blame false :current_line_blame_opts {:virt_text true :virt_text_pos :eol :delay 1000 :ignore_whitespace false} :current_line_blame_formatter ", - " :sign_priority 6 :update_debounce 100 :status_formatter nil :max_file_length 40000 :preview_config {:border :single :style :minimal :relative :cursor :row 0 :col 1} :yadm {:enable false}}) {1 :lewis6991/gitsigns.nvim :event [:BufReadPost :BufNewFile] : opts :on_attach (fn [bufnr] (on-attach bufnr))}