Mercurial > emacs
annotate lisp/international/iso-acc.el @ 4721:d34c02ddea9f
Fix lots of doc strings.
(iso-accents-mode): Positive arg means enable.
No arg means toggle.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 14 Sep 1993 18:20:59 +0000 |
parents | 797fe2b66800 |
children | 4d378f483cf4 |
rev | line source |
---|---|
4720 | 1 ;;; iso-acc.el -- minor mode providing electric accent keys |
2 ;;; Copyright (C) 1993 Free Software Foundation, Inc. | |
3 | |
4 ;; Author: Johan Vromans <jv@mh.nl> | |
5 ;; Version: 1.4 | |
6 | |
7 ;; This file is part of GNU Emacs. | |
8 | |
9 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
10 ;; it under the terms of the GNU General Public License as published by | |
11 ;; the Free Software Foundation; either version 2, or (at your option) | |
12 ;; any later version. | |
13 | |
14 ;; GNU Emacs is distributed in the hope that it will be useful, | |
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 ;; GNU General Public License for more details. | |
18 | |
19 ;; You should have received a copy of the GNU General Public License | |
20 ;; along with GNU Emacs; see the file COPYING. If not, write to | |
21 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
22 | |
23 ;;; Commentary: | |
24 | |
25 ;; Function `iso-accents' activates a minor mode (`iso-accents-minor-mode') | |
26 ;; in which typewriter "dead keys" are emulated. The purpose of this | |
27 ;; emulation is to provide a simple means for inserting accented | |
28 ;; characters according to the ISO-8859-1 character set. | |
29 ;; | |
30 ;; In `iso-accents-minor-mode', pseudo accent characters are used to | |
31 ;; introduce accented keys. The pseudo-accent characterss are: | |
32 ;; | |
33 ;; ' (minute) -> grave accent | |
34 ;; ` (backtick) -> acute accent | |
35 ;; " (second) -> diaeresis | |
36 ;; ^ (caret) -> circonflexe | |
37 ;; | |
38 ;; The action taken depends on the key that follows the pseudo accent. | |
39 ;; In general: | |
40 ;; | |
41 ;; pseudo-accent + appropriate letter -> accented letter | |
42 ;; pseudo-accent + space -> pseudo-accent | |
43 ;; pseudo-accent + pseudo-accent -> accent (if available) | |
44 ;; pseudo-accent + other -> pseudo-accent + other | |
45 ;; | |
46 ;; If the pseudo-accent is followed by anything else than a | |
47 ;; self-insert-command, the dead-key code is terminated, the | |
48 ;; pseudo-accent inserted 'as is' and the bell is rung to signal this. | |
49 ;; | |
4721
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
50 ;; Function `iso-accents-mode' can be used to enable the iso accents |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
51 ;; minor mode, or disable it. |
4720 | 52 |
53 ;;; Code: | |
54 | |
55 (provide 'iso-acc) | |
56 | |
57 (defvar iso-accents-list | |
58 '(((?' ?A) ?\301) | |
59 ((?' ?E) ?\311) | |
60 ((?' ?I) ?\315) | |
61 ((?' ?O) ?\323) | |
62 ((?' ?U) ?\332) | |
63 ((?' ?a) ?\341) | |
64 ((?' ?e) ?\351) | |
65 ((?' ?i) ?\355) | |
66 ((?' ?o) ?\363) | |
67 ((?' ?u) ?\372) | |
68 ((?' ?') ?\264) | |
69 ((?' ? ) ?') | |
70 ((?` ?A) ?\300) | |
71 ((?` ?E) ?\310) | |
72 ((?` ?I) ?\314) | |
73 ((?` ?O) ?\322) | |
74 ((?` ?U) ?\331) | |
75 ((?` ?a) ?\340) | |
76 ((?` ?e) ?\350) | |
77 ((?` ?i) ?\354) | |
78 ((?` ?o) ?\362) | |
79 ((?` ?u) ?\371) | |
80 ((?` ? ) ?`) | |
81 ((?` ?`) ?`) ; no special code? | |
82 ((?` ?A) ?\302) | |
83 ((?^ ?E) ?\312) | |
84 ((?^ ?I) ?\316) | |
85 ((?^ ?O) ?\324) | |
86 ((?^ ?U) ?\333) | |
87 ((?^ ?a) ?\342) | |
88 ((?^ ?e) ?\352) | |
89 ((?^ ?i) ?\356) | |
90 ((?^ ?o) ?\364) | |
91 ((?^ ?u) ?\373) | |
92 ((?^ ? ) ?^) | |
93 ((?^ ?^) ?^) ; no special code? | |
94 ((?\" ?A) ?\304) | |
95 ((?\" ?E) ?\313) | |
96 ((?\" ?I) ?\317) | |
97 ((?\" ?O) ?\326) | |
98 ((?\" ?U) ?\334) | |
99 ((?\" ?a) ?\344) | |
100 ((?\" ?e) ?\353) | |
101 ((?\" ?i) ?\357) | |
102 ((?\" ?o) ?\366) | |
103 ((?\" ?u) ?\374) | |
104 ((?\" ? ) ?\") | |
105 ((?\" ?\") ?\250) | |
106 ) | |
4721
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
107 "Association list for ISO accent combinations.") |
4720 | 108 |
109 (defun iso-accents-dead-key () | |
4721
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
110 "Modify the following character by adding an accent to it." |
4720 | 111 (interactive) |
112 | |
113 ;; Pick up the dead-key. | |
114 (let ((first-char last-command-char)) | |
115 | |
116 ;; Display it and backup. | |
117 (insert first-char) | |
118 (backward-char 1) | |
119 | |
120 ;; Wait for the second key and look up the combination in the list. | |
121 (let* ((second-char (read-event)) | |
122 (entry (assoc (list first-char second-char) iso-accents-list))) | |
123 (if entry | |
124 ;; Found it: delete the first character and insert the combination. | |
125 (progn | |
126 (delete-char 1) | |
127 (insert (car (cdr entry)))) | |
128 | |
129 ;; Otherwise, advance and schedule the second key for execution. | |
130 (forward-char 1) | |
131 (setq unread-command-events (list second-char)) | |
132 | |
133 ;; If it is not a self-insert-command, ring the terminal bell. | |
134 (or (eq (key-binding (make-vector 1 second-char)) 'self-insert-command) | |
135 (beep 1)))))) | |
136 | |
137 (defvar iso-accents-minor-mode nil | |
4721
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
138 "*Non-nil enables ISO-accents mode. |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
139 See `iso-accents-mode'." |
4720 | 140 |
141 (defvar iso-accents-prefix-map nil | |
4721
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
142 "Keymap for ISO-accents minor mode.") |
4720 | 143 |
144 ;; It is a matter of taste if you want the minor mode indicated | |
145 ;; in the mode line... | |
146 ;; If so, uncomment the next three lines. | |
147 ;; (or (assq 'iso-accents-minor-mode minor-mode-map-alist) | |
148 ;; (setq minor-mode-alist | |
149 ;; (append minor-mode-alist | |
150 ;; '((iso-accents-minor-mode " ISO-Acc"))))) | |
151 | |
152 ;;;###autoload | |
4721
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
153 (defun iso-accents-mode (&optional arg) |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
154 "Toggle a minor mode in which accent modify the following letter. |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
155 This permits easy insertion of accented characters according to ISO-8859-1. |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
156 When Iso-accents mode is enabled, accent character keys |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
157 \(', \", ^ and ~) do not self-insert; instead, they modify the following |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
158 letter key so that it inserts an ISO accented letter. |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
159 |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
160 With an argument, a positive argument enables ISO-accents mode, |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
161 and a negative argument disables it." |
4720 | 162 ;; When called, a buffer local variable iso-accents-minor-mode is created |
163 ;; to record iso-accents-minor-mode status. | |
164 ;; A minor mode map `iso-accents-prefix-map' is used to activate the dead | |
165 ;; key handling dependend on the value of iso-accents-minor-mode. | |
166 | |
167 (interactive "P") | |
168 | |
169 ;; Create buffer local variable iso-accents-minor-mode. | |
170 (make-local-variable 'iso-accents-minor-mode) | |
171 | |
4721
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
172 (if (if arg |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
173 ;; Negative arg means switch it off. |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
174 (<= (prefix-numeric-value arg) 0) |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
175 ;; No arg means toggle. |
d34c02ddea9f
Fix lots of doc strings.
Richard M. Stallman <rms@gnu.org>
parents:
4720
diff
changeset
|
176 iso-accents-minor-mode) |
4720 | 177 (setq iso-accents-minor-mode nil) |
178 | |
179 ;; Enable electric accents. | |
180 (setq iso-accents-minor-mode t) | |
181 | |
182 ;; Create the minor-mode keymap, if needed. | |
183 (or iso-accents-prefix-map | |
184 (progn | |
185 (setq iso-accents-prefix-map (make-sparse-keymap)) | |
186 (define-key iso-accents-prefix-map "'" 'iso-accents-dead-key) | |
187 (define-key iso-accents-prefix-map "`" 'iso-accents-dead-key) | |
188 (define-key iso-accents-prefix-map "^" 'iso-accents-dead-key) | |
189 (define-key iso-accents-prefix-map "\"" 'iso-accents-dead-key) | |
190 | |
191 ;; Add the dead key minor mode map to the minor mode maps. | |
192 (or (assq 'iso-accents-minor-mode minor-mode-map-alist) | |
193 (setq minor-mode-map-alist | |
194 (cons (cons 'iso-accents-minor-mode iso-accents-prefix-map) | |
195 minor-mode-map-alist))))))) | |
196 | |
197 ;;; iso-acc.el ends here | |
198 |