<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/lisp/eshell, branch tty-child-frames</title>
<subtitle>Emacs is the extensible, customizable, self-documenting real-time display editor. 
</subtitle>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/'/>
<entry>
<title>Support "/dev/null" as a target when creating Eshell handles</title>
<updated>2024-08-29T02:14:30+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-08-29T02:12:29+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=b6f4ffcc106fdbc21dfea45c75fdc4f217d8f201'/>
<id>b6f4ffcc106fdbc21dfea45c75fdc4f217d8f201</id>
<content type='text'>
Previously, you could only use this when setting the handle afterwards.

* lisp/eshell/esh-io.el (eshell-set-output-handle): Don't catch
'eshell-null-device' here...
(eshell-get-target): ... catch it here.

* test/lisp/eshell/eshell-tests.el
(eshell-test/eshell-command/output-dev-null): New test (bug#72857).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, you could only use this when setting the handle afterwards.

* lisp/eshell/esh-io.el (eshell-set-output-handle): Don't catch
'eshell-null-device' here...
(eshell-get-target): ... catch it here.

* test/lisp/eshell/eshell-tests.el
(eshell-test/eshell-command/output-dev-null): New test (bug#72857).
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix redirecting Eshell output to symbols in some places</title>
<updated>2024-08-29T01:53:03+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-08-29T01:53:03+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=e269cf63a67d529740d0ec2382ae7c3a982cd064'/>
<id>e269cf63a67d529740d0ec2382ae7c3a982cd064</id>
<content type='text'>
* lisp/eshell/esh-io.el (eshell-output-object-to-target): Don't require
TARGET to be bound.

* lisp/eshell/em-script.el (eshell-execute-file):
* lisp/eshell/eshell.el (eshell-command): Quote the output/error
targets.

* test/lisp/eshell/em-script-tests.el (eshell-execute-file-output): New
variable.
(em-script-test/execute-file/output-symbol): New test.

* test/lisp/eshell/eshell-tests.el (eshell-command-output): New
variable.
(eshell-test/eshell-command/output-symbol): New test (bug#72857).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/esh-io.el (eshell-output-object-to-target): Don't require
TARGET to be bound.

* lisp/eshell/em-script.el (eshell-execute-file):
* lisp/eshell/eshell.el (eshell-command): Quote the output/error
targets.

* test/lisp/eshell/em-script-tests.el (eshell-execute-file-output): New
variable.
(em-script-test/execute-file/output-symbol): New test.

* test/lisp/eshell/eshell-tests.el (eshell-command-output): New
variable.
(eshell-test/eshell-command/output-symbol): New test (bug#72857).
</pre>
</div>
</content>
</entry>
<entry>
<title>Use 'eshell-with-handles' in a few more places</title>
<updated>2024-08-29T01:48:28+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-08-29T01:30:29+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=5c68545a936ab42df90c8498ca77207a5e6aff1f'/>
<id>5c68545a936ab42df90c8498ca77207a5e6aff1f</id>
<content type='text'>
* lisp/eshell/em-alias.el (eshell-write-aliases-list):
* lisp/eshell/em-script.el (eshell-batch-file):
* lisp/eshell/esh-cmd.el (eshell-command-to-value):
* lisp/eshell/eshell.el (eshell-command): Use 'eshell-with-handles'.

* test/lisp/eshell/esh-io-tests.el (eshell-test-file-string): Move to...
* test/lisp/eshell/eshell-tests-helpers.el (eshell-test-file-string):
... here.

* test/lisp/eshell/eshell-tests.el
(eshell-test/eshell-command/output-file):
* test/lisp/eshell/em-script-tests.el
(em-script-test/execute-file/output-file): New tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/em-alias.el (eshell-write-aliases-list):
* lisp/eshell/em-script.el (eshell-batch-file):
* lisp/eshell/esh-cmd.el (eshell-command-to-value):
* lisp/eshell/eshell.el (eshell-command): Use 'eshell-with-handles'.

* test/lisp/eshell/esh-io-tests.el (eshell-test-file-string): Move to...
* test/lisp/eshell/eshell-tests-helpers.el (eshell-test-file-string):
... here.

* test/lisp/eshell/eshell-tests.el
(eshell-test/eshell-command/output-file):
* test/lisp/eshell/em-script-tests.el
(em-script-test/execute-file/output-file): New tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use 'eshell-with-handles' when executing an Eshell file</title>
<updated>2024-08-28T20:59:04+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-08-28T20:59:04+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=e97ab1c41332e179939f457cc010a606a5124ff8'/>
<id>e97ab1c41332e179939f457cc010a606a5124ff8</id>
<content type='text'>
This makes sure we close the handles as we should, which is important
for writing the output to an actual file (bug#72857).

* lisp/eshell/em-script.el (esh-cmd): Require this, just to be explicit.
(eshell-execute-file): Use 'eshell-with-handles'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes sure we close the handles as we should, which is important
for writing the output to an actual file (bug#72857).

* lisp/eshell/em-script.el (esh-cmd): Require this, just to be explicit.
(eshell-execute-file): Use 'eshell-with-handles'.
</pre>
</div>
</content>
</entry>
<entry>
<title>; * lisp/eshell/em-dirs.el (eshell/cd): Remove extraneous 'eshell-protect'.</title>
<updated>2024-08-01T16:31:44+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-08-01T16:31:44+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=1134734e19617a0875b77f8c7df64cfb265ec118'/>
<id>1134734e19617a0875b77f8c7df64cfb265ec118</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Use 'unwind-protect' to ensure that Eshell always closes I/O handles</title>
<updated>2024-07-27T20:57:17+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-07-20T01:02:16+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=50339b38fdef31982744bdb8b51838012dd4ef47'/>
<id>50339b38fdef31982744bdb8b51838012dd4ef47</id>
<content type='text'>
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
$&lt;COMMAND&gt; 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'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
$&lt;COMMAND&gt; 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'.
</pre>
</div>
</content>
</entry>
<entry>
<title>; Improve correctness of 'eshell-do-eval' in some edge cases</title>
<updated>2024-07-27T19:15:14+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-07-20T01:07:36+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=8bfdee8689f8b99f353179898e922ec3d975a113'/>
<id>8bfdee8689f8b99f353179898e922ec3d975a113</id>
<content type='text'>
* lisp/eshell/esh-cmd.el (eshell-do-eval): Make sure that replacing 'if'
forms returns the correct result, and evaluate to 'nil' for 'progn'
forms with no body.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/esh-cmd.el (eshell-do-eval): Make sure that replacing 'if'
forms returns the correct result, and evaluate to 'nil' for 'progn'
forms with no body.
</pre>
</div>
</content>
</entry>
<entry>
<title>; * lisp/eshell/esh-io.el (eshell-close-handles): Fix version annotation.</title>
<updated>2024-07-20T21:46:14+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-07-20T21:46:14+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=55fefe06ef00cbe3e27a111a229a2622ae487c74'/>
<id>55fefe06ef00cbe3e27a111a229a2622ae487c74</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't set exit info in Eshell if the command is being piped elsewhere</title>
<updated>2024-07-19T18:22:34+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-07-19T16:34:03+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=b7893e73878df83043e05dc8cb811971c0e99f03'/>
<id>b7893e73878df83043e05dc8cb811971c0e99f03</id>
<content type='text'>
Previously, the exit info in Eshell was that of the last command that
finished, rather than the last command in a pipeline.

* lisp/eshell/esh-cmd.el (eshell-exec-lisp)
(eshell-lisp-command): Check whether the command is being piped.

* lisp/eshell/esh-proc.el (eshell-gather-process-output): Record whether
the command is being piped...
(eshell-sentinel): ... and do the right thing with that info.

* test/lisp/eshell/esh-proc-tests.el
(esh-proc-test/sigpipe-exits-process): Check the exit status to ensure
we don't report the first process's SIGPIPE exit.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, the exit info in Eshell was that of the last command that
finished, rather than the last command in a pipeline.

* lisp/eshell/esh-cmd.el (eshell-exec-lisp)
(eshell-lisp-command): Check whether the command is being piped.

* lisp/eshell/esh-proc.el (eshell-gather-process-output): Record whether
the command is being piped...
(eshell-sentinel): ... and do the right thing with that info.

* test/lisp/eshell/esh-proc-tests.el
(esh-proc-test/sigpipe-exits-process): Check the exit status to ensure
we don't report the first process's SIGPIPE exit.
</pre>
</div>
</content>
</entry>
<entry>
<title>Split out exit code parts of 'eshell-close-handles' into a new function</title>
<updated>2024-07-19T18:22:34+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2023-01-24T01:21:57+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=39c704e03de59a1cc46494fb71426e7a7fe8013d'/>
<id>39c704e03de59a1cc46494fb71426e7a7fe8013d</id>
<content type='text'>
* lisp/eshell/esh-cmd.el (eshell-last-command-status)
(eshell-last-command-result): Move here from esh-io.el.
(eshell-set-exit-info): New function, extracted from
'eshell-close-handles'.

* lisp/eshell/esh-io.el (eshell-close-handles): Make old calling
convention obsolete.  Update callers to use 'eshell-set-exit-info' as
needed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/esh-cmd.el (eshell-last-command-status)
(eshell-last-command-result): Move here from esh-io.el.
(eshell-set-exit-info): New function, extracted from
'eshell-close-handles'.

* lisp/eshell/esh-io.el (eshell-close-handles): Make old calling
convention obsolete.  Update callers to use 'eshell-set-exit-info' as
needed.
</pre>
</div>
</content>
</entry>
</feed>
