comparison src/xdisp.c @ 107590:ebdfe4d01cff

Retrospective commit from 2009-09-20. Handle positions at BEGV and ZV. Mor initialization cleanups. xdisp.c (reseat_1): Handle position < BEGV. bidi.c (bidi_paragraph_init): Set bidi_it->ch_len. Handle ZV. (bidi_init_it): Don't initialize bidi_it->ch_len. (bidi_resolve_explicit_1): Abort if bidi_it->ch_len was not initialized. (bidi_at_paragraph_end, bidi_resolve_explicit_1) (bidi_resolve_weak, bidi_level_of_next_char): Handle bytepos at ZV_BYTE. (bidi_resolve_explicit_1): Handle position < BEGV.
author Eli Zaretskii <eliz@gnu.org>
date Thu, 31 Dec 2009 16:31:54 -0500
parents 84267baa779b
children 86eec24bee2c
comparison
equal deleted inserted replaced
107589:84267baa779b 107590:ebdfe4d01cff
5539 bidi_paragraph_init (L2R, &it->bidi_it); 5539 bidi_paragraph_init (L2R, &it->bidi_it);
5540 /* With bidi reordering, the first character to display might 5540 /* With bidi reordering, the first character to display might
5541 not be the character at POS. We need to find the next 5541 not be the character at POS. We need to find the next
5542 character in visual order starting from the preceding 5542 character in visual order starting from the preceding
5543 character. */ 5543 character. */
5544 if ((it->bidi_it.charpos = CHARPOS (pos) - 1) > 1) 5544 if ((it->bidi_it.charpos = CHARPOS (pos) - 1) >= BEGV)
5545 { 5545 {
5546 it->bidi_it.bytepos = CHAR_TO_BYTE (CHARPOS (pos) - 1); 5546 it->bidi_it.bytepos = CHAR_TO_BYTE (CHARPOS (pos) - 1);
5547 it->bidi_it.ch_len = CHAR_BYTES (CHARPOS (pos) - 1); 5547 it->bidi_it.ch_len = CHAR_BYTES (FETCH_CHAR (it->bidi_it.bytepos));
5548 } 5548 }
5549 else 5549 else
5550 it->bidi_it.bytepos = 0; 5550 it->bidi_it.bytepos = 0; /* signal bidi.c not to move */
5551 bidi_get_next_char_visually (&it->bidi_it); 5551 bidi_get_next_char_visually (&it->bidi_it);
5552 SET_TEXT_POS (pos, it->bidi_it.charpos, it->bidi_it.bytepos); 5552 SET_TEXT_POS (pos, it->bidi_it.charpos, it->bidi_it.bytepos);
5553 it->current.pos = it->position = pos; 5553 it->current.pos = it->position = pos;
5554 } 5554 }
5555 5555