changeset 8975:e8a4c71251cb

(Fmessage_box): Renamed from Fbox_message. (Fbox_message): New function to print a message in a dialog box. (Fmessage_or_box): New function that choose whether to print a message in a dialog or in the echo area.
author Richard M. Stallman <rms@gnu.org>
date Wed, 21 Sep 1994 18:54:05 +0000
parents 0d7b32820221
children 2ddf9526b8b8
files src/editfns.c
diffstat 1 files changed, 82 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/editfns.c	Wed Sep 21 18:42:05 1994 +0000
+++ b/src/editfns.c	Wed Sep 21 18:54:05 1994 +0000
@@ -1429,6 +1429,86 @@
     }
 }
 
+DEFUN ("message-box", Fmessage_box, Smessage_box, 1, MANY, 0,
+  "Display a message, in a dialog box if possible.\n\
+If a dialog box is not available, use the echo area.\n\
+The first argument is a control string.\n\
+It may contain %s or %d or %c to print successive following arguments.\n\
+%s means print an argument as a string, %d means print as number in decimal,\n\
+%c means print a number as a single character.\n\
+The argument used by %s must be a string or a symbol;\n\
+the argument used by %d or %c must be a number.\n\
+If the first argument is nil, clear any existing message; let the\n\
+minibuffer contents show.")
+  (nargs, args)
+     int nargs;
+     Lisp_Object *args;
+{
+  if (NILP (args[0]))
+    {
+      message (0);
+      return Qnil;
+    }
+  else
+    {
+      register Lisp_Object val;
+      val = Fformat (nargs, args);
+#ifdef HAVE_X_MENU
+      {
+	Lisp_Object pane, menu, obj;
+	struct gcpro gcpro1;
+	pane = Fcons (Fcons (build_string ("OK"), Qt), Qnil);
+	GCPRO1 (pane);
+	menu = Fcons (val, pane);
+	obj = Fx_popup_dialog (Qt, menu);
+	UNGCPRO;
+	return val;
+      }
+#else
+      /* Copy the data so that it won't move when we GC.  */
+      if (! message_text)
+	{
+	  message_text = (char *)xmalloc (80);
+	  message_length = 80;
+	}
+      if (XSTRING (val)->size > message_length)
+	{
+	  message_length = XSTRING (val)->size;
+	  message_text = (char *)xrealloc (message_text, message_length);
+	}
+      bcopy (XSTRING (val)->data, message_text, XSTRING (val)->size);
+      message2 (message_text, XSTRING (val)->size);
+      return val;
+#endif
+    }
+}
+#ifdef HAVE_X_MENU
+extern Lisp_Object last_nonmenu_event;
+#endif
+DEFUN ("message-or-box", Fmessage_or_box, Smessage_or_box, 1, MANY, 0,
+  "Display a message in a dialog box or in the echo area.\n\
+If this command was invoked with the mouse, use a dialog box.\n\
+Otherwise, use the echo area.\n\
+\n\
+The first argument is a control string.\n\
+It may contain %s or %d or %c to print successive following arguments.\n\
+%s means print an argument as a string, %d means print as number in decimal,\n\
+%c means print a number as a single character.\n\
+The argument used by %s must be a string or a symbol;\n\
+the argument used by %d or %c must be a number.\n\
+If the first argument is nil, clear any existing message; let the\n\
+minibuffer contents show.")
+  (nargs, args)
+     int nargs;
+     Lisp_Object *args;
+{
+#ifdef HAVE_X_MENU
+  if (NILP (last_nonmenu_event) || CONSP (last_nonmenu_event))
+    return Fbox_message (nargs, args);
+#endif
+  return Fmessage (nargs, args);
+}
+
 DEFUN ("format", Fformat, Sformat, 1, MANY, 0,
   "Format a string out of a control-string and arguments.\n\
 The first argument is a control string.\n\
@@ -2014,6 +2094,8 @@
   defsubr (&Scurrent_time_zone);
   defsubr (&Ssystem_name);
   defsubr (&Smessage);
+  defsubr (&Smessage_box);
+  defsubr (&Smessage_or_box);
   defsubr (&Sformat);
 
   defsubr (&Sinsert_buffer_substring);