From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.bugs Subject: bug#17453: Isearch doesn't work properly with Follow Mode. Date: Sun, 11 May 2014 12:58:42 +0000 Message-ID: <20140511125842.GA11781@acm.acm> References: <20140509224458.GA4205@acm.acm> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1399813418 8771 80.91.229.3 (11 May 2014 13:03:38 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 11 May 2014 13:03:38 +0000 (UTC) Cc: 17453@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun May 11 15:03:31 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WjTPb-0007O5-4X for geb-bug-gnu-emacs@m.gmane.org; Sun, 11 May 2014 15:03:27 +0200 Original-Received: from localhost ([::1]:32831 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WjTPa-0006tB-KF for geb-bug-gnu-emacs@m.gmane.org; Sun, 11 May 2014 09:03:26 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36898) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WjTPP-0006sb-24 for bug-gnu-emacs@gnu.org; Sun, 11 May 2014 09:03:22 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WjTPD-00030m-2p for bug-gnu-emacs@gnu.org; Sun, 11 May 2014 09:03:14 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:41490) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WjTPC-00030g-Vc for bug-gnu-emacs@gnu.org; Sun, 11 May 2014 09:03:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1WjTPC-0001QU-2s for bug-gnu-emacs@gnu.org; Sun, 11 May 2014 09:03:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 11 May 2014 13:03:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17453 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 17453-submit@debbugs.gnu.org id=B17453.13998133775471 (code B ref 17453); Sun, 11 May 2014 13:03:01 +0000 Original-Received: (at 17453) by debbugs.gnu.org; 11 May 2014 13:02:57 +0000 Original-Received: from localhost ([127.0.0.1]:58841 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WjTP6-0001Q8-DZ for submit@debbugs.gnu.org; Sun, 11 May 2014 09:02:56 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:19641 helo=mail.muc.de) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WjTP1-0001Pu-PY for 17453@debbugs.gnu.org; Sun, 11 May 2014 09:02:52 -0400 Original-Received: (qmail 80130 invoked by uid 3782); 11 May 2014 13:02:49 -0000 Original-Received: from acm.muc.de (pD9518079.dip0.t-ipconnect.de [217.81.128.121]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 11 May 2014 15:02:47 +0200 Original-Received: (qmail 12904 invoked by uid 1000); 11 May 2014 12:58:42 -0000 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Delivery-Agent: TMDA/1.1.12 (Macallan) X-Primary-Address: acm@muc.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:88892 Archived-At: 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).