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")))))))