From: Artur Malabarba <bruce.connor.am@gmail.com>
To: Alan Mackenzie <acm@muc.de>
Cc: 17453@debbugs.gnu.org, emacs-devel <emacs-devel@gnu.org>,
Stefan Monnier <monnier@iro.umontreal.ca>,
Juri Linkov <juri@linkov.net>
Subject: Re: bug#17453: Isearch doesn't work properly with Follow Mode.
Date: Mon, 2 Nov 2015 11:53:10 +0000 [thread overview]
Message-ID: <CAAdUY-+ALAi6HVyfgKFmKV9=voox1LB_xnrhtS2dW76Zvkr2cA@mail.gmail.com> (raw)
In-Reply-To: <20151102092853.GA11804@acm.fritz.box>
> 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.
next prev parent reply other threads:[~2015-11-02 11:53 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20140509224458.GA4205@acm.acm>
[not found] ` <jwva9aqbcl9.fsf-monnier+emacsbugs@gnu.org>
2015-10-29 23:23 ` bug#17453: Isearch doesn't work properly with Follow Mode Alan Mackenzie
2015-10-31 22:35 ` John Wiegley
2015-10-31 23:25 ` Alan Mackenzie
2015-10-31 23:41 ` John Wiegley
2015-11-01 11:59 ` Alan Mackenzie
2015-11-01 0:17 ` Drew Adams
2015-10-31 23:13 ` Artur Malabarba
2015-10-31 23:32 ` Alan Mackenzie
2015-11-01 12:20 ` Artur Malabarba
2015-11-01 12:23 ` Artur Malabarba
2015-11-01 13:52 ` Alan Mackenzie
2015-11-01 16:50 ` Eli Zaretskii
2015-11-01 18:27 ` Alan Mackenzie
2015-11-01 19:46 ` Artur Malabarba
2015-11-01 20:15 ` Alan Mackenzie
2015-11-01 21:37 ` Artur Malabarba
2015-11-01 20:42 ` Artur Malabarba
2015-11-01 20:54 ` Eli Zaretskii
2015-11-01 22:19 ` Alan Mackenzie
2015-10-31 23:35 ` Juri Linkov
2015-10-31 23:56 ` Alan Mackenzie
2015-11-02 0:14 ` Juri Linkov
2015-11-02 3:35 ` Eli Zaretskii
2015-11-02 9:28 ` Alan Mackenzie
2015-11-02 11:53 ` Artur Malabarba [this message]
2015-11-02 12:14 ` Artur Malabarba
2015-11-02 12:39 ` Alan Mackenzie
2015-11-02 12:35 ` Alan Mackenzie
2015-11-02 13:10 ` Artur Malabarba
2015-11-02 14:18 ` Artur Malabarba
2015-11-02 15:44 ` Alan Mackenzie
2015-11-02 23:22 ` Juri Linkov
2015-11-03 12:31 ` Alan Mackenzie
2015-11-02 23:28 ` Juri Linkov
2015-11-02 23:33 ` Juri Linkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAAdUY-+ALAi6HVyfgKFmKV9=voox1LB_xnrhtS2dW76Zvkr2cA@mail.gmail.com' \
--to=bruce.connor.am@gmail.com \
--cc=17453@debbugs.gnu.org \
--cc=acm@muc.de \
--cc=emacs-devel@gnu.org \
--cc=juri@linkov.net \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).