<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/test/lisp/eshell, branch scratch/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>Don't clobber stickiness text properties when printing Eshell prompt</title>
<updated>2024-11-14T17:19:31+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-11-07T18:08:33+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=df288d2e4148e6e72f21752a510f98536e7705ac'/>
<id>df288d2e4148e6e72f21752a510f98536e7705ac</id>
<content type='text'>
* lisp/eshell/em-prompt.el (eshell--append-text-property): New
function...
(eshell-emit-prompt): ... use it.

* test/lisp/eshell/em-prompt-tests.el
(em-prompt-test/field-properties/merge-stickiness): New test.
(em-prompt-test/field-properties, em-prompt-test/after-failure): Reorder
stickiness values (bug#74230).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/em-prompt.el (eshell--append-text-property): New
function...
(eshell-emit-prompt): ... use it.

* test/lisp/eshell/em-prompt-tests.el
(em-prompt-test/field-properties/merge-stickiness): New test.
(em-prompt-test/field-properties, em-prompt-test/after-failure): Reorder
stickiness values (bug#74230).
</pre>
</div>
</content>
</entry>
<entry>
<title>; * test/lisp/eshell/esh-cmd-tests.el: Fix last change.</title>
<updated>2024-11-04T04:21:12+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-11-04T04:21:12+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=9cfd13ff44e8d6f56a1025207c833ab45a7d51ba'/>
<id>9cfd13ff44e8d6f56a1025207c833ab45a7d51ba</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add support for range objects in Eshell "for" loops</title>
<updated>2024-11-04T04:18:14+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-11-03T19:56:15+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=ee87af4f1603d2042afa641e74df0403a49af1c5'/>
<id>ee87af4f1603d2042afa641e74df0403a49af1c5</id>
<content type='text'>
* lisp/eshell/esh-cmd.el (eshell-for-iterate): Add support for
'eshell-range' objects.

* test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/for-loop-range): New
test.

* doc/misc/eshell.texi (Control Flow): Update documentation.

* etc/NEWS: Announce this change.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/esh-cmd.el (eshell-for-iterate): Add support for
'eshell-range' objects.

* test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/for-loop-range): New
test.

* doc/misc/eshell.texi (Control Flow): Update documentation.

* etc/NEWS: Announce this change.
</pre>
</div>
</content>
</entry>
<entry>
<title>Move more of Eshell range handling to the parser phase</title>
<updated>2024-11-04T04:18:14+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-10-21T01:01:10+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=ed9ea57e57a915e743100591d7a71d44a4b4c0e9'/>
<id>ed9ea57e57a915e743100591d7a71d44a4b4c0e9</id>
<content type='text'>
* lisp/eshell/esh-util.el (eshell-range): New struct.
(eshell--range-string-p, eshell--string-to-range): New functions.

* lisp/eshell/esh-arg.el (eshell-parse-integer)
(eshell-parse-range-token): New functions...
(eshell-parse-argument-hook): ... add them.
(eshell--after-range-token-regexp): New defsubst.
(eshell-concat-1): Don't remove the 'number' property; we use that when
handling range arguments.
(eshell--range-token): New constant.
(eshell-unmark-range-token): New function.

* lisp/eshell/esh-var.el (eshell-parse-index): Update implementation to
use parsed range argument.

* test/lisp/eshell/esh-var-tests.el (esh-var-test/interp-var-indices):
Test range index using variables.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/esh-util.el (eshell-range): New struct.
(eshell--range-string-p, eshell--string-to-range): New functions.

* lisp/eshell/esh-arg.el (eshell-parse-integer)
(eshell-parse-range-token): New functions...
(eshell-parse-argument-hook): ... add them.
(eshell--after-range-token-regexp): New defsubst.
(eshell-concat-1): Don't remove the 'number' property; we use that when
handling range arguments.
(eshell--range-token): New constant.
(eshell-unmark-range-token): New function.

* lisp/eshell/esh-var.el (eshell-parse-index): Update implementation to
use parsed range argument.

* test/lisp/eshell/esh-var-tests.el (esh-var-test/interp-var-indices):
Test range index using variables.
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve handling of Eshell "for" loops</title>
<updated>2024-11-03T23:42:26+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-11-03T19:22:27+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=08d5994b435c119bde8b8ac8f7152810d1814d1e'/>
<id>08d5994b435c119bde8b8ac8f7152810d1814d1e</id>
<content type='text'>
This fixes some errors with more-complex string forms, and also allows
iterating over sequences other than just lists.

* lisp/eshell/esh-cmd.el (eshell-for-iterate): New function...
(eshell-rewrite-for-command): ... use it.

* test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/for-loop): Test
multiple values.
(esh-cmd-test/for-loop-string, esh-cmd-test/for-loop-vector): New tests.
(esh-cmd-test/for-loop-mixed-args): Rename.

