comparison src/redisplay.c @ 4477:e34711681f30

Don't determine whether to call general device-type code at startup, rather decide in the device-specific code itself. lisp/ChangeLog addition: 2008-07-07 Aidan Kehoe <kehoea@parhasard.net> Patch to make it up to the device-specific code whether various Lisp functions should be called during device creation, not relying on the startup code to decide this. Also, rename initial-window-system to initial-device-type (which makes more sense in this scheme), always set it. * startup.el (command-line): Use initial-device-type, not initial-window-system; just call #'make-device, leave the special behaviour to be done the first time a console type is initialised to be decided on by the respective console code. * x-init.el (x-app-defaults-directory): Declare that it should be bound. (x-define-dead-key): Have the macro take a DEVICE argument. (x-initialize-compose): Have the function take a DEVICE argument, and use it when checking if various keysyms are available on the keyboard. (x-initialize-keyboard): Have the function take a DEVICE argument, allowing device-specific keyboard initialisation. (make-device-early-x-entry-point-called-p): New. (make-device-late-x-entry-point-called-p): New. Rename pre-x-win-initted, x-win-initted. (make-device-early-x-entry-point): Rename init-pre-x-win, take the call to make-x-device out (it should be called from the device-creation code, not vice-versa). (make-device-late-x-entry-point): Rename init-post-x-win, have it take a DEVICE argument, use that DEVICE argument when working out what device-specific things need doing. Don't use create-console-hook in core code. * x-win-xfree86.el (x-win-init-xfree86): Take a DEVICE argument; use it. * x-win-sun.el (x-win-init-sun): Take a DEVICE argument; use it. * mule/mule-x-init.el: Remove #'init-mule-x-win, an empty function. * tty-init.el (make-device-early-tty-entry-point-called-p): New. Rename pre-tty-win-initted. (make-device-early-tty-entry-point): New. Rename init-pre-tty-win. (make-frame-after-init-entry-point): New. Rename init-post-tty-win to better reflect when it's called. * gtk-init.el (gtk-early-lisp-options-file): New. Move this path to a documented variable. (gtk-command-switch-alist): Wrap the docstring to fewer than 79 columns. (make-device-early-gtk-entry-point-called-p): New. (make-device-late-gtk-entry-point-called-p): New. Renamed gtk-pre-win-initted, gtk-post-win-initted to these. (make-device-early-gtk-entry-point): New. (make-device-late-gtk-entry-point): New. Renamed init-pre-gtk-win, init-post-gtk-win to these. Have make-device-late-gtk-entry-point take a device argument, and use it; have make-device-early-gtk-entry-point load the GTK-specific startup code, instead of doing that in C. (init-gtk-win): Deleted, functionality moved to the GTK device creation code. (gtk-define-dead-key): Have it take a DEVICE argument; use this argument. (gtk-initialize-compose): Ditto. * coding.el (set-terminal-coding-system): Correct the docstring; the function isn't broken. src/ChangeLog addition: 2008-07-07 Aidan Kehoe <kehoea@parhasard.net> Patch to make it up to the device-specific code whether various Lisp functions should be called during device creation, not relying on the startup code to decide this. Also, rename initial-window-system to initial-device-type (which makes more sense in this scheme), always set it. * redisplay.c (Vinitial_device_type): New. (Vinitial_window_system): Removed. Rename initial-window-system to initial-device type, making it a stream if we're noninteractive. Update its docstring. * device-x.c (Qmake_device_early_x_entry_point, Qmake_device_late_x_entry_point): New. Rename Qinit_pre_x_win, Qinit_post_x_win. (x_init_device): Call #'make-device-early-x-entry-point earlier, now we rely on it to find the application class and the app-defaults directory. (x_finish_init_device): Call #'make-device-late-x-entry-point with the created device. (Vx_app_defaults_directory): Always make this available, to simplify code in x-init.el. * device-tty.c (Qmake_device_early_tty_entry_point): New. Rename Qinit_pre_tty_win, rename Qinit_post_tty_win and move to frame-tty.c as Qmake_frame_after_init_entry_point. (tty_init_device): Call #'make-device-early-tty-entry-point before doing anything. * frame-tty.c (Qmake_frame_after_init_entry_point): New. * frame-tty.c (tty_after_init_frame): Have it call the better-named #'make-frame-after-init-entry-point function instead of #'init-post-tty-win (since it's called after frame, not device, creation). * device-msw.c (Qmake_device_early_mswindows_entry_point, Qmake_device_late_mswindows_entry_point): New. Rename Qinit_pre_mswindows_win, Qinit_post_mswindows_win. (mswindows_init_device): Call #'make-device-early-mswindows-entry-point here, instead of having its predecessor call us. (mswindows_finish_init_device): Call #'make-device-early-mswindows-entry-point, for symmetry with the other device types (though it's an empty function). * device-gtk.c (Qmake_device_early_gtk_entry_point, Qmake_device_late_gtk_entry_point): New. Rename Qinit_pre_gtk_win, Qinit_post_gtk_win. (gtk_init_device): Call #'make-device-early-gtk-entry-point; don't load ~/.xemacs/gtk-options.el ourselves, leave that to lisp. (gtk_finish_init_device): Call #'make-device-late-gtk-entry-point with the created device as an argument.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 09 Jul 2008 20:46:22 +0200
parents 9bcdf9a3a783
children 4cb7c59b5201
comparison
equal deleted inserted replaced
4475:86283c809984 4477:e34711681f30
474 nil or a symbol naming the window system 474 nil or a symbol naming the window system
475 under which emacs is running 475 under which emacs is running
476 (`x', `gtk', `mswindows', and `tty' are 476 (`x', `gtk', `mswindows', and `tty' are
477 supported -- yes, TTYs are window systems 477 supported -- yes, TTYs are window systems
478 for this purpose. */ 478 for this purpose. */
479 Lisp_Object Vinitial_window_system; 479 Lisp_Object Vinitial_device_type;
480 480
481 Lisp_Object Vglobal_mode_string; 481 Lisp_Object Vglobal_mode_string;
482 482
483 /* The number of lines scroll a window by when point leaves the window; if 483 /* The number of lines scroll a window by when point leaves the window; if
484 it is <=0 then point is centered in the window */ 484 it is <=0 then point is centered in the window */
9746 formatted_string_extent_end_dynarr = Dynarr_new (Bytecount); 9746 formatted_string_extent_end_dynarr = Dynarr_new (Bytecount);
9747 if (!internal_cache) 9747 if (!internal_cache)
9748 internal_cache = Dynarr_new (line_start_cache); 9748 internal_cache = Dynarr_new (line_start_cache);
9749 } 9749 }
9750 9750
9751 /* window system is nil when in -batch mode */ 9751 if (!initialized)
9752 if (!initialized || noninteractive)
9753 return; 9752 return;
9753
9754 if (noninteractive)
9755 {
9756 Vwindow_system = Qstream;
9757 Vinitial_device_type = Qstream;
9758 return;
9759 }
9754 9760
9755 /* If the user wants to use a window system, we shouldn't bother 9761 /* If the user wants to use a window system, we shouldn't bother
9756 initializing the terminal. This is especially important when the 9762 initializing the terminal. This is especially important when the
9757 terminal is so dumb that emacs gives up before and doesn't bother 9763 terminal is so dumb that emacs gives up before and doesn't bother
9758 using the window system. 9764 using the window system.
9763 #ifdef HAVE_X_WINDOWS 9769 #ifdef HAVE_X_WINDOWS
9764 if (!strcmp (display_use, "x")) 9770 if (!strcmp (display_use, "x"))
9765 { 9771 {
9766 /* Some stuff checks this way early. */ 9772 /* Some stuff checks this way early. */
9767 Vwindow_system = Qx; 9773 Vwindow_system = Qx;
9768 Vinitial_window_system = Qx; 9774 Vinitial_device_type = Qx;
9769 return; 9775 return;
9770 } 9776 }
9771 #endif /* HAVE_X_WINDOWS */ 9777 #endif /* HAVE_X_WINDOWS */
9772 9778
9773 #ifdef HAVE_GTK 9779 #ifdef HAVE_GTK
9774 if (!strcmp (display_use, "gtk")) 9780 if (!strcmp (display_use, "gtk"))
9775 { 9781 {
9776 Vwindow_system = Qgtk; 9782 Vwindow_system = Qgtk;
9777 Vinitial_window_system = Qgtk; 9783 Vinitial_device_type = Qgtk;
9778 return; 9784 return;
9779 } 9785 }
9780 #endif 9786 #endif
9781 9787
9782 #ifdef HAVE_MS_WINDOWS 9788 #ifdef HAVE_MS_WINDOWS
9783 if (!strcmp (display_use, "mswindows")) 9789 if (!strcmp (display_use, "mswindows"))
9784 { 9790 {
9785 /* Some stuff checks this way early. */ 9791 /* Some stuff checks this way early. */
9786 Vwindow_system = Qmswindows; 9792 Vwindow_system = Qmswindows;
9787 Vinitial_window_system = Qmswindows; 9793 Vinitial_device_type = Qmswindows;
9788 return; 9794 return;
9789 } 9795 }
9790 #endif /* HAVE_MS_WINDOWS */ 9796 #endif /* HAVE_MS_WINDOWS */
9791 9797
9792 #ifdef HAVE_TTY 9798 #ifdef HAVE_TTY
9802 { 9808 {
9803 stderr_out ("Please set the environment variable TERM; see tset(1).\n"); 9809 stderr_out ("Please set the environment variable TERM; see tset(1).\n");
9804 exit (1); 9810 exit (1);
9805 } 9811 }
9806 9812
9807 Vinitial_window_system = Qtty; 9813 Vinitial_device_type = Qtty;
9808 return; 9814 return;
9809 #else /* not HAVE_TTY */ 9815 #else /* not HAVE_TTY */
9810 /* No DISPLAY specified, and no TTY support. */ 9816 /* No DISPLAY specified, and no TTY support. */
9811 stderr_out ("XEmacs: Cannot open display.\n\ 9817 stderr_out ("XEmacs: Cannot open display.\n\
9812 Please set the environmental variable DISPLAY to an appropriate value.\n"); 9818 Please set the environmental variable DISPLAY to an appropriate value.\n");
9946 gives wrong values in a multi-device environment. Use `console-type' 9952 gives wrong values in a multi-device environment. Use `console-type'
9947 instead. 9953 instead.
9948 */ ); 9954 */ );
9949 Vwindow_system = Qnil; 9955 Vwindow_system = Qnil;
9950 9956
9951 /* #### Temporary shit until window-system is eliminated. */ 9957 DEFVAR_CONST_LISP ("initial-device-type", &Vinitial_device_type /*
9952 DEFVAR_CONST_LISP ("initial-window-system", &Vinitial_window_system /* 9958 The type of the first XEmacs device to be created.
9953 DON'T TOUCH 9959
9960 This is constant; it's used by the command line handling code to communicate
9961 to Lisp what type the initial device to be created should be.
9954 */ ); 9962 */ );
9955 Vinitial_window_system = Qnil; 9963 Vinitial_device_type = Qnil;
9956 9964
9957 DEFVAR_BOOL ("cursor-in-echo-area", &cursor_in_echo_area /* 9965 DEFVAR_BOOL ("cursor-in-echo-area", &cursor_in_echo_area /*
9958 Non-nil means put cursor in minibuffer, at end of any message there. 9966 Non-nil means put cursor in minibuffer, at end of any message there.
9959 */ ); 9967 */ );
9960 cursor_in_echo_area = 0; 9968 cursor_in_echo_area = 0;