annotate lisp/x-init.el @ 5750:66d2f63df75f

Correct some spelling and formatting in behavior.el. Mentioned in tracker issue 826, the third thing mentioned there (the file name at the bottom of the file) had already been fixed. lisp/ChangeLog addition: 2013-08-05 Aidan Kehoe <kehoea@parhasard.net> * behavior.el: (override-behavior): Correct some spelling and formatting here, thank you Steven Mitchell in tracker issue 826.
author Aidan Kehoe <kehoea@parhasard.net>
date Mon, 05 Aug 2013 10:05:32 +0100
parents 1d1f385c9149
children bbe4146603db
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 ;;; x-init.el --- initialization code for X windows
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 ;; Copyright (C) 1990, 1993, 1994, 1997 Free Software Foundation, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 ;; Copyright (C) 1995 Board of Trustees, University of Illinois.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 ;; Copyright (C) 1995, 1996 Ben Wing.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 ;; Maintainer: XEmacs Development Team
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 ;; Keywords: terminals, dumped
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 ;; This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5260
diff changeset
12 ;; XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5260
diff changeset
13 ;; under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5260
diff changeset
14 ;; Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5260
diff changeset
15 ;; option) any later version.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5260
diff changeset
17 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5260
diff changeset
18 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5260
diff changeset
19 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5260
diff changeset
20 ;; for more details.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5260
diff changeset
23 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 ;;; Synched up with: Not synched.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 ;;; Commentary:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 ;; This file is dumped with XEmacs (when X support is compiled in).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 ;;; Code:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
33 (globally-declare-fboundp
5639
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
34 '(x-server-vendor x-init-specifier-from-resources init-mule-x-win))
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
35
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
36 (globally-declare-boundp
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
37 '(x-initial-argv-list x-app-defaults-directory))
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
38
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 ;; If you want to change this variable, this is the place you must do it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 ;; Do not set it to a string containing periods. X doesn't like that.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 ;(setq x-emacs-application-class "Emacs")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 (defgroup x nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 "The X Window system."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 :group 'environment)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 ;; OpenWindows-like "find" processing. These functions are really Sunisms,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 ;; but we put them here instead of in x-win-sun.el in case someone wants
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 ;; to use them when not running on a Sun console (presumably after binding
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 ;; them to different keys, or putting them on menus.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 (defvar ow-find-last-string nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 (defvar ow-find-last-clipboard nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 (defun ow-find (&optional backward-p)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 "Search forward the next occurrence of the text of the selection."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 (interactive)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
58 (let ((sel (ignore-errors (get-selection)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
59 (clip (ignore-errors (get-clipboard)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 text)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 (setq text (cond
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 (sel)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 ((not (equal clip ow-find-last-clipboard))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 (setq ow-find-last-clipboard clip))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 (ow-find-last-string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 (t (error "No selection available"))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 (setq ow-find-last-string text)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 (cond (backward-p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 (search-backward text)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 (set-mark (+ (point) (length text))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 (search-forward text)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 (set-mark (- (point) (length text)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 (zmacs-activate-region)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 (defun ow-find-backward ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 "Search backward for the previous occurrence of the text of the selection."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 (ow-find t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80
5639
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
81 (labels
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
82 ((pseudo-canonicalize-keysym (keysym)
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
83 "If KEYSYM (a string or a symbol) might describe a keysym on
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
84 the current keyboard, return its canonical XEmacs form, a symbol;
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
85 otherwise return nil.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
86
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
87 Does not intern new symbols, since if a string doesn't correspond to a
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
88 keysym that XEmacs has seen, that string won't be in obarray."
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
89 (if (symbolp keysym)
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
90 keysym
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
91 (if (stringp keysym)
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
92 (or (intern-soft keysym)
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
93 (intern-soft (nsubstitute ?- ?_ (downcase keysym))))))))
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
94 (declare (inline pseudo-canonicalize-keysym))
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
95
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
96 (defun x-keysym-on-keyboard-sans-modifiers-p (keysym &optional device)
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
97 "Return true if KEYSYM names a key on the keyboard of DEVICE.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
98 More precisely, return true if pressing a physical key
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
99 on the keyboard of DEVICE without any modifier keys generates KEYSYM.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
100 Valid keysyms are listed in the files /usr/include/X11/keysymdef.h and in
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
101 /usr/lib/X11/XKeysymDB, or whatever the equivalents are on your system.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
102 The keysym name can be provided in two forms:
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
103 - if keysym is a string, it must be the name as known to X windows.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
104 - if keysym is a symbol, it must be the name as known to XEmacs.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
105 The two names differ in capitalization and underscoring."
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
106 (eq 'sans-modifiers (gethash (pseudo-canonicalize-keysym keysym)
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
107 (x-keysym-hash-table device))))
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
108
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
109 (defun x-keysym-on-keyboard-p (keysym &optional device)
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
110 "Return true if KEYSYM names a key on the keyboard of DEVICE.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
111 More precisely, return true if some keystroke (possibly including modifiers)
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
112 on the keyboard of DEVICE keys generates KEYSYM.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
113 Valid keysyms are listed in the files /usr/include/X11/keysymdef.h and in
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
114 /usr/lib/X11/XKeysymDB, or whatever the equivalents are on your system.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
115 The keysym name can be provided in two forms:
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
116 - if keysym is a string, it must be the name as known to X windows.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
117 - if keysym is a symbol, it must be the name as known to XEmacs.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
118 The two names differ in capitalization and underscoring.
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
119
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
120 This function is not entirely trustworthy, in that Xlib compose processing
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
121 can produce keysyms that XEmacs will not have seen when it examined the
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
122 keysyms available on startup. So pressing `dead-diaeresis' and then 'a' may
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
123 pass `adiaeresis' to XEmacs, or (in some implementations) even `U00E4',
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
124 where `(x-keysym-on-keyboard-p 'adiaeresis)' and `(x-keysym-on-keyboard-p
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
125 'U00E4)' would both have returned nil. Subsequent to XEmacs seeing a keysym
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
126 it was previously unaware of, the predicate will take note of it, though."
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
127 (and (gethash (pseudo-canonicalize-keysym keysym)
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
128 (x-keysym-hash-table device))
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
129 t)))
1d1f385c9149 Call XKeysymToString() much less, it leaks.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5529
diff changeset
130
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 (eval-when-compile
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 (load "x-win-sun" nil t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 (load "x-win-xfree86" nil t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
135 (defun x-initialize-keyboard (device)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 "Perform X-Server-specific initializations. Don't call this."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 ;; This is some heuristic junk that tries to guess whether this is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 ;; a Sun keyboard.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 ;; One way of implementing this (which would require C support) would
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 ;; be to examine the X keymap itself and see if the layout looks even
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 ;; remotely like a Sun - check for the Find key on a particular
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 ;; keycode, for example. It'd be nice to have a table of this to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 ;; recognize various keyboards; see also xkeycaps.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 ;; Note that we cannot use most vendor-provided proprietary keyboard
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 ;; APIs to identify the keyboard - those only work on the console.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 ;; xkeycaps has the same problem when running `remotely'.
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
149 (let ((vendor (x-server-vendor device)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 (cond ((or (string-match "Sun Microsystems" vendor)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 ;; MIT losingly fails to tell us what hardware the X server
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 ;; is managing, so assume all MIT displays are Suns... HA HA!
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 (string-equal "MIT X Consortium" vendor)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 (string-equal "X Consortium" vendor))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 ;; Ok, we think this could be a Sun keyboard. Run the Sun code.
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
156 (x-win-init-sun device))
4062
aa22980554d9 [xemacs-hg @ 2007-07-16 12:26:00 by aidan]
aidan
parents: 3475
diff changeset
157 ((string-match #r"XFree86\|Cygwin/X\|The X\.Org Foundation" vendor)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 ;; Those XFree86 people do some weird keysym stuff, too.
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
159 (x-win-init-xfree86 device)))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160
3360
316fddbf58e2 [xemacs-hg @ 2006-04-25 14:01:52 by stephent]
stephent
parents: 2828
diff changeset
161 ;; Moved from x-toolbar.el, since InfoDock doesn't dump x-toolbar.el.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 (defun x-init-toolbar-from-resources (locale)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 (loop for (specifier . resname) in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 `(( ,top-toolbar-height . "topToolBarHeight")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 (,bottom-toolbar-height . "bottomToolBarHeight")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 ( ,left-toolbar-width . "leftToolBarWidth")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 ( ,right-toolbar-width . "rightToolBarWidth")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 ( ,top-toolbar-border-width . "topToolBarBorderWidth")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 (,bottom-toolbar-border-width . "bottomToolBarBorderWidth")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 ( ,left-toolbar-border-width . "leftToolBarBorderWidth")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 ( ,right-toolbar-border-width . "rightToolBarBorderWidth"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 (x-init-specifier-from-resources
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 specifier 'natnum locale (cons resname (upcase-initials resname)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
177 (defvar make-device-early-x-entry-point-called-p nil
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
178 "Whether `make-device-early-x-entry-point' has been called, at least once.
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
179
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
180 Much of the X11-specific Lisp init code should only be called the first time
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
181 an X11 device is created; this variable allows for that.")
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
183 (defvar make-device-late-x-entry-point-called-p nil
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
184 "Whether `make-device-late-x-entry-point' has been called, at least once.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
186 Much of the X11-specific Lisp init code should only be called the first time
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
187 an X11 device is created; this variable allows for that.")
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
189 (defun make-device-early-x-entry-point ()
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
190 "Entry point to set up the Lisp environment for X device creation."
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
191 (unless make-device-early-x-entry-point-called-p
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
192 (setq initial-frame-plist
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
193 (and initial-frame-unmapped-p '(initially-unmapped t))
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
194 ;; Save the argv value.
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
195 x-initial-argv-list
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
196 (cons (car command-line-args) command-line-args-left)
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
197 ;; Locate the app-defaults directory
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
198 x-app-defaults-directory
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
199 (or x-app-defaults-directory (locate-data-directory "app-defaults"))
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
200 make-device-early-x-entry-point-called-p t)))
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
201
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
202 (defun make-device-late-x-entry-point (device)
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
203 "Entry point to do any Lisp-level X device-specific initialization."
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
204 ;; General code, called on every X device created:
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
205 (x-initialize-keyboard device)
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
206 ;; And the following code is to be called once, the first time an X11
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
207 ;; device is created:
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
208 (unless make-device-late-x-entry-point-called-p
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 (setq command-line-args-left (cdr x-initial-argv-list))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 ;; Motif-ish bindings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 (define-key global-map '(shift insert) 'yank-clipboard-selection)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 (define-key global-map '(control insert) 'copy-primary-selection)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 ;; These are Sun-isms.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 (define-key global-map 'copy 'copy-primary-selection)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 (define-key global-map 'paste 'yank-clipboard-selection)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 (define-key global-map 'cut 'kill-primary-selection)
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
217 (setq make-device-late-x-entry-point-called-p t)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 (defun make-frame-on-display (display &optional props)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 "Create a frame on the X display named DISPLAY.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 DISPLAY should be a standard display string such as \"unix:0\",
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 or nil for the display specified on the command line or in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 DISPLAY environment variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 PROPS should be a plist of properties, as in the call to `make-frame'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 This function opens a connection to the display or reuses an existing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 connection.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 This function is a trivial wrapper around `make-frame-on-device'."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 (interactive "sMake frame on display: ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 (if (equal display "") (setq display nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 (make-frame-on-device 'x display props))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 ;;; x-init.el ends here