Mercurial > emacs
diff src/term.c @ 107606:297c59e52ecf
Retrospective commit from 2009-12-26.
Redesign handle_stop_backwards.
Fix character mirroring for non-ASCII characters.
xdisp.c (handle_stop_backwards): Call compute_stop_pos in the
loop, instead of calling handle_stop. Call handle_stop only once,
after the loop.
(next_element_from_buffer): Don't call handle_stop_backwards if at
stop position. If base_level_stop is zero, set it to 1.
term.c (append_glyph): Fill resolved_level and bidi_type slots
of struct glyph for unidirectional display.
xdisp.c (set_cursor_from_row): Handle zero-width characters.
bidi.c (bidi_mirror_char): More efficient code (suggested by
Ehud Karni <ehud@unix.mvs.co.il>). Don't even try to mirror
non-ASCII characters.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Fri, 01 Jan 2010 10:04:53 -0500 |
parents | 4bad2c6338cc |
children | c5f9e4613394 |
line wrap: on
line diff
--- a/src/term.c Fri Jan 01 09:57:27 2010 -0500 +++ b/src/term.c Fri Jan 01 10:04:53 2010 -0500 @@ -1579,8 +1579,15 @@ if (it->bidi_p) { glyph->resolved_level = it->bidi_it.resolved_level; + if ((it->bidi_it.type & 7) != it->bidi_it.type) + abort (); glyph->bidi_type = it->bidi_it.type; } + else + { + glyph->resolved_level = 0; + glyph->bidi_type = UNKNOWN_BT; + } ++it->glyph_row->used[it->area]; ++glyph;