1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

(shell-resync-dirs): Handle echoing processes more reliably. Don't

insert resync command if `comint-process-echoes' is non-nil.
This commit is contained in:
Romain Francoise 2005-09-17 18:20:40 +00:00
parent 4ac3afdb5a
commit 77689ea32d
2 changed files with 20 additions and 7 deletions

View File

@ -1,3 +1,9 @@
2005-09-17 Romain Francoise <romain@orebokech.com>
* shell.el (shell-resync-dirs): Handle echoing processes more
reliably. Don't insert resync command if `comint-process-echoes'
is non-nil.
2005-09-17 Magnus Henoch <mange@freemail.hu>
* textmodes/ispell.el (ispell-aspell-supports-utf8): New variable.

View File

@ -797,19 +797,26 @@ command again."
(let* ((proc (get-buffer-process (current-buffer)))
(pmark (process-mark proc)))
(goto-char pmark)
(insert shell-dirstack-query) (insert "\n")
;; If the process echoes commands, don't insert a fake command in
;; the buffer or it will appear twice.
(unless comint-process-echoes
(insert shell-dirstack-query) (insert "\n"))
(sit-for 0) ; force redisplay
(comint-send-string proc shell-dirstack-query)
(comint-send-string proc "\n")
(set-marker pmark (point))
(let ((pt (point))) ; wait for 1 line
(let ((pt (point))
(regexp
(concat
(if comint-process-echoes
;; Skip command echo if the process echoes
(concat "\\(" (regexp-quote shell-dirstack-query) "\n\\)")
"\\(\\)")
"\\(.+\n\\)")))
;; This extra newline prevents the user's pending input from spoofing us.
(insert "\n") (backward-char 1)
(while (not (looking-at
(concat "\\(" ; skip literal echo in case of stty echo
(regexp-quote shell-dirstack-query)
"\n\\)?" ; skip if present
"\\(" ".+\n" "\\)")) ) ; what to actually look for
;; Wait for one line.
(while (not (looking-at regexp))
(accept-process-output proc)
(goto-char pt)))
(goto-char pmark) (delete-char 1) ; remove the extra newline