From: Miles Bader Date: Thu, 10 Aug 2000 10:52:29 +0000 (+0000) Subject: (comint-send-input): Make the newline boundary overlay rear-nonsticky. X-Git-Tag: emacs-pretest-21.0.90~2369 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b59b731fa1b84e557db30cc7cc4b4d7ec6e00790;p=emacs.git (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. --- diff --git a/lisp/comint.el b/lisp/comint.el index 15d6a12b335..21e318e2112 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -1396,7 +1396,7 @@ Similarly for Soar, Scheme, etc." (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 @@ Similarly for Soar, Scheme, etc." ;; 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 @@ This variable is permanent-local.") (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)