2017-06-08 11:47:56 +02:00
|
|
|
;;; feature/version-control/config.el -*- lexical-binding: t; -*-
|
2017-02-03 20:29:09 -05:00
|
|
|
|
2018-05-27 12:44:22 +02:00
|
|
|
(load! "+git")
|
|
|
|
;; TODO (load! "+hg")
|
2017-07-29 00:27:20 +02:00
|
|
|
|
|
|
|
;;
|
2017-04-16 20:36:15 -04:00
|
|
|
(setq vc-make-backup-files nil)
|
|
|
|
|
2017-07-02 16:29:46 +02:00
|
|
|
(defvar +vcs-auto-hydra-smerge t
|
|
|
|
"When entering `smerge-mode' automatically open associated hydra.")
|
|
|
|
|
2017-02-03 20:29:09 -05:00
|
|
|
|
2017-02-23 00:06:12 -05:00
|
|
|
(after! vc-annotate
|
2018-06-15 02:58:12 +02:00
|
|
|
(set-popup-rules!
|
2018-06-18 02:26:05 +02:00
|
|
|
'(("^\\vc-d" :select) ; *vc-diff*
|
|
|
|
("^\\vc-c" :select t))) ; *vc-change-log*
|
2018-06-15 02:58:12 +02:00
|
|
|
(set-evil-initial-state!
|
|
|
|
'(vc-annotate-mode vc-git-log-view-mode)
|
|
|
|
'normal))
|
2017-07-02 16:29:46 +02:00
|
|
|
|
|
|
|
(def-package! smerge-mode
|
2017-12-08 22:33:12 -05:00
|
|
|
:hook (find-file . +vcs|enable-smerge-mode-maybe)
|
2017-07-02 16:29:46 +02:00
|
|
|
:config
|
2018-03-24 04:40:24 -04:00
|
|
|
(unless EMACS26+
|
2017-12-10 15:12:17 -05:00
|
|
|
(with-no-warnings
|
|
|
|
(defalias #'smerge-keep-upper #'smerge-keep-mine)
|
|
|
|
(defalias #'smerge-keep-lower #'smerge-keep-other)
|
|
|
|
(defalias #'smerge-diff-base-upper #'smerge-diff-base-mine)
|
|
|
|
(defalias #'smerge-diff-upper-lower #'smerge-diff-mine-other)
|
|
|
|
(defalias #'smerge-diff-base-lower #'smerge-diff-base-other)))
|
2017-07-02 16:29:46 +02:00
|
|
|
|
2018-05-24 22:03:17 +02:00
|
|
|
(defhydra +hydra-smerge (:hint nil
|
|
|
|
:pre (smerge-mode 1)
|
|
|
|
;; Disable `smerge-mode' when quitting hydra if
|
|
|
|
;; no merge conflicts remain.
|
|
|
|
:post (smerge-auto-leave))
|
2017-07-02 17:50:48 +02:00
|
|
|
"
|
|
|
|
╭────────┐
|
|
|
|
Movement Keep Diff Other │ smerge │
|
|
|
|
╭─────────────────────────────────────────────────┴────────╯
|
|
|
|
^_g_^ [_b_] base [_<_] upper/base [_C_] Combine
|
|
|
|
^_C-k_^ [_u_] upper [_=_] upper/lower [_r_] resolve
|
|
|
|
^_k_ ↑^ [_l_] lower [_>_] base/lower [_R_] remove
|
|
|
|
^_j_ ↓^ [_a_] all [_H_] hightlight
|
|
|
|
^_C-j_^ [_RET_] current [_E_] ediff ╭──────────
|
|
|
|
^_G_^ │ [_q_] quit"
|
2017-09-23 16:26:12 +02:00
|
|
|
("g" (progn (goto-char (point-min)) (smerge-next)))
|
|
|
|
("G" (progn (goto-char (point-max)) (smerge-prev)))
|
|
|
|
("C-j" smerge-next)
|
|
|
|
("C-k" smerge-prev)
|
|
|
|
("j" next-line)
|
|
|
|
("k" previous-line)
|
|
|
|
("b" smerge-keep-base)
|
|
|
|
("u" smerge-keep-upper)
|
|
|
|
("l" smerge-keep-lower)
|
|
|
|
("a" smerge-keep-all)
|
|
|
|
("RET" smerge-keep-current)
|
|
|
|
("\C-m" smerge-keep-current)
|
|
|
|
("<" smerge-diff-base-upper)
|
|
|
|
("=" smerge-diff-upper-lower)
|
|
|
|
(">" smerge-diff-base-lower)
|
|
|
|
("H" smerge-refine)
|
|
|
|
("E" smerge-ediff)
|
|
|
|
("C" smerge-combine-with-next)
|
|
|
|
("r" smerge-resolve)
|
|
|
|
("R" smerge-kill-current)
|
|
|
|
("q" nil :color blue)))
|