emacs-dot-d/nebkor-modules/nebkor-git.el
2025-01-03 10:53:10 -08:00

77 lines
2.4 KiB
EmacsLisp

;;;; `ediff'
(use-package ediff
:ensure nil
:commands (ediff-buffers ediff-files ediff-buffers3 ediff-files3)
:init
(setq ediff-split-window-function 'split-window-horizontally)
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
:config
(setq ediff-keep-variants nil)
(setq ediff-make-buffers-readonly-at-startup nil)
(setq ediff-merge-revisions-with-ancestor t)
(setq ediff-show-clashes-only t))
;;;; `project'
(use-package project
:ensure nil
:bind
(("C-x p ." . project-dired)
("C-x p C-g" . keyboard-quit)
("C-x p <return>" . project-dired)
("C-x p <delete>" . project-forget-project))
:config
(setopt project-switch-commands
'((project-find-file "Find file")
(project-find-regexp "Find regexp")
(project-find-dir "Find directory")
(project-dired "Root dired")
(project-vc-dir "VC-Dir")
(project-shell "Shell")
(keyboard-quit "Quit")))
(setq project-vc-extra-root-markers '(".project")) ; Emacs 29
(setq project-key-prompt-style t)) ; Emacs 30
;;;; `diff-mode'
(use-package diff-mode
:ensure nil
:defer t
:config
(setq diff-default-read-only t)
(setq diff-advance-after-apply-hunk t)
(setq diff-update-on-the-fly t)
;; The following are from Emacs 27.1
(setq diff-refine nil) ; I do it on demand, with my `agitate' package (more below)
(setq diff-font-lock-prettify t) ; I think nil is better for patches, but let me try this for a while
(setq diff-font-lock-syntax 'hunk-also))
;;; Interactive and powerful git front-end (Magit)
(use-package magit
:ensure t
:bind ("C-x g" . magit-status)
:init
(setq magit-define-global-key-bindings nil)
;; (setq magit-section-visibility-indicator '("⮧"))
:config
(setq git-commit-summary-max-length 50)
;; NOTE 2023-01-24: I used to also include `overlong-summary-line'
;; in this list, but I realised I do not need it. My summaries are
;; always in check. When I exceed the limit, it is for a good
;; reason.
;; (setq git-commit-style-convention-checks '(non-empty-second-line))
(setq magit-diff-refine-hunk t))
(use-package transient
:ensure t
:after magit
:config
(setq transient-show-popup 0.5))
(use-package magit-repos
:ensure nil ; part of `magit'
:commands (magit-list-repositories)
:init
(setq magit-repository-directories
'(("~/src/prototypes" . 1))))
(provide 'nebkor-git)