Function: ediff-previous-difference

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

Signature

(ediff-previous-difference &optional ARG)

Documentation

Go to the previous difference.

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

Key Bindings

Source Code

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

	(ediff-visible-region)
	(or (< n 0)
	    (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))
	(while (and (> n -1)
		    (or
		     ;; regexp skip
		     regexp-skip
		     ;; skip clashes, if necessary
		     non-clash-skip
		     ;; skipp changed 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)))
			  )))
	  (if (= 0 (mod (1+ n) 20))
	      (message "Skipped over region %d and counting ..."  (1+ n)))
	  (setq n (1- n))
	  (or (< n 0)
	      (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 beginning of the difference list")))