* test/lisp/eshell/esh-proc-tests.el
(esh-proc-test/sentinel/change-buffer): Make sure all the processes get
cleaned up.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes some errors with more-complex string forms, and also allows
iterating over sequences other than just lists.

* lisp/eshell/esh-cmd.el (eshell-for-iterate): New function...
(eshell-rewrite-for-command): ... use it.

* test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/for-loop): Test
multiple values.
(esh-cmd-test/for-loop-string, esh-cmd-test/for-loop-vector): New tests.
(esh-cmd-test/for-loop-mixed-args): Rename.

* test/lisp/eshell/esh-proc-tests.el
(esh-proc-test/sentinel/change-buffer): Make sure all the processes get
cleaned up.
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve evaluation of conditional Eshell forms</title>
<updated>2024-11-01T18:41:21+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-11-01T17:40:25+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=673c906a5b7255987c09f534de45e555fc7fc9ae'/>
<id>673c906a5b7255987c09f534de45e555fc7fc9ae</id>
<content type='text'>
This simplifies the logic for building these forms and also fixes an
issue where a subcommand in a "&amp;&amp;" or "||" conditional had its output
suppressed.

* lisp/eshell/esh-cmd.el (eshell-structure-basic-command): Make
obsolete.
(eshell-silence-test-command): New function...
(eshell-rewrite-while-command, eshell-rewrite-if-command): ... use it,
and make the command form ourselves.
(eshell-parse-pipeline): Use 'and' and 'or' to make the conditional
command sequence.
(eshell-command-success): New macro.
(eshell-do-eval): Add support for 'and' and 'or' forms.

* test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/and-operator/output)
(esh-cmd-test/or-operator/output): New tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This simplifies the logic for building these forms and also fixes an
issue where a subcommand in a "&amp;&amp;" or "||" conditional had its output
suppressed.

* lisp/eshell/esh-cmd.el (eshell-structure-basic-command): Make
obsolete.
(eshell-silence-test-command): New function...
(eshell-rewrite-while-command, eshell-rewrite-if-command): ... use it,
and make the command form ourselves.
(eshell-parse-pipeline): Use 'and' and 'or' to make the conditional
command sequence.
(eshell-command-success): New macro.
(eshell-do-eval): Add support for 'and' and 'or' forms.

