Hello, On Sun 08 Sep 2024 at 05:59pm -07, Jim Porter wrote:
> 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'... Heh. throw/catch seems like overkill to me but supporting both would be cool! -- Sean Whitton