diff options
| author | Richard M. Stallman | 1996-09-09 22:19:42 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1996-09-09 22:19:42 +0000 |
| commit | 97966523893c912a1a4a1abbfa023e2cb671b00c (patch) | |
| tree | f6779400d79c198327869dc141723c1bdd7b5858 | |
| parent | 4ad679f96da97825a435291c5fb820810e10495b (diff) | |
| download | emacs-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.el | 69 |
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)) |