Fix FOO-flush-output so that it works right when the output doesn't
authorChris Hanson <org/chris-hanson/cph>
Thu, 26 Aug 1999 18:20:44 +0000 (18:20 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 26 Aug 1999 18:20:44 +0000 (18:20 +0000)
start with a newline.

v7/src/edwin/comint.scm
v7/src/edwin/intmod.scm

index b03863d6b481dfdc5d00283b10f82e16f89d5c87..4ea7e2e69d8458ec05d7cc9706d6d89479187e2d 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: comint.scm,v 1.29 1999/08/10 16:54:57 cph Exp $
+$Id: comint.scm,v 1.30 1999/08/26 18:20:39 cph Exp $
 
 Copyright (c) 1991-1999 Massachusetts Institute of Technology
 
@@ -291,12 +291,19 @@ With negative arg, newer inputs are reentered."
   "Kill all output from interpreter since last input."
   ()
   (lambda ()
-    (let ((start (mark1+ (ref-variable comint-last-input-end) 'LIMIT))
+    (let ((start
+          (mark-left-inserting-copy
+           (let ((start (ref-variable comint-last-input-end)))
+             (if (eqv? #\newline (extract-right-char start))
+                 (mark1+ start)
+                 start))))
          (end (line-start (comint-process-mark) 0)))
       (if (< (mark-index start) (mark-index end))
          (begin
            (delete-string start end)
-           (insert-string "*** output flushed ***\n" start))))))
+           (guarantee-newline start)
+           (insert-string "*** output flushed ***\n" start)))
+      (mark-temporary! start))))
 
 (define (comint-process-mark)
   (let ((buffer (selected-buffer)))
index b564a66b8da01133587d4e59338c0d247d97303d..ee7bb61de7e7308dccd0344b4d8a316b994f5319 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: intmod.scm,v 1.99 1999/02/24 21:59:07 cph Exp $
+;;; $Id: intmod.scm,v 1.100 1999/08/26 18:20:44 cph Exp $
 ;;;
 ;;; Copyright (c) 1986, 1989-1999 Massachusetts Institute of Technology
 ;;;
@@ -555,7 +555,11 @@ If this is an error, the debugger examines the error condition."
   "Kill all output from REPL since last input."
   ()
   (lambda ()
-    (let ((start (mark1+ (ref-variable comint-last-input-end) 'LIMIT))
+    (let ((start
+          (let ((start (ref-variable comint-last-input-end)))
+            (if (eqv? #\newline (extract-right-char start))
+                (mark1+ start)
+                start)))
          (end (port/mark (buffer-interface-port (selected-buffer) #t))))
       (let ((value-mark
             (re-search-backward flush-output-regexp end start #f)))
@@ -564,6 +568,7 @@ If this is an error, the debugger examines the error condition."
          (if (mark< start end)
              (begin
                (delete-string start end)
+               (guarantee-newline start)
                (insert-string "*** output flushed ***\n" start)))
          (if value-mark
              (let ((m