unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: 17453@debbugs.gnu.org
Subject: bug#17453: Isearch doesn't work properly with Follow Mode.
Date: Sun, 11 May 2014 12:58:42 +0000	[thread overview]
Message-ID: <20140511125842.GA11781@acm.acm> (raw)
In-Reply-To: <jwva9aqbcl9.fsf-monnier+emacsbugs@gnu.org>

Hello, Stefan.

On Fri, May 09, 2014 at 10:40:07PM -0400, Stefan Monnier wrote:
> I must say I really dislike this hard-coding of follow-mode support in
> isearch.el.  Isearch should not know so much about follow-mode and
> follow-mode should not know so much about Isearch either.

Follow Mode knows nothing of Isearch.  The problem the other way round is
in Lisp files that themselves play with redisplay (including calling
`sit-for') and `set-window-start', and so on.  Between these invocations
and the actual redisplay, Follow Mode must get a chance to make its
adjustments.

> IOW we should try harder to come up with more general hooks.

For what?

Given that Follow Mode uses a list of windows where most elisp programs
(including Isearch up till now) are expecting to deal with a single
window, there is quite a large clash, possibly unbridgeable with any
reasonable amount of effort.  Some sort of abstraction that smoothes over
the difference between the window and the window list is difficult to
conceive of - Follow Mode itself is such an abstraction.

Maybe a useful hook here would be `redisplay-hook' where Follow Mode
could do its stuff more effectively than on `post-command-hook'.

The extreme solution would be to enhance the display code to handle
multiple column windows, rendering Follow Mode redundant.  I don't think
anybody with the expertise has the time for this.

> > @@ -2207,10 +2239,12 @@
> >  together with as much of the search string as will fit; the symbol
> >  `above' if we need to scroll the text downwards; the symbol `below',
> >  if upwards."
> > -  (let ((w-start (window-start))
> > -        (w-end (window-end nil t))
> > -        (w-L1 (save-excursion (move-to-window-line 1) (point)))
> > -        (w-L-1 (save-excursion (move-to-window-line -1) (point)))
> > +  (let ((w-start (isearch-windows-start))
> > +	(w-end (isearch-windows-end nil t))
> > +        (w-L1 (with-selected-window (car isearch-windows)
> > +		(save-excursion (move-to-window-line 1) (point))))
> > +        (w-L-1 (with-selected-window (car (last isearch-windows))
> > +		 (save-excursion (move-to-window-line -1) (point))))

> This isearch-string-out-of-window+isearch-back-into-window business, for
> example should be generalized to a function along the lines of
> "bring-region-into-sight".  It's not useful only for isearch.

This seems to be a different bug to the one I reported, and orthogonal to
it.

> E.g. ediff-next-hunk would also benefit from it.

Not necessarily.  isearch-back-into-window, in addition to doing
"bring-region-into-sight" ensures that it's the isearch-point end of it
which is visible when it is too big for the window.  This may be
problematic for other uses, like in ediff.

> And of course, it should come with a bring-region-into-sight-function
> hook (which does not default to nil but to the default implementation),
> which follow-mode can then override.

Yes.

Question is, what about the main bug?  The patch I wrote fixes a real
bug, and works (modulo any remaining bugs).  Do you have any concrete
suggestions as to how to improve the fix?

>         Stefan

-- 
Alan Mackenzie (Nuremberg, Germany).





  reply	other threads:[~2014-05-11 12:58 UTC|newest]

Thread overview: 62+ 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 [this message]
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
     [not found]   ` <20151029232302.GB3812@acm.fritz.box>
2015-10-31 22:35     ` John Wiegley
2015-10-31 23:13     ` Artur Malabarba
     [not found]     ` <m2mvuyk6ol.fsf@Vulcan.attlocal.net>
2015-10-31 23:25       ` Alan Mackenzie
     [not found]       ` <20151031232538.GC1853@acm.fritz.box>
2015-10-31 23:41         ` John Wiegley
     [not found]         ` <m24mh67gj6.fsf@Vulcan.attlocal.net>
2015-11-01 11:59           ` Alan Mackenzie
2015-11-01  0:17       ` Drew Adams
     [not found]     ` <CAAdUY-+6C96Zbx2-Pib8_PNomOtcn4m9pw0Gvh=5TmMeGweo5Q@mail.gmail.com>
2015-10-31 23:32       ` Alan Mackenzie
     [not found]       ` <20151031233225.GD1853@acm.fritz.box>
2015-11-01 12:20         ` Artur Malabarba
     [not found]         ` <CAAdUY-K9ocC6MmNzh8DSH3FKRZyn_FQQEixVct31KYiev7w76g@mail.gmail.com>
2015-11-01 12:23           ` Artur Malabarba
2015-10-31 23:35     ` Juri Linkov
     [not found]     ` <87h9l6627a.fsf@mail.linkov.net>
2015-10-31 23:56       ` Alan Mackenzie
     [not found]       ` <20151031235651.GE1853@acm.fritz.box>
2015-11-02  0:14         ` Juri Linkov
     [not found]         ` <87bnbddzpk.fsf@mail.linkov.net>
2015-11-02  3:35           ` Eli Zaretskii
2015-11-02  9:28           ` Alan Mackenzie
2015-11-02 11:53             ` Artur Malabarba
     [not found]             ` <CAAdUY-+ALAi6HVyfgKFmKV9=voox1LB_xnrhtS2dW76Zvkr2cA@mail.gmail.com>
2015-11-02 12:14               ` Artur Malabarba
2015-11-02 12:35               ` Alan Mackenzie
     [not found]               ` <CAAdUY-KFnoDp62taRXkVBQ1iT7BkGoVwR86dwUaKW2rnYRe8QQ@mail.gmail.com>
2015-11-02 12:39                 ` Alan Mackenzie
     [not found]               ` <20151102123512.GB11804@acm.fritz.box>
2015-11-02 13:10                 ` Artur Malabarba
     [not found]                 ` <CAAdUY-JLE5v0f_fYRQ71-5MD5_L-5C-2H9q06Jd8fDijpi_91A@mail.gmail.com>
2015-11-02 14:18                   ` Artur Malabarba
     [not found]                   ` <CAAdUY-KbLvSEWayRu6CrMn-2bLTHd_m0nzzX4v7CXnWdo7P4sA@mail.gmail.com>
2015-11-02 15:44                     ` Alan Mackenzie
     [not found]                     ` <20151102154445.GD11804@acm.fritz.box>
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
     [not found]                       ` <87h9l46l7o.fsf@mail.linkov.net>
2015-11-03 12:31                         ` Alan Mackenzie
     [not found]                         ` <20151103123116.GD2258@acm.fritz.box>
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:28                     ` Juri Linkov
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
     [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

  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=20140511125842.GA11781@acm.acm \
    --to=acm@muc.de \
    --cc=17453@debbugs.gnu.org \
    --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).