[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bug#17453: Isearch doesn't work properly with Follow Mode.
From: |
Artur Malabarba |
Subject: |
Re: bug#17453: Isearch doesn't work properly with Follow Mode. |
Date: |
Mon, 2 Nov 2015 11:53:10 +0000 |
> I don't actually understand that patch, I'll need to study the wierd/new
> constructs used in it, like `when-let'.
Here's a more thoroughly explained version of this function, that
doesn't use when-let.
seq-find is equivalent to cl-find-if, it returns the first element
that matches the provided predicate.
(defun follow--search-function ()
(lambda (&rest args)
(let ((search-function (isearch-search-fun-default))
(matched (apply search-function args)))
;; If this is a proper user-triggered search (and not just a
;; lazy-highlight search), and if the search matched, and if the
;; match is not visible on this window...
(when (and matched
(not isearch-lazy-highlight-ongoing-search)
(not (and (pos-visible-in-window-p (match-beginning 0))
(pos-visible-in-window-p (match-end 0)))))
;; ... see if the match is visible on another window.
(let ((win (seq-find (lambda (w)
(and (pos-visible-in-window-p
(match-beginning 0) w)
(pos-visible-in-window-p (match-end 0) w)))
(follow-all-followers))))
;; If so, select it.
(when win
(select-window win))))
matched)))
I also changed it to use (follow-all-followers).
> However, I'm certain that that patch will not fix all the problems
> discussed in this post.
The patch as provided doesn't fix the “highlighting matches on all
windows” issue. But that's trivial to solve by removing that
`(overlay-put ov 'window (selected-window))' line. (which I have half
a mind to do right now because I just think it's a generally useful
improvement.)
> One way or another, isearch MUST work with the
> window boundaries of the entire Follow Mode group.
Maybe I missed part of the issue. I thought you wanted Isearch to
switch to another window if that window contains the next match
(instead of scrolling the current window). For that, you only need
pos-visible-in-window-p, you don't need to mess with boundaries.
Re: bug#17453: Isearch doesn't work properly with Follow Mode., Juri Linkov, 2015/11/01
- Re: bug#17453: Isearch doesn't work properly with Follow Mode., Eli Zaretskii, 2015/11/01
- Re: bug#17453: Isearch doesn't work properly with Follow Mode., Alan Mackenzie, 2015/11/02
- Re: bug#17453: Isearch doesn't work properly with Follow Mode., Alan Mackenzie, 2015/11/02
- Re: bug#17453: Isearch doesn't work properly with Follow Mode., Artur Malabarba, 2015/11/02
- Re: bug#17453: Isearch doesn't work properly with Follow Mode., Artur Malabarba, 2015/11/02
- Re: bug#17453: Isearch doesn't work properly with Follow Mode., Alan Mackenzie, 2015/11/02
- Re: bug#17453: Isearch doesn't work properly with Follow Mode., Juri Linkov, 2015/11/02
- Re: bug#17453: Isearch doesn't work properly with Follow Mode., Alan Mackenzie, 2015/11/03
Re: bug#17453: Isearch doesn't work properly with Follow Mode., Juri Linkov, 2015/11/02
Re: bug#17453: Isearch doesn't work properly with Follow Mode., Juri Linkov, 2015/11/02