GNU bug report logs - #72952
30.0.90; Want way to break out of Eshell for loop

Previous Next

Package: emacs;

Reported by: Sean Whitton <spwhitton <at> spwhitton.name>

Date: Mon, 2 Sep 2024 09:04:01 UTC

Severity: normal

Found in version 30.0.90

Full log


View this message in rfc822 format

From: Sean Whitton <spwhitton <at> spwhitton.name>
To: Jim Porter <jporterbugs <at> gmail.com>
Cc: 72952 <at> debbugs.gnu.org
Subject: bug#72952: 30.0.90; Want way to break out of Eshell for loop
Date: Thu, 12 Sep 2024 11:04:06 +0100
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: jporterbugs <at> 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




This bug report was last modified 275 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.