changeset 20658:545fec062c8c

(occur): If the matching line has no final newline, insert one anyway. Compensate for that when inserting line nums.
author Karl Heuer <kwzh@gnu.org>
date Sun, 18 Jan 1998 02:53:16 +0000
parents 635d8acc7755
children 8f720ae97bf8
files lisp/replace.el
diffstat 1 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/replace.el	Sat Jan 17 20:02:40 1998 +0000
+++ b/lisp/replace.el	Sun Jan 18 02:53:16 1998 +0000
@@ -491,6 +491,7 @@
 		     (tag (format "%5d" linenum))
 		     (empty (make-string (length tag) ?\ ))
 		     tem		
+		     insertion-start
 		     ;; Number of lines of context to show for current match.
 		     occur-marker	
 		     ;; Marker pointing to end of match in source buffer.
@@ -515,7 +516,21 @@
 		  ;; Insert matching text including context lines from
 		  ;; source buffer into *Occur*
 		  (set-marker text-beg (point))
+		  (setq insertion-start (point))
 		  (insert-buffer-substring buffer start end)
+		  (or (and (/= (+ start match-beg) end)
+			   (with-current-buffer buffer
+			     (eq (char-before end) ?\n)))
+		      (insert "\n"))
+		  (set-marker final-context-start 
+			      (+ (- (point) (- end (match-end 0)))
+				 (if (save-excursion
+				       (set-buffer buffer)
+				       (save-excursion
+					 (goto-char (match-end 0))
+					 (end-of-line)
+					 (bolp)))
+				     1 0)))
 		  (set-marker text-end (point))
 		  
 		  ;; Highlight text that was matched.
@@ -531,12 +546,10 @@
 		   (+ (marker-position text-beg) match-beg match-len)
 		   (+ (marker-position text-beg) match-beg match-len 1)
 		   'occur-point t)
-		  (set-marker final-context-start 
-			      (- (point) (- end (match-end 0))))
 		  
 		  ;; Now go back to the start of the matching text
 		  ;; adding the space and colon to the start of each line.
-		  (goto-char (- (point) (- end start)))
+		  (goto-char insertion-start)
 		  ;; Insert space and colon for lines of context before match.
 		  (setq tem (if (< linenum nlines)
 				(- nlines linenum)
@@ -556,7 +569,7 @@
 		      (forward-line 1)
 		      (setq tag nil)
 		      (setq this-linenum (1+ this-linenum)))
-		    (while (<= (point) final-context-start)
+		    (while (and (not (eobp)) (<= (point) final-context-start))
 		      (insert empty ?:)
 		      (forward-line 1)
 		      (setq this-linenum (1+ this-linenum))))