From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#12401: scroll-preserve-screen-position broken with font height faces Date: Wed, 12 Sep 2012 19:48:59 +0300 Message-ID: <83d31rw5j8.fsf@gnu.org> References: <83mx0yl4s2.fsf@gnu.org> <83a9wxlpnc.fsf@gnu.org> <50504310.8070505@gmx.at> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1347468564 5130 80.91.229.3 (12 Sep 2012 16:49:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 12 Sep 2012 16:49:24 +0000 (UTC) Cc: 12401@debbugs.gnu.org, l26wang@gmail.com To: martin rudalics Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Sep 12 18:49:26 2012 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 1TBq7x-0001vf-3m for geb-bug-gnu-emacs@m.gmane.org; Wed, 12 Sep 2012 18:49:25 +0200 Original-Received: from localhost ([::1]:44829 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBq7t-0000GP-JN for geb-bug-gnu-emacs@m.gmane.org; Wed, 12 Sep 2012 12:49:21 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:39736) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBq7p-0000FU-UJ for bug-gnu-emacs@gnu.org; Wed, 12 Sep 2012 12:49:19 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TBq7n-0005DS-J9 for bug-gnu-emacs@gnu.org; Wed, 12 Sep 2012 12:49:17 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:47763) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBq7n-0005DN-FJ for bug-gnu-emacs@gnu.org; Wed, 12 Sep 2012 12:49:15 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TBq8Y-0005TE-1A for bug-gnu-emacs@gnu.org; Wed, 12 Sep 2012 12:50:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 12 Sep 2012 16:50:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12401 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 12401-submit@debbugs.gnu.org id=B12401.134746858421001 (code B ref 12401); Wed, 12 Sep 2012 16:50:01 +0000 Original-Received: (at 12401) by debbugs.gnu.org; 12 Sep 2012 16:49:44 +0000 Original-Received: from localhost ([127.0.0.1]:57309 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TBq8G-0005Sg-5F for submit@debbugs.gnu.org; Wed, 12 Sep 2012 12:49:44 -0400 Original-Received: from mtaout21.012.net.il ([80.179.55.169]:57471) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TBq8D-0005SY-As for 12401@debbugs.gnu.org; Wed, 12 Sep 2012 12:49:43 -0400 Original-Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0MA800H00X6E7U00@a-mtaout21.012.net.il> for 12401@debbugs.gnu.org; Wed, 12 Sep 2012 19:48:48 +0300 (IDT) Original-Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MA800HP7XDC3F50@a-mtaout21.012.net.il>; Wed, 12 Sep 2012 19:48:48 +0300 (IDT) In-reply-to: <50504310.8070505@gmx.at> X-012-Sender: halo1@inter.net.il X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) 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:64199 Archived-At: > Date: Wed, 12 Sep 2012 10:08:48 +0200 > From: martin rudalics > CC: Stefan Monnier , 12401@debbugs.gnu.org, > l26wang@gmail.com > > >>> scroll-preserve-screen-position? Is it just that doing N C-v's > >>> followed by N M-v's brings point to the same location where it was > >>> before this sequence of 2N commands? > >> I think this should be the main point, yes. > > > > For this to work, we would need to make sure that C-v followed by M-v > > end up with a window that has the same window-start as the one before > > C-v. > > Why? Because all scroll-preserve-screen-position does is put point on certain window-relative pixel coordinates. For this to follow a repeatable series of point values, you need the series of window-start positions to be repeatable, too. IOW, if you start with point P1 and window-start W1, and do a C-v followed by M-v, then setting point at the same pixel distance from the left-top window edge will get you back to P1 iff the window-start gets back at W1. > > But this is impossible to ensure with the way we compute > > window-start, because the move_it family of functions used for that > > can only move forward; therefore moving back is necessarily > > implemented differently, and the results differ when variable-size > > fonts are present. > > > > IOW, this is a limitation of the current design of the > > window-scrolling functions that can only be lifted by redesigning. > > I'm completely happy with the following solution: Whenever, after a > sequence of scrolling commands, the original position (that is the > position before the sequence started) reappears in a window, move to > that position and leave the window start position alone. See also > > http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg01892.html Fine by me. However, the OP asked if there's an existing feature in Emacs that can satisfy this need. After looking into this, my response was that no, there's no such a feature. (The fact that setting scroll-preserve-screen-position is documented in the manual as providing this feature is, I suspect, a remnant from the old display engine that only supported fixed fonts.) The solution you propose, and another one implemented in scroll-in-place.el, is OK, and indeed this is better done in Lisp than in C.