GNU bug report logs -
#50136
28.0.50; A problem with rx-let expansion
Previous Next
Full log
View this message in rfc822 format
21 aug. 2021 kl. 13.45 skrev Michael Heerdegen <michael_heerdegen <at> web.de>:
> (let ((args (list rest))) ...)
>
> inside rx `eval' and use that as argument list variable.
Or just put all the actual code in a plain function:
(eval-when-compile
(defun expand-my-rx-thing (x y &optional z &rest r) ...))
(rx-define my-rx-thing (x y &rest more) (eval (expand-my-rx-thing x y more)))
and use &optional and &rest arguments as you are used to, without any risks of substitution accidents like "string" in the example you showed earlier. The function would effectively work exactly like a macro of the sort you requested.
> Maybe it would be good to improve the docstring to say the things that I
> missed clearer? - Say explicitly that this mechanism is different from
> macros, instead it's just a simple substitution mechanism, and add a
> simple example to the docstring as a reference, even if we already have
> examples in the manual.
I'll see what can be done. It's not really Emacs tradition to have examples in doc strings but maybe they can be improved a bit as you say.
> Maybe also tell that using `eval' you can still have a macro-like
> behavior in the end.
Not a bad idea!
This bug report was last modified 3 years and 273 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.