GNU bug report logs -
#53126
29.0.50; [PATCH] Lazy highlight/count when reading query-replace string, etc.
Previous Next
Reported by: Augusto Stoffel <arstoffel <at> gmail.com>
Date: Sat, 8 Jan 2022 13:25:01 UTC
Severity: normal
Tags: patch
Merged with 53341
Fixed in version 29.0.50
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Hi Juri,
I attached a new patch (still a sketch) that requires no changes in
comint.el and simple.el. Perhaps you will find this approach more
acceptable.
More comments below.
On Sun, 9 Jan 2022 at 20:58, Juri Linkov <juri <at> linkov.net> wrote:
> It would be great to use your new variable with a function
> to show replacement counts in perform-replace. IIUC,
> let-binding isearch-lazy-count-display-function to
> isearch-read-with-highlight-count will suppress isearch-message?
>
I tried this and it's relatively simple to do, but there is a problem.
Suppose you want to replace all "a" with "z", and your buffer has 20
"a"s initially. Then, as you keep hitting "y" to confirm a replacement
the count will be
1/20, 1/19, ..., 1/1
since the number of "a"s decrease, and the point is always at the first
of the still-existing ones. But probably one should count the number of
prompts, so
1/20, 2/20, ..., 20/20
I think this means `perform-replace' has to implement its own way to
display a count.
> I meant using simply
>
> (add-hook 'minibuffer-setup-hook 'isearch-read-with-highlight-setup)
>
> But it seems isearch-read-with-highlight-setup doesn't set
> isearch-lazy-count-display-function.
>
I guess this could be done. But note that there are two possible types
of counts: a "current/total" counter or just a "total" counter. Each
use case calls for a different count style.
>>> Then maybe a new feature could be named e.g. "lazy-minibuffer"?
>
> This feature has little to do with isearch. This is why there are
> efforts to move away from the prefix isearch- for lazy-related
> functions and variables, so we have now:
>
> lazy-count-prefix-format
> lazy-count-suffix-format
> lazy-highlight-buffer
> lazy-highlight-buffer-max-at-a-time
> lazy-highlight-cleanup
> lazy-highlight-initial-delay
> lazy-highlight-interval
> lazy-highlight-max-at-a-time
> ...
>
> There are still isearch-specific names like isearch-lazy-count
> that enables lazy-count in isearch-mode. What would be a similar
> name for the minibuffer? Maybe minibuffer-lazy-count?
I see, the lazy-* names are the new ones!
>
> Then the prefix isearch- needs to be removed from other names too,
> e.g. isearch-lazy-count-display-function -> lazy-count-display-function
> isearch-read-with-highlight-setup maybe to minibuffer-lazy-highlight-setup,
> etc.
Yes, I agree. The names I came up with are horrible and
`lazy-minibuffer' is weird, but your current suggestion is nice.
By the way, I'm debating a bit whether
`isearch-lazy-count-display-function' should be:
1. Either nil or function, as it is right now,
2. #'ignore by default, so similar to 1) but a bit easier to use with
`add-function'
3. a hook, the main inconvenience being that it can't be easily let-bound.
[0001-Allow-reading-from-minibuffer-with-lazy-highlight-an.patch (text/x-patch, attachment)]
[0002-Lazy-highlight-when-reading-query-replace-text.patch (text/x-patch, attachment)]
This bug report was last modified 3 years and 38 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.