diff options
author | Jim Porter <jporterbugs@gmail.com> | 2023-09-23 11:36:11 -0700 |
---|---|---|
committer | Jim Porter <jporterbugs@gmail.com> | 2023-10-02 20:49:41 -0700 |
commit | 498d31e9f0549189f4e9b140549419dd4e462575 (patch) | |
tree | e66ae54cfe9f53d7481df35850a066042e0b6e1d /lisp/eshell/em-cmpl.el | |
parent | 8f2cfe15a72a0c440909faa50a9c436931dcf85e (diff) |
Support Eshell iterative evaluation in the background
This really just generalizes Eshell's previous support for iterative
evaluation of a single current command to a list of multiple commands,
of which at most one can be in the foreground (bug#66066).
* lisp/eshell/esh-cmd.el (eshell-last-async-procs)
(eshell-current-command): Make obsolete in favor of...
(eshell-foreground-command): ... this
(eshell-background-commands): New variable.
(eshell-interactive-process-p): Make obsolete.
(eshell-head-process, eshell-tail-process): Use
'eshell-foreground-command'.
(eshell-cmd-initialize): Initialize new variables.
(eshell-add-command, eshell-remove-command)
(eshell-commands-for-process): New functions.
(eshell-parse-command): Make 'eshell-do-subjob' the outermost call.
(eshell-do-subjob): Call 'eshell-resume-eval' to split this command
off from its parent forms.
(eshell-eval-command): Use 'eshell-add-command'.
(eshell-resume-command): Use 'eshell-commands-for-process'.
(eshell-resume-eval): Take a COMMAND argument. Return
':eshell-background' form for deferred background commands.
(eshell-do-eval): Remove check for 'eshell-current-subjob-p'. This is
handled differently now.
* lisp/eshell/eshell.el (eshell-command): Wait for all processes to
exit when running synchronously.
* lisp/eshell/esh-mode.el (eshell-intercept-commands)
(eshell-watch-for-password-prompt):
* lisp/eshell/em-cmpl.el (eshell-complete-parse-arguments):
* lisp/eshell/em-smart.el (eshell-smart-display-move): Use
'eshell-foreground-command'.
* test/lisp/eshell/esh-cmd-tests.el
(esh-cmd-test/background/simple-command)
(esh-cmd-test/background/subcommand): New tests.
(esh-cmd-test/throw): Use 'eshell-foreground-command'.
* test/lisp/eshell/eshell-tests.el (eshell-test/queue-input): Use
'eshell-foreground-command'.
* test/lisp/eshell/em-script-tests.el
(em-script-test/source-script/background): Make the test script more
complex.
* test/lisp/eshell/eshell-tests.el
(eshell-test/eshell-command/pipeline-wait): New test.
* doc/misc/eshell.texi (Bugs and ideas): Remove implemented feature.
Diffstat (limited to 'lisp/eshell/em-cmpl.el')
-rw-r--r-- | lisp/eshell/em-cmpl.el | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el index 25dccbd695c..61f1237b907 100644 --- a/lisp/eshell/em-cmpl.el +++ b/lisp/eshell/em-cmpl.el @@ -343,7 +343,7 @@ to writing a completion function." (defun eshell-complete-parse-arguments () "Parse the command line arguments for `pcomplete-argument'." (when (and eshell-no-completion-during-jobs - (eshell-interactive-process-p)) + eshell-foreground-command) (eshell--pcomplete-insert-tab)) (let ((end (point-marker)) (begin (save-excursion (beginning-of-line) (point))) |