Initial Commit
[packages] / mule-packages / skk / skk-gadget.el
1 ;; skk-gadget.el -- \e$B<B9TJQ49$N$?$a$N%W%m%0%i%`\e(B
2 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999
3 ;; Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>
4
5 ;; Author: Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>
6 ;; Maintainer: Murata Shuuichirou  <mrt@astec.co.jp>
7 ;;             Mikio Nakajima <minakaji@osaka.email.ne.jp>
8 ;; Version: $Id: skk-gadget.el,v 1.4 2000-11-08 01:51:43 youngs Exp $
9 ;; Keywords: japanese
10 ;; Last Modified: $Date: 2000-11-08 01:51:43 $
11
12 ;; This file is part of SKK.
13
14 ;; SKK is free software; you can redistribute it and/or modify
15 ;; it under the terms of the GNU General Public License as published by
16 ;; the Free Software Foundation; either versions 2, or (at your option)
17 ;; any later version.
18
19 ;; SKK is distributed in the hope that it will be useful
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22 ;; GNU General Public License for more details.
23
24 ;; You should have received a copy of the GNU General Public License
25 ;; along with SKK, see the file COPYING.  If not, write to the Free
26 ;; Software Foundation Inc., 59 Temple Place - Suite 330, Boston,
27 ;; MA 02111-1307, USA.
28
29 ;;; Commentary:
30 ;;
31 ;; \e$B%W%m%0%i%`<B9TJQ49$H$O\e(B
32 ;; ======================
33 ;; \e$BAw$j2>L>$N$J$$<-=q$NJQ49$N8uJd$K\e(B Emacs Lisp \e$B$N%3!<%I$,=q$$$F$"$l$P!"\e(BSKK
34 ;; \e$B$O$=$N%3!<%I$r\e(B Lisp \e$B$N%W%m%0%i%`$H$7$F<B9T$7!"$=$N7k2L$NJ8;zNs$r2hLL$KA^\e(B
35 ;; \e$BF~$9$k!#Nc$($P!"<-=q$K\e(B
36 ;;
37 ;;         now /(current-time-string)/
38 ;;
39 ;; \e$B$H$$$&9T$,$"$k$H$-!"\e(B`/now ' \e$B$H%?%$%W$9$l$P2hLL$K$O8=:_$N;~9o$,I=<($5$l!"\e(B
40 ;; `\e$B"'\e(BFri Apr 10 11:41:43 1992' \e$B$N$h$&$K$J$k!#\e(B
41 ;;
42 ;; \e$B$3$3$G;H$($k\e(B Lisp \e$B$N%3!<%I$O2~9T$r4^$s$G$$$J$$$b$N$K8B$i$l$k!#$^$?$3$N%3!<\e(B
43 ;; \e$B%I$O7k2L$H$7$FJ8;zNs$rJV$9$b$N$G$J$1$l$P$J$i$J$$!#\e(B
44 ;;
45 ;; \e$B$3$N%U%!%$%k$O<B9TJQ49%W%m%0%i%`$r=8$a$?$b$N$G$"$k!#\e(B
46 ;;
47 ;; skk-gadget.el \e$B$N\e(B `gadget' \e$B$O!V>e<j$/9)IW$7$?F;6q!W$N0UL#!#!V?'!9Ht$S=P$9\e(B
48 ;; \e$B5$$N$-$$$?$*$b$A$cH"!W$H$$$&$h$&$J0UL#$GL>IU$1$i$l$?!#\e(B
49 ;; \e$BM>CL$@$,!"\e(BX Window \e$B$G;HMQ$5$l$k\e(B `Widget' \e$B$H$$$&8@MU$O!"\e(B`window'+`gadget'
50 ;; \e$B$+$i:n$i$l$?B$8l$i$7$$!#\e(B
51
52 ;;; Code:
53 (eval-when-compile
54   (require 'static))
55 (require 'skk)
56 (require 'skk-foreword)
57 ;; -- user variables
58
59 ;;;###autoload
60 (defgroup skk-gadget nil "SKK gadget related customization."
61   :prefix "skk-"
62   :group 'skk )
63
64 (defcustom skk-date-ad nil
65   "*Non-nil \e$B$G$"$l$P!"\e(Bskk-today, skk-clock \e$B$G@>NqI=<($9$k!#\e(B
66 nil \e$B$G$"$l$P!"859fI=<($9$k!#\e(B"
67   :type 'boolean
68   :group 'skk-gadget )
69
70 (defcustom skk-number-style 1
71   "*skk-today, skk-clock \e$B$GI=<($9$k?t;z$N7A<0$rJQ2=$5$;$k!#\e(B
72 \e$BH>3QI=\e(B: nil \e$B$b$7$/$O\e(B 0.
73 \e$BA43QI=<(\e(B: t \e$B$b$7$/$O!"\e(B1.
74 \e$B4A?t;zI=\e(B: t, 0, 1 \e$B0J30$N\e(B non-nil \e$BCM!#\e(B"
75   :type '(choice (choice :tag "Hankaku" (const nil) (integer 0))
76                  (choice :tag "Zenkaku" (const t) (integer 1))
77                  (integer :tag "Kansuuji" 3) )
78   :group 'skk-gadget )
79
80 (defcustom skk-gadget-load-hook nil
81   "*skk-gadget.el \e$B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#\e(B"
82   :type 'hook
83   :group 'skk-gadget )
84
85 ;; --internal variables
86 (defconst skk-week-alist
87   '(("Sun" . "\e$BF|\e(B") ("Mon" . "\e$B7n\e(B") ("Tue" . "\e$B2P\e(B") ("Wed" . "\e$B?e\e(B") ("Thu" . "\e$BLZ\e(B")
88     ("Fri" . "\e$B6b\e(B") ("Sat" . "\e$BEZ\e(B") )
89   "\e$BMKF|L>$NO"A[%j%9%H!#\e(B\(\e$B1Q8lI=5-J8;zNs\e(B . \e$BF|K\8lI=5-J8;zNs\e(B\)" )
90
91 ;; -- programs
92 ;;;###autoload
93 (defun skk-current-date (&optional and-time)
94   ;; \e$B8=:_$NF|;~$rF|K\8l$GJV$9!#\e(Bskk-today \e$B$H\e(B skk-clock \e$B$N%5%V%k!<%A%s!#\e(B
95   ;; \e$B%*%W%7%g%J%k0z?t$N\e(B AND-TIME \e$B$r;XDj$9$k$H!";~4V$bJV$9!#\e(B
96   (let* ((str (current-time-string))
97          (year (if skk-date-ad
98                    (skk-num (substring str 20 24))
99                  (let ((y (- (string-to-number (substring str 20 24)) 1988)))
100                    (if (= y 1) "\e$B85\e(B" (skk-num (number-to-string y))) )))
101          (month (skk-num (cdr (assoc (substring str 4 7) skk-month-alist))))
102          (day (substring str 8 10))
103          (day-of-week (cdr (assoc (substring str 0 3) skk-week-alist)))
104          hour minute second )
105     (if (eq (aref day 0) ?\040) ; SPC
106         (setq day (substring day 1)) )
107     (setq day (skk-num day))
108     (concat (if skk-date-ad "" "\e$BJ?@.\e(B") year "\e$BG/\e(B"
109             month "\e$B7n\e(B" day "\e$BF|\e(B" "\(" day-of-week "\)"
110             (if and-time
111                 (progn
112                   (setq hour (skk-num (substring str 11 13))
113                         minute (skk-num (substring str 14 16))
114                         second (skk-num (substring str 17 19)) )
115                   (concat " " hour "\e$B;~\e(B" minute "\e$BJ,\e(B" second "\e$BIC\e(B") ))) ))
116
117 ;;;###autoload
118 (defun skk-today (&optional and-time)
119   "\e$B8=:_$NF|;~$rF|K\8lI=5-$GJV$9!#\e(B
120 \e$B%*%W%7%g%J%k0z?t$N\e(B AND-TIME \e$B$r;XDj$9$k$H!"F|IU$K;~4V$r2C$($k!#\e(B
121 skk-date-ad \e$B$H\e(B skk-number-style \e$B$K$h$C$FI=<(J}K!$N%+%9%?%^%$%:$,2DG=!#\e(B"
122   (interactive "*P")
123   (if (interactive-p)
124       (insert (skk-today and-time))
125     (skk-current-date and-time) ))
126
127 ;;;###autoload
128 (defun skk-clock (&optional kakutei-when-quit time-signal)
129   "\e$B%G%8%?%k;~7W$r%_%K%P%C%U%!$KI=<($9$k!#\e(B
130 quit \e$B$9$k$H$=$N;~E@$NF|;~$r8uJd$H$7$FA^F~$9$k!#\e(B
131 quit \e$B$7$?$H$-$K5/F0$7$F$+$i$N7P2a;~4V$r%_%K%P%C%U%!$KI=<($9$k!#\e(B
132 interactive \e$B$K5/F0$9$kB>!"\e(B\"clock /(skk-clock)/\" \e$B$J$I$N%(%s%H%j$r\e(B SKK \e$B$N<-=q\e(B
133 \e$B$K2C$(!"\e(B\"/clock\"+ SPC \e$B$GJQ49$9$k$3$H$K$h$C$F$b5/F02D!#\e(BC-g \e$B$G;_$^$k!#\e(B
134 \e$B<B9TJQ49$G5/F0$7$?>l9g$O!"\e(BC-g \e$B$7$?;~E@$N;~E@$NF|;~$rA^F~$9$k!#\e(B
135 \e$B%*%W%7%g%J%k0z?t$N\e(B KAKUTEI-WHEN-QUIT \e$B$,\e(B non-nil \e$B$G$"$l$P\e(B C-g \e$B$7$?$H$-$K3N\e(B
136 \e$BDj$9$k!#\e(B
137 \e$B%*%W%7%g%J%k0z?t$N\e(B TIME-SIGNAL \e$B$,\e(B non-nil \e$B$G$"$l$P!"\e(BNTT \e$B$N;~JsIw$K\e(B ding \e$B$9$k!#\e(B
138 \e$B$=$l$>$l!"\e(B\"clock /(skk-clock nil t)/\" \e$B$N$h$&$J%(%s%H%j$r<-=q$KA^F~$9$l$PNI$$!#\e(B
139 skk-date-ad \e$B$H\e(B skk-number-style \e$B$K$h$C$FI=<(J}K!$N%+%9%?%^%$%:$,2DG=!#\e(B"
140   (interactive "*")
141   (let ((start (current-time))
142         end mes expr1 expr2 sec snd)
143     (cond ((or (not skk-number-style)
144                (eq skk-number-style 0))
145            (setq expr1 "[789]\e$BIC\e(B"
146                  expr2 "0\e$BIC\e(B"))
147           ((or (eq skk-number-style t)
148                ;; skk-number-style \e$B$K\e(B \e$B?t;z$H\e(B t \e$B0J30$N\e(B non-nil \e$BCM$rF~$l$F$$$k>l\e(B
149                ;; \e$B9g!"\e(B= \e$B$r;H$&$H\e(B Wrong type argument: number-or-marker-p, xxxx
150                ;; \e$B$K$J$C$F$7$^$&!#\e(B
151                (eq skk-number-style 1))
152            (setq expr1 "[\e$B#7#8#9\e(B]\e$BIC\e(B"
153                  expr2 "\e$B#0IC\e(B"))
154           (t
155            (setq expr1 "[\e$B<7H,6e\e(B]\e$BIC\e(B"
156                  expr2 "\e$B!;IC\e(B")))
157     ;;
158     (static-when (eq skk-emacs-type 'xemacs)
159       ;; XEmacs \e$B$G\e(B sound \e$B$,%m!<%I$5$l$F$$$k$+$I$&$+!#\e(B
160       (when (setq snd (and (boundp 'sound-alist)
161                            (eq t (catch 'tag
162                                    (mapc
163                                     (function
164                                      (lambda (list)
165                                        (and
166                                         (eq 'drum
167                                             (cadr (memq :sound list)))
168                                         (throw 'tag t))))
169                                     sound-alist)))))
170         ;;
171         (unless (assq 'clink sound-alist)
172           (load-sound-file "clink" 'clink))))
173     ;;
174     (save-match-data
175       (condition-case nil
176           (let (case-fold-search
177                 inhibit-quit visible-bell
178                 skk-mode skk-latin-mode skk-j-mode skk-abbrev-mode
179                 skk-jisx0208-latin-mode)
180             (while (not quit-flag)
181               (setq mes (skk-current-date t)
182                     sec 0)
183               (message "%s    Hit any key to quit" mes)
184               (if time-signal
185                   (if (string-match expr1 mes)
186                       ;; [7890] \e$B$N$h$&$K@55,I=8=$r;H$o$:!"\e(B7 \e$B$@$1$GA4$F$N%^%7%s$,\e(B
187                       ;; \e$BCe$$$F$f$1$PNI$$$N$@$,\e(B...\e$B!#CzEY$3$N4X?t<B9T;~$K\e(B Garbage
188                       ;; collection \e$B$,8F$P$l$F$bI=<($5$l$k?t;z$,Ht$V>l9g$,$"$k!#\e(B
189                       (static-if (eq skk-emacs-type 'xemacs)
190                           ;; \e$B$$$$2;$,$J$$$J$!\e(B...
191                           (ding nil 'drum)
192                         (ding))
193                     (if (string-match expr2 mes)
194                         ;; 0 \e$B$@$1!V%]!A%s!W$H$$$-$?$$$H$3$m$G$9$,!"%^%7%s$K$h$C\e(B
195                         ;; \e$B$F:9$,$"$k!#\e(B
196                         ;; 386SX 25Mhz + Mule-2.x \e$B$@$H!V%T%C!"%T%C!W$H$$$&46$8!#\e(B
197                         ;; \e$BIU$$$F$f$/$N$,Hs>o$K?I$$!#\e(B68LC040 33Mhz + NEmacs \e$B$@$H\e(B
198                         ;; \e$B!V%T%T%C!W$H$J$j!"2;$N%?%$%_%s%0$ONI$$$N$@$,!"$H$-\e(B
199                         ;; \e$B$I$-\e(B 1 \e$BICJ,$D$$$F$$$1$J$/$J$k!#\e(BPentium 90Mhz +
200                         ;; Mule-2.x\e$B$@$H!V%T%C!W$H$$$&C12;$K$J$C$F$7$^$&\e(B... (;_;)\e$B!#\e(B
201                         (static-cond
202                          ((eq skk-emacs-type 'xemacs)
203                           (if snd
204                               ;; \e$B$A$g$C$H$b$?$D$/\e(B ?
205                               (ding nil 'clink)
206                             (ding)
207                             (unless (sit-for (setq sec
208                                                    (+ sec
209                                                       (/ (float 1) (float 6))))
210                                              'nodisplay)
211                               (next-command-event)
212                               (signal 'quit nil))
213                             (ding)))
214                          ((featurep 'lisp-float-type)
215                           (ding)
216                           (unless (sit-for (setq sec
217                                                  (+ sec
218                                                     (/ (float 1) (float 6))))
219                                            nil
220                                            'nodisplay)
221                             (next-command-event)
222                             (signal 'quit nil))
223                           (ding))
224                          (t
225                           ;; Emacs 18
226                           (ding)
227                           (ding))))))
228               (unless (static-cond
229                        ((memq skk-emacs-type '(nemacs mule1 xemacs))
230                         (sit-for (- 1 sec) 'nodisplay))
231                        (t
232                         (sit-for (- 1 sec) nil 'nodisplay)))
233                 (next-command-event)
234                 (signal 'quit nil))))
235         (quit
236          (prog2
237              (setq end (current-time))
238              (skk-current-date t)
239            (if kakutei-when-quit
240                (setq skk-kakutei-flag t))
241            (message "\e$B7P2a;~4V\e(B: %s \e$BIC\e(B" (skk-time-difference start end))))))))
242
243 ;;;###autoload
244 (defun skk-ad-to-gengo (&optional fstr lstr)
245   ;; \e$B@>Nq$r859f$KJQ49$9$k!#%*%W%7%g%s0z?t$N\e(B fstr \e$B$,;XDj$5$l$F$$$l$P!"G/9f$H\e(B
246   ;; \e$B?t;z$N4V$K!"\e(Blstr \e$B$,;XDj$5$l$F$$$l$P!"?t;z$NKvHx$K!"$=$l$>$l$NJ8;zNs$rO"7k\e(B
247   ;; \e$B$9$k!#\e(B
248   ;; \e$B<-=q8+=P$7Nc\e(B;
249   ;; \e$B$;$$$l$-\e(B#\e$B$M$s\e(B /(skk-ad-to-gengo nil "\e$BG/\e(B")/(skk-ad-to-gengo " " " \e$BG/\e(B")/
250   (let ((ad (string-to-number (car skk-num-list))))
251     (concat (cond ((>= 1866 ad)
252                    (skk-error "\e$BJ,$j$^$;$s\e(B" "Unkown year") )
253                   ((>= 1911 ad)
254                    (concat "\e$BL@<#\e(B" fstr (number-to-string (- ad 1867))) )
255                   ((>= 1925 ad)
256                    (concat "\e$BBg@5\e(B" fstr (number-to-string (- ad 1911))) )
257                   ((>= 1988 ad)
258                    (concat "\e$B><OB\e(B" fstr (number-to-string (- ad 1925))) )
259                   (t (concat "\e$BJ?@.\e(B" fstr (number-to-string (- ad 1988)))) )
260             lstr )))
261
262 ;;;###autoload
263 (defun skk-gengo-to-ad (&optional string)
264   ;; \e$B859f$r@>Nq$KJQ49$9$k!#%*%W%7%g%s0z?t$N\e(B string \e$B$,;XDj$5$l$F$$$l$P!"\e(B
265   ;; \e$B$=$NJ8;zNs$rKvHx$KO"7k$9$k!#\e(B
266   ;; \e$B<-=q8+=P$7Nc\e(B;
267   ;; \e$B$7$g$&$o\e(B#\e$B$M$s\e(B /(skk-gengo-to-ad "\e$BG/\e(B")/(skk-gengo-to-ad " \e$BG/\e(B")/
268   (save-match-data
269     (let ((num (car skk-num-list))
270           gengo )
271       (string-match num skk-henkan-key)
272       (setq gengo (substring skk-henkan-key 0 (match-beginning 0))
273             num (string-to-number num) )
274       (concat (number-to-string
275                (+ num
276                   (cond ((eq num 0)
277                          (skk-error "0 \e$BG/$O$"$jF@$J$$\e(B"
278                                     "Cannot convert 0 year" ))
279                         ((string= gengo "\e$B$X$$$;$$\e(B") 1988)
280                         ((string= gengo "\e$B$7$g$&$o\e(B")
281                          (if (> 64 num)
282                              1925
283                            (skk-error "\e$B><OB$O\e(B 63 \e$BG/$^$G$G$9\e(B"
284                                       "The last year of Showa is 63" )))
285                         ((string= gengo "\e$B$?$$$7$g$&\e(B")
286                          (if (> 15 num)
287                              1911
288                            (skk-error "\e$BBg@5$O!"\e(B14 \e$BG/$^$G$G$9\e(B"
289                                       "The last year of Taisyo is 14" )))
290                         ((string= gengo "\e$B$a$$$8\e(B")
291                          (if (> 45 num)
292                              1867
293                            (skk-error "\e$BL@<#$O!"\e(B44 \e$BG/$^$G$G$9\e(B"
294                                       "The last year of Meiji is 44" )))
295                         (t (skk-error "\e$BH=JLITG=$J859f$G$9!*\e(B"
296                                       "Unknown Gengo!" )))))
297               string ))))
298
299 ;(defun skk-calc (operator)
300 ;  ;; 2 \e$B$D$N0z?t$r<h$C$F\e(B operator \e$B$N7W;;$r$9$k!#\e(B
301 ;  ;; \e$BCm0U\e(B: '/ \e$B$O0z?t$H$7$FEO$;$J$$$N$G\e(B (defalias 'div '/) \e$B$J$I$H$7!"JL$N7A$G\e(B
302 ;  ;; skk-calc \e$B$KEO$9!#\e(B
303 ;  ;; \e$B<-=q8+=P$7Nc\e(B; #*# /(skk-calc '*)/
304 ;  (number-to-string
305 ;   (funcall operator (string-to-number (car skk-num-list))
306 ;            (string-to-number (nth 1 skk-num-list)) )))
307
308 ;;;###autoload
309 (defun skk-calc (operator)
310   ;; 2 \e$B$D$N0z?t$r<h$C$F\e(B operator \e$B$N7W;;$r$9$k!#\e(B
311   ;; \e$BCm0U\e(B: '/ \e$B$O0z?t$H$7$FEO$;$J$$$N$G\e(B (defalias 'div '/) \e$B$J$I$H$7!"JL$N7A$G\e(B
312   ;; skk-calc \e$B$KEO$9!#\e(B
313   ;; \e$B<-=q8+=P$7Nc\e(B; #*# /(skk-calc '*)/
314   (number-to-string (apply operator (mapcar 'string-to-number skk-num-list))) )
315
316 ;;;###autoload
317 (defun skk-plus ()
318   ;; \e$B<-=q8+=P$7Nc\e(B; #+#+# /(skk-plus)/
319   (number-to-string
320    (apply '+ (mapcar 'string-to-number skk-num-list))))
321
322 ;;;###autoload
323 (defun skk-minus ()
324   (number-to-string
325    (apply '- (mapcar 'string-to-number skk-num-list))))
326
327 ;;;###autoload
328 (defun skk-times ()
329   (number-to-string
330    (apply '* (mapcar 'string-to-number skk-num-list))))
331
332 ;;;###autoload
333 (defun skk-ignore-dic-word (&rest no-show-list)
334   ;; \e$B6&MQ<-=q$KEPO?$5$l$F$$$k!"0c$C$F$$$k\e(B/\e$B5$$KF~$i$J$$JQ49$r=P$5$J$$$h$&$K$9\e(B
335   ;; \e$B$k!#\e(B
336   ;; \e$B<-=q8+=P$7Nc\e(B;
337   ;;   \e$B$k$9$P$s\e(B /\e$BN1<iHV\e(B/(skk-ignore-dic-word "\e$BN1<iEE\e(B")/
338   ;;   \e$B$+$/$F$$\e(B /(skk-ignore-dic-word "\e$B3NDj\e(B")/
339   (let (new-word save-okurigana)
340     ;; skk-ignore-dic-word \e$B<+?H$N%(%s%H%j$r>C$9!#>C$9$Y$-8uJd$O\e(B
341     ;; skk-henkan-list \e$B$+$iD>@\Cj=P$7$F$$$k$N$G\e(B delete \e$B$G$O$J$/\e(B delq \e$B$G==J,!#\e(B
342     (setq skk-henkan-list (delq (nth skk-henkan-count skk-henkan-list)
343                                 skk-henkan-list ))
344     ;; \e$BA48uJd$r\e(B skk-henkan-list \e$B$KF~$l$k!#\e(B
345     (while skk-current-search-prog-list
346       (setq skk-henkan-list (skk-nunion skk-henkan-list (skk-search))) )
347     ;; \e$BITMW$J8uJd$r<N$F$k!#\e(B
348     (while no-show-list
349       (setq skk-henkan-list (delete (car no-show-list) skk-henkan-list)
350             no-show-list (cdr no-show-list) ))
351     ;; \e$B%+%l%s%H$N8uJd\e(B (skk-ignore-dic-word \e$B<+?H$N%(%s%H%j\e(B) \e$B$r>C$7$?$N$G!"\e(B
352     ;; skk-henkan-count \e$B$O<!$N8uJd$r;X$7$F$$$k!#\e(B
353     (setq new-word (or (nth skk-henkan-count skk-henkan-list)
354                        (progn (setq save-okurigana skk-okuri-char)
355                               (skk-henkan-in-minibuff) )))
356     ;; \e$B8uJd$,$J$$$H$-!#\e(B
357     (if (not new-word)
358         ;; \e$B6uJ8;zNs$,EPO?$5$l$?$i<-=qEPO?$NA0$N>uBV$KLa$9!#\e(B
359         ;; (nth -1 '(A B C)) \e$B$O!"\e(BA \e$B$rJV$9$N$G!"\e(Bn \e$B$,Ii$N?t$G$J$$$3$H$r%A%'%C%/\e(B
360         ;; \e$B$7$F$*$/I,MW$,$"$k!#\e(B
361         (if (> skk-henkan-count 0)
362             (setq skk-henkan-count (- skk-henkan-count 1)
363                   new-word (nth skk-henkan-count skk-henkan-list) )
364           ;; (1- skk-henkan-count) == -1 \e$B$K$J$k!#"&%b!<%I$KLa$9!#\e(B
365           (setq new-word (if save-okurigana
366                              (substring skk-henkan-key 0
367                                         (1- (length skk-henkan-key)) )
368                              skk-henkan-key )
369                 skk-henkan-count -1
370                 ;; \e$B2<5-$NJQ?t$O!"\e(Bskk-henkan-in-minibuff \e$B$NCf$GD4@0$5$l$k!#\e(B
371                 ;; skk-henkan-active nil
372                 ;; skk-okuri-char nil
373                 ;; skk-henkan-okurigana nil
374                   )
375           (if skk-use-face
376               (setq skk-insert-new-word-function
377                     'skk-henkan-face-off-and-remove-itself ))))
378     new-word ))
379
380 ;;;###autoload
381 (defun skk-henkan-face-off-and-remove-itself ()
382   ;; skk-insert-new-word-function \e$B$K%;%C%H$9$k$?$a$N4X?t!#%+%l%s%H%P%C%U%!$N\e(B
383   ;; \e$BJQ49ItJ,$,\e(B Overlay \e$B$N\e(B face \e$BB0@-$K$h$C$FI=<($,JQ99$5$l$F$$$k$N$rLa$7!"$=$N\e(B
384   ;; \e$B8e<+J,<+?H$r\e(B skk-insert-new-word-function \e$B$+$i<h$j=|$/<+Gz4X?t!#\e(B
385   (skk-henkan-face-off)
386   (setq skk-insert-new-word-function nil) )
387
388 (run-hooks 'skk-gadget-load-hook)
389
390 (provide 'skk-gadget)
391 ;;; skk-gadget.el ends here