* test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/and-operator/output)
(esh-cmd-test/or-operator/output): New tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve correctness of Eshell globs when using escape characters</title>
<updated>2024-11-01T05:38:10+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-10-21T22:41:42+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=9682d385c103a9ee1afdeaf3e1711fa3d2001eee'/>
<id>9682d385c103a9ee1afdeaf3e1711fa3d2001eee</id>
<content type='text'>
This new implementation opts *in* to treating characters as glob
characters, rather than opting out.  This reduces the need to coordinate
with other parts of Eshell and should be harder to break (bug#74033).

* lisp/eshell/em-glob.el (eshell-parse-glob-chars): Return the
propertized globbing character directly.
(eshell--propertize-glob, eshell--glob-char-p)
(eshell--contains-glob-char-p, eshell--all-glob-chars-p): New functions.
(eshell-glob-p): Make obsolete.
(eshell-glob-regexp, eshell-glob-convert-1, eshell-glob-convert): Check
for 'eshell-glob-char' property.
(eshell-extended-glob): Remove text properties when returning no match.
(eshell--glob-anything): New constant.
(eshell-glob-entries): Propertize "*" to treat it as a glob.

* lisp/eshell/em-ls.el (eshell-ls--expand-wildcards): New function...
(eshell-ls--insert-directory): ... use it.

* test/lisp/eshell/em-glob-tests.el: Use 'eshell--propertize-glob' in
tests.
(em-glob-test/convert/literal-characters)
(em-glob-test/convert/mixed-literal-characters): New tests.

* lisp/eshell/em-glob.el (eshell-expand-glob): Rename from
'eshell-extended-glob'.  Update callers.
(eshell-extended-glob): New function to expand a GLOB that hasn't been
propertized yet, for use outside of Eshell command forms.
(eshell-parse-glob-chars): Return the propertized globbing character
directly.
(eshell-parse-glob-string, eshell--glob-char-p)
(eshell--contains-glob-char-p, eshell--all-glob-chars-p): New functions.
(eshell-glob-regexp, eshell-glob-convert-1, eshell-glob-convert): Check
for 'eshell-glob-char' property.
(eshell-glob-p): Make obsolete.
(eshell--glob-anything): New constant...
(eshell-glob-entries): ... use it.

* lisp/eshell/em-ls.el (eshell-ls--expand-wildcards): New function...
(eshell-ls--insert-directory): ... use it.

* test/lisp/eshell/em-glob-tests.el: Use 'eshell-parse-glob-string in
tests.
(em-glob-test/convert/literal-characters)
(em-glob-test/convert/mixed-literal-characters): New tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This new implementation opts *in* to treating characters as glob
characters, rather than opting out.  This reduces the need to coordinate
with other parts of Eshell and should be harder to break (bug#74033).

* lisp/eshell/em-glob.el (eshell-parse-glob-chars): Return the
propertized globbing character directly.
(eshell--propertize-glob, eshell--glob-char-p)
(eshell--contains-glob-char-p, eshell--all-glob-chars-p): New functions.
(eshell-glob-p): Make obsolete.
(eshell-glob-regexp, eshell-glob-convert-1, eshell-glob-convert): Check
for 'eshell-glob-char' property.
(eshell-extended-glob): Remove text properties when returning no match.
(eshell--glob-anything): New constant.
(eshell-glob-entries): Propertize "*" to treat it as a glob.

* lisp/eshell/em-ls.el (eshell-ls--expand-wildcards): New function...
(eshell-ls--insert-directory): ... use it.

* test/lisp/eshell/em-glob-tests.el: Use 'eshell--propertize-glob' in
tests.
(em-glob-test/convert/literal-characters)
(em-glob-test/convert/mixed-literal-characters): New tests.

* lisp/eshell/em-glob.el (eshell-expand-glob): Rename from
'eshell-extended-glob'.  Update callers.
(eshell-extended-glob): New function to expand a GLOB that hasn't been
propertized yet, for use outside of Eshell command forms.
(eshell-parse-glob-chars): Return the propertized globbing character
directly.
(eshell-parse-glob-string, eshell--glob-char-p)
(eshell--contains-glob-char-p, eshell--all-glob-chars-p): New functions.
(eshell-glob-regexp, eshell-glob-convert-1, eshell-glob-convert): Check
for 'eshell-glob-char' property.
(eshell-glob-p): Make obsolete.
(eshell--glob-anything): New constant...
(eshell-glob-entries): ... use it.

* lisp/eshell/em-ls.el (eshell-ls--expand-wildcards): New function...
(eshell-ls--insert-directory): ... use it.

* test/lisp/eshell/em-glob-tests.el: Use 'eshell-parse-glob-string in
tests.
(em-glob-test/convert/literal-characters)
(em-glob-test/convert/mixed-literal-characters): New tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix and improve behavior of 'eshell/clear'</title>
<updated>2024-11-01T05:36:16+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-10-11T04:03:45+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=98e24e369a3f6bed95cdf0b32ee03999f5dfb98b'/>
<id>98e24e369a3f6bed95cdf0b32ee03999f5dfb98b</id>
<content type='text'>
* lisp/eshell/esh-mode.el (eshell-clear): New function.
(eshell/clear): Fix incorrect behavior, and do the right thing when
'eshell-scroll-show-maximum-output' is nil.
(eshell/clear-scrollback): Call 'eshell/clear'.

* test/lisp/eshell/esh-mode-tests.el
(esh-mode-test/clear/eshell-command)
(esh-mode-test/clear/eshell-command/erase)
(esh-mode-test/clear/emacs-command)
(esh-mode-test/clear/emacs-command/erase): New tests.

* etc/NEWS: Mention the new 'eshell-command' (bug#73722).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/esh-mode.el (eshell-clear): New function.
(eshell/clear): Fix incorrect behavior, and do the right thing when
'eshell-scroll-show-maximum-output' is nil.
(eshell/clear-scrollback): Call 'eshell/clear'.

* test/lisp/eshell/esh-mode-tests.el
(esh-mode-test/clear/eshell-command)
(esh-mode-test/clear/eshell-command/erase)
(esh-mode-test/clear/emacs-command)
(esh-mode-test/clear/emacs-command/erase): New tests.

* etc/NEWS: Mention the new 'eshell-command' (bug#73722).
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge from origin/emacs-30</title>
<updated>2024-10-27T12:23:06+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2024-10-27T12:23:06+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=aeaeccbe3219c655b091fa3867c87b02b6289a1b'/>
<id>aeaeccbe3219c655b091fa3867c87b02b6289a1b</id>
<content type='text'>
c78b4d2b31d Fix doc string of 'wdired-use-dired-vertical-movement'
b0aaee93fde Update the documentation of void functions
299a1f24075 ; * lisp/vc/log-edit.el (log-edit-diff-function): Grammar...
67a27ff53bf ; Fix typos
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
c78b4d2b31d Fix doc string of 'wdired-use-dired-vertical-movement'
b0aaee93fde Update the documentation of void functions
299a1f24075 ; * lisp/vc/log-edit.el (log-edit-diff-function): Grammar...
67a27ff53bf ; Fix typos
</pre>
</div>
</content>
</entry>
<entry>
<title>; Fix typos</title>
<updated>2024-10-27T06:49:32+00:00</updated>
<author>
<name>Stefan Kangas</name>
</author>
<published>2024-10-27T06:49:32+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=67a27ff53bf0f8473cb6b58ad85298e066b8def4'/>
<id>67a27ff53bf0f8473cb6b58ad85298e066b8def4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
