X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Femacs.c;h=6d0450045703d293809e6efb76b6853877aaffab;hp=980c2fb0e2d8ce932ccfb9d8b1a8dc87696df0fe;hb=ac7d0619aad74b1d57c4748ebb3ab29d9c32e3d8;hpb=82f6d62ee211b1d36e8f45fed3ee3edde82b6916 diff --git a/src/emacs.c b/src/emacs.c index 980c2fb..6d04500 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -181,7 +181,6 @@ version 18.59 released October 31, 1992. #include "systime.h" #ifdef PDUMP -#include "dump-id.h" #include "dumper.h" #endif @@ -242,6 +241,10 @@ static void *malloc_state_ptr; 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; @@ -284,6 +287,7 @@ Lisp_Object Vemacs_program_name, Vemacs_program_version; 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; @@ -304,7 +308,7 @@ Lisp_Object Vconfigure_exec_prefix_directory, Vconfigure_prefix_directory; /* 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 @@ -463,8 +467,8 @@ static JMP_BUF run_temacs_catch; 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); @@ -795,7 +799,7 @@ argmatch (char **argv, int argc, char *sstr, char *lstr, 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) @@ -1112,6 +1116,13 @@ main_1 (int argc, char **argv, char **envp, int restart) 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"; @@ -1137,6 +1148,11 @@ main_1 (int argc, char **argv, char **envp, int restart) 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 @@ -1262,6 +1278,9 @@ main_1 (int argc, char **argv, char **envp, int restart) #ifdef HAVE_X_WINDOWS syms_of_event_Xt (); #endif +#ifdef HAVE_GTK + syms_of_event_gtk (); +#endif #ifdef HAVE_DRAGNDROP syms_of_dragdrop (); #endif @@ -1337,6 +1356,26 @@ main_1 (int argc, char **argv, char **envp, int restart) 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 (); @@ -1469,6 +1508,28 @@ main_1 (int argc, char **argv, char **envp, int restart) 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 (); @@ -1571,6 +1632,9 @@ main_1 (int argc, char **argv, char **envp, int restart) #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 @@ -1773,6 +1837,28 @@ main_1 (int argc, char **argv, char **envp, int restart) 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 (); @@ -1796,6 +1882,7 @@ main_1 (int argc, char **argv, char **envp, int restart) #endif #endif /* HAVE_X_WINDOWS */ + #ifdef HAVE_MS_WINDOWS vars_of_device_mswindows (); vars_of_console_mswindows (); @@ -1869,6 +1956,7 @@ main_1 (int argc, char **argv, char **envp, int restart) */ specifier_vars_of_glyphs (); + specifier_vars_of_glyphs_widget (); specifier_vars_of_gutter (); #ifdef HAVE_MENUBARS specifier_vars_of_menubar (); @@ -1916,6 +2004,9 @@ main_1 (int argc, char **argv, char **envp, int restart) /* 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 @@ -2002,6 +2093,9 @@ main_1 (int argc, char **argv, char **envp, int restart) #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 (); @@ -2042,6 +2136,9 @@ main_1 (int argc, char **argv, char **envp, int restart) #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 @@ -2072,6 +2169,10 @@ main_1 (int argc, char **argv, char **envp, int restart) 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 @@ -2645,7 +2746,7 @@ main (int argc, char **argv, char **envp) #endif /* _SCO_DS */ vol_envp = environ; } -#ifdef RUN_TIME_REMAP +#if defined (RUN_TIME_REMAP) && ! defined (PDUMP) else /* obviously no-one uses this because where it was before initialized was *always* true */ @@ -2762,10 +2863,13 @@ all of which are called before XEmacs is actually killed. #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 @@ -2845,28 +2949,26 @@ shut_down_emacs (int sig, Lisp_Object stuff, int no_auto_save) ("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.', and located in\n" + "the directory in which you started XEmacs or your home directory), and type\n" "\n" " gdb " #endif @@ -2893,11 +2995,12 @@ shut_down_emacs (int sig, Lisp_Object stuff, int no_auto_save) 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 */ } @@ -3094,7 +3197,7 @@ decode_env_path (const char *evarname, const char *default_) /* 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)) @@ -3590,6 +3693,22 @@ configure's idea of what `lisp-directory' will be. 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. */ );