changeset 6568:c87ae1f14148

(display_text_line): Handle selective display at window edge.
author Karl Heuer <kwzh@gnu.org>
date Tue, 29 Mar 1994 04:08:07 +0000
parents baf8fe0c51e3
children 9cde1228e2fa
files src/xdisp.c
diffstat 1 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Tue Mar 29 02:20:04 1994 +0000
+++ b/src/xdisp.c	Tue Mar 29 04:08:07 1994 +0000
@@ -2262,8 +2262,15 @@
   if (pos < ZV)
     {
       if (FETCH_CHAR (pos) == '\n')
-	/* If stopped due to a newline, start next line after it */
-	pos++;
+	{
+	  /* If stopped due to a newline, start next line after it */
+	  pos++;
+	  /* Check again for hidden lines, in case the newline occurred exactly
+	     at the right margin.  */
+	  while (pos < ZV && selective > 0
+		 && indented_beyond_p (pos, selective))
+	    pos = find_next_newline (pos, 1);
+	}
       else
 	/* Stopped due to right margin of window */
 	{
@@ -2273,7 +2280,10 @@
 	      /* Truncating => start next line after next newline,
 		 and point is on this line if it is before the newline,
 		 and skip none of first char of next line */
-	      pos = find_next_newline (pos, 1);
+	      do
+		pos = find_next_newline (pos, 1);
+	      while (pos < ZV && selective > 0
+		     && indented_beyond_p (pos, selective));
 	      val.hpos = XINT (w->hscroll) ? 1 - XINT (w->hscroll) : 0;
 
 	      lastpos = pos - (FETCH_CHAR (pos - 1) == '\n');