changeset 30735:7960e7b84348

(comint-send-input): Make the newline boundary overlay rear-nonsticky. Use `insert' instead of `insert-before-markers'. (comint-output-filter): Use `insert' instead of `insert-before-markers'. Extend comint-last-output-overlay when necessary since we can't rely on insert-before-markers to do it.
author Miles Bader <miles@gnu.org>
date Thu, 10 Aug 2000 10:52:29 +0000
parents 103f6840bba1
children 48d749ce74e4
files lisp/comint.el
diffstat 1 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/comint.el	Thu Aug 10 10:44:49 2000 +0000
+++ b/lisp/comint.el	Thu Aug 10 10:52:29 2000 +0000
@@ -1396,7 +1396,7 @@
 
           (if comint-process-echoes
               (delete-region pmark (point))
-	    (insert-before-markers ?\n))
+	    (insert ?\n))
 
 	  (if (and (funcall comint-input-filter history)
 		   (or (null comint-input-ignoredups)
@@ -1430,6 +1430,7 @@
 	      ;; Make an overlay for the terminating newline
 	      (let ((over (make-overlay end (1+ end))))
 		(overlay-put over 'field 'boundary)
+		(overlay-put over 'rear-nonsticky t)
 		(overlay-put over 'evaporate t))))
 
 	  (comint-snapshot-last-prompt)
@@ -1507,16 +1508,21 @@
 		(setq obeg (+ obeg nchars)))
 	    (if (<= (point) oend)
 		(setq oend (+ oend nchars)))
-	    (insert-before-markers string)
+
+	    (insert string)
 
 	    (unless comint-use-prompt-regexp-instead-of-fields
 	      ;; We check to see if the last overlay used for output has
 	      ;; already been extended to include STRING (because it was
 	      ;; inserted with insert-before-markers?), and only make
 	      ;; a new overlay if it hasn't.
-	      (unless (and comint-last-output-overlay
-			   (equal (overlay-end comint-last-output-overlay)
-				  (point)))
+	      (if (and comint-last-output-overlay
+		       (equal (overlay-end comint-last-output-overlay) ostart))
+		  ;; Extend comint-last-output-overlay to include the
+		  ;; most recent output
+		  (move-overlay comint-last-output-overlay
+				(overlay-start comint-last-output-overlay)
+				(point))
 		;; Create a new overlay
 		(let ((over (make-overlay ostart (point))))
 		  (overlay-put over 'field 'output)