all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Alan Mackenzie <acm@muc.de>
Cc: bruce.connor.am@gmail.com, emacs-devel@gnu.org
Subject: Re: bug#17453: Isearch doesn't work properly with Follow Mode.
Date: Sun, 01 Nov 2015 22:54:21 +0200	[thread overview]
Message-ID: <838u6hxwxu.fsf@gnu.org> (raw)
In-Reply-To: <20151101182733.GE2768@acm.fritz.box>

> Date: Sun, 1 Nov 2015 18:27:33 +0000
> Cc: bruce.connor.am@gmail.com, emacs-devel@gnu.org
> From: Alan Mackenzie <acm@muc.de>
> 
> > How is this "not having isearch know about Follow mode"?  I see that
> > knowledge on every step of this patch, whenever you call the new
> > functions.
> 
> It has no knowledge of the internals of Follow Mode.

But the window*-* functions do.  And any code that calls them _knows_
about Follow mode.

Maybe it's just me, but I see no real difference in having the Follow
mode explicitly called out in a separate function, instead in
isearch.el itself.

> The new patch doesn't insert things like this into isearch.el:
> 
> +             (if (and (boundp 'follow-mode) follow-mode)
> +                (progn (follow-adjust-window (selected-window))
> +                       t)

It inserts them indirectly via calling special functions.  Which means
a package cannot really be oblivious to Follow mode's existence.

> > I thought you will come up with some more generic framework for
> > commands to "scroll" the display by switching to the next window (when
> > under Follow mode), if possible.  But unless I'm missing something
> > very important, this isn't that framework, is it?
> 
> Follow Mode itself choses which window to leave point in.  For example,
> if isearch started in the left hand window, FM will place point in the
> RH window if the first match is there.

That's not what I see.  What I see is that starting Isearch in the
left window scrolls that window, and then the right window scrolls
accordingly.  What I'd expect (if I were a user of Follow mode) us an
automatic switch to the right window, and scroll only when that window
is also exhausted.  That doesn't happen, at least not with the current
master.

In any case, what I thought you'd do is introduce a bunch of
variables, such as window-selection-for-scroll-function, that will
allow Follow mode to override the default (trivial) value and dictate
its own decisions to its clients.  Or something like that.

> window*-start and friends do constitute a generic framework.

No, a generic framework would be, for example, to have a variable
whose value is a function, and let Follow mode override the default
value.

> > Btw, I see no reason to introduce new functions.  Instead, we could
> > have the original ones accept an additional optional argument.
> 
> We could.  But that might make these functions less "pure": as well as
> doing what they do, they would also have to execute some call-out to
> Follow Mode in some fashion.

Isn't that what window*-* functions do anyway?  Where's the benefit?

> > You are right about not relying on the list, but window-next-sibling
> > and window-prev-sibling are available, and always will be, so you can
> > "trivially" use them instead of relying on a list.
> 
> The next/previous sibling might be displaying a different buffer.

But that's very easy to test, no?

> to use window-next/previous-sibling properly would mean some fairly
> extensive changes to the innards of Follow Mode - FM has its own
> left-to-right, top-to-bottom algorithm for ordering its windows.

What algorithm could that be, if not something that traverses the
window tree in some order?

> > If you agree, then John's question still stands, I think.
> 
> The "car of a list of windows" he was talking about means that list of
> windows needs to come from somewhere.  The list is maintained by Follow
> Mode, really only available using an internal FM function.  As soon as
> we use this, we have coupled isearch with Follow Mode more tightly.
> This is undesirable.

Not if you go through a variable whose default value Follow mode can
override.  Or some other decoupling technique like that, I'm sure
there are more, perhaps more elegant ones.



  parent reply	other threads:[~2015-11-01 20:54 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-09 22:44 bug#17453: Isearch doesn't work properly with Follow Mode Alan Mackenzie
2014-05-10  2:40 ` Stefan Monnier
2014-05-11 12:58   ` Alan Mackenzie
2014-05-11 16:09     ` Stefan Monnier
2014-05-11 18:18       ` Alan Mackenzie
2014-05-11 19:05         ` Stefan Monnier
2014-05-11 20:40           ` Alan Mackenzie
2014-05-11 21:46             ` Stefan Monnier
2015-10-29 23:23   ` 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 11:59           ` Alan Mackenzie
2015-10-31 23:41         ` John Wiegley
2015-10-31 23:25       ` Alan Mackenzie
2015-11-01  0:17       ` Drew Adams
2015-11-01  0:17       ` Drew Adams
2015-10-31 22:35     ` John Wiegley
2015-10-31 23:13     ` Artur Malabarba
2015-10-31 23:32       ` Alan Mackenzie
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 [this message]
2015-11-01 22:19                     ` Alan Mackenzie
2015-11-01 12:23           ` Artur Malabarba
2015-11-01 12:20         ` Artur Malabarba
2015-10-31 23:13     ` Artur Malabarba
2015-10-31 23:35     ` Juri Linkov
2015-10-31 23:56       ` Alan Mackenzie
2015-10-31 23:56       ` Alan Mackenzie
2015-11-02  0:14         ` Juri Linkov
2015-11-02  3:35           ` Eli Zaretskii
2015-11-02  3:35           ` Eli Zaretskii
2015-11-02  9:28           ` Alan Mackenzie
2015-11-02 11:53             ` Artur Malabarba
2015-11-02 11:53             ` Artur Malabarba
2015-11-02 12:14               ` Artur Malabarba
2015-11-02 12:14               ` Artur Malabarba
2015-11-02 12:39                 ` Alan Mackenzie
2015-11-02 12:39                 ` Alan Mackenzie
2015-11-02 12:35               ` 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 14:18                   ` Artur Malabarba
2015-11-02 15:44                     ` Alan Mackenzie
2015-11-02 16:26                       ` Artur Malabarba
2015-11-02 16:35                         ` Drew Adams
2015-11-02 19:18                           ` Artur Malabarba
2015-11-02 19:28                             ` Drew Adams
2015-11-02 23:45                               ` Juri Linkov
2015-11-02 22:09                         ` Alan Mackenzie
2015-11-02 23:00                           ` Artur Malabarba
2015-11-03  9:18                             ` Alan Mackenzie
2015-11-02 17:45                       ` Eli Zaretskii
2015-11-02 23:22                       ` Juri Linkov
2015-11-03 12:31                         ` Alan Mackenzie
2015-11-03 12:31                         ` Alan Mackenzie
2015-11-03 15:49                           ` Eli Zaretskii
2015-11-03 16:18                             ` Artur Malabarba
2015-11-03 22:11                               ` Alan Mackenzie
2015-11-04  0:28                                 ` Juri Linkov
2015-11-04  9:01                                   ` Alan Mackenzie
2015-11-04 10:17                                     ` Artur Malabarba
2015-11-05 12:38                                       ` Alan Mackenzie
2015-11-05 17:13                                         ` Artur Malabarba
2015-11-07 12:59                                   ` Alan Mackenzie
2015-11-07 13:38                                     ` Eli Zaretskii
2015-11-08 10:32                                       ` Alan Mackenzie
2015-11-03 16:39                             ` Alan Mackenzie
2015-11-02 23:22                       ` Juri Linkov
2015-11-02 15:44                     ` Alan Mackenzie
2015-11-02 23:28                     ` Juri Linkov
2015-11-02 23:28                     ` Juri Linkov
2015-11-02 13:10                 ` Artur Malabarba
2015-11-02 15:46                 ` Eli Zaretskii
2015-11-02 16:09                   ` Alan Mackenzie
2015-11-02 17:49                     ` Eli Zaretskii
2015-11-02 20:35                       ` John Wiegley
2015-11-03  8:35                       ` Alan Mackenzie
     [not found]                 ` <<831tc8xv39.fsf@gnu.org>
2015-11-02 16:05                   ` Drew Adams
2015-11-02 23:33             ` Juri Linkov
2015-11-02 23:33             ` Juri Linkov
2015-11-02  0:14         ` Juri Linkov
2015-10-31 23:35     ` Juri Linkov
2015-10-29 23:23   ` Alan Mackenzie
     [not found] ` <handler.17453.B.139967578531952.ack@debbugs.gnu.org>
2015-12-20 12:59   ` bug#17453: Acknowledgement (Isearch doesn't work properly with Follow Mode.) Alan Mackenzie

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=838u6hxwxu.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=acm@muc.de \
    --cc=bruce.connor.am@gmail.com \
    --cc=emacs-devel@gnu.org \
    /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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.