diff options
author | Richard M. Stallman <rms@gnu.org> | 2007-11-03 03:48:12 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2007-11-03 03:48:12 +0000 |
commit | 17d6c69d11cf3b63a39d893894d7f360615fedc2 (patch) | |
tree | 3c0d42005589e1a22f1814cd48a01f4b2f29e12b /src/xdisp.c | |
parent | 490943fe146878558e7e123b0fe7ded4b8df6384 (diff) | |
download | emacs-17d6c69d11cf3b63a39d893894d7f360615fedc2.tar.gz |
(handle_face_prop): Use face_at_buffer_position_no_overlays
to get the base face for an overlay string.
Diffstat (limited to 'src/xdisp.c')
-rw-r--r-- | src/xdisp.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index ef8c6c836aa..4e3c0445e2e 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -3367,16 +3367,31 @@ handle_face_prop (it) int base_face_id, bufpos; if (it->current.overlay_string_index >= 0) - bufpos = IT_CHARPOS (*it); + { + bufpos = IT_CHARPOS (*it); + /* For an overlay face, the base face depends + only on text properties and ignores overlays. */ + base_face_id + = face_at_buffer_position_no_overlays (it->w, + IT_CHARPOS (*it), + it->region_beg_charpos, + it->region_end_charpos, + &next_stop, + (IT_CHARPOS (*it) + + TEXT_PROP_DISTANCE_LIMIT), + 0); + } else - bufpos = 0; + { + bufpos = 0; - /* For strings from a buffer, i.e. overlay strings or strings - from a `display' property, use the face at IT's current - buffer position as the base face to merge with, so that - overlay strings appear in the same face as surrounding - text, unless they specify their own faces. */ - base_face_id = underlying_face_id (it); + /* For strings from a `display' property, use the face at + IT's current buffer position as the base face to merge + with, so that overlay strings appear in the same face as + surrounding text, unless they specify their own + faces. */ + base_face_id = underlying_face_id (it); + } new_face_id = face_at_string_position (it->w, it->string, |