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