# HG changeset patch # User Miles Bader # Date 1000197608 0 # Node ID e2d428b5bfea9e27375678493d1b709b6dcc2136 # Parent 246f0728f1d7ceba06bce68a4beb4e0ff0d26d61 (comint-send-input): When waiting for echoed input, don't save the expected end position in `echo-end', so that things work properly even if the buffer is modified elsewhere at the same time [this happens if `comint-truncate-buffer' is used]. diff -r 246f0728f1d7 -r e2d428b5bfea lisp/comint.el --- a/lisp/comint.el Tue Sep 11 08:31:16 2001 +0000 +++ b/lisp/comint.el Tue Sep 11 08:40:08 2001 +0000 @@ -1469,26 +1469,31 @@ (funcall comint-input-sender proc input) ;; Optionally delete echoed input (after checking it). - (if comint-process-echoes - (let* ((echo-len (- comint-last-input-end - comint-last-input-start)) - (echo-end (+ comint-last-input-end echo-len))) - ;; Wait for all input to be echoed: - (while (and (accept-process-output proc) - (> echo-end (point-max)) - (= 0 (compare-buffer-substrings - nil comint-last-input-start - (- (point-max) echo-len) - ;; Above difference is equivalent to - ;; (+ comint-last-input-start - ;; (- (point-max) comint-last-input-end)) - nil comint-last-input-end (point-max))))) - (if (and - (<= echo-end (point-max)) - (= 0 (compare-buffer-substrings - nil comint-last-input-start comint-last-input-end - nil comint-last-input-end echo-end))) - (delete-region comint-last-input-end echo-end)))) + (when comint-process-echoes + (let ((echo-len (- comint-last-input-end + comint-last-input-start))) + ;; Wait for all input to be echoed: + (while (and (accept-process-output proc) + (> (+ comint-last-input-end echo-len) + (point-max)) + (zerop + (compare-buffer-substrings + nil comint-last-input-start + (- (point-max) echo-len) + ;; Above difference is equivalent to + ;; (+ comint-last-input-start + ;; (- (point-max) comint-last-input-end)) + nil comint-last-input-end (point-max))))) + (if (and + (<= (+ comint-last-input-end echo-len) + (point-max)) + (zerop + (compare-buffer-substrings + nil comint-last-input-start comint-last-input-end + nil comint-last-input-end + (+ comint-last-input-end echo-len)))) + (delete-region comint-last-input-end + (+ comint-last-input-end echo-len))))) ;; This used to call comint-output-filter-functions, ;; but that scrolled the buffer in undesirable ways.