On 9/2/2024 1:26 AM, Sean Whitton wrote:
X-debbugs-cc: jporterb...@gmail.com
I am trying to run a series of tests like this:
% for test in tests/tests/tagupl* { tests/using-intree $test }
I want the command to give up as soon as one of the tests fails. But I
don't think there is any way to break out of the loop? In POSIX sh, you
could use 'break'.
I actually have a patch sitting in my pile of branches that does this,
but it needs a fair bit more work to get right. The main thing it needs
is to keep 'break' from bubbling up too far (e.g. if you run an Eshell
script from inside a loop, 'break' at the top level of the script
shouldn't break out of the parent loop).
Another way to do something like this would be to embrace the Lispy-ness
of Eshell and add a command-form for 'throw' and 'catch'. Something like:
catch my-tag {
for i in *.el {
do-stuff
if something-or-other { throw my-tag }
}
}
Or even support both 'throw'/'catch' *and* 'break'...