]> git.eshelyaron.com Git - emacs.git/commitdiff
* xdisp.c (push_display_prop): Don't set avoid_cursor_p. Return 0
authorChong Yidong <cyd@stupidchicken.com>
Sat, 5 Dec 2009 22:49:00 +0000 (22:49 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sat, 5 Dec 2009 22:49:00 +0000 (22:49 +0000)
if push failed.
(handle_line_prefix): Set avoid_cursor_p here.  Check return value
of push_display_prop (Bug#5000).

src/ChangeLog
src/xdisp.c

index 1909af820fb829a7c696c52c5ab83767bbff7d96..aec5dc18286b7f91314483415de76242579e75c5 100644 (file)
@@ -1,5 +1,10 @@
 2009-12-05  Chong Yidong  <cyd@stupidchicken.com>
 
+       * xdisp.c (push_display_prop): Don't set avoid_cursor_p.  Return 0
+       if push failed.
+       (handle_line_prefix): Set avoid_cursor_p here.  Check return value
+       of push_display_prop (Bug#5000).
+
        * xfaces.c (Fx_family_fonts): Handle 2009-07-14 change to return
        value of font_list_entities (Bug#5085).
 
index 05bcd136865da5da1df027a7fefa068c66faca5e..449d42dcf175fcb470bb02c8fef3dc4f23b0442f 100644 (file)
@@ -16384,22 +16384,20 @@ cursor_row_p (w, row)
 \f
 
 /* Push the display property PROP so that it will be rendered at the
-   current position in IT.  */
+   current position in IT.  Return 1 if PROP was successfully pushed,
+   0 otherwise.  */
 
-static void
+static int
 push_display_prop (struct it *it, Lisp_Object prop)
 {
   push_it (it);
 
-  /* Never display a cursor on the prefix.  */
-  it->avoid_cursor_p = 1;
-
   if (STRINGP (prop))
     {
       if (SCHARS (prop) == 0)
        {
          pop_it (it);
-         return;
+         return 0;
        }
 
       it->string = prop;
@@ -16426,8 +16424,10 @@ push_display_prop (struct it *it, Lisp_Object prop)
   else
     {
       pop_it (it);             /* bogus display property, give up */
-      return;
+      return 0;
     }
+
+  return 1;
 }
 
 /* Return the character-property PROP at the current position in IT.  */
@@ -16467,13 +16467,13 @@ handle_line_prefix (struct it *it)
       if (NILP (prefix))
        prefix = Vline_prefix;
     }
-  if (! NILP (prefix))
+  if (! NILP (prefix) && push_display_prop (it, prefix))
     {
-      push_display_prop (it, prefix);
       /* If the prefix is wider than the window, and we try to wrap
         it, it would acquire its own wrap prefix, and so on till the
         iterator stack overflows.  So, don't wrap the prefix.  */
       it->line_wrap = TRUNCATE;
+      it->avoid_cursor_p = 1;
     }
 }