Update
This commit is contained in:
91
lisp/init-vcs.el
Normal file
91
lisp/init-vcs.el
Normal file
@@ -0,0 +1,91 @@
|
||||
;; -*- lexical-binding: t; -*-
|
||||
|
||||
(use-package transient)
|
||||
|
||||
(use-package magit
|
||||
:bind (("C-c g" . magit-dispatch))
|
||||
:custom
|
||||
(magit-diff-refine-hunk t)
|
||||
(git-commit-major-mode 'git-commit-elisp-text-mode)
|
||||
:config
|
||||
(setq magit-show-long-lines-warning nil))
|
||||
|
||||
;; Prime cache before Magit refresh
|
||||
(use-package magit-prime
|
||||
:diminish
|
||||
:hook elpaca-after-init)
|
||||
|
||||
;; Show TODOs in Magit
|
||||
(use-package magit-todos
|
||||
:after magit-status
|
||||
:commands magit-todos-mode
|
||||
:init
|
||||
(setq magit-todos-nice (if (executable-find "nice") t nil))
|
||||
(magit-todos-mode 1))
|
||||
|
||||
;; Walk through git revisions of a file
|
||||
(use-package git-timemachine
|
||||
:custom-face
|
||||
(git-timemachine-minibuffer-author-face ((t (:inherit success :foreground unspecified))))
|
||||
(git-timemachine-minibuffer-detail-face ((t (:inherit warning :foreground unspecified))))
|
||||
:bind (:map vc-prefix-map
|
||||
("t" . git-timemachine))
|
||||
:hook ((git-timemachine-mode . (lambda ()
|
||||
"Improve `git-timemachine' buffers."
|
||||
;; Highlight symbols in elisp
|
||||
(when (derived-mode-p 'emacs-lisp-mode)
|
||||
(and (fboundp 'highlight-defined-mode)
|
||||
(highlight-defined-mode t)))
|
||||
|
||||
;; Display line numbers
|
||||
(when (derived-mode-p 'prog-mode 'yaml-mode 'yaml-ts-mode)
|
||||
(and (fboundp 'display-line-numbers-mode)
|
||||
(display-line-numbers-mode t)))))
|
||||
(before-revert . (lambda ()
|
||||
(when (bound-and-true-p git-timemachine-mode)
|
||||
(user-error "Cannot revert the timemachine buffer"))))))
|
||||
|
||||
(use-package smerge-mode
|
||||
:ensure nil
|
||||
:diminish
|
||||
:pretty-hydra
|
||||
((:title (pretty-hydra-title "Smerge" 'octicon "nf-oct-diff")
|
||||
:color pink :quit-key ("q" "C-g"))
|
||||
("Move"
|
||||
(("n" smerge-next "next")
|
||||
("p" smerge-prev "previous"))
|
||||
"Keep"
|
||||
(("b" smerge-keep-base "base")
|
||||
("u" smerge-keep-upper "upper")
|
||||
("l" smerge-keep-lower "lower")
|
||||
("a" smerge-keep-all "all")
|
||||
("RET" smerge-keep-current "current")
|
||||
("C-m" smerge-keep-current "current"))
|
||||
"Diff"
|
||||
(("<" smerge-diff-base-upper "upper/base")
|
||||
("=" smerge-diff-upper-lower "upper/lower")
|
||||
(">" smerge-diff-base-lower "upper/lower")
|
||||
("R" smerge-refine "refine")
|
||||
("E" smerge-ediff "ediff"))
|
||||
"Other"
|
||||
(("C" smerge-combine-with-next "combine")
|
||||
("r" smerge-resolve "resolve")
|
||||
("k" smerge-kill-current "kill")
|
||||
("ZZ" (lambda ()
|
||||
(interactive)
|
||||
(save-buffer)
|
||||
(bury-buffer))
|
||||
"Save and bury buffer" :exit t))))
|
||||
:bind (:map smerge-mode-map
|
||||
("C-c m" . smerge-mode-hydra/body))
|
||||
:hook ((find-file . (lambda ()
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "^<<<<<<< " nil t)
|
||||
(smerge-mode 1)))))
|
||||
(magit-diff-visit-file . (lambda ()
|
||||
(when smerge-mode
|
||||
(smerge-mode-hydra/body))))))
|
||||
|
||||
|
||||
(provide 'init-vcs)
|
||||
Reference in New Issue
Block a user