Function: emerge-extract-diffs
emerge-extract-diffs is a byte-compiled function defined in
emerge.el.gz.
Signature
(emerge-extract-diffs DIFF-BUFFER)
Source Code
;; Defined in /usr/src/emacs/lisp/vc/emerge.el.gz
(defun emerge-extract-diffs (diff-buffer)
(let (list)
(with-current-buffer
diff-buffer
(goto-char (point-min))
(while (re-search-forward emerge-match-diff-line nil t)
(let* ((a-begin (string-to-number (buffer-substring (match-beginning 1)
(match-end 1))))
(a-end (let ((b (match-beginning 3))
(e (match-end 3)))
(if b
(string-to-number (buffer-substring b e))
a-begin)))
(diff-type (buffer-substring (match-beginning 4) (match-end 4)))
(b-begin (string-to-number (buffer-substring (match-beginning 5)
(match-end 5))))
(b-end (let ((b (match-beginning 7))
(e (match-end 7)))
(if b
(string-to-number (buffer-substring b e))
b-begin))))
;; fix the beginning and end numbers, because diff is somewhat
;; strange about how it numbers lines
(if (string-equal diff-type "a")
(progn
(setq b-end (1+ b-end))
(setq a-begin (1+ a-begin))
(setq a-end a-begin))
(if (string-equal diff-type "d")
(progn
(setq a-end (1+ a-end))
(setq b-begin (1+ b-begin))
(setq b-end b-begin))
;; (string-equal diff-type "c")
(progn
(setq a-end (1+ a-end))
(setq b-end (1+ b-end)))))
(setq list (cons (vector a-begin a-end
b-begin b-end
'default-A)
list)))))
(nreverse list)))