You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
#include <config.h>
t means infinite. nil means don't log at all. */
Lisp_Object Vmessage_log_max;
\f
+/* Output a newline in the *Messages* buffer if "needs" one. */
+
void
message_log_maybe_newline ()
{
}
}
-
/* We are at the end of the buffer after just having inserted a newline.
(Note: We depend on the fact we won't be crossing the gap.)
Check to see if the most recent message looks a lot like the previous one.
}
return 0;
}
-
+\f
/* Display an echo area message M with a specified length of LEN chars.
- The string may include null characters. If m is 0, clear out any
+ The string may include null characters. If M is 0, clear out any
existing message, and let the minibuffer text show through.
- Do not pass text that is stored in a Lisp string. */
+
+ The buffer M must continue to exist until after the echo area
+ gets cleared or some other message gets displayed there.
+
+ Do not pass text that is stored in a Lisp string.
+ Do not pass text in a buffer that was alloca'd. */
void
message2 (m, len)
}
-/* The non-logging part of that function. */
+/* The non-logging counterpart of message2. */
void
message2_nolog (m, len)
(*frame_up_to_date_hook) (f);
}
}
+\f
+/* Display a null-terminated echo area message M. If M is 0, clear out any
+ existing message, and let the minibuffer text show through.
+
+ The buffer M must continue to exist until after the echo area
+ gets cleared or some other message gets displayed there.
+
+ Do not pass text that is stored in a Lisp string.
+ Do not pass text in a buffer that was alloca'd. */
void
message1 (m)
zero if being used by message. */
int message_buf_print;
-/* Dump an informative message to the minibuf. If m is 0, clear out
+/* Dump an informative message to the minibuf. If M is 0, clear out
any existing message, and let the minibuffer text show through. */
+
/* VARARGS 1 */
void
message (m, a1, a2, a3)
}
}
-/* The non-logging version of that function. */
+/* The non-logging version of message. */
void
message_nolog (m, a1, a2, a3)
char *m;
{
message2 (echo_area_glyphs, echo_area_glyphs_length);
}
-
+\f
static void
echo_area_display ()
{
previous_echo_glyphs = echo_area_glyphs;
}
+\f
+/* Update frame titles. */
#ifdef HAVE_WINDOW_SYSTEM
static char frame_title_buf[512];
if (noninteractive)
return;
+#ifdef USE_X_TOOLKIT
+ if (popup_activated ())
+ return;
+#endif
+
#ifdef MULTI_FRAME
if (FRAME_TERMCAP_P (selected_frame)
&& previous_terminal_frame != selected_frame)
w->window_end_valid = w->buffer;
w->update_mode_line = Qnil;
- if (!NILP (w->buffer))
+ if (!NILP (w->buffer) && flag)
XBUFFER (w->buffer)->clip_changed = 0;
if (!NILP (w->vchild))
if (update_mode_lines)
w->update_mode_line = Qt;
- if (FRAME_X_P (f)
+ if (FRAME_WINDOW_P (f)
?
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
FRAME_EXTERNAL_MENU_BAR (f)
really recompute the menubar from the value. */
if (! NILP (Vlucid_menu_bar_dirty_flag))
call0 (Qrecompute_lucid_menubar);
- call1 (Vrun_hooks, Qmenu_bar_update_hook);
+ safe_run_hooks (Qmenu_bar_update_hook);
FRAME_MENU_BAR_ITEMS (f) = menu_bar_items (FRAME_MENU_BAR_ITEMS (f));
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
- if (FRAME_X_P (f))
+ if (FRAME_WINDOW_P (f))
set_frame_menubar (f, 0, 0);
#endif /* USE_X_TOOLKIT || HAVE_NTGUI */
update_mode_line = 1;
w->update_mode_line = Qt;
if (! NILP (Vwindow_scroll_functions))
- run_hook_with_args_2 (Qwindow_scroll_functions, window,
- make_number (startp));
+ {
+ run_hook_with_args_2 (Qwindow_scroll_functions, window,
+ make_number (startp));
+ startp = marker_position (w->start);
+ }
}
XSETFASTINT (w->last_modified, 0);
if (startp < BEGV) startp = BEGV;
}
/* Handle case where text has not changed, only point,
- and it has not moved off the frame */
+ and it has not moved off the frame. */
/* This code is not used for minibuffer for the sake of
the case of redisplaying to replace an echo area message;
if (PT >= pos.bufpos)
{
if (! NILP (Vwindow_scroll_functions))
- run_hook_with_args_2 (Qwindow_scroll_functions, window,
- make_number (pos.bufpos));
+ {
+ run_hook_with_args_2 (Qwindow_scroll_functions, window,
+ make_number (pos.bufpos));
+ pos.bufpos = marker_position (w->start);
+ }
try_window (window, pos.bufpos);
if (cursor_vpos >= 0)
{
pos = *vmotion (PT, - (height / 2), w);
/* Set startp here explicitly in case that helps avoid an infinite loop
in case the window-scroll-functions functions get errors. */
- Fset_marker (w->start, make_number (pos), Qnil);
+ Fset_marker (w->start, make_number (pos.bufpos), Qnil);
if (! NILP (Vwindow_scroll_functions))
- run_hook_with_args_2 (Qwindow_scroll_functions, window,
- make_number (pos.bufpos));
+ {
+ run_hook_with_args_2 (Qwindow_scroll_functions, window,
+ make_number (pos.bufpos));
+ pos.bufpos = marker_position (w->start);
+ }
try_window (window, pos.bufpos);
startp = marker_position (w->start);
/* When we reach a frame's selected window, redo the frame's menu bar. */
if (update_mode_line
- && (FRAME_X_P (f)
+ && (FRAME_WINDOW_P (f)
?
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
FRAME_EXTERNAL_MENU_BAR (f)
case 'F':
/* %F displays the frame name. */
#ifdef MULTI_FRAME
+ if (!NILP (selected_frame->title))
+ return (char *) XSTRING (selected_frame->title)->data;
return (char *) XSTRING (selected_frame->name)->data;
#else
return "Emacs";