changeset 5658:4e3a6baa4750

(display_menu_bar): Add USE_X_TOOLKIT conditional. (redisplay_window) [USE_X_TOOLKIT]: Test FRAME_EXTERNAL_MENU_BAR. (update_menu_bar) [USE_X_TOOLKIT]: Call set_frame_menubar. (truncate_echo_area): New function. (decode_mode_spec) [MSDOS]: Let 't' expand to 'T' for text mode or 'B' for binary mode. (decode_mode_spec) [not subprocesses]: Don't access Fprocess_status.
author Richard M. Stallman <rms@gnu.org>
date Fri, 21 Jan 1994 20:54:57 +0000
parents ac0f9da25111
children 32a02ab40d58
files src/xdisp.c
diffstat 1 files changed, 40 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Fri Jan 21 20:43:07 1994 +0000
+++ b/src/xdisp.c	Fri Jan 21 20:54:57 1994 +0000
@@ -1,5 +1,5 @@
 /* Display generation from window structure and buffer text.
-   Copyright (C) 1985, 1986, 1987, 1988, 1993 Free Software Foundation, Inc.
+   Copyright (C) 1985, 86, 87, 88, 93, 94 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -35,6 +35,10 @@
 #include "termhooks.h"
 #include "intervals.h"
 
+#ifdef USE_X_TOOLKIT
+extern void set_frame_menubar ();
+#endif
+
 extern int interrupt_input;
 extern int command_loop_level;
 
@@ -283,6 +287,20 @@
     }
 }
 
+/* Truncate what will be displayed in the echo area
+   the next time we display it--but don't redisplay it now.  */
+
+void
+truncate_echo_area (len)
+     int len;
+{
+  /* A null message buffer means that the frame hasn't really been
+     initialized yet.  Error messages get reported properly by
+     cmd_error, so this must be just an informative message; toss it.  */
+  if (!noninteractive && INTERACTIVE && FRAME_MESSAGE_BUF (selected_frame))
+    echo_area_glyphs_length = len;
+}
+
 /* Nonzero if FRAME_MESSAGE_BUF (selected_frame) is being used by print;
    zero if being used by message.  */
 int message_buf_print;
@@ -948,6 +966,9 @@
 	  current_buffer = XBUFFER (w->buffer);
 	  FRAME_MENU_BAR_ITEMS (f) = menu_bar_items ();
 	  current_buffer = prev;
+#ifdef USE_X_TOOLKIT
+	  set_frame_menubar (f);
+#endif /* USE_X_TOOLKIT */
 	}
     }
 }
@@ -1263,7 +1284,11 @@
 
   /* When we reach a frame's selected window, redo the frame's menu bar.  */
   if (!NILP (w->update_mode_line)
+#ifdef USE_X_TOOLKIT
+      && FRAME_EXTERNAL_MENU_BAR (f) 
+#else
       && FRAME_MENU_BAR_LINES (f) > 0
+#endif
       && EQ (FRAME_SELECTED_WINDOW (f), window))
     display_menu_bar (w);
 
@@ -2349,6 +2374,7 @@
   int maxendcol = FRAME_WIDTH (f);
   int hpos = 0;
 
+#ifndef USE_X_TOOLKIT
   if (FRAME_MENU_BAR_LINES (f) <= 0)
     return;
 
@@ -2388,6 +2414,7 @@
   vpos++;
   while (vpos < FRAME_MENU_BAR_LINES (f))
     get_display_line (f, vpos++, 0);
+#endif /* not USE_X_TOOLKIT */
 }
 
 /* Display the mode line for window w */
@@ -2805,9 +2832,21 @@
       obj = Fget_buffer_process (Fcurrent_buffer ());
       if (NILP (obj))
 	return "no process";
+#ifdef subprocesses
       obj = Fsymbol_name (Fprocess_status (obj));
+#endif
       break;
 
+    case 't':			/* indicate TEXT or BINARY */
+#ifdef MSDOS
+      decode_mode_spec_buf[0]
+	= NILP (current_buffer->buffer_file_type) ? "T" : "B";
+      decode_mode_spec_buf[1] = 0;
+      return decode_mode_spec_buf;
+#else /* not MSDOS */
+      return "T";
+#endif /* not MSDOS */
+
     case 'p':
       {
 	int pos = marker_position (w->start);