changeset 6556:79884c55326f

(emerge-goto-line): New function. (emerge-convert-diffs-to-markers): Use it.
author Richard M. Stallman <rms@gnu.org>
date Mon, 28 Mar 1994 18:48:16 +0000
parents 771fa0ddb356
children 74758cf67338
files lisp/emerge.el
diffstat 1 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emerge.el	Mon Mar 28 18:36:14 1994 +0000
+++ b/lisp/emerge.el	Mon Mar 28 18:48:16 1994 +0000
@@ -1432,6 +1432,12 @@
 			   (emerge-restore-variables emerge-saved-variables
 						     B-values))))
 
+;; Move to line DESIRED-LINE assuming we are at line CURRENT-LINE.
+;; Return DESIRED-LINE.
+(defun emerge-goto-line (desired-line current-line)
+  (forward-line (- desired-line current-line))
+  current-line)
+
 (defun emerge-convert-diffs-to-markers (A-buffer
 					B-buffer
 					merge-buffer
@@ -1449,7 +1455,13 @@
 			  B-buffer
 			  (save-restriction
 			    (widen)
-			    (count-lines 1 B-point-min)))))
+			    (count-lines 1 B-point-min))))
+	 ;; Record current line number in each buffer
+	 ;; so we don't have to count from the beginning.
+	 (a-line A-hidden-lines)
+	 (b-line B-hidden-lines))
+    (emerge-eval-in-buffer A-buffer (goto-char (point-min)))
+    (emerge-eval-in-buffer B-buffer (goto-char (point-min)))
     (while lineno-list
       (let* ((list-element (car lineno-list))
 	     a-begin-marker
@@ -1466,15 +1478,15 @@
 	;; place markers at the appropriate places in the buffers
 	(emerge-eval-in-buffer
 	 A-buffer
-	 (goto-line (+ a-begin A-hidden-lines))
+	 (setq a-line (emerge-goto-line (+ a-begin A-hidden-lines) a-line))
 	 (setq a-begin-marker (point-marker))
-	 (goto-line (+ a-end A-hidden-lines))
+	 (setq a-line (emerge-goto-line (+ a-end A-hidden-lines) a-line))
 	 (setq a-end-marker (point-marker)))
 	(emerge-eval-in-buffer
 	 B-buffer
-	 (goto-line (+ b-begin B-hidden-lines))
+	 (setq b-line (emerge-goto-line (+ b-begin B-hidden-lines) b-line))
 	 (setq b-begin-marker (point-marker))
-	 (goto-line (+ b-end B-hidden-lines))
+	 (setq b-line (emerge-goto-line (+ b-end B-hidden-lines) b-line))
 	 (setq b-end-marker (point-marker)))
 	(setq merge-begin-marker (set-marker
 				  (make-marker)