mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 12:21:25 -08:00
(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].
This commit is contained in:
parent
9a72e4c14b
commit
4e1513b594
2 changed files with 32 additions and 20 deletions
|
|
@ -1,3 +1,10 @@
|
|||
2001-09-11 Miles Bader <miles@gnu.org>
|
||||
|
||||
* comint.el (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].
|
||||
|
||||
2001-09-11 Gerd Moellmann <gerd@gnu.org>
|
||||
|
||||
* textmodes/outline.el (outline-mode): Use `^' and a shy group
|
||||
|
|
|
|||
|
|
@ -1469,26 +1469,31 @@ Similarly for Soar, Scheme, etc."
|
|||
(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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue