changeset 5942:c51e1ff87656

(try_window_id, display_text_line): Treat blank lines specially in selective_display.
author Karl Heuer <kwzh@gnu.org>
date Mon, 14 Feb 1994 19:42:30 +0000
parents c4cceb65fc5a
children 35526ee8b790
files src/xdisp.c
diffstat 1 files changed, 8 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Mon Feb 14 19:30:48 1994 +0000
+++ b/src/xdisp.c	Mon Feb 14 19:42:30 1994 +0000
@@ -1415,6 +1415,10 @@
   register int i, tem;
   int last_text_vpos = 0;
   int stop_vpos;
+  int selective
+    = XTYPE (current_buffer->selective_display) == Lisp_Int
+      ? XINT (current_buffer->selective_display)
+	: !NILP (current_buffer->selective_display) ? -1 : 0;
 
   struct position val, bp, ep, xp, pp;
   int scroll_amount = 0;
@@ -1467,9 +1471,7 @@
   if ((bp.contin && bp.bufpos - 1 == beg_unchanged && vpos > 0)
       ||
       /* Likewise if we have to worry about selective display.  */
-      (XTYPE (current_buffer->selective_display) == Lisp_Int
-       && XINT (current_buffer->selective_display) > 0
-       && bp.bufpos - 1 == beg_unchanged && vpos > 0))
+      (selective > 0 && bp.bufpos - 1 == beg_unchanged && vpos > 0))
     {
       bp = *vmotion (bp.bufpos, -1, width, hscroll, window);
       --vpos;
@@ -1486,11 +1488,8 @@
 
   /* Find first visible newline after which no more is changed.  */
   tem = find_next_newline (Z - max (end_unchanged, Z - ZV), 1);
-  if (XTYPE (current_buffer->selective_display) == Lisp_Int
-      && XINT (current_buffer->selective_display) > 0)
-    while (tem < ZV - 1
-	   && (position_indentation (tem)
-	       >= XINT (current_buffer->selective_display)))
+  if (selective > 0)
+    while (tem < ZV - 1 && (indented_beyond_p (tem, selective)))
       tem = find_next_newline (tem, 1);
 
   /* Compute the cursor position after that newline.  */
@@ -2123,7 +2122,7 @@
 	  invis = 0;
 	  while (pos < end
 		 && selective > 0
-		 && position_indentation (pos + 1) >= selective)
+		 && indented_beyond_p (pos + 1, selective))
 	    {
 	      invis = 1;
 	      pos = find_next_newline (pos + 1, 1);