changeset 34416:0d16962724cb

(displayed_window_lines): Handle non-newline-terminated final lines properly. (Fwindow_text_height): New function (used to be in lisp). (syms_of_window): Initialize it.
author Miles Bader <miles@gnu.org>
date Mon, 11 Dec 2000 07:22:38 +0000
parents ae9bbfff4f90
children fef41c786c7a
files src/window.c
diffstat 1 files changed, 22 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.c	Mon Dec 11 05:02:17 2000 +0000
+++ b/src/window.c	Mon Dec 11 07:22:38 2000 +0000
@@ -4473,8 +4473,13 @@
   if (old_buffer)
     set_buffer_internal (old_buffer);
 
+  bottom_y = it.current_y + it.max_ascent + it.max_descent;
+
+  if (bottom_y > it.current_y && bottom_y < it.last_visible_y)
+    /* Hit a line without a terminating newline.  */
+    it.vpos++;
+
   /* Add in empty lines at the bottom of the window.  */
-  bottom_y = it.current_y + it.max_ascent + it.max_descent;
   if (bottom_y < height)
     {
       struct frame *f = XFRAME (w->frame);
@@ -4487,6 +4492,21 @@
 }
 
 
+DEFUN ("window-text-height", Fwindow_text_height, Swindow_text_height,
+  0, 1, 0,
+  "Return the height in lines of the text display area of WINDOW.\n\
+This doesn't include the mode-line (or header-line if any) or any\n\
+partial-height lines in the text display area.")
+  (window)
+     Lisp_Object window;
+{
+  struct window *w = decode_window (window);
+  int pixel_height = window_box_height (w);
+  int line_height = pixel_height / CANON_Y_UNIT (XFRAME (w->frame));
+  return make_number (line_height);
+}
+
+
 
 DEFUN ("move-to-window-line", Fmove_to_window_line, Smove_to_window_line,
   1, 1, "P",
@@ -5739,6 +5759,7 @@
   defsubr (&Sother_window_for_scrolling);
   defsubr (&Sscroll_other_window);
   defsubr (&Srecenter);
+  defsubr (&Swindow_text_height);
   defsubr (&Smove_to_window_line);
   defsubr (&Swindow_configuration_p);
   defsubr (&Swindow_configuration_frame);