comparison lisp/egg/egg-wnn.el @ 114:8619ce7e4c50 r20-1b9

Import from CVS: tag r20-1b9
author cvs
date Mon, 13 Aug 2007 09:21:54 +0200
parents 0d2f883870bc
children 585fb297b004
comparison
equal deleted inserted replaced
113:2ec2fe4a4c89 114:8619ce7e4c50
1 ;;; wnn-egg.el --- a inputting method communicating with [jck]server 1 ;;; egg-wnn.el --- a inputting method communicating with [jck]server
2 2
3 ;; Author: Satoru Tomura (tomura@etl.go.jp), and 3 ;; Author: Satoru Tomura (tomura@etl.go.jp), and
4 ;; Toshiaki Shingu (shingu@cpr.canon.co.jp) 4 ;; Toshiaki Shingu (shingu@cpr.canon.co.jp)
5 ;; Keywords: inputting method 5 ;; Keywords: inputting method
6 6
87 ;;; 92/5/19 version 0 87 ;;; 92/5/19 version 0
88 ;;; ---------------------------------------------------------------- 88 ;;; ----------------------------------------------------------------
89 89
90 ;;; Code: 90 ;;; Code:
91 91
92 (require 'egg)
92 (make-variable-buffer-local 'wnn-server-type) 93 (make-variable-buffer-local 'wnn-server-type)
93 (make-variable-buffer-local 'cwnn-zhuyin) 94 (make-variable-buffer-local 'cwnn-zhuyin)
94 95
95 (defvar egg:*sho-bunsetu-face* nil "*$B>.J8@aI=<($KMQ$$$k(B face $B$^$?$O(B nil") 96 (defvar egg:*sho-bunsetu-face* nil "*$B>.J8@aI=<($KMQ$$$k(B face $B$^$?$O(B nil")
96 (make-variable-buffer-local 97 (make-variable-buffer-local
115 116
116 ;;; ---------------------------------------------------------------- 117 ;;; ----------------------------------------------------------------
117 ;;; $B0J2<$N(B its mode $B4X78$N4X?t$O!"(Begg.el $B$GDj5A$5$l$F$$$k$,!"(B 118 ;;; $B0J2<$N(B its mode $B4X78$N4X?t$O!"(Begg.el $B$GDj5A$5$l$F$$$k$,!"(B
118 ;;; $B$?$+$J$G$O(B its mode $B$N@ZBX$($KF14|$7$F!"(Bjserver/cserver, 119 ;;; $B$?$+$J$G$O(B its mode $B$N@ZBX$($KF14|$7$F!"(Bjserver/cserver,
119 ;;; pinyin/zhuyin $B$N@ZBX$($b9T$J$$$?$$$N$G!":FDj5A$7$F$$$k!#(B 120 ;;; pinyin/zhuyin $B$N@ZBX$($b9T$J$$$?$$$N$G!":FDj5A$7$F$$$k!#(B
120 ;;; $B=>$C$F!"(Begg.el, wnn-egg.el $B$N=g$K%m!<%I$7$J$1$l$P$J$i$J$$!#(B 121 ;;; $B=>$C$F!"(Begg.el, egg-wnn.el $B$N=g$K%m!<%I$7$J$1$l$P$J$i$J$$!#(B
121 122
122 123
123 (defun its:select-mode (name) 124 (defun its:select-mode (name)
125 "Switch ITS mode to NAME or prompt for it if called interactivly.
126 After changing, its:select-mode-hook is called."
124 (interactive (list (completing-read "ITS mode: " its:*mode-alist*))) 127 (interactive (list (completing-read "ITS mode: " its:*mode-alist*)))
125 (if (its:get-mode-map name) 128 (if (its:get-mode-map name)
126 (progn 129 (progn
127 (setq its:*current-map* (its:get-mode-map name)) 130 (setq its:*current-map* (its:get-mode-map name))
128 (egg:mode-line-display) 131 (egg:mode-line-display)
129 (run-hooks 'its:select-mode-hook)) 132 (run-hooks 'its:select-mode-hook))
130 (beep)) 133 (beep))
131 ) 134 )
132 135
133 (defun its:select-mode-from-menu () 136 (defun its:select-mode-from-menu ()
137 "Select ITS mode from menu.
138 After changing, its:select-mode-hook is called."
134 (interactive) 139 (interactive)
135 (setcar (nthcdr 2 its:*select-mode-menu*) its:*mode-alist*) 140 (setcar (nthcdr 2 its:*select-mode-menu*) its:*mode-alist*)
136 (setq its:*current-map* (menu:select-from-menu its:*select-mode-menu*)) 141 (setq its:*current-map* (menu:select-from-menu its:*select-mode-menu*))
137 (egg:mode-line-display) 142 (egg:mode-line-display)
138 (run-hooks 'its:select-mode-hook)) 143 (run-hooks 'its:select-mode-hook))
151 ((eq its:*current-map* (its:get-mode-map "hangul")) 156 ((eq its:*current-map* (its:get-mode-map "hangul"))
152 (setq wnn-server-type 'kserver)) 157 (setq wnn-server-type 'kserver))
153 )))) 158 ))))
154 159
155 (defun its:next-mode () 160 (defun its:next-mode ()
161 "Switch to next mode in list its:*standard-modes*
162 After changing, its:select-mode-hook is called."
156 (interactive) 163 (interactive)
157 (let ((pos (its:find its:*current-map* its:*standard-modes*))) 164 (let ((pos (its:find its:*current-map* its:*standard-modes*)))
158 (setq its:*current-map* 165 (setq its:*current-map*
159 (nth (% (1+ pos) (length its:*standard-modes*)) 166 (nth (% (1+ pos) (length its:*standard-modes*))
160 its:*standard-modes*)) 167 its:*standard-modes*))
161 (egg:mode-line-display) 168 (egg:mode-line-display)
162 (run-hooks 'its:select-mode-hook))) 169 (run-hooks 'its:select-mode-hook)))
163 170
164 (defun its:previous-mode () 171 (defun its:previous-mode ()
172 "Switch to previous mode in list its:*standard-modes*
173 After changing, its:select-mode-hook is called."
165 (interactive) 174 (interactive)
166 (let ((pos (its:find its:*current-map* its:*standard-modes*))) 175 (let ((pos (its:find its:*current-map* its:*standard-modes*)))
167 (setq its:*current-map* 176 (setq its:*current-map*
168 (nth (1- (if (= pos 0) (length its:*standard-modes*) pos)) 177 (nth (1- (if (= pos 0) (length its:*standard-modes*) pos))
169 its:*standard-modes*)) 178 its:*standard-modes*))
199 208
200 (defvar egg:*sai-henkan-start* nil) 209 (defvar egg:*sai-henkan-start* nil)
201 (defvar egg:*sai-henkan-end* nil) 210 (defvar egg:*sai-henkan-end* nil)
202 (defvar egg:*old-bunsetu-suu* nil) 211 (defvar egg:*old-bunsetu-suu* nil)
203 212
204 (defun wnn-egg:kill-emacs-function () 213 (defun egg-wnn:kill-emacs-function ()
205 (let ((wnn-server-type)) 214 (let ((wnn-server-type))
206 (setq wnn-server-type 'jserver) 215 (setq wnn-server-type 'jserver)
207 (close-wnn) 216 (close-wnn)
208 (setq wnn-server-type 'cserver) 217 (setq wnn-server-type 'cserver)
209 (close-wnn) 218 (close-wnn)
210 (setq wnn-server-type 'kserver) 219 (setq wnn-server-type 'kserver)
211 (close-wnn))) 220 (close-wnn)))
212 221
213 (add-hook 'kill-emacs-hook 'wnn-egg:kill-emacs-function) 222 (add-hook 'kill-emacs-hook 'egg-wnn:kill-emacs-function)
214 223
215 (defun egg:error (form &rest mesg) 224 (defun egg:error (form &rest mesg)
216 (apply 'notify (or form "%s") mesg) 225 (apply 'notify (or form "%s") mesg)
217 (apply 'error (or form "%s") mesg)) 226 (apply 'error (or form "%s") mesg))
218 227
228 (defun wnn-toggle-english-messages ()
229 "Toggle whether wnn reports info in english or the native language of the server."
230 (interactive)
231 (setq wnn-english-messages (not wnn-english-messages)))
232
233 (defvar wnn-english-messages nil "*If non-nil, display messages from the [jck]server in English")
234
235 (make-symbol "english-mess")
236
219 (defun egg:msg-get (message) 237 (defun egg:msg-get (message)
220 (or 238 (or
221 (nth 1 (assoc message (nth 1 (assoc wnn-server-type *egg-message-alist*)))) 239 (nth 1 (assoc message (nth 1 (assoc (if wnn-english-messages 'english-mess wnn-server-type)
240 *egg-message-alist*))))
222 (format "No message. Check *egg-message-alist* %s %s" 241 (format "No message. Check *egg-message-alist* %s %s"
223 wnn-server-type message))) 242 wnn-server-type message)))
224 243
225 (defvar *egg-message-alist* 244 (defvar *egg-message-alist*
226 '((jserver 245 '((english-mess
246 ((open-wnn "Connected with Wnn on host %s")
247 (no-rcfile "No egg-startup-file on %s")
248 (file-saved "Wnn dictionary and frequency data recorded.")
249 (henkan-mode-indicator "$B4A(B")
250 (begin-henkan "$BJQ493+;OJ8;zNs(B: ")
251 (end-henkan "$BJQ49=*N;J8;zNs(B: ")
252 (kugiri-dai "$BBgJ8@a6h@Z$jJ8;zNs(B: ")
253 (kugiri-sho "$B>.J8@a6h@Z$jJ8;zNs(B: ")
254 (face-henkan "$BJQ496h4VI=<(B0@-(B: ")
255 (face-dai "$BBgJ8@a6h4VI=<(B0@-(B: ")
256 (face-sho "$B>.J8@a6h4VI=<(B0@-(B: ")
257 (jikouho "$B<!8uJd(B:")
258 (off-msg "%s %s(%s:%s) turned off.")
259 (henkan-help "Kanji conversion mode:
260 $BJ8@a0\F0(B
261 \\[henkan-first-bunsetu]\t$B@hF,J8@a(B\t\\[henkan-last-bunsetu]\t$B8eHxJ8@a(B
262 \\[henkan-backward-bunsetu]\t$BD>A0J8@a(B\t\\[henkan-forward-bunsetu]\t$BD>8eJ8@a(B
263 $BJQ49JQ99(B
264 $BBgJ8@a<!8uJd(B \\[henkan-next-kouho-dai]\t$B>.J8@a<!8uJd(B \\[henkan-next-kouho-sho]
265 $BA08uJd(B \\[henkan-previous-kouho] \t$B<!8uJd(B \\[henkan-next-kouho]
266 $BBgJ8@a?-$7(B \\[henkan-bunsetu-nobasi-dai] \t$BBgJ8@a=L$a(B \\[henkan-bunsetu-chijime-dai]
267 $B>.J8@a?-$7(B \\[henkan-bunsetu-nobasi-sho] \t$B>.J8@a=L$a(B \\[henkan-bunsetu-chijime-sho]
268 $BBgJ8@aJQ498uJdA*Br(B \\[henkan-select-kouho-dai] \t$B>.J8@aJQ498uJdA*Br(B \\[henkan-select-kouho-sho]
269 $BJQ493NDj(B
270 $BA4J8@a3NDj(B \\[henkan-kakutei] \t$BD>A0J8@a$^$G3NDj(B \\[henkan-kakutei-before-point]
271 $BJQ49Cf;_(B \\[henkan-quit]
272 ")
273 (hinsimei "Hinshi (product/noun) name:")
274 (jishotouroku-yomi "Dictionary entry for$B!X(B%s$B!Y(B reading:")
275 (touroku-jishomei "Name of dictionary:" )
276 (registerd "Dictonary entry$B!X(B%s$B!Y(B(%s: %s) registered in %s.")
277 (yomi "Reading$B!'(B")
278 (no-yomi "No dictionary entry for $B!X(B%s$B!Y(B.")
279 (jisho "Dictionary:")
280 (hindo "Frequency:")
281 (kanji "Kanji:")
282 (register-notify "Dictonary entry$B!X(B%s$B!Y(B(%s: %s) registered in %s.")
283 (cannot-remove "Cannot delete entry from system dictionary.")
284 (enter-hindo "Enter frequency:")
285 (remove-notify "Dictonary entry$B!X(B%s$B!Y(B(%s) removed from %s.")
286 (removed "Dictonary entry$B!X(B%s$B!Y(B(%s) removed from %s.")
287 (jishomei "Dictionary name:" )
288 (comment "Comment:")
289 (jisho-comment "Dictionary:%s: comment:%s")
290 (param ("$B#N(B ( $BBg(B ) $BJ8@a2r@O$N#N(B"
291 "$BBgJ8@aCf$N>.J8@a$N:GBg?t(B"
292 "$B448l$NIQEY$N%Q%i%a!<%?(B"
293 "$B>.J8@aD9$N%Q%i%a!<%?(B"
294 "$B448lD9$N%Q%i%a!<%?(B"
295 "$B:#;H$C$?$h%S%C%H$N%Q%i%a!<%?(B"
296 "$B<-=q$N%Q%i%a!<%?(B"
297 "$B>.J8@a$NI>2ACM$N%Q%i%a!<%?(B"
298 "$BBgJ8@aD9$N%Q%i%a!<%?(B"
299 "$B>.J8@a?t$N%Q%i%a!<%?(B"
300 "$B5?;wIJ;l(B $B?t;z$NIQEY(B"
301 "$B5?;wIJ;l(B $B%+%J$NIQEY(B"
302 "$B5?;wIJ;l(B $B1Q?t$NIQEY(B"
303 "$B5?;wIJ;l(B $B5-9f$NIQEY(B"
304 "$B5?;wIJ;l(B $BJD3g8L$NIQEY(B"
305 "$B5?;wIJ;l(B $BIUB08l$NIQEY(B"
306 "$B5?;wIJ;l(B $B3+3g8L$NIQEY(B"))
307 ))
308 (jserver
227 ((open-wnn "$B%[%9%H(B %s $B$N(B Wnn $B$r5/F0$7$^$7$?(B") 309 ((open-wnn "$B%[%9%H(B %s $B$N(B Wnn $B$r5/F0$7$^$7$?(B")
228 (no-rcfile "%s $B>e$K(B egg-startup-file $B$,$"$j$^$;$s!#(B") 310 (no-rcfile "%s $B>e$K(B egg-startup-file $B$,$"$j$^$;$s!#(B")
229 (file-saved "Wnn$B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?!#(B") 311 (file-saved "Wnn$B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?!#(B")
230 (henkan-mode-indicator "$B4A(B") 312 (henkan-mode-indicator "$B4A(B")
231 (begin-henkan "$BJQ493+;OJ8;zNs(B: ") 313 (begin-henkan "$BJQ493+;OJ8;zNs(B: ")
456 (egg:error (wnn-server-get-msg)))) 538 (egg:error (wnn-server-get-msg))))
457 539
458 ;; ###jhod Currently very broken. Needs to be rewritten for the new 540 ;; ###jhod Currently very broken. Needs to be rewritten for the new
459 ;; wnn-server-set-param 541 ;; wnn-server-set-param
460 (defun set-wnn-param (&rest param) 542 (defun set-wnn-param (&rest param)
543 "Set parameters for the current wnn session.
544 Uses property list PARAM, or prompts if called interactivly.
545
546 Currently very broken."
461 (interactive) 547 (interactive)
462 ; (open-wnn-if-disconnected) 548 ; (open-wnn-if-disconnected)
463 (let ((current-param (wnn-server-get-param)) 549 (let ((current-param (wnn-server-get-param))
464 (new-param) 550 (new-param)
465 (message (egg:msg-get 'param))) 551 (message (egg:msg-get 'param)))
599 685
600 (defun make-host-list (name list) 686 (defun make-host-list (name list)
601 (cons name (delete name list))) 687 (cons name (delete name list)))
602 688
603 (defun set-wnn-host-name (name) 689 (defun set-wnn-host-name (name)
690 "Set egg/wnn to connect to jserver on host NAME, or prompt for it."
604 (interactive "sHost name: ") 691 (interactive "sHost name: ")
605 (let ((wnn-server-type 'jserver)) (close-wnn)) 692 (let ((wnn-server-type 'jserver)) (close-wnn))
606 (setq jserver-list 693 (setq jserver-list
607 (make-host-list 694 (make-host-list
608 name (or jserver-list (list (or wnn-host-name (getenv "JSERVER"))))))) 695 name (or jserver-list (list (or wnn-host-name (getenv "JSERVER")))))))
609 696
610 (fset 'set-jserver-host-name (symbol-function 'set-wnn-host-name)) 697 (fset 'set-jserver-host-name (symbol-function 'set-wnn-host-name))
611 698
612 (defun set-cwnn-host-name (name) 699 (defun set-cwnn-host-name (name)
700 "Set egg/wnn to connect to cserver on host NAME, or prompt for it."
613 (interactive "sHost name: ") 701 (interactive "sHost name: ")
614 (let ((wnn-server-type 'cserver)) (close-wnn)) 702 (let ((wnn-server-type 'cserver)) (close-wnn))
615 (setq cserver-list 703 (setq cserver-list
616 (make-host-list 704 (make-host-list
617 name (or cserver-list (list (or cwnn-host-name (getenv "CSERVER"))))))) 705 name (or cserver-list (list (or cwnn-host-name (getenv "CSERVER")))))))
618 706
619 (fset 'set-cserver-host-name (symbol-function 'set-cwnn-host-name)) 707 (fset 'set-cserver-host-name (symbol-function 'set-cwnn-host-name))
620 708
621 (defun set-kwnn-host-name (name) 709 (defun set-kwnn-host-name (name)
710 "Set egg/wnn to connect to kserver on host NAME, or prompt for it."
622 (interactive "sHost name: ") 711 (interactive "sHost name: ")
623 (let ((wnn-server-type 'kserver)) (close-wnn)) 712 (let ((wnn-server-type 'kserver)) (close-wnn))
624 (setq kserver-list 713 (setq kserver-list
625 (make-host-list 714 (make-host-list
626 name (or kserver-list (list (or kwnn-host-name (getenv "KSERVER"))))))) 715 name (or kserver-list (list (or kwnn-host-name (getenv "KSERVER")))))))
693 (let ((wnnenv-sticky nil)) (wnn-server-close)) 782 (let ((wnnenv-sticky nil)) (wnn-server-close))
694 (egg:error (egg:msg-get 'no-rcfile) path))) 783 (egg:error (egg:msg-get 'no-rcfile) path)))
695 (run-hooks 'egg:open-wnn-hook)))) 784 (run-hooks 'egg:open-wnn-hook))))
696 785
697 (defun disconnect-wnn () 786 (defun disconnect-wnn ()
787 "Dump connection to Wnn servers, discarding dictionary and frequency changes."
698 (interactive) 788 (interactive)
699 (if (wnn-server-isconnect) (wnn-server-close))) 789 (if (wnn-server-isconnect) (wnn-server-close)))
700 790
701 (defun close-wnn () 791 (defun close-wnn ()
792 "Cleanly shutdown connection to Wnn servers, saving data and calling egg:close-wnn-hook"
702 (interactive) 793 (interactive)
703 (if (wnn-server-isconnect) 794 (if (wnn-server-isconnect)
704 (progn 795 (progn
705 (wnn-server-set-rev nil) 796 (wnn-server-set-rev nil)
706 (if (wnn-server-dict-save) 797 (if (wnn-server-dict-save)
1008 egg:*dai-bunsetu-kugiri* 1099 egg:*dai-bunsetu-kugiri*
1009 egg:*sho-bunsetu-kugiri*))) 1100 egg:*sho-bunsetu-kugiri*)))
1010 (setq i (1+ i))))) 1101 (setq i (1+ i)))))
1011 1102
1012 (defun henkan-kakutei () 1103 (defun henkan-kakutei ()
1104 "Accept the current henkan region"
1013 (interactive) 1105 (interactive)
1014 (egg:bunsetu-face-off) 1106 (egg:bunsetu-face-off)
1015 (egg:henkan-face-off) 1107 (egg:henkan-face-off)
1016 (delete-region (- egg:*region-start* (length egg:*henkan-open*)) 1108 (delete-region (- egg:*region-start* (length egg:*henkan-open*))
1017 egg:*region-start*) 1109 egg:*region-start*)
1058 (egg:quit-egg-mode) 1150 (egg:quit-egg-mode)
1059 ) 1151 )
1060 ;; end of patch 1152 ;; end of patch
1061 1153
1062 (defun henkan-kakutei-before-point () 1154 (defun henkan-kakutei-before-point ()
1155 "Accept the henkan region before point, and put the rest back into a fence."
1063 (interactive) 1156 (interactive)
1064 (egg:bunsetu-face-off) 1157 (egg:bunsetu-face-off)
1065 (egg:henkan-face-off) 1158 (egg:henkan-face-off)
1066 (delete-region egg:*region-start* egg:*region-end*) 1159 (delete-region egg:*region-start* egg:*region-end*)
1067 (goto-char egg:*region-start*) 1160 (goto-char egg:*region-start*)
1098 ;;;(use-local-map nil) 1191 ;;;(use-local-map nil)
1099 (setq egg:henkan-mode-in-use nil) 1192 (setq egg:henkan-mode-in-use nil)
1100 (use-local-map fence-mode-map) 1193 (use-local-map fence-mode-map)
1101 (egg:mode-line-display)) 1194 (egg:mode-line-display))
1102 1195
1196 ;; ### Should probably put this on a key.
1103 (defun sai-henkan () 1197 (defun sai-henkan ()
1198 "Reconvert last henkan entry."
1104 (interactive) 1199 (interactive)
1105 (if egg:henkan-mode-in-use nil 1200 (if egg:henkan-mode-in-use nil
1106 (let ((finished nil)) 1201 (let ((finished nil))
1107 (unwind-protect 1202 (unwind-protect
1108 (progn 1203 (progn
1129 1224
1130 (defun egg:bunsetu-face-on () 1225 (defun egg:bunsetu-face-on ()
1131 ;; make dai-bunsetu extent and sho-bunsetu extent if they do not exist. 1226 ;; make dai-bunsetu extent and sho-bunsetu extent if they do not exist.
1132 ;; put thier faces to extents and move them to each bunsetu. 1227 ;; put thier faces to extents and move them to each bunsetu.
1133 (let* ((bunsetu-begin *bunsetu-number*) 1228 (let* ((bunsetu-begin *bunsetu-number*)
1134 (bunsetu-end) 1229 (bunsetu-end))
1135 (bunsetu-suu (wnn-server-bunsetu-suu))) 1230 ; (bunsetu-suu (wnn-server-bunsetu-suu)))
1136 ; dai bunsetu 1231 ; dai bunsetu
1137 (if egg:*dai-bunsetu-face* 1232 (if egg:*dai-bunsetu-face*
1138 (progn 1233 (progn
1139 (if (extentp egg:*dai-bunsetu-extent*) 1234 (if (extentp egg:*dai-bunsetu-extent*)
1140 nil 1235 nil
1250 (henkan-goto-kouho (1- (bunsetu-kouho-number *bunsetu-number* init))))) 1345 (henkan-goto-kouho (1- (bunsetu-kouho-number *bunsetu-number* init)))))
1251 1346
1252 (defun henkan-goto-kouho (kouho-number) 1347 (defun henkan-goto-kouho (kouho-number)
1253 ; (egg:bunsetu-face-off) 1348 ; (egg:bunsetu-face-off)
1254 (let ((point (point)) 1349 (let ((point (point))
1255 (yomi (bunsetu-yomi *bunsetu-number*)) 1350 ; (yomi (bunsetu-yomi *bunsetu-number*))
1256 (max) 1351 (max)
1257 (min)) 1352 (min))
1258 (setq kouho-number 1353 (setq kouho-number
1259 (check-number-range kouho-number 1354 (check-number-range kouho-number
1260 0 1355 0
1328 (setq l (+ l (bunsetu-length-sho i))) 1423 (setq l (+ l (bunsetu-length-sho i)))
1329 (setq i (1+ i))) 1424 (setq i (1+ i)))
1330 (bunsetu-length-henko l))) 1425 (bunsetu-length-henko l)))
1331 1426
1332 (defun bunsetu-length-henko (length) 1427 (defun bunsetu-length-henko (length)
1333 (let ((i 0) 1428 (let ((r (wnn-server-bunsetu-henkou *bunsetu-number* length egg:*dai*))
1334 (r (wnn-server-bunsetu-henkou *bunsetu-number* length egg:*dai*))
1335 (start (max 0 (1- *bunsetu-number*)))) 1429 (start (max 0 (1- *bunsetu-number*))))
1336 (cond((null r) 1430 (cond((null r)
1337 (egg:error (wnn-server-get-msg))) 1431 (egg:error (wnn-server-get-msg)))
1338 ((> r 0) 1432 ((> r 0)
1339 ; (egg:henkan-face-off) 1433 ; (egg:henkan-face-off)
1747 (let* ((dict-item (nth 1841 (let* ((dict-item (nth
1748 (+ (count-lines (point-min) (point)) 1842 (+ (count-lines (point-min) (point))
1749 (if (= (current-column) 0) 1 0) 1843 (if (= (current-column) 0) 1 0)
1750 -1) 1844 -1)
1751 *diced-dict-info*)) 1845 *diced-dict-info*))
1752 (hindo (nth 2 dict-item)) 1846 ; (hindo (nth 2 dict-item))
1753 (dict-number (nth 3 dict-item)) 1847 (dict-number (nth 3 dict-item))
1754 (serial-number (nth 4 dict-item)) 1848 (serial-number (nth 4 dict-item))
1755 ) 1849 )
1756 (if (null (wnn-server-word-use dict-number serial-number)) 1850 (if (null (wnn-server-word-use dict-number serial-number))
1757 (egg:error (wnn-server-get-msg))) 1851 (egg:error (wnn-server-get-msg)))
1758 (diced-redisplay-hindo dict-number serial-number))) 1852 (diced-redisplay-hindo dict-number serial-number)))
1759 1853
1760 (defun diced-hindo-set (&optional newhindo) 1854 (defun diced-hindo-set (&optional newhindo)
1761 (interactive) 1855 (interactive)
1762 (if (null newhindo) 1856 (if (null newhindo)
1763 (setq newhindo (read-minibuffer (egg:msg-get 'enter-hindo)))) 1857 (setq newhindo (read-expression (egg:msg-get 'enter-hindo))))
1764 (let* ((dict-item (nth 1858 (let* ((dict-item (nth
1765 (+ (count-lines (point-min) (point)) 1859 (+ (count-lines (point-min) (point))
1766 (if (= (current-column) 0) 1 0) 1860 (if (= (current-column) 0) 1 0)
1767 -1) 1861 -1)
1768 *diced-dict-info*)) 1862 *diced-dict-info*))
1769 (hindo (nth 2 dict-item)) 1863 ; (hindo (nth 2 dict-item))
1770 (dict-number (nth 3 dict-item)) 1864 (dict-number (nth 3 dict-item))
1771 (serial-number (nth 4 dict-item)) 1865 (serial-number (nth 4 dict-item))
1772 ) 1866 )
1773 (if (null (wnn-server-word-hindo-set dict-number serial-number newhindo)) 1867 (if (null (wnn-server-word-hindo-set dict-number serial-number newhindo))
1774 (egg:error (wnn-server-get-msg))) 1868 (egg:error (wnn-server-get-msg)))
1791 (if (= (following-char) ?D) 1885 (if (= (following-char) ?D)
1792 (let* ((dict-item (nth no *diced-dict-info*)) 1886 (let* ((dict-item (nth no *diced-dict-info*))
1793 (kanji (nth 0 dict-item)) 1887 (kanji (nth 0 dict-item))
1794 (bunpo (nth 1 dict-item)) 1888 (bunpo (nth 1 dict-item))
1795 (hinshi (wnn-server-hinsi-name bunpo)) 1889 (hinshi (wnn-server-hinsi-name bunpo))
1796 (hindo (nth 2 dict-item)) 1890 ; (hindo (nth 2 dict-item))
1797 (dict-number (nth 3 dict-item)) 1891 (dict-number (nth 3 dict-item))
1798 (dict-name (wnn-dict-name dict-number (wnn-server-dict-list))) 1892 (dict-name (wnn-dict-name dict-number (wnn-server-dict-list)))
1799 (sys-dict-p (null (memq dict-number (wnn-server-hinsi-dicts -1)))) 1893 ; (sys-dict-p (null (memq dict-number (wnn-server-hinsi-dicts -1))))
1800 (serial-number (nth 4 dict-item)) 1894 (serial-number (nth 4 dict-item))
1801 ) 1895 )
1802 (if (notify-yes-or-no-p (egg:msg-get 'remove-notify) 1896 (if (notify-yes-or-no-p (egg:msg-get 'remove-notify)
1803 kanji hinshi dict-name) 1897 kanji hinshi dict-name)
1804 (progn 1898 (progn
1827 (interactive) 1921 (interactive)
1828 (scroll-down) 1922 (scroll-down)
1829 (if (eobp) (forward-line -1))) 1923 (if (eobp) (forward-line -1)))
1830 1924
1831 (defun diced-mode () 1925 (defun diced-mode ()
1832 "Mode for \"editing\" dictionaries. 1926 "Mode for \"editing\" Wnn dictionaries.
1833 In diced, you are \"editing\" a list of the entries in dictionaries. 1927 In diced, you are \"editing\" a list of the entries in dictionaries.
1834 You can move using the usual cursor motion commands. 1928 You can move using the usual cursor motion commands.
1835 Letters no longer insert themselves. Instead, 1929 Letters no longer insert themselves. Instead,
1836 1930
1837 Type a to Add new entry. 1931 Type a to Add new entry.
1924 kanji yomi hinsi jisho serial 2018 kanji yomi hinsi jisho serial
1925 (if (= ima 1) "*" " ") 2019 (if (= ima 1) "*" " ")
1926 hindo hyoka daihyoka kangovect) 2020 hindo hyoka daihyoka kangovect)
1927 t))))))))) 2021 t)))))))))
1928 2022
1929 (provide 'wnn-egg) 2023 (provide 'egg-wnn)
1930 2024
1931 ;;; wnn-egg.el ends here 2025 ;;; egg-wnn.el ends here