From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#32874: Unwanted scrolling in edebug `f' command when follow-mode is active Date: Sun, 30 Sep 2018 20:17:46 +0300 Message-ID: <83in2m52h1.fsf@gnu.org> References: <20180929140957.GB5008@ACM> <83lg7k5q2o.fsf@gnu.org> <20180929153729.GD5008@ACM> <83h8i85lr7.fsf@gnu.org> <20180929204113.GF5008@ACM> <837ej35tex.fsf@gnu.org> <20180930153646.GF6305@ACM> NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1538327830 12721 195.159.176.226 (30 Sep 2018 17:17:10 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 30 Sep 2018 17:17:10 +0000 (UTC) Cc: 32874@debbugs.gnu.org To: Alan Mackenzie Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Sep 30 19:17:05 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g6fL2-00036Q-F7 for geb-bug-gnu-emacs@m.gmane.org; Sun, 30 Sep 2018 19:17:00 +0200 Original-Received: from localhost ([::1]:56309 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6fN9-0000bi-4k for geb-bug-gnu-emacs@m.gmane.org; Sun, 30 Sep 2018 13:19:11 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:46137) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6fN3-0000bc-CW for bug-gnu-emacs@gnu.org; Sun, 30 Sep 2018 13:19:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g6fN0-0003N3-PI for bug-gnu-emacs@gnu.org; Sun, 30 Sep 2018 13:19:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:55917) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g6fN0-0003My-KB for bug-gnu-emacs@gnu.org; Sun, 30 Sep 2018 13:19:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1g6fN0-0008QJ-Fc for bug-gnu-emacs@gnu.org; Sun, 30 Sep 2018 13:19:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 30 Sep 2018 17:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32874 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 32874-submit@debbugs.gnu.org id=B32874.153832788632312 (code B ref 32874); Sun, 30 Sep 2018 17:19:02 +0000 Original-Received: (at 32874) by debbugs.gnu.org; 30 Sep 2018 17:18:06 +0000 Original-Received: from localhost ([127.0.0.1]:60175 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g6fM6-0008P6-5B for submit@debbugs.gnu.org; Sun, 30 Sep 2018 13:18:06 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:36364) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g6fM4-0008Oc-G5 for 32874@debbugs.gnu.org; Sun, 30 Sep 2018 13:18:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g6fLv-0002l7-Rh for 32874@debbugs.gnu.org; Sun, 30 Sep 2018 13:17:59 -0400 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39846) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6fLv-0002kz-Nt; Sun, 30 Sep 2018 13:17:55 -0400 Original-Received: from [176.228.60.248] (port=4219 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1g6fLv-00067y-8G; Sun, 30 Sep 2018 13:17:55 -0400 In-reply-to: <20180930153646.GF6305@ACM> (message from Alan Mackenzie on Sun, 30 Sep 2018 15:36:46 +0000) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.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" Xref: news.gmane.org gmane.emacs.bugs:150829 Archived-At: > Date: Sun, 30 Sep 2018 15:36:46 +0000 > Cc: 32874@debbugs.gnu.org > From: Alan Mackenzie > > > > I've had a look at window-scroll-functions, but I can't see what you > > > must be seeing. Currently, the documentation warns against trying to > > > influence the scrolling, saying "it probably won't work anyway". > > > But you don't want to scroll yourself, you just want to switch the > > selected window and move point so that Emacs won't need to scroll. > > > AFAIU, follow-mode wants to kick in when point goes off the selected > > window. And the call to window-scroll-functions is exactly the place > > where the display engine decides it needs to scroll the window, but > > didn't actually scroll it yet. So that looks like a good place to have > > follow-mode do its thing. We might need to add some simple facility > > for follow-mode to use, so that it could signal the display engine not > > to scroll the window. Other than that, I think this possibility is > > worth exploring. > > Follow-mode also needs to be active on explicit scrolling commands such > as C-v. Also, after inserting a newline, subsequent windows need to be > scrolled down. After either of these, follow-mode laboriously starts > determining where all its windows have to start and end. There's nothing > in the display engine to help in this process. I'm not sure you are right, since all of the situations you describe go through the function try_scrolling, which calls window-scroll-functions. > > > Maybe it would be relatively simple to introduce new functionality. > > > Something like "scroll window so that window-end gets the given value". > > > I'm not sure I understand how this could help follow-mode. Please > > elaborate. > > Currently when a middle or right hand window gets scrolled for any > reason, follow-mode has to determine how to scroll windows to the left of > it. It does this by making a first guess at a window-start, does > set-window-start, then moves forward through the window to see how close > window-end is to where it needs to be. If it's a line off, a different > starting position is chosen, and so on, until window-start gets correctly > placed. > > If there were a function set-window-end, the display engine itself could > move back over the text lines to find window-start far more efficiently > and directly than follow-mode can. It should be very easy to write such a function, provided that you can pass it as argument the buffer position of the beginning of the last line in the window (not the end of that line).