Mercurial > hg > xemacs-beta
comparison lisp/egg/egg-jisx0201.el @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | |
children | 8619ce7e4c50 |
comparison
equal
deleted
inserted
replaced
69:804d1389bcd6 | 70:131b0175ea99 |
---|---|
1 ;; Utility for HankakuKana (jisx0201) | |
2 | |
3 ;; This file is part of Egg on Mule (Japanese Environment) | |
4 | |
5 ;; Egg is distributed in the forms of patches to GNU | |
6 ;; Emacs under the terms of the GNU EMACS GENERAL PUBLIC | |
7 ;; LICENSE which is distributed along with GNU Emacs by the | |
8 ;; Free Software Foundation. | |
9 | |
10 ;; Egg is distributed in the hope that it will be useful, | |
11 ;; but WITHOUT ANY WARRANTY; without even the implied | |
12 ;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR | |
13 ;; PURPOSE. See the GNU EMACS GENERAL PUBLIC LICENSE for | |
14 ;; more details. | |
15 | |
16 ;; You should have received a copy of the GNU EMACS GENERAL | |
17 ;; PUBLIC LICENSE along with Nemacs; see the file COPYING. | |
18 ;; If not, write to the Free Software Foundation, 675 Mass | |
19 ;; Ave, Cambridge, MA 02139, USA. | |
20 | |
21 ;;; 92.9.24 created for Mule Ver.0.9.6 by K.Shibata <shibata@sgi.co.jp> | |
22 ;;; 93.8.3 modified for Mule Ver.1.1 by K.Handa <handa@etl.go.jp> | |
23 ;;; Not to define regexp of Japanese word in this file. | |
24 | |
25 (provide 'jisx0201) | |
26 | |
27 (defvar *katakana-alist* | |
28 '(( 161 . "(I'(B" ) | |
29 ( 162 . "(I1(B" ) | |
30 ( 163 . "(I((B" ) | |
31 ( 164 . "(I2(B" ) | |
32 ( 165 . "(I)(B" ) | |
33 ( 166 . "(I3(B" ) | |
34 ( 167 . "(I*(B" ) | |
35 ( 168 . "(I4(B" ) | |
36 ( 169 . "(I+(B" ) | |
37 ( 170 . "(I5(B" ) | |
38 ( 171 . "(I6(B" ) | |
39 ( 172 . "(I6^(B" ) | |
40 ( 173 . "(I7(B" ) | |
41 ( 174 . "(I7^(B" ) | |
42 ( 175 . "(I8(B" ) | |
43 ( 176 . "(I8^(B" ) | |
44 ( 177 . "(I9(B" ) | |
45 ( 178 . "(I9^(B" ) | |
46 ( 179 . "(I:(B" ) | |
47 ( 180 . "(I:^(B" ) | |
48 ( 181 . "(I;(B" ) | |
49 ( 182 . "(I;^(B" ) | |
50 ( 183 . "(I<(B" ) | |
51 ( 184 . "(I<^(B" ) | |
52 ( 185 . "(I=(B" ) | |
53 ( 186 . "(I=^(B" ) | |
54 ( 187 . "(I>(B" ) | |
55 ( 188 . "(I>^(B" ) | |
56 ( 189 . "(I?(B" ) | |
57 ( 190 . "(I?^(B" ) | |
58 ( 191 . "(I@(B" ) | |
59 ( 192 . "(I@^(B" ) | |
60 ( 193 . "(IA(B" ) | |
61 ( 194 . "(IA^(B" ) | |
62 ( 195 . "(I/(B" ) | |
63 ( 196 . "(IB(B" ) | |
64 ( 197 . "(IB^(B" ) | |
65 ( 198 . "(IC(B" ) | |
66 ( 199 . "(IC^(B" ) | |
67 ( 200 . "(ID(B" ) | |
68 ( 201 . "(ID^(B" ) | |
69 ( 202 . "(IE(B" ) | |
70 ( 203 . "(IF(B" ) | |
71 ( 204 . "(IG(B" ) | |
72 ( 205 . "(IH(B" ) | |
73 ( 206 . "(II(B" ) | |
74 ( 207 . "(IJ(B" ) | |
75 ( 208 . "(IJ^(B" ) | |
76 ( 209 . "(IJ_(B" ) | |
77 ( 210 . "(IK(B" ) | |
78 ( 211 . "(IK^(B" ) | |
79 ( 212 . "(IK_(B" ) | |
80 ( 213 . "(IL(B" ) | |
81 ( 214 . "(IL^(B" ) | |
82 ( 215 . "(IL_(B" ) | |
83 ( 216 . "(IM(B" ) | |
84 ( 217 . "(IM^(B" ) | |
85 ( 218 . "(IM_(B" ) | |
86 ( 219 . "(IN(B" ) | |
87 ( 220 . "(IN^(B" ) | |
88 ( 221 . "(IN_(B" ) | |
89 ( 222 . "(IO(B" ) | |
90 ( 223 . "(IP(B" ) | |
91 ( 224 . "(IQ(B" ) | |
92 ( 225 . "(IR(B" ) | |
93 ( 226 . "(IS(B" ) | |
94 ( 227 . "(I,(B" ) | |
95 ( 228 . "(IT(B" ) | |
96 ( 229 . "(I-(B" ) | |
97 ( 230 . "(IU(B" ) | |
98 ( 231 . "(I.(B" ) | |
99 ( 232 . "(IV(B" ) | |
100 ( 233 . "(IW(B" ) | |
101 ( 234 . "(IX(B" ) | |
102 ( 235 . "(IY(B" ) | |
103 ( 236 . "(IZ(B" ) | |
104 ( 237 . "(I[(B" ) | |
105 ( 239 . "(I\(B" ) ; (I\(B -> $B%o(B $B$KJQ49$9$k$h$&$K(B | |
106 ( 238 . "(I\(B" ) ; $B%o$H%n$N=gHV$,8r49$7$F$"$k!#(B | |
107 ( 240 . "(I((B" ) | |
108 ( 241 . "(I*(B" ) | |
109 ( 242 . "(I&(B" ) | |
110 ( 243 . "(I](B" ) | |
111 ( 244 . "(I3^(B" ) | |
112 ( 245 . "(I6(B" ) | |
113 ( 246 . "(I9(B" ))) | |
114 | |
115 (defvar *katakana-kigou-alist* | |
116 '(( 162 . "(I$(B" ) | |
117 ( 163 . "(I!(B" ) | |
118 ( 166 . "(I%(B" ) | |
119 ( 171 . "(I^(B" ) | |
120 ( 172 . "(I_(B" ) | |
121 ( 188 . "(I0(B" ) | |
122 ( 214 . "(I"(B" ) | |
123 ( 215 . "(I#(B" ))) | |
124 | |
125 (defvar *dakuon-list* | |
126 '( ?$B%+(B ?$B%-(B ?$B%/(B ?$B%1(B ?$B%3(B | |
127 ?$B%5(B ?$B%7(B ?$B%9(B ?$B%;(B ?$B%=(B | |
128 ?$B%?(B ?$B%A(B ?$B%D(B ?$B%F(B ?$B%H(B | |
129 ?$B%O(B ?$B%R(B ?$B%U(B ?$B%X(B ?$B%[(B)) | |
130 | |
131 (defvar *handakuon-list* (memq ?$B%O(B *dakuon-list*)) | |
132 | |
133 ;;; | |
134 ;;; $BH>3QJQ49(B | |
135 ;;; | |
136 | |
137 (defun hankaku-katakana-region (start end &optional arg) | |
138 (interactive "r\nP") | |
139 (save-restriction | |
140 (narrow-to-region start end) | |
141 (goto-char (point-min)) | |
142 (let ((regexp (if arg "\\cS\\|\\cK\\|\\cH" "\\cS\\|\\cK"))) | |
143 (while (re-search-forward regexp (point-max) (point-max)) | |
144 (let* ((ch (preceding-char)) | |
145 (ch1 (char-component ch 1)) | |
146 (ch2 (char-component ch 2))) | |
147 (cond ((= ?\241 ch1) | |
148 (let ((val (cdr (assq ch2 *katakana-kigou-alist*)))) | |
149 (if val (progn | |
150 (delete-char -1) | |
151 (insert val))))) | |
152 ((or (= ?\242 ch1) (= ?\250 ch1)) | |
153 nil) | |
154 (t | |
155 (let ((val (cdr (assq ch2 *katakana-alist*)))) | |
156 (if val (progn | |
157 (delete-char -1) | |
158 (insert val))))))))))) | |
159 | |
160 (defun hankaku-katakana-paragraph () | |
161 "hankaku-katakana paragraph at or after point." | |
162 (interactive ) | |
163 (save-excursion | |
164 (forward-paragraph) | |
165 (let ((end (point))) | |
166 (backward-paragraph) | |
167 (hankaku-katakana-region (point) end )))) | |
168 | |
169 (defun hankaku-katakana-sentence () | |
170 "hankaku-katanaka sentence at or after point." | |
171 (interactive ) | |
172 (save-excursion | |
173 (forward-sentence) | |
174 (let ((end (point))) | |
175 (backward-sentence) | |
176 (hankaku-katakana-region (point) end )))) | |
177 | |
178 (defun hankaku-katakana-word (arg) | |
179 (interactive "p") | |
180 (let ((start (point))) | |
181 (forward-word arg) | |
182 (hankaku-katakana-region start (point)))) | |
183 | |
184 ;;; | |
185 ;;; $BA43QJQ49(B | |
186 ;;; | |
187 (defun search-henkan-alist (ch list) | |
188 (let ((ptr list) | |
189 (result nil)) | |
190 (while ptr | |
191 (if (string= ch (cdr (car ptr))) | |
192 (progn | |
193 (setq result (car (car ptr))) | |
194 (setq ptr nil)) | |
195 (setq ptr (cdr ptr)))) | |
196 result)) | |
197 | |
198 (defun zenkaku-katakana-region (start end) | |
199 (interactive "r") | |
200 (save-restriction | |
201 (narrow-to-region start end) | |
202 (goto-char (point-min)) | |
203 (while (re-search-forward "\\ck" (point-max) (point-max)) | |
204 (let ((ch (preceding-char)) | |
205 (wk nil)) | |
206 (cond | |
207 ((= ch ?(I^(B) | |
208 (save-excursion | |
209 (backward-char 1) | |
210 (setq wk (preceding-char))) | |
211 (cond ((= wk ?$B%&(B) | |
212 (delete-char -2) | |
213 (insert "$B%t(B")) | |
214 ((setq wk (memq wk *dakuon-list*)) | |
215 (delete-char -2) | |
216 (insert (1+ (car wk)))) | |
217 (t | |
218 (delete-char -1) | |
219 (insert "$B!+(B")))) | |
220 ((= ch ?(I_(B) | |
221 (save-excursion | |
222 (backward-char 1) | |
223 (setq wk (preceding-char))) | |
224 (if (setq wk (memq wk *handakuon-list*)) | |
225 (progn | |
226 (delete-char -2) | |
227 (insert (+ 2 (car wk)))) | |
228 (progn | |
229 (delete-char -1) | |
230 (insert "$B!,(B")))) | |
231 ((setq wk (search-henkan-alist | |
232 (char-to-string ch) *katakana-alist*)) | |
233 (progn | |
234 (delete-char -1) | |
235 (insert (make-char 'japanese-jisx0208 ?\045 wk)))) | |
236 ((setq wk (search-henkan-alist | |
237 (char-to-string ch) *katakana-kigou-alist*)) | |
238 (progn | |
239 (delete-char -1) | |
240 (insert (make-char 'japanese-jisx0208 ?\041 wk))))))))) | |
241 | |
242 (defun zenkaku-katakana-paragraph () | |
243 "zenkaku-katakana paragraph at or after point." | |
244 (interactive ) | |
245 (save-excursion | |
246 (forward-paragraph) | |
247 (let ((end (point))) | |
248 (backward-paragraph) | |
249 (zenkaku-katakana-region (point) end )))) | |
250 | |
251 (defun zenkaku-katakana-sentence () | |
252 "zenkaku-katakana sentence at or after point." | |
253 (interactive ) | |
254 (save-excursion | |
255 (forward-sentence) | |
256 (let ((end (point))) | |
257 (backward-sentence) | |
258 (zenkaku-katakana-region (point) end )))) | |
259 | |
260 (defun zenkaku-katakana-word (arg) | |
261 (interactive "p") | |
262 (let ((start (point))) | |
263 (forward-word arg) | |
264 (zenkaku-katakana-region start (point)))) | |
265 | |
266 ;;; | |
267 ;;; JISX 0201 fence mode | |
268 ;;; | |
269 | |
270 (defun fence-hankaku-katakana () | |
271 (interactive) | |
272 (hankaku-katakana-region egg:*region-start* egg:*region-end* t)) | |
273 | |
274 (defun fence-katakana () | |
275 (interactive) | |
276 (zenkaku-katakana-region egg:*region-start* egg:*region-end* ) | |
277 (katakana-region egg:*region-start* egg:*region-end*)) | |
278 | |
279 (defun fence-hiragana () | |
280 (interactive) | |
281 (zenkaku-katakana-region egg:*region-start* egg:*region-end*) | |
282 (hiragana-region egg:*region-start* egg:*region-end*)) | |
283 | |
284 (define-key fence-mode-map "\ex" 'fence-hankaku-katakana) |