>>>> On Fri Mar 22, Steve writes:
|--==> "AD" == Adam Duck
<duck(a)informatik.uni-frankfurt.de> writes:
AD> Dear Bug Team!
AD> When I have both running, eshell and dired, no command can be
AD> executed at eshell. I have to kill all dired-buffers to have
AD> eshell functioning again. As I don't know if this is a dired or an
AD> eshell-bug, I'm sending it here. Also: I have seen this on
AD> windows (21.3|4) and linux 21.4|5. Even with the latest
AD> post-ben-merge-version this error occurs. I had MULE and
AD> noMULE-version on windows and at least this didn't matter.
AD> To reproduce: xemacs -vanilla M-x dired M-x eshell
AD> try a command in eshell - like gzip or something - and it won't
AD> work at all.
I can reproduce this here.
John, Mike, can either of you guys shed some light on this one?
This is an XEmacs change that's affecting Eshell. It will be fixed in
the next version (maybe June?). In the meantime, replace the function
`eshell-external-command' in esh-ext.el with this one:
(defun eshell-external-command (command args)
"Insert output from an external COMMAND, using ARGS."
(setq args (eshell-stringify-list (eshell-flatten-list args)))
(let ((handler
(unless (or (equal default-directory "/")
(and (eshell-under-windows-p)
(string-match "\\`[A-Za-z]:[/\\\\]\\'"
default-directory)))
(find-file-name-handler default-directory
'shell-command))))
(if (and handler
(not (and (eshell-under-xemacs-p)
(eq handler 'dired-handler-fn))))
(eshell-remote-command handler command args))
(let ((interp (eshell-find-interpreter command)))
(assert interp)
(if (functionp (car interp))
(apply (car interp) (append (cdr interp) args))
(eshell-gather-process-output
(car interp) (append (cdr interp) args))))))