From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Bill Brodie" Newsgroups: gmane.emacs.bugs Subject: bug#12170: save-excursion fails boundary case with recenter Date: Fri, 10 Aug 2012 09:40:24 -0400 Message-ID: <003601cd76fd$b21cd590$165680b0$@com> References: <000001cd7696$b0e93d60$12bbb820$@com> <5024D593.7080305@gmx.at> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1344606064 24825 80.91.229.3 (10 Aug 2012 13:41:04 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 10 Aug 2012 13:41:04 +0000 (UTC) Cc: 12170@debbugs.gnu.org To: "'martin rudalics'" Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Aug 10 15:40:58 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 1SzpSP-0006Ml-NE for geb-bug-gnu-emacs@m.gmane.org; Fri, 10 Aug 2012 15:40:53 +0200 Original-Received: from localhost ([::1]:37030 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SzpSO-0001Bx-OZ for geb-bug-gnu-emacs@m.gmane.org; Fri, 10 Aug 2012 09:40:52 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:35984) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SzpSL-0001BF-Sq for bug-gnu-emacs@gnu.org; Fri, 10 Aug 2012 09:40:51 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SzpSJ-00046V-Fz for bug-gnu-emacs@gnu.org; Fri, 10 Aug 2012 09:40:49 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:36901) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SzpSJ-000466-0K for bug-gnu-emacs@gnu.org; Fri, 10 Aug 2012 09:40:47 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1SzpaI-000530-2T for bug-gnu-emacs@gnu.org; Fri, 10 Aug 2012 09:49:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Bill Brodie" Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 10 Aug 2012 13:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12170 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 12170-submit@debbugs.gnu.org id=B12170.134460653319387 (code B ref 12170); Fri, 10 Aug 2012 13:49:02 +0000 Original-Received: (at 12170) by debbugs.gnu.org; 10 Aug 2012 13:48:53 +0000 Original-Received: from localhost ([127.0.0.1]:46447 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Szpa9-00052e-2r for submit@debbugs.gnu.org; Fri, 10 Aug 2012 09:48:53 -0400 Original-Received: from mailbackend.panix.com ([166.84.1.89]:36774) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Szpa3-00052T-V2 for 12170@debbugs.gnu.org; Fri, 10 Aug 2012 09:48:49 -0400 Original-Received: from Chianti (cpe-67-250-32-171.nyc.res.rr.com [67.250.32.171]) by mailbackend.panix.com (Postfix) with ESMTP id EC40128D1B; Fri, 10 Aug 2012 09:40:31 -0400 (EDT) In-Reply-To: <5024D593.7080305@gmx.at> X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: Ac1221BBmxBbVopzTRW5A9LwDYg7jgAH3hvw Content-Language: en-us 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:63001 Archived-At: Martin, Thanks for the test code and clarification request. (1) By "window height", I meant the number of lines displayed for the actual buffer, not counting the mode line or minibuffer. It turns out this is one less than the value returned by `window-height'. (2) The value of `point' changes (the cursor "hops", in other words) when the window is redisplayed, or when control returns to the user. Here is code that will produce the bug (with emacs -Q): (progn (defun f (n) (save-excursion (forward-line (- n)) (recenter 0))) (let ((buffer (switch-to-buffer "foo")) (height (1- (window-height (get-buffer-window "foo"))))) (insert-char 10 (* height 2)) (let ((pt (point))) (f height) (redisplay) (message "height %s old %s new %s" height pt (point))))) If you leave out the `redisplay' call, on the other hand, old = new in the message -- but after control returns to the user, point has still been moved in the buffer. Bill -----Original Message----- From: martin rudalics [mailto:rudalics@gmx.at] Sent: Friday, August 10, 2012 5:34 AM To: Bill Brodie Cc: 12170@debbugs.gnu.org Subject: Re: bug#12170: save-excursion fails boundary case with recenter > (defun f (n) (save-excursion (forward-line (- n)) (recenter > 0))) > > > > Let H be the window height in lines, and suppose that point is positioned at > the beginning of line L > H. > > > > Despite 'save-excursion', (f K) moves point if K = H. It leaves point > unchanged for any other value of K, 0 <= K < L. I'm not sure whether I clearly understand your scenario. Suppose with emacs -Q I evaluate (progn (defun f (n) (save-excursion (forward-line (- n)) (recenter 0))) (let ((buffer (switch-to-buffer "foo")) (height (window-height (get-buffer-window "foo")))) (insert-char 10 (* height 2)) (let ((pt (point))) (f height) (message "old %s new %s" pt (point))))) Then the values printed by the message are equal. Please elaborate. Thanks, martin