(M31000): New character.
[chise/xemacs-chise.git] / src / emacs.c
index 08bfa7e..4312190 100644 (file)
@@ -36,6 +36,7 @@ Boston, MA 02111-1307, USA.  */
 #include "console.h"
 #include "process.h"
 #include "redisplay.h"
+#include "frame.h"
 #include "sysdep.h"
 
 #include "syssignal.h" /* Always include before systty.h */
@@ -155,6 +156,7 @@ Lisp_Object Vconfigure_info_directory;
 Lisp_Object Vsite_directory, Vconfigure_site_directory;
 Lisp_Object Vconfigure_info_path;
 Lisp_Object Vinternal_error_checking;
+Lisp_Object Vmail_lock_methods, Vconfigure_mail_lock_method;
 Lisp_Object Vpath_separator;
 
 /* The default base directory XEmacs is installed under. */
@@ -856,8 +858,20 @@ main_1 (int argc, char **argv, char **envp, int restart)
      We try to do things in an order that minimizes the non-obvious
      dependencies between functions. */
 
+  /* purify_flag 1 is correct even if CANNOT_DUMP.
+   * loadup.el will set to nil at end. */
+
+  purify_flag = 0;
 #ifdef PDUMP
-  initialized = restart || pdump_load ();
+  if (restart)
+    initialized = 1;
+  else {
+    initialized = pdump_load ();
+    purify_flag = !initialized;
+  }
+#else
+  if (!initialized)
+    purify_flag = 1;
 #endif
 
   if (!initialized)
@@ -1018,6 +1032,11 @@ main_1 (int argc, char **argv, char **envp, int restart)
 #if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS)
       syms_of_gui_x ();
 #endif
+#ifdef HAVE_XIM
+#ifdef XIM_XLIB
+      syms_of_input_method_xlib ();
+#endif
+#endif /* HAVE_XIM */
 #endif /* HAVE_X_WINDOWS */
 
 #ifdef HAVE_MS_WINDOWS
@@ -1088,6 +1107,10 @@ main_1 (int argc, char **argv, char **envp, int restart)
       syms_of_eldap ();
 #endif
 
+#ifdef HAVE_GPM
+         syms_of_gpmevent ();
+#endif
+
       /* Now create the subtypes for the types that have them.
         We do this before the vars_*() because more symbols
         may get initialized here. */
@@ -1483,6 +1506,10 @@ main_1 (int argc, char **argv, char **envp, int restart)
       vars_of_eldap ();
 #endif
 
+#ifdef HAVE_GPM
+         vars_of_gpmevent ();
+#endif
+
       /* Now initialize any specifier variables.  We do this later
         because it has some dependence on the vars initialized
         above.
@@ -1686,7 +1713,9 @@ main_1 (int argc, char **argv, char **envp, int restart)
       reinit_vars_of_lread ();
       reinit_vars_of_lstream ();
       reinit_vars_of_minibuf ();
+#ifdef HAVE_SHLIB
       reinit_vars_of_module ();
+#endif
       reinit_vars_of_objects ();
       reinit_vars_of_print ();
       reinit_vars_of_redisplay ();
@@ -1701,6 +1730,9 @@ main_1 (int argc, char **argv, char **envp, int restart)
 
 #ifdef HAVE_X_WINDOWS
       reinit_vars_of_device_x ();
+#endif
+#ifdef HAVE_SCROLLBARS
+      reinit_vars_of_scrollbar_x ();
 #ifdef HAVE_MENUBARS
       reinit_vars_of_menubar_x ();
 #endif
@@ -1775,6 +1807,7 @@ main_1 (int argc, char **argv, char **envp, int restart)
 
   init_redisplay ();      /* Determine terminal type.
                             init_sys_modes uses results */
+  init_frame ();
   init_event_stream (); /* Set up so we can get user input. */
   init_macros (); /* set up so we can run macros. */
   init_editfns (); /* Determine the name of the user we're running as */
@@ -2436,12 +2469,16 @@ shut_down_emacs (int sig, Lisp_Object stuff)
        ("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"
 #ifdef INFODOCK
-        "Please report this bug by selecting `Report-Bug' in the InfoDock\n"
-        "menu.\n"
+        "Otherwise, please report this bug by selecting `Report-Bug'\n"
+         "in the InfoDock menu.\n"
 #else
-        "Please report this bug by running the send-pr script included\n"
-        "with XEmacs, or selecting `Send Bug Report' from the help menu.\n"
+        "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"
 #endif
         "*MAKE SURE* to include the information in the command\n"
@@ -3057,6 +3094,46 @@ bufpos           - check buffer positions.
                                    Vinternal_error_checking);
 #endif
 
+  DEFVAR_CONST_LISP ("mail-lock-methods", &Vmail_lock_methods /*
+Mail spool locking methods supported by this instance of XEmacs.
+This is a list of symbols.  Each of the symbols is one of the
+following: dot, lockf, flock, locking, mmdf.
+*/ );
+  {
+    Vmail_lock_methods = Qnil;
+    Vmail_lock_methods = Fcons (intern ("dot"), Vmail_lock_methods);
+#ifdef HAVE_LOCKF
+    Vmail_lock_methods = Fcons (intern ("lockf"), Vmail_lock_methods);
+#endif
+#ifdef HAVE_FLOCK
+    Vmail_lock_methods = Fcons (intern ("flock"), Vmail_lock_methods);
+#endif
+#ifdef HAVE_MMDF
+    Vmail_lock_methods = Fcons (intern ("mmdf"), Vmail_lock_methods);
+#endif
+#ifdef HAVE_LOCKING
+    Vmail_lock_methods = Fcons (intern ("locking"), Vmail_lock_methods);
+#endif
+  }
+  
+  DEFVAR_CONST_LISP ("configure-mail-lock-method", &Vconfigure_mail_lock_method /*
+Mail spool locking method suggested by configure.  This is one
+of the symbols in MAIL-LOCK-METHODS.
+*/ );
+  {
+#if defined(MAIL_LOCK_FLOCK) && defined(HAVE_FLOCK)
+    Vconfigure_mail_lock_method = intern("flock");
+#elif defined(MAIL_LOCK_LOCKF) && defined(HAVE_LOCKF)
+    Vconfigure_mail_lock_method = intern("lockf");
+#elif defined(MAIL_LOCK_MMDF) && defined(HAVE_MMDF)
+    Vconfigure_mail_lock_method = intern("mmdf");
+#elif defined(MAIL_LOCK_LOCKING) && defined(HAVE_LOCKING)
+    Vconfigure_mail_lock_method = intern("locking");
+#else
+    Vconfigure_mail_lock_method = intern("dot");
+#endif
+  }
+
   DEFVAR_LISP ("path-separator", &Vpath_separator /*
 The directory separator in search paths, as a string.
 */ );