comparison lisp/tty-init.el @ 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 7039e6323819
children c786c3fd0740
comparison
equal deleted inserted replaced
4475:86283c809984 4477:e34711681f30
29 29
30 ;; This file is dumped with XEmacs (when TTY support is compiled in). 30 ;; This file is dumped with XEmacs (when TTY support is compiled in).
31 31
32 ;;; Code: 32 ;;; Code:
33 33
34 (defvar pre-tty-win-initted nil) 34 (defvar make-device-early-tty-entry-point-called-p nil
35 "Whether `make-device-early-tty-entry-point' has been called, at least once.")
35 36
36 ;; called both from init-tty-win and from the C code. 37 (defun make-device-early-tty-entry-point ()
37 (defun init-pre-tty-win () 38 "Entry point to set up the Lisp environment for TTY device creation."
38 "Initialize TTY at startup (pre). Don't call this."
39 (with-fboundp 'register-tty-color 39 (with-fboundp 'register-tty-color
40 (unless pre-tty-win-initted 40 (unless make-device-early-tty-entry-point-called-p
41 (register-tty-color "black" "\e[30m" "\e[40m") 41 (register-tty-color "black" "\e[30m" "\e[40m")
42 (register-tty-color "red" "\e[31m" "\e[41m") 42 (register-tty-color "red" "\e[31m" "\e[41m")
43 (register-tty-color "green" "\e[32m" "\e[42m") 43 (register-tty-color "green" "\e[32m" "\e[42m")
44 (register-tty-color "yellow" "\e[33m" "\e[43m") 44 (register-tty-color "yellow" "\e[33m" "\e[43m")
45 (register-tty-color "blue" "\e[34m" "\e[44m") 45 (register-tty-color "blue" "\e[34m" "\e[44m")
57 (register-tty-color "brightcyan" "\e[1;36m" "\e[1;46m") 57 (register-tty-color "brightcyan" "\e[1;36m" "\e[1;46m")
58 (register-tty-color "brightwhite" "\e[1;37m" "\e[1;47m") 58 (register-tty-color "brightwhite" "\e[1;37m" "\e[1;47m")
59 59
60 (setq pre-tty-win-initted t)))) 60 (setq pre-tty-win-initted t))))
61 61
62 ;; called both from init-tty-win and from the C code. 62 ;; We have to do this for every created TTY console, after the first frame
63 ;; we have to do this for every created TTY console. 63 ;; has been created.
64 (defun init-post-tty-win (console) 64 (defun make-frame-after-init-entry-point (console)
65 "Initialize TTY at console creation time (post). Don't call this." 65 "Entry point for Lisp called after first frame creation on a TTY device."
66 ;; load the appropriate term-type-specific Lisp file. 66 ;; load the appropriate term-type-specific Lisp file.
67 ;; we don't do this at startup here so that the user can 67 ;; we don't do this at startup here so that the user can
68 ;; override term-file-prefix. (startup.el does it after 68 ;; override term-file-prefix. (startup.el does it after
69 ;; loading the init file.) 69 ;; loading the init file.)
70 (if (featurep 'mule) 70 (when (and (find-coding-system 'euc-jp)
71 (declare-fboundp (init-mule-tty-win))) 71 (string-match "^kterm" (getenv "TERM")))
72 (set-console-tty-coding-system console 'euc-jp))
72 (when init-file-loaded 73 (when init-file-loaded
73 ;; temporarily select the console so that the changes 74 ;; temporarily select the console so that the changes
74 ;; to function-key-map are made for the right console. 75 ;; to function-key-map are made for the right console.
75 (let ((foobar (selected-console))) 76 (let ((foobar (selected-console)))
76 (unwind-protect 77 (unwind-protect
77 (progn 78 (progn
78 (select-console console) 79 (select-console console)
79 (load-terminal-library)) 80 (load-terminal-library))
80 (select-console foobar))))) 81 (select-console foobar)))))
81
82 (defvar tty-win-initted nil)
83
84 (defun init-tty-win ()
85 "Initialize TTY at startup. Don't call this."
86 (unless tty-win-initted
87 (init-pre-tty-win)
88 (make-tty-device nil nil)
89 (init-post-tty-win (selected-console))
90 (setq tty-win-initted t)))
91 82
92 (defun make-frame-on-tty (tty &optional props) 83 (defun make-frame-on-tty (tty &optional props)
93 "Create a frame on the TTY connection named TTY. 84 "Create a frame on the TTY connection named TTY.
94 TTY should be a TTY device name such as \"/dev/ttyp3\" (as returned by 85 TTY should be a TTY device name such as \"/dev/ttyp3\" (as returned by
95 the `tty' command in that TTY), or nil for the standard input/output 86 the `tty' command in that TTY), or nil for the standard input/output