GNU bug report logs -
#45607
27.1; compiled replace-string breaks repeat-complex-command
Previous Next
Reported by: Allen Li <darkfeline <at> felesatra.moe>
Date: Sat, 2 Jan 2021 09:08:02 UTC
Severity: normal
Tags: moreinfo
Found in version 27.1
Fixed in version 29.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #28 received at 45607 <at> debbugs.gnu.org (full text, mbox):
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> could be something like
>
> (interactive-region-beginning)
> (interactive-region-end)
>
> and whatever updates command-history would reify those as is instead of
> their return values?
Sometimes it's helpful to actually look at the code. All this magic
comes from:
/* If the list of args INPUT was produced with an explicit call to
`list', look for elements that were computed with
(region-beginning) or (region-end), and put those expressions into
VALUES instead of the present values.
This function doesn't return a value because it modifies elements
of VALUES to do its job. */
static void
fix_command (Lisp_Object input, Lisp_Object values)
{
/* FIXME: Instead of this ugly hack, we should provide a way for an
interactive spec to return an expression/function that will re-build the
args without user intervention. */
if (CONSP (input))
And what this does is to try to hack its way through the lisp code in an
interactive spec like
/* Skip through certain special forms. */
while (EQ (car, Qlet) || EQ (car, Qletx)
|| EQ (car, Qsave_excursion)
|| EQ (car, Qprogn))
looking for `region-beginning' and friends. But we now byte-compile the
interactive specs, so all this fails spectacularly.
So we need a brand new way to specify which options are
`region-beginning' etc. Perhaps with a declare form? (That translates
into symbol properties, I guess.)
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
This bug report was last modified 2 years and 258 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.