Commit 07048183 authored by Eli Zaretskii's avatar Eli Zaretskii

Allow the fringe face to be remapped locally in a buffer

* src/fringe.c (draw_window_fringes): Switch to window's
buffer to get the local value of face-remapping-alist, if
necessary.  (Bug#33244)
* src/xfaces.c (syms_of_xfaces) <Qface_remapping_alist>: New
DEFSYM.
parent 4a344bca
......@@ -909,6 +909,12 @@ draw_window_fringes (struct window *w, bool no_fringe_p)
if (w->pseudo_window_p)
return updated_p;
/* We must switch to the window's buffer to use its local value of
the fringe face, in case it's been remapped in face-remapping-alist. */
Lisp_Object window_buffer = w->contents;
struct buffer *oldbuf = current_buffer;
set_buffer_internal_1 (XBUFFER (window_buffer));
/* Must draw line if no fringe */
if (no_fringe_p
&& (WINDOW_LEFT_FRINGE_WIDTH (w) == 0
......@@ -926,6 +932,8 @@ draw_window_fringes (struct window *w, bool no_fringe_p)
updated_p = 1;
}
set_buffer_internal_1 (oldbuf);
return updated_p;
}
......
......@@ -6755,6 +6755,7 @@ Because Emacs normally only redraws screen areas when the underlying
buffer contents change, you may need to call `redraw-display' after
changing this variable for it to take effect. */);
Vface_remapping_alist = Qnil;
DEFSYM (Qface_remapping_alist,"face-remapping-alist");
DEFVAR_LISP ("face-font-rescale-alist", Vface_font_rescale_alist,
doc: /* Alist of fonts vs the rescaling factors.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment