Function: ediff-next-difference

ediff-next-difference is an interactive and byte-compiled function defined in ediff-util.el.gz.

Signature

(ediff-next-difference &optional ARG)

Documentation

Advance to the next difference.

With a prefix argument ARG, go forward that many differences.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/vc/ediff-util.el.gz
(defun ediff-next-difference (&optional arg)
  "Advance to the next difference.
With a prefix argument ARG, go forward that many differences."
  (interactive "p")
  (ediff-barf-if-not-control-buffer)
  (if (< ediff-current-difference ediff-number-of-differences)
      (let ((n (min ediff-number-of-differences
		    (+ ediff-current-difference (or arg 1))))
	    non-clash-skip skip-changed regexp-skip)

	(ediff-visible-region)
	(or (>= n ediff-number-of-differences)
	    (setq regexp-skip (funcall ediff-skip-diff-region-function n))
	    ;; this won't exec if regexp-skip is t
	    (setq non-clash-skip (ediff-merge-region-is-non-clash-to-skip n)
		  skip-changed
		  (ediff-skip-merge-region-if-changed-from-default-p n))
	    (ediff-install-fine-diff-if-necessary n))
	;; Skip loop
	(while (and (< n ediff-number-of-differences)
		    (or
		     ;; regexp skip
		     regexp-skip
		     ;; skip clashes, if necessary
		     non-clash-skip
		     ;; skip processed regions
		     skip-changed
		     ;; skip difference regions that differ in white space
		     (and ediff-ignore-similar-regions
			  (ediff-merge-region-is-non-clash n)
			  (or (eq (ediff-no-fine-diffs-p n) t)
			      (and (ediff-merge-job)
				   (eq (ediff-no-fine-diffs-p n) 'C)))
			  )))
	  (setq n (1+ n))
	  (if (= 0 (mod n 20))
	      (message "Skipped over region %d and counting ..."  n))
	  (or (>= n ediff-number-of-differences)
	      (setq regexp-skip (funcall ediff-skip-diff-region-function n))
	      ;; this won't exec if regexp-skip is t
	      (setq non-clash-skip (ediff-merge-region-is-non-clash-to-skip n)
		    skip-changed
		    (ediff-skip-merge-region-if-changed-from-default-p n))
	      (ediff-install-fine-diff-if-necessary n))
	  )
	(message "")
	(ediff-unselect-and-select-difference n)
	) ; let
    (ediff-visible-region)
    (user-error "At end of the difference list")))