Mercurial > hg > xemacs-beta
comparison lisp/egg/egg-wnn-client.el @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
69:804d1389bcd6 | 70:131b0175ea99 |
---|---|
1 ;; Wnn3 server interface for Egg | |
2 ;; Coded by S.Tomura, Electrotechnical Lab. (tomura@etl.go.jp) | |
3 | |
4 ;; This file is part of Egg on Mule (Multilingual Environment) | |
5 | |
6 ;; Egg is distributed in the forms of patches to GNU | |
7 ;; Emacs under the terms of the GNU EMACS GENERAL PUBLIC | |
8 ;; LICENSE which is distributed along with GNU Emacs by the | |
9 ;; Free Software Foundation. | |
10 | |
11 ;; Egg is distributed in the hope that it will be useful, | |
12 ;; but WITHOUT ANY WARRANTY; without even the implied | |
13 ;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR | |
14 ;; PURPOSE. See the GNU EMACS GENERAL PUBLIC LICENSE for | |
15 ;; more details. | |
16 | |
17 ;; You should have received a copy of the GNU EMACS GENERAL | |
18 ;; PUBLIC LICENSE along with Nemacs; see the file COPYING. | |
19 ;; If not, write to the Free Software Foundation, 675 Mass | |
20 ;; Ave, Cambridge, MA 02139, USA. | |
21 | |
22 ;;; | |
23 ;;; Nemacs - Wnn V3 server interface in elisp | |
24 ;;; | |
25 | |
26 ;;; 93.4.6 modified for Mule Ver.0.9.7.1 | |
27 ;;; by T.Saneto <sanewo@pdp.crl.sony.co.jp> | |
28 ;;; Bug in wnn-bunsetu-yomi-equal fixed. | |
29 | |
30 (provide 'wnn-client) | |
31 | |
32 ;;; | |
33 ;;; Wnn deamon command constants | |
34 ;;; | |
35 | |
36 (defconst JD_OPEN_IN 9 "$BJQ49(B") ;;; V3.0 | |
37 (defconst JD_OPEN 1 "$BMxMQ<TEPO?(B") | |
38 (defconst JD_CLOSE 2 "$BMxMQ<T:o=|(B") | |
39 (defconst JD_BEGIN 3 "$BJQ493+;O(B") | |
40 (defconst JD_END 4 "$BIQEY99?7(B") | |
41 ;;; | |
42 (defconst JD_NEXT 17 "$B<!8uJd(B") ;;; 0x11 | |
43 (defconst JD_RECONV 18 "$B:FJQ49!JJ8;zNsJQ99!K(B") ;;; 0x12 | |
44 (defconst JD_TANCONV 19 "$B:FJQ49!JJ8@a?-=L!K(B") ;;; 0x13 | |
45 ;;; | |
46 (defconst JD_UDP 33 "") ;;; 0x21 | |
47 (defconst JD_UDCHG 34 "$BMxMQ<T<-=qJQ99(B") ;;; 0x22 | |
48 (defconst JD_FREQSV 35 "$B<-=qB`Hr(B") ;;; 0x23 | |
49 (defconst JD_DICADD 36 "$B<-=qDI2C(B") ;;; 0x24 | |
50 (defconst JD_DICDEL 37 "$B<-=q:o=|(B") ;;; 0x25 | |
51 (defconst JD_DICINFO 38 "$B<-=q>pJs(B") ;;; 0x26 | |
52 (defconst JD_DICSTAT 39 "") ;;; 0x27 V3.0 | |
53 | |
54 (defconst JD_WDEL 49 "$BC18l:o=|(B") ;;; 0x31 | |
55 (defconst JD_WSCH 50 "$BC18l8!:w(B") ;;; 0x32 | |
56 (defconst JD_WREG 51 "$BC18lEPO?(B") ;;; 0x33 | |
57 (defconst JD_WHDEL 52 "") ;;; 0x34 | |
58 | |
59 (defconst JD_SETEVF 65 "$BJQ49J}<0JQ99(B") ;;; 0x41 | |
60 (defconst JD_GETEVF 66 "$BJQ49J}<0>pJs(B") ;;; 0x42 | |
61 | |
62 (defconst JD_MKDIR 81 "") ;;; 0x51 V3.0 | |
63 (defconst JD_ACCESS 82 "") ;;; 0x52 V3.0 | |
64 (defconst JD_WHO 83 "$BMxMQ<T0lMw(B") ;;; 0x53 V3.0 | |
65 (defconst JD_VERSION 84 "") ;;; 0x54 V3.0 | |
66 | |
67 | |
68 (defvar wnn-server-buffer nil "Buffer associated with Wnn server process.") | |
69 | |
70 (defvar wnn-server-process nil "Wnn Kana Kanji hankan process.") | |
71 | |
72 (defvar wnn-command-tail-position nil) | |
73 (defvar wnn-command-buffer nil) | |
74 | |
75 (defvar wnn-result-buffer nil) | |
76 (defvar wnn-henkan-string nil) | |
77 (defvar wnn-bunsetu-suu nil) | |
78 | |
79 (defvar wnn-return-code nil) | |
80 (defvar wnn-error-code nil) | |
81 | |
82 ;;; | |
83 ;;; Put data into buffer | |
84 ;;; | |
85 | |
86 (defun wnn-put-4byte (integer) | |
87 (insert (if (<= 0 integer) 0 255) | |
88 (logand 255 (lsh integer -16)) | |
89 (logand 255 (lsh integer -8)) | |
90 (logand 255 integer))) | |
91 | |
92 (defun wnn-put-string (str) | |
93 (insert str 0)) | |
94 | |
95 (defun wnn-put-string* (str) | |
96 (let ((size (length str)) | |
97 (i 0)) | |
98 (while (< i size) | |
99 (if (<= 128 (aref str i)) | |
100 (progn (insert (aref str i) (aref str (1+ i))) | |
101 (setq i (+ i 2))) | |
102 (progn (insert 0 (aref str i)) | |
103 (setq i (1+ i)))))) | |
104 (insert 0 0)) | |
105 | |
106 (defun wnn-put-bit-position (pos) | |
107 (if (< pos 24) (wnn-put-4byte (lsh 1 pos)) | |
108 (insert (lsh 1 (- pos 24)) 0 0 0))) | |
109 | |
110 ;;; | |
111 ;;; Get data from buffer | |
112 ;;; | |
113 | |
114 (defun wnn-get-4byte () | |
115 | |
116 (let ((c 0) (point (point))) | |
117 ;;;(goto-char (point-min)) | |
118 (while (< (point-max) (+ point 4)) | |
119 (accept-process-output) | |
120 (if (= c 10) (error "Count exceed.")) | |
121 (setq c (1+ c))) | |
122 (goto-char point)) | |
123 | |
124 (let ((point (point))) | |
125 (if (not (or (and (= (char-after point) 0) | |
126 (< (char-after (+ point 1)) 128)) | |
127 (and (= (char-after point) 255) | |
128 (<= 128 (char-after (+ point 1)))))) | |
129 (error "wnn-get-4byte: integer range overflow.")) | |
130 (prog1 | |
131 (logior | |
132 (lsh (char-after point) 24) | |
133 (lsh (char-after (+ point 1)) 16) | |
134 (lsh (char-after (+ point 2)) 8) | |
135 (lsh (char-after (+ point 3)) 0)) | |
136 (goto-char (+ (point) 4))))) | |
137 | |
138 (defun wnn-peek-4byte () | |
139 | |
140 (let ((c 0) (point (point))) | |
141 ;;;(goto-char (point-min)) | |
142 (while (< (point-max) (+ point 4)) | |
143 (accept-process-output) | |
144 (if (= c 10) (error "Count exceed.")) | |
145 (setq c (1+ c))) | |
146 (goto-char point)) | |
147 | |
148 (let ((point (point))) | |
149 (if (not (or (and (= (char-after point) 0) | |
150 (< (char-after (+ point 1)) 128)) | |
151 (and (= (char-after point) 255) | |
152 (<= 128 (char-after (+ point 1)))))) | |
153 (error "wnn-get-4byte: integer range overflow.")) | |
154 (prog1 | |
155 (logior | |
156 (lsh (char-after point) 24) | |
157 (lsh (char-after (+ point 1)) 16) | |
158 (lsh (char-after (+ point 2)) 8) | |
159 (lsh (char-after (+ point 3)) 0))))) | |
160 | |
161 | |
162 (defun wnn-get-bit-positions () | |
163 | |
164 (let ((c 0) (point (point))) | |
165 ;;;(goto-char (point-min)) | |
166 (while (< (point-max) (+ point 4)) | |
167 (accept-process-output) | |
168 (if (= c 10) (error "Count exceed.")) | |
169 (setq c (1+ c))) | |
170 (goto-char point)) | |
171 | |
172 (let* ((point (point)) | |
173 (left (+ (lsh (char-after point) 8) | |
174 (char-after (+ point 1)))) | |
175 (right (+ (lsh (char-after (+ point 2)) 8) | |
176 (char-after (+ point 3)))) | |
177 (result)) | |
178 (forward-char 4) | |
179 (let ((i 0)) | |
180 (while (< 0 right) | |
181 (if (zerop (logand 1 right)) nil | |
182 (setq result (cons i result))) | |
183 (setq right (lsh right -1)) | |
184 (setq i (1+ i))) | |
185 (setq i 16) | |
186 (while (< 0 left) | |
187 (if (zerop (logand 1 left)) nil | |
188 (setq result (cons i result))) | |
189 (setq left (lsh left -1)) | |
190 (setq i (1+ i)))) | |
191 (if (= (length result) 1) | |
192 (car result) | |
193 (nreverse result)))) | |
194 | |
195 (defun wnn-get-string () | |
196 (let ((point (point))) | |
197 (skip-chars-forward "^\0") | |
198 (let ((c 0)) | |
199 (while (not (= (following-char) 0)) | |
200 (forward-char -1) | |
201 (accept-process-output) | |
202 (if (= c 10) (error "Count exceed")) | |
203 (setq c (1+ c)) | |
204 (skip-chars-forward "^\0"))) | |
205 (prog1 | |
206 (buffer-substring point (point)) | |
207 (forward-char 1)))) | |
208 | |
209 (defun wnn-get-string* () | |
210 (let ((point (point))) | |
211 (let ((c 0)) | |
212 (while (not (search-forward "\0\0" nil t)) | |
213 (accept-process-output) | |
214 (goto-char point) | |
215 (if (= c 10) (error "Count exceed")) | |
216 (setq c (1+ c)))) | |
217 (goto-char point) | |
218 (if (= (following-char) 0) (delete-char 1) | |
219 (forward-char 1)) | |
220 (while (< 0 (following-char)) | |
221 (forward-char 1) | |
222 (if (= (following-char) 0) (delete-char 1) | |
223 (forward-char 1))) | |
224 (prog1 | |
225 (buffer-substring point (point)) | |
226 (forward-char 1)))) | |
227 | |
228 ;;; | |
229 ;;; Wnn Server Command Primitives | |
230 ;;; | |
231 | |
232 (defun wnn-command-start (command) | |
233 (set-buffer wnn-command-buffer) | |
234 (goto-char (point-min)) | |
235 (if (not (= (point-max) (+ wnn-command-tail-position 1024))) | |
236 (error "wnn command start error")) | |
237 (delete-region (point-min) wnn-command-tail-position) | |
238 (wnn-put-4byte command)) | |
239 | |
240 (defun wnn-command-reset () | |
241 (save-excursion | |
242 (progn | |
243 ;;; for Nemacs 3.0 and later | |
244 (if (fboundp 'set-process-kanji-code) | |
245 (set-process-kanji-code wnn-server-process 0)) | |
246 (set-buffer wnn-command-buffer) | |
247 (setq kanji-flag nil) | |
248 (setq kanji-fileio-code 0) ;;; for Nemacs 2.1 | |
249 (buffer-flush-undo wnn-command-buffer) | |
250 (erase-buffer) | |
251 (setq wnn-command-tail-position (point-min)) | |
252 (let ((max 1024) (i 0)) | |
253 (while (< i max) | |
254 (insert 0) | |
255 (setq i (1+ i))))))) | |
256 | |
257 (defun wnn-command-end () | |
258 (set-buffer wnn-server-buffer) | |
259 (erase-buffer) | |
260 (set-buffer wnn-command-buffer) | |
261 (setq wnn-command-tail-position (point)) | |
262 (process-send-region wnn-server-process (point-min) | |
263 (+ (point-min) (lsh (1+ (lsh (- (point) (point-min)) -10)) 10))) | |
264 ) | |
265 | |
266 ;;; | |
267 ;;; Wnn Server Reply primitives | |
268 ;;; | |
269 | |
270 (defun wnn-get-result () | |
271 (set-buffer wnn-server-buffer) | |
272 (condition-case () | |
273 (accept-process-output wnn-server-process) | |
274 (error nil)) | |
275 (goto-char (point-min))) | |
276 | |
277 (defun wnn-get-return-code () | |
278 (setq wnn-return-code (wnn-get-4byte)) | |
279 (setq wnn-error-code (if (= wnn-return-code -1) | |
280 (wnn-error-symbol (wnn-get-4byte)) | |
281 nil)) | |
282 (if wnn-error-code nil | |
283 wnn-return-code)) | |
284 | |
285 ;;; | |
286 ;;; Wnn Server Interface: wnn-server-open | |
287 ;;; | |
288 | |
289 (defvar *wnn-server-max-kana-string-length* 1000) | |
290 (defvar *wnn-server-max-bunsetu-suu* 1000) | |
291 | |
292 (defvar *wnn-service-name* "wnn") | |
293 | |
294 (defun wnn-server-open (server-host-name login-name) | |
295 (if (wnn-server-active-p) t | |
296 (let ((kana_len *wnn-server-max-kana-string-length*) | |
297 (klist_len *wnn-server-max-bunsetu-suu*) | |
298 (jserver_name | |
299 (if (or (null server-host-name) | |
300 (equal server-host-name "") | |
301 (equal server-host-name "unix")) | |
302 (system-name) | |
303 server-host-name)) | |
304 (user_name | |
305 (if (or (null login-name) (equal login-name "")) | |
306 (user-login-name) | |
307 login-name)) | |
308 (host_name (system-name))) | |
309 (setq wnn-server-process | |
310 (condition-case var | |
311 (open-network-stream "Wnn V3" " [Wnn V3 Output Buffer] " | |
312 jserver_name *wnn-service-name* ) | |
313 (error | |
314 (cond((string-match "Unknown host" (car (cdr var))) | |
315 (setq wnn-error-code (list ':WNN_UNKNOWN_HOST | |
316 jserver_name))) | |
317 ((string-match "Unknown service" (car (cdr var))) | |
318 (setq wnn-error-code (list ':WNN_UNKNOWN_SERVICE | |
319 *wnn-service-name*))) | |
320 (t ;;; "Host ... not respoding" | |
321 (setq wnn-error-code ':WNN_SOCK_OPEN_FAIL))) | |
322 nil))) | |
323 (if (null wnn-server-process) nil | |
324 (setq wnn-server-buffer (get-buffer " [Wnn V3 Output Buffer] ")) | |
325 (setq wnn-command-buffer (get-buffer-create " [Wnn V3 Command Buffer] ")) | |
326 (setq wnn-result-buffer (get-buffer-create " [Wnn V3 Result Buffer] ")) | |
327 | |
328 (save-excursion | |
329 ;;; for Nemacs 3.0 | |
330 (if (fboundp 'set-process-kanji-code) | |
331 (set-process-kanji-code wnn-server-process 0)) | |
332 (progn | |
333 (set-buffer wnn-server-buffer) | |
334 (setq kanji-flag nil) | |
335 ;;; for Nemacs 2.1 | |
336 (setq kanji-fileio-code 0) | |
337 (buffer-flush-undo wnn-server-buffer) | |
338 ) | |
339 (progn | |
340 (set-buffer wnn-result-buffer) | |
341 (setq kanji-flag nil) | |
342 ;;; for Nemacs 2.1 | |
343 (setq kanji-fileio-code 0) | |
344 (buffer-flush-undo wnn-result-buffer)) | |
345 (progn | |
346 (set-buffer wnn-command-buffer) | |
347 (setq kanji-flag nil) | |
348 ;;; for Nemacs 2.1 | |
349 (setq kanji-fileio-code 0) | |
350 (buffer-flush-undo wnn-command-buffer) | |
351 (erase-buffer) | |
352 (setq wnn-command-tail-position (point-min)) | |
353 (let ((max 1024) (i 0)) | |
354 (while (< i max) | |
355 (insert 0) | |
356 (setq i (1+ i))))) | |
357 (wnn-command-start JD_OPEN_IN) | |
358 (wnn-put-4byte kana_len) | |
359 (wnn-put-4byte klist_len) | |
360 (wnn-put-string user_name) | |
361 (wnn-put-string host_name) | |
362 (wnn-command-end) | |
363 (wnn-get-result) | |
364 (wnn-get-return-code)))))) | |
365 | |
366 (defun wnn-server-active-p () | |
367 (and wnn-server-process | |
368 (eq (process-status wnn-server-process) 'open))) | |
369 | |
370 (defun wnn-connection-error () | |
371 (setq wnn-error-code ':wnn-no-connection) | |
372 (setq wnn-return-code -1) | |
373 nil) | |
374 | |
375 (defun wnn-zero-arg-command (op) | |
376 (if (wnn-server-active-p) | |
377 (save-excursion | |
378 (wnn-command-start op) | |
379 (wnn-command-end) | |
380 (wnn-get-result) | |
381 (wnn-get-return-code)) | |
382 (wnn-connection-error))) | |
383 | |
384 (defun wnn-server-close () | |
385 (wnn-zero-arg-command JD_CLOSE)) | |
386 | |
387 (or (fboundp 'si:kill-emacs) | |
388 (fset 'si:kill-emacs (symbol-function 'kill-emacs))) | |
389 | |
390 (defun kill-emacs (&optional arg) | |
391 (interactive "P") | |
392 (if (wnn-server-active-p) | |
393 (progn | |
394 (wnn-server-dict-save) | |
395 (message "Wnn$B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?!#(B") (sit-for 0) | |
396 (wnn-server-close))) | |
397 (si:kill-emacs arg)) | |
398 | |
399 (or (fboundp 'si:do-auto-save) | |
400 (fset 'si:do-auto-save (symbol-function 'do-auto-save))) | |
401 | |
402 (defvar *wnn-do-auto-save-dict* nil) | |
403 | |
404 (defun do-auto-save (&optional nomsg) | |
405 (interactive) | |
406 (if (and *wnn-do-auto-save-dict* | |
407 (wnn-server-dict-save)) | |
408 (progn | |
409 (wnn-serve-dict-save) | |
410 (message "Wnn$B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?!#(B") | |
411 (sit-for 1))) | |
412 (si:do-auto-save nomsg)) | |
413 | |
414 ;;; Wnn Result Buffer's layout: | |
415 ;;; | |
416 ;;; { length:4 kana 0 kouhoSuu:4 kouhoNo:4 | |
417 ;;; {jihoNo:4 serialNo:4 jirituGo 0 fuzokuGo 0 } ... | |
418 ;;; } | |
419 ;;; 0 0 0 0 | |
420 | |
421 (defun wnn-skip-length () | |
422 (goto-char (+ (point) 4))) | |
423 | |
424 (defun wnn-skip-4byte () | |
425 (goto-char (+ (point) 4))) | |
426 | |
427 (defun wnn-skip-yomi () | |
428 (skip-chars-forward "^\0") (forward-char 1)) | |
429 | |
430 (defun wnn-skip-kouho () | |
431 (goto-char (+ (point) 8)) | |
432 (skip-chars-forward "^\0") (forward-char 1) | |
433 (skip-chars-forward "^\0") (forward-char 1) | |
434 ) | |
435 | |
436 (defun wnn-forward-char (n) | |
437 (let ((i 1)) | |
438 (while (<= i n) | |
439 (if (<= 128 (following-char)) | |
440 (forward-char 2) | |
441 (forward-char 1)) | |
442 (setq i (1+ i))))) | |
443 | |
444 ;;; | |
445 ;;; entry function | |
446 ;;; | |
447 (defun wnn-server-henkan-begin (henkan-string) | |
448 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
449 (let ((inhibit-quit t)) | |
450 (save-excursion | |
451 (setq wnn-henkan-string henkan-string) | |
452 (set-buffer wnn-result-buffer) | |
453 (erase-buffer) | |
454 (setq wnn-bunsetu-suu 0) | |
455 (goto-char (point-min)) | |
456 (wnn-command-start JD_BEGIN) | |
457 (wnn-put-string* henkan-string) | |
458 (wnn-command-end) | |
459 (wnn-get-result) | |
460 (wnn-henkan-recieve))))) | |
461 | |
462 ;;; | |
463 ;;; entry function | |
464 ;;; | |
465 (defun wnn-server-henkan-quit () t) | |
466 | |
467 ;;; | |
468 ;;; entry function | |
469 ;;; | |
470 (defun wnn-server-henkan-end (bunsetu-no) | |
471 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
472 (let ((inhibit-quit t)) | |
473 (save-excursion | |
474 (let (length jisho-no serial-no kouho-no p0) | |
475 (wnn-command-start JD_END) | |
476 (set-buffer wnn-result-buffer) | |
477 (goto-char (point-min)) | |
478 (let ((max (if (and (integerp bunsetu-no) | |
479 (<= 0 bunsetu-no) | |
480 (<= bunsetu-no wnn-bunsetu-suu)) | |
481 bunsetu-no | |
482 wnn-bunsetu-suu)) | |
483 (i 0)) | |
484 (while (< i max) | |
485 (setq length (wnn-get-4byte)) | |
486 (setq p0 (point)) | |
487 (wnn-skip-yomi) | |
488 (wnn-skip-4byte) ;;; kouho suu | |
489 (setq kouho-no (wnn-get-4byte)) | |
490 (let ((j 0)) | |
491 (while (< j kouho-no) | |
492 (wnn-skip-kouho) | |
493 (setq j (1+ j)))) | |
494 (setq jisho-no (wnn-get-4byte)) | |
495 (setq serial-no (wnn-get-4byte)) | |
496 (goto-char (+ p0 length)) | |
497 (set-buffer wnn-command-buffer) | |
498 (insert 0 ) | |
499 (wnn-put-4byte jisho-no) | |
500 (wnn-put-4byte serial-no) | |
501 (set-buffer wnn-result-buffer) | |
502 (setq i (1+ i))))) | |
503 (set-buffer wnn-command-buffer) | |
504 (insert 255) | |
505 (wnn-command-end) | |
506 (wnn-get-result) | |
507 (wnn-get-return-code))))) | |
508 | |
509 (defun wnn-result-goto-bunsetu (bunsetu-no) | |
510 (goto-char (point-min)) | |
511 (let (length (i 0)) | |
512 (while (< i bunsetu-no) | |
513 (setq length (wnn-get-4byte)) | |
514 (goto-char (+ (point) length)) | |
515 (setq i (1+ i))))) | |
516 | |
517 ;;; | |
518 ;;; entry function | |
519 ;;; | |
520 (defun wnn-server-henkan-kakutei (bunsetu-no jikouho-no) | |
521 (cond((not (wnn-server-active-p)) (wnn-connection-error)) | |
522 ((or (< bunsetu-no 0) (<= wnn-bunsetu-suu bunsetu-no)) | |
523 nil) | |
524 (t | |
525 (let ((inhibit-quit t)) | |
526 (save-excursion | |
527 (set-buffer wnn-result-buffer) | |
528 (let (kouho-suu) | |
529 (wnn-result-goto-bunsetu bunsetu-no) | |
530 (wnn-skip-length) | |
531 (wnn-skip-yomi) | |
532 (setq kouho-suu (wnn-get-4byte)) | |
533 (if (or (< jikouho-no 0) (<= kouho-suu jikouho-no)) nil | |
534 (delete-char 4) (wnn-put-4byte jikouho-no) | |
535 t))))))) | |
536 | |
537 ;;; | |
538 ;;; entry function | |
539 ;;; | |
540 (defun wnn-server-henkan-next (bunsetu-no) | |
541 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
542 (let ((inhibit-quit t)) | |
543 (save-excursion | |
544 (let (p0 p1 kouho-suu length yomi0 yomi1) | |
545 (set-buffer wnn-result-buffer) | |
546 (wnn-result-goto-bunsetu bunsetu-no) | |
547 (setq length (wnn-get-4byte)) | |
548 (setq p0 (point)) | |
549 (setq p1 (+ p0 length)) | |
550 (setq yomi0 (point)) | |
551 (wnn-skip-yomi) | |
552 (setq yomi1 (point)) | |
553 (setq kouho-suu (wnn-peek-4byte)) | |
554 (cond((< 1 kouho-suu) t) | |
555 (t | |
556 (wnn-command-start JD_NEXT) | |
557 (wnn-put-4byte bunsetu-no) | |
558 (wnn-command-end) | |
559 (wnn-get-result) | |
560 (wnn-get-return-code) | |
561 (if (= wnn-return-code -1) wnn-return-code | |
562 (let (jl jisho-no serial-no kanji) | |
563 (set-buffer wnn-result-buffer) | |
564 (delete-region (point) p1) | |
565 (wnn-put-4byte wnn-return-code) | |
566 (wnn-put-4byte 0) ;;; current jikouho number | |
567 (set-buffer wnn-server-buffer) | |
568 (while (not (= (setq jl (wnn-get-4byte)) -1)) | |
569 (setq jisho-no (wnn-get-4byte) | |
570 serial-no (wnn-get-4byte) | |
571 kanji (wnn-get-string*)) | |
572 (set-buffer wnn-result-buffer) | |
573 (wnn-put-4byte jisho-no) | |
574 (wnn-put-4byte serial-no) | |
575 (insert kanji 0) | |
576 (let ((p1 (point)) fuzoku) | |
577 (goto-char yomi0) | |
578 (wnn-forward-char jl) | |
579 (setq fuzoku (point)) | |
580 (goto-char p1) | |
581 (insert-buffer-substring wnn-result-buffer fuzoku yomi1)) | |
582 (set-buffer wnn-server-buffer)) | |
583 (set-buffer wnn-result-buffer) | |
584 (setq length (- (point) p0)) | |
585 (goto-char p0) (delete-char -4) | |
586 (wnn-put-4byte length)) | |
587 t)))))))) | |
588 | |
589 (defun jd_reconv (bunsetu-no new-kana) | |
590 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
591 (if (= bunsetu-no 0) (jd_begin kana) | |
592 (let ((inhibit-quit t)) | |
593 (save-excursion | |
594 (wnn-command-start JD_RECONV) | |
595 (wnn-put-4byte bunsetu-no) | |
596 (wnn-put-string* new-kana) | |
597 (wnn-command-end) | |
598 (wnn-get-result) | |
599 (wnn-henkan-recieve bunsetu-no)))))) | |
600 | |
601 ;;; | |
602 ;;; entry function | |
603 ;;; | |
604 (defun wnn-server-bunsetu-henkou (bunsetu-no bunsetu-length) | |
605 (cond((not (wnn-server-active-p)) (wnn-connection-error)) | |
606 ((or (< bunsetu-no 0) (<= wnn-bunsetu-suu bunsetu-no)) | |
607 nil) | |
608 (t | |
609 (let ((inhibit-quit t)) | |
610 (save-excursion | |
611 (set-buffer wnn-result-buffer) | |
612 (wnn-result-goto-bunsetu bunsetu-no) | |
613 (wnn-command-start JD_TANCONV) | |
614 (wnn-put-4byte bunsetu-no) | |
615 (wnn-put-4byte bunsetu-length) | |
616 (wnn-command-end) | |
617 (wnn-get-result) | |
618 (setq wnn-bunsetu-suu bunsetu-no) | |
619 (wnn-henkan-recieve)))))) | |
620 | |
621 (defun wnn-henkan-recieve () | |
622 (wnn-get-return-code) | |
623 (if (= wnn-return-code -1) nil | |
624 (let (p0 p1 length s-ichi jl fl jisho-no serial-no kanji fuzokugo) | |
625 (setq wnn-bunsetu-suu (+ wnn-bunsetu-suu wnn-return-code)) | |
626 (if (zerop wnn-return-code) nil | |
627 (setq s-ichi (wnn-peek-4byte)) | |
628 (set-buffer wnn-result-buffer) | |
629 (delete-region (point) (point-max)) | |
630 (setq p0 (point)) | |
631 (insert wnn-henkan-string 0 0 0 0) | |
632 (goto-char p0) | |
633 (wnn-forward-char s-ichi) | |
634 (delete-region p0 (point)) | |
635 (set-buffer wnn-server-buffer) | |
636 (while (not (= (setq s-ichi (wnn-get-4byte)) -1)) | |
637 (setq jl (wnn-get-4byte) | |
638 fl (wnn-get-4byte) | |
639 jisho-no (wnn-get-4byte) | |
640 serial-no (wnn-get-4byte) | |
641 kanji (wnn-get-string*)) | |
642 (set-buffer wnn-result-buffer) | |
643 (setq p0 (point)) | |
644 (wnn-forward-char jl) | |
645 (setq p1 (point)) | |
646 (wnn-forward-char fl) | |
647 (setq fuzokugo (buffer-substring p1 (point))) | |
648 (insert 0) ;;; yomi | |
649 (wnn-put-4byte 1) ;;; kouho suu | |
650 (wnn-put-4byte 0) ;;; current kouho number | |
651 (wnn-put-4byte jisho-no) | |
652 (wnn-put-4byte serial-no) | |
653 (insert kanji 0 fuzokugo 0) | |
654 (setq length (- (point) p0)) | |
655 (goto-char p0) (wnn-put-4byte length) | |
656 (goto-char (+ (point) length)) | |
657 (set-buffer wnn-server-buffer))))) | |
658 wnn-return-code) | |
659 | |
660 (defun wnn-bunsetu-suu () wnn-bunsetu-suu) | |
661 | |
662 (defun wnn-bunsetu-kanji (bunsetu-no &optional buffer) | |
663 (let ((savebuffer (current-buffer))) | |
664 (unwind-protect | |
665 (progn | |
666 (set-buffer wnn-result-buffer) | |
667 (if (or (< bunsetu-no 0) | |
668 (<= wnn-bunsetu-suu bunsetu-no)) | |
669 nil | |
670 (wnn-result-goto-bunsetu bunsetu-no) | |
671 (wnn-skip-length) | |
672 (wnn-skip-yomi) | |
673 | |
674 (wnn-skip-4byte) ;;; kouho-suu | |
675 (let ((i 0) (max (wnn-get-4byte))) | |
676 (while (< i max) | |
677 (wnn-skip-kouho) | |
678 (setq i (1+ i)))) | |
679 | |
680 (let ( p1 p2 p3 ) | |
681 (goto-char (+ (point) 4 4)) | |
682 (setq p1 (point)) | |
683 (skip-chars-forward "^\0") (setq p2 (point)) | |
684 (forward-char 1) (skip-chars-forward "^\0") | |
685 (setq p3 (point)) | |
686 (if (null buffer) | |
687 (concat (buffer-substring p1 p2) (buffer-substring (1+ p2) p3)) | |
688 (set-buffer buffer) | |
689 (insert-buffer-substring wnn-result-buffer p1 p2) | |
690 (insert-buffer-substring wnn-result-buffer (1+ p2) p3) | |
691 nil)))) | |
692 (set-buffer savebuffer)))) | |
693 | |
694 (defun wnn-bunsetu-kanji-length (bunsetu-no) | |
695 (save-excursion | |
696 (set-buffer wnn-result-buffer) | |
697 (if (or (< bunsetu-no 0) | |
698 (<= wnn-bunsetu-suu bunsetu-no)) | |
699 nil | |
700 (wnn-result-goto-bunsetu bunsetu-no) | |
701 (wnn-skip-length) | |
702 (wnn-skip-yomi) | |
703 | |
704 (wnn-skip-4byte) ;;; kouho-suu | |
705 (let ((i 0) (max (wnn-get-4byte))) | |
706 (while (< i max) | |
707 (wnn-skip-kouho) | |
708 (setq i (1+ i)))) | |
709 | |
710 (let ( p1 p3 ) | |
711 (goto-char (+ (point) 4 4)) | |
712 (setq p1 (point)) | |
713 (skip-chars-forward "^\0")(forward-char 1) (skip-chars-forward "^\0") | |
714 (setq p3 (point)) | |
715 (- p3 p1 1))))) | |
716 | |
717 (defun wnn-bunsetu-yomi-moji-suu (bunsetu-no) | |
718 (save-excursion | |
719 (set-buffer wnn-result-buffer) | |
720 (if (or (< bunsetu-no 0) | |
721 (<= wnn-bunsetu-suu bunsetu-no)) | |
722 nil | |
723 (wnn-result-goto-bunsetu bunsetu-no) | |
724 (wnn-skip-length) | |
725 (let ((c 0) ch) | |
726 (while (not (zerop (setq ch (following-char)))) | |
727 (if (<= 128 ch) (forward-char 2) | |
728 (forward-char 1)) | |
729 (setq c (1+ c))) | |
730 c)))) | |
731 | |
732 (defun wnn-bunsetu-yomi (bunsetu-no &optional buffer) | |
733 (let ((savebuff (current-buffer))) | |
734 (unwind-protect | |
735 (progn | |
736 (set-buffer wnn-result-buffer) | |
737 (if (or (< bunsetu-no 0) | |
738 (<= wnn-bunsetu-suu bunsetu-no)) | |
739 nil | |
740 (wnn-result-goto-bunsetu bunsetu-no) | |
741 (wnn-skip-length) | |
742 (let (p1 p2 ) | |
743 (setq p1 (point)) | |
744 (skip-chars-forward "^\0") | |
745 (if (null buffer ) (buffer-substring p1 (point)) | |
746 (setq p2 (point)) | |
747 (set-buffer buffer) | |
748 (insert-buffer-substring wnn-result-buffer p1 p2) | |
749 t)))) | |
750 (set-buffer savebuff)))) | |
751 | |
752 (defun wnn-bunsetu-yomi-equal (bunsetu-no yomi) | |
753 (save-excursion | |
754 (set-buffer wnn-result-buffer) | |
755 (if (or (< bunsetu-no 0) | |
756 (<= wnn-bunsetu-suu bunsetu-no)) | |
757 nil | |
758 (wnn-result-goto-bunsetu bunsetu-no) | |
759 (wnn-skip-length) | |
760 (looking-at yomi)))) ; 93.4.6 by T.Saneto | |
761 | |
762 (defun wnn-bunsetu-kouho-suu (bunsetu-no) | |
763 (save-excursion | |
764 (set-buffer wnn-result-buffer) | |
765 (if (or (< bunsetu-no 0) | |
766 (<= wnn-bunsetu-suu bunsetu-no)) | |
767 nil | |
768 (wnn-result-goto-bunsetu bunsetu-no) | |
769 (wnn-skip-length) | |
770 (wnn-skip-yomi) | |
771 (wnn-get-4byte)))) | |
772 | |
773 (defun wnn-bunsetu-kouho-list (bunsetu-no) | |
774 (save-excursion | |
775 (set-buffer wnn-result-buffer) | |
776 (if (or (< bunsetu-no 0) | |
777 (<= wnn-bunsetu-suu bunsetu-no)) | |
778 nil | |
779 (wnn-result-goto-bunsetu bunsetu-no) | |
780 (wnn-skip-length) | |
781 (wnn-skip-yomi) | |
782 (let ((max (wnn-get-4byte)) (i 0) (result nil) p0 p1) | |
783 (wnn-skip-4byte) ;;; current kouhou number | |
784 (while (< i max) | |
785 (wnn-skip-4byte) (wnn-skip-4byte) | |
786 (setq p0 (point)) | |
787 (skip-chars-forward "^\0") | |
788 (setq p1 (point)) | |
789 (forward-char 1) | |
790 (skip-chars-forward "^\0") | |
791 (setq result | |
792 (cons (concat (buffer-substring p0 p1) | |
793 (buffer-substring (1+ p1) (point))) | |
794 result)) | |
795 (forward-char 1) | |
796 (setq i (1+ i))) | |
797 (nreverse result))))) | |
798 | |
799 (defun wnn-bunsetu-kouho-number (bunsetu-no) | |
800 (save-excursion | |
801 (set-buffer wnn-result-buffer) | |
802 (if (or (< bunsetu-no 0) | |
803 (<= wnn-bunsetu-suu bunsetu-no)) | |
804 nil | |
805 (wnn-result-goto-bunsetu bunsetu-no) | |
806 (wnn-skip-length) | |
807 (wnn-skip-yomi) | |
808 (wnn-skip-4byte) | |
809 (wnn-get-4byte))) | |
810 ) | |
811 | |
812 (defun wnn-bunsetu-kouho-kanji (bunsetu-no kouho-no) | |
813 (save-excursion | |
814 (set-buffer wnn-result-buffer) | |
815 (if (or (< bunsetu-no 0) | |
816 (<= wnn-bunsetu-suu bunsetu-no)) | |
817 nil | |
818 (wnn-result-goto-bunsetu bunsetu-no) | |
819 (wnn-skip-length) (wnn-skip-yomi) | |
820 (let ((kouho-suu (wnn-get-4byte))) | |
821 (if (or (< kouho-no 0) (<= kouho-suu kouho-no)) | |
822 nil | |
823 (wnn-skip-4byte) ;;; current kouho number | |
824 (let ((i 0)) | |
825 (while (< i kouho-no) | |
826 (wnn-skip-kouho) | |
827 (setq i (1+ i)))) | |
828 (let ( p1 p2 p3 ) | |
829 (goto-char (+ (point) 4 4)) | |
830 (setq p1 (point)) | |
831 (skip-chars-forward "^\0") (setq p2 (point)) | |
832 (forward-char 1) (skip-chars-forward "^\0") | |
833 (setq p3 (point)) | |
834 (concat (buffer-substring p1 p2) (buffer-substring (1+ p2) p3)))))))) | |
835 | |
836 (defun wnn-bunsetu-kouho-inspect (bunsetu-no kouho-no) | |
837 (save-excursion | |
838 (set-buffer wnn-result-buffer) | |
839 (if (or (< bunsetu-no 0) | |
840 (<= wnn-bunsetu-suu bunsetu-no)) | |
841 nil | |
842 (let (p0 p1 kouho-suu jiritugo fuzokugo yomi jishono serial ) | |
843 (wnn-result-goto-bunsetu bunsetu-no) | |
844 (wnn-skip-length) | |
845 (setq p0 (point)) | |
846 (wnn-skip-yomi) | |
847 (setq p1 (1- (point))) | |
848 (setq kouho-suu (wnn-get-4byte)) | |
849 (if (or (< kouho-no 0) (<= kouho-suu kouho-no)) | |
850 nil | |
851 (wnn-skip-4byte) ;;; current kouho number | |
852 (let ((i 0)) | |
853 (while (< i kouho-no) | |
854 (wnn-skip-kouho) | |
855 (setq i (1+ i)))) | |
856 (setq jishono (wnn-get-4byte)) | |
857 (setq serial (wnn-get-4byte)) | |
858 (setq jiritugo (wnn-get-string)) | |
859 (setq fuzokugo (wnn-get-string)) | |
860 (goto-char p1) | |
861 (if (not (equal "" fuzokugo)) (search-backward fuzokugo p0)) | |
862 (setq yomi (buffer-substring p0 (point))) | |
863 (list jiritugo fuzokugo yomi jishono serial)))))) | |
864 | |
865 (defun wnn-simple-command (op arg) | |
866 (if (wnn-server-active-p) | |
867 (let ((inhibit-quit t)) | |
868 (save-excursion | |
869 (wnn-command-start op) | |
870 (wnn-put-4byte arg) | |
871 (wnn-command-end) | |
872 (wnn-get-result) | |
873 (wnn-get-return-code))) | |
874 (wnn-connection-error))) | |
875 | |
876 (defun jd_udp (dict-no) | |
877 (wnn-simpale-command JD_UDP dict-no)) | |
878 | |
879 (defun wnn-server-set-current-dict (dict-no) | |
880 (wnn-simple-command JD_UDCHG dict-no)) | |
881 | |
882 (defun wnn-server-dict-save () | |
883 (wnn-zero-arg-command JD_FREQSV)) | |
884 | |
885 (defun wnn-server-use-dict (dict-file-name hindo-file-name priority readonly-flag) | |
886 (if (not (wnn-server-active-p))(wnn-connection-error) | |
887 (let ((inhibit-quit t)) | |
888 (save-excursion | |
889 (wnn-command-start JD_DICADD) | |
890 (wnn-put-string dict-file-name) | |
891 (wnn-put-string hindo-file-name) | |
892 (wnn-put-4byte priority) | |
893 (wnn-put-4byte (if readonly-flag 1 0)) | |
894 (wnn-command-end) | |
895 (wnn-get-result) | |
896 (wnn-get-return-code))))) | |
897 | |
898 (defun jd_dicdel (dict-no) | |
899 (wnn-simple-command JD_DICDEL dict-no)) | |
900 | |
901 (defun jd_dicinfo () | |
902 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
903 (let ((inhibit-quit t)) | |
904 (save-excursion | |
905 (wnn-command-start JD_DICINFO) | |
906 (wnn-command-end) | |
907 (wnn-get-result) | |
908 (let ((dic-no 0) (result nil)) | |
909 (while (not (= (setq dic-no (wnn-get-4byte)) -1)) | |
910 (setq result | |
911 (cons (list | |
912 dic-no | |
913 (wnn-get-4byte) ;;; ttl_hindo | |
914 (wnn-get-4byte) ;;; dic_type | |
915 (wnn-get-4byte) ;;; udp | |
916 (wnn-get-4byte) ;;; dic_size | |
917 (wnn-get-4byte) ;;; prioritry | |
918 (wnn-get-4byte) ;;; readonly no:0 yes:1 | |
919 (wnn-get-string) ;;; dic_name | |
920 (wnn-get-string) ;;; hindo_name | |
921 ) | |
922 result)) | |
923 (nreverse result))))))) | |
924 | |
925 (defun jd_dicstat (file-name) | |
926 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
927 (let ((inhibit-quit t)) | |
928 (save-excursion | |
929 (wnn-command-start JD_DICSTAT) | |
930 (wnn-put-string file-name) | |
931 (wnn-command-end) | |
932 (wnn-get-result) | |
933 (wnn-get-return-code))))) | |
934 | |
935 (defun wnn-server-dict-delete (serial-no yomi) | |
936 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
937 (let ((inhibit-quit t)) | |
938 (save-excursion | |
939 (wnn-command-start JD_WDEL) | |
940 (wnn-put-4byte serial-no) | |
941 (wnn-put-string* yomi) | |
942 (wnn-command-end) | |
943 (wnn-get-result) | |
944 (wnn-get-return-code))))) | |
945 | |
946 (defun wnn-server-dict-info (yomi) | |
947 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
948 (let ((inhibit-quit t)) | |
949 (save-excursion | |
950 (wnn-command-start JD_WSCH) | |
951 (wnn-put-string* yomi) | |
952 (wnn-command-end) | |
953 (wnn-get-result) | |
954 (wnn-get-return-code) | |
955 (if (= wnn-return-code -1) nil | |
956 (let ((hindo 0) bunpo jisho serial kanji (result nil)) | |
957 (while (not (= (setq hindo (wnn-get-4byte)) -1)) | |
958 (setq bunpo (wnn-get-bit-positions)) | |
959 (setq jisho (wnn-get-4byte)) | |
960 (setq serial (wnn-get-4byte)) | |
961 (setq kanji (wnn-get-string*)) | |
962 (setq result | |
963 (if (integerp bunpo) | |
964 (cons (list kanji bunpo hindo jisho serial) | |
965 result) | |
966 (append | |
967 (mapcar (function (lambda (x) | |
968 (list kanji x hindo jisho serial))) | |
969 bunpo) | |
970 result)))) | |
971 (nreverse result))))))) | |
972 | |
973 (defun wnn-server-dict-add (kanji yomi bunpo) | |
974 (if (not (wnn-server-active-p))(wnn-connection-error) | |
975 (let ((inhibit-quit t)) | |
976 (save-excursion | |
977 (wnn-command-start JD_WREG) | |
978 (wnn-put-bit-position bunpo) | |
979 (wnn-put-4byte 129) ;;; 0x81 hindo always 1 with imatukattayo bit.(jl.c) | |
980 (wnn-put-string* kanji) | |
981 (wnn-put-string* yomi) | |
982 (wnn-command-end) | |
983 (wnn-get-result) | |
984 (wnn-get-return-code))))) | |
985 | |
986 (defun jd_whdel (serial-no yomi bunpo) | |
987 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
988 (let ((inhibit-quit t)) | |
989 (save-excursion | |
990 (wnn-command-start JD_WHDEL) | |
991 (wnn-put-4byte serial-no) | |
992 (wnn-put-string* yomi) | |
993 (wnn-put-4byte bunpo) | |
994 (wnn-command-end) | |
995 (wnn-get-result) | |
996 (wnn-get-return-code))))) | |
997 | |
998 (defun jd_setevf (bunsetu-su p1 p2 p3 p4 p5) | |
999 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
1000 (let ((inhibit-quit t)) | |
1001 (save-excursion | |
1002 (wnn-command-start JD_SETEVF) | |
1003 (wnn-put-4byte bunsetu-su) | |
1004 (wnn-put-4byte p1) | |
1005 (wnn-put-4byte p2) | |
1006 (wnn-put-4byte p3) | |
1007 (wnn-put-4byte p4) | |
1008 (wnn-put-4byte p5) | |
1009 (wnn-put-4byte 0);; p6 | |
1010 (wnn-put-4byte 0);; p7 | |
1011 (wnn-put-4byte 0);; p8 | |
1012 (wnn-put-4byte 0);; p9 | |
1013 (wnn-put-4byte 0);; p10 | |
1014 (wnn-command-end) | |
1015 (wnn-get-result) | |
1016 (wnn-get-return-code))))) | |
1017 | |
1018 (defun jd_getevf () | |
1019 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
1020 (let ((inhibit-quit t)) | |
1021 (save-excursion | |
1022 (wnn-command-start JD_GETEVF) | |
1023 (wnn-command-end) | |
1024 (wnn-get-result) | |
1025 (prog1 | |
1026 (list | |
1027 (wnn-get-4byte) ;;; bunsetu-su | |
1028 (wnn-get-4byte) ;;; p1 | |
1029 (wnn-get-4byte) ;;; p2 | |
1030 (wnn-get-4byte) ;;; p3 | |
1031 (wnn-get-4byte) ;;; p4 | |
1032 (wnn-get-4byte) ;;; p5 | |
1033 ) | |
1034 (wnn-get-4byte);; p6 | |
1035 (wnn-get-4byte);; p7 | |
1036 (wnn-get-4byte);; p8 | |
1037 (wnn-get-4byte);; p9 | |
1038 (wnn-get-4byte);; p10 | |
1039 ))))) | |
1040 | |
1041 (defun wnn-server-make-directory (dir-name) | |
1042 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
1043 (let ((inhibit-quit t)) | |
1044 (save-excursion | |
1045 (wnn-command-start JD_MKDIR) | |
1046 (wnn-put-string dir-name) | |
1047 (wnn-command-end) | |
1048 (wnn-get-result) | |
1049 (wnn-get-return-code))))) | |
1050 | |
1051 (defun wnn-server-file-access (file-name access-mode) | |
1052 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
1053 (let ((inhibit-quit t)) | |
1054 (save-excursion | |
1055 (wnn-command-start JD_ACCESS) | |
1056 (wnn-put-4byte access-mode) | |
1057 (wnn-put-string file-name) | |
1058 (wnn-command-end) | |
1059 (wnn-get-result) | |
1060 (setq wnn-return-code (wnn-get-4byte)) | |
1061 (setq wnn-error-code nil) | |
1062 wnn-return-code)))) | |
1063 | |
1064 (defun jd_who () | |
1065 (if (not (wnn-server-active-p)) (wnn-connection-error) | |
1066 (let ((inhibit-quit t)) | |
1067 (save-excursion | |
1068 (wnn-command-start JD_WHO) | |
1069 (wnn-command-end) | |
1070 (wnn-get-result) | |
1071 (let ( number user host result) | |
1072 (while (not (= (setq number (wnn-get-4byte)) -1)) | |
1073 (setq result | |
1074 (cons | |
1075 (list number (wnn-get-string) (wnn-get-string)) | |
1076 result))) | |
1077 (nreverse result)))))) | |
1078 | |
1079 (defun jd_version () | |
1080 (wnn-zero-arg-command JD_VERSION)) | |
1081 | |
1082 (defconst *wnn-error-alist* | |
1083 '( | |
1084 (1 :WNN_NO_EXIST | |
1085 "$B%U%!%$%k$,B8:_$7$^$;$s!#(B") | |
1086 (2 :WNN_NOT_USERDICT | |
1087 "$B@5$7$$%f!<%6!<<-=q$G$O$"$j$^$;$s!#(B") | |
1088 (3 :WNN_MALLOC_ERR | |
1089 "$B%a%b%j(Balloc$B$G<:GT$7$^$7$?!#(B") | |
1090 (4 :WNN_NOT_SYSTEM | |
1091 "$B@5$7$$%7%9%F%`<-=q$G$O$"$j$^$;$s!#(B") | |
1092 (5 :WNN_NOT_A_DICT | |
1093 "$B@5$7$$<-=q$G$O$"$j$^$;$s!#(B") | |
1094 (6 :WNN_FILE_NO_SPECIFIED | |
1095 "$B%U%!%$%kL>$,;XDj$5$l$F$$$^$;$s!#(B") | |
1096 (8 :WNN_HINDO_FILE_NOT_SPECIFIED | |
1097 "$B%7%9%F%`<-=q$KBP$7$F!"IQEY%U%!%$%k$N;XDj$,$"$j$^$;$s!#(B") | |
1098 (9 :WNN_JISHOTABLE_FULL | |
1099 "$B<-=q%F!<%V%k$,0lGU$G$9!#(B") | |
1100 (10 :WNN_HINDO_NO_MATCH | |
1101 "$BIQEY%U%!%$%k$,!";XDj$5$l$?<-=q$NIQEY%U%!%$%k$G$O$"$j$^$;$s!#(B") | |
1102 (11 :WNN_PARAMR | |
1103 "$B%U%!%$%k$NFI$_9~$_8"8B$,$"$j$^$;$s!#(B") | |
1104 (12 :WNN_HJT_FULL | |
1105 "$B%0%m!<%P%kIQEY%F!<%V%k$,0lGU$G$9!#(B") | |
1106 (13 :WNN_JT_FULL | |
1107 "$B%0%m!<%P%k<-=q%F!<%V%k$,0lGU$G$9!#(B") | |
1108 (15 :WNN_PARAMW | |
1109 "$B%U%!%$%k$KBP$9$k=q$-9~$_8"8B$,$"$j$^$;$s!#(B") | |
1110 (16 :WNN_OPENF_ERR | |
1111 "$B%U%!%$%k$,%*!<%W%s$G$-$^$;$s!#(B") | |
1112 ;;; $B<-=q:o=|4X78$N%(%i!<(B | |
1113 (20 :WNN_DICT_NOT_USED | |
1114 "$B$=$NHV9f$N<-=q$O!";H$o$l$F$$$^$;$s!#(B") | |
1115 ;;; $B%f!<%6!<<-=qJQ994X78$N%(%i!<(B | |
1116 ;;; | |
1117 ;;;WNN_DICT_NOT_USED | |
1118 ;;; | |
1119 (21 :WNN_NOT_A_USERDICT | |
1120 "$B;XDj$5$l$F<-=q$O!"%f!<%6!<<-=q$G$O$"$j$^$;$s!#(B") | |
1121 (22 :WNN_READONLY | |
1122 "$B%j!<%I%*%s%j!<$N<-=q$O!"%+%l%s%H%f!<%6!<<-=q$K$O$G$-$^$;$s!#(B") | |
1123 ;;; $B<-=q%;!<%V4X78$N%(%i!<(B | |
1124 ;;; | |
1125 ;;; WNN_PARAMW | |
1126 ;;; WNN_OPENF_ERR | |
1127 ;;; $BJQ49;~$N%(%i!<(B | |
1128 ;;; jishobiki.c | |
1129 (30 :WNN_JMT_FULL | |
1130 "$B<-=q%F!<%V%k$,$"$U$l$F$$$^$9!#(B ") | |
1131 | |
1132 (31 :WNN_LONG_MOJIRETSU | |
1133 "$BJQ49$7$h$&$H$9$kJ8;zNs$,D92a$.$^$9!#(B") | |
1134 (32 :WNN_WKAREA_FULL | |
1135 "$BIUB08l2r@ONN0h$,ITB-$7$F$$$^$9!#(B") | |
1136 (33 :WNN_KAREA_FULL | |
1137 "$B2r@ONN0h$,ITB-$7$F$$$^$9!#(B") | |
1138 | |
1139 ;;; $BC18lEPO?;~$N%(%i!<(B | |
1140 (40 :WNN_YOMI_LONG | |
1141 "$BFI$_$,D92a$.$^$9!#(B") | |
1142 (41 :WNN_KANJI_LONG | |
1143 "$B4A;z$,D92a$.$^$9!#(B") | |
1144 (42 :WNN_BAD_YOMI | |
1145 "$BFI$_$KITE,Ev$JJ8;z$,4^$^$l$F$$$^$9!#(B") | |
1146 (43 :WNN_NO_YOMI | |
1147 "$BFI$_$ND9$5$,(B0$B$G$9!#(B") | |
1148 (44 :WNN_NO_CURRENT | |
1149 "$B%+%l%s%H<-=q$,B8:_$7$^$;$s!#(B") | |
1150 (45 :WNN_RDONLY | |
1151 "$B%j!<%I%*%s%j!<$N<-=q$KEPO?$7$h$&$H$7$^$7$?!#(B") | |
1152 | |
1153 ;;; $BC18l:o=|;~!"IJ;l:o=|;~$N%(%i!<(B | |
1154 ;;; | |
1155 ;;;WNN_NO_CURRENT | |
1156 ;;;WNN_RDONLY | |
1157 ;;; | |
1158 (50 :WNN_WORD_NO_EXIST | |
1159 "$B;XDj$5$l$?C18l$,B8:_$7$^$;$s!#(B") | |
1160 | |
1161 ;;; $B<!8uJd;~$N%(%i!<(B | |
1162 (55 :WNN_JIKOUHO_TOO_MANY | |
1163 "$B<!8uJd$N%(%s%H%j!<$N8D?t$,$*$*2a$.$^$9!#(B") | |
1164 | |
1165 ;;; $B=i4|2=$N;~$N%(%i!<(B | |
1166 (60 :WNN_MALLOC_INITIALIZE | |
1167 "$B%a%b%j(Balloc$B$G<:GT$7$^$7$?!#(B") | |
1168 | |
1169 ;;; $BC18l8!:w;~$N%(%i!<(B | |
1170 ;;; | |
1171 ;;;WNN_BAD_YOMI | |
1172 ;;;WNN_JMT_FULL | |
1173 ;;; | |
1174 | |
1175 (68 :WNN_SOME_ERROR | |
1176 " $B2?$+$N%(%i!<$,5/$3$j$^$7$?!#(B") | |
1177 (69 :WNN_SONOTA | |
1178 "$B%P%0$,H/@8$7$F$$$kLOMM$G$9!#(B") | |
1179 (70 :WNN_JSERVER_DEAD | |
1180 "$B%5!<%P$,;`$s$G$$$^$9!#(B") | |
1181 (71 :WNN_ALLOC_FAIL | |
1182 "jd_begin$B$G(Balloc$B$K<:GT(B") | |
1183 (72 :WNN_SOCK_OPEN_FAIL | |
1184 "jd_begin$B$G(Bsocket$B$N(Bopen$B$K<:GT(B") | |
1185 | |
1186 (73 :WNN_RCV_SPACE_OVER | |
1187 "$B<u?.%9%Z!<%9$+$i%G!<%?$,$O$_$@$7$?(B") | |
1188 (74 :WNN_MINUS_MOJIRETSU | |
1189 "$BJ8;zNs$ND9$5$N;XDj$,Ii$G$"$k(B") | |
1190 ;;; V3.0 | |
1191 (80 :WNN_MKDIR_FAIL | |
1192 " $B%G%#%l%/%H%j$r:n$jB;$J$C$?(B ") | |
1193 (81 :WNN_BAD_USER | |
1194 " $B%f!<%6L>$,$J$$(B ") | |
1195 (82 :WNN_BAD_HOST | |
1196 " $B%[%9%HL>$,$J$$(B ") | |
1197 )) | |
1198 | |
1199 (defun wnn-error-symbol (code) | |
1200 (let ((pair (assoc code *wnn-error-alist*))) | |
1201 (if (null pair) | |
1202 (list ':wnn-unknown-error-code code) | |
1203 (car (cdr pair))))) |