Mercurial > emacs
changeset 6661:a26e7181f36b
(display_text_line): Properly handle charstarts for hscroll,
and for continuation in mid character.
(message2): Call frame_up_to_date_hook.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 04 Apr 1994 00:44:27 +0000 |
parents | cb14d76e993c |
children | bc7bc2a395c6 |
files | src/xdisp.c |
diffstat | 1 files changed, 27 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Mon Apr 04 00:43:13 1994 +0000 +++ b/src/xdisp.c Mon Apr 04 00:44:27 1994 +0000 @@ -237,6 +237,8 @@ echo_area_display (); update_frame (XFRAME (XWINDOW (minibuf_window)->frame), 1, 1); do_pending_window_change (); + if (frame_up_to_date_hook != 0 && ! gc_in_progress) + (*frame_up_to_date_hook) (XFRAME (XWINDOW (minibuf_window)->frame)); } } @@ -2092,7 +2094,8 @@ { /* Record which glyph starts a character, and the character position of that character. */ - charstart[p1 - p1start] = pos; + if (p1 >= p1start) + charstart[p1 - p1start] = pos; if (p1 >= endp) break; @@ -2280,19 +2283,31 @@ p1++; } - /* For all the glyphs occupied by this character, except for the - first, store -1 in charstarts. */ - if (p1 != p1prev) + /* Do nothing here for a char that's entirely off the left edge. */ + if (p1 >= p1start) { - int *p2x = &charstart[p1prev - p1start] + 1; - int *p2 = &charstart[p1 - p1start]; - while (p2x != p2) - *p2x++ = -1; + /* For all the glyphs occupied by this character, except for the + first, store -1 in charstarts. */ + if (p1 != p1prev) + { + int *p2x = &charstart[p1prev - p1start]; + int *p2 = &charstart[p1 - p1start]; + + /* The window's left column should always + contain a character position. + And don't clobber anything to the left of that. */ + if (p1prev < p1start) + { + charstart[0] = pos; + p2x = charstart; + } + + /* This loop skips over the char p2x initially points to. */ + while (++p2x != p2) + *p2x = -1; + } } - else - /* If this character took up no space, - erase all mention of it from charstart. */ - charstart[p1 - p1start] = 0; + pos++; }