diff options
Diffstat (limited to 'src/emacs.c')
-rw-r--r-- | src/emacs.c | 78 |
1 files changed, 43 insertions, 35 deletions
diff --git a/src/emacs.c b/src/emacs.c index 95168a39a86..d990e1a6158 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -58,6 +58,7 @@ Boston, MA 02110-1301, USA. */ #include "blockinput.h" #include "syssignal.h" #include "process.h" +#include "frame.h" #include "termhooks.h" #include "keyboard.h" #include "keymap.h" @@ -134,8 +135,8 @@ Lisp_Object Vinstallation_directory; /* Hook run by `kill-emacs' before it does really anything. */ Lisp_Object Vkill_emacs_hook; -/* An empty lisp string. To avoid having to build any other. */ -Lisp_Object empty_string; +/* Empty lisp strings. To avoid having to build any others. */ +Lisp_Object empty_unibyte_string, empty_multibyte_string; /* Search path separator. */ Lisp_Object Vpath_separator; @@ -215,7 +216,7 @@ static unsigned long heap_bss_diff; #ifdef HAVE_WINDOW_SYSTEM -extern Lisp_Object Vwindow_system; +extern Lisp_Object Vinitial_window_system; #endif /* HAVE_WINDOW_SYSTEM */ extern Lisp_Object Vauto_save_list_file_name; @@ -281,9 +282,8 @@ Initialization options:\n\ Action options:\n\ \n\ FILE visit FILE using find-file\n\ -+LINE FILE visit FILE using find-file, then go to line LINE\n\ -+LINE:COLUMN FILE visit FILE using find-file, then go to line LINE,\n\ - column COLUMN\n\ ++LINE go to line LINE in next FILE\n\ ++LINE:COLUMN go to line LINE, column COLUMN, in next FILE\n\ --directory, -L DIR add DIR to variable load-path\n\ --eval EXPR evaluate Emacs Lisp expression EXPR\n\ --execute EXPR evaluate Emacs Lisp expression EXPR\n\ @@ -354,7 +354,7 @@ int fatal_error_in_progress; void (*fatal_error_signal_hook) P_ ((void)); #ifdef HAVE_GTK_AND_PTHREAD -/* When compiled with GTK and running under Gnome, multiple threads meay be +/* When compiled with GTK and running under Gnome, multiple threads may be created. Keep track of our main thread to make sure signals are delivered to it (see syssignal.h). */ @@ -857,17 +857,23 @@ main (argc, argv So ignore --version otherwise. */ && initialized) { - Lisp_Object tem; + Lisp_Object tem, tem2; tem = Fsymbol_value (intern ("emacs-version")); + tem2 = Fsymbol_value (intern ("emacs-copyright")); if (!STRINGP (tem)) { fprintf (stderr, "Invalid value of `emacs-version'\n"); exit (1); } + if (!STRINGP (tem2)) + { + fprintf (stderr, "Invalid value of `emacs-copyright'\n"); + exit (1); + } else { printf ("GNU Emacs %s\n", SDATA (tem)); - printf ("Copyright (C) 2008 Free Software Foundation, Inc.\n"); + printf ("%s\n", SDATA(tem2)); printf ("GNU Emacs comes with ABSOLUTELY NO WARRANTY.\n"); printf ("You may redistribute copies of Emacs\n"); printf ("under the terms of the GNU General Public License.\n"); @@ -1292,6 +1298,9 @@ main (argc, argv faces, and the face implementation uses some symbols as face names. */ syms_of_xfaces (); + /* XXX syms_of_keyboard uses some symbols in keymap.c. It would + be better to arrange things not to have this dependency. */ + syms_of_keymap (); /* Call syms_of_keyboard before init_window_once because keyboard sets up symbols that include some face names that the X support will want to use. This can happen when @@ -1489,10 +1498,10 @@ main (argc, argv /* egetenv is a pretty low-level facility, which may get called in many circumstances; it seems flimsy to put off initializing it until calling init_callproc. */ - set_process_environment (); + set_initial_environment (); /* AIX crashes are reported in system versions 3.2.3 and 3.2.4 - if this is not done. Do it after set_process_environment so that we - don't pollute Vprocess_environment. */ + if this is not done. Do it after set_global_environment so that we + don't pollute Vglobal_environment. */ /* Setting LANG here will defeat the startup locale processing... */ #ifdef AIX3_2 putenv ("LANG=C"); @@ -1535,7 +1544,6 @@ main (argc, argv syms_of_fns (); syms_of_floatfns (); - syms_of_abbrev (); syms_of_buffer (); syms_of_bytecode (); syms_of_callint (); @@ -1563,7 +1571,7 @@ main (argc, argv #endif /* CLASH_DETECTION */ syms_of_indent (); syms_of_insdel (); - syms_of_keymap (); + /* syms_of_keymap (); */ syms_of_macros (); syms_of_marker (); syms_of_minibuf (); @@ -1574,6 +1582,7 @@ main (argc, argv syms_of_frame (); #endif syms_of_syntax (); + syms_of_terminal (); syms_of_term (); syms_of_undo (); #ifdef HAVE_SOUND @@ -1631,6 +1640,10 @@ main (argc, argv syms_of_fontset (); #endif /* MAC_OSX && HAVE_CARBON */ +#ifdef HAVE_DBUS + syms_of_dbusbind (); +#endif /* HAVE_DBUS */ + #ifdef SYMS_SYSTEM SYMS_SYSTEM; #endif @@ -1658,13 +1671,8 @@ main (argc, argv #endif /* HAVE_NTGUI */ } - if (!noninteractive) - { -#ifdef VMS - init_vms_input ();/* init_display calls get_frame_size, that needs this. */ -#endif /* VMS */ - init_display (); /* Determine terminal type. init_sys_modes uses results. */ - } + init_editfns (); /* init_process uses Voperating_system_release. */ + init_process (); /* init_display uses add_keyboard_wait_descriptor. */ #ifndef MAC_OS8 /* Called before init_window_once for Mac OS Classic. */ init_keyboard (); /* This too must precede init_sys_modes. */ @@ -1672,7 +1680,13 @@ main (argc, argv #ifdef VMS init_vmsproc (); /* And this too. */ #endif /* VMS */ - init_sys_modes (); /* Init system terminal modes (RAW or CBREAK, etc.). */ + if (!noninteractive) + { +#ifdef VMS + init_vms_input ();/* init_display calls get_tty_size, that needs this. */ +#endif /* VMS */ + init_display (); /* Determine terminal type. Calls init_sys_modes. */ + } init_fns (); init_xdisp (); #ifdef HAVE_WINDOW_SYSTEM @@ -1680,12 +1694,10 @@ main (argc, argv init_image (); #endif /* HAVE_WINDOW_SYSTEM */ init_macros (); - init_editfns (); init_floatfns (); #ifdef VMS init_vmsfns (); #endif /* VMS */ - init_process (); #ifdef HAVE_SOUND init_sound (); #endif @@ -2099,15 +2111,14 @@ shut_down_emacs (sig, no_x, stuff) if (EMACS_GET_TTY_PGRP (0, &tpgrp) != -1 && tpgrp == pgrp) { - fflush (stdout); - reset_sys_modes (); + reset_all_sys_modes (); if (sig && sig != SIGTERM) fprintf (stderr, "Fatal error (%d)", sig); } } #else fflush (stdout); - reset_sys_modes (); + reset_all_sys_modes (); #endif stuff_buffered_input (stuff); @@ -2129,9 +2140,9 @@ shut_down_emacs (sig, no_x, stuff) #if 0 /* This triggers a bug in XCloseDisplay and is not needed. */ #ifdef HAVE_X_WINDOWS /* It's not safe to call intern here. Maybe we are crashing. */ - if (!noninteractive && SYMBOLP (Vwindow_system) - && SCHARS (SYMBOL_NAME (Vwindow_system)) == 1 - && SREF (SYMBOL_NAME (Vwindow_system), 0) == 'x' + if (!noninteractive && SYMBOLP (Vinitial_window_system) + && SCHARS (SYMBOL_NAME (Vinitial_window_system)) == 1 + && SREF (SYMBOL_NAME (Vinitial_window_system), 0) == 'x' && ! no_x) Fx_close_current_connection (); #endif /* HAVE_X_WINDOWS */ @@ -2222,10 +2233,10 @@ You must run Emacs in batch mode in order to dump it. */) { fprintf (stderr, "**************************************************\n"); fprintf (stderr, "Warning: Your system has a gap between BSS and the\n"); - fprintf (stderr, "heap (%lu byte). This usually means that exec-shield\n", + fprintf (stderr, "heap (%lu bytes). This usually means that exec-shield\n", heap_bss_diff); fprintf (stderr, "or something similar is in effect. The dump may\n"); - fprintf (stderr, "fail because of this. See the section about \n"); + fprintf (stderr, "fail because of this. See the section about\n"); fprintf (stderr, "exec-shield in etc/PROBLEMS for more information.\n"); fprintf (stderr, "**************************************************\n"); } @@ -2477,9 +2488,6 @@ see `kill-emacs-query-functions' instead. The hook is not run in batch mode, i.e., if `noninteractive' is non-nil. */); Vkill_emacs_hook = Qnil; - empty_string = build_string (""); - staticpro (&empty_string); - DEFVAR_INT ("emacs-priority", &emacs_priority, doc: /* Priority for Emacs to run at. This value is effective only if set before Emacs is dumped, |