diff options
author | Eli Zaretskii <eliz@gnu.org> | 2010-08-14 13:59:55 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2010-08-14 13:59:55 +0300 |
commit | 5872c762ed0f6123bc1c45168c0695fcd2e94948 (patch) | |
tree | 8ef950275f000437d49b3b3a9deb47aa3d8dae5d /src | |
parent | f5a62bb4a36e413f9f9eb8f30e932b0919eeceaf (diff) | |
download | emacs-5872c762ed0f6123bc1c45168c0695fcd2e94948.tar.gz emacs-5872c762ed0f6123bc1c45168c0695fcd2e94948.tar.bz2 emacs-5872c762ed0f6123bc1c45168c0695fcd2e94948.zip |
Fix current-bidi-paragraph-direction within whitespace chars.
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 7 | ||||
-rw-r--r-- | src/bidi.c | 1 | ||||
-rw-r--r-- | src/xdisp.c | 11 |
3 files changed, 16 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 6c9bb832f2b..424913073fb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -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) diff --git a/src/bidi.c b/src/bidi.c index b31de597688..112d9b08b23 100644 --- a/src/bidi.c +++ b/src/bidi.c @@ -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; diff --git a/src/xdisp.c b/src/xdisp.c index 80df99fee48..93c803d8c00 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -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) |