changeset 5943:35526ee8b790

(indented_beyond_p): New function. (compute_motion, vmotion): Use it to treat blank lines specially in selective display.
author Karl Heuer <kwzh@gnu.org>
date Mon, 14 Feb 1994 19:44:36 +0000
parents c51e1ff87656
children 022fbe742832
files src/indent.c
diffstat 1 files changed, 16 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/indent.c	Mon Feb 14 19:42:30 1994 +0000
+++ b/src/indent.c	Mon Feb 14 19:44:36 1994 +0000
@@ -271,6 +271,18 @@
 	}
     }
 }
+
+/* Test whether the line beginning at POS is indented beyond COLUMN.
+   Blank lines are treated as if they had the same indentation as the
+   preceding line.  */
+int
+indented_beyond_p (pos, column)
+     int pos, column;
+{
+  while (pos > BEGV && FETCH_CHAR (pos) == '\n')
+    pos = find_next_newline (pos - 1, -1);
+  return (position_indentation (pos) >= column);
+}
 
 DEFUN ("move-to-column", Fmove_to_column, Smove_to_column, 1, 2, 0,
   "Move point to column COLUMN in the current line.\n\
@@ -499,14 +511,14 @@
 	}
       else if (c == '\n')
 	{
-	  if (selective > 0 && position_indentation (pos + 1) >= selective)
+	  if (selective > 0 && indented_beyond_p (pos + 1, selective))
 	    {
 	      /* Skip any number of invisible lines all at once */
 	      do
 		{
 		  while (++pos < to && FETCH_CHAR (pos) != '\n');
 		}
-	      while (pos < to && position_indentation (pos + 1) >= selective);
+	      while (pos < to && indented_beyond_p (pos + 1, selective));
 	      pos--;		/* Reread the newline on the next pass.  */
 	      /* Allow for the " ..." that is displayed for them. */
 	      if (selective_rlen)
@@ -648,7 +660,7 @@
 	  prevline = find_next_newline (from, -1);
 	  while (prevline > BEGV
 		 && ((selective > 0
-		      && position_indentation (prevline) >= selective)
+		      && indented_beyond_p (prevline, selective))
 #ifdef USE_TEXT_PROPERTIES
 		     /* watch out for newlines with `invisible' property */
 		     || ! NILP (Fget_text_property (XFASTINT (prevline),
@@ -685,7 +697,7 @@
 	  prevline = find_next_newline (prevline - 1, -1);
 	  if (prevline == BEGV
 	      || ((selective <= 0
-		   || position_indentation (prevline) < selective)
+		   || ! indented_beyond_p (prevline, selective))
 #ifdef USE_TEXT_PROPERTIES
 		  /* watch out for newlines with `invisible' property */
 		  && NILP (Fget_text_property (XFASTINT (prevline),