1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-12 14:30:42 -08:00
emacs/lisp/eshell
Jim Porter 50339b38fd Use 'unwind-protect' to ensure that Eshell always closes I/O handles
See bug#72220.

* lisp/eshell/esh-cmd.el (eshell-with-handles): New macro...
(eshell-commands): ... use it.
(eshell-with-copied-handles): Remove STEAL-P and allow multiple body
forms (this is an incompatible change, but the macro is currently
internal despite the name).
(eshell-parse-command, eshell-do-pipelines)
(eshell-do-pipelines-synchronously, eshell--invoke-command-directly-p):
Remove handle stealing.
(eshell-structure-basic-command, eshell-do-command)
(eshell-lisp-command): Remove 'eshell-close-handles'.
(eshell-protect): Make obsolete.
(eshell-rewrite-for-command, eshell-rewrite-while-command)
(eshell-rewrite-if-command, (eshell-parse-pipeline): Remove
'eshell-protect'.

* lisp/eshell/esh-io.el (eshell-duplicate-handles): Make STEAL-P
obsolete.

* lisp/eshell/esh-proc.el (eshell-gather-process-output): Call
'eshell-protect-handles' one more time.  Remove 'eshell-close-handles'.

* lisp/eshell/esh-var.el (eshell-parse-variable-ref): Reimplement
$<COMMAND> form using 'eshell-with-handles'.

* test/lisp/eshell/esh-cmd-tests.el
(esh-cmd-test/command-not-found/pipeline): New test.

* test/lisp/eshell/em-tramp-tests.el
(em-tramp-test/should-replace-command): Adjust check for
'eshell-with-copied-handles'.
2024-07-27 13:57:17 -07:00
..
em-alias.el Split out exit code parts of 'eshell-close-handles' into a new function 2024-07-19 11:22:34 -07:00
em-banner.el Use 'esh-module-autoload' for Eshell modules' defgroups 2024-05-29 12:09:05 -07:00
em-basic.el Use 'esh-module-autoload' for Eshell modules' defgroups 2024-05-29 12:09:05 -07:00
em-cmpl.el Use 'esh-module-autoload' for Eshell modules' defgroups 2024-05-29 12:09:05 -07:00
em-dirs.el Be more efficient when buffering output in Eshell 2024-06-08 12:29:29 -07:00
em-elecslash.el Checkdoc fixes in eshell/*.el 2024-07-08 16:51:05 +02:00
em-extpipe.el Checkdoc fixes in eshell/*.el 2024-07-08 16:51:05 +02:00
em-glob.el Use 'esh-module-autoload' for Eshell modules' defgroups 2024-05-29 12:09:05 -07:00
em-hist.el Don't save to history from 'eshell-command' when aborting 2024-07-15 09:10:30 -07:00
em-ls.el Be more efficient when buffering output in Eshell 2024-06-08 12:29:29 -07:00
em-pred.el Checkdoc fixes in eshell/*.el 2024-07-08 16:51:05 +02:00
em-prompt.el Ensure navigating by paragraphs in Eshell stops at prompts and paragraphs 2024-06-20 19:01:20 -07:00
em-rebind.el Use 'esh-module-autoload' for Eshell modules' defgroups 2024-05-29 12:09:05 -07:00
em-script.el Allow specifying stdout/stderr separately in some Eshell commands 2024-07-18 15:00:41 -07:00
em-smart.el Use 'esh-module-autoload' for Eshell modules' defgroups 2024-05-29 12:09:05 -07:00
em-term.el Use 'esh-module-autoload' for Eshell modules' defgroups 2024-05-29 12:09:05 -07:00
em-tramp.el Use 'esh-module-autoload' for Eshell modules' defgroups 2024-05-29 12:09:05 -07:00
em-unix.el Improve correctness of 'eshell-quote-argument' 2024-06-09 15:28:40 -07:00
em-xtra.el Use 'esh-module-autoload' for Eshell modules' defgroups 2024-05-29 12:09:05 -07:00
esh-arg.el Improve correctness of 'eshell-quote-argument' 2024-06-09 15:28:40 -07:00
esh-cmd.el Use 'unwind-protect' to ensure that Eshell always closes I/O handles 2024-07-27 13:57:17 -07:00
esh-ext.el Fix execution of MS-Windows app execution aliases in Eshell 2024-07-07 20:25:09 -07:00
esh-io.el Use 'unwind-protect' to ensure that Eshell always closes I/O handles 2024-07-27 13:57:17 -07:00
esh-mode.el Limit the amount of text we examine when looking for password prompts 2024-06-20 17:37:19 -07:00
esh-module.el Checkdoc fixes in eshell/*.el 2024-07-08 16:51:05 +02:00
esh-opt.el ; Compute the list of symbols for 'eshell-eval-using-options' once 2024-02-13 12:27:38 -08:00
esh-proc.el Use 'unwind-protect' to ensure that Eshell always closes I/O handles 2024-07-27 13:57:17 -07:00
esh-util.el Checkdoc fixes in eshell/*.el 2024-07-08 16:51:05 +02:00
esh-var.el Use 'unwind-protect' to ensure that Eshell always closes I/O handles 2024-07-27 13:57:17 -07:00
eshell.el Allow specifying stdout/stderr separately in some Eshell commands 2024-07-18 15:00:41 -07:00