]> git.eshelyaron.com Git - emacs.git/commitdiff
(shell-resync-dirs): Handle echoing processes more reliably. Don't
authorRomain Francoise <romain@orebokech.com>
Sat, 17 Sep 2005 18:20:40 +0000 (18:20 +0000)
committerRomain Francoise <romain@orebokech.com>
Sat, 17 Sep 2005 18:20:40 +0000 (18:20 +0000)
insert resync command if `comint-process-echoes' is non-nil.

lisp/ChangeLog
lisp/shell.el

index c43fe74793b4be22773c179efdd39ff593cced96..34e055cf5b0582fb1b84ada96bd43428ec81eab5 100644 (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.
index 0f71d8d820558e1de65fba8b50a605de5a25afc2..84de8efd8dfbffa00008cfaf5886f5a8597832b3 100644 (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