# HG changeset patch # User Gerd Moellmann # Date 937221239 0 # Node ID 1223d6401ab2bf878c6388111cc936e6755e5a90 # Parent 70c6d3f2f3b9f38cc0d526fa0633a6be18e1b6c7 (QCfile): Move here from xfns.c. (syms_of_xdisp): Initialize it. (message2_nolog): Change for Lisp_Object selected_frame. (message3_nolog, message_with_string, message, setup_echo_area_for_printing, truncate_echo_area, prepare_menu_bars, redisplay_internal, Fdump_tool_bar_row): Ditto. diff -r 70c6d3f2f3b9 -r 1223d6401ab2 src/xdisp.c --- a/src/xdisp.c Mon Sep 13 11:13:55 1999 +0000 +++ b/src/xdisp.c Mon Sep 13 11:13:59 1999 +0000 @@ -219,7 +219,7 @@ Lisp_Object Qwindow_scroll_functions, Vwindow_scroll_functions; Lisp_Object Qredisplay_end_trigger_functions; Lisp_Object Qinhibit_point_motion_hooks; -Lisp_Object QCeval, Qwhen; +Lisp_Object QCeval, Qwhen, QCfile; Lisp_Object Qfontified; /* Functions called to fontify regions of text. */ @@ -4808,6 +4808,7 @@ char *m; int len; { + struct frame *sf = SELECTED_FRAME (); message_enable_multibyte = multibyte; if (noninteractive) @@ -4825,19 +4826,19 @@ initialized yet. Error messages get reported properly by cmd_error, so this must be just an informative message; toss it. */ else if (INTERACTIVE - && selected_frame->glyphs_initialized_p - && FRAME_MESSAGE_BUF (selected_frame)) + && sf->glyphs_initialized_p + && FRAME_MESSAGE_BUF (sf)) { Lisp_Object mini_window; struct frame *f; /* Get the frame containing the mini-buffer that the selected frame is using. */ - mini_window = FRAME_MINIBUF_WINDOW (selected_frame); + mini_window = FRAME_MINIBUF_WINDOW (sf); f = XFRAME (WINDOW_FRAME (XWINDOW (mini_window))); FRAME_SAMPLE_VISIBILITY (f); - if (FRAME_VISIBLE_P (selected_frame) + if (FRAME_VISIBLE_P (sf) && ! FRAME_VISIBLE_P (f)) Fmake_frame_visible (WINDOW_FRAME (XWINDOW (mini_window))); @@ -4891,6 +4892,7 @@ Lisp_Object m; int nbytes, multibyte; { + struct frame *sf = SELECTED_FRAME (); message_enable_multibyte = multibyte; if (noninteractive) @@ -4908,8 +4910,8 @@ initialized yet. Error messages get reported properly by cmd_error, so this must be just an informative message; toss it. */ else if (INTERACTIVE - && selected_frame->glyphs_initialized_p - && FRAME_MESSAGE_BUF (selected_frame)) + && sf->glyphs_initialized_p + && FRAME_MESSAGE_BUF (sf)) { Lisp_Object mini_window; Lisp_Object frame; @@ -4917,12 +4919,12 @@ /* Get the frame containing the mini-buffer that the selected frame is using. */ - mini_window = FRAME_MINIBUF_WINDOW (selected_frame); + mini_window = FRAME_MINIBUF_WINDOW (sf); frame = XWINDOW (mini_window)->frame; f = XFRAME (frame); FRAME_SAMPLE_VISIBILITY (f); - if (FRAME_VISIBLE_P (selected_frame) + if (FRAME_VISIBLE_P (sf) && !FRAME_VISIBLE_P (f)) Fmake_frame_visible (frame); @@ -4997,11 +4999,11 @@ It may be larger than the selected frame, so we need to use its buffer, not the selected frame's buffer. */ Lisp_Object mini_window; - FRAME_PTR f; + struct frame *f, *sf = SELECTED_FRAME (); /* Get the frame containing the minibuffer that the selected frame is using. */ - mini_window = FRAME_MINIBUF_WINDOW (selected_frame); + mini_window = FRAME_MINIBUF_WINDOW (sf); f = XFRAME (WINDOW_FRAME (XWINDOW (mini_window))); /* A null message buffer means that the frame hasn't really been @@ -5059,11 +5061,11 @@ on. It may be larger than the selected frame, so we need to use its buffer, not the selected frame's buffer. */ Lisp_Object mini_window; - struct frame *f; + struct frame *f, *sf = SELECTED_FRAME (); /* Get the frame containing the mini-buffer that the selected frame is using. */ - mini_window = FRAME_MINIBUF_WINDOW (selected_frame); + mini_window = FRAME_MINIBUF_WINDOW (sf); f = XFRAME (WINDOW_FRAME (XWINDOW (mini_window))); /* A null message buffer means that the frame hasn't really been @@ -5344,8 +5346,9 @@ /* Raise the frame containing the echo area. */ if (minibuffer_auto_raise) { + struct frame *sf = SELECTED_FRAME (); Lisp_Object mini_window; - mini_window = FRAME_MINIBUF_WINDOW (selected_frame); + mini_window = FRAME_MINIBUF_WINDOW (sf); Fraise_frame (WINDOW_FRAME (XWINDOW (mini_window))); } @@ -5619,9 +5622,12 @@ cmd_error, so this must be just an informative message; toss it. */ else if (!noninteractive && INTERACTIVE - && FRAME_MESSAGE_BUF (selected_frame) && !NILP (echo_area_buffer[0])) - with_echo_area_buffer (0, 0, (int (*) ()) truncate_message_1, nchars); + { + struct frame *sf = SELECTED_FRAME (); + if (FRAME_MESSAGE_BUF (sf)) + with_echo_area_buffer (0, 0, (int (*) ()) truncate_message_1, nchars); + } } @@ -5794,8 +5800,8 @@ } -/* Redisplay the echo area of selected_frame. If UPDATE_FRAME_P is - non-zero update selected_frame. Value is non-zero if the +/* Redisplay the echo area of the selected frame. If UPDATE_FRAME_P + is non-zero update selected_frame. Value is non-zero if the mini-windows height has been changed. */ static int @@ -5806,8 +5812,9 @@ struct window *w; struct frame *f; int window_height_changed_p = 0; - - mini_window = FRAME_MINIBUF_WINDOW (selected_frame); + struct frame *sf = SELECTED_FRAME (); + + mini_window = FRAME_MINIBUF_WINDOW (sf); w = XWINDOW (mini_window); f = XFRAME (WINDOW_FRAME (w)); @@ -5819,7 +5826,7 @@ frame, even if we run under a window system. If we let this through, a message would be displayed on the terminal. */ #ifdef HAVE_WINDOW_SYSTEM - if (!inhibit_window_system && !FRAME_WINDOW_P (selected_frame)) + if (!inhibit_window_system && !FRAME_WINDOW_P (sf)) return 0; #endif /* HAVE_WINDOW_SYSTEM */ @@ -6107,9 +6114,10 @@ } else { - update_menu_bar (selected_frame, 1); + struct frame *sf = SELECTED_FRAME (); + update_menu_bar (sf, 1); #ifdef HAVE_WINDOW_SYSTEM - update_tool_bar (selected_frame, 1); + update_tool_bar (sf, 1); #endif } @@ -6933,6 +6941,7 @@ struct text_pos tlbufpos, tlendpos; int number_of_visible_frames; int count; + struct frame *sf = SELECTED_FRAME (); /* Non-zero means redisplay has to consider all windows on all frames. Zero means, only selected_window is considered. */ @@ -6986,17 +6995,17 @@ fonts_changed_p = 0; } - if (! FRAME_WINDOW_P (selected_frame) - && previous_terminal_frame != selected_frame) + if (! FRAME_WINDOW_P (sf) + && previous_terminal_frame != sf) { /* Since frames on an ASCII terminal share the same display area, displaying a different frame means redisplay the whole thing. */ windows_or_buffers_changed++; - SET_FRAME_GARBAGED (selected_frame); - XSETFRAME (Vterminal_frame, selected_frame); - } - previous_terminal_frame = selected_frame; + SET_FRAME_GARBAGED (sf); + XSETFRAME (Vterminal_frame, sf); + } + previous_terminal_frame = sf; /* Set the visible flags for all frames. Do this before checking for resized or garbaged frames; they want to know if their frames @@ -7350,7 +7359,7 @@ FOR_EACH_FRAME (tail, frame) { struct frame *f = XFRAME (frame); - if (FRAME_WINDOW_P (f) || f == selected_frame) + if (FRAME_WINDOW_P (f) || f == sf) { /* Mark all the scroll bars to be removed; we'll redeem the ones we want when we redisplay their windows. */ @@ -7367,8 +7376,8 @@ } } } - else if (FRAME_VISIBLE_P (selected_frame) - && !FRAME_OBSCURED_P (selected_frame)) + else if (FRAME_VISIBLE_P (sf) + && !FRAME_OBSCURED_P (sf)) redisplay_window (selected_window, 1); @@ -7403,7 +7412,7 @@ f = XFRAME (XCAR (tail)); if ((FRAME_WINDOW_P (f) - || f == selected_frame) + || f == sf) && FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f) && hscroll_windows (f->root_window)) @@ -7420,7 +7429,7 @@ f = XFRAME (XCAR (tail)); - if ((FRAME_WINDOW_P (f) || f == selected_frame) + if ((FRAME_WINDOW_P (f) || f == sf) && FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f)) { /* Mark all windows as to be updated. */ @@ -7437,14 +7446,14 @@ } else { - if (FRAME_VISIBLE_P (selected_frame) - && !FRAME_OBSCURED_P (selected_frame)) + if (FRAME_VISIBLE_P (sf) + && !FRAME_OBSCURED_P (sf)) { if (hscroll_windows (selected_window)) goto retry; XWINDOW (selected_window)->must_be_updated_p = 1; - pause = update_frame (selected_frame, 0, 0); + pause = update_frame (sf, 0, 0); } else pause = 0; @@ -7458,10 +7467,10 @@ Lisp_Object mini_window; struct frame *mini_frame; - mini_window = FRAME_MINIBUF_WINDOW (selected_frame); + mini_window = FRAME_MINIBUF_WINDOW (sf); mini_frame = XFRAME (WINDOW_FRAME (XWINDOW (mini_window))); - if (mini_frame != selected_frame && FRAME_WINDOW_P (mini_frame)) + if (mini_frame != sf && FRAME_WINDOW_P (mini_frame)) { XWINDOW (mini_window)->must_be_updated_p = 1; pause |= update_frame (mini_frame, 0, 0); @@ -7506,7 +7515,7 @@ BUF_END_UNCHANGED (b) = BUF_Z (b) - BUF_GPT (b); if (consider_all_windows_p) - mark_window_display_accurate (FRAME_ROOT_WINDOW (selected_frame), 1); + mark_window_display_accurate (FRAME_ROOT_WINDOW (sf), 1); else { XSETFASTINT (w->last_point, BUF_PT (b)); @@ -7535,7 +7544,7 @@ last_arrow_position = COERCE_MARKER (Voverlay_arrow_position); last_arrow_string = Voverlay_arrow_string; if (frame_up_to_date_hook != 0) - (*frame_up_to_date_hook) (selected_frame); + (*frame_up_to_date_hook) (sf); w->current_matrix->buffer = b; w->current_matrix->begv = BUF_BEGV (b); @@ -10437,7 +10446,8 @@ 0, 0, "", "") () { - struct glyph_matrix *m = (XWINDOW (selected_frame->tool_bar_window) + struct frame *sf = SELECTED_FRAME (); + struct glyph_matrix *m = (XWINDOW (sf->tool_bar_window) ->current_matrix); dump_glyph_row (m, 0, 1); return Qnil; @@ -12615,6 +12625,8 @@ QCeval = intern (":eval"); staticpro (&QCeval); Qwhen = intern ("when"); + QCfile = intern (":file"); + staticpro (&QCfile); staticpro (&Qwhen); Qfontified = intern ("fontified"); staticpro (&Qfontified);