GNU bug report logs -
#49963
28.0.50; isearch failing in Dired after rectangle-mark-mode and query-replace
Previous Next
Reported by: laslydone <laslydone <at> protonmail.com>
Date: Mon, 9 Aug 2021 16:36:02 UTC
Severity: normal
Tags: fixed
Fixed in version 28.0.50
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
Message #8 received at 49963 <at> debbugs.gnu.org (full text, mbox):
> What happened:
> In Dired isearch-{forward,backward} will no longer match anything after running
> `rectangle-mark-mode' and `query-replace'.
>
> What I thought would happen:
> In Dired after running `rectangle-mark-mode' and `query-replace',
> isearch-{forward,backward} would match again.
>
> To reproduce:
> 1. emacs -Q
> 2. C-x d <RET>
> 3. C-x C-q
> 4. C-x <SPC> C-n
> 5. M-% <RET> <RET> (entering nothing)
> 6. ^s (searching for anything will show "Failing I-search: ANYTHING" in minibuffer)
Stefan, please help. Wdired adds advice on a buffer-local isearch-filter-predicate,
and perform-replace adds advice on a let-bound isearch-filter-predicate
that changes the global value. This is the minimal test case:
(add-function :after-while (local 'isearch-filter-predicate)
(lambda (&rest _) 'filter-local))
(let ((isearch-filter-predicate isearch-filter-predicate))
(add-function :after-while isearch-filter-predicate
(lambda (&rest _) 'filter-letbound)))
C-h v isearch-filter-predicate:
Value:
#f(advice-wrapper :after-while #f(compiled-function
(&rest args)
#<bytecode -0x1d2ab1d0859aebb6>)
(closure
(t)
(&rest _)
'filter-local))
Local in buffer *scratch*; global value is
#f(advice-wrapper :after-while isearch-filter-visible
(closure
(t)
(&rest _)
'filter-letbound))
Let-binding was supposed to protect from changing the global value,
but with a buffer-local value it still changes the global value.
This bug report was last modified 3 years and 286 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.