Version 0.16.0 of package Loopy has just been released in NonGNU ELPA. You can now find it in M-x list-packages RET.
Loopy describes itself as: =============== A looping macro =============== More at https://elpa.nongnu.org/nongnu/loopy.html ## Summary: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ LOOPY: A LOOPING AND ITERATION MACRO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [file:https://elpa.nongnu.org/nongnu/loopy.svg] [file:https://elpa.nongnu.org/nongnu-devel/loopy.svg] [file:https://melpa.org/packages/loopy-badge.svg] [file:https://stable.melpa.org/packages/loopy-badge.svg] ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― `loopy' is a macro meant for iterating and looping. It is similar in usage to [`cl-loop'] but uses symbolic expressions rather than keywords. For most use cases, `loopy' should be a nice substitute for `cl-loop' and complementary to the features provided by the [Seq] and [CL] libraries and Emacs's regular looping and mapping features. ## Recent NEWS: # CHANGELOG This document describes the user-facing changes to Loopy. For Loopy Dash, see <https://github.com/okamsn/loopy-dash>. ## 0.16.0 ### New Features - Add the `no-loop` flag ([#265]). This stops the looping macros from creating the `while`-loop and causes an error to be signalled when used with features that only make sense with the `while`-loop, such as iteration commands. The intended use is wrapping macros don't need the default `while`-loop but would still like access to other features, such as accumulation commands. ### Bug Fixes - When destructuring for accumulation commands, don't assume that `pcase` binds the final variable to a value already stored in a temporary variable ([#251]). More specifically, keep the same order returned by `pcase` for the binding of those final variables. - `while` and `until` now correctly work when aliased ([#267]). - `cycle` now signals an error when trying to destructure ([#272], [#279]). ### Breaking Changes - Using accumulation commands with different initial values for the same variable now signals an error instead of a warning ([#169], [#254]). - Aliases made obsolete in version 0.14.0 of this package have been removed (see release notes for that version below) ([#256]). They can still be added manually to `loopy-parsers`. - Passing multiple conditions to `while` and `until` now signals a warning ([#267]). To be consistent with `never` and `always`, in the future, the `while` and `until` commands will only accept a single condition. To keep the old behavior, wrap multiple conditions in `and`. [#169]: https://github.com/okamsn/loopy/issues/169 [#254]: https://github.com/okamsn/loopy/PR/254 [#251]: https://github.com/okamsn/loopy/PR/251 [#256]: https://github.com/okamsn/loopy/PR/256 [#265]: https://github.com/okamsn/loopy/PR/265 [#267]: https://github.com/okamsn/loopy/PR/267 [#272]: https://codeberg.org/okamsn/loopy/issues/272 [#279]: https://codeberg.org/okamsn/loopy/pulls/279 ## 0.15.0 ### New Features - Add the `override` special macro argument, which can be used to override select global settings for the current macro expansion ([#243], [#231]). This can help to avoid name collisions from package authors (separate authors of separate packages) wanting to use the same command name for different purposes with their respective package. ### Bug Fixes - `when` and `unless` now correctly work when aliased ([#234], [#240]). - Fix variable scoping when using `set` with `at` ([#241]). ### Breaking Changes - Loopy now requires at least Emacs version 28.1, increased from version 27.1 ([#446]). This allows us to remove workarounds for missing features/fixes. - `set` now warns when it is not given a value ([#229]). Currently, `(set VAR)` binds `VAR` to `nil`, but since this form is indistinguishable from a mistake, and since `nil` is a short word to write, this behavior is deprecated. - Some variables were combined to simplify the code internally and make it easier to add local overrides in the future, which will make code which custom commands more portable. - `loopy-command-parsers` and `loopy-aliases` are both deprecated in favor of the newly added `loopy-parsers` ([#237]). The new user option is a hash table which maps symbols to parsing functions. There is no longer a separate mapping of aliases to original names. However, `loopy-defalias` will continue to work. - `loopy-iter-bare-special-marco-arguments` and `loopy-iter-bare-commands` are both deprecated in favor of the newly added `loopy-iter-bare-names` ([#242], [#238]). The new user option is a list which by default contains all symbols previously listed in the old variables. - Separate `when` and `unless` commands to have different parsing functions ([#234], [#240]). The old implementation used the name of the command in the generated code and was written before aliases. - The macro by default now uses the value of `loopy-result` as the implied ... ...
