]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix current-bidi-paragraph-direction within whitespace chars.
authorEli Zaretskii <eliz@gnu.org>
Sat, 14 Aug 2010 10:59:55 +0000 (13:59 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 14 Aug 2010 10:59:55 +0000 (13:59 +0300)
 xdisp.c (Fcurrent_bidi_paragraph_direction): Fix paragraph
 direction when point is inside a run of whitespace characters.
 bidi.c (bidi_at_paragraph_end): Remove obsolete comment.

src/ChangeLog
src/bidi.c
src/xdisp.c

index 6c9bb832f2b34e60cf8bf3bf770fd972cb2e9c46..424913073fb2539822a74a0018c192f6f538dd6b 100644 (file)
@@ -1,3 +1,10 @@
+2010-08-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (Fcurrent_bidi_paragraph_direction): Fix paragraph
+       direction when point is inside a run of whitespace characters.
+
+       * bidi.c (bidi_at_paragraph_end): Remove obsolete comment.
+
 2010-08-14  Jason Rumney  <jasonr@gnu.org>
 
        * keyboard.c (lispy_function_keys): Do not define VK_PACKET (bug#4836)
index b31de597688bcd6d7dbbf55ee8ac32472b235bd0..112d9b08b232c38a22a4cf6dddbcef1d142ec1b8 100644 (file)
@@ -497,7 +497,6 @@ bidi_peek_at_next_level (struct bidi_it *bidi_it)
 static EMACS_INT
 bidi_at_paragraph_end (EMACS_INT charpos, EMACS_INT bytepos)
 {
-  /* FIXME: Why Fbuffer_local_value rather than just Fsymbol_value?  */
   Lisp_Object sep_re;
   Lisp_Object start_re;
   EMACS_INT val;
index 80df99fee48b35d4338003416f0c8a7ea4b39bb3..93c803d8c006a60c99ce523cb186074dd0001a39 100644 (file)
@@ -17962,16 +17962,22 @@ See also `bidi-paragraph-direction'.  */)
       struct bidi_it itb;
       EMACS_INT pos = BUF_PT (buf);
       EMACS_INT bytepos = BUF_PT_BYTE (buf);
+      int c;
 
       if (buf != current_buffer)
        set_buffer_temp (buf);
-      /* Find previous non-empty line.  */
+      /* bidi_paragraph_init finds the base direction of the paragraph
+        by searching forward from paragraph start.  We need the base
+        direction of the current or _previous_ paragraph, so we need
+        to make sure we are within that paragraph.  To that end, find
+        the previous non-empty line.  */
       if (pos >= ZV && pos > BEGV)
        {
          pos--;
          bytepos = CHAR_TO_BYTE (pos);
        }
-      while (FETCH_BYTE (bytepos) == '\n')
+      while ((c = FETCH_BYTE (bytepos)) == '\n'
+            || c == ' ' || c == '\t' || c == '\f')
        {
          if (bytepos <= BEGV_BYTE)
            break;
@@ -17983,6 +17989,7 @@ See also `bidi-paragraph-direction'.  */)
       itb.charpos = pos;
       itb.bytepos = bytepos;
       itb.first_elt = 1;
+      itb.separator_limit = -1;
 
       bidi_paragraph_init (NEUTRAL_DIR, &itb);
       if (buf != current_buffer)