diff options
author | Richard M. Stallman <rms@gnu.org> | 1995-11-11 22:12:30 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1995-11-11 22:12:30 +0000 |
commit | 69629cf3883882a1df843968b189e019117f3e02 (patch) | |
tree | f70d181e9d075c0f95d794e8f0a91f3b6b708ba1 /src | |
parent | ed7e9ac5f87cf01489d810139bd7ee49631a5d33 (diff) | |
download | emacs-69629cf3883882a1df843968b189e019117f3e02.tar.gz |
(display_text_line): Handle redisplay_end_trigger
before getting the face of the next character. Reset next_face_change.
Diffstat (limited to 'src')
-rw-r--r-- | src/xdisp.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 2d1b7d4c840..ead4b78f8a0 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -2711,19 +2711,10 @@ display_text_line (w, start, vpos, hpos, taboffset) break; } -#ifdef HAVE_FACES - /* Did we hit a face change? Figure out what face we should - use now. We also hit this the first time through the - loop, to see what face we should start with. */ - if (pos >= next_face_change && (FRAME_WINDOW_P (f))) - current_face = compute_char_face (f, w, pos, - region_beg, region_end, - &next_face_change, pos + 50, 0); -#endif - /* Figure out where (if at all) the redisplay_end_trigger-hook should run. */ - if (MARKERP (w->redisplay_end_trigger)) + if (MARKERP (w->redisplay_end_trigger) + && XMARKER (w->redisplay_end_trigger)->buffer != 0) e_t_h = marker_position (w->redisplay_end_trigger); else if (INTEGERP (w->redisplay_end_trigger)) e_t_h = XINT (w->redisplay_end_trigger); @@ -2737,8 +2728,20 @@ display_text_line (w, start, vpos, hpos, taboffset) Frun_hooks (1, &Qredisplay_end_trigger_hook); w->redisplay_end_trigger = Qnil; e_t_h = ZV; + /* Notice if it changed the face of this character. */ + next_face_change = pos; } +#ifdef HAVE_FACES + /* Did we hit a face change? Figure out what face we should + use now. We also hit this the first time through the + loop, to see what face we should start with. */ + if (pos >= next_face_change && (FRAME_WINDOW_P (f))) + current_face = compute_char_face (f, w, pos, + region_beg, region_end, + &next_face_change, pos + 50, 0); +#endif + /* Compute the next place we need to stop and do something special; set PAUSE. */ |