summaryrefslogtreecommitdiff
path: root/lisp/vc/ediff-init.el
diff options
context:
space:
mode:
authorTino Calancha <tino.calancha@gmail.com>2017-03-14 16:12:29 +0900
committerTino Calancha <tino.calancha@gmail.com>2017-03-14 16:12:29 +0900
commit0f3d1b782353fd1fc0ab5f89d47d9e790f44e6b2 (patch)
tree0f9e4ae51b5bb2aaddc5f38d51c5e25a1bab78d6 /lisp/vc/ediff-init.el
parente39d593475300ff388cdb69c8134ad513e9310e7 (diff)
downloademacs-0f3d1b782353fd1fc0ab5f89d47d9e790f44e6b2.tar.gz
Show ancestor buffer in 3way merges
Add an option ediff-show-ancestor', to control if the ancestor buffer must be shown in 3way merges (Bug#25493); set it non-nil by default. Add a toggle to change this option interactively; the original value of the option is restored on exit. Update the window setup so that the ancestor buffer is shown in 3way merges when ediff-show-ancestor is non-nil. Any operation on ediff windows must take in account the ancestor window as well, when this is shown. * lisp/vc/ediff-init.el (ediff-show-ancestor): New option. (ediff--show-ancestor-orig): New defvar. * lisp/vc/ediff-wind.el (ediff-window-Ancestor): New defvar. (ediff-setup-windows-plain-merge, ediff-setup-windows-multiframe-merge): Display ancestor buffer if ediff-show-ancestor is non-nil. (ediff-keep-window-config): Expect ancestor window in ediff-window-config-saved. (ediff-window-alist): Add entry for the ancestor window. * lisp/vc/ediff-util.el (ediff-setup-control-buffer): ediff-window-config-saved contains ancestor window. (ediff-show-ancestor): Delete this command. (ediff-setup-keymap): Bind ediff-toggle-show-ancestor to '/' for merge jobs. (ediff-update-diffs): Compute new diffs using ancestor buffer in 3way merges; don't cheat it to think that is performing a comparison, that trick is not necessary anymore: simply call 'ediff-setup-diff-regions-function' with file-A, file-B and the file ancestor. (ediff-recenter): Update doc string. Consider the ancestor buffer. (ediff--check-ancestor-exists): New defun. (ediff-toggle-show-ancestor): New command; toggle ediff-show-ancestor. (ediff--restore-options-on-exit): Restore ediff-show-ancestor on exit. (ediff-scroll-vertically, ediff-scroll-horizontally) (ediff-operate-on-windows): Consider the ancestor as well. * lisp/vc/ediff-help.el (ediff-long-help-message-merge): List ediff-toggle-show-ancestor. * doc/misc/ediff.texi (Introduction, Quick Help Commands): Update manual. ; * etc/NEWS: Announce these changes.
Diffstat (limited to 'lisp/vc/ediff-init.el')
-rw-r--r--lisp/vc/ediff-init.el10
1 files changed, 10 insertions, 0 deletions
diff --git a/lisp/vc/ediff-init.el b/lisp/vc/ediff-init.el
index 535fdbfc904..e0542688593 100644
--- a/lisp/vc/ediff-init.el
+++ b/lisp/vc/ediff-init.el
@@ -1363,6 +1363,16 @@ This property can be toggled interactively."
;; if nil, this silences some messages
(defvar ediff-verbose-p t)
+(defcustom ediff-show-ancestor t
+"If non-nil, show ancestor buffer in 3way merges and refine it."
+ :type 'boolean
+ :group 'ediff-merge
+ :version "26.1")
+
+;; Store orig value of `ediff-show-ancestor' when changed in
+;; `ediff-toggle-show-ancestor' and restore it on exit.
+(ediff-defvar-local ediff--show-ancestor-orig nil "")
+
(defcustom ediff-autostore-merges 'group-jobs-only
"Save the results of merge jobs automatically.
With value nil, don't save automatically. With value t, always