emacs-dot-d/unravel-modules/unravel-git.el
Vedang Manerikar afdbce556f Copy over git and org settings from Prot
These need significant changes to match my workflows, but without the
base settings in place doing any work is really difficult.

So copying over the basics, I will re-arrange and update everything in
later commits.
2024-11-15 08:22:23 +05:30

78 lines
2.5 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
(advice-add #'project-switch-project :after #'prot-common-clear-minibuffer-message))
;;;; `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 transient
:defer t
:config
(setq transient-show-popup 0.5))
(use-package magit
:ensure t
:bind ("C-c 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 magit-repos
:ensure nil ; part of `magit'
:commands (magit-list-repositories)
:init
(setq magit-repository-directories
'(("~/src/prototypes" . 1))))
(provide 'unravel-git)