From: Richard M. Stallman Date: Tue, 9 Aug 1994 04:29:53 +0000 (+0000) Subject: (Fwindow_end): If window_end_valid is nil, return nil. X-Git-Tag: emacs-19.34~7361 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7250968eba3eea4b41392ed86523f0e2f0677002;p=emacs.git (Fwindow_end): If window_end_valid is nil, return nil. --- diff --git a/src/window.c b/src/window.c index e89fa874c84..1401abda32c 100644 --- a/src/window.c +++ b/src/window.c @@ -493,7 +493,16 @@ DEFUN ("window-end", Fwindow_end, Swindow_end, 0, 1, 0, "Return position at which display currently ends in WINDOW.\n\ This is updated by redisplay, when it runs to completion.\n\ Simply changing the buffer text or setting `window-start'\n\ -does not update this value.") +does not update this value.\n\ +\n\ +This function returns nil if the position is not currently known.\n\ +That happens when redisplay is preempted and doesn't finish.\n\ +If in that case you want to compute where the end of the window would\n\ +have been if redisplay had finished, do this:\n\ + (save-excursion\n\ + (goto-char (window-start window))\n\ + (vertical-motion (1- (window-height window)) window)\n\ + (point))") (window) Lisp_Object window; { @@ -504,6 +513,13 @@ does not update this value.") buf = w->buffer; CHECK_BUFFER (buf, 0); + /* If we don't know the end position, return nil. + The user can compute it with vertical-motion if he wants to. + It would be nicer to do it automatically, + but that's so slow that it would probably bother people. */ + if (NILP (w->window_end_valid)) + return Qnil; + XSET (value, Lisp_Int, BUF_Z (XBUFFER (buf)) - XFASTINT (w->window_end_pos));