#include "systime.h"
#ifdef PDUMP
-#include "dump-id.h"
#include "dumper.h"
#endif
void r_alloc_reinit (void);
# endif
+#ifdef HAVE_GTK
+void console_type_create_select_gtk(void);
+#endif
+
/* Variable whose value is symbol giving operating system type. */
Lisp_Object Vsystem_type;
Lisp_Object Vexec_path;
Lisp_Object Vexec_directory, Vconfigure_exec_directory;
Lisp_Object Vlisp_directory, Vconfigure_lisp_directory;
+Lisp_Object Vmule_lisp_directory, Vconfigure_mule_lisp_directory;
Lisp_Object Vmodule_directory, Vconfigure_module_directory;
Lisp_Object Vsite_module_directory, Vconfigure_site_module_directory;
Lisp_Object Vconfigure_package_path;
/* If nonzero, set XEmacs to run at this priority. This is also used
in child_setup and sys_suspend to make sure subshells run at normal
priority. */
-int emacs_priority;
+Fixnum emacs_priority;
/* Some FSF junk with running_asynch_code, to preserve the match
data. Not necessary because we don't call process filters
static int run_temacs_argc;
static char **run_temacs_argv;
static char *run_temacs_args;
-static size_t run_temacs_argv_size;
-static size_t run_temacs_args_size;
+static EMACS_INT run_temacs_argv_size;
+static EMACS_INT run_temacs_args_size;
static void shut_down_emacs (int sig, Lisp_Object stuff, int no_auto_save);
return 1;
}
arglen = (valptr != NULL && (p = strchr (arg, '=')) != NULL
- ? p - arg : strlen (arg));
+ ? p - arg : (int) strlen (arg));
if (lstr == 0 || arglen < minlen || strncmp (arg, lstr, arglen) != 0)
return 0;
else if (valptr == NULL)
display_use = "x";
#endif /* HAVE_X_WINDOWS */
+#ifdef HAVE_GTK
+ {
+ char *dpy = getenv ("DISPLAY");
+ if (dpy && dpy[0])
+ display_use = "gtk";
+ }
+#endif
#ifdef HAVE_MS_WINDOWS
if (strcmp(display_use, "x") != 0)
display_use = "mswindows";
so we can be fairly accurate. */
init_intl_very_early (); /* set up the locale and domain for gettext and
such. */
+#ifdef HAVE_MS_WINDOWS
+ init_mswindows_very_early (); /* Some things - like dde need to be
+ initialized early so that the
+ client doesn't give up waiting. */
+#endif
/* Now initialize the Lisp engine and the like. Done only during
dumping. No dependence on anything that may be in the user's
#ifdef HAVE_X_WINDOWS
syms_of_event_Xt ();
#endif
+#ifdef HAVE_GTK
+ syms_of_event_gtk ();
+#endif
#ifdef HAVE_DRAGNDROP
syms_of_dragdrop ();
#endif
syms_of_objects_tty ();
#endif
+#ifdef HAVE_GTK
+ syms_of_device_gtk ();
+ syms_of_frame_gtk ();
+ syms_of_glyphs_gtk ();
+ syms_of_objects_gtk ();
+ syms_of_ui_gtk ();
+ syms_of_select_gtk ();
+#ifdef HAVE_DIALOGS
+ syms_of_dialog_gtk ();
+#endif
+#ifdef HAVE_MENUBARS
+ syms_of_menubar_gtk ();
+#endif
+ syms_of_select_gtk ();
+
+#if defined (HAVE_MENUBARS) || defined(HAVE_SCROLLBARS) || defined(HAVE_DIALOGS) || defined(HAVE_TOOLBARS)
+ syms_of_gui_gtk ();
+#endif
+#endif /* HAVE_GTK */
+
#ifdef HAVE_X_WINDOWS
#ifdef HAVE_BALLOON_HELP
syms_of_balloon_x ();
console_type_create_redisplay_tty ();
#endif
+#ifdef HAVE_GTK
+ console_type_create_gtk ();
+ console_type_create_select_gtk ();
+ console_type_create_device_gtk ();
+ console_type_create_frame_gtk ();
+ console_type_create_objects_gtk ();
+ console_type_create_glyphs_gtk ();
+ console_type_create_redisplay_gtk ();
+#ifdef HAVE_MENUBARS
+ console_type_create_menubar_gtk ();
+#endif
+#ifdef HAVE_SCROLLBARS
+ console_type_create_scrollbar_gtk ();
+#endif
+#ifdef HAVE_TOOLBARS
+ console_type_create_toolbar_gtk ();
+#endif
+#ifdef HAVE_DIALOGS
+ console_type_create_dialog_gtk ();
+#endif
+#endif /* HAVE_GTK */
+
#ifdef HAVE_X_WINDOWS
console_type_create_x ();
console_type_create_device_x ();
#ifdef HAVE_MS_WINDOWS
image_instantiator_format_create_glyphs_mswindows ();
#endif /* HAVE_MSWINDOWS_WINDOWS */
+#ifdef HAVE_GTK
+ image_instantiator_format_create_glyphs_gtk ();
+#endif
/* Now initialize the lstream types and associated symbols.
Other than the first function below, the functions may
vars_of_objects_tty ();
#endif
+#ifdef HAVE_GTK
+ vars_of_device_gtk ();
+#ifdef HAVE_DIALOGS
+ vars_of_dialog_gtk ();
+#endif
+ vars_of_event_gtk ();
+ vars_of_frame_gtk ();
+ vars_of_glyphs_gtk ();
+ vars_of_ui_gtk ();
+#ifdef HAVE_MENUBARS
+ vars_of_menubar_gtk ();
+#endif
+ vars_of_objects_gtk ();
+ vars_of_select_gtk ();
+#ifdef HAVE_SCROLLBARS
+ vars_of_scrollbar_gtk ();
+#endif
+#if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS)
+ vars_of_gui_gtk ();
+#endif
+#endif /* HAVE_GTK */
+
#ifdef HAVE_X_WINDOWS
#ifdef HAVE_BALLOON_HELP
vars_of_balloon_x ();
#endif
#endif /* HAVE_X_WINDOWS */
+
#ifdef HAVE_MS_WINDOWS
vars_of_device_mswindows ();
vars_of_console_mswindows ();
*/
specifier_vars_of_glyphs ();
+ specifier_vars_of_glyphs_widget ();
specifier_vars_of_gutter ();
#ifdef HAVE_MENUBARS
specifier_vars_of_menubar ();
/* These rely on the glyphs just created in the previous function,
and call Fadd_spec_to_specifier(), which relies on various
variables initialized above. */
+#ifdef HAVE_GTK
+ complex_vars_of_glyphs_gtk ();
+#endif
#ifdef HAVE_X_WINDOWS
complex_vars_of_glyphs_x ();
#endif
#ifdef HAVE_MS_WINDOWS
reinit_console_type_create_mswindows ();
#endif
+#ifdef HAVE_GTK
+ reinit_console_type_create_gtk ();
+#endif
reinit_specifier_type_create ();
reinit_specifier_type_create_image ();
#ifdef HAVE_X_WINDOWS
reinit_vars_of_event_Xt ();
#endif
+#ifdef HAVE_GTK
+ reinit_vars_of_event_gtk ();
+#endif
#if defined(HAVE_TTY) && (defined (DEBUG_TTY_EVENT_STREAM) || !defined (HAVE_X_WINDOWS))
reinit_vars_of_event_tty ();
#endif
reinit_vars_of_frame_mswindows ();
#endif
+#ifdef HAVE_GTK
+ reinit_vars_of_menubar_gtk ();
+#endif
+
#ifdef HAVE_X_WINDOWS
reinit_vars_of_device_x ();
#ifdef HAVE_SCROLLBARS
#ifdef HAVE_MS_WINDOWS
/* If we displayed a message on the console, then we must allow the
- user to see this message. This may be unnecessary, but can't hurt,
- and we can't necessarily check arg; e.g. xemacs --help kills with
- argument 0. */
- if (mswindows_message_outputted)
+ user to see this message. This may be unnecessary, but can't
+ hurt, and we can't necessarily check arg; e.g. xemacs --help
+ kills with argument 0.
+
+ Don't do this in batch mode, it makes no sense and is more
+ annoying than useful. --andyp */
+ if (mswindows_message_outputted && !noninteractive)
Fmswindows_message_box (build_string ("Messages outputted. XEmacs is exiting."),
Qnil, Qnil);
#endif
("Your files have been auto-saved.\n"
"Use `M-x recover-session' to recover them.\n"
"\n"
- "If you have access to the PROBLEMS file that came with your\n"
- "version of XEmacs, please check to see if your crash is described\n"
- "there, as there may be a workaround available.\n"
+ "Your version of XEmacs was distributed with a PROBLEMS file that may describe\n"
+ "your crash, and with luck a workaround. Please check it first, but do report\n"
+ "the crash anyway. "
#ifdef INFODOCK
- "Otherwise, please report this bug by selecting `Report-Bug'\n"
- "in the InfoDock menu.\n"
+ "\n\nPlease report this bug by selecting `Report-Bug' in the InfoDock menu.\n"
+ "*BE SURE* to include the XEmacs configuration from M-x describe-installation,\n"
+ "or the file Installation in the top directory of the build tree.\n"
#else
- "Otherwise, please report this bug by running the send-pr\n"
- "script included with XEmacs, or selecting `Send Bug Report'\n"
- "from the help menu.\n"
- "As a last resort send ordinary email to `crashes@xemacs.org'.\n"
+ "Please report this bug by invoking M-x report-emacs-bug,\n"
+ "or by selecting `Send Bug Report' from the Help menu. If necessary, send\n"
+ "ordinary email to `crashes@xemacs.org'. *MAKE SURE* to include the XEmacs\n"
+ "configuration from M-x describe-installation, or equivalently the file\n"
+ "Installation in the top of the build tree.\n"
#endif
- "*MAKE SURE* to include the information in the command\n"
- "M-x describe-installation.\n"
#ifndef _MSC_VER
"\n"
- "If at all possible, *please* try to obtain a C stack backtrace;\n"
- "it will help us immensely in determining what went wrong.\n"
- "To do this, locate the core file that was produced as a result\n"
- "of this crash (it's usually called `core' and is located in the\n"
- "directory in which you started the editor, or maybe in your home\n"
- "directory), and type\n"
+ "*Please* try *hard* to obtain a C stack backtrace; without it, we are unlikely\n"
+ "to be able to analyze the problem. Locate the core file produced as a result\n"
+ "of this crash (often called `core' or `core.<process-id>', and located in\n"
+ "the directory in which you started XEmacs or your home directory), and type\n"
"\n"
" gdb "
#endif
stderr_out ("%s%s", dir, name);
}
stderr_out
- (" core\n\n"
- "then type `where' when the debugger prompt comes up.\n"
- "(If you don't have GDB on your system, you might have DBX,\n"
- "or XDB, or SDB. A similar procedure should work for all of\n"
- "these. Ask your system administrator if you need more help.)\n");
+ (" core\n"
+ "\n"
+ "then type `where' at the debugger prompt. No GDB on your system? You may\n"
+ "have DBX, or XDB, or SDB. (Ask your system administrator if you need help.)\n"
+ "If no core file was produced, enable them (often with `ulimit -c unlimited'\n"
+ "in case of future recurrance of the crash.\n");
#endif /* _MSC_VER */
}
/* Ben thinks this function should not exist or be exported to Lisp.
We use it to define split-path-string in subr.el (not!). */
-DEFUN ("split-string-by-char", Fsplit_string_by_char, 1, 2, 0, /*
+DEFUN ("split-string-by-char", Fsplit_string_by_char, 2, 2, 0, /*
Split STRING into a list of substrings originally separated by SEPCHAR.
*/
(string, sepchar))
Vconfigure_lisp_directory = Qnil;
#endif
+ DEFVAR_LISP ("mule-lisp-directory", &Vmule_lisp_directory /*
+*Directory of Mule Lisp files that come with XEmacs.
+*/ );
+ Vmule_lisp_directory = Qnil;
+
+ DEFVAR_LISP ("configure-mule-lisp-directory", &Vconfigure_mule_lisp_directory /*
+For internal use by the build procedure only.
+configure's idea of what `mule-lisp-directory' will be.
+*/ );
+#ifdef PATH_MULELOADSEARCH
+ Vconfigure_mule_lisp_directory = Ffile_name_as_directory
+ (build_string ((char *) PATH_MULELOADSEARCH));
+#else
+ Vconfigure_mule_lisp_directory = Qnil;
+#endif
+
DEFVAR_LISP ("module-directory", &Vmodule_directory /*
*Directory of core dynamic modules that come with XEmacs.
*/ );