70
|
1 ;;; wnn-egg.el --- a inputting method communicating with [jck]server
|
|
2
|
|
3 ;; Author: Satoru Tomura (tomura@etl.go.jp), and
|
|
4 ;; Toshiaki Shingu (shingu@cpr.canon.co.jp)
|
|
5 ;; Keywords: inputting method
|
|
6
|
|
7 ;; This file is part of Egg on Mule (Multilingual Environment)
|
|
8
|
|
9 ;; Egg 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 ;; Egg 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 ;;; Modified for Wnn V4 and Wnn6 by Satoru Tomura(tomura@etl.go.jp)
|
|
26 ;;; Modified for Wnn6 by OMRON
|
|
27 ;;; Written by Toshiaki Shingu (shingu@cpr.canon.co.jp)
|
|
28 ;;; Modified for Wnn V4 library on wnn4v3-egg.el
|
|
29
|
|
30 ;;; $B$?$^$4!V$?$+$J!W%P!<%8%g%s(B
|
|
31 ;;; $B!V$?$+$J!W$H$ODR$1J*$N$?$+$J$G$O$"$j$^$;$s!#(B
|
|
32 ;;; $B!V$?$^$4$h!?$+$7$3$/!?$J!<!<$l!W$NN,$r$H$C$FL?L>$7$^$7$?!#(B
|
|
33 ;;; Wnn V4 $B$N(B jl $B%i%$%V%i%j$r;H$$$^$9!#(B
|
|
34 ;;; $B%i%$%V%i%j$H$N%$%s%?!<%U%'!<%9$O(B wnnfns.c $B$GDj5A$5$l$F$$$^$9!#(B
|
|
35
|
|
36 ;;; $B=$@5%a%b(B
|
|
37
|
|
38 ;;; 94/2/3 kWnn support by H.Kuribayashi
|
|
39 ;;; 93/11/24 henkan-select-kouho: bug fixed
|
|
40 ;;; 93/7/22 hinsi-from-menu updated
|
|
41 ;;; 93/5/12 remove-regexp-in-string
|
|
42 ;;; fixed by Shuji NARAZAKI <narazaki@csce.kyushu-u.ac.jp>
|
|
43 ;;; 93/4/22 set-wnn-host-name, set-cwnn-host-name
|
|
44 ;;; 93/4/5 EGG:open-wnn, close-wnn modified by tsuiki.
|
|
45 ;;; 93/4/2 wnn-param-set
|
|
46 ;;; 93/4/2 modified along with wnn4fns.c
|
|
47 ;;; 93/3/3 edit-dict-item: bug fixed
|
|
48 ;;; 93/1/8 henkan-help-command modified.
|
|
49 ;;; 92/12/1 buffer local 'wnn-server-type' and 'cwnn-zhuyin'
|
|
50 ;;; so as to support individual its mode with multiple buffers.
|
|
51 ;;; 92/11/26 set-cserver-host-name fixed.
|
|
52 ;;; 92/11/26 its:{previous,next}-mode by <yasutome@ics.osaka-u.ac.jp>
|
|
53 ;;; 92/11/25 set-wnn-host-name was changed to set-{j,c}server-host-name.
|
|
54 ;;; 92/11/25 redefined its:select-mode and its:select-mode-from-menu
|
|
55 ;;; defined in egg.el to run hook with its mode selection.
|
|
56 ;;; 92/11/20 bug fixed related to henkan mode attribute.
|
|
57 ;;; 92/11/12 get-wnn-host-name and set-wnn-host-name were changed.
|
|
58 ;;; 92/11/10 (set-dict-comment) bug fixed
|
|
59 ;;; 92/10/27 (henkan-region-internal) display message if error occurs.
|
|
60 ;;; 92/9/28 completely modified for chinese trandlation.
|
|
61 ;;; 92/9/28 diced-{use,hindo-set} bug fixed <tetsuya@rabbit.is.s.u-tokyo.ac.jp>
|
|
62 ;;; 92/9/22 touroku-henkan-mode by <tsuiki@sfc.keio.ac.jp>
|
|
63 ;;; 92/9/18 rewrite wnn-dict-add to support password files.
|
|
64 ;;; 92/9/8 henkan-region-internal was modified.
|
|
65 ;;; 92/9/8 henkan-mode-map " " 'henkan-next-kouho-dai -> 'henkan-next-kouho
|
|
66 ;;; 92/9/7 henkan-mode-map "\C-h" 'help-command -> 'henkan-help-command (Shuji Narazaki)
|
|
67 ;;; 92/9/3 wnn-server-get-msg without wnn-error-code.
|
|
68 ;;; 92/9/3 get-wnn-lang-name was modified.
|
|
69 ;;; 92/8/19 get-wnn-lang-name $B$NJQ99(B (by T.Matsuzawa)
|
|
70 ;;; 92/8/5 Bug in henkan-kakutei-first-char fixed. (by Y.Kasai)
|
|
71 ;;; 92/7/17 set-egg-henkan-format $B$NJQ99(B
|
|
72 ;;; 92/7/17 egg:error $B$N0z?t$r(B format &rest args $B$KJQ99(B
|
|
73 ;;; 92/7/17 henkan/gyaku-henkan-word $B$N=$@5(B
|
|
74 ;;; 92/7/17 henkan/gyaku-henkan-paragraph/sentence/word $B$G!"(B
|
|
75 ;;; $BI=<($,Mp$l$k$N$r=$@5!J(Bsave-excursion $B$r$O$:$9!K(B
|
|
76 ;;; 92.7.14 Unnecessary '*' in comments of variables deleted. (by T.Ito)
|
|
77 ;;; 92/7/10 henkan-kakutei-first-char $B$rDI2C!"(BC-@ $B$K3d$jEv$F!#(B(by K.Handa)
|
|
78 ;;; 92/7/8 overwrite-mode $B$N%5%]!<%H(B(by K. Handa)
|
|
79 ;;; 92/6/30 startup file $B<~$j$NJQ99(B
|
|
80 ;;; 92/6/30 $BJQ49%b!<%I$N%"%H%j%S%e!<%H$K(B bold $B$rDI2C(B
|
|
81 ;;; (by ITO Toshiyuki <toshi@his.cpl.melco.co.jp>)
|
|
82 ;;; 92/6/22 $B6uJ8;zNs$rJQ49$9$k$HMn$A$k%P%0$r=$@5(B
|
|
83 ;;; 92/5/20 set-egg-henkan-mode-format $B$N(B bug fix
|
|
84 ;;; 92/5/20 egg:set-bunsetu-attribute $B$,BgJ8@a$G@5$7$/F0$/$h$&$KJQ99(B
|
|
85 ;;; 92/5/19 version 0
|
|
86 ;;; ----------------------------------------------------------------
|
|
87
|
|
88 ;;; Code:
|
|
89
|
|
90 (make-variable-buffer-local 'wnn-server-type)
|
|
91 (make-variable-buffer-local 'cwnn-zhuyin)
|
|
92
|
|
93 (defvar egg:*sho-bunsetu-face* nil "*$B>.J8@aI=<($KMQ$$$k(B face $B$^$?$O(B nil")
|
|
94 (make-variable-buffer-local
|
|
95 (defvar egg:*sho-bunsetu-overlay* nil "$B>.J8@a$NI=<($K;H$&(B overlay"))
|
|
96
|
|
97 (defvar egg:*sho-bunsetu-kugiri* "-" "*$B>.J8@a$N6h@Z$j$r<($9J8;zNs(B")
|
|
98
|
|
99 (defvar egg:*dai-bunsetu-face* nil "*$BBgJ8@aI=<($KMQ$$$k(B face $B$^$?$O(B nil")
|
|
100 (make-variable-buffer-local
|
|
101 (defvar egg:*dai-bunsetu-overlay* nil "$BBgJ8@a$NI=<($K;H$&(B overlay"))
|
|
102
|
|
103 (defvar egg:*dai-bunsetu-kugiri* " " "*$BBgJ8@a$N6h@Z$j$r<($9J8;zNs(B")
|
|
104
|
|
105 (defvar egg:*henkan-face* nil "*$BJQ49NN0h$rI=<($9$k(B face $B$^$?$O(B nil")
|
|
106 (make-variable-buffer-local
|
|
107 (defvar egg:*henkan-overlay* nil "$BJQ49NN0h$NI=<($K;H$&(B overlay"))
|
|
108
|
|
109 (defvar egg:*henkan-open* "|" "*$BJQ49$N;OE@$r<($9J8;zNs(B")
|
|
110 (defvar egg:*henkan-close* "|" "*$BJQ49$N=*E@$r<($9J8;zNs(B")
|
|
111
|
|
112 (defvar egg:henkan-mode-in-use nil)
|
|
113
|
|
114 ;;; ----------------------------------------------------------------
|
|
115 ;;; $B0J2<$N(B its mode $B4X78$N4X?t$O!"(Begg.el $B$GDj5A$5$l$F$$$k$,!"(B
|
|
116 ;;; $B$?$+$J$G$O(B its mode $B$N@ZBX$($KF14|$7$F!"(Bjserver/cserver,
|
|
117 ;;; pinyin/zhuyin $B$N@ZBX$($b9T$J$$$?$$$N$G!":FDj5A$7$F$$$k!#(B
|
|
118 ;;; $B=>$C$F!"(Begg.el, wnn-egg.el $B$N=g$K%m!<%I$7$J$1$l$P$J$i$J$$!#(B
|
|
119
|
|
120
|
|
121 (defun its:select-mode (name)
|
|
122 (interactive (list (completing-read "ITS mode: " its:*mode-alist*)))
|
|
123 (if (its:get-mode-map name)
|
|
124 (progn
|
|
125 (setq its:*current-map* (its:get-mode-map name))
|
|
126 (egg:mode-line-display)
|
|
127 (run-hooks 'its:select-mode-hook))
|
|
128 (beep))
|
|
129 )
|
|
130
|
|
131 (defun its:select-mode-from-menu ()
|
|
132 (interactive)
|
|
133 (setcar (nthcdr 2 its:*select-mode-menu*) its:*mode-alist*)
|
|
134 (setq its:*current-map* (menu:select-from-menu its:*select-mode-menu*))
|
|
135 (egg:mode-line-display)
|
|
136 (run-hooks 'its:select-mode-hook))
|
|
137
|
|
138 (defvar its:select-mode-hook
|
|
139 (function
|
|
140 (lambda ()
|
|
141 (cond ((eq its:*current-map* (its:get-mode-map "roma-kana"))
|
|
142 (setq wnn-server-type 'jserver))
|
|
143 ((eq its:*current-map* (its:get-mode-map "PinYin"))
|
|
144 (setq wnn-server-type 'cserver)
|
|
145 (setq cwnn-zhuyin nil))
|
|
146 ((eq its:*current-map* (its:get-mode-map "zhuyin"))
|
|
147 (setq wnn-server-type 'cserver)
|
|
148 (setq cwnn-zhuyin t))
|
|
149 ((eq its:*current-map* (its:get-mode-map "hangul"))
|
|
150 (setq wnn-server-type 'kserver))
|
|
151 ))))
|
|
152
|
|
153 (defun its:next-mode ()
|
|
154 (interactive)
|
|
155 (let ((pos (its:find its:*current-map* its:*standard-modes*)))
|
|
156 (setq its:*current-map*
|
|
157 (nth (% (1+ pos) (length its:*standard-modes*))
|
|
158 its:*standard-modes*))
|
|
159 (egg:mode-line-display)
|
|
160 (run-hooks 'its:select-mode-hook)))
|
|
161
|
|
162 (defun its:previous-mode ()
|
|
163 (interactive)
|
|
164 (let ((pos (its:find its:*current-map* its:*standard-modes*)))
|
|
165 (setq its:*current-map*
|
|
166 (nth (1- (if (= pos 0) (length its:*standard-modes*) pos))
|
|
167 its:*standard-modes*))
|
|
168 (egg:mode-line-display)
|
|
169 (run-hooks 'its:select-mode-hook)))
|
|
170
|
|
171 (defun read-current-its-string (prompt &optional initial-input henkan)
|
|
172 (save-excursion
|
|
173 (let ((old-its-map its:*current-map*)
|
|
174 (minibuff (window-buffer (minibuffer-window))))
|
|
175 (set-buffer minibuff)
|
|
176 (setq egg:*input-mode* t
|
|
177 egg:*mode-on* t
|
|
178 its:*current-map* old-its-map)
|
|
179 (mode-line-egg-mode-update
|
|
180 (nth 1 (its:get-mode-indicator its:*current-map*)))
|
|
181 (read-from-minibuffer prompt initial-input
|
|
182 (if henkan nil
|
|
183 egg:*minibuffer-local-hiragana-map*)))))
|
|
184
|
|
185 ;;;----------------------------------------------------------------------
|
|
186 ;;;
|
|
187 ;;; Kana Kanji Henkan
|
|
188 ;;;
|
|
189 ;;;----------------------------------------------------------------------
|
|
190
|
|
191 (defvar wnn-host-name nil "Jserver host name currently connected")
|
|
192 (defvar cwnn-host-name nil "Cserver host name currently connected")
|
|
193 (defvar kwnn-host-name nil "Kserver host name currently connected")
|
|
194 (defvar jserver-list nil "*List of jserver host name")
|
|
195 (defvar cserver-list nil "*List of cserver host name")
|
|
196 (defvar kserver-list nil "*List of kserver host name")
|
|
197
|
|
198 (defvar egg:*sai-henkan-start* nil)
|
|
199 (defvar egg:*sai-henkan-end* nil)
|
|
200 (defvar egg:*old-bunsetu-suu* nil)
|
|
201
|
|
202 (defun wnn-egg:kill-emacs-function ()
|
|
203 (let ((wnn-server-type))
|
|
204 (setq wnn-server-type 'jserver)
|
|
205 (close-wnn)
|
|
206 (setq wnn-server-type 'cserver)
|
|
207 (close-wnn)
|
|
208 (setq wnn-server-type 'kserver)
|
|
209 (close-wnn)))
|
|
210
|
|
211 (add-hook 'kill-emacs-hook 'wnn-egg:kill-emacs-function)
|
|
212
|
|
213 (defun egg:error (form &rest mesg)
|
|
214 (apply 'notify (or form "%s") mesg)
|
|
215 (apply 'error (or form "%s") mesg))
|
|
216
|
|
217 (defun egg:msg-get (message)
|
|
218 (or
|
|
219 (nth 1 (assoc message (nth 1 (assoc wnn-server-type *egg-message-alist*))))
|
|
220 (format "No message. Check *egg-message-alist* %s %s"
|
|
221 wnn-server-type message)))
|
|
222
|
|
223 (defvar *egg-message-alist*
|
|
224 '((jserver
|
|
225 ((open-wnn "$B%[%9%H(B %s $B$N(B Wnn $B$r5/F0$7$^$7$?(B")
|
|
226 (no-rcfile "%s $B>e$K(B egg-startup-file $B$,$"$j$^$;$s!#(B")
|
|
227 (file-saved "Wnn$B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?!#(B")
|
|
228 (henkan-mode-indicator "$B4A(B")
|
|
229 (begin-henkan "$BJQ493+;OJ8;zNs(B: ")
|
|
230 (end-henkan "$BJQ49=*N;J8;zNs(B: ")
|
|
231 (kugiri-dai "$BBgJ8@a6h@Z$jJ8;zNs(B: ")
|
|
232 (kugiri-sho "$B>.J8@a6h@Z$jJ8;zNs(B: ")
|
|
233 (face-henkan "$BJQ496h4VI=<(B0@-(B: ")
|
|
234 (face-dai "$BBgJ8@a6h4VI=<(B0@-(B: ")
|
|
235 (face-sho "$B>.J8@a6h4VI=<(B0@-(B: ")
|
|
236 (jikouho "$B<!8uJd(B:")
|
|
237 (off-msg "%s %s(%s:%s)$B$r(B off $B$7$^$7$?!#(B")
|
|
238 (henkan-help "$B4A;zJQ49%b!<%I(B:
|
|
239 $BJ8@a0\F0(B
|
|
240 \\[henkan-first-bunsetu]\t$B@hF,J8@a(B\t\\[henkan-last-bunsetu]\t$B8eHxJ8@a(B
|
|
241 \\[henkan-backward-bunsetu]\t$BD>A0J8@a(B\t\\[henkan-forward-bunsetu]\t$BD>8eJ8@a(B
|
|
242 $BJQ49JQ99(B
|
|
243 $BBgJ8@a<!8uJd(B \\[henkan-next-kouho-dai]\t$B>.J8@a<!8uJd(B \\[henkan-next-kouho-sho]
|
|
244 $BA08uJd(B \\[henkan-previous-kouho] \t$B<!8uJd(B \\[henkan-next-kouho]
|
|
245 $BBgJ8@a?-$7(B \\[henkan-bunsetu-nobasi-dai] \t$BBgJ8@a=L$a(B \\[henkan-bunsetu-chijime-dai]
|
|
246 $B>.J8@a?-$7(B \\[henkan-bunsetu-nobasi-sho] \t$B>.J8@a=L$a(B \\[henkan-bunsetu-chijime-sho]
|
|
247 $BBgJ8@aJQ498uJdA*Br(B \\[henkan-select-kouho-dai] \t$B>.J8@aJQ498uJdA*Br(B \\[henkan-select-kouho-sho]
|
|
248 $BJQ493NDj(B
|
|
249 $BA4J8@a3NDj(B \\[henkan-kakutei] \t$BD>A0J8@a$^$G3NDj(B \\[henkan-kakutei-before-point]
|
|
250 $BJQ49Cf;_(B \\[henkan-quit]
|
|
251 ")
|
|
252 (hinsimei "$BIJ;lL>(B:")
|
|
253 (jishotouroku-yomi "$B<-=qEPO?!X(B%s$B!Y(B $BFI$_(B :")
|
|
254 (touroku-jishomei "$BEPO?<-=qL>(B:" )
|
|
255 (registerd "$B<-=q9`L\!X(B%s$B!Y(B(%s: %s)$B$r(B%s$B$KEPO?$7$^$7$?!#(B" )
|
|
256 (yomi "$B$h$_!'(B")
|
|
257 ; (no-yomi "$B!X(B%s$B!Y$N<-=q9`L\$O$"$j$^$;$s!#(B")
|
|
258 (no-yomi "$B<-=q9`L\!X(B%s$B!Y$O$"$j$^$;$s!#(B")
|
|
259 (jisho "$B<-=q!'(B")
|
|
260 (hindo " $BIQEY!'(B")
|
|
261 (kanji "$B4A;z!'(B")
|
|
262 (register-notify "$B<-=q9`L\!X(B%s$B!Y(B(%s: %s)$B$r(B%s$B$KEPO?$7$^$9!#(B")
|
|
263 (cannot-remove "$B%7%9%F%`<-=q9`L\$O:o=|$G$-$^$;$s!#(B")
|
|
264 (enter-hindo "$BIQEY$rF~$l$F2<$5$$(B: ")
|
|
265 (remove-notify "$B<-=q9`L\(B%s(%s)$B$r(B%s$B$+$i:o=|$7$^$9!#(B")
|
|
266 (removed "$B<-=q9`L\(B%s(%s)$B$r(B%s$B$+$i:o=|$7$^$7$?!#(B")
|
|
267 (jishomei "$B<-=qL>(B:" )
|
|
268 (comment "$B%3%a%s%H(B: ")
|
|
269 (jisho-comment "$B<-=q(B:%s: $B%3%a%s%H(B:%s")
|
|
270 (param ("$B#N(B ( $BBg(B ) $BJ8@a2r@O$N#N(B"
|
|
271 "$BBgJ8@aCf$N>.J8@a$N:GBg?t(B"
|
|
272 "$B448l$NIQEY$N%Q%i%a!<%?(B"
|
|
273 "$B>.J8@aD9$N%Q%i%a!<%?(B"
|
|
274 "$B448lD9$N%Q%i%a!<%?(B"
|
|
275 "$B:#;H$C$?$h%S%C%H$N%Q%i%a!<%?(B"
|
|
276 "$B<-=q$N%Q%i%a!<%?(B"
|
|
277 "$B>.J8@a$NI>2ACM$N%Q%i%a!<%?(B"
|
|
278 "$BBgJ8@aD9$N%Q%i%a!<%?(B"
|
|
279 "$B>.J8@a?t$N%Q%i%a!<%?(B"
|
|
280 "$B5?;wIJ;l(B $B?t;z$NIQEY(B"
|
|
281 "$B5?;wIJ;l(B $B%+%J$NIQEY(B"
|
|
282 "$B5?;wIJ;l(B $B1Q?t$NIQEY(B"
|
|
283 "$B5?;wIJ;l(B $B5-9f$NIQEY(B"
|
|
284 "$B5?;wIJ;l(B $BJD3g8L$NIQEY(B"
|
|
285 "$B5?;wIJ;l(B $BIUB08l$NIQEY(B"
|
|
286 "$B5?;wIJ;l(B $B3+3g8L$NIQEY(B"))
|
|
287 ))
|
|
288 (cserver
|
|
289 ((open-wnn "Host %s $AIO5D(B cWnn $ARQ>-Fp6/AK(B")
|
|
290 (no-rcfile "$ATZ(B%s $AIOC;SP(B egg-startup-file")
|
|
291 (file-saved "Wnn$A5DF56HND<~:M4G5dPEO"RQ>-MK3vAK(B")
|
|
292 (henkan-mode-indicator "$A::(B")
|
|
293 (begin-henkan "$A1d;;?*J<WV7{AP(B: ")
|
|
294 (end-henkan "$A1d;;=aJxWV7{AP(B: ")
|
|
295 (kugiri-dai "$A4JWi7V8nWV7{AP(B: ")
|
|
296 (kugiri-sho "$A5%4J7V8nWV7{AP(B: ")
|
|
297 (face-henkan "$A1d;;Gx<d1mJ>JtPT(B: ")
|
|
298 (face-dai "$A4JWiGx<d1mJ>JtPT(B: ")
|
|
299 (face-sho "$A5%4JGx<d1mJ>JtPT(B: ")
|
|
300 (jikouho "$A4N:nQ!(B:")
|
|
301 (off-msg "%s %s(%s:%s)$ARQ1;(B off $A5tAK(B")
|
|
302 (henkan-help "$A::WV1d;;D#J=(B:
|
|
303 $A4JWiRF6/(B
|
|
304 \\[henkan-first-bunsetu]\t$AOHM74JWi(B\t\\[henkan-last-bunsetu]\t$A=aN24JWi(B
|
|
305 \\[henkan-backward-bunsetu]\t$AG0R;8v4JWi(B\t\\[henkan-forward-bunsetu]\t$AOBR;8v4JWi(B
|
|
306 $A1d;;1d8|(B
|
|
307 $A4JWi4N:nQ!(B \\[henkan-next-kouho-dai]\t$A5%4J4N:nQ!(B \\[henkan-next-kouho-sho]
|
|
308 $AG0:nQ!(B \\[henkan-previous-kouho] \t$A4N:nQ!(B \\[henkan-next-kouho]
|
|
309 $A4JWi@)U9(B \\[henkan-bunsetu-nobasi-dai] \t$A4JWiJUKu(B \\[henkan-bunsetu-chijime-dai]
|
|
310 $A5%4J@)U9(B \\[henkan-bunsetu-nobasi-sho] \t$A5%4JJUKu(B \\[henkan-bunsetu-chijime-sho]
|
|
311 $A4JWi1d;;:r295DQ!Tq(B \\[henkan-select-kouho-dai] \t$A5%4J1d;;:r295DQ!Tq(B \\[henkan-select-kouho-sho]
|
|
312 $A1d;;:r295DQ!Tq(B \\[henkan-select-kouho-dai]
|
|
313 $A1d;;H76((B
|
|
314 $AH+NDH76((B \\[henkan-kakutei] \t$AIOR;4JWiN*V95DH76((B \\[henkan-kakutei-before-point]
|
|
315 $AM#V91d;;(B \\[henkan-quit]
|
|
316 ")
|
|
317 (hinsimei "$A4JPTC{(B:")
|
|
318 (jishotouroku-yomi "$A4G5d5GB<!:(B%s$A!;F47((B :")
|
|
319 (touroku-jishomei "$A5GB<4G5dC{(B:" )
|
|
320 (registerd "$A4G5dOnD?!:(B%s$A!;(B(%s: %s)$ARQ1;5GB<5=(B %s $AVPAK(B" )
|
|
321 (yomi "$AF47($B!'(B")
|
|
322 ; (no-yomi "$A!:(B%s$A!;5D4G5dOnD?2;4fTZ(B")
|
|
323 (no-yomi "$A4G5dOnD?!:(B%s$A!;2;4fTZ(B")
|
|
324 (jisho "$A4G5d(B:")
|
|
325 (hindo " $AF56H$B!'(B")
|
|
326 (kanji "$A::WV$B!'(B")
|
|
327 (register-notify "$A4G5dOnD?!:(B%s$A!;(B(%s: %s)$A=+R*1;5GB<5=(B %s $AVP(B")
|
|
328 (cannot-remove "$AO5M34G5dOn2;D\O{3}(B")
|
|
329 (enter-hindo "$AGkJdHkF56H(B: ")
|
|
330 (remove-notify "$A4G5dOnD?(B%s(%s)$A=+R*4S(B %s $AVPO{3}(B")
|
|
331 (removed "$A4G5dOnD?(B%s(%s)$ARQ>-4S(B%s$AVPO{3}AK(B")
|
|
332 (jishomei "$A4G5dC{(B:" )
|
|
333 (comment "$AW"JM(B: ")
|
|
334 (jisho-comment "$A4G5d(B:%s: $AW"JM(B:%s")
|
|
335 (param ("$A=bNv4JWi8vJ}(B"
|
|
336 "$A4JWiVP4J5DWn4s8vJ}(B"
|
|
337 "$AF56HH(V5(B"
|
|
338 "$A4J3$6HH(V5(B"
|
|
339 "$AKDIyU}H76HH(V5(B"
|
|
340 "$A8U2ESC9}H(V5(B"
|
|
341 "$AWV5dSEOH<6H(V5(B"
|
|
342 "$A4JF@<[>yV5H(V5(B"
|
|
343 "$A4JWi3$H(V5(B"
|
|
344 "$A4JWiVP4JJ}H(V5(B"
|
|
345 "$AJ}WV5DF56H(B"
|
|
346 "$AS"NDWVD85DF56H(B"
|
|
347 "$A<G:E5DF56H(B"
|
|
348 "$A?*@(;!5DF56H(B"
|
|
349 "$A1U@(;!5DF56H(B"
|
|
350 "$AWn4s:r298vJ}(B"
|
|
351 "$A18SC(B"
|
|
352 ))
|
|
353 ))
|
|
354 (kserver
|
|
355 ((open-wnn "$(CH#=:F.(B %s $(C@G(B kWnn $(C8&(B $(CQ&TQG_@>4O4Y(B.")
|
|
356 (no-rcfile "%s $(C?!(B egg-startup-file $(C@L(B $(C>x@>4O4Y(B.")
|
|
357 (file-saved "kWnn $(C@G(B $(C^:SxoW\C!$^vnpoW\C8&(B $(C?E0e@>4O4Y(B.")
|
|
358 (henkan-mode-indicator "$(CyS(B")
|
|
359 (begin-henkan "$(C\(|5(B $(CKRc7(B $(CY~m.fj(B: ")
|
|
360 (end-henkan "$(C\(|5(B $(Cp{Vu(B $(CY~m.fj(B: ")
|
|
361 (kugiri-dai "$(CS^Y~o=(B $(CO!\,(B $(CY~m.fj(B: ")
|
|
362 (kugiri-sho "$(Ca3Y~o=(B $(CO!\,(B $(CY~m.fj(B: ")
|
|
363 (face-henkan "$(C\(|5(B $(CO!J`(B $(CxvcF(B $(CaU`u(B: ")
|
|
364 (face-dai "$(CS^Y~o=(B $(CO!J`(B $(CxvcF(B $(CaU`u(B: ")
|
|
365 (face-sho "$(Ca3Y~o=(B $(CO!J`(B $(CxvcF(B $(CaU`u(B: ")
|
|
366 (jikouho "$(C4Y@=(B $(C}&\M(B:")
|
|
367 (off-msg "%s %s(%s:%s)$(C@;(B off $(CG_@>4O4Y(B.")
|
|
368 (henkan-help "$(CySm.(B $(C\(|5(B $(C8p5e(B:
|
|
369 $(CY~o=(B $(Cl9TQ(B
|
|
370 \\[henkan-first-bunsetu]\t$(C`;Ti(B $(CY~o=(B\t\\[henkan-last-bunsetu]\t$(C}-Z-(B $(CY~o=(B
|
|
371 \\[henkan-backward-bunsetu]\t$(CrAnq(B $(CY~o=(B\t\\[henkan-forward-bunsetu]\t$(CrA}-(B $(CY~o=(B
|
|
372 $(C\(|5(B $(C\(LZ(B
|
|
373 $(CS^Y~o=(B $(C4Y@=(B $(C}&\M(B \\[henkan-next-kouho-dai]\t$(Ca3Y~o=(B $(C4Y@=(B $(C}&\M(B \\[henkan-next-kouho-sho]
|
|
374 $(Cnq(B $(C}&\M(B \\[henkan-previous-kouho] \t$(C4Y@=(B $(C}&\M(B \\[henkan-next-kouho]
|
|
375 $(CS^Y~o=(B $(C|*S^(B \\[henkan-bunsetu-nobasi-dai] \t$(CS^Y~o=(B $(Cuja3(B \\[henkan-bunsetu-chijime-dai]
|
|
376 $(Ca3Y~o=(B $(C|*S^(B \\[henkan-bunsetu-nobasi-sho] \t$(Ca3Y~o=(B $(Cuja3(B \\[henkan-bunsetu-chijime-sho]
|
|
377 $(CS^Y~o=(B $(C\(|5(B $(C4Y@=(B $(C}&\M(B \\[henkan-select-kouho-dai] \t$(Ca3Y~o=(B $(C\(|5(B $(C4Y@=(B $(C}&\M(B \\[henkan-select-kouho-sho]
|
|
378 $(C\(|5(B $(C|,oR(B
|
|
379 $(CnoY~o=(B $(C|,oR(B \\[henkan-kakutei] \t$(CrAnq(B $(CY~o=1nAv(B $(C|,oR(B \\[henkan-kakutei-before-point]
|
|
380 $(C\(|5(B $(Cqir-(B \\[henkan-quit]
|
|
381 ")
|
|
382 (hinsimei "$(Cy!^rY#(B: ")
|
|
383 (jishotouroku-yomi "$(C^vnp(B $(CTtVb!:(B%s$(C!;(B $(CGQ1[(B: ")
|
|
384 (touroku-jishomei "$(CTtVb(B $(C^vnpY#(B: " )
|
|
385 (registerd "$(C^vnp(B $(Cz#YM!:(B%s$(C!;(B(%s: %s)$(C@;(B %s$(C?!(B $(CTtVbG_@>4O4Y(B." )
|
|
386 (yomi "$(CGQ1[(B: ")
|
|
387 ; (no-yomi "$(C!:(B%s$(C!;@G(B $(C^vnp(B $(Cz#YM@L(B $(C>x@>4O4Y(B.")
|
|
388 (no-yomi "$(C^vnp(B $(Cz#YM(B $(C!:(B%s$(C!;@L(B $(C>x@>4O4Y(B.")
|
|
389 (jisho "$(C^vnp(B: ")
|
|
390 (hindo " $(C^:Sx(B: ")
|
|
391 (kanji "$(CySm.(B: ")
|
|
392 (register-notify "$(C^vnp(B $(Cz#YM(B $(C!:(B%s$(C!;(B(%s: %s)$(C@;(B %s$(C?!(B $(CTtVbGO0Z@>4O4Y(B.")
|
|
393 (cannot-remove "$(C=C=:E[(B $(C^vnpz#YM@:(B $(Ca<K[GR(B $(C<v(B $(C>x@>4O4Y(B.")
|
|
394 (enter-hindo "$(C^:Sx8&(B $(Cl}UtGO=J=C?@(B: ")
|
|
395 (remove-notify "$(C^vnpz#YM(B %s(%s)$(C@;(B %s$(C:NEM(B $(Ca<K[GO0Z@>4O4Y(B.")
|
|
396 (removed "$(C^vnp(B $(Cz#YM(B %s(%s)$(C@;(B %s$(C:NEM(B $(Ca<K[G_@>4O4Y(B.")
|
|
397 (jishomei "$(C^vnpY#(B: " )
|
|
398 (comment "$(CqI`7(B: ")
|
|
399 (jisho-comment "$(C^vnp(B:%s: $(CqI`7(B:%s")
|
|
400 (param ("N ($(CS^(B)$(CY~o=(B $(Cz0`0@G(B N"
|
|
401 "$(CS^Y~o=(B $(C>H@G(B $(Ca3Y~o=(B $(C<v@G(B $(CuLS^b&(B"
|
|
402 "$(CJOe^@G(B $(C^:Sx(B $(CFP7/9LEM(B"
|
|
403 "$(Ca3Y~o=(B $(C1f@L(B $(CFP7/9LEM(B"
|
|
404 "$(CJOe^@G(B $(C1f@L(B $(CFP7/9LEM(B"
|
|
405 "$(Cq~PQ(B $(C^EiDG_@>4O4Y(B $(C:qF.(B $(CFP7/9LEM(B"
|
|
406 "$(C^vnp@G(B $(CFP7/9LEM(B"
|
|
407 "$(Ca3Y~o=@G(B $(CxDJ$v7(B $(CFP7/9LEM(B"
|
|
408 "$(CS^Y~o=(B $(C1f@L(B $(CFP7/9LEM(B"
|
|
409 "$(Ca3Y~o=(B $(Cb&(B $(CFP7/9LEM(B"
|
|
410 "$(CJ#_L(B $(Cy!^r(B: $(Cb&m.@G(B $(C^:Sx(B"
|
|
411 "$(CJ#_L(B $(Cy!^r(B: $(CGQ1[@G(B $(C^:Sx(B"
|
|
412 "$(CJ#_L(B $(Cy!^r(B: $(CgHb&m.@G(B $(C^:Sx(B"
|
|
413 "$(CJ#_L(B $(Cy!^r(B: $(CQ@{\@G(B $(C^:Sx(B"
|
|
414 "$(CJ#_L(B $(Cy!^r(B: $(CxMN@{A@G(B $(C^:Sx(B"
|
|
415 "$(CJ#_L(B $(Cy!^r(B: $(C]>aUe^@G(B $(C^:Sx(B"
|
|
416 "$(CJ#_L(B $(Cy!^r(B: $(CKRN@{A@G(B $(C^:Sx(B"))
|
|
417 ))
|
|
418 ))
|
|
419
|
|
420
|
|
421 ;;;
|
|
422 ;;; Entry functions for egg-startup-file
|
|
423 ;;;
|
|
424
|
|
425 ;(defvar wnn-lang-name nil)
|
|
426 ;(defvar default-wnn-lang-name "ja_JP") ; 92.8.19 by T.Matsuzawa
|
|
427
|
|
428 (defvar skip-wnn-setenv-if-env-exist nil
|
|
429 "skip wnn environment setting when the same name environment exists")
|
|
430
|
|
431 (defmacro push-end (val loc)
|
|
432 (list 'push-end-internal val (list 'quote loc)))
|
|
433
|
|
434 (defun push-end-internal (val loc)
|
|
435 (set loc
|
|
436 (if (eval loc)
|
|
437 (nconc (eval loc) (cons val nil))
|
|
438 (cons val nil))))
|
|
439
|
|
440 (defun is-wnn6-server ()
|
|
441 (= (wnn-server-version) 61697))
|
|
442
|
|
443 (defun add-wnn-dict (dfile hfile priority dmode hmode &optional dpaswd hpaswd)
|
|
444 ; (open-wnn-if-disconnected)
|
|
445 (if (null (wnn-server-dict-add
|
|
446 (substitute-in-file-name dfile)
|
|
447 (substitute-in-file-name hfile)
|
|
448 priority dmode hmode dpaswd hpaswd))
|
|
449 (egg:error (wnn-server-get-msg))))
|
|
450
|
|
451 (defun set-wnn-fuzokugo (ffile)
|
|
452 ; (open-wnn-if-disconnected)
|
|
453 (if (null (wnn-server-fuzokugo-set (substitute-in-file-name ffile)))
|
|
454 (egg:error (wnn-server-get-msg))))
|
|
455
|
|
456 (defun set-wnn-param (&rest param)
|
|
457 (interactive)
|
|
458 ; (open-wnn-if-disconnected)
|
|
459 (let ((current-param (wnn-server-get-param))
|
|
460 (new-param)
|
|
461 (message (egg:msg-get 'param)))
|
|
462 (while current-param
|
|
463 (setq new-param
|
|
464 (cons
|
|
465 (if (or (null param) (null (car param)))
|
|
466 (string-to-int
|
|
467 (read-from-minibuffer (concat (car message) ": ")
|
|
468 (int-to-string (car current-param))))
|
|
469 (car param))
|
|
470 new-param))
|
|
471 (setq current-param (cdr current-param)
|
|
472 message (cdr message)
|
|
473 param (if param (cdr param) nil)))
|
|
474 (apply 'wnn-server-set-param (nreverse new-param))))
|
|
475
|
|
476 ;;
|
|
477 ;; for Wnn6
|
|
478 ;;
|
|
479 (defun add-wnn-fisys-dict (dfile hfile hmode &optional hpaswd)
|
|
480 ; (open-wnn-if-disconnected)
|
|
481 (if (null (wnn-server-fisys-dict-add
|
|
482 (substitute-in-file-name dfile)
|
|
483 (substitute-in-file-name hfile)
|
|
484 hmode hpaswd))
|
|
485 (egg:error (wnn-server-get-msg))))
|
|
486
|
|
487 (defun add-wnn-fiusr-dict (dfile hfile dmode hmode &optional dpaswd hpaswd)
|
|
488 ; (open-wnn-if-disconnected)
|
|
489 (if (null (wnn-server-fiusr-dict-add
|
|
490 (substitute-in-file-name dfile)
|
|
491 (substitute-in-file-name hfile)
|
|
492 dmode hmode dpaswd hpaswd))
|
|
493 (egg:error (wnn-server-get-msg))))
|
|
494
|
|
495 (defun add-wnn-notrans-dict (dfile priority dmode &optional dpaswd)
|
|
496 ; (open-wnn-if-disconnected)
|
|
497 (if (null (wnn-server-notrans-dict-add
|
|
498 (substitute-in-file-name dfile)
|
|
499 priority dmode dpaswd))
|
|
500 (egg:error (wnn-server-get-msg))))
|
|
501
|
|
502 (defun add-wnn-bmodify-dict (dfile priority dmode &optional dpaswd)
|
|
503 ; (open-wnn-if-disconnected)
|
|
504 (if (null (wnn-server-bmodify-dict-add
|
|
505 (substitute-in-file-name dfile)
|
|
506 priority dmode dpaswd))
|
|
507 (egg:error (wnn-server-get-msg))))
|
|
508
|
|
509 (defun set-last-is-first-mode (mode)
|
|
510 ; (open-wnn-if-disconnected)
|
|
511 (if (null (wnn-server-set-last-is-first
|
|
512 mode))
|
|
513 (egg:error (wnn-server-get-msg))))
|
|
514
|
|
515 (defun set-complex-conv-mode (mode)
|
|
516 ; (open-wnn-if-disconnected)
|
|
517 (if (null (wnn-server-set-complex-conv-mode
|
|
518 mode))
|
|
519 (egg:error (wnn-server-get-msg))))
|
|
520
|
|
521 (defun set-okuri-learn-mode (mode)
|
|
522 ; (open-wnn-if-disconnected)
|
|
523 (if (null (wnn-server-set-okuri-learn-mode
|
|
524 mode))
|
|
525 (egg:error (wnn-server-get-msg))))
|
|
526
|
|
527 (defun set-okuri-flag (mode)
|
|
528 ; (open-wnn-if-disconnected)
|
|
529 (if (null (wnn-server-set-okuri-flag
|
|
530 mode))
|
|
531 (egg:error (wnn-server-get-msg))))
|
|
532
|
|
533 (defun set-prefix-learn-mode (mode)
|
|
534 ; (open-wnn-if-disconnected)
|
|
535 (if (null (wnn-server-set-prefix-learn-mode
|
|
536 mode))
|
|
537 (egg:error (wnn-server-get-msg))))
|
|
538
|
|
539 (defun set-prefix-flag (mode)
|
|
540 ; (open-wnn-if-disconnected)
|
|
541 (if (null (wnn-server-set-prefix-flag
|
|
542 mode))
|
|
543 (egg:error (wnn-server-get-msg))))
|
|
544
|
|
545 (defun set-suffix-learn-mode (mode)
|
|
546 ; (open-wnn-if-disconnected)
|
|
547 (if (null (wnn-server-set-suffix-learn-mode
|
|
548 mode))
|
|
549 (egg:error (wnn-server-get-msg))))
|
|
550
|
|
551 (defun set-common-learn-mode (mode)
|
|
552 ; (open-wnn-if-disconnected)
|
|
553 (if (null (wnn-server-set-common-learn-mode
|
|
554 mode))
|
|
555 (egg:error (wnn-server-get-msg))))
|
|
556
|
|
557 (defun set-freq-func-mode (mode)
|
|
558 ; (open-wnn-if-disconnected)
|
|
559 (if (null (wnn-server-set-freq-func-mode
|
|
560 mode))
|
|
561 (egg:error (wnn-server-get-msg))))
|
|
562
|
|
563 (defun set-numeric-mode (mode)
|
|
564 ; (open-wnn-if-disconnected)
|
|
565 (if (null (wnn-server-set-numeric-mode
|
|
566 mode))
|
|
567 (egg:error (wnn-server-get-msg))))
|
|
568
|
|
569 (defun set-alphabet-mode (mode)
|
|
570 ; (open-wnn-if-disconnected)
|
|
571 (if (null (wnn-server-set-alphabet-mode
|
|
572 mode))
|
|
573 (egg:error (wnn-server-get-msg))))
|
|
574
|
|
575 (defun set-symbol-mode (mode)
|
|
576 ; (open-wnn-if-disconnected)
|
|
577 (if (null (wnn-server-set-symbol-mode
|
|
578 mode))
|
|
579 (egg:error (wnn-server-get-msg))))
|
|
580
|
|
581 (defun set-yuragi-mode (mode)
|
|
582 ; (open-wnn-if-disconnected)
|
|
583 (if (null (wnn-server-set-yuragi-mode
|
|
584 mode))
|
|
585 (egg:error (wnn-server-get-msg))))
|
|
586
|
|
587 (defun wnn6-reset-prev-info ()
|
|
588 ; (open-wnn-if-disconnected)
|
|
589 (if (null (wnn-reset-previous-info))
|
|
590 (egg:error (wnn-server-get-msg))))
|
|
591
|
|
592 ;;;
|
|
593 ;;; WNN interface
|
|
594 ;;;
|
|
595
|
|
596 (defun make-host-list (name list)
|
|
597 (cons name (delete name list)))
|
|
598
|
|
599 (defun set-wnn-host-name (name)
|
|
600 (interactive "sHost name: ")
|
|
601 (let ((wnn-server-type 'jserver)) (close-wnn))
|
|
602 (setq jserver-list
|
|
603 (make-host-list
|
|
604 name (or jserver-list (list (or wnn-host-name (getenv "JSERVER")))))))
|
|
605
|
|
606 (fset 'set-jserver-host-name (symbol-function 'set-wnn-host-name))
|
|
607
|
|
608 (defun set-cwnn-host-name (name)
|
|
609 (interactive "sHost name: ")
|
|
610 (let ((wnn-server-type 'cserver)) (close-wnn))
|
|
611 (setq cserver-list
|
|
612 (make-host-list
|
|
613 name (or cserver-list (list (or cwnn-host-name (getenv "CSERVER")))))))
|
|
614
|
|
615 (fset 'set-cserver-host-name (symbol-function 'set-cwnn-host-name))
|
|
616
|
|
617 (defun set-kwnn-host-name (name)
|
|
618 (interactive "sHost name: ")
|
|
619 (let ((wnn-server-type 'kserver)) (close-wnn))
|
|
620 (setq kserver-list
|
|
621 (make-host-list
|
|
622 name (or kserver-list (list (or kwnn-host-name (getenv "KSERVER")))))))
|
|
623
|
|
624 (fset 'set-kserver-host-name (symbol-function 'set-kwnn-host-name))
|
|
625
|
|
626 (defun open-wnn-if-disconnected ()
|
|
627 (if (null (wnn-server-isconnect))
|
|
628 (let ((hostlist
|
|
629 (cond ((eq wnn-server-type 'jserver)
|
|
630 (or jserver-list
|
|
631 (list (or wnn-host-name (getenv "JSERVER")))))
|
|
632 ((eq wnn-server-type 'cserver)
|
|
633 (or cserver-list
|
|
634 (list (or cwnn-host-name (getenv "CSERVER")))))
|
|
635 ((eq wnn-server-type 'kserver)
|
|
636 (or kserver-list
|
|
637 (list (or kwnn-host-name (getenv "KSERVER")))))))
|
|
638 (loginname (user-login-name)))
|
|
639 (catch 'succ
|
|
640 (while hostlist
|
|
641 (let ((hostname (car hostlist)))
|
|
642 (if (wnn-server-open hostname loginname)
|
|
643 (progn
|
|
644 (cond ((eq wnn-server-type 'jserver)
|
|
645 (setq wnn-host-name hostname))
|
|
646 ((eq wnn-server-type 'cserver)
|
|
647 (setq cwnn-host-name hostname))
|
|
648 ((eq wnn-server-type 'kserver)
|
|
649 (setq kwnn-host-name hostname)))
|
|
650 (throw 'succ hostname))))
|
|
651 (setq hostlist (cdr hostlist)))
|
|
652 (egg:error (wnn-server-get-msg))))))
|
|
653
|
|
654 (defvar egg-default-startup-file "eggrc"
|
|
655 "*Egg startup file name (system default)")
|
|
656
|
|
657 (defvar egg-startup-file ".eggrc"
|
|
658 "*Egg startup file name.")
|
|
659
|
|
660 ;;; 92/6/30, by K.Handa
|
|
661 (defvar egg-startup-file-search-path '("~" ".")
|
|
662 "*List of directories to search for egg-startup-file
|
|
663 whose name defaults to .eggrc.")
|
|
664
|
|
665 (defun egg:search-file (filename searchpath)
|
|
666 (if (file-name-directory filename)
|
|
667 (let ((file (substitute-in-file-name (expand-file-name filename))))
|
|
668 (if (file-exists-p file) file nil))
|
|
669 (catch 'answer
|
|
670 (while searchpath
|
|
671 (let ((path (car searchpath)))
|
|
672 (if (stringp path)
|
|
673 (let ((file (substitute-in-file-name
|
|
674 (expand-file-name filename path))))
|
|
675 (if (file-exists-p file) (throw 'answer file)))))
|
|
676 (setq searchpath (cdr searchpath)))
|
|
677 nil)))
|
|
678
|
|
679 (defun EGG:open-wnn ()
|
|
680 (let ((host (open-wnn-if-disconnected)))
|
|
681 (notify (egg:msg-get 'open-wnn)
|
|
682 (or host "local"))
|
|
683 (let* ((path (append egg-startup-file-search-path load-path))
|
|
684 (eggrc (or (egg:search-file egg-startup-file path)
|
|
685 (egg:search-file egg-default-startup-file load-path))))
|
|
686 (if (or (null skip-wnn-setenv-if-env-exist)
|
|
687 (null (wnn-server-dict-list)))
|
|
688 (if eggrc (load-file eggrc)
|
|
689 (let ((wnnenv-sticky nil)) (wnn-server-close))
|
|
690 (egg:error (egg:msg-get 'no-rcfile) path)))
|
|
691 (run-hooks 'egg:open-wnn-hook))))
|
|
692
|
|
693 (defun disconnect-wnn ()
|
|
694 (interactive)
|
|
695 (if (wnn-server-isconnect) (wnn-server-close)))
|
|
696
|
|
697 (defun close-wnn ()
|
|
698 (interactive)
|
|
699 (if (wnn-server-isconnect)
|
|
700 (progn
|
|
701 (wnn-server-set-rev nil)
|
|
702 (if (wnn-server-dict-save)
|
|
703 (message (egg:msg-get 'file-saved))
|
|
704 (message (wnn-server-get-msg)))
|
|
705 (sit-for 0)
|
|
706 (wnn-server-set-rev t)
|
|
707 (if (wnn-server-dict-save)
|
|
708 (message (egg:msg-get 'file-saved))
|
|
709 (message (wnn-server-get-msg)))
|
|
710 (sit-for 0)
|
|
711 (wnn-server-close)
|
|
712 (run-hooks 'egg:close-wnn-hook))))
|
|
713
|
|
714 (defun set-wnn-reverse (arg)
|
|
715 ; (open-wnn-if-disconnected)
|
|
716 (wnn-server-set-rev arg))
|
|
717
|
|
718 ;;;
|
|
719 ;;; Kanji henkan
|
|
720 ;;;
|
|
721
|
|
722 (defvar egg:*kanji-kanabuff* nil)
|
|
723 (defvar egg:*dai* t)
|
|
724 (defvar *bunsetu-number* nil)
|
|
725 (defvar *zenkouho-suu* nil)
|
|
726 (defvar *zenkouho-offset* nil)
|
|
727
|
|
728 (defun bunsetu-length-sho (number)
|
|
729 (cdr (wnn-server-bunsetu-yomi number)))
|
|
730
|
|
731 (defun bunsetu-length (number)
|
|
732 (let ((max (wnn-server-dai-end number))
|
|
733 (i (1+ number))
|
|
734 (l (bunsetu-length-sho number)))
|
|
735 (while (< i max)
|
|
736 (setq l (+ l (bunsetu-length-sho i)))
|
|
737 (setq i (1+ i)))
|
|
738 l))
|
|
739
|
|
740 (defun bunsetu-position (number)
|
|
741 (let ((pos egg:*region-start*) (i 0))
|
|
742 (while (< i number)
|
|
743 (setq pos (+ pos (length (bunsetu-kanji i))
|
|
744 (if (wnn-server-dai-top (1+ i))
|
|
745 (length egg:*dai-bunsetu-kugiri*)
|
|
746 (length egg:*sho-bunsetu-kugiri*))))
|
|
747 (setq i (1+ i)))
|
|
748 pos))
|
|
749
|
|
750 (defun bunsetu-kanji (number) (car (wnn-server-bunsetu-kanji number)))
|
|
751
|
|
752 (defun bunsetu-yomi (number) (car (wnn-server-bunsetu-yomi number)))
|
|
753
|
|
754 (defun bunsetu-kouho-suu (bunsetu-number init)
|
|
755 (if (or init (/= (wnn-server-zenkouho-bun) bunsetu-number))
|
|
756 (setq *zenkouho-offset* (wnn-server-zenkouho bunsetu-number egg:*dai*)))
|
|
757 (setq *zenkouho-suu* (wnn-server-zenkouho-suu)))
|
|
758
|
|
759 (defun bunsetu-kouho-list (bunsetu-number init)
|
|
760 (if (or init (/= (wnn-server-zenkouho-bun) bunsetu-number))
|
|
761 (setq *zenkouho-offset* (wnn-server-zenkouho bunsetu-number egg:*dai*)))
|
|
762 (let ((i (1- (setq *zenkouho-suu* (wnn-server-zenkouho-suu))))
|
|
763 (val nil))
|
|
764 (while (<= 0 i)
|
|
765 (setq val (cons (wnn-server-get-zenkouho i) val))
|
|
766 (setq i (1- i)))
|
|
767 val))
|
|
768
|
|
769 (defun bunsetu-kouho-number (bunsetu-number init)
|
|
770 (if (or init (/= (wnn-server-zenkouho-bun) bunsetu-number))
|
|
771 (setq *zenkouho-offset* (wnn-server-zenkouho bunsetu-number egg:*dai*)))
|
|
772 *zenkouho-offset*)
|
|
773
|
|
774 ;;;;
|
|
775 ;;;; User entry : henkan-region, henkan-paragraph, henkan-sentence
|
|
776 ;;;;
|
|
777
|
|
778 (defun egg:henkan-face-on ()
|
|
779 ;; Make an overlay if henkan overlay does not exist.
|
|
780 ;; Move henkan overlay to henkan region.
|
|
781 (if egg:*henkan-face*
|
|
782 (progn
|
|
783 (if (overlayp egg:*henkan-overlay*)
|
|
784 nil
|
|
785 (setq egg:*henkan-overlay* (make-overlay 1 1 nil t))
|
|
786 (overlay-put egg:*henkan-overlay* 'face egg:*henkan-face*))
|
|
787 (move-overlay egg:*henkan-overlay* egg:*region-start* egg:*region-end*))))
|
|
788
|
|
789 (defun egg:henkan-face-off ()
|
|
790 ;; detach henkan overlay from the current buffer.
|
|
791 (and egg:*henkan-face*
|
|
792 (overlayp egg:*henkan-overlay*)
|
|
793 (delete-overlay egg:*henkan-overlay*) ))
|
|
794
|
|
795
|
|
796 (defun henkan-region (start end)
|
|
797 "Convert a text in the region between START and END from kana to kanji."
|
|
798 (interactive "r")
|
|
799 (if (interactive-p) (set-mark (point))) ;;; to be fixed
|
|
800 (henkan-region-internal start end))
|
|
801
|
|
802 (defun gyaku-henkan-region (start end)
|
|
803 "Convert a text in the region between START and END from kanji to kana."
|
|
804 (interactive "r")
|
|
805 (if (interactive-p) (set-mark (point))) ;;; to be fixed
|
|
806 (henkan-region-internal start end t))
|
|
807
|
|
808 ;(defvar henkan-mode-indicator "$B4A(B")
|
|
809
|
|
810 (defun henkan-region-internal (start end &optional rev)
|
|
811 ;; region $B$r$+$J4A;zJQ49$9$k(B
|
|
812 (if egg:henkan-mode-in-use nil
|
|
813 (let ((finished nil))
|
|
814 (unwind-protect
|
|
815 (progn
|
|
816 (setq egg:henkan-mode-in-use t)
|
|
817 (if (null (wnn-server-isconnect)) (EGG:open-wnn))
|
|
818 (setq egg:*kanji-kanabuff* (buffer-substring start end))
|
|
819 ;;; for Wnn6
|
|
820 (if (and (is-wnn6-server)
|
|
821 (not (and
|
|
822 egg:*henkan-fence-mode*
|
|
823 *in-cont-flag*)))
|
|
824 (progn
|
|
825 (wnn6-reset-prev-info)))
|
|
826
|
|
827 (setq *bunsetu-number* 0)
|
|
828 (setq egg:*dai* t) ; 92.9.8 by T.shingu
|
|
829 (wnn-server-set-rev rev)
|
|
830 (let ((result (wnn-server-henkan-begin egg:*kanji-kanabuff*)))
|
|
831 (if (null result)
|
|
832 (egg:error (wnn-server-get-msg))
|
|
833 (if (> result 0)
|
|
834 (progn
|
|
835 (mode-line-egg-mode-update (egg:msg-get 'henkan-mode-indicator))
|
|
836 (goto-char start)
|
|
837 (or (markerp egg:*region-start*)
|
|
838 (setq egg:*region-start* (make-marker)))
|
|
839 (or (markerp egg:*region-end*)
|
|
840 (setq egg:*region-end* (set-marker-type (make-marker) t)))
|
|
841 (if (null (marker-position egg:*region-start*))
|
|
842 (progn
|
|
843 ;;;(setq egg:*global-map-backup* (current-global-map))
|
|
844 (setq egg:*local-map-backup* (current-local-map))
|
|
845 (and (boundp 'disable-undo) (setq disable-undo t))
|
|
846 (delete-region start end)
|
|
847 (goto-char start)
|
|
848 (insert egg:*henkan-open*)
|
|
849 (set-marker egg:*region-start* (point))
|
|
850 (insert egg:*henkan-close*)
|
|
851 (set-marker egg:*region-end* egg:*region-start*)
|
|
852 (goto-char egg:*region-start*)
|
|
853 )
|
|
854 (progn
|
|
855 (egg:fence-face-off)
|
|
856 (delete-region (- egg:*region-start* (length egg:*fence-open*))
|
|
857 egg:*region-start*)
|
|
858 (delete-region egg:*region-end*
|
|
859 (+ egg:*region-end* (length egg:*fence-close*)))
|
|
860 (goto-char egg:*region-start*)
|
|
861 (insert egg:*henkan-open*)
|
|
862 (set-marker egg:*region-start* (point))
|
|
863 (goto-char egg:*region-end*)
|
|
864 (let ((point (point)))
|
|
865 (insert egg:*henkan-close*)
|
|
866 (set-marker egg:*region-end* point))
|
|
867 (goto-char start)
|
|
868 (delete-region start end)
|
|
869 ))
|
|
870 (henkan-insert-kouho 0 result)
|
|
871 (egg:henkan-face-on)
|
|
872 (egg:bunsetu-face-on)
|
|
873 (henkan-goto-bunsetu 0)
|
|
874 ;;;(use-global-map henkan-mode-map)
|
|
875 ;;;(use-local-map nil)
|
|
876 (use-local-map henkan-mode-map)
|
|
877 (run-hooks 'egg:henkan-start-hook)))))
|
|
878 (setq finished t))
|
|
879 (or finished (setq disable-undo nil) (setq egg:henkan-mode-in-use nil)))))
|
|
880 )
|
|
881
|
|
882 (defun henkan-paragraph ()
|
|
883 "Convert the current paragraph from kana to kanji."
|
|
884 (interactive)
|
|
885 (forward-paragraph)
|
|
886 (let ((end (point)))
|
|
887 (backward-paragraph)
|
|
888 (henkan-region-internal (point) end)))
|
|
889
|
|
890 (defun gyaku-henkan-paragraph ()
|
|
891 "Convert the current paragraph from kanji to kana."
|
|
892 (interactive)
|
|
893 (forward-paragraph)
|
|
894 (let ((end (point)))
|
|
895 (backward-paragraph)
|
|
896 (henkan-region-internal (point) end t)))
|
|
897
|
|
898 (defun henkan-sentence ()
|
|
899 "Convert the current sentence from kana to kanji."
|
|
900 (interactive)
|
|
901 (forward-sentence)
|
|
902 (let ((end (point)))
|
|
903 (backward-sentence)
|
|
904 (henkan-region-internal (point) end)))
|
|
905
|
|
906 (defun gyaku-henkan-sentence ()
|
|
907 "Convert the current sentence from kanji to kana."
|
|
908 (interactive)
|
|
909 (forward-sentence)
|
|
910 (let ((end (point)))
|
|
911 (backward-sentence)
|
|
912 (henkan-region-internal (point) end t)))
|
|
913
|
|
914 (defun henkan-word ()
|
|
915 "Convert the current word from kana to kanji."
|
|
916 (interactive)
|
|
917 (re-search-backward "\\<" nil t)
|
|
918 (let ((start (point)))
|
|
919 (re-search-forward "\\>" nil t)
|
|
920 (henkan-region-internal start (point))))
|
|
921
|
|
922 (defun gyaku-henkan-word ()
|
|
923 "Convert the current word from kanji to kana."
|
|
924 (interactive)
|
|
925 (re-search-backward "\\<" nil t)
|
|
926 (let ((start (point)))
|
|
927 (re-search-forward "\\>" nil t)
|
|
928 (henkan-region-internal start (point) t)))
|
|
929
|
|
930 ;;;
|
|
931 ;;; Kana Kanji Henkan Henshuu mode
|
|
932 ;;;
|
|
933
|
|
934 (defun set-egg-henkan-mode-format (open close kugiri-dai kugiri-sho
|
|
935 &optional henkan-face dai-bunsetu-face sho-bunsetu-face)
|
|
936 "$BJQ49(B mode $B$NI=<(J}K!$r@_Dj$9$k!#(BOPEN $B$OJQ49$N;OE@$r<($9J8;zNs$^$?$O(B nil$B!#(B
|
|
937 CLOSE$B$OJQ49$N=*E@$r<($9J8;zNs$^$?$O(B nil$B!#(B
|
|
938 KUGIRI-DAI$B$OBgJ8@a$N6h@Z$j$rI=<($9$kJ8;zNs$^$?$O(B nil$B!#(B
|
|
939 KUGIRI-SHO$B$O>.J8@a$N6h@Z$j$rI=<($9$kJ8;zNs$^$?$O(B nil$B!#(B
|
|
940 optional HENKAN-FACE $B$OJQ496h4V$rI=<($9$k(B face $B$^$?$O(B nil
|
|
941 optional DAI-BUNSETU-FACE $B$OBgJ8@a6h4V$rI=<($9$k(B face $B$^$?$O(B nil
|
|
942 optional SHO-BUNSETU-FACE $B$O>.J8@a6h4V$rI=<($9$k(B face $B$^$?$O(B nil"
|
|
943
|
|
944 (interactive (list (read-string (egg:msg-get 'begin-henkan))
|
|
945 (read-string (egg:msg-get 'end-henkan))
|
|
946 (read-string (egg:msg-get 'kugiri-dai))
|
|
947 (read-string (egg:msg-get 'kugiri-sho))
|
|
948 (cdr (assoc (completing-read (egg:msg-get 'face-henkan)
|
|
949 egg:*face-alist*)
|
|
950 egg:*face-alist*))
|
|
951 (cdr (assoc (completing-read (egg:msg-get 'face-dai)
|
|
952 egg:*face-alist*)
|
|
953 egg:*face-alist*))
|
|
954 (cdr (assoc (completing-read (egg:msg-get 'face-sho)
|
|
955 egg:*face-alist*)
|
|
956 egg:*face-alist*))
|
|
957 ))
|
|
958 (if (or (stringp open) (null open))
|
|
959 (setq egg:*henkan-open* open)
|
|
960 (egg:error "Wrong type of arguments(open): %s" open))
|
|
961
|
|
962 (if (or (stringp close) (null close))
|
|
963 (setq egg:*henkan-close* close)
|
|
964 (egg:error "Wrong type of arguments(close): %s" close))
|
|
965
|
|
966 (if (or (stringp kugiri-dai) (null kugiri-dai))
|
|
967 (setq egg:*dai-bunsetu-kugiri* (or kugiri-dai ""))
|
|
968 (egg:error "Wrong type of arguments(kugiri-dai): %s" kugiri-dai))
|
|
969
|
|
970 (if (or (stringp kugiri-sho) (null kugiri-sho))
|
|
971 (setq egg:*sho-bunsetu-kugiri* (or kugiri-sho ""))
|
|
972 (egg:error "Wrong type of arguments(kugiri-sho): %s" kugiri-sho))
|
|
973
|
|
974 (if (or (null henkan-face) (memq henkan-face (face-list)))
|
|
975 (progn
|
|
976 (setq egg:*henkan-face* henkan-face)
|
|
977 (if (overlayp egg:*henkan-overlay*)
|
|
978 (overlay-put egg:*henkan-overlay* 'face egg:*henkan-face*)))
|
|
979 (egg:error "Wrong type of arguments(henkan-face): %s" henkan-face))
|
|
980
|
|
981 (if (or (null dai-bunsetu-face) (memq dai-bunsetu-face (face-list)))
|
|
982 (progn
|
|
983 (setq egg:*dai-bunsetu-face* dai-bunsetu-face)
|
|
984 (if (overlayp egg:*dai-bunsetu-overlay*)
|
|
985 (overlay-put egg:*dai-bunsetu-overlay* 'face egg:*dai-bunsetu-face*)))
|
|
986 (egg:error "Wrong type of arguments(dai-bunsetu-face): %s" dai-bunsetu-face))
|
|
987
|
|
988 (if (or (null sho-bunsetu-face) (memq sho-bunsetu-face (face-list)))
|
|
989 (progn
|
|
990 (setq egg:*sho-bunsetu-face* sho-bunsetu-face)
|
|
991 (if (overlayp egg:*sho-bunsetu-overlay*)
|
|
992 (overlay-put egg:*sho-bunsetu-overlay* 'face egg:*sho-bunsetu-face*)))
|
|
993 (egg:error "Wrong type of arguments(sho-bunsetu-face): %s" sho-bunsetu-face))
|
|
994 )
|
|
995
|
|
996 (defun henkan-insert-kouho (start number)
|
|
997 (let ((i start))
|
|
998 (while (< i number)
|
|
999 (insert (car (wnn-server-bunsetu-kanji i))
|
|
1000 (if (= (1+ i) number)
|
|
1001 ""
|
|
1002 (if (wnn-server-dai-top (1+ i))
|
|
1003 egg:*dai-bunsetu-kugiri*
|
|
1004 egg:*sho-bunsetu-kugiri*)))
|
|
1005 (setq i (1+ i)))))
|
|
1006
|
|
1007 (defun henkan-kakutei ()
|
|
1008 (interactive)
|
|
1009 (egg:bunsetu-face-off)
|
|
1010 (egg:henkan-face-off)
|
|
1011 (delete-region (- egg:*region-start* (length egg:*henkan-open*))
|
|
1012 egg:*region-start*)
|
|
1013 (delete-region egg:*region-start* egg:*region-end*)
|
|
1014 (delete-region egg:*region-end* (+ egg:*region-end* (length egg:*henkan-close*)))
|
|
1015 (goto-char egg:*region-start*)
|
|
1016 (setq egg:*sai-henkan-start* (point))
|
|
1017 (let ((i 0) (max (wnn-server-bunsetu-suu)))
|
|
1018 (setq egg:*old-bunsetu-suu* max)
|
|
1019 (while (< i max)
|
|
1020 (insert (car (wnn-server-bunsetu-kanji i )))
|
|
1021 (if (not overwrite-mode)
|
|
1022 (undo-boundary))
|
|
1023 (setq i (1+ i))
|
|
1024 ))
|
|
1025 (setq egg:*sai-henkan-end* (point))
|
|
1026 (wnn-server-hindo-update)
|
|
1027 (setq egg:henkan-mode-in-use nil)
|
|
1028 (egg:quit-egg-mode)
|
|
1029 (run-hooks 'egg:henkan-end-hook)
|
|
1030 )
|
|
1031
|
|
1032 ;; 92.7.10 by K.Handa
|
|
1033 (defun henkan-kakutei-first-char ()
|
|
1034 "$B3NDjJ8;zNs$N:G=i$N0lJ8;z$@$1A^F~$9$k!#(B"
|
|
1035 (interactive)
|
|
1036 (egg:bunsetu-face-off)
|
|
1037 (egg:henkan-face-off)
|
|
1038 (delete-region (- egg:*region-start* (length egg:*henkan-open*))
|
|
1039 egg:*region-start*)
|
|
1040 (delete-region egg:*region-start* egg:*region-end*)
|
|
1041 (delete-region egg:*region-end* (+ egg:*region-end*
|
|
1042 ;; 92.8.5 by Y.Kasai
|
|
1043 (length egg:*henkan-close*)))
|
|
1044 (goto-char egg:*region-start*)
|
|
1045 (insert (car (wnn-server-bunsetu-kanji 0)))
|
|
1046 (if (not overwrite-mode)
|
|
1047 (undo-boundary))
|
|
1048 (goto-char egg:*region-start*)
|
|
1049 (forward-char 1)
|
|
1050 (delete-region (point) egg:*region-end*)
|
|
1051 (wnn-server-hindo-update)
|
|
1052 (setq egg:henkan-mode-in-use nil)
|
|
1053 (egg:quit-egg-mode)
|
|
1054 )
|
|
1055 ;; end of patch
|
|
1056
|
|
1057 (defun henkan-kakutei-before-point ()
|
|
1058 (interactive)
|
|
1059 (egg:bunsetu-face-off)
|
|
1060 (egg:henkan-face-off)
|
|
1061 (delete-region egg:*region-start* egg:*region-end*)
|
|
1062 (goto-char egg:*region-start*)
|
|
1063 (let ((i 0) (max *bunsetu-number*))
|
|
1064 (while (< i max)
|
|
1065 (insert (car (wnn-server-bunsetu-kanji i )))
|
|
1066 (if (not overwrite-mode)
|
|
1067 (undo-boundary))
|
|
1068 (setq i (1+ i))
|
|
1069 ))
|
|
1070 (wnn-server-hindo-update *bunsetu-number*)
|
|
1071 (delete-region (- egg:*region-start* (length egg:*henkan-open*))
|
|
1072 egg:*region-start*)
|
|
1073 (insert egg:*fence-open*)
|
|
1074 (set-marker egg:*region-start* (point))
|
|
1075 (delete-region egg:*region-end* (+ egg:*region-end* (length egg:*henkan-close*)))
|
|
1076 (goto-char egg:*region-end*)
|
|
1077 (let ((point (point)))
|
|
1078 (insert egg:*fence-close*)
|
|
1079 (set-marker egg:*region-end* point))
|
|
1080 (goto-char egg:*region-start*)
|
|
1081 (egg:fence-face-on)
|
|
1082 (let ((point (point))
|
|
1083 (i *bunsetu-number*) (max (wnn-server-bunsetu-suu)))
|
|
1084 (while (< i max)
|
|
1085 (insert (car (wnn-server-bunsetu-yomi i)))
|
|
1086 (setq i (1+ i)))
|
|
1087 ;;;(insert "|")
|
|
1088 ;;;(insert egg:*fence-close*)
|
|
1089 ;;;(set-marker egg:*region-end* (point))
|
|
1090 (goto-char point))
|
|
1091 (setq egg:*mode-on* t)
|
|
1092 ;;;(use-global-map fence-mode-map)
|
|
1093 ;;;(use-local-map nil)
|
|
1094 (setq egg:henkan-mode-in-use nil)
|
|
1095 (use-local-map fence-mode-map)
|
|
1096 (egg:mode-line-display))
|
|
1097
|
|
1098 (defun sai-henkan ()
|
|
1099 (interactive)
|
|
1100 (if egg:henkan-mode-in-use nil
|
|
1101 (let ((finished nil))
|
|
1102 (unwind-protect
|
|
1103 (progn
|
|
1104 (setq egg:henkan-mode-in-use t)
|
|
1105 (mode-line-egg-mode-update (egg:msg-get 'henkan-mode-indicator))
|
|
1106 (goto-char egg:*sai-henkan-start*)
|
|
1107 (setq egg:*local-map-backup* (current-local-map))
|
|
1108 (and (boundp 'disable-undo) (setq disable-undo t))
|
|
1109 (delete-region egg:*sai-henkan-start* egg:*sai-henkan-end*)
|
|
1110 (goto-char egg:*sai-henkan-start*)
|
|
1111 (insert egg:*henkan-open*)
|
|
1112 (set-marker egg:*region-start* (point))
|
|
1113 (insert egg:*henkan-close*)
|
|
1114 (set-marker egg:*region-end* egg:*region-start*)
|
|
1115 (goto-char egg:*region-start*)
|
|
1116 (henkan-insert-kouho 0 egg:*old-bunsetu-suu*)
|
|
1117 (egg:henkan-face-on)
|
|
1118 (egg:bunsetu-face-on)
|
|
1119 (henkan-goto-bunsetu 0)
|
|
1120 (use-local-map henkan-mode-map)
|
|
1121 (setq finished t))
|
|
1122 (or finished (setq disable-undo nil) (setq egg:henkan-mode-in-use nil)))))
|
|
1123 )
|
|
1124
|
|
1125 (defun egg:bunsetu-face-on ()
|
|
1126 ;; make dai-bunsetu overlay and sho-bunsetu overlay if they do not exist.
|
|
1127 ;; put thier faces to overlays and move them to each bunsetu.
|
|
1128 (let* ((bunsetu-begin *bunsetu-number*)
|
|
1129 (bunsetu-end)
|
|
1130 (bunsetu-suu (wnn-server-bunsetu-suu)))
|
|
1131 ; dai bunsetu
|
|
1132 (if egg:*dai-bunsetu-face*
|
|
1133 (progn
|
|
1134 (if (overlayp egg:*dai-bunsetu-overlay*)
|
|
1135 nil
|
|
1136 (setq egg:*dai-bunsetu-overlay* (make-overlay 1 1))
|
|
1137 (overlay-put egg:*dai-bunsetu-overlay* 'face egg:*dai-bunsetu-face*))
|
|
1138 (setq bunsetu-end (wnn-server-dai-end *bunsetu-number*))
|
|
1139 (while (not (wnn-server-dai-top bunsetu-begin))
|
|
1140 (setq bunsetu-begin (1- bunsetu-begin)))
|
|
1141 (move-overlay egg:*dai-bunsetu-overlay*
|
|
1142 (bunsetu-position bunsetu-begin)
|
|
1143 (+ (bunsetu-position (1- bunsetu-end))
|
|
1144 (length (bunsetu-kanji (1- bunsetu-end)))))))
|
|
1145 ; sho bunsetu
|
|
1146 (if egg:*sho-bunsetu-face*
|
|
1147 (progn
|
|
1148 (if (overlayp egg:*sho-bunsetu-overlay*)
|
|
1149 nil
|
|
1150 (setq egg:*sho-bunsetu-overlay* (make-overlay 1 1))
|
|
1151 (overlay-put egg:*sho-bunsetu-overlay* 'face egg:*sho-bunsetu-face*))
|
|
1152 (setq bunsetu-end (1+ *bunsetu-number*))
|
|
1153 (move-overlay egg:*sho-bunsetu-overlay*
|
|
1154 (let ((point (bunsetu-position *bunsetu-number*)))
|
|
1155 (if (eq egg:*sho-bunsetu-face* 'modeline)
|
|
1156 (+ point (1+ (char-boundary-p point)))
|
|
1157 point))
|
|
1158 (+ (bunsetu-position (1- bunsetu-end))
|
|
1159 (length (bunsetu-kanji (1- bunsetu-end)))))))))
|
|
1160
|
|
1161 (defun egg:bunsetu-face-off ()
|
|
1162 (and egg:*dai-bunsetu-face*
|
|
1163 (overlayp egg:*dai-bunsetu-overlay*)
|
|
1164 (delete-overlay egg:*dai-bunsetu-overlay*))
|
|
1165 (and egg:*sho-bunsetu-face*
|
|
1166 (overlayp egg:*sho-bunsetu-overlay*)
|
|
1167 (delete-overlay egg:*sho-bunsetu-overlay*))
|
|
1168 )
|
|
1169
|
|
1170 (defun henkan-goto-bunsetu (number)
|
|
1171 (setq *bunsetu-number*
|
|
1172 (check-number-range number 0 (1- (wnn-server-bunsetu-suu))))
|
|
1173 (goto-char (bunsetu-position *bunsetu-number*))
|
|
1174 ; (egg:move-bunsetu-overlay)
|
|
1175 (egg:bunsetu-face-on)
|
|
1176 )
|
|
1177
|
|
1178 (defun henkan-forward-bunsetu ()
|
|
1179 (interactive)
|
|
1180 (henkan-goto-bunsetu (1+ *bunsetu-number*))
|
|
1181 )
|
|
1182
|
|
1183 (defun henkan-backward-bunsetu ()
|
|
1184 (interactive)
|
|
1185 (henkan-goto-bunsetu (1- *bunsetu-number*))
|
|
1186 )
|
|
1187
|
|
1188 (defun henkan-first-bunsetu ()
|
|
1189 (interactive)
|
|
1190 (henkan-goto-bunsetu 0))
|
|
1191
|
|
1192 (defun henkan-last-bunsetu ()
|
|
1193 (interactive)
|
|
1194 (henkan-goto-bunsetu (1- (wnn-server-bunsetu-suu)))
|
|
1195 )
|
|
1196
|
|
1197 (defun check-number-range (i min max)
|
|
1198 (cond((< i min) max)
|
|
1199 ((< max i) min)
|
|
1200 (t i)))
|
|
1201
|
|
1202 (defun henkan-hiragana ()
|
|
1203 (interactive)
|
|
1204 (henkan-goto-kouho (- (bunsetu-kouho-suu *bunsetu-number* nil) 1)))
|
|
1205
|
|
1206 (defun henkan-katakana ()
|
|
1207 (interactive)
|
|
1208 (henkan-goto-kouho (- (bunsetu-kouho-suu *bunsetu-number* nil) 2)))
|
|
1209
|
|
1210 (defun henkan-next-kouho ()
|
|
1211 (interactive)
|
|
1212 (henkan-goto-kouho (1+ (bunsetu-kouho-number *bunsetu-number* nil))))
|
|
1213
|
|
1214 (defun henkan-next-kouho-dai ()
|
|
1215 (interactive)
|
|
1216 (let ((init (not egg:*dai*)))
|
|
1217 (setq egg:*dai* t)
|
|
1218 (henkan-goto-kouho (1+ (bunsetu-kouho-number *bunsetu-number* init)))))
|
|
1219
|
|
1220 (defun henkan-next-kouho-sho ()
|
|
1221 (interactive)
|
|
1222 (let ((init egg:*dai*))
|
|
1223 (setq egg:*dai* nil)
|
|
1224 (henkan-goto-kouho (1+ (bunsetu-kouho-number *bunsetu-number* init)))))
|
|
1225
|
|
1226 (defun henkan-previous-kouho ()
|
|
1227 (interactive)
|
|
1228 (henkan-goto-kouho (1- (bunsetu-kouho-number *bunsetu-number* nil))))
|
|
1229
|
|
1230 (defun henkan-previous-kouho-dai ()
|
|
1231 (interactive)
|
|
1232 (let ((init (not egg:*dai*)))
|
|
1233 (setq egg:*dai* t)
|
|
1234 (henkan-goto-kouho (1- (bunsetu-kouho-number *bunsetu-number* init)))))
|
|
1235
|
|
1236 (defun henkan-previous-kouho-sho ()
|
|
1237 (interactive)
|
|
1238 (let ((init egg:*dai*))
|
|
1239 (setq egg:*dai* nil)
|
|
1240 (henkan-goto-kouho (1- (bunsetu-kouho-number *bunsetu-number* init)))))
|
|
1241
|
|
1242 (defun henkan-goto-kouho (kouho-number)
|
|
1243 ; (egg:bunsetu-face-off)
|
|
1244 (let ((point (point))
|
|
1245 (yomi (bunsetu-yomi *bunsetu-number*))
|
|
1246 (max)
|
|
1247 (min))
|
|
1248 (setq kouho-number
|
|
1249 (check-number-range kouho-number
|
|
1250 0
|
|
1251 (1- (length (bunsetu-kouho-list
|
|
1252 *bunsetu-number* nil)))))
|
|
1253 (setq *zenkouho-offset* kouho-number)
|
|
1254 (wnn-server-henkan-kakutei kouho-number egg:*dai*)
|
|
1255 (setq max (wnn-server-bunsetu-suu))
|
|
1256 (setq min (max 0 (1- *bunsetu-number*)))
|
|
1257 (delete-region
|
|
1258 (bunsetu-position min) egg:*region-end*)
|
|
1259 (goto-char (bunsetu-position min))
|
|
1260 (henkan-insert-kouho min max)
|
|
1261 (goto-char point))
|
|
1262 ; (egg:move-bunsetu-overlay)
|
|
1263 (egg:bunsetu-face-on)
|
|
1264 (egg:henkan-face-on)
|
|
1265 )
|
|
1266
|
|
1267 (defun henkan-bunsetu-chijime-dai ()
|
|
1268 (interactive)
|
|
1269 (setq egg:*dai* t)
|
|
1270 (or (= (bunsetu-length *bunsetu-number*) 1)
|
|
1271 (bunsetu-length-henko (1- (bunsetu-length *bunsetu-number*)))))
|
|
1272
|
|
1273 (defun henkan-bunsetu-chijime-sho ()
|
|
1274 (interactive)
|
|
1275 (setq egg:*dai* nil)
|
|
1276 (or (= (bunsetu-length-sho *bunsetu-number*) 1)
|
|
1277 (bunsetu-length-henko (1- (bunsetu-length-sho *bunsetu-number*)))))
|
|
1278
|
|
1279 (defun henkan-bunsetu-nobasi-dai ()
|
|
1280 (interactive)
|
|
1281 (setq egg:*dai* t)
|
|
1282 (let ((i *bunsetu-number*)
|
|
1283 (max (wnn-server-bunsetu-suu))
|
|
1284 (len (bunsetu-length *bunsetu-number*))
|
|
1285 (maxlen 0))
|
|
1286 (while (< i max)
|
|
1287 (setq maxlen (+ maxlen (cdr (wnn-server-bunsetu-yomi i))))
|
|
1288 (setq i (1+ i)))
|
|
1289 (if (not (= len maxlen))
|
|
1290 (bunsetu-length-henko (1+ len)))))
|
|
1291
|
|
1292 (defun henkan-bunsetu-nobasi-sho ()
|
|
1293 (interactive)
|
|
1294 (setq egg:*dai* nil)
|
|
1295 (let ((i *bunsetu-number*)
|
|
1296 (max (wnn-server-bunsetu-suu))
|
|
1297 (len (bunsetu-length-sho *bunsetu-number*))
|
|
1298 (maxlen 0))
|
|
1299 (while (< i max)
|
|
1300 (setq maxlen (+ maxlen (cdr (wnn-server-bunsetu-yomi i))))
|
|
1301 (setq i (1+ i)))
|
|
1302 (if (not (= len maxlen))
|
|
1303 (bunsetu-length-henko (1+ len)))))
|
|
1304
|
|
1305 ; (if (not (= (1+ *bunsetu-number*) (wnn-server-bunsetu-suu)))
|
|
1306 ; (bunsetu-length-henko (1+ (bunsetu-length *bunsetu-number*)))))
|
|
1307
|
|
1308
|
|
1309 (defun henkan-saishou-bunsetu ()
|
|
1310 (interactive)
|
|
1311 (bunsetu-length-henko 1))
|
|
1312
|
|
1313 (defun henkan-saichou-bunsetu ()
|
|
1314 (interactive)
|
|
1315 (let ((max (wnn-server-bunsetu-suu)) (i *bunsetu-number*)
|
|
1316 (l 0))
|
|
1317 (while (< i max)
|
|
1318 (setq l (+ l (bunsetu-length-sho i)))
|
|
1319 (setq i (1+ i)))
|
|
1320 (bunsetu-length-henko l)))
|
|
1321
|
|
1322 (defun bunsetu-length-henko (length)
|
|
1323 (let ((i 0)
|
|
1324 (r (wnn-server-bunsetu-henkou *bunsetu-number* length egg:*dai*))
|
|
1325 (start (max 0 (1- *bunsetu-number*))))
|
|
1326 (cond((null r)
|
|
1327 (egg:error (wnn-server-get-msg)))
|
|
1328 ((> r 0)
|
|
1329 ; (egg:henkan-face-off)
|
|
1330 ; (egg:bunsetu-face-off)
|
|
1331 (delete-region
|
|
1332 (bunsetu-position start) egg:*region-end*)
|
|
1333 (goto-char (bunsetu-position start))
|
|
1334 (henkan-insert-kouho start r)
|
|
1335 (henkan-goto-bunsetu *bunsetu-number*)))))
|
|
1336
|
|
1337 (defun henkan-quit ()
|
|
1338 (interactive)
|
|
1339 (egg:bunsetu-face-off)
|
|
1340 (egg:henkan-face-off)
|
|
1341 (delete-region (- egg:*region-start* (length egg:*henkan-open*))
|
|
1342 egg:*region-start*)
|
|
1343 (delete-region egg:*region-start* egg:*region-end*)
|
|
1344 (delete-region egg:*region-end* (+ egg:*region-end* (length egg:*henkan-close*)))
|
|
1345 (goto-char egg:*region-start*)
|
|
1346 (insert egg:*fence-open*)
|
|
1347 (set-marker egg:*region-start* (point))
|
|
1348 (insert egg:*kanji-kanabuff*)
|
|
1349 (let ((point (point)))
|
|
1350 (insert egg:*fence-close*)
|
|
1351 (set-marker egg:*region-end* point)
|
|
1352 )
|
|
1353 (goto-char egg:*region-end*)
|
|
1354 (egg:fence-face-on)
|
|
1355 (wnn-server-henkan-quit)
|
|
1356 (setq egg:*mode-on* t)
|
|
1357 ;;;(use-global-map fence-mode-map)
|
|
1358 ;;;(use-local-map nil)
|
|
1359 (setq egg:henkan-mode-in-use nil)
|
|
1360 (use-local-map fence-mode-map)
|
|
1361 (egg:mode-line-display)
|
|
1362 )
|
|
1363
|
|
1364 (defun henkan-select-kouho (init)
|
|
1365 (if (not (eq (selected-window) (minibuffer-window)))
|
|
1366 (let ((kouho-list (bunsetu-kouho-list *bunsetu-number* init))
|
|
1367 menu)
|
|
1368 (setq menu
|
|
1369 (list 'menu (egg:msg-get 'jikouho)
|
|
1370 (let ((l kouho-list) (r nil) (i 0))
|
|
1371 (while l
|
|
1372 (setq r (cons (cons (car l) i) r))
|
|
1373 (setq i (1+ i))
|
|
1374 (setq l (cdr l)))
|
|
1375 (reverse r))))
|
|
1376 (henkan-goto-kouho
|
|
1377 (menu:select-from-menu menu
|
|
1378 (bunsetu-kouho-number *bunsetu-number* nil))))
|
|
1379 (beep)))
|
|
1380
|
|
1381 (defun henkan-select-kouho-dai ()
|
|
1382 (interactive)
|
|
1383 (let ((init (not egg:*dai*)))
|
|
1384 (setq egg:*dai* t)
|
|
1385 (henkan-select-kouho init)))
|
|
1386
|
|
1387 (defun henkan-select-kouho-sho ()
|
|
1388 (interactive)
|
|
1389 (let ((init egg:*dai*))
|
|
1390 (setq egg:*dai* nil)
|
|
1391 (henkan-select-kouho init)))
|
|
1392
|
|
1393 (defun henkan-word-off ()
|
|
1394 (interactive)
|
|
1395 (let ((info (wnn-server-inspect *bunsetu-number*)))
|
|
1396 (if (null info)
|
|
1397 (notify (wnn-server-get-msg))
|
|
1398 (progn
|
|
1399 (let ((dic-list (wnn-server-dict-list)))
|
|
1400 (if (null dic-list)
|
|
1401 (notify (wnn-server-get-msg))
|
|
1402 (progn
|
|
1403 (let* ((kanji (nth 0 info))
|
|
1404 (yomi (nth 1 info))
|
|
1405 (serial (nth 3 info))
|
|
1406 (jisho-no (nth 2 info))
|
|
1407 (jisho-name (nth 2 (assoc jisho-no dic-list))))
|
|
1408 (if (wnn-server-word-use jisho-no serial)
|
|
1409 (notify (egg:msg-get 'off-msg)
|
|
1410 kanji yomi jisho-name serial)
|
|
1411 (egg:error (wnn-server-get-msg)))))))))))
|
|
1412
|
|
1413 (defun henkan-kakutei-and-self-insert ()
|
|
1414 (interactive)
|
|
1415 (setq unread-command-events (list last-command-event))
|
|
1416 (henkan-kakutei))
|
|
1417
|
|
1418 (defvar henkan-mode-map (make-keymap))
|
|
1419 (defvar henkan-mode-esc-map (make-keymap))
|
|
1420
|
|
1421 (define-key henkan-mode-map [t] 'undefined)
|
|
1422 (define-key henkan-mode-esc-map [t] 'undefined)
|
|
1423
|
|
1424 (let ((ch 0))
|
|
1425 (while (<= ch 127)
|
|
1426 (define-key henkan-mode-map (char-to-string ch) 'undefined)
|
|
1427 (define-key henkan-mode-esc-map (char-to-string ch) 'undefined)
|
|
1428 (setq ch (1+ ch))))
|
|
1429
|
|
1430 (let ((ch 32))
|
|
1431 (while (< ch 127)
|
|
1432 (define-key henkan-mode-map (char-to-string ch) 'henkan-kakutei-and-self-insert)
|
|
1433 (setq ch (1+ ch))))
|
|
1434
|
|
1435 (define-key henkan-mode-map "\e" henkan-mode-esc-map)
|
|
1436 (define-key henkan-mode-map [escape] henkan-mode-esc-map)
|
|
1437 ;(define-key henkan-mode-map "\ei" 'henkan-inspect-bunsetu)
|
|
1438 (define-key henkan-mode-map "\ei" 'henkan-bunsetu-chijime-sho)
|
|
1439 (define-key henkan-mode-map "\eo" 'henkan-bunsetu-nobasi-sho)
|
|
1440 (define-key henkan-mode-map "\es" 'henkan-select-kouho-dai)
|
|
1441 (define-key henkan-mode-map "\eh" 'henkan-hiragana)
|
|
1442 (define-key henkan-mode-map "\ek" 'henkan-katakana)
|
|
1443 (define-key henkan-mode-map "\ez" 'henkan-select-kouho-sho)
|
|
1444 (define-key henkan-mode-map "\e<" 'henkan-saishou-bunsetu)
|
|
1445 (define-key henkan-mode-map "\e>" 'henkan-saichou-bunsetu)
|
|
1446 ;(define-key henkan-mode-map " " 'henkan-next-kouho-dai)
|
|
1447 ; 92.9.8 by T.Shingu
|
|
1448 (define-key henkan-mode-map " " 'henkan-next-kouho)
|
|
1449 ; 92.7.10 by K.Handa
|
|
1450 (define-key henkan-mode-map "\C-@" 'henkan-kakutei-first-char)
|
|
1451 (define-key henkan-mode-map [?\C-\ ] 'henkan-kakutei-first-char)
|
|
1452 (define-key henkan-mode-map "\C-a" 'henkan-first-bunsetu)
|
|
1453 (define-key henkan-mode-map "\C-b" 'henkan-backward-bunsetu)
|
|
1454 (define-key henkan-mode-map "\C-c" 'henkan-quit)
|
|
1455 (define-key henkan-mode-map "\C-e" 'henkan-last-bunsetu)
|
|
1456 (define-key henkan-mode-map "\C-f" 'henkan-forward-bunsetu)
|
|
1457 (define-key henkan-mode-map "\C-g" 'henkan-quit)
|
|
1458 (define-key henkan-mode-map "\C-h" 'henkan-help-command)
|
|
1459 (define-key henkan-mode-map "\C-i" 'henkan-bunsetu-chijime-dai)
|
|
1460 (define-key henkan-mode-map "\C-k" 'henkan-kakutei-before-point)
|
|
1461 (define-key henkan-mode-map "\C-l" 'henkan-kakutei)
|
|
1462 (define-key henkan-mode-map "\C-m" 'henkan-kakutei)
|
|
1463 (define-key henkan-mode-map [return] 'henkan-kakutei)
|
|
1464 (define-key henkan-mode-map "\C-n" 'henkan-next-kouho)
|
|
1465 (define-key henkan-mode-map "\C-o" 'henkan-bunsetu-nobasi-dai)
|
|
1466 (define-key henkan-mode-map "\C-p" 'henkan-previous-kouho)
|
|
1467 (define-key henkan-mode-map "\C-t" 'toroku-henkan-mode)
|
|
1468 (define-key henkan-mode-map "\C-u" 'undefined)
|
|
1469 (define-key henkan-mode-map "\C-v" 'henkan-inspect-bunsetu)
|
|
1470 (define-key henkan-mode-map "\C-w" 'henkan-next-kouho-dai)
|
|
1471 (define-key henkan-mode-map "\C-z" 'henkan-next-kouho-sho)
|
|
1472 (define-key henkan-mode-map "\177" 'henkan-quit)
|
|
1473 (define-key henkan-mode-map [delete] 'henkan-quit)
|
|
1474 (define-key henkan-mode-map [backspace] 'henkan-quit)
|
|
1475 (define-key henkan-mode-map [right] 'henkan-forward-bunsetu)
|
|
1476 (define-key henkan-mode-map [left] 'henkan-backward-bunsetu)
|
|
1477 (define-key henkan-mode-map [down] 'henkan-next-kouho)
|
|
1478 (define-key henkan-mode-map [up] 'henkan-previous-kouho)
|
|
1479
|
|
1480 (defun henkan-help-command ()
|
|
1481 "Display documentation for henkan-mode."
|
|
1482 (interactive)
|
|
1483 (let ((buf "*Help*"))
|
|
1484 (if (eq (get-buffer buf) (current-buffer))
|
|
1485 (henkan-quit)
|
|
1486 (with-output-to-temp-buffer buf
|
|
1487 ;;(princ (substitute-command-keys henkan-mode-document-string))
|
|
1488 (princ (substitute-command-keys (egg:msg-get 'henkan-help)))
|
|
1489 (print-help-return-message)))))
|
|
1490
|
|
1491 ;;;----------------------------------------------------------------------
|
|
1492 ;;;
|
|
1493 ;;; Dictionary management Facility
|
|
1494 ;;;
|
|
1495 ;;;----------------------------------------------------------------------
|
|
1496
|
|
1497 ;;;
|
|
1498 ;;; $B<-=qEPO?(B
|
|
1499 ;;;
|
|
1500
|
|
1501 ;;;;
|
|
1502 ;;;; User entry: toroku-region
|
|
1503 ;;;;
|
|
1504
|
|
1505 (defun remove-regexp-in-string (regexp string)
|
|
1506 (cond((not(string-match regexp string))
|
|
1507 string)
|
|
1508 (t(let ((str nil)
|
|
1509 (ostart 0)
|
|
1510 (oend (match-beginning 0))
|
|
1511 (nstart (match-end 0)))
|
|
1512 (setq str (concat str (substring string ostart oend)))
|
|
1513 (while (string-match regexp string nstart)
|
|
1514 (setq ostart nstart)
|
|
1515 (setq oend (match-beginning 0))
|
|
1516 (setq nstart (match-end 0))
|
|
1517 (setq str (concat str (substring string ostart oend))))
|
|
1518 (concat str (substring string nstart))))))
|
|
1519
|
|
1520 (defun hinsi-from-menu (dict-number name)
|
|
1521 (let ((result (wnn-server-hinsi-list dict-number name))
|
|
1522 ; (hinsi-pair)
|
|
1523 (menu))
|
|
1524 (if (null result)
|
|
1525 (egg:error (wnn-server-get-msg))
|
|
1526 (if (eq result 0)
|
|
1527 name
|
|
1528 (progn
|
|
1529 ; (setq hinsi-pair (mapcar '(lambda (x) (cons x x)) result))
|
|
1530 ; (if (null (string= name "/"))
|
|
1531 ; (setq hinsi-pair (cons (cons "/" "/") hinsi-pair)))
|
|
1532 ; (setq menu (list 'menu (egg:msg-get 'hinsimei) hinsi-pair))
|
|
1533 (setq menu (list 'menu (egg:msg-get 'hinsimei)
|
|
1534 (if (string= name "/")
|
|
1535 result
|
|
1536 (cons "/" result))))
|
|
1537 (hinsi-from-menu dict-number
|
|
1538 (menu:select-from-menu menu)))))))
|
|
1539
|
|
1540 (defun wnn-dict-name (dict-number dict-list)
|
|
1541 (let* ((dict-info (assoc dict-number dict-list))
|
|
1542 (dict-comment (nth 2 dict-info)))
|
|
1543 (if (string= dict-comment "")
|
|
1544 (file-name-nondirectory (nth 1 dict-info))
|
|
1545 dict-comment)))
|
|
1546
|
|
1547 (defun egg:toroku-word (yomi kanji interactive)
|
|
1548 (let*((dic-list (wnn-server-dict-list))
|
|
1549 (writable-dic-list (wnn-server-hinsi-dicts -1))
|
|
1550 (dict-number
|
|
1551 (menu:select-from-menu
|
|
1552 (list 'menu (egg:msg-get 'touroku-jishomei)
|
|
1553 (mapcar '(lambda (x)
|
|
1554 (let ((y (car (assoc x dic-list))))
|
|
1555 (cons (wnn-dict-name y dic-list) y)))
|
|
1556 writable-dic-list))))
|
|
1557 (hinsi-name (hinsi-from-menu dict-number "/"))
|
|
1558 (hinsi-no (wnn-server-hinsi-number hinsi-name))
|
|
1559 (dict-name (wnn-dict-name dict-number dic-list)))
|
|
1560 (if (or (not interactive)
|
|
1561 (notify-yes-or-no-p (egg:msg-get 'register-notify)
|
|
1562 kanji yomi hinsi-name dict-name))
|
|
1563 (if (wnn-server-word-add dict-number kanji yomi "" hinsi-no)
|
|
1564 (notify (egg:msg-get 'registerd) kanji yomi hinsi-name dict-name)
|
|
1565 (egg:error (wnn-server-get-msg))))))
|
|
1566
|
|
1567 (defun toroku-region (start end)
|
|
1568 (interactive "r")
|
|
1569 (if (null (wnn-server-isconnect)) (EGG:open-wnn))
|
|
1570 (wnn-server-set-rev nil)
|
|
1571 (let*((kanji
|
|
1572 (remove-regexp-in-string "[\0-\37]" (buffer-substring start end)))
|
|
1573 (yomi (read-current-its-string
|
|
1574 (format (egg:msg-get 'jishotouroku-yomi) kanji))))
|
|
1575 (egg:toroku-word yomi kanji nil)))
|
|
1576
|
|
1577 (defun delete-space (string)
|
|
1578 (let ((len (length string)))
|
|
1579 (if (eq len 0) ""
|
|
1580 (if (or (char-equal (aref string 0) ? ) (char-equal (aref string 0) ?-))
|
|
1581 (delete-space (substring string 1))
|
|
1582 (concat (substring string 0 1) (delete-space (substring string 1)))))))
|
|
1583
|
|
1584
|
|
1585 (defun toroku-henkan-mode ()
|
|
1586 (interactive)
|
|
1587 (let*((kanji
|
|
1588 (read-current-its-string (egg:msg-get 'kanji)
|
|
1589 (delete-space
|
|
1590 (buffer-substring (point) egg:*region-end* ))))
|
|
1591 (yomi (read-current-its-string
|
|
1592 (format (egg:msg-get 'jishotouroku-yomi) kanji)
|
|
1593 (let ((str "")
|
|
1594 (i *bunsetu-number*)
|
|
1595 (max (wnn-server-bunsetu-suu)))
|
|
1596 (while (< i max)
|
|
1597 (setq str (concat str (car (wnn-server-bunsetu-yomi i)) ))
|
|
1598 (setq i (1+ i)))
|
|
1599 str))))
|
|
1600 (egg:toroku-word yomi kanji nil)))
|
|
1601
|
|
1602 ;;;
|
|
1603 ;;; $B<-=qJT=87O(B DicEd
|
|
1604 ;;;
|
|
1605
|
|
1606 (defvar *diced-window-configuration* nil)
|
|
1607
|
|
1608 (defvar *diced-dict-info* nil)
|
|
1609
|
|
1610 (defvar *diced-yomi* nil)
|
|
1611
|
|
1612 ;;;;;
|
|
1613 ;;;;; User entry : edit-dict-item
|
|
1614 ;;;;;
|
|
1615
|
|
1616 (defun edit-dict-item (yomi)
|
|
1617 (interactive (list (read-current-its-string (egg:msg-get 'yomi))))
|
|
1618 (if (null (wnn-server-isconnect)) (EGG:open-wnn))
|
|
1619 (wnn-server-set-rev nil)
|
|
1620 (let ((dict-info (wnn-server-word-search yomi))
|
|
1621 (current-wnn-server-type))
|
|
1622 (if (null dict-info)
|
|
1623 (message (egg:msg-get 'no-yomi) yomi)
|
|
1624 (progn
|
|
1625 (setq current-wnn-server-type wnn-server-type)
|
|
1626 (setq *diced-yomi* yomi)
|
|
1627 (setq *diced-window-configuration* (current-window-configuration))
|
|
1628 (pop-to-buffer "*Nihongo Dictionary Information*")
|
|
1629 (setq wnn-server-type current-wnn-server-type)
|
|
1630 (setq major-mode 'diced-mode)
|
|
1631 (setq mode-name "Diced")
|
|
1632 (setq mode-line-buffer-identification
|
|
1633 (concat "DictEd: " yomi
|
|
1634 (make-string (max 0 (- 17 (string-width yomi))) ? )))
|
|
1635 (sit-for 0) ;; will redislay.
|
|
1636 ;;;(use-global-map diced-mode-map)
|
|
1637 (use-local-map diced-mode-map)
|
|
1638 (diced-display dict-info)
|
|
1639 ))))
|
|
1640
|
|
1641 (defun diced-redisplay ()
|
|
1642 (wnn-server-set-rev nil)
|
|
1643 (let ((dict-info (wnn-server-word-search *diced-yomi*)))
|
|
1644 (if (null dict-info)
|
|
1645 (progn
|
|
1646 (message (egg:msg-get 'no-yomi) *diced-yomi*)
|
|
1647 (diced-quit))
|
|
1648 (diced-display dict-info))))
|
|
1649
|
|
1650 (defun diced-display (dict-info)
|
|
1651 ;;; (values (list (record kanji bunpo hindo dict-number serial-number)))
|
|
1652 ;;; 0 1 2 3 4
|
|
1653 (setq dict-info
|
|
1654 (sort dict-info
|
|
1655 (function (lambda (x y)
|
|
1656 (or (< (nth 1 x) (nth 1 y))
|
|
1657 (if (= (nth 1 x) (nth 1 y))
|
|
1658 (or (> (nth 2 x) (nth 2 y))
|
|
1659 (if (= (nth 2 x) (nth 2 y))
|
|
1660 (< (nth 3 x) (nth 3 y))))))))))
|
|
1661 (setq *diced-dict-info* dict-info)
|
|
1662 (setq buffer-read-only nil)
|
|
1663 (erase-buffer)
|
|
1664 (let ((l-kanji
|
|
1665 (apply 'max
|
|
1666 (mapcar (function (lambda (l) (string-width (nth 0 l))))
|
|
1667 dict-info)))
|
|
1668 (l-bunpo
|
|
1669 (apply 'max
|
|
1670 (mapcar (function(lambda (l)
|
|
1671 (string-width (wnn-server-hinsi-name (nth 1 l)))))
|
|
1672 dict-info)))
|
|
1673 (dict-list (wnn-server-dict-list))
|
|
1674 (writable-dict-list (wnn-server-hinsi-dicts -1)))
|
|
1675 (while dict-info
|
|
1676 (let*((kanji (nth 0 (car dict-info)))
|
|
1677 (bunpo (nth 1 (car dict-info)))
|
|
1678 (hinshi (wnn-server-hinsi-name bunpo))
|
|
1679 (hindo (nth 2 (car dict-info)))
|
|
1680 (dict-number (nth 3 (car dict-info)))
|
|
1681 (dict-name (wnn-dict-name dict-number dict-list))
|
|
1682 (sys-dict-p (null (memq dict-number writable-dict-list)))
|
|
1683 (serial-number (nth 4 (car dict-info))))
|
|
1684 (insert (if sys-dict-p " *" " "))
|
|
1685 (insert kanji)
|
|
1686 (insert-char ?
|
|
1687 (- (+ l-kanji 10) (string-width kanji)))
|
|
1688 (insert hinshi)
|
|
1689 (insert-char ? (- (+ l-bunpo 2) (string-width hinshi)))
|
|
1690 (insert (egg:msg-get 'jisho) (file-name-nondirectory dict-name)
|
|
1691 "/" (int-to-string serial-number)
|
|
1692 (egg:msg-get 'hindo) (int-to-string hindo) ?\n )
|
|
1693 (setq dict-info (cdr dict-info))))
|
|
1694 (goto-char (point-min)))
|
|
1695 (setq buffer-read-only t))
|
|
1696
|
|
1697 (defun diced-add ()
|
|
1698 (interactive)
|
|
1699 (diced-execute t)
|
|
1700 (let*((kanji (read-from-minibuffer (egg:msg-get 'kanji))))
|
|
1701 (egg:toroku-word *diced-yomi* kanji t)
|
|
1702 (diced-redisplay)))
|
|
1703
|
|
1704 (defun diced-delete ()
|
|
1705 (interactive)
|
|
1706 (beginning-of-line)
|
|
1707 (if (= (char-after (1+ (point))) ?* )
|
|
1708 (progn (message (egg:msg-get 'cannot-remove)) (beep))
|
|
1709 (if (= (following-char) ? )
|
|
1710 (let ((buffer-read-only nil))
|
|
1711 (delete-char 1) (insert "D") (backward-char 1))
|
|
1712 )))
|
|
1713
|
|
1714
|
|
1715 (defun diced-undelete ()
|
|
1716 (interactive)
|
|
1717 (beginning-of-line)
|
|
1718 (if (= (following-char) ?D)
|
|
1719 (let ((buffer-read-only nil))
|
|
1720 (delete-char 1) (insert " ") (backward-char 1))
|
|
1721 (beep)))
|
|
1722
|
|
1723 (defun diced-redisplay-hindo (dict-number serial-number)
|
|
1724 (let ((hindo))
|
|
1725 (setq buffer-read-only nil)
|
|
1726 (beginning-of-line)
|
|
1727 (re-search-forward "\\([0-9\-]+\\)\\(\n\\)")
|
|
1728 (delete-region (match-beginning 1) (match-end 1))
|
|
1729 (setq hindo (nth 3 (wnn-server-word-info dict-number serial-number)))
|
|
1730 (goto-char (match-beginning 1))
|
|
1731 (insert (int-to-string hindo))
|
|
1732 (beginning-of-line)
|
|
1733 (setq buffer-read-only t)))
|
|
1734
|
|
1735 (defun diced-use ()
|
|
1736 (interactive)
|
|
1737 (let* ((dict-item (nth
|
|
1738 (+ (count-lines (point-min) (point))
|
|
1739 (if (= (current-column) 0) 1 0)
|
|
1740 -1)
|
|
1741 *diced-dict-info*))
|
|
1742 (hindo (nth 2 dict-item))
|
|
1743 (dict-number (nth 3 dict-item))
|
|
1744 (serial-number (nth 4 dict-item))
|
|
1745 )
|
|
1746 (if (null (wnn-server-word-use dict-number serial-number))
|
|
1747 (egg:error (wnn-server-get-msg)))
|
|
1748 (diced-redisplay-hindo dict-number serial-number)))
|
|
1749
|
|
1750 (defun diced-hindo-set (&optional newhindo)
|
|
1751 (interactive)
|
|
1752 (if (null newhindo)
|
|
1753 (setq newhindo (read-minibuffer (egg:msg-get 'enter-hindo))))
|
|
1754 (let* ((dict-item (nth
|
|
1755 (+ (count-lines (point-min) (point))
|
|
1756 (if (= (current-column) 0) 1 0)
|
|
1757 -1)
|
|
1758 *diced-dict-info*))
|
|
1759 (hindo (nth 2 dict-item))
|
|
1760 (dict-number (nth 3 dict-item))
|
|
1761 (serial-number (nth 4 dict-item))
|
|
1762 )
|
|
1763 (if (null (wnn-server-word-hindo-set dict-number serial-number newhindo))
|
|
1764 (egg:error (wnn-server-get-msg)))
|
|
1765 (diced-redisplay-hindo dict-number serial-number)))
|
|
1766
|
|
1767 (defun diced-quit ()
|
|
1768 (interactive)
|
|
1769 (setq buffer-read-only nil)
|
|
1770 (erase-buffer)
|
|
1771 (setq buffer-read-only t)
|
|
1772 (bury-buffer (get-buffer "*Nihongo Dictionary Information*"))
|
|
1773 (set-window-configuration *diced-window-configuration*)
|
|
1774 )
|
|
1775
|
|
1776 (defun diced-execute (&optional display)
|
|
1777 (interactive)
|
|
1778 (goto-char (point-min))
|
|
1779 (let ((no 0))
|
|
1780 (while (not (eobp))
|
|
1781 (if (= (following-char) ?D)
|
|
1782 (let* ((dict-item (nth no *diced-dict-info*))
|
|
1783 (kanji (nth 0 dict-item))
|
|
1784 (bunpo (nth 1 dict-item))
|
|
1785 (hinshi (wnn-server-hinsi-name bunpo))
|
|
1786 (hindo (nth 2 dict-item))
|
|
1787 (dict-number (nth 3 dict-item))
|
|
1788 (dict-name (wnn-dict-name dict-number (wnn-server-dict-list)))
|
|
1789 (sys-dict-p (null (memq dict-number (wnn-server-hinsi-dicts -1))))
|
|
1790 (serial-number (nth 4 dict-item))
|
|
1791 )
|
|
1792 (if (notify-yes-or-no-p (egg:msg-get 'remove-notify)
|
|
1793 kanji hinshi dict-name)
|
|
1794 (progn
|
|
1795 (if (wnn-server-word-delete dict-number serial-number)
|
|
1796 (notify (egg:msg-get 'removed)
|
|
1797 kanji hinshi dict-name)
|
|
1798 (egg:error (wnn-server-get-msg)))
|
|
1799 ))))
|
|
1800 (setq no (1+ no))
|
|
1801 (forward-line 1)))
|
|
1802 (forward-line -1)
|
|
1803 (if (not display) (diced-redisplay)))
|
|
1804
|
|
1805 (defun diced-next-line ()
|
|
1806 (interactive)
|
|
1807 (beginning-of-line)
|
|
1808 (forward-line 1)
|
|
1809 (if (eobp) (progn (beep) (forward-line -1))))
|
|
1810
|
|
1811 (defun diced-end-of-buffer ()
|
|
1812 (interactive)
|
|
1813 (goto-char (point-max))
|
|
1814 (forward-line -1))
|
|
1815
|
|
1816 (defun diced-scroll-down ()
|
|
1817 (interactive)
|
|
1818 (scroll-down)
|
|
1819 (if (eobp) (forward-line -1)))
|
|
1820
|
|
1821 (defun diced-mode ()
|
|
1822 "Mode for \"editing\" dictionaries.
|
|
1823 In diced, you are \"editing\" a list of the entries in dictionaries.
|
|
1824 You can move using the usual cursor motion commands.
|
|
1825 Letters no longer insert themselves. Instead,
|
|
1826
|
|
1827 Type a to Add new entry.
|
|
1828 Type d to flag an entry for Deletion.
|
|
1829 Type n to move cursor to Next entry.
|
|
1830 Type p to move cursor to Previous entry.
|
|
1831 Type q to Quit from DicEd.
|
|
1832 Type C-u to Toggle the word to use/unuse.
|
|
1833 Type u to Unflag an entry (remove its D flag).
|
|
1834 Type x to eXecute the deletions requested.
|
|
1835 "
|
|
1836 )
|
|
1837
|
|
1838 (defvar diced-mode-map (let ((map (make-sparse-keymap))) (suppress-keymap map) map))
|
|
1839
|
|
1840 (define-key diced-mode-map "a" 'diced-add)
|
|
1841 (define-key diced-mode-map "d" 'diced-delete)
|
|
1842 (define-key diced-mode-map "n" 'diced-next-line)
|
|
1843 (define-key diced-mode-map "p" 'previous-line)
|
|
1844 (define-key diced-mode-map "q" 'diced-quit)
|
|
1845 ;(define-key diced-mode-map "t" 'diced-use)
|
|
1846 (define-key diced-mode-map "u" 'diced-undelete)
|
|
1847 (define-key diced-mode-map "x" 'diced-execute)
|
|
1848
|
|
1849 (define-key diced-mode-map "\C-h" 'help-command)
|
|
1850 (define-key diced-mode-map "\C-n" 'diced-next-line)
|
|
1851 (define-key diced-mode-map "\C-p" 'previous-line)
|
|
1852 (define-key diced-mode-map "\C-u" 'diced-use)
|
|
1853 (define-key diced-mode-map "\C-v" 'scroll-up)
|
|
1854 (define-key diced-mode-map "\eh" 'diced-hindo-set)
|
|
1855 (define-key diced-mode-map "\e<" 'beginning-of-buffer)
|
|
1856 (define-key diced-mode-map "\e>" 'diced-end-of-buffer)
|
|
1857 (define-key diced-mode-map "\ev" 'diced-scroll-down)
|
|
1858
|
|
1859 (define-key diced-mode-map [up] 'previous-line)
|
|
1860 (define-key diced-mode-map [down] 'diced-next-line)
|
|
1861
|
|
1862
|
|
1863 ;;;
|
|
1864 ;;; set comment on dictionary
|
|
1865 ;;;
|
|
1866
|
|
1867 (defun set-dict-comment ()
|
|
1868 (interactive)
|
|
1869 (if (null (wnn-server-isconnect)) (EGG:open-wnn))
|
|
1870 (wnn-server-set-rev nil)
|
|
1871 (let*((dic-list (wnn-server-dict-list))
|
|
1872 (writable-dic-list (wnn-server-hinsi-dicts -1))
|
|
1873 (dict-number
|
|
1874 (menu:select-from-menu
|
|
1875 (list 'menu (egg:msg-get 'jishomei)
|
|
1876 (mapcar '(lambda (x)
|
|
1877 (let ((y (assoc x dic-list)))
|
|
1878 (cons (nth 1 y) (nth 0 y))))
|
|
1879 writable-dic-list))))
|
|
1880 (comment (read-from-minibuffer (egg:msg-get 'comment)
|
|
1881 (wnn-dict-name dict-number dic-list))))
|
|
1882 (if (wnn-server-dict-comment dict-number comment)
|
|
1883 (notify (egg:msg-get 'jisho-comment)
|
|
1884 (wnn-dict-name dict-number dic-list) comment)
|
|
1885 (egg:error (wnn-server-get-msg)))))
|
|
1886
|
|
1887
|
|
1888 ;;;
|
|
1889 ;;; Pure inspect facility
|
|
1890 ;;;
|
|
1891
|
|
1892 (defun henkan-inspect-bunsetu ()
|
|
1893 (interactive)
|
|
1894 (let ((info (wnn-server-inspect *bunsetu-number*)))
|
|
1895 (if (null info)
|
|
1896 (notify (wnn-server-get-msg))
|
|
1897 (progn
|
|
1898 (let ((dic-list (wnn-server-dict-list)))
|
|
1899 (if (null dic-list)
|
|
1900 (notify (wnn-server-get-msg))
|
|
1901 (progn
|
|
1902 (let ((hinsi (wnn-server-hinsi-name (nth 4 info)))
|
|
1903 (kanji (nth 0 info))
|
|
1904 (yomi (nth 1 info))
|
|
1905 (serial (nth 3 info))
|
|
1906 (hindo (nth 5 info))
|
|
1907 (jisho (wnn-dict-name (nth 2 info) dic-list))
|
|
1908 (ima (nth 6 info))
|
|
1909 (hyoka (nth 7 info))
|
|
1910 (daihyoka (nth 8 info))
|
|
1911 (kangovect (nth 9 info)))
|
|
1912 (notify-internal
|
|
1913 (format "%s %s(%s %s:%s Freq:%s%s) S:%s D:%s V:%s "
|
|
1914 kanji yomi hinsi jisho serial
|
|
1915 (if (= ima 1) "*" " ")
|
|
1916 hindo hyoka daihyoka kangovect)
|
|
1917 t)))))))))
|
|
1918
|
|
1919 (provide 'wnn-egg)
|
|
1920
|
|
1921 ;;; wnn-egg.el ends here
|