summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xdisp.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index dd243eca986..054adb9d9d9 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -23153,10 +23153,15 @@ extend_face_to_end_of_line (struct it *it)
this is called when redisplaying a non-selected window, with
point temporarily moved to window-point. */
specbind (Qinhibit_quit, Qt);
- const int extend_face_id = (it->face_id == DEFAULT_FACE_ID
- || it->s != NULL)
- ? DEFAULT_FACE_ID
- : face_at_pos (it, LFACE_EXTEND_INDEX);
+ /* The default face, possibly remapped. */
+ struct face *default_face =
+ FACE_FROM_ID_OR_NULL (f, lookup_basic_face (it->w, f, DEFAULT_FACE_ID));
+ const int extend_face_id =
+ (it->face_id == default_face->id || it->s != NULL)
+ ? it->face_id
+ : (it->glyph_row->ends_at_zv_p
+ ? default_face->id
+ : face_at_pos (it, LFACE_EXTEND_INDEX));
unbind_to (count, Qnil);
/* Face extension extends the background and box of IT->extend_face_id
@@ -23193,14 +23198,8 @@ extend_face_to_end_of_line (struct it *it)
if (!ASCII_CHAR_P (it->c))
it->face_id = FACE_FOR_CHAR (f, face, 0, -1, Qnil);
- /* The default face, possibly remapped. */
- struct face *default_face =
- FACE_FROM_ID (f, lookup_basic_face (it->w, f, DEFAULT_FACE_ID));
#ifdef HAVE_WINDOW_SYSTEM
- if (default_face == NULL)
- error ("extend_face_to_end_of_line: default_face is not set!");
-
if (FRAME_WINDOW_P (f))
{
/* If the row is empty, add a space with the current face of IT,