aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1996-09-09 22:19:42 +0000
committerRichard M. Stallman1996-09-09 22:19:42 +0000
commit97966523893c912a1a4a1abbfa023e2cb671b00c (patch)
treef6779400d79c198327869dc141723c1bdd7b5858
parent4ad679f96da97825a435291c5fb820810e10495b (diff)
downloademacs-97966523893c912a1a4a1abbfa023e2cb671b00c.tar.gz
emacs-97966523893c912a1a4a1abbfa023e2cb671b00c.zip
(iso-transl-dead-key-alist): Add dead-...
and S-dead-... key names to this list. (key-translation-map): Don't define dead-... and S-dead... here. (iso-transl-define-keys): Handle multiple matches in iso-transl-dead-key-alist for one accent character.
-rw-r--r--lisp/international/iso-transl.el69
1 files changed, 37 insertions, 32 deletions
diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-transl.el
index 284f02ed05a..c322a6899a0 100644
--- a/lisp/international/iso-transl.el
+++ b/lisp/international/iso-transl.el
@@ -37,26 +37,28 @@
37 '((?\' . mute-acute) 37 '((?\' . mute-acute)
38 (?\` . mute-grave) 38 (?\` . mute-grave)
39 (?\" . mute-diaeresis) 39 (?\" . mute-diaeresis)
40 (?^ . mute-asciicircum) ;; Don't use \, since \^ is special. 40 (?^ . mute-asciicircum)
41 (?\~ . mute-asciitilde)) 41 (?\~ . mute-asciitilde)
42 (?\' . dead-acute)
43 (?\` . dead-grave)
44 (?\" . dead-diaeresis)
45 (?^ . dead-asciicircum)
46 (?\~ . dead-asciitilde)
47 (?^ . dead-circum)
48 (?^ . dead-circumflex)
49 (?\~ . dead-tilde)
50 ;; Someone reports that these keys don't work if shifted.
51 ;; This might fix it--no word yet.
52 (?\' . S-dead-acute)
53 (?\` . S-dead-grave)
54 (?\" . S-dead-diaeresis)
55 (?^ . S-dead-asciicircum)
56 (?\~ . S-dead-asciitilde)
57 (?^ . S-dead-circum)
58 (?^ . S-dead-circumflex)
59 (?\~ . S-dead-tilde))
42 "Mapping of ASCII characters to their corresponding dead-key symbols.") 60 "Mapping of ASCII characters to their corresponding dead-key symbols.")
43 61
44;; Some X servers use these alternate names.
45(or key-translation-map
46 (setq key-translation-map (make-sparse-keymap)))
47(define-key key-translation-map [dead-acute] [mute-acute])
48(define-key key-translation-map [dead-grave] [mute-grave])
49(define-key key-translation-map [dead-diaeresis] [mute-diaeresis])
50(define-key key-translation-map [dead-asciicircum] [mute-asciicircum])
51(define-key key-translation-map [dead-asciitilde] [mute-asciitilde])
52;; Someone reports that these keys don't work if shifted.
53;; This might fix it--no word yet.
54(define-key key-translation-map [S-dead-acute] [mute-acute])
55(define-key key-translation-map [S-dead-grave] [mute-grave])
56(define-key key-translation-map [S-dead-diaeresis] [mute-diaeresis])
57(define-key key-translation-map [S-dead-asciicircum] [mute-asciicircum])
58(define-key key-translation-map [S-dead-asciitilde] [mute-asciitilde])
59
60;; The two-character mnemonics are intended to be available in all languages. 62;; The two-character mnemonics are intended to be available in all languages.
61;; The ones beginning with `*' have one-character synonyms, but a 63;; The ones beginning with `*' have one-character synonyms, but a
62;; language-specific table might override the short form for its own use. 64;; language-specific table might override the short form for its own use.
@@ -213,20 +215,23 @@ sequence VECTOR. (VECTOR is normally one character long.)")
213;; character associated with the string "~n" can be input with `C-x 8 ~ n' 215;; character associated with the string "~n" can be input with `C-x 8 ~ n'
214;; or `Alt-~ n' or `mute-asciitilde n'. 216;; or `Alt-~ n' or `mute-asciitilde n'.
215(defun iso-transl-define-keys (alist) 217(defun iso-transl-define-keys (alist)
216 (while alist 218 (while alist
217 (define-key iso-transl-ctl-x-8-map (car (car alist)) (cdr (car alist))) 219 (define-key iso-transl-ctl-x-8-map (car (car alist)) (cdr (car alist)))
218 (let ((vec (vconcat (car (car alist)))) 220 (let ((inchar (aref (car (car alist)) 0))
219 (deadpair (assq (aref (car (car alist)) 0) 221 (vec (vconcat (car (car alist))))
220 iso-transl-dead-key-alist))) 222 (tail iso-transl-dead-key-alist))
221 (aset vec 0 (logior (aref vec 0) ?\A-\^@)) 223 (aset vec 0 (logior (aref vec 0) ?\A-\^@))
222 (define-key key-translation-map vec (cdr (car alist))) 224 (define-key key-translation-map vec (cdr (car alist)))
223 (define-key isearch-mode-map (vector (aref vec 0)) nil) 225 (define-key isearch-mode-map (vector (aref vec 0)) nil)
224 (if deadpair 226 (while tail
225 (let ((deadvec (copy-sequence vec))) 227 (if (eq (car (car tail)) inchar)
226 (aset deadvec 0 (cdr deadpair)) 228 (let ((deadvec (copy-sequence vec))
227 (define-key isearch-mode-map (vector (aref deadvec 0)) nil) 229 (deadkey (cdr (car tail))))
228 (define-key key-translation-map deadvec (cdr (car alist)))))) 230 (aset deadvec 0 deadkey)
229 (setq alist (cdr alist)))) 231 (define-key isearch-mode-map (vector deadkey) nil)
232 (define-key key-translation-map deadvec (cdr (car alist)))))
233 (setq tail (cdr tail)))))
234 (setq alist (cdr alist)))
230 235
231(defun iso-transl-set-language (lang) 236(defun iso-transl-set-language (lang)
232 (interactive (list (let ((completion-ignore-case t)) 237 (interactive (list (let ((completion-ignore-case t))