Function: emerge-convert-diffs-to-markers
emerge-convert-diffs-to-markers is a byte-compiled function defined in
emerge.el.gz.
Signature
(emerge-convert-diffs-to-markers A-BUFFER B-BUFFER MERGE-BUFFER LINENO-LIST)
Source Code
;; Defined in /usr/src/emacs/lisp/vc/emerge.el.gz
(defun emerge-convert-diffs-to-markers (A-buffer
B-buffer
merge-buffer
lineno-list)
(let* (marker-list
(offset (with-current-buffer A-buffer
(- (point-min) (save-restriction (widen) (point-min)))))
;; Record current line number in each buffer
;; so we don't have to count from the beginning.
(a-line 1)
(b-line 1))
(with-current-buffer A-buffer (goto-char (point-min)))
(with-current-buffer B-buffer (goto-char (point-min)))
(while lineno-list
(let* ((list-element (car lineno-list))
a-begin-marker
a-end-marker
b-begin-marker
b-end-marker
merge-begin-marker
merge-end-marker
(a-begin (aref list-element 0))
(a-end (aref list-element 1))
(b-begin (aref list-element 2))
(b-end (aref list-element 3))
(state (aref list-element 4)))
;; place markers at the appropriate places in the buffers
(with-current-buffer
A-buffer
(setq a-line (emerge-goto-line a-begin a-line))
(setq a-begin-marker (point-marker))
(setq a-line (emerge-goto-line a-end a-line))
(setq a-end-marker (point-marker)))
(with-current-buffer
B-buffer
(setq b-line (emerge-goto-line b-begin b-line))
(setq b-begin-marker (point-marker))
(setq b-line (emerge-goto-line b-end b-line))
(setq b-end-marker (point-marker)))
(setq merge-begin-marker (set-marker
(make-marker)
(- (marker-position a-begin-marker)
offset)
merge-buffer))
(setq merge-end-marker (set-marker
(make-marker)
(- (marker-position a-end-marker)
offset)
merge-buffer))
;; record all the markers for this difference
(push (vector a-begin-marker a-end-marker
b-begin-marker b-end-marker
merge-begin-marker merge-end-marker
state)
marker-list))
(setq lineno-list (cdr lineno-list)))
;; convert the list of difference information into a vector for
;; fast access
(setq emerge-difference-list (apply #'vector (nreverse marker-list)))))