Lars Ingebrigtsen writes: > Thierry Volpiatto writes: > >> When running a command in eshell ending with "&" the command should not >> block emacs, it should run asynchronously. > > Do you have a recipe to reproduce? I tried > > emacs -Q > M-x eshell RET > sleep 10 & > > and it ran that asynchronously. Yes, that's work, now do: M-x eshell-command sleep 10 & Debugger entered--Lisp error: (error "Format specifier doesn’t match argument type") format-message("Unmatched delimiter: %c" #) apply(format-message ("Unmatched delimiter: %c" #)) error("Unmatched delimiter: %c" #) eshell-eval-command((let ((eshell-current-handles '[nil (t . 1) (t . 1)]) eshell-current-subjob-p) (let ((eshell-this-command-hook '(ignore))) (condition-case err (eshell-do-eval '(prog1 '... '...) nil) ((debug error) (mapc #'funcall eshell-this-command-hook) (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))))) eshell-command() funcall-interactively(eshell-command) call-interactively(eshell-command record nil) command-execute(eshell-command record) execute-extended-command(nil "eshell-command" "eshell-comm") funcall-interactively(execute-extended-command nil "eshell-command" "eshell-comm") call-interactively(execute-extended-command nil nil) command-execute(execute-extended-command) Sleep is later executed, if you wait 10s you have the result, but the error prevent running properly the command programatically. -- Thierry