summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xdisp.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 9c9dbe878a6..d21e1db5d41 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -2953,8 +2953,20 @@ display_mode_line (w)
w->column_number_displayed = Qnil;
get_display_line (f, vpos, left);
- display_mode_element (w, vpos, left, 0, right, right,
- current_buffer->mode_line_format);
+#ifdef MULTI_PERDISPLAY
+ {
+ /* Sigh, mode-line-format can reference display-local variables like
+ defining-kbd-macro. Use the one associated with the frame we're
+ updating. */
+ PERDISPLAY *orig_perdisplay = current_perdisplay;
+ current_perdisplay = get_perdisplay (f);
+#endif
+ display_mode_element (w, vpos, left, 0, right, right,
+ current_buffer->mode_line_format);
+#ifdef MULTI_PERDISPLAY
+ current_perdisplay = orig_perdisplay;
+ }
+#endif
FRAME_DESIRED_GLYPHS (f)->bufp[vpos] = 0;
/* Make the mode line inverse video if the entire line