Function: ediff-setup-windows-plain-compare
ediff-setup-windows-plain-compare is a byte-compiled function defined
in ediff-wind.el.gz.
Signature
(ediff-setup-windows-plain-compare BUF-A BUF-B BUF-C CONTROL-BUFFER)
Source Code
;; Defined in /usr/src/emacs/lisp/vc/ediff-wind.el.gz
;; This function handles all comparison jobs, including 3way jobs
(defun ediff-setup-windows-plain-compare (buf-A buf-B buf-C control-buffer)
;; skip dedicated and unsplittable frames
(ediff-destroy-control-frame control-buffer)
(let ((window-min-height 1)
(window-combination-resize t)
split-window-function
three-way-comparison
wind-A-start wind-B-start wind-A wind-B wind-C)
(with-current-buffer control-buffer
(setq wind-A-start (ediff-overlay-start
(ediff-get-value-according-to-buffer-type
'A ediff-narrow-bounds))
wind-B-start (ediff-overlay-start
(ediff-get-value-according-to-buffer-type
'B ediff-narrow-bounds))
;; this lets us have local versions of ediff-split-window-function
split-window-function ediff-split-window-function
three-way-comparison ediff-3way-comparison-job))
;; if in minibuffer go somewhere else
(if (save-match-data
(string-match "\\*Minibuf-" (buffer-name (window-buffer))))
(select-window (next-window nil 'ignore-minibuf)))
(delete-other-windows)
(set-window-dedicated-p (selected-window) nil)
;; go to the upper window and split it betw A, B, and possibly C
(other-window 1)
(switch-to-buffer buf-A)
(setq wind-A (selected-window))
(funcall split-window-function)
(if (eq (selected-window) wind-A)
(other-window 1))
(switch-to-buffer buf-B)
(setq wind-B (selected-window))
(if three-way-comparison
(progn
(funcall split-window-function)
(if (eq (selected-window) wind-B)
(other-window 1))
(switch-to-buffer buf-C)
(setq wind-C (selected-window))))
(with-current-buffer control-buffer
(setq ediff-window-A wind-A
ediff-window-B wind-B
ediff-window-C wind-C))
;; It is unlikely that we will want to implement 3way window comparison.
;; So, only buffers A and B are used here.
(if ediff-windows-job
(progn
(set-window-start wind-A wind-A-start)
(set-window-start wind-B wind-B-start)))
(select-window (display-buffer-in-direction
control-buffer
'((direction . bottom))))
(ediff-setup-control-buffer control-buffer)
))