Mercurial > hg > xemacs-beta
changeset 4627:fdc76fec36d3
Vastly expand the characters x-compose.el supports.
2009-03-01 Aidan Kehoe <kehoea@parhasard.net>
* x-compose.el:
Document an XIM bug, and how one might work around it.
(define-compose-map):
Revise this macro, call it with compose-caron-map,
compose-macron-map, compose-breve-map, compose-dot-map,
compose-doubleacute-map, compose-ogonek-map, compose-hook-map,
compose-horn-map as well as the previous existing maps.
(compose-map):
Add entries for caron, macron, doubleacute, ogonek, breve and
abovedot to this map.
Add an assert, this code assumes that a non-Mule build has no
character codes above U+00FF.
Incorporate all the precomposed Latin characters in
UnicodeData.txt that we can into the maps, deciding at runtime on
which exactly depending on whether this is a non-Mule or a Mule
build.
Remove a commented-out old X11 bug workaround.
Use #'flet instead of defun + unintern for
#'alias-colon-to-doublequote.
Correct #'electric-diacritic to work with the keyboard macro
versions of the maps.
(compose-help):
This has been turned off since 1994; no-one appears to have
noticed, since the normal help mechanism offers similar
functionality and is actually maintained. Removed entirely.
Remove a superflous setting of a default value for ctl-arrow.
* x-init.el (x-initialize-compose):
Support the new dead key maps we just added to x-compose.el with
autoloads here.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 01 Mar 2009 11:11:46 +0000 |
parents | f1bb4cc3144a |
children | 877ad4697eea |
files | lisp/ChangeLog lisp/x-compose.el lisp/x-init.el |
diffstat | 3 files changed, 486 insertions(+), 268 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Thu Feb 26 18:35:11 2009 +0900 +++ b/lisp/ChangeLog Sun Mar 01 11:11:46 2009 +0000 @@ -1,3 +1,35 @@ +2009-03-01 Aidan Kehoe <kehoea@parhasard.net> + + * x-compose.el: + Document an XIM bug, and how one might work around it. + (define-compose-map): + Revise this macro, call it with compose-caron-map, + compose-macron-map, compose-breve-map, compose-dot-map, + compose-doubleacute-map, compose-ogonek-map, compose-hook-map, + compose-horn-map as well as the previous existing maps. + (compose-map): + Add entries for caron, macron, doubleacute, ogonek, breve and + abovedot to this map. + Add an assert, this code assumes that a non-Mule build has no + character codes above U+00FF. + Incorporate all the precomposed Latin characters in + UnicodeData.txt that we can into the maps, deciding at runtime on + which exactly depending on whether this is a non-Mule or a Mule + build. + Remove a commented-out old X11 bug workaround. + Use #'flet instead of defun + unintern for + #'alias-colon-to-doublequote. + Correct #'electric-diacritic to work with the keyboard macro + versions of the maps. + (compose-help): + This has been turned off since 1994; no-one appears to have + noticed, since the normal help mechanism offers similar + functionality and is actually maintained. Removed entirely. + Remove a superflous setting of a default value for ctl-arrow. + * x-init.el (x-initialize-compose): + Support the new dead key maps we just added to x-compose.el with + autoloads here. + 2009-02-22 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-force-escape-quoted): New variable,
--- a/lisp/x-compose.el Thu Feb 26 18:35:11 2009 +0900 +++ b/lisp/x-compose.el Sun Mar 01 11:11:46 2009 +0000 @@ -100,29 +100,63 @@ ;; not have: at any point you can type C-h to get a list of the possible ;; completions of what you have typed so far. +;; ---------------------------------------------------------------------- +;; +;; Notes from Aidan Kehoe, Thu Feb 12 16:21:18 GMT 2009 (these conflict to +;; some extent with the above): + ;; Giacomo Boffi's problem of ;; 20050324103919.8D22E4901@boffi95.stru.polimi.it is caused by Xlib doing -;; the compose processing. To turn that off, I'm not certain what's -;; possible, beyond making C the current locale. +;; the compose processing. To turn that off, you need to recompile without +;; XIM support, or start up XEmacs in a locale that the system supports but +;; X11 does not (for me, ru_RU.CP866 works for this). This will be +;; preferable anyway for some people, because the XIM support drops +;; sequences we would prefer to see. E.g. in the following situation, with +;; an XIM build: + +;; $ LC_CTYPE=de_DE.ISO8859-1 ./xemacs -vanilla & + +;; Input: dead-acute a +;; Seen by XEmacs: aacute (thanks to XIM) +;; Action: U+00E1 is inserted in the buffer + +;; Input: dead-abovedot o +;; Seen by XEmacs: dead-abovedot o (XIM does not intervene, since no +;; characters in this locale are generated with +;; dead-abovedot) +;; Action: U+022F is inserted in the buffer (thanks to this file) + +;; Input: dead-acute r +;; Seen by XEmacs: nothing (thanks to XIM, it considers U+0155 unavailable) +;; Action: nothing + +;; Without XIM, all the above inputs would work fine, independent of your +;; locale. + +;; Also, XIM does not intervene at all with the second or subsequent X11 +;; devices created, and this file is needed for compose processing +;; there. This may be a bug in our use of XIM, or it may a bug in XIM +;; itself. ;;; Code: (macrolet - ((define-compose-map (keymap-symbol) - `(progn - (defconst ,keymap-symbol (make-sparse-keymap ',keymap-symbol)) + ((define-compose-map (&rest keymap-symbols) + (loop + for keymap-symbol in keymap-symbols + with result = nil + do ;; Required to tell XEmacs the keymaps were actually autoloaded. ;; #### Make this unnecessary! - (fset ',keymap-symbol ,keymap-symbol)))) - - (define-compose-map compose-map) - (define-compose-map compose-acute-map) - (define-compose-map compose-grave-map) - (define-compose-map compose-cedilla-map) - (define-compose-map compose-diaeresis-map) - (define-compose-map compose-circumflex-map) - (define-compose-map compose-tilde-map) - (define-compose-map compose-ring-map)) + (push `(fset ',keymap-symbol ,keymap-symbol) result) + (push `(defconst ,keymap-symbol (make-sparse-keymap ',keymap-symbol)) + result) + finally return (cons 'progn result)))) + (define-compose-map compose-map compose-acute-map compose-grave-map + compose-cedilla-map compose-diaeresis-map compose-circumflex-map + compose-tilde-map compose-ring-map compose-caron-map compose-macron-map + compose-breve-map compose-dot-map compose-doubleacute-map + compose-ogonek-map compose-hook-map compose-horn-map)) (define-key compose-map 'acute compose-acute-map) (define-key compose-map 'grave compose-grave-map) @@ -131,6 +165,12 @@ (define-key compose-map 'circumflex compose-circumflex-map) (define-key compose-map 'tilde compose-tilde-map) (define-key compose-map 'degree compose-ring-map) +(define-key compose-map 'caron compose-caron-map) +(define-key compose-map 'macron compose-macron-map) +(define-key compose-map 'doubleacute compose-doubleacute-map) +(define-key compose-map 'ogonek compose-ogonek-map) +(define-key compose-map 'breve compose-breve-map) +(define-key compose-map 'abovedot compose-dot-map) ;;(define-key function-key-map [multi-key] compose-map) @@ -156,119 +196,375 @@ (define-key compose-map [degree] compose-ring-map) (define-key compose-map [?*] compose-ring-map) +(loop + for (keysym character-code map) + in '((caron #x02C7 compose-caron-map) + (macron #x00AF compose-macron-map) + (doubleacute #x02DD compose-doubleacute-map) + (ogonek #x02db compose-ogonek-map) + (breve #x0306 compose-breve-map) + (abovedot #x0307 compose-dot-map) + (U031b #x031b compose-horn-map)) + do + (define-key compose-map (vector keysym) map) + (when (setq character-code (decode-char 'ucs character-code)) + (define-key compose-map (vector character-code) map))) + ;;; The contents of the "dead key" maps. These are shared by the ;;; compose-map. -;;; These used to all have nice readable X11-oriented keysym names as the -;;; macro definition in the third argument, but I moved the interpretation -;;; of those mappings (that is, Aacute to \301, &c.) to runtime in the X11 -;;; code on first sight of the symbols--which is the more general solution, -;;; what with Unicode keysyms, publishing, technical and so on, there's no -;;; need to have them hanging around as symbols all the time--so they're no -;;; longer available to Lisp before X11 sees them, something this relied on. - -;;; The transformation was done like so; - -;;; (while (re-search-forward "\\[\\([a-zA-Z]+\\)\\])$" nil t) -;;; (replace-match (format "(?\\%o)" -;;; (get (intern (match-string 1)) 'character-of-keysym)) -;;; t t nil 1)) - -;;; with a lot of repeated calling of setxkbmap to esoteric keymaps--so -;;; x_reset_key_mapping gets called for all the keys on the keyboard--yacute -;;; getting picked up from the Czech keymap, idiaeresis from the Dutch one, -;;; and many more (al, ca, cz, de, dvorak, ee, es, fi, fr, hu, -;;; ie(UnicodeExpert), it, nl, pt, ro, tr, us, vn, if it interests you.) +;;; Against the spirit of Unicode, which says that the precomposed +;;; characters are just there for round-trip compatibility with other +;;; encodings and don't reflect that they're necessarily used much, these +;;; are just the precomposed Latin characters in UnicodeData.txt; we don't +;;; support any decomposed characters here. (Not least because in general we +;;; don't have worthwhile support for precomposed characters.) -;;; The parentheses inside the vector are because otherwise the macro gets -;;; interpreted as a meta character, the Latin-1 codes being in exactly that -;;; range. Perhaps that bears documenting somewhere. Also, why is help -;;; turned off for these (x-compose) sequences by default? - -;;; (Aidan Kehoe, 2005-05-18) +(assert + (or (featurep 'mule) (null (decode-char 'ucs #x100))) + nil + "This code assumes no non-Mule characters have a UCS value \ +greater than #xFF, and needs to be rewritten if that is not true.") -(define-key compose-acute-map [space] "'") -(define-key compose-acute-map [?'] [(?\264)]) -(define-key compose-acute-map [?A] [(?\301)]) -(define-key compose-acute-map [E] [(?\311)]) -(define-key compose-acute-map [I] [(?\315)]) -(define-key compose-acute-map [O] [(?\323)]) -(define-key compose-acute-map [U] [(?\332)]) -(define-key compose-acute-map [Y] [(?\335)]) -(define-key compose-acute-map [a] [(?\341)]) -(define-key compose-acute-map [e] [(?\351)]) -(define-key compose-acute-map [i] [(?\355)]) -(define-key compose-acute-map [o] [(?\363)]) -(define-key compose-acute-map [u] [(?\372)]) -(define-key compose-acute-map [y] [(?\375)]) +(macrolet + ((decide-on-bindings (&rest details) + "Look through DETAILS, working out which bindings work on non-Mule. -(define-key compose-grave-map [space] "`") -(define-key compose-grave-map [?`] [(?\140)]) -(define-key compose-grave-map [A] [(?\300)]) -(define-key compose-grave-map [E] [(?\310)]) -(define-key compose-grave-map [I] [(?\314)]) -(define-key compose-grave-map [O] [(?\322)]) -(define-key compose-grave-map [U] [(?\331)]) -(define-key compose-grave-map [a] [(?\340)]) -(define-key compose-grave-map [e] [(?\350)]) -(define-key compose-grave-map [i] [(?\354)]) -(define-key compose-grave-map [o] [(?\362)]) -(define-key compose-grave-map [u] [(?\371)]) - -(define-key compose-cedilla-map [space] ",") -(define-key compose-cedilla-map [?,] [(?\270)]) -(define-key compose-cedilla-map [C] [(?\307)]) -(define-key compose-cedilla-map [c] [(?\347)]) - -(define-key compose-diaeresis-map [space] [(?\250)]) -(define-key compose-diaeresis-map [?\"] [(?\250)]) -(define-key compose-diaeresis-map [A] [(?\304)]) -(define-key compose-diaeresis-map [E] [(?\313)]) -(define-key compose-diaeresis-map [I] [(?\317)]) -(define-key compose-diaeresis-map [O] [(?\326)]) -(define-key compose-diaeresis-map [U] [(?\334)]) -(define-key compose-diaeresis-map [a] [(?\344)]) -(define-key compose-diaeresis-map [e] [(?\353)]) -(define-key compose-diaeresis-map [i] [(?\357)]) -(define-key compose-diaeresis-map [o] [(?\366)]) -;; Not strictly a diaeresis, but close enough for government work. -(define-key compose-diaeresis-map [s] [(?\337)]) -(define-key compose-diaeresis-map [u] [(?\374)]) -(define-key compose-diaeresis-map [y] [(?\377)]) - -(define-key compose-circumflex-map [space] "^") -(define-key compose-circumflex-map [?/] "|") -(define-key compose-circumflex-map [?!] [(?\246)]) -(define-key compose-circumflex-map [?-] [(?\257)]) -(define-key compose-circumflex-map [?_] [(?\257)]) -(define-key compose-circumflex-map [?0] [(?\260)]) -(define-key compose-circumflex-map [?1] [(?\271)]) -(define-key compose-circumflex-map [?2] [(?\262)]) -(define-key compose-circumflex-map [?3] [(?\263)]) -(define-key compose-circumflex-map [?.] [(?\267)]) -(define-key compose-circumflex-map [A] [(?\302)]) -(define-key compose-circumflex-map [E] [(?\312)]) -(define-key compose-circumflex-map [I] [(?\316)]) -(define-key compose-circumflex-map [O] [(?\324)]) -(define-key compose-circumflex-map [U] [(?\333)]) -(define-key compose-circumflex-map [a] [(?\342)]) -(define-key compose-circumflex-map [e] [(?\352)]) -(define-key compose-circumflex-map [i] [(?\356)]) -(define-key compose-circumflex-map [o] [(?\364)]) -(define-key compose-circumflex-map [u] [(?\373)]) - -(define-key compose-tilde-map [space] "~") -(define-key compose-tilde-map [A] [(?\303)]) -(define-key compose-tilde-map [N] [(?\321)]) -(define-key compose-tilde-map [O] [(?\325)]) -(define-key compose-tilde-map [a] [(?\343)]) -(define-key compose-tilde-map [n] [(?\361)]) -(define-key compose-tilde-map [o] [(?\365)]) - -(define-key compose-ring-map [space] [(?\260)]) -(define-key compose-ring-map [A] [(?\305)]) -(define-key compose-ring-map [a] [(?\345)]) +This returns a long `if' statement that should be executed when this file is +loaded; it assumes that #xFF is the inclusive upper bound for the Unicode +value of characters under non-Mule. " + (loop for (map key binding) in details + with if-mule = nil + with without-mule = nil + do + (push `(define-key ,map ,key + (vector (list (decode-char 'ucs ,binding)))) if-mule) + (when (<= binding #xFF) + (push `(define-key ,map ,key + (vector (list (decode-char 'ucs ,binding)))) + without-mule)) + finally return `(if (featurep 'mule) + (progn ,@if-mule) + ,@without-mule)))) + (decide-on-bindings + (compose-acute-map [space] #x0027) ;; APOSTROPHE + (compose-acute-map [?\'] #x00B4) ;; ACUTE ACCENT + (compose-acute-map [?A] #x00C1) ;; CAPITAL A WITH ACUTE + (compose-acute-map [?C] #x0106) ;; CAPITAL C WITH ACUTE + (compose-acute-map [?E] #x00C9) ;; CAPITAL E WITH ACUTE + (compose-acute-map [?G] #x01F4) ;; CAPITAL G WITH ACUTE + (compose-acute-map [?I] #x00CD) ;; CAPITAL I WITH ACUTE + (compose-acute-map [?K] #x1E30) ;; CAPITAL K WITH ACUTE + (compose-acute-map [?L] #x0139) ;; CAPITAL L WITH ACUTE + (compose-acute-map [?M] #x1E3E) ;; CAPITAL M WITH ACUTE + (compose-acute-map [?N] #x0143) ;; CAPITAL N WITH ACUTE + (compose-acute-map [?O] #x00D3) ;; CAPITAL O WITH ACUTE + (compose-acute-map [?P] #x1E54) ;; CAPITAL P WITH ACUTE + (compose-acute-map [?R] #x0154) ;; CAPITAL R WITH ACUTE + (compose-acute-map [?S] #x015A) ;; CAPITAL S WITH ACUTE + (compose-acute-map [?U] #x00DA) ;; CAPITAL U WITH ACUTE + (compose-acute-map [?W] #x1E82) ;; CAPITAL W WITH ACUTE + (compose-acute-map [?Y] #x00DD) ;; CAPITAL Y WITH ACUTE + (compose-acute-map [?Z] #x0179) ;; CAPITAL Z WITH ACUTE + (compose-acute-map [?a] #x00E1) ;; SMALL A WITH ACUTE + (compose-acute-map [?c] #x0107) ;; SMALL C WITH ACUTE + (compose-acute-map [?e] #x00E9) ;; SMALL E WITH ACUTE + (compose-acute-map [?g] #x01F5) ;; SMALL G WITH ACUTE + (compose-acute-map [?i] #x00ED) ;; SMALL I WITH ACUTE + (compose-acute-map [?k] #x1E31) ;; SMALL K WITH ACUTE + (compose-acute-map [?l] #x013A) ;; SMALL L WITH ACUTE + (compose-acute-map [?m] #x1E3F) ;; SMALL M WITH ACUTE + (compose-acute-map [?n] #x0144) ;; SMALL N WITH ACUTE + (compose-acute-map [?o] #x00F3) ;; SMALL O WITH ACUTE + (compose-acute-map [?p] #x1E55) ;; SMALL P WITH ACUTE + (compose-acute-map [?r] #x0155) ;; SMALL R WITH ACUTE + (compose-acute-map [?s] #x015B) ;; SMALL S WITH ACUTE + (compose-acute-map [?u] #x00FA) ;; SMALL U WITH ACUTE + (compose-acute-map [?w] #x1E83) ;; SMALL W WITH ACUTE + (compose-acute-map [?y] #x00FD) ;; SMALL Y WITH ACUTE + (compose-acute-map [?z] #x017A) ;; SMALL Z WITH ACUTE + (compose-grave-map [space] #x0060) ;; GRAVE ACCENT + (compose-grave-map [?\`] #x0060) ;; GRAVE ACCENT + (compose-grave-map [?A] #x00C0) ;; CAPITAL A WITH GRAVE + (compose-grave-map [?E] #x00C8) ;; CAPITAL E WITH GRAVE + (compose-grave-map [?I] #x00CC) ;; CAPITAL I WITH GRAVE + (compose-grave-map [?N] #x01F8) ;; CAPITAL N WITH GRAVE + (compose-grave-map [?O] #x00D2) ;; CAPITAL O WITH GRAVE + (compose-grave-map [?U] #x00D9) ;; CAPITAL U WITH GRAVE + (compose-grave-map [?W] #x1E80) ;; CAPITAL W WITH GRAVE + (compose-grave-map [?Y] #x1EF2) ;; CAPITAL Y WITH GRAVE + (compose-grave-map [?a] #x00E0) ;; SMALL A WITH GRAVE + (compose-grave-map [?e] #x00E8) ;; SMALL E WITH GRAVE + (compose-grave-map [?i] #x00EC) ;; SMALL I WITH GRAVE + (compose-grave-map [?n] #x01F9) ;; SMALL N WITH GRAVE + (compose-grave-map [?o] #x00F2) ;; SMALL O WITH GRAVE + (compose-grave-map [?u] #x00F9) ;; SMALL U WITH GRAVE + (compose-grave-map [?w] #x1E81) ;; SMALL W WITH GRAVE + (compose-grave-map [?y] #x1EF3) ;; SMALL Y WITH GRAVE + (compose-cedilla-map [space] #x002C) ;; COMMA + (compose-cedilla-map [?\,] #x00B8) ;; CEDILLA + (compose-cedilla-map [C] #x00C7) ;; CAPITAL C WITH CEDILLA + (compose-cedilla-map [D] #x1E10) ;; CAPITAL D WITH CEDILLA + (compose-cedilla-map [E] #x0228) ;; CAPITAL E WITH CEDILLA + (compose-cedilla-map [G] #x0122) ;; CAPITAL G WITH CEDILLA + (compose-cedilla-map [H] #x1E28) ;; CAPITAL H WITH CEDILLA + (compose-cedilla-map [K] #x0136) ;; CAPITAL K WITH CEDILLA + (compose-cedilla-map [L] #x013B) ;; CAPITAL L WITH CEDILLA + (compose-cedilla-map [N] #x0145) ;; CAPITAL N WITH CEDILLA + (compose-cedilla-map [R] #x0156) ;; CAPITAL R WITH CEDILLA + (compose-cedilla-map [S] #x015E) ;; CAPITAL S WITH CEDILLA + (compose-cedilla-map [T] #x0162) ;; CAPITAL T WITH CEDILLA + (compose-cedilla-map [c] #x00E7) ;; SMALL C WITH CEDILLA + (compose-cedilla-map [d] #x1E11) ;; SMALL D WITH CEDILLA + (compose-cedilla-map [e] #x0229) ;; SMALL E WITH CEDILLA + (compose-cedilla-map [g] #x0123) ;; SMALL G WITH CEDILLA + (compose-cedilla-map [h] #x1E29) ;; SMALL H WITH CEDILLA + (compose-cedilla-map [k] #x0137) ;; SMALL K WITH CEDILLA + (compose-cedilla-map [l] #x013C) ;; SMALL L WITH CEDILLA + (compose-cedilla-map [n] #x0146) ;; SMALL N WITH CEDILLA + (compose-cedilla-map [r] #x0157) ;; SMALL R WITH CEDILLA + (compose-cedilla-map [s] #x015F) ;; SMALL S WITH CEDILLA + (compose-cedilla-map [t] #x0163) ;; SMALL T WITH CEDILLA + (compose-diaeresis-map [space] #x00A8) ;; DIAERESIS + (compose-diaeresis-map [?\"] #x00A8) ;; DIAERESIS + (compose-diaeresis-map [?s] #x00DF) ;; SMALL SHARP S + (compose-diaeresis-map [?A] #x00C4) ;; CAPITAL A WITH DIAERESIS + (compose-diaeresis-map [?E] #x00CB) ;; CAPITAL E WITH DIAERESIS + (compose-diaeresis-map [?H] #x1E26) ;; CAPITAL H WITH DIAERESIS + (compose-diaeresis-map [?I] #x00CF) ;; CAPITAL I WITH DIAERESIS + (compose-diaeresis-map [?O] #x00D6) ;; CAPITAL O WITH DIAERESIS + (compose-diaeresis-map [?U] #x00DC) ;; CAPITAL U WITH DIAERESIS + (compose-diaeresis-map [?W] #x1E84) ;; CAPITAL W WITH DIAERESIS + (compose-diaeresis-map [?X] #x1E8C) ;; CAPITAL X WITH DIAERESIS + (compose-diaeresis-map [?Y] #x0178) ;; CAPITAL Y WITH DIAERESIS + (compose-diaeresis-map [?a] #x00E4) ;; SMALL A WITH DIAERESIS + (compose-diaeresis-map [?e] #x00EB) ;; SMALL E WITH DIAERESIS + (compose-diaeresis-map [?h] #x1E27) ;; SMALL H WITH DIAERESIS + (compose-diaeresis-map [?i] #x00EF) ;; SMALL I WITH DIAERESIS + (compose-diaeresis-map [?o] #x00F6) ;; SMALL O WITH DIAERESIS + (compose-diaeresis-map [?t] #x1E97) ;; SMALL T WITH DIAERESIS + (compose-diaeresis-map [?u] #x00FC) ;; SMALL U WITH DIAERESIS + (compose-diaeresis-map [?w] #x1E85) ;; SMALL W WITH DIAERESIS + (compose-diaeresis-map [?x] #x1E8D) ;; SMALL X WITH DIAERESIS + (compose-diaeresis-map [?y] #x00FF) ;; SMALL Y WITH DIAERESIS + (compose-circumflex-map [space] #x005e) ;; CIRCUMFLEX ACCENT + (compose-circumflex-map [?A] #x00C2) ;; CAPITAL A WITH CIRCUMFLEX + (compose-circumflex-map [?C] #x0108) ;; CAPITAL C WITH CIRCUMFLEX + (compose-circumflex-map [?E] #x00CA) ;; CAPITAL E WITH CIRCUMFLEX + (compose-circumflex-map [?G] #x011C) ;; CAPITAL G WITH CIRCUMFLEX + (compose-circumflex-map [?H] #x0124) ;; CAPITAL H WITH CIRCUMFLEX + (compose-circumflex-map [?I] #x00CE) ;; CAPITAL I WITH CIRCUMFLEX + (compose-circumflex-map [?J] #x0134) ;; CAPITAL J WITH CIRCUMFLEX + (compose-circumflex-map [?O] #x00D4) ;; CAPITAL O WITH CIRCUMFLEX + (compose-circumflex-map [?S] #x015C) ;; CAPITAL S WITH CIRCUMFLEX + (compose-circumflex-map [?U] #x00DB) ;; CAPITAL U WITH CIRCUMFLEX + (compose-circumflex-map [?W] #x0174) ;; CAPITAL W WITH CIRCUMFLEX + (compose-circumflex-map [?Y] #x0176) ;; CAPITAL Y WITH CIRCUMFLEX + (compose-circumflex-map [?Z] #x1E90) ;; CAPITAL Z WITH CIRCUMFLEX + (compose-circumflex-map [?a] #x00e2) ;; SMALL A WITH CIRCUMFLEX + (compose-circumflex-map [?c] #x0109) ;; SMALL C WITH CIRCUMFLEX + (compose-circumflex-map [?e] #x00ea) ;; SMALL E WITH CIRCUMFLEX + (compose-circumflex-map [?g] #x011d) ;; SMALL G WITH CIRCUMFLEX + (compose-circumflex-map [?h] #x0125) ;; SMALL H WITH CIRCUMFLEX + (compose-circumflex-map [?i] #x00ee) ;; SMALL I WITH CIRCUMFLEX + (compose-circumflex-map [?j] #x0135) ;; SMALL J WITH CIRCUMFLEX + (compose-circumflex-map [?o] #x00f4) ;; SMALL O WITH CIRCUMFLEX + (compose-circumflex-map [?s] #x015d) ;; SMALL S WITH CIRCUMFLEX + (compose-circumflex-map [?u] #x00fb) ;; SMALL U WITH CIRCUMFLEX + (compose-circumflex-map [?w] #x0175) ;; SMALL W WITH CIRCUMFLEX + (compose-circumflex-map [?y] #x0177) ;; SMALL Y WITH CIRCUMFLEX + (compose-circumflex-map [?z] #x1e91) ;; SMALL Z WITH CIRCUMFLEX + (compose-tilde-map [space] #x007E) ;; TILDE + (compose-tilde-map [?A] #x00C3) ;; CAPITAL A WITH TILDE + (compose-tilde-map [?E] #x1EBC) ;; CAPITAL E WITH TILDE + (compose-tilde-map [?I] #x0128) ;; CAPITAL I WITH TILDE + (compose-tilde-map [?N] #x00D1) ;; CAPITAL N WITH TILDE + (compose-tilde-map [?O] #x00D5) ;; CAPITAL O WITH TILDE + (compose-tilde-map [?U] #x0168) ;; CAPITAL U WITH TILDE + (compose-tilde-map [?V] #x1E7C) ;; CAPITAL V WITH TILDE + (compose-tilde-map [?Y] #x1EF8) ;; CAPITAL Y WITH TILDE + (compose-tilde-map [?a] #x00E3) ;; SMALL A WITH TILDE + (compose-tilde-map [?e] #x1EBD) ;; SMALL E WITH TILDE + (compose-tilde-map [?i] #x0129) ;; SMALL I WITH TILDE + (compose-tilde-map [?n] #x00F1) ;; SMALL N WITH TILDE + (compose-tilde-map [?o] #x00F5) ;; SMALL O WITH TILDE + (compose-tilde-map [?u] #x0169) ;; SMALL U WITH TILDE + (compose-tilde-map [?v] #x1E7D) ;; SMALL V WITH TILDE + (compose-tilde-map [?y] #x1EF9) ;; SMALL Y WITH TILDE + (compose-ring-map [space] #x00B0) ;; DEGREE SIGN + (compose-ring-map [?A] #x00C5) ;; CAPITAL A WITH RING ABOVE + (compose-ring-map [?U] #x016E) ;; CAPITAL U WITH RING ABOVE + (compose-ring-map [?a] #x00E5) ;; SMALL A WITH RING ABOVE + (compose-ring-map [?u] #x016F) ;; SMALL U WITH RING ABOVE + (compose-ring-map [?w] #x1E98) ;; SMALL W WITH RING ABOVE + (compose-ring-map [?y] #x1E99) ;; SMALL Y WITH RING ABOVE + (compose-caron-map [space] #x02C7) ;; CARON + (compose-caron-map [?A] #x01CD) ;; CAPITAL A WITH CARON + (compose-caron-map [?C] #x010C) ;; CAPITAL C WITH CARON + (compose-caron-map [?D] #x010E) ;; CAPITAL D WITH CARON + (compose-caron-map [U01F1] #x01C4) ;; CAPITAL DZ WITH CARON + (compose-caron-map [?E] #x011A) ;; CAPITAL E WITH CARON + (compose-caron-map [U01B7] #x01EE) ;; CAPITAL EZH WITH CARON + (compose-caron-map [?G] #x01E6) ;; CAPITAL G WITH CARON + (compose-caron-map [?H] #x021E) ;; CAPITAL H WITH CARON + (compose-caron-map [?I] #x01CF) ;; CAPITAL I WITH CARON + (compose-caron-map [?K] #x01E8) ;; CAPITAL K WITH CARON + (compose-caron-map [?L] #x013D) ;; CAPITAL L WITH CARON + (compose-caron-map [?N] #x0147) ;; CAPITAL N WITH CARON + (compose-caron-map [?O] #x01D1) ;; CAPITAL O WITH CARON + (compose-caron-map [?R] #x0158) ;; CAPITAL R WITH CARON + (compose-caron-map [?S] #x0160) ;; CAPITAL S WITH CARON + (compose-caron-map [?T] #x0164) ;; CAPITAL T WITH CARON + (compose-caron-map [?U] #x01D3) ;; CAPITAL U WITH CARON + (compose-caron-map [?Z] #x017D) ;; CAPITAL Z WITH CARON + (compose-caron-map [?a] #x01CE) ;; SMALL A WITH CARON + (compose-caron-map [?c] #x010D) ;; SMALL C WITH CARON + (compose-caron-map [?d] #x010F) ;; SMALL D WITH CARON + (compose-caron-map [U01F3] #x01C6) ;; SMALL DZ WITH CARON + (compose-caron-map [?e] #x011B) ;; SMALL E WITH CARON + (compose-caron-map [U0292] #x01EF) ;; SMALL EZH WITH CARON + (compose-caron-map [?g] #x01E7) ;; SMALL G WITH CARON + (compose-caron-map [?h] #x021F) ;; SMALL H WITH CARON + (compose-caron-map [?i] #x01D0) ;; SMALL I WITH CARON + (compose-caron-map [?j] #x01F0) ;; SMALL J WITH CARON + (compose-caron-map [?k] #x01E9) ;; SMALL K WITH CARON + (compose-caron-map [?l] #x013E) ;; SMALL L WITH CARON + (compose-caron-map [?n] #x0148) ;; SMALL N WITH CARON + (compose-caron-map [?o] #x01D2) ;; SMALL O WITH CARON + (compose-caron-map [?r] #x0159) ;; SMALL R WITH CARON + (compose-caron-map [?s] #x0161) ;; SMALL S WITH CARON + (compose-caron-map [?t] #x0165) ;; SMALL T WITH CARON + (compose-caron-map [?u] #x01D4) ;; SMALL U WITH CARON + (compose-caron-map [?z] #x017E) ;; SMALL Z WITH CARON + (compose-macron-map [space] #x00AF) ;; MACRON + (compose-macron-map [?A] #x0100) ;; CAPITAL A WITH MACRON + (compose-macron-map [AE] #x01E2) ;; CAPITAL AE WITH MACRON + (compose-macron-map [?E] #x0112) ;; CAPITAL E WITH MACRON + (compose-macron-map [?G] #x1E20) ;; CAPITAL G WITH MACRON + (compose-macron-map [?I] #x012A) ;; CAPITAL I WITH MACRON + (compose-macron-map [?O] #x014C) ;; CAPITAL O WITH MACRON + (compose-macron-map [?U] #x016A) ;; CAPITAL U WITH MACRON + (compose-macron-map [?Y] #x0232) ;; CAPITAL Y WITH MACRON + (compose-macron-map [?a] #x0101) ;; SMALL A WITH MACRON + (compose-macron-map [ae] #x01E3) ;; SMALL AE WITH MACRON + (compose-macron-map [?e] #x0113) ;; SMALL E WITH MACRON + (compose-macron-map [?g] #x1E21) ;; SMALL G WITH MACRON + (compose-macron-map [?i] #x012B) ;; SMALL I WITH MACRON + (compose-macron-map [?o] #x014D) ;; SMALL O WITH MACRON + (compose-macron-map [?u] #x016B) ;; SMALL U WITH MACRON + (compose-macron-map [?y] #x0233) ;; SMALL Y WITH MACRON + (compose-doubleacute-map [space] #x02DD) ;; DOUBLE ACUTE ACCENT + (compose-doubleacute-map [?O] #x0150) ;; CAPITAL O WITH DOUBLE ACUTE + (compose-doubleacute-map [?U] #x0170) ;; CAPITAL U WITH DOUBLE ACUTE + (compose-doubleacute-map [?o] #x0151) ;; SMALL O WITH DOUBLE ACUTE + (compose-doubleacute-map [?u] #x0171) ;; SMALL U WITH DOUBLE ACUTE + (compose-ogonek-map [space] #x02DB) ;; OGONEK + (compose-ogonek-map [?A] #x0104) ;; CAPITAL A WITH OGONEK + (compose-ogonek-map [?E] #x0118) ;; CAPITAL E WITH OGONEK + (compose-ogonek-map [?I] #x012E) ;; CAPITAL I WITH OGONEK + (compose-ogonek-map [?O] #x01EA) ;; CAPITAL O WITH OGONEK + (compose-ogonek-map [?U] #x0172) ;; CAPITAL U WITH OGONEK + (compose-ogonek-map [?a] #x0105) ;; SMALL A WITH OGONEK + (compose-ogonek-map [?e] #x0119) ;; SMALL E WITH OGONEK + (compose-ogonek-map [?i] #x012F) ;; SMALL I WITH OGONEK + (compose-ogonek-map [?o] #x01EB) ;; SMALL O WITH OGONEK + (compose-ogonek-map [?u] #x0173) ;; SMALL U WITH OGONEK + (compose-breve-map [space] #x02D8) ;; BREVE + (compose-breve-map [?A] #x0102) ;; CAPITAL A WITH BREVE + (compose-breve-map [?E] #x0114) ;; CAPITAL E WITH BREVE + (compose-breve-map [?G] #x011E) ;; CAPITAL G WITH BREVE + (compose-breve-map [?I] #x012C) ;; CAPITAL I WITH BREVE + (compose-breve-map [?O] #x014E) ;; CAPITAL O WITH BREVE + (compose-breve-map [?U] #x016C) ;; CAPITAL U WITH BREVE + (compose-breve-map [?a] #x0103) ;; SMALL A WITH BREVE + (compose-breve-map [?e] #x0115) ;; SMALL E WITH BREVE + (compose-breve-map [?g] #x011F) ;; SMALL G WITH BREVE + (compose-breve-map [?i] #x012D) ;; SMALL I WITH BREVE + (compose-breve-map [?o] #x014F) ;; SMALL O WITH BREVE + (compose-breve-map [?u] #x016D) ;; SMALL U WITH BREVE + (compose-dot-map [space] #x02D9) ;; DOT ABOVE + (compose-dot-map [?A] #x0226) ;; CAPITAL A WITH DOT ABOVE + (compose-dot-map [?B] #x1E02) ;; CAPITAL B WITH DOT ABOVE + (compose-dot-map [?C] #x010A) ;; CAPITAL C WITH DOT ABOVE + (compose-dot-map [?D] #x1E0A) ;; CAPITAL D WITH DOT ABOVE + (compose-dot-map [?E] #x0116) ;; CAPITAL E WITH DOT ABOVE + (compose-dot-map [?F] #x1E1E) ;; CAPITAL F WITH DOT ABOVE + (compose-dot-map [?G] #x0120) ;; CAPITAL G WITH DOT ABOVE + (compose-dot-map [?H] #x1E22) ;; CAPITAL H WITH DOT ABOVE + (compose-dot-map [?I] #x0130) ;; CAPITAL I WITH DOT ABOVE + (compose-dot-map [?M] #x1E40) ;; CAPITAL M WITH DOT ABOVE + (compose-dot-map [?N] #x1E44) ;; CAPITAL N WITH DOT ABOVE + (compose-dot-map [?O] #x022E) ;; CAPITAL O WITH DOT ABOVE + (compose-dot-map [?P] #x1E56) ;; CAPITAL P WITH DOT ABOVE + (compose-dot-map [?R] #x1E58) ;; CAPITAL R WITH DOT ABOVE + (compose-dot-map [?S] #x1E60) ;; CAPITAL S WITH DOT ABOVE + (compose-dot-map [?T] #x1E6A) ;; CAPITAL T WITH DOT ABOVE + (compose-dot-map [?W] #x1E86) ;; CAPITAL W WITH DOT ABOVE + (compose-dot-map [?X] #x1E8A) ;; CAPITAL X WITH DOT ABOVE + (compose-dot-map [?Y] #x1E8E) ;; CAPITAL Y WITH DOT ABOVE + (compose-dot-map [?Z] #x017B) ;; CAPITAL Z WITH DOT ABOVE + (compose-dot-map [?a] #x0227) ;; SMALL A WITH DOT ABOVE + (compose-dot-map [?b] #x1E03) ;; SMALL B WITH DOT ABOVE + (compose-dot-map [?c] #x010B) ;; SMALL C WITH DOT ABOVE + (compose-dot-map [?d] #x1E0B) ;; SMALL D WITH DOT ABOVE + (compose-dot-map [?e] #x0117) ;; SMALL E WITH DOT ABOVE + (compose-dot-map [?f] #x1E1F) ;; SMALL F WITH DOT ABOVE + (compose-dot-map [?g] #x0121) ;; SMALL G WITH DOT ABOVE + (compose-dot-map [?h] #x1E23) ;; SMALL H WITH DOT ABOVE + (compose-dot-map [U017F] #x1E9B) ;; SMALL LONG S WITH DOT ABOVE + (compose-dot-map [?m] #x1E41) ;; SMALL M WITH DOT ABOVE + (compose-dot-map [?n] #x1E45) ;; SMALL N WITH DOT ABOVE + (compose-dot-map [?o] #x022F) ;; SMALL O WITH DOT ABOVE + (compose-dot-map [?p] #x1E57) ;; SMALL P WITH DOT ABOVE + (compose-dot-map [?r] #x1E59) ;; SMALL R WITH DOT ABOVE + (compose-dot-map [?s] #x1E61) ;; SMALL S WITH DOT ABOVE + (compose-dot-map [?t] #x1E6B) ;; SMALL T WITH DOT ABOVE + (compose-dot-map [?w] #x1E87) ;; SMALL W WITH DOT ABOVE + (compose-dot-map [?x] #x1E8B) ;; SMALL X WITH DOT ABOVE + (compose-dot-map [?y] #x1E8F) ;; SMALL Y WITH DOT ABOVE + (compose-dot-map [?z] #x017C) ;; SMALL Z WITH DOT ABOVE + (compose-dot-map [?i] #x0131) ;; SMALL DOTLESS I + (compose-dot-map [?j] #x0237) ;; SMALL DOTLESS J + ;; There is nothing obvious we can bind space to on compose-hook-map, + ;; these are IPA characters that are in Unicode theory not + ;; precomposed. + (compose-hook-map [?B] #x0181) ;; CAPITAL B WITH HOOK + (compose-hook-map [?C] #x0187) ;; CAPITAL C WITH HOOK + (compose-hook-map [?D] #x018A) ;; CAPITAL D WITH HOOK + (compose-hook-map [?F] #x0191) ;; CAPITAL F WITH HOOK + (compose-hook-map [?G] #x0193) ;; CAPITAL G WITH HOOK + (compose-hook-map [?K] #x0198) ;; CAPITAL K WITH HOOK + (compose-hook-map [?P] #x01A4) ;; CAPITAL P WITH HOOK + (compose-hook-map [?T] #x01AC) ;; CAPITAL T WITH HOOK + (compose-hook-map [?V] #x01B2) ;; CAPITAL V WITH HOOK + (compose-hook-map [?Y] #x01B3) ;; CAPITAL Y WITH HOOK + (compose-hook-map [?Z] #x0224) ;; CAPITAL Z WITH HOOK + (compose-hook-map [U0262] #x029B) ;; SMALL CAPITAL G WITH HOOK + (compose-hook-map [?b] #x0253) ;; SMALL B WITH HOOK + (compose-hook-map [?c] #x0188) ;; SMALL C WITH HOOK + (compose-hook-map [?d] #x0257) ;; SMALL D WITH HOOK + (compose-hook-map [?f] #x0192) ;; SMALL F WITH HOOK + (compose-hook-map [?g] #x0260) ;; SMALL G WITH HOOK + (compose-hook-map [?h] #x0266) ;; SMALL H WITH HOOK + (compose-hook-map [U0266] #x0267) ;; SMALL HENG WITH HOOK + (compose-hook-map [?k] #x0199) ;; SMALL K WITH HOOK + (compose-hook-map [?m] #x0271) ;; SMALL M WITH HOOK + (compose-hook-map [?p] #x01A5) ;; SMALL P WITH HOOK + (compose-hook-map [?q] #x02A0) ;; SMALL Q WITH HOOK + (compose-hook-map [U025C] #x025D) ;; SMALL REVERSED OPEN E WITH HOOK + (compose-hook-map [?s] #x0282) ;; SMALL S WITH HOOK + (compose-hook-map [U0259] #x025A) ;; SMALL SCHWA WITH HOOK + (compose-hook-map [?t] #x01AD) ;; SMALL T WITH HOOK + (compose-hook-map [U0279] #x027B) ;; SMALL TURNED R WITH HOOK + (compose-hook-map [?v] #x028B) ;; SMALL V WITH HOOK + (compose-hook-map [?y] #x01B4) ;; SMALL Y WITH HOOK + (compose-hook-map [?z] #x0225) ;; SMALL Z WITH HOOK + (compose-horn-map [space] #x031b) + (compose-horn-map [?O] #x01A0) ;; CAPITAL O WITH HORN + (compose-horn-map [?U] #x01AF) ;; CAPITAL U WITH HORN + (compose-horn-map [?o] #x01A1) ;; SMALL O WITH HORN + (compose-horn-map [?u] #x01B0))) ;; SMALL U WITH HORN ;;; The rest of the compose-map. These are the composed characters @@ -532,53 +828,17 @@ (define-key compose-map "||" [(?\246)]) -;; [[ Suppose we type these three physical keys: [Multi_key " a] -;; Xlib can deliver these keys as the following sequences of keysyms: -;; -;; - [Multi_key " a] (no surprise here) -;; - [adiaeresis] (OK, Xlib is doing compose processing for us) -;; - [Multi_key " adiaeresis] (Huh?) -;; -;; It is the last possibility that is arguably a bug. Xlib can't -;; decide whether it's really doing compose processing or not (or -;; actually, different parts of Xlib disagree). -;; -;; So we'll just convert [Multi_key " adiaeresis] to [adiaeresis] ]] - -(eval-when-compile - (when nil ;; Commenting out. - - ;; This _used_ to work with our X11-oriented keysyms above. With them - ;; gone, it won't. The X11 bug it works around should be long dead. (Ha! - ;; Wasn't it cockroaches that would have ruled the planet after World - ;; War III?) - - (defun xlib-input-method-bug-workaround (keymap) - (map-keymap - (lambda (key value) - (cond - ((keymapp value) - (xlib-input-method-bug-workaround value)) - ((and (sequencep value) - (eq 1 (length value)) - (null (lookup-key keymap value))) - (define-key keymap value value)))) - keymap)) - (xlib-input-method-bug-workaround compose-map) - (unintern 'xlib-input-method-bug-workaround))) - -;; While we're at it, a similar mechanism will make colon equivalent -;; to doublequote for diaeresis processing. Some Xlibs do this. -(defun alias-colon-to-doublequote (keymap) - (map-keymap - (lambda (key value) - (when (keymapp value) - (alias-colon-to-doublequote value)) - (when (eq key '\") - (define-key keymap ":" value))) - keymap)) -(alias-colon-to-doublequote compose-map) -(unintern 'alias-colon-to-doublequote) +;; Make colon equivalent to doublequote for diaeresis processing. Some +;; Xlibs do this. +(flet ((alias-colon-to-doublequote (keymap) + (map-keymap + #'(lambda (key value) + (when (keymapp value) + (alias-colon-to-doublequote value)) + (when (eq key '\") + (define-key keymap ":" value))) + keymap))) + (alias-colon-to-doublequote compose-map)) ;;; Electric dead keys: making a' mean a-acute. @@ -587,7 +847,7 @@ "Modify the previous character with an accent. For example, if `:' is bound to this command, then typing `a:' will first insert `a' and then turn it into `\344' (adiaeresis). -The keys to which this command may be bound (and the accents +The minimum list of keys to which this command may be bound (and the accents which it understands) are: ' (acute) \301\311\315\323\332\335 \341\351\355\363\372\375 @@ -621,10 +881,13 @@ (mod-char (and (>= (downcase base-char) ?a) ; only do alphabetics? (<= (downcase base-char) ?z) (lookup-key map (make-string 1 base-char))))) - (if (and (vectorp mod-char) (= (length mod-char) 1)) - (setq mod-char (aref mod-char 0))) + (when (and (vectorp mod-char) (= (length mod-char) 1)) + (setq mod-char (aref mod-char 0)) + (if (and (consp mod-char) (= (length mod-char) 1) + (characterp (car mod-char))) + (setq mod-char (car mod-char)))) (if (and mod-char (symbolp mod-char)) - (setq mod-char (or (get mod-char 'character-of-keysym) mod-char))) + (setq mod-char (or (get-character-of-keysym mod-char) mod-char))) (if (and mod-char (> count 0)) (delete-char -1) (setq mod-char c)) @@ -658,93 +921,6 @@ ;; (? "/")) ; no special code -;;; Providing help in the middle of a compose sequence. (Way cool.) - -(eval-when-compile - (defsubst next-composable-event () - (let (event) - (while (progn - (setq event (next-command-event)) - (not (or (key-press-event-p event) - (button-press-event-p event)))) - (dispatch-event event)) - event))) - -(defun compose-help (ignore-prompt) - (let* ((keys (apply 'vector (nbutlast (append (this-command-keys) nil)))) - (map (or (lookup-key function-key-map keys) - (error "can't find map? %s %s" keys (this-command-keys)))) - binding) - (save-excursion - (with-output-to-temp-buffer "*Help*" - (set-buffer "*Help*") - (erase-buffer) - (message "Working...") - (setq ctl-arrow 'compose) ; non-t-non-nil - (insert "You are typing a compose sequence. So far you have typed: ") - (insert (key-description keys)) - (insert "\nCompletions from here are:\n\n") - (map-keymap 'compose-help-mapper map t) - (message "? "))) - (while (keymapp map) - (setq binding (lookup-key map (vector (next-composable-event)))) - (if (null binding) - (message "No such key in keymap. Try again.") - (setq map binding))) - binding)) - -(put 'compose-help 'isearch-command t) ; so that it doesn't terminate isearch - -(defun compose-help-mapper (key binding) - (if (and (symbolp key) - (get key 'character-of-keysym)) - (setq key (get key 'character-of-keysym))) - (if (eq binding 'compose-help) ; suppress that... - nil - (if (keymapp binding) - (let ((p (point))) - (map-keymap 'compose-help-mapper binding t) - (goto-char p) - (while (not (eobp)) - (if (characterp key) - (insert (make-string 1 key)) - (insert (single-key-description key))) - (insert " ") - (forward-line 1))) - (if (characterp key) - (insert (make-string 1 key)) - (insert (single-key-description key))) - (indent-to 16) - (let ((code (and (vectorp binding) - (= 1 (length binding)) - (get (aref binding 0) 'character-of-keysym)))) - (if code - (insert (make-string 1 code)) - (if (stringp binding) - (insert binding) - (insert (prin1-to-string binding))))) - (when (and (vectorp binding) (= 1 (length binding))) - (indent-to 32) - (insert (symbol-name (aref binding 0))))) - (insert "\n"))) - -;; define it at top-level in the compose map... -;;(define-key compose-map [(control h)] 'compose-help) -;;(define-key compose-map [help] 'compose-help) -;; and then define it in each sub-map of the compose map. -(map-keymap - (lambda (key binding) - (when (keymapp binding) -;; (define-key binding [(control h)] 'compose-help) -;; (define-key binding [help] 'compose-help) - )) - compose-map nil) - -;; Make redisplay display the accented letters -(if (memq (default-value 'ctl-arrow) '(t nil)) - (setq-default ctl-arrow 'iso-8859/1)) - - (provide 'x-compose) ;;; x-compose.el ends here
--- a/lisp/x-init.el Thu Feb 26 18:35:11 2009 +0900 +++ b/lisp/x-init.el Sun Mar 01 11:11:46 2009 +0000 @@ -86,13 +86,14 @@ ;; Sun have done to the default keymap for the Sun keyboards. (defun x-initialize-compose (device) "Enable compose key and dead key processing on DEVICE." - (autoload 'compose-map "x-compose" nil t 'keymap) - (autoload 'compose-acute-map "x-compose" nil t 'keymap) - (autoload 'compose-grave-map "x-compose" nil t 'keymap) - (autoload 'compose-cedilla-map "x-compose" nil t 'keymap) - (autoload 'compose-diaeresis-map "x-compose" nil t 'keymap) - (autoload 'compose-circumflex-map "x-compose" nil t 'keymap) - (autoload 'compose-tilde-map "x-compose" nil t 'keymap) + (loop for map in '(compose-map compose-acute-map compose-grave-map + compose-cedilla-map compose-diaeresis-map + compose-circumflex-map compose-tilde-map + compose-ring-map compose-caron-map compose-macron-map + compose-breve-map compose-dot-map + compose-doubleacute-map compose-ogonek-map + compose-hook-map compose-horn-map) + do (autoload map "x-compose" nil t 'keymap)) (loop for (key map) @@ -195,10 +196,19 @@ (dead-acute compose-acute-map) (dead-grave compose-grave-map) (dead-cedilla compose-cedilla-map) - (dead-diaeresis compose-diaeresis-map) + (dead-diaeresis compose-diaeresis-map) (dead-circum compose-circumflex-map) (dead-circumflex compose-circumflex-map) - (dead-tilde compose-tilde-map)) + (dead-tilde compose-tilde-map) + (dead-abovering compose-ring-map) + (dead-caron compose-caron-map) + (dead-macron compose-macron-map) + (dead-breve compose-breve-map) + (dead-abovedot compose-dot-map) + (dead-doubleacute compose-doubleacute-map) + (dead-ogonek compose-ogonek-map) + (dead-hook compose-hook-map) + (dead-horn compose-horn-map)) ;; Get the correct value for function-key-map with function-key-map = (symbol-value-in-console 'function-key-map