]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #7128.
authorEli Zaretskii <eliz@gnu.org>
Wed, 29 Sep 2010 09:52:43 +0000 (11:52 +0200)
committerEli Zaretskii <eliz@gnu.org>
Wed, 29 Sep 2010 09:52:43 +0000 (11:52 +0200)
 xdisp.c (reseat_1): Initialize bidi_it.paragraph_dir to NEUTRAL_DIR.
 (handle_invisible_prop, iterate_out_of_display_property)
 (next_element_from_buffer): If bidi_it.first_elt is set, call
 bidi_paragraph_init with NO_DEFAULT_P argument non-zero.

src/ChangeLog
src/xdisp.c

index 2443a4585b925fe9a1eb5cd1a886157fa11317c0..b14ed34b26d8087eaa6d9da690d57fbe50a3f93b 100644 (file)
@@ -1,5 +1,12 @@
 2010-09-29  Eli Zaretskii  <eliz@gnu.org>
 
+       * xdisp.c (reseat_1): Initialize bidi_it.paragraph_dir to
+       NEUTRAL_DIR.
+       (handle_invisible_prop, iterate_out_of_display_property)
+       (next_element_from_buffer): If bidi_it.first_elt is set, call
+       bidi_paragraph_init with NO_DEFAULT_P argument non-zero.
+       (Bug#7128)
+
        * print.c (print_object): Fix format string and argument types for
        printing a Lisp_Misc_Marker.
 
index ada69da29baead2e7c78fc78d08686ead1d1a875..9b0f94ef6570d98f0dbee2ba865b1f3994942b29 100644 (file)
@@ -3831,7 +3831,7 @@ handle_invisible_prop (struct it *it)
                     skip any text at the beginning, which resets the
                     FIRST_ELT flag.  */
                  bidi_paragraph_init (it->paragraph_embedding,
-                                      &it->bidi_it, 0);
+                                      &it->bidi_it, 1);
                }
              do
                {
@@ -5152,7 +5152,7 @@ iterate_out_of_display_property (struct it *it)
      of a new paragraph, next_element_from_buffer may not have a
      chance to do that.  */
   if (it->bidi_it.first_elt && it->bidi_it.charpos < ZV)
-    bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 0);
+    bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1);
   /* prev_stop can be zero, so check against BEGV as well.  */
   while (it->bidi_it.charpos >= BEGV
         && it->prev_stop <= it->bidi_it.charpos
@@ -5584,7 +5584,10 @@ reseat_1 (struct it *it, struct text_pos pos, int set_stop_p)
   it->string_from_display_prop_p = 0;
   it->face_before_selective_p = 0;
   if (it->bidi_p)
-    it->bidi_it.first_elt = 1;
+    {
+      it->bidi_it.first_elt = 1;
+      it->bidi_it.paragraph_dir = NEUTRAL_DIR;
+    }
 
   if (set_stop_p)
     {
@@ -6675,7 +6678,7 @@ next_element_from_buffer (struct it *it)
        {
          /* If we are at the beginning of a line, we can produce the
             next element right away.  */
-         bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 0);
+         bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1);
          bidi_move_to_visually_next (&it->bidi_it);
        }
       else
@@ -6689,7 +6692,7 @@ next_element_from_buffer (struct it *it)
          IT_BYTEPOS (*it) = CHAR_TO_BYTE (IT_CHARPOS (*it));
          it->bidi_it.charpos = IT_CHARPOS (*it);
          it->bidi_it.bytepos = IT_BYTEPOS (*it);
-         bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 0);
+         bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1);
          do
            {
              /* Now return to buffer position where we were asked to