[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
`quick-calc` inside `query-replace` breaks
From: |
Tom Roche |
Subject: |
`quick-calc` inside `query-replace` breaks |
Date: |
Wed, 29 Jul 2015 18:39:25 -0400 |
User-agent: |
GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, GTK+ Version 3.14.5) |
summary: 2 or 3 branched questions (at end) about a change in behavior (24.3.1
-> 24.4.1) when running interactive `quick-calc` inside interactive
`query-replace`.
details:
Until yesterday I was using version='GNU Emacs 24.3.1 (x86_64-pc-linux-gnu,
GTK+ Version 3.8.4)' (on Debian) and frequently used workflows like the
following:
I would compose text with markdown-style footnotes, but instead of enumerating
them while composing (which is brittle WRT text rearrangement :-), I would
defer the enumeration until I was done. Hence
version#=0 ~=
> Foo![NNN] but also bar[NNN] and baz[NNN].
>
> ===
>
> [NNN]: ...
> [NNN]: ...
> [NNN]: ...
where 'NNN' isa "numerator" (i.e., a template for integers), and '===' isa
"fence" between text and footnotes. On "done-ness," I would
1. `query-replace` the "first two" numerators (after the beginning of the
document, and after the fence) with '1'
2. recording a macro that interactively `query-replace`d each successive pair
of numerators with successive integers.
3. run the macro, checking that the "footnote" matched its text. (This is
non-trivial, because
* a footnote can be used more than once
* sometimes I use a footnote inside another footnote
) The macro relied on the facts that
* `query-replace` has an argument stack, accessible via arrow keys: one can
retrieve previously-used arguments for the current call.
* `query-replace` arguments could be modified *from the stack*. E.g., after
doing `query-replace NNN 1', I could record the following sequence:
1. `M-x query-replace`
2. sequence=[2*<up> RET] to retrieve the 'NNN' from the stack, and make it the
first argument in the current call
3. sequence=[2*<up> C-k] to copy the '1' (from the previous call) from the
stack to the kill-ring
4. `M-x quick-calc` inside the `query-replace`
5. sequence=[C-y + 1 RET] to increment the numeric input (in this case, '1')
and exit `quick-calc`
6. C-y to return the result of the incrementation (in this case, 2) from
`quick-calc` to the argument list for the current `query-replace` call
7. RET to call `query-replace` to do the work.
Seems complex now that I've typed it :-) but after doing it so many times, it's
in my "muscle memory." So I was annoyed to discover just now, after finally
upgrading to {Jessie, 'GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, GTK+ Version
3.14.5)'}, that I can no longer do this! because when I call `quick-calc`
inside the `query-replace`, I immediately get the error
> byte-code: Wrong number of arguments: (lambda nil (interactive) (log-BP4)), 2
which abends `quick-calc`, which abends macro recording. So I'd like to know:
1. Is the new behavior a bug or a feature (i.e., Working As Designed)?
1.1. (if a bug) Has this been previously reported?
1.1.1. (if so) apologies if this is a FAQ, but a quick websearch showed me
nothing.
1.1.2. (if not) To where should it be reported?
1.2. (if WAD) How can I workaround the new behavior to do what I want (possibly
more effectively)?
TIA, Tom Roche <Tom_Roche@pobox.com>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- `quick-calc` inside `query-replace` breaks,
Tom Roche <=