Show ancestor buffer in 3way merges
commit0f3d1b782353fd1fc0ab5f89d47d9e790f44e6b2
authorTino Calancha <tino.calancha@gmail.com>
Tue, 14 Mar 2017 07:12:29 +0000 (14 16:12 +0900)
committerTino Calancha <tino.calancha@gmail.com>
Tue, 14 Mar 2017 07:12:29 +0000 (14 16:12 +0900)
tree0f9e4ae51b5bb2aaddc5f38d51c5e25a1bab78d6
parente39d593475300ff388cdb69c8134ad513e9310e7
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.
doc/misc/ediff.texi
etc/NEWS
lisp/vc/ediff-help.el
lisp/vc/ediff-init.el
lisp/vc/ediff-util.el
lisp/vc/ediff-wind.el