Function: emerge-select-version
emerge-select-version is a byte-compiled function defined in
emerge.el.gz.
Signature
(emerge-select-version FORCE A-VERSION B-VERSION NEITHER-VERSION)
Documentation
Test if user should be allowed to select a version of this difference.
This is the case if:
a valid difference has been selected; and
the difference text in the merge buffer is:
the A version (execute a-version), or
the B version (execute b-version), or
empty (execute neither-version), or
argument FORCE is true (execute neither-version)
Otherwise, signal an error.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/emerge.el.gz
(defun emerge-select-version (force a-version b-version neither-version)
"Test if user should be allowed to select a version of this difference.
This is the case if:
a valid difference has been selected; and
the difference text in the merge buffer is:
the A version (execute a-version), or
the B version (execute b-version), or
empty (execute neither-version), or
argument FORCE is true (execute neither-version)
Otherwise, signal an error."
(emerge-validate-difference)
(let ((inhibit-read-only t))
(let* ((diff-vector
(aref emerge-difference-list emerge-current-difference))
(A-begin (1+ (aref diff-vector 0)))
(A-end (1- (aref diff-vector 1)))
(B-begin (1+ (aref diff-vector 2)))
(B-end (1- (aref diff-vector 3)))
(merge-begin (1+ (aref diff-vector 4)))
(merge-end (1- (aref diff-vector 5))))
(if (emerge-compare-buffers emerge-A-buffer A-begin A-end
emerge-merge-buffer merge-begin
merge-end)
(funcall a-version diff-vector)
(if (emerge-compare-buffers emerge-B-buffer B-begin B-end
emerge-merge-buffer merge-begin
merge-end)
(funcall b-version diff-vector)
(if (or force (= merge-begin merge-end))
(funcall neither-version diff-vector)
(error "This difference region has been edited")))))))