1 ;;; skk.el --- SKK (Simple Kana to Kanji conversion program)
2 ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
4 ;; Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>
6 ;; Author: Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>
7 ;; Maintainer: Hideki Sakurada <sakurada@kuis.kyoto-u.ac.jp>
8 ;; Murata Shuuichirou <mrt@astec.co.jp>
9 ;; Mikio Nakajima <minakaji@osaka.email.ne.jp>
10 ;; Version: $Id: skk.el,v 1.6 2002-04-28 07:12:27 youngs Exp $
12 ;; Last Modified: $Date: 2002-04-28 07:12:27 $
14 ;; SKK is free software; you can redistribute it and/or modify it under
15 ;; the terms of the GNU General Public License as published by the Free
16 ;; Software Foundation; either versions 2, or (at your option) any later
19 ;; SKK is distributed in the hope that it will be useful but WITHOUT
20 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
21 ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 ;; License for more details.
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.
31 ;; SKK-MODE is a mode for inputting Japanese to a current buffer which is
32 ;; composed of four minor modes described below.
34 ;; +----------------------+-------- skk-mode -----+----------------------+
37 ;; skk-j-mode skk-latin-mode skk-jisx0208-latin-mode skk-abbrev-mode
38 ;; ASCII JISX0208 LATIN ABBREVIATION
39 ;; (C-j wakes up skk-j-mode) (ZEN'KAKU EIMOJI)
41 ;; skk-j-mode-map skk-latin-mode-map skk-jisx0208-latin-mode-map skk-abbrev-mode-map
51 (require 'skk-foreword)
53 (defconst skk-version "10.62a")
54 (defconst skk-major-version (string-to-int (substring skk-version 0 2)))
55 (defconst skk-minor-version (string-to-int (substring skk-version 3)))
60 (if (not (interactive-p))
63 (let* ((raw-date "$Date: 2002-04-28 07:12:27 $")
64 (year (substring raw-date 7 11))
65 (month (substring raw-date 12 14))
66 (date (substring raw-date 15 17)))
67 (if (string-match "^0" month)
68 (setq month (substring month (match-end 0))))
69 (if (string-match "^0" date)
70 (setq date (substring date (match-end 0))))
71 (message "SKK version %s of %s, APEL inside"
73 (concat (car (rassoc month skk-month-alist))
74 " " date ", " year))))))
76 ;;;; variables declaration
79 (defvar skk-init-file (convert-standard-filename "~/.skk")
80 "*SKK
\e$B$N=i4|@_Dj%U%!%$%kL>!#
\e(B
81 skk.el 9.x
\e$B$h$j
\e(B ~/.emacs
\e$B$G$N%+%9%?%^%$%:$b2DG=$H$J$C$?!#
\e(B"
82 ; "*Name of the SKK initialization file.
83 ;From skk.el 9.x on all customization may be done in ~/.emacs."
87 (defgroup skk nil "SKK basic customization."
92 (defgroup skk-faces nil
97 (defcustom skk-special-midashi-char-list '(?> ?< ??)
98 "*
\e$B@\F,<-!"@\Hx<-$NF~NO$N$?$a$N%W%l%U%#%C%/%9%-!<!"%5%U%#%C%/%9%-!<$N%j%9%H!#
\e(B"
99 ;; "*List of prefix and suffix keys for entering `settoji' and `setsubiji'."
100 :type '(repeat character)
103 (defcustom skk-mode-hook nil
104 "*SKK
\e$B$r5/F0$7$?$H$-$N%U%C%/!#
\e(B
105 \e$BB>$K!"
\e(Bskk-auto-fill-mode-hook
\e$B!"
\e(Bskk-load-hook, skk-init-file
\e$B$G$b%+%9%?
\e(B
106 \e$B%^%$%:$,2DG=!#
\e(B"
107 ;; "*Hook run at SKK startup. This hook is also run
108 ;;in skk-auto-fill-mode after skk-auto-fill-mode-hook.
109 ;;skk-auto-fill-mode-hook, skk-load-hook, skk-init-file may also be used
110 ;;for customization."
114 (defcustom skk-auto-fill-mode-hook nil
115 "*skk-auto-fill-mode
\e$B$r5/F0$7$?$H$-$N%U%C%/!#
\e(B
116 \e$BB>$K!"
\e(Bskk-mode-hook, skk-load-hook, skk-init-file
\e$B$G$b%+%9%?%^%$%:$,2D
\e(B
118 ;; "*Hook run at startup of skk-auto-fill-mode.
119 ;;skk-mode-hook
\e$B!"
\e(Bskk-load-hook, skk-init-file may also be used for
124 (defcustom skk-load-hook nil
125 "*skk.el
\e$B$r%m!<%I$7$?$H$-$N%U%C%/!#
\e(B
126 \e$BB>$K!"
\e(Bskk-mode-hook, skk-auto-fill-mode-hook, skk-init-file
\e$B$G$b%+%9%?
\e(B
127 \e$B%^%$%:$,2DG=!#
\e(B"
128 ;; "*Hook run when SKK is loaded.
129 ;;skk-auto-fill-mode-hook
\e$B!"
\e(Bskk-mode-hook, skk-init-file may also be used
130 ;;for customization."
134 (defcustom skk-search-end-function nil
135 "*
\e$BC18l8!:w=*N;;~$K%3!<%k$5$l$k4X?t!#
\e(B
136 \e$B$3$N4X?t$rMxMQ$7$F8!:w$7$?C18l$NM%@h=g0L$rJQ99$9$k$J$I$N:n6H$,2DG=!#
\e(B
137 HENKAN-BUFFER, MIDASI, OKURIGANA, ENTRY
\e$B$N
\e(B 4
\e$B0z?t$rH<$J$C$F%3!<%k$5$l$k!#
\e(B
138 \e$B2C9)$7$?
\e(B ENTRY
\e$B$rJV$9$3$H!#
\e(B
139 \e$B$3$N4X?t$O!"<-=q%P%C%U%!$G%3!<%k$5$l$k$N$G!"JQ49$r9T$J$C$?%P%C%U%!%m!<%+%k$J>pJs$r
\e(B
140 \e$B<h$j=P$7$?$$$H$-$O!"
\e(BHENKAN-BUFFER
\e$B$rMxMQ$9$k!#
\e(B"
141 :type '(choice function (const nil))
144 (defcustom skk-update-end-function nil
145 "*
\e$B8D?M<-=q$N99?7=*N;;~$K%3!<%k$5$l$k4X?t!#
\e(B
146 HENKAN-BUFFER, MIDASI, OKURIGANA, WORD, PURGE
\e$B$N
\e(B 5
\e$B0z?t$rH<$J$C$F%3!<%k$5$l$k!#
\e(B
147 \e$B$3$N4X?t$O!"<-=q%P%C%U%!$G%3!<%k$5$l$k$N$G!"JQ49$r9T$J$C$?%P%C%U%!%m!<%+%k$J>pJs$r<h$j
\e(B
148 \e$B=P$7$?$$$H$-$O!"
\e(BHENKAN-BUFFER
\e$B$rMxMQ$9$k!#
\e(B
149 skk-kakutei-initialize
\e$B$,%3!<%k$5$l$kA0$K$3$N4X?t$,%3!<%k$5$l$k$N$G!":G8e$N3NDj
\e(B
150 \e$B$K4X$9$k%U%i%0N`$O!"$3$N4X?t$NCf$+$i;2>H$9$k$3$H$,$G$-$k!#
\e(B"
151 :type '(choice function (const nil))
154 (defcustom skk-kakutei-end-function nil
155 "*
\e$B3NDj;~$K%3!<%k$5$l$k4X?t!#
\e(B
156 KAKUTEI-WORD
\e$B0z?t$rH<$J$C$F!"JQ49$r9T$J$C$?%P%C%U%!$G%3!<%k$5$l$k!#
\e(B
157 skk-kakutei-initialize
\e$B$,%3!<%k$5$l$kA0$K$3$N4X?t$,%3!<%k$5$l$k$N$G!":G8e$N3NDj
\e(B
158 \e$B$K4X$9$k%U%i%0N`$O!"$3$N4X?t$NCf$+$i;2>H$9$k$3$H$,$G$-$k!#
\e(B"
159 :type '(choice function (const nil))
162 (defcustom skk-kakutei-jisyo nil
163 "*
\e$B:G=i$K8!:w$9$k<-=q!#
\e(B
164 Non-nil
\e$B$G!"$+$D
\e(B skk-search-prog-list
\e$B$NMWAG$NCf$K$3$NJQ?t$,;HMQ$5$l$F$$$l$P!"
\e(B
165 \e$B;XDj$5$l$?<-=q$r8!:w$N$?$a%P%C%U%!$KFI$_9~$_!"8!:w$r9T$J$&!#
\e(B
166 \e$B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#
\e(B
167 \e$B3F8+=P$78l$N:G=i$N%(%s%H%j$7$+8!:w$7$J$$
\e(B (
\e$BJ#?t$N%(%s%H%j$,$"$C$F$b
\e(B 2
\e$BHVL\0J9_$N
\e(B
168 \e$B%(%s%H%j$OL5;k$5$l$k
\e(B)
\e$B!#
\e(B
169 skk-search-prog-list
\e$B$NCM$r@_Dj$9$k$3$H$K$h$j!"8!:wBP>]$N<-=q$NJQ99!"8!:w$N=g
\e(B
170 \e$B=x$NJQ99$,2DG=!#
\e(B"
171 ;; "*The first dictionary to be searched.
172 ;;If non-nil, and this variable is used as a component of
173 ;;`skk-search-prog-list', the indicated dictionary is read into a
174 ;;buffer and searched.
175 ;;The keys must be sorted.
176 ;;Only the first entry in each key is checked; if several entries are
177 ;;present the second and following entries are ignored.
178 ;;By setting the value of `skk-search-prog-list' the dictionaries
179 ;;searched and the order of search can be changed."
180 :type '(choice file (const nil))
183 (defcustom skk-initial-search-jisyo nil
184 "*
\e$B%f!<%6!<<-=q$N8!:w$NA0$K8!:w$9$k<-=q!#
\e(B
185 \e$B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#
\e(B
186 Non-nil
\e$B$G!"$+$D
\e(B skk-search-prog-list
\e$B$NMWAG$NCf$K$3$NJQ?t$,;HMQ$5$l$F$$$l$P!"
\e(B
187 \e$B;XDj$5$l$?<-=q$r8!:w$N$?$a%P%C%U%!$KFI$_9~$_!"8!:w$r9T$J$&!#
\e(B
188 skk-search-prog-list
\e$B$NCM$r@_Dj$9$k$3$H$K$h$j!"8!:wBP>]$N<-=q$NJQ99!"8!:w$N=g
\e(B
189 \e$B=x$NJQ99$,2DG=!#
\e(B"
190 ;; "*This dictionary is searched before the user's personal dictionary.
191 ;;The keys must be sorted.
192 ;;If non-nil, and this variable is used as a component of
193 ;;`skk-search-prog-list', the indicated dictionary is read into a
194 ;;buffer and searched.
195 ;;By setting the value of `skk-search-prog-list' the dictionaries
196 ;;searched and the order of search can be changed."
197 :type '(choice file (const nil))
200 (defcustom skk-large-jisyo nil
201 "*
\e$B%f!<%6!<<-=q$N8!:w$N8e$K8!:w$9$k<-=q!#
\e(B
202 \e$B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#
\e(B
203 Non-nil
\e$B$G!"$+$D
\e(B skk-search-prog-list
\e$B$NMWAG$NCf$K$3$NJQ?t$,;HMQ$5$l$F$$$l$P!"
\e(B
204 \e$B;XDj$5$l$?<-=q$r8!:w$N$?$a%P%C%U%!$KFI$_9~$_!"8!:w$r9T$J$&!#
\e(B
205 skk-search-prog-list
\e$B$NCM$r@_Dj$9$k$3$H$K$h$j!"8!:wBP>]$N<-=q$NJQ99!"8!:w$N=g
\e(B
206 \e$B=x$NJQ99$,2DG=!#
\e(B"
207 :type '(choice file (const nil))
210 (defcustom skk-aux-large-jisyo nil
211 "*SKK
\e$B%5!<%P!<$G:G8e$K8!:w$9$k<-=q!#
\e(B
212 \e$B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#
\e(B
213 Non-nil
\e$B$G!"$+$D
\e(B skk-search-prog-list
\e$B$NMWAG$NCf$K$3$NJQ?t$,;HMQ$5$l$F$$$l$P!"
\e(B
214 SKK
\e$B%5!<%P!<$r;H$$8!:w$r9T$&!#
\e(B
215 SKK
\e$B%5!<%P!<$,
\e(B active
\e$B$G$J$1$l$P!";XDj$5$l$?<-=q$r%P%C%U%!$KFI$_9~$`!#
\e(B
216 skk-search-prog-list
\e$B$NCM$r@_Dj$9$k$3$H$K$h$j!"8!:wBP>]$N<-=q$NJQ99!"8!:w$N=g
\e(B
217 \e$B=x$NJQ99$,2DG=!#
\e(B
218 \e$B$3$NCM$r@_Dj$9$k$3$H$K$h$j!"
\e(Bskk-server.el
\e$B$,
\e(B autoload
\e$B$5$l$k!#
\e(B"
219 :type '(choice file (const nil))
222 (defcustom skk-search-prog-list
223 '((skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t)
224 (skk-search-jisyo-file skk-initial-search-jisyo 10000 t)
225 (skk-search-jisyo-file skk-jisyo 0 t)
226 ;; skk-auto.el
\e$B$r%m!<%I$9$k$H2<5-$NMWAG$,%W%i%9$5$l$k!#
\e(B
228 (skk-search-jisyo-file skk-large-jisyo 10000)
229 ;; skk-server.el
\e$B$r%m!<%I$9$k$H2<5-$NMWAG$,%W%i%9$5$l$k!#
\e(B
230 ;;(skk-search-server skk-aux-large-jisyo 10000)
231 ;; skk-server-host
\e$B$b$7$/$O
\e(B skk-servers-list
\e$B$r;XDj$9$k$H!"
\e(Bskk-server.el
232 ;;
\e$B$,
\e(B autoload
\e$B$5$l$k!#
\e(B
234 "*
\e$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#
\e(B
235 \e$BJQ49$7$?8uJd$rJV$9
\e(B S
\e$B<0$r%j%9%H$N7A$KI=5-$7$?$b$N!#
\e(B
236 skk-search
\e$B4X?t$,
\e(B skk-search-prog-list
\e$B$N
\e(B car
\e$B$+$i8eJ}8~$X=gHV$K
\e(B S
\e$B<0$NI>2A$r
\e(B
237 \e$B9T$$JQ49$r9T$J$&!#
\e(B"
239 (list (function :tag "Search function")
240 (choice :tag "Dictionary" file (const nil))
241 (choice :tag "Minimum region size to be binary-searched"
243 (choice :tag "Quietly reading dictionary to Emacs buffer"
244 (const t) (const nil))))
247 (defcustom skk-jisyo (convert-standard-filename "~/.skk-jisyo")
248 "*SKK
\e$B$N%f!<%6!<<-=q!#
\e(B"
252 (defcustom skk-backup-jisyo (convert-standard-filename "~/.skk-jisyo.BAK")
253 "*SKK
\e$B$N%f!<%6!<<-=q$N%P%C%/%"%C%W%U%!%$%k!#
\e(B"
257 (defcustom skk-jisyo-code nil
258 "*Non-nil
\e$B$G$"$l$P!"$=$NCM$G<-=q%P%C%U%!$N4A;z%3!<%I$r@_Dj$9$k!#
\e(B
259 Mule
\e$B$G$O!"
\e(B*euc-japan*, *sjis*, *junet*
\e$B!#
\e(B
260 \e$B$^$?!"
\e(B\"euc\", \"ujis\", \"sjis\", \"jis\"
\e$B$J$I$NJ8;zNs$K$h$C$F$b;XDj$,2DG=!#
\e(B"
261 :type '(choice symbol string)
264 (defcustom skk-keep-record t
265 "*Non-nil
\e$B$G$"$l$P!"JQ49$K4X$9$k5-O?$r
\e(B skk-record-file
\e$B$K<h$k!#
\e(B"
269 (defcustom skk-record-file (convert-standard-filename "~/.skk-record")
270 "*
\e$B%f!<%6!<<-=q$NE}7W$r<h$k%U%!%$%k!#
\e(B
271 \e$B<-=q%;!<%V$N;~9o!"C18l$NEPO??t!"3NDj$r9T$C$?2s?t!"3NDjN(!"A4BN$N8l?t$N
\e(B
272 \e$B>pJs$r<}$a$k!#
\e(B"
276 (defcustom skk-kakutei-key "\C-j"
277 "*
\e$B4A;zJQ49$N3NDjF0:n$r9T$&%-!<!#
\e(B"
281 (defcustom skk-previous-candidate-char ?x
282 "*skk-previous-candidate
\e$B$r3dEv$F$?%-!<%-%c%i%/%?!#
\e(B"
286 (defcustom skk-try-completion-char ?\011 ; TAB
287 "*
\e$B8+=P$78l$NJd40F0:n$r9T$J$&%-!<%-%c%i%/%?!#
\e(B"
291 (defcustom skk-next-completion-char ?.
292 "*
\e$B8+=P$78l$NJd40F0:n$G!"<!$N8uJd$r=PNO$9$k%-!<%-%c%i%/%?!#
\e(B"
296 (defcustom skk-previous-completion-char ?,
297 "*
\e$B8+=P$78l$NJd40F0:n$G!"A0$N8uJd$r=PNO$9$k%-!<%-%c%i%/%?!#
\e(B"
301 (defcustom skk-start-henkan-char ?\040 ; SPC
302 "*
\e$B4A;zJQ49$r3+;O$9$k%-!<%-%c%i%/%?!#
\e(B"
306 (defcustom skk-start-henkan-with-completion-char ?\240 ; M-SPC
307 "*
\e$B8+=P$78l$rJd40$7$J$,$i"'%b!<%I$KF~$k%-!<%-%c%i%/%?!#
\e(B"
311 (defcustom skk-backward-and-set-henkan-point-char ?\321 ; M-Q
312 "*
\e$B%]%$%s%H$rLa$7$F"&%b!<%I$KF~$k%-!<%-%c%i%/%?!#
\e(B"
316 (defcustom skk-use-viper nil
317 "*Non-nil
\e$B$G$"$l$P!"
\e(BVIPER
\e$B$KBP1~$9$k!#
\e(B"
321 (defcustom skk-henkan-okuri-strictly nil
322 "*Non-nil
\e$B$G$"$l$P!"8+=P$78l$HAw$j2>L>$,0lCW$7$?$H$-$@$18uJd$H$7$F=PNO$9$k!#
\e(B
323 \e$BNc$($P!"2<5-$N$h$&$J<-=q%(%s%H%j$,!"
\e(Bskk-jisyo \(
\e$B%W%i%$%Y!<%H<-=q
\e(B\)
\e$B$K$"$C$?>l9g$K
\e(B
325 \"
\e$B$*$*
\e(Bk /
\e$BBg
\e(B/
\e$BB?
\e(B/[
\e$B$/
\e(B/
\e$BB?
\e(B/]/[
\e$B$-
\e(B/
\e$BBg
\e(B/]/\"
327 \"
\e$B"&$*$*
\e(B*
\e$B$/
\e(B\"
\e$B$rJQ49$7$?$H$-!"
\e(B\"
\e$BB?$/
\e(B\"
\e$B$N$_$r=PNO$7!"
\e(B\"
\e$BBg$/
\e(B\"
\e$B$r=PNO$7$J$$!#
\e(B
329 SKK-JISYO.[SML]
\e$B$NAw$j2>L>%(%s%H%j$O>e5-$N7A<0$K$J$C$F$$$J$$$N$G!"
\e(Bskk-jisyo
\e$B$N
\e(B
330 \e$BAw$j$"$j$N<-=q%(%s%H%j$,$3$N7A<0$N$b$N$r$"$^$j4^$s$G$$$J$$>l9g$O!"$3$N%*%W%7%g
\e(B
331 \e$B%s$r
\e(B on
\e$B$K$9$k$3$H$G!"$9$0$KC18lEPO?$KF~$C$F$7$^$&$N$GCm0U$9$k$3$H!#
\e(B
333 skk-process-okuri-early
\e$B$NCM$,
\e(B nil
\e$B$J$i$P>e5-$N7A<0$G
\e(B skk-jisyo
\e$B$,:n$i$l$k!#
\e(B
335 Emacs 19
\e$B%Y!<%9$N
\e(B Mule
\e$B$J$i$P!"2<5-$N%U%)!<%`$rI>2A$9$k$3$H$G!"C18lEPO?$KF~$C
\e(B
336 \e$B$?$H$-$@$10l;~E*$K$3$N%*%W%7%g%s$r
\e(B nil
\e$B$K$9$k$3$H$,$G$-$k!#
\e(B
338 \(add-hook 'minibuffer-setup-hook
341 \(if \(and \(boundp 'skk-henkan-okuri-strictly\)
342 skk-henkan-okuri-strictly
343 \(not \(eq last-command 'skk-purge-from-jisyo\)\) \)
345 \(setq skk-henkan-okuri-strictly nil\)
346 \(put 'skk-henkan-okuri-strictly 'temporary-nil t\) \)\)\)\)\)
348 \(add-hook 'minibuffer-exit-hook
351 \(if \(get 'skk-henkan-okuri-strictly 'temporary-nil\)
353 \(put 'skk-henkan-okuri-strictly 'temporary-nil nil\)
354 \(setq skk-henkan-okuri-strictly t\) \)\)\)\)\)
356 \e$B$3$N%*%W%7%g%sMxMQ;~$O!"
\e(Bskk-process-okuri-early
\e$B$NCM$O
\e(B nil
\e$B$G$J$1$l$P$J$i$J$$
\e(B
357 \(
\e$B%a%K%e!<%P!<$rMxMQ$7$F%+%9%?%^%$%:$7$?>l9g$O<+F0E*$KD4@0$5$l$k
\e(B\)
\e$B!#
\e(B"
361 (defcustom skk-henkan-strict-okuri-precedence nil
362 "*Non-nil
\e$B$G$"$l$P!"8+=P$78l$HAw$j2>L>$,0lCW$7$?8uJd$rM%@h$7$FI=<($9$k!#
\e(B
363 \e$BNc$($P!"2<5-$N$h$&$J<-=q%(%s%H%j$,!"
\e(Bskk-jisyo \(
\e$B%W%i%$%Y!<%H<-=q
\e(B\)
\e$B$K$"$C$?>l9g$K
\e(B
365 \"
\e$B$*$*
\e(Bk /
\e$BBg
\e(B/
\e$BB?
\e(B/[
\e$B$/
\e(B/
\e$BB?
\e(B/]/[
\e$B$-
\e(B/
\e$BBg
\e(B/]/\"
367 \"
\e$B"&$*$*
\e(B*
\e$B$/
\e(B\"
\e$B$rJQ49$7$?$H$-!"$^$:
\e(B\"
\e$BB?$/
\e(B\"
\e$B$r=PNO$7!"
\e(B
368 \e$B<!$K
\e(B \"
\e$BBg$/
\e(B\"
\e$B$r=PNO$9$k!#
\e(B
370 \"
\e$BBg$/
\e(B\"
\e$B$J$I$N8uJd$O$&$C$H$&$7$$$,!"$9$0$KC18lEPO?$K$O$$$C$F$7$^$&$N$b
\e(B
371 \e$B7y$J$R$H$K$*$9$9$a!#
\e(B
373 \e$B$3$N%*%W%7%g%sMxMQ;~$O!"
\e(Bskk-process-okuri-early
\e$B$NCM$O
\e(B nil
\e$B$G$J$1$l$P$J$i$J$$!#
\e(B
374 \e$B$^$?
\e(B skk-henkan-okuri-strictly
\e$B$,
\e(B non-nil
\e$B$N$H$-$O!"$3$NJQ?t$OL5;k$5$l$k!#
\e(B
375 \(
\e$B%a%K%e!<%P!<$rMxMQ$7$F%+%9%?%^%$%:$7$?>l9g$O<+F0E*$KD4@0$5$l$k
\e(B\)
\e$B!#
\e(B"
379 (defcustom skk-auto-okuri-process nil
380 "*Non-nil
\e$B$G$"$l$P!"Aw$j2>L>ItJ,$r<+F0G'<1$7$FJQ49$r9T$&!#
\e(B
383 \"Uresii (\"UreSii\"
\e$B$G$O$J$/
\e(B) ->
\e$B4r$7$$
\e(B\"
385 \e$B$N$h$&$KJQ49$5$l$k!#C"$7!"
\e(Bskk-jisyo
\e$B<-=q
\e(B \(
\e$B%W%i%$%Y!<%H<-=q
\e(B\)
\e$B$,!"
\e(B
387 \"
\e$B$&$l
\e(Bs /
\e$B4r
\e(B/[
\e$B$7
\e(B/
\e$B4r
\e(B/]/\"
389 \e$B$N$h$&$J7A<0$K$J$C$F$$$k$3$H$,I,MW$G$"$k
\e(B \(SKK-JISYO.[SML]
\e$B$O$3$N7A<0$KBP1~$7
\e(B
390 \e$B$F$$$J$$$N$G!"
\e(Bskk-jisyo
\e$B$K$3$N%(%s%H%j$,$J$1$l$P$J$i$J$$
\e(B\)
\e$B!#
\e(B
392 \e$B$3$N%*%W%7%g%sMxMQ;~$O!"
\e(Bskk-process-okuri-early
\e$B$NCM$O
\e(B nil
\e$B$G$J$1$l$P$J$i$J$$
\e(B
393 \(
\e$B%a%K%e!<%P!<$rMxMQ$7$F%+%9%?%^%$%:$7$?>l9g$O<+F0E*$KD4@0$5$l$k
\e(B\)
\e$B!#
\e(B"
397 (defcustom skk-process-okuri-early nil
398 "*Non-nil
\e$B$G$"$l$P!"Aw$j2>L>$N%m!<%^;z%W%l%U%#%C%/%9$NF~NO;~E@$GJQ49$r3+;O$9$k!#
\e(B
401 \"UgoK ->
\e$B"'F0
\e(Bk\"
\e$B!#
\e(B
403 \e$BAw$j2>L>$,J,$i$J$$$^$^JQ49$7$F$$$k$3$H$K$J$k$N$G!"
\e(Bskk-jisyo
\e$B$,Aw$j2>L>$KBP1~$7
\e(B
404 \e$B$?7A$K@.D9$7$J$$!#$D$^$j
\e(B
406 \"
\e$B$&$4
\e(Bk /
\e$BF0
\e(B/\"
408 \e$B$N$h$&$J7ABV$N$^$^$H$J$k!#$?$@$7!"4{$K
\e(B
410 \"
\e$B$&$4
\e(Bk /
\e$BF0
\e(B/[
\e$B$/
\e(B/
\e$BF0
\e(B/]/[
\e$B$+
\e(B/
\e$BF0
\e(B/]/[
\e$B$1
\e(B/
\e$BF0
\e(B/]/[
\e$B$-
\e(B/
\e$BF0
\e(B/]/[
\e$B$3
\e(B/
\e$BF0
\e(B/]/\"
412 \e$B$N$h$&$J%(%s%H%j$,
\e(B skk-jisyo
\e$B$K$"$l$P!"$=$l$rGK2u$7$J$$!#
\e(B
414 nil
\e$B$G$"$l$P!"Aw$j2>L>$NF~NO$,40N;$7$?;~E@$GJQ49$,3+;O$9$k!#Nc$($P!"
\e(B
416 \"UgoK ->
\e$B"&$&$4
\e(B*k\", \"UgoKu ->
\e$B"'F0$/
\e(B\"
418 \e$B$3$N%*%W%7%g%s$r
\e(B on
\e$B$K$7$F
\e(B skk-mode
\e$B$r5/F0$9$k$H!"N>N)$G$-$J$$%*%W%7%g%s$G$"$k
\e(B
419 skk-kakutei-early, skk-auto-okuri-process, skk-henkan-okuri-strictly
\e$B$O
\e(B nil
\e$B$K
\e(B
420 \e$B%;%C%H$5$l$k!#
\e(B"
424 (defcustom skk-egg-like-newline nil
425 "*Non-nil
\e$B$G$"$l$P!""'%b!<%I$G2~9T$r%?%$%W$7$F$b3NDj$9$k$N$_$G2~9T$7$J$$!#
\e(B"
429 (defcustom skk-kakutei-early t
430 "*Non-nil
\e$B$G$"$l$P
\e(B skk-insert
\e$B$,8F$P$l$?$H$-$K8=:_$N8uJd$r3NDj$9$k!#
\e(B
433 \"
\e$B"&$+$/$F$$
\e(B ->
\e$B"'3NDj
\e(B ->
\e$B3NDj
\e(Bs ->
\e$B3NDj$9
\e(B\"
435 \e$B$N$h$&$KJQ498e!"!V$9!W$N
\e(B prefix
\e$B$G$"$k
\e(B \"s\"
\e$B$rF~NO$7$?;~E@$G3NDj$9$k!#
\e(B
436 nil
\e$B$G$"$l$P!"Nc$($P
\e(B
438 \"
\e$B"&$+$/$F$$
\e(B ->
\e$B"'3NDj
\e(B ->
\e$B"'3NDj
\e(Bs ->
\e$B"'3NDj$9$k
\e(B ->
\e$B3NDj$9$k!#
\e(B\"
440 \e$B$N$h$&$K
\e(B skk-kakutei
\e$B$rD>@\!"4V@\$K%3!<%k$9$k$^$G
\e(B \(
\e$B6gFIE@$rF~NO$7$?$j!"?7$?$J
\e(B
441 \e$B"&%b!<%I$KF~$C$?$j$9$k$H4V@\E*$K
\e(B skk-kakutei
\e$B$r%3!<%k$9$k
\e(B\)
\e$B$O!"3NDj$7$J$$$N$G!"
\e(B
442 \e$B$=$N4V$O!"JQ498uJd$rA*$S$J$*$9$3$H$J$I$,2DG=!#
\e(B
444 \e$B$3$N%*%W%7%g%sMxMQ;~$O!"
\e(Bskk-process-okuri-early
\e$B$NCM$O
\e(B nil
\e$B$G$J$1$l$P$J$i$J$$
\e(B
445 \(
\e$B%a%K%e!<%P!<$rMxMQ$7$F%+%9%?%^%$%:$7$?>l9g$O<+F0E*$KD4@0$5$l$k
\e(B\)
\e$B!#
\e(B"
449 (defcustom skk-delete-implies-kakutei t
450 "*Non-nil
\e$B$G$"$l$P!""'%b!<%I$G
\e(B BS
\e$B$r2!$9$H!"A0$N0lJ8;z$r:o=|$73NDj$9$k!#
\e(B
451 nil
\e$B$G$"$l$P!"0l$DA0$N8uJd$rI=<($9$k!#
\e(B"
455 (defcustom skk-allow-spaces-newlines-and-tabs t
456 "*Non-nil
\e$B$G$"$l$P!"8+=P$78l$NCf$K%9%Z!<%9!"%?%V!"2~9T$,$"$C$F$b$=$l$r<h$j=|$$$FJQ49$9$k$3$H$,2DG=!#
\e(B
457 \e$BNc$($P!"2<5-$N$h$&$K
\e(B
\e$BCf$K2~9T$,F~$C$F$$$F$bJQ49$,2DG=$G$"$k!#
\e(B
463 \e$B$3$NCM$,
\e(B nil
\e$B$G$"$l$P!":G=i$N%9%Z!<%9$G8+=P$78l$r@Z$j5M$a$F$7$^$$!"0J9_$N%9%Z!<
\e(B
464 \e$B%9!"%?%V!"2~9T$OL5;k$5$l$k!#
\e(B
465 \e$B$3$NCM$O!"
\e(Bskk-start-henkan, skk-latin-henkan, skk-katakana-henkan,
466 skk-hiragana-henkan, skk-jisx0208-latin-henkan
\e$B5Z$S
\e(B
467 skk-backward-and-set-henkan-point
\e$B$NF0:n$K1F6A$9$k!#
\e(B"
471 (defcustom skk-convert-okurigana-into-katakana nil
472 "*Non-nil
\e$B$G$"$l$P!"%+%?%+%J%b!<%I$GJQ49$7$?$H$-$KAw$j2>L>$b%+%?%+%J$KJQ49$9$k!#
\e(B"
476 (defcustom skk-delete-okuri-when-quit nil
477 "*Non-nil
\e$B$G$"$l$P!"Aw$j$"$j$NJQ49Cf$K
\e(B \"C-g\"
\e$B$r2!$9$HAw$j2>L>$r>C$7"&%b!<%I$KF~$k!#
\e(B
480 \"
\e$B"&$J
\e(B*
\e$B$/
\e(B ->
\e$B"'5c$/
\e(B -> \"C-g\" ->
\e$B"&$J
\e(B\"
482 nil
\e$B$G$"$l$P!"Aw$j2>L>$r4^$a$?8+=P$78l$r$=$N$^$^;D$7!""#%b!<%I$KF~$k!#Nc$($P!"
\e(B
484 \"
\e$B"&$J
\e(B*
\e$B$/
\e(B ->
\e$B"'5c$/
\e(B -> \"C-g\" ->
\e$B$J$/
\e(B\""
488 (defcustom skk-henkan-show-candidates-keys '(?a ?s ?d ?f ?j ?k ?l)
489 "*
\e$B%a%K%e!<7A<0$G8uJd$rA*Br$9$k$H$-$NA*Br%-!<$N%j%9%H!#
\e(B
490 \"x\", \" \"
\e$B5Z$S
\e(B \"C-g\"
\e$B0J30$N
\e(B 7
\e$B$D$N%-!<
\e(B (char type)
\e$B$r4^$`I,MW$,$"
\e(B
491 \e$B$k!#
\e(B\"x\", \" \"
\e$B5Z$S
\e(B \"C-g\"
\e$B$O8uJdA*Br;~$K$=$l$>$lFCJL$J;E;v$K3d$jEv
\e(B
492 \e$B$F$i$l$F$$$k$N$G!"$3$N%j%9%H$NCf$K$O4^$a$J$$$3$H!#
\e(B"
493 :type '(repeat character)
496 (defcustom skk-status-indicator 'minor-mode
497 "*SKK
\e$B$N>uBV$r%b!<%I9T$N$I$3$KI=<($9$k$+$r7h$a$k!#
\e(B
498 left
\e$B$G$"$l$P:8C<$KI=<($9$k!#
\e(B
499 \e$B$5$b$J$1$l$P%^%$%J!<%b!<%I$H$7$F$NI=<(K!$r<h$k!#
\e(B"
500 :type '(choice (const minor-mode)
504 (defcustom skk-latin-mode-string " SKK"
505 "*SKK
\e$B$,
\e(B latin (ascii)
\e$B%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#
\e(B"
509 (defcustom skk-hiragana-mode-string "
\e$B$+$J
\e(B"
510 "*
\e$B$R$i$,$J%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#
\e(B"
514 (defcustom skk-katakana-mode-string "
\e$B%+%J
\e(B"
515 "*
\e$B%+%?%+%J%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#
\e(B"
519 (defcustom skk-jisx0208-latin-mode-string "
\e$BA41Q
\e(B"
520 "*
\e$BA41Q%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#
\e(B"
524 (defcustom skk-abbrev-mode-string " a
\e$B$"
\e(B"
525 "*SKK abbrev
\e$B%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#
\e(B"
529 (defcustom skk-echo t
530 "*Non-nil
\e$B$G$"$l$P!"2>L>J8;z$N%W%l%U%#%C%/%9$rI=<($9$k!#
\e(B"
534 (defcustom skk-use-numeric-conversion t
535 "*Non-nil
\e$B$G$"$l$P!"?tCMJQ49$r9T$&!#
\e(B"
539 (defcustom skk-rom-kana-base-rule-list
540 '(("a" nil ("
\e$B%"
\e(B" . "
\e$B$"
\e(B"))
541 ("bb" "b" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
542 ("ba" nil ("
\e$B%P
\e(B" . "
\e$B$P
\e(B"))
543 ("be" nil ("
\e$B%Y
\e(B" . "
\e$B$Y
\e(B"))
544 ("bi" nil ("
\e$B%S
\e(B" . "
\e$B$S
\e(B"))
545 ("bo" nil ("
\e$B%\
\e(B" . "
\e$B$\
\e(B"))
546 ("bu" nil ("
\e$B%V
\e(B" . "
\e$B$V
\e(B"))
547 ("bya" nil ("
\e$B%S%c
\e(B" . "
\e$B$S$c
\e(B"))
548 ("bye" nil ("
\e$B%S%'
\e(B" . "
\e$B$S$'
\e(B"))
549 ("byi" nil ("
\e$B%S%#
\e(B" . "
\e$B$S$#
\e(B"))
550 ("byo" nil ("
\e$B%S%g
\e(B" . "
\e$B$S$g
\e(B"))
551 ("byu" nil ("
\e$B%S%e
\e(B" . "
\e$B$S$e
\e(B"))
552 ("cc" "c" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
553 ("cha" nil ("
\e$B%A%c
\e(B" . "
\e$B$A$c
\e(B"))
554 ("che" nil ("
\e$B%A%'
\e(B" . "
\e$B$A$'
\e(B"))
555 ("chi" nil ("
\e$B%A
\e(B" . "
\e$B$A
\e(B"))
556 ("cho" nil ("
\e$B%A%g
\e(B" . "
\e$B$A$g
\e(B"))
557 ("chu" nil ("
\e$B%A%e
\e(B" . "
\e$B$A$e
\e(B"))
558 ("cya" nil ("
\e$B%A%c
\e(B" . "
\e$B$A$c
\e(B"))
559 ("cye" nil ("
\e$B%A%'
\e(B" . "
\e$B$A$'
\e(B"))
560 ("cyi" nil ("
\e$B%A%#
\e(B" . "
\e$B$A$#
\e(B"))
561 ("cyo" nil ("
\e$B%A%g
\e(B" . "
\e$B$A$g
\e(B"))
562 ("cyu" nil ("
\e$B%A%e
\e(B" . "
\e$B$A$e
\e(B"))
563 ("dd" "d" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
564 ("da" nil ("
\e$B%@
\e(B" . "
\e$B$@
\e(B"))
565 ("de" nil ("
\e$B%G
\e(B" . "
\e$B$G
\e(B"))
566 ("dha" nil ("
\e$B%G%c
\e(B" . "
\e$B$G$c
\e(B"))
567 ("dhe" nil ("
\e$B%G%'
\e(B" . "
\e$B$G$'
\e(B"))
568 ("dhi" nil ("
\e$B%G%#
\e(B" . "
\e$B$G$#
\e(B"))
569 ("dho" nil ("
\e$B%G%g
\e(B" . "
\e$B$G$g
\e(B"))
570 ("dhu" nil ("
\e$B%G%e
\e(B" . "
\e$B$G$e
\e(B"))
571 ("di" nil ("
\e$B%B
\e(B" . "
\e$B$B
\e(B"))
572 ("do" nil ("
\e$B%I
\e(B" . "
\e$B$I
\e(B"))
573 ("du" nil ("
\e$B%E
\e(B" . "
\e$B$E
\e(B"))
574 ("dya" nil ("
\e$B%B%c
\e(B" . "
\e$B$B$c
\e(B"))
575 ("dye" nil ("
\e$B%B%'
\e(B" . "
\e$B$B$'
\e(B"))
576 ("dyi" nil ("
\e$B%B%#
\e(B" . "
\e$B$B$#
\e(B"))
577 ("dyo" nil ("
\e$B%B%g
\e(B" . "
\e$B$B$g
\e(B"))
578 ("dyu" nil ("
\e$B%B%e
\e(B" . "
\e$B$B$e
\e(B"))
579 ("e" nil ("
\e$B%(
\e(B" . "
\e$B$(
\e(B"))
580 ("ff" "f" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
581 ("fa" nil ("
\e$B%U%!
\e(B" . "
\e$B$U$!
\e(B"))
582 ("fe" nil ("
\e$B%U%'
\e(B" . "
\e$B$U$'
\e(B"))
583 ("fi" nil ("
\e$B%U%#
\e(B" . "
\e$B$U$#
\e(B"))
584 ("fo" nil ("
\e$B%U%)
\e(B" . "
\e$B$U$)
\e(B"))
585 ("fu" nil ("
\e$B%U
\e(B" . "
\e$B$U
\e(B"))
586 ("fya" nil ("
\e$B%U%c
\e(B" . "
\e$B$U$c
\e(B"))
587 ("fye" nil ("
\e$B%U%'
\e(B" . "
\e$B$U$'
\e(B"))
588 ("fyi" nil ("
\e$B%U%#
\e(B" . "
\e$B$U$#
\e(B"))
589 ("fyo" nil ("
\e$B%U%g
\e(B" . "
\e$B$U$g
\e(B"))
590 ("fyu" nil ("
\e$B%U%e
\e(B" . "
\e$B$U$e
\e(B"))
591 ("gg" "g" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
592 ("ga" nil ("
\e$B%,
\e(B" . "
\e$B$,
\e(B"))
593 ("ge" nil ("
\e$B%2
\e(B" . "
\e$B$2
\e(B"))
594 ("gi" nil ("
\e$B%.
\e(B" . "
\e$B$.
\e(B"))
595 ("go" nil ("
\e$B%4
\e(B" . "
\e$B$4
\e(B"))
596 ("gu" nil ("
\e$B%0
\e(B" . "
\e$B$0
\e(B"))
597 ("gya" nil ("
\e$B%.%c
\e(B" . "
\e$B$.$c
\e(B"))
598 ("gye" nil ("
\e$B%.%'
\e(B" . "
\e$B$.$'
\e(B"))
599 ("gyi" nil ("
\e$B%.%#
\e(B" . "
\e$B$.$#
\e(B"))
600 ("gyo" nil ("
\e$B%.%g
\e(B" . "
\e$B$.$g
\e(B"))
601 ("gyu" nil ("
\e$B%.%e
\e(B" . "
\e$B$.$e
\e(B"))
602 ;;("h" "" ("
\e$B%*
\e(B" . "
\e$B$*
\e(B"))
603 ("ha" nil ("
\e$B%O
\e(B" . "
\e$B$O
\e(B"))
604 ("he" nil ("
\e$B%X
\e(B" . "
\e$B$X
\e(B"))
605 ("hi" nil ("
\e$B%R
\e(B" . "
\e$B$R
\e(B"))
606 ("ho" nil ("
\e$B%[
\e(B" . "
\e$B$[
\e(B"))
607 ("hu" nil ("
\e$B%U
\e(B" . "
\e$B$U
\e(B"))
608 ("hya" nil ("
\e$B%R%c
\e(B" . "
\e$B$R$c
\e(B"))
609 ("hye" nil ("
\e$B%R%'
\e(B" . "
\e$B$R$'
\e(B"))
610 ("hyi" nil ("
\e$B%R%#
\e(B" . "
\e$B$R$#
\e(B"))
611 ("hyo" nil ("
\e$B%R%g
\e(B" . "
\e$B$R$g
\e(B"))
612 ("hyu" nil ("
\e$B%R%e
\e(B" . "
\e$B$R$e
\e(B"))
613 ("i" nil ("
\e$B%$
\e(B" . "
\e$B$$
\e(B"))
614 ("jj" "j" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
615 ("ja" nil ("
\e$B%8%c
\e(B" . "
\e$B$8$c
\e(B"))
616 ("je" nil ("
\e$B%8%'
\e(B" . "
\e$B$8$'
\e(B"))
617 ("ji" nil ("
\e$B%8
\e(B" . "
\e$B$8
\e(B"))
618 ("jo" nil ("
\e$B%8%g
\e(B" . "
\e$B$8$g
\e(B"))
619 ("ju" nil ("
\e$B%8%e
\e(B" . "
\e$B$8$e
\e(B"))
620 ("jya" nil ("
\e$B%8%c
\e(B" . "
\e$B$8$c
\e(B"))
621 ("jye" nil ("
\e$B%8%'
\e(B" . "
\e$B$8$'
\e(B"))
622 ("jyi" nil ("
\e$B%8%#
\e(B" . "
\e$B$8$#
\e(B"))
623 ("jyo" nil ("
\e$B%8%g
\e(B" . "
\e$B$8$g
\e(B"))
624 ("jyu" nil ("
\e$B%8%e
\e(B" . "
\e$B$8$e
\e(B"))
625 ("kk" "k" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
626 ("ka" nil ("
\e$B%+
\e(B" . "
\e$B$+
\e(B"))
627 ("ke" nil ("
\e$B%1
\e(B" . "
\e$B$1
\e(B"))
628 ("ki" nil ("
\e$B%-
\e(B" . "
\e$B$-
\e(B"))
629 ("ko" nil ("
\e$B%3
\e(B" . "
\e$B$3
\e(B"))
630 ("ku" nil ("
\e$B%/
\e(B" . "
\e$B$/
\e(B"))
631 ("kya" nil ("
\e$B%-%c
\e(B" . "
\e$B$-$c
\e(B"))
632 ("kye" nil ("
\e$B%-%'
\e(B" . "
\e$B$-$'
\e(B"))
633 ("kyi" nil ("
\e$B%-%#
\e(B" . "
\e$B$-$#
\e(B"))
634 ("kyo" nil ("
\e$B%-%g
\e(B" . "
\e$B$-$g
\e(B"))
635 ("kyu" nil ("
\e$B%-%e
\e(B" . "
\e$B$-$e
\e(B"))
636 ("ma" nil ("
\e$B%^
\e(B" . "
\e$B$^
\e(B"))
637 ("me" nil ("
\e$B%a
\e(B" . "
\e$B$a
\e(B"))
638 ("mi" nil ("
\e$B%_
\e(B" . "
\e$B$_
\e(B"))
639 ("mo" nil ("
\e$B%b
\e(B" . "
\e$B$b
\e(B"))
640 ("mu" nil ("
\e$B%`
\e(B" . "
\e$B$`
\e(B"))
641 ("mya" nil ("
\e$B%_%c
\e(B" . "
\e$B$_$c
\e(B"))
642 ("mye" nil ("
\e$B%_%'
\e(B" . "
\e$B$_$'
\e(B"))
643 ("myi" nil ("
\e$B%_%#
\e(B" . "
\e$B$_$#
\e(B"))
644 ("myo" nil ("
\e$B%_%g
\e(B" . "
\e$B$_$g
\e(B"))
645 ("myu" nil ("
\e$B%_%e
\e(B" . "
\e$B$_$e
\e(B"))
646 ("n" nil ("
\e$B%s
\e(B" . "
\e$B$s
\e(B"))
647 ("n'" nil ("
\e$B%s
\e(B" . "
\e$B$s
\e(B"))
648 ("na" nil ("
\e$B%J
\e(B" . "
\e$B$J
\e(B"))
649 ("ne" nil ("
\e$B%M
\e(B" . "
\e$B$M
\e(B"))
650 ("ni" nil ("
\e$B%K
\e(B" . "
\e$B$K
\e(B"))
651 ("nn" nil ("
\e$B%s
\e(B" . "
\e$B$s
\e(B"))
652 ("no" nil ("
\e$B%N
\e(B" . "
\e$B$N
\e(B"))
653 ("nu" nil ("
\e$B%L
\e(B" . "
\e$B$L
\e(B"))
654 ("nya" nil ("
\e$B%K%c
\e(B" . "
\e$B$K$c
\e(B"))
655 ("nye" nil ("
\e$B%K%'
\e(B" . "
\e$B$K$'
\e(B"))
656 ("nyi" nil ("
\e$B%K%#
\e(B" . "
\e$B$K$#
\e(B"))
657 ("nyo" nil ("
\e$B%K%g
\e(B" . "
\e$B$K$g
\e(B"))
658 ("nyu" nil ("
\e$B%K%e
\e(B" . "
\e$B$K$e
\e(B"))
659 ("o" nil ("
\e$B%*
\e(B" . "
\e$B$*
\e(B"))
660 ("pp" "p" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
661 ("pa" nil ("
\e$B%Q
\e(B" . "
\e$B$Q
\e(B"))
662 ("pe" nil ("
\e$B%Z
\e(B" . "
\e$B$Z
\e(B"))
663 ("pi" nil ("
\e$B%T
\e(B" . "
\e$B$T
\e(B"))
664 ("po" nil ("
\e$B%]
\e(B" . "
\e$B$]
\e(B"))
665 ("pu" nil ("
\e$B%W
\e(B" . "
\e$B$W
\e(B"))
666 ("pya" nil ("
\e$B%T%c
\e(B" . "
\e$B$T$c
\e(B"))
667 ("pye" nil ("
\e$B%T%'
\e(B" . "
\e$B$T$'
\e(B"))
668 ("pyi" nil ("
\e$B%T%#
\e(B" . "
\e$B$T$#
\e(B"))
669 ("pyo" nil ("
\e$B%T%g
\e(B" . "
\e$B$T$g
\e(B"))
670 ("pyu" nil ("
\e$B%T%e
\e(B" . "
\e$B$T$e
\e(B"))
671 ("rr" "r" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
672 ("ra" nil ("
\e$B%i
\e(B" . "
\e$B$i
\e(B"))
673 ("re" nil ("
\e$B%l
\e(B" . "
\e$B$l
\e(B"))
674 ("ri" nil ("
\e$B%j
\e(B" . "
\e$B$j
\e(B"))
675 ("ro" nil ("
\e$B%m
\e(B" . "
\e$B$m
\e(B"))
676 ("ru" nil ("
\e$B%k
\e(B" . "
\e$B$k
\e(B"))
677 ("rya" nil ("
\e$B%j%c
\e(B" . "
\e$B$j$c
\e(B"))
678 ("rye" nil ("
\e$B%j%'
\e(B" . "
\e$B$j$'
\e(B"))
679 ("ryi" nil ("
\e$B%j%#
\e(B" . "
\e$B$j$#
\e(B"))
680 ("ryo" nil ("
\e$B%j%g
\e(B" . "
\e$B$j$g
\e(B"))
681 ("ryu" nil ("
\e$B%j%e
\e(B" . "
\e$B$j$e
\e(B"))
682 ("ss" "s" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
683 ("sa" nil ("
\e$B%5
\e(B" . "
\e$B$5
\e(B"))
684 ("se" nil ("
\e$B%;
\e(B" . "
\e$B$;
\e(B"))
685 ("sha" nil ("
\e$B%7%c
\e(B" . "
\e$B$7$c
\e(B"))
686 ("she" nil ("
\e$B%7%'
\e(B" . "
\e$B$7$'
\e(B"))
687 ("shi" nil ("
\e$B%7
\e(B" . "
\e$B$7
\e(B"))
688 ("sho" nil ("
\e$B%7%g
\e(B" . "
\e$B$7$g
\e(B"))
689 ("shu" nil ("
\e$B%7%e
\e(B" . "
\e$B$7$e
\e(B"))
690 ("si" nil ("
\e$B%7
\e(B" . "
\e$B$7
\e(B"))
691 ("so" nil ("
\e$B%=
\e(B" . "
\e$B$=
\e(B"))
692 ("su" nil ("
\e$B%9
\e(B" . "
\e$B$9
\e(B"))
693 ("sya" nil ("
\e$B%7%c
\e(B" . "
\e$B$7$c
\e(B"))
694 ("sye" nil ("
\e$B%7%'
\e(B" . "
\e$B$7$'
\e(B"))
695 ("syi" nil ("
\e$B%7%#
\e(B" . "
\e$B$7$#
\e(B"))
696 ("syo" nil ("
\e$B%7%g
\e(B" . "
\e$B$7$g
\e(B"))
697 ("syu" nil ("
\e$B%7%e
\e(B" . "
\e$B$7$e
\e(B"))
698 ("tt" "t" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
699 ("ta" nil ("
\e$B%?
\e(B" . "
\e$B$?
\e(B"))
700 ("te" nil ("
\e$B%F
\e(B" . "
\e$B$F
\e(B"))
701 ("tha" nil ("
\e$B%F%!
\e(B" . "
\e$B$F$!
\e(B"))
702 ("the" nil ("
\e$B%F%'
\e(B" . "
\e$B$F$'
\e(B"))
703 ("thi" nil ("
\e$B%F%#
\e(B" . "
\e$B$F$#
\e(B"))
704 ("tho" nil ("
\e$B%F%g
\e(B" . "
\e$B$F$g
\e(B"))
705 ("thu" nil ("
\e$B%F%e
\e(B" . "
\e$B$F$e
\e(B"))
706 ("ti" nil ("
\e$B%A
\e(B" . "
\e$B$A
\e(B"))
707 ("to" nil ("
\e$B%H
\e(B" . "
\e$B$H
\e(B"))
708 ("tsu" nil ("
\e$B%D
\e(B" . "
\e$B$D
\e(B"))
709 ("tu" nil ("
\e$B%D
\e(B" . "
\e$B$D
\e(B"))
710 ("tya" nil ("
\e$B%A%c
\e(B" . "
\e$B$A$c
\e(B"))
711 ("tye" nil ("
\e$B%A%'
\e(B" . "
\e$B$A$'
\e(B"))
712 ("tyi" nil ("
\e$B%A%#
\e(B" . "
\e$B$A$#
\e(B"))
713 ("tyo" nil ("
\e$B%A%g
\e(B" . "
\e$B$A$g
\e(B"))
714 ("tyu" nil ("
\e$B%A%e
\e(B" . "
\e$B$A$e
\e(B"))
715 ("u" nil ("
\e$B%&
\e(B" . "
\e$B$&
\e(B"))
716 ("vv" "v" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
717 ("va" nil ("
\e$B%t%!
\e(B" . "
\e$B$&!+$!
\e(B"))
718 ("ve" nil ("
\e$B%t%'
\e(B" . "
\e$B$&!+$'
\e(B"))
719 ("vi" nil ("
\e$B%t%#
\e(B" . "
\e$B$&!+$#
\e(B"))
720 ("vo" nil ("
\e$B%t%)
\e(B" . "
\e$B$&!+$)
\e(B"))
721 ("vu" nil ("
\e$B%t
\e(B" . "
\e$B$&!+
\e(B"))
722 ("ww" "w" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
723 ("wa" nil ("
\e$B%o
\e(B" . "
\e$B$o
\e(B"))
724 ("we" nil ("
\e$B%&%'
\e(B" . "
\e$B$&$'
\e(B"))
725 ("wi" nil ("
\e$B%&%#
\e(B" . "
\e$B$&$#
\e(B"))
726 ("wo" nil ("
\e$B%r
\e(B" . "
\e$B$r
\e(B"))
727 ("wu" nil ("
\e$B%&
\e(B" . "
\e$B$&
\e(B"))
728 ("xx" "x" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
729 ("xa" nil ("
\e$B%!
\e(B" . "
\e$B$!
\e(B"))
730 ("xe" nil ("
\e$B%'
\e(B" . "
\e$B$'
\e(B"))
731 ("xi" nil ("
\e$B%#
\e(B" . "
\e$B$#
\e(B"))
732 ("xka" nil ("
\e$B%u
\e(B" . "
\e$B$+
\e(B"))
733 ("xke" nil ("
\e$B%v
\e(B" . "
\e$B$1
\e(B"))
734 ("xo" nil ("
\e$B%)
\e(B" . "
\e$B$)
\e(B"))
735 ("xtsu" nil ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
736 ("xtu" nil ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
737 ("xu" nil ("
\e$B%%
\e(B" . "
\e$B$%
\e(B"))
738 ("xwa" nil ("
\e$B%n
\e(B" . "
\e$B$n
\e(B"))
739 ("xwe" nil ("
\e$B%q
\e(B" . "
\e$B$q
\e(B"))
740 ("xwi" nil ("
\e$B%p
\e(B" . "
\e$B$p
\e(B"))
741 ("xya" nil ("
\e$B%c
\e(B" . "
\e$B$c
\e(B"))
742 ("xyo" nil ("
\e$B%g
\e(B" . "
\e$B$g
\e(B"))
743 ("xyu" nil ("
\e$B%e
\e(B" . "
\e$B$e
\e(B"))
744 ("yy" "y" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
745 ("ya" nil ("
\e$B%d
\e(B" . "
\e$B$d
\e(B"))
746 ("ye" nil ("
\e$B%$%'
\e(B" . "
\e$B$$$'
\e(B"))
747 ("yo" nil ("
\e$B%h
\e(B" . "
\e$B$h
\e(B"))
748 ("yu" nil ("
\e$B%f
\e(B" . "
\e$B$f
\e(B"))
749 ("zz" "z" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
750 ("z," nil "
\e$B!E
\e(B")
751 ("z-" nil "
\e$B!A
\e(B")
752 ("z." nil "
\e$B!D
\e(B")
753 ("z/" nil "
\e$B!&
\e(B")
754 ("z[" nil "
\e$B!X
\e(B")
755 ("z]" nil "
\e$B!Y
\e(B")
756 ("za" nil ("
\e$B%6
\e(B" . "
\e$B$6
\e(B"))
757 ("ze" nil ("
\e$B%<
\e(B" . "
\e$B$<
\e(B"))
758 ("zh" nil "
\e$B"+
\e(B")
759 ("zi" nil ("
\e$B%8
\e(B" . "
\e$B$8
\e(B"))
760 ("zj" nil "
\e$B"-
\e(B")
761 ("zk" nil "
\e$B",
\e(B")
762 ("zl" nil "
\e$B"*
\e(B")
763 ("zo" nil ("
\e$B%>
\e(B" . "
\e$B$>
\e(B"))
764 ("zu" nil ("
\e$B%:
\e(B" . "
\e$B$:
\e(B"))
765 ("zya" nil ("
\e$B%8%c
\e(B" . "
\e$B$8$c
\e(B"))
766 ("zye" nil ("
\e$B%8%'
\e(B" . "
\e$B$8$'
\e(B"))
767 ("zyi" nil ("
\e$B%8%#
\e(B" . "
\e$B$8$#
\e(B"))
768 ("zyo" nil ("
\e$B%8%g
\e(B" . "
\e$B$8$g
\e(B"))
769 ("zyu" nil ("
\e$B%8%e
\e(B" . "
\e$B$8$e
\e(B"))
770 ("." nil skk-current-kuten)
771 ("," nil skk-current-touten)
772 ("-" nil "
\e$B!<
\e(B")
773 (":" nil "
\e$B!'
\e(B")
774 (";" nil "
\e$B!(
\e(B")
775 ("?" nil "
\e$B!)
\e(B")
776 ("[" nil "
\e$B!V
\e(B")
777 ("]" nil "
\e$B!W
\e(B")
778 ("l" nil skk-latin-mode)
779 ("q" nil skk-toggle-kana)
780 ("L" nil skk-jisx0208-latin-mode)
781 ("Q" nil skk-set-henkan-point-subr)
782 ("X" nil skk-purge-from-jisyo)
783 ("/" nil skk-abbrev-mode)
784 ("$" nil skk-display-code-for-char-at-point)
786 ("\\" nil skk-input-by-code-or-menu)
788 ;;
\e$B%3%s%9%?%s%H$K$7$F$7$^$o$J$$$N$O!"%m!<%^;zF~NO$H$OA4$/JL$N@_Dj$r
\e(B
789 ;;
\e$B$9$k?M$b$$$k$+$i$G$9!#
\e(B
790 "*
\e$B%-!<F~NO$KBP$9$kJQ49J8;z$r8=$o$9%*!<%H%^%H%s>uBVA+0\5,B'!#
\e(B
791 \e$B%j%9%H$N3FMWAG$O!"2<5-$N%j%9%H7A<0$rK~$?$7$F$$$J$1$l$P$J$i$J$$!#
\e(B
793 \(
\e$B8=:_$N%-!<F~NO>uBV
\e(B[@
\e$B<!%-!<F~NO
\e(B0][@
\e$B<!%-!<F~NO
\e(B1]...[@
\e$B<!%-!<F~NO
\e(Bn]
\e$B:G=*$N%-!<F~NO>uBV
\e(B
\e$B=PNO
\e(B\)
795 \(
\e$BC"$7!"
\e(B\"@\"
\e$B$OO"@\
\e(B\)
\e$B$r0UL#$9$k!#
\e(B
797 \e$B=PNO$K;XDj$G$-$k$b$N$O!"J8;zNs!"J8;zNs$r
\e(B car, cdr
\e$B$K;}$D
\e(B dot pair
\e$B!"
\e(B
798 \e$B4X?tL>%7%s%\%k$N$$$:$l$+!#
\e(Bdot pair
\e$B$O!"%+%J%b!<%I$N$H$-$O
\e(B car
\e$B$NJ8
\e(B
799 \e$B;zNs!"$+$J%b!<%I$N$H$-$O
\e(B cdr
\e$B$NJ8;zNs$,A^F~$5$l$k!#J8;zNs$N$_;XDj$5$l
\e(B
800 \e$B$F$$$k>l9g$O!"F~NO%b!<%I$K$+$+$o$i$:$=$NJ8;z$,A^F~$5$l$k!#
\e(B
801 \e$BJ8;zNs$rA^F~$9$k4X?t$K$D$$$F$O!"
\e(Binsert
\e$B$rL@<(E*$K8F$VI,MW$O$J$/!"J8;z
\e(B
802 \e$BNs$rJV$;$PNI$$!#J8;zNs$rA^F~$7$J$$4X?t$K$D$$$F$b;XDj$O2D!#
\e(B
804 \e$B$3$NJQ?t$NDj5A$r%Y!<%9$K
\e(B skk-rom-kana-rule-list
\e$B$,DI2C$5$l!"
\e(Bskk-mode
805 \e$B5/F0;~$K
\e(B skk-rule-tree
\e$B$H$$$&LZ$N7A$K%3%s%Q%$%k$5$l$k!#
\e(B
806 2
\e$B$D$N%k!<%k%j%9%H$K=EJ#$9$k%-!<$N@_Dj$,$"$k>l9g$O!"
\e(B
807 skk-rom-kana-rule-list
\e$B$NDj5A$,M%@h$5$l$k!#
\e(B"
810 (choice function string (cons string string))))
813 (defcustom skk-rom-kana-rule-list
815 ;;
\e$B%f!<%6!<$N9%$_$G@_Dj$,J,$l$=$&$JMWAG$O!"
\e(B
816 ;; skk-rom-kana-base-rule-list
\e$B$+$i$3$A$i$X0\$7$^$7$g$&
\e(B...
\e$B!#
\e(B
817 ("hh" "h" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
818 ;; when you may want to insert
\e$B!V$,$s$^!W
\e(Bby "gamma"...
819 ("mm" "m" ("
\e$B%s
\e(B" . "
\e$B$s
\e(B"))
821 "*
\e$B%-!<F~NO$KBP$9$kJQ49J8;z$r8=$o$9%*!<%H%^%H%s>uBVA+0\5,B'$G!"%f!<%6!<$NDI2C$N@_Dj$r9T$J$&$b$N!#
\e(B
822 \e$B%Y!<%9$H$J$k
\e(B skk-rom-kana-base-rule-list
\e$B$K$3$NJQ?t$NDj5A$,DI2C$5$l!"
\e(B
823 skk-mode
\e$B5/F0;~$K
\e(B skk-rule-tree
\e$B$H$$$&LZ$N7A$K%3%s%Q%$%k$5$l$k!#
\e(B
824 2
\e$B$D$N%k!<%k%j%9%H$K=EJ#$9$k%-!<$N@_Dj$,$"$k>l9g$O!"$3$NJQ?t$NDj5A$,M%
\e(B
827 \e$B%j%9%H$N3FMWAG$O!"2<5-$N%j%9%H7A<0$rK~$?$7$F$$$J$1$l$P$J$i$J$$!#
\e(B
829 \(
\e$B8=:_$N%-!<F~NO>uBV
\e(B[@
\e$B<!%-!<F~NO
\e(B0][@
\e$B<!%-!<F~NO
\e(B1]...[@
\e$B<!%-!<F~NO
\e(Bn]
\e$B:G=*$N%-!<F~NO>uBV
\e(B
\e$B=PNO
\e(B\)
831 \(
\e$BC"$7!"
\e(B\"@\"
\e$B$OO"@\
\e(B\)
\e$B$r0UL#$9$k!#
\e(B
833 \e$B=PNO$N<oN`$K$D$$$F$O!"
\e(Bskk-rom-kana-base-rule-list
\e$B$r;2>H$N$3$H!#
\e(B
834 \e$B%f!<%6!<$,DI2C$7$?$$%k!<%k$r
\e(B
836 \(setq skk-rom-kana-rule-list
838 \(\"hh\" \"h\" \(\"
\e$B%C
\e(B\" . \"
\e$B$C
\e(B\"\)\)
839 \(\"@\" nil \"
\e$B!w
\e(B\"\)
843 \e$B$N$h$&$K
\e(B .emacs
\e$B$d
\e(B skk-init-file
\e$B$KD>@\=q$/$N$,<j7Z!#
\e(B
845 \e$B%G%#%U%)%k%H$G$O!"
\e(B\(\"hh\" \"h\" \(\"
\e$B%C
\e(B\" . \"
\e$B$C
\e(B\"\)\)
\e$B$H$$$&MWAG$,@_
\e(B
846 \e$BDj$5$l$F$$$k$,!"
\e(B\"ohhira\" -> \"
\e$B$*$*$R$i
\e(B\"
\e$B$N$h$&$K
\e(B \"hh\"
\e$B$rB%2;=hM}
\e(B
847 \e$B$7$?$/$J$1$l$P!"
\e(Bskk-rom-kana-rule-list
\e$B$+$i
\e(B
849 \(\"hh\" \"h\" \(\"
\e$B%C
\e(B\" . \"
\e$B$C
\e(B\"\)\)
851 \e$B$H$$$&MWAG$r>C$9!#
\e(B
852 \e$B$^$?!"
\e(B`@'
\e$B$G
\e(B skk-today (
\e$BEvF|$NF|IU$NF~NO
\e(B)
\e$B$r5/F0$9$kBe$j$K
\e(B `
\e$B!w
\e(B'
\e$B$rF~
\e(B
853 \e$BNO$7$?$$>l9g$O!"
\e(Bskk-rom-kana-rule-list
\e$B$K
\e(B
855 \(\"@\" nil \"
\e$B!w
\e(B\"\)
857 \e$B$H$$$&MWAG$r2C$($k!#
\e(Bskk-mode
\e$B$N5/F08e
\e(B skk-rom-kana-rule-list
\e$B$NJQ99$r
\e(B
858 \e$B9T$J$C$?>l9g!"$=$N@_Dj$rH?1G$5$;$k$K$O
\e(B M-x skk-restart
\e$B$r<B9T$9$kI,MW
\e(B
862 (choice function string (cons string string))))
865 (defcustom skk-kana-input-search-function
869 (and (string-match "^h\\([bcdfghjklmnpqrstvwxz]\\)$" skk-prefix)
870 (member (char-to-string (preceding-char)) '("
\e$B$*
\e(B" "
\e$B%*
\e(B"))
871 (cons '("
\e$B%*
\e(B" . "
\e$B$*
\e(B") (match-string 1 skk-prefix))))))
872 "*
\e$B%k!<%k%j%9%H$NCf$K5-$;$J$$JQ49%k!<%k$r=hM}$9$k4X?t!#
\e(B
873 skk-rom-kana-base-rule-list
\e$B$H
\e(B skk-rom-kana-rule-list
\e$B$NMWAG$rA4$F8!:w
\e(B
874 \e$B$7$?8e$K%3!<%k$5$l$k!#0z?t$O$J$$!#
\e(B
876 \(
\e$B8=:_$NF~NO$KBP$9$k=PNO
\e(B . \"
\e$BB3$/
\e(B unfixed prefix\"\)
878 \e$B$H$$$&%;%k$rJV$9!#=PNO$N<oN`$K$D$$$F$O!"
\e(Bskk-rom-kana-base-rule-list
\e$B$r
\e(B
881 \e$B%G%#%U%)%k%H$G$O!"
\e(B\"
\e$B$*
\e(B\"
\e$B$N8e$N
\e(B \"h\" +
\e$B;R2;$NF~NO$r
\e(B \"
\e$B$*$*
\e(B\" +
\e$BB3$/;R
\e(B
882 \e$B2;=hM}MQ$N
\e(B unfixed prefix
\e$B$KJQ49$7$F$$$k!#
\e(B"
886 (defcustom skk-okuri-char-alist nil
887 "*
\e$B$"$kAw$j2>L>$rJL$NAw$j2>L>$KJQ49$9$k%k!<%k$r5-=R$9$k%(!<%j%9%H!#
\e(B"
888 :type '(repeat (cons string string))
891 (defcustom skk-downcase-alist nil
892 "*
\e$BJQ49%-!<
\e(B (
\e$BBgJ8;z%m!<%^;z
\e(B)
\e$B$N>.J8;z$X$NJQ495,B'$rI=$o$9%(!<%j%9%H!#
\e(B
893 \e$BJQ49%-!<$NF~NO$r3+;O$9$k:]!"
\e(BSKK
\e$B$G$OBgJ8;z$GF~NO$r9T$J$&$N$G!"
\e(B
894 skk-set-henkan-point
\e$B$NCf$G$3$l$r>.J8;z$KJQ49$9$k:n6H$r9T$J$&!#$3$N%(!<
\e(B
895 \e$B%j%9%H$KBgJ8;z
\e(B ->
\e$B>.J8;z$NJQ49%k!<%k$r=q$$$F$*$/$3$H$G!"%-!<F~NO$N%+%9
\e(B
896 \e$B%?%^%$%:$r9T$J$&$3$H$,$G$-$k!#$3$N%(!<%j%9%H$,
\e(B null
\e$B$N>l9g$O!"C1$K
\e(B
897 downcase
\e$B$5$l$k!#
\e(B"
898 :type '(repeat (cons character character))
901 (defcustom skk-jisx0208-latin-vector
902 [nil nil nil nil nil nil nil nil
903 nil nil nil nil nil nil nil nil
904 nil nil nil nil nil nil nil nil
905 nil nil nil nil nil nil nil nil
906 "
\e$B!!
\e(B" "
\e$B!*
\e(B" "
\e$B!I
\e(B" "
\e$B!t
\e(B" "
\e$B!p
\e(B" "
\e$B!s
\e(B" "
\e$B!u
\e(B" "
\e$B!G
\e(B"
907 "
\e$B!J
\e(B" "
\e$B!K
\e(B" "
\e$B!v
\e(B" "
\e$B!\
\e(B" "
\e$B!$
\e(B" "
\e$B!]
\e(B" "
\e$B!%
\e(B" "
\e$B!?
\e(B"
908 "
\e$B#0
\e(B" "
\e$B#1
\e(B" "
\e$B#2
\e(B" "
\e$B#3
\e(B" "
\e$B#4
\e(B" "
\e$B#5
\e(B" "
\e$B#6
\e(B" "
\e$B#7
\e(B"
909 "
\e$B#8
\e(B" "
\e$B#9
\e(B" "
\e$B!'
\e(B" "
\e$B!(
\e(B" "
\e$B!c
\e(B" "
\e$B!a
\e(B" "
\e$B!d
\e(B" "
\e$B!)
\e(B"
910 "
\e$B!w
\e(B" "
\e$B#A
\e(B" "
\e$B#B
\e(B" "
\e$B#C
\e(B" "
\e$B#D
\e(B" "
\e$B#E
\e(B" "
\e$B#F
\e(B" "
\e$B#G
\e(B"
911 "
\e$B#H
\e(B" "
\e$B#I
\e(B" "
\e$B#J
\e(B" "
\e$B#K
\e(B" "
\e$B#L
\e(B" "
\e$B#M
\e(B" "
\e$B#N
\e(B" "
\e$B#O
\e(B"
912 "
\e$B#P
\e(B" "
\e$B#Q
\e(B" "
\e$B#R
\e(B" "
\e$B#S
\e(B" "
\e$B#T
\e(B" "
\e$B#U
\e(B" "
\e$B#V
\e(B" "
\e$B#W
\e(B"
913 "
\e$B#X
\e(B" "
\e$B#Y
\e(B" "
\e$B#Z
\e(B" "
\e$B!N
\e(B" "
\e$B!@
\e(B" "
\e$B!O
\e(B" "
\e$B!0
\e(B" "
\e$B!2
\e(B"
914 "
\e$B!F
\e(B" "
\e$B#a
\e(B" "
\e$B#b
\e(B" "
\e$B#c
\e(B" "
\e$B#d
\e(B" "
\e$B#e
\e(B" "
\e$B#f
\e(B" "
\e$B#g
\e(B"
915 "
\e$B#h
\e(B" "
\e$B#i
\e(B" "
\e$B#j
\e(B" "
\e$B#k
\e(B" "
\e$B#l
\e(B" "
\e$B#m
\e(B" "
\e$B#n
\e(B" "
\e$B#o
\e(B"
916 "
\e$B#p
\e(B" "
\e$B#q
\e(B" "
\e$B#r
\e(B" "
\e$B#s
\e(B" "
\e$B#t
\e(B" "
\e$B#u
\e(B" "
\e$B#v
\e(B" "
\e$B#w
\e(B"
917 "
\e$B#x
\e(B" "
\e$B#y
\e(B" "
\e$B#z
\e(B" "
\e$B!P
\e(B" "
\e$B!C
\e(B" "
\e$B!Q
\e(B" "
\e$B!A
\e(B" nil]
918 "*skk-jisx0208-latin-insert
\e$B$G;2>H$5$l$kJ8;z%F!<%V%k!#
\e(B
919 \e$B%-!<$KBP1~$9$k0LCV$KJ8;zNs$,$"$l$P!"A41Q%b!<%I$G3:Ev$N%-!<$r2!$9$3$H$G!"BP1~$9
\e(B
920 \e$B$kJ8;z$,A^F~$5$l$k!#
\e(B
921 \e$BNc$($P!"%9%Z!<%9%-!<$KBP1~$7$F!"H>3Q%9%Z!<%9$rA^F~$5$;$k$h$&$KJQ99$7$?$1$l$P!"
\e(B
922 skk.el
\e$B$N%m!<%I8e
\e(B (
\e$B$b$7$/$O
\e(B skk-load-hook
\e$B$rMxMQ$7$F
\e(B)
\e$B!"
\e(B
924 \(aset skk-jisx0208-latin-vector 32 \" \"\)
926 \e$B$H$9$k$+!"$b$7$/$O!"
\e(Bskk-jisx0208-latin-vector
\e$B$N
\e(B 32
\e$BHVL\
\e(B (0
\e$BHV$+$i?t$($F
\e(B)
\e$B$NCM$r
\e(B \" \"
927 \e$B$H$9$k$h$&$J
\e(B skk-jisx0208-latin-vector
\e$B$rD>@\=q$-!"
\e(Bsetq
\e$B$GBeF~$9$k!#
\e(B32
\e$B$O!"
\e(B? (
\e$BH>3Q%9
\e(B
928 \e$B%Z!<%9$N
\e(B char type)
\e$B$rI>2A$7$?$H$-$NCM!#
\e(B"
932 (defcustom skk-use-face (or window-system (skk-terminal-face-p))
933 "*Non-nil
\e$B$G$"$l$P!"
\e(BEmacs
\e$B$N
\e(B face
\e$B$N5!G=$r;HMQ$7$FJQ498uJd$r%O%$%i%$%HI=<($9$k!#
\e(B"
937 (defcustom skk-henkan-face 'highlight
938 "*
\e$BJQ498uJd$N
\e(B face
\e$BB0@-!#
\e(Bskk-use-face
\e$B$,
\e(B non-nil
\e$B$N$H$-$N$_M-8z!#
\e(B
939 Emacs
\e$BI8=`%U%'%$%9$N
\e(B default, modeline, region, secondary-selection,
940 highlight, underline, bold, italic, bold-italic
\e$B$NB>!"?7$?$K
\e(B face
\e$B$r:n
\e(B
941 \e$B$j;XDj$9$k$3$H$b2DG=!#
\e(B
942 \e$B?7$?$J
\e(B face
\e$B$r:n$j;XDj$9$k$K$O
\e(B skk-make-face
\e$B$rMxMQ$7$F!"
\e(B
944 \(skk-make-face 'DimGray/PeachPuff1\)
945 \(setq skk-henkan-face 'DimGray/PeachPuff1\)
947 \e$B$N$h$&$K$9$k$N$,<j7Z!#
\e(Bforeground
\e$B$H
\e(B background
\e$B$N?';XDj$@$1$G$J$$6E$C$?
\e(B face
948 \e$B$r:n$k>l9g$O!"
\e(Bskk-make-face
\e$B$G$OBP1~$G$-$J$$$N$G!"
\e(BEmacs
\e$B$N
\e(B hilit19.el
\e$B$N
\e(B
949 hilit-lookup-face-create
\e$B$J$I$rMxMQ$9$k!#?'$rIU$1$k>l9g$NG[?'$O!"
\e(Bcanna.el
\e$B$N
\e(B
950 canna:attribute-alist
\e$B$,NI$$Nc$+$b$7$l$J$$!#
\e(B"
954 (defcustom skk-use-color-cursor (and window-system (fboundp 'x-display-color-p)
956 "*Non-nil
\e$B$G$"$l$P!"
\e(BSKK
\e$B%b!<%I$NF~NO%b!<%I$K1~$8$F%+!<%=%k$K?'$rIU$1$k!#
\e(B"
960 (defcustom skk-default-cursor-color
961 (if (eq skk-emacs-type 'xemacs)
962 (frame-property (selected-frame) 'cursor-color)
963 (cdr (assq 'cursor-color (frame-parameters (selected-frame)))))
964 "*SKK
\e$B$N%*%U$r<($9%+!<%=%k?'!#
\e(B
965 skk-use-color-cursor
\e$B$,
\e(B non-nil
\e$B$N$H$-$K;HMQ$5$l$k!#
\e(B"
968 (defcustom skk-hiragana-cursor-color (if (eq skk-background-mode 'light)
971 "*
\e$B$+$J%b!<%I$r<($9%+!<%=%k?'!#
\e(B
972 skk-use-color-cursor
\e$B$,
\e(B non-nil
\e$B$N$H$-$K;HMQ$5$l$k!#
\e(B"
976 (defcustom skk-katakana-cursor-color (if (eq skk-background-mode 'light)
979 "*
\e$B%+%?%+%J%b!<%I$r<($9%+!<%=%k?'!#
\e(B
980 skk-use-color-cursor
\e$B$,
\e(B non-nil
\e$B$N$H$-$K;HMQ$5$l$k!#
\e(B"
984 (defcustom skk-jisx0208-latin-cursor-color "gold"
985 "*
\e$BA43Q1Q;z%b!<%I$r<($9%+!<%=%k?'!#
\e(B
986 skk-use-color-cursor
\e$B$,
\e(B non-nil
\e$B$N$H$-$K;HMQ$5$l$k!#
\e(B"
990 (defcustom skk-latin-cursor-color (if (eq skk-background-mode 'light)
993 "*
\e$B%"%9%-!<%b!<%I$r<($9%+!<%=%k?'!#
\e(B
994 skk-use-color-cursor
\e$B$,
\e(B non-nil
\e$B$N$H$-$K;HMQ$5$l$k!#
\e(B"
998 (defcustom skk-abbrev-cursor-color "royalblue"
999 "*abbrev
\e$B%b!<%I$r<($9%+!<%=%k?'!#
\e(B
1000 skk-use-color-cursor
\e$B$,
\e(B non-nil
\e$B$N$H$-$K;HMQ$5$l$k!#
\e(B"
1004 (defcustom skk-report-set-cursor-error t
1005 "*Non-nil
\e$B$G$"$l$P!"%+%i!<%^%C%W@Z$l$,5/$-$?>l9g!"%(%i!<%a%C%;!<%8$rI=<($9$k!#
\e(B
1006 nil
\e$B$G$"$l$P!"I=<($7$J$$!#
\e(B"
1010 (defcustom skk-use-cursor-change t
1011 "*Non-nil
\e$B$G$"$l$P!"
\e(BOvwrt
\e$B%^%$%J!<%b!<%I;~$K%+!<%=%k$NI}$r=L$a$k!#
\e(B"
1015 (defcustom skk-auto-insert-paren nil
1016 "*Non-nil
\e$B$G$"$l$P!"
\e(B2
\e$B$D$NJ8;zNs$r$^$H$a$FA^F~$7!"$=$NJ8;zNs$N4V$K%+!<%=%k$r0\F0$9$k!#
\e(B
1017 \e$BNc$($P!"
\e(B\"
\e$B!V
\e(B\"
\e$B$rF~NO$7$?$H$-$K
\e(B \"
\e$B!W
\e(B\"
\e$B$r<+F0E*$KA^F~$7!"N>$+$.$+$C$3$N4V$K
\e(B
1018 \e$B%+!<%=%k$r0\F0$9$k!#
\e(B
1019 \e$BA^F~$9$kJ8;zNs$O!"
\e(Bskk-auto-paren-string-alist
\e$B$G;XDj$9$k!#
\e(B"
1023 (defcustom skk-auto-paren-string-alist
1024 '(("
\e$B!V
\e(B" . "
\e$B!W
\e(B") ("
\e$B!X
\e(B" . "
\e$B!Y
\e(B") ("(" . ")") ("
\e$B!J
\e(B" . "
\e$B!K
\e(B")
1025 ("{" . "}")("
\e$B!P
\e(B" . "
\e$B!Q
\e(B") ("
\e$B!R
\e(B" . "
\e$B!S
\e(B") ("
\e$B!T
\e(B" . "
\e$B!U
\e(B")
1026 ("[" . "]") ("
\e$B!N
\e(B" . "
\e$B!O
\e(B") ("
\e$B!L
\e(B" . "
\e$B!M
\e(B") ("
\e$B!Z
\e(B" . "
\e$B![
\e(B")
1027 ("\"" . "\"")("
\e$B!H
\e(B" . "
\e$B!I
\e(B") ("`" . "'")
1028 ;;("<" . ">") ;; skk-special-midashi-char-list
\e$B$NCf$K$"$kJ8;z!#
\e(B
1030 "*
\e$B<+F0E*$KBP$K$J$kJ8;zNs$rF~NO$9$k$?$a$NO"A[%j%9%H!#
\e(B
1031 skk-auto-insert-paren
\e$B$,
\e(B non-nil
\e$B$N>l9g!"
\e(Bcar
\e$B$NJ8;zNs$,A^F~$5$l$?$H$-
\e(B
1032 \e$B$K
\e(B cdr
\e$B$NJ8;zNs$r<+F0E*$KA^F~$5$l!"%+!<%=%k$O$=$N
\e(B 2
\e$B$D$NJ8;zNs$N4V$K0\
\e(B
1034 skk-special-midashi-char-list
\e$B$NMWAG$K$J$C$F$$$kJ8;z$O!"
\e(B
1035 skk-auto-paren-string-alist
\e$B$K4^$a$F$b:o=|$5$l$k!#
\e(B "
1036 :type '(repeat (cons string string))
1039 (defcustom skk-japanese-message-and-error nil
1040 "*Non-nil
\e$B$G$"$l$P!"
\e(BSKK
\e$B$N%a%C%;!<%8$H%(%i!<$rF|K\8l$GI=<($9$k!#
\e(B
1041 nil
\e$B$G$"$l$P!"1Q8l$GI=<($9$k!#
\e(B"
1045 (defcustom skk-set-henkan-point-key
1046 '(?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?M ?N ?O ?P ?R ?S ?T ?U ?V ?W ?Y ?Z)
1047 "*
\e$BJQ49$N3+;OCOE@$r7h$a$k%-!<$N%j%9%H!#
\e(B"
1048 :type '(repeat character)
1051 (defcustom skk-jisyo-save-count 50
1052 "*
\e$B?tCM$G$"$l$P!"$=$N2s?t<-=q$,99?7$5$l$?$H$-$K<-=q$r<+F0E*$K%;!<%V$9$k!#
\e(B
1053 nil
\e$B$G$"$l$P!"<-=q$N%*!<%H%;!<%V$r9T$J$o$J$$!#
\e(B"
1054 :type '(choice integer (const nil))
1057 (defcustom skk-byte-compile-init-file nil
1058 "*Non-nil
\e$B$G$"$l$P!"
\e(Bskk-mode
\e$B5/F0;~$K
\e(B skk-init-file
\e$B$r%P%$%H%3%s%Q%$%k$9$k!#
\e(B
1059 \e$B@53N$K8@$&$H!"
\e(B
1061 (1)skk-init-file
\e$B$r%P%$%H%3%s%Q%$%k$7$?%U%!%$%k$,$J$$$+!"
\e(B
1062 (2)skk-init-file
\e$B$H$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$rHf3S$7$F!"A0<T$NJ}$,?7$7
\e(B
1065 \e$B$K
\e(B skk-init-file
\e$B$r%P%$%H%3%s%Q%$%k$9$k!#
\e(B
1066 nil
\e$B$G$"$l$P!"
\e(Bskk-init-file
\e$B$H$=$N%P%$%H%3%s%Q%$%k:Q$_%U%!%$%k$rHf3S$7$F
\e(B
1067 skk-init-file
\e$B$NJ}$,?7$7$$$H$-$O!"$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$r>C$9!#
\e(B"
1071 (defcustom skk-count-private-jisyo-candidates-exactly nil
1072 "*Non-nil
\e$B$G$"$l$P!"
\e(BEmacs
\e$B$r=*N;$9$k$H$-$K@53N$K8D?M<-=q$N8uJd?t$r?t$($k!#
\e(B
1073 nil
\e$B$G$"$l$P!"
\e(B1
\e$B9T$KJ#?t$N8uJd$,$"$C$F$b
\e(B 1
\e$B8uJd$H$7$F?t$($k!#
\e(B
1074 \e$B7W;;7k2L$O!"
\e(Bskk-record-file
\e$B$KJ]B8$5$l$k!#
\e(B"
1078 (defcustom skk-compare-jisyo-size-when-saving t
1079 "*Non-nil
\e$B$G$"$l$P!"
\e(Bskk-jisyo
\e$B$N%;!<%V;~$K%U%!%$%k%5%$%:$N%A%'%C%/$r9T$J$&!#
\e(B
1080 \e$BA02s%;!<%V$7$?
\e(B skk-jisyo
\e$B$H:#2s%;!<%V$7$h$&$H$9$k<-=q$H$N%5%$%:Hf3S$r9T$J$$!"
\e(B
1081 \e$B8e<T$NJ}$,Bg$-$$$H$-$K%f!<%6!<$K%;!<%V$rB3$1$k$+$I$&$+$N3NG'$r5a$a$k!#
\e(B"
1085 (defcustom skk-auto-start-henkan t
1086 "*
\e$BC18l$dJ8@a$N6h@Z$j$r<($9J8;z$NBG80$K$h$j<+F0E*$KJQ49$r3+;O$9$k!#
\e(B
1087 skk-auto-start-henkan-keyword-list
\e$B$K$h$jC18l$dJ8@a$N6h@Z$j$r<($9J8;z$r;XDj$9$k!#
\e(B"
1091 (defcustom skk-auto-start-henkan-keyword-list
1092 '("
\e$B$r
\e(B" "
\e$B!"
\e(B" "
\e$B!#
\e(B" "
\e$B!%
\e(B" "
\e$B!$
\e(B" "
\e$B!)
\e(B" "
\e$B!W
\e(B" "
\e$B!*
\e(B" "
\e$B!(
\e(B" "
\e$B!'
\e(B" ")" ";" ":"
1093 "
\e$B!K
\e(B" "
\e$B!I
\e(B" "
\e$B![
\e(B" "
\e$B!Y
\e(B" "
\e$B!U
\e(B" "
\e$B!S
\e(B" "
\e$B!Q
\e(B" "
\e$B!O
\e(B" "
\e$B!M
\e(B" "}" "]" "?" "."
1095 ;;
\e$B$"$^$j%-!<%o!<%I$,B?$/$J$k$H!"DL>o$NJQ49$r:$Fq$K$9$k!)
\e(B
1096 "*
\e$B<+F0JQ49$r3+;O$9$k%-!<%o!<%I!#
\e(B
1097 skk-auto-start-henkan
\e$B$,
\e(B non-nil
\e$B$N$H$-!"$3$N%j%9%H$NMWAG$NJ8;z$rA^F~
\e(B
1098 \e$B$9$k$H!"
\e(BSPC
\e$B$r2!$9$3$H$J$/<+F0E*$KJQ49$r3+;O$9$k!#
\e(B"
1099 :type '(repeat string)
1102 (defcustom skk-search-excluding-word-pattern-function nil
1103 "*
\e$B8D?M<-=q$K<h$j9~$^$J$$J8;zNs$N%Q%?!<%s$r8!:w$9$k4X?t$r;XDj$9$k!#
\e(B
1104 \e$B3NDj$7$?J8;zNs$r0z?t$KEO$7$F
\e(B funcall
\e$B$5$l$k!#
\e(B
1106 SKK
\e$B$G$OJQ49!"3NDj$r9T$J$C$?J8;zNs$OA4$F8D?M<-=q$K<h$j9~$^$l$k$,!"$3$N
\e(B
1107 \e$BJQ?t$G;XDj$5$l$?4X?t$,
\e(B non-nil
\e$B$rJV$9$H$=$NJ8;zNs$O8D?M<-=q$K<h$j9~$^
\e(B
1110 \e$BNc$($P!"$3$NJQ?t$K2<5-$N$h$&$J;XDj$9$k$H!"JQ49$K$h$j
\e(B (SKK abbrev mode
1111 \e$B$G$NJQ49$r=|$/
\e(B)
\e$B%+%?%+%J$N$_$+$i$J$kJ8;zNs$rF@$F3NDj$7$F$b!"$=$l$r8D?M
\e(B
1112 \e$B<-=q$K<h$j9~$^$J$$!#
\e(B
1114 \(setq skk-search-excluding-word-pattern-function
1116 \(lambda \(kakutei-word\)
1117 ;;
\e$B$3$N4X?t$,
\e(B t
\e$B$rJV$7$?$H$-$O!"$=$NJ8;zNs$O8D?M<-=q$K<h$j9~$^$l$J$$!#
\e(B
1120 ;;
\e$BAw$j$J$7JQ49$G!"
\e(B
1121 \(not skk-okuri-char\)
1122 ;;
\e$B3NDj8l$,%+%?%+%J$N$_$+$i9=@.$5$l$F$$$F!"
\e(B
1123 \(string-match \"^[
\e$B!<%!
\e(B-
\e$B%s
\e(B]+$\" kakutei-word\)
1124 ;; SKK abbrev mode
\e$B0J30$G$NJQ49$+!"
\e(B
1125 \(or \(not skk-abbrev-mode\)
1126 ;;
\e$B8+=P$78l$,%+%?%+%J!"$R$i$,$J0J30$N$H$-!#
\e(B
1127 ;; \(
\e$B8e$G"&%^!<%/$rIU$1$?$H$-$O!"8+=P$78l$,1QJ8;z$G$b!"
\e(B
1128 ;; skk-abbrev-mode
\e$B$,
\e(B t
\e$B$K$J$C$F$$$J$$
\e(B\)
\e$B!#
\e(B
1129 \(not \(string-match \"^[^
\e$B!<%!
\e(B-
\e$B%s$!
\e(B-
\e$B$s
\e(B]+$\" skk-henkan-key\)\) \)\)\)\)\)\)
1131 \e$B%+%?%+%J$rJQ49$K$h$j5a$a$?$$$,!"8D?M<-=q$K$O%+%?%+%J$N$_$N8uJd$r<h$j9~$_$?
\e(B
1132 \e$B$/$J$$!"$J$I!"8D?M<-=q$,I,MW0J>e$KKD$l$k$N$rM^$($kL\E*$K;HMQ$G$-$k!#
\e(B
1134 \e$B$J$*!"8D?M<-=q$K<h$j9~$^$J$$8+=P$78l$K$D$$$F$OJd40$,8z$+$J$$$N$G!"Cm0U$9$k$3$H!#
\e(B"
1138 (defcustom skk-update-jisyo-function 'skk-update-jisyo-original
1139 "*skk-update-jisyo
\e$B$G;HMQ$9$k4X?t!#
\e(B"
1143 (defcustom skk-save-jisyo-function 'skk-save-jisyo-original
1144 "*skk-save-jisyo
\e$B$G;HMQ$9$k4X?t!#
\e(B"
1148 (defcustom skk-count-jisyo-candidates-function
1149 'skk-count-jisyo-candidates-original
1150 "*skk-count-jisyo-candidates
\e$B$G;HMQ$9$k4X?t!#
\e(B"
1154 (defcustom skk-public-jisyo-to-be-searched-function
1155 'skk-public-jisyo-to-be-searched-original
1156 "*skk-public-jisyo-has-entry-p
\e$B$G;HMQ$9$k4X?t!#
\e(B"
1160 (defcustom skk-use-look nil
1161 "*Non-nil
\e$B$G$"$l$P!"
\e(BUNIX look
\e$B%3%^%s%I$rMxMQ$7$?Jd40!&JQ49$r9T$J$&!#
\e(B
1162 SKK abbrev
\e$B%b!<%I$GJd40$r9T$J$&$H!"8D?M<-=q$r8!:w$7?T$7$?8e$G!"
\e(BUNIX look
\e$B%3%^%s
\e(B
1163 \e$B%I$K$h$k1QC18lJd40$r9T$J$&!#Nc$($P!"
\e(B
1165 \e$B"&
\e(Bconfe \(TAB\)
1166 --->
\e$B"&
\e(Bconference
1168 SKK abbrev
\e$B%b!<%I$G!"!V1QJ8;z
\e(B +
\e$B%"%9%?%j%9%/!W$K$FJQ49$r9T$J$&$H!"
\e(Blook
\e$B%3%^%s%I
\e(B
1169 \e$B$K$h$k$"$$$^$$8!:w$r9T$J$&$3$H$,$G$-$k!#Nc$($P!"
\e(B
1171 \e$B"&
\e(Bconfere* \(SPC\)
1172 --->
\e$B"'
\e(Bconference
1174 \e$B$3$N>uBV$G3NDj$9$k$H!"
\e(B`confere*'
\e$B$r8+=P$78l!"
\e(B`conference'
\e$B$r8uJd$H$9$k%(%s%H%j
\e(B
1175 \e$B$,8D?M<-=q$KDI2C$5$l$k!#
\e(B`skk-search-excluding-word-pattern-function'
\e$B$K$h
\e(B
1176 \e$B$j!"3NDj$7$F$b$3$N$h$&$J%(%s%H%j$rDI2C$7$J$$$h$&$K@_Dj$9$k$3$H$,$G$-$k!#
\e(B"
1180 (defcustom skk-kana-rom-vector
1181 ["x" "a" "x" "i" "x" "u" "x" "e" "x" "o" "k" "g" "k" "g" "k" "g"
1182 "k" "g" "k" "g" "s" "z" "s" "j" "s" "z" "s" "z" "s" "z" "t" "d"
1183 "t" "d" "x" "t" "d" "t" "d" "t" "d" "n" "n" "n" "n" "n" "h" "b"
1184 "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "m" "m" "m"
1185 "m" "m" "x" "y" "x" "y" "x" "y" "r" "r" "r" "r" "r" "x" "w" "x"
1187 "*skk-remove-common
\e$B$G;HMQ$9$k$+$JJ8;z$+$i%m!<%^;z$X$NJQ49%k!<%k!#
\e(B
1188 \e$B2<5-$N3:Ev$9$k$+$JJ8;z$r$=$NJ8;z$N%m!<%^;z%W%l%U%#%C%/%9$G8=$o$7$?$b$N!#
\e(B
1189 \e$B$!
\e(B
\e$B$"
\e(B
\e$B$#
\e(B
\e$B$$
\e(B
\e$B$%
\e(B
\e$B$&
\e(B
\e$B$'
\e(B
\e$B$(
\e(B
\e$B$)
\e(B
\e$B$*
\e(B
\e$B$+
\e(B
\e$B$,
\e(B
\e$B$-
\e(B
\e$B$.
\e(B
\e$B$/
\e(B
\e$B$0
\e(B
1190 \e$B$1
\e(B
\e$B$2
\e(B
\e$B$3
\e(B
\e$B$4
\e(B
\e$B$5
\e(B
\e$B$6
\e(B
\e$B$7
\e(B
\e$B$8
\e(B
\e$B$9
\e(B
\e$B$:
\e(B
\e$B$;
\e(B
\e$B$<
\e(B
\e$B$=
\e(B
\e$B$>
\e(B
\e$B$?
\e(B
\e$B$@
\e(B
1191 \e$B$A
\e(B
\e$B$B
\e(B
\e$B$C
\e(B
\e$B$D
\e(B
\e$B$E
\e(B
\e$B$F
\e(B
\e$B$G
\e(B
\e$B$H
\e(B
\e$B$I
\e(B
\e$B$J
\e(B
\e$B$K
\e(B
\e$B$L
\e(B
\e$B$M
\e(B
\e$B$N
\e(B
\e$B$O
\e(B
\e$B$P
\e(B
1192 \e$B$Q
\e(B
\e$B$R
\e(B
\e$B$S
\e(B
\e$B$T
\e(B
\e$B$U
\e(B
\e$B$V
\e(B
\e$B$W
\e(B
\e$B$X
\e(B
\e$B$Y
\e(B
\e$B$Z
\e(B
\e$B$[
\e(B
\e$B$\
\e(B
\e$B$]
\e(B
\e$B$^
\e(B
\e$B$_
\e(B
\e$B$`
\e(B
1193 \e$B$a
\e(B
\e$B$b
\e(B
\e$B$c
\e(B
\e$B$d
\e(B
\e$B$e
\e(B
\e$B$f
\e(B
\e$B$g
\e(B
\e$B$h
\e(B
\e$B$i
\e(B
\e$B$j
\e(B
\e$B$k
\e(B
\e$B$l
\e(B
\e$B$m
\e(B
\e$B$n
\e(B
\e$B$o
\e(B
\e$B$p
\e(B
1194 \e$B$q
\e(B
\e$B$r
\e(B
\e$B$s
\e(B
1195 \e$B$=$l$>$l$N$+$JJ8;z$,Aw$j2>L>$G$"$k>l9g$K$I$N%m!<%^;z%W%l%U%#%C%/%9$rBP1~$5$;$k
\e(B
1196 \e$B$N$+$r;XDj$9$k$3$H$,$G$-$k!#!V$8!W!"!V$A!W!"!V$U!W$NJ8;z$K$D$$$F!"BP1~$9$k%m!<
\e(B
1197 \e$B%^;z%W%l%U%#%C%/%9$r
\e(B \"z\", \"c\",\"f\"
\e$B$KJQ99$r4uK>$9$k>l9g$b$"$k$G$"$m$&!#
\e(B
1198 skk-auto-okuri-process
\e$B$NCM$,
\e(B non-nil
\e$B$N$H$-!"$"$k$$$O%5JQJd=uJQ49$,9T$J$o$l$k
\e(B
1199 \e$B$H$-;2>H$5$l$k!#
\e(B"
1203 (defcustom skk-henkan-overlay-priority 600
1204 "*
\e$BJQ49$7$?8uJd$K=E$M$k
\e(B overlay
\e$B$N
\e(B priority
\e$B!#
\e(B
1205 \e$BNc$($P!"
\e(BViper
\e$B$G
\e(B R
\e$B%3%^%s%I$K$h$j
\e(B replace
\e$B$r9T$J$&$H$-$K!"
\e(B
1206 viper-replace-overlay
\e$B$H$$$&
\e(B priority 400
\e$B$N
\e(B overlay
\e$B$r=E$M$i$l$k$,!"
\e(B
1207 skk-henkan-overlay-priority
\e$B$N%G%#%U%)%k%HCM$O$3$N
\e(B overlay
\e$B$h$j
\e(B
1208 priority
\e$B$,9b$$$N$G!"M%@h$7$FI=<($5$l$k!#
\e(B"
1212 (defcustom skk-kuten-touten-alist '((jp . ("
\e$B!#
\e(B" . "
\e$B!"
\e(B")) (en . ("
\e$B!%
\e(B" . "
\e$B!$
\e(B")))
1213 "*
\e$B6gE@$HFIE@$N%(!<%j%9%H!#
\e(B
1214 \e$B3FMWAG$N7A<0$O!"
\e(B
1216 \(
\e$B%7%s%\%k
\e(B . \(
\e$B6gE@$rI=$o$9J8;zNs
\e(B .
\e$BFIE@$rI=$o$9J8;zNs
\e(B\)\)
1218 \e$B$H$$$&
\e(B cons cell
\e$B!#%7%s%\%k$NItJ,$O!"
\e(B`jp'
\e$B$b$7$/$O
\e(B `en'
\e$B$H$7!"
\e(B
1219 skk-toggle-kutouten
\e$B$O$3$l$r%H%0%k$G@Z$j49$($k!#
\e(B
1220 \e$B%G%#%U%)%k%H$N6gFIE@$N%?%$%W$O!"
\e(B`skk-kutouten-type'
\e$B$G;XDj$9$k!#
\e(B"
1221 :type '(repeat (cons (choice (const jp) (const en))
1222 (cons string string) ))
1225 (skk-deflocalvar skk-kutouten-type 'jp
1226 "*
\e$B%G%#%U%)%k%H$N6gFIE@$N%?%$%W!#
\e(B`jp'
\e$B$b$7$/$O
\e(B `en'
\e$B$H$$$&%7%s%\%k!#
\e(B")
1228 (defcustom skk-read-from-minibuffer-function nil
1229 "*
\e$BC18lEPO?%b!<%I$G
\e(B read-from-minibuffer
\e$B$N
\e(B INITIAL-CONTENTS
\e$B$rDs6!$9$k
\e(B funcition
\e$B!#
\e(B
1230 \e$B$3$N
\e(B function
\e$B$OJ8;zNs$rJV$5$J$1$l$P$J$i$J$$!#
\e(B
1231 \e$BNc$($P!"
\e(Bskk-henkan-key
\e$B$r$=$N$^$^
\e(B initial-contents
\e$B$H$7$FMxMQ$7$?$$$H$-
\e(B
1233 \(setq skk-read-from-minibuffer-function
1234 \(function \(lambda \(\) skk-henkan-key\)\) \)
1235 \e$B$H;XDj$9$k!#
\e(B"
1239 (defvar skk-latin-mode-map nil "*ASCII
\e$B%b!<%I$N%-!<%^%C%W!#
\e(B")
1240 (or skk-latin-mode-map
1241 (let ((map (make-sparse-keymap)))
1242 ;; .skk
\e$B$G
\e(B skk-kakutei-key
\e$B$NJQ99$,2DG=$K$J$k$h$&$K!#
\e(B
1243 ;;(define-key map skk-kakutei-key 'skk-kakutei)
1244 (skk-define-menu-bar-map map)
1245 (setq skk-latin-mode-map map)))
1247 (defvar skk-j-mode-map nil "*
\e$B$+$J%b!<%I$N%-!<%^%C%W!#
\e(B")
1249 (let ((map (make-sparse-keymap)))
1250 (substitute-key-definition 'self-insert-command 'skk-insert map
1253 (substitute-key-definition 'egg-self-insert-command 'skk-insert map
1255 (substitute-key-definition 'canna-self-insert-command 'skk-insert map
1257 (substitute-key-definition 'canna-henkan-region-or-self-insert
1258 'skk-insert map global-map)
1259 (substitute-key-definition 'can-n-egg-self-insert-command 'skk-insert map
1261 ;; .skk
\e$B$G
\e(B skk-kakutei-key
\e$B$NJQ99$,2DG=$K$J$k$h$&$K!#
\e(B
1262 ;;(define-key map skk-kakutei-key 'skk-kakutei)
1263 (skk-define-menu-bar-map map)
1264 (setq skk-j-mode-map map)))
1266 (defvar skk-jisx0208-latin-mode-map nil "*
\e$BA43Q%b!<%I$N%-!<%^%C%W!#
\e(B")
1267 (or skk-jisx0208-latin-mode-map
1268 (let ((map (make-sparse-keymap))
1271 (and (aref skk-jisx0208-latin-vector i)
1272 (define-key map (char-to-string i) 'skk-jisx0208-latin-insert))
1274 (define-key map "\C-q" 'skk-latin-henkan)
1275 (skk-define-menu-bar-map map)
1276 (setq skk-jisx0208-latin-mode-map map)))
1278 (defvar skk-abbrev-mode-map nil "*SKK abbrev
\e$B%b!<%I$N%-!<%^%C%W!#
\e(B")
1279 (or skk-abbrev-mode-map
1280 (let ((map (make-sparse-keymap)))
1281 (define-key map "," 'skk-abbrev-comma)
1282 (define-key map "." 'skk-abbrev-period)
1283 (define-key map "\C-q" 'skk-jisx0208-latin-henkan)
1284 ;; .skk
\e$B$G
\e(B skk-kakutei-key
\e$B$NJQ99$,2DG=$K$J$k$h$&$K!#
\e(B
1285 ;;(define-key map skk-kakutei-key 'skk-kakutei)
1286 (skk-define-menu-bar-map map)
1287 (setq skk-abbrev-mode-map map)))
1289 ;;; -- internal constants and variables
1290 ;; ---- global ones.
1291 ;;(defvar skk-henkan-face 'skk-henkan-face)
1292 (defconst skk-month-alist
1293 '(("Jan" . "1") ("Feb" . "2") ("Mar" . "3") ("Apr" . "4") ("May" . "5")
1294 ("Jun" . "6") ("Jul" . "7") ("Aug" . "8") ("Sep" . "9") ("Oct" . "10")
1295 ("Nov" . "11") ("Dec" . "12"))
1296 "
\e$B1Q8l$N7nL>$H;;MQ?t;z$NO"A[%j%9%H!#
\e(B
1298 \e$B;;MQ?t;z$+$i1Q8l$N7nL>$N$_$r=PNO$9$k$N$G$"$l$P!"%Y%/%?!<$r;H$C$?J}$,9bB.$@$,!"
\e(B
1299 \e$B1Q8l$N7nL>$+$i;;MQ?t;z$r=PNO$9$k$N$G$"$l$PO"A[%j%9%H$G$J$1$l$PL5M}$J$N$G!"B?
\e(B
1300 \e$BL\E*$K;HMQ$G$-$k$h$&O"A[%j%9%H$N7ABV$r<h$k!#
\e(B"
1301 ;; "Alist of English month abbreviations and numerical values.
1303 ;;Although it is faster to use a vector if we only want to output
1304 ;;month abbreviations given the ordinal, without the alist it's
1305 ;;unreasonable [sic] to output the ordinal given the abbreviation,
1306 ;;so for multi-purpose utility we use the alist form."
1309 (defconst skk-coding-system-alist
1310 (if (memq skk-emacs-type '(xemacs mule4 mule3))
1311 '(("euc" . euc-japan)
1312 ("ujis" . euc-japan)
1315 '(("euc" . *euc-japan*)
1316 ("ujis" . *euc-japan*)
1319 "coding-system
\e$B$NJ8;zNsI=8=$H!"%7%s%\%kI=8=$NO"A[%j%9%H!#
\e(B")
1321 (defconst skk-default-jisx0208-latin-vector
1322 ;; note that skk-jisx0208-latin-vector is a user variable.
1323 ;; skk.el
\e$B%m!<%IA0$K
\e(B .emacs
\e$B$J$I$G!"
\e(Bskk-jisx0208-latin-vector
\e$B$NJL$NCM$r%f!<
\e(B
1324 ;;
\e$B%6!<$,D>@\=q$$$?$j!"
\e(Bskk.el
\e$B%m!<%I8e$K$3$NCM$r
\e(B aset
\e$B$GD>@\$$$8$C$?$j$7$J
\e(B
1325 ;;
\e$B$1$l$P
\e(B default-value
\e$B$G
\e(B skk-jisx0208-latin-vector
\e$B$K%"%/%;%9$9$k$3$H$G
\e(B
1326 ;; skk-default-jisx0208-latin-vector
\e$B$NCM$rJ];}$9$k$3$H$b$G$-$h$&$,!"$=$l$O
\e(B
1327 ;;
\e$BK>$a$J$$
\e(B...
\e$B!#
\e(B
1328 [nil nil nil nil nil nil nil nil
1329 nil nil nil nil nil nil nil nil
1330 nil nil nil nil nil nil nil nil
1331 nil nil nil nil nil nil nil nil
1332 "
\e$B!!
\e(B" "
\e$B!*
\e(B" "
\e$B!I
\e(B" "
\e$B!t
\e(B" "
\e$B!p
\e(B" "
\e$B!s
\e(B" "
\e$B!u
\e(B" "
\e$B!G
\e(B"
1333 "
\e$B!J
\e(B" "
\e$B!K
\e(B" "
\e$B!v
\e(B" "
\e$B!\
\e(B" "
\e$B!$
\e(B" "
\e$B!]
\e(B" "
\e$B!%
\e(B" "
\e$B!?
\e(B"
1334 "
\e$B#0
\e(B" "
\e$B#1
\e(B" "
\e$B#2
\e(B" "
\e$B#3
\e(B" "
\e$B#4
\e(B" "
\e$B#5
\e(B" "
\e$B#6
\e(B" "
\e$B#7
\e(B"
1335 "
\e$B#8
\e(B" "
\e$B#9
\e(B" "
\e$B!'
\e(B" "
\e$B!(
\e(B" "
\e$B!c
\e(B" "
\e$B!a
\e(B" "
\e$B!d
\e(B" "
\e$B!)
\e(B"
1336 "
\e$B!w
\e(B" "
\e$B#A
\e(B" "
\e$B#B
\e(B" "
\e$B#C
\e(B" "
\e$B#D
\e(B" "
\e$B#E
\e(B" "
\e$B#F
\e(B" "
\e$B#G
\e(B"
1337 "
\e$B#H
\e(B" "
\e$B#I
\e(B" "
\e$B#J
\e(B" "
\e$B#K
\e(B" "
\e$B#L
\e(B" "
\e$B#M
\e(B" "
\e$B#N
\e(B" "
\e$B#O
\e(B"
1338 "
\e$B#P
\e(B" "
\e$B#Q
\e(B" "
\e$B#R
\e(B" "
\e$B#S
\e(B" "
\e$B#T
\e(B" "
\e$B#U
\e(B" "
\e$B#V
\e(B" "
\e$B#W
\e(B"
1339 "
\e$B#X
\e(B" "
\e$B#Y
\e(B" "
\e$B#Z
\e(B" "
\e$B!N
\e(B" "
\e$B!@
\e(B" "
\e$B!O
\e(B" "
\e$B!0
\e(B" "
\e$B!2
\e(B"
1340 "
\e$B!F
\e(B" "
\e$B#a
\e(B" "
\e$B#b
\e(B" "
\e$B#c
\e(B" "
\e$B#d
\e(B" "
\e$B#e
\e(B" "
\e$B#f
\e(B" "
\e$B#g
\e(B"
1341 "
\e$B#h
\e(B" "
\e$B#i
\e(B" "
\e$B#j
\e(B" "
\e$B#k
\e(B" "
\e$B#l
\e(B" "
\e$B#m
\e(B" "
\e$B#n
\e(B" "
\e$B#o
\e(B"
1342 "
\e$B#p
\e(B" "
\e$B#q
\e(B" "
\e$B#r
\e(B" "
\e$B#s
\e(B" "
\e$B#t
\e(B" "
\e$B#u
\e(B" "
\e$B#v
\e(B" "
\e$B#w
\e(B"
1343 "
\e$B#x
\e(B" "
\e$B#y
\e(B" "
\e$B#z
\e(B" "
\e$B!P
\e(B" "
\e$B!C
\e(B" "
\e$B!Q
\e(B" "
\e$B!A
\e(B" nil]
1344 "skk-jisx0208-latin-region
\e$B$G;2>H$9$kJ8;z%F!<%V%k!#
\e(B
1345 \"ascii\" -> \"
\e$B#a#s#c#i#i
\e(B\"
\e$B$N$h$&$JA43QJ8;z$X$NJQ49$r9T$&:]$KMxMQ$9$k!#
\e(B")
1347 (defconst skk-kanji-len (length "
\e$B$"
\e(B")
1348 "
\e$B4A;z0lJ8;z$ND9$5!#
\e(BMule[1-3]
\e$B$G$O
\e(B 3
\e$B$K$J$k!#
\e(BMule4, XEmacs
\e$B$G$O
\e(B 1
\e$B!#
\e(B")
1350 (defconst skk-hankaku-alist
1351 (if (eq skk-emacs-type 'mule2)
1385 "
\e$BJ8;z%3!<%I$N
\e(B 2
\e$BHVL\$N%P%$%H$H$=$NJ8;z$KBP1~$9$k
\e(B ascii
\e$BJ8;z
\e(B \(char\)
\e$B$H$NO"A[%j%9%H!#
\e(B
1386 Mule l
\e$B$b$7$/$O
\e(B Mule 2
\e$B$r;HMQ$9$k>l9g$K
\e(B skk-latin-region
\e$B$G;2>H$9$k!#
\e(B
1387 Mule-2.3
\e$BE:IU$N
\e(B egg.el
\e$B$h$j%3%T!<$7$?!#
\e(B")
1389 (defconst skk-kana-cleanup-command-list
1390 '(skk-delete-backward-char skk-insert skk-previous-candidate))
1392 (defvar skk-rule-tree nil
1393 "
\e$B%m!<%^;z
\e(B ->
\e$B$+$JJQ49$N>uBVA+0\5,B'$rI=$9%D%j!<$N=i4|>uBV!#
\e(B
1394 skk-mode
\e$B$N5/F0;~$KKh2s
\e(B skk-rom-kana-base-rule-list
\e$B$H
\e(B
1395 skk-rom-kana-rule-list
\e$B$+$iLZ$N7A$K%3%s%Q%$%k$5$l$k!#
\e(B")
1397 (defvar skk-insert-new-word-function nil
1398 "
\e$B8uJd$rA^F~$7$?$H$-$K
\e(B funcall
\e$B$5$l$k4X?t$rJ]B8$9$kJQ?t!#
\e(B")
1400 (skk-deflocalvar skk-input-mode-string skk-hiragana-mode-string
1401 "SKK
\e$B$NF~NO%b!<%I$r<($9J8;zNs!#
\e(Bskk-mode
\e$B5/F0;~$O!"
\e(Bskk-hiragana-mode-string
\e$B!#
\e(B")
1403 (defvar skk-isearch-message nil
1404 "skk-isearch
\e$B4X?t$r%3!<%k$9$k$?$a$N%U%i%0!#
\e(B
1405 Non-nil
\e$B$G$"$l$P!"
\e(Bskk-isearch-message
\e$B4X?t$r%3!<%k$9$k!#
\e(B")
1407 (defvar skk-mode-invoked nil
1408 "Non-nil
\e$B$G$"$l$P!"
\e(BEmacs
\e$B$r5/F08e4{$K
\e(B skk-mode
\e$B$r5/F0$7$?$3$H$r<($9!#
\e(B")
1410 (defvar skk-kakutei-count 0
1411 "
\e$BJQ498uJd$r3NDj$7$?%+%&%s%H$rJ];}$9$kJQ?t!#
\e(B
1412 skk-record-file
\e$B$N
\e(B \"
\e$B3NDj
\e(B:\"
\e$B9`L\$N%+%&%s%?!<!#
\e(B")
1414 (defvar skk-touroku-count 0
1415 "
\e$B<-=qEPO?$7$?%+%&%s%H$rJ];}$9$kJQ?t!#
\e(B
1416 skk-record-file
\e$B$N
\e(B \"
\e$BEPO?
\e(B:\"
\e$B9`L\$N%+%&%s%?!<!#
\e(B")
1418 (defvar skk-update-jisyo-count 0
1419 "
\e$B<-=q$r99?7$7$?2s?t!#
\e(B
1420 \e$B$3$N%+%&%s%?!<$N?t;z$,
\e(B skk-jisyo-save-count
\e$B0J>e$H$J$C$?$H$-$K%f!<%6!<<-=q$N%*!<
\e(B
1421 \e$B%H%;!<%V$,9T$J$o$l$k!#
\e(B
1422 \e$B<-=q$N%;!<%V$,9T$J$o$l$k$H%$%K%7%c%i%$%:$5$l$k!#
\e(B")
1424 (defvar skk-minibuffer-origin-mode nil
1425 "
\e$BF~NO%b!<%I$rI=$o$9%7%s%\%k!#
\e(B
1426 \e$BM-8z$JCM$O!"
\e(B`hiragana', `katakana', `abbrev', `latin', `jisx0208-latin'
\e$B$b$7$/$O
\e(B
1427 nil
\e$B$N$$$:$l$+!#
\e(B")
1429 ;; ---- buffer local variables
1430 ;; <
\e$B%U%i%0N`
\e(B>
1431 ;;(skk-deflocalvar skk-current-henkan-data
1433 ;; ;; global variables
1434 ;; ;;
\e$B%P%C%U%!%m!<%+%kJQ?t$N%G%#%U%)%k%HCM$r@_Dj$9$k$H!"$3$l$rD>@\=q49$($7$?$H
\e(B
1435 ;; ;;
\e$B$-$KB>$N%P%C%U%!$+$i8+$($kCM$bJQ$o$C$F$7$^$&!#
\e(Bglobal
\e$B$J%U%i%0$O$3$l$rMx
\e(B
1436 ;; ;;
\e$BMQ$7$F%G%#%U%)%k%HCMM?$($F$*$/!#
\e(B
1437 ;; (invoked . nil) ; Emacs
\e$B$r5/F08e4{$K
\e(B skk-mode
\e$B$r5/F0$7$?$3$H$r<($9
\e(B
1438 ;; (isearch-message . nil) ; skk-isearch
\e$B4X?t$r%3!<%k$9$k$?$a$N%U%i%0
\e(B
1439 ;; (kakutei-count . 0) ;
\e$BJQ498uJd$r3NDj$7$?%+%&%s%H$rJ];}$9$kJQ?t
\e(B
1440 ;; (minibuffer-origin-mode . nil) ;
\e$BF~NO%b!<%I$rI=$o$9%7%s%\%k
\e(B
1441 ;; (touroku-count . 0) ;
\e$B<-=qEPO?$7$?%+%&%s%H$rJ];}$9$kJQ?t
\e(B
1442 ;; (update-jisyo-count . 0) ;
\e$B<-=q$r99?7$7$?2s?t
\e(B
1443 ;; ;; buffer-local variables.
1444 ;; ;;(current-search-prog-list . nil) ;skk-search-prog-list
\e$B$N8=:_$NCM$rJ]B8$9$k%j%9%H
\e(B
1445 ;; ;;(exit-show-candidates . nil) ;
\e$B%_%K%P%C%U%!$G8uJd$r<!!9$KI=<($7$F!"8uJd$,?T$-$?$3$H$r<($9
\e(B
1446 ;; ;;(henkan-active . nil) ;
\e$B"'%b!<%I
\e(B (
\e$BJQ49Cf
\e(B)
\e$B$G$"$k$3$H$r<($9
\e(B
1447 ;; ;;(henkan-count . -1) ;skk-henkan-list
\e$B$N%j%9%H$N%$%s%G%/%9$G8=:_$N8uJd$r:9$9$b$N
\e(B
1448 ;; ;;(henkan-end-point . nil) ;
\e$BJQ49=*N;%]%$%s%H$r<($9%^!<%+!<
\e(B
1449 ;; ;;(henkan-in-minibuff-flag . nil) ;
\e$B%_%K%P%C%U%!$G<-=qEPO?$r9T$C$?$H$-$K$3$N%U%i%0$,N)$D
\e(B
1450 ;; ;;(henkan-key . nil) ;
\e$BJQ49$9$Y$-8+=P$78l
\e(B
1451 ;; ;;(henkan-list . nil) ;
\e$BJQ497k2L$N8uJd$N%j%9%H
\e(B
1452 ;; ;;(henkan-okurigana . nil) ;
\e$B8=:_$NJQ49$NAw$j2>L>ItJ,
\e(B
1453 ;; ;;(henkan-on . nil) ;
\e$B"&%b!<%I
\e(B (
\e$BJQ49BP>]$NJ8;zNs7hDj$N$?$a$N%b!<%I
\e(B)
\e$B$G$"$k$3$H$r<($9
\e(B
1454 ;; ;;(henkan-start-point . nil) ;
\e$BJQ493+;O%]%$%s%H$r<($9%^!<%+!<
\e(B
1455 ;; ;;(kakutei-flag . nil) ;
\e$B3NDj$7$FNI$$8uJd$r8+$D$1$?>uBV$G$"$k$3$H$r;X$9
\e(B
1456 ;; ;;(kana-start-point . nil) ;
\e$B$+$JJ8;z$N3+;O%]%$%s%H$r<($9%^!<%+!<
\e(B
1457 ;; ;;(katakana . nil) ;
\e$BF~NO%b!<%I$,%+%J%b!<%I$G$"$k$3$H$r<($9
\e(B
1458 ;; ;;(okuri-ari-max . nil) ;
\e$B<-=q$NAw$jM-$j%(%s%H%j$N=*N;E@$r<($9%P%C%U%!%]%$%s%H
\e(B
1459 ;; ;;(okuri-ari-min . nil) ;
\e$B<-=q$NAw$jM-$j%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H
\e(B
1460 ;; ;;(okuri-char . nil) ;
\e$BJQ49$9$Y$-8l$NAw$j2>L>$NItJ,$N%W%l%U%#%C%/%9
\e(B
1461 ;; ;;(okuri-index-max . -1) ;skk-henkan-list
\e$B$N%$%s%G%/%9$G<+F0Aw$j=hM}!"$b$7$/$O%5JQ8!:w$G8!:w$7$?:G8e$N8uJd$r;X$9$b$N
\e(B
1462 ;; ;;(okuri-index-min . -1) ;skk-henkan-list
\e$B$N%$%s%G%/%9$G<+F0Aw$j=hM}!"$b$7$/$O%5JQ8!:w$G8!:w$7$?:G=i$N8uJd$r;X$9$b$N
\e(B
1463 ;; ;;(okuri-nasi-min . nil) ;
\e$B<-=q$NAw$j$J$7%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H
\e(B
1464 ;; ;;(okurigana . nil) ;
\e$BAw$j2>L>ItJ,$,F~NOCf$G$"$k$3$H$r<($9
\e(B
1465 ;; ;;(okurigana-start-point . nil) ;
\e$BAw$j2>L>$N3+;O%]%$%s%H$r<($9%^!<%+!<
\e(B
1466 ;; ;;(prefix . "") ;
\e$BF~NO$9$k$+$J$r7hDj$9$k$?$a$N%W%l%U%#%C%/%9
\e(B
1467 ;; ;;(previous-point . nil) ;
\e$B$3$NJQ?t$KJ];}$5$l$k%]%$%s%H$,8=:_$N%]%$%s%H$H0[$J$k>l9g!"
\e(Bskk-with-point-move
\e$B$,;H$o$l$F$$$J$$%3%^%s%I$rF0:n$5$;$k$H!"
\e(Bskk-after-point-move
\e$B$,:nF0$9$k
\e(B
1468 ;; ;;(self-insert-non-undo-count . 1) ;skk-insert
\e$B$b$7$/$O
\e(B skk-jisx0208-latin-insert
\e$B$GO"B3F~NO$7$?J8;z?t$rI=$o$9%+%&%s%?!<
\e(B
1471 (skk-deflocalvar skk-mode nil
1472 "Non-nil
\e$B$G$"$l$P!"%+%l%s%H%P%C%U%!$G8=:_
\e(B skk-mode
\e$B$r5/F0$7$F$$$k$3$H$r<($9!#
\e(B")
1474 (skk-deflocalvar skk-latin-mode nil
1475 "Non-nil
\e$B$G$"$l$P!"F~NO%b!<%I$,
\e(B ASCII
\e$B%b!<%I$G$"$k$3$H$r<($9!#
\e(B")
1477 (skk-deflocalvar skk-j-mode nil
1478 "Non-nil
\e$B$G$"$l$P!"F~NO%b!<%I$,$+$J!&%+%J%b!<%I$G$"$k$3$H$r<($9!#
\e(B")
1480 (skk-deflocalvar skk-katakana nil
1481 "Non-nil
\e$B$G$"$l$P!"F~NO%b!<%I$,%+%J%b!<%I$G$"$k$3$H$r<($9!#
\e(B
1482 \"(and (not skk-katakana) skk-j-mode))\"
\e$B$,
\e(B t
\e$B$G$"$l$P!"$+$J%b!<%I$G$"$k$3$H$r
\e(B
1485 (skk-deflocalvar skk-jisx0208-latin-mode nil
1486 "Non-nil
\e$B$G$"$l$P!"F~NO%b!<%I$,A41Q%b!<%I$G$"$k$3$H$r<($9!#
\e(B")
1488 (skk-deflocalvar skk-abbrev-mode nil
1489 "Non-nil
\e$B$G$"$l$P!"F~NO%b!<%I$,
\e(B SKK abbrev
\e$B%b!<%I$G$"$k$3$H$r<($9!#
\e(B")
1491 (skk-deflocalvar skk-okurigana nil
1492 "Non-nil
\e$B$G$"$l$P!"Aw$j2>L>ItJ,$,F~NOCf$G$"$k$3$H$r<($9!#
\e(B")
1494 (skk-deflocalvar skk-henkan-on nil
1495 "Non-nil
\e$B$G$"$l$P!""&%b!<%I
\e(B \(
\e$BJQ49BP>]$NJ8;zNs7hDj$N$?$a$N%b!<%I
\e(B\)
\e$B$G$"$k$3$H$r<($9!#
\e(B")
1497 (skk-deflocalvar skk-henkan-active nil
1498 "Non-nil
\e$B$G$"$l$P!""'%b!<%I
\e(B \(
\e$BJQ49Cf
\e(B\)
\e$B$G$"$k$3$H$r<($9!#
\e(B")
1500 (skk-deflocalvar skk-kakutei-flag nil
1501 "Non-nil
\e$B$J$i3NDj$7$FNI$$8uJd$r8+$D$1$?>uBV$G$"$k$3$H$r;X$9!#
\e(B
1502 skk-henkan, skk-search-kakutei-jisyo-file, skk-henkan-show-candidates,
1503 skk-henkan-in-minibuff
\e$B$H
\e(B skk-kakutei-save-and-init-variables
\e$B$GJQ99!";2>H$5$l
\e(B
1506 (skk-deflocalvar skk-exit-show-candidates nil
1507 "
\e$B%_%K%P%C%U%!$G8uJd$r<!!9$KI=<($7$F!"8uJd$,?T$-$?$H$-$K
\e(B non-nil
\e$B$H$J$k!#
\e(B
1508 \e$B$=$NCM$O%j%9%H$G!"
\e(Bcar
\e$B$K
\e(B skk-henkan-show-candidate
\e$B4X?t$G
\e(B while
\e$B%k!<%W$r2s$C
\e(B
1509 \e$B$?2s?t$r<($90l;~JQ?t
\e(B loop
\e$B$NCM$r!"
\e(Bcdr
\e$BIt$K:G8e$K%_%K%P%C%U%!$KI=<($7$?
\e(B 1
\e$B$DA0
\e(B
1510 \e$B$N8uJd72$N:G8e$NMWAG$r;X$9%$%s%G%/%9$,BeF~$5$l$k!#
\e(B
1511 skk-henkan-show-candidates, skk-henkan-in-minibuff
\e$B$H
\e(B
1512 skk-kakutei-save-and-init-variables
\e$B$GJQ99!";2>H$5$l$k!#
\e(B")
1514 ;; <
\e$B%-!<%^%C%W4XO"
\e(B>
1515 (skk-deflocalvar skk-current-rule-tree nil
1516 "
\e$B%m!<%^;z
\e(B ->
\e$B$+$JJQ49$N>uBVA+0\5,B'$rI=$o$9%D%j!<$N8=;~E@$N>uBV!#
\e(B
1517 \e$B%m!<%^;zF~NO$N=i4|$G$O
\e(B skk-rule-tree
\e$B$HF10l$N>uBV$G!"J8;zF~NO$,?J$`$K
\e(B
1518 \e$B$D$l!"LZ$r$?$I$C$F$f$/>uBV$NA+0\$rI=$9!#
\e(B")
1520 ;; <
\e$B<-=q4XO"$NJQ?t
\e(B>
1521 (skk-deflocalvar skk-okuri-ari-min nil
1522 "SKK
\e$B<-=q$NAw$jM-$j%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H!#
\e(B")
1524 (skk-deflocalvar skk-okuri-ari-max nil
1525 "SKK
\e$B<-=q$NAw$jM-$j%(%s%H%j$N=*N;E@$r<($9%P%C%U%!%]%$%s%H!#
\e(B
1526 skk-jisyo
\e$B$N%P%C%U%!$G$O<-=q$N99?7$NI,MW$,$"$k$?$a$K%^!<%+!<$,BeF~$5$l$k!#
\e(B")
1528 (skk-deflocalvar skk-okuri-nasi-min nil
1529 "SKK
\e$B<-=q$NAw$j$J$7%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H!#
\e(B
1530 skk-jisyo
\e$B$N%P%C%U%!$G$O<-=q$N99?7$NI,MW$,$"$k$?$a$K%^!<%+!<$,BeF~$5$l$k!#
\e(B")
1533 (skk-deflocalvar skk-mode-line nil
1534 "SKK
\e$B$N%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs!#
\e(B
1535 skk-mode-string, skk-hiragana-mode-string, skk-katakana-mode-string
1536 and skk-jisx0208-latin-mode-string
\e$B$N$$$:$l$+$,BeF~$5$l$k!#
\e(B")
1538 (skk-deflocalvar skk-previous-point nil
1539 "skk-with-point-move
\e$B4XO"JQ?t!#
\e(B
1540 \e$B$3$NJQ?t$KJ];}$5$l$k%]%$%s%H$,8=:_$N%]%$%s%H$H0[$J$k>l9g!"
\e(Bskk-with-point-move
\e$B$,
\e(B
1541 \e$B;H$o$l$F$$$J$$%3%^%s%I$rF0:n$5$;$k$H!"
\e(Bskk-after-point-move
\e$B$,:nF0$9$k!#
\e(B")
1543 ;; ""
\e$B$KBP1~$7$?%(%s%H%j$,
\e(B skk-roma-kana-[aiue]
\e$B$K$"$k$?$a!"
\e(B""
\e$B$r
\e(B nil
\e$B$GBeMQ
\e(B
1544 ;;
\e$B$G$-$J$$!#
\e(B
1545 (skk-deflocalvar skk-prefix ""
1546 "
\e$BF~NO$9$k$+$J$r7hDj$9$k$?$a$N%W%l%U%#%C%/%9!#
\e(B")
1548 (skk-deflocalvar skk-henkan-start-point nil
1549 "
\e$BJQ493+;O%]%$%s%H$r<($9%^!<%+!<!#
\e(B")
1551 (skk-deflocalvar skk-henkan-end-point nil
1552 "
\e$BJQ49=*N;%]%$%s%H$r<($9%^!<%+!<!#
\e(B")
1554 (skk-deflocalvar skk-kana-start-point nil
1555 "
\e$B$+$JJ8;z$N3+;O%]%$%s%H$r<($9%^!<%+!<!#
\e(B")
1557 (skk-deflocalvar skk-okurigana-start-point nil
1558 "
\e$BAw$j2>L>$N3+;O%]%$%s%H$r<($9%^!<%+!<!#
\e(B")
1560 (skk-deflocalvar skk-henkan-key nil
1561 "
\e$BJQ49$9$Y$-8+=P$78l!#
\e(B
1562 \e$BNc$($P!"
\e(B\"
\e$B"&$+$J
\e(B\"
\e$B$rJQ49$9$l$P!"
\e(Bskk-henkan-key
\e$B$K$O
\e(B \"
\e$B$+$J
\e(B\"
\e$B$,BeF~$5$l$k!#
\e(B
1563 \"
\e$B"&$o$i
\e(B*
\e$B$&
\e(B\"
\e$B$N$h$&$JAw$j$"$j$NJQ49$N>l9g$K$O!"
\e(B\"
\e$B$o$i
\e(Bu\"
\e$B$N$h$&$K!"4A;zItJ,$N
\e(B
1564 \e$BFI$_$,$J
\e(B +
\e$BAw$j2>L>$N:G=i$NJ8;z$N%m!<%^;z$N%W%l%U%#%C%/%9$,BeF~$5$l$k!#
\e(B")
1566 (skk-deflocalvar skk-okuri-char nil
1567 "
\e$BJQ49$9$Y$-8l$NAw$j2>L>$NItJ,$N%W%l%U%#%C%/%9!#
\e(B
1568 \e$BNc$($P!"
\e(B\"
\e$B$*$/
\e(B*
\e$B$j
\e(B\"
\e$B$rJQ49$9$k$H$-$O!"
\e(Bskk-okuri-char
\e$B$O
\e(B \"r\"
\e$B!#
\e(B
1569 skk-okuri-char
\e$B$,
\e(B non-nil
\e$B$G$"$l$P!"Aw$j$"$j$NJQ49$G$"$k$3$H$r<($9!#
\e(B")
1571 (skk-deflocalvar skk-henkan-okurigana nil
1572 "
\e$B8=:_$NJQ49$NAw$j2>L>ItJ,!#
\e(B
1573 \e$BNc$($P!"
\e(B\"
\e$B"&$&$^$l
\e(B*
\e$B$k
\e(B\"
\e$B$rJQ49$9$l$P!"
\e(Bskk-henkan-okurigana
\e$B$K$O
\e(B \"
\e$B$k
\e(B\"
\e$B$,BeF~
\e(B
1576 (skk-deflocalvar skk-last-kakutei-henkan-key nil
1577 "
\e$B3NDj<-=q$K$h$j:G8e$K3NDj$7$?$H$-$N8+=P$78l!#
\e(B
1578 \e$B3NDj<-=q$K$h$k3NDj$ND>8e$K
\e(B x
\e$B%-!<$r2!$9$H3NDj$,%"%s%I%%$5$l$F!"3NDjA0$N>uBV$G
\e(B
1579 \e$B$3$N8+=P$78l$,%+%l%s%H%P%C%U%!$KA^F~$5$l$k!#
\e(B")
1581 (skk-deflocalvar skk-henkan-list nil
1582 "
\e$BJQ497k2L$N8uJd$N%j%9%H!#
\e(B
1583 \e$BNc$($P!"
\e(B\"
\e$B"&$J
\e(B*
\e$B$/
\e(B\"
\e$B$H$$$&JQ49$9$l$P!"
\e(Bskk-henkan-list
\e$B$O
\e(B
1584 (\"
\e$BLD
\e(B\" \"
\e$B5c
\e(B\" \"
\e$BL5
\e(B\" \"
\e$BK4
\e(B\")
\e$B$N$h$&$K$J$k!#
\e(B")
1586 (skk-deflocalvar skk-henkan-count -1
1587 "skk-henkan-list
\e$B$N%j%9%H$N%$%s%G%/%9$G8=:_$N8uJd$r:9$9$b$N!#
\e(B")
1589 (skk-deflocalvar skk-self-insert-non-undo-count 1
1590 "skk-insert
\e$B$b$7$/$O
\e(B skk-jisx0208-latin-insert
\e$B$GO"B3F~NO$7$?J8;z?t$rI=$o$9%+%&%s%?!<!#
\e(B
1591 Emacs
\e$B$N%*%j%8%J%k$NF0:n$G$O!"
\e(Bself-insert-command
\e$B$K%P%$%s%I$5$l$?%-!<F~NO$O!"
\e(B
1592 \e$BO"B3
\e(B 20
\e$B2s$^$G$,
\e(B 1
\e$B$D$N%"%s%I%%$NBP>]$H$J$k!#$3$NF0:n$r%(%_%e%l!<%H$9$k$?$a$N
\e(B
1593 \e$B%+%&%s%?!<!#$3$N%+%&%s%?!<$,!"
\e(B20
\e$B0J2<$G$"$k$H$-$O!"F~NO$N$?$S$K
\e(B
1594 cancel-undo-boundary
\e$B$,%3!<%k$5$l$k!#
\e(B")
1596 (skk-deflocalvar skk-current-search-prog-list nil
1597 "skk-search-prog-list
\e$B$N8=:_$NCM$rJ]B8$9$k%j%9%H!#
\e(B
1598 \e$B:G=i$NJQ49;~$O
\e(B skk-search-prog-list
\e$B$NA4$F$NCM$rJ];}$7!"JQ49$r7+$jJV$9$?$S$K
\e(B 1
1599 \e$B$D$E$DC;$/$J$C$F$f$/!#
\e(B")
1601 ;; for skk-undo-kakutei
1602 (skk-deflocalvar skk-last-henkan-data nil
1603 "
\e$B:G8e$K9T$J$C$?JQ49$K4X$9$k%G!<%?$N%(!<%j%9%H!#
\e(B
1604 \e$B%G%#%U%)%k%H$N%-!<$O!"
\e(Bhenkan-key, henkan-okurigana,
1605 okuri-char, henkan-list
\e$B$N3F%7%s%\%k!#
\e(B
1606 \(skk-num
\e$B$r
\e(B require
\e$B$7$F$$$k$H$-$O!"
\e(Bnum-list
\e$B$,DI2C$5$l$k
\e(B\)
\e$B!#
\e(B")
1608 (skk-deflocalvar skk-henkan-overlay nil
1609 "
\e$B8uJd$rI=<($9$k$H$-$K;HMQ$9$k
\e(B Overlay
\e$B!#
\e(B")
1611 (skk-deflocalvar skk-henkan-in-minibuff-flag nil
1612 "
\e$B%_%K%P%C%U%!$G<-=qEPO?$r9T$C$?$H$-$K$3$N%U%i%0$,N)$D!#
\e(B
1613 skk-remove-common
\e$B$G;2>H$5$l$k!#
\e(B")
1615 (skk-deflocalvar skk-okuri-index-min -1
1616 "skk-henkan-list
\e$B$N%$%s%G%/%9$G<+F0Aw$j=hM}!"$b$7$/$O%5JQ8!:w$G8!:w$7$?:G=i$N8uJd$r;X$9$b$N!#
\e(B")
1618 (skk-deflocalvar skk-okuri-index-max -1
1619 "skk-henkan-list
\e$B$N%$%s%G%/%9$G<+F0Aw$j=hM}!"$b$7$/$O%5JQ8!:w$G8!:w$7$?:G8e$N8uJd$r;X$9$b$N!#
\e(B")
1622 'minor-mode-map-alist
1623 (list (cons 'skk-latin-mode skk-latin-mode-map)
1624 (cons 'skk-abbrev-mode skk-abbrev-mode-map)
1625 (cons 'skk-j-mode skk-j-mode-map)
1626 (cons 'skk-jisx0208-latin-mode skk-jisx0208-latin-mode-map)))
1629 ;; defadvice
\e$B$GDj5A$9$k$H!"8e$G%f!<%6!<$,?75,$N5!G=$rIU$1$F99$K
\e(B defadvice
\e$B$7$F
\e(B
1630 ;;
\e$B$b$A$c$s$HF0$/!#
\e(B
1632 ;; cover to original functions.
1634 (defadvice keyboard-quit (around skk-ad activate)
1635 "
\e$B"'%b!<%I$G$"$l$P!"8uJd$NI=<($r$d$a$F"&%b!<%I$KLa$9
\e(B (
\e$B8+=P$78l$O;D$9
\e(B)
\e$B!#
\e(B
1636 \e$B"&%b!<%I$G$"$l$P!"8+=P$78l$r:o=|$9$k!#
\e(B
1637 \e$B>e5-$N$I$A$i$N%b!<%I$G$b$J$1$l$P
\e(B keyboard-quit
\e$B$HF1$8F0:n$r$9$k!#
\e(B"
1639 ;; SKK is not invoked in the current buffer.
1640 ((not skk-mode) ad-do-it)
1641 ;;
\e$B"#
\e(B mode (Kakutei input mode).
1642 ((not skk-henkan-on)
1643 (cond ((skk-get-prefix skk-current-rule-tree)
1644 (skk-erase-prefix 'clean))
1646 ;;
\e$B"'
\e(B mode (Conversion mode).
1648 (setq skk-henkan-count 0)
1649 (if (and skk-delete-okuri-when-quit skk-henkan-okurigana)
1650 (let ((count (/ (length skk-henkan-okurigana) skk-kanji-len)))
1651 (skk-previous-candidate)
1652 ;;
\e$B$3$3$G$O
\e(B delete-backward-char
\e$B$KBhFs0z?t$rEO$5$J$$J}$,%Y%?!<!)
\e(B
1653 (delete-backward-char count))
1654 (skk-previous-candidate)))
1655 ;;
\e$B"&
\e(B mode (Midashi input mode).
1656 (t (skk-erase-prefix 'clean)
1657 (and (> (point) skk-henkan-start-point)
1658 (delete-region (point) skk-henkan-start-point))
1661 (defadvice abort-recursive-edit (around skk-ad activate)
1662 "
\e$B"'%b!<%I$G$"$l$P!"8uJd$NI=<($r$d$a$F"&%b!<%I$KLa$9
\e(B (
\e$B8+=P$78l$O;D$9
\e(B)
\e$B!#
\e(B
1663 \e$B"&%b!<%I$G$"$l$P!"8+=P$78l$r:o=|$9$k!#
\e(B
1664 \e$B>e5-$N$I$A$i$N%b!<%I$G$b$J$1$l$P
\e(B abort-recursive-edit
\e$B$HF1$8F0:n$r$9$k!#
\e(B"
1665 (skk-remove-minibuffer-setup-hook
1666 'skk-j-mode-on 'skk-setup-minibuffer
1667 (function (lambda () (add-hook 'pre-command-hook 'skk-pre-command nil 'local))))
1668 (cond ((not skk-mode) ad-do-it)
1669 ((not skk-henkan-on)
1670 (cond ((skk-get-prefix skk-current-rule-tree)
1671 (skk-erase-prefix 'clean))
1674 (setq skk-henkan-count 0)
1675 (if (and skk-delete-okuri-when-quit skk-henkan-okurigana)
1676 (let ((count (/ (length skk-henkan-okurigana) skk-kanji-len)))
1677 (skk-previous-candidate)
1678 ;;
\e$B$3$3$G$O
\e(B delete-backward-char
\e$B$KBhFs0z?t$rEO$5$J$$J}$,%Y%?!<!)
\e(B
1679 (delete-backward-char count))
1680 (skk-previous-candidate)))
1681 (t (skk-erase-prefix 'clean)
1682 (and (> (point) skk-henkan-start-point)
1683 (delete-region (point) skk-henkan-start-point))
1686 (defadvice newline (around skk-ad activate)
1687 "skk-egg-like-newline
\e$B$,
\e(B non-nil
\e$B$@$C$?$i!"JQ49Cf$N
\e(B newline
\e$B$G3NDj$N$_9T$$!"2~9T$7$J$$!#
\e(B"
1688 (if (not (or skk-j-mode skk-abbrev-mode))
1691 ;;(arg (ad-get-arg 0))
1692 ;; skk-kakutei
\e$B$r<B9T$9$k$H
\e(B skk-henkan-on
\e$B$NCM$,L5>r7o$K
\e(B nil
\e$B$K$J$k
\e(B
1693 ;;
\e$B$N$G!"J]B8$7$F$*$/I,MW$,$"$k!#
\e(B
1694 (no-newline (and skk-egg-like-newline skk-henkan-on))
1695 (auto-fill-function (and (interactive-p) auto-fill-function)))
1696 ;; fill
\e$B$5$l$F$b
\e(B nil
\e$B$,5"$C$F$/$k
\e(B :-<
1698 ;; (setq arg (1- arg)))
1700 ;; (let ((opos (point)))
1701 ;; ;; skk-kakutei (skk-do-auto-fill)
\e$B$K$h$C$F9T$,@^$jJV$5$l$?$i
\e(B arg
\e$B$r
\e(B 1
\e$B$D8:$i$9!#
\e(B
1703 ;; (if (and (not (= opos (point))) (integerp arg))
1704 ;; (ad-set-arg 0 (1- arg)))))
1705 (and skk-mode (skk-kakutei))
1706 (if (not no-newline)
1709 (defadvice newline-and-indent (around skk-ad activate)
1710 "skk-egg-like-newline
\e$B$,
\e(B non-nil
\e$B$@$C$?$i!"JQ49Cf$N
\e(B newline-and-indent
\e$B$G3NDj$N$_9T$$!"2~9T$7$J$$!#
\e(B"
1711 (if (not (or skk-j-mode skk-abbrev-mode))
1713 (let ((no-newline (and skk-egg-like-newline skk-henkan-on))
1714 (auto-fill-function (and (interactive-p) auto-fill-function)))
1715 (and skk-mode (skk-kakutei))
1716 (or no-newline ad-do-it))))
1718 (defadvice exit-minibuffer (around skk-ad activate)
1719 "skk-egg-like-newline
\e$B$,
\e(B non-nil
\e$B$@$C$?$i!"JQ49Cf$N
\e(B exit-minibuffer
\e$B$G3NDj$N$_9T$&!#
\e(B"
1720 (skk-remove-minibuffer-setup-hook
1721 'skk-j-mode-on 'skk-setup-minibuffer
1722 (function (lambda ()
1723 (add-hook 'pre-command-hook 'skk-pre-command nil 'local))))
1724 (if (not (or skk-j-mode skk-abbrev-mode))
1726 (let ((no-newline (and skk-egg-like-newline skk-henkan-on)))
1727 (and skk-mode (skk-kakutei))
1728 (or no-newline ad-do-it))))
1730 (defadvice picture-mode-exit (before skk-ad activate)
1731 "SKK
\e$B$N%P%C%U%!%m!<%+%kJQ?t$rL58z$K$7!"
\e(Bpicture-mode-exit
\e$B$r%3!<%k$9$k!#
\e(B
1732 picture-mode
\e$B$+$i=P$?$H$-$K$=$N%P%C%U%!$G
\e(B SKK
\e$B$r@5>o$KF0$+$9$?$a$N=hM}!#
\e(B"
1733 (and skk-mode (skk-kill-local-variables)))
1735 (defadvice undo (before skk-ad activate)
1736 "SKK
\e$B%b!<%I$,
\e(B on
\e$B$J$i
\e(B skk-self-insert-non-undo-count
\e$B$r=i4|2=$9$k!#
\e(B"
1737 (and skk-mode (setq skk-self-insert-non-undo-count 0)))
1739 ;;; XXX interactive subr with args.
1740 (defadvice kill-buffer (before skk-ad activate)
1741 "SKK
\e$B$N"'%b!<%I$@$C$?$i!"3NDj$7$F$+$i%P%C%U%!$r%-%k$9$k!#
\e(B
1742 \e$B%P%C%U%!$N%-%k8e!"
\e(BSKK
\e$B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#
\e(B"
1743 (interactive "bKill buffer: ")
1744 (and skk-mode skk-henkan-on (interactive-p) (skk-kakutei)))
1746 (defadvice save-buffers-kill-emacs (before skk-ad activate)
1747 (run-hooks 'skk-before-kill-emacs-hook))
1749 (if (eq skk-emacs-type 'xemacs)
1750 ;; XEmacs has minibuffer-keyboard-quit that has nothing to do with delsel.
1751 (defadvice minibuffer-keyboard-quit (around skk-ad activate)
1752 (skk-remove-minibuffer-setup-hook
1753 'skk-j-mode-on 'skk-setup-minibuffer
1754 (function (lambda ()
1755 (add-hook 'pre-command-hook 'skk-pre-command nil 'local))))
1756 (cond ((not skk-mode) ad-do-it)
1757 ((not skk-henkan-on)
1758 (cond ((skk-get-prefix skk-current-rule-tree)
1759 (skk-erase-prefix 'clean))
1762 (setq skk-henkan-count 0)
1763 (if (and skk-delete-okuri-when-quit skk-henkan-okurigana)
1764 (let ((count (/ (length skk-henkan-okurigana) skk-kanji-len)))
1765 (skk-previous-candidate)
1766 ;;
\e$B$3$3$G$O
\e(B delete-backward-char
\e$B$KBhFs0z?t$rEO$5$J$$J}$,%Y%?!<!)
\e(B
1767 (delete-backward-char count))
1768 (skk-previous-candidate)))
1769 (t (skk-erase-prefix 'clean)
1770 (and (> (point) skk-henkan-start-point)
1771 (delete-region (point) skk-henkan-start-point))
1773 (defadvice minibuffer-keyboard-quit (around skk-ad activate)
1776 (not (and delete-selection-mode transient-mark-mode mark-active)))
1783 (defun skk-mode (&optional arg)
1784 "
\e$BF|K\8lF~NO%b!<%I!#
\e(B
1785 \e$B%^%$%J!<%b!<%I$N0l<o$G!"%*%j%8%J%k$N%b!<%I$K$O1F6A$rM?$($J$$!#
\e(B
1786 \e$BIi$N0z?t$rM?$($k$H
\e(B SKK
\e$B%b!<%I$+$iH4$1$k!#
\e(B
1788 An input mode for Japanese, converting romanized phonetic strings to kanji.
1790 A minor mode, it should not affect the use of any major mode or
1791 orthogonal minor modes.
1793 In the initial SKK mode, hiragana submode, the mode line indicator is
1794 \"
\e$B$+$J
\e(B\". Lowercase romaji entry is automatically converted to
1795 hiragana where possible. The lowercase characters `q' and `l' change
1796 submodes of SKK, and `x' is used as a prefix indicating a small kana.
1798 `q' is used to toggle between hiragana and katakana \(mode line
1799 indicator \"
\e$B%+%J
\e(B\"\) entry submodes.
1801 `l' is used to enter ASCII submode \(mode line indicator \"SKK\"\).
1802 Uppercase `L' enters JISX0208 latin \(wide ASCII\) submode \(mode line
1803 indicator \"
\e$BA41Q
\e(B\"\). `\C-j' returns to hiragana submode from either
1806 Kanji conversion is complex, but the basic principle is that the user
1807 signals the appropriate stem to be matched against dictionary keys by
1808 the use of uppercase letters. Because SKK does not use grammatical
1809 information, both the beginning and the end of the stem must be marked.
1811 For non-inflected words \(eg, nouns\) consisting entirely of kanji, the
1812 simplest way to invoke conversion is to enter the reading of the kanji,
1813 the first character only in uppercase. A leading \"
\e$B"&
\e(B\" indicates that
1814 kanji conversion is in progress. After entering the reading, press
1815 space. This invokes dictionary lookup, and the hiragana reading will be
1816 redisplayed in kanji as the first candidate. Pressing space again gives
1817 the next candidate. Further presses of space produce further candidates,
1818 as well as a list of the next few candidates in the minibuffer. Eg,
1819 \"Benri\" => \"
\e$B"&$Y$s$j
\e(B\", and pressing space produces \"
\e$B"'JXMx
\e(B\" \(the solid
1820 triangle indicates that conversion is in progress\). Backspace steps
1821 through the candidate list in reverse.
1823 A candidate can be accepted by pressing `\C-j', or by entering a
1824 self-inserting character. \(Unlike other common Japanese input methods,
1825 RET not only accepts the current candidate, but also inserts a line
1828 Inflected words \(verbs and adjectives\), like non-inflected words, begin
1829 entry with a capital letter. However, for these words the end of the
1830 kanji string is signaled by capitalizing the next mora. Eg, \"TuyoI\"
1831 => \"
\e$B"'6/$$
\e(B\". If no candidate is available at that point, the inflection
1832 point will be indicated with an asterisk \"*\", and trailing characters
1833 will be displayed until a candidate is recognized. It will be
1834 immediately displayed \(pressing space is not necessary\). Space and
1835 backspace are used to step forward and backward through the list of
1838 For more information, see the `skk' topic in Info. \(Japanese only.\)
1840 A tutorial is available in Japanese or English via \"M-x skk-tutorial\".
1841 Use a prefix argument to choose the language. The default is system-
1844 (setq skk-mode (cond ((null arg) (not skk-mode))
1845 ;; -
\e$B$O
\e(B -1
\e$B$KJQ49$5$l$k!#
\e(B
1846 ((> (prefix-numeric-value arg) 0) t)))
1850 (let ((skk-mode t)) (skk-kakutei))
1852 (and (eq skk-status-indicator 'left)
1853 (setq skk-input-mode-string ""))
1854 (and (eq skk-emacs-type 'xemacs) (easy-menu-remove skk-menu)))
1856 (if (not skk-mode-invoked)
1857 ;; enter skk-mode for the first time in this session
1859 (and (eq skk-emacs-type 'xemacs)
1860 (boundp 'preloaded-file-list)
1861 (member "skk-leim" preloaded-file-list)
1862 ;; require dummy file.
1863 (require 'skk-vars))
1864 (skk-setup-init-file)
1865 (load skk-init-file t)
1866 (skk-setup-modeline)
1867 (require 'skk-autoloads)
1868 (if (or (memq skk-emacs-type '(mule3 mule4))
1869 (and (eq skk-emacs-type 'xemacs)
1871 ;; XEmacs 21 or later.
1872 (> emacs-major-version 20)
1873 ;; XEmacs 20.4 or later.
1874 (> emacs-minor-version 2))))
1875 (require 'skk-leim))
1876 (if skk-use-numeric-conversion (require 'skk-num))
1878 (skk-create-file skk-record-file
1879 "SKK
\e$B$N5-O?MQ%U%!%$%k$r:n$j$^$7$?
\e(B"
1880 "I have created an SKK record file for you"))
1881 (skk-create-file skk-jisyo
1882 "SKK
\e$B$N6u<-=q$r:n$j$^$7$?
\e(B"
1883 "I have created an empty SKK Jisyo file for you")
1885 (setq skk-mode-invoked t)))
1886 ;;
\e$B0J2<$O
\e(B skk-mode
\e$B$KF~$k$?$S$KKhEY%3!<%k$5$l$k%3!<%I!#
\e(B
1887 (and skk-use-viper (require 'skk-viper))
1888 (and (or skk-use-color-cursor skk-use-cursor-change)
1889 (require 'skk-cursor))
1890 ;; .skk
\e$B$G
\e(B skk-kakutei-key
\e$B$NJQ99$,2DG=$K$J$k$h$&$K!#
\e(B
1891 (define-key skk-abbrev-mode-map skk-kakutei-key 'skk-kakutei)
1892 (define-key skk-abbrev-mode-map (char-to-string skk-start-henkan-char)
1894 (define-key skk-abbrev-mode-map (char-to-string skk-try-completion-char)
1895 'skk-try-completion)
1896 (define-key skk-latin-mode-map skk-kakutei-key 'skk-kakutei)
1897 (define-key skk-j-mode-map skk-kakutei-key 'skk-kakutei)
1898 (define-key skk-j-mode-map (char-to-string skk-try-completion-char)
1900 (define-key skk-j-mode-map (char-to-string skk-previous-candidate-char)
1901 'skk-previous-candidate)
1902 (define-key skk-jisx0208-latin-mode-map skk-kakutei-key 'skk-kakutei)
1903 (define-key minibuffer-local-map skk-kakutei-key 'skk-kakutei)
1904 (define-key minibuffer-local-completion-map skk-kakutei-key 'skk-kakutei)
1907 (define-key skk-j-mode-map
1908 (char-to-string skk-start-henkan-with-completion-char)
1909 'skk-start-henkan-with-completion)
1910 (define-key skk-abbrev-mode-map
1911 (char-to-string skk-start-henkan-with-completion-char)
1912 'skk-start-henkan-with-completion)
1913 (define-key skk-j-mode-map
1914 (char-to-string skk-backward-and-set-henkan-point-char)
1915 'skk-backward-and-set-henkan-point)
1916 (define-key skk-jisx0208-latin-mode-map
1917 (char-to-string skk-backward-and-set-henkan-point-char)
1918 'skk-backward-and-set-henkan-point)
1920 (skk-setup-delete-backward-char)
1921 ;; XEmacs doesn't have minibuffer-local-ns-map
1922 (and (boundp 'minibuffer-local-ns-map)
1923 (define-key minibuffer-local-ns-map skk-kakutei-key 'skk-kakutei))
1924 ;; To terminate kana input.
1925 (make-local-hook 'pre-command-hook)
1926 (add-hook 'pre-command-hook 'skk-pre-command nil 'local)
1927 (make-local-hook 'post-command-hook)
1928 (add-hook 'post-command-hook 'skk-after-point-move nil 'local)
1929 (and (eq skk-status-indicator 'left)
1930 (setq skk-input-mode-string skk-hiragana-mode-string))
1932 (and (eq skk-emacs-type 'xemacs) (easy-menu-add skk-menu))
1933 (run-hooks 'skk-mode-hook)))
1936 (defun skk-auto-fill-mode (&optional arg)
1937 "
\e$BF|K\8lF~NO%b!<%I!#<+F0@^$jJV$75!G=IU$-!#
\e(B
1938 \e$B%^%$%J!<%b!<%I$N0l<o$G!"%*%j%8%J%k$N%b!<%I$K$O1F6A$rM?$($J$$!#
\e(B
1939 \e$B@5$N0z?t$rM?$($k$H!"6/@)E*$K
\e(B auto-fill-mode
\e$B5Z$S
\e(B SKK
\e$B%b!<%I$KF~$k!#
\e(B
1940 \e$BIi$N0z?t$rM?$($k$H
\e(B auto-fill-mode
\e$B5Z$S
\e(B SKK
\e$B%b!<%I$+$iH4$1$k!#
\e(B"
1943 (cond ((null arg) (not auto-fill-function))
1944 ((> (prefix-numeric-value arg) 0) t))))
1945 (auto-fill-mode (if auto-fill 1 -1))
1947 (run-hooks 'skk-auto-fill-mode-hook)))
1949 (defun skk-kill-emacs-without-saving-jisyo (&optional query)
1950 "SKK
\e$B<-=q$r%;!<%V$7$J$$$G!"
\e(BEmacs
\e$B$r=*N;$9$k!#
\e(B"
1952 ;; format
\e$B$r0z?t$K;}$?$;$?>l9g$O!"
\e(Bskk-yes-or-no-p
\e$B$r;H$&$H$+$($C$F>iD9$K$J$k!#
\e(B
1954 (format (if skk-japanese-message-and-error
1955 "
\e$B<-=q$NJ]B8$r$;$:$K
\e(B %s
\e$B$r=*N;$7$^$9!#NI$$$G$9$+!)
\e(B"
1956 "Do you really wish to kill %s without saving Jisyo? ")
1957 (cond ((eq skk-emacs-type 'xemacs) "XEmacs")
1959 (let ((buff (skk-get-jisyo-buffer skk-jisyo 'nomsg)))
1960 (ad-disable-advice 'save-buffers-kill-emacs 'before 'skk-ad)
1961 (ad-activate 'save-buffers-kill-emacs)
1962 (remove-hook 'skk-before-kill-emacs-hook 'skk-save-jisyo) ; fail safe.
1964 (progn (set-buffer buff)
1965 (set-buffer-modified-p nil)
1966 (kill-buffer buff)))
1967 (save-buffers-kill-emacs query))))
1969 (defun skk-restart ()
1970 "skk-init-file
\e$B$N:F%m!<%I5Z$S3F<o:F%;%C%H%"%C%W$N8e!"
\e(BSKK
\e$B%b!<%I$r5/F0$9$k!#
\e(B"
1972 (let (skk-mode-invoked) (skk-mode 1)))
1974 (defun skk-regularize ()
1975 ;; SKK
\e$B$NF0:n$N@55,2=$r?^$k$?$a!"FbItJQ?t$d%f!<%6!<JQ?t$ND4@0$r9T$J$&!#
\e(B
1976 (skk-setup-auto-paren)
1978 (skk-compile-rule-list skk-rom-kana-base-rule-list skk-rom-kana-rule-list))
1979 (and (not (featurep 'skk-server))
1980 (or (and (boundp 'skk-servers-list) skk-servers-list)
1981 (or (and (boundp 'skk-server-host) skk-server-host)
1982 (getenv "SKKSERVER")))
1983 (require 'skk-server))
1984 (and (featurep 'skk-server)
1985 ;; skk-search-server
\e$B$O%5!<%P!<$,Mn$A$F$b;H$($k$N$G!"30$5$J$$!#
\e(B
1986 (skk-adjust-search-prog-list-for-server-search 'non-del))
1987 (and skk-auto-okuri-process (skk-adjust-search-prog-list-for-auto-okuri))
1988 (and skk-use-look (require 'skk-look))
1989 (skk-setup-delete-selection-mode)
1990 (skk-adjust-user-option))
1992 (defun skk-setup-delete-backward-char ()
1993 (let ((commands '(backward-delete-char-untabify
1994 backward-delete-char
1995 backward-or-forward-delete-char
1996 delete-backward-char
1997 picture-backward-clear-column
1998 ;; following two are SKK adviced.
1999 ;;viper-del-backward-char-in-insert
2000 ;;vip-del-backward-char-in-insert
2004 (setq keys (where-is-internal (car commands) overriding-local-map)
2005 commands (cdr commands))
2007 (define-key skk-abbrev-mode-map (car keys) 'skk-delete-backward-char)
2008 (define-key skk-j-mode-map (car keys) 'skk-delete-backward-char)
2009 (setq keys (cdr keys))))))
2011 (defun skk-setup-init-file ()
2012 ;; skk-byte-compile-init-file
\e$B$,
\e(B non-nil
\e$B$N>l9g$G!"
\e(Bskk-init-file
\e$B$r%P%$%H%3
\e(B
2013 ;;
\e$B%s%Q%$%k$7$?%U%!%$%k$,B8:_$7$J$$$+!"$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$h$j
\e(B
2014 ;; skk-init-file
\e$B$NJ}$,?7$7$$$H$-$O!"
\e(Bskk-init-file
\e$B$r%P%$%H%3%s%Q%$%k$9$k!#
\e(B
2016 ;; skk-byte-compile-init-file
\e$B$,
\e(B nil
\e$B$N>l9g$G!"
\e(Bskk-init-file
\e$B$r%P%$%H%3%s%Q
\e(B
2017 ;;
\e$B%$%k$7$?%U%!%$%k$h$j
\e(B skk-init-file
\e$B$NJ}$,?7$7$$$H$-$O!"$=$N%P%$%H%3%s%Q%$
\e(B
2018 ;;
\e$B%k:Q%U%!%$%k$r>C$9!#
\e(B
2020 (let* ((init-file (expand-file-name skk-init-file))
2021 (elc (concat init-file
2022 (if (string-match "\\.el$" init-file)
2025 (if skk-byte-compile-init-file
2026 (and (file-exists-p init-file)
2027 (or (not (file-exists-p elc))
2028 (file-newer-than-file-p init-file elc))
2029 (save-window-excursion ; for keep window configuration.
2030 (skk-message "%s
\e$B$r%P%$%H%3%s%Q%$%k$7$^$9!#
\e(B" "Byte-compile %s"
2033 (byte-compile-file init-file)))
2034 (and (file-exists-p init-file)
2036 (file-newer-than-file-p init-file elc)
2037 (delete-file elc))))))
2039 (defun skk-emulate-original-map (arg)
2040 ;;
\e$B%-!<F~NO$KBP$7$F!"
\e(BSKK
\e$B$N%b!<%I$G$O$J$/!"
\e(BEmacs
\e$B$N%*%j%8%J%k$N%-!<3d$jIU$1$G
\e(B
2041 ;;
\e$B%3%^%s%I$r<B9T$9$k!#
\e(B
2042 (let ((prefix-arg arg)
2043 (keys (skk-command-key-sequence (this-command-keys) this-command)))
2045 ;; no alternative commands. may be invoked by M-x.
2047 (let (skk-mode skk-latin-mode skk-j-mode skk-abbrev-mode skk-jisx0208-latin-mode
2049 (setq command (key-binding keys))
2050 (if (eq command this-command)
2051 ;; avoid recursive calling of skk-emulate-original-map.
2053 ;; if no bindings are found, call `undefined'. it's
2054 ;; original behaviour.
2055 (skk-cancel-undo-boundary)
2056 (command-execute (or command (function undefined))))))))
2058 (defun skk-command-key-sequence (key command)
2059 ;; KEY
\e$B$+$i
\e(B universal arguments
\e$B$r<h$j=|$-!"
\e(BCOMMAND
\e$B$r<B9T$9$k%-!<$rJV$9!#
\e(B
2060 ;; `execute-extended-command'
\e$B$K$h$C$F%3%^%s%I$,<B9T$5$l$?>l9g$O!"
\e(Bnil
\e$B$rJV$9!#
\e(B
2061 (while (not (or (zerop (length key))
2062 (eq command (key-binding key))))
2063 (setq key (vconcat (cdr (append key nil)))))
2064 (and (not (zerop (length key))) key))
2066 (defun skk-setup-delete-selection-mode ()
2067 ;; Delete Selection
\e$B%b!<%I$,
\e(B SKK
\e$B$r;H$C$?F|K\8lF~NO$KBP$7$F$b5!G=$9$k$h$&$K
\e(B
2068 ;;
\e$B%;%C%H%"%C%W$9$k!#
\e(B
2069 (and (featurep 'delsel)
2070 (not (get 'skk-insert 'delete-selection))
2071 (mapcar (function (lambda (func) (put func 'delete-selection t)))
2074 skk-input-by-code-or-menu
2078 (defun skk-setup-auto-paren ()
2079 (if (and skk-auto-insert-paren skk-auto-paren-string-alist)
2080 (let ((strlst (mapcar 'char-to-string skk-special-midashi-char-list))
2083 ;; skk-auto-paren-string-alist
\e$B$NCf$+$i!"
\e(Bskk-special-midashi-char-list
2084 ;;
\e$B$NMWAG$K4XO"$9$k$b$N$r<h$j=|$/!#
\e(B
2085 (remove-alist 'skk-auto-paren-string-alist (car strlst))
2086 (setq strlst (cdr strlst)))
2087 (if (null (memq t (mapcar (function
2089 (skk-ascii-char-p (string-to-char (car e)))))
2090 skk-auto-paren-string-alist)))
2092 (setq alist skk-auto-paren-string-alist
2093 rulealst (nconc (mapcar (function (lambda (e) (nth 2 e)))
2094 skk-rom-kana-rule-list)
2095 (mapcar (function (lambda (e) (nth 2 e)))
2096 skk-rom-kana-base-rule-list)))
2098 (setq str (car (car alist)))
2099 (and (skk-ascii-char-p (string-to-char str))
2100 ;;
\e$B=PNOJ8;z$,F~$C$F$$$k%;%k$rD4$Y$F!"$$$:$l$+$N%-!<$K%P%$%s%I
\e(B
2101 ;;
\e$B$5$l$F$$$J$$$+$I$&$+$r3NG'$9$k!#
\e(B
2102 (null (assoc str rulealst))
2103 (null (rassoc str rulealst))
2104 ;;
\e$B3d$jIU$1$h$&$H$7$F$$$k%-!<$,!"2?$+B>$N=PNOJ8;z$K%P%$%s%I$5
\e(B
2105 ;;
\e$B$l$F$$$J$$$+$I$&$+$r3NG'$9$k!#
\e(B
2106 (null (assoc str skk-rom-kana-base-rule-list))
2107 (null (assoc str skk-rom-kana-rule-list))
2108 ;; skk-auto-paren-string-alist
\e$B$N3FMWAG$N
\e(B car
\e$B$NJ8;z$,
\e(B
2109 ;; ascii char
\e$B$G$"$k>l9g$O!"
\e(Bskk-rom-kana-rule-list,
2110 ;; skk-rom-kana-base-rule-list
\e$B$K$=$NJ8;z$r=q$-9~$`
\e(B (
\e$BK\
\e(B
2111 ;;
\e$BMh$O
\e(B ascii char
\e$B$O
\e(B skk-rom-kana-rule-list,
2112 ;; skk-rom-kana-base-rule-list
\e$B$K=q$/I,MW$,$J$$
\e(B ---
2113 ;; skk-emulate-original-map
\e$B$K$h$kF~NO$,9T$J$o$l$k
\e(B ---
2114 ;;
\e$B$,!"
\e(Bskk-auto-paren-string-alist
\e$B$K;XDj$5$l$?BP$K$J$k
\e(B
2115 ;;
\e$BJ8;z$NA^F~$N$?$a$K$O!"%-!<$H$J$kJ8;z$r=q$$$F$*$/I,MW$,
\e(B
2116 ;;
\e$B$"$k
\e(B)
\e$B!#
\e(B
2117 (setq skk-rom-kana-rule-list (cons (list str nil str)
2118 skk-rom-kana-rule-list)))
2119 (setq alist (cdr alist)))))))
2121 (defun skk-adjust-user-option ()
2122 ;;
\e$BN>N)$G$-$J$$%*%W%7%g%s$ND4@0$r9T$J$&!#
\e(B
2123 (and skk-process-okuri-early
2124 ;; skk-process-okuri-early
\e$B$NCM$,
\e(B non-nil
\e$B$G$"$k$H$-$K2<5-$NCM$,
\e(B non-nil
2125 ;;
\e$B$G$"$l$P@5>o$KF0$+$J$$$N$G$3$NJQ?t$NM%@h=g0L$r9b$/$7$?!#
\e(B
2126 (setq skk-kakutei-early nil
2127 skk-auto-okuri-process nil
2128 skk-henkan-okuri-strictly nil
2129 skk-henkan-strict-okuri-precedence nil)))
2131 (defun skk-try-completion (arg)
2132 "
\e$B"&%b!<%I$G8+=P$78l$NJd40$r9T$&!#
\e(B
2133 \e$B$=$l0J30$N%b!<%I$G$O!"%*%j%8%J%k$N%-!<3d$jIU$1$N%3%^%s%I$r%(%_%e%l!<%H$9$k!#
\e(B"
2135 (skk-with-point-move
2136 (if (and skk-henkan-on (not skk-henkan-active))
2138 (setq this-command 'skk-completion)
2139 (skk-completion (not (eq last-command 'skk-completion))))
2140 (skk-emulate-original-map arg))))
2142 (defun skk-latin-mode (arg)
2143 "SKK
\e$B$N%b!<%I$r
\e(B latin (ascii)
\e$B%b!<%I$KJQ99$9$k!#
\e(B"
2146 (skk-latin-mode-on))
2148 (defun skk-jisx0208-latin-mode (arg)
2149 "SKK
\e$B$N%b!<%I$rA43Q1Q;zF~NO%b!<%I$KJQ99$9$k!#
\e(B"
2152 (skk-jisx0208-latin-mode-on))
2154 (defun skk-abbrev-mode (arg)
2155 "ascii
\e$BJ8;z$r%-!<$K$7$?JQ49$r9T$&$?$a$NF~NO%b!<%I!#
\e(B"
2157 (and skk-henkan-on (not skk-henkan-active)
2158 (skk-error "
\e$B4{$K"&%b!<%I$KF~$C$F$$$^$9
\e(B" "Already in
\e$B"&
\e(B mode"))
2160 (skk-set-henkan-point-subr)
2161 (skk-abbrev-mode-on))
2163 (defun skk-toggle-kana (arg)
2164 "
\e$B"#%b!<%I$G!"$R$i$,$J%b!<%I$H%+%?%+%J%b!<%I$r%H%0%k$G@Z$jBX$($k!#
\e(B
2165 \e$B"&%b!<%I$G$O!"
\e(Bskk-henkan-start-point (
\e$B"&$ND>8e
\e(B)
\e$B$H%+!<%=%k$N4V$NJ8;zNs$r
\e(B
2167 \e$B$R$i$,$J
\e(B <=>
\e$B%+%?%+%J
\e(B
2168 \e$BA43Q1Q?t;z
\e(B <=> ascii
2170 \e$B$N$h$&$KJQ49$9$k!#
\e(B"
2172 (cond ((and skk-henkan-on (not skk-henkan-active))
2175 (goto-char skk-henkan-start-point)
2176 ;; "
\e$B!<
\e(B"
\e$B$G$OJ8;z<oJL$,H=JL$G$-$J$$$N$G!"%]%$%s%H$r?J$a$k!#
\e(B
2177 (while (looking-at "
\e$B!<
\e(B")
2179 (setq char (skk-what-char-type)))
2180 (skk-set-marker skk-henkan-end-point (point))
2181 (cond ((eq char 'hiragana)
2182 (skk-katakana-henkan arg))
2183 ((eq char 'katakana)
2184 (skk-hiragana-henkan arg))
2185 ((eq char 'jisx0208-latin)
2186 (skk-latin-henkan arg))
2188 (skk-jisx0208-latin-henkan arg)))))
2189 ((and (skk-in-minibuffer-p) (not skk-j-mode))
2190 ;;
\e$B%_%K%P%C%U%!$X$N=iFMF~;~!#
\e(B
2192 (t (setq skk-katakana (not skk-katakana))))
2195 (defun skk-misc-for-picture ()
2196 ;; picture-mode
\e$B$XF~$C$?$H$-$K
\e(B SKK
\e$B5/F0A0$N>uBV$KLa$9!#
\e(B
2197 ;; edit-picture-hook
\e$B$K
\e(B add-hook
\e$B$7$F;HMQ$9$k!#
\e(B
2199 ;;
\e$B4{B8$N%P%C%U%!$r
\e(B picture mode
\e$B$K$7$?$H$-!"
\e(Bpicture-mode
\e$B4X?t$O
\e(B
2200 ;; kill-all-local-variables
\e$B4X?t$r8F$P$J$$$N$G!"
\e(BSKK
\e$B4XO"$N%P%C%U%!%m!<%+%k
\e(B
2201 ;;
\e$BJQ?t$,85$N%P%C%U%!$NCM$N$^$^$K$J$C$F$7$^$&!#$=$3$G!"
\e(Bpicture mode
\e$B$KF~$C$?
\e(B
2202 ;;
\e$B$H$-$K%U%C%/$rMxMQ$7$F$3$l$i$N%P%C%U%!%m!<%+%kJQ?t$r
\e(B kill
\e$B$9$k!#
\e(B
2203 ;; RMS
\e$B$O
\e(B picture-mode
\e$B$G
\e(B kill-all-local-variables
\e$B4X?t$r8F$P$J$$$N$O!"%P%0
\e(B
2204 ;;
\e$B$G$O$J$$!"$H8@$C$F$$$?!#
\e(B
2206 ;; picture-mode
\e$B$G
\e(B SKK
\e$B$r;HMQ$74A;zF~NO$r$7$?>l9g$K!"
\e(BBS
\e$B$GA43QJ8;z$,>C$;$J$$
\e(B
2207 ;;
\e$B$N$O!"
\e(BSKK
\e$B$NIT6q9g$G$O$J$/!"
\e(Bpicture.el
\e$B$NLdBj
\e(B (move-to-column-force
\e$B4X?t
\e(B
2208 ;;
\e$B$NCf$G;HMQ$7$F$$$k
\e(B move-to-column
\e$B$GA43QJ8;z$rL5;k$7$?%+%i%`?t$,M?$($i$l
\e(B
2209 ;;
\e$B$?$H$-$K%+!<%=%k0\F0$,$G$-$J$$$+$i
\e(B)
\e$B$G$"$k!#>C$7$?$$J8;z$K%]%$%s%H$r9g$o
\e(B
2210 ;;
\e$B$;!"
\e(BC-c C-d
\e$B$G0lJ8;z$E$D>C$9$7$+J}K!$O$J$$!#
\e(B
2211 (and skk-mode (skk-kill-local-variables)))
2213 (defun skk-kill-local-variables ()
2214 ;; SKK
\e$B4XO"$N%P%C%U%!%m!<%+%kJQ?t$rL58z$K$9$k!#
\e(B
2216 (let ((lv (buffer-local-variables))
2219 (setq v (car (car lv))
2221 vstr (prin1-to-string v))
2222 (and (> (length vstr) 3) (string= "skk-" (substring vstr 0 4))
2223 (kill-local-variable v)))))
2225 ;;;; kana inputting functions
2227 (defun skk-insert (&optional arg)
2228 "SKK
\e$B$NJ8;zF~NO$r9T$J$&!#
\e(B"
2229 ;; skk-rom-kana-\\(base-\\)*rule-list
\e$B$N
\e(B caddr
\e$B$K4X?t$r=q$-!"$=$N4X?tFb$G!"0l
\e(B
2230 ;;
\e$BDj>r7o$rK~$7$?>l9g$K
\e(B (
\e$BJ8;zA^F~0J30$N
\e(B)
\e$B$"$kFCDj$NF0:n$r$5$;!"$=$&$G$J$$>l9g$O$"$kFC
\e(B
2231 ;;
\e$BDjJ8;z$NA^F~$r9T$J$&$3$H$N%a%j%C%H!"%G%a%j%C%H$K$D$$$F!#
\e(B
2233 ;;
\e$B%a%j%C%H
\e(B;
\e$BI,$:
\e(B skk-kana-input
\e$B$rDL$k$N$G!"
\e(Bunfixed prefix +
\e$B%H%j%,!<%-!<$N
\e(B
2234 ;;
\e$BJ8;z=hM}$r9T$J$C$F$+$i;XDj$N4X?t8F$S=P$7$KF~$k$3$H$,$G$-$k!#
\e(B
2236 ;;
\e$B%G%a%j%C%H
\e(B;
\e$B%3!<%k$5$l$?4X?tFb$G!"FH<+$KA^F~J8;z$r7hDj$9$k$3$H$O$G$-$k$,!"
\e(B
2237 ;; skk-rom-kana-\\(base-\\)*rule-list
\e$BFb$GDj5A$,9T$J$($J$$
\e(B (
\e$B4{$KJ8;z$NBe$o$j
\e(B
2238 ;;
\e$B$K4X?tL>$,;XDj$5$l$F$$$k$+$i!#3:Ev4X?tFb$G!"
\e(Bskk-kana-input
\e$B$r%3!<%k$9$k$H!"
\e(B
2239 ;;
\e$BL58B%k!<%W$K4Y$$$C$F$7$^$&
\e(B)
\e$B!#4X?tFb$G%*%j%8%J%k$N%+%l%s%H%^%C%W$NF0:n$r%(
\e(B
2240 ;;
\e$B%_%e%l!<%H$9$k$H!"%f!<%6!<$,A^F~J8;z$NDj5A$rJQ99$G$-$J$$!#
\e(B
2242 ;;
\e$B$^$?!"
\e(Bskk-input-vector
\e$B$rGQ$7!"
\e(Bskk-rom-kana-\\(base-\\)*rule-list
\e$B$KA^F~
\e(B
2243 ;;
\e$B$9$Y$-J8;zDj5A$r=8Cf$5$;$?$3$H$+$i!"2DG=$J8B$j$3$l$rJx$7$?$/$J$$!#
\e(B
2245 ;;
\e$B>e5-$N9M;!$+$i!"2<5-$N$h$&$KJ}?K$r7h$a$?!#
\e(B
2247 ;; (1)
\e$BA^F~J8;z$NDj5A$O!"
\e(Bskk-rom-kana-\\(base-\\)*rule-list
\e$B0J30$G$O9T$J$o$J
\e(B
2249 ;; (2)
\e$B%H%j%,!<%-!<$r%f!<%6!<JQ?t$H$7!"$3$N%-!<$,2!$5$l$?>l9g$+$I$&$+$NH=Dj$O!"
\e(B
2250 ;; skk-insert
\e$BFb$G9T$J$$!"E,Ev$J4X?t$r%3!<%k$9$k!#
\e(B
2251 ;; (3)(2)
\e$B$N%f!<%6!<JQ?t$O!"
\e(Bskk-abbrev-mode-map
\e$B$N%-!<Dj5A$J$I$G$b;2>H$9$k$3
\e(B
2252 ;;
\e$B$H$H$7!"2DG=$J8B$jF0:n$NE}0l$r?^$k!#
\e(B
2253 ;; (4)unfixed prefix +
\e$B%H%j%,!<%-!<$N=hM}$OI,MW$K1~$8$F3:Ev4X?t$NCf$KKd$a9~
\e(B
2256 (skk-with-point-move
2257 (let ((ch last-command-char))
2259 ;; start writing a midasi key.
2260 (or (and (memq ch skk-set-henkan-point-key)
2262 (not (skk-get-prefix skk-current-rule-tree))
2263 (not (skk-select-branch skk-current-rule-tree ch))))
2264 (and skk-henkan-on (memq ch skk-special-midashi-char-list)))
2266 ;; skk-set-henkan-point -> skk-kana-input.
2267 (skk-set-henkan-point arg))
2268 ;; start conversion.
2269 ((and skk-henkan-on (eq ch skk-start-henkan-char))
2270 (skk-start-henkan arg))
2272 ((and skk-henkan-on (not skk-henkan-active))
2273 (cond ((eq ch skk-try-completion-char)
2274 (setq this-command 'skk-completion)
2275 (skk-completion (not (eq last-command 'skk-completion))))
2276 ((eq last-command 'skk-completion)
2277 (cond ((eq ch skk-next-completion-char)
2278 (setq this-command 'skk-completion)
2279 (skk-completion nil))
2280 ((eq ch skk-previous-completion-char)
2281 (setq this-command 'skk-completion)
2282 (skk-previous-completion))
2283 (t (skk-kana-input arg))))
2284 (t (skk-kana-input arg))))
2286 (t (skk-kana-input arg))))))
2288 (defun skk-kana-input (&optional arg)
2289 ;;"
\e$B$+$JJ8;z$NF~NO$r9T$&%k!<%A%s!#
\e(B"
2290 ;; Message-Id: <19980610190611B.sakurada@kuis.kyoto-u.ac.jp>
2291 ;; From: Hideki Sakurada <sakurada@kuis.kyoto-u.ac.jp>
2292 ;; Date: Wed, 10 Jun 1998 19:06:11 +0900 (JST)
2294 ;;
\e$B?7$7$$
\e(B skk-kana-input
\e$B$O
\e(B,
\e$B4JC1$K@bL@$9$k$H
\e(B,
2295 ;;
\e$B$"$i$+$8$a%k!<%k$rLZ$N7A$KI=8=$7$F$*$$$F
\e(B,
\e$BF~NO$r8+
\e(B
2296 ;;
\e$B$FLZ$rC)$j
\e(B,
\e$B$=$l0J>eC)$l$J$/$J$C$?$i$=$N@a$KEPO?$5
\e(B
2297 ;;
\e$B$l$F$$$k2>L>$rF~NO$9$k
\e(B.
\e$B$H$$$&$7$/$_$G$9
\e(B.
2299 ;;
\e$BNc$($P
\e(B, n a t
\e$B$N$_$+$i$J$k0J2<$N%k!<%k
\e(B
2301 ;; a
\e$B"*
\e(B
\e$B$"
\e(B
2302 ;; n
\e$B"*
\e(B
\e$B$s
\e(B
2303 ;; nn
\e$B"*
\e(B
\e$B$s
\e(B
2304 ;; na
\e$B"*
\e(B
\e$B$J
\e(B
2305 ;; ta
\e$B"*
\e(B
\e$B$?
\e(B
2306 ;; tt
\e$B"*
\e(B
\e$B$C
\e(B (
\e$B<!>uBV
\e(B t)
2308 ;;
\e$B$r%k!<%kLZ$KJQ49$9$k$H
\e(B,
2310 ;;
\e$B!?
\e(B/
\e$B!@
\e(B
2311 ;;
\e$B!?
\e(B /
\e$B!@
\e(B
2312 ;; a
\e$B!?
\e(B / t
\e$B!@
\e(B n
2313 ;;
\e$B!?
\e(B /
\e$B!@
\e(B
2314 ;;
\e$B$"
\e(B
\e$B!&
\e(B
\e$B$s
\e(B
2315 ;;
\e$B!?
\e(B| /
\e$B!@
\e(B
2316 ;; a
\e$B!?
\e(B | t a /
\e$B!@
\e(B n
2317 ;;
\e$B!?
\e(B | /
\e$B!@
\e(B
2318 ;;
\e$B$?
\e(B
\e$B$C
\e(B
\e$B$J
\e(B
\e$B$s
\e(B
2319 ;; (
\e$B<!>uBV
\e(B "t")
2321 ;;
\e$B$H$$$&7A$K$J$j$^$9
\e(B.
2323 ;;
\e$B=i4|>uBV
\e(B(
\e$BLZ$N:,
\e(B)
\e$B$G
\e(B `a'
\e$B$rF~NO$9$k$H
\e(B,
\e$BLZ$N:,$+$i
\e(B
2324 ;;
\e$B!V$"!W$K0\F0$7$^$9
\e(B.
\e$B<!$K$I$N$h$&$JF~NO$,Mh$F$b
\e(B,
2325 ;;
\e$B$=$l$h$j2<$K$?$I$l$J$$$N$G
\e(B,
\e$B!V$"!W$r=PNO$7$F:,$KLa$j$^$9
\e(B.
2326 ;;
\e$B%k!<%k$K<!>uBV$,@_Dj$5$l$F$$$k>l9g$O
\e(B,
\e$B@_Dj$5$l$F$$
\e(B
2327 ;;
\e$B$kJ8;zNs$r%-%e!<$KLa$7$F$+$i:,$KLa$j$^$9
\e(B.
2329 ;;
\e$B=i4|>uBV$G
\e(B `n'
\e$B$rF~NO$9$k$H
\e(B,
\e$B!V$s!W$K0\F0$7$^$9
\e(B.
2330 ;;
\e$B<!$K
\e(B `a'
\e$B$^$?$O
\e(B `n'
\e$B$,F~NO$5$l$l$P$=$l$h$j2<$K$?$I$l$k
\e(B
2331 ;;
\e$B$N$G<!$NF~NO$r8+$k$^$G$^$@=PNO$7$^$;$s
\e(B.
2332 ;;
\e$B<!$K
\e(B `t'
\e$B$,F~NO$5$l$?>l9g$O
\e(B, `t'
\e$B$G$O2<$K$?$I$l$J$$$N$G
\e(B,
2333 ;;
\e$B!V$s!W$r=PNO$7$F
\e(B `t'
\e$B$r%-%e!<$KLa$7$^$9
\e(B.
2335 ;;
\e$B$3$3$G
\e(B,
\e$B=i4|>uBV
\e(B,
\e$B8=>uBV$r$=$l$>$l
\e(B skk-rule-tree,
2336 ;; skk-current-rule-tree
\e$B$GI=$7
\e(B.
2337 ;;
\e$BLZ$r2<$K$?$I$k
\e(B,
\e$B$H$$$&A`:n$O
\e(B, skk-select-branch
\e$B$r
\e(B
2340 ;; (skk-select-branch rule-tree ?a)
2342 ;;
\e$B$N$h$&$K$7$^$9
\e(B.
\e$B8=>uBV$K@_Dj$5$l$F$$$k$+$J
\e(B(("
\e$B%"
\e(B". "
\e$B$"
\e(B")
\e$B$J$I
\e(B),
2343 ;;
\e$B<!>uBV
\e(B("t"
\e$B$J$I
\e(B)
\e$B$O
\e(B,
\e$B$=$l$>$l
\e(B skk-get-kana,
2344 ;; skk-get-nextstate
\e$B$G<h$j$^$9
\e(B.
2345 ;; don't echo key strokes in the minibuffer.
2346 (let ((echo-keystrokes 0)
2347 (queue (list last-command-char)))
2349 (if (not (skk-get-prefix skk-current-rule-tree))
2351 (skk-set-marker skk-kana-start-point (point))
2352 (setq skk-current-rule-tree skk-rule-tree))
2354 (setq skk-prefix (concat (skk-get-prefix skk-current-rule-tree)
2355 (char-to-string last-command-char)))
2356 (let ((next (skk-select-branch skk-current-rule-tree (car queue)))
2359 ;; can go down SKK-CURRENT-RULE-TREE
2360 (if (skk-get-branch-list next)
2361 ;; NEXT have at least one branch
2363 (and skk-henkan-active
2365 (not skk-process-okuri-early)
2367 (setq queue (cdr queue)
2368 skk-current-rule-tree next))
2369 ;; NEXT does not have any branch (i.e. NEXT is a leaf)
2370 (setq data (skk-get-kana next)
2371 queue (nconc (string-to-list (skk-get-nextstate next))
2373 skk-current-rule-tree nil))
2374 ;; can not go down SKK-CURRENT-RULE-TREE
2375 (let ((d (skk-get-kana skk-current-rule-tree)))
2377 ;; SKK-CURRENT-RULE-TREE have a roma->kana rule
2380 (nconc (string-to-list
2381 (skk-get-nextstate skk-current-rule-tree))
2383 skk-current-rule-tree nil)
2384 ;; SKK-CURRENT-RULE-TREE does not have any roma->kana rule
2385 (let ((dd (and skk-kana-input-search-function
2386 (funcall skk-kana-input-search-function))))
2389 queue (nconc (string-to-list (cdr dd))
2391 skk-current-rule-tree nil)
2392 (if (eq skk-current-rule-tree skk-rule-tree)
2393 ;; typo on the root of tree
2395 skk-current-rule-tree nil)
2396 ;; otherwise move to root of the tree, and redo
2397 (setq skk-current-rule-tree nil)))))))
2399 (if skk-current-rule-tree
2401 ;;(digit-argument arg)
2402 ;;
\e$B$&!A$s!"$h$&J,$+$i$s!#$H$j$"$($:!#
\e(B
2403 (or skk-isearch-message (setq prefix-arg arg))
2404 (setq skk-prefix (skk-get-prefix skk-current-rule-tree))
2405 (skk-insert-prefix skk-prefix))
2406 ;;(skk-kana-cleanup 'force)
2407 (and skk-henkan-active (skk-kakutei))
2408 (setq skk-prefix "")
2410 (skk-emulate-original-map (skk-make-raw-arg arg))))
2411 (skk-cancel-undo-boundary)
2412 (setq skk-prefix "")
2413 (and (functionp data)
2414 (setq data (funcall data (skk-make-raw-arg arg))))
2415 (if (not (stringp (if (consp data) (car data) data)))
2417 (let* ((str (if (consp data) (if skk-katakana (car data) (cdr data))
2419 (pair (and skk-auto-insert-paren
2420 (cdr (assoc str skk-auto-paren-string-alist))))
2421 (count0 arg) (count1 arg) (inserted 0))
2422 (and skk-henkan-active
2423 skk-kakutei-early (not skk-process-okuri-early)
2425 ;; arg
\e$B$OJ]B8$7$F$*$+$J$$$H!"
\e(B0
\e$B$K$J$C$F$7$^$$!"
\e(Bqueue
2426 ;;
\e$B$,$?$^$C$F$$$F:FEY$3$3$X$d$C$FMh$?$H$-$KJ8;zF~NO$,
\e(B
2427 ;;
\e$B$G$-$J$/$J$k!#
\e(B
2429 (skk-insert-str str)
2430 (setq count0 (1- count0)))
2434 (if (not (string= pair (char-to-string (following-char))))
2436 (setq inserted (1+ inserted))
2437 (skk-insert-str pair)))
2438 (setq count1 (1- count1)))
2439 (or (= inserted 0) (backward-char inserted)))
2440 (and skk-okurigana (null queue) (skk-set-okurigana))))))
2441 ;; XXX I don't know how skk-isearch-message works....
2442 (and skk-isearch-message (skk-isearch-message)))))
2444 ;; tree procedure (
\e$B%D%j!<$K%"%/%;%9$9$k$?$a$N%$%s%?!<%U%'!<%9
\e(B)
2445 (defun skk-search-tree (tree char-list)
2446 ;; TREE
\e$B$N:,$+$i@hC<$X
\e(B CHAR-LIST
\e$B$K=>$C$F$?$I$k!#
\e(B
2447 ;;
\e$B@.8y$7$?>l9g$O
\e(B nil
\e$B$H
\e(B
\e$B7k2L$NLZ$NAH$rJV$7
\e(B,
2448 ;;
\e$B<:GT$7$?>l9g$O$?$I$l$J$+$C$?
\e(B CHAR-LIST
\e$B$N;D$j$H$?$I$l$J$/$J$C$?
\e(B
2449 ;;
\e$B@aE@$NLZ$NAH$rJV$9!#
\e(B
2451 (let (next char rest)
2453 (setq char (car char-list)
2454 rest (cdr char-list)
2455 next (skk-select-branch tree char))
2459 (throw 'return (cons char-list tree))))
2462 (defun skk-add-rule (tree rule)
2463 (let* ((prefix (nth 0 rule))
2465 (result (skk-search-tree tree (string-to-list prefix)))
2467 (addpoint (cdr result)))
2470 (skk-make-rule-tree (car rest)
2471 (substring prefix 0 (1+ (- l (length rest))))
2473 (skk-add-branch addpoint addtree)
2474 (setq addpoint addtree
2476 (skk-set-nextstate addpoint (nth 1 rule))
2477 (skk-set-kana addpoint (nth 2 rule))))
2479 (defun skk-delete-rule (tree string)
2480 ;;
\e$BF~NO
\e(B STRING
\e$B$KBP$9$k%k!<%k$r%k!<%kLZ
\e(B TREE
\e$B$+$i:o=|
\e(B
2482 (let ((char-list (string-to-list string))
2484 (cuttree (car (skk-get-branch-list tree)))
2485 ; TREE
\e$B$N:,$+$i=P$k;^$,
\e(B1
\e$BK\$7$+$J$$>l9g
\e(B
2486 ;
\e$B$N$?$a$K0l1~=i4|2=$7$F$*$/
\e(B
2489 (setq next (skk-select-branch tree (car char-list))
2490 char-list (cdr char-list))
2492 (if (> (length (skk-get-branch-list tree)) 1)
2493 (setq cutpoint tree ;
\e$B;^$,
\e(B2
\e$BK\0J>e$N;~
\e(B cutpoint cuttree
2494 cuttree next ;
\e$B$r
\e(B update
2497 (throw 'return nil)))
2498 (skk-set-branch-list cutpoint
2499 (delq cuttree (skk-get-branch-list cutpoint))))))
2501 ;; convert skk-rom-kana-rule-list to skk-rule-tree.
2502 ;; The rule tree follows the following syntax:
2503 ;; <branch-list> := nil | (<tree> . <branch-list>)
2504 ;; <tree> := (<char> <prefix> <nextstate> <kana> <branch-list>)
2505 ;; <kana> := (<
\e$B$R$i$,$JJ8;zNs
\e(B> . <
\e$B%+%?%+%JJ8;zNs
\e(B>) | nil
2506 ;; <char> := <
\e$B1Q>.J8;z
\e(B>
2507 ;; <nextstate> := <
\e$B1Q>.J8;zJ8;zNs
\e(B> | nil
2508 (defun skk-compile-rule-list (&rest l)
2509 ;; rule-list
\e$B$rLZ$N7A$K%3%s%Q%$%k$9$k!#
\e(B
2510 (let ((tree (skk-make-rule-tree nil "" nil nil nil))
2518 (skk-add-rule tree rule)))
2521 (defun skk-insert-str (str)
2522 ;; STR
\e$B$rA^F~$9$k!#I,MW$G$"$l$P
\e(B self-insert-after-hook
\e$B$r%3
\e(B
2523 ;;
\e$B!<%k$9$k!#
\e(Boverwrite-mode
\e$B$G$"$l$P!"E,@Z$K>e=q$-$r9T$&!#
\e(B
2524 (insert-and-inherit str)
2525 (if (and skk-henkan-on (not skk-henkan-active))
2526 (and skk-auto-start-henkan (not skk-okurigana) (skk-auto-start-henkan str))
2527 (and (boundp 'self-insert-after-hook) self-insert-after-hook
2528 (funcall self-insert-after-hook (- (point) (length str)) (point)))
2530 (skk-del-char-with-pad (skk-ovwrt-len (string-width str))))))
2532 (defun skk-ovwrt-len (len)
2533 ;;
\e$B>e=q$-$7$FNI$$D9$5$rJV$9!#
\e(B
2535 (buffer-substring-no-properties
2536 (point) (skk-save-point (end-of-line) (point))))
2539 (defun skk-del-char-with-pad (length)
2540 ;;
\e$BD9$5
\e(B LENGTH
\e$B$NJ8;z$r>C5n$9$k!#D4@0$N$?$a!"I,MW$G$"$l$P!"KvHx$K%9%Z!<%9$r
\e(B
2541 ;;
\e$BA^F~$9$k!#
\e(B
2542 (let ((p (point)) (len 0))
2543 (while (< len length)
2545 (setq len (string-width (buffer-substring-no-properties (point) p))))
2546 (delete-region p (point))
2549 (insert-and-inherit " ")
2550 (backward-char 1)))))
2552 (defun skk-cancel-undo-boundary ()
2553 ;; skk-insert, skk-jisx0208-latin-insert
\e$B$GO"B3$7$FF~NO$5
\e(B
2554 ;;
\e$B$l$?
\e(B 20
\e$BJ8;z$r
\e(B 1
\e$B2s$N%"%s%I%%$NBP>]$H$9$k!#
\e(B`20'
\e$B$O
\e(B
2555 ;; keyboard.c
\e$B$KDj$a$i$l$?%^%8%C%/%J%s%P!<!#
\e(BMule-2.3
\e$BE:IU
\e(B
2556 ;;
\e$B$N
\e(B egg.el
\e$B$r;29M$K$7$?!#
\e(B
2557 (if (and (< skk-self-insert-non-undo-count 20)
2560 skk-jisx0208-latin-insert
2561 ;; SKK abbrev
\e$B%b!<%I$G$O!"%"%9%-!<J8;zF~NO$,
\e(B Emacs
\e$B%*%j%8%J
\e(B
2562 ;;
\e$B%k$N
\e(B self-insert-command
\e$B$K$h$j9T$J$o$l$F$$$k$N$G!"
\e(B
2563 ;; skk-self-insert-non-undo-count
\e$B$r%$%s%/%j%a%s%H$9$k$3$H
\e(B
2564 ;;
\e$B$,$G$-$J$$$N$G!"%"%s%I%%$r%(%_%e%l!<%H$G$-$J$$!#
\e(B
2565 ;;
\e$B$7$+$b!"%+%s%^$d%T%j%*%I$rA^F~$7$?;~E@$G!"
\e(B
2566 ;; skk-abbrev-comma
\e$B$d
\e(B skk-abbrev-period
\e$B$r;H$&$3$H$K$J$k$N
\e(B
2567 ;;
\e$B$G
\e(B (self-insert-command
\e$B0J30$N%3%^%s%I$r;H$C$F$7$^$&$N$G
\e(B)
\e$B!"
\e(B
2568 ;;
\e$B%*%j%8%J%k$N%"%s%I%%$N5!G=$bB;$J$C$F$7$^$&!#
\e(B
2569 ;;
\e$B$7$+$78=<BLdBj$H$7$F$O!"
\e(BSKK abbrev
\e$B%b!<%I$O>JN,7A$H$7$F$N
\e(B
2570 ;;
\e$B8+=P$78l$rA^F~$9$k$?$a$N%b!<%I$G$"$k$N$G!"D9$$8+=P$78l$r
\e(B
2571 ;;
\e$BA^F~$9$k$3$H$O$"$^$j$J$/!"LdBj$b>.$5$$$H9M$($i$l$k!#
\e(B
2576 (cancel-undo-boundary)
2577 (if (null skk-current-rule-tree)
2578 ;;
\e$B$^$@$+$JJ8;z$,40@.$7$F$$$J$$$H$-$O!"
\e(Bundo count
\e$B$r%$%s%/%j%a%s%H
\e(B
2580 (setq skk-self-insert-non-undo-count
2581 (1+ skk-self-insert-non-undo-count))))
2582 (setq skk-self-insert-non-undo-count 1)))
2584 (defun skk-translate-okuri-char (okurigana)
2585 (and skk-okuri-char-alist
2586 (cdr (assoc (skk-substring-head-character okurigana) skk-okuri-char-alist))))
2588 (defun skk-set-okurigana ()
2589 ;;
\e$B8+=P$78l$+$i
\e(B skk-henkan-okurigana, skk-henkan-key
\e$B$N3FCM$r%;%C%H$9$k!#
\e(B
2590 (cancel-undo-boundary)
2591 (and skk-katakana (skk-hiragana-region skk-henkan-start-point (point)))
2592 (skk-set-marker skk-henkan-end-point skk-okurigana-start-point)
2595 (goto-char skk-okurigana-start-point)
2596 (or (eq (following-char) ?*) (insert-and-inherit "*")))
2597 (setq skk-henkan-okurigana (buffer-substring-no-properties
2598 (1+ skk-okurigana-start-point)
2600 (setq skk-henkan-key (concat (buffer-substring-no-properties
2601 skk-henkan-start-point
2602 skk-henkan-end-point)
2603 (or (skk-translate-okuri-char
2604 skk-henkan-okurigana)
2607 (delete-region skk-okurigana-start-point (1+ skk-okurigana-start-point))
2608 (setq skk-henkan-count 0)
2610 (setq skk-okurigana nil))
2612 ;;;; other inputting functions
2614 (defun skk-toggle-kutouten ()
2615 "
\e$B6gFIE@$N<oN`$r%H%0%k$GJQ99$9$k!#
\e(B"
2617 (setq skk-kutouten-type (if (eq skk-kutouten-type 'jp) 'en 'jp))
2618 (and (interactive-p)
2619 (skk-message "
\e$B6gE@
\e(B: `%s'
\e$BFIE@
\e(B: `%s'"
2620 "Kuten: `%s' Touten: `%s'"
2621 (skk-current-kuten nil) (skk-current-touten nil))))
2623 (defun skk-current-kuten (arg)
2625 (car (cdr (assq skk-kutouten-type skk-kuten-touten-alist))))
2627 (defun skk-current-touten (arg)
2629 (cdr (cdr (assq skk-kutouten-type skk-kuten-touten-alist))))
2631 (defun skk-abbrev-period (arg)
2632 "SKK abbrev
\e$B%b!<%I$G8+=P$7$NJd40$r9T$C$F$$$k:GCf$G$"$l$P!"<!$N8uJd$rI=<($9$k!#
\e(B
2633 \e$BJd40$ND>8e$G$J$1$l$P!"%*%j%8%J%k$N%-!<3d$jIU$1$N%3%^%s%I$r%(%_%e%l!<%H$9$k!#
\e(B
2634 SKK abbrev
\e$B%b!<%I0J30$G$O!"
\e(Bskk-insert-period
\e$B4X?t$r;HMQ$9$k$3$H!#
\e(B"
2636 (skk-with-point-move
2637 (if (eq last-command 'skk-completion)
2639 (setq this-command 'skk-completion)
2640 (skk-completion nil))
2641 (skk-emulate-original-map arg))))
2643 (defun skk-abbrev-comma (arg)
2644 "SKK abbrev
\e$B%b!<%I$G8+=P$7$NJd40$r9T$C$F$$$k:GCf$G$"$l$P!"D>A0$N8uJd$rI=<($9$k!#
\e(B
2645 \e$BJd40$ND>8e$G$J$1$l$P!"%*%j%8%J%k$N%-!<3d$jIU$1$N%3%^%s%I$r%(%_%e%l!<%H$9$k!#
\e(B
2646 SKK abbrev
\e$B%b!<%I0J30$G$O!"
\e(Bskk-insert-comma
\e$B4X?t$r;HMQ$9$k$3$H!#
\e(B"
2648 (skk-with-point-move
2649 (if (eq last-command 'skk-completion)
2651 (setq this-command 'skk-completion)
2652 (skk-previous-completion))
2653 (skk-emulate-original-map arg))))
2655 (defun skk-jisx0208-latin-insert (arg)
2656 "
\e$BA41QJ8;z$r%+%l%s%H%P%C%U%!$KA^F~$9$k!#
\e(B
2657 skk-jisx0208-latin-vector
\e$B$r%F!<%V%k$H$7$F!":G8e$KF~NO$5$l$?%-!<$KBP1~$9$kJ8
\e(B
2658 \e$B;z$rA^F~$9$k!#
\e(B
2659 skk-auto-insert-paren
\e$B$NCM$,
\e(B non-nil
\e$B$N>l9g$G!"
\e(Bskk-auto-paren-string-alist
\e$B$K
\e(B
2660 \e$BBP1~$9$kJ8;zNs$,$"$k$H$-$O!"$=$NBP1~$9$kJ8;zNs
\e(B (
\e$B$+$C$3N`
\e(B)
\e$B$r<+F0E*$KA^F~$9$k!#
\e(B"
2662 (skk-with-point-move
2663 (let* ((str (aref skk-jisx0208-latin-vector last-command-char))
2666 (and skk-auto-insert-paren
2667 (cdr (assoc str skk-auto-paren-string-alist))))
2668 (pair-str-inserted 0))
2670 (skk-emulate-original-map arg)
2671 (skk-cancel-undo-boundary)
2673 (skk-insert-str str)
2674 (setq arg (1- arg)))
2678 (if (not (string= pair-str (char-to-string (following-char))))
2680 (setq pair-str-inserted (1+ pair-str-inserted))
2681 (skk-insert-str pair-str)))
2682 (setq arg2 (1- arg2)))
2683 (or (= pair-str-inserted 0) (backward-char pair-str-inserted)))))))
2685 (defun skk-delete-backward-char (arg)
2686 "
\e$B"'%b!<%I$G
\e(B skk-delete-implies-kakutei
\e$B$,
\e(B non-nil
\e$B$@$C$?$iD>A0$NJ8;z$r>C$7$F3NDj$9$k!#
\e(B
2687 \e$B"'%b!<%I$G
\e(B skk-delete-implies-kakutei
\e$B$,
\e(B nil
\e$B$@$C$?$iA08uJd$rI=<($9$k!#
\e(B
2688 \e$B"&%b!<%I$G
\e(B`
\e$B"&
\e(B'
\e$B$h$j$bA0$N%]%$%s%H$G<B9T$9$k$H3NDj$9$k!#
\e(B
2689 \e$B3NDjF~NO%b!<%I$G!"$+$J%W%l%U%#%C%/%9$NF~NOCf$J$i$P!"$+$J%W%l%U%#%C%/%9$r>C$9!#
\e(B"
2691 (skk-with-point-move
2692 (let ((count (prefix-numeric-value arg)))
2693 (cond (skk-henkan-active
2694 (if (and (not skk-delete-implies-kakutei)
2695 (= skk-henkan-end-point (point)))
2696 (skk-previous-candidate)
2697 ;; overwrite-mode
\e$B$G!"%]%$%s%H$,A43QJ8;z$K0O$^$l$F$$$k$H
\e(B
2698 ;;
\e$B$-$K
\e(B delete-backward-char
\e$B$r;H$&$H!"A43QJ8;z$O>C$9$,H>
\e(B
2699 ;;
\e$B3QJ8;zJ,$7$+
\e(B backward
\e$BJ}8~$K%]%$%s%H$,La$i$J$$
\e(B (Emacs
2700 ;; 19.31
\e$B$K$F3NG'
\e(B)
\e$B!#JQ49Cf$N8uJd$KBP$7$F$O
\e(B
2701 ;; delete-backward-char
\e$B$GI,$:A43QJ8;z
\e(B 1
\e$BJ8;zJ,
\e(B backward
2702 ;;
\e$BJ}8~$KLa$C$?J}$,NI$$!#
\e(B
2705 (backward-char count)
2706 (delete-char count arg))
2707 (skk-emulate-original-map arg))
2708 ;; XXX assume skk-prefix has no multibyte chars.
2709 (if (> (length skk-prefix) count)
2710 (setq skk-prefix (substring skk-prefix 0 (- (length skk-prefix) count)))
2711 (setq skk-prefix ""))
2712 (and (>= skk-henkan-end-point (point)) (skk-kakutei))))
2713 ((and skk-henkan-on (>= skk-henkan-start-point (point)))
2714 (setq skk-henkan-count 0)
2716 ;;
\e$BF~NOCf$N8+=P$78l$KBP$7$F$O
\e(B delete-backward-char
\e$B$GI,$:A43QJ8;z
\e(B 1
2717 ;;
\e$BJ8;zJ,
\e(B backward
\e$BJ}8~$KLa$C$?J}$,NI$$!#
\e(B
2718 ((and skk-henkan-on overwrite-mode)
2719 (backward-char count)
2720 (delete-char count arg))
2722 (skk-delete-okuri-mark)
2723 (if (skk-get-prefix skk-current-rule-tree)
2724 (skk-erase-prefix 'clean)
2725 (skk-emulate-original-map arg)))))))
2727 ;;;; henkan routines
2728 (defun skk-henkan ()
2729 ;;
\e$B%+%J$r4A;zJQ49$9$k%a%$%s%k!<%A%s!#
\e(B
2730 (let (mark new-word kakutei-henkan)
2731 (if (string= skk-henkan-key "")
2733 ;; we use mark to go back to the correct position after henkan
2734 (or (eobp) (setq mark (skk-save-point (forward-char 1) (point-marker))))
2735 (if (not skk-henkan-active)
2738 (setq skk-current-search-prog-list skk-search-prog-list)))
2739 ;; skk-henkan-1
\e$B$NCf$+$i%3!<%k$5$l$k
\e(B skk-henkan-show-candidate
\e$B$+$i
\e(B throw
2740 ;;
\e$B$5$l$k!#$3$3$G%-%c%C%A$7$?>l9g$O!"
\e(B?x
\e$B$,%9%H%j!<%`$KLa$5$l$F$$$k$N$G!"
\e(B
2741 ;;
\e$B$3$N4X?t$r=P$F!"
\e(Bskk-previous-candidates
\e$B$X$f$/!#
\e(B
2743 (setq new-word (or (skk-henkan-1) (skk-henkan-in-minibuff))
2744 kakutei-henkan skk-kakutei-flag)
2745 (and new-word (skk-insert-new-word new-word)))
2749 ;;
\e$B;2>H$5$l$F$$$J$$%^!<%+!<$O!"
\e(BGarbage Collection
\e$B$,%3!<%k$5$l$?$H
\e(B
2750 ;;
\e$B$-$K2s<}$5$l$k$,!"$=$l$^$G$N4V!"%F%-%9%H$N$I$3$+$r;X$7$F$$$k$H!"
\e(B
2751 ;;
\e$B%F%-%9%H$N%"%C%W%G!<%H$N:]$K$=$N%^!<%+!<CM$r99?7$9$kI,MW$,$"$k
\e(B
2752 ;;
\e$B$N$G!"$I$3$b;X$5$J$$$h$&$K$9$k!#
\e(B
2753 (skk-set-marker mark nil)
2755 (goto-char (point-max)))
2757 (skk-kakutei (if (skk-numeric-p)
2758 (skk-get-current-candidate-simply 'noconv)
2761 (defun skk-henkan-1 ()
2762 ;; skk-henkan
\e$B$N%5%V%k!<%A%s!#
\e(B
2764 (if (= skk-henkan-count 0)
2766 (and (eq last-command 'skk-undo-kakutei-henkan)
2767 (eq (car (car skk-current-search-prog-list))
2768 'skk-search-kakutei-jisyo-file)
2769 ;; in this case, we should not search kakutei jisyo.
2770 (setq skk-current-search-prog-list
2771 (cdr skk-current-search-prog-list)))
2772 (setq skk-henkan-list (skk-search))
2773 (if (null skk-henkan-list)
2775 (setq new-word (skk-get-current-candidate))
2776 (and skk-kakutei-flag
2777 ;; found the unique candidate in kakutei jisyo
2778 (setq this-command 'skk-kakutei-henkan))))
2779 ;;
\e$BJQ492s?t$,
\e(B 1
\e$B0J>e$N$H$-!#
\e(B
2780 (setq new-word (skk-get-current-candidate))
2782 ;;
\e$B?7$7$$8uJd$r8+$D$1$k$+!"
\e(Bskk-current-search-prog-list
\e$B$,6u$K$J
\e(B
2783 ;;
\e$B$k$^$G
\e(B skk-search
\e$B$rO"B3$7$F%3!<%k$9$k!#
\e(B
2784 (while (and skk-current-search-prog-list (not new-word))
2785 (setq skk-henkan-list (skk-nunion skk-henkan-list (skk-search))
2786 new-word (skk-get-current-candidate))))
2787 (and new-word (> skk-henkan-count 3)
2788 ;; show candidates in minibuffer
2789 (setq new-word (skk-henkan-show-candidates))))
2792 (defun skk-get-current-candidate ()
2796 (setq val (skk-num-convert (skk-get-current-candidate-simply)))
2797 (if (not skk-num-recompute-key)
2800 (skk-num-convert (skk-get-current-candidate-simply))))
2801 (skk-get-current-candidate-simply)))
2803 (defun skk-henkan-show-candidates ()
2804 ;;
\e$B%_%K%P%C%U%!$GJQ49$7$?8uJd72$rI=<($9$k!#
\e(B
2806 (let* ((candidate-keys ;
\e$BI=<(MQ$N%-!<%j%9%H
\e(B
2808 (function (lambda (c)
2809 (and (memq c '(?\C-g ?\040 ?x)) ; ?\040 is SPC.
2810 (skk-error "`%s'
\e$B$KL58z$J%-!<$,;XDj$5$l$F$$$^$9!#
\e(B"
2811 "Illegal key in `%s'"
2812 "skk-henkan-show-candidates-keys"))
2813 (char-to-string (upcase c))))
2814 skk-henkan-show-candidates-keys))
2815 key-num-alist ;
\e$B8uJdA*BrMQ$NO"A[%j%9%H
\e(B
2816 (key-num-alist1 ; key-num-alist
\e$B$rAH$_N)$F$k$?$a$N:n6HMQO"A[%j%9%H!#
\e(B
2818 (mapcar (function (lambda (key) (prog1 (cons key count)
2819 (setq count (1- count)))))
2820 ;;
\e$B5U$5$^$K$7$F$*$$$F!"I=<($9$k8uJd$N?t$,>/$J$+$C$?$i@h
\e(B
2821 ;;
\e$BF,$+$i4v$D$+:o$k!#
\e(B
2822 (reverse skk-henkan-show-candidates-keys))))
2825 henkan-list new-one str reverse n)
2826 ;; Emacs 19.28
\e$B$@$H
\e(B Overlay
\e$B$r>C$7$F$*$+$J$$$H!"<!$K
\e(B insert
\e$B$5$l$k
\e(B
2827 ;; skk-henkan-key
\e$B$K2?8N$+
\e(B Overlay
\e$B$,$+$+$C$F$7$^$&!#
\e(B
2828 (and skk-use-face (skk-henkan-face-off))
2829 (delete-region skk-henkan-start-point skk-henkan-end-point)
2832 (let (message-log-max)
2835 (setq loop (1- loop)
2836 henkan-list (nthcdr (+ 4 (* loop 7)) skk-henkan-list)
2838 (skk-exit-show-candidates
2839 ;;
\e$B8uJd$,?T$-$F$7$^$C$F!"
\e(Bskk-henkan-show-candidates ->
2840 ;; skk-henkan-in-minibuff -> skk-henkan
2841 ;; -> skk-henkan-show-candidates
\e$B$N=g$G!":F$S$3$N4X?t$,8F$P$l
\e(B
2842 ;;
\e$B$?$H$-$O!"$3$3$G
\e(B henkan-list
\e$B$H
\e(B loop
\e$B$r7W;;$9$k!#
\e(B
2843 (setq henkan-list (nthcdr skk-henkan-count skk-henkan-list)
2844 loop (car skk-exit-show-candidates)
2845 skk-exit-show-candidates nil))
2847 ;; skk-henkan-show-candidates-keys
\e$B$N:G=*$N%-!<$KBP1~$9$k8uJd
\e(B
2848 ;;
\e$B$,=P$F$/$k$^$G%5!<%A$rB3$1$k!#
\e(B
2849 (and (skk-numeric-p) (skk-num-uniq))
2850 (while (and skk-current-search-prog-list
2851 (null (nthcdr (+ 11 (* loop 7)) skk-henkan-list)))
2852 (setq skk-henkan-list
2853 (skk-nunion skk-henkan-list (skk-search)))
2854 (and (skk-numeric-p) (skk-num-uniq)))
2855 (and (skk-numeric-p) (skk-num-convert*7))
2856 (setq henkan-list (nthcdr (+ 4 (* loop 7)) skk-henkan-list))))
2857 (setq n (skk-henkan-show-candidate-subr candidate-keys henkan-list)))
2860 (let* ((event (skk-read-event))
2861 (char (event-to-character event))
2863 (if (eq skk-emacs-type 'xemacs)
2864 (message "")) ; clear out candidates in echo area
2866 (skk-unread-event event)
2867 (setq key-num-alist (nthcdr (- 7 n) key-num-alist1))
2869 (setq num (cdr (or (assq char key-num-alist)
2870 (if (skk-lower-case-p char)
2871 (assq (upcase char) key-num-alist)
2872 (assq (downcase char) key-num-alist))))))
2874 (setq new-one (nth num henkan-list)
2875 skk-henkan-count (+ 4 (* loop 7) num)
2879 ((eq char ?\040) ; SPC
2880 (if (or skk-current-search-prog-list
2881 (nthcdr 7 henkan-list))
2882 (setq loop (1+ loop)
2884 ;;
\e$B8uJd$,?T$-$?!#$3$N4X?t$+$iH4$1$k!#
\e(B
2885 (let ((last-showed-index (+ 4 (* loop 7))))
2886 (setq skk-exit-show-candidates
2887 ;; cdr
\e$BIt$O!"<-=qEPO?$KF~$kA0$K:G8e$KI=<($7
\e(B
2888 ;;
\e$B$?8uJd72$NCf$G:G=i$N8uJd$r;X$9%$%s%G%/%9
\e(B
2889 (cons loop last-showed-index))
2890 ;;
\e$B<-=qEPO?$KF~$k!#
\e(Bskk-henkan-count
\e$B$O
\e(B
2891 ;; skk-henkan-list
\e$B$N:G8e$N8uJd$N<!
\e(B (
\e$BB8:_$7$J$$
\e(B
2892 ;; --- nil)
\e$B$r;X$9!#
\e(B
2893 (setq skk-henkan-count (+ last-showed-index n)
2896 ((eq char skk-previous-candidate-char) ; ?x
2898 ;; skk-henkan-show-candidates
\e$B$r8F$VA0$N>uBV$KLa
\e(B
2901 (setq skk-henkan-count 4)
2902 (skk-unread-event (character-to-event
2903 skk-previous-candidate-char))
2904 ;; skk-henkan
\e$B$^$G0l5$$K
\e(B throw
\e$B$9$k!#
\e(B
2905 (throw 'unread nil))
2906 ;;
\e$B0l$DA0$N8uJd72$r%(%3!<%(%j%"$KI=<($9$k!#
\e(B
2909 ;;
\e$B$3$l$,$J$$$H
\e(B quit
\e$B$G$-$J$$!#2?8N!)
\e(B
2910 ((and (eq skk-emacs-type 'xemacs)
2911 (eq char (quit-char)))
2913 (t (skk-message "\"%c\"
\e$B$OM-8z$J%-!<$G$O$"$j$^$;$s!*
\e(B"
2914 "\"%c\" is not valid here!"
2918 ;; skk-previous-candidate
\e$B$X
\e(B
2919 (setq skk-henkan-count 0)
2920 (skk-unread-event (character-to-event skk-previous-candidate-char))
2921 ;; skk-henkan
\e$B$^$G0l5$$K
\e(B throw
\e$B$9$k!#
\e(B
2922 (throw 'unread nil))))) ; end of while loop
2927 (defun skk-henkan-show-candidate-subr (keys candidates)
2928 ;; key
\e$B$H
\e(B candidates
\e$B$rAH$_9g$o$;$F
\e(B 7
\e$B$D$N8uJd72
\e(B (
\e$B8uJd?t$,
\e(B 7
\e$B$KK~$?$J$+$C
\e(B
2929 ;;
\e$B$?$i$=$3$GBG$A@Z$k
\e(B)
\e$B$NJ8;zNs$r:n$j!"%_%K%P%C%U%!$KI=<($9$k!#
\e(B
2931 ;; CANDIDATES
\e$B$N@hF,$N
\e(B 7
\e$B$D$N$_$N%j%9%H!#
\e(B
2932 (let ((count 0) e v)
2934 (setq e (nth count candidates))
2940 (n 0) str cand message-log-max)
2941 (if (not (car workinglst))
2943 (setq workinglst (skk-truncate-message workinglst))
2945 ;;
\e$B:G=i$N8uJd$NA0$K6uGr$r$/$C$D$1$J$$$h$&$K:G=i$N8uJd$@$1@h$K<h$j
\e(B
2947 str (concat (car keys) ":" (if (consp (car workinglst))
2948 (cdr (car workinglst))
2950 ;;
\e$B;D$j$N
\e(B 6
\e$B$D$r<h$j=P$9!#8uJd$H8uJd$N4V$r6uGr$G$D$J$0!#
\e(B
2951 (while (and (< n 7) (setq cand (nth n workinglst)))
2952 (setq cand (if (consp cand) (cdr cand) cand)
2953 str (concat str " " (nth n keys) ":" cand)
2955 (message "%s [
\e$B;D$j
\e(B %d%s]"
2956 str (length (nthcdr n candidates))
2957 (make-string (length skk-current-search-prog-list) ?+)))
2958 ;;
\e$BI=<($9$k8uJd?t$rJV$9!#
\e(B
2961 (defun skk-truncate-message (l)
2963 ;; L
\e$B$KF~$C$F$$$k$=$l$>$l$NMWAG
\e(B (
\e$B8uJd
\e(B)
\e$B$NJ8;zNs$NI}$N%j%9%H!#
\e(B
2966 (function (lambda (e) (string-width (if (consp e) (cdr e) e))))
2969 (candidates-num (length l))
2970 ;;
\e$B8uJd0J30$K%(%3!<%(%j%"$KI=<($5$l$kItIJ$NJ8;zNs$NI}!#
\e(B
2971 ;; (string-width " [
\e$B;D$j
\e(B 100+]") -> 13
2972 ;; ` F:'
\e$B$J$I$N8uJd$NA*Br$N$?$a$KI=<($5$l$k
\e(B width 3
\e$B$NJ8;zNs$,8uJd?tJ,$"$k!#
\e(B
2973 ;;
\e$B%(%3!<%(%j%"$N:G=i$N8uJd$O6uGr$,A0$KIU$$$F$$$J$$$N$G
\e(B 1-
\e$B!#
\e(B
2974 (parts-len (+ 13 (1- (* 3 candidates-num))))
2975 ;;
\e$B$G!"%H!<%?%k$G$I$l$@$1$NI}$K$J$k$+!#
\e(B
2976 (message-width (apply '+ parts-len width-list))
2977 (diff (- (window-width) message-width))
2978 (count 0) (plus 0) max)
2980 ;; window-width
\e$B$K<}$^$C$F$$$l$P2?$b$7$J$$!#
\e(B
2982 ;;
\e$B$=$l$>$l$N8uJd$N:GBgI}$r2>7h$a$9$k!#
\e(B
2983 (setq max (/ (float (- (window-width) parts-len)) candidates-num))
2985 (if (> (car width-list) max)
2986 (setq count (1+ count))
2987 (setq plus (+ (- max (car width-list)) plus)))
2988 (setq width-list (cdr width-list)))
2989 ;;
\e$B:GBgI}$KK~$?$J$$D9$5$r=8$a$F:GBgI}$r=$@5!#
\e(B
2990 (setq max (truncate (/ (+ plus (- (window-width) parts-len))
2995 ;;
\e$B:GBgI}0J>e$NJ8;zNs$r
\e(B
2996 (cond ((and (stringp e) (> (string-width e) max))
2997 ;;
\e$B:GBgI}$K<}$^$k$h$&$KC;$+$/$9$k!#
\e(B
2998 (concat (truncate-string-to-width e (- max 3)) "..."))
2999 ((and (consp e) (> (string-width (cdr e)) max))
3001 (concat (truncate-string-to-width (cdr e) (- max 3))
3006 (defun skk-henkan-in-minibuff ()
3007 ;;
\e$B%_%K%P%C%U%!$G<-=qEPO?$r$7!"EPO?$7$?%(%s%H%j$NJ8;zNs$rJV$9!#
\e(B
3009 (let ((enable-recursive-minibuffers t)
3010 ;;
\e$BJQ49Cf$K
\e(B isearch message
\e$B$,=P$J$$$h$&$K$9$k!#
\e(B
3011 skk-isearch-message new-one)
3012 (add-hook 'minibuffer-setup-hook 'skk-j-mode-on)
3014 'minibuffer-setup-hook
3015 (function (lambda ()
3016 (add-hook 'pre-command-hook 'skk-pre-command nil 'local))))
3019 (read-from-minibuffer
3020 (concat (or (and (skk-numeric-p) (skk-num-henkan-key))
3022 (skk-compute-henkan-key2)
3025 (if (and (not skk-okuri-char)
3026 skk-read-from-minibuffer-function)
3027 (funcall skk-read-from-minibuffer-function))))
3030 (if (string= new-one "")
3031 (if skk-exit-show-candidates
3032 ;;
\e$B%_%K%P%C%U%!$KI=<($7$?8uJd$,?T$-$F<-=qEPO?$KF~$C$?$,!"6uJ8;z
\e(B
3033 ;;
\e$BNs$,EPO?$5$l$?>l9g!#:G8e$K%_%K%P%C%U%!$KI=<($7$?8uJd72$r:FI=
\e(B
3036 (setq skk-henkan-count (cdr skk-exit-show-candidates))
3038 ;; skk-henkan-show-candidates
\e$B$KF~$kA0$K8uJd$,?T$-$?>l9g
\e(B
3039 (setq skk-henkan-count (1- skk-henkan-count))
3040 (if (= skk-henkan-count -1)
3042 ;;
\e$BAw$j$"$j$NJQ49$G<-=qEPO?$KF~$j!"6uJ8;z$rEPO?$7$?8e!"$=$N
\e(B
3043 ;;
\e$B$^$^:FEYAw$j$J$7$H$7$FJQ49$7$?>l9g$O
\e(B
3044 ;; skk-henkan-okurigana, skk-okuri-char
\e$B$NCM$r
\e(B nil
\e$B$K$7$J$1
\e(B
3045 ;;
\e$B$l$P!"$=$l$>$l$NCM$K8E$$Aw$j2>L>$,F~$C$?$^$^$G8!:w$K<:GT
\e(B
3047 (setq skk-henkan-okurigana nil
3050 (skk-change-marker-to-white))
3051 ;; skk-henkan-count
\e$B$,
\e(B -1
\e$B$G$J$1$l$P!"%+%l%s%H%P%C%U%!$G$O:G8e$N
\e(B
3052 ;;
\e$B8uJd$rI=<($7$?$^$^$J$N$G
\e(B (
\e$BI=<(4XO"$G$O2?$b$7$J$/$F$b!"$b$&4{
\e(B
3053 ;;
\e$B$KK>$_$N>uBV$K$J$C$F$$$k
\e(B)
\e$B2?$b$7$J$$!#
\e(B
3055 ;;
\e$B%_%K%P%C%U%!$GJQ49$7$?J8;zNs$,$"$k
\e(B (
\e$B6uJ8;zNs$G$J$$
\e(B)
\e$B$H$-!#
\e(B
3056 ;;
\e$BKvHx$N6uGr$r<h$j=|$/!#
\e(B
3057 (and (string-match "[
\e$B!!
\e(B]+$" new-one)
3058 (setq new-one (substring new-one 0 (match-beginning 0))))
3060 (setq new-one (skk-num-process-user-minibuf-input new-one))
3061 ;;
\e$B$9$4$/$?$/$5$s$N8uJd$,$"$k>l9g$K!"$=$N:G8e$K?7$7$$8uJd$r2C$($k$N$O
\e(B
3062 ;;
\e$B$1$C$3$&9|$@$,!#
\e(B
3063 (setq skk-henkan-list (nconc skk-henkan-list (list new-one))
3064 ;;
\e$B%U%i%0$r%*%s$K$9$k!#
\e(B
3065 skk-kakutei-flag t))
3066 (setq skk-henkan-in-minibuff-flag t
3067 skk-touroku-count (1+ skk-touroku-count)))
3068 ;; (nth skk-henkan-count skk-henkan-list)
\e$B$,
\e(B nil
\e$B$@$+$i<-=qEPO?$K
\e(B
3069 ;;
\e$BF~$C$F$$$k!#
\e(Bskk-henkan-count
\e$B$r%$%s%/%j%a%s%H$9$kI,MW$O$J$$!#
\e(B
3070 ;; (setq skk-henkan-count (1+ skk-henkan-count))
3071 ;; new-one
\e$B$,6uJ8;zNs$@$C$?$i
\e(B nil
\e$B$rJV$9!#
\e(B
3072 (if (not (string= new-one "")) new-one))))
3074 (defun skk-compute-henkan-key2 ()
3075 ;; skk-henkan-okurigana
\e$B$,
\e(B non-nil
\e$B$J$i
\e(B skk-henkan-key
\e$B$+$i!"$+$D$F
\e(B
3076 ;; skk-henkan-key2
\e$B$H8F$P$l$F$$$?$b$N$r:n$k!#
\e(B
3077 ;; skk-henkan-key2
\e$B$H$O!"!V4A;zItJ,$NFI$_
\e(B + "*" +
\e$BAw$j2>L>!W$N7A<0$NJ8;zNs$r
\e(B
3079 (if skk-henkan-okurigana
3081 (string-match "[a-z]+$" skk-henkan-key)
3082 (concat (substring skk-henkan-key 0 (match-beginning 0))
3083 "*" skk-henkan-okurigana))))
3085 (defun skk-setup-minibuffer ()
3086 ;;
\e$B%+%l%s%H%P%C%U%!$NF~NO%b!<%I$K=>$$%_%K%P%C%U%!$NF~NO%b!<%I$r@_Dj$9$k!#
\e(B
3087 (cond ((eq skk-minibuffer-origin-mode 'hiragana)
3089 ((eq skk-minibuffer-origin-mode 'katakana)
3091 ((eq skk-minibuffer-origin-mode 'abbrev)
3092 (skk-abbrev-mode-on))
3093 ((eq skk-minibuffer-origin-mode 'latin)
3094 (skk-latin-mode-on))
3095 ((eq skk-minibuffer-origin-mode 'jisx0208-latin)
3096 (skk-jisx0208-latin-mode-on))))
3098 (defun skk-previous-candidate (&optional arg)
3099 "
\e$B"'%b!<%I$G$"$l$P!"0l$DA0$N8uJd$rI=<($9$k!#
\e(B
3100 \e$B"'%b!<%I0J30$G$O%+%l%s%H%P%C%U%!$K
\e(B \"x\"
\e$B$rA^F~$9$k!#
\e(B
3101 \e$B3NDj<-=q$K$h$k3NDj$ND>8e$K8F$V$H3NDj$,%"%s%I%%$5$l$F!"3NDjA0$N>uBV$G
\e(B
3102 \e$BD>A0$N8+=P$78l$,%+%l%s%H%P%C%U%!$KA^F~$5$l$k!#
\e(B"
3104 (skk-with-point-move
3105 (if (not skk-henkan-active)
3106 (if (not (eq last-command 'skk-kakutei-henkan))
3107 (skk-kana-input arg)
3108 ;; restore the state just before the last kakutei henkan.
3109 (delete-region skk-henkan-start-point (point))
3110 (skk-set-henkan-point-subr)
3111 (insert-and-inherit (skk-get-last-henkan-data 'henkan-key))
3112 (setq this-command 'skk-undo-kakutei-henkan))
3113 (if (string= skk-henkan-key "")
3117 (skk-save-point (forward-char 1) (point-marker)))))
3119 (if (= skk-henkan-count 0)
3122 ;; roman prefix for okurigana should be removed.
3123 (setq skk-henkan-key (substring skk-henkan-key 0 -1)))
3124 (setq skk-henkan-count -1
3125 skk-henkan-in-minibuff-flag nil
3127 skk-henkan-okurigana nil
3129 skk-okuri-index-min -1
3130 skk-okuri-index-max -1
3133 (and (skk-numeric-p) (skk-num-initialize))
3134 ;; Emacs 19.28
\e$B$@$H
\e(B Overlay
\e$B$r>C$7$F$*$+$J$$$H!"<!$K
\e(B insert
\e$B$5$l
\e(B
3135 ;;
\e$B$k
\e(B skk-henkan-key
\e$B$K2?8N$+
\e(B Overlay
\e$B$,$+$+$C$F$7$^$&!#
\e(B
3136 (and skk-use-face (skk-henkan-face-off))
3137 (delete-region skk-henkan-start-point skk-henkan-end-point)
3138 (goto-char skk-henkan-end-point)
3139 (insert-and-inherit skk-henkan-key)
3140 (skk-change-marker-to-white))
3141 (setq skk-henkan-count (1- skk-henkan-count))
3142 (skk-insert-new-word (skk-get-current-candidate-simply))))
3146 (skk-set-marker mark nil)
3148 (goto-char (point-max)))
3149 (and skk-abbrev-mode (= skk-henkan-count -1) (skk-abbrev-mode-on)))))))
3151 (defun skk-insert-new-word (word)
3152 ;;
\e$B8+=P$78l$r>C$7!"$=$N>l=j$XJQ497k2L$NJ8;zNs$rA^F~$9$k!#
\e(B
3154 ;; Emacs 19.28
\e$B$@$H
\e(B Overlay
\e$B$r>C$7$F$*$+$J$$$H!"<!$K
\e(B insert
\e$B$5$l$k
\e(B
3155 ;; skk-henkan-key
\e$B$K2?8N$+
\e(B Overlay
\e$B$,$+$+$C$F$7$^$&!#
\e(B
3156 (and skk-use-face (skk-henkan-face-off))
3157 (delete-region skk-henkan-start-point skk-henkan-end-point)
3158 (goto-char skk-henkan-start-point)
3159 ;; (^_^;)
\e$B$N$h$&$J8+=P$78l$KBP$7!"
\e(Bread-from-string
\e$B$r8F$V$H%(%i!<$K$J$k$N
\e(B
3160 ;;
\e$B$G!"
\e(Bcondition-case
\e$B$G$=$N%(%i!<$rJa$^$($k!#
\e(B
3162 (setq func (car (read-from-string word)))
3163 (error (setq func word)))
3165 (insert-and-inherit (if (and (listp func)
3166 (functionp (car func)))
3168 ;;
\e$BJ8;zNs$rJV$5$J$$
\e(B Lisp
\e$B%W%m%0%i%`$rI>2A$7$F$b%(%i!<$K$J$i$J$$J}$,JXMx!)
\e(B
3170 (skk-set-marker skk-henkan-end-point (point))
3171 (and skk-use-face (skk-henkan-face-on))
3172 (and skk-insert-new-word-function
3173 (funcall skk-insert-new-word-function))))
3175 (defun skk-kakutei (&optional word)
3176 "
\e$B8=:_I=<($5$l$F$$$k8l$G3NDj$7!"<-=q$N99?7$r9T$&!#
\e(B
3177 \e$B%+%l%s%H%P%C%U%!$G
\e(B SKK
\e$B%b!<%I$K$J$C$F$$$J$+$C$?$i
\e(B SKK
\e$B%b!<%I$KF~$k!#
\e(B
3178 \e$B%*%W%7%g%J%k0z?t$N
\e(B WORD
\e$B$rEO$9$H!"8=:_I=<($5$l$F$$$k8uJd$H$OL54X78$K
\e(B WORD
\e$B$G3N
\e(B
3180 ;; read only
\e$B$G%(%i!<$K$J$k$h$&$K$9$k$H
\e(B read only
\e$B%P%C%U%!$G
\e(B SKK
\e$B$,5/F0$G$-
\e(B
3181 ;;
\e$B$J$/$J$k!#
\e(B
3183 (let ((inhibit-quit t)
3184 converted kakutei-word)
3185 (if (not skk-henkan-on)
3187 (if (not skk-henkan-active)
3190 ;;
\e$B3NDj<-=q$N8l$G3NDj$7$?$H$-$O!"<-=q$K$=$N8l$r=q$-9~$`I,MW$b$J
\e(B
3191 ;;
\e$B$$$7!"99?7$9$kI,MW$b$J$$$H;W$C$F$$$?$,!"Jd40$r9T$J$&$H$-$O!"
\e(B
3192 ;;
\e$B8D?M<-=q$r;2>H$9$k
\e(B (
\e$B3NDj<-=q$O;2>H$7$J$$
\e(B)
\e$B$N$G!"B?>/;q8;$H;~
\e(B
3193 ;;
\e$B4V$rL5BL$K$7$F$b!"8D?M<-=q$K3NDj<-=q$N%(%s%H%j$r=q$-9~$s$G99
\e(B
3194 ;;
\e$B?7$b$7$F$*$/!#
\e(B
3195 (or word (skk-get-current-candidate-simply (skk-numeric-p))))
3197 (and (not skk-search-excluding-word-pattern-function) kakutei-word)
3199 kakutei-word skk-search-excluding-word-pattern-function
3201 (funcall skk-search-excluding-word-pattern-function kakutei-word))))
3203 (skk-update-jisyo kakutei-word)
3206 (setq converted (skk-get-current-candidate-simply))
3207 (skk-num-update-jisyo kakutei-word converted))))))
3210 (skk-kakutei-cleanup-buffer)
3211 ;; KAKUTEI-WORD
\e$B$J$I$N>pJs$,I,MW$G$"$l$P!"
\e(Bskk-last-henkan-data
\e$B$+$iF@$i$l
\e(B
3212 ;;
\e$B$k!#I,MW$J%G!<%?$,$=$l$i$NJQ?t$K8BDj$5$l$J$$$N$G!"0z?t$K$7$J$$!#
\e(B
3213 (and skk-kakutei-end-function (funcall skk-kakutei-end-function))
3214 (skk-kakutei-initialize
3215 (if (skk-numeric-p) (cons kakutei-word converted) kakutei-word)))))
3218 (skk-j-mode-on skk-katakana)
3219 ;;
\e$B%+%l%s%H%P%C%U%!$G$^$@
\e(B skk-mode
\e$B$,%3!<%k$5$l$F$$$J$+$C$?$i!"%3!<%k$9$k!#
\e(B
3222 (defun skk-kakutei-cleanup-buffer ()
3223 ;;
\e$B3NDjD>8e$N%P%C%U%!$N@07A$r9T$J$&!#
\e(B
3226 (skk-delete-okuri-mark)
3227 (and skk-katakana skk-convert-okurigana-into-katakana
3228 (skk-katakana-region skk-henkan-end-point (point)))))
3229 (skk-delete-henkan-markers)
3230 (and (boundp 'self-insert-after-hook) self-insert-after-hook
3231 (funcall self-insert-after-hook skk-henkan-start-point (point)))
3233 (skk-del-char-with-pad
3236 (buffer-substring-no-properties skk-henkan-start-point (point)))))))
3238 (defun skk-kakutei-initialize (&optional kakutei-word)
3239 ;;
\e$B3NDj;~$KJQ?t$N=i4|2=$H%"%s%I%%$N$?$a$NJQ?t$NJ]B8$r9T$J$&!#
\e(B
3240 (if (and kakutei-word (or (consp kakutei-word)
3241 (not (string= kakutei-word ""))))
3243 (setq skk-kakutei-count (1+ skk-kakutei-count))
3244 ;; skk-undo-kakutei
\e$B$N$?$a$K:G8e$NJQ49$N%G!<%?$rJ]B8$9$k!#
\e(B
3245 (skk-put-last-henkan-data 'henkan-key skk-henkan-key)
3246 (skk-put-last-henkan-data 'okuri-char skk-okuri-char)
3247 (skk-put-last-henkan-data 'henkan-okurigana skk-henkan-okurigana)
3248 (skk-put-last-henkan-data
3250 ;;
\e$B3NDj$7$?8l$r@hF,$K$9$k!#
\e(B
3251 (cons kakutei-word (delete kakutei-word skk-henkan-list)))
3252 ;; (eq last-command 'skk-kakutei-henkan)
\e$B$G%]!<%?%V%k$K3NG'$G$-$k$N$G
\e(B
3253 ;;
\e$B$"$($F$$$i$J$$$+!#
\e(B
3254 ;;(skk-put-last-henkan-data
3256 ;; (eq this-command 'skk-kakutei-henkan))
3258 ;;
\e$B>e5-0J30$N
\e(B henkan data
\e$B$r
\e(B skk-last-henkan-data
\e$B$K;D$7$?$+$C$?$i!"
\e(B
3259 ;; skk-kakutei-end-function
\e$B$rMxMQ$9$k!#
\e(B
3261 (setq skk-abbrev-mode nil
3262 skk-exit-show-candidates nil
3263 skk-henkan-active nil
3265 skk-henkan-in-minibuff-flag nil
3268 skk-henkan-okurigana nil
3270 skk-kakutei-flag nil
3272 skk-okuri-index-min -1
3273 skk-okuri-index-max -1
3276 (and (skk-numeric-p) (skk-num-initialize))
3277 (and skk-use-look (setq skk-look-completion-words nil)))
3279 (defun skk-undo-kakutei ()
3280 "
\e$B0lHV:G8e$N3NDj$r%"%s%I%%$7!"8+=P$7$KBP$9$k8uJd$rI=<($9$k!#
\e(B
3281 \e$B:G8e$K3NDj$7$?$H$-$N8uJd$O%9%-%C%W$5$l$k!#
\e(B
3282 \e$B8uJd$,B>$K$J$$$H$-$O!"%_%K%P%C%U%!$G$N<-=qEPO?$KF~$k!#
\e(B"
3284 (skk-with-point-move
3285 (cond ((eq last-command 'skk-undo-kakutei)
3286 (skk-error "
\e$B3NDj%"%s%I%%$OO"B3;HMQ$G$-$^$;$s
\e(B"
3287 "Cannot undo kakutei repeatedly"))
3289 (skk-error "
\e$B"'%b!<%I$G$O3NDj%"%s%I%%$G$-$^$;$s
\e(B"
3290 "Cannot undo kakutei in
\e$B"'
\e(B mode"))
3291 ( ; skk-henkan-key may be nil or "".
3292 (or (not (skk-get-last-henkan-data 'henkan-key))
3293 (string= (skk-get-last-henkan-data 'henkan-key) ""))
3294 (skk-error "
\e$B%"%s%I%%%G!<%?$,$"$j$^$;$s
\e(B" "Lost undo data")))
3297 (if (skk-get-last-henkan-data 'henkan-okurigana)
3298 (+ (length (skk-get-last-henkan-data 'henkan-okurigana))
3299 skk-henkan-end-point)
3300 skk-henkan-end-point)))
3301 (setq skk-henkan-active t
3303 skk-current-search-prog-list
3304 (if (eq (car (car skk-search-prog-list))
3305 'skk-search-kakutei-jisyo-file)
3306 ;;
\e$B3NDj<-=q$OC5$7$F$bL50UL#!#
\e(B
3307 (cdr skk-search-prog-list)
3308 skk-search-prog-list))
3309 ;; get henkan data back from skk-last-henkan-data.
3310 (setq skk-henkan-key (skk-get-last-henkan-data 'henkan-key)
3311 skk-henkan-list (skk-get-last-henkan-data 'henkan-list)
3312 skk-henkan-okurigana (skk-get-last-henkan-data 'henkan-okurigana)
3313 skk-okuri-char (skk-get-last-henkan-data 'okuri-char))
3314 (and skk-use-numeric-conversion
3315 (setq skk-num-list (skk-get-last-henkan-data 'skk-num-list)))
3316 (and (>= (point-max) end)
3317 ;;
\e$B:G8e$NJQ49ItJ,$N%F%-%9%H$r>C$9!#Aw$j2>L>$rGD0.$7$F$$$k$N$J$i
\e(B
3318 ;; (skk-process-okuri-early
\e$B$,
\e(B non-nil
\e$B$J$iAw$j2>L>$rGD0.$G$-$J$$
\e(B)
\e$B!"
\e(B
3319 ;;
\e$BAw$j2>L>$r4^$a$?ItJ,$^$G$r>C$9!#
\e(B
3320 (delete-region skk-henkan-start-point end))
3321 (goto-char skk-henkan-start-point)
3322 (insert-and-inherit "
\e$B"'
\e(B")
3323 (skk-set-marker skk-henkan-start-point (point))
3325 (progn ;
\e$BAw$j$"$j
\e(B
3326 (insert-and-inherit (substring skk-henkan-key 0
3327 (1- (length skk-henkan-key))))
3328 (skk-set-marker skk-henkan-end-point (point))
3329 (and skk-henkan-okurigana (insert-and-inherit skk-henkan-okurigana)))
3330 (insert-and-inherit skk-henkan-key)
3331 (skk-set-marker skk-henkan-end-point (point)))
3332 (skk-message "
\e$B3NDj%"%s%I%%!*
\e(B" "Undo kakutei!")
3333 (setq skk-henkan-count 1)
3335 ;; skk-kakutei-undo
\e$B$+$iESCf$GH4$1$?>l9g$O!"3F<o%U%i%0$r=i4|2=$7$F$*$+$J$$
\e(B
3336 ;;
\e$B$H<!$NF0:n$r$7$h$&$H$7$?$H$-$K%(%i!<$K$J$k!#
\e(B
3337 (error (skk-kakutei))
3338 (quit (skk-kakutei)))))
3340 (defun skk-set-henkan-point (&optional arg)
3341 ;;"
\e$BJQ49$r3+;O$9$k%]%$%s%H$r%^!<%/$7!"BP1~$9$k
\e(B skk-prefix
\e$B$+!"Jl2;$rF~NO$9$k!#
\e(B"
3342 (let* ((last-char (skk-downcase last-command-char))
3343 (normal (not (eq last-char last-command-char)))
3344 (sokuon (and (string= skk-prefix (char-to-string last-char))
3346 (henkan-active skk-henkan-active))
3347 (if (or (not skk-henkan-on) skk-henkan-active)
3349 (skk-set-henkan-point-subr)
3350 (and skk-henkan-on (skk-set-henkan-point-subr))
3352 (skk-emulate-original-map arg)
3353 ;; What's to be here?
3354 ;;(skk-self-insert arg)
3357 (progn ; special char
3358 (insert-and-inherit last-char)
3359 (skk-set-marker skk-henkan-end-point (point))
3360 (setq skk-henkan-count 0
3361 skk-henkan-key (buffer-substring-no-properties
3362 skk-henkan-start-point (point))
3365 ;; prepare for the processing of okurigana if not skk-okurigana
3366 ;; and the preceding character is not a numeric character.
3367 ;; if the previous char is a special midashi char or a
3368 ;; numeric character, we assume that the user intended to type the
3369 ;; last-command-char in lower case.
3370 (if (and (or (not (skk-get-prefix skk-current-rule-tree)) ; for KAnji, KanJIru
3372 (not (= skk-henkan-start-point skk-kana-start-point))
3373 (or sokuon ; for TaSSi or TasSi
3374 (skk-kana-cleanup)))) ; for NEko
3376 (or (= skk-henkan-start-point (point))
3377 (let ((p (char-before)))
3380 ;; previous char is a special midashi char
3381 (memq p skk-special-midashi-char-list)
3382 ;; previous char is an ascii numeric char
3383 (and (<= ?0 p) (<= p ?9))
3384 ;; previous char is a JIS X 0208 numeric char
3385 (and (skk-jisx0208-p p)
3386 (= (skk-char-octet p 0) 35) ;?#
3387 (<= 48 (skk-char-octet p 1)) ; ?0
3388 (<= (skk-char-octet p 1) 57)) ; ?9
3390 (if skk-process-okuri-early
3392 (skk-set-marker skk-henkan-end-point (point))
3393 (setq skk-okuri-char (char-to-string last-char))
3396 (setq skk-henkan-key
3397 (concat (buffer-substring-no-properties
3398 skk-henkan-start-point
3399 skk-kana-start-point)
3400 (if skk-katakana "
\e$B%C
\e(B" "
\e$B$C
\e(B")
3401 skk-henkan-okurigana))
3403 (insert-and-inherit (if skk-katakana "
\e$B%C
\e(B " "
\e$B$C
\e(B "))
3407 (delete-backward-char 2))
3408 (setq skk-henkan-key (concat
3409 (buffer-substring-no-properties
3410 skk-henkan-start-point
3413 (insert-and-inherit " ")
3417 (delete-backward-char 1))
3418 ;; we set skk-kana-start-point here, since the marker may no
3419 ;; longer point at the correct position after skk-henkan.
3420 (skk-set-marker skk-kana-start-point (point)))
3421 (if (= skk-henkan-start-point (point))
3425 (skk-erase-prefix 'clean)
3426 (insert-and-inherit (if skk-katakana "
\e$B%C
\e(B" "
\e$B$C
\e(B"))))
3427 (skk-set-marker skk-okurigana-start-point (point))
3428 (insert-and-inherit "*")
3429 (skk-set-marker skk-kana-start-point (point))
3430 (setq skk-okuri-char (char-to-string last-char)
3431 skk-okurigana t))))))
3434 (setq last-command-char last-char)
3435 (skk-kana-input arg)))))
3437 (defun skk-start-henkan (arg)
3438 "
\e$B"&%b!<%I$G$O4A;zJQ49$r3+;O$9$k!#"'%b!<%I$G$O<!$N8uJd$rI=<($9$k!#
\e(B
3439 \e$B"&%b!<%I$G!"%+%?%+%J%b!<%I$N$^$^4A;zJQ49$r3+;O$9$k$H!"8+=P$78l$rJ?2>L>$K
\e(B
3440 \e$BJQ498e!"4A;zJQ49$r3+;O$9$k!#
\e(B
3441 \e$B8+=P$78l$NJQ49$;$:$K$=$N$^$^4A;zJQ49$r9T$J$$$?$1$l$P!"
\e(BC-u SPC \(arg
\e$B$,
\e(B 4
3442 \e$B$K$J$k
\e(B\)
\e$B$H%?%$%W$9$k!#
\e(B"
3444 (skk-with-point-move
3445 (cancel-undo-boundary)
3446 (if skk-henkan-active
3448 (setq skk-henkan-count (1+ skk-henkan-count))
3452 (skk-kana-cleanup 'force)
3453 (and (skk-get-prefix skk-current-rule-tree)
3454 ;; Never. `skk-erase-prefix' called by `skk-kana-cleanup'
3455 ;; initializes `skk-prefix'.
3456 (skk-error "
\e$B%U%#%C%/%9$5$l$F$$$J$$
\e(B skk-prefix
\e$B$,$"$j$^$9
\e(B"
3457 "Have unfixed skk-prefix"))
3459 (and (< pos skk-henkan-start-point)
3461 "
\e$B%+!<%=%k$,JQ493+;OCOE@$h$jA0$K$"$j$^$9
\e(B"
3462 "Henkan end point must be after henkan start point"))
3463 (and skk-katakana (= arg 1)
3464 (skk-hiragana-region skk-henkan-start-point pos))
3465 (setq skk-henkan-key (buffer-substring-no-properties
3466 skk-henkan-start-point pos))
3467 (and skk-okurigana (string-match "\\* *$" skk-henkan-key)
3469 "
\e$B6u$NAw$j2>L>$G4A;z$rEPO?$7$h$&$H$7$F$$$^$9
\e(B"
3471 (if skk-allow-spaces-newlines-and-tabs
3472 ;; skk-henkan-key
\e$B$NCf$N
\e(B "[ \n\t]+"
\e$B$r40A4$K<h$j=|$/!#
\e(B
3473 (while (string-match "[ \n\t]+" skk-henkan-key)
3474 (setq skk-henkan-key
3475 (concat (substring skk-henkan-key 0 (match-beginning 0))
3476 (substring skk-henkan-key (match-end 0)))))
3479 (and (> (point) skk-henkan-start-point)
3481 "
\e$BJQ49%-!<$K2~9T$,4^$^$l$F$$$^$9
\e(B"
3482 "Henkan key may not contain a new line character")))
3483 ;;
\e$B:G=i$N%9%Z!<%9$G
\e(B skk-henkan-key
\e$B$r$A$g$s@Z$k$@$1!#
\e(B
3484 (setq skk-henkan-key (substring skk-henkan-key 0
3487 (skk-set-marker skk-henkan-end-point pos)
3488 (setq skk-henkan-count 0)
3490 (if (and skk-abbrev-mode skk-henkan-active)
3493 (setq skk-abbrev-mode t))))))))
3495 (defun skk-auto-start-henkan (str)
3496 ;; skk-auto-start-henkan-keyword-list
\e$B$NMWAG$NJ8;zNs$rA^F~$7$?$H$-$K<+F0E*$K
\e(B
3497 ;; (
\e$B%9%Z!<%9$rBG80$7$J$/$H$b
\e(B)
\e$BJQ49$r3+;O$9$k!#%(!<!_%$%=%U%H<R$N
\e(B MSDOS
\e$BMQ
\e(B
\e$B$N
\e(B
3498 ;; FEP
\e$B!"
\e(BWX2+
\e$BIw!#
\e(B
3499 (and (member str skk-auto-start-henkan-keyword-list)
3502 (and (> (point) skk-henkan-start-point)
3503 (let ((skk-prefix ""))
3504 (skk-start-henkan (prefix-numeric-value current-prefix-arg)))))))
3506 (defun skk-backward-and-set-henkan-point (arg)
3507 "
\e$B%]%$%s%H$ND>A0$K$"$kJ8;zNs$N@hF,$KJQ493+;O%]%$%s%H$r<($9
\e(B \"
\e$B"&
\e(B\"
\e$B$rIU$1$k!#
\e(B
3508 \e$B%+!<%=%k$ND>A0$K$"$kJ8;z
\e(B \(
\e$B%9%Z!<%9J8;z!"%?%VJ8;z!"D92;$rI=$o$9!V!<!W
\e(B
\e$B$OL5>r7o
\e(B
3509 \e$B$K%9%-%C%W$5$l$k
\e(B\)
\e$B$r
\e(B skk-what-char-type
\e$B$K$FH=JL$7!"F1<o$NJ8;zNs$r$R$H$+$?$^
\e(B
3510 \e$B$j$H$7$F8eJ}$X%9%-%C%W$9$k!#
\e(B
3511 \e$BC"$7!"$R$i$+$J$N>l9g$O!V$r!W$ND>A0$G!"%+%?%+%J$N>l9g$O!V%r!W$ND>A0$G;_$^$k!#
\e(B
3512 C-u ARG
\e$B$G
\e(B ARG
\e$B$rM?$($k$H!"$=$NJ8;zJ,$@$1La$C$FF1$8F0:n$r9T$J$&!#
\e(B"
3515 (skk-emulate-original-map arg)
3518 ;;
\e$B$H$j$"$($::G=i$N
\e(B SPC, TAB,
\e$BA43Q
\e(B SPC
\e$B$@$1%8%c%s%W$9$k!#
\e(B
3519 (skip-chars-backward " \t
\e$B!!
\e(B")
3520 ;;
\e$B0z?t$"$j!#
\e(B
3522 (if (not skk-allow-spaces-newlines-and-tabs)
3523 (backward-char (prefix-numeric-value arg))
3524 (setq arg (prefix-numeric-value arg))
3526 (skip-chars-backward " \t
\e$B!!
\e(B")
3528 ;;
\e$B9TF,$@$C$?$i0l9TA0$N9TKv$^$GLa$k$,!"
\e(Barg
\e$B$O8:$i$5$J$$!#
\e(B
3531 (setq arg (1- arg)))))
3532 ;;
\e$B0z?t$J$7!#
\e(B
3534 (if (not skk-allow-spaces-newlines-and-tabs)
3535 (skk-save-point (beginning-of-line) (point))
3537 ;;
\e$B!2!1!0!/!.!-!,!+!*!)!(!'!&!%!$!#
\e(B
3538 (unknown-chars-regexp
3539 (if skk-allow-spaces-newlines-and-tabs
3540 "[
\e$B!!
\e(B\n\t
\e$B!<!7!6!5!4!3
\e(B]"
3541 "[
\e$B!!!<!7!6!5!4!3
\e(B]"))
3546 (while (and (> (point) limit)
3547 ;; unknown-chars-regexp
\e$B$G$OJ8;z<oJL$,H=JL$G$-$J$$$N
\e(B
3548 ;;
\e$B$G!"$=$NJ8;zNs$,B3$/8B$j%]%$%s%H$r%P%C%U%!$N@hF,
\e(B
3549 ;;
\e$BJ}8~$XLa$9!#
\e(B
3550 (looking-at unknown-chars-regexp))
3552 (setq type (skk-what-char-type))
3553 (if (eq type 'unknown)
3555 (skk-backward-and-set-henkan-point-1 type)
3557 (if skk-allow-spaces-newlines-and-tabs
3558 (while (and (> (point) limit) (bolp))
3559 ;; 1
\e$B9T>e$N9TKv$X!#
\e(B
3561 ;;
\e$B%]%$%s%H$,H=JL$G$-$J$$J8;z<oJL$N>e$K$"$k4V$O
\e(B
3562 ;; backward
\e$BJ}8~$X%]%$%s%H$rLa$9!#
\e(B
3563 ;;(while (and (> (point) limit)
3564 ;; (looking-at unknown-chars-regexp))
3565 ;; (backward-char 1))
3567 (> 0 (skk-backward-and-set-henkan-point-1 type))
3568 ;;(eq (skk-what-char-type) type))
3569 (setq p (point))))))))
3571 (skip-chars-forward unknown-chars-regexp)))
3572 (skk-set-henkan-point-subr)))))
3574 (defun skk-backward-and-set-henkan-point-1 (type)
3575 ;; skk-backward-and-set-henkan-point
\e$B$N%5%V%k!<%A%s!#
\e(BCHAR
\e$B$N<oN`$K1~$8$?J8;z
\e(B
3576 ;;
\e$B$r%9%-%C%W$7$F%P%C%U%!$N@hF,J}8~$XLa$k!#
\e(B
3577 (cond ((eq type 'hiragana)
3578 ;; "
\e$B$r
\e(B"
\e$B$NA0$G;_$^$C$?J}$,JXMx!)
\e(B
3579 (skip-chars-backward "
\e$B!3!4!5!6!7!<$s$!
\e(B-
\e$B$q
\e(B"))
3580 ((eq type 'katakana)
3581 ;; "
\e$B%r
\e(B"
\e$B$NA0$G;_$^$C$?J}$,JXMx!)
\e(B
3582 (skip-chars-backward "
\e$B!3!4!5!6!7!<%s%!
\e(B-
\e$B%q
\e(B"))
3583 ((eq type 'jisx0208-latin)
3584 (skip-chars-backward "
\e$B!!
\e(B-
\e$B#z
\e(B"))
3586 (skip-chars-backward " -~"))))
3588 (defun skk-what-char-type ()
3589 ;;
\e$B8=:_$N%]%$%s%H$K$"$kJ8;z$,$I$s$J<oN`$+$rH=JL$9$k!#
\e(B
3591 (cond ((looking-at "[
\e$B$!
\e(B-
\e$B$s
\e(B]") 'hiragana)
3592 ((looking-at "[
\e$B%!
\e(B-
\e$B%s
\e(B]") 'katakana)
3593 ;; "
\e$B!<
\e(B"
\e$B$r=|30$7$F$$$k
\e(B ("
\e$B!<
\e(B"
\e$B$O
\e(B "
\e$B!;
\e(B"
\e$B$H
\e(B "
\e$B!=
\e(B"
\e$B$N4V$KF~$C$F$$$k
\e(B)
\e$B!#
\e(B
3594 ((looking-at "[
\e$B!!
\e(B-
\e$B!;!=
\e(B-
\e$B#z
\e(B]") 'jisx0208-latin)
3595 ((looking-at "[ -~]") 'ascii)
3598 (defun skk-set-henkan-point-subr (&optional arg)
3599 "
\e$B$+$J$rF~NO$7$?8e$G!"%]%$%s%H$KJQ493+;O$N%^!<%/
\e(B \(
\e$B"&
\e(B\)
\e$B$rIU$1$k!#
\e(B
3600 \e$B85!9$O$3$N4X?t$O
\e(B skk-set-henkan-point
\e$B$NFbIt4X?t$G$"$k!#
\e(B"
3602 (skk-with-point-move
3603 (cancel-undo-boundary)
3604 (if skk-henkan-on (skk-kakutei)
3605 (skk-kana-cleanup));; XXX
3606 (if (not (skk-get-prefix skk-current-rule-tree))
3607 (insert-and-inherit "
\e$B"&
\e(B")
3609 (insert-and-inherit "
\e$B"&
\e(B")
3610 (skk-set-marker skk-kana-start-point (point))
3611 (skk-insert-prefix))
3612 (setq skk-henkan-on t)
3613 (skk-set-marker skk-henkan-start-point (point))))
3615 (defun skk-change-marker ()
3616 ;; "
\e$B"&
\e(B"
\e$B$r
\e(B"
\e$B"'
\e(B"
\e$B$KJQ$($k!#
\e(Bskk-henkan-active
\e$B%U%i%0$r
\e(B t
\e$B$K$9$k!#
\e(B
3618 (goto-char (- skk-henkan-start-point skk-kanji-len))
3619 (if (looking-at "
\e$B"&
\e(B")
3621 (cancel-undo-boundary)
3622 (let ((buffer-undo-list t))
3623 (insert-and-inherit "
\e$B"'
\e(B")
3625 (setq skk-henkan-active t))
3627 (skk-error "
\e$B"&$,$"$j$^$;$s
\e(B" "It seems that you have deleted
\e$B"&
\e(B"))))
3629 (defun skk-change-marker-to-white ()
3630 ;; "
\e$B"'
\e(B"
\e$B$r
\e(B"
\e$B"&
\e(B"
\e$B$KJQ$($k!#
\e(Bskk-henkan-active
\e$B%U%i%0$r
\e(B nil
\e$B$K$9$k!#
\e(B
3632 (goto-char (- skk-henkan-start-point skk-kanji-len))
3633 (cancel-undo-boundary)
3634 (if (looking-at "
\e$B"'
\e(B")
3635 (let ((buffer-undo-list t))
3636 (insert-and-inherit "
\e$B"&
\e(B")
3638 (goto-char skk-henkan-start-point)
3639 (insert-and-inherit "
\e$B"&
\e(B")
3640 (skk-set-marker skk-henkan-start-point (point))
3641 (skk-message "
\e$B"'$,$"$j$^$;$s
\e(B" "It seems that you have deleted
\e$B"'
\e(B"))
3642 (setq skk-henkan-active nil)))
3644 (defun skk-delete-henkan-markers (&optional nomesg)
3645 ;;
\e$BJQ49;~$K%+%l%s%H%P%C%U%!$KI=$o$l$k
\e(B `
\e$B"&
\e(B', `
\e$B"'
\e(B'
\e$B%^!<%/$r>C$9!#
\e(B
3646 (if (not (marker-position skk-henkan-start-point))
3650 (goto-char (- skk-henkan-start-point skk-kanji-len))
3651 (if skk-henkan-active
3653 (and skk-use-face (skk-henkan-face-off))
3654 (if (looking-at "
\e$B"'
\e(B")
3657 (skk-message "
\e$B"'$,$"$j$^$;$s
\e(B"
3658 "It seems that you have deleted
\e$B"'
\e(B"))))
3659 (if (looking-at "
\e$B"&
\e(B")
3662 (skk-message "
\e$B"&$,$"$j$^$;$s
\e(B"
3663 "It seems that you have deleted
\e$B"&
\e(B"))))))))
3665 (defun skk-delete-okuri-mark ()
3666 ;;
\e$BAw$j2>L>F~NOCf$K%+%l%s%H%P%C%U%!$KI=$o$l$k
\e(B `*'
\e$B%^!<%/$r>C$7!"Aw$j2>L>4XO"
\e(B
3667 ;;
\e$B%U%i%0$r
\e(B nil
\e$B$K%;%C%H$9$k!#
\e(B
3668 (if (or (not skk-okurigana)
3669 (not skk-okurigana-start-point)
3670 (not (markerp skk-okurigana-start-point))
3671 (not (marker-position skk-okurigana-start-point)))
3674 (and (eq (char-after skk-okurigana-start-point) ?*) ; ?*
3675 (delete-region skk-okurigana-start-point
3676 (1+ skk-okurigana-start-point)))
3677 (setq skk-okurigana nil
3679 skk-henkan-okurigana nil))))
3681 ;;;; jisyo related functions
3682 (defun skk-purge-from-jisyo (&optional arg)
3683 "
\e$B"'%b!<%I$G8=:_$N8uJd$r<-=q%P%C%U%!$+$i>C5n$9$k!#
\e(B"
3685 (skk-with-point-move
3686 (if (and skk-henkan-active (not (string= skk-henkan-key "")))
3688 (yes-or-no-p (format
3689 (if skk-japanese-message-and-error
3690 "%s /%s/%s
\e$B$r<-=q$+$i:o=|$7$^$9!#NI$$$G$9$+!)
\e(B"
3691 "Really purge \"%s /%s/%s\"?")
3692 skk-henkan-key (skk-get-current-candidate-simply)
3693 (if (and skk-henkan-okurigana
3694 (or skk-henkan-okuri-strictly
3695 skk-henkan-strict-okuri-precedence))
3697 (if skk-japanese-message-and-error
3698 " (
\e$BAw$j2>L>
\e(B: "
3700 skk-henkan-okurigana
3704 ;; skk-henkan-start-point
\e$B$+$i
\e(B point
\e$B$^$G:o=|$7$F$7$^$C$F$b!"JQ49D>8e
\e(B
3705 ;;
\e$B$K
\e(B (
\e$B%+!<%=%k$rF0$+$9$3$H$J$/
\e(B) skk-purge-from-jisyo
\e$B$r8F$Y$PLdBj$J$$
\e(B
3706 ;;
\e$B$,!"%+!<%=%k$,0c$&>l=j$X0\F0$7$F$$$?>l9g$O!":o=|$9$Y$-$G$J$$$b$N$^
\e(B
3707 ;;
\e$B$G:o=|$7$F$7$^$&2DG=@-$,$"$k!#$=$3$G!"Aw$j2>L>$,$"$l$P$=$ND9$5$r4^
\e(B
3708 ;;
\e$B$a$?
\e(B end
\e$B$r5a$a!":#2s$NJQ49$K4XO"$7$?8D=j$@$1$r@53N$K@Z$j<h$k$h$&$K
\e(B
3710 (let ((end (if skk-henkan-okurigana (+ (length skk-henkan-okurigana)
3711 skk-henkan-end-point)
3712 skk-henkan-end-point))
3713 (word (skk-get-current-candidate-simply (skk-numeric-p))))
3714 (skk-update-jisyo word 'purge)
3715 ;; Emacs 19.28
\e$B$@$H
\e(B Overlay
\e$B$r>C$7$F$*$+$J$$$H!"<!$K
\e(B insert
\e$B$5$l$k
\e(B
3716 ;; skk-henkan-key
\e$B$K2?8N$+
\e(B Overlay
\e$B$,$+$+$C$F$7$^$&!#
\e(B
3717 (and skk-use-face (skk-henkan-face-off))
3718 (delete-region skk-henkan-start-point end)
3719 (skk-change-marker-to-white)
3722 (defun skk-save-jisyo (&optional quiet)
3723 "SKK
\e$B$N<-=q%P%C%U%!$r%;!<%V$9$k!#
\e(B
3724 \e$B%*%W%7%g%J%k0z?t$N
\e(B QUIET
\e$B$,
\e(B non-nil
\e$B$G$"$l$P!"<-=q%;!<%V;~$N%a%C%;!<%8$r=P$5$J
\e(B
3727 (funcall skk-save-jisyo-function quiet))
3729 (defun skk-save-jisyo-original (&optional quiet)
3730 ;;"SKK
\e$B$N<-=q%P%C%U%!$r%;!<%V$9$k!#
\e(B
3731 ;;
\e$B%*%W%7%g%J%k0z?t$N
\e(B QUIET
\e$B$,
\e(B non-nil
\e$B$G$"$l$P!"<-=q%;!<%V;~$N%a%C%;!<%8$r=P$5$J
\e(B
3733 (let* ((skk-jisyo (expand-file-name skk-jisyo))
3734 (jisyo-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg)))
3735 (if (or (not jisyo-buffer) (not (buffer-modified-p jisyo-buffer)))
3738 (skk-message "SKK
\e$B<-=q$rJ]B8$9$kI,MW$O$"$j$^$;$s
\e(B"
3739 "No need to save SKK jisyo")
3741 (with-current-buffer jisyo-buffer
3742 (let ((inhibit-quit t)
3743 (tempo-file (skk-make-temp-jisyo)))
3745 (skk-message "SKK
\e$B<-=q$rJ]B8$7$F$$$^$9
\e(B..."
3746 "Saving SKK jisyo..."))
3747 (skk-save-jisyo-1 tempo-file)
3748 (skk-check-size-and-do-save-jisyo tempo-file)
3749 ;;
\e$B<-=q$N%;!<%V$K@.8y$7$F=i$a$F
\e(B modified
\e$B%U%i%C%0$r
\e(B nil
\e$B$K$9$k!#
\e(B
3750 (set-buffer-modified-p nil)
3751 (setq skk-update-jisyo-count 0)
3754 (skk-message "SKK
\e$B<-=q$rJ]B8$7$F$$$^$9
\e(B...
\e$B40N;!*
\e(B"
3755 "Saving SKK jisyo...done")
3757 (and (eq this-command 'save-buffers-kill-emacs)
3758 (skk-record-jisyo-data)))))))
3760 (defun skk-save-jisyo-1 (file)
3762 (let (buffer-read-only)
3763 (goto-char (point-min))
3764 (if (re-search-forward "^;; okuri-ari entries.$" nil 'noerror)
3767 "
\e$BAw$j$"$j%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*
\e(B SKK
\e$B<-=q$N%;!<%V$rCf;_$7$^$9
\e(B"
3768 "Header line for okuri-ari entries is missing! Stop saving SKK jisyo"))
3769 ;;
\e$B$*$C!"%3%a%s%H%U%'%$%9$,
\e(B $
\e$B$G=*$o$i$J$$$>
\e(B > hilit19.el
3770 (if (re-search-forward "^;; okuri-nasi entries.$" nil 'noerror)
3773 "
\e$BAw$j$J$7%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s
\e(B
\e$B!*
\e(B SKK
\e$B<-=q$N%;!<%V$rCf;_$7$^$9
\e(B"
3774 "Header line for okuri-nasi entries is missing! Stop saving SKK jisyo")))
3775 (write-region-as-coding-system
3776 (cond ((and skk-jisyo-code
3777 (and (symbolp skk-jisyo-code)
3778 (or (coding-system-p skk-jisyo-code)
3779 (and (fboundp 'find-coding-system)
3780 (find-coding-system skk-jisyo-code)))))
3782 ((and skk-jisyo-code (stringp skk-jisyo-code))
3783 (cdr (assoc skk-jisyo-code skk-coding-system-alist)))
3784 (t (cdr (assoc "euc" skk-coding-system-alist))))
3785 1 (point-max) file nil 'nomsg)))
3787 (defun skk-check-size-and-do-save-jisyo (new-file)
3788 (let ((new-size (nth 7 (file-attributes new-file)))
3792 (delete-file new-file)
3793 (skk-error "SKK
\e$B<-=q$,6u$K$J$C$F$$$^$9!*
\e(B
\e$B<-=q$N%;!<%V$rCf;_$7$^$9
\e(B"
3794 "Null SKK jisyo! Stop saving jisyo")))
3795 (if (or (not skk-compare-jisyo-size-when-saving)
3796 ;;
\e$B5l<-=q$H$N%5%$%:Hf3S$r9T$J$o$J$$!#
\e(B
3798 ;; (1)skk-jisyo
\e$B$,$J$$$+!"
\e(B
3799 ;; (2)new-file
\e$B$H
\e(B skk-jisyo
\e$B$,F10l$N%5%$%:$+
\e(B
3800 ;; (skk-(aux-)large-jisyo
\e$B$+$i?75,$NC18l$rFI$_9~$^$J$+$C$?$j!"
\e(B
3801 ;;
\e$B?75,C18l$NEPO?$r9T$J$o$J$+$C$?>l9g$O%5%$%:$,F1$8
\e(B)
\e$B!"
\e(B
3802 ;; (3)new-file
\e$B$NJ}$,Bg$-$$
\e(B
3803 ;;
\e$B>l9g
\e(B (
\e$B>e5-$N
\e(B 3
\e$BDL$j$G$"$l$P$$$:$l$b@5>o
\e(B)
\e$B!#
\e(B
3804 (setq old-size (nth 7 (file-attributes skk-jisyo)))
3806 (>= new-size old-size))))
3807 (skk-make-new-jisyo new-file)
3808 ;; yes-or-no-p
\e$B$K2sEz$7!"
\e(Bnewline
\e$B$9$k$H!"
\e(Bthis-command
\e$B$,JQ$C$F$7$^$&!#
\e(B
3809 (let (this-command this-command-char last-command last-command-char)
3810 (if (skk-yes-or-no-p
3812 "skk-jisyo
\e$B$,
\e(B %dbytes
\e$B>.$5$/$J$j$^$9$,!"%;!<%V$7$FNI$$$G$9$+!)
\e(B"
3813 (- old-size new-size))
3815 "New %s will be %dbytes smaller. Save anyway?"
3816 skk-jisyo (- old-size new-size)))
3817 ;;
\e$B$H$K$+$/%;!<%V!#
\e(B
3818 (skk-make-new-jisyo new-file)
3819 ;;
\e$B%;!<%V$H$j;_$a!#
\e(B
3820 (delete-file new-file)
3821 (with-output-to-temp-buffer "*SKK warning*"
3822 (if skk-japanese-message-and-error
3824 (princ "
\e$B%;!<%V$7$h$&$H$9$k<-=q$N%5%$%:$,85$N$b$N$h$j$b>.$5$J$C$F$7$^$&$N$G!"
\e(B")
3826 (princ "
\e$B%;!<%V$rESCf$GCf;_$7$^$7$?!#<-=q$N%5%$%:$,>.$5$/$J$C$?860x$K$ONc$(
\e(B")
3828 (princ "
\e$B$P!"
\e(B")
3831 (princ "
\e$B!&
\e(BM-x skk-purge-from-jisyo
\e$B$r<B9T$7$?!#
\e(B")
3834 (princ "
\e$B!&
\e(B.skk-jisyo
\e$B$N4A;z%3!<%I$H!"
\e(B\" *.skk-jisyo*\"
\e$B%P%C%U%!$N4A;z%3!<%I
\e(B")
3836 (princ "
\e$B$,0[$J$C$F$$$k!#
\e(B")
3839 (princ "
\e$B!&
\e(B\" *.skk-jisyo*\"
\e$B%P%C%U%!$r<+J,$GJT=8$7$?!#
\e(B")
3842 (princ "
\e$B$J$I$,9M$($i$l$^$9
\e(B (
\e$B:G=i$N
\e(B 2
\e$B$D$,860x$G$"$l$P!"0[>o$G$O$"$j$^$;$s!#
\e(B")
3844 (princ "
\e$B:G8e$N>l9g$O!"$"$J$?$,$I$N$h$&$JJT=8$r$7$?$+$K$h$j$^$9
\e(B)
\e$B!#860x$r3NG'
\e(B")
3846 (princ "
\e$B8e!"?5=E$K<-=q$N%;!<%V$r9T$J$&$3$H$r$*4+$a$7$^$9!#
\e(B")
3849 (princ "
\e$B85$N<-=q$r:FEYFI$_9~$`$K$O!"
\e(B")
3852 (princ " M-x skk-reread-private-jisyo")
3855 (princ "
\e$B$r<B9T$7$F2<$5$$!#
\e(B"))
3856 (princ "As size of your private JISYO to be saved is smaller than the")
3858 (princ "original, we have stopped saving JISYO. For example, the following")
3860 (princ "condition makes a smaller private JISYO;")
3863 (princ " (a)You executed M-x skk-purge-from-jisyo,")
3866 (princ " (b)Kanji code of .skk-jisyo is different from the one of")
3868 (princ " \" *.skk-jisyo*\" buffer, or")
3871 (princ " (c)You edited \" *.skk-jisyo*\" buffer manually.")
3874 (princ "The first two conditions are not strange, but the last one depends on")
3876 (princ "how you edited JISYO. We strongly recommend to save JISYO")
3878 (princ "carefully after checking what causes this.")
3880 (princ "If you want to reread your original private JISYO, type")
3883 (princ " M-x skk-reread-private-jisyo")
3885 (skk-error "SKK
\e$B<-=q$N%;!<%V$rCf;_$7$^$7$?!*
\e(B"
3886 "Stop saving SKK jisyo!"))))))
3888 (defun skk-make-temp-jisyo ()
3889 ;; SKK
\e$B8D?M<-=qJ]B8$N$?$a$N:n6HMQ$N%U%!%$%k$r:n$j!"%U%!%$%k$N%b!<%I$r
\e(B
3890 ;; skk-jisyo
\e$B$N$b$N$HF1$8$K@_Dj$9$k!#:n$C$?:n6HMQ%U%!%$%k$NL>A0$rJV$9!#
\e(B
3891 (let ((tempo-name (skk-make-temp-file "skkdic")))
3892 (skk-create-file tempo-name)
3893 ;; temporary file
\e$B$K
\e(B remote file
\e$B$r;XDj$9$k$3$H$J$IM-$jF@$J$$!)
\e(B
3895 ;; ;; XEmacs has efs.el
3896 ;; (eq skk-emacs-type 'xemacs)
3897 ;; ;; ange-ftp.el does not have a wrapper to set-file-modes.
3898 ;; (not (and (featurep 'ange-ftp) (boundp 'ange-ftp-name-format)
3899 ;; (string-match (car ange-ftp-name-format) tempo-name))))
3900 (set-file-modes tempo-name (file-modes skk-jisyo))
3904 (defun skk-make-temp-file (prefix)
3906 (cond ((skk-file-exists-and-writable-p temporary-file-directory)
3907 (expand-file-name temporary-file-directory))
3908 ((and (memq system-type '(ms-dos windows-nt))
3909 (skk-file-exists-and-writable-p "a:/temp"))
3910 ;; NEC PC-9800 series.
3912 (t (or (file-exists-p "~/tmp") (make-directory "~/tmp"))
3913 (or (file-writable-p "~/tmp") (set-file-modes "~/tmp" 1023))
3917 (if (memq (skk-str-ref dir (1- (length dir))) '(?/ ?\\))
3921 (defun skk-make-new-jisyo (tempo-file)
3922 ;; TEMPO-FILE
\e$B$r?75,$N
\e(B skk-jisyo
\e$B$K$9$k!#
\e(Bskk-backup-jisyo
\e$B$,
\e(B non-nil
\e$B$@$C$?
\e(B
3923 ;;
\e$B$i%P%C%/%"%C%W<-=q$r:n$k!#
\e(B
3924 (if skk-backup-jisyo
3926 (if (file-exists-p skk-backup-jisyo)
3927 (delete-file skk-backup-jisyo))
3928 (rename-file skk-jisyo skk-backup-jisyo))
3929 (delete-file skk-jisyo))
3930 (rename-file tempo-file skk-jisyo 'ok-if-already-exists))
3932 (defun skk-reread-private-jisyo (&optional force)
3933 "
\e$B%P%C%U%!$KFI$_9~$s$@8D?M<-=q$rGK4~$7!"%U%!%$%k$+$i%P%C%U%!$X:FFI$_9~$_$9$k!#
\e(B
3934 \e$B%*%W%7%g%J%k0z?t$N
\e(B FORCE
\e$B$,
\e(B non-nil
\e$B$G$"$l$P!"GK4~$N3NG'$r$7$J$$!#
\e(B"
3936 (let ((buf (skk-get-jisyo-buffer skk-jisyo 'nomsg)))
3939 (skk-yes-or-no-p "
\e$BJT=8Cf$N8D?M<-=q$rGK4~$7$^$9$+!)
\e(B"
3940 "Discard your editing private JISYO?")))
3942 (with-current-buffer buf
3943 (set-buffer-modified-p nil)
3946 (skk-get-jisyo-buffer skk-jisyo 'nomsg)
3947 (skk-error "
\e$B8D?M<-=q$r:FFI$_9~$_$9$k$3$H$,$G$-$^$;$s!*
\e(B"
3948 "Cannot reread private JISYO!"))))))
3950 (defun skk-record-jisyo-data ()
3951 ;;
\e$B<-=q%G!<%?$r<h$j!"
\e(BEmacs
\e$B$N=*N;$N:]$G$"$l$P!"$=$N%G!<%?$r
\e(B
3952 ;; skk-record-file
\e$B$KJ]B8$7!"$=$l0J30$G$"$l$P!"$=$l$r%(%3!<$9$k!#
\e(B
3953 (if (or (not skk-keep-record) (> 1 skk-kakutei-count))
3955 (with-temp-file skk-record-file
3956 (insert-file-contents skk-record-file)
3957 (goto-char (point-min))
3960 "%s
\e$BEPO?
\e(B: %3d
\e$B3NDj
\e(B: %4d
\e$B3NDjN(
\e(B: %3d%%
\e$B8l?t
\e(B:%6d\n"
3961 (current-time-string)
3962 skk-touroku-count skk-kakutei-count
3963 (/ (* 100 (- skk-kakutei-count skk-touroku-count))
3965 (cond ((featurep 'skk-rdbms)
3966 ;; RDBMS
\e$B$r;H$($P$b$C$H6=L#?<$$E}7W$,<h$l$k$+$b$7$l$J$$
\e(B
3967 ;;
\e$B$,!"$H$j$"$($:8l?t$@$1?t$($FF~$l$F$*$/!#
\e(B
3968 (skk-rdbms-count-jisyo-candidates skk-rdbms-private-jisyo-table))
3969 (skk-count-private-jisyo-candidates-exactly
3970 (skk-count-jisyo-candidates (expand-file-name skk-jisyo)))
3971 ;; 1
\e$B9T
\e(B 1
\e$B8uJd$H$_$J$9!#
\e(B
3972 (t (with-current-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg)
3973 (- (count-lines (point-min) (point-max)) 2)))))))
3974 (setq skk-touroku-count 0 skk-kakutei-count 0)))
3976 (defun skk-count-jisyo-candidates (file-or-table)
3977 "SKK
\e$B<-=q$N8uJd?t$r?t$($k!#
\e(B"
3979 (list (cond ((eq skk-count-jisyo-candidates-function
3980 'skk-count-jisyo-candidates-original)
3982 (format "Jisyo file: (default: %s) " skk-jisyo)
3983 default-directory skk-jisyo 'confirm))
3984 ((eq skk-count-jisyo-candidates-function
3985 'skk-rdbms-count-jisyo-candidates)
3986 ;;
\e$B%G!<%?%Y!<%9%U%!%$%k$rD>@\%U%!%$%kL>$G;XDj$G$-$k
\e(B
3987 ;; permission
\e$B$,$J$$>l9g$,B?$$$h$M
\e(B...
\e$B!#
\e(B
3989 ;; (format "Jisyo table: (default: %s) "
3990 ;; skk-rdbms-private-jisyo-table))
3991 skk-rdbms-private-jisyo-table))))
3992 ;; mule@emacs19.31
\e$B$@$H2<5-$N$h$&$K$9$k$H
\e(B (`
\e$B%!
\e(B'
\e$B$,860x$N$h$&
\e(B)
\e$B2?8N$+
\e(B
3993 ;; default-directory
\e$B$NKvHx$K2~9T$,IU$/!#
\e(B
3994 ;;
\e$BDL>o$O5$$,IU$+$J$$$,!"
\e(Brsz-mini.el
\e$B$r;H$C$F
\e(B resize-minibuffer-mode
\e$B$r
\e(B
3995 ;; non-nil
\e$B$K$7$F$$$k$HITMW$J
\e(B 2
\e$B9TL\$,=P8=$9$k!#
\e(B
3996 ;; (interactive "f
\e$B<-=q%U%!%$%k
\e(B: ")
3997 (let ((count (funcall skk-count-jisyo-candidates-function file-or-table)))
3999 (message (if (= count 1) "%d candidate" "%d candidates") count)
4002 (defun skk-count-jisyo-candidates-original (file)
4003 ;;"SKK
\e$B<-=q$N8uJd?t$r?t$($k!#
\e(B
4004 ;;`['
\e$B$H
\e(B `]'
\e$B$K0O$^$l$?Aw$j2>L>Kh$N%V%m%C%/Fb$O?t$($J$$!#
\e(B"
4005 (with-current-buffer (find-file-noselect file)
4009 (max (and (interactive-p) (point-max)))
4010 (interactive-p (interactive-p)))
4013 ;;
\e$B$3$A$i$O
\e(B skk-save-point
\e$B$r;H$o$:!"%]%$%s%H$r0\F0$5$;$k!#
\e(B
4014 (not (re-search-forward "^;; okuri-ari entries.$" nil t nil))
4017 (re-search-forward "^;; okuri-nasi entries.$" nil t nil))))
4018 (skk-error "
\e$B$3$N%U%!%$%k$O
\e(B SKK
\e$B<-=q$G$O$"$j$^$;$s
\e(B"
4019 "This file is not a SKK dictionary"))
4021 (while (looking-at ";")
4023 (beginning-of-line))
4024 (search-forward " " nil t)
4025 (while (search-forward "/" nil t)
4026 (cond ((or (eolp) (looking-at "\\["))
4029 (while (looking-at ";")
4031 (beginning-of-line))
4032 (search-forward " " nil t))
4034 (setq count (1+ count))))
4036 (message "Counting jisyo candidates...%3d%% done"
4037 (/ (* 100 (- (point) min)) max))))
4040 (defun skk-create-file (file &optional japanese english)
4041 ;; FILE
\e$B$,$J$1$l$P!"
\e(BFILE
\e$B$H$$$&L>A0$N6u%U%!%$%k$r:n$k!#
\e(B
4042 ;;
\e$B%*%W%7%g%J%k0z?t$N
\e(B JAPANESE/ENGLISH
\e$B$r;XDj$9$k$H!"%U%!%$%k:n@.8e$=$N%a%C%;
\e(B
4043 ;;
\e$B!<%8$r%_%K%P%C%U%!$KI=<($9$k!#
\e(B
4044 (let ((file (expand-file-name file)))
4045 (or (file-exists-p file)
4047 (write-region 1 1 file nil 0)
4048 (if (or japanese english)
4050 (message (if skk-japanese-message-and-error
4054 (defun skk-get-jisyo-buffer (file &optional nomsg)
4055 ;; FILE
\e$B$r3+$$$F
\e(B SKK
\e$B<-=q%P%C%U%!$r:n$j!"%P%C%U%!$rJV$9!#
\e(B
4056 ;;
\e$B%*%W%7%g%J%k0z?t$N
\e(B NOMSG
\e$B$r;XDj$9$k$H%U%!%$%kFI$_9~$_$N:]$N%a%C%;!<%8$r
\e(B
4057 ;;
\e$BI=<($7$J$$!#
\e(B
4059 (let ((inhibit-quit t)
4060 (jisyo-buf (concat " *" (file-name-nondirectory file)
4062 ;;
\e$B<-=q%P%C%U%!$H$7$F%*!<%W%s$5$l$F$$$k$J$i!"2?$b$7$J$$!#
\e(B
4063 (or (get-buffer jisyo-buf)
4064 (with-current-buffer (setq jisyo-buf (get-buffer-create jisyo-buf))
4065 (setq file (expand-file-name file))
4066 (buffer-disable-undo jisyo-buf)
4068 ;;
\e$B%o!<%-%s%0%P%C%U%!$N%b!<%I%i%$%s$O%"%C%W%G!<%H$5$l$J$$!)
\e(B
4069 ;;(make-local-variable 'line-number-mode)
4070 ;;(make-local-variable 'column-number-mode)
4071 ;;(setq column-number-mode nil
4072 ;; line-number-mode nil)
4073 (setq buffer-read-only nil
4074 case-fold-search nil
4075 ;; buffer-file-name
\e$B$r
\e(B nil
\e$B$K$7$F$*$/$H
\e(B M-x compile
\e$B$J$I
\e(B
4076 ;;
\e$BFbIt$G
\e(B save-some-buffers
\e$B$r%3!<%k$7$F$$$k%3%^%s%I$r
\e(B
4077 ;;
\e$B;H$C$?$H$-$G$b%;!<%V$9$k$+$I$&$+$r?R$M$F$3$J$/$J$k!#
\e(B
4078 ;; buffer-file-name file
4079 ;; cache-long-line-scans nil
4080 ;; dabbrev
\e$B$N%5!<%A$H$J$k%P%C%U%!$K$J$i$J$$$h$&$KB8:_$7$J
\e(B
4081 ;;
\e$B$$%b!<%IL>$K$7$F$*$/!#<B32$N$"$kI{:nMQ$O$J$$$O$:!#
\e(B
4082 major-mode 'skk-jisyo-mode
4083 mode-name "SKK dic")
4085 (skk-message "SKK
\e$B<-=q
\e(B %s
\e$B$r%P%C%U%!$KFI$_9~$s$G$$$^$9
\e(B..."
4086 "Inserting contents of %s ..."
4087 (file-name-nondirectory file)))
4088 (let (enable-character-translation enable-character-unification)
4089 (insert-file-contents-as-coding-system
4090 (cond ((and skk-jisyo-code
4091 (and (symbolp skk-jisyo-code)
4092 (or (coding-system-p skk-jisyo-code)
4093 (and (fboundp 'find-coding-system)
4094 (find-coding-system skk-jisyo-code)))))
4096 ((and skk-jisyo-code (stringp skk-jisyo-code))
4097 (cdr (assoc skk-jisyo-code skk-coding-system-alist)))
4098 (t (cdr (assoc "euc" skk-coding-system-alist))))
4102 "SKK
\e$B<-=q
\e(B %s
\e$B$r%P%C%U%!$KFI$_9~$s$G$$$^$9
\e(B...
\e$B40N;!*
\e(B"
4103 "Inserting contents of %s ...done"
4104 (file-name-nondirectory file)))
4105 (skk-setup-jisyo-buffer)
4106 (set-buffer-modified-p nil)
4109 (defun skk-setup-jisyo-buffer ()
4110 ;; skk-jisyo
\e$B$N<-=q%P%C%U%!$G!"
\e(B
4111 ;; (1)
\e$B6u%P%C%U%!$G$"$l$P!"?7$7$/%X%C%@!<$r:n$j!"
\e(B
4112 ;; (2)
\e$B<-=q%(%s%H%j$,$"$k4{B8$N<-=q%P%C%U%!$J$i$P!"%X%C%@!<$,@5$7$$$+$I$&$+$r
\e(B
4113 ;;
\e$B%A%'%C%/$9$k!#
\e(B
4115 ;; skk-okuri-ari-min
\e$B$H
\e(B skk-okuri-nasi-min
\e$B$N0LCV$rJQ99$7$?!#
\e(B
4116 ;;
\e$B"-
\e(B
\e$B?7$7$$
\e(B skk-okuri-ari-min
4117 ;; ;; okuri-ari entries.
4118 ;;
\e$B"+
\e(B
\e$B0JA0$N
\e(B skk-okuri-ari-min
4120 ;;
\e$B"-
\e(B skk-okuri-ari-max
\e$B"-
\e(B
\e$B?7$7$$
\e(B skk-okuri-nasi-min
4121 ;; ;; okuri-nasi entries.
4122 ;;
\e$B"+
\e(B
\e$B0JA0$N
\e(B skk-okuri-nasi-min
4125 ;;
\e$BJQ99A0$N0LCV$G$"$l$P!"2<5-$N$h$&$J6u<-=q$N>l9g!"
\e(B
4127 ;; ;; okuri-ari entries.
4128 ;; ;; okuri-nasi entries.
4130 ;; skk-okuri-ari-min
\e$B$H
\e(B skk-okuri-ari-max
\e$B$N%^!<%+!<$,=E$J$C$F$7$^$$!"
\e(B
4131 ;; skk-okuri-ari-min
\e$B$N0LCV$KA^F~$7$?%(%s%H%j$,
\e(B skk-okuri-ari-max
\e$B$N%^!<%+!<
\e(B
4132 ;;
\e$B$r8eJ}$K2!$7$d$i$J$$!#
\e(B
4134 ;;
\e$B$3$N4X?t$N%*%j%8%J%k$NL>>N$O!"
\e(Bj-check-jisyo
\e$B$@$C$?$,!"
\e(Bskk-check-jisyo
\e$B$H
\e(B
4135 ;;
\e$B$$$&L>A0$K$9$k$H
\e(B skk-tools.el
\e$BFb$N4X?tL>$H=EJ#$9$k!#
\e(B
4136 ;; case-fold-search
\e$B$O!"<-=q%P%C%U%!$G$O>o$K
\e(B nil
\e$B!#
\e(B
4138 (if (= (buffer-size) 0)
4139 ;;
\e$B6u%P%C%U%!$@$C$?$i!"%X%C%@!<$N$_A^F~!#
\e(B
4140 (insert ";; okuri-ari entries.\n" ";; okuri-nasi entries.\n"))
4141 (goto-char (point-min))
4142 (if (re-search-forward "^;; okuri-ari entries.$" nil 'noerror)
4143 ;;
\e$B8GDj%]%$%s%H$J$N$G!"
\e(B(point)
\e$B$G==J,!#
\e(B
4144 (setq skk-okuri-ari-min (point))
4145 (skk-error "
\e$BAw$j$"$j%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*
\e(B"
4146 "Header line for okuri-ari entries is missing!"))
4147 (if (re-search-forward "^;; okuri-nasi entries.$" nil 'noerror)
4150 ;;
\e$B6&M-<-=q$J$i8GDj%]%$%s%H$G$bNI$$$N$@$,!"<-=q%P%C%U%!$GJT=8$r9T
\e(B
4151 ;;
\e$B$J$C$?$H$-$N$3$H$rG[N8$7$F%^!<%+!<$K$7$F$*$/!#
\e(B
4152 (setq skk-okuri-ari-max (point-marker))
4155 (setq skk-okuri-nasi-min (point-marker)))
4156 (skk-error "
\e$BAw$j$J$7%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*
\e(B"
4157 "Header line for okuri-nasi entries is missing!"))))
4159 (defun skk-search ()
4160 ;; skk-current-search-prog-list
\e$B$NMWAG$K$J$C$F$$$k%W%m%0%i%`$rI>2A$7$F!"
\e(B
4161 ;; skk-henkan-key
\e$B$r%-!<$K$7$F8!:w$r9T$&!#
\e(B
4163 (while (and (null l) skk-current-search-prog-list)
4164 (setq l (eval (car skk-current-search-prog-list))
4165 skk-current-search-prog-list (cdr skk-current-search-prog-list)))
4168 (defun skk-search-jisyo-file (file limit &optional nomsg)
4169 ;; SKK
\e$B<-=q%U%)!<%^%C%H$N
\e(B FILE
\e$B$G
\e(B skk-henkan-key
\e$B$r%-!<$K$7$F8!:w$r9T$&!#
\e(B
4170 ;;
\e$B8!:w%j!<%8%g%s$,
\e(B LIMIT
\e$B0J2<$K$J$k$^$G%P%$%J%j%5!<%A$r9T$$!"$=$N8e%j%K%"
\e(B
4171 ;;
\e$B%5!<%A$r9T$&!#
\e(B
4172 ;; LIMIT
\e$B$,
\e(B 0
\e$B$G$"$l$P!"%j%K%"%5!<%A$N$_$r9T$&!#
\e(B
4173 ;;
\e$B<-=q$,%=!<%H$5$l$F$$$J$$$N$G$"$l$P!"
\e(BLIMIT
\e$B$r
\e(B 0
\e$B$9$kI,MW$,$"$k!#
\e(B
4174 ;;
\e$B%*%W%7%g%J%k0z?t$N
\e(B NOMSG
\e$B$,
\e(B non-nil
\e$B$G$"$l$P
\e(B skk-get-jisyo-buffer
\e$B$N%a%C
\e(B
4175 ;;
\e$B%;!<%8$r=PNO$7$J$$$h$&$K$9$k!#
\e(B
4176 (let ((jisyo-buffer (skk-get-jisyo-buffer file nomsg)))
4178 ;; skk-henkan-key
\e$B$H
\e(B skk-henkan-okurigana
\e$B$O%+%l%s%H%P%C%U%!$N%m!<%+%k
\e(B
4180 (let ((okurigana (or skk-henkan-okurigana skk-okuri-char))
4182 (if skk-use-numeric-conversion
4183 ;; skk-henkan-key
\e$B$,
\e(B nil
\e$B$N$3$H$,$"$k!#2?8N
\e(B?
4184 (skk-num-compute-henkan-key skk-henkan-key)
4186 (henkan-buffer (current-buffer))
4188 (with-current-buffer jisyo-buffer
4189 (setq skk-henkan-key midasi
4190 entry-list (skk-search-jisyo-file-1 okurigana limit))
4194 (cond ((and okurigana skk-henkan-okuri-strictly)
4195 ;;
\e$BAw$j2>L>$,F10l$N%(%s%H%j$N$_$rJV$9!#
\e(B
4197 ((and okurigana skk-henkan-strict-okuri-precedence)
4198 ;;
\e$BAw$j2>L>$,F10l$N%(%s%H%j$N$&$7$m$K!"
\e(B
4199 ;;
\e$B$=$NB>$N%(%s%H%j$r$D$1$F$+$($9!#
\e(B
4200 (skk-nunion (nth 2 entry-list) (car entry-list)))
4201 (t (car entry-list))))
4202 (and skk-search-end-function
4203 (setq entry (funcall skk-search-end-function
4204 henkan-buffer midasi okurigana entry)))
4207 (defun skk-search-jisyo-file-1 (okurigana limit &optional delete)
4208 ;; skk-search-jisyo-file
\e$B$N%5%V%k!<%A%s!#
\e(Bskk-compute-henkan-lists
\e$B$r;HMQ$7!"
\e(B
4209 ;;
\e$B8+=P$78l$K$D$$$F$N%(%s%H%j$N>pJs$rJV$9!#
\e(B
4210 ;; DELETE
\e$B$,
\e(B non-nil
\e$B$G$"$l$P!"
\e(BMIDASI
\e$B$K%^%C%A$9$k%(%s%H%j$r:o=|$9$k!#
\e(B
4211 (let ((key (concat "\n" skk-henkan-key " /"))
4214 ;; skk-okuri-ari-min
\e$B$H
\e(B skk-okuri-ari-max
\e$B$O<-=q%P%C%U%!$N%m!<%+%kCM!#
\e(B
4216 (setq min skk-okuri-ari-min
4217 max skk-okuri-ari-max)
4218 (setq min skk-okuri-nasi-min
4221 (while (progn (setq size (- max min)) (> size limit))
4222 (goto-char (+ min (/ size 2)))
4225 ;;
\e$BAw$j$"$j$J$i5U=g$KHf3S$r9T$J$&!#
\e(B
4228 (string< (buffer-substring-no-properties
4229 p (1- (search-forward " ")))
4231 (string< skk-henkan-key
4232 (buffer-substring-no-properties
4233 p (1- (search-forward " ")))))
4237 ;; key
\e$B$,8!:w3+;OCOE@$K$"$C$?>l9g$G$b8!:w2DG=$J$h$&$K0lJ8;zLa$k!#
\e(Bkey
\e$B$,
\e(B
4238 ;;
\e$B$=$N@hF,ItJ,$K
\e(B "\n"
\e$B$r4^$s$G$$$k$3$H$KCm0U!#
\e(B
4239 (or (bobp) (backward-char 1))
4240 ;; case-fold-search
\e$B$O!"<-=q%P%C%U%!$G$O>o$K
\e(B nil
\e$B!#
\e(B
4241 (if (search-forward key max 'noerror)
4243 (skk-compute-henkan-lists okurigana)
4247 (delete-region (point)
4248 (progn (forward-line 1) (point))))))))))
4251 (defun skk-compute-henkan-lists (okurigana)
4252 ;;
\e$B<-=q%(%s%H%j$r
\e(B 4
\e$B$D$N%j%9%H$KJ,2r$9$k!#
\e(B
4254 ;;
\e$BAw$j$J$7
\e(B (
\e$BNc$($P!"<-=q%(%s%H%j
\e(B "
\e$B$F$s$5$$
\e(B /
\e$BE>:\
\e(B/
\e$BE7:R
\e(B/
\e$BE7:M
\e(B/"
\e$B$N=hM}
\e(B)
4255 ;; entry1 := ("
\e$BE>:\
\e(B" "
\e$BE7:R
\e(B" "
\e$BE7:M
\e(B") ==
\e$BA4%(%s%H%j
\e(B
4260 ;;
\e$BAw$j$"$j
\e(B (
\e$BNc$($P!"!V5c$/!W$NJQ49$r9T$C$?>l9g$N!"<-=q%(%s%H%j
\e(B
4261 ;; "
\e$B$J
\e(Bk /
\e$BK4
\e(B/
\e$BL5
\e(B/
\e$BLD
\e(B/
\e$B5c
\e(B/[
\e$B$/
\e(B/
\e$BL5
\e(B/
\e$BLD
\e(B/
\e$B5c
\e(B/]/[
\e$B$-
\e(B/
\e$BK4
\e(B/]/"
\e$B$N=hM}
\e(B)
4262 ;; entry1 := ("
\e$BK4
\e(B" "
\e$BL5
\e(B" "
\e$BLD
\e(B" "
\e$B5c
\e(B") ==
\e$B4A;zItJ,$NA4%(%s%H%j
\e(B
4263 ;; entry2 := ("[
\e$B$/
\e(B") ==
\e$BB>$NAw$j2>L>$r;H$&4A;z%(%s%H%j
\e(B (
\e$B$"$l
\e(B
4264 ;;
\e$B$P
\e(B) +
\e$B:#2s$NJQ49$NAw$j2>L>ItJ,
\e(B
4265 ;; entry3 := ("
\e$BL5
\e(B" "
\e$BLD
\e(B" "
\e$B5c
\e(B") ==
\e$B:#2s$NJQ49$NAw$j2>L>$r;H$&2DG=@-$N
\e(B
4266 ;;
\e$B$"$kA44A;z%(%s%H%j
\e(B
4267 ;; entry4 := ("]" "[
\e$B$-
\e(B" "
\e$BK4
\e(B" "]") ==
\e$BB>$NAw$j2>L>$r;H$&4A;z%(%s%H%j
\e(B (
\e$B;D
\e(B
4268 ;;
\e$B$j!#$"$l$P
\e(B)
4270 ;; * "["
\e$B$OD>8e$KB3$/$R$i$,$J$rAw$j2>L>$K;}$D4A;z$N%(%s%H%j$N=i$^$j$rI=$7!"
\e(B
4271 ;; "]"
\e$B$O!"3:Ev$NAw$j2>L>%0%k!<%W$N=*$j$r<($9!#
\e(B
4273 ;;
\e$B$3$N4X?t$O!"JQ49;~$H!"3NDjD>8e$N<-=q$N%"%C%W%G!<%H;~$N
\e(B 2
\e$BEY8F$P$l$k
\e(B
4274 ;; (
\e$BJQ49;~$K8!:w$r9T$C$?<-=q$,!"
\e(Bskk-jisyo
\e$B$H$O8B$i$J$$$N$G!"
\e(B2
\e$BEY7W;;$;$6$k
\e(B
4275 ;;
\e$B$rF@$J$$
\e(B)
\e$B!#
\e(B
4277 ;;
\e$BJQ49;~$O!"
\e(Bskk-henkan-okuri-strictly
\e$B$,
\e(B non-nil
\e$B$G$"$l$P!"
\e(B
4278 ;;
\e$B7W;;7k2L$N
\e(B entry3
\e$B$r!"
\e(Bskk-henkan-okuri-strictly
\e$B$,
\e(B nil
\e$B$G$"$C$F
\e(B
4279 ;;
\e$B$+$D
\e(B skk-henkan-strict-okuri-precedence
\e$B$,
\e(B non-nil
\e$B$"$l$P
\e(B
4280 ;; (skk-nunion entry3 entry1)
\e$B$r<h$j=P$9!#
\e(B
4281 ;;
\e$B$U$?$D$NJQ?t$,$H$b$K
\e(B nil
\e$B$N>l9g$O
\e(B entry1
\e$B$r<h$j=P$9!#
\e(B
4283 (list (split-string (buffer-substring-no-properties
4284 (point) (progn (end-of-line) (1- (point))))
4287 (let ((stage 1) (q1 (queue-create)) (q2 (queue-create))
4288 (q3 (queue-create)) (q4 (queue-create))
4289 (okuri-key (concat "\[" okurigana)) item headchar)
4292 (setq item (buffer-substring-no-properties
4294 (1- (search-forward "/")))
4295 headchar (if (string= item "") (int-char 0) (skk-str-ref item 0)))
4296 (cond ((and (eq headchar ?\[) (<= stage 2))
4297 (if (string= item okuri-key)
4298 (progn (queue-enqueue q2 item)
4301 (queue-enqueue q2 item)))
4303 (queue-enqueue q1 item))
4305 (queue-enqueue q2 item))
4307 (if (eq headchar ?\]) ; ?\]
4308 (progn (setq stage 4)
4309 (queue-enqueue q4 item))
4310 (queue-enqueue q3 item)))
4312 (queue-enqueue q4 item)))))
4313 ;; entry1 entry2 entry3 entry4
4314 (list (queue-all q1) (queue-all q2) (queue-all q3) (queue-all q4))))))
4316 (defun skk-nunion (x y)
4317 ;; X
\e$B$H
\e(B Y
\e$B$NOB=89g$r:n$k!#Ey$7$$$+$I$&$+$NHf3S$O!"
\e(Bequal
\e$B$G9T$o$l$k!#
\e(BX
\e$B$K
\e(B Y
4318 ;;
\e$B$rGK2uE*$KO"@\$9$k!#
\e(B
4323 (let* ((list1 (cons nil x))
4327 (if (equal (car (cdr list1)) (car list2))
4329 (setq list1 (cdr list1))))
4330 (setcdr list1 (list (car list2)))
4331 (setq x (cdr oldlist1)))
4332 (setq list2 (cdr list2)))
4336 (defun skk-search-kakutei-jisyo-file (file limit &optional nomsg)
4337 ;;
\e$B<-=q%U%!%$%k$rC5$7!"8uJd$r%j%9%H$GJV$9!#
\e(B
4338 ;;
\e$B8uJd$r8+$D$1$?>l9g$O!"Bg0hJQ?t
\e(B skk-kakutei-flag
\e$B$K
\e(B non-nil
\e$B$rBeF~$9$k!#
\e(B
4339 ;;
\e$B8uJd$,8+$D$+$i$J$+$C$?>l9g$O!"
\e(Bnil
\e$B$rJV$9!#
\e(B
4340 (setq skk-kakutei-flag (skk-search-jisyo-file file limit nomsg)))
4342 (defun skk-update-jisyo (word &optional purge)
4343 (funcall skk-update-jisyo-function word purge))
4345 (defun skk-update-jisyo-original (word &optional purge)
4346 ;; WORD
\e$B$,<!$NJQ49;~$K:G=i$N8uJd$K$J$k$h$&$K!"%W%i%$%Y!<%H<-=q$r99?7$9$k!#
\e(B
4347 ;; PURGE
\e$B$,
\e(B non-nil
\e$B$G
\e(B WORD
\e$B$,6&M-<-=q$K$"$k%(%s%H%j$J$i
\e(B skk-ignore-dic-word
4348 ;;
\e$B4X?t$G%/%)!<%H$7$?%(%s%H%j$r%W%i%$%Y!<%H<-=q$K:n$j!"<!$NJQ49$+$i=PNO$7$J
\e(B
4349 ;;
\e$B$$$h$&$K$9$k!#
\e(B
4350 ;; WORD
\e$B$,6&M-<-=q$K$J$1$l$P!"%W%i%$%Y!<%H<-=q$N<-=q%(%s%H%j$+$i:o=|$9$k!#
\e(B
4352 ;; SKK 9.x
\e$B$h$j!"%W%i%$%Y!<%H<-=q$N%(%s%H%j$NA^F~$NJ}K!$rJQ99$7$?
\e(B (9.3
\e$B$N$_
\e(B
4353 ;;
\e$B$ONc30
\e(B)
\e$B!#
\e(B
4355 ;;
\e$B!ZJQ99A0![
\e(B
4356 ;; ;; okuri-ari entries.
4357 ;;
\e$B8+%-
\e(B
\e$B$o$k
\e(Bk /
\e$B0-
\e(B/[
\e$B$+
\e(B/
\e$B0-
\e(B/]/[
\e$B$/
\e(B/
\e$B0-
\e(B/]/
4358 ;;
\e$B=P!<
\e(B
\e$B$o$k
\e(Bi /
\e$B0-
\e(B/[
\e$B$$
\e(B/
\e$B0-
\e(B/]/
4359 ;;
\e$B$7$K
\e(B
\e$B$o$?
\e(Bs /
\e$BEO
\e(B/[
\e$B$5
\e(B/
\e$BEO
\e(B/]/[
\e$B$;
\e(B/
\e$BEO
\e(B/]/
4360 ;;
\e$B8l9_
\e(B
\e$B$o$9
\e(Br /
\e$BK:
\e(B/[
\e$B$l
\e(B/
\e$BK:
\e(B/]/
4361 ;;
\e$B$r=g
\e(B
\e$B$o$+
\e(Bt /
\e$BJ,
\e(B/
\e$BH=
\e(B/[
\e$B$C$?
\e(B/
\e$BJ,
\e(B/
\e$BH=
\e(B/]/[
\e$B$C$F
\e(B/
\e$BJ,
\e(B/]/
4363 ;;
\e$B$"
\e(Bi /
\e$B9g
\e(B/[
\e$B$$
\e(B/
\e$B9g
\e(B/]/
4364 ;; ;; okuri-nasi entries.
4365 ;;
\e$BJQ$G
\e(B
\e$B$8$g$&$?$$
\e(B /
\e$B>uBV
\e(B/
4366 ;;
\e$B49>:
\e(B
\e$B$=$&$K$e$&
\e(B /
\e$BA^F~
\e(B/
4367 ;;
\e$B=g=g
\e(B
\e$B$+$J
\e(B /
\e$B2>L>
\e(B/
4371 ;;
\e$B!ZJQ998e![
\e(B
4372 ;; ;; okuri-ari entries.
4373 ;;
\e$BJQ$G
\e(B
\e$B$G
\e(Bt /
\e$B=P
\e(B/[
\e$B$F
\e(B/
\e$B=P
\e(B/]/[
\e$B$?
\e(B/
\e$B=P
\e(B/]/
4374 ;;
\e$B49>:
\e(B
\e$B$D
\e(Bi /
\e$BIU
\e(B/[
\e$B$$
\e(B/
\e$BIU
\e(B/]/
4375 ;;
\e$B=g=g
\e(B
\e$B$1
\e(Bs /
\e$B>C
\e(B/[
\e$B$9
\e(B/
\e$B>C
\e(B/]/[
\e$B$7
\e(B/
\e$B>C
\e(B/]/[
\e$B$;
\e(B/
\e$B>C
\e(B/]/[
\e$B$5
\e(B/
\e$B>C
\e(B/]/
4376 ;;
\e$B"-
\e(B
\e$B$+$(
\e(Bs /
\e$BJV
\e(B/[
\e$B$7
\e(B/
\e$BJV
\e(B/]/[
\e$B$9
\e(B/
\e$BJV
\e(B/]/[
\e$B$5
\e(B/
\e$BJV
\e(B/]/[
\e$B$;
\e(B/
\e$BJV
\e(B/]/
4379 ;;
\e$B$J$,
\e(Bs /
\e$BD9
\e(B/
\e$BN.
\e(B/[
\e$B$7
\e(B/
\e$BN.
\e(B/]/[
\e$B$5
\e(B/
\e$BD9
\e(B/]/[
\e$B$=
\e(B/
\e$BN.
\e(B/]/
4380 ;; ;; okuri-nasi entries.
4381 ;;
\e$BJQ$G
\e(B
\e$B$8$g$&$?$$
\e(B /
\e$B>uBV
\e(B/
4382 ;;
\e$B49>:
\e(B
\e$B$=$&$K$e$&
\e(B /
\e$BA^F~
\e(B/
4383 ;;
\e$B=g=g
\e(B
\e$B$+$J
\e(B /
\e$B2>L>
\e(B/
4387 ;; skk-auto-okuri-process
\e$B$,
\e(B non-nil
\e$B$N$H$-$K!"
\e(B(j-okuri-search
\e$B2~$a
\e(B)
4388 ;; skk-okuri-search
\e$B$O8+=P$78l$ND9$$=g$K8uJd$rJV$9I,MW$,$"$k!#
\e(B
4389 ;; SKK 8.6
\e$B$^$G$O!"
\e(Bskk-okuri-search
\e$B$,
\e(B j-okuri-ari-min
\e$B$+$i
\e(B j-okuri-ari-max
4390 ;;
\e$B$^$G$r=g$KC5$7!"8+$D$1$?$b$N=g$K8uJd$rJV$9$?$a$K%W%i%$%Y!<%H<-=q$,8+=P$7
\e(B
4391 ;;
\e$B8l$r%-!<$H$7$F9_=g$K%=!<%H$5$l$F$$$kI,MW$,$"$C$?!#
\e(B
4392 ;; SKK 9.x
\e$B$G$O!"
\e(Bskk-okuri-search
\e$B$,!"8+IU$1$?8uJd$r8+=P$78l$r%-!<$H$7$F>:=g
\e(B
4393 ;;
\e$B$K%=!<%H$7$FJV$9$?$a!"%W%i%$%Y!<%H<-=q$N%=!<%H$OI,MW$G$J$$!#$h$C$F!":G8e
\e(B
4394 ;;
\e$B$KJQ49$7$?$b$N$r
\e(B (j-okuri-ari-min
\e$B2~$a
\e(B) skk-okuri-ari-min
\e$B$N0LCV$KA^F~$9
\e(B
4397 (let ((jisyo-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg))
4399 (if skk-use-numeric-conversion
4400 (skk-num-compute-henkan-key skk-henkan-key)
4402 (henkan-buffer (current-buffer)))
4404 (let ((inhibit-quit t) buffer-read-only old-entry okurigana)
4405 (if (> skk-okuri-index-min -1)
4406 (setq word (skk-remove-common word)
4407 midasi skk-henkan-key))
4408 (setq okurigana (or skk-henkan-okurigana skk-okuri-char))
4409 (with-current-buffer jisyo-buffer
4410 ;;
\e$B4{B8%(%s%H%j$r8!:w8e>C5n$9$k!#A^F~$9$Y$-%(%s%H%j$,
\e(B entry1
\e$B$K
\e(B 1
4411 ;;
\e$B$D$7$+$J$/!"
\e(Bword
\e$B$HF1$8J8;z$G$"$C$F$b!"$$$C$?$s>C$7$F$=$N%(%s%H
\e(B
4412 ;;
\e$B%j$r
\e(B min
\e$B%]%$%s%H$K0\F0$5$;$J$1$l$P$J$i$J$$
\e(B (
\e$BFI$_$NJd40$r9T$&$H
\e(B
4413 ;;
\e$B$-$O!"
\e(Bmin
\e$B%]%$%s%H$+$i8+=P$7$rC5$9$?$a!"?7$7$$8+=P$7$[$I!"
\e(Bmin
4414 ;;
\e$B%]%$%s%H$K6a$$$H$3$m$K$J$1$l$P$J$i$J$$
\e(B)
\e$B!#
\e(B
4415 (setq skk-henkan-key midasi
4416 old-entry (skk-search-jisyo-file-1 okurigana 0 'delete))
4417 (skk-update-jisyo-1 okurigana word old-entry purge)
4418 (and skk-update-end-function
4419 (funcall skk-update-end-function
4420 henkan-buffer midasi okurigana word purge))
4421 (setq skk-update-jisyo-count (1+ skk-update-jisyo-count))
4422 (if (and skk-jisyo-save-count
4423 (= skk-jisyo-save-count skk-update-jisyo-count))
4425 (skk-save-jisyo 'quiet)))))))
4427 (defun skk-update-jisyo-1 (okurigana word old-entry-list purge)
4428 ;;
\e$B4{B8%(%s%H%j$+$i7W;;$7$?
\e(B entry[1-4]
\e$B$NCM$H!":#2s$NJQ49$N7k2L
\e(B word
\e$B$H$r%^!<
\e(B
4429 ;;
\e$B%8$7$F!"?7$?$J%(%s%H%j$r7W;;$7!"A^F~$9$k!#
\e(B
4430 (let ((entry1 (car old-entry-list)) (entry2 (nth 1 old-entry-list))
4431 (entry3 (nth 2 old-entry-list)) (entry4 (nth 3 old-entry-list)))
4433 ;; entry1
\e$B$N@hF,$N%(%s%H%j$r
\e(B word
\e$B$K$9$k!#
\e(B
4434 (setq entry1 (cons word (delete word entry1)))
4435 ;;
\e$BAw$j$J$7!"$b$7$/$O
\e(B skk-henkan-okuri-strictly
\e$B$H
\e(B
4436 ;; skk-henkan-strict-okuri-precedence
\e$B$,
\e(B nil
\e$B$N>l9g!#
\e(B
4437 (if (or (not okurigana) (not (or skk-henkan-okuri-strictly
4438 skk-henkan-strict-okuri-precedence)))
4439 ;; entry1
\e$B$r
\e(B purge
\e$B!#6&MQ<-=q$K$"$k%(%s%H%j$@$C$?$i!"
\e(B
4440 ;; skk-ignore-dic-word
\e$B$G%/%)!<%H$7$F<!$NJQ49$+$i=PNO$7$J$$$h$&$K$9
\e(B
4441 ;;
\e$B$k!#6&MQ<-=q$K$J$$J8;zNs$O
\e(B word
\e$B$r>C$9!#
\e(B
4442 (if (skk-public-jisyo-has-entry-p okurigana word)
4443 (setq entry1 (skk-compose-ignore-entry entry1 word))
4444 (setq entry1 (delete word entry1)))
4445 ;;
\e$BAw$j$"$j$G!"$+$D
\e(B skk-henkan-okuri-strictly
\e$B$+
\e(B
4446 ;; skk-henkan-strict-okuri-precedence
\e$B$,
\e(B non-nil
\e$B$N>l9g$G!"$+$D
\e(B
4447 ;;
\e$B$3$N
\e(B word
\e$B$H%Z%"$K$J$kAw$j2>L>$,
\e(B okurigana
\e$B$7$+$J$$$H$-!#
\e(B
4448 (if (and okurigana (or skk-henkan-okuri-strictly
4449 skk-henkan-strict-okuri-precedence)
4450 (null (member word entry2)) (null (member word entry4)))
4451 (setq entry1 (delete word entry1))
4452 ;;
\e$B$=$NB>$N>l9g$O2?$b$7$J$$!#
\e(B
4455 ;; entry1
\e$B$,
\e(B null
\e$B$G$"$l$P!"$b$&2?$b$9$k$3$H$O$J$$!#
\e(B
4457 (goto-char (if okurigana skk-okuri-ari-min skk-okuri-nasi-min))
4458 (insert "\n" skk-henkan-key " /")
4459 ;; entry1 --
\e$BA4%(%s%H%j
\e(B (
\e$BAw$j$J$7$N>l9g
\e(B) or
\e$B4A;zItJ,$NA4%(%s%H%j
\e(B (
\e$BAw$j$"
\e(B
4460 ;;
\e$B$j$N>l9g
\e(B)
4461 (insert (mapconcat 'skk-quote-char entry1 "/") "/")
4464 ;; entry2
\e$B0J9_$N%(%s%H%j$r=hM}$9$k$N$O!"Aw$j$"$j$N>l9g$N$_!#
\e(B
4465 ;;
\e$B@h$KA^F~$9$Y$-%(%s%H%j$r7W;;!"D4@0$9$k!#
\e(B
4468 (setq entry3 (cons word (delete word entry3)))
4469 (setq entry3 (delete word entry3))
4471 ;; entry3
\e$B$H$7$FA^F~$9$k$b$N$,A4$/$J$1$l$P!"
\e(B"/[
\e$B$/
\e(B/]/"
\e$B$N$h
\e(B
4472 ;;
\e$B$&$JAw$j2>L>$N$_$N%(%s%H%j$r:n$i$J$$$h$&$K$9$k
\e(B (
\e$BI,MW$G
\e(B
4473 ;;
\e$B$"$l$P!"
\e(Bentry2
\e$B$N:G8eJ}$H
\e(B) entry4
\e$B$N@hF,$N%(%s%H%j
\e(B "]"
4475 (let ((last2 (nthcdr (- (length entry2) 2) entry2)))
4476 ;; entry2
\e$B$N:G8eJ}$O>o$K
\e(B "[
\e$BAw$j2>L>
\e(B"
\e$B$H$O8B$i$J$$!#
\e(B
4477 (and (string= (nth 1 last2) (concat "[" okurigana))
4479 ;; entry4
\e$B$N@hF,$O>o$K
\e(B "]"
\e$B!#
\e(B
4480 (setq entry4 (cdr entry4)))))
4481 ;; entry3
\e$B$,
\e(B null
\e$B$G$"$l$P
\e(B
4482 (if (or skk-process-okuri-early purge)
4483 ;; skk-process-okuri-early
\e$B$,
\e(B non-nil
\e$B$J$iAw$j2>L>$,J,$i$J$$$N$G
\e(B
4484 ;;
\e$B2?$b$7$J$$!#
\e(B--
\e$B:#2s;HMQ$7$?Aw$j2>L>$,$o$+$i$J$$$^$^JQ49$7$F$$
\e(B
4485 ;;
\e$B$k$N$G!"A4$F$N%(%s%H%j$,
\e(B entry2
\e$B$KF~$C$F$$$k
\e(B -- entry3,
4486 ;; entry4
\e$B$O
\e(B null
\e$B!#
\e(B
4487 ;; entry3
\e$B$H$7$FA^F~$9$k$b$N$,A4$/$J$1$l$P!"2?$b$7$J$$
\e(B -- entry3
4488 ;;
\e$B$,
\e(B purge
\e$BA0$+$i
\e(B null
\e$B$J$i!"
\e(Bentry2
\e$B$NKvHx$O
\e(B "["
\e$B$G$J$$$7!"
\e(B
4489 ;; entry4
\e$B$O
\e(B null
\e$B$@$+$i
\e(B entry[234]
\e$B$NA`:n$OITMW!#
\e(B
4491 (setq entry2 (nconc entry2 (list (concat "[" okurigana)))
4493 ;; purge
\e$BA0$+$i
\e(B entry3
\e$B$,
\e(B null
\e$B$@$C$?$N$@$+$i
\e(B entry4
\e$B$b
\e(B null
\e$B!#
\e(B
4494 entry4 (list "]")))))
4496 ;; entry2 --
\e$B:#2s;HMQ$7$J$+$C$?Aw$j2>L>$r;H$&4A;z$N8uJd72
\e(B + "[" +
\e$B:#
\e(B
4497 ;;
\e$B2s;HMQ$7$?Aw$j2>L>
\e(B (
\e$BAw$j2>L>$N$_!#$=$NAw$j2>L>$r;HMQ$9$k4A;z$N8u
\e(B
4498 ;;
\e$BJd72$O!"
\e(Bentry3
\e$B$K4^$^$l$k
\e(B)
\e$B!#
\e(B
4500 (insert (mapconcat 'skk-quote-char entry2 "/") "/")
4501 ;; entry2
\e$B$,
\e(B null
\e$B$J$i
\e(B entry3
\e$B$b
\e(B null
\e$B!#
\e(B
4503 ;; entry3 --
\e$B:#2s;HMQ$7$?Aw$j2>L>$r;H$&A44A;z%(%s%H%j
\e(B
4504 (insert (mapconcat 'skk-quote-char entry3 "/") "/"))
4505 ;; purge
\e$B$G
\e(B entry3
\e$B$,
\e(B null
\e$B$K$J$C$?>l9g$O
\e(B entry4
\e$B$,;D$C$F$$$k$H$-
\e(B
4508 ;; entry4 -- "]" +
\e$BB>$NAw$j2>L>$r;H$&A44A;z%(%s%H%j
\e(B (entry2
\e$B$N
\e(B
4509 ;;
\e$B;D$j
\e(B)
\e$B!#
\e(B
4510 (insert (mapconcat 'skk-quote-char entry4 "/") "/")))))))
4512 (defun skk-quote-char (word)
4513 ;;
\e$B<-=q$N@)8B$+$i<-=q%(%s%H%jFb$K4^$a$F$O$J$i$J$$J8;z$,
\e(B WORD
\e$B$NCf$K$"$l$P!"
\e(B
4514 ;;
\e$BI>2A$7$?$H$-$K$=$NJ8;z$H$J$k$h$&$J
\e(B Lisp
\e$B%3!<%I$rJV$9!#
\e(B
4517 (string-match "[/\n\r\"]" word)
4518 ;; we should not quote WORD if it is a symbolic expression
4519 (not (skk-lisp-prog-p word)))
4520 (concat "(concat \""
4521 (mapconcat (function (lambda (c)
4522 (cond ((eq c ?/) "\\057")
4527 (t (char-to-string c)))))
4528 ;;
\e$BJ8;zNs$rBP1~$9$k
\e(B char
\e$B$N%j%9%H$KJ,2r$9$k!#
\e(B
4529 (append word nil) "")
4533 (defun skk-lisp-prog-p (word)
4534 ;; word
\e$B$,
\e(B Lisp
\e$B%W%m%0%i%`$G$"$l$P!"
\e(Bt
\e$B$rJV$9!#
\e(B
4535 (let ((l (skk-str-length word)))
4536 (and (> l 2) (eq (skk-str-ref word 0) ?\() (< (aref word 1) 128)
4537 (eq (skk-str-ref word (1- l)) ?\)))))
4539 (defun skk-public-jisyo-has-entry-p (okurigana word)
4540 ;;
\e$B6&M-<-=q$,
\e(B MIDASHI
\e$B5Z$S$=$l$KBP1~$9$k
\e(B WORDS
\e$B%(%s%H%j$r;}$C$F$$$l$P!"
\e(B
4541 ;; non-nil
\e$B$rJV$9!#%W%i%$%Y!<%H<-=q$N%P%C%U%!$G%3!<%k$5$l$k!#
\e(B
4542 (let (fn skk-henkan-okuri-strictly skk-henkan-strict-okuri-precedence)
4544 (setq skk-henkan-okurigana okurigana))
4545 ;; skkserv
\e$B$r;H$&@_Dj$K$J$C$F$$$?$i!"
\e(Bskk-server.el
\e$B$r%m!<%I$9$k!#
\e(B
4546 (and (not (featurep 'skk-server))
4547 (or (and (boundp 'skk-servers-list) skk-servers-list)
4548 (or (and (boundp 'skk-server-host) skk-server-host)
4549 (getenv "SKKSERVER")))
4550 (require 'skk-server))
4551 (setq fn (funcall skk-public-jisyo-to-be-searched-function))
4552 (and fn (member word (eval fn)))))
4554 (defun skk-public-jisyo-to-be-searched-original ()
4555 ;; skk-search-prog-list
\e$B$NCf$+$i!"0lHVBg$-$J6&M-<-=q$G%5!<%A$9$k%W%m
\e(B
4556 ;;
\e$B%0%i%`$rJV$9!#
\e(B
4558 (and (featurep 'skk-server) (or skk-servers-list skk-server-host)
4559 (setq fn (assq 'skk-search-server skk-search-prog-list)))
4560 ;; skk-search-server
\e$B$+$i;O$^$k%j%9%H$,$J$1$l$P!"$H$K$+$/Bg$-$$<-=q$r0z?t
\e(B
4561 ;;
\e$B$K$7$F$$$k
\e(B skk-search-jisyo-file
\e$B%W%m%0%i%`$rC5$9!#
\e(B
4562 (if (and (not fn) (or skk-aux-large-jisyo skk-large-jisyo))
4563 (let ((spl skk-search-prog-list)
4565 (while (setq cell (car spl))
4566 (if (and (eq (car cell) 'skk-search-jisyo-file)
4567 (memq (nth 1 cell) '(skk-aux-large-jisyo skk-large-jisyo)))
4570 (setq spl (cdr spl))))))
4573 (defun skk-compose-ignore-entry (entry &optional add)
4574 ;; ENTRY
\e$B$NCf$K
\e(B skk-ignore-dic-word
\e$B4X?t$G%/%)!<%H$7$?%(%s%H%j$,$"$l
\e(B
4575 ;;
\e$B$P!"0l$D$N%(%s%H%j$K$^$H$a$k!#
\e(B
4576 ;;
\e$B%*%W%7%g%J%k0z?t$N
\e(B ADD
\e$B$,;XDj$5$l$F$$$?$i!"
\e(BADD
\e$B$r4^$a$?
\e(B
4577 ;; skk-ignore-dic-word
\e$B%(%s%H%j$r:n$k!#
\e(B
4578 ;;
\e$B?7$7$$
\e(B skk-ignore-dic-word
\e$B%(%s%H%j$r
\e(B car
\e$B$K!"$=$l0J30$N%(%s%H%j
\e(B cdr
\e$B$K$7
\e(B
4579 ;;
\e$B$?%j%9%H$rJV$9!#
\e(B
4581 (and add (setq entry (delete add entry)))
4587 (and (string-match "(skk-ignore-dic-word +\\([^\)]+\\))" e)
4588 (setq arg (concat arg
4589 (substring e (1+ (match-beginning 1))
4592 entry (delq e entry))))
4594 (setq arg (if arg (concat arg add) add))
4595 ;;
\e$BKvHx$N
\e(B " \""
\e$B$r@Z$jMn$H$9!#
\e(B
4596 (setq arg (substring arg 0 -2)))
4597 (cons (concat "(skk-ignore-dic-word \"" arg "\")") entry))))
4600 (defun skk-katakana-region (start end &optional vcontract)
4601 "
\e$B%j!<%8%g%s$N$R$i$,$J$r%+%?%+%J$KJQ49$9$k!#
\e(B
4602 \e$B%*%W%7%g%J%k0z?t$N
\e(B VCONTRACT
\e$B$,
\e(B non-nil
\e$B$G$"$l$P!"
\e(B\"
\e$B$&!+
\e(B\"
\e$B$r
\e(B \"
\e$B%t
\e(B\"
\e$B$KJQ49$9
\e(B
4604 \e$B0z?t$N
\e(B START
\e$B$H
\e(B END
\e$B$O?t;z$G$b%^!<%+!<$G$bNI$$!#
\e(B"
4605 (interactive "*r\nP")
4610 (while (re-search-forward "[
\e$B$!
\e(B-
\e$B$s
\e(B]+" end 'noerror)
4612 (skk-hiragana-to-katakana
4613 (buffer-substring-no-properties (match-beginning 0)
4615 (backward-char (skk-str-length katakana))
4616 ;; firstly insert a new string, secondly delete an old string to save
4617 ;; the cursor position.
4618 (insert-and-inherit katakana)
4619 (delete-region (+ (match-beginning 0) (length katakana))
4620 (+ (match-end 0) (length katakana))))
4624 (while (re-search-forward "
\e$B%&!+
\e(B" end 'noerror)
4625 (backward-char (skk-str-length "
\e$B%&!+
\e(B"))
4626 (let ((vu-len (length "
\e$B%t
\e(B")))
4627 (insert-and-inherit "
\e$B%t
\e(B")
4628 (delete-region (+ (match-beginning 0) vu-len)
4629 (+ (match-end 0) vu-len))))))))))
4631 (defun skk-hiragana-region (start end &optional vexpand)
4632 "
\e$B%j!<%8%g%s$N%+%?%+%J$r$R$i$,$J$KJQ49$9$k!#
\e(B
4633 \e$B%*%W%7%g%J%k0z?t$N
\e(B VEXPAND
\e$B$,
\e(B non-nil
\e$B$G$"$l$P!"
\e(B\"
\e$B%t
\e(B\"
\e$B$r
\e(B \"
\e$B$&!+
\e(B\"
\e$B$KJQ49$9$k!#
\e(B
4634 \e$B0z?t$N
\e(B START
\e$B$H
\e(B END
\e$B$O?t;z$G$b%^!<%+!<$G$bNI$$!#
\e(B
4635 \"
\e$B%u
\e(B\"
\e$B$H
\e(B \"
\e$B%v
\e(B\"
\e$B$OJQ99$5$l$J$$!#$3$N
\e(B 2
\e$B$D$NJ8;z$OBP1~$9$k$R$i$,$J$,$J$$$N$G!"%+
\e(B
4636 \e$B%?%+%J$H$7$F$O07$o$l$J$$!#
\e(B"
4637 (interactive "*r\nP")
4642 (while (re-search-forward "[
\e$B%!
\e(B-
\e$B%s
\e(B]+" end 'noerror)
4644 (skk-katakana-to-hiragana
4645 (buffer-substring-no-properties (match-beginning 0)
4647 (backward-char (skk-str-length hiragana))
4648 ;; firstly insert a new string, secondly delete an old string to save
4649 ;; the cursor position.
4650 (insert-and-inherit hiragana)
4651 (delete-region (+ (match-beginning 0) (length hiragana))
4652 (+ (match-end 0) (length hiragana))))
4656 (while (re-search-forward "
\e$B%t
\e(B" end 'noerror)
4657 (backward-char (skk-str-length "
\e$B%t
\e(B"))
4658 (insert-and-inherit "
\e$B$&!+
\e(B")
4659 (let ((vu-len (length "
\e$B$&!+
\e(B")))
4660 (delete-region (+ (match-beginning 0) vu-len)
4661 (+ (match-end 0) vu-len))))))))))
4663 (defun skk-jisx0208-latin-region (start end)
4664 "
\e$B%j!<%8%g%s$N
\e(B ascii
\e$BJ8;z$rBP1~$9$kA43Q1QJ8;z$KJQ49$9$k!#
\e(B"
4669 (while (re-search-backward "[ -~]" start 'noerror)
4670 ;; firstly insert a new char, secondly delete an old char to save
4671 ;; the cursor position.
4672 (let* ((c (aref skk-default-jisx0208-latin-vector (following-char)))
4674 (insert-and-inherit c)
4675 (delete-region (+ (match-beginning 0) c-len)
4676 (+ (match-end 0) c-len)))))))
4678 (defun skk-latin-region (start end)
4679 ;;
\e$B%j!<%8%g%s$NA43Q1Q?t;z$rBP1~$9$k
\e(B ascii
\e$BJ8;z$KJQ49$9$k!#
\e(B
4680 ;; egg.el 3.09
\e$B$N
\e(B hankaku-region
\e$B$r;29M$K$7$?!#
\e(B
4686 (while (re-search-backward "\\cS\\|\\cA" start 'noerror)
4687 (setq val (skk-jisx0208-to-ascii (char-to-string (following-char))))
4690 (insert-and-inherit val)
4691 (delete-region (+ (match-beginning 0) 1)
4692 (+ (match-end 0) 1)))))))))
4694 (defun skk-katakana-henkan (arg)
4695 "
\e$B"&%b!<%I$G$"$l$P!"%j!<%8%g%s$N$R$i$,$J$r%+%?%+%J$KJQ49$9$k!#
\e(B
4696 \e$B"'%b!<%I$G$O2?$b$7$J$$!#
\e(B
4697 \e$B$=$NB>$N%b!<%I$G$O!"%*%j%8%J%k$N%-!<3d$jIU$1$G%P%$%s%I$5$l$F$$$k%3%^%s%I$r<B9T
\e(B
4700 (skk-with-point-move
4702 (if skk-henkan-active
4704 (skk-set-marker skk-henkan-end-point (point))
4705 (skk-*-henkan-1 'skk-katakana-region skk-henkan-start-point
4706 skk-henkan-end-point 'vcontract))
4707 (skk-emulate-original-map arg))))
4709 (defun skk-hiragana-henkan (arg)
4710 "
\e$B"&%b!<%I$G$"$l$P!"%j!<%8%g%s$N%+%?%+%J$r$R$i$,$J$KJQ49$9$k!#
\e(B
4711 \e$B"'%b!<%I$G$O2?$b$7$J$$!#
\e(B
4712 \e$B$=$NB>$N%b!<%I$G$O!"%*%j%8%J%k$N%-!<3d$jIU$1$G%P%$%s%I$5$l$F$$$k%3%^%s%I$r<B9T
\e(B
4715 (skk-with-point-move
4717 (if skk-henkan-active
4719 (skk-set-marker skk-henkan-end-point (point))
4720 (skk-*-henkan-1 'skk-hiragana-region skk-henkan-start-point
4721 skk-henkan-end-point 'vexpand))
4722 (skk-emulate-original-map arg))))
4724 (defun skk-jisx0208-latin-henkan (arg)
4725 "
\e$B"&%b!<%I$G$"$l$P!"
\e(Bascii
\e$BJ8;z$rBP1~$9$kA43Q1QJ8;z$KJQ49$9$k!#
\e(B
4726 \e$B"'%b!<%I$G$O2?$b$7$J$$!#
\e(B
4727 \e$B$=$NB>$N%b!<%I$G$O!"%*%j%8%J%k$N%-!<3d$jIU$1$G%P%$%s%I$5$l$F$$$k%3%^%s%I$r<B9T
\e(B
4730 (skk-with-point-move
4732 (if skk-henkan-active
4734 (skk-set-marker skk-henkan-end-point (point))
4735 (skk-*-henkan-1 'skk-jisx0208-latin-region skk-henkan-start-point
4736 skk-henkan-end-point))
4737 (skk-emulate-original-map arg))))
4739 (defun skk-latin-henkan (arg)
4740 "
\e$B"&%b!<%I$G$"$l$P!"
\e(Bascii
\e$BJ8;z$rBP1~$9$kA43QJ8;z$KJQ49$9$k!#
\e(B
4741 \e$B"'%b!<%I$G$O2?$b$7$J$$!#
\e(B
4742 \e$B$=$NB>$N%b!<%I$G$O!"%*%j%8%J%k$N%-!<3d$jIU$1$G%P%$%s%I$5$l$F$$$k%3%^%s%I$r<B9T
\e(B
4745 (skk-with-point-move
4747 (if skk-henkan-active
4749 (skk-set-marker skk-henkan-end-point (point))
4750 (skk-*-henkan-1 'skk-latin-region skk-henkan-start-point
4751 skk-henkan-end-point))
4752 (skk-emulate-original-map arg))))
4754 (defun skk-*-henkan-1 (func &rest args)
4755 ;;
\e$BJQ492DG=$+$I$&$+$N%A%'%C%/$r$7$?8e$K
\e(B ARGS
\e$B$r0z?t$H$7$F
\e(B FUNC
\e$B$rE,MQ$7!"
\e(B
4756 ;; skk-henkan-start-point
\e$B$H
\e(B skk-henkan-end-point
\e$B$N4V$NJ8;zNs$rJQ49$9$k!#
\e(B
4757 (cond ((skk-get-prefix skk-current-rule-tree)
4758 (skk-error "
\e$B%U%#%C%/%9$5$l$F$$$J$$
\e(B skk-prefix
\e$B$,$"$j$^$9
\e(B"
4759 "Have unfixed skk-prefix"))
4760 ((< (point) skk-henkan-start-point)
4761 (skk-error "
\e$B%+!<%=%k$,JQ493+;OCOE@$h$jA0$K$"$j$^$9
\e(B"
4762 "Henkan end point must be after henkan start point"))
4763 ((and (not skk-allow-spaces-newlines-and-tabs)
4764 (skk-save-point (beginning-of-line)
4765 (> (point) skk-henkan-start-point)))
4766 (skk-error "
\e$BJQ49%-!<$K2~9T$,4^$^$l$F$$$^$9
\e(B"
4767 "Henkan key may not contain a new line character")))
4771 (defun skk-hiragana-to-katakana (hiragana)
4772 (let ((diff (- ?
\e$B%"
\e(B ?
\e$B$"
\e(B)))
4773 (mapconcat (function (lambda (e) (char-to-string (+ e diff))))
4774 (string-to-int-list hiragana) "")))
4776 (defun skk-katakana-to-hiragana (katakana)
4777 (let ((diff (- ?
\e$B%"
\e(B ?
\e$B$"
\e(B)))
4778 (mapconcat (function (lambda (e) (char-to-string (- e diff))))
4779 (string-to-int-list katakana) "")))
4781 (defun skk-splice-in (org offset spliced)
4782 ;; ORG := '(A B C), SPLICED := '(X Y), OFFSET := 1
4785 (or (> offset 0) (error "Cannot splice in!"))
4786 (setq tmp (nthcdr (1- offset) org)
4788 (setcdr tmp nil) ;cut off
4789 (setcdr tmp (if tail (nconc spliced tail) spliced))
4792 ;; (defun skk-chomp (nth list)
4793 ;; ;; LIST := '(A B C D), NTH := 1
4795 ;; (and (> nth -1) (setcdr (nthcdr nth list) nil))
4798 (defun skk-henkan-face-on ()
4799 ;; skk-use-face
\e$B$,
\e(B non-nil
\e$B$N>l9g!"
\e(Bskk-henkan-start-point
\e$B$H
\e(B
4800 ;; skk-henkan-end-point
\e$B$N4V$N
\e(B face
\e$BB0@-$r
\e(B skk-henkan-face
\e$B$NCM$KJQ99$9$k!#
\e(B
4802 ;; SKK 9.4
\e$B$h$j
\e(B Text Properties
\e$B$r;HMQ$9$k$N$r;_$a$F!"
\e(BOverlays
\e$B$r;HMQ$9$k$h
\e(B
4803 ;;
\e$B$&$K$7$?
\e(B (egg.el, canna.el, wnn-egg.el
\e$B$r;29M$K$7$?
\e(B)
\e$B!#
\e(B
4804 ;; Overlays
\e$B$O!"%F%-%9%H$N0lIt$G$O$J$$$N$G!"%P%C%U%!$+$iJ8;z$r@Z$j=P$7$F$b%3
\e(B
4805 ;;
\e$B%T!<$NBP>]$K$J$i$J$$$7!"%"%s%I%%;~$bL5;k$5$l$k$N$G!"JQ49$5$l$?8uJd$NI=<(
\e(B
4806 ;;
\e$B$r0l;~E*$KJQ99$9$k$K$O
\e(B Text Properties
\e$B$h$j$b9%ET9g$G$"$k!#
\e(B
4807 (if (and skk-henkan-face
4808 (marker-position skk-henkan-start-point)
4809 (marker-position skk-henkan-end-point))
4810 (skk-face-on skk-henkan-overlay
4811 skk-henkan-start-point skk-henkan-end-point
4812 skk-henkan-face skk-henkan-overlay-priority)))
4814 (defun skk-henkan-face-off ()
4815 ;; skk-henkan-start-point
\e$B$H
\e(B skk-henkan-end-point
\e$B$N4V$NI=<($rJQ99$7$F$$$k
\e(B
4816 ;; skk-henkan-overlay
\e$B$r>C$9!#
\e(B
4817 (and skk-henkan-face (skk-detach-extent skk-henkan-overlay)))
4819 (defun skk-detach-extent (object)
4821 ((eq skk-emacs-type 'xemacs)
4822 (and (extentp object) (detach-extent object)))
4824 (and (overlayp object) (delete-overlay object)))))
4826 (defun skk-make-face (face)
4827 ;; hilit-lookup-face-create
\e$B$N%5%V%;%C%H!#
\e(Btutorial
\e$B$G?'IU$1$r9T$J$&>l9g$G$b
\e(B
4828 ;; hilit19
\e$B$K0MB8$;$:$H$j$"$($:
\e(B face
\e$B$r<+A0$G:n$k$3$H$,$G$-$k$h$&$K!"$H$$$&
\e(B
4829 ;;
\e$BL\E*$G:n$C$?$b$N$G!"4JC1$J?'IU$1$7$+$G$-$J$$!#$"$^$j8-$/$O$J$$!#J#;($J
\e(B
4830 ;; face
\e$B$r:n$j$?$$?M$O
\e(B hilit-lookup-face-create
\e$BEy$r;H$C$F2<$5$$!#
\e(B
4831 (or (car (memq face (face-list)))
4832 (let ((face-name (symbol-name face)))
4833 (setq face (make-face face))
4835 (if (not (string-match "/" face-name))
4836 (set-face-foreground face face-name)
4837 (set-face-foreground
4839 (substring face-name 0 (match-beginning 0)))
4840 (set-face-background
4842 (substring face-name (1+ (match-beginning 0)))))
4845 ;; skk-auto.el, skk-rdbms.el
\e$B$NN>J}$G;H$&$N$G!"
\e(Bskk-auto.el
\e$B$h$j0\F0$7$?!#
\e(B
4846 (defun skk-remove-common (word)
4847 ;; skk-henkan-key
\e$B$H
\e(B word
\e$B$N4V$K6&DL$NAw$j2>L>$r<h$j=|$-!"Aw$j2>L>0J30$NItJ,
\e(B
4848 ;;
\e$B$NJ8;zNs$rJV$9!#
\e(Bskk-henkan-key
\e$B$H
\e(B skk-henkan-okurigana
\e$B$NCM$r%;%C%H$9$k!#
\e(B
4849 ;;
\e$BNc$($P!"
\e(Bword ==
\e$B;}$C$F$-$?
\e(B
\e$B$G$"$l$P!"
\e(Bskk-henkan-key := "
\e$B$b
\e(Bt",
4850 ;; skk-henkan-okurigana := "
\e$B$C$F
\e(B", word := "
\e$B;}
\e(B"
\e$B$N$h$&$KJ,2r$7!"
\e(Bword
\e$B$rJV$9!#
\e(B
4851 ;; skk-auto-okuri-process
\e$B$NCM$,
\e(B non-nil
\e$B$G$"$k$H$-$K$3$N4X?t$r;HMQ$9$k!#
\e(B
4852 (if (and (not (skk-numeric-p)) (not skk-abbrev-mode)
4853 (or skk-henkan-in-minibuff-flag
4854 (and (<= skk-okuri-index-min skk-henkan-count)
4855 (<= skk-henkan-count skk-okuri-index-max))))
4856 (let ((midasi skk-henkan-key)
4857 (midasi-len (skk-str-length skk-henkan-key))
4858 (word-len (skk-str-length word))
4860 char pos pos2 midasi-tail word-tail new-word okuri-first
4861 new-skk-okuri-char new-skk-henkan-key)
4862 (if (not (and (>= midasi-len 2) (>= word-len 2)))
4864 ;; check if both midasi and word end with the same ascii char.
4865 (if (and (eq (skk-str-ref midasi (1- midasi-len))
4866 (skk-str-ref word (1- word-len)))
4867 (skk-ascii-char-p (skk-str-ref midasi (1- midasi-len))))
4868 ;; if so chop off the char from midasi and word.
4869 ;; assume size of an ASCII char is always 1.
4870 (setq midasi (substring midasi 0 -1)
4871 midasi-len (1- midasi-len)
4872 word (substring word 0 -1)
4873 word-len (1- word-len)))
4874 (setq midasi-tail (skk-substring midasi (1- midasi-len)
4876 word-tail (skk-substring word (1- word-len)
4878 ;;
\e$B$b$&>/$7E83+$G$-$=$&$@$,!"%P%$%H%3%s%Q%$%i!<$,%*%W%F%#%^%$%:$7$d
\e(B
4879 ;;
\e$B$9$$$h$&$K
\e(B not
\e$B$rIU$1$k$@$1$K$7$F$*$/!#
\e(B
4880 (if (not (and (string= midasi-tail word-tail)
4881 (or (and (skk-string<= "
\e$B$!
\e(B" midasi-tail)
4882 (skk-string<= midasi-tail "
\e$B$s
\e(B"))
4883 (member midasi-tail '("
\e$B!"
\e(B" "
\e$B!#
\e(B" "
\e$B!$
\e(B" "
\e$B!%
\e(B")))))
4885 (setq pos (1- word-len)
4886 new-word new-skk-henkan-key)
4887 (while (and cont (> pos 0))
4888 (setq char (skk-substring word (1- pos) pos))
4889 (if (and (skk-string<= "
\e$B0!
\e(B" char) (skk-string<= char "
\e$Bt$
\e(B"))
4890 ;; char is the right-most Kanji
4892 (setq pos (1- pos))))
4893 (setq pos2 (- midasi-len (- word-len pos)))
4894 ;; check if midasi and word has the same tail of length
4895 (if (not (string= (skk-substring midasi pos2 midasi-len)
4896 (skk-substring word pos word-len)))
4898 (setq okuri-first (skk-substring word pos (1+ pos)))
4899 (setq skk-henkan-okurigana
4900 (if (and (string= okuri-first "
\e$B$C
\e(B")
4901 (<= (+ pos 2) word-len))
4902 ;; in this case okuriga consits of two
4903 ;; characters, e.g.,
\e$B!V;D$C$?!W
\e(B
4904 (skk-substring word pos (+ pos 2))
4906 (setq new-word (skk-substring word 0 pos)
4907 new-skk-okuri-char (skk-okurigana-prefix okuri-first)
4908 new-skk-henkan-key (concat
4909 (skk-substring midasi 0 pos2)
4910 new-skk-okuri-char))
4911 (if (not skk-henkan-in-minibuff-flag)
4913 skk-henkan-key new-skk-henkan-key)
4914 ;; ask if register as okuri-ari word.
4915 (let (inhibit-quit) ; allow keyboard quit
4918 (if skk-japanese-message-and-error
4919 "%s /%s/
\e$B$rAw$j$"$j%(%s%H%j$H$7$FEPO?$7$^$9$+!)
\e(B"
4920 "Shall I register this as okuri-ari entry: %s /%s/ ? ")
4921 new-skk-henkan-key new-word))
4923 skk-okuri-char new-skk-okuri-char
4924 skk-henkan-key new-skk-henkan-key)
4925 (setq skk-henkan-okurigana nil
4927 (message "")))))))))
4928 ;;
\e$BJ,2r$7$?
\e(B word (
\e$BAw$j2>L>ItJ,$r=|$$$?$b$N
\e(B)
\e$B$rJV$9!#
\e(B
4931 (defun skk-okurigana-prefix (okurigana)
4932 (cond ((string= okurigana "
\e$B$s
\e(B")
4934 ((string= okurigana "
\e$B$C
\e(B")
4935 (aref skk-kana-rom-vector
4936 ;; assume the character is hiragana of JIS X 0208.
4938 (string-to-char (skk-substring skk-henkan-okurigana 1 2))
4941 (t (aref skk-kana-rom-vector
4943 (string-to-char (skk-substring skk-henkan-okurigana 0 1))
4947 ;; from type-break.el. Welcome!
4948 (defun skk-time-difference (a b)
4949 ;; Compute the difference, in seconds, between a and b, two structures
4950 ;; similar to those returned by `current-time'.
4951 ;; Use addition rather than logand since that is more robust; the low 16
4952 ;; bits of the seconds might have been incremented, making it more than 16
4954 (+ (lsh (- (car b) (car a)) 16)
4955 (- (nth 1 b) (nth 1 a))))
4957 (defun skk-remove-minibuffer-setup-hook (&rest args)
4958 ;; Remove all args from minibuffer-setup-hook.
4960 (remove-hook 'minibuffer-setup-hook (car args))
4961 (setq args (cdr args))))
4963 (add-hook 'edit-picture-hook 'skk-misc-for-picture 'append)
4964 ;; add 'skk-save-jisyo only to remove easily.
4965 (add-hook 'skk-before-kill-emacs-hook 'skk-save-jisyo)
4966 (add-hook 'minibuffer-exit-hook
4969 (remove-hook 'pre-command-hook 'skk-pre-command 'local)
4970 (skk-remove-minibuffer-setup-hook
4971 'skk-j-mode-on 'skk-setup-minibuffer
4972 (function (lambda ()
4973 (add-hook 'pre-command-hook 'skk-pre-command nil 'local)))))))
4975 (defun skk-setup-modeline ()
4976 "
\e$B%b!<%I9T$X$N%9%F!<%?%9I=<($r=`Hw$9$k!#
\e(B"
4977 (cond ((eq skk-status-indicator 'left)
4980 ((and (fboundp 'face-proportional-p)
4981 (face-proportional-p 'modeline))
4982 '((skk-latin-mode-string . ("--SKK:" . " SKK"))
4983 (skk-hiragana-mode-string . ("--
\e$B$+$J
\e(B:" . "
\e$B$+$J
\e(B"))
4984 (skk-katakana-mode-string . ("--
\e$B%+%J
\e(B:" . "
\e$B%+%J
\e(B"))
4985 (skk-jisx0208-latin-mode-string . ("--
\e$BA41Q
\e(B:" . "
\e$BA41Q
\e(B"))
4986 (skk-abbrev-mode-string . ("--a
\e$B$"
\e(B:" . " a
\e$B$"
\e(B"))))
4988 '((skk-latin-mode-string . ("--SKK::" . " SKK"))
4989 (skk-hiragana-mode-string . ("--
\e$B$+$J
\e(B:" . "
\e$B$+$J
\e(B"))
4990 (skk-katakana-mode-string . ("--
\e$B%+%J
\e(B:" . "
\e$B%+%J
\e(B"))
4991 (skk-jisx0208-latin-mode-string . ("--
\e$BA41Q
\e(B:" . "
\e$BA41Q
\e(B"))
4992 (skk-abbrev-mode-string . ("--a
\e$B$"
\e(B::" . " a
\e$B$"
\e(B")))))))
4994 (let ((sym (caar list))
4996 (if (string= (symbol-value sym) (cdr strs))
4997 (set sym (car strs))))
4998 (setq list (cdr list))))
4999 (cond ((eq skk-emacs-type 'xemacs)
5000 (or (memq 'skk-input-mode-string default-mode-line-format)
5001 (setq-default default-modeline-format
5002 (append '("" skk-input-mode-string)
5003 default-modeline-format)))
5007 (if (buffer-live-p buf)
5010 (or (memq 'skk-input-mode-string modeline-format)
5011 (setq modeline-format
5012 (append '("" skk-input-mode-string)
5013 modeline-format)))))))
5016 (or (memq 'skk-input-mode-string mode-line-format)
5019 (append '("" skk-input-mode-string)
5020 mode-line-format)))))
5021 (setq-default skk-input-mode-string "")
5022 (force-mode-line-update t))
5024 (setq minor-mode-alist
5025 (put-alist 'skk-mode
5026 ;; each element of minor-mode-alist is not cons cell.
5027 '(skk-input-mode-string) minor-mode-alist)))))
5029 (run-hooks 'skk-load-hook)
5032 ;;; Local Variables:
5034 ;;; skk.el ends here