219
|
1 ;; -*-byte-compile-dynamic: t;-*-
|
|
2 ;;; skk.el --- SKK (Simple Kana to Kanji conversion program)
|
|
3 ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
|
|
4 ;; Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>
|
|
5
|
|
6 ;; Author: Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>
|
|
7 ;; Maintainer: Murata Shuuichirou <mrt@mickey.ai.kyutech.ac.jp>
|
|
8 ;; Mikio Nakajima <minakaji@osaka.email.ne.jp>
|
|
9 ;; Version: $Id: skk.el,v 1.1 1997/12/02 08:48:40 steve Exp $
|
|
10 ;; Keywords: japanese
|
|
11 ;; Last Modified: $Date: 1997/12/02 08:48:40 $
|
|
12
|
|
13 ;; This program is free software; you can redistribute it and/or modify
|
|
14 ;; it under the terms of the GNU General Public License as published by
|
|
15 ;; the Free Software Foundation; either versions 2, or (at your option)
|
|
16 ;; any later version.
|
|
17
|
|
18 ;; This program is distributed in the hope that it will be useful
|
|
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
21 ;; GNU General Public License for more details.
|
|
22
|
|
23 ;; You should have received a copy of the GNU General Public License
|
|
24 ;; along with SKK, see the file COPYING. If not, write to the Free
|
|
25 ;; Software Foundation Inc., 59 Temple Place - Suite 330, Boston,
|
|
26 ;; MA 02111-1307, USA.
|
|
27
|
|
28 ;;; Commentary:
|
|
29
|
|
30 ;; Following people contributed modifications to skk.el (Alphabetical order):
|
|
31 ;; Chikanobu Toyofuku <unbound@papaya.juice.or.jp>
|
|
32 ;; FURUE Hideyuki <furue@kke.co.jp>
|
|
33 ;; GUNJI Takao <gunji@lisa.lang.osaka-u.ac.jp>
|
|
34 ;; Haru Mizuno <mizu@cs3.cs.oki.co.jp>
|
|
35 ;; Hideki Sakurada <sakurada@kuis.kyoto-u.ac.jp>
|
|
36 ;; Hisao Kuroda <kuroda@msi.co.jp>
|
|
37 ;; Hitoshi SUZUKI <h-suzuki@ael.fujitsu.co.jp>
|
|
38 ;; IIDA Yosiaki <iida@secom-sis.co.jp>
|
|
39 ;; Jun-ichi Nakamura <nakamura@pluto.ai.kyutech.ac.jp>
|
|
40 ;; Katuya Tomioka <tomioka@culle.l.chiba-u.ac.jp>
|
|
41 ;; Kazuo Hirokawa <hirokawa@rics.co.jp>
|
|
42 ;; Kazushi Marukawa <kazushi@kubota.co.jp>
|
|
43 ;; Kimura Chikahiro <kimura@oa1.kb.nec.co.jp>
|
|
44 ;; Kiyotaka Sakai <ksakai@netwk.ntt-at.co.jp>
|
|
45 ;; Koichi MORI <kmori@onsei2.rilp.m.u-tokyo.ac.jp>
|
|
46 ;; MINOURA Itsushi <minoura@uni.zool.s.u-tokyo.ac.jp>
|
|
47 ;; MIYOSHI Tsutomu <minkov@fuzzy.or.jp>
|
|
48 ;; Makoto MATSUSHITA <matusita@ics.es.osaka-u.ac.jp>
|
|
49 ;; Masahiko Suzuki <suzmasa@sm.sony.co.jp>
|
|
50 ;; Masahiro Doteguchi <xdote@rp.open.cs.fujitsu.co.jp>
|
|
51 ;; Masakazu Takahashi <masaka-t@ascii.co.jp>
|
|
52 ;; Masatake YAMATO <jet@airlab.cs.ritsumei.ac.jp>
|
|
53 ;; Mikio Nakajima <minakaji@osaka.email.ne.jp>
|
|
54 ;; Motohiko Mouri <mouri@jaist.ac.jp>
|
|
55 ;; Murata Shuuichirou <mrt@mickey.ai.kyutech.ac.jp>
|
|
56 ;; $BCfDE;3(B $B91(B <hisashi@rst.fujixerox.co.jp>
|
|
57 ;; NAMBA Seiich <pi9s-nnb@asahi-net.or.jp>
|
|
58 ;; Naoki HAMADA <nao@mimo.jaist-east.ac.jp>
|
|
59 ;; Ryoichi Hashimoto <gnu@ipri.go.jp>
|
|
60 ;; Sekita Daigo <sekita@mri.co.jp>
|
|
61 ;; $B?JF#M5;V(B <shindo@super.ees.saitama-u.ac.jp>
|
|
62 ;; Shuji Ashizawa <ashizawa@zuken.co.jp>
|
|
63 ;; Takeshi OHTANI <ohtani@iias.flab.fujitsu.co.jp>
|
|
64 ;; Tomoyuki Hiro <hiro@momo.it.okayama-u.ac.jp>
|
|
65 ; $BDS?"(B $B@5Bg(B (ma-tsuge@kdd.co.jp)
|
|
66 ;; Tsugutomo Enami <enami@ptgd.sony.co.jp>
|
|
67 ;; Wataru Matsui <matsui@atr-rd.atr.co.jp>
|
|
68 ;; Yoshida Toyonobu <toyono-y@is.aist-nara.ac.jp>
|
|
69
|
|
70 ;;; Change log:
|
|
71
|
|
72 ;;; Code:
|
|
73 (require 'advice)
|
|
74 ;; Elib 1.0 is required
|
|
75 ;; queue-m.el and string.el are now distributed with SKK; this seems
|
|
76 ;; to be the primary source for XEmacs
|
|
77 (require 'queue-m)
|
|
78 (require 'string)
|
|
79 (require 'skk-foreword)
|
|
80 (require 'skk-vars)
|
|
81
|
|
82 (defconst skk-version "10.38")
|
|
83
|
|
84 ;;;###skk-autoload
|
|
85 (defconst skk-month-alist
|
|
86 '(("Jan" . "1") ("Feb" . "2") ("Mar" . "3") ("Apr" . "4") ("May" . "5")
|
|
87 ("Jun" . "6") ("Jul" . "7") ("Aug" . "8") ("Sep" . "9") ("Oct" . "10")
|
|
88 ("Nov" . "11") ("Dec" . "12") )
|
|
89 "$B1Q8l$N7nL>$H;;MQ?t;z$NO"A[%j%9%H!#(B
|
|
90
|
|
91 $B;;MQ?t;z$+$i1Q8l$N7nL>$N$_$r=PNO$9$k$N$G$"$l$P!"%Y%/%?!<$r;H$C$?J}$,9bB.$@$,!"(B
|
|
92 $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?(B
|
|
93 $BL\E*$K;HMQ$G$-$k$h$&O"A[%j%9%H$N7ABV$r<h$k!#(B
|
|
94
|
|
95 Alist of English month abbreviations and numerical values.
|
|
96
|
|
97 Although it is faster to use a vector if we only want to output
|
|
98 month abbreviations given the ordinal, without the alist it's
|
|
99 unreasonable [sic] to output the ordinal given the abbreviation,
|
|
100 so for multi-purpose utility we use the alist form."
|
|
101 )
|
|
102
|
|
103 ;;;###skk-autoload
|
|
104 (defun skk-version ()
|
|
105 (interactive)
|
|
106 (if (not (interactive-p))
|
|
107 skk-version
|
|
108 (save-match-data
|
|
109 (let* ((raw-date "$Date: 1997/12/02 08:48:40 $")
|
|
110 (year (substring raw-date 7 11))
|
|
111 (month (substring raw-date 12 14))
|
|
112 (date (substring raw-date 15 17)) )
|
|
113 (if (string-match "^0" month)
|
|
114 (setq month (substring month (match-end 0))) )
|
|
115 (if (string-match "^0" date)
|
|
116 (setq date (substring date (match-end 0))) )
|
|
117 (message "SKK version %s of %s"
|
|
118 skk-version
|
|
119 (concat (car (rassoc month skk-month-alist))
|
|
120 " " date ", " year ))))))
|
|
121
|
|
122 ;;;; variables declaration
|
|
123 ;;; user variables
|
|
124 (defvar skk-debug nil)
|
|
125
|
|
126 ;;;###skk-autoload
|
|
127 (defvar skk-init-file (if (eq system-type 'ms-dos) "~/_skk" "~/.skk")
|
|
128 "*SKK $B$N=i4|@_Dj%U%!%$%kL>!#(B
|
|
129 skk.el 9.x $B$h$j(B ~/.emacs $B$G$N%+%9%?%^%$%:$,2DG=$H$J$C$?!#(B
|
|
130
|
|
131 Name of the SKK initialization file.
|
|
132 From skk.el 9.x on all customization may be done in ~/.emacs."
|
|
133 )
|
|
134
|
|
135 ;;;###skk-autoload
|
|
136 (defvar skk-special-midashi-char-list '(?> ?< ??)
|
|
137 "*$B@\F,<-!"@\Hx<-$NF~NO$N$?$a$N%W%l%U%#%C%/%9%-!<!"%5%U%#%C%/%9%-!<$N%j%9%H!#(B
|
|
138
|
|
139 List of prefix and suffix keys for entering `setsutoji' and `setsuoji'."
|
|
140 ;#SJT# What are `setsutoji' and `setsuoji'?
|
|
141 )
|
|
142
|
|
143 ;#SJT# Is this hook also run in skk-auto-fill-mode? Before or after?
|
|
144 ;;;###skk-autoload
|
|
145 (defvar skk-mode-hook nil
|
|
146 "*SKK $B$r5/F0$7$?$H$-$N%U%C%/!#(B
|
|
147 $BB>$K!"(Bskk-auto-fill-mode-hook$B!"(Bskk-load-hook, skk-init-file $B$G$b%+%9%?(B
|
|
148 $B%^%$%:$,2DG=!#(B
|
|
149
|
|
150 Hook run at SKK startup.
|
|
151
|
|
152 `skk-auto-fill-mode-hook', `skk-load-hook', and skk-init-file may also
|
|
153 be used for customization."
|
|
154 )
|
|
155
|
|
156 ;;;###skk-autoload
|
|
157 (defvar skk-auto-fill-mode-hook nil
|
|
158 "*skk-auto-fill-mode $B$r5/F0$7$?$H$-$N%U%C%/!#(B
|
|
159 $BB>$K!"(Bskk-mode-hook, skk-load-hook, skk-init-file $B$G$b%+%9%?%^%$%:$,2D(B
|
|
160 $BG=!#(B
|
|
161
|
|
162 Hook run at startup of skk-auto-fill-mode.
|
|
163
|
|
164 `skk-mode-hook', `skk-load-hook', and `skk-init-file' may also be
|
|
165 used for customization."
|
|
166 )
|
|
167
|
|
168 ;;;###skk-autoload
|
|
169 (defvar skk-load-hook nil
|
|
170 "*skk.el $B$r%m!<%I$7$?$H$-$N%U%C%/!#(B
|
|
171 $BB>$K!"(Bskk-mode-hook, skk-auto-fill-mode-hook, skk-init-file $B$G$b%+%9%?(B
|
|
172 $B%^%$%:$,2DG=!#(B
|
|
173
|
|
174 Hook run when SKK is loaded.
|
|
175
|
|
176 `skk-auto-fill-mode-hook', `skk-mode-hook', and `skk-init-file' may
|
|
177 also be used for customization."
|
|
178 )
|
|
179
|
|
180 ;;;###skk-autoload
|
|
181 (defvar skk-kakutei-jisyo nil
|
|
182 "*$B:G=i$K8!:w$9$k<-=q!#(B
|
|
183 Non-nil $B$G!"$+$D(B skk-search-prog-list $B$NMWAG$NCf$K$3$NJQ?t$,;HMQ$5$l$F$$$l$P!"(B
|
|
184 $B;XDj$5$l$?<-=q$r8!:w$N$?$a%P%C%U%!$KFI$_9~$_!"8!:w$r9T$J$&!#(B
|
|
185 $B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B
|
|
186 $B3F8+=P$78l$N:G=i$N%(%s%H%j$7$+8!:w$7$J$$(B ($BJ#?t$N%(%s%H%j$,$"$C$F$b(B 2 $BHVL\0J9_$N(B
|
|
187 $B%(%s%H%j$OL5;k$5$l$k(B)$B!#(B
|
|
188 skk-search-prog-list $B$NCM$r@_Dj$9$k$3$H$K$h$j!"8!:wBP>]$N<-=q$NJQ99!"8!:w$N=g(B
|
|
189 $B=x$NJQ99$,2DG=!#(B
|
|
190
|
|
191 The first dictionary to be searched.
|
|
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 The keys must be sorted.
|
|
196 Only the first entry in each key is checked; if several entries are
|
|
197 present the second and following entries are ignored.
|
|
198 By setting the value of `skk-search-prog-list' the dictionaries
|
|
199 searched and the order of search can be changed."
|
|
200 )
|
|
201
|
|
202 ;;;###skk-autoload
|
|
203 (defvar skk-initial-search-jisyo nil
|
|
204 "*$B%f!<%6!<<-=q$N8!:w$NA0$K8!:w$9$k<-=q!#(B
|
|
205 $B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B
|
|
206 Non-nil $B$G!"$+$D(B skk-search-prog-list $B$NMWAG$NCf$K$3$NJQ?t$,;HMQ$5$l$F$$$l$P!"(B
|
|
207 $B;XDj$5$l$?<-=q$r8!:w$N$?$a%P%C%U%!$KFI$_9~$_!"8!:w$r9T$J$&!#(B
|
|
208 skk-search-prog-list $B$NCM$r@_Dj$9$k$3$H$K$h$j!"8!:wBP>]$N<-=q$NJQ99!"8!:w$N=g(B
|
|
209 $B=x$NJQ99$,2DG=!#(B
|
|
210
|
|
211 This dictionary is searched before the user's personal dictionary.
|
|
212 The keys must be sorted.
|
|
213 If non-nil, and this variable is used as a component of
|
|
214 `skk-search-prog-list', the indicated dictionary is read into a
|
|
215 buffer and searched.
|
|
216 By setting the value of `skk-search-prog-list' the dictionaries
|
|
217 searched and the order of search can be changed."
|
|
218 )
|
|
219
|
|
220 ;;;###skk-autoload
|
|
221 (defvar skk-large-jisyo nil
|
|
222 "*$B%f!<%6!<<-=q$N8!:w$N8e$K8!:w$9$k<-=q!#(B
|
|
223 $B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B
|
|
224 Non-nil $B$G!"$+$D(B skk-search-prog-list $B$NMWAG$NCf$K$3$NJQ?t$,;HMQ$5$l$F$$$l$P!"(B
|
|
225 $B;XDj$5$l$?<-=q$r8!:w$N$?$a%P%C%U%!$KFI$_9~$_!"8!:w$r9T$J$&!#(B
|
|
226 skk-search-prog-list $B$NCM$r@_Dj$9$k$3$H$K$h$j!"8!:wBP>]$N<-=q$NJQ99!"8!:w$N=g(B
|
|
227 $B=x$NJQ99$,2DG=!#(B
|
|
228
|
|
229 Dictionary searched after the user dictionary.
|
|
230 Keys must be sorted.
|
|
231 If non-nil and this variable is used as a component of
|
|
232 `skk-search-prog-list', the indicated dictionary is read into a buffer
|
|
233 for search, and the search is executed.
|
|
234 By setting the value of `skk-search-prog-list' the dictionaries
|
|
235 searched and the order of search can be changed."
|
|
236 )
|
|
237
|
|
238 ;;;###skk-autoload
|
|
239 (defvar skk-aux-large-jisyo nil
|
|
240 "*SKK $B%5!<%P!<$G:G8e$K8!:w$9$k<-=q!#(B
|
|
241 $B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B
|
|
242 Non-nil $B$G!"$+$D(B skk-search-prog-list $B$NMWAG$NCf$K$3$NJQ?t$,;HMQ$5$l$F$$$l$P!"(B
|
|
243 SKK $B%5!<%P!<$r;H$$8!:w$r9T$&!#(B
|
|
244 SKK $B%5!<%P!<$,(B active $B$G$J$1$l$P!";XDj$5$l$?<-=q$r%P%C%U%!$KFI$_9~$`!#(B
|
|
245 skk-search-prog-list $B$NCM$r@_Dj$9$k$3$H$K$h$j!"8!:wBP>]$N<-=q$NJQ99!"8!:w$N=g(B
|
|
246 $B=x$NJQ99$,2DG=!#(B
|
|
247 $B$3$NCM$r@_Dj$9$k$3$H$K$h$j!"(Bskk-server.el $B$,(B autoload $B$5$l$k!#(B
|
|
248
|
|
249 Last dictionary to be searched by the SKK server.
|
|
250 Keys must be sorted.
|
|
251
|
|
252 If non-nil and this variable is used as a component of
|
|
253 `skk-search-prog-list', the SKK server is used to execute the search.
|
|
254 If the server is not active, the indicated dictionary is read into a
|
|
255 buffer for search, and the search is executed.
|
|
256 By setting the value of `skk-search-prog-list' the dictionaries
|
|
257 searched and the order of search can be changed.
|
|
258 According to the value of this variable the skkserv.el will be
|
|
259 autoloaded."
|
|
260 )
|
|
261
|
|
262 ;;;###skk-autoload
|
|
263 (defvar skk-search-prog-list
|
|
264 '((skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t)
|
|
265 (skk-search-jisyo-file skk-initial-search-jisyo 10000 t)
|
|
266 (skk-search-jisyo-file skk-jisyo 0 t)
|
|
267 ;; skk-auto.el $B$r%m!<%I$9$k$H2<5-$NMWAG$,%W%i%9$5$l$k!#(B
|
|
268 ;;(skk-okuri-search)
|
|
269 (skk-search-jisyo-file skk-large-jisyo 10000)
|
|
270 ;; skk-server.el $B$r%m!<%I$9$k$H2<5-$NMWAG$,%W%i%9$5$l$k!#(B
|
|
271 ;;(skk-search-server skk-aux-large-jisyo 10000)
|
|
272 ;; skk-server-host $B$b$7$/$O(B skk-servers-list $B$r;XDj$9$k$H!"(Bskk-server.el
|
|
273 ;; $B$,(B autoload $B$5$l$k!#(B
|
|
274 )
|
|
275 "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B
|
|
276 $BJQ49$7$?8uJd$rJV$9(B S $B<0$r%j%9%H$N7A$KI=5-$7$?$b$N!#(B
|
|
277 skk-search $B4X?t$,(B skk-search-prog-list $B$N(B car $B$+$i8eJ}8~$X=gHV$K(B S $B<0$NI>2A$r(B
|
|
278 $B9T$$JQ49$r9T$J$&!#(B
|
|
279
|
|
280 This list determines the search functions used and the dictionaries
|
|
281 searched.
|
|
282 A list of S-expressions returning conversion candidates.
|
|
283 The function `skk-search' performs conversions by evaluating each S-
|
|
284 expression in order, starting with the car of `skk-search-prog-list'."
|
|
285 )
|
|
286
|
|
287 ;;;###skk-autoload
|
|
288 (defvar skk-jisyo (if (eq system-type 'ms-dos) "~/_skk-jisyo" "~/.skk-jisyo")
|
|
289 "*SKK $B$N%f!<%6!<<-=q!#(B
|
|
290
|
|
291 SKK's dictionary of user-specified conversions." )
|
|
292
|
|
293 ;;;###skk-autoload
|
|
294 (defvar skk-backup-jisyo
|
|
295 (if (eq system-type 'ms-dos) "~/_skk-jisyo.BAK" "~/.skk-jisyo.BAK")
|
|
296 "*SKK $B$N%f!<%6!<<-=q$N%P%C%/%"%C%W%U%!%$%k!#(B
|
|
297
|
|
298 Name of user dictionary backup (a file name as a string)."
|
|
299 )
|
|
300
|
|
301 ;;;###skk-autoload
|
|
302 (defvar skk-jisyo-code nil
|
|
303 "*Non-nil $B$G$"$l$P!"$=$NCM$G<-=q%P%C%U%!$N4A;z%3!<%I$r@_Dj$9$k!#(B
|
|
304 Mule $B$G$O!"(B*euc-japan*, *sjis*, *junet*$B!#(B
|
|
305 $B$^$?!"(B\"euc\", \"ujis\", \"sjis\", \"jis\" $B$J$I$NJ8;zNs$K$h$C$F$b;XDj$,(B
|
|
306 $B2DG=!#(B
|
|
307
|
|
308 If non-nil, the value sets the kanji code used in dictionary buffers.
|
|
309 In Mule, the symbols *euc-japan*, *sjis*, or *junet*. Can also be
|
|
310 specified as a string such as \"euc\", \"ujis\", \"sjis\", or \"jis\"."
|
|
311 )
|
|
312
|
|
313 ;;;###skk-autoload
|
|
314 (defvar skk-keep-record t
|
|
315 "*Non-nil $B$G$"$l$P!"JQ49$K4X$9$k5-O?$r(B skk-record-file $B$K<h$k!#(B
|
|
316
|
|
317 If non-nil, a record of conversions is kept in `skk-record-file'.")
|
|
318
|
|
319 ;;;###skk-autoload
|
|
320 (defvar skk-record-file
|
|
321 (if (eq system-type 'ms-dos) "~/_skk-record" "~/.skk-record")
|
|
322 "*$B%f!<%6!<<-=q$NE}7W$r<h$k%U%!%$%k!#(B
|
|
323 $B<-=q%;!<%V$N;~9o!"C18l$NEPO??t!"3NDj$r9T$C$?2s?t!"3NDjN(!"A4BN$N8l?t$N(B
|
|
324 $B>pJs$r<}$a$k!#(B
|
|
325
|
|
326 File containing statistics about the user dictionary.
|
|
327
|
|
328 At the time the dictionary is saved, the number of words registered,
|
|
329 number of conversions accepted, rate of acceptance, and the total
|
|
330 number of words are collected." )
|
|
331
|
|
332 ;;;###skk-autoload
|
|
333 (defvar skk-kakutei-key "\C-j"
|
|
334 "*$B3NDjF0:n(B (\"skk-kakutei\") $B$r9T$&%-!<!#(B
|
|
335
|
|
336 The key that executes conversion confirmation (\"skk-kakutei\").")
|
|
337
|
|
338 ;;;###skk-autoload
|
|
339 (defvar skk-use-vip nil
|
|
340 "*Non-nil $B$G$"$l$P!"(BVIP $B$KBP1~$9$k!#(B
|
|
341
|
|
342 If non-nil, VIP compatibility mode." )
|
|
343
|
|
344 ;;;###skk-autoload
|
|
345 (defvar skk-use-viper nil
|
|
346 "*Non-nil $B$G$"$l$P!"(BVIPER $B$KBP1~$9$k!#!#(B
|
|
347
|
|
348 If non-nil, VIPER compatibility mode." )
|
|
349
|
|
350 ;;;###skk-autoload
|
|
351 (defvar skk-henkan-okuri-strictly nil
|
|
352 "*Non-nil $B$G$"$l$P!"8+=P$78l$HAw$j2>L>$,0lCW$7$?$H$-$@$18uJd$H$7$F=PNO$9$k!#(B
|
|
353 $BNc$($P!"2<5-$N$h$&$J<-=q%(%s%H%j$,!"(Bskk-jisyo \($B%W%i%$%Y!<%H<-=q(B\) $B$K$"$C$?>l9g$K(B
|
|
354
|
|
355 \"$B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/\"
|
|
356
|
|
357 \"$B"&$*$*(B*$B$/(B\" $B$rJQ49$7$?$H$-!"(B\"$BB?$/(B\" $B$N$_$r=PNO$7!"(B\"$BBg$/(B\" $B$r=PNO$7$J$$!#(B
|
|
358
|
|
359 SKK-JISYO.[SML] $B$NAw$j2>L>%(%s%H%j$O>e5-$N7A<0$K$J$C$F$$$J$$$N$G!"(Bskk-jisyo $B$N(B
|
|
360 $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(B
|
|
361 $B%s$r(B on $B$K$9$k$3$H$G!"$9$0$KC18lEPO?$KF~$C$F$7$^$&$N$GCm0U$9$k$3$H!#(B
|
|
362
|
|
363 skk-process-okuri-early $B$NCM$,(B nil $B$J$i$P>e5-$N7A<0$G(B skk-jisyo $B$,:n$i$l$k!#(B
|
|
364
|
|
365 Emacs 19 $B%Y!<%9$N(B Mule $B$J$i$P!"2<5-$N%U%)!<%`$rI>2A$9$k$3$H$G!"C18lEPO?$KF~$C(B
|
|
366 $B$?$H$-$@$10l;~E*$K$3$N%*%W%7%g%s$r(B nil $B$K$9$k$3$H$,$G$-$k!#(B
|
|
367
|
|
368 \(add-hook 'minibuffer-setup-hook
|
|
369 \(function
|
|
370 \(lambda \(\)
|
|
371 \(if \(and \(boundp 'skk-henkan-okuri-strictly\)
|
|
372 skk-henkan-okuri-strictly
|
|
373 \(not \(eq last-command 'skk-purge-from-jisyo\)\) \)
|
|
374 \(progn
|
|
375 \(setq skk-henkan-okuri-strictly nil\)
|
|
376 \(put 'skk-henkan-okuri-strictly 'temporary-nil t\) \)\)\)\)\)
|
|
377
|
|
378 \(add-hook 'minibuffer-exit-hook
|
|
379 \(function
|
|
380 \(lambda \(\)
|
|
381 \(if \(get 'skk-henkan-okuri-strictly 'temporary-nil\)
|
|
382 \(progn
|
|
383 \(put 'skk-henkan-okuri-strictly 'temporary-nil nil\)
|
|
384 \(setq skk-henkan-okuri-strictly t\) \)\)\)\)\)
|
|
385
|
|
386 $B$3$N%*%W%7%g%sMxMQ;~$O!"(Bskk-process-okuri-early $B$NCM$O(B nil $B$G$J$1$l$P$J$i$J$$(B
|
|
387 \($B%a%K%e!<%P!<(B $B$rMxMQ$7$F%+%9%?%^%$%:$7$?>l9g$O<+F0E*$KD4@0$5$l$k(B\)$B!#(B
|
|
388
|
|
389 If non-nil, only when the key and its inflected suffix are given
|
|
390 together in the dictionary will they be output as a candidate. For
|
|
391 example, if the following entry is in `skk-jisyo' (the provate
|
|
392 dictionary),
|
|
393
|
|
394 \"$B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/\"
|
|
395
|
|
396 then when converting \"$B"&$*$*(B*$B$/(B\", only \"$BB?$/(B\" wil be output; \"$BBg$/(B
|
|
397 \" will not be offered as a candidate.
|
|
398
|
|
399 The inflected suffixes in SKK-JISYO.[SML] are not given in the above
|
|
400 way, so if very few of the entries in skk-jisyo are given in that
|
|
401 form, then when this option is set `on', \"word registration mode\" will
|
|
402 be entered extremely often.
|
|
403
|
|
404 If the value of `skk-process-okuri-early' is `nil', new entries in
|
|
405 `skk-jisyo' will be created in the form above.
|
|
406
|
|
407 If using a Mule based on Emacs 19 or later, you can arrange for this
|
|
408 option to be temporarily set to `nil' by evaluating the following
|
|
409 form:
|
|
410
|
|
411 \(add-hook 'minibuffer-setup-hook
|
|
412 \(function
|
|
413 \(lambda \(\)
|
|
414 \(if \(and \(boundp 'skk-henkan-okuri-strictly\)
|
|
415 skk-henkan-okuri-strictly
|
|
416 \(not \(eq last-command 'skk-purge-from-jisyo\)\) \)
|
|
417 \(progn
|
|
418 \(setq skk-henkan-okuri-strictly nil\)
|
|
419 \(put 'skk-henkan-okuri-strictly 'temporary-nil t\) \)\)\)\)\)
|
|
420
|
|
421 \(add-hook 'minibuffer-exit-hook
|
|
422 \(function
|
|
423 \(lambda \(\)
|
|
424 \(if \(get 'skk-henkan-okuri-strictly 'temporary-nil\)
|
|
425 \(progn
|
|
426 \(put 'skk-henkan-okuri-strictly 'temporary-nil nil\)
|
|
427 \(setq skk-henkan-okuri-strictly t\) \)\)\)\)\)
|
|
428
|
|
429 When using this option, `skk-process-okuri-early' must be `nil'.
|
|
430 (When using customize from the menubar this will automatically
|
|
431 temporarily be set to `nil'.)" )
|
|
432
|
|
433 ;;;###skk-autoload
|
|
434 (defvar skk-henkan-strict-okuri-precedence nil
|
|
435 "*Non-nil $B$G$"$l$P!"8+=P$78l$HAw$j2>L>$,0lCW$7$?8uJd$rM%@h$7$FI=<($9$k!#(B
|
|
436 $BNc$($P!"2<5-$N$h$&$J<-=q%(%s%H%j$,!"(Bskk-jisyo \($B%W%i%$%Y!<%H<-=q(B\) $B$K$"$C$?>l9g$K(B
|
|
437
|
|
438 \"$B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/\"
|
|
439
|
|
440 \"$B"&$*$*(B*$B$/(B\" $B$rJQ49$7$?$H$-!"$^$:(B\"$BB?$/(B\" $B$r=PNO$7!"(B
|
|
441 $B<!$K(B \"$BBg$/(B\" $B$r=PNO$9$k!#(B
|
|
442
|
|
443 \"$BBg$/(B\"$B$J$I$N8uJd$O$&$C$H$&$7$$$,!"$9$0$KC18lEPO?$K$O$$$C$F$7$^$&$N$b(B
|
|
444 $B7y$J$R$H$K$*$9$9$a!#(B
|
|
445
|
|
446 $B$3$N%*%W%7%g%sMxMQ;~$O!"(Bskk-process-okuri-early $B$NCM$O(B nil $B$G$J$i$J$$!#(B
|
|
447 $B$^$?(B skk-henkan-okuri-strictly $B$,(B non-nil $B$N$H$-$O!"$3$NJQ?t$OL5;k$5$l$k!#(B
|
|
448 \($B%a%K%e!<%P!<(B $B$rMxMQ$7$F%+%9%?%^%$%:$7$?>l9g$O<+F0E*$KD4@0$5$l$k(B\)$B!#(B")
|
|
449
|
|
450 ;;;###skk-autoload
|
|
451 (defvar skk-auto-okuri-process nil
|
|
452 "*Non-nil $B$G$"$l$P!"Aw$j2>L>ItJ,$r<+F0G'<1$7$FJQ49$r9T$&!#(B
|
|
453 $BNc$($P!"(B
|
|
454
|
|
455 \"Uresii (\"UreSii\" $B$G$O$J$/(B) -> $B4r$7$$(B\"
|
|
456
|
|
457 $B$N$h$&$KJQ49$5$l$k!#C"$7!"(Bskk-jisyo $B<-=q(B \($B%W%i%$%Y!<%H<-=q(B\) $B$,!"(B
|
|
458
|
|
459 \"$B$&$l(Bs /$B4r(B/[$B$7(B/$B4r(B/]/\"
|
|
460
|
|
461 $B$N$h$&$J7A<0$K$J$C$F$$$k$3$H$,I,MW$G$"$k(B \(SKK-JISYO.[SML] $B$O$3$N7A<0$KBP1~$7(B
|
|
462 $B$F$$$J$$$N$G!"(Bskk-jisyo $B$K$3$N%(%s%H%j$,$J$1$l$P$J$i$J$$(B\)$B!#(B
|
|
463
|
|
464 $B$3$N%*%W%7%g%sMxMQ;~$O!"(Bskk-process-okuri-early $B$NCM$O(B nil $B$G$J$1$l$P$J$i$J$$(B
|
|
465 \($B%a%K%e!<%P!<(B $B$rMxMQ$7$F%+%9%?%^%$%:$7$?>l9g$O<+F0E*$KD4@0$5$l$k(B\)$B!#(B" )
|
|
466
|
|
467 ;;;###skk-autoload
|
|
468 (defvar skk-process-okuri-early nil
|
|
469 "*Non-nil $B$G$"$l$P!"Aw$j2>L>$N%m!<%^;z%W%l%U%#%C%/%9$NF~NO;~E@$GJQ49$r3+;O$9$k!#(B
|
|
470 $BNc$($P!"(B
|
|
471
|
|
472 \"UgoK -> $B"'F0(Bk\"$B!#(B
|
|
473
|
|
474 $BAw$j2>L>$,J,$i$J$$$^$^JQ49$7$F$$$k$3$H$K$J$k$N$G!"(Bskk-jisyo $B$,Aw$j2>L>$KBP1~$7(B
|
|
475 $B$?7A$K@.D9$7$J$$!#$D$^$j(B
|
|
476
|
|
477 \"$B$&$4(Bk /$BF0(B/\"
|
|
478
|
|
479 $B$N$h$&$J7ABV$N$^$^$H$J$k!#$?$@$7!"4{$K(B
|
|
480
|
|
481 \"$B$&$4(Bk /$BF0(B/[$B$/(B/$BF0(B/]/[$B$+(B/$BF0(B/]/[$B$1(B/$BF0(B/]/[$B$-(B/$BF0(B/]/[$B$3(B/$BF0(B/]/\"
|
|
482
|
|
483 $B$N$h$&$J%(%s%H%j$,(B skk-jisyo $B$K$"$l$P!"$=$l$rGK2u$7$J$$!#(B
|
|
484
|
|
485 nil $B$G$"$l$P!"Aw$j2>L>$NF~NO$,40N;$7$?;~E@$GJQ49$,3+;O$9$k!#Nc$($P!"(B
|
|
486
|
|
487 \"UgoK -> $B"&$&$4(B*k\", \"UgoKu -> $B"'F0$/(B\"
|
|
488
|
|
489 $B$3$N%*%W%7%g%s$r(B on $B$K$7$F(B skk-mode $B$r5/F0$9$k$H!"N>N)$G$-$J$$%*%W%7%g%s$G$"$k(B
|
|
490 skk-kakutei-early, skk-auto-okuri-process, skk-henkan-okuri-strictly $B$O(B nil $B$K(B
|
|
491 $B%;%C%H$5$l$k!#(B" )
|
|
492
|
|
493 ;;;###skk-autoload
|
|
494 (defvar skk-egg-like-newline nil
|
|
495 "*Non-nil $B$G$"$l$P!""'%b!<%I$G2~9T$r%?%$%W$7$F$b3NDj$9$k$N$_$G2~9T$7$J$$!#(B" )
|
|
496
|
|
497 ;;;###skk-autoload
|
|
498 (defvar skk-kakutei-early t
|
|
499 "*Non-nil $B$G$"$l$P(B skk-kana-input $B$,8F$P$l$?$H$-$K8=:_$N8uJd$r3NDj$9$k!#(B
|
|
500 $BNc$($P!"(B
|
|
501
|
|
502 \"$B"&$+$/$F$$(B -> $B"'3NDj(B -> $B3NDj(Bs -> $B3NDj$9(B\"
|
|
503
|
|
504 $B$N$h$&$KJQ498e!"!V$9!W$N(B prefix $B$G$"$k(B \"s\" $B$rF~NO$7$?;~E@$G3NDj$9$k!#(B
|
|
505 nil $B$G$"$l$P!"Nc$($P(B
|
|
506
|
|
507 \"$B"&$+$/$F$$(B -> $B"'3NDj(B -> $B"'3NDj(Bs -> $B"'3NDj$9$k(B -> $B3NDj$9$k!#(B\"
|
|
508
|
|
509 $B$N$h$&$K(B skk-kakutei $B$rD>@\!"4V@\$K%3!<%k$9$k$^$G(B \($B6gFIE@$rF~NO$7$?$j!"?7$?$J(B
|
|
510 $B"&%b!<%I$KF~$C$?$j$9$k$H4V@\E*$K(B skk-kakutei $B$r%3!<%k$9$k(B\) $B$O!"3NDj$7$J$$$N$G!"(B
|
|
511 $B$=$N4V$O!"JQ498uJd$rA*$S$J$*$9$3$H$J$I$,2DG=!#(B
|
|
512
|
|
513 $B$3$N%*%W%7%g%sMxMQ;~$O!"(Bskk-process-okuri-early $B$NCM$O(B nil $B$G$J$1$l$P$J$i$J$$(B
|
|
514 \($B%a%K%e!<%P!<(B $B$rMxMQ$7$F%+%9%?%^%$%:$7$?>l9g$O<+F0E*$KD4@0$5$l$k(B\)$B!#(B" )
|
|
515
|
|
516 ;;;###skk-autoload
|
|
517 (defvar skk-delete-implies-kakutei t
|
|
518 "*Non-nil $B$G$"$l$P!""'%b!<%I$G(B BS $B$r2!$9$H!"A0$N0lJ8;z$r:o=|$73NDj$9$k!#(B
|
|
519 nil $B$G$"$l$P!"0l$DA0$N8uJd$rI=<($9$k!#(B")
|
|
520
|
|
521 ;;;###skk-autoload
|
|
522 (defvar skk-allow-spaces-newlines-and-tabs t
|
|
523 "*Non-nil $B$G$"$l$P!"(Bskk-henkan-key $B$K%9%Z!<%9!"%?%V!"2~9T$,$"$C$F$bJQ492DG=!#(B
|
|
524 $BNc$($P!"2<5-$N$h$&$K(B skk-henkan-key $B$NCf$K2~9T$,F~$C$F$$$F$bJQ49$,2DG=$G$"$k!#(B
|
|
525
|
|
526 \"$B"&$+(B
|
|
527 $B$J(B\"
|
|
528 -> \"$B2>L>(B\"
|
|
529
|
|
530 $B$3$NCM$,(B nil $B$G$"$l$P!":G=i$N%9%Z!<%9$G(B skk-henkan-key $B$r@Z$j5M$a$F$7$^$$!"(B
|
|
531 $B0J9_$N%9%Z!<%9!"%?%V!"2~9T$OL5;k$5$l$k!#(B
|
|
532 $B$3$NCM$O!"(Bskk-start-henkan, skk-ascii-henkan, skk-katakana-henkan,
|
|
533 skk-hiragana-henkan, skk-zenkaku-henkan $B5Z$S(B skk-backward-and-set-henkan-point
|
|
534 $B$NF0:n$K1F6A$9$k!#(B")
|
|
535
|
|
536 ;;;###skk-autoload
|
|
537 (defvar skk-convert-okurigana-into-katakana nil
|
|
538 "*Non-nil $B$G$"$l$P!"%+%?%+%J%b!<%I$GJQ49$7$?$H$-$KAw$j2>L>$b%+%?%+%J$KJQ49$9$k!#(B" )
|
|
539
|
|
540 ;;;###skk-autoload
|
|
541 (defvar skk-delete-okuri-when-quit nil
|
|
542 "*Non-nil $B$G$"$l$P!"Aw$j$"$j$NJQ49Cf$K(B \"C-g\" $B$r2!$9$HAw$j2>L>$r>C$7"&%b!<%I$KF~$k!#(B
|
|
543 $BNc$($P!"(B
|
|
544
|
|
545 \"$B"&$J(B*$B$/(B -> $B"'5c$/(B -> \"C-g\" ->$B"&$J(B\"
|
|
546
|
|
547 nil $B$G$"$l$P!"Aw$j2>L>$r4^$a$?8+=P$78l$r$=$N$^$^;D$7!""#%b!<%I$KF~$k!#Nc$($P!"(B
|
|
548
|
|
549 \"$B"&$J(B*$B$/(B -> $B"'5c$/(B -> \"C-g\" -> $B$J$/(B\"" )
|
|
550
|
|
551 ;;;###skk-autoload
|
|
552 (defvar skk-henkan-show-candidates-keys '(?a ?s ?d ?f ?j ?k ?l)
|
|
553 "*$B%a%K%e!<7A<0$G8uJd$rA*Br$9$k$H$-$NA*Br%-!<$N%j%9%H!#(B
|
|
554 \"x\", \" \" $B5Z$S(B \"C-g\" $B0J30$N(B 7 $B$D$N%-!<(B (char type) $B$r4^$`I,MW$,$"(B
|
|
555 $B$k!#(B\"x\", \" \" $B5Z$S(B \"C-g\" $B$O8uJdA*Br;~$K$=$l$>$lFCJL$J;E;v$K3d$jEv(B
|
|
556 $B$F$i$l$F$$$k$N$G!"$3$N%j%9%H$NCf$K$O4^$a$J$$$3$H!#(B")
|
|
557
|
|
558 ;;;###skk-autoload
|
|
559 (defvar skk-ascii-mode-string " SKK"
|
|
560 "*SKK $B$,(B ascii $B%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#(B" )
|
|
561
|
|
562 ;;;###skk-autoload
|
|
563 (defvar skk-hirakana-mode-string " $B$+$J(B"
|
|
564 "*$B$R$i$,$J%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#(B")
|
|
565
|
|
566 ;;;###skk-autoload
|
|
567 (defvar skk-katakana-mode-string " $B%+%J(B"
|
|
568 "*$B%+%?%+%J%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#(B")
|
|
569
|
|
570 ;;;###skk-autoload
|
|
571 (defvar skk-zenkaku-mode-string " $BA41Q(B"
|
|
572 "*$BA41Q%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#(B")
|
|
573
|
|
574 ;;;###skk-autoload
|
|
575 (defvar skk-abbrev-mode-string " a$B$"(B"
|
|
576 "*SKK abbrev $B%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#(B")
|
|
577
|
|
578 ;;;###skk-autoload
|
|
579 (defvar skk-echo t
|
|
580 "*Non-nil $B$G$"$l$P!"2>L>J8;z$N%W%l%U%#%C%/%9$rI=<($9$k!#(B" )
|
|
581
|
|
582 ;;;###skk-autoload
|
|
583 (defvar skk-use-numeric-conversion t
|
|
584 "*Non-nil $B$G$"$l$P!"?tCMJQ49$r9T$&!#(B" )
|
|
585
|
|
586 ;;;###skk-autoload
|
|
587 (defvar skk-char-type-vector
|
|
588 [0 0 0 0 0 0 0 0
|
|
589 5 0 0 0 0 0 0 0
|
|
590 0 0 0 0 0 0 0 0
|
|
591 0 0 0 0 0 0 0 0
|
|
592 0 0 0 0 0 0 0 0
|
|
593 0 0 0 0 0 0 0 0
|
|
594 0 0 0 0 0 0 0 0
|
|
595 0 0 0 0 0 0 0 0
|
|
596 0 4 4 4 4 4 4 4
|
|
597 4 4 4 4 0 4 4 4
|
|
598 4 0 4 4 4 4 4 4
|
|
599 0 4 4 0 0 0 0 0
|
|
600 0 3 1 1 1 3 1 1
|
|
601 1 3 1 1 0 1 2 3
|
|
602 1 0 1 1 1 3 1 1
|
|
603 2 1 1 0 0 0 0 5]
|
|
604 "*skk-kana-input $B$G;2>H$9$k$+$JJ8;zJQ49$N$?$a$N(B char type $B%Y%/%?!<!#(B
|
|
605 $B3FMWAG$N?t;z$N0UL#$O2<5-$NDL$j!#(B
|
|
606
|
|
607 0 $B%m!<%^J8;z$h$j$+$JJ8;z$X$NJQ49$rCf;_$9$k(B ($B8=:_$N$H$3$m;HMQ$7$F$$$J$$(B)$B!#(B
|
|
608 1 $BB%2;$N0lItJ,$H$J$jF@$k;R2;!#(B
|
|
609 2 $B>e5-(B 1 $B0J30$N;R2;(B (n, x)
|
|
610 3 $BJl2;(B
|
|
611 4 skk-mode $B$G!"(Bskk-set-henkan-point $B$K3d$jIU$1$i$l$F$$$kJ8;z!#(B
|
|
612 5 $B%W%l%U%#%C%/%9$r>C5n$9$k(B" )
|
|
613
|
|
614 ;;;###skk-autoload
|
|
615 (defvar skk-standard-rom-kana-rule-list
|
|
616 '(("b" "b" nil) ("by" "by" nil)
|
|
617 ("c" "c" nil) ("ch" "ch" nil) ("cy" "cy" nil)
|
|
618 ("d" "d" nil) ("dh" "dh" nil)
|
|
619 ("dy" "dy" nil)
|
|
620 ("f" "f" nil) ("fy" "fy" nil)
|
|
621 ("g" "g" nil) ("gy" "gy" nil)
|
|
622 ("h" "h" nil) ("hy" "hy" nil)
|
|
623 ("j" "j" nil) ("jy" "jy" nil)
|
|
624 ("k" "k" nil) ("ky" "ky" nil)
|
|
625 ("m" "m" nil) ("my" "my" nil)
|
|
626 ("n" "n" nil) ("ny" "ny" nil)
|
|
627 ("p" "p" nil) ("py" "py" nil)
|
|
628 ("r" "r" nil) ("ry" "ry" nil)
|
|
629 ("s" "s" nil) ("sh" "sh" nil)
|
|
630 ("sy" "sy" nil)
|
|
631 ("t" "t" nil) ("th" "th" nil)
|
|
632 ("ts" "ts" nil) ("ty" "ty" nil)
|
|
633 ("v" "v" nil) ("w" "w" nil)
|
|
634 ("x" "x" nil) ("xk" "xk" nil) ("xt" "xt" nil)
|
|
635 ("xw" "xw" nil) ("xy" "xy" nil)
|
|
636 ("y" "y" nil)
|
|
637 ("z" "z" nil) ("zy" "zy" nil)
|
|
638
|
|
639 ("bb" "b" ("$B%C(B" . "$B$C(B"))
|
|
640 ("cc" "c" ("$B%C(B" . "$B$C(B"))
|
|
641 ("dd" "d" ("$B%C(B" . "$B$C(B"))
|
|
642 ("ff" "f" ("$B%C(B" . "$B$C(B"))
|
|
643 ("gg" "g" ("$B%C(B" . "$B$C(B"))
|
|
644 ("hh" "h" ("$B%C(B" . "$B$C(B"))
|
|
645 ("jj" "j" ("$B%C(B" . "$B$C(B"))
|
|
646 ("kk" "k" ("$B%C(B" . "$B$C(B"))
|
|
647 ("mm" "m" ("$B%C(B" . "$B$C(B"))
|
|
648 ;;("nn" "n" ("$B%C(B" . "$B$C(B"))
|
|
649 ("pp" "p" ("$B%C(B" . "$B$C(B"))
|
|
650 ("rr" "r" ("$B%C(B" . "$B$C(B"))
|
|
651 ("ss" "s" ("$B%C(B" . "$B$C(B"))
|
|
652 ("tt" "t" ("$B%C(B" . "$B$C(B"))
|
|
653 ("vv" "v" ("$B%C(B" . "$B$C(B"))
|
|
654 ("ww" "w" ("$B%C(B" . "$B$C(B"))
|
|
655 ("xx" "x" ("$B%C(B" . "$B$C(B"))
|
|
656 ("yy" "y" ("$B%C(B" . "$B$C(B"))
|
|
657 ("zz" "z" ("$B%C(B" . "$B$C(B"))
|
|
658
|
|
659 ("a" nil ("$B%"(B" . "$B$"(B"))
|
|
660 ("ba" nil ("$B%P(B" . "$B$P(B")) ("bya" nil ("$B%S%c(B" . "$B$S$c(B"))
|
|
661 ("cha" nil ("$B%A%c(B" . "$B$A$c(B")) ("cya" nil ("$B%A%c(B" . "$B$A$c(B"))
|
|
662 ("da" nil ("$B%@(B" . "$B$@(B")) ("dha" nil ("$B%G%c(B" . "$B$G$c(B"))
|
|
663 ("dya" nil ("$B%B%c(B" . "$B$B$c(B"))
|
|
664 ("fa" nil ("$B%U%!(B" . "$B$U$!(B")) ("fya" nil ("$B%U%c(B" . "$B$U$c(B"))
|
|
665 ("ga" nil ("$B%,(B" . "$B$,(B")) ("gya" nil ("$B%.%c(B" . "$B$.$c(B"))
|
|
666 ("ha" nil ("$B%O(B" . "$B$O(B")) ("hya" nil ("$B%R%c(B" . "$B$R$c(B"))
|
|
667 ("ja" nil ("$B%8%c(B" . "$B$8$c(B")) ("jya" nil ("$B%8%c(B" . "$B$8$c(B"))
|
|
668 ("ka" nil ("$B%+(B" . "$B$+(B")) ("kya" nil ("$B%-%c(B" . "$B$-$c(B"))
|
|
669 ("ma" nil ("$B%^(B" . "$B$^(B")) ("mya" nil ("$B%_%c(B" . "$B$_$c(B"))
|
|
670 ("na" nil ("$B%J(B" . "$B$J(B")) ("nya" nil ("$B%K%c(B" . "$B$K$c(B"))
|
|
671 ("pa" nil ("$B%Q(B" . "$B$Q(B")) ("pya" nil ("$B%T%c(B" . "$B$T$c(B"))
|
|
672 ("ra" nil ("$B%i(B" . "$B$i(B")) ("rya" nil ("$B%j%c(B" . "$B$j$c(B"))
|
|
673 ("sa" nil ("$B%5(B" . "$B$5(B")) ("sha" nil ("$B%7%c(B" . "$B$7$c(B"))
|
|
674 ("sya" nil ("$B%7%c(B" . "$B$7$c(B"))
|
|
675 ("ta" nil ("$B%?(B" . "$B$?(B")) ("tha" nil ("$B%F%!(B" . "$B$F$!(B"))
|
|
676 ("tya" nil ("$B%A%c(B" . "$B$A$c(B"))
|
|
677 ("va" nil ("$B%t%!(B" . "$B$&!+$!(B")) ("wa" nil ("$B%o(B" . "$B$o(B"))
|
|
678 ("xa" nil ("$B%!(B" . "$B$!(B")) ("xka" nil ("$B%u(B" . "$B$+(B"))
|
|
679 ("xwa" nil ("$B%n(B" . "$B$n(B")) ("xya" nil ("$B%c(B" . "$B$c(B"))
|
|
680 ("ya" nil ("$B%d(B" . "$B$d(B"))
|
|
681 ("za" nil ("$B%6(B" . "$B$6(B")) ("zya" nil ("$B%8%c(B" . "$B$8$c(B"))
|
|
682
|
|
683 ("i" nil ("$B%$(B" . "$B$$(B"))
|
|
684 ("bi" nil ("$B%S(B" . "$B$S(B")) ("byi" nil ("$B%S%#(B" . "$B$S$#(B"))
|
|
685 ("chi" nil ("$B%A(B" . "$B$A(B")) ("cyi" nil ("$B%A%#(B" . "$B$A$#(B"))
|
|
686 ("di" nil ("$B%B(B" . "$B$B(B")) ("dhi" nil ("$B%G%#(B" . "$B$G$#(B"))
|
|
687 ("dyi" nil ("$B%B%#(B" . "$B$B$#(B"))
|
|
688 ("fi" nil ("$B%U%#(B" . "$B$U$#(B")) ("fyi" nil ("$B%U%#(B" . "$B$U$#(B"))
|
|
689 ("gi" nil ("$B%.(B" . "$B$.(B")) ("gyi" nil ("$B%.%#(B" . "$B$.$#(B"))
|
|
690 ("hi" nil ("$B%R(B" . "$B$R(B")) ("hyi" nil ("$B%R%#(B" . "$B$R$#(B"))
|
|
691 ("ji" nil ("$B%8(B" . "$B$8(B")) ("jyi" nil ("$B%8%#(B" . "$B$8$#(B"))
|
|
692 ("ki" nil ("$B%-(B" . "$B$-(B")) ("kyi" nil ("$B%-%#(B" . "$B$-$#(B"))
|
|
693 ("mi" nil ("$B%_(B" . "$B$_(B")) ("myi" nil ("$B%_%#(B" . "$B$_$#(B"))
|
|
694 ("ni" nil ("$B%K(B" . "$B$K(B")) ("nyi" nil ("$B%K%#(B" . "$B$K$#(B"))
|
|
695 ("pi" nil ("$B%T(B" . "$B$T(B")) ("pyi" nil ("$B%T%#(B" . "$B$T$#(B"))
|
|
696 ("ri" nil ("$B%j(B" . "$B$j(B")) ("ryi" nil ("$B%j%#(B" . "$B$j$#(B"))
|
|
697 ("si" nil ("$B%7(B" . "$B$7(B")) ("shi" nil ("$B%7(B" . "$B$7(B"))
|
|
698 ("syi" nil ("$B%7%#(B" . "$B$7$#(B"))
|
|
699 ("ti" nil ("$B%A(B" . "$B$A(B")) ("thi" nil ("$B%F%#(B" . "$B$F$#(B"))
|
|
700 ("tyi" nil ("$B%A%#(B" . "$B$A$#(B"))
|
|
701 ("vi" nil ("$B%t%#(B" . "$B$&!+$#(B")) ("wi" nil ("$B%&%#(B" . "$B$&$#(B"))
|
|
702 ("xi" nil ("$B%#(B" . "$B$#(B")) ("xwi" nil ("$B%p(B" . "$B$p(B"))
|
|
703 ("zi" nil ("$B%8(B" . "$B$8(B")) ("zyi" nil ("$B%8%#(B" . "$B$8$#(B"))
|
|
704
|
|
705 ("u" nil ("$B%&(B" . "$B$&(B"))
|
|
706 ("bu" nil ("$B%V(B" . "$B$V(B")) ("byu" nil ("$B%S%e(B" . "$B$S$e(B"))
|
|
707 ("chu" nil ("$B%A%e(B" . "$B$A$e(B")) ("cyu" nil ("$B%A%e(B" . "$B$A$e(B"))
|
|
708 ("du" nil ("$B%E(B" . "$B$E(B")) ("dhu" nil ("$B%G%e(B" . "$B$G$e(B"))
|
|
709 ("dyu" nil ("$B%B%e(B" . "$B$B$e(B"))
|
|
710 ("fu" nil ("$B%U(B" . "$B$U(B")) ("fyu" nil ("$B%U%e(B" . "$B$U$e(B"))
|
|
711 ("gu" nil ("$B%0(B" . "$B$0(B")) ("gyu" nil ("$B%.%e(B" . "$B$.$e(B"))
|
|
712 ("hu" nil ("$B%U(B" . "$B$U(B")) ("hyu" nil ("$B%R%e(B" . "$B$R$e(B"))
|
|
713 ("ju" nil ("$B%8%e(B" . "$B$8$e(B")) ("jyu" nil ("$B%8%e(B" . "$B$8$e(B"))
|
|
714 ("ku" nil ("$B%/(B" . "$B$/(B")) ("kyu" nil ("$B%-%e(B" . "$B$-$e(B"))
|
|
715 ("mu" nil ("$B%`(B" . "$B$`(B")) ("myu" nil ("$B%_%e(B" . "$B$_$e(B"))
|
|
716 ("nu" nil ("$B%L(B" . "$B$L(B")) ("nyu" nil ("$B%K%e(B" . "$B$K$e(B"))
|
|
717 ("pu" nil ("$B%W(B" . "$B$W(B")) ("pyu" nil ("$B%T%e(B" . "$B$T$e(B"))
|
|
718 ("ru" nil ("$B%k(B" . "$B$k(B")) ("ryu" nil ("$B%j%e(B" . "$B$j$e(B"))
|
|
719 ("su" nil ("$B%9(B" . "$B$9(B")) ("shu" nil ("$B%7%e(B" . "$B$7$e(B"))
|
|
720 ("syu" nil ("$B%7%e(B" . "$B$7$e(B"))
|
|
721 ("tu" nil ("$B%D(B" . "$B$D(B")) ("thu" nil ("$B%F%e(B" . "$B$F$e(B"))
|
|
722 ("tsu" nil ("$B%D(B" . "$B$D(B")) ("tyu" nil ("$B%A%e(B" . "$B$A$e(B"))
|
|
723 ("vu" nil ("$B%t(B" . "$B$&!+(B")) ("wu" nil ("$B%&(B" . "$B$&(B"))
|
|
724 ("xu" nil ("$B%%(B" . "$B$%(B")) ("xtu" nil ("$B%C(B" . "$B$C(B"))
|
|
725 ("xtsu" nil ("$B%C(B" . "$B$C(B")) ("xyu" nil ("$B%e(B" . "$B$e(B"))
|
|
726 ("yu" nil ("$B%f(B" . "$B$f(B"))
|
|
727 ("zu" nil ("$B%:(B" . "$B$:(B")) ("zyu" nil ("$B%8%e(B" . "$B$8$e(B"))
|
|
728
|
|
729 ("e" nil ("$B%((B" . "$B$((B"))
|
|
730 ("be" nil ("$B%Y(B" . "$B$Y(B")) ("bye" nil ("$B%S%'(B" . "$B$S$'(B"))
|
|
731 ("che" nil ("$B%A%'(B" . "$B$A$'(B")) ("cye" nil ("$B%A%'(B" . "$B$A$'(B"))
|
|
732 ("de" nil ("$B%G(B" . "$B$G(B")) ("dhe" nil ("$B%G%'(B" . "$B$G$'(B"))
|
|
733 ("dye" nil ("$B%B%'(B" . "$B$B$'(B"))
|
|
734 ("fe" nil ("$B%U%'(B" . "$B$U$'(B")) ("fye" nil ("$B%U%'(B" . "$B$U$'(B"))
|
|
735 ("ge" nil ("$B%2(B" . "$B$2(B")) ("gye" nil ("$B%.%'(B" . "$B$.$'(B"))
|
|
736 ("he" nil ("$B%X(B" . "$B$X(B")) ("hye" nil ("$B%R%'(B" . "$B$R$'(B"))
|
|
737 ("je" nil ("$B%8%'(B" . "$B$8$'(B")) ("jye" nil ("$B%8%'(B" . "$B$8$'(B"))
|
|
738 ("ke" nil ("$B%1(B" . "$B$1(B")) ("kye" nil ("$B%-%'(B" . "$B$-$'(B"))
|
|
739 ("me" nil ("$B%a(B" . "$B$a(B")) ("mye" nil ("$B%_%'(B" . "$B$_$'(B"))
|
|
740 ("ne" nil ("$B%M(B" . "$B$M(B")) ("nye" nil ("$B%K%'(B" . "$B$K$'(B"))
|
|
741 ("pe" nil ("$B%Z(B" . "$B$Z(B")) ("pye" nil ("$B%T%'(B" . "$B$T$'(B"))
|
|
742 ("re" nil ("$B%l(B" . "$B$l(B")) ("rye" nil ("$B%j%'(B" . "$B$j$'(B"))
|
|
743 ("se" nil ("$B%;(B" . "$B$;(B")) ("she" nil ("$B%7%'(B" . "$B$7$'(B"))
|
|
744 ("sye" nil ("$B%7%'(B" . "$B$7$'(B"))
|
|
745 ("te" nil ("$B%F(B" . "$B$F(B")) ("the" nil ("$B%F%'(B" . "$B$F$'(B"))
|
|
746 ("tye" nil ("$B%A%'(B" . "$B$A$'(B"))
|
|
747 ("ve" nil ("$B%t%'(B" . "$B$&!+$'(B")) ("we" nil ("$B%&%'(B" . "$B$&$'(B"))
|
|
748 ("xe" nil ("$B%'(B" . "$B$'(B")) ("xke" nil ("$B%v(B" . "$B$1(B"))
|
|
749 ("xwe" nil ("$B%q(B" . "$B$q(B"))
|
|
750 ("ye" nil ("$B%$%'(B" . "$B$$$'(B"))
|
|
751 ("ze" nil ("$B%<(B" . "$B$<(B")) ("zye" nil ("$B%8%'(B" . "$B$8$'(B"))
|
|
752
|
|
753 ("o" nil ("$B%*(B" . "$B$*(B"))
|
|
754 ("bo" nil ("$B%\(B" . "$B$\(B")) ("byo" nil ("$B%S%g(B" . "$B$S$g(B"))
|
|
755 ("cho" nil ("$B%A%g(B" . "$B$A$g(B")) ("cyo" nil ("$B%A%g(B" . "$B$A$g(B"))
|
|
756 ("do" nil ("$B%I(B" . "$B$I(B")) ("dho" nil ("$B%G%g(B" . "$B$G$g(B"))
|
|
757 ("dyo" nil ("$B%B%g(B" . "$B$B$g(B"))
|
|
758 ("fo" nil ("$B%U%)(B" . "$B$U$)(B")) ("fyo" nil ("$B%U%g(B" . "$B$U$g(B"))
|
|
759 ("go" nil ("$B%4(B" . "$B$4(B")) ("gyo" nil ("$B%.%g(B" . "$B$.$g(B"))
|
|
760 ("ho" nil ("$B%[(B" . "$B$[(B")) ("hyo" nil ("$B%R%g(B" . "$B$R$g(B"))
|
|
761 ("jo" nil ("$B%8%g(B" . "$B$8$g(B")) ("jyo" nil ("$B%8%g(B" . "$B$8$g(B"))
|
|
762 ("ko" nil ("$B%3(B" . "$B$3(B")) ("kyo" nil ("$B%-%g(B" . "$B$-$g(B"))
|
|
763 ("mo" nil ("$B%b(B" . "$B$b(B")) ("myo" nil ("$B%_%g(B" . "$B$_$g(B"))
|
|
764 ("no" nil ("$B%N(B" . "$B$N(B")) ("nyo" nil ("$B%K%g(B" . "$B$K$g(B"))
|
|
765 ("po" nil ("$B%](B" . "$B$](B")) ("pyo" nil ("$B%T%g(B" . "$B$T$g(B"))
|
|
766 ("ro" nil ("$B%m(B" . "$B$m(B")) ("ryo" nil ("$B%j%g(B" . "$B$j$g(B"))
|
|
767 ("so" nil ("$B%=(B" . "$B$=(B")) ("sho" nil ("$B%7%g(B" . "$B$7$g(B"))
|
|
768 ("syo" nil ("$B%7%g(B" . "$B$7$g(B"))
|
|
769 ("to" nil ("$B%H(B" . "$B$H(B")) ("tho" nil ("$B%F%g(B" . "$B$F$g(B"))
|
|
770 ("tyo" nil ("$B%A%g(B" . "$B$A$g(B"))
|
|
771 ("vo" nil ("$B%t%)(B" . "$B$&!+$)(B")) ("wo" nil ("$B%r(B" . "$B$r(B"))
|
|
772 ("xo" nil ("$B%)(B" . "$B$)(B")) ("xyo" nil ("$B%g(B" . "$B$g(B"))
|
|
773 ("yo" nil ("$B%h(B" . "$B$h(B"))
|
|
774 ("zo" nil ("$B%>(B" . "$B$>(B")) ("zyo" nil ("$B%8%g(B" . "$B$8$g(B"))
|
|
775
|
|
776 ("nn" nil ("$B%s(B" . "$B$s(B"))
|
|
777 ("n'" nil ("$B%s(B" . "$B$s(B"))
|
|
778
|
|
779 ("z/" nil ("$B!&(B" . "$B!&(B")) ("z," nil ("$B!E(B" . "$B!E(B"))
|
|
780 ("z." nil ("$B!D(B" . "$B!D(B")) ("z-" nil ("$B!A(B" . "$B!A(B"))
|
|
781 ("zh" nil ("$B"+(B" . "$B"+(B")) ("zj" nil ("$B"-(B" . "$B"-(B"))
|
|
782 ("zk" nil ("$B",(B" . "$B",(B")) ("zl" nil ("$B"*(B" . "$B"*(B"))
|
|
783 ("z[" nil ("$B!X(B" . "$B!X(B")) ("z]" nil ("$B!Y(B" . "$B!Y(B")) )
|
|
784 "SKK $B$NI8=`$N%m!<%^;z$+$JJQ49$N%*!<%H%^%H%s$N>uBVA+0\5,B'!#(B
|
|
785 $B%j%9%H$N3FMWAG$O!"(B\($B8=:_$N>uBV(B@$BF~NO(B $B<!$N>uBV(B $B=PNO(B\) \($BC"$7!"(B\"@\" $B$OO"@\(B\) $B$r0UL#(B
|
|
786 $B$9$k!#(B
|
|
787 $B%7%9%F%`MQ$J$N$G%+%9%?%^%$%:$K$O(B skk-rom-kana-rule-list $B$rMxMQ$7$F$/$@$5$$!#(B" )
|
|
788
|
|
789 ;;;###skk-autoload
|
|
790 (defvar skk-rom-kana-rule-list
|
|
791 nil
|
|
792 "*$B%m!<%^;z$+$JJQ49$N%*!<%H%^%H%s$N>uBVA+0\5,B'!#(B
|
|
793 $B%j%9%H$N3FMWAG$O!"(B\($B8=:_$N>uBV(B@$BF~NO(B $B<!$N>uBV(B $B=PNO(B\) \($BC"$7!"(B\"@\" $B$OO"@\(B\) $B$r0UL#(B
|
|
794 $B$9$k!#%+%9%?%^%$%:$K$O(B skk-standard-rom-kana-rule-list $B$G$OL5$/!"(B
|
|
795 $B$3$A$i$rMxMQ$7$F$/$@$5$$!#(B" )
|
|
796
|
|
797 ;;;###skk-autoload
|
|
798 (defvar skk-fallback-rule-alist
|
|
799 '(("n" "$B%s(B" . "$B$s(B"))
|
|
800 "*$B%m!<%^;z$+$JJQ49;~$K!"(Bskk-rom-kana-rule-list, skk-standard-rom-kana-rule-list $B$N(B
|
|
801 $B$"$H$K;2>H$5$l$k5,B'!#(B
|
|
802 $B%j%9%H$N3FMWAG$O!"(B\($B8=:_$N>uBV(B $B=PNO(B\) $B$r0UL#$9$k!#(B
|
|
803 $B$3$N5,B'$,E,MQ$5$l$?>l9g!"F~NO$O%9%H%j!<%`$KJV$5$l$k!#(B" )
|
|
804
|
|
805 ;;;###skk-autoload
|
|
806 (defvar skk-postfix-rule-alist
|
|
807 '(("oh" "$B%*(B" . "$B$*(B"))
|
|
808 "*$B%m!<%^;z$+$JJQ49;~$K!"D>A0$N$+$JJ8;z$r:n$k$N$KMQ$$$i$l$?:G8e$NF~NO$H(B
|
|
809 $B8=:_$NF~NO$+$i$+$JJ8;z$r:n$j$@$9$?$a$N5,B'!#(B
|
|
810 $B%j%9%H$N3FMWAG$O!"(B\($BD>A0$NF~NO(B@$BF~NO(B $B=PNO(B\) \($BC"$7!"(B\"@\" $B$OO"@\(B\) $B$r0UL#$9$k!#(B" )
|
|
811
|
|
812 ;;;###skk-autoload
|
|
813 (defvar skk-previous-candidate-char
|
|
814 ?x
|
|
815 "*skk-previous-candidate $B$r3dEv$F$?%-%c%i%/%?!#(B" )
|
|
816
|
|
817 ;;;###skk-autoload
|
|
818 (defvar skk-okuri-char-alist
|
|
819 nil
|
|
820 "*" )
|
|
821
|
|
822 ;;;###skk-autoload
|
|
823 (defvar skk-downcase-alist
|
|
824 nil
|
|
825 "*" )
|
|
826
|
|
827 ;;;###skk-autoload
|
|
828 (defvar skk-input-vector
|
|
829 [nil nil nil nil nil nil nil nil ;7
|
|
830 nil nil nil nil nil nil nil nil ;15
|
|
831 nil nil nil nil nil nil nil nil ;23
|
|
832 nil nil nil nil nil nil nil nil ;31
|
|
833 nil "$B!*(B" nil nil nil nil nil nil ;39
|
|
834 nil nil nil nil "$B!"(B" "$B!<(B" "$B!#(B" nil ;47
|
|
835 nil nil nil nil nil nil nil nil ;55
|
|
836 nil nil "$B!'(B" "$B!((B" nil nil nil "$B!)(B" ;63
|
|
837 nil nil nil nil nil nil nil nil ;71
|
|
838 nil nil nil nil nil nil nil nil ;79
|
|
839 nil nil nil nil nil nil nil nil ;87
|
|
840 nil nil nil "$B!V(B" nil "$B!W(B" nil nil ;95
|
|
841 nil nil nil nil nil nil nil nil ;103
|
|
842 nil nil nil nil nil nil nil nil ;111
|
|
843 nil nil nil nil nil nil nil nil ;119
|
|
844 nil nil nil nil nil nil nil nil] ;127
|
|
845 "*skk-self-insert $B$G;2>H$5$l$kJ8;z%F!<%V%k!#(B
|
|
846 $B%-!<$KBP1~$9$k0LCV$KJ8;zNs$,$"$l$P!"$R$i$,$J%b!<%I$b$7$/$O%+%?%+%J%b!<%I$G!"3:(B
|
|
847 $BEv$N%-!<$r2!$9$3$H$G!"BP1~$9$kJ8;z$,A^F~$5$l$k!#(B
|
|
848 $BNc$($P!"(B\"~\" $B%-!<$KBP1~$7$F!"(B\"$B!A(B\" $B$rA^F~$5$;$k$h$&$KJQ99$7$?$1$l$P!"(Bskk.el
|
|
849 $B$N%m!<%I8e(B ($B$b$7$/$O(B skk-load-hook $B$rMxMQ$7$F(B)$B!"(B
|
|
850
|
|
851 \(aset skk-input-vector 126 \"$B!A(B\"\)
|
|
852
|
|
853 $B$H$9$k$+!"$b$7$/$O!"(Bskk-input-vector $B$N(B 126 $BHVL\(B (0 $BHV$+$i?t$($F(B) $B$NCM$r(B
|
|
854 \"$B!A(B\" $B$H$9$k$h$&$J(B skk-input-vector $B$rD>@\=q$-!"(Bsetq $B$GBeF~$9$k(B \(126 $B$O!"(B?
|
|
855 { $B$rI>2A$7$?$H$-$NCM(B\)$B!#(B" )
|
|
856
|
|
857 ;;;###skk-autoload
|
|
858 (defvar skk-zenkaku-vector
|
|
859 [nil nil nil nil nil nil nil nil
|
|
860 nil nil nil nil nil nil nil nil
|
|
861 nil nil nil nil nil nil nil nil
|
|
862 nil nil nil nil nil nil nil nil
|
|
863 "$B!!(B" "$B!*(B" "$B!I(B" "$B!t(B" "$B!p(B" "$B!s(B" "$B!u(B" "$B!G(B"
|
|
864 "$B!J(B" "$B!K(B" "$B!v(B" "$B!\(B" "$B!$(B" "$B!](B" "$B!%(B" "$B!?(B"
|
|
865 "$B#0(B" "$B#1(B" "$B#2(B" "$B#3(B" "$B#4(B" "$B#5(B" "$B#6(B" "$B#7(B"
|
|
866 "$B#8(B" "$B#9(B" "$B!'(B" "$B!((B" "$B!c(B" "$B!a(B" "$B!d(B" "$B!)(B"
|
|
867 "$B!w(B" "$B#A(B" "$B#B(B" "$B#C(B" "$B#D(B" "$B#E(B" "$B#F(B" "$B#G(B"
|
|
868 "$B#H(B" "$B#I(B" "$B#J(B" "$B#K(B" "$B#L(B" "$B#M(B" "$B#N(B" "$B#O(B"
|
|
869 "$B#P(B" "$B#Q(B" "$B#R(B" "$B#S(B" "$B#T(B" "$B#U(B" "$B#V(B" "$B#W(B"
|
|
870 "$B#X(B" "$B#Y(B" "$B#Z(B" "$B!N(B" "$B!@(B" "$B!O(B" "$B!0(B" "$B!2(B"
|
|
871 "$B!F(B" "$B#a(B" "$B#b(B" "$B#c(B" "$B#d(B" "$B#e(B" "$B#f(B" "$B#g(B"
|
|
872 "$B#h(B" "$B#i(B" "$B#j(B" "$B#k(B" "$B#l(B" "$B#m(B" "$B#n(B" "$B#o(B"
|
|
873 "$B#p(B" "$B#q(B" "$B#r(B" "$B#s(B" "$B#t(B" "$B#u(B" "$B#v(B" "$B#w(B"
|
|
874 "$B#x(B" "$B#y(B" "$B#z(B" "$B!P(B" "$B!C(B" "$B!Q(B" "$B!A(B" nil]
|
|
875 "*skk-zenkaku-insert $B$G;2>H$5$l$kJ8;z%F!<%V%k!#(B
|
|
876 $B%-!<$KBP1~$9$k0LCV$KJ8;zNs$,$"$l$P!"A41Q%b!<%I$G3:Ev$N%-!<$r2!$9$3$H$G!"BP1~$9(B
|
|
877 $B$kJ8;z$,A^F~$5$l$k!#(B
|
|
878 $BCM$NJQ99J}K!$K$D$$$F$O!"(Bskk-input-vector $B$r;2>H$N$3$H!#(B" )
|
|
879
|
|
880 ;;;###skk-autoload
|
|
881 (defvar skk-use-face (or window-system (skk-terminal-face-p))
|
|
882 "*Non-nil $B$G$"$l$P!"(BEmacs 19 $B$N(B face $B$N5!G=$r;HMQ$7$FJQ49I=<($J$I$r9T$J$&!#(B" )
|
|
883
|
|
884 ;;;###skk-autoload
|
|
885 (defvar skk-henkan-face
|
|
886 (if (and (or window-system (skk-terminal-face-p))
|
|
887 (or (and (fboundp 'frame-face-alist)
|
|
888 (assq 'highlight (frame-face-alist (selected-frame))))
|
|
889 (and (fboundp 'face-list)
|
|
890 (memq 'highlight (face-list)))) )
|
|
891 'highlight )
|
|
892 "*$BJQ498uJd$N(B face $BB0@-!#(Bskk-use-face $B$,(B non-nil $B$N$H$-$N$_M-8z!#(B
|
|
893 Emacs $BI8=`%U%'%$%9$N(B default, modeline, region, secondary-selection,
|
|
894 highlight, underline, bold, italic, bold-italic $B$NB>!"?7$?$K(B face $B$r:n$j;XDj$9(B
|
|
895 $B$k$3$H$b2DG=!#(B
|
|
896 $B?7$?$J(B face $B$r:n$j;XDj$9$k$K$O(B skk-make-face $B$rMxMQ$7$F!"(B
|
|
897
|
|
898 \(skk-make-face 'DimGray/PeachPuff1\)
|
|
899 \(setq skk-henkan-face 'DimGray/PeachPuff1\)
|
|
900
|
|
901 $B$N$h$&$K$9$k$N$,<j7Z!#(Bforeground $B$H(B background $B$N?';XDj$@$1$G$J$$6E$C$?(B face
|
|
902 $B$r:n$k>l9g$O!"(Bskk-make-face $B$G$OBP1~$G$-$J$$$N$G!"(BEmacs $B$N(B hilit19.el $B$N(B
|
|
903 hilit-lookup-face-create $B$J$I$rMxMQ$9$k!#?'$rIU$1$k>l9g$NG[?'$O!"(Bcanna.el $B$N(B
|
|
904 canna:attribute-alist $B$,NI$$Nc$+$b$7$l$J$$!#(B" )
|
|
905
|
|
906 ;;;###skk-autoload
|
|
907 (defvar skk-use-color-cursor (and window-system
|
|
908 (fboundp 'x-display-color-p)
|
|
909 (x-display-color-p) )
|
|
910 "*Non-nil $B$G$"$l$P!"(BSKK $B%b!<%I$NF~NO%b!<%I$K1~$8$F%+!<%=%k$K?'$rIU$1$k!#(B")
|
|
911
|
|
912 (defvar skk-default-cursor-color
|
|
913 (if skk-xemacs
|
|
914 (frame-property (selected-frame) 'cursor-color)
|
|
915 (cdr (assq 'cursor-color (frame-parameters (selected-frame)))))
|
|
916 "*SKK $B$N%*%U$r<($9%+!<%=%k?'!#(B" )
|
|
917
|
|
918 ;; $BGX7J?'$r9u$K$7$F;HMQ$5$l$F$$$kJ}$G!"NI$$G[?'$,$"$l$P$*CN$i$;2<$5$$!#(B
|
|
919 ;;;###skk-autoload
|
|
920 (defvar skk-hirakana-cursor-color (if (eq skk-background-mode 'light)
|
|
921 "coral4"
|
|
922 "pink" )
|
|
923 "*$B$+$J%b!<%I$r<($9%+!<%=%k?'!#(B" )
|
|
924
|
|
925 ;;;###skk-autoload
|
|
926 (defvar skk-katakana-cursor-color (if (eq skk-background-mode 'light)
|
|
927 "forestgreen"
|
|
928 "green" )
|
|
929 "*$B%+%?%+%J%b!<%I$r<($9%+!<%=%k?'!#(B" )
|
|
930
|
|
931 ;;;###skk-autoload
|
|
932 (defvar skk-zenkaku-cursor-color "gold"
|
|
933 "*$BA43Q1Q;z%b!<%I$r<($9%+!<%=%k?'!#(B" )
|
|
934
|
|
935 ;;;###skk-autoload
|
|
936 (defvar skk-ascii-cursor-color (if (eq skk-background-mode 'light)
|
|
937 "ivory4"
|
|
938 "gray" )
|
|
939 "*$B%"%9%-!<%b!<%I$r<($9%+!<%=%k?'!#(B" )
|
|
940
|
|
941 ;;;###skk-autoload
|
|
942 (defvar skk-abbrev-cursor-color "royalblue"
|
|
943 "*$B%"%9%-!<%b!<%I$r<($9%+!<%=%k?'!#(B" )
|
|
944
|
|
945 ;;;###skk-autoload
|
|
946 (defvar skk-report-set-cursor-error t
|
|
947 "*Non-nil $B$G$"$l$P!"%+%i!<%^%C%W@Z$l$,5/$-$?>l9g!"%(%i!<%a%C%;!<%8$rI=<($9$k!#(B
|
|
948 nil $B$G$"$l$P!"I=<($7$J$$!#(B" )
|
|
949
|
|
950 ;;;###skk-autoload
|
|
951 (defvar skk-use-cursor-change t
|
|
952 "*Non-nil $B$G$"$l$P!"(BOvwrt $B%^%$%J!<%b!<%I;~$K%+!<%=%k$NI}$r=L$a$k!#(B" )
|
|
953
|
|
954 ;;;###skk-autoload
|
|
955 (defvar skk-auto-insert-paren nil
|
|
956 "*Non-nil $B$G$"$l$P!"(B2 $B$D$NJ8;zNs$r$^$H$a$FA^F~$7!"$=$NJ8;zNs$N4V$K%+!<%=%k$r0\F0$9$k!#(B
|
|
957 $BNc$($P!"(B\"$B!V(B\" $B$rF~NO$7$?$H$-$K(B \"$B!W(B\" $B$r<+F0E*$KA^F~$7!"N>$+$.$+$C$3$N4V$K(B
|
|
958 $B%+!<%=%k$r0\F0$9$k!#(B
|
|
959 $BA^F~$9$kJ8;zNs$O!"(Bskk-auto-paren-string-alist $B$G;XDj$9$k!#(B" )
|
|
960
|
|
961 ;;;###skk-autoload
|
|
962 (defvar skk-auto-paren-string-alist
|
|
963 '(("$B!V(B" . "$B!W(B") ("$B!X(B" . "$B!Y(B") ("(" . ")") ("$B!J(B" . "$B!K(B")
|
|
964 ("{" . "}")("$B!P(B" . "$B!Q(B") ("$B!R(B" . "$B!S(B") ("$B!T(B" . "$B!U(B")
|
|
965 ("[" . "]") ("$B!N(B" . "$B!O(B") ("$B!L(B" . "$B!M(B") ("$B!Z(B" . "$B![(B")
|
|
966 ("\"" . "\"")("$B!H(B" . "$B!I(B")
|
|
967 ;; skk-special-midashi-char-list $B$NMWAG$K$J$C$F$$$kJ8;z$O!"(B
|
|
968 ;; skk-auto-paren-string-alist $B$K4^$a$F$b:o=|$5$l$k!#(B
|
|
969 ;;("<" . ">")
|
|
970 )
|
|
971 "*$B<+F0E*$KBP$K$J$kJ8;zNs$rF~NO$9$k$?$a$NO"A[%j%9%H!#(B
|
|
972 car $B$NJ8;zNs$,A^F~$5$l$?$H$-$K(B cdr $B$NJ8;zNs$r<+F0E*$KA^F~$9$k!#(B" )
|
|
973
|
|
974 ;;;###skk-autoload
|
|
975 (defvar skk-japanese-message-and-error nil
|
|
976 "*Non-nil $B$G$"$l$P!"(BSKK $B$N%a%C%;!<%8$H%(%i!<$rF|K\8l$GI=<($9$k!#(B
|
|
977 nil $B$G$"$l$P!"1Q8l$GI=<($9$k!#(B" )
|
|
978
|
|
979 ;;;###skk-autoload
|
|
980 (defvar skk-ascii-mode-map nil "*ASCII $B%b!<%I$N%-!<%^%C%W!#(B" )
|
|
981 (or skk-ascii-mode-map
|
|
982 (let ((map (make-sparse-keymap)))
|
|
983 (define-key map skk-kakutei-key 'skk-kakutei)
|
|
984 (skk-define-menu-bar-map map)
|
|
985 (setq skk-ascii-mode-map map)))
|
|
986
|
|
987 ;;;###skk-autoload
|
|
988 (defvar skk-j-mode-map nil "*$B$+$J%b!<%I$N%-!<%^%C%W!#(B" )
|
|
989 (or skk-j-mode-map
|
|
990 (let ((map (make-sparse-keymap)))
|
|
991 (define-key map "!" 'skk-self-insert)
|
|
992 (define-key map "#" 'skk-self-insert)
|
|
993 (define-key map "$" 'skk-display-code-for-char-at-point)
|
|
994 (define-key map "%" 'skk-self-insert)
|
|
995 (define-key map "&" 'skk-self-insert)
|
|
996 (define-key map "'" 'skk-self-insert)
|
|
997 (define-key map "*" 'skk-self-insert)
|
|
998 (define-key map "+" 'skk-self-insert)
|
|
999 (define-key map "," 'skk-insert-comma)
|
|
1000 (define-key map "-" 'skk-self-insert)
|
|
1001 (define-key map "." 'skk-insert-period)
|
|
1002 (define-key map "/" 'skk-abbrev-mode)
|
|
1003 (define-key map "0" 'skk-self-insert)
|
|
1004 (define-key map "1" 'skk-self-insert)
|
|
1005 (define-key map "2" 'skk-self-insert)
|
|
1006 (define-key map "3" 'skk-self-insert)
|
|
1007 (define-key map "4" 'skk-self-insert)
|
|
1008 (define-key map "5" 'skk-self-insert)
|
|
1009 (define-key map "6" 'skk-self-insert)
|
|
1010 (define-key map "7" 'skk-self-insert)
|
|
1011 (define-key map "8" 'skk-self-insert)
|
|
1012 (define-key map "9" 'skk-self-insert)
|
|
1013 (define-key map ":" 'skk-self-insert)
|
|
1014 (define-key map ";" 'skk-self-insert)
|
|
1015 ;; "<", ">", "?" $B$N(B 3 $BJ8;z$O!"(Bskk-special-midashi-char-list $B$NCM$,%G%#%U%)%k(B
|
|
1016 ;; $B%H$N$^$^$G$"$l$P!"(Bskk-setup-special-midashi-char $B$K$h$j(B
|
|
1017 ;; skk-set-henkan-point $B$K:F3d$jIU$1$5$l$k$,!"@_Dj$K$h$j$3$l$i$NJ8;z$r;XDj$7(B
|
|
1018 ;; $B$J$$>l9g$O!"(Bskk-self-insert $B$H$7$FF0$/$N$,K>$^$7$$!#(B
|
|
1019 (define-key map "<" 'skk-self-insert)
|
|
1020 (define-key map "=" 'skk-self-insert)
|
|
1021 (define-key map ">" 'skk-self-insert)
|
|
1022 (define-key map "?" 'skk-self-insert)
|
|
1023 (define-key map "@" 'skk-today)
|
|
1024 (define-key map "A" 'skk-set-henkan-point)
|
|
1025 (define-key map "B" 'skk-set-henkan-point)
|
|
1026 (define-key map "C" 'skk-set-henkan-point)
|
|
1027 (define-key map "D" 'skk-set-henkan-point)
|
|
1028 (define-key map "E" 'skk-set-henkan-point)
|
|
1029 (define-key map "F" 'skk-set-henkan-point)
|
|
1030 (define-key map "G" 'skk-set-henkan-point)
|
|
1031 (define-key map "H" 'skk-set-henkan-point)
|
|
1032 (define-key map "I" 'skk-set-henkan-point)
|
|
1033 (define-key map "J" 'skk-set-henkan-point)
|
|
1034 (define-key map "K" 'skk-set-henkan-point)
|
|
1035 (define-key map "L" 'skk-zenkaku-mode)
|
|
1036 (define-key map "M" 'skk-set-henkan-point)
|
|
1037 (define-key map "N" 'skk-set-henkan-point)
|
|
1038 (define-key map "O" 'skk-set-henkan-point)
|
|
1039 (define-key map "P" 'skk-set-henkan-point)
|
|
1040 (define-key map "Q" 'skk-set-henkan-point-subr)
|
|
1041 (define-key map "R" 'skk-set-henkan-point)
|
|
1042 (define-key map "S" 'skk-set-henkan-point)
|
|
1043 (define-key map "T" 'skk-set-henkan-point)
|
|
1044 (define-key map "U" 'skk-set-henkan-point)
|
|
1045 (define-key map "V" 'skk-set-henkan-point)
|
|
1046 (define-key map "W" 'skk-set-henkan-point)
|
|
1047 (define-key map "X" 'skk-purge-from-jisyo)
|
|
1048 (define-key map "Y" 'skk-set-henkan-point)
|
|
1049 (define-key map "Z" 'skk-set-henkan-point)
|
|
1050 (define-key map "\ " 'skk-start-henkan)
|
|
1051 (define-key map "\"" 'skk-self-insert)
|
|
1052 (define-key map "\(" 'skk-self-insert)
|
|
1053 (define-key map "\)" 'skk-self-insert)
|
|
1054 ;;(define-key map "\177" 'skk-delete-backward-char)
|
|
1055 ;;(define-key map "\C-g" 'skk-keyboard-quit)
|
|
1056 ;;(define-key map "\C-m" 'skk-newline)
|
|
1057 (define-key map "\[" 'skk-self-insert)
|
|
1058 (define-key map "\\" 'skk-input-by-code-or-menu)
|
|
1059 (define-key map "\]" 'skk-self-insert)
|
|
1060 (or skk-use-vip
|
|
1061 (define-key map "\M-\ " 'skk-start-henkan-with-completion) )
|
|
1062 (or skk-use-vip
|
|
1063 (define-key map "\M-Q" 'skk-backward-and-set-henkan-point) )
|
|
1064 (define-key map "\t" 'skk-try-completion)
|
|
1065 (define-key map "\{" 'skk-self-insert)
|
|
1066 (define-key map "\}" 'skk-self-insert)
|
|
1067 (define-key map "^" 'skk-self-insert)
|
|
1068 (define-key map "_" 'skk-self-insert)
|
|
1069 (define-key map "`" 'skk-self-insert)
|
|
1070 (define-key map "a" 'skk-kana-input)
|
|
1071 (define-key map "b" 'skk-kana-input)
|
|
1072 (define-key map "c" 'skk-kana-input)
|
|
1073 (define-key map "d" 'skk-kana-input)
|
|
1074 (define-key map "e" 'skk-kana-input)
|
|
1075 (define-key map "f" 'skk-kana-input)
|
|
1076 (define-key map "g" 'skk-kana-input)
|
|
1077 (define-key map "h" 'skk-kana-input)
|
|
1078 (define-key map "i" 'skk-kana-input)
|
|
1079 (define-key map "j" 'skk-kana-input)
|
|
1080 (define-key map "k" 'skk-kana-input)
|
|
1081 (define-key map "l" 'skk-ascii-mode)
|
|
1082 (define-key map "m" 'skk-kana-input)
|
|
1083 (define-key map "n" 'skk-kana-input)
|
|
1084 (define-key map "o" 'skk-kana-input)
|
|
1085 (define-key map "p" 'skk-kana-input)
|
|
1086 (define-key map "q" 'skk-toggle-kana)
|
|
1087 (define-key map "r" 'skk-kana-input)
|
|
1088 (define-key map "s" 'skk-kana-input)
|
|
1089 (define-key map "t" 'skk-kana-input)
|
|
1090 (define-key map "u" 'skk-kana-input)
|
|
1091 (define-key map "v" 'skk-kana-input)
|
|
1092 (define-key map "w" 'skk-kana-input)
|
|
1093 (define-key map "x" 'skk-previous-candidate)
|
|
1094 (define-key map "y" 'skk-kana-input)
|
|
1095 (define-key map "z" 'skk-kana-input)
|
|
1096 (define-key map "|" 'skk-self-insert)
|
|
1097 (define-key map "~" 'skk-self-insert)
|
|
1098 (define-key map skk-kakutei-key 'skk-kakutei)
|
|
1099 (skk-define-menu-bar-map map)
|
|
1100 (setq skk-j-mode-map map)))
|
|
1101
|
|
1102 ;;;###skk-autoload
|
|
1103 (defvar skk-zenkaku-mode-map nil "*$BA43Q%b!<%I$N%-!<%^%C%W!#(B" )
|
|
1104 (or skk-zenkaku-mode-map
|
|
1105 (let ((map (make-sparse-keymap))
|
|
1106 (i 0) )
|
|
1107 (while (< i 128)
|
|
1108 (if (aref skk-zenkaku-vector i)
|
|
1109 (define-key map (char-to-string i) 'skk-zenkaku-insert) )
|
|
1110 (setq i (1+ i)) )
|
|
1111 (define-key map skk-kakutei-key 'skk-kakutei)
|
|
1112 (or skk-use-vip
|
|
1113 (define-key map "\M-Q" 'skk-backward-and-set-henkan-point) )
|
|
1114 (define-key map "\C-q" 'skk-ascii-henkan)
|
|
1115 (skk-define-menu-bar-map map)
|
|
1116 (setq skk-zenkaku-mode-map map)))
|
|
1117
|
|
1118 ;;;###skk-autoload
|
|
1119 (defvar skk-abbrev-mode-map nil "*SKK abbrev $B%b!<%I$N%-!<%^%C%W!#(B" )
|
|
1120 (or skk-abbrev-mode-map
|
|
1121 (let ((map (make-sparse-keymap)))
|
|
1122 (define-key map "," 'skk-abbrev-comma)
|
|
1123 (define-key map "." 'skk-abbrev-period)
|
|
1124 (define-key map "\ " 'skk-start-henkan)
|
|
1125 ;;(define-key map "\177" 'skk-delete-backward-char)
|
|
1126 ;;(define-key map "\C-g" 'skk-keyboard-quit)
|
|
1127 ;;(define-key map "\C-m" 'skk-newline)
|
|
1128 (define-key map "\C-q" 'skk-zenkaku-henkan)
|
|
1129 (or skk-use-vip
|
|
1130 (define-key map "\M-\ " 'skk-start-henkan-with-completion) )
|
|
1131 (define-key map "\t" 'skk-try-completion)
|
|
1132 (define-key map skk-kakutei-key 'skk-kakutei)
|
|
1133 (skk-define-menu-bar-map map)
|
|
1134 (setq skk-abbrev-mode-map map)))
|
|
1135
|
|
1136 ;;;###skk-autoload
|
|
1137 (defvar skk-jisyo-save-count 50
|
|
1138 "*$B?tCM$G$"$l$P!"$=$N2s?t<-=q$,99?7$5$l$?$H$-$K<-=q$r<+F0E*$K%;!<%V$9$k!#(B
|
|
1139 nil $B$G$"$l$P!"<-=q$N%*!<%H%;!<%V$r9T$J$o$J$$!#(B" )
|
|
1140
|
|
1141 ;;;###skk-autoload
|
|
1142 (defvar skk-byte-compile-init-file t
|
|
1143 "*Non-nil $B$G$"$l$P!"(Bskk-mode $B5/F0;~$K(B skk-init-file $B$r%P%$%H%3%s%Q%$%k$9$k!#(B
|
|
1144 $B@53N$K8@$&$H!"(B
|
|
1145
|
|
1146 (1)skk-init-file $B$r%P%$%H%3%s%Q%$%k$7$?%U%!%$%k$,$J$$$+!"(B
|
|
1147 (2)skk-init-file $B$H$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$rHf3S$7$F!"A0<T$NJ}$,?7$7(B
|
|
1148 $B$$$H$-(B
|
|
1149
|
|
1150 $B$K(B skk-init-file $B$r%P%$%H%3%s%Q%$%k$9$k!#(B
|
|
1151 nil $B$G$"$l$P!"(Bskk-init-file $B$H$=$N%P%$%H%3%s%Q%$%k:Q$_%U%!%$%k$rHf3S$7$F(B
|
|
1152 skk-init-file $B$NJ}$,?7$7$$$H$-$O!"$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$r>C$9!#(B" )
|
|
1153
|
|
1154 ;;;###skk-autoload
|
|
1155 (defvar skk-count-private-jisyo-candidates-exactly nil
|
|
1156 "*Non-nil $B$G$"$l$P!"(BEmacs $B$r=*N;$9$k$H$-$K@53N$K8D?M<-=q$N8uJd?t$r?t$($k!#(B
|
|
1157 nil $B$G$"$l$P!"(B1 $B9T$KJ#?t$N8uJd$,$"$C$F$b(B 1 $B8uJd$H$7$F?t$($k!#(B
|
|
1158 $B7W;;7k2L$O!"(Bskk-record-file $B$KJ]B8$5$l$k!#(B" )
|
|
1159
|
|
1160 ;;;###skk-autoload
|
|
1161 (defvar skk-compare-jisyo-size-when-saving t
|
|
1162 "*Non-nil $B$G$"$l$P!"(Bskk-jisyo $B$N%;!<%V;~$K%U%!%$%k%5%$%:$N%A%'%C%/$r9T$J$&!#(B
|
|
1163 $BA02s%;!<%V$7$?(B skk-jisyo $B$H:#2s%;!<%V$7$h$&$H$9$k<-=q$H$N%5%$%:Hf3S$r9T$J$$!"(B
|
|
1164 $B8e<T$NJ}$,Bg$-$$$H$-$K%f!<%6!<$K%;!<%V$rB3$1$k$+$I$&$+$N3NG'$r5a$a$k!#(B" )
|
|
1165
|
|
1166 ;;;###skk-autoload
|
|
1167 (defvar skk-auto-start-henkan t
|
|
1168 "$BC18l$dJ8@a$N6h@Z$j$r<($9J8;z$NBG80$K$h$j<+F0E*$KJQ49$r3+;O$9$k!#(B
|
|
1169 skk-auto-start-henkan-keyword-list $B$K$h$jC18l$dJ8@a$N6h@Z$j$r<($9J8;z$r;XDj$9$k!#(B" )
|
|
1170
|
|
1171 ;;;###skk-autoload
|
|
1172 (defvar skk-auto-start-henkan-keyword-list
|
|
1173 '("$B$r(B" "$B!"(B" "$B!#(B" "$B!%(B" "$B!$(B" "$B!)(B" "$B!W(B" "$B!*(B"
|
|
1174 "$B!((B" "$B!'(B" ")" ";" ":" "$B!K(B" "$B!I(B" "$B![(B" "$B!Y(B"
|
|
1175 "$B!U(B" "$B!S(B" "$B!Q(B" "$B!O(B" "$B!M(B" "}" "]" "?" "."
|
|
1176 "," "!" )
|
|
1177 ;; $B$"$^$j%-!<%o!<%I$,B?$/$J$k$H!"DL>o$NJQ49$r:$Fq$K$9$k!)(B
|
|
1178 "$B<+F0JQ49$r3+;O$9$k%-!<%o!<%I!#(B
|
|
1179 $B$3$N%j%9%H$NMWAG$NJ8;z$rA^F~$9$k$H!"(BSPC $B$r2!$9$3$H$J$/<+F0E*$KJQ49$r3+;O$9$k!#(B" )
|
|
1180
|
|
1181 ;;;###skk-autoload
|
|
1182 (defvar skk-search-excluding-word-pattern-function nil
|
|
1183 "*$B8D?M<-=q$K<h$j9~$^$J$$J8;zNs$N%Q%?!<%s$r8!:w$9$k4X?t$r;XDj$9$k!#(B
|
|
1184 $B3NDj$7$?J8;zNs$r0z?t$KEO$7$F(B funcall $B$5$l$k!#(B
|
|
1185
|
|
1186 SKK $B$G$OJQ49!"3NDj$r9T$J$C$?J8;zNs$OA4$F8D?M<-=q$K<h$j9~$^$l$k$,!"$3$NJQ?t$G;X(B
|
|
1187 $BDj$5$l$?4X?t$,(B non-nil $B$rJV$9$H$=$NJ8;zNs$O8D?M<-=q$K<h$j9~$^$l$J$$!#Nc$($P!"(B
|
|
1188 $B$3$NJQ?t$K2<5-$N$h$&$J;XDj$9$k$H!"(BSKK abbrev mode $B$G$NJQ49$r=|$-!"%+%?%+%J$N$_(B
|
|
1189 $B$+$i$J$kJ8;zNs$rJQ49$K$h$jF@$F3NDj$7$F$b!"$=$l$r8D?M<-=q$K<h$j9~$^$J$$!#(B
|
|
1190
|
|
1191 $B%+%?%+%J$rJQ49$K$h$j5a$a$?$$$,!"8D?M<-=q$K$O%+%?%+%J$N$_$N8uJd$r<h$j9~$_$?$/$J(B
|
|
1192 $B$$!"$J$I!"8D?M<-=q$,I,MW0J>e$KKD$l$k$N$rM^$($kL\E*$K;HMQ$G$-$k!#(B
|
|
1193
|
|
1194 $B8D?M<-=q$K<h$j9~$^$J$$J8;zNs$K$D$$$F$OJd40$,8z$+$J$$$N$G!"Cm0U$9$k$3$H!#(B
|
|
1195
|
|
1196 \(setq skk-search-excluding-word-pattern-function
|
|
1197 \(function
|
|
1198 \(lambda \(kakutei-word\)
|
|
1199 ;; $B$3$N4X?t$,(B t $B$rJV$7$?$H$-$O!"$=$NJ8;zNs$O8D?M<-=q$K<h$j9~$^$l$J$$!#(B
|
|
1200 \(save-match-data
|
|
1201 \(and
|
|
1202 ;; $BAw$j$J$7JQ49$G!"(B
|
|
1203 \(not skk-okuri-char\)
|
|
1204 ;; $B3NDj8l$,%+%?%+%J$N$_$+$i9=@.$5$l$F$$$F!"(B
|
|
1205 \(string-match \"^[$B!<%!(B-$B%s(B]+$\" kakutei-word\)
|
|
1206 ;; SKK abbrev mode $B0J30$G$NJQ49$+!"(B
|
|
1207 \(or \(not skk-abbrev-mode\)
|
|
1208 ;; $B8+=P$78l$,%+%?%+%J!"$R$i$,$J0J30$N$H$-!#(B
|
|
1209 ;; \($B8e$G"&%^!<%/$rIU$1$?$H$-$O!"8+=P$78l$,1QJ8;z$G$b!"(B
|
|
1210 ;; skk-abbrev-mode$B$,(B t $B$K$J$C$F$$$J$$(B\)$B!#(B
|
|
1211 \(not \(string-match \"^[^$B!<%!(B-$B%s$!(B-$B$s(B]+$\" skk-henkan-key\)\) \)\)\)\)\)\) ")
|
|
1212
|
|
1213 ;;; -- internal variables
|
|
1214 ;; ---- global variables
|
|
1215 (defconst skk-ml-address "skk-develop@kuis.kyoto-u.ac.jp")
|
|
1216
|
|
1217 (defconst skk-coding-system-alist
|
|
1218 (if (or skk-mule3 skk-xemacs)
|
|
1219 '(("euc" . euc-japan)
|
|
1220 ("ujis" . euc-japan)
|
|
1221 ("sjis". sjis)
|
|
1222 ("jis" . junet) )
|
|
1223 '(("euc" . *euc-japan*)
|
|
1224 ("ujis" . *euc-japan*)
|
|
1225 ("sjis". *sjis*)
|
|
1226 ("jis" . *junet*) ))
|
|
1227 "coding-system $B$NJ8;zNsI=8=$H!"%7%s%\%kI=8=$NO"A[%j%9%H!#(B" )
|
|
1228
|
|
1229 (defconst skk-default-zenkaku-vector
|
|
1230 ;; note that skk-zenkaku-vector is a user variable.
|
|
1231 ;; skk.el $B%m!<%IA0$K(B .emacs $B$J$I$G!"(Bskk-zenkaku-vector $B$NJL$NCM$r%f!<%6!<$,(B
|
|
1232 ;; $BD>@\=q$$$?$j!"(Bskk.el $B%m!<%I8e$K$3$NCM$r(B aset $B$GD>@\$$$8$C$?$j$7$J$1$l$P(B
|
|
1233 ;; default-value $B$G(B skk-zenkaku-vector $B$K%"%/%;%9$9$k$3$H$G(B
|
|
1234 ;; skk-default-zenkaku-vector $B$NCM$rJ];}$9$k$3$H$b$G$-$h$&$,!"$=$l$OK>$a$J(B
|
|
1235 ;; $B$$(B...$B!#(B
|
|
1236 [nil nil nil nil nil nil nil nil
|
|
1237 nil nil nil nil nil nil nil nil
|
|
1238 nil nil nil nil nil nil nil nil
|
|
1239 nil nil nil nil nil nil nil nil
|
|
1240 "$B!!(B" "$B!*(B" "$B!I(B" "$B!t(B" "$B!p(B" "$B!s(B" "$B!u(B" "$B!G(B"
|
|
1241 "$B!J(B" "$B!K(B" "$B!v(B" "$B!\(B" "$B!$(B" "$B!](B" "$B!%(B" "$B!?(B"
|
|
1242 "$B#0(B" "$B#1(B" "$B#2(B" "$B#3(B" "$B#4(B" "$B#5(B" "$B#6(B" "$B#7(B"
|
|
1243 "$B#8(B" "$B#9(B" "$B!'(B" "$B!((B" "$B!c(B" "$B!a(B" "$B!d(B" "$B!)(B"
|
|
1244 "$B!w(B" "$B#A(B" "$B#B(B" "$B#C(B" "$B#D(B" "$B#E(B" "$B#F(B" "$B#G(B"
|
|
1245 "$B#H(B" "$B#I(B" "$B#J(B" "$B#K(B" "$B#L(B" "$B#M(B" "$B#N(B" "$B#O(B"
|
|
1246 "$B#P(B" "$B#Q(B" "$B#R(B" "$B#S(B" "$B#T(B" "$B#U(B" "$B#V(B" "$B#W(B"
|
|
1247 "$B#X(B" "$B#Y(B" "$B#Z(B" "$B!N(B" "$B!@(B" "$B!O(B" "$B!0(B" "$B!2(B"
|
|
1248 "$B!F(B" "$B#a(B" "$B#b(B" "$B#c(B" "$B#d(B" "$B#e(B" "$B#f(B" "$B#g(B"
|
|
1249 "$B#h(B" "$B#i(B" "$B#j(B" "$B#k(B" "$B#l(B" "$B#m(B" "$B#n(B" "$B#o(B"
|
|
1250 "$B#p(B" "$B#q(B" "$B#r(B" "$B#s(B" "$B#t(B" "$B#u(B" "$B#v(B" "$B#w(B"
|
|
1251 "$B#x(B" "$B#y(B" "$B#z(B" "$B!P(B" "$B!C(B" "$B!Q(B" "$B!A(B" nil]
|
|
1252 "skk-zenkaku-region $B$G;2>H$9$kJ8;z%F!<%V%k!#(B
|
|
1253 \"ascii\" -> \"$B#a#s#c#i#i(B\" $B$N$h$&$JA43QJ8;z$X$NJQ49$r9T$&:]$KMxMQ$9$k!#(B" )
|
|
1254
|
|
1255 ;;;###skk-autoload
|
|
1256 (defconst skk-kanji-len (length "$B$"(B")
|
|
1257 "$B4A;z0lJ8;z$ND9$5!#(BMule $B$G$O(B 3 $B$K$J$k!#(BXEmacs $B$G$O(B 1$B!#(B" )
|
|
1258
|
|
1259 (defconst skk-hankaku-alist
|
|
1260 '((161 . 32) ; ?\
|
|
1261 (170 . 33) ;?\!
|
|
1262 (201 . 34) ;?\"
|
|
1263 (244 . 35) ;?\#
|
|
1264 (240 . 36) ;?\$
|
|
1265 (243 . 37) ;?\%
|
|
1266 (245 . 38) ;?\&
|
|
1267 (199 . 39) ;?\'
|
|
1268 (202 . 40) ;?\(
|
|
1269 (203 . 41) ;?\)
|
|
1270 (246 . 42) ;?\*
|
|
1271 (220 . 43) ;?\+
|
|
1272 (164 . 44) ;?\,
|
|
1273 (221 . 45) ;?\-
|
|
1274 (165 . 46) ;?\.
|
|
1275 (191 . 47) ;?\/
|
|
1276 (167 . 58) ;?\:
|
|
1277 (168 . 59) ;?\;
|
|
1278 (227 . 60) ;?\<
|
|
1279 (225 . 61) ;?\=
|
|
1280 (228 . 62) ;?\>
|
|
1281 (169 . 63) ;?\?
|
|
1282 (247 . 64) ;?\@
|
|
1283 (206 . 91) ;?\[
|
|
1284 (239 . 92) ;?\\
|
|
1285 (207 . 93) ;?\]
|
|
1286 (176 . 94) ;?^
|
|
1287 (178 . 95) ;?\_
|
|
1288 (208 . 123) ;?\{
|
|
1289 (195 . 124) ;?\|
|
|
1290 (209 . 125) ;?\}
|
|
1291 (177 . 126) ;?\~
|
|
1292 (198 . 96)) ;?`
|
|
1293 "$BJ8;z%3!<%I$N(B 2 $BHVL\$N%P%$%H$H$=$NJ8;z$KBP1~$9$k(B ascii $BJ8;z(B \(char\) $B$H$NO"A[%j%9%H!#(B
|
|
1294 skk-ascii-region $B$G;2>H$9$k!#(BMule-2.3 $BE:IU$N(B egg.el $B$h$j%3%T!<$7$?!#(B" )
|
|
1295
|
|
1296 ;;;###skk-autoload
|
|
1297 (defvar skk-insert-new-word-function nil
|
|
1298 "$B8uJd$rA^F~$7$?$H$-$K(B funcall $B$5$l$k4X?t$rJ]B8$9$kJQ?t!#(B" )
|
|
1299
|
|
1300 ;;;###skk-autoload
|
|
1301 (defvar skk-input-mode-string skk-hirakana-mode-string
|
|
1302 "SKK $B$NF~NO%b!<%I$r<($9J8;zNs!#(Bskk-mode $B5/F0;~$O!"(Bskk-hirakana-mode-string$B!#(B" )
|
|
1303
|
|
1304 ;;;###skk-autoload
|
|
1305 (defvar skk-isearch-message nil
|
|
1306 "skk-isearch $B4X?t$r%3!<%k$9$k$?$a$N%U%i%0!#(B
|
|
1307 Non-nil $B$G$"$l$P!"(Bskk-isearch-message $B4X?t$r%3!<%k$9$k!#(B" )
|
|
1308
|
|
1309 ;;;###skk-autoload
|
|
1310 (defvar skk-mode-invoked nil
|
|
1311 "Non-nil $B$G$"$l$P!"(BEmacs $B$r5/F08e4{$K(B skk-mode $B$r5/F0$7$?$3$H$r<($9!#(B" )
|
|
1312
|
|
1313 (defvar skk-kakutei-count 0
|
|
1314 "$BJQ498uJd$r3NDj$7$?%+%&%s%H$rJ];}$9$kJQ?t!#(B
|
|
1315 skk-record-file $B$N(B \"$B3NDj(B:\" $B9`L\$N%+%&%s%?!<!#(B" )
|
|
1316
|
|
1317 (defvar skk-touroku-count 0
|
|
1318 "$B<-=qEPO?$7$?%+%&%s%H$rJ];}$9$kJQ?t!#(B
|
|
1319 skk-record-file $B$N(B \"$BEPO?(B:\" $B9`L\$N%+%&%s%?!<!#(B" )
|
|
1320
|
|
1321 (defvar skk-update-jisyo-count 0
|
|
1322 "$B<-=q$r99?7$7$?2s?t!#(B
|
|
1323 $B$3$N%+%&%s%?!<$N?t;z$,(B skk-jisyo-save-count $B0J>e$H$J$C$?$H$-$K%f!<%6!<<-=q$N%*!<(B
|
|
1324 $B%H%;!<%V$,9T$J$o$l$k!#(B" )
|
|
1325
|
|
1326 (defvar skk-use-relation nil
|
|
1327 "*skk-relation $B$r;HMQ$9$k!#$3$l$OD>A0$NJQ49$r21$($F$*$/$3$H$G!"(B
|
|
1328 $BJQ498zN($rNI$/$7$h$&$H$$$&;n$_!#(B" )
|
|
1329
|
|
1330 (defvar skk-relation-length (* skk-kanji-len 10)
|
|
1331 "skk-relation $B;HMQ;~$K!"2?J8;zA0$NJQ49$^$G21$($F$*$/$+$r;XDj$9$kJQ?t!#(B" )
|
|
1332
|
|
1333 (defvar skk-relation-record-num 100
|
|
1334 "skk-relation $B;HMQ;~$K!"2?%(%s%H%j$^$G%U%!%$%k$K5-21$9$k$+$r<($9!#(B" )
|
|
1335
|
|
1336 ;; ---- buffer local variables
|
|
1337 ;; <$B%U%i%0N`(B>
|
|
1338 ;;;###skk-autoload
|
|
1339 (skk-deflocalvar skk-mode nil
|
|
1340 "Non-nil $B$G$"$l$P!"%+%l%s%H%P%C%U%!$G8=:_(B skk-mode $B$r5/F0$7$F$$$k$3$H$r<($9!#(B" )
|
|
1341
|
|
1342 ;;;###skk-autoload
|
|
1343 (skk-deflocalvar skk-ascii-mode nil
|
|
1344 "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,(B ASCII $B%b!<%I$G$"$k$3$H$r<($9!#(B" )
|
|
1345
|
|
1346 ;;;###skk-autoload
|
|
1347 (skk-deflocalvar skk-j-mode nil
|
|
1348 "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,$+$J!&%+%J%b!<%I$G$"$k$3$H$r<($9!#(B" )
|
|
1349
|
|
1350 ;;;###skk-autoload
|
|
1351 (skk-deflocalvar skk-katakana nil
|
|
1352 "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,%+%J%b!<%I$G$"$k$3$H$r<($9!#(B
|
|
1353 \"(and (not skk-katakana) skk-j-mode))\" $B$,(B t $B$G$"$l$P!"$+$J%b!<%I$G$"$k$3$H$r(B
|
|
1354 $B<($9!#(B" )
|
|
1355
|
|
1356 ;;;###skk-autoload
|
|
1357 (skk-deflocalvar skk-zenkaku-mode nil
|
|
1358 "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,A41Q%b!<%I$G$"$k$3$H$r<($9!#(B" )
|
|
1359
|
|
1360 ;;;###skk-autoload
|
|
1361 (skk-deflocalvar skk-abbrev-mode nil
|
|
1362 "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,(B SKK abbrev $B%b!<%I$G$"$k$3$H$r<($9!#(B" )
|
|
1363
|
|
1364 ;;;###skk-autoload
|
|
1365 (skk-deflocalvar skk-okurigana nil
|
|
1366 "Non-nil $B$G$"$l$P!"Aw$j2>L>ItJ,$,F~NOCf$G$"$k$3$H$r<($9!#(B" )
|
|
1367
|
|
1368 ;;;###skk-autoload
|
|
1369 (skk-deflocalvar skk-henkan-on nil
|
|
1370 "Non-nil $B$G$"$l$P!""&%b!<%I(B ($BJQ49BP>]$NJ8;zNs7hDj$N$?$a$N%b!<%I(B) $B$G$"$k$3$H$r<($9!#(B" )
|
|
1371
|
|
1372 ;;;###skk-autoload
|
|
1373 (skk-deflocalvar skk-henkan-active nil
|
|
1374 "Non-nil $B$G$"$l$P!""'%b!<%I(B ($BJQ49Cf(B) $B$G$"$k$3$H$r<($9!#(B" )
|
|
1375
|
|
1376 ;;;###skk-autoload
|
|
1377 (skk-deflocalvar skk-kakutei-flag nil
|
|
1378 "Non-nil $B$J$i3NDj$7$FNI$$8uJd$r8+$D$1$?>uBV$G$"$k$3$H$r;X$9!#(B
|
|
1379 skk-henkan, skk-search-kakutei-jisyo-file, skk-henkan-show-candidates,
|
|
1380 skk-henkan-in-minibuff $B$H(B skk-kakutei-save-and-init-variables $B$GJQ99!";2>H$5$l(B
|
|
1381 $B$k!#(B" )
|
|
1382
|
|
1383 (skk-deflocalvar skk-exit-show-candidates nil
|
|
1384 "$B%_%K%P%C%U%!$G8uJd$r<!!9$KI=<($7$F!"8uJd$,?T$-$?$H$-$K(B non-nil $B$H$J$k!#(B
|
|
1385 $B$=$NCM$O%j%9%H$G!"(Bcar $B$K(B skk-henkan-show-candidate $B4X?t$G(B while $B%k!<%W$r2s$C(B
|
|
1386 $B$?2s?t$r<($90l;~JQ?t(B loop $B$NCM$r!"(Bcdr $BIt$K:G8e$K%_%K%P%C%U%!$KI=<($7$?(B 1 $B$DA0(B
|
|
1387 $B$N8uJd72$N:G8e$NMWAG$r;X$9%$%s%G%/%9$,BeF~$5$l$k!#(B
|
|
1388 skk-henkan-show-candidates, skk-henkan-in-minibuff $B$H(B
|
|
1389 skk-kakutei-save-and-init-variables $B$GJQ99!";2>H$5$l$k!#(B" )
|
|
1390
|
|
1391 (skk-deflocalvar skk-last-henkan-result nil
|
|
1392 "" )
|
|
1393
|
|
1394 (skk-deflocalvar skk-last-henkan-point nil
|
|
1395 "" )
|
|
1396
|
|
1397 ;; <$B%-!<%^%C%W4XO"(B>
|
|
1398
|
|
1399 ;; <$B<-=q4XO"$NJQ?t(B>
|
|
1400 (skk-deflocalvar skk-okuri-ari-min nil
|
|
1401 "SKK $B<-=q$NAw$jM-$j%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H!#(B")
|
|
1402
|
|
1403 (skk-deflocalvar skk-okuri-ari-max nil
|
|
1404 "SKK $B<-=q$NAw$jM-$j%(%s%H%j$N=*N;E@$r<($9%P%C%U%!%]%$%s%H!#(B
|
|
1405 skk-jisyo $B$N%P%C%U%!$G$O<-=q$N99?7$NI,MW$,$"$k$?$a$K%^!<%+!<$,BeF~$5$l$k!#(B" )
|
|
1406
|
|
1407 (skk-deflocalvar skk-okuri-nasi-min nil
|
|
1408 "SKK $B<-=q$NAw$j$J$7%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H!#(B
|
|
1409 skk-jisyo $B$N%P%C%U%!$G$O<-=q$N99?7$NI,MW$,$"$k$?$a$K%^!<%+!<$,BeF~$5$l$k!#(B" )
|
|
1410
|
|
1411 ;; <$B$=$NB>(B>
|
|
1412 (skk-deflocalvar skk-mode-line nil
|
|
1413 "SKK $B$N%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs!#(B
|
|
1414 skk-mode-string, skk-hirakana-mode-string, skk-katakana-mode-string
|
|
1415 and skk-zenkaku-mode-string $B$N$$$:$l$+$,BeF~$5$l$k!#(B" )
|
|
1416
|
|
1417 ;; "" $B$KBP1~$7$?%(%s%H%j$,(B skk-roma-kana-[aiue] $B$K$"$k$?$a!"(B"" $B$r(B nil $B$GBeMQ(B
|
|
1418 ;; $B$G$-$J$$!#(B
|
|
1419 ;;;###skk-autoload
|
|
1420 (skk-deflocalvar skk-prefix ""
|
|
1421 "$BF~NO$9$k$+$J$r7hDj$9$k$?$a$N%W%l%U%#%C%/%9!#(B
|
|
1422 $B8e$GF~NO$5$l$kJl2;$KBP1~$7$?(B skk-roma-kana-[aiue] $BO"A[%j%9%H$G!"$=$N(B
|
|
1423 skk-prefix $B$r%-!<$K$7$FF~NO$9$Y$-$+$JJ8;z$,7hDj$5$l$k!#(B
|
|
1424 $BNc$($P!"(B\"$B$+(B\" $B$N$h$&$K(B \"k\" $B$+$i;O$^$k;R2;$rF~NO$7$F$$$k$H$-$O!"(Bskk-prefix
|
|
1425 $B$O!"(B\"k\" $B$G!"$=$N<!$KF~NO$5$l$?Jl2;(B \"a\" $B$KBP1~$9$k(B skk-roma-kana-a $B$NCf$N(B
|
|
1426 \"k\" $B$r%-!<$K;}$DCM!"(B\"$B$+(B\" $B$b$7$/$O(B \"$B%+(B\" $B$,F~NO$9$Y$-$+$JJ8;z$H$J$k!#(B" )
|
|
1427
|
|
1428 ;;;###skk-autoload
|
|
1429 (skk-deflocalvar skk-henkan-start-point nil
|
|
1430 "$BJQ493+;O%]%$%s%H$r<($9%^!<%+!<!#(B" )
|
|
1431
|
|
1432 (skk-deflocalvar skk-henkan-end-point nil
|
|
1433 "$BJQ49=*N;%]%$%s%H$r<($9%^!<%+!<!#(B" )
|
|
1434
|
|
1435 ;;;###skk-autoload
|
|
1436 (skk-deflocalvar skk-kana-start-point nil
|
|
1437 "$B$+$JJ8;z$N3+;O%]%$%s%H$r<($9%^!<%+!<!#(B" )
|
|
1438
|
|
1439 (skk-deflocalvar skk-okurigana-start-point nil
|
|
1440 "$BAw$j2>L>$N3+;O%]%$%s%H$r<($9%^!<%+!<!#(B" )
|
|
1441
|
|
1442 ;;;###skk-autoload
|
|
1443 (skk-deflocalvar skk-henkan-key nil
|
|
1444 "$BJQ49$9$Y$-8+=P$78l!#(B
|
|
1445 $BNc$($P!"(B\"$B"&$+$J(B\" $B$rJQ49$9$l$P!"(Bskk-henkan-key $B$K$O(B \"$B$+$J(B\" $B$,BeF~$5$l$k!#(B
|
|
1446 \"$B"&$o$i(B*$B$&(B\" $B$N$h$&$JAw$j$"$j$NJQ49$N>l9g$K$O!"(B\"$B$o$i(Bu\" $B$N$h$&$K!"4A;zItJ,$N(B
|
|
1447 $BFI$_$,$J(B + $BAw$j2>L>$N:G=i$NJ8;z$N%m!<%^;z$N%W%l%U%#%C%/%9$,BeF~$5$l$k!#(B" )
|
|
1448
|
|
1449 ;;;###skk-autoload
|
|
1450 (skk-deflocalvar skk-okuri-char nil
|
|
1451 "$BJQ49$9$Y$-8l$NAw$j2>L>$NItJ,$N%W%l%U%#%C%/%9!#(B
|
|
1452 $BNc$($P!"(B\"$B$*$/(B*$B$j(B\" $B$rJQ49$9$k$H$-$O!"(Bskk-okuri-char $B$O(B \"r\"$B!#(B
|
|
1453 skk-okuri-char $B$,(B non-nil $B$G$"$l$P!"Aw$j$"$j$NJQ49$G$"$k$3$H$r<($9!#(B" )
|
|
1454
|
|
1455 ;;;###skk-autoload
|
|
1456 (skk-deflocalvar skk-henkan-okurigana nil
|
|
1457 "$B8=:_$NJQ49$NAw$j2>L>ItJ,!#(B
|
|
1458 $BNc$($P!"(B\"$B"&$&$^$l(B*$B$k(B\" $B$rJQ49$9$l$P!"(Bskk-henkan-okurigana $B$K$O(B \"$B$k(B\" $B$,BeF~(B
|
|
1459 $B$5$l$k!#(B" )
|
|
1460
|
|
1461 (skk-deflocalvar skk-last-kakutei-henkan-key nil
|
|
1462 "$B3NDj<-=q$K$h$j:G8e$K3NDj$7$?$H$-$N8+=P$78l!#(B
|
|
1463 $B3NDj<-=q$K$h$k3NDj$ND>8e$K(B x $B%-!<$r2!$9$H3NDj$,%"%s%I%%$5$l$F!"3NDjA0$N>uBV$G(B
|
|
1464 $B$3$N8+=P$78l$,%+%l%s%H%P%C%U%!$KA^F~$5$l$k!#(B" )
|
|
1465
|
|
1466 ;;;###skk-autoload
|
|
1467 (skk-deflocalvar skk-henkan-list nil
|
|
1468 "$BJQ497k2L$N8uJd$N%j%9%H!#(B
|
|
1469 $BNc$($P!"(B\"$B"&$J(B*$B$/(B\" $B$H$$$&JQ49$9$l$P!"(Bskk-henkan-list $B$O(B
|
|
1470 (\"$BLD(B\" \"$B5c(B\" \"$BL5(B\" \"$BK4(B\") $B$N$h$&$K$J$k!#(B" )
|
|
1471
|
|
1472 ;;;###skk-autoload
|
|
1473 (skk-deflocalvar skk-henkan-count -1
|
|
1474 "skk-henkan-list $B$N%j%9%H$N%$%s%G%/%9$G8=:_$N8uJd$r:9$9$b$N!#(B" )
|
|
1475
|
|
1476 (skk-deflocalvar skk-self-insert-non-undo-count 1
|
|
1477 "skk-self-insert $B$J$I$GO"B3F~NO$7$?J8;z?t$rI=$o$9%+%&%s%?!<!#(B
|
|
1478 Emacs $B$N%*%j%8%J%k$NF0:n$G$O!"(Bself-insert-command $B$K%P%$%s%I$5$l$?%-!<F~NO$O!"(B
|
|
1479 $BO"B3(B 20 $B2s$^$G$,(B 1 $B$D$N%"%s%I%%$NBP>]$H$J$k!#$3$NF0:n$r%(%_%e%l!<%H$9$k$?$a$N(B
|
|
1480 $B%+%&%s%?!<!#(B
|
|
1481 skk-self-insert $B0J30$G$O!"(Bskk-abbrev-comma, skk-abbrev-period, skk-insert-a,
|
|
1482 skk-insert-comma, skk-insert-e, skk-insert-i, skk-insert-period, skk-insert-u,
|
|
1483 skk-kana-input, skk-set-henkan-point, skk-zenkaku-insert $B$N$$$:$l$+$N%3%^%s%I(B
|
|
1484 $B$GF~NO$5$l$?>l9g$bO"B3$7$?F~NO$H$7$F07$o$l$k!#(B
|
|
1485 $B$3$N%+%&%s%?!<$,!"(B20 $B0J2<$G$"$k$H$-$O!"F~NO$N$?$S$K(B cancel-undo-boundary $B$,%3!<(B
|
|
1486 $B%k$5$l$k!#(B" )
|
|
1487
|
|
1488 ;;;###skk-autoload
|
|
1489 (skk-deflocalvar skk-current-search-prog-list nil
|
|
1490 "skk-search-prog-list $B$N8=:_$NCM$rJ]B8$9$k%j%9%H!#(B
|
|
1491 $B:G=i$NJQ49;~$O(B skk-search-prog-list $B$NA4$F$NCM$rJ];}$7!"JQ49$r7+$jJV$9$?$S$K(B 1
|
|
1492 $B$D$E$DC;$/$J$C$F$f$/!#(B" )
|
|
1493
|
|
1494 ;; for skk-undo-kakutei
|
|
1495 (skk-deflocalvar skk-last-henkan-key nil
|
|
1496 "skk-henkan-key $B$N:G8e$NCM!#(Bskk-undo-kakutei $B$G;2>H$5$l$k!#(B" )
|
|
1497
|
|
1498 (skk-deflocalvar skk-last-henkan-okurigana nil
|
|
1499 "skk-henkan-okurigana $B$N:G8e$NCM!#(Bskk-undo-kakutei $B$G;2>H$5$l$k!#(B" )
|
|
1500
|
|
1501 (skk-deflocalvar skk-last-henkan-list nil
|
|
1502 "skk-henkan-list $B$N:G8e$NCM!#(Bskk-undo-kakutei $B$G;2>H$5$l$k!#(B" )
|
|
1503
|
|
1504 (skk-deflocalvar skk-last-okuri-char nil
|
|
1505 "skk-okuri-char $B$N:G8e$NCM!#(Bskk-undo-kakutei $B$G;2>H$5$l$k!#(B" )
|
|
1506
|
|
1507 (skk-deflocalvar skk-henkan-overlay nil
|
|
1508 "$B8uJd$rI=<($9$k$H$-$K;HMQ$9$k(B Overlay$B!#(B" )
|
|
1509
|
|
1510 ;;;###skk-autoload
|
|
1511 (defvar skk-menu-modified-user-option nil
|
|
1512 "SKK $B%a%K%e!<%3%^%s%I$GJQ99$5$l$?%f!<%6!<JQ?tJ];}$9$k%j%9%H!#(B" )
|
|
1513
|
|
1514 (or (assq 'skk-mode minor-mode-alist)
|
|
1515 (setq minor-mode-alist
|
|
1516 (cons '(skk-mode skk-input-mode-string) minor-mode-alist) ))
|
|
1517
|
|
1518 ;; +----------------------+-------- skk-mode -----+----------------------+
|
|
1519 ;; | | | |
|
|
1520 ;; | | | |
|
|
1521 ;; skk-j-mode skk-ascii-mode skk-zenkaku-mode skk-abbrev-mode
|
|
1522 ;; ASCII ZENKAKU EIMOJI ABBREVIATION
|
|
1523 ;; (C-j wakes up skk-j-mode)
|
|
1524 ;;
|
|
1525 ;; skk-j-mode-map skk-ascii-mode-map skk-zenkaku-mode-map skk-abbrev-mode-map
|
|
1526 ;; skk-katakana: nil
|
|
1527 ;; HIRAKANA
|
|
1528 ;;
|
|
1529 ;; skk-j-mode-map
|
|
1530 ;; skk-katakana: t
|
|
1531 ;; KATAKANA
|
|
1532
|
|
1533 ;; sub minor mode
|
|
1534 ;;(cond ((and skk-xemacs (local-variable-p 'minor-mode-map-alist nil t)))
|
|
1535 ;; ((local-variable-p 'minor-mode-map-alist)
|
|
1536 ;; (setq-default minor-mode-map-alist minor-mode-map-alist) ))
|
|
1537
|
|
1538 (or (assq 'skk-ascii-mode minor-mode-map-alist)
|
|
1539 (setq minor-mode-map-alist
|
|
1540 (cons (cons 'skk-ascii-mode skk-ascii-mode-map) minor-mode-map-alist) ))
|
|
1541
|
|
1542 (or (assq 'skk-abbrev-mode minor-mode-map-alist)
|
|
1543 (setq minor-mode-map-alist
|
|
1544 (cons (cons 'skk-abbrev-mode skk-abbrev-mode-map) minor-mode-map-alist) ))
|
|
1545
|
|
1546 (or (assq 'skk-j-mode minor-mode-map-alist)
|
|
1547 (setq minor-mode-map-alist
|
|
1548 (cons (cons 'skk-j-mode skk-j-mode-map) minor-mode-map-alist) ))
|
|
1549
|
|
1550 (or (assq 'skk-zenkaku-mode minor-mode-map-alist)
|
|
1551 (setq minor-mode-map-alist
|
|
1552 (cons (cons 'skk-zenkaku-mode skk-zenkaku-mode-map) minor-mode-map-alist) ))
|
|
1553
|
|
1554 ;;;; aliases
|
|
1555 (defalias 'skk-backward-char 'backward-char)
|
|
1556 (defalias 'skk-eventp 'eventp)
|
|
1557 (defalias 'skk-forward-char 'forward-char)
|
|
1558 (defalias 'skk-insert-and-inherit 'insert-and-inherit)
|
|
1559 (defalias 'skk-skip-chars-backward 'skip-chars-backward)
|
|
1560
|
|
1561 ;;;; macros
|
|
1562
|
|
1563 ;; Why I use non-intern temporary variable in the macro --- see comment in
|
|
1564 ;; save-match-data of subr.el of GNU Emacs. And should we use the same manner
|
|
1565 ;; in the save-current-buffer, with-temp-buffer and with-temp-file macro
|
|
1566 ;; definition?
|
|
1567 ;;;###skk-autoload
|
|
1568 (defmacro skk-save-point (&rest body)
|
|
1569 (` (let ((skk-save-point (point-marker)))
|
|
1570 (unwind-protect
|
|
1571 (progn (,@ body))
|
|
1572 (goto-char skk-save-point)
|
|
1573 (skk-set-marker skk-save-point nil) ))))
|
|
1574
|
|
1575 ;;;###skk-autoload
|
|
1576 (defmacro skk-message (japanese english &rest arg)
|
|
1577 ;; skk-japanese-message-and-error $B$,(B non-nil $B$@$C$?$i(B JAPANESE $B$r(B nil $B$G$"$l(B
|
|
1578 ;; $B$P(B ENGLISH $B$r%(%3!<%(%j%"$KI=<($9$k!#(B
|
|
1579 ;; ARG $B$O(B message $B4X?t$NBh#20z?t0J9_$N0z?t$H$7$FEO$5$l$k!#(B
|
|
1580 (list 'let (list (list 'mc-flag t) (list 'enable-multibyte-characters t))
|
|
1581 (append (list 'message (list 'if 'skk-japanese-message-and-error
|
|
1582 japanese english ))
|
|
1583 arg )))
|
|
1584
|
|
1585 ;;;###skk-autoload
|
|
1586 (defmacro skk-error (japanese english &rest arg)
|
|
1587 ;; skk-japanese-message-and-error $B$,(B non-nil $B$@$C$?$i(B JAPANESE $B$r(B nil $B$G$"$l(B
|
|
1588 ;; $B$P(B ENGLISH $B$r%(%3!<%(%j%"$KI=<($7!"%(%i!<$rH/@8$5$;$k!#(B
|
|
1589 ;; ARG $B$O(B error $B4X?t$NBh#20z?t0J9_$N0z?t$H$7$FEO$5$l$k!#(B
|
|
1590 (list 'let (list (list 'mc-flag t) (list 'enable-multibyte-characters t))
|
|
1591 (append (list 'error (list 'if 'skk-japanese-message-and-error
|
|
1592 japanese english ))
|
|
1593 arg )))
|
|
1594
|
|
1595 ;;;###skk-autoload
|
|
1596 (defmacro skk-yes-or-no-p (japanese english)
|
|
1597 ;; skk-japanese-message-and-error $B$,(B non-nil $B$G$"$l$P!"(Bjapanese $B$r(B nil $B$G$"(B
|
|
1598 ;; $B$l$P(B english $B$r%W%m%s%W%H$H$7$F(B yes-or-no-p $B$r<B9T$9$k!#(B
|
|
1599 ;; yes-or-no-p $B$N0z?t$N%W%m%s%W%H$,J#;($KF~$l9~$s$G$$$k>l9g$O$3$N%^%/%m$r;H(B
|
|
1600 ;; $B$&$h$j%*%j%8%J%k$N(B yes-or-no-p $B$r;HMQ$7$?J}$,%3!<%I$,J#;($K$J$i$J$$>l9g$,(B
|
|
1601 ;; $B$"$k!#(B
|
|
1602 (list 'let (list (list 'mc-flag t) (list 'enable-multibyte-characters t))
|
|
1603 (list 'yes-or-no-p (list 'if 'skk-japanese-message-and-error
|
|
1604 japanese english ))))
|
|
1605
|
|
1606 ;;;###skk-autoload
|
|
1607 (defmacro skk-y-or-n-p (japanese english)
|
|
1608 ;; skk-japanese-message-and-error $B$,(B non-nil $B$G$"$l$P!"(Bjapanese $B$r(B nil $B$G$"(B
|
|
1609 ;; $B$l$P(B english $B$r%W%m%s%W%H$H$7$F(B y-or-n-p $B$r<B9T$9$k!#(B
|
|
1610 (list 'let (list (list 'mc-flag t) (list 'enable-multibyte-characters t))
|
|
1611 (list 'y-or-n-p (list 'if 'skk-japanese-message-and-error
|
|
1612 japanese english ))))
|
|
1613
|
|
1614 ;;;###skk-autoload
|
|
1615 (defmacro skk-set-marker (marker position &optional buffer)
|
|
1616 ;; $B%P%C%U%!%m!<%+%kCM$G$"$k(B skk-henkan-start-point, skk-henkan-end-point,
|
|
1617 ;; skk-kana-start-point, $B$"$k$$$O(B skk-okurigana-start-point $B$,(B nil $B$@$C$?$i!"(B
|
|
1618 ;; $B?75,%^!<%+!<$r:n$C$FBeF~$9$k!#(B
|
|
1619 ;;
|
|
1620 ;; skk.el $B$N%P%C%U%!%m!<%+%kCM$N07$$$K$OCm0U$9$Y$-E@$,$"$k!#(B
|
|
1621 ;; $BNc$($P!"$"$k%P%C%U%!(B Buffer A $B$G2<5-$N$h$&$J%U%)!<%`$rI>2A$7$?$H$9$k!#(B
|
|
1622 ;; ---------- Buffer A ---------------+--------------- Buffer B ----------
|
|
1623 ;; (setq test (make-marker)) |
|
|
1624 ;; -> #<marker in no buffer> |
|
|
1625 ;; |
|
|
1626 ;; (make-variable-buffer-local 'test) |
|
|
1627 ;; |
|
|
1628 ;; test | test
|
|
1629 ;; -> #<marker in no buffer> | -> #<marker in no buffer>
|
|
1630 ;; |
|
|
1631 ;; (set-marker test (point)) |
|
|
1632 ;; |
|
|
1633 ;; test | test
|
|
1634 ;; -> #<marker at 122 in A> | -> #<marker at 122 in A>
|
|
1635 ;;
|
|
1636 ;; $B%P%C%U%!%m!<%+%kCM$H$7$F$N@k8@$r$9$kA0$K(B non-nil $BCM$rBeF~$7!"$=$N(B non-nil
|
|
1637 ;; $BCM$rD>@\=q$-JQ$($k$h$&$J%U%)!<%`$rI>2A$9$k$H(B Buffer B $B$+$i8+$($k%G%#%U%)%k(B
|
|
1638 ;; $B%HCM$^$G=q$-JQ$C$F$7$^$&!#>e5-$NNc$O%^!<%+!<$@$,!"2<5-$N$h$&$K%j%9%H$KBP$7(B
|
|
1639 ;; $B$FGK2uE*4X?t$GA`:n$7$?$H$-$bF1MM$N7k2L$H$J$k!#(B
|
|
1640 ;; ---------- Buffer A ---------------+--------------- Buffer B ----------
|
|
1641 ;; (setq test '(A B C)) |
|
|
1642 ;; -> (A B C) |
|
|
1643 ;; |
|
|
1644 ;; (make-variable-buffer-local 'test) |
|
|
1645 ;; |
|
|
1646 ;; test | test
|
|
1647 ;; -> (A B C) | -> (A B C)
|
|
1648 ;; |
|
|
1649 ;; (setcar test 'X) |
|
|
1650 ;; |
|
|
1651 ;; test | test
|
|
1652 ;; -> (X B C) | -> (X B C)
|
|
1653 ;;
|
|
1654 ;; $B$3$N8=>]$G0lHV:$$k$N$O!"4A;zEPO?$J$I$G%_%K%P%C%U%!$KF~$C$?$H$-(B
|
|
1655 ;; (skk-henkan-show-candidate $B$N$h$&$KC1$K!V%(%3!<%(%j%"!W$r;HMQ$9$k4X?t$G$O(B
|
|
1656 ;; $B4X78$J$$(B) $B$K!"$b$H$N%P%C%U%!$H%_%K%P%C%U%!$H$G$O$=$l$>$lJL$NJQ49$r9T$J$&(B
|
|
1657 ;; $B$N$,IaDL$G$"$k$N$G!">e5-$N$h$&$KB>$N%P%C%U%!$N%P%C%U%!%m!<%+%kCM$^$G=q$-(B
|
|
1658 ;; $BJQ$($F$7$^$&$H!"JQ49$r5Y;_$7$F$$$kB>$N%P%C%U%!$G@5>o$JJQ49$,$G$-$J$/$J$k(B
|
|
1659 ;; $B>l9g$,$"$k$3$H$G$"$k!#(B
|
|
1660 ;;
|
|
1661 ;; $B$7$+$b(B SKK $B$G$O%j%+!<%7%V%_%K%P%C%U%!$,;HMQ$G$-$k$N$G!"(B *Minibuf-0* $B$H(B
|
|
1662 ;; *Minibuf-1 $B$N4V(B ($B$"$k$$$O$b$C$H?<$$%j%+!<%7%V%_%K%P%C%U%!F1;N$N4V(B) $B$G%P%C(B
|
|
1663 ;; $B%U%!%m!<%+%kCM$NGK2uE*=q$-JQ$($,9T$J$o$l$F$7$^$$!">e0L$N%_%K%P%C%U%!$KLa$C(B
|
|
1664 ;; $B$?$H$-$K@5>o$JJQ49$,$G$-$J$/$J$k>l9g$,$"$k!#(B
|
|
1665 ;;
|
|
1666 ;; $B$H$3$m$,2<5-$N$h$&$K=i4|CM$r(B nil $B$K$7$F!"%P%C%U%!%m!<%+%kCM$H$7$F$N@k8@8e!"(B
|
|
1667 ;; non-nil $BCM$rBeF~$9$l$P!"0J8e$=$N%P%C%U%!%m!<%+%kCM$KGK2uE*A`:n$r$7$F$b$=$N(B
|
|
1668 ;; $B%P%C%U%!$K8GM-$NCM$7$+JQ2=$7$J$$!#(B
|
|
1669 ;; ---------- Buffer A ---------------+--------------- Buffer B ----------
|
|
1670 ;; (setq test nil) |
|
|
1671 ;; |
|
|
1672 ;; (make-variable-buffer-local 'test) |
|
|
1673 ;; |
|
|
1674 ;; test | test
|
|
1675 ;; -> nil | -> nil
|
|
1676 ;; |
|
|
1677 ;; (setq test (make-marker)) |
|
|
1678 ;; -> #<marker in no buffer> |
|
|
1679 ;; |
|
|
1680 ;; (set-marker test (point)) |
|
|
1681 ;; |
|
|
1682 ;; test | test
|
|
1683 ;; -> #<marker at 122 in A> | -> nil
|
|
1684 ;;
|
|
1685 ;; skk.el 9.3 $B$N;~E@$G$O!"(Bskk-henkan-start-point, skk-henkan-end-point,
|
|
1686 ;; skk-kana-start-point $B5Z$S(B skk-okurigana-start-point $B$N=i4|CM(B
|
|
1687 ;; (make-variable-buffer-local $B$,%3!<%k$5$l$kA0$NCM(B) $B$,(B make-marker $B$NJV$jCM(B
|
|
1688 ;; $B$G$"$k(B #<marker in no buffer> $B$G$"$C$?$N$G!"%j%+!<%7%V%_%K%P%C%U%!$KF~$C(B
|
|
1689 ;; $B$FJQ49$7$?$H$-$K(B "$B"'(B" $B$,>C$($J$$!"$J$I$N%H%i%V%k$,$"$C$?$,!"$3$l$i$N=i4|(B
|
|
1690 ;; $BCM$r(B nil $B$K$7$F;HMQ;~$K(B make-marker $B$NJV$jCM$rBeF~$9$k$h$&$K$7!"$3$NLdBj$r(B
|
|
1691 ;; $B2r7h$7$?!#(B
|
|
1692 (list 'progn
|
|
1693 (list 'if (list 'not marker)
|
|
1694 (list 'setq marker (list 'make-marker)) )
|
|
1695 (list 'set-marker marker position buffer) ))
|
|
1696
|
|
1697 ;;;; inline functions
|
|
1698 (defsubst skk-mode-off ()
|
|
1699 (setq skk-mode nil
|
|
1700 skk-abbrev-mode nil
|
|
1701 skk-ascii-mode nil
|
|
1702 skk-j-mode nil
|
|
1703 skk-zenkaku-mode nil
|
|
1704 ;; j's sub mode.
|
|
1705 skk-katakana nil )
|
|
1706 ;; initialize
|
|
1707 (setq skk-input-mode-string skk-hirakana-mode-string)
|
|
1708 (setq skk-last-henkan-result nil)
|
|
1709 (skk-set-marker skk-last-henkan-point nil)
|
|
1710 (skk-set-cursor-color skk-default-cursor-color)
|
|
1711 (force-mode-line-update) )
|
|
1712
|
|
1713 ;;;###skk-autoload
|
|
1714 (defsubst skk-j-mode-on (&optional katakana)
|
|
1715 (setq skk-mode t
|
|
1716 skk-abbrev-mode nil
|
|
1717 skk-ascii-mode nil
|
|
1718 skk-j-mode t
|
|
1719 skk-zenkaku-mode nil
|
|
1720 ;; j's sub mode.
|
|
1721 skk-katakana katakana )
|
|
1722 ;; mode line
|
|
1723 (if katakana
|
|
1724 (progn
|
|
1725 (setq skk-input-mode-string skk-katakana-mode-string)
|
|
1726 (skk-set-cursor-color skk-katakana-cursor-color) )
|
|
1727 (setq skk-input-mode-string skk-hirakana-mode-string)
|
|
1728 (skk-set-cursor-color skk-hirakana-cursor-color) )
|
|
1729 (force-mode-line-update) )
|
|
1730
|
|
1731 ;;;###skk-autoload
|
|
1732 (defsubst skk-ascii-mode-on ()
|
|
1733 (setq skk-mode t
|
|
1734 skk-abbrev-mode nil
|
|
1735 skk-ascii-mode t
|
|
1736 skk-j-mode nil
|
|
1737 skk-zenkaku-mode nil
|
|
1738 ;; j's sub mode.
|
|
1739 skk-katakana nil
|
|
1740 skk-input-mode-string skk-ascii-mode-string )
|
|
1741 (skk-set-cursor-color skk-ascii-cursor-color)
|
|
1742 (force-mode-line-update) )
|
|
1743
|
|
1744 ;;;###skk-autoload
|
|
1745 (defsubst skk-zenkaku-mode-on ()
|
|
1746 (setq skk-mode t
|
|
1747 skk-abbrev-mode nil
|
|
1748 skk-ascii-mode nil
|
|
1749 skk-j-mode nil
|
|
1750 skk-zenkaku-mode t
|
|
1751 ;; j's sub mode.
|
|
1752 skk-katakana nil
|
|
1753 skk-input-mode-string skk-zenkaku-mode-string )
|
|
1754 (skk-set-cursor-color skk-zenkaku-cursor-color)
|
|
1755 (force-mode-line-update) )
|
|
1756
|
|
1757 ;;;###skk-autoload
|
|
1758 (defsubst skk-abbrev-mode-on ()
|
|
1759 (setq skk-mode t
|
|
1760 skk-abbrev-mode t
|
|
1761 skk-ascii-mode nil
|
|
1762 skk-j-mode nil
|
|
1763 skk-zenkaku-mode nil
|
|
1764 ;; j's sub mode.
|
|
1765 skk-katakana nil
|
|
1766 skk-input-mode-string skk-abbrev-mode-string )
|
|
1767 (skk-set-cursor-color skk-abbrev-cursor-color)
|
|
1768 (force-mode-line-update) )
|
|
1769
|
|
1770 ;;;###skk-autoload
|
|
1771 (defsubst skk-in-minibuffer-p ()
|
|
1772 ;; $B%+%l%s%H%P%C%U%!$,%_%K%P%C%U%!$+$I$&$+$r%A%'%C%/$9$k!#(B
|
|
1773 (window-minibuffer-p (selected-window)) )
|
|
1774
|
|
1775 ;;;###skk-autoload
|
|
1776 (defsubst skk-insert-prefix (&optional char)
|
|
1777 ;; skk-echo $B$,(B non-nil $B$G$"$l$P%+%l%s%H%P%C%U%!$K(B skk-prefix $B$rA^F~$9$k!#(B
|
|
1778 (if skk-echo
|
|
1779 ;; skk-prefix $B$NA^F~$r%"%s%I%%$NBP>]$H$7$J$$!#A^F~$7$?%W%l%U%#%C%/%9$O!"(B
|
|
1780 ;; $B$+$JJ8;z$rA^F~$9$kA0$KA4$F>C5n$9$k$N$G!"$=$N4V!"(Bbuffer-undo-list $B$r(B
|
|
1781 ;; t $B$K$7$F%"%s%I%%>pJs$rC_$($J$/$H$bLdBj$,$J$$!#(B
|
|
1782 (let ((buffer-undo-list t))
|
|
1783 (insert (or char skk-prefix)) )))
|
|
1784
|
|
1785 ;;;###skk-autoload
|
|
1786 (defsubst skk-erase-prefix ()
|
|
1787 ;; skk-echo $B$,(B non-nil $B$G$"$l$P%+%l%s%H%P%C%U%!$KA^F~$5$l$?(B skk-prefix $B$r>C(B
|
|
1788 ;; $B$9!#(B
|
|
1789 (if skk-echo
|
|
1790 ;; skk-prefix $B$N>C5n$r%"%s%I%%$NBP>]$H$7$J$$!#(B
|
|
1791 (let ((buffer-undo-list t))
|
|
1792 (delete-region skk-kana-start-point (point) ))))
|
|
1793
|
|
1794 (defsubst skk-string<= (str1 str2)
|
|
1795 ;; str1 $B$,(B str2 $B$HHf3S$7$F!"(Bstring< $B$+(B string= $B$G$"$l$P!"(Bt $B$rJV$9!#(B
|
|
1796 (or (string< str1 str2) (string= str1 str2)) )
|
|
1797
|
|
1798 (defsubst skk-jis-char-p (char)
|
|
1799 ;; char $B$,(B JIS $BJ8;z$@$C$?$i(B t $B$rJV$9!#(B
|
|
1800 (> char 127) )
|
|
1801
|
|
1802 (defsubst skk-alpha-char-p (char)
|
|
1803 ;; char $B$,(B ascii $BJ8;z$@$C$?$i(B t $B$rJV$9!#(B
|
|
1804 (<= char 127) )
|
|
1805
|
|
1806 (defsubst skk-lower-case-p (char)
|
|
1807 ;; char $B$,>.J8;z$N%"%k%U%!%Y%C%H$G$"$l$P!"(Bt $B$rJV$9!#(B
|
|
1808 (and (<= ?a char) (>= ?z char) ))
|
|
1809
|
|
1810 (defsubst skk-do-auto-fill ()
|
|
1811 ;; auto-fill-function $B$KCM$,BeF~$5$l$F$*$l$P!"(Bdo-auto-fill $B$r%3!<%k$9$k!#(B
|
|
1812 (and auto-fill-function (funcall auto-fill-function)) )
|
|
1813
|
|
1814 ;;;; from dabbrev.el. Welcome!
|
|
1815 ;; $BH=Dj4V0c$$$rHH$9>l9g$"$j!#MW2~NI!#(B
|
|
1816 (defsubst skk-minibuffer-origin ()
|
|
1817 (nth 1 (buffer-list)) )
|
|
1818
|
|
1819 ;;;###skk-autoload
|
|
1820 (defsubst skk-numeric-p ()
|
|
1821 (and skk-use-numeric-conversion (require 'skk-num)
|
|
1822 skk-num-list ))
|
|
1823
|
|
1824 (defsubst skk-substring-head-character (string)
|
|
1825 (char-to-string (string-to-char string)) )
|
|
1826
|
|
1827 (defsubst skk-get-simply-current-candidate (&optional noconv)
|
|
1828 (if (> skk-henkan-count -1)
|
|
1829 ;; (nth -1 '(A B C)) $B$O!"(BA $B$rJV$9$N$G!"Ii$G$J$$$+$I$&$+%A%'%C%/$9$k!#(B
|
|
1830 (let ((word (nth skk-henkan-count skk-henkan-list)))
|
|
1831 (and word
|
|
1832 (if (and (skk-numeric-p) (consp word))
|
|
1833 (if noconv (car word) (cdr word))
|
|
1834 word )))))
|
|
1835
|
|
1836 (eval-after-load "font-lock"
|
|
1837 '(mapcar (function
|
|
1838 (lambda (pattern)
|
|
1839 (add-to-list
|
|
1840 'lisp-font-lock-keywords-2
|
|
1841 (cons pattern
|
|
1842 '((1 font-lock-keyword-face)
|
|
1843 (2 font-lock-variable-name-face) )))))
|
|
1844 '("^(\\(skk-deflocalvar\\)[ \t'\(]*\\(\\sw+\\)?"
|
|
1845 "^(\\(skk-defunsoft\\)[ \t'\(]*\\(\\sw+\\)?" )))
|
|
1846
|
|
1847 (defun skk-submit-bug-report ()
|
|
1848 "$B%a!<%k$G(B SKK $B$N%P%0%l%]!<%H$rAw$k!#(B
|
|
1849 reporter-mailer $B$r@_Dj$9$k$3$H$K$h$j9%$_$N%a!<%k%$%s%?!<%U%'%$%9$r;HMQ$9$k$3$H(B
|
|
1850 $B$,$G$-$k!#Nc$($P!"(BMew $B$r;HMQ$7$?$$>l9g$O2<5-$N$h$&$K@_Dj$9$k!#(B
|
|
1851
|
|
1852 \(setq reporter-mailer '\(mew-send reporter-mail\)\)
|
|
1853
|
|
1854 reporter.el 3.2 $B$G$O!"JQ?t(B reporter-mailer $B$,$J$/$J$C$?!#$3$N%P!<%8%g%s$G$O!"(B
|
|
1855
|
|
1856 \(setq mail-user-agent 'mew-user-agent\)
|
|
1857
|
|
1858 $B$H;XDj$9$k!#(B"
|
|
1859 (interactive)
|
|
1860 (require 'reporter)
|
|
1861 (if (and (boundp 'mail-user-agent)
|
|
1862 (eq mail-user-agent 'mew-user-agent) )
|
|
1863 (define-mail-user-agent 'mew-user-agent
|
|
1864 'mew-send 'mew-draft-send-letter 'mew-draft-kill ))
|
|
1865 (and (y-or-n-p "Do you really want to submit a report on SKK? ")
|
|
1866 (reporter-submit-bug-report
|
|
1867 skk-ml-address
|
|
1868 (concat "skk.el " (skk-version)
|
|
1869 (if (or (and (boundp 'skk-server-host) skk-server-host)
|
|
1870 (and (boundp 'skk-servers-list) skk-servers-list)
|
|
1871 (getenv "SKKSERVER")
|
|
1872 (getenv "SKKSERV") )
|
|
1873 (progn
|
|
1874 (require 'skk-server)
|
|
1875 (concat ", skkserv; " (skk-server-version)
|
|
1876 (if (getenv "SKKSERVER")
|
|
1877 (concat ",\nSKKSERVER; "
|
|
1878 (getenv "SKKSERVER") ))
|
|
1879 (if (getenv "SKKSERV")
|
|
1880 (concat ", SKKSERV; "
|
|
1881 (getenv "SKKSERV") ))))))
|
|
1882 (let ((base (list 'window-system
|
|
1883 'skk-auto-okuri-process
|
|
1884 'skk-auto-start-henkan
|
|
1885 'skk-egg-like-newline
|
|
1886 'skk-henkan-okuri-strictly
|
|
1887 'skk-henkan-strict-okuri-precedence
|
|
1888 'skk-kakutei-early
|
|
1889 'skk-process-okuri-early
|
|
1890 'skk-search-prog-list
|
|
1891 'skk-use-face
|
|
1892 'skk-use-vip )))
|
|
1893 (if (boundp 'skk-henkan-face)
|
|
1894 (nconc base '(skk-henkan-face)) )
|
|
1895 (if (boundp 'skk-server-host)
|
|
1896 (nconc base '(skk-server-host)) )
|
|
1897 (if (boundp 'skk-server-prog)
|
|
1898 (nconc base '(skk-server-prog)) )
|
|
1899 (if (boundp 'skk-servers-list)
|
|
1900 (nconc base '(skk-servers-list)) )
|
|
1901 base ))))
|
|
1902
|
|
1903 ;;;; defadvices.
|
|
1904 ;; defadvice $B$GDj5A$9$k$H!"8e$G%f!<%6!<$,?75,$N5!G=$rIU$1$F99$K(B defadvice $B$7$F(B
|
|
1905 ;; $B$b$A$c$s$HF0$/!#(B
|
|
1906
|
|
1907 ;; cover to original functions.
|
|
1908
|
|
1909 (defadvice keyboard-quit (around skk-ad activate)
|
|
1910 "$B"'%b!<%I$G$"$l$P!"8uJd$NI=<($r$d$a$F"&%b!<%I$KLa$9(B ($B8+=P$78l$O;D$9(B)$B!#(B
|
|
1911 $B"&%b!<%I$G$"$l$P!"8+=P$78l$r:o=|$9$k!#(B
|
|
1912 $B>e5-$N$I$A$i$N%b!<%I$G$b$J$1$l$P(B keyboard-quit $B$HF1$8F0:n$r$9$k!#(B"
|
|
1913 (cond ((not skk-henkan-on)
|
|
1914 (with-current-buffer (skk-minibuffer-origin)
|
|
1915 (skk-set-cursor-properly) )
|
|
1916 ad-do-it )
|
|
1917 (skk-henkan-active
|
|
1918 (setq skk-henkan-count 0)
|
|
1919 (if (and skk-delete-okuri-when-quit skk-henkan-okurigana)
|
|
1920 (let ((count (/ (length skk-henkan-okurigana) skk-kanji-len)))
|
|
1921 (skk-previous-candidate)
|
|
1922 ;; $B$3$3$G$O(B delete-backward-char $B$KBhFs0z?t$rEO$5$J$$J}$,%Y%?!<!)(B
|
|
1923 (delete-backward-char count) )
|
|
1924 (skk-previous-candidate) ))
|
|
1925 (t (if (> (point) skk-henkan-start-point)
|
|
1926 (delete-region (point) skk-henkan-start-point) )
|
|
1927 (skk-kakutei) )))
|
|
1928
|
|
1929 (defadvice abort-recursive-edit (around skk-ad activate)
|
|
1930 "$B"'%b!<%I$G$"$l$P!"8uJd$NI=<($r$d$a$F"&%b!<%I$KLa$9(B ($B8+=P$78l$O;D$9(B)$B!#(B
|
|
1931 $B"&%b!<%I$G$"$l$P!"8+=P$78l$r:o=|$9$k!#(B
|
|
1932 $B>e5-$N$I$A$i$N%b!<%I$G$b$J$1$l$P(B abort-recursive-edit $B$HF1$8F0:n$r$9$k!#(B"
|
|
1933 (cond ((not skk-henkan-on)
|
|
1934 (with-current-buffer (skk-minibuffer-origin)
|
|
1935 (skk-set-cursor-properly) )
|
|
1936 ad-do-it )
|
|
1937 (skk-henkan-active
|
|
1938 (setq skk-henkan-count 0)
|
|
1939 (if (and skk-delete-okuri-when-quit skk-henkan-okurigana)
|
|
1940 (let ((count (/ (length skk-henkan-okurigana) skk-kanji-len)))
|
|
1941 (skk-previous-candidate)
|
|
1942 ;; $B$3$3$G$O(B delete-backward-char $B$KBhFs0z?t$rEO$5$J$$J}$,%Y%?!<!)(B
|
|
1943 (delete-backward-char count) )
|
|
1944 (skk-previous-candidate) ))
|
|
1945 (t (if (> (point) skk-henkan-start-point)
|
|
1946 (delete-region (point) skk-henkan-start-point) )
|
|
1947 (skk-kakutei) )))
|
|
1948
|
|
1949 (defadvice newline (around skk-ad activate)
|
|
1950 (if (not (or skk-j-mode skk-abbrev-mode))
|
|
1951 ad-do-it
|
|
1952 (let ((arg (ad-get-arg 0))
|
|
1953 ;; skk-kakutei $B$r<B9T$9$k$H(B skk-henkan-on $B$NCM$,L5>r7o$K(B nil $B$K$J$k(B
|
|
1954 ;; $B$N$G!"J]B8$7$F$*$/I,MW$,$"$k!#(B
|
|
1955 (no-newline (and skk-egg-like-newline skk-henkan-on))
|
|
1956 (auto-fill-function auto-fill-function) )
|
|
1957 (if (not (interactive-p))
|
|
1958 (setq auto-fill-function nil) )
|
|
1959 (if (skk-kakutei)
|
|
1960 ;; skk-do-auto-fill $B$K$h$C$F9T$,@^$jJV$5$l$?$i(B arg $B$r(B 1 $B$D8:$i$9!#(B
|
|
1961 ;; fill $B$5$l$F$b(B nil $B$,5"$C$F$/$k(B :-<
|
|
1962 (setq arg (1- arg)) )
|
|
1963 (if (not no-newline)
|
|
1964 (progn
|
|
1965 (ad-set-arg 0 arg)
|
|
1966 ad-do-it )))))
|
|
1967
|
|
1968 (defadvice newline-and-indent (around skk-ad activate)
|
|
1969 (if (and skk-egg-like-newline skk-henkan-on)
|
|
1970 (newline)
|
|
1971 ad-do-it))
|
|
1972
|
|
1973 (defadvice exit-minibuffer (around skk-ad activate)
|
|
1974 (if (not (or skk-j-mode skk-abbrev-mode))
|
|
1975 ad-do-it
|
|
1976 (let ((no-newline (and skk-egg-like-newline skk-henkan-on)))
|
|
1977 (if skk-mode (skk-kakutei))
|
|
1978 (or no-newline ad-do-it) )))
|
|
1979
|
|
1980 (defadvice delete-backward-char (around skk-ad activate)
|
|
1981 "$B8=:_$N%]%$%s%H$+$iLa$C$F(B COUNT $BJ8;z$r>C5n$9$k!#(B"
|
|
1982 (let ((count (or (prefix-numeric-value (ad-get-arg 0)) 1)))
|
|
1983 (cond ((and skk-henkan-on (>= skk-henkan-start-point (point)))
|
|
1984 (setq skk-henkan-count 0)
|
|
1985 (skk-kakutei) )
|
|
1986 (skk-henkan-active
|
|
1987 (if (and (not skk-delete-implies-kakutei)
|
|
1988 (= skk-henkan-end-point (point)) )
|
|
1989 (skk-previous-candidate)
|
|
1990 ;;(if skk-use-face (skk-henkan-face-off))
|
|
1991 ;; overwrite-mode $B$GA43QJ8;zA43QJ8;z$K0O$^$l!"$+$DD>A0$NJ8;z$,A4(B
|
|
1992 ;; $B3QJ8;z$G$"$k%]%$%s%H$G(B delete-backward-char $B$r;H$&$H!"A43QJ8;z(B
|
|
1993 ;; $B$O>C$9$,H>3QJ8;zJ,$7$+(B backward $BJ}8~$K%]%$%s%H$,La$i$J$$(B
|
|
1994 ;; (Emacs 19.31 $B$K$F3NG'(B)$B!#JQ49Cf$N8uJd$KBP$7$F$O(B
|
|
1995 ;; delete-backward-char $B$GI,$:A43QJ8;z(B 1 $BJ8;zJ,(B backward $BJ}8~$KLa$C(B
|
|
1996 ;; $B$?J}$,NI$$!#(B
|
|
1997 (if overwrite-mode
|
|
1998 (progn
|
|
1999 (backward-char count)
|
|
2000 (delete-char count) )
|
|
2001 ad-do-it )
|
|
2002 (if (>= skk-henkan-end-point (point)) (skk-kakutei)) ))
|
|
2003 ;; $BF~NOCf$N8+=P$78l$KBP$7$F$O(B delete-backward-char $B$GI,$:A43QJ8;z(B 1
|
|
2004 ;; $BJ8;zJ,(B backward $BJ}8~$KLa$C$?J}$,NI$$!#(B
|
|
2005 ((and skk-henkan-on overwrite-mode)
|
|
2006 (backward-char count)
|
|
2007 (delete-char count) )
|
|
2008 (t ad-do-it) )))
|
|
2009
|
|
2010 (defadvice save-buffers-kill-emacs (before skk-ad activate)
|
|
2011 "SKK $B<-=q$r%;!<%V$7$F!"(BEmacs $B$r=*N;$9$k!#(B
|
|
2012 $B%;!<%V8e!"(Bskk-before-kill-emacs-hook $B$r<B9T$7$F$+$i(B Emacs $B$r%-%k$9$k!#(B"
|
|
2013 ;; defadvice $B$9$k:]!"Ho(B advice $B4X?t$H$O0c$&J}K!$G0z?tEO$7$r$7$?$$>l9g0J30$O!"(B
|
|
2014 ;; interactive + descripter $B$OMW$i$J$$$_$?$$!#(B
|
|
2015 ;;(interactive "P")
|
|
2016 (skk-save-jisyo)
|
|
2017 (run-hooks 'skk-before-kill-emacs-hook) )
|
|
2018
|
|
2019 (defadvice picture-mode-exit (before skk-ad activate)
|
|
2020 "SKK $B$N%P%C%U%!%m!<%+%kJQ?t$rL58z$K$7!"(Bpicture-mode-exit $B$r%3!<%k$9$k!#(B
|
|
2021 picture-mode $B$+$i=P$?$H$-$K$=$N%P%C%U%!$G(B SKK $B$r@5>o$KF0$+$9$?$a$N=hM}!#(B"
|
|
2022 (if skk-mode (skk-kill-local-variables)) )
|
|
2023
|
|
2024 (defadvice undo (before skk-ad activate)
|
|
2025 "SKK $B%b!<%I$,(B on $B$J$i(B skk-self-insert-non-undo-count $B$r=i4|2=$9$k!#(B"
|
|
2026 (if skk-mode
|
|
2027 (setq skk-self-insert-non-undo-count 0) ))
|
|
2028
|
|
2029 (defadvice kill-buffer (around skk-ad activate)
|
|
2030 "SKK $B$N"'%b!<%I$@$C$?$i!"3NDj$7$F$+$i%P%C%U%!$r%-%k$9$k!#(B
|
|
2031 $B%P%C%U%!$N%-%k8e!"(BSKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2032 (if skk-mode
|
|
2033 (and skk-henkan-on (skk-kakutei)) )
|
|
2034 ad-do-it
|
|
2035 ;; $BJL$N%P%C%U%!$XHt$V%3%^%s%I$O(B skk-mode $B$,(B nil $B$G$b%+!<%=%k?'$rD4@0$9$kI,MW(B
|
|
2036 ;; $B$,$"$k!#(B
|
|
2037 (skk-set-cursor-properly) )
|
|
2038
|
|
2039 (defadvice overwrite-mode (after skk-ad activate)
|
|
2040 (if skk-use-cursor-change
|
|
2041 (skk-change-cursor-when-ovwrt) ))
|
|
2042
|
|
2043 (defadvice eval-expression (before skk-ad activate)
|
|
2044 (if skk-mode (skk-mode-off)) )
|
|
2045
|
|
2046 (defadvice query-replace-regexp (before skk-ad activate)
|
|
2047 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2048 (add-hook 'minibuffer-setup-hook 'skk-setup-minibuffer) )
|
|
2049
|
|
2050 (defadvice query-replace (before skk-ad activate)
|
|
2051 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2052 (add-hook 'minibuffer-setup-hook 'skk-setup-minibuffer) )
|
|
2053
|
|
2054 (defadvice goto-line (after skk-ad activate)
|
|
2055 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2056 (and skk-mode (skk-set-cursor-properly)) )
|
|
2057
|
|
2058 (defadvice yank (after skk-ad activate)
|
|
2059 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2060 (and skk-mode (skk-set-cursor-properly)) )
|
|
2061
|
|
2062 (defadvice yank-pop (after skk-ad activate)
|
|
2063 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2064 (and skk-mode (skk-set-cursor-properly)) )
|
|
2065
|
|
2066 (defadvice recenter (after skk-ad activate)
|
|
2067 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2068 (and skk-mode (skk-set-cursor-properly)) )
|
|
2069
|
|
2070 ;; $BJL$N%P%C%U%!$XHt$V%3%^%s%I$O(B skk-mode $B$,(B nil $B$G$b%+!<%=%k?'$rD4@0$9$kI,MW$,(B
|
|
2071 ;; $B$"$k!#(B
|
|
2072 (defadvice bury-buffer (after skk-ad activate)
|
|
2073 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2074 (skk-set-cursor-properly) )
|
|
2075
|
|
2076 (defadvice switch-to-buffer (after skk-ad activate)
|
|
2077 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2078 (skk-set-cursor-properly) )
|
|
2079
|
|
2080 ;; cover to hilit19 functions.
|
|
2081 ;; forward advice $B$H(B automatic advice activation $B5!G=$,$"$k$+$i!"(Bhilit19.el
|
|
2082 ;; $B$N%m!<%IA0$K(B defadvice $B$7$F$bBg>fIW!#(B
|
|
2083 ;;(if (not (fboundp 'hilit-add-pattern))
|
|
2084 ;; nil
|
|
2085 (defadvice hilit-yank (after skk-ad activate)
|
|
2086 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2087 (and skk-mode (skk-set-cursor-properly)) )
|
|
2088
|
|
2089 (defadvice hilit-yank-pop (after skk-ad activate)
|
|
2090 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2091 (and skk-mode (skk-set-cursor-properly)) )
|
|
2092
|
|
2093 (defadvice hilit-recenter (after skk-ad activate)
|
|
2094 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2095 (and skk-mode (skk-set-cursor-properly)) )
|
|
2096
|
|
2097 (defadvice execute-extended-command (after skk-ad activate)
|
|
2098 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2099 (skk-set-cursor-properly) )
|
|
2100
|
|
2101 (defadvice pop-to-buffer (after skk-ad activate)
|
|
2102 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2103 (skk-set-cursor-properly) )
|
|
2104
|
|
2105 ;; abort-recursive-edit $B$G$O!"(Bafter original command $B$X0\9T$9$kA0$K%"%\!<%H(B
|
|
2106 ;; $B$7$F$7$^$&!#(B
|
|
2107 ;;(defadvice abort-recursive-edit (after skk-ad activate)
|
|
2108 ;; "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2109 ;; (skk-set-cursor-properly) )
|
|
2110 ;;
|
|
2111 (defadvice abort-recursive-edit (before skk-ad activate)
|
|
2112 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2113 ;; $BJ#?t$N(B window $B$r3+$$$F$$$k>l9g$J$I$O!"8mF0:n$N2DG=@-$"$j!#(B
|
|
2114 (with-current-buffer (skk-minibuffer-origin)
|
|
2115 (skk-set-cursor-properly) ))
|
|
2116
|
|
2117 (defadvice other-window (after skk-ad activate)
|
|
2118 "SKK $B$N%b!<%I$K=>$$%+!<%=%k$N?'$rJQ$($k!#(B"
|
|
2119 (skk-set-cursor-properly) )
|
|
2120
|
|
2121 (if skk-xemacs
|
|
2122 ;; XEmacs has minibuffer-keyboard-quit that has nothing to do with delsel.
|
|
2123 (defadvice minibuffer-keyboard-quit (around skk-ad activate)
|
|
2124 (cond ((or (string= skk-henkan-key "") (not skk-henkan-on))
|
|
2125 (with-current-buffer (skk-minibuffer-origin)
|
|
2126 (skk-set-cursor-properly) )
|
|
2127 ad-do-it )
|
|
2128 (skk-henkan-active
|
|
2129 (setq skk-henkan-count 0)
|
|
2130 (if (and skk-delete-okuri-when-quit skk-henkan-okurigana)
|
|
2131 (let ((count (/ (length skk-henkan-okurigana) skk-kanji-len)))
|
|
2132 (skk-previous-candidate)
|
|
2133 ;; $B$3$3$G$O(B delete-backward-char $B$KBhFs0z?t$rEO$5$J$$J}$,%Y%?!<!)(B
|
|
2134 (delete-backward-char count) )
|
|
2135 (skk-previous-candidate) ))
|
|
2136 (t (if (> (point) skk-henkan-start-point)
|
|
2137 (delete-region (point) skk-henkan-start-point) )
|
|
2138 (skk-kakutei) )))
|
|
2139 (defadvice minibuffer-keyboard-quit (around skk-ad activate)
|
|
2140 ;; for delsel.el
|
|
2141 (if (and skk-mode
|
|
2142 (not (and
|
|
2143 delete-selection-mode transient-mark-mode mark-active )))
|
|
2144 (keyboard-quit)
|
|
2145 ad-do-it )))
|
|
2146
|
|
2147 ;;;; mode setup
|
|
2148
|
|
2149 ;;;###skk-autoload
|
|
2150 (defun skk-mode (&optional arg)
|
|
2151 "$BF|K\8lF~NO%b!<%I!#(B
|
|
2152 $B%^%$%J!<%b!<%I$N0l<o$G!"%*%j%8%J%k$N%b!<%I$K$O1F6A$rM?$($J$$!#(B
|
|
2153 $BIi$N0z?t$rM?$($k$H(B SKK $B%b!<%I$+$iH4$1$k!#(B
|
|
2154
|
|
2155 An input mode for Japanese, converting romanized phonetic strings to kanji.
|
|
2156
|
|
2157 A minor mode, it should not affect the use of any major mode or
|
|
2158 orthogonal minor modes.
|
|
2159
|
|
2160 In the initial SKK mode, hiragana submode, the mode line indicator is
|
|
2161 $B!V$+$J!W(B. Lowercase romaji entry is automatically converted to
|
|
2162 hiragana where possible. The lowercase characters `q' and `l' change
|
|
2163 submodes of SKK, and `x' is used as a prefix indicating a small kana.
|
|
2164
|
|
2165 `q' is used to toggle between hiragana and katakana (mode line
|
|
2166 indicator $B!V%+%J!W(B) entry submodes.
|
|
2167
|
|
2168 `l' is used to enter ASCII submode (mode line indicator \"SKK\").
|
|
2169 Uppercase `L' enters zenkaku (wide) ASCII submode (mode line indicator
|
|
2170 $B!VA41Q!W(B). `\C-j' returns to hiragana submode from either ASCII submode.
|
|
2171
|
|
2172 Kanji conversion is complex, but the basic principle is that the user
|
|
2173 signals the appropriate stem to be matched against dictionary keys by
|
|
2174 the use of uppercase letters. Because SKK does not use grammatical
|
|
2175 information, both the beginning and the end of the stem must be marked.
|
|
2176
|
|
2177 For non-inflected words (eg, nouns) consisting entirely of kanji, the
|
|
2178 simplest way to invoke conversion is to enter the reading of the kanji,
|
|
2179 the first character only in uppercase. A leading $B!V"&!W(B indicates that
|
|
2180 kanji conversion is in progress. After entering the reading, press
|
|
2181 space. This invokes dictionary lookup, and the hiragana reading will be
|
|
2182 redisplayed in kanji as the first candidate. Pressing space again gives
|
|
2183 the next candidate. Further presses of space produce further candidates,
|
|
2184 as well as a list of the next few candidates in the minibuffer. Eg,
|
|
2185 \"Benri\" => $B!V"&$Y$s$j!W(B, and pressing space produces $B!V"'JXMx!W(B (the solid
|
|
2186 triangle indicates that conversion is in progress). Backspace steps
|
|
2187 through the candidate list in reverse.
|
|
2188
|
|
2189 A candidate can be accepted by pressing `\C-j', or by entering a
|
|
2190 self-inserting character. (Unlike other common Japanese input methods,
|
|
2191 RET not only accepts the current candidate, but also inserts a line
|
|
2192 break.)
|
|
2193
|
|
2194 Inflected words (verbs and adjectives), like non-inflected words, begin
|
|
2195 entry with a capital letter. However, for these words the end of the
|
|
2196 kanji string is signaled by capitalizing the next mora. Eg, \"TuyoI\"
|
|
2197 => $B!V"'6/$$!W(B. If no candidate is available at that point, the inflection
|
|
2198 point will be indicated with an asterisk \"*\", and trailing characters
|
|
2199 will be displayed until a candidate is recognized. It will be
|
|
2200 immediately displayed (pressing space is not necessary). Space and
|
|
2201 backspace are used to step forward and backward through the list of
|
|
2202 candidates.
|
|
2203
|
|
2204 For more information, see the `skk' topic in Info. (Japanese only.)
|
|
2205
|
|
2206 A tutorial is available in Japanese or English via \"M-x skk-tutorial\".
|
|
2207 Use a prefix argument to be prompted for the language. The default is
|
|
2208 system-dependent.
|
|
2209 "
|
|
2210
|
|
2211 (interactive "P")
|
|
2212 (setq skk-mode (cond ((null arg) (not skk-mode))
|
|
2213 ;; - $B$O(B -1 $B$KJQ49$5$l$k!#(B
|
|
2214 ((> (prefix-numeric-value arg) 0) t) ))
|
|
2215 (if (not skk-mode)
|
|
2216 ;; exit skk-mode
|
|
2217 (progn
|
|
2218 (let ((skk-mode t)) (skk-kakutei))
|
|
2219 (skk-mode-off) )
|
|
2220 ;; enter skk-mode
|
|
2221 (if (not skk-mode-invoked)
|
|
2222 ;; enter skk-mode for the first time in this session
|
|
2223 (progn
|
|
2224 (setq skk-mode-invoked t)
|
|
2225 (skk-setup-init-file)
|
|
2226 (load skk-init-file t)
|
|
2227 (if skk-keep-record
|
|
2228 (skk-create-file
|
|
2229 skk-record-file
|
|
2230 (if skk-japanese-message-and-error
|
|
2231 "SKK $B$N5-O?MQ%U%!%$%k$r:n$j$^$7$?(B"
|
|
2232 "I have created an SKK record file for you" )))
|
|
2233 (skk-create-file
|
|
2234 skk-jisyo (if skk-japanese-message-and-error
|
|
2235 "SKK $B$N6u<-=q$r:n$j$^$7$?(B"
|
|
2236 "I have created an empty SKK Jisyo file for you" ))
|
|
2237 (skk-get-jisyo-buffer skk-jisyo 'nomsg) ))
|
|
2238 ;;$B0J2<$O(B skk-mode $B$KF~$k$?$S$KKhEY%3!<%k$5$l$k%3!<%I!#(B
|
|
2239 ;;(if (boundp 'disable-undo)
|
|
2240 ;; (make-local-variable 'disable-undo) )
|
|
2241 (cond (skk-use-vip (skk-vip-mode))
|
|
2242 (skk-use-viper
|
|
2243 (require 'skk-viper)
|
|
2244 (funcall skk-viper-normalize-map-function) ))
|
|
2245 (if (and (not (featurep 'skk-server))
|
|
2246 (or (and (boundp 'skk-server-host) skk-server-host)
|
|
2247 (and (boundp 'skk-servers-list) skk-servers-list)
|
|
2248 (getenv "SKKSERVER")
|
|
2249 (getenv "SKKSERV") ))
|
|
2250 (require 'skk-server) )
|
|
2251 ;; $B%f!<%6!<JQ?t$K4X$9$k$b$N$O!"%f!<%6!<$,$$$D!"$=$l$i$NJQ?t$rJQ99$9$k$+M=(B
|
|
2252 ;; $BB,$,IU$+$J$$$N$G!"(Bskk-mode $B$KF~$k$?$S$K@_Dj$7$J$*$7$F$$$k!#(B
|
|
2253 (if (featurep 'skk-server)
|
|
2254 ;; skk-search-server $B$O%5!<%P!<$,Mn$A$F$b;H$($k$N$G!"30$5$J$$!#(B
|
|
2255 (skk-adjust-search-prog-list-for-server-search 'non-del) )
|
|
2256 (if skk-auto-okuri-process
|
|
2257 (skk-adjust-search-prog-list-for-auto-okuri) )
|
|
2258 (if skk-use-relation
|
|
2259 (progn
|
|
2260 (require 'skk-attr)
|
|
2261 (setq skk-search-prog-list
|
|
2262 (cons '(skk-search-relation) skk-search-prog-list) )))
|
|
2263 (skk-setup-delete-selection-mode)
|
|
2264 (skk-setup-special-midashi-char)
|
|
2265 (skk-setup-auto-paren)
|
|
2266 (skk-adjust-user-option)
|
|
2267 (define-key minibuffer-local-map skk-kakutei-key 'skk-kakutei)
|
|
2268 ;;(define-key minibuffer-local-map "\C-m" 'skk-newline)
|
|
2269 (define-key minibuffer-local-completion-map skk-kakutei-key 'skk-kakutei)
|
|
2270 ;;(define-key minibuffer-local-completion-map "\C-m" 'skk-newline)
|
|
2271 ;; XEmacs doesn't have minibuffer-local-ns-map
|
|
2272 (if (boundp 'minibuffer-local-ns-map)
|
|
2273 ;;(define-key minibuffer-local-ns-map "\C-m" 'skk-newline)
|
|
2274 (define-key minibuffer-local-ns-map skk-kakutei-key 'skk-kakutei) )
|
|
2275 (skk-j-mode-on)
|
|
2276 (run-hooks 'skk-mode-hook) ))
|
|
2277
|
|
2278 ;;;###skk-autoload
|
|
2279 (defun skk-auto-fill-mode (&optional arg)
|
|
2280 "$BF|K\8lF~NO%b!<%I!#<+F0@^$jJV$75!G=IU$-!#(B
|
|
2281 $B%^%$%J!<%b!<%I$N0l<o$G!"%*%j%8%J%k$N%b!<%I$K$O1F6A$rM?$($J$$!#(B
|
|
2282 $B@5$N0z?t$rM?$($k$H!"6/@)E*$K(B auto-fill-mode $B5Z$S(B SKK $B%b!<%I$KF~$k!#(B
|
|
2283 $BIi$N0z?t$rM?$($k$H(B auto-fill-mode $B5Z$S(B SKK $B%b!<%I$+$iH4$1$k!#(B"
|
|
2284 (interactive "P")
|
|
2285 (let ((auto-fill
|
|
2286 (cond ((null arg) (not auto-fill-function))
|
|
2287 ((> (prefix-numeric-value arg) 0) t) )))
|
|
2288 (auto-fill-mode (if auto-fill 1 -1))
|
|
2289 (skk-mode arg)
|
|
2290 (skk-set-cursor-color (if skk-mode
|
|
2291 skk-hirakana-cursor-color
|
|
2292 skk-default-cursor-color ))
|
|
2293 (run-hooks 'skk-auto-fill-mode-hook) ))
|
|
2294
|
|
2295 (defun skk-kill-emacs-without-saving-jisyo (&optional query)
|
|
2296 "SKK $B<-=q$r%;!<%V$7$J$$$G!"(BEmacs $B$r=*N;$9$k!#(B
|
|
2297 skk-before-kill-emacs-hook $B$r<B9T$7$F$+$i(B Emacs $B$r%-%k$9$k!#(B"
|
|
2298 (interactive "P")
|
|
2299 ;; format $B$r0z?t$K;}$?$;$?>l9g$O!"(Bskk-yes-or-no-p $B$r;H$&$H$+$($C$F>iD9$K$J$k!#(B
|
|
2300 (if (yes-or-no-p
|
|
2301 (format (if skk-japanese-message-and-error
|
|
2302 "$B<-=q$NJ]B8$r$;$:$K(B %s $B$r=*N;$7$^$9!#NI$$$G$9$+!)(B"
|
|
2303 "Do you really wish to kill %s without saving Jisyo? " )
|
|
2304 (cond (skk-mule "Mule")
|
|
2305 (skk-xemacs "XEmacs")
|
|
2306 (t "Emacs") )))
|
|
2307 (let ((buff (skk-get-jisyo-buffer skk-jisyo 'nomsg)))
|
|
2308 (if buff
|
|
2309 (progn (set-buffer buff)
|
|
2310 (set-buffer-modified-p nil)
|
|
2311 (kill-buffer buff) ))
|
|
2312 (run-hooks 'skk-before-kill-emacs-hook)
|
|
2313 (ad-remove-advice 'save-buffers-kill-emacs 'before 'skk-ad)
|
|
2314 (ad-activate 'save-buffers-kill-emacs)
|
|
2315 (save-buffers-kill-emacs query) )))
|
|
2316
|
|
2317 (defun skk-setup-init-file ()
|
|
2318 ;; skk-byte-compile-init-file $B$,(B non-nil $B$N>l9g$G!"(Bskk-init-file $B$r%P%$%H%3(B
|
|
2319 ;; $B%s%Q%$%k$7$?%U%!%$%k$,B8:_$7$J$$$+!"$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$h$j(B
|
|
2320 ;; skk-init-file $B$NJ}$,?7$7$$$H$-$O!"(Bskk-init-file $B$r%P%$%H%3%s%Q%$%k$9$k!#(B
|
|
2321 ;;
|
|
2322 ;; skk-byte-compile-init-file $B$,(B nil $B$N>l9g$G!"(Bskk-init-file $B$r%P%$%H%3%s%Q(B
|
|
2323 ;; $B%$%k$7$?%U%!%$%k$h$j(B skk-init-file $B$NJ}$,?7$7$$$H$-$O!"$=$N%P%$%H%3%s%Q%$(B
|
|
2324 ;; $B%k:Q%U%!%$%k$r>C$9!#(B
|
|
2325 (save-match-data
|
|
2326 (let* ((init-file (expand-file-name skk-init-file))
|
|
2327 (elc (concat init-file
|
|
2328 (if (string-match "\\.el$" init-file)
|
|
2329 "c"
|
|
2330 ".elc" ))))
|
|
2331 (if skk-byte-compile-init-file
|
|
2332 (if (and (file-exists-p init-file)
|
|
2333 (or (not (file-exists-p elc))
|
|
2334 (file-newer-than-file-p init-file elc) ))
|
|
2335 (save-window-excursion ;; for keep window configuration.
|
|
2336 (skk-message "%s $B$r%P%$%H%3%s%Q%$%k$7$^$9!#(B"
|
|
2337 "Byte-compile %s"
|
|
2338 skk-init-file )
|
|
2339 (sit-for 2)
|
|
2340 (byte-compile-file init-file) ))
|
|
2341 (if (and (file-exists-p init-file)
|
|
2342 (file-exists-p elc)
|
|
2343 (file-newer-than-file-p init-file elc) )
|
|
2344 (delete-file elc) )))))
|
|
2345
|
|
2346 ;;
|
|
2347 ;;(skk-setup-special-midashi-char skk-minibuff-map)
|
|
2348
|
|
2349 ;;;###skk-autoload
|
|
2350 (defun skk-emulate-original-map (arg)
|
|
2351 ;; $B%-!<F~NO$KBP$7$F!"(BSKK $B$N%b!<%I$G$O$J$/!"(BEmacs $B$N%*%j%8%J%k$N%-!<3d$jIU$1$G(B
|
|
2352 ;; $B%3%^%s%I$r<B9T$9$k!#(B
|
|
2353 (let ((prefix-arg arg)
|
|
2354 (keys (skk-command-key-sequence (this-command-keys) this-command)) )
|
|
2355 (if (not keys)
|
|
2356 ;; no alternative commands. may be invoked by M-x.
|
|
2357 nil
|
|
2358 (let (skk-mode skk-ascii-mode skk-j-mode skk-abbrev-mode skk-zenkaku-mode
|
|
2359 command )
|
|
2360 (setq command (key-binding keys))
|
|
2361 (if (eq command this-command)
|
|
2362 ;; avoid recursive calling of skk-emulate-original-map.
|
|
2363 nil
|
|
2364 ;; if no bindings are found, call `undefined'. it's
|
|
2365 ;; original behaviour.
|
|
2366 (skk-cancel-undo-boundary)
|
|
2367 (command-execute (or command (function undefined))))))))
|
|
2368
|
|
2369 (defun skk-command-key-sequence (key command)
|
|
2370 ;; KEY $B$+$i(B universal arguments $B$r<h$j=|$-!"(BCOMMAND $B$r<B9T$9$k%-!<$rJV$9!#(B
|
|
2371 ;; `execute-extended-command' $B$K$h$C$F%3%^%s%I$,<B9T$5$l$?>l9g$O!"(Bnil $B$rJV$9!#(B
|
|
2372 (while (not (or (zerop (length key))
|
|
2373 (eq command (key-binding key))))
|
|
2374 (setq key (vconcat (cdr (append key nil)))))
|
|
2375 (and (not (zerop (length key))) key))
|
|
2376
|
|
2377 (defun skk-setup-special-midashi-char ()
|
|
2378 ;; skk-special-midashi-char-list $B$K;XDj$5$l$?(B char $B$r(B skk-j-mode-map $B$N(B
|
|
2379 ;; skk-set-henkan-point $B$K3d$jIU$1$k!#(Bskk-special-midashi-char-list $B$K;XDj$5(B
|
|
2380 ;; $B$l$?(B char $B$G!"@\F,<-!"@\Hx<-$NF~NO$r2DG=$K$9$k$?$a$N=hM}!#(B
|
|
2381 (let ((strlist (mapcar 'char-to-string skk-special-midashi-char-list))
|
|
2382 ;; Use default-value for Viper. It localizes minor-mode-map-alist.
|
|
2383 (map (cdr (assq 'skk-j-mode (default-value 'minor-mode-map-alist))))
|
|
2384 str )
|
|
2385 (while strlist
|
|
2386 (setq str (car strlist))
|
|
2387 (if (not (eq 'skk-set-henkan-point (lookup-key map str)))
|
|
2388 (define-key map str 'skk-set-henkan-point) )
|
|
2389 (setq strlist (cdr strlist)) )))
|
|
2390
|
|
2391 (defun skk-setup-delete-selection-mode ()
|
|
2392 ;; Delete Selection $B%b!<%I$,(B SKK $B$r;H$C$?F|K\8lF~NO$KBP$7$F$b5!G=$9$k$h$&$K(B
|
|
2393 ;; $B%;%C%H%"%C%W$9$k!#(B
|
|
2394 (if (and (featurep 'delsel)
|
|
2395 (not (get 'skk-insert-a 'delete-selection)) )
|
|
2396 (progn
|
|
2397 ;;(put 'skk-delete-backward-char 'delete-selection 'supersede)
|
|
2398 (mapcar (function (lambda (func) (put func 'delete-selection t)))
|
|
2399 '(skk-input-by-code-or-menu
|
|
2400 skk-insert-comma
|
|
2401 skk-insert-period
|
|
2402 skk-kana-input
|
|
2403 ;;skk-newline
|
|
2404 ;;skk-set-henkan-point-subr
|
|
2405 skk-set-henkan-point
|
|
2406 skk-self-insert
|
|
2407 skk-today )))))
|
|
2408
|
|
2409 (defun skk-setup-auto-paren ()
|
|
2410 ;; skk-auto-paren-string-alist $B$NCf$+$i!"(Bskk-special-midashi-char-list
|
|
2411 ;; $B$NMWAG$K4XO"$9$k$b$N$r<h$j=|$/!#(B
|
|
2412 ;; $B$^$?!"(Bskk-auto-paren-string-alist $B$N3FMWAG$N(B car $B$NJ8;z$,(B ascii char $B$G$"(B
|
|
2413 ;; $B$k>l9g$O!"(Bskk-input-vector $B$N3:Ev$N>l=j(B ($B$=$N(B ascii char $B$rI>2A$7$??t$,%$(B
|
|
2414 ;; $B%s%G%/%9$H$J$k(B) $B$K$=$NJ8;z$r=q$-9~$`(B ($BK\Mh$O(B ascii char $B$O(B
|
|
2415 ;; skk-input-vector $B$K=q$/I,MW$,$J$$$,!"(Bskk-auto-paren-string-alist $B$K;XDj$5(B
|
|
2416 ;; $B$l$?BP$K$J$kJ8;z$NA^F~$N$?$a$K$O!"%-!<$H$J$kJ8;z$r=q$$$F$*$/I,MW$,$"$k(B)$B!#(B
|
|
2417 (if (null skk-auto-paren-string-alist)
|
|
2418 nil
|
|
2419 (let ((strlist (mapcar 'char-to-string skk-special-midashi-char-list))
|
|
2420 cell str alist )
|
|
2421 (while strlist
|
|
2422 (setq cell (assoc (car strlist) skk-auto-paren-string-alist))
|
|
2423 (if cell
|
|
2424 ;; assoc $B$GCj=P$7$?(B cell $B$rD>@\;XDj$7$F$$$k$N$G!"(Bdelete $B$G$J$/$H$bBg(B
|
|
2425 ;; $B>fIW!#(B
|
|
2426 (setq skk-auto-paren-string-alist
|
|
2427 (delq cell skk-auto-paren-string-alist) ))
|
|
2428 (setq strlist (cdr strlist)) )
|
|
2429 (setq alist skk-auto-paren-string-alist)
|
|
2430 (while alist
|
|
2431 (setq str (car (car alist)))
|
|
2432 (if (and (eq (string-width str) 1)
|
|
2433 ;; $B4{$K%f!<%6!<$,;XDj$7$F$$$k>l9g$O!"$I$s$JJ8;z$G$"$C$F$b(B ($B%-!<(B
|
|
2434 ;; $B$H$J$kJ8;z$H$O0c$C$F$$$F$b(B)$B!"2?$b$7$J$$!#(B
|
|
2435 (not (aref skk-input-vector (string-to-char str))) )
|
|
2436 (aset skk-input-vector (string-to-char str) str) )
|
|
2437 (setq alist (cdr alist)) ))))
|
|
2438
|
|
2439 (defun skk-adjust-user-option ()
|
|
2440 ;; $BN>N)$G$-$J$$%*%W%7%g%s$ND4@0$r9T$J$&!#(B
|
|
2441 (if skk-process-okuri-early
|
|
2442 ;; skk-process-okuri-early $B$NCM$,(B non-nil $B$G$"$k$H$-$K2<5-$NCM$,(B non-nil
|
|
2443 ;; $B$G$"$l$P@5>o$KF0$+$J$$$N$G$3$NJQ?t$NM%@h=g0L$r9b$/$7$?!#(B
|
|
2444 (setq skk-kakutei-early nil
|
|
2445 skk-auto-okuri-process nil
|
|
2446 skk-henkan-okuri-strictly nil
|
|
2447 skk-henkan-strict-okuri-precedence nil)))
|
|
2448
|
|
2449 (defun skk-try-completion (arg)
|
|
2450 "$B"&%b!<%I$G8+=P$78l$NJd40$r9T$&!#(B
|
|
2451 $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!#(B"
|
|
2452 (interactive "P")
|
|
2453 (if (and skk-henkan-on (not skk-henkan-active))
|
|
2454 (progn
|
|
2455 (setq this-command 'skk-completion)
|
|
2456 (skk-completion (not (eq last-command 'skk-completion))) )
|
|
2457 (skk-emulate-original-map arg) ))
|
|
2458
|
|
2459 (defun skk-ascii-mode ()
|
|
2460 "SKK $B$N%b!<%I$r(B ascii $B%b!<%I$KJQ99$9$k!#(B"
|
|
2461 (interactive)
|
|
2462 (skk-kakutei)
|
|
2463 (skk-ascii-mode-on) )
|
|
2464
|
|
2465 (defun skk-zenkaku-mode ()
|
|
2466 "SKK $B$N%b!<%I$rA43Q1Q;zF~NO%b!<%I$KJQ99$9$k!#(B"
|
|
2467 (interactive)
|
|
2468 (skk-kakutei)
|
|
2469 (skk-zenkaku-mode-on) )
|
|
2470
|
|
2471 (defun skk-abbrev-mode ()
|
|
2472 "ascii $BJ8;z$r%-!<$K$7$?JQ49$r9T$&$?$a$NF~NO%b!<%I!#(B"
|
|
2473 (interactive "*")
|
|
2474 (if (and skk-henkan-on (not skk-henkan-active))
|
|
2475 (skk-error "$B4{$K"&%b!<%I$KF~$C$F$$$^$9(B" "Already in $B"&(B mode") )
|
|
2476 (skk-kakutei)
|
|
2477 (skk-set-henkan-point-subr)
|
|
2478 (skk-abbrev-mode-on) )
|
|
2479
|
|
2480 (defun skk-toggle-kana (arg)
|
|
2481 "$B$R$i$,$J%b!<%I$H%+%?%+%J%b!<%I$r%H%0%k$G@Z$jBX$($k!#(B
|
|
2482 $B%+%?%+%J%b!<%I$GJQ49$r9T$J$&$H$-$K!"Aw$j2>L>$r%+%?%+%J$KJQ49$7$?$/$J$$$H$-$O!"(B
|
|
2483 skk-convert-okurigana-into-katakana $B$NCM$r(B non-nil $B$K$9$k!#(B
|
|
2484
|
|
2485 $B"&%b!<%I$G$O!"(Bskk-henkan-start-point ($B"&$ND>8e(B) $B$H%+!<%=%k$N4V$NJ8;zNs$r(B
|
|
2486
|
|
2487 $B$R$i$,$J(B <=> $B%+%?%+%J(B
|
|
2488 $BA43Q1Q?t;z(B <=> ascii
|
|
2489
|
|
2490 $B$N$h$&$KJQ49$9$k!#(B"
|
|
2491 (interactive "P")
|
|
2492 (cond ((and skk-henkan-on (not skk-henkan-active))
|
|
2493 (let (char)
|
|
2494 (skk-save-point
|
|
2495 (goto-char skk-henkan-start-point)
|
|
2496 ;; "$B!<(B" $B$G$OJ8;z<oJL$,H=JL$G$-$J$$$N$G!"%]%$%s%H$r?J$a$k!#(B
|
|
2497 (while (looking-at "$B!<(B")
|
|
2498 (skk-forward-char 1) )
|
|
2499 (setq char (skk-what-char-type)) )
|
|
2500 (skk-set-marker skk-henkan-end-point (point))
|
|
2501 (cond ((eq char 'hirakana)
|
|
2502 (skk-katakana-henkan arg) )
|
|
2503 ((eq char 'katakana)
|
|
2504 (skk-hiragana-henkan arg) )
|
|
2505 ((eq char 'ascii)
|
|
2506 (skk-zenkaku-henkan arg) )
|
|
2507 ((eq char 'zenkaku)
|
|
2508 (skk-ascii-henkan arg) ))))
|
|
2509 ((and (skk-in-minibuffer-p) (not skk-j-mode))
|
|
2510 ;; $B%_%K%P%C%U%!$X$N=iFMF~;~!#(B
|
|
2511 (skk-j-mode-on) )
|
|
2512 (t (setq skk-katakana (not skk-katakana))) )
|
|
2513 (skk-kakutei)
|
|
2514 (if skk-katakana
|
|
2515 (progn
|
|
2516 (setq skk-input-mode-string skk-katakana-mode-string)
|
|
2517 (skk-set-cursor-color skk-katakana-cursor-color) )
|
|
2518 (setq skk-input-mode-string skk-hirakana-mode-string)
|
|
2519 (skk-set-cursor-color skk-hirakana-cursor-color) )
|
|
2520 (force-mode-line-update) )
|
|
2521
|
|
2522 (defun skk-misc-for-picture ()
|
|
2523 ;; picture-mode $B$XF~$C$?$H$-$K(B SKK $B$r@5>o$KF0$+$9$?$a$KI,MW$J=hM}$r9T$J$&!#(B
|
|
2524 ;; edit-picture-hook $B$K(B add-hook $B$7$F;HMQ$9$k!#(B
|
|
2525 ;;
|
|
2526 ;; picture-mode $B$G(B SKK $B$r;HMQ$74A;zF~NO$r$7$?>l9g$K!"(BBS $B$GA43QJ8;z$,>C$;$J$$(B
|
|
2527 ;; $B$N$O!"(BSKK $B$NIT6q9g$G$O$J$/!"(Bpicture.el $B$NLdBj(B (move-to-column-force $B4X?t(B
|
|
2528 ;; $B$NCf$G;HMQ$7$F$$$k(B move-to-column $B$GA43QJ8;z$rL5;k$7$?%+%i%`?t$,M?$($i$l(B
|
|
2529 ;; $B$?$H$-$K%+!<%=%k0\F0$,$G$-$J$$$+$i(B) $B$G$"$k!#>C$7$?$$J8;z$K%]%$%s%H$r9g$o(B
|
|
2530 ;; $B$;!"(BC-c C-d $B$G0lJ8;z$E$D>C$9$7$+J}K!$O$J$$!#(B
|
|
2531 (if skk-mode
|
|
2532 ;; SKK $B5/F0A0$N>uBV$KLa$9!#(B
|
|
2533 (skk-kill-local-variables) ))
|
|
2534
|
|
2535 (defun skk-kill-local-variables ()
|
|
2536 ;; SKK $B4XO"$N%P%C%U%!%m!<%+%kJQ?t$rL58z$K$9$k!#(B
|
|
2537 ;; $B4{B8$N%P%C%U%!$r(B picture mode $B$K$7$?$H$-!"(Bpicture-mode $B4X?t$O(B
|
|
2538 ;; kill-all-local-variables $B4X?t$r8F$P$J$$$N$G!"(BSKK $B4XO"$N%P%C%U%!%m!<%+%k(B
|
|
2539 ;; $BJQ?t$,85$N%P%C%U%!$NCM$N$^$^$K$J$C$F$7$^$&!#$=$3$G!"(Bpicture mode $B$KF~$C$?(B
|
|
2540 ;; $B$H$-$K%U%C%/$rMxMQ$7$F$3$l$i$N%P%C%U%!%m!<%+%kJQ?t$r(B kill $B$9$k!#(B
|
|
2541 ;; RMS $B$O(B picture-mode $B$G(B kill-all-local-variables $B4X?t$r8F$P$J$$$N$O!"%P%0(B
|
|
2542 ;; $B$G$O$J$$!"$H8@$C$F$$$?!#(B
|
|
2543 (if (eq (nth 1 mode-line-format) 'skk-mode-line)
|
|
2544 (setq mode-line-format (delq 'skk-mode-line mode-line-format) ))
|
|
2545 (let ((lv (buffer-local-variables))
|
|
2546 v vstr )
|
|
2547 (while lv
|
|
2548 (setq v (car (car lv))
|
|
2549 lv (cdr lv)
|
|
2550 vstr (prin1-to-string v) )
|
|
2551 (if (and
|
|
2552 (> (length vstr) 3) (string= "skk-" (substring vstr 0 4)) )
|
|
2553 (kill-local-variable v) ))))
|
|
2554
|
|
2555 ;;;; kana inputting functions
|
|
2556
|
|
2557 (defun skk-insert (table)
|
|
2558 ;; skk-prefix $B$r%-!<$H$7$F!"O"A[%j%9%H(B TABLE $B$+$iJ8;zNs$rC5$7$FF~NO$9$k!#(B
|
|
2559 (let ((char (assoc skk-prefix table)))
|
|
2560 (if (null char)
|
|
2561 (progn
|
|
2562 ;; skk-prefix not found in the table
|
|
2563 (setq skk-prefix "")
|
|
2564 (skk-unread-event (skk-character-to-event last-command-char)) )
|
|
2565 (if (and skk-henkan-active skk-kakutei-early
|
|
2566 (not skk-process-okuri-early) )
|
|
2567 (skk-kakutei) )
|
|
2568 (skk-insert-str (if skk-katakana (nthcdr 2 char) (nth 1 char)))
|
|
2569 (if skk-okurigana
|
|
2570 (skk-set-okurigana)
|
|
2571 (setq skk-prefix "") )
|
|
2572 (if (not skk-henkan-on) (skk-do-auto-fill)) )))
|
|
2573
|
|
2574 (defun skk-insert-str (str)
|
|
2575 ;; skk-insert $B$N%5%V%k!<%A%s!#(BSTR $B$rA^F~$9$k!#I,MW$G$"$l$P(B
|
|
2576 ;; self-insert-after-hook $B$r%3!<%k$9$k!#(Boverwrite-mode $B$G$"$l$P!"E,@Z$K>e=q$-(B
|
|
2577 ;; $B$r9T$&!#$3$N4X?t$O!"(Bskk-vip.el $B$G>e=q$-$5$l$k(B
|
|
2578 (skk-cancel-undo-boundary)
|
|
2579 (skk-insert-and-inherit str)
|
|
2580 (if (and skk-henkan-on (not skk-henkan-active))
|
|
2581 (if (and skk-auto-start-henkan (not skk-okurigana))
|
|
2582 (skk-auto-start-henkan str) )
|
|
2583 (if (and (boundp 'self-insert-after-hook) self-insert-after-hook)
|
|
2584 (funcall self-insert-after-hook (- (point) (length str)) (point)) )
|
|
2585 (if overwrite-mode
|
|
2586 (skk-del-char-with-pad (skk-ovwrt-len (string-width str))) )))
|
|
2587
|
|
2588 (defun skk-auto-start-henkan (str)
|
|
2589 ;; skk-auto-start-henkan-keyword-list $B$NMWAG$NJ8;zNs$rA^F~$7$?$H$-$K<+F0E*$K(B
|
|
2590 ;; ($B%9%Z!<%9$rBG80$7$J$/$H$b(B) $BJQ49$r3+;O$9$k!#%(!<!_%$%=%U%H<R$N(B MSDOS $BMQ(B $B$N(B
|
|
2591 ;; FEP$B!"(BWX2+ $BIw!#(B
|
|
2592 (if (member str skk-auto-start-henkan-keyword-list)
|
|
2593 (skk-save-point
|
|
2594 (skk-backward-char 1)
|
|
2595 (if (> (point) skk-henkan-start-point)
|
|
2596 (let ((skk-prefix ""))
|
|
2597 (skk-start-henkan (prefix-numeric-value current-prefix-arg)) )))))
|
|
2598
|
|
2599 (defun skk-ovwrt-len (len)
|
|
2600 ;; $B>e=q$-$7$FNI$$D9$5$rJV$9!#(B
|
|
2601 ;; $B$3$N4X?t$O!"(Bskk-vip.el $B$G>e=q$-$5$l$k(B (<(skk-vip.el/skk-ovwrt-len)>)$B!#(B
|
|
2602 (min (string-width
|
|
2603 (skk-buffer-substring (point) (skk-save-point (end-of-line) (point))) )
|
|
2604 len ))
|
|
2605
|
|
2606 (defun skk-del-char-with-pad (length)
|
|
2607 ;; $BD9$5(B LENGTH $B$NJ8;z$r>C5n$9$k!#D4@0$N$?$a!"I,MW$G$"$l$P!"KvHx$K%9%Z!<%9$r(B
|
|
2608 ;; $BA^F~$9$k!#(B
|
|
2609 (let ((p (point)) (len 0))
|
|
2610 (while (< len length)
|
|
2611 (forward-char 1)
|
|
2612 (setq len (string-width (skk-buffer-substring (point) p))))
|
|
2613 (delete-region p (point))
|
|
2614 (or (eq length len)
|
|
2615 (progn
|
|
2616 (insert " ")
|
|
2617 (backward-char 1)))))
|
|
2618
|
|
2619 (defun skk-cancel-undo-boundary ()
|
|
2620 ;; skk-insert-[aiue], skk-insert-comma, skk-insert-period, skk-kana-input,
|
|
2621 ;; skk-self-insert, skk-set-henkan-point, skk-zenkaku-insert $B$GO"B3$7$FF~NO(B
|
|
2622 ;; $B$5$l$?(B 20 $BJ8;z$r(B 1 $B2s$N%"%s%I%%$NBP>]$H$9$k!#(B`20' $B$O(B keyboard.c $B$KDj$a$i(B
|
|
2623 ;; $B$l$?%^%8%C%/%J%s%P!<!#(BMule-2.3 $BE:IU$N(B egg.el $B$r;29M$K$7$?!#(B
|
|
2624 (if (and (< skk-self-insert-non-undo-count 20)
|
|
2625 (memq last-command
|
|
2626 '(
|
|
2627 ;; SKK abbrev $B%b!<%I$G$O!"%"%9%-!<J8;zF~NO$,(B Emacs $B%*%j%8%J(B
|
|
2628 ;; $B%k$N(B self-insert-command $B$K$h$j9T$J$o$l$F$$$k$N$G!"(B
|
|
2629 ;; skk-self-insert-non-undo-count $B$r%$%s%/%j%a%s%H$9$k$3$H(B
|
|
2630 ;; $B$,$G$-$J$$$N$G!"%"%s%I%%$r%(%_%e%l!<%H$G$-$J$$!#(B
|
|
2631 ;; $B$7$+$b!"%+%s%^$d%T%j%*%I$rA^F~$7$?;~E@$G!"(B
|
|
2632 ;; skk-abbrev-comma $B$d(B skk-abbrev-period $B$r;H$&$3$H$K$J$k$N(B
|
|
2633 ;; $B$G!"%*%j%8%J%k$N%"%s%I%%$N5!G=$bB;$J$C$F$7$^$&!#8=<BLdBj(B
|
|
2634 ;; $B$H$7$F$O!"(BSKK abbrev $B%b!<%I$O>JN,7A$H$7$F$N8+=P$78l$rA^(B
|
|
2635 ;; $BF~$9$k$?$a$N%b!<%I$G$"$k$N$G!"D9$$8+=P$78l$rA^F~$9$k$3$H(B
|
|
2636 ;; $B$O$"$^$j$J$/!"LdBj$b>.$5$$$H9M$($i$l$k!#(B
|
|
2637 ;;skk-abbrev-comma
|
|
2638 ;;skk-abbrev-period
|
|
2639 skk-insert-comma
|
|
2640 skk-insert-period
|
|
2641 skk-kana-input
|
|
2642 skk-self-insert
|
|
2643 ;;skk-set-henkan-point
|
|
2644 skk-zenkaku-insert )))
|
|
2645 (progn
|
|
2646 (cancel-undo-boundary)
|
|
2647 (setq skk-self-insert-non-undo-count
|
|
2648 (1+ skk-self-insert-non-undo-count) ))
|
|
2649 (setq skk-self-insert-non-undo-count 1) ))
|
|
2650
|
|
2651 (defun skk-get-next-rule (prefix)
|
|
2652 (or (if (and (boundp 'skk-rom-kana-rule-tree)
|
|
2653 skk-rom-kana-rule-tree )
|
|
2654 (skk-assoc-tree prefix
|
|
2655 skk-rom-kana-rule-tree )
|
|
2656 (cdr (assoc prefix skk-rom-kana-rule-list)) )
|
|
2657 (if (and (boundp 'skk-standard-rom-kana-rule-tree)
|
|
2658 skk-standard-rom-kana-rule-tree)
|
|
2659 (skk-assoc-tree prefix
|
|
2660 skk-standard-rom-kana-rule-tree )
|
|
2661 (cdr (assoc prefix skk-standard-rom-kana-rule-list)) )))
|
|
2662
|
|
2663 (defun skk-get-fallback-rule (prefix)
|
|
2664 (cdr (assoc prefix skk-fallback-rule-alist)) )
|
|
2665
|
|
2666 (defun skk-check-postfix-rule (last)
|
|
2667 (let ((l skk-postfix-rule-alist)
|
|
2668 ret)
|
|
2669 (while l
|
|
2670 (if (eq (string-to-char last) (string-to-char (car (car l))))
|
|
2671 (setq ret (cons (car l) ret)) )
|
|
2672 (setq l (cdr l)) )
|
|
2673 ret ))
|
|
2674
|
|
2675 (defun skk-get-postfix-rule (prefix &optional alist)
|
|
2676 (let ((alist (or alist skk-postfix-rule-alist)))
|
|
2677 (cdr (assoc prefix alist)) ))
|
|
2678
|
|
2679 (defun skk-kana-input ()
|
|
2680 "$B$+$JJ8;z$NF~NO$r9T$&%k!<%A%s!#(B"
|
|
2681 (interactive "*")
|
|
2682 (combine-after-change-calls
|
|
2683 (if (and skk-henkan-active
|
|
2684 skk-kakutei-early (not skk-process-okuri-early) )
|
|
2685 (skk-kakutei) )
|
|
2686 (let ((echo-keystrokes 0)
|
|
2687 ;; don't echo key strokes in the minibuffer.
|
|
2688 last-input
|
|
2689 last-kana )
|
|
2690 (if skk-isearch-message (skk-isearch-message))
|
|
2691 (setq skk-prefix "")
|
|
2692 (skk-set-marker skk-kana-start-point (point))
|
|
2693 (skk-unread-event (skk-character-to-event last-command-char))
|
|
2694 (condition-case nil
|
|
2695 (let ((cont t)
|
|
2696 prev )
|
|
2697 (while cont
|
|
2698 (let* ((raw-event (skk-read-event))
|
|
2699 ;; ascii equivallence of raw-event or nil.
|
|
2700 (r-char (skk-event-to-character raw-event))
|
|
2701 input
|
|
2702 prefix
|
|
2703 next
|
|
2704 low )
|
|
2705 (if skk-debug (message "%S" r-char))
|
|
2706 (if r-char
|
|
2707 (progn
|
|
2708 (if (and
|
|
2709 (or (and
|
|
2710 skk-henkan-on (not skk-henkan-active)
|
|
2711 (= skk-henkan-start-point
|
|
2712 skk-kana-start-point ))
|
|
2713 (and
|
|
2714 skk-okurigana
|
|
2715 (= (1+ skk-okurigana-start-point)
|
|
2716 ;; "*"
|
|
2717 skk-kana-start-point )))
|
|
2718 (not (eq r-char (skk-downcase r-char))) )
|
|
2719 ;; this case takes care of the rare case where
|
|
2720 ;; one types two characters in upper case
|
|
2721 ;; consequtively. For example, one sometimes
|
|
2722 ;; types "TE" when one should type "Te"
|
|
2723 (setq r-char (skk-downcase r-char)
|
|
2724 raw-event (skk-character-to-event r-char) ))
|
|
2725 (setq input (skk-char-to-string r-char)
|
|
2726 last-input input
|
|
2727 prefix (concat skk-prefix input)
|
|
2728 next (skk-get-next-rule prefix) )))
|
|
2729 (if skk-debug (message "%S" next))
|
|
2730 (if skk-isearch-message (skk-isearch-message))
|
|
2731 (if next
|
|
2732 (let ((newprefix (car next))
|
|
2733 (output (nth 1 next)) )
|
|
2734 (setq low (nth 2 next))
|
|
2735 (skk-erase-prefix)
|
|
2736 (if output
|
|
2737 (progn
|
|
2738 (setq last-kana
|
|
2739 (if skk-katakana (car output) (cdr output)))
|
|
2740 ;; XXX for isearch
|
|
2741 (skk-insert-str last-kana)
|
|
2742 (if skk-okurigana (skk-set-okurigana))))
|
|
2743 (if newprefix
|
|
2744 (progn
|
|
2745 (skk-set-marker skk-kana-start-point (point))
|
|
2746 (skk-insert-prefix newprefix)
|
|
2747 (setq skk-prefix newprefix))
|
|
2748 (setq cont nil
|
|
2749 skk-prefix "" )))
|
|
2750 (let ((type (skk-kana-input-char-type
|
|
2751 (or r-char (skk-event-to-character raw-event)))))
|
|
2752 (cond ((eq type 5) ; delete prefix
|
|
2753 (setq cont nil)
|
|
2754 (if skk-okurigana
|
|
2755 (progn
|
|
2756 (skk-delete-okuri-mark)
|
|
2757 (skk-set-marker skk-kana-start-point
|
|
2758 skk-okurigana-start-point )))
|
|
2759 (or (string= skk-prefix "")
|
|
2760 (if skk-echo
|
|
2761 (skk-erase-prefix)
|
|
2762 (skk-message "$B%W%l%U%#%C%/%9(B \"%s\" $B$r>C$7$^$7$?(B"
|
|
2763 "Deleted prefix \"%s\""
|
|
2764 skk-prefix )))
|
|
2765 (setq skk-prefix "") )
|
|
2766 (t
|
|
2767 (if (string= skk-prefix "")
|
|
2768 (progn
|
|
2769 (skk-message
|
|
2770 "$BE,@Z$J%m!<%^;z$+$JJQ49%k!<%k$,$"$j$^$;$s!#(B"
|
|
2771 "No suitable rule." )
|
|
2772 (skk-set-marker skk-kana-start-point nil)
|
|
2773 (setq cont nil) )
|
|
2774 (skk-erase-prefix)
|
|
2775 (let ((output (skk-get-fallback-rule skk-prefix)))
|
|
2776 (if output
|
|
2777 (progn
|
|
2778 (setq last-kana
|
|
2779 (if skk-katakana
|
|
2780 (car output) (cdr output)))
|
|
2781 ;; XXX for isearch
|
|
2782 (skk-insert-str last-kana)
|
|
2783 (if skk-okurigana (skk-set-okurigana)) ))
|
|
2784 (skk-unread-event raw-event)
|
|
2785 (skk-set-marker skk-kana-start-point nil)
|
|
2786 (setq skk-prefix "")
|
|
2787 (setq cont nil) ))
|
|
2788
|
|
2789 )))
|
|
2790 )
|
|
2791 )))
|
|
2792 (quit
|
|
2793 (setq skk-prefix "")
|
|
2794 (skk-erase-prefix)
|
|
2795 (skk-set-marker skk-kana-start-point nil)
|
|
2796 (keyboard-quit) ))
|
|
2797 (let ((postfix-rules (skk-check-postfix-rule last-input)))
|
|
2798 (if postfix-rules
|
|
2799 (progn
|
|
2800 (let ((prefix last-kana))
|
|
2801 (if skk-isearch-message (skk-isearch-message)))
|
|
2802 (let* ((raw-event (skk-read-event))
|
|
2803 ;; ascii equivallence of raw-event or nil.
|
|
2804 (r-char (skk-event-to-character raw-event)) )
|
|
2805 (if r-char
|
|
2806 (let ((new-char
|
|
2807 (skk-get-postfix-rule
|
|
2808 (concat last-input (skk-char-to-string r-char))
|
|
2809 postfix-rules ))
|
|
2810 prefix )
|
|
2811 (if new-char
|
|
2812 (progn
|
|
2813 (setq skk-prefix (skk-char-to-string r-char))
|
|
2814 (skk-set-marker skk-kana-start-point (point))
|
|
2815 (skk-insert-prefix skk-prefix)
|
|
2816 ;; XXX for isearch
|
|
2817 (setq prefix (concat last-kana skk-prefix))
|
|
2818 (if skk-isearch-message (skk-isearch-message))
|
|
2819 (condition-case nil
|
|
2820 (let* ((raw-event2 (skk-read-event))
|
|
2821 (r-char2 (skk-event-to-character raw-event2))
|
|
2822 (type (skk-kana-input-char-type r-char2))
|
|
2823 (prefix (concat skk-prefix
|
|
2824 (skk-char-to-string r-char2)))
|
|
2825 (next (skk-get-next-rule prefix) ))
|
|
2826 (cond (next
|
|
2827 ;; rule $B$,$"$k!#(B
|
|
2828 (setq skk-prefix "")
|
|
2829 (skk-erase-prefix)
|
|
2830 (skk-set-marker skk-kana-start-point nil)
|
|
2831 (skk-unread-event raw-event2)
|
|
2832 (skk-unread-event raw-event) )
|
|
2833 ((eq type 5)
|
|
2834 ;; delete
|
|
2835 (setq skk-prefix "")
|
|
2836 (skk-erase-prefix)
|
|
2837 (skk-set-marker skk-kana-start-point nil) )
|
|
2838 (t
|
|
2839 (skk-erase-prefix)
|
|
2840 (skk-insert-str
|
|
2841 (if skk-katakana
|
|
2842 (car new-char)
|
|
2843 (cdr new-char)))
|
|
2844 (skk-unread-event raw-event2) )))
|
|
2845 (quit
|
|
2846 (setq skk-prefix "")
|
|
2847 (skk-erase-prefix)
|
|
2848 (skk-set-marker skk-kana-start-point nil)
|
|
2849 (skk-unread-event raw-event)
|
|
2850 (keyboard-quit) )))
|
|
2851 (skk-unread-event raw-event) ))
|
|
2852 (skk-unread-event raw-event) )))))
|
|
2853 )))
|
|
2854
|
|
2855 (defun skk-translate-okuri-char (okurigana)
|
|
2856 (if skk-okuri-char-alist
|
|
2857 (cdr (assoc (skk-substring-head-character okurigana) skk-okuri-char-alist)) ))
|
|
2858
|
|
2859 (defun skk-set-okurigana ()
|
|
2860 ;; $B8+=P$78l$+$i(B skk-henkan-okurigana, skk-henkan-key $B$N3FCM$r%;%C%H$9$k!#(B
|
|
2861 (if skk-katakana
|
|
2862 (skk-hiragana-region skk-henkan-start-point (point)) )
|
|
2863 (skk-set-marker skk-henkan-end-point skk-okurigana-start-point)
|
|
2864 ;; just in case
|
|
2865 (skk-save-point
|
|
2866 (goto-char skk-okurigana-start-point)
|
|
2867 (if (not (eq (following-char) ?*)) ;?*
|
|
2868 (insert "*") ))
|
|
2869 (setq skk-henkan-okurigana (skk-buffer-substring
|
|
2870 (1+ skk-okurigana-start-point)
|
|
2871 (point) ))
|
|
2872 (setq skk-henkan-key (concat (skk-buffer-substring skk-henkan-start-point
|
|
2873 skk-henkan-end-point )
|
|
2874 (or (skk-translate-okuri-char
|
|
2875 skk-henkan-okurigana)
|
|
2876 skk-okuri-char ))
|
|
2877 skk-prefix "" )
|
|
2878 (if skk-debug
|
|
2879 (message "%S %S %S" skk-henkan-okurigana skk-henkan-key skk-okuri-char) )
|
|
2880 (delete-region skk-okurigana-start-point (1+ skk-okurigana-start-point))
|
|
2881 (setq skk-henkan-count 0)
|
|
2882 (skk-henkan)
|
|
2883 (setq skk-okurigana nil)
|
|
2884 (cancel-undo-boundary) )
|
|
2885
|
|
2886 ;;;; other inputting functions
|
|
2887
|
|
2888 (defun skk-insert-period (count)
|
|
2889 "$B8+=P$7$NJd40$r9T$C$F$$$k:GCf$G$"$l$P!"<!$N8uJd$rI=<($9$k!#(B
|
|
2890 $BJd40$ND>8e$G$J$1$l$P!"(B\".\" $B$rA^F~$9$k!#(B
|
|
2891 SKK abbrev $B%b!<%I$G$O!"(Bskk-abbrev-period $B4X?t$r;HMQ$9$k$3$H!#(B"
|
|
2892 (interactive "*P")
|
|
2893 (if (and (eq last-command 'skk-completion) (not skk-henkan-active))
|
|
2894 (progn
|
|
2895 (setq this-command 'skk-completion)
|
|
2896 (skk-completion nil) )
|
|
2897 (skk-self-insert count)
|
|
2898 (setq skk-last-henkan-result nil)
|
|
2899 (skk-set-marker skk-last-henkan-point nil) ))
|
|
2900
|
|
2901 (defun skk-insert-comma (count)
|
|
2902 "$B8+=P$7$NJd40$r9T$C$F$$$k:GCf$G$"$l$P!"D>A0$N8uJd$rI=<($9$k!#(B
|
|
2903 $BJd40$ND>8e$G$J$1$l$P!"(B\",\" $B$rA^F~$9$k!#(B
|
|
2904 SKK abbrev $B%b!<%I$G$O!"(Bskk-abbrev-comma $B4X?t$r;HMQ$9$k$3$H!#(B"
|
|
2905 (interactive "*P")
|
|
2906 (if (and (eq last-command 'skk-completion) (not skk-henkan-active))
|
|
2907 (skk-previous-completion)
|
|
2908 (skk-self-insert count) ))
|
|
2909
|
|
2910 (defun skk-abbrev-period (arg)
|
|
2911 "SKK abbrev $B%b!<%I$G8+=P$7$NJd40$r9T$C$F$$$k:GCf$G$"$l$P!"<!$N8uJd$rI=<($9$k!#(B
|
|
2912 $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!#(B
|
|
2913 SKK abbrev $B%b!<%I0J30$G$O!"(Bskk-insert-period $B4X?t$r;HMQ$9$k$3$H!#(B"
|
|
2914 (interactive "*P")
|
|
2915 (if (eq last-command 'skk-completion)
|
|
2916 (progn
|
|
2917 (setq this-command 'skk-completion)
|
|
2918 (skk-completion nil) )
|
|
2919 (skk-emulate-original-map arg) ))
|
|
2920
|
|
2921 (defun skk-abbrev-comma (arg)
|
|
2922 "SKK abbrev $B%b!<%I$G8+=P$7$NJd40$r9T$C$F$$$k:GCf$G$"$l$P!"D>A0$N8uJd$rI=<($9$k!#(B
|
|
2923 $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!#(B
|
|
2924 SKK abbrev $B%b!<%I0J30$G$O!"(Bskk-insert-comma $B4X?t$r;HMQ$9$k$3$H!#(B"
|
|
2925 (interactive "*P")
|
|
2926 (if (eq last-command 'skk-completion)
|
|
2927 (skk-previous-completion)
|
|
2928 (skk-emulate-original-map arg) ))
|
|
2929
|
|
2930 (defun skk-self-insert (arg)
|
|
2931 "$B$R$i$,$J!"%+%?%+%J!"$b$7$/$O(B ascii $BJ8;z$r%+%l%s%H%P%C%U%!$KA^F~$9$k!#(B
|
|
2932 $B$R$i$,$J%b!<%I$b$7$/$O%+%?%+%J%b!<%I$G$O!"(Bskk-input-vector $B$r%F!<%V%k$H$7$F!"(B
|
|
2933 $B:G8e$KF~NO$5$l$?%-!<$KBP1~$9$kJ8;z$rA^F~$9$k!#(B
|
|
2934 ascii $B%b!<%I$G$O!"%-!<F~NO$r$=$N$^$^A^F~$9$k!#(B
|
|
2935 skk-auto-insert-paren $B$NCM$,(B non-nil $B$N>l9g$G!"(Bskk-auto-paren-string-alist $B$K(B
|
|
2936 $BBP1~$9$kJ8;zNs$,$"$k$H$-$O!"$=$NBP1~$9$kJ8;zNs(B ($B$+$C$3N`(B) $B$r<+F0E*$KA^F~$9$k!#(B"
|
|
2937 (interactive "*P")
|
|
2938 (let ((str (aref skk-input-vector last-command-char)))
|
|
2939 ;; Overlay $B$r>C$9$?$a$K@h$K3NDj$9$k!#(B
|
|
2940 (if skk-henkan-active (skk-kakutei))
|
|
2941 (if (not str)
|
|
2942 (skk-emulate-original-map arg)
|
|
2943 (let* ((count (prefix-numeric-value arg))
|
|
2944 (count2 count)
|
|
2945 (pair-str
|
|
2946 (and skk-auto-insert-paren
|
|
2947 (cdr (assoc str skk-auto-paren-string-alist)) ))
|
|
2948 (pair-str-inserted 0) )
|
|
2949 (while (> count 0)
|
|
2950 (skk-insert-str str)
|
|
2951 (setq count (1- count)) )
|
|
2952 (if (not pair-str)
|
|
2953 nil
|
|
2954 (while (> count2 0)
|
|
2955 (if (not (string= pair-str (char-to-string (following-char))))
|
|
2956 (progn
|
|
2957 (setq pair-str-inserted (1+ pair-str-inserted))
|
|
2958 (skk-insert-str pair-str) ))
|
|
2959 (setq count2 (1- count2)) )
|
|
2960 (if (not (eq pair-str-inserted 0))
|
|
2961 (backward-char pair-str-inserted) ))))))
|
|
2962
|
|
2963 (defun skk-zenkaku-insert (arg)
|
|
2964 "$BA41QJ8;z$r%+%l%s%H%P%C%U%!$KA^F~$9$k!#(B
|
|
2965 skk-zenkaku-vector $B$r%F!<%V%k$H$7$F!":G8e$KF~NO$5$l$?%-!<$KBP1~$9$kJ8;z$rA^F~(B
|
|
2966 $B$9$k!#(B
|
|
2967 skk-auto-insert-paren $B$NCM$,(B non-nil $B$N>l9g$G!"(Bskk-auto-paren-string-alist $B$K(B
|
|
2968 $BBP1~$9$kJ8;zNs$,$"$k$H$-$O!"$=$NBP1~$9$kJ8;zNs(B ($B$+$C$3N`(B) $B$r<+F0E*$KA^F~$9$k!#(B"
|
|
2969 (interactive "*p")
|
|
2970 (let* ((str (aref skk-zenkaku-vector last-command-char))
|
|
2971 (arg2 arg)
|
|
2972 (pair-str
|
|
2973 (and skk-auto-insert-paren
|
|
2974 (cdr (assoc str skk-auto-paren-string-alist)) ))
|
|
2975 (pair-str-inserted 0) )
|
|
2976 (while (> arg 0)
|
|
2977 (skk-insert-str str)
|
|
2978 (setq arg (1- arg)) )
|
|
2979 (if (not pair-str)
|
|
2980 nil
|
|
2981 (while (> arg2 0)
|
|
2982 (if (not (string= pair-str (char-to-string (following-char))))
|
|
2983 (progn
|
|
2984 (setq pair-str-inserted (1+ pair-str-inserted))
|
|
2985 (skk-insert-str pair-str) ))
|
|
2986 (setq arg2 (1- arg2)) )
|
|
2987 (if (not (eq pair-str-inserted 0))
|
|
2988 (backward-char pair-str-inserted) ))))
|
|
2989
|
|
2990 ;;;; henkan routines
|
|
2991 (defun skk-henkan ()
|
|
2992 ;; $B%+%J$r4A;zJQ49$9$k%a%$%s%k!<%A%s!#(B
|
|
2993 (let (mark new-word kakutei-henkan)
|
|
2994 (if (string= skk-henkan-key "")
|
|
2995 (skk-kakutei)
|
|
2996 (if (not (eobp))
|
|
2997 ;; we use mark to go back to the correct position after henkan
|
|
2998 (setq mark (skk-save-point (forward-char 1) (point-marker))) )
|
|
2999 (if (not skk-henkan-active)
|
|
3000 (progn
|
|
3001 (skk-change-marker)
|
|
3002 (setq skk-current-search-prog-list skk-search-prog-list) ))
|
|
3003 ;; skk-henkan-1 $B$NCf$+$i%3!<%k$5$l$k(B skk-henkan-show-candidate $B$+$i(B throw
|
|
3004 ;; $B$5$l$k!#$3$3$G%-%c%C%A$7$?>l9g$O!"(B?x $B$,%9%H%j!<%`$KLa$5$l$F$$$k$N$G!"(B
|
|
3005 ;; $B$3$N4X?t$r=P$F!"(Bskk-previous-candidates $B$X$f$/!#(B
|
|
3006 (catch 'unread
|
|
3007 (setq new-word (or (skk-henkan-1) (skk-henkan-in-minibuff))
|
|
3008 kakutei-henkan skk-kakutei-flag )
|
|
3009 (if new-word
|
|
3010 (skk-insert-new-word new-word) ))
|
|
3011 (if mark
|
|
3012 (progn
|
|
3013 (goto-char mark)
|
|
3014 ;; $B;2>H$5$l$F$$$J$$%^!<%+!<$O!"(BGarbage Collection $B$,%3!<%k$5$l$?$H(B
|
|
3015 ;; $B$-$K2s<}$5$l$k$,!"$=$l$^$G$N4V!"%F%-%9%H$N$I$3$+$r;X$7$F$$$k$H!"(B
|
|
3016 ;; $B%F%-%9%H$N%"%C%W%G!<%H$N:]$K$=$N%^!<%+!<CM$r99?7$9$kI,MW$,$"$k(B
|
|
3017 ;; $B$N$G!"$I$3$b;X$5$J$$$h$&$K$9$k!#(B
|
|
3018 (skk-set-marker mark nil)
|
|
3019 (backward-char 1) )
|
|
3020 (goto-char (point-max)) )
|
|
3021 (if kakutei-henkan
|
|
3022 ;; $B3NDj$7$F$bNI$$(B ($B3NDj<-=q$K8uJd$r8+$D$1$?>l9g!"<-(B
|
|
3023 ;; $B=qEPO?$r9T$C$?>l9g!"$"$k$$$O%_%K%P%C%U%!$+$i8uJd(B
|
|
3024 ;; $B$rA*Br$7$?>l9g(B) $B$N$J$i!"(BOverlay $B$K$h$kI=<(JQ99$;(B
|
|
3025 ;; $B$:$K$=$N$^$^3NDj!#(B
|
|
3026 (skk-kakutei (if (skk-numeric-p)
|
|
3027 (skk-get-simply-current-candidate 'noconv)
|
|
3028 new-word )))
|
|
3029 )))
|
|
3030
|
|
3031 (defun skk-henkan-1 ()
|
|
3032 ;; skk-henkan $B$N%5%V%k!<%A%s!#(B
|
|
3033 (let (new-word)
|
|
3034 (if (eq skk-henkan-count 0)
|
|
3035 (progn
|
|
3036 (if (and (eq last-command 'skk-undo-kakutei-henkan)
|
|
3037 (eq (car (car skk-current-search-prog-list))
|
|
3038 'skk-search-kakutei-jisyo-file ))
|
|
3039 ;; in this case, we should not search kakutei jisyo.
|
|
3040 (setq skk-current-search-prog-list
|
|
3041 (cdr skk-current-search-prog-list) ))
|
|
3042 (setq skk-henkan-list (skk-search))
|
|
3043 (if (null skk-henkan-list)
|
|
3044 nil
|
|
3045 (setq new-word (skk-get-current-candidate))
|
|
3046 (if skk-kakutei-flag
|
|
3047 ;; found the unique candidate in kakutei jisyo
|
|
3048 (setq this-command 'skk-kakutei-henkan
|
|
3049 skk-last-kakutei-henkan-key skk-henkan-key ))))
|
|
3050 ;; $BJQ492s?t$,(B 1 $B0J>e$N$H$-!#(B
|
|
3051 (setq new-word (skk-get-current-candidate))
|
|
3052 (if (not new-word)
|
|
3053 ;; $B?7$7$$8uJd$r8+$D$1$k$+!"(Bskk-current-search-prog-list $B$,6u$K$J(B
|
|
3054 ;; $B$k$^$G(B skk-search $B$rO"B3$7$F%3!<%k$9$k!#(B
|
|
3055 (while (and skk-current-search-prog-list (not new-word))
|
|
3056 (setq skk-henkan-list (skk-nunion skk-henkan-list (skk-search))
|
|
3057 new-word (skk-get-current-candidate) )))
|
|
3058 (if (and new-word (> skk-henkan-count 3))
|
|
3059 ;; show candidates in minibuffer
|
|
3060 (setq new-word (skk-henkan-show-candidates) )))
|
|
3061 new-word ))
|
|
3062
|
|
3063 ;;;###skk-autoload
|
|
3064 (defun skk-get-current-candidate ()
|
|
3065 (if (skk-numeric-p)
|
|
3066 (let (val)
|
|
3067 (skk-uniq-numerals)
|
|
3068 (setq val (skk-numeric-convert (skk-get-simply-current-candidate)))
|
|
3069 (if (not skk-recompute-numerals-key)
|
|
3070 val
|
|
3071 (skk-uniq-numerals)
|
|
3072 (skk-numeric-convert (skk-get-simply-current-candidate)) ))
|
|
3073 (skk-get-simply-current-candidate) ))
|
|
3074
|
|
3075 (defun skk-henkan-show-candidates ()
|
|
3076 ;; $B%_%K%P%C%U%!$GJQ49$7$?8uJd72$rI=<($9$k!#(B
|
|
3077 (skk-save-point
|
|
3078 (let* ((candidate-keys ; $BI=<(MQ$N%-!<%j%9%H(B
|
|
3079 (mapcar (function (lambda (c) (char-to-string (upcase c))))
|
|
3080 skk-henkan-show-candidates-keys ))
|
|
3081 key-num-alist ; $B8uJdA*BrMQ$NO"A[%j%9%H(B
|
|
3082 (key-num-alist1 ; key-num-alist $B$rAH$_N)$F$k$?$a$N:n6HMQO"A[%j%9%H!#(B
|
|
3083 (let ((count 6))
|
|
3084 (mapcar (function (lambda (key) (prog1 (cons key count)
|
|
3085 (setq count (1- count)) )))
|
|
3086 ;; $B5U$5$^$K$7$F$*$$$F!"I=<($9$k8uJd$N?t$,>/$J$+$C$?$i@h(B
|
|
3087 ;; $BF,$+$i4v$D$+:o$k!#(B
|
|
3088 (reverse skk-henkan-show-candidates-keys) )))
|
|
3089 (loop 0)
|
|
3090 inhibit-quit
|
|
3091 henkan-list new-one str reverse n )
|
|
3092 ;; $BG0$N$?$a!#(Bskk-previous-candidate $B$r;2>H!#(B
|
|
3093 (if skk-use-face (skk-henkan-face-off))
|
|
3094 (delete-region skk-henkan-start-point skk-henkan-end-point)
|
|
3095 (while loop
|
|
3096 (if str
|
|
3097 (let (message-log-max)
|
|
3098 (message str) )
|
|
3099 (cond (reverse
|
|
3100 (setq loop (1- loop)
|
|
3101 henkan-list (nthcdr (+ 4 (* loop 7)) skk-henkan-list)
|
|
3102 reverse nil ))
|
|
3103 (skk-exit-show-candidates
|
|
3104 ;; $B8uJd$,?T$-$F$7$^$C$F!"(Bskk-henkan-show-candidates ->
|
|
3105 ;; skk-henkan-in-minibuff -> skk-henkan
|
|
3106 ;; -> skk-henkan-show-candidates $B$N=g$G!":F$S$3$N4X?t$,8F$P$l(B
|
|
3107 ;; $B$?$H$-$O!"$3$3$G(B henkan-list $B$H(B loop $B$r7W;;$9$k!#(B
|
|
3108 (setq henkan-list (nthcdr skk-henkan-count skk-henkan-list)
|
|
3109 loop (car skk-exit-show-candidates)
|
|
3110 skk-exit-show-candidates nil ))
|
|
3111 (t
|
|
3112 ;; skk-henkan-show-candidates-keys $B$N:G=*$N%-!<$KBP1~$9$k8uJd(B
|
|
3113 ;; $B$,=P$F$/$k$^$G%5!<%A$rB3$1$k!#(B
|
|
3114 (if (skk-numeric-p) (skk-uniq-numerals))
|
|
3115 (while (and skk-current-search-prog-list
|
|
3116 (null (nthcdr (+ 11 (* loop 7)) skk-henkan-list)) )
|
|
3117 (setq skk-henkan-list
|
|
3118 (skk-nunion skk-henkan-list (skk-search)) )
|
|
3119 (if (skk-numeric-p)
|
|
3120 (skk-uniq-numerals) ))
|
|
3121 (if (skk-numeric-p)
|
|
3122 (skk-numeric-convert*7) )
|
|
3123 (setq henkan-list (nthcdr (+ 4 (* loop 7))
|
|
3124 skk-henkan-list ))))
|
|
3125 (setq n (skk-henkan-show-candidate-subr candidate-keys henkan-list)) )
|
|
3126 (if (> n 0)
|
|
3127 (condition-case nil
|
|
3128 (let* ((event (skk-read-event))
|
|
3129 (char (skk-event-to-character event))
|
|
3130 num )
|
|
3131 (if (null char)
|
|
3132 (skk-unread-event event)
|
|
3133 (setq key-num-alist (nthcdr (- 7 n) key-num-alist1))
|
|
3134 (if (null key-num-alist)
|
|
3135 nil
|
|
3136 (setq num (cdr (or (assq char key-num-alist)
|
|
3137 (if (skk-lower-case-p char)
|
|
3138 (assq (upcase char) key-num-alist)
|
|
3139 (assq (downcase char) key-num-alist) )))))
|
|
3140 (cond (num
|
|
3141 (setq new-one (nth num henkan-list)
|
|
3142 skk-henkan-count (+ 4 (* loop 7) num)
|
|
3143 skk-kakutei-flag t
|
|
3144 loop nil
|
|
3145 str nil ))
|
|
3146 ((eq char (skk-int-char 32)) ; space
|
|
3147 (if (or skk-current-search-prog-list
|
|
3148 (nthcdr 7 henkan-list) )
|
|
3149 (setq loop (1+ loop)
|
|
3150 str nil )
|
|
3151 ;; $B8uJd$,?T$-$?!#$3$N4X?t$+$iH4$1$k!#(B
|
|
3152 (let ((last-showed-index (+ 4 (* loop 7))))
|
|
3153 (setq skk-exit-show-candidates
|
|
3154 ;; cdr $BIt$O!"<-=qEPO?$KF~$kA0$K:G8e$KI=<($7(B
|
|
3155 ;; $B$?8uJd72$NCf$G:G=i$N8uJd$r;X$9%$%s%G%/%9(B
|
|
3156 (cons loop last-showed-index) )
|
|
3157 ;; $B<-=qEPO?$KF~$k!#(Bskk-henkan-count $B$O(B
|
|
3158 ;; skk-henkan-list $B$N:G8e$N8uJd$N<!(B ($BB8:_$7$J$$(B
|
|
3159 ;; --- nil )$B$r;X$9!#(B
|
|
3160 (setq skk-henkan-count (+ last-showed-index n)
|
|
3161 loop nil
|
|
3162 str nil ))))
|
|
3163 ((eq char skk-previous-candidate-char) ; ?x
|
|
3164 (if (eq loop 0)
|
|
3165 ;; skk-henkan-show-candidates $B$r8F$VA0$N>uBV$KLa(B
|
|
3166 ;; $B$9!#(B
|
|
3167 (progn
|
|
3168 (setq skk-henkan-count 4)
|
|
3169 (skk-unread-event (skk-character-to-event
|
|
3170 skk-previous-candidate-char))
|
|
3171 ;; skk-henkan $B$^$G0l5$$K(B throw $B$9$k!#(B
|
|
3172 (throw 'unread nil) )
|
|
3173 ;; $B0l$DA0$N8uJd72$r%(%3!<%(%j%"$KI=<($9$k!#(B
|
|
3174 (setq reverse t
|
|
3175 str nil )))
|
|
3176 (t (skk-message "\"%c\" $B$OM-8z$J%-!<$G$O$"$j$^$;$s!*(B"
|
|
3177 "\"%c\" is not valid here!"
|
|
3178 char )
|
|
3179 (sit-for 1) ))))
|
|
3180 (quit
|
|
3181 ;; skk-previous-candidate $B$X(B
|
|
3182 (setq skk-henkan-count 0)
|
|
3183 (skk-unread-event (skk-character-to-event
|
|
3184 skk-previous-candidate-char))
|
|
3185 ;; skk-henkan $B$^$G0l5$$K(B throw $B$9$k!#(B
|
|
3186 (throw 'unread nil) )))) ; end of while loop
|
|
3187 (if (consp new-one)
|
|
3188 (cdr new-one)
|
|
3189 new-one ))))
|
|
3190
|
|
3191 (defun skk-henkan-show-candidate-subr (keys candidates)
|
|
3192 ;; key $B$H(B candidates $B$rAH$_9g$o$;$F(B 7 $B$D0J2<$N8uJd72(B ($B8uJd?t$,B-$j$J$+$C$?$i(B
|
|
3193 ;; $B$=$3$GBG$A@Z$k(B) $B$NJ8;zNs$r:n$j!"%_%K%P%C%U%!$KI=<($9$k!#(B
|
|
3194 (let ((n 0) str cand
|
|
3195 message-log-max )
|
|
3196 (if (not (car candidates))
|
|
3197 nil
|
|
3198 (setq n 1
|
|
3199 ;; $B:G=i$N8uJd$NA0$K6uGr$r$/$C$D$1$J$$$h$&$K:G=i$N8uJd$@$1@h$K<h$j(B
|
|
3200 ;; $B=P$9!#(B
|
|
3201 str (concat (car keys) ":" (skk-%-to-%%
|
|
3202 (if (consp (car candidates))
|
|
3203 (cdr (car candidates))
|
|
3204 (car candidates) ))))
|
|
3205 ;; $B;D$j$N(B 6 $B$D$r<h$j=P$9!#8uJd$H8uJd$N4V$r6uGr$G$D$J$0!#(B
|
|
3206 (while (and (< n 7) (setq cand (nth n candidates)))
|
|
3207 (setq cand (skk-%-to-%% (if (consp cand) (cdr cand) cand))
|
|
3208 str (concat str " " (nth n keys) ":" cand)
|
|
3209 n (1+ n) ))
|
|
3210 (message "%s [$B;D$j(B %d%s]"
|
|
3211 str (length (nthcdr n candidates))
|
|
3212 (make-string (length skk-current-search-prog-list) ?+) ))
|
|
3213 ;; $BI=<($9$k8uJd?t$rJV$9!#(B
|
|
3214 n ))
|
|
3215
|
|
3216 (defun skk-%-to-%% (str)
|
|
3217 ;; STR $BCf$K(B % $B$r4^$`J8;z$,$"$C$?$i!"(B%% $B$K$7$F(B message $B$G%(%i!<$K$J$i$J$$$h$&(B
|
|
3218 ;; $B$K$9$k!#(B
|
|
3219 (let ((tail str)
|
|
3220 temp beg end )
|
|
3221 (save-match-data
|
|
3222 (while (string-match "%+" tail)
|
|
3223 (setq beg (match-beginning 0)
|
|
3224 end (match-end 0)
|
|
3225 temp (concat temp (substring tail 0 beg)
|
|
3226 (make-string (* 2 (- end beg)) ?%) )
|
|
3227 tail (substring tail end) ))
|
|
3228 (concat temp tail) )))
|
|
3229
|
|
3230 (defun skk-henkan-in-minibuff ()
|
|
3231 ;; $B%_%K%P%C%U%!$G<-=qEPO?$r$7!"EPO?$7$?%(%s%H%j$NJ8;zNs$rJV$9!#(B
|
|
3232 (save-match-data
|
|
3233 (let ((enable-recursive-minibuffers t)
|
|
3234 ;; $BJQ49Cf$K(B isearch message $B$,=P$J$$$h$&$K$9$k!#(B
|
|
3235 skk-isearch-message new-one )
|
|
3236 (add-hook 'minibuffer-setup-hook 'skk-setup-minibuffer)
|
|
3237 (condition-case nil
|
|
3238 (setq new-one
|
|
3239 (read-from-minibuffer
|
|
3240 (concat (or (if (skk-numeric-p)
|
|
3241 (skk-numeric-midasi-word) )
|
|
3242 (if skk-okuri-char
|
|
3243 (skk-compute-henkan-key2)
|
|
3244 skk-henkan-key ))
|
|
3245 " " )))
|
|
3246 (quit
|
|
3247 (setq new-one "") ))
|
|
3248 (if (string= new-one "")
|
|
3249 (if skk-exit-show-candidates
|
|
3250 ;; $B%_%K%P%C%U%!$KI=<($7$?8uJd$,?T$-$F<-=qEPO?$KF~$C$?$,!"6uJ8;z(B
|
|
3251 ;; $BNs$,EPO?$5$l$?>l9g!#:G8e$K%_%K%P%C%U%!$KI=<($7$?8uJd72$r:FI=(B
|
|
3252 ;; $B<($9$k!#(B
|
|
3253 (progn
|
|
3254 (setq skk-henkan-count (cdr skk-exit-show-candidates))
|
|
3255 (skk-henkan) )
|
|
3256 ;; skk-henkan-show-candidates $B$KF~$kA0$K8uJd$,?T$-$?>l9g(B
|
|
3257 (setq skk-henkan-count (1- skk-henkan-count))
|
|
3258 (if (eq skk-henkan-count -1)
|
|
3259 (progn
|
|
3260 ;; $BAw$j$"$j$NJQ49$G<-=qEPO?$KF~$j!"6uJ8;z$rEPO?$7$?8e!"$=$N(B
|
|
3261 ;; $B$^$^:FEYAw$j$J$7$H$7$FJQ49$7$?>l9g$O(B
|
|
3262 ;; skk-henkan-okurigana, skk-okuri-char $B$NCM$r(B nil $B$K$7$J$1(B
|
|
3263 ;; $B$l$P!"$=$l$>$l$NCM$K8E$$Aw$j2>L>$,F~$C$?$^$^$G8!:w$K<:GT(B
|
|
3264 ;; $B$9$k!#(B
|
|
3265 (setq skk-henkan-okurigana nil
|
|
3266 skk-okurigana nil
|
|
3267 skk-okuri-char nil )
|
|
3268 (skk-change-marker-to-white) )
|
|
3269 ;; skk-henkan-count $B$,(B -1 $B$G$J$1$l$P!"%+%l%s%H%P%C%U%!$G$O:G8e$N(B
|
|
3270 ;; $B8uJd$rI=<($7$?$^$^$J$N$G(B ($BI=<(4XO"$G$O2?$b$7$J$/$F$b!"$b$&4{(B
|
|
3271 ;; $B$KK>$_$N>uBV$K$J$C$F$$$k(B) $B2?$b$7$J$$!#(B
|
|
3272 ))
|
|
3273 ;; $B%_%K%P%C%U%!$GJQ49$7$?J8;zNs$,$"$k(B ($B6uJ8;zNs$G$J$$(B) $B$H$-!#(B
|
|
3274 ;; $BKvHx$N6uGr$r<h$j=|$/!#(B
|
|
3275 (if (string-match "[ $B!!(B]+$" new-one)
|
|
3276 (setq new-one (substring new-one 0 (match-beginning 0))) )
|
|
3277 (if (skk-numeric-p)
|
|
3278 (setq new-one (skk-adjust-numeric-henkan-data new-one))
|
|
3279 ;; $B$9$4$/$?$/$5$s$N8uJd$,$"$k>l9g$K!"$=$N:G8e$K?7$7$$8uJd$r2C$($k$N$O(B
|
|
3280 ;; $B$1$C$3$&9|$@$,!#(B
|
|
3281 (setq skk-henkan-list (nconc skk-henkan-list (list new-one))
|
|
3282 ;; $B%U%i%0$r%*%s$K$9$k!#(B
|
|
3283 skk-kakutei-flag t ))
|
|
3284 (setq skk-henkan-in-minibuff-flag t
|
|
3285 skk-touroku-count (1+ skk-touroku-count) ))
|
|
3286 ;; (nth skk-henkan-count skk-henkan-list) $B$,(B nil $B$@$+$i<-=qEPO?$K(B
|
|
3287 ;; $BF~$C$F$$$k!#(Bskk-henkan-count $B$r%$%s%/%j%a%s%H$9$kI,MW$O$J$$!#(B
|
|
3288 ;; (setq skk-henkan-count (1+ skk-henkan-count))
|
|
3289 ;; new-one $B$,6uJ8;zNs$@$C$?$i(B nil $B$rJV$9!#(B
|
|
3290 (if (not (string= new-one "")) new-one) )))
|
|
3291
|
|
3292 (defun skk-compute-henkan-key2 ()
|
|
3293 ;; skk-henkan-okurigana $B$,(B non-nil $B$J$i(B skk-henkan-key $B$+$i!"$+$D$F(B
|
|
3294 ;; skk-henkan-key2 $B$H8F$P$l$F$$$?$b$N$r:n$k!#(B
|
|
3295 ;; skk-henkan-key2 $B$H$O!"!V4A;zItJ,$NFI$_(B + "*" + $BAw$j2>L>!W$N7A<0$NJ8;zNs$r(B
|
|
3296 ;; $B8@$&!#(B
|
|
3297 (if skk-henkan-okurigana
|
|
3298 (save-match-data
|
|
3299 (if (string-match "[a-z]+$" skk-henkan-key)
|
|
3300 (concat (substring skk-henkan-key 0 (match-beginning 0))
|
|
3301 "*" skk-henkan-okurigana )))))
|
|
3302
|
|
3303 (defun skk-setup-minibuffer ()
|
|
3304 ;; $B%+%l%s%H%P%C%U%!$NF~NO%b!<%I$K=>$$%_%K%P%C%U%!$NF~NO%b!<%I$r@_Dj$9$k!#(B
|
|
3305 (let ((mode (skk-spy-origin-buffer-mode)))
|
|
3306 (if (not mode)
|
|
3307 nil
|
|
3308 (cond ((eq mode 'hirakana) (skk-j-mode-on))
|
|
3309 ((eq mode 'katakana) (skk-j-mode-on t))
|
|
3310 ((eq mode 'abbrev) (skk-abbrev-mode-on))
|
|
3311 ((eq mode 'ascii) (skk-ascii-mode-on))
|
|
3312 ((eq mode 'zenkaku) (skk-zenkaku-mode-on))))))
|
|
3313
|
|
3314 (defun skk-spy-origin-buffer-mode ()
|
|
3315 ;; $B%_%K%P%C%U%!$K5o$k$H$-$K%*%j%8%J%k$N%+%l%s%H%P%C%U%!$NF~NO%b!<%I$rDe;!$9$k!#(B
|
|
3316 (with-current-buffer (skk-minibuffer-origin)
|
|
3317 (if skk-mode
|
|
3318 (cond (skk-abbrev-mode 'abbrev)
|
|
3319 (skk-ascii-mode 'ascii)
|
|
3320 (skk-zenkaku-mode 'zenkaku)
|
|
3321 (skk-katakana 'katakana)
|
|
3322 (t 'hirakana) ))))
|
|
3323
|
|
3324 ;;;###skk-autoload
|
|
3325 (defun skk-previous-candidate ()
|
|
3326 "$B"'%b!<%I$G$"$l$P!"0l$DA0$N8uJd$rI=<($9$k!#(B
|
|
3327 $B"'%b!<%I0J30$G$O%+%l%s%H%P%C%U%!$K(B \"x\" $B$rA^F~$9$k!#(B
|
|
3328 $B3NDj<-=q$K$h$k3NDj$ND>8e$K8F$V$H3NDj$,%"%s%I%%$5$l$F!"3NDjA0$N>uBV$G(B
|
|
3329 skk-last-kakutei-henkan-key $B$,%+%l%s%H%P%C%U%!$KA^F~$5$l$k!#(B"
|
|
3330 (interactive)
|
|
3331 (if (not skk-henkan-active)
|
|
3332 (if (not (eq last-command 'skk-kakutei-henkan))
|
|
3333 (skk-kana-input)
|
|
3334 ;; restore the state just before the last kakutei henkan.
|
|
3335 (delete-region skk-henkan-start-point (point))
|
|
3336 (skk-set-henkan-point-subr)
|
|
3337 (insert skk-last-kakutei-henkan-key)
|
|
3338 (setq this-command 'skk-undo-kakutei-henkan) )
|
|
3339 (if (string= skk-henkan-key "")
|
|
3340 nil
|
|
3341 ;; $B6uGr$rA^F~$7$F$*$$$F!"8e$G(B delete-backward-char $B$r;H$C$F>C$9J}K!$G$O!"(B
|
|
3342 ;; overwrite-mode $B$N$H$-$K$=$N6uGr$r>C$;$J$$!#=>$$(B skk-henkan $B$G9T$J$C$F(B
|
|
3343 ;; $B$$$kJ}K!$HF1$8$b$N$r;H$&!#(B
|
|
3344 ;;(insert " ")
|
|
3345 (let ((mark
|
|
3346 (if (not (eobp))
|
|
3347 (skk-save-point (forward-char 1) (point-marker)) )))
|
|
3348 (skk-save-point
|
|
3349 (if (eq skk-henkan-count 0)
|
|
3350 (progn
|
|
3351 (if skk-okuri-char
|
|
3352 ;; roman prefix for okurigana should be removed.
|
|
3353 (setq skk-henkan-key (substring skk-henkan-key 0 -1)) )
|
|
3354 (setq skk-henkan-count -1
|
|
3355 skk-henkan-list nil
|
|
3356 skk-henkan-okurigana nil
|
|
3357 skk-okuri-char nil
|
|
3358 skk-okurigana nil
|
|
3359 skk-prefix "" )
|
|
3360 (if skk-auto-okuri-process
|
|
3361 (skk-init-auto-okuri-variables) )
|
|
3362 (if (skk-numeric-p)
|
|
3363 (skk-init-numeric-conversion-variables) )
|
|
3364 ;; Emacs 19.28 $B$@$H2?8N$+(B Overlay $B$r>C$7$F$*$+$J$$$H!"<!$K(B
|
|
3365 ;; insert $B$5$l$k(B skk-henkan-key Overlay $B$,$+$+$C$F$7$^$&!#(B
|
|
3366 (if skk-use-face (skk-henkan-face-off))
|
|
3367 (delete-region skk-henkan-start-point skk-henkan-end-point)
|
|
3368 (goto-char skk-henkan-end-point)
|
|
3369 (insert skk-henkan-key)
|
|
3370 (skk-change-marker-to-white) )
|
|
3371 (setq skk-henkan-count (1- skk-henkan-count))
|
|
3372 (skk-insert-new-word (skk-get-simply-current-candidate)) ))
|
|
3373 ;;(if (and (> (point) 1) (eq (char-after (1- (point))) 32))
|
|
3374 ;; delete-backward-char $B$G$O!"(Boverwrite-mode $B$N$H$-$KD>A0$N6uGr$r>C$;(B
|
|
3375 ;; $B$J$$!#(B
|
|
3376 ;; (delete-backward-char 1) )
|
|
3377 (if mark
|
|
3378 (progn
|
|
3379 (goto-char mark)
|
|
3380 (skk-set-marker mark nil)
|
|
3381 (backward-char 1) )
|
|
3382 (goto-char (point-max)) )
|
|
3383 (if (and skk-abbrev-mode (eq skk-henkan-count -1))
|
|
3384 (skk-abbrev-mode-on) )))))
|
|
3385
|
|
3386 (defun skk-insert-new-word (word)
|
|
3387 ;; $B8+=P$78l$r>C$7!"$=$N>l=j$XJQ497k2L$NJ8;zNs$rA^F~$9$k!#(B
|
|
3388 (let (func)
|
|
3389 ;; $BG0$N$?$a!#2?8N$3$l$rF~$l$k$N$+$K$D$$$F$O!"(Bskk-previous-candidate $B$r;2>H(B
|
|
3390 (if skk-use-face (skk-henkan-face-off))
|
|
3391 (delete-region skk-henkan-start-point skk-henkan-end-point)
|
|
3392 (goto-char skk-henkan-start-point)
|
|
3393 ;; (^_^;) $B$N$h$&$J8+=P$78l$KBP$7!"(Bread-from-string $B$r8F$V$H%(%i!<$K$J$k$N(B
|
|
3394 ;; $B$G!"(Bcondition-case $B$G$=$N%(%i!<$rJa$^$($k!#(B
|
|
3395 (condition-case nil
|
|
3396 (setq func (car (read-from-string word)))
|
|
3397 (error (setq func word)))
|
|
3398 ;; symbolp $B$G(B nil $B$rJV$9$h$&$JC18l$r!"(Bsymbolp $B$G%A%'%C%/$9$k$3$HL5$/$$$-(B
|
|
3399 ;; $B$J$j(B fboundp $B$G%A%'%C%/$9$k$H!"%(%i!<$K$J$k!#(B
|
|
3400 ;; e.x. "(#0)"
|
|
3401 (condition-case nil
|
|
3402 (if (and (listp func) (symbolp (car func)) (fboundp (car func)))
|
|
3403 (insert (eval func))
|
|
3404 (insert word) )
|
|
3405 ;; $BJ8;zNs$rJV$5$J$$(B Lisp $B%W%m%0%i%`$rI>2A$7$F$b%(%i!<$K$J$i$J$$J}$,JXMx!)(B
|
|
3406 (error nil) )
|
|
3407 (skk-set-marker skk-henkan-end-point (point))
|
|
3408 (if skk-use-face (skk-henkan-face-on))
|
|
3409 (if skk-insert-new-word-function
|
|
3410 (funcall skk-insert-new-word-function) )))
|
|
3411
|
|
3412 ;;;###skk-autoload
|
|
3413 (defun skk-kakutei (&optional word)
|
|
3414 "$B8=:_I=<($5$l$F$$$k8l$G3NDj$7!"<-=q$N99?7$r9T$&!#(B
|
|
3415 $B%*%W%7%g%J%k0z?t$N(B WORD $B$rEO$9$H!"8=:_I=<($5$l$F$$$k8uJd$H$OL54X78$K(B WORD $B$G3N(B
|
|
3416 $BDj$9$k!#(B"
|
|
3417 ;; read only $B$G%(%i!<$K$J$k$h$&$K$9$k$H(B read only $B%P%C%U%!$G(B SKK $B$,5/F0$G$-(B
|
|
3418 ;; $B$J$/$J$k!#(B
|
|
3419 (interactive)
|
|
3420 (let ((inhibit-quit t)
|
|
3421 converted kakutei-word )
|
|
3422 (if skk-mode
|
|
3423 (skk-j-mode-on skk-katakana)
|
|
3424 ;; $B%+%l%s%H%P%C%U%!$G$^$@(B skk-mode $B$,%3!<%k$5$l$F$$$J$+$C$?$i!"%3!<%k$9(B
|
|
3425 ;; $B$k!#(B
|
|
3426 (skk-mode 1) )
|
|
3427 (if (not skk-henkan-on)
|
|
3428 nil
|
|
3429 (if (not skk-henkan-active)
|
|
3430 nil
|
|
3431 (setq kakutei-word
|
|
3432 ;; $B3NDj<-=q$N8l$G3NDj$7$?$H$-$O!"<-=q$K$=$N8l$r=q$-9~$`I,MW$b$J(B
|
|
3433 ;; $B$$$7!"99?7$9$kI,MW$b$J$$$H;W$C$F$$$?$,!"Jd40$r9T$J$&$H$-$O!"(B
|
|
3434 ;; $B8D?M<-=q$r;2>H$9$k(B ($B3NDj<-=q$O;2>H$7$J$$(B) $B$N$G!"B?>/;q8;$H;~(B
|
|
3435 ;; $B4V$rL5BL$K$7$F$b!"8D?M<-=q$K3NDj<-=q$N%(%s%H%j$r=q$-9~$s$G99(B
|
|
3436 ;; $B?7$b$7$F$*$/!#(B
|
|
3437 (or word (skk-get-simply-current-candidate (skk-numeric-p))) )
|
|
3438 (if (or
|
|
3439 (and (not skk-search-excluding-word-pattern-function) kakutei-word)
|
|
3440 (and
|
|
3441 kakutei-word
|
|
3442 skk-search-excluding-word-pattern-function
|
|
3443 (not
|
|
3444 (funcall skk-search-excluding-word-pattern-function kakutei-word) )))
|
|
3445 (progn
|
|
3446 (skk-update-jisyo kakutei-word)
|
|
3447 ;; keep this order
|
|
3448 (setq skk-last-henkan-result kakutei-word)
|
|
3449 (skk-set-marker skk-last-henkan-point (point))
|
|
3450 (if (skk-numeric-p)
|
|
3451 (progn
|
|
3452 (setq converted (skk-get-simply-current-candidate))
|
|
3453 (skk-update-jisyo-for-numerals kakutei-word converted) )))))
|
|
3454 (skk-kakutei-cleanup-henkan-buffer) )
|
|
3455 (skk-kakutei-save-and-init-variables
|
|
3456 (if (skk-numeric-p)
|
|
3457 (cons kakutei-word converted)
|
|
3458 kakutei-word ))
|
|
3459 (skk-do-auto-fill)
|
|
3460 (skk-set-cursor-color (if skk-katakana
|
|
3461 skk-katakana-cursor-color
|
|
3462 skk-hirakana-cursor-color ))))
|
|
3463
|
|
3464 (defun skk-kakutei-cleanup-henkan-buffer ()
|
|
3465 ;; $B3NDjD>8e$N%P%C%U%!$N@07A$r9T$J$&!#(B
|
|
3466 ;; $B$3$N4X?t$O!"(Bskk-vip.el $B$G>e=q$-$5$l$k!#(B
|
|
3467 (if skk-okurigana
|
|
3468 (progn
|
|
3469 (skk-delete-okuri-mark)
|
|
3470 (if (and skk-katakana skk-convert-okurigana-into-katakana)
|
|
3471 (skk-katakana-region skk-henkan-end-point (point)) )))
|
|
3472 (skk-delete-henkan-markers)
|
|
3473 (if (and (boundp 'self-insert-after-hook) self-insert-after-hook)
|
|
3474 (funcall self-insert-after-hook skk-henkan-start-point (point)) )
|
|
3475 (if overwrite-mode
|
|
3476 (skk-del-char-with-pad
|
|
3477 (skk-ovwrt-len
|
|
3478 (string-width
|
|
3479 (skk-buffer-substring skk-henkan-start-point (point)) )))))
|
|
3480
|
|
3481 (defun skk-kakutei-save-and-init-variables (&optional kakutei-word)
|
|
3482 ;; $B3NDj;~$KJQ?t$N=i4|2=$H%"%s%I%%$N$?$a$NJQ?t$NJ]B8$r9T$J$&!#(B
|
|
3483 (if (and kakutei-word (or (consp kakutei-word)
|
|
3484 (not (string= kakutei-word "")) ))
|
|
3485 (progn
|
|
3486 ;; skk-undo-kakutei $B$N$?$a$K:G8e$NJQ49$N%G!<%?!<$rJ]B8$9$k!#(B
|
|
3487 (setq skk-last-henkan-key skk-henkan-key
|
|
3488 ;; $B3NDj$7$?8l$r@hF,$K$7$F(B skk-henkan-list $B$NCM$rJ]B8$9$k!#(B
|
|
3489 skk-last-henkan-list (cons kakutei-word
|
|
3490 (delete kakutei-word skk-henkan-list) )
|
|
3491 skk-last-henkan-okurigana skk-henkan-okurigana
|
|
3492 skk-last-okuri-char skk-okuri-char
|
|
3493 skk-kakutei-count (1+ skk-kakutei-count) )
|
|
3494 ;;(if (boundp 'disable-undo)
|
|
3495 ;; (setq disable-undo nil)
|
|
3496 ))
|
|
3497 (setq skk-abbrev-mode nil
|
|
3498 skk-exit-show-candidates nil
|
|
3499 skk-henkan-active nil
|
|
3500 skk-henkan-count -1
|
|
3501 skk-henkan-key nil
|
|
3502 skk-henkan-list nil
|
|
3503 skk-henkan-okurigana nil
|
|
3504 skk-henkan-on nil
|
|
3505 skk-kakutei-flag nil
|
|
3506 skk-okuri-char nil
|
|
3507 skk-prefix "" )
|
|
3508 (if skk-auto-okuri-process
|
|
3509 (skk-init-auto-okuri-variables) )
|
|
3510 (if (skk-numeric-p)
|
|
3511 (skk-init-numeric-conversion-variables) ))
|
|
3512
|
|
3513 (defun skk-undo-kakutei ()
|
|
3514 "$B0lHV:G8e$N3NDj$r%"%s%I%%$7!"8+=P$7$KBP$9$k8uJd$rI=<($9$k!#(B
|
|
3515 $B:G8e$K3NDj$7$?$H$-$N8uJd$O%9%-%C%W$5$l$k!#(B
|
|
3516 $B8uJd$,B>$K$J$$$H$-$O!"%_%K%P%C%U%!$G$N<-=qEPO?$KF~$k!#(B"
|
|
3517 (interactive)
|
|
3518 (cond ((eq last-command 'skk-undo-kakutei)
|
|
3519 (skk-error "$B3NDj%"%s%I%%$OO"B3;HMQ$G$-$^$;$s(B"
|
|
3520 "Cannot undo kakutei repeatedly" ))
|
|
3521 (skk-henkan-active
|
|
3522 (skk-error "$B"'%b!<%I$G$O3NDj%"%s%I%%$G$-$^$;$s(B"
|
|
3523 "Cannot undo kakutei in $B"'(B mode" ))
|
|
3524 ((or (not skk-last-henkan-key) (string= skk-last-henkan-key ""))
|
|
3525 ;; skk-last-henkan-key may be nil or "".
|
|
3526 (skk-error "$B%"%s%I%%%G!<%?!<$,$"$j$^$;$s(B" "Lost undo data") ))
|
|
3527 (condition-case nil
|
|
3528 (let ((end (if skk-last-henkan-okurigana
|
|
3529 (+ (length skk-last-henkan-okurigana)
|
|
3530 skk-henkan-end-point )
|
|
3531 skk-henkan-end-point )))
|
|
3532 (setq skk-henkan-active t
|
|
3533 skk-henkan-key skk-last-henkan-key
|
|
3534 skk-henkan-list skk-last-henkan-list
|
|
3535 skk-henkan-on t
|
|
3536 skk-henkan-okurigana skk-last-henkan-okurigana
|
|
3537 skk-okuri-char skk-last-okuri-char
|
|
3538 skk-current-search-prog-list
|
|
3539 (if (eq (car (car skk-search-prog-list))
|
|
3540 'skk-search-kakutei-jisyo-file )
|
|
3541 ;; $B3NDj<-=q$OC5$7$F$bL50UL#!#(B
|
|
3542 (cdr skk-search-prog-list)
|
|
3543 skk-search-prog-list ))
|
|
3544 (if (>= (point-max) end)
|
|
3545 ;; $B:G8e$NJQ49ItJ,$N%F%-%9%H$r>C$9!#Aw$j2>L>$rGD0.$7$F$$$k$N$J$i(B
|
|
3546 ;; (skk-process-okuri-early $B$,(B non-nil $B$J$iAw$j2>L>$rGD0.$G$-$J$$(B)$B!"(B
|
|
3547 ;; $BAw$j2>L>$r4^$a$?ItJ,$^$G$r>C$9!#(B
|
|
3548 (delete-region skk-henkan-start-point end) )
|
|
3549 (goto-char skk-henkan-start-point)
|
|
3550 (cancel-undo-boundary)
|
|
3551 (insert "$B"'(B")
|
|
3552 (undo-boundary)
|
|
3553 (skk-set-marker skk-henkan-start-point (point))
|
|
3554 (if skk-okuri-char
|
|
3555 ;; $BAw$j$"$j(B
|
|
3556 (progn
|
|
3557 (insert (substring skk-henkan-key 0
|
|
3558 (1- (length skk-henkan-key)) ))
|
|
3559 (skk-set-marker skk-henkan-end-point (point))
|
|
3560 (if skk-henkan-okurigana (insert skk-henkan-okurigana)) )
|
|
3561 (insert skk-henkan-key)
|
|
3562 (skk-set-marker skk-henkan-end-point (point)) )
|
|
3563 ;; $B$5$!!"=`Hw$,@0$$$^$7$?!*(B
|
|
3564 (skk-message "$B3NDj%"%s%I%%!*(B" "Undo kakutei!")
|
|
3565 (setq skk-henkan-count 1)
|
|
3566 (skk-henkan) )
|
|
3567 ;; skk-kakutei-undo $B$+$iESCf$GH4$1$?>l9g$O!"3F<o%U%i%0$r=i4|2=$7$F$*$+$J$$(B
|
|
3568 ;; $B$H<!$NF0:n$r$7$h$&$H$7$?$H$-$K%(%i!<$K$J$k!#(B
|
|
3569 (error (skk-kakutei))
|
|
3570 (quit (skk-kakutei)) ))
|
|
3571
|
|
3572 (defun skk-downcase (char)
|
|
3573 (let ((d (cdr (assq char skk-downcase-alist))))
|
|
3574 (if d
|
|
3575 d
|
|
3576 (downcase char) )))
|
|
3577
|
|
3578 (defun skk-set-henkan-point (&optional arg)
|
|
3579 "$BJQ49$r3+;O$9$k%]%$%s%H$r%^!<%/$7!"BP1~$9$k(B skk-prefix $B$+!"Jl2;$rF~NO$9$k!#(B"
|
|
3580 (interactive "*P")
|
|
3581 (combine-after-change-calls
|
|
3582 (let* ((last-char (skk-downcase last-command-char))
|
|
3583 (normal (not (eq last-char last-command-char)))
|
|
3584 (sokuon (and (string= skk-prefix (char-to-string last-char))
|
|
3585 (/= last-char ?o)))
|
|
3586 (henkan-active skk-henkan-active))
|
|
3587 (cancel-undo-boundary)
|
|
3588 (if (or (not skk-henkan-on) skk-henkan-active)
|
|
3589 (if normal
|
|
3590 (skk-set-henkan-point-subr)
|
|
3591 (if skk-henkan-on
|
|
3592 (skk-set-henkan-point-subr) )
|
|
3593 (if henkan-active
|
|
3594 (skk-emulate-original-map arg)
|
|
3595 (skk-self-insert arg) ))
|
|
3596 (if (not normal)
|
|
3597 ;; process special char
|
|
3598 (progn
|
|
3599 (insert last-char)
|
|
3600 (skk-set-marker skk-henkan-end-point (point))
|
|
3601 (setq skk-henkan-count 0
|
|
3602 skk-henkan-key (skk-buffer-substring
|
|
3603 skk-henkan-start-point (point) )
|
|
3604 skk-prefix "" )
|
|
3605 (skk-henkan) )
|
|
3606 ;; prepare for the processing of okurigana if not skk-okurigana
|
|
3607 ;; and the preceding character is not a numeric character.
|
|
3608 ;; if the previous char is a special midashi char or a
|
|
3609 ;; numeric character, we assume that the user intended to type the
|
|
3610 ;; last-command-char in lower case.
|
|
3611 (if (and (not skk-okurigana)
|
|
3612 (or (= skk-henkan-start-point (point))
|
|
3613 (let ((p (char-after (1- (point)))))
|
|
3614 (not
|
|
3615 (or
|
|
3616 ;; previous char is a special midashi char
|
|
3617 (memq p skk-special-midashi-char-list)
|
|
3618 ;; previous char is an ascii numeric char
|
|
3619 (and (<= 48 p) ; ?0
|
|
3620 (<= p 57) ) ; ?9
|
|
3621 ;; previous char is a jis numeric char
|
|
3622 (and (eq (char-after (- (point) 2)) 163)
|
|
3623 (<= 176 p) (<= p 185) ))))))
|
|
3624 (if skk-process-okuri-early
|
|
3625 (progn
|
|
3626 (skk-set-marker skk-henkan-end-point (point))
|
|
3627 (setq skk-okuri-char (char-to-string last-char))
|
|
3628 (if sokuon
|
|
3629 (progn
|
|
3630 (setq skk-henkan-key
|
|
3631 (concat (skk-buffer-substring
|
|
3632 skk-henkan-start-point
|
|
3633 skk-kana-start-point )
|
|
3634 (if skk-katakana "$B%C(B" "$B$C(B")
|
|
3635 skk-henkan-okurigana ))
|
|
3636 (skk-erase-prefix)
|
|
3637 (insert (if skk-katakana "$B%C(B " "$B$C(B "))
|
|
3638 (setq skk-prefix ""
|
|
3639 skk-henkan-count 0 )
|
|
3640 (skk-henkan)
|
|
3641 ;;(if skk-use-face (skk-henkan-face-off))
|
|
3642 (delete-backward-char 2)
|
|
3643 ;;(if skk-use-face (skk-henkan-face-on))
|
|
3644 )
|
|
3645 (setq skk-henkan-key (concat
|
|
3646 (skk-buffer-substring
|
|
3647 skk-henkan-start-point
|
|
3648 (point) )
|
|
3649 skk-okuri-char ))
|
|
3650 (insert " ")
|
|
3651 (setq skk-prefix ""
|
|
3652 skk-henkan-count 0 )
|
|
3653 (skk-henkan)
|
|
3654 ;;(if skk-use-face (skk-henkan-face-off))
|
|
3655 (delete-backward-char 1)
|
|
3656 ;;(if skk-use-face (skk-henkan-face-on))
|
|
3657 )
|
|
3658 ;; we set skk-kana-start-point here, since the marker may no
|
|
3659 ;; longer point at the correct position after skk-henkan.
|
|
3660 (skk-set-marker skk-kana-start-point (point)) )
|
|
3661 (if (= skk-henkan-start-point (point))
|
|
3662 nil
|
|
3663 (if sokuon
|
|
3664 (progn
|
|
3665 (skk-erase-prefix)
|
|
3666 (insert (if skk-katakana "$B%C(B" "$B$C(B"))
|
|
3667 (setq skk-prefix "") ))
|
|
3668 (skk-set-marker skk-okurigana-start-point (point))
|
|
3669 (insert "*")
|
|
3670 (skk-set-marker skk-kana-start-point (point))
|
|
3671 (setq skk-okuri-char (char-to-string last-char)
|
|
3672 skk-okurigana t ))))))
|
|
3673 (if normal
|
|
3674 (skk-unread-event
|
|
3675 (skk-character-to-event last-char)) ))))
|
|
3676
|
|
3677 ;;;###skk-autoload
|
|
3678 (defun skk-start-henkan (arg)
|
|
3679 "$B"&%b!<%I$G$OJQ49$r3+;O$9$k!#"'%b!<%I$G$O<!$N8uJd$rI=<($9$k!#(B
|
|
3680 $B$=$NB>$N%b!<%I$G$O!"%*%j%8%J%k$N%-!<3d$jIU$1$N%3%^%s%I$r%(%_%e%l!<%H$9$k!#(B"
|
|
3681 (interactive "*p")
|
|
3682 (combine-after-change-calls
|
|
3683 (save-match-data
|
|
3684 (if (not skk-henkan-on)
|
|
3685 (skk-self-insert arg)
|
|
3686 (if skk-henkan-active
|
|
3687 (progn (setq skk-henkan-count (1+ skk-henkan-count))
|
|
3688 (skk-henkan) )
|
|
3689 (let ((pos (point)))
|
|
3690 (or (string= skk-prefix "")
|
|
3691 (skk-error "$B%U%#%C%/%9$5$l$F$$$J$$(B skk-prefix $B$,$"$j$^$9(B"
|
|
3692 "Have unfixed skk-prefix" ))
|
|
3693 (if (< pos skk-henkan-start-point)
|
|
3694 (skk-error
|
|
3695 "$B%+!<%=%k$,JQ493+;OCOE@$h$jA0$K$"$j$^$9(B"
|
|
3696 "Henkan end point must be after henkan start point" ))
|
|
3697 ;; $B8+=P$78l$,%+%?%+%J$G$"$l$P$R$i$,$J$KJQ49$9$k!#$b$78+=P$78l$NJQ49(B
|
|
3698 ;; $B$;$:$K$=$N$^$^(B skk-henkan $B$KEO$7$?$1$l$P!"(BC-u SPC (arg $B$,(B 4 $B$K$J(B
|
|
3699 ;; $B$k(B) $B$H%?%$%W$9$l$P$h$$!#(B
|
|
3700 (if (and skk-katakana (eq arg 1))
|
|
3701 (skk-hiragana-region skk-henkan-start-point pos) )
|
|
3702 (setq skk-henkan-key (skk-buffer-substring
|
|
3703 skk-henkan-start-point pos ))
|
|
3704 (if skk-allow-spaces-newlines-and-tabs
|
|
3705 ;; skk-henkan-key $B$NCf$N(B "[ \n\t]+" $B$r40A4$K<h$j=|$/!#(B
|
|
3706 (while (string-match "[ \n\t]+" skk-henkan-key)
|
|
3707 (setq skk-henkan-key
|
|
3708 (concat (substring skk-henkan-key 0 (match-beginning 0))
|
|
3709 (substring skk-henkan-key (match-end 0)) )))
|
|
3710 (skk-save-point
|
|
3711 (beginning-of-line)
|
|
3712 (if (> (point) skk-henkan-start-point)
|
|
3713 (skk-error
|
|
3714 "$BJQ49%-!<$K2~9T$,4^$^$l$F$$$^$9(B"
|
|
3715 "Henkan key may not contain a new line character" )))
|
|
3716 ;; $B:G=i$N%9%Z!<%9$G(B skk-henkan-key $B$r$A$g$s@Z$k$@$1!#(B
|
|
3717 (setq skk-henkan-key (substring skk-henkan-key 0
|
|
3718 (string-match " "
|
|
3719 skk-henkan-key ))))
|
|
3720 (skk-set-marker skk-henkan-end-point pos)
|
|
3721 (setq skk-henkan-count 0)
|
|
3722 (skk-henkan)
|
|
3723 (if (and skk-abbrev-mode skk-henkan-active)
|
|
3724 (progn
|
|
3725 (skk-j-mode-on)
|
|
3726 (setq skk-abbrev-mode t) )))) ;; XXX
|
|
3727 (cancel-undo-boundary) ))))
|
|
3728
|
|
3729 (defun skk-backward-and-set-henkan-point (arg)
|
|
3730 "$B%]%$%s%H$ND>A0$K$"$kJ8;zNs$N@hF,$KJQ493+;O%]%$%s%H$r<($9(B \"$B"&(B\" $B$rIU$1$k!#(B
|
|
3731 $B%+!<%=%k$ND>A0$K$"$kJ8;z(B \($B%9%Z!<%9J8;z!"%?%VJ8;z!"D92;$rI=$o$9!V!<!W(B $B$OL5>r7o(B
|
|
3732 $B$K%9%-%C%W$5$l$k(B\) $B$r(B skk-what-char-type $B$K$FH=JL$7!"F1<o$NJ8;zNs$r$R$H$+$?$^(B
|
|
3733 $B$j$H$7$F8eJ}$X%9%-%C%W$9$k!#(B
|
|
3734 $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!#(B
|
|
3735 C-u ARG $B$G(B ARG $B$rM?$($k$H!"$=$NJ8;zJ,$@$1La$C$FF1$8F0:n$r9T$J$&!#(B"
|
|
3736 (interactive "*P")
|
|
3737 (if (not skk-mode)
|
|
3738 (skk-emulate-original-map arg)
|
|
3739 (catch 'exit1
|
|
3740 (skk-save-point
|
|
3741 ;; $B$H$j$"$($::G=i$N(B SPC, TAB, $BA43Q(B SPC $B$@$1%8%c%s%W$9$k!#(B
|
|
3742 (skip-chars-backward " \t$B!!(B")
|
|
3743 ;; $B0z?t$"$j!#(B
|
|
3744 (if arg
|
|
3745 (if (not skk-allow-spaces-newlines-and-tabs)
|
|
3746 (skk-backward-char (prefix-numeric-value arg))
|
|
3747 (setq arg (prefix-numeric-value arg))
|
|
3748 (while (> arg 0)
|
|
3749 (skip-chars-backward " \t$B!!(B")
|
|
3750 (if (bolp)
|
|
3751 ;; $B9TF,$@$C$?$i0l9TA0$N9TKv$^$GLa$k$,!"(Barg $B$O8:$i$5$J$$!#(B
|
|
3752 (skk-backward-char 1)
|
|
3753 (skk-backward-char 1)
|
|
3754 (setq arg (1- arg)) )))
|
|
3755 ;; $B0z?t$J$7!#(B
|
|
3756 (let ((limit
|
|
3757 (if (not skk-allow-spaces-newlines-and-tabs)
|
|
3758 (skk-save-point (beginning-of-line) (point))
|
|
3759 (point-min) ))
|
|
3760 ;; $B!2!1!0!/!.!-!,!+!*!)!(!'!&!%!$!#(B
|
|
3761 (unknown-chars-regexp
|
|
3762 (if skk-allow-spaces-newlines-and-tabs
|
|
3763 "[ $B!!(B\n\t$B!<!7!6!5!4!3(B]"
|
|
3764 "[$B!!!<!7!6!5!4!3(B]" ))
|
|
3765 char p )
|
|
3766 (save-match-data
|
|
3767 (skk-save-point
|
|
3768 (skk-backward-char 1)
|
|
3769 (while (and (> (point) limit)
|
|
3770 ;; unknown-chars-regexp $B$G$OJ8;z<oJL$,H=JL$G$-$J$$$N(B
|
|
3771 ;; $B$G!"$=$NJ8;zNs$,B3$/8B$j%]%$%s%H$r%P%C%U%!$N@hF,(B
|
|
3772 ;; $BJ}8~$XLa$9!#(B
|
|
3773 (looking-at unknown-chars-regexp) )
|
|
3774 (skk-backward-char 1) )
|
|
3775 (setq char (skk-what-char-type))
|
|
3776 (if (eq char 'unknown)
|
|
3777 (throw 'exit1 nil)
|
|
3778 (skk-backward-and-set-henkan-point-1 char)
|
|
3779 (setq p (point))
|
|
3780 (if skk-allow-spaces-newlines-and-tabs
|
|
3781 (while (and (> (point) limit) (bolp))
|
|
3782 ;; 1 $B9T>e$N9TKv$X!#(B
|
|
3783 (skk-backward-char 1)
|
|
3784 ;; $B%]%$%s%H$,H=JL$G$-$J$$J8;z<oJL$N>e$K$"$k4V$O(B
|
|
3785 ;; backward $BJ}8~$X%]%$%s%H$rLa$9!#(B
|
|
3786 ;;(while (and (> (point) limit)
|
|
3787 ;; (looking-at unknown-chars-regexp) )
|
|
3788 ;; (skk-backward-char 1) )
|
|
3789 (if ;;(or
|
|
3790 (> 0 (skk-backward-and-set-henkan-point-1 char))
|
|
3791 ;;(eq (skk-what-char-type) char))
|
|
3792 (setq p (point)) ))))))
|
|
3793 (goto-char p)
|
|
3794 (skip-chars-forward unknown-chars-regexp) ))
|
|
3795 (skk-set-henkan-point-subr) ))))
|
|
3796
|
|
3797 (defun skk-backward-and-set-henkan-point-1 (char)
|
|
3798 ;; skk-backward-and-set-henkan-point $B$N%5%V%k!<%A%s!#(BCHAR $B$N<oN`$K1~$8$?J8;z(B
|
|
3799 ;; $B$r%9%-%C%W$7$F%P%C%U%!$N@hF,J}8~$XLa$k!#(B
|
|
3800 (cond ((eq char 'hirakana)
|
|
3801 ;; "$B$r(B" $B$NA0$G;_$^$C$?J}$,JXMx!)(B
|
|
3802 (skip-chars-backward "$B!3!4!5!6!7!<$s$!(B-$B$q(B") )
|
|
3803 ((eq char 'katakana)
|
|
3804 ;; "$B%r(B" $B$NA0$G;_$^$C$?J}$,JXMx!)(B
|
|
3805 (skip-chars-backward "$B!3!4!5!6!7!<%s%!(B-$B%q(B") )
|
|
3806 ((eq char 'zenkaku)
|
|
3807 (skip-chars-backward "$B!!(B-$B#z(B") )
|
|
3808 ((eq char 'ascii)
|
|
3809 (skip-chars-backward " -~") )))
|
|
3810
|
|
3811 (defun skk-what-char-type ()
|
|
3812 ;; $B8=:_$N%]%$%s%H$K$"$kJ8;z$,$I$s$J<oN`$+$rH=JL$9$k!#(B
|
|
3813 (save-match-data
|
|
3814 (cond ((looking-at "[$B$!(B-$B$s(B]") 'hirakana)
|
|
3815 ((looking-at "[$B%!(B-$B%s(B]") 'katakana)
|
|
3816 ;; "$B!<(B" $B$r=|30$7$F$$$k(B ("$B!<(B" $B$O(B "$B!;(B" $B$H(B "$B!=(B" $B$N4V$KF~$C$F$$$k(B)$B!#(B
|
|
3817 ((looking-at "[$B!!(B-$B!;!=(B-$B#z(B]") 'zenkaku)
|
|
3818 ((looking-at "[ -~]") 'ascii)
|
|
3819 (t 'unknown) )))
|
|
3820
|
|
3821 (defun skk-set-henkan-point-subr ()
|
|
3822 "$B$+$J$rF~NO$7$?8e$G!"%]%$%s%H$KJQ493+;O$N%^!<%/(B \($B"&(B\) $B$rIU$1$k!#(B
|
|
3823 $B85!9$O$3$N4X?t$O(B skk-set-henkan-point $B$NFbIt4X?t$G$"$k!#(B"
|
|
3824 (interactive "*")
|
|
3825 (if skk-henkan-on (skk-kakutei))
|
|
3826 ;;(if (boundp 'disable-undo)
|
|
3827 ;; (setq disable-undo t)
|
|
3828 (cancel-undo-boundary)
|
|
3829 ;; )
|
|
3830 (if (string= skk-prefix "")
|
|
3831 (insert "$B"&(B")
|
|
3832 (skk-erase-prefix)
|
|
3833 (insert "$B"&(B")
|
|
3834 (skk-set-marker skk-kana-start-point (point))
|
|
3835 (skk-insert-prefix) )
|
|
3836 ;;(or (boundp 'disable-undo)
|
|
3837 (undo-boundary)
|
|
3838 ;; )
|
|
3839 (setq skk-henkan-on t)
|
|
3840 (skk-set-marker skk-henkan-start-point (point)) )
|
|
3841
|
|
3842 (defun skk-change-marker ()
|
|
3843 ;; "$B"&(B"$B$r(B"$B"'(B"$B$KJQ$($k!#(Bskk-henkan-active $B%U%i%0$r(B t $B$K$9$k!#(B
|
|
3844 (combine-after-change-calls
|
|
3845 (skk-save-point
|
|
3846 (goto-char (- skk-henkan-start-point skk-kanji-len))
|
|
3847 (if (looking-at "$B"&(B")
|
|
3848 (progn
|
|
3849 (cancel-undo-boundary)
|
|
3850 (let ((buffer-undo-list t))
|
|
3851 (insert "$B"'(B")
|
|
3852 (delete-char 1)
|
|
3853 (setq skk-henkan-active t) )
|
|
3854 (undo-boundary)
|
|
3855 )
|
|
3856 (skk-kakutei)
|
|
3857 (skk-error "$B"&$,$"$j$^$;$s(B" "It seems that you have deleted $B"&(B") ))))
|
|
3858
|
|
3859 (defun skk-change-marker-to-white ()
|
|
3860 ;; "$B"'(B"$B$r(B"$B"&(B"$B$KJQ$($k!#(Bskk-henkan-active $B%U%i%0$r(B nil $B$K$9$k!#(B
|
|
3861 (combine-after-change-calls
|
|
3862 (skk-save-point
|
|
3863 (goto-char (- skk-henkan-start-point skk-kanji-len))
|
|
3864 (cancel-undo-boundary)
|
|
3865 (if (looking-at "$B"'(B")
|
|
3866 (let ((buffer-undo-list t))
|
|
3867 (insert "$B"&(B")
|
|
3868 (delete-char 1) )
|
|
3869 (goto-char skk-henkan-start-point)
|
|
3870 (insert "$B"&(B")
|
|
3871 ;;(or (boundp 'disable-undo)
|
|
3872 ;;(undo-boundary)
|
|
3873 ;; )
|
|
3874 (skk-set-marker skk-henkan-start-point (point))
|
|
3875 (skk-message "$B"'$,$"$j$^$;$s(B" "It seems that you have deleted $B"'(B") )
|
|
3876 (setq skk-henkan-active nil) )))
|
|
3877
|
|
3878 (defun skk-delete-henkan-markers (&optional nomesg)
|
|
3879 ;; $BJQ49;~$K%+%l%s%H%P%C%U%!$KI=$o$l$k(B `$B"&(B', `$B"'(B' $B%^!<%/$r>C$9!#(B
|
|
3880 (if (not (marker-position skk-henkan-start-point))
|
|
3881 nil
|
|
3882 (combine-after-change-calls
|
|
3883 (save-match-data
|
|
3884 (skk-save-point
|
|
3885 (goto-char (- skk-henkan-start-point skk-kanji-len))
|
|
3886 (if skk-henkan-active
|
|
3887 (progn
|
|
3888 (if skk-use-face (skk-henkan-face-off))
|
|
3889 (if (looking-at "$B"'(B")
|
|
3890 (delete-char 1)
|
|
3891 (or nomesg
|
|
3892 (skk-message "$B"'$,$"$j$^$;$s(B"
|
|
3893 "It seems that you have deleted $B"'(B" ))))
|
|
3894 (if (looking-at "$B"&(B")
|
|
3895 (delete-char 1)
|
|
3896 (or nomesg
|
|
3897 (skk-message "$B"&$,$"$j$^$;$s(B"
|
|
3898 "It seems that you have deleted $B"&(B" )))))))))
|
|
3899
|
|
3900 (defun skk-delete-okuri-mark ()
|
|
3901 ;; $BAw$j2>L>F~NOCf$K%+%l%s%H%P%C%U%!$KI=$o$l$k(B `*' $B%^!<%/$r>C$7!"Aw$j2>L>4XO"(B
|
|
3902 ;; $B%U%i%0$r(B nil $B$K%;%C%H$9$k!#(B
|
|
3903 (if (not (marker-position skk-okurigana-start-point))
|
|
3904 nil
|
|
3905 (skk-save-point
|
|
3906 (if (eq (char-after skk-okurigana-start-point) ?*) ; ?*
|
|
3907 (delete-region skk-okurigana-start-point
|
|
3908 (1+ skk-okurigana-start-point) ))
|
|
3909 (setq skk-okurigana nil
|
|
3910 skk-okuri-char nil
|
|
3911 skk-henkan-okurigana nil ))))
|
|
3912
|
|
3913 ;;;; jisyo related functions
|
|
3914 (defun skk-purge-from-jisyo ()
|
|
3915 "$B"'%b!<%I$G8=:_$N8uJd$r<-=q%P%C%U%!$+$i>C5n$9$k!#(B"
|
|
3916 (interactive "*")
|
|
3917 (if (and skk-henkan-active (not (string= skk-henkan-key "")))
|
|
3918 (if (not
|
|
3919 (yes-or-no-p (format
|
|
3920 (if skk-japanese-message-and-error
|
|
3921 "%s /%s/%s$B$r<-=q$+$i:o=|$7$^$9!#NI$$$G$9$+!)(B"
|
|
3922 "Really purge \"%s /%s/%s\"?" )
|
|
3923 skk-henkan-key (skk-get-simply-current-candidate)
|
|
3924 (if (and skk-henkan-okurigana
|
|
3925 (or skk-henkan-okuri-strictly
|
|
3926 skk-henkan-strict-okuri-precedence ))
|
|
3927 (concat
|
|
3928 (if skk-japanese-message-and-error
|
|
3929 " ($BAw$j2>L>(B: "
|
|
3930 "(okurigana: " )
|
|
3931 skk-henkan-okurigana
|
|
3932 ") " )
|
|
3933 " " ))))
|
|
3934 nil
|
|
3935 ;; skk-henkan-start-point $B$+$i(B point $B$^$G:o=|$7$F$7$^$C$F$b!"JQ49D>8e(B
|
|
3936 ;; $B$K(B ($B%+!<%=%k$rF0$+$9$3$H$J$/(B) skk-purge-from-jisyo $B$r8F$Y$PLdBj$J$$(B
|
|
3937 ;; $B$,!"%+!<%=%k$,0c$&>l=j$X0\F0$7$F$$$?>l9g$O!":o=|$9$Y$-$G$J$$$b$N$^(B
|
|
3938 ;; $B$G:o=|$7$F$7$^$&2DG=@-$,$"$k!#$=$3$G!"Aw$j2>L>$,$"$l$P$=$ND9$5$r4^(B
|
|
3939 ;; $B$a$?(B end $B$r5a$a!":#2s$NJQ49$K4XO"$7$?8D=j$@$1$r@53N$K@Z$j<h$k$h$&$K(B
|
|
3940 ;; $B$9$k!#(B
|
|
3941 (let ((end (if skk-henkan-okurigana
|
|
3942 (+ (length skk-henkan-okurigana)
|
|
3943 skk-henkan-end-point )
|
|
3944 skk-henkan-end-point ))
|
|
3945 (word (skk-get-simply-current-candidate (skk-numeric-p))) )
|
|
3946 ;;(if skk-use-numeric-conversion
|
|
3947 ;; (skk-update-jisyo-for-numerals purge-word 'purge) )
|
|
3948 (skk-update-jisyo word 'purge)
|
|
3949 ;; $BG0$N$?$a!#(Bskk-previous-candidate $B$r;2>H!#(B
|
|
3950 (if skk-use-face (skk-henkan-face-off))
|
|
3951 (delete-region skk-henkan-start-point end)
|
|
3952 (skk-change-marker-to-white)
|
|
3953 (skk-kakutei)
|
|
3954 (if skk-use-relation
|
|
3955 (skk-update-relation
|
|
3956 (if skk-use-numeric-conversion
|
|
3957 (skk-compute-numeric-henkan-key skk-henkan-key)
|
|
3958 skk-henkan-key )
|
|
3959 (or skk-henkan-okurigana skk-okuri-char)
|
|
3960 word nil 'purge))
|
|
3961 ;;(if (boundp 'skk-attr-alist)
|
|
3962 ;; (skk-attr-purge
|
|
3963 ;; (if skk-use-numeric-conversion
|
|
3964 ;; (skk-compute-numeric-henkan-key skk-henkan-key)
|
|
3965 ;; skk-henkan-key )
|
|
3966 ;; (or skk-henkan-okurigana skk-okuri-char)
|
|
3967 ;; word ))
|
|
3968 ))))
|
|
3969
|
|
3970 ;;;###skk-autoload
|
|
3971 (defun skk-save-jisyo (&optional quiet)
|
|
3972 "SKK $B$N<-=q%P%C%U%!$r%;!<%V$9$k!#(B
|
|
3973 $B%*%W%7%g%J%k0z?t$N(B QUIET $B$,(B non-nil $B$G$"$l$P!"<-=q%;!<%V;~$N%a%C%;!<%8$r=P$5$J(B
|
|
3974 $B$$!#(B"
|
|
3975 (interactive "P")
|
|
3976 (let* ((skk-jisyo (expand-file-name skk-jisyo))
|
|
3977 (jisyo-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg)) )
|
|
3978 (if (or (not jisyo-buffer) (not (buffer-modified-p jisyo-buffer)))
|
|
3979 (if (not quiet)
|
|
3980 (progn
|
|
3981 (skk-message "SKK $B<-=q$rJ]B8$9$kI,MW$O$"$j$^$;$s(B"
|
|
3982 "No need to save SKK jisyo" )
|
|
3983 (sit-for 1) ))
|
|
3984 (with-current-buffer jisyo-buffer
|
|
3985 (let ((inhibit-quit t)
|
|
3986 (tempo-file (skk-make-temp-jisyo)) )
|
|
3987 (if (not quiet)
|
|
3988 (skk-message "SKK $B<-=q$rJ]B8$7$F$$$^$9(B..."
|
|
3989 "Saving SKK jisyo..." ))
|
|
3990 (skk-save-jisyo-1 tempo-file)
|
|
3991 (skk-check-jisyo-size tempo-file)
|
|
3992 ;; $B<-=q$N%;!<%V$K@.8y$7$F=i$a$F(B modified $B%U%i%C%0$r(B nil $B$K$9$k!#(B
|
|
3993 (set-buffer-modified-p nil)
|
|
3994 (if (not quiet)
|
|
3995 (progn
|
|
3996 (skk-message "SKK $B<-=q$rJ]B8$7$F$$$^$9(B...$B40N;!*(B"
|
|
3997 "Saving SKK jisyo...done" )
|
|
3998 (sit-for 1) ))
|
|
3999 (if (eq this-command 'save-buffers-kill-emacs)
|
|
4000 (skk-record-jisyo-data jisyo-buffer) )))
|
|
4001 (skk-set-cursor-properly) )))
|
|
4002
|
|
4003 (defun skk-save-jisyo-1 (file)
|
|
4004 (save-match-data
|
|
4005 (let (mc-flag enable-multibyte-characters buffer-read-only)
|
|
4006 (goto-char (point-min))
|
|
4007 (if (re-search-forward "^;; okuri-ari entries.$" nil 'noerror)
|
|
4008 nil
|
|
4009 (skk-error
|
|
4010 "$BAw$j$"$j%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*(B SKK $B<-=q$N%;!<%V$rCf;_$7$^$9(B"
|
|
4011 "Header line for okuri-ari entries is missing! Stop saving SKK jisyo" ))
|
|
4012 ;; $B$*$C!"%3%a%s%H%U%'%$%9$,(B $" $B$G=*$o$i$J$$$>(B > hilit19.el
|
|
4013 (if (re-search-forward "^;; okuri-nasi entries.$" nil 'noerror)
|
|
4014 nil
|
|
4015 (skk-error
|
|
4016 "$BAw$j$J$7%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s(B $B!*(B SKK $B<-=q$N%;!<%V$rCf;_$7$^$9(B"
|
|
4017 "Header line for okuri-nasi entries is missing! Stop saving SKK jisyo" )))
|
|
4018 (write-region 1 (point-max) file nil 'nomsg) ))
|
|
4019
|
|
4020 (defun skk-check-jisyo-size (new-file)
|
|
4021 (let ((new-size (nth 7 (file-attributes new-file)))
|
|
4022 old-size )
|
|
4023 (if (eq new-size 0)
|
|
4024 (progn
|
|
4025 (delete-file new-file)
|
|
4026 (skk-error "SKK $B<-=q$,6u$K$J$C$F$$$^$9!*(B $B<-=q$N%;!<%V$rCf;_$7$^$9(B"
|
|
4027 "Null SKK jisyo! Stop saving jisyo" )))
|
|
4028 (if (or (not skk-compare-jisyo-size-when-saving)
|
|
4029 ;; $B5l<-=q$H$N%5%$%:Hf3S$r9T$J$o$J$$!#(B
|
|
4030 (progn
|
|
4031 ;; (1)skk-jisyo $B$,$J$$$+!"(B
|
|
4032 ;; (2)new-file $B$H(B skk-jisyo $B$,F10l$N%5%$%:$+(B
|
|
4033 ;; (skk-(aux-)large-jisyo $B$+$i?75,$NC18l$rFI$_9~$^$J$+$C$?$j!"(B
|
|
4034 ;; $B?75,C18l$NEPO?$r9T$J$o$J$+$C$?>l9g$O%5%$%:$,F1$8(B)$B!"(B
|
|
4035 ;; (3)new-file $B$NJ}$,Bg$-$$(B
|
|
4036 ;; $B>l9g(B ($B>e5-$N(B 3 $BDL$j$G$"$l$P$$$:$l$b@5>o(B)$B!#(B
|
|
4037 (setq old-size (nth 7 (file-attributes skk-jisyo)))
|
|
4038 (or (not old-size)
|
|
4039 (>= new-size old-size) )))
|
|
4040 (skk-make-new-jisyo new-file)
|
|
4041 ;; yes-or-no-p $B$K2sEz$7!"(Bnewline $B$9$k$H!"(Bthis-command $B$,JQ$C$F$7$^$&!#(B
|
|
4042 (let (this-command this-command-char last-command last-command-char)
|
|
4043 (if (skk-yes-or-no-p
|
|
4044 (format
|
|
4045 "skk-jisyo $B$,(B %dbytes $B>.$5$/$J$j$^$9$,!"%;!<%V$7$FNI$$$G$9$+!)(B"
|
|
4046 (- old-size new-size) )
|
|
4047 (format
|
|
4048 "New %s will be %dbytes smaller. Save anyway?"
|
|
4049 skk-jisyo (- old-size new-size) ))
|
|
4050 ;; $B$H$K$+$/%;!<%V!#(B
|
|
4051 (skk-make-new-jisyo new-file)
|
|
4052 ;; $B%;!<%V$H$j;_$a!#(B
|
|
4053 (delete-file new-file)
|
|
4054 (with-output-to-temp-buffer "*SKK warning*"
|
|
4055 (if skk-japanese-message-and-error
|
|
4056 (progn
|
|
4057 (princ "$B%;!<%V$7$h$&$H$9$k<-=q$N%5%$%:$,85$N$b$N$h$j$b>.$5$J$C$F$7$^$&$N$G!"(B")
|
|
4058 (terpri)
|
|
4059 (princ "$B%;!<%V$rESCf$GCf;_$7$^$7$?!#<-=q$N%5%$%:$,>.$5$/$J$C$?860x$K$ONc$((B")
|
|
4060 (terpri)
|
|
4061 (princ "$B$P!"(B")
|
|
4062 (terpri)
|
|
4063 (terpri)
|
|
4064 (princ " $B!&(BM-x skk-purge-from-jisyo $B$r<B9T$7$?!#(B")
|
|
4065 (terpri)
|
|
4066 (terpri)
|
|
4067 (princ " $B!&(B.skk-jisyo $B$N4A;z%3!<%I$H!"(B\" *.skk-jisyo*\" $B%P%C%U%!$N4A;z%3!<%I(B")
|
|
4068 (terpri)
|
|
4069 (princ " $B$,0[$J$C$F$$$k!#(B")
|
|
4070 (terpri)
|
|
4071 (terpri)
|
|
4072 (princ " $B!&(B\" *.skk-jisyo*\" $B%P%C%U%!$r<+J,$GJT=8$7$?!#(B")
|
|
4073 (terpri)
|
|
4074 (terpri)
|
|
4075 (princ "$B$J$I$,9M$($i$l$^$9(B ($B:G=i$N(B 2 $B$D$,860x$G$"$l$P!"0[>o$G$O$"$j$^$;$s!#(B")
|
|
4076 (terpri)
|
|
4077 (princ "$B:G8e$N>l9g$O!"$"$J$?$,$I$N$h$&$JJT=8$r$7$?$+$K$h$j$^$9(B)$B!#860x$r3NG'(B")
|
|
4078 (terpri)
|
|
4079 (princ "$B8e!"?5=E$K<-=q$N%;!<%V$r9T$J$&$3$H$r$*4+$a$7$^$9!#(B")
|
|
4080 (terpri)
|
|
4081 (terpri)
|
|
4082 (princ "$B85$N<-=q$r:FEYFI$_9~$`$K$O!"(B")
|
|
4083 (terpri)
|
|
4084 (terpri)
|
|
4085 (princ " M-x skk-reread-private-jisyo")
|
|
4086 (terpri)
|
|
4087 (terpri)
|
|
4088 (princ "$B$r<B9T$7$F2<$5$$!#(B") )
|
|
4089 (princ "As size of your private JISYO to be saved is smaller than the")
|
|
4090 (terpri)
|
|
4091 (princ "original, we have stopped saving JISYO. For example, the following")
|
|
4092 (terpri)
|
|
4093 (princ "condition makes a smaller private JISYO;")
|
|
4094 (terpri)
|
|
4095 (terpri)
|
|
4096 (princ " (a)You executed M-x skk-purge-from-jisyo,")
|
|
4097 (terpri)
|
|
4098 (terpri)
|
|
4099 (princ " (b)Kanji code of .skk-jisyo is different from the one of")
|
|
4100 (terpri)
|
|
4101 (princ " \" *.skk-jisyo*\" buffer, or")
|
|
4102 (terpri)
|
|
4103 (terpri)
|
|
4104 (princ " (c)You edited \" *.skk-jisyo*\" buffer manually.")
|
|
4105 (terpri)
|
|
4106 (terpri)
|
|
4107 (princ "The first two condition is not strange, but the last one depends on")
|
|
4108 (terpri)
|
|
4109 (princ "how you edited JISYO. We strongly recommend to save JISYO")
|
|
4110 (terpri)
|
|
4111 (princ "carefully after checking what causes this.")
|
|
4112 (terpri)
|
|
4113 (princ "If you want to reread your original private JISYO, type")
|
|
4114 (terpri)
|
|
4115 (terpri)
|
|
4116 (princ " M-x skk-reread-private-jisyo")
|
|
4117 (terpri) ))
|
|
4118 (skk-error "SKK $B<-=q$N%;!<%V$rCf;_$7$^$7$?!*(B"
|
|
4119 "Stop saving SKK jisyo!" ))))))
|
|
4120
|
|
4121 (defun skk-make-temp-jisyo ()
|
|
4122 ;; SKK $B8D?M<-=qJ]B8$N$?$a$N:n6HMQ$N%U%!%$%k$r:n$j!"%U%!%$%k$N%b!<%I$r(B
|
|
4123 ;; skk-jisyo $B$N$b$N$HF1$8$K@_Dj$9$k!#:n$C$?:n6HMQ%U%!%$%k$NL>A0$rJV$9!#(B
|
|
4124 (let ((tempo-name (skk-make-temp-file "skkdic")))
|
|
4125 (skk-create-file tempo-name)
|
|
4126 (set-file-modes tempo-name (file-modes skk-jisyo))
|
|
4127 tempo-name ))
|
|
4128
|
|
4129 (defun skk-make-temp-file (prefix)
|
|
4130 ;; from call-process-region of mule.el. Welcome!
|
|
4131 (make-temp-name
|
|
4132 (if (null (memq system-type '(ms-dos windows-nt)))
|
|
4133 (concat "/tmp/" prefix)
|
|
4134 (let ((tem (or (getenv "TMP") (getenv "TEMP") "/")))
|
|
4135 (concat tem
|
|
4136 (if (memq (aref tem (1- (length tem))) '(47 92)) ;?/, ?\\
|
|
4137 "" "/" )
|
|
4138 prefix )))))
|
|
4139
|
|
4140 (defun skk-make-new-jisyo (tempo-file)
|
|
4141 ;; TEMPO-FILE $B$r?75,$N(B skk-jisyo $B$K$9$k!#(Bskk-backup-jisyo $B$,(B non-nil $B$@$C$?(B
|
|
4142 ;; $B$i%P%C%/%"%C%W<-=q$r:n$k!#(B
|
|
4143 (if skk-backup-jisyo
|
|
4144 (progn
|
|
4145 (if (file-exists-p skk-backup-jisyo)
|
|
4146 (delete-file skk-backup-jisyo) )
|
|
4147 (rename-file skk-jisyo skk-backup-jisyo) )
|
|
4148 (delete-file skk-jisyo) )
|
|
4149 (rename-file tempo-file skk-jisyo 'ok-if-already-exists) )
|
|
4150
|
|
4151 (defun skk-reread-private-jisyo ()
|
|
4152 "$B%P%C%U%!$KFI$_9~$s$@8D?M<-=q$rGK4~$7!"%U%!%$%k$+$i%P%C%U%!$X:FFI$_9~$_$9$k!#(B"
|
|
4153 (interactive)
|
|
4154 (let ((buf (skk-get-jisyo-buffer skk-jisyo 'nomsg)))
|
|
4155 (if (and buf
|
|
4156 (skk-yes-or-no-p "$BJT=8Cf$N8D?M<-=q$rGK4~$7$^$9$+!)(B"
|
|
4157 "Discard your editing private JISYO?" ))
|
|
4158 (progn
|
|
4159 (save-excursion
|
|
4160 (set-buffer buf)
|
|
4161 (set-buffer-modified-p nil)
|
|
4162 (kill-buffer buf) )
|
|
4163 (or
|
|
4164 (skk-get-jisyo-buffer skk-jisyo 'nomsg)
|
|
4165 (skk-error "$B8D?M<-=q$r:FFI$_9~$_$9$k$3$H$,$G$-$^$;$s!*(B"
|
|
4166 "Cannot reread private JISYO!" ))))))
|
|
4167
|
|
4168 (defun skk-record-jisyo-data (jisyo-buffer)
|
|
4169 ;; $B<-=q%G!<%?!<$r<h$j!"(BEmacs $B$N=*N;$N:]$G$"$l$P!"$=$N%G!<%?!<$r(B
|
|
4170 ;; skk-record-file $B$KJ]B8$7!"$=$l0J30$G$"$l$P!"$=$l$r%(%3!<$9$k!#(B
|
|
4171 (if (or (not skk-keep-record) (> 1 skk-kakutei-count))
|
|
4172 nil
|
|
4173 (with-temp-file skk-record-file
|
|
4174 (insert-file-contents skk-record-file)
|
|
4175 (goto-char (point-min))
|
|
4176 (insert
|
|
4177 (format
|
|
4178 "%s $BEPO?(B: %3d $B3NDj(B: %4d $B3NDjN((B: %3d%% $B8l?t(B:%6d\n"
|
|
4179 (current-time-string)
|
|
4180 skk-touroku-count skk-kakutei-count
|
|
4181 (/ (* 100 (- skk-kakutei-count skk-touroku-count))
|
|
4182 skk-kakutei-count )
|
|
4183 (if skk-count-private-jisyo-candidates-exactly
|
|
4184 (skk-count-jisyo-candidates (expand-file-name skk-jisyo))
|
|
4185 ;; 1 $B9T(B 1 $B8uJd$H$_$J$9!#(B
|
|
4186 (with-current-buffer jisyo-buffer
|
|
4187 (- (count-lines (point-min) (point-max)) 2) )))))
|
|
4188 (setq skk-touroku-count 0 skk-kakutei-count 0) ))
|
|
4189
|
|
4190 (defun skk-count-jisyo-candidates (file)
|
|
4191 "SKK $B<-=q$N8uJd?t$r?t$($k!#(B
|
|
4192 `[' $B$H(B `]' $B$K0O$^$l$?Aw$j2>L>Kh$N%V%m%C%/Fb$O?t$($J$$!#(B"
|
|
4193 (interactive
|
|
4194 (list (read-file-name
|
|
4195 (format "Jisyo File: (default: %s) " skk-jisyo)
|
|
4196 "~/" skk-jisyo 'confirm )))
|
|
4197 ;; mule@emacs19.31 $B$@$H2<5-$N$h$&$K$9$k$H(B (`$B%!(B' $B$,860x$N$h$&(B) $B2?8N$+(B
|
|
4198 ;; default-directory $B$NKvHx$K2~9T$,IU$/!#(B
|
|
4199 ;; $BDL>o$O5$$,IU$+$J$$$,!"(Brsz-mini.el $B$r;H$C$F(B resize-minibuffer-mode $B$r(B
|
|
4200 ;; non-nil $B$K$7$F$$$k$HITMW$J(B 2 $B9TL\$,=P8=$9$k!#(B
|
|
4201 ;; (interactive "f$B<-=q%U%!%$%k(B: ")
|
|
4202 (with-current-buffer (find-file-noselect file)
|
|
4203 (save-match-data
|
|
4204 (let ((count 0)
|
|
4205 (min (point-min))
|
|
4206 (max (if (interactive-p) (point-max)))
|
|
4207 (interactive-p (interactive-p))
|
|
4208 mc-flag enable-multibyte-characters )
|
|
4209 (goto-char min)
|
|
4210 (if (or
|
|
4211 ;; $B$3$A$i$O(B skk-save-point $B$r;H$o$:!"%]%$%s%H$r0\F0$5$;$k!#(B
|
|
4212 (not (re-search-forward "^;; okuri-ari entries.$" nil t nil))
|
|
4213 (not
|
|
4214 (skk-save-point
|
|
4215 (re-search-forward "^;; okuri-nasi entries.$" nil t nil) )))
|
|
4216 (skk-error "$B$3$N%U%!%$%k$O(B SKK $B<-=q$G$O$"$j$^$;$s(B"
|
|
4217 "This file is not a SKK dictionary") )
|
|
4218 (while (search-forward "/" nil t)
|
|
4219 (cond ((looking-at "\\[")
|
|
4220 (forward-line 1)
|
|
4221 (beginning-of-line) )
|
|
4222 ((not (eolp))
|
|
4223 (setq count (1+ count)) ))
|
|
4224 (if interactive-p
|
|
4225 (message "Counting jisyo candidates...%3d%% done"
|
|
4226 (/ (* 100 (- (point) min)) max) )))
|
|
4227 (if (interactive-p)
|
|
4228 (message "%d entries" count)
|
|
4229 count )))))
|
|
4230
|
|
4231 (defun skk-create-file (file &optional message)
|
|
4232 ;; FILE $B$,$J$1$l$P!"(BFILE $B$H$$$&L>A0$N6u%U%!%$%k$r:n$k!#(B
|
|
4233 ;; $B%*%W%7%g%J%k0z?t$N(B MESSAGE $B$r;XDj$9$k$H!"%U%!%$%k:n@.8e$=$N%a%C%;!<%8$r(B
|
|
4234 ;; $B%_%K%P%C%U%!$KI=<($9$k!#(B
|
|
4235 (let ((file (expand-file-name file)))
|
|
4236 (or (file-exists-p file)
|
|
4237 (progn
|
|
4238 (write-region 1 1 file nil 0)
|
|
4239 (if message
|
|
4240 (progn
|
|
4241 (message message)
|
|
4242 (sit-for 3) ))))))
|
|
4243
|
|
4244 (defun skk-get-jisyo-buffer (file &optional nomsg)
|
|
4245 ;; FILE $B$r3+$$$F(B SKK $B<-=q%P%C%U%!$r:n$j!"%P%C%U%!$rJV$9!#(B
|
|
4246 ;; $B%*%W%7%g%J%k0z?t$N(B NOMSG $B$r;XDj$9$k$H%U%!%$%kFI$_9~$_$N:]$N%a%C%;!<%8$r(B
|
|
4247 ;; $BI=<($7$J$$!#(B
|
|
4248 (if file
|
|
4249 (let ((inhibit-quit t)
|
|
4250 ;; expand-file-name $B$r8F$s$G$*$+$J$$$H!";H$C$F$$$k(B OS $B>e$"$j$($J$$(B
|
|
4251 ;; $B%U%!%$%k%M!<%`$G$b!"$=$N$^$^EO$5$l$F$7$^$&!#(B
|
|
4252 ;; ($BNc(B) MSDOS $B$N>l9g(B ~/_skk-jisyo $B$N<B:]$N%U%!%$%k%M!<%`$O!"(BOS $B>e(B
|
|
4253 ;; $B$N@)8B$+$i(B ~/_skk-jis $B$H$J$k!#(Bexpand-file-name $B$r8F$P$J$$$H!"(B
|
|
4254 ;; " *_skk-jisyo*" $B$H$$$&%P%C%U%!$,$G$-$F$7$^$$!"(Bskk-save-jisyo $B$J(B
|
|
4255 ;; $B$IB>$N4X?t$K1F6A$,=P$k!#(B
|
|
4256 (file (expand-file-name file))
|
|
4257 (jisyo-buf (concat " *" (file-name-nondirectory file)
|
|
4258 "*" )))
|
|
4259 ;; $B<-=q%P%C%U%!$H$7$F%*!<%W%s$5$l$F$$$k$J$i!"2?$b$7$J$$!#(B
|
|
4260 (or (get-buffer jisyo-buf)
|
|
4261 (with-current-buffer (setq jisyo-buf (get-buffer-create jisyo-buf))
|
|
4262 (buffer-disable-undo jisyo-buf)
|
|
4263 (auto-save-mode -1)
|
|
4264 ;; $B%o!<%-%s%0%P%C%U%!$N%b!<%I%i%$%s$O%"%C%W%G!<%H$5$l$J$$!)(B
|
|
4265 ;;(make-local-variable 'line-number-mode)
|
|
4266 ;;(make-local-variable 'column-number-mode)
|
|
4267 (setq buffer-read-only nil
|
|
4268 case-fold-search nil
|
|
4269 ;; buffer-file-name $B$r(B nil $B$K$9$k$H!"<-=q%P%C%U%!$KF~$j9~(B
|
|
4270 ;; $B$s$G(B C-x C-s $B$7$?$H$-$K%U%!%$%k%M!<%`$r?R$M$F$/$k$h$&$K(B
|
|
4271 ;; $B$J$k$,!"(BM-x compile $B$J$IFbIt$G(B save-some-buffers $B$r%3!<(B
|
|
4272 ;; $B%k$7$F$$$k%3%^%s%I$r;H$C$?$H$-$G$b%;!<%V$9$k$+$I$&$+$r(B
|
|
4273 ;; $B?R$M$F$3$J$/$J$k!#(B
|
|
4274 ;;buffer-file-name file
|
|
4275 ;;cache-long-line-scans nil
|
|
4276 ;;column-number-mode nil
|
|
4277 ;;line-number-mode nil
|
|
4278 ;; dabbrev $B$N%5!<%A$H$J$k%P%C%U%!$K$J$i$J$$$h$&$KB8:_$7$J(B
|
|
4279 ;; $B$$%b!<%IL>$K$7$F$*$/!#<B32$N$"$kI{:nMQ$O$J$$$O$:!#(B
|
|
4280 major-mode 'skk-jisyo-mode
|
|
4281 mode-name "SKK$B<-=q(B" )
|
|
4282 (or nomsg
|
|
4283 (skk-message "SKK $B<-=q(B %s $B$r%P%C%U%!$KFI$_9~$s$G$$$^$9(B..."
|
|
4284 "Inserting contents of %s ..."
|
|
4285 (file-name-nondirectory file) ))
|
|
4286 (let ((coding-system-for-read 'euc-japan); XXX
|
|
4287 enable-character-unification)
|
|
4288 (insert-file-contents file) )
|
|
4289 (skk-set-jisyo-code)
|
|
4290 (or nomsg
|
|
4291 (skk-message
|
|
4292 "SKK $B<-=q(B %s $B$r%P%C%U%!$KFI$_9~$s$G$$$^$9(B...$B40N;!*(B"
|
|
4293 "Inserting contents of %s ...done"
|
|
4294 (file-name-nondirectory file) ))
|
|
4295 (skk-setup-jisyo-buffer)
|
|
4296 (set-buffer-modified-p nil)
|
|
4297 jisyo-buf )))))
|
|
4298
|
|
4299 (defun skk-set-jisyo-code ()
|
|
4300 ;; $BJ8;z%3!<%I$r(B CODE $B$K%;%C%H$9$k!#(B
|
|
4301 (if (not skk-jisyo-code)
|
|
4302 nil
|
|
4303 (if (stringp skk-jisyo-code)
|
|
4304 (setq skk-jisyo-code (cdr
|
|
4305 (assoc skk-jisyo-code skk-coding-system-alist) )))
|
|
4306 (if (fboundp 'set-buffer-file-coding-system)
|
|
4307 (set-buffer-file-coding-system skk-jisyo-code)
|
|
4308 (set-file-coding-system skk-jisyo-code) )))
|
|
4309
|
|
4310 (defun skk-setup-jisyo-buffer ()
|
|
4311 ;; skk-jisyo $B$N<-=q%P%C%U%!$G!"(B
|
|
4312 ;; (1)$B6u%P%C%U%!$G$"$l$P!"?7$7$/%X%C%@!<$r:n$j!"(B
|
|
4313 ;; (2)$B<-=q%(%s%H%j$,$"$k4{B8$N<-=q%P%C%U%!$J$i$P!"%X%C%@!<$,@5$7$$$+$I$&$+$r(B
|
|
4314 ;; $B%A%'%C%/$9$k!#(B
|
|
4315 ;;
|
|
4316 ;; skk-okuri-ari-min $B$H(B skk-okuri-nasi-min $B$N0LCV$rJQ99$7$?!#(B
|
|
4317 ;; $B"-(B $B?7$7$$(B skk-okuri-ari-min
|
|
4318 ;; ;; okuri-ari entries.
|
|
4319 ;; $B"+(B $B0JA0$N(B skk-okuri-ari-min
|
|
4320 ;;
|
|
4321 ;; $B"-(B skk-okuri-ari-max $B"-(B $B?7$7$$(B skk-okuri-nasi-min
|
|
4322 ;; ;; okuri-nasi entries.
|
|
4323 ;; $B"+(B $B0JA0$N(B skk-okuri-nasi-min
|
|
4324 ;;
|
|
4325 ;;
|
|
4326 ;; $BJQ99A0$N0LCV$G$"$l$P!"2<5-$N$h$&$J6u<-=q$N>l9g!"(B
|
|
4327 ;;
|
|
4328 ;; ;; okuri-ari entries.
|
|
4329 ;; ;; okuri-nasi entries.
|
|
4330 ;;
|
|
4331 ;; skk-okuri-ari-min $B$H(B skk-okuri-ari-max $B$N%^!<%+!<$,=E$J$C$F$7$^$$!"(B
|
|
4332 ;; skk-okuri-ari-min $B$N0LCV$KA^F~$7$?%(%s%H%j$,(B skk-okuri-ari-max $B$N%^!<%+!<(B
|
|
4333 ;; $B$r8eJ}$K2!$7$d$i$J$$!#(B
|
|
4334 ;;
|
|
4335 ;; $B$3$N4X?t$N%*%j%8%J%k$NL>>N$O!"(Bj-check-jisyo $B$@$C$?$,!"(Bskk-check-jisyo $B$H(B
|
|
4336 ;; $B$$$&L>A0$K$9$k$H(B skk-tools.el $BFb$N4X?tL>$H=EJ#$9$k!#(B
|
|
4337 ;; case-fold-search $B$O!"<-=q%P%C%U%!$G$O>o$K(B nil$B!#(B
|
|
4338 (let (mc-flag enable-multibyte-characters)
|
|
4339 (save-match-data
|
|
4340 (if (eq (buffer-size) 0)
|
|
4341 ;; $B6u%P%C%U%!$@$C$?$i!"%X%C%@!<$N$_A^F~!#(B
|
|
4342 (insert ";; okuri-ari entries.\n" ";; okuri-nasi entries.\n") )
|
|
4343 (goto-char (point-min))
|
|
4344 (if (re-search-forward "^;; okuri-ari entries.$" nil 'noerror)
|
|
4345 ;; $B8GDj%]%$%s%H$J$N$G!"(B(point) $B$G==J,!#(B
|
|
4346 (setq skk-okuri-ari-min (point))
|
|
4347 (skk-error "$BAw$j$"$j%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*(B"
|
|
4348 "Header line for okuri-ari entries is missing!" ))
|
|
4349 (if (re-search-forward "^;; okuri-nasi entries.$" nil 'noerror)
|
|
4350 (progn
|
|
4351 (beginning-of-line)
|
|
4352 ;; $B6&M-<-=q$J$i8GDj%]%$%s%H$G$bNI$$$N$@$,!"<-=q%P%C%U%!$GJT=8$r9T(B
|
|
4353 ;; $B$J$C$?$H$-$N$3$H$rG[N8$7$F%^!<%+!<$K$7$F$*$/!#(B
|
|
4354 (setq skk-okuri-ari-max (point-marker))
|
|
4355 (forward-line 1)
|
|
4356 (backward-char 1)
|
|
4357 (setq skk-okuri-nasi-min (point-marker)) )
|
|
4358 (skk-error "$BAw$j$J$7%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*(B"
|
|
4359 "Header line for okuri-nasi entries is missing!" )))))
|
|
4360
|
|
4361 ;;;###skk-autoload
|
|
4362 (defun skk-search ()
|
|
4363 ;; skk-current-search-prog-list $B$NMWAG$K$J$C$F$$$k%W%m%0%i%`$rI>2A$7$F!"(B
|
|
4364 ;; skk-henkan-key$B$r%-!<$K$7$F8!:w$r9T$&!#(B
|
|
4365 (let (l)
|
|
4366 (while (and (null l) skk-current-search-prog-list)
|
|
4367 (setq l (eval (car skk-current-search-prog-list))
|
|
4368 skk-current-search-prog-list (cdr skk-current-search-prog-list) ))
|
|
4369 l ))
|
|
4370
|
|
4371 (defun skk-search-relation ()
|
|
4372 (let ((last
|
|
4373 (if (not (and
|
|
4374 skk-last-henkan-result
|
|
4375 (markerp skk-last-henkan-point)
|
|
4376 (< skk-last-henkan-point (point))
|
|
4377 (< (- (point) skk-last-henkan-point) skk-relation-length) ))
|
|
4378 nil
|
|
4379 skk-last-henkan-result )))
|
|
4380 (skk-attr-search-relation
|
|
4381 skk-henkan-key
|
|
4382 (or skk-henkan-okurigana skk-okuri-char)
|
|
4383 last )))
|
|
4384
|
|
4385 (defun skk-attr-search-relation (midasi okuri last)
|
|
4386 (if skk-debug (message "%S" midasi okuri last))
|
|
4387 (or skk-attr-alist (skk-attr-read))
|
|
4388 (let ((entries (cdr (skk-attr-get-table-for-midasi midasi okuri)))
|
|
4389 ret rest )
|
|
4390 (if skk-debug (message "%S" entries))
|
|
4391 (while entries
|
|
4392 (let* ((entry (car entries))
|
|
4393 (rel (assq 'relation (cdr entry))))
|
|
4394 (if (or (null last) (member last (cdr rel)))
|
|
4395 (setq ret (nconc ret (list (car entry))))
|
|
4396 (setq rest (nconc rest (list (car entry)))) ) )
|
|
4397 (setq entries (cdr entries)) )
|
|
4398 (nconc ret rest) ))
|
|
4399
|
|
4400 (defun skk-update-relation (midasi okuri word last &optional purge)
|
|
4401 (skk-attr-update-relation midasi okuri word last purge) )
|
|
4402
|
|
4403 (defun skk-attr-update-relation (midasi okuri word last &optional purge)
|
|
4404 (or skk-attr-alist (skk-attr-read))
|
|
4405 (if skk-debug (message "update %S %S %S %S" midasi okuri word last))
|
|
4406 (if purge
|
|
4407 (skk-attr-purge midasi okuri word)
|
|
4408 (let* ((table (skk-attr-get-table-for-midasi midasi okuri))
|
|
4409 (entry (assoc word (cdr table)))
|
|
4410 (oldattr (assq 'relation (cdr entry)))
|
|
4411 (listlast (if last (list last) nil)) )
|
|
4412 (cond (oldattr
|
|
4413 (if last
|
|
4414 (progn
|
|
4415 (setcdr oldattr (cons last
|
|
4416 (delete last (cdr oldattr)) ))
|
|
4417 (let ((tail (nthcdr skk-relation-record-num oldattr)))
|
|
4418 (if tail
|
|
4419 (setcdr tail nil) )))))
|
|
4420 (entry
|
|
4421 (setcdr entry (cons (cons 'relation listlast)
|
|
4422 (cdr entry))))
|
|
4423 (table
|
|
4424 (setcdr table (cons (list word
|
|
4425 (list 'okurigana okuri)
|
|
4426 (cons 'relation listlast) )
|
|
4427 (cdr table) )))
|
|
4428 ;; new entry
|
|
4429 (t (skk-attr-put-1 midasi okuri word 'relation listlast)) ))))
|
|
4430
|
|
4431 (defun skk-search-jisyo-file (file limit &optional nomsg)
|
|
4432 ;; SKK $B<-=q%U%)!<%^%C%H$N(B FILE $B$G(B skk-henkan-key $B$r%-!<$K$7$F8!:w$r9T$&!#(B
|
|
4433 ;; $B8!:w%j!<%8%g%s$,(B LIMIT $B0J2<$K$J$k$^$G%P%$%J%j%5!<%A$r9T$$!"$=$N8e%j%K%"(B
|
|
4434 ;; $B%5!<%A$r9T$&!#(B
|
|
4435 ;; LIMIT $B$,(B 0 $B$G$"$l$P!"%j%K%"%5!<%A$N$_$r9T$&!#(B
|
|
4436 ;; $B<-=q$,%=!<%H$5$l$F$$$J$$$N$G$"$l$P!"(BLIMIT $B$r(B 0 $B$9$kI,MW$,$"$k!#(B
|
|
4437 ;; $B%*%W%7%g%J%k0z?t$N(B NOMSG $B$,(B non-nil $B$G$"$l$P(B skk-get-jisyo-buffer $B$N%a%C(B
|
|
4438 ;; $B%;!<%8$r=PNO$7$J$$$h$&$K$9$k!#(B
|
|
4439 (let ((jisyo-buffer (skk-get-jisyo-buffer file nomsg)))
|
|
4440 (if jisyo-buffer
|
|
4441 ;; skk-henkan-key $B$H(B skk-henkan-okurigana $B$O%+%l%s%H%P%C%U%!$N%m!<%+%k(B
|
|
4442 ;; $BCM!#(B
|
|
4443 (let ((okurigana (or skk-henkan-okurigana skk-okuri-char))
|
|
4444 (midasi
|
|
4445 (if skk-use-numeric-conversion
|
|
4446 ;; skk-henkan-key $B$,(B nil $B$N$3$H$,$"$k!#2?8N(B?
|
|
4447 (skk-compute-numeric-henkan-key skk-henkan-key)
|
|
4448 skk-henkan-key ))
|
|
4449 entry-list entry )
|
|
4450 (with-current-buffer jisyo-buffer
|
|
4451 (setq skk-henkan-key midasi
|
|
4452 entry-list (skk-search-jisyo-file-1 okurigana limit) )
|
|
4453 (if entry-list
|
|
4454 (progn
|
|
4455 (setq entry
|
|
4456 (cond ((and okurigana skk-henkan-okuri-strictly)
|
|
4457 ;; $BAw$j2>L>$,F10l$N%(%s%H%j$N$_$rJV$9!#(B
|
|
4458 (nth 2 entry-list) )
|
|
4459 ((and okurigana skk-henkan-strict-okuri-precedence)
|
|
4460 ;; $BAw$j2>L>$,F10l$N%(%s%H%j$N$&$7$m$K!"(B
|
|
4461 ;; $B$=$NB>$N%(%s%H%j$r$D$1$F$+$($9!#(B
|
|
4462 (skk-nunion (nth 2 entry-list) (car entry-list)))
|
|
4463 (t (car entry-list)) ))
|
|
4464 (if (and (boundp 'skk-attr-search-function)
|
|
4465 skk-attr-search-function )
|
|
4466 (funcall skk-attr-search-function midasi okurigana entry)
|
|
4467 entry ))))))))
|
|
4468
|
|
4469 (defun skk-search-jisyo-file-1 (okurigana limit &optional delete)
|
|
4470 ;; skk-search-jisyo-file $B$N%5%V%k!<%A%s!#(Bskk-compute-henkan-lists $B$r;HMQ$7!"(B
|
|
4471 ;; $B8+=P$78l$K$D$$$F$N%(%s%H%j$N>pJs$rJV$9!#(B
|
|
4472 ;; DELETE $B$,(B non-nil $B$G$"$l$P!"(BMIDASI $B$K%^%C%A$9$k%(%s%H%j$r:o=|$9$k!#(B
|
|
4473 (let ((key (concat "\n" skk-henkan-key " /"))
|
|
4474 min max size p )
|
|
4475 (save-match-data
|
|
4476 ;; skk-okuri-ari-min $B$H(B skk-okuri-ari-max $B$O<-=q%P%C%U%!$N%m!<%+%kCM!#(B
|
|
4477 (if okurigana
|
|
4478 (setq min skk-okuri-ari-min
|
|
4479 max skk-okuri-ari-max )
|
|
4480 (setq min skk-okuri-nasi-min
|
|
4481 max (point-max) ))
|
|
4482 (if (> limit 0)
|
|
4483 (while (progn (setq size (- max min)) (> size limit))
|
|
4484 (goto-char (+ min (/ size 2)))
|
|
4485 (beginning-of-line)
|
|
4486 (setq p (point))
|
|
4487 ;; $BAw$j$"$j$J$i5U=g$KHf3S$r9T$J$&!#(B
|
|
4488 (if
|
|
4489 (if okurigana
|
|
4490 (string< (skk-buffer-substring p (1- (search-forward " ")))
|
|
4491 skk-henkan-key )
|
|
4492 (string< skk-henkan-key
|
|
4493 (skk-buffer-substring p (1- (search-forward " "))) ))
|
|
4494 (setq max p)
|
|
4495 (setq min p) )))
|
|
4496 (goto-char min)
|
|
4497 ;; key $B$,8!:w3+;OCOE@$K$"$C$?>l9g$G$b8!:w2DG=$J$h$&$K0lJ8;zLa$k!#(Bkey $B$,(B
|
|
4498 ;; $B$=$N@hF,ItJ,$K(B "\n" $B$r4^$s$G$$$k$3$H$KCm0U!#(B
|
|
4499 (or (bobp) (backward-char 1))
|
|
4500 ;; $B8zN($,NI$$$h$&$K(B kanji-flag, mc-flag, enable-multibyte-characters $B$r(B
|
|
4501 ;; nil $B$K$7$F$*$/!#(B
|
|
4502 ;; case-fold-search $B$O!"<-=q%P%C%U%!$G$O>o$K(B nil$B!#(B
|
|
4503 (let (mc-flag)
|
|
4504 ;; enable-multibyte-characters)
|
|
4505 (if (search-forward key max 'noerror)
|
|
4506 (prog1
|
|
4507 (skk-compute-henkan-lists okurigana)
|
|
4508 (if delete
|
|
4509 (progn
|
|
4510 (beginning-of-line)
|
|
4511 (delete-region (point)
|
|
4512 (progn (forward-line 1) (point)) )))))))))
|
|
4513
|
|
4514
|
|
4515 (defun skk-compute-henkan-lists (okurigana)
|
|
4516 ;; $B<-=q%(%s%H%j$r(B 4 $B$D$N%j%9%H$KJ,2r$9$k!#(B
|
|
4517 ;;
|
|
4518 ;; $BAw$j$J$7(B ($BNc$($P!"<-=q%(%s%H%j(B "$B$F$s$5$$(B /$BE>:\(B/$BE7:R(B/$BE7:M(B/" $B$N=hM}(B)
|
|
4519 ;; entry1 := ("$BE>:\(B" "$BE7:R(B" "$BE7:M(B") == $BA4%(%s%H%j(B
|
|
4520 ;; entry2 := nil
|
|
4521 ;; entry3 := nil
|
|
4522 ;; entry4 := nil
|
|
4523 ;;
|
|
4524 ;; $BAw$j$"$j(B ($BNc$($P!"!V5c$/!W$NJQ49$r9T$C$?>l9g$N!"<-=q%(%s%H%j(B
|
|
4525 ;; "$B$J(Bk /$BK4(B/$BL5(B/$BLD(B/$B5c(B/[$B$/(B/$BL5(B/$BLD(B/$B5c(B/]/[$B$-(B/$BK4(B/]/" $B$N=hM}(B)
|
|
4526 ;; entry1 := ("$BK4(B" "$BL5(B" "$BLD(B" "$B5c(B") == $B4A;zItJ,$NA4%(%s%H%j(B
|
|
4527 ;; entry2 := ("[$B$/(B") == $BB>$NAw$j2>L>$r;H$&4A;z%(%s%H%j(B ($B$"$l(B
|
|
4528 ;; $B$P(B) + $B:#2s$NJQ49$NAw$j2>L>ItJ,(B
|
|
4529 ;; entry3 := ("$BL5(B" "$BLD(B" "$B5c(B") == $B:#2s$NJQ49$NAw$j2>L>$r;H$&2DG=@-$N(B
|
|
4530 ;; $B$"$kA44A;z%(%s%H%j(B
|
|
4531 ;; entry4 := ("]" "[$B$-(B" "$BK4(B" "]") == $BB>$NAw$j2>L>$r;H$&4A;z%(%s%H%j(B ($B;D(B
|
|
4532 ;; $B$j!#$"$l$P(B)
|
|
4533 ;;
|
|
4534 ;; * "[" $B$OD>8e$KB3$/$R$i$,$J$rAw$j2>L>$K;}$D4A;z$N%(%s%H%j$N=i$^$j$rI=$7!"(B
|
|
4535 ;; "]" $B$O!"3:Ev$NAw$j2>L>%0%k!<%W$N=*$j$r<($9!#(B
|
|
4536 ;;
|
|
4537 ;; $B$3$N4X?t$O!"JQ49;~$H!"3NDjD>8e$N<-=q$N%"%C%W%G!<%H;~$N(B 2 $BEY8F$P$l$k(B
|
|
4538 ;; ($BJQ49;~$K8!:w$r9T$C$?<-=q$,!"(Bskk-jisyo $B$H$O8B$i$J$$$N$G!"(B2 $BEY7W;;$;$6$k(B
|
|
4539 ;; $B$rF@$J$$(B)$B!#(B
|
|
4540 ;;
|
|
4541 ;; $BJQ49;~$O!"(Bskk-henkan-okuri-strictly $B$,(B non-nil $B$G$"$l$P!"(B
|
|
4542 ;; $B7W;;7k2L$N(B entry3$B$r!"(Bskk-henkan-okuri-strictly $B$,(B nil $B$G$"$C$F(B
|
|
4543 ;; $B$+$D(B skk-henkan-strict-okuri-precedence $B$,(B non-nil $B$"$l$P(B
|
|
4544 ;; (skk-uniion entry3 entry1) $B$r<h$j=P$9!#(B
|
|
4545 ;; $B$U$?$D$NJQ?t$,$H$b$K(B nil $B$N>l9g$O(B entry1 $B$r<h$j=P$9!#(B
|
|
4546 (if (not okurigana)
|
|
4547 (list (string-split
|
|
4548 "/"
|
|
4549 (skk-buffer-substring (point)
|
|
4550 (progn (end-of-line) (1- (point))) ))
|
|
4551 nil nil nil )
|
|
4552 (save-match-data
|
|
4553 (let ((stage 1) (q1 (queue-create)) (q2 (queue-create))
|
|
4554 (q3 (queue-create)) (q4 (queue-create))
|
|
4555 (okuri-key (concat "\[" okurigana)) item headchar )
|
|
4556 (catch 'exit
|
|
4557 (while (not (eolp))
|
|
4558 (setq item (skk-buffer-substring (point) (1- (search-forward "/")))
|
|
4559 headchar (if (string= item "") (skk-int-char 0) (aref item 0)) )
|
|
4560 (cond ((and (eq headchar ?\[) ; ?\[
|
|
4561 (<= stage 2) )
|
|
4562 (if (string= item okuri-key)
|
|
4563 (progn (queue-enqueue q2 item)
|
|
4564 (setq stage 3) )
|
|
4565 (setq stage 2)
|
|
4566 (queue-enqueue q2 item) ))
|
|
4567 ((eq stage 1)
|
|
4568 (queue-enqueue q1 item) )
|
|
4569 ((eq stage 2)
|
|
4570 (queue-enqueue q2 item) )
|
|
4571 ((eq stage 3)
|
|
4572 (if (eq headchar ?\]) ; ?\]
|
|
4573 (progn (setq stage 4)
|
|
4574 (queue-enqueue q4 item) )
|
|
4575 (queue-enqueue q3 item) ))
|
|
4576 ((eq stage 4)
|
|
4577 (queue-enqueue q4 item) ))))
|
|
4578 ;; entry1 entry2 entry3 entry4
|
|
4579 (list (queue-all q1) (queue-all q2) (queue-all q3) (queue-all q4)) ))))
|
|
4580
|
|
4581 ;; $B%-%e!<4XO"$N4X?t$N;HMQ$K:]$7$F$O!"!V%W%m%0%i%`$N9=B$$H<B9T!W(B(H. $B%(!<%Y%k%=(B
|
|
4582 ;; $B%s!"(BG.J.$B%5%9%^%s!"(BJ.$B%5%9%^%sCx!"855HJ8CKLu!#%^%0%m%&%R%k=PHG(B) $B$H(B Elib (the
|
|
4583 ;; GNU emacs lisp library version 1.0) $B$r;29M$K$7$?!#>e5-$NJ88%$G2r@b$5$l$F$$(B
|
|
4584 ;; $B$k%-%e!<$NI=8=$O!"(BElib $B$N(B queue-m.el $B$K$*$$$F<B8=$5$l$F$$$k$b$N$H$[$\F1$8<B(B
|
|
4585 ;; $BAu$H$J$C$F$$$k!#(B
|
|
4586 ;;
|
|
4587 ;; $B%j%9%H$G$N%-%e!<$NI=8=$O!"6qBNE*$K$ONc$($P(B ((A B C D E F) F) $B$N$h$&$J7A$K$J$C(B
|
|
4588 ;; $B$F$*$j!"(Bcar $B$N%j%9%H(B (A B C D E F) $B$,%-%e!<$NA4BN$rI=$o$7!"%-%e!<$N(B nth 1
|
|
4589 ;; $B$r<h$C$?$H$-$N(B F $B$,%-%e!<$N:G8eHx$rI=$o$9!#%-%e!<$N(B cdr $B$r<h$C$?$H$-$N(B (F)
|
|
4590 ;; $B$H$$$&%j%9%H$O!"%-%e!<$N(B car $B$KBP$7(B nthcdr 5 $B$r<h$C$?$H$-$N%j%9%H(B (F) $B$HF1(B
|
|
4591 ;; $B$8$b$N$G$"$k!#=>$$!"(Bcdr $B$N%j%9%H$N8e$K?7$7$$MWAG$rDI2C$9$k$3$H$G!"(Bcar $B$GI=(B
|
|
4592 ;; $B$o$5$l$k%-%e!<$NKvHx$K?7$7$$MWAG$rDI2C$9$k$3$H$,$G$-$k!#(B
|
|
4593 ;; $B0lJ}!"(Bnconc $B$d(B append $B$G$D$J$0$K$O!"$=$l$i$N4X?t$NBh#10z?t$N%j%9%H$NA4$F$N(B
|
|
4594 ;; $BMWAG$rAv::$;$M$P$J$i$:!"(BO(n) $B$N;~4V$,$+$+$k$N$G!"D9$$%j%9%H$r$D$J$0$H$-$OHf(B
|
|
4595 ;; $B3SE*%3%9%H$,$+$+$k!#(B
|
|
4596 ;;
|
|
4597 ;; $B$5$F!"6u$N(B queue == (cons nil nil) $B$KBP$7!"?7$7$$MWAG(B A $B$rDI2C$9$kJ}K!$r@b(B
|
|
4598 ;; $BL@$9$k!#$^$:!"?7$7$$MWAG(B A $B$N$_$r4^$s$@D9$5(B 1 $B$N%j%9%H(B (A) $B$r:n$k(B ($B2>$K(B
|
|
4599 ;; new-pair $B$H$$$&JQ?t$K<h$k(B)$B!#<!$K!"(B(setcar queue new-pair) $B$r9T$J$&$3$H$K$h(B
|
|
4600 ;; $B$j!"(Bqueue $B$,(B ((A)) $B$H$J$k(B (setcar, setcdr $B$NJV$jCM$O!"(Bnew-pair $B$G$"$k$3$H$K(B
|
|
4601 ;; $BCm0U(B)$B!#<!$K(B (setcdr queue new-pair) $B$7$F(B ((A) A) $B$H$J$C$?$H$3$m$r?^<($9$k!#(B
|
|
4602 ;; front, rear $B$NN>J}$N%]%$%s%?$,(B (A) $B$r;X$9$h$&$K$9$k(B ($B%-%e!<$NMWAG$,(B A $B$7$+(B
|
|
4603 ;; $B$J$$$N$G!"(Bfront, rear $B%]%$%s%?$H$b$KF1$8$b$N$r;X$7$F$$$k(B)$B!#(B
|
|
4604 ;; queue
|
|
4605 ;; +-------+-------+
|
|
4606 ;; | Front | Rear |
|
|
4607 ;; +---|---+---|---+
|
|
4608 ;; | +---> +---------------+
|
|
4609 ;; +------------>| o | nil |
|
|
4610 ;; +---|---+-------+
|
|
4611 ;; | +-------+
|
|
4612 ;; +----> | A |
|
|
4613 ;; +-------+
|
|
4614 ;;
|
|
4615 ;; $B>e5-$N(B queue, ((A) A) $B$KBP$7!"99$K?7$7$$MWAG(B B $B$rDI2C$9$k!#Nc$K$h$j(B B $B$N$_(B
|
|
4616 ;; $B$r4^$`D9$5(B 1 $B$N%j%9%H(B (B) $B$r:n$j!"JQ?t(B new-pair $B$K<h$k!#$3$3$G(B
|
|
4617 ;; (setcdr (cdr queue) new-pair) $B$rI>2A$9$k$H(B ($BCm(B1)$B!"(B* $B$N8D=j$N%]%$%s%?A`:n$,(B
|
|
4618 ;; $B9T$J$o$l$k!#%-%e!<$N:G8eJ}$K?7$7$$MWAG$G$"$k(B B $B$,DI2C$5$l$k$3$H$K$J$k!#(B
|
|
4619 ;; queue $B$O(B ((A B) A B) $B$H$J$k!#(B
|
|
4620 ;; queue
|
|
4621 ;; +-------+-------+
|
|
4622 ;; | Front | Rear |
|
|
4623 ;; +---|---+---|---+
|
|
4624 ;; | +---> +---------------+ * +---------------+
|
|
4625 ;; +------------>| o | o --|------->| o | nil |
|
|
4626 ;; +---|---+-------+ +-------+-------+
|
|
4627 ;; | +-------+ | +-------+
|
|
4628 ;; +----> | A | +----> | B |
|
|
4629 ;; +-------+ +-------+
|
|
4630 ;;
|
|
4631 ;; $BCm(B1; $BDI2CA0$N%-%e!<$NMWAG$,(B 1 $B$D$N$H$-$O!"(Bfront $B$b(B rear $B$bF1$8$b$N$r;X$7(B
|
|
4632 ;; $B$F$$$k$N$G(B (setcdr (car queue) new-pair) $B$G$bEy2A$@$,!"%-%e!<$NMWAG(B
|
|
4633 ;; $B$,(B 2 $B$D0J>e$N$H$-$O(B (setcdr (cdr queue) new-pair) $B$G$J$$$H$^$:$$!#(B
|
|
4634 ;;
|
|
4635 ;; $B:G8e$K(B (setcdr queue new-pair) $B$rI>2A$9$k$3$H$K$h$j!"(Brear $B%]%$%s%?$rD%$jJQ(B
|
|
4636 ;; $B$($k(B (* $B$N8D=j$N%]%$%s%?A`:n$,9T$J$o$l$k(B)$B!#(Brear $B%]%$%s%?$,%-%e!<$N:G8eJ}$N(B
|
|
4637 ;; $BMWAG$r;X$9$h$&$K$9$k!#(Bfront $B%]%$%s%?$,;X$9%j%9%H$O%-%e!<$NA4$F$NMWAG$rI=$o(B
|
|
4638 ;; $B$9!#(B
|
|
4639 ;; queue
|
|
4640 ;; +-------+-------+ *
|
|
4641 ;; | Front | Rear |---------------------+
|
|
4642 ;; +---|---+-------+ |
|
|
4643 ;; | +---------------+ +--> +---------------+
|
|
4644 ;; +------------>| o | o --|------->| o | nil |
|
|
4645 ;; +---|---+-------+ +-------+-------+
|
|
4646 ;; | +-------+ | +-------+
|
|
4647 ;; +----> | A | +----> | B |
|
|
4648 ;; +-------+ +-------+
|
|
4649 ;;
|
|
4650 ;; $B$3$N$h$&$K%-%e!<$N:G8eJ}$K?7$7$$MWAG$rDI2C$9$k$3$H(B ($B%j%9%H$N:G8eJ}$KD9$5(B 1
|
|
4651 ;; $B$N?7$7$$%j%9%H$r$D$J$2$k$3$H(B) $B$,(B 2 $B2s$N%]%$%s%?A`:n$G2DG=$H$J$k$N$G!"$I$N$h(B
|
|
4652 ;; $B$&$JD9$$%j%9%H$G$"$C$F$bO"7k$K$+$+$k%3%9%H$O0lDj(B (O(1) $B$N4X?t$G$"$k(B) $B$G$"$k!#(B
|
|
4653 ;; $B$J$*!"8=>u$G$O!"J?6Q$7$F0B2A$K%j%9%H$N:G8eJ}$KMWAG$r$D$J$2$k!"$H$$$&L\E*$K(B
|
|
4654 ;; $B$@$1%-%e!<$r;H$C$F$$$k!#%-%e!<K\Mh$NL\E*$G$O;HMQ$7$F$*$i$J$$$N$G!"Nc$($P!"(B
|
|
4655 ;; $B2<5-$N$h$&$J4X?t$O;HMQ$7$F$$$J$$!#(B
|
|
4656 ;; queue-last, queue-first, queue-nth, queue-nthcdr, queue-dequeue
|
|
4657
|
|
4658 ;;;###skk-autoload
|
|
4659 (defun skk-nunion (x y)
|
|
4660 ;; X $B$H(B Y $B$NOB=89g$r:n$k!#Ey$7$$$+$I$&$+$NHf3S$O!"(Bequal $B$G9T$o$l$k!#(BX $B$K(B Y
|
|
4661 ;; $B$rGK2uE*$KO"@\$9$k!#(B
|
|
4662 (cond ((null x) y)
|
|
4663 ((null y) x)
|
|
4664 (t (let ((e x))
|
|
4665 (while e
|
|
4666 (setq y (delete (car e) y)
|
|
4667 e (cdr e) ))
|
|
4668 (if y
|
|
4669 ;; $B>e5-$N(B while $B%k!<%W$NCf$N(B delete $B$H2<5-$N(B nconc $B$H$r9g$o$;(B
|
|
4670 ;; $B$F!"A4It$G(B X $B$r(B 2 $B2s!"(BY $B$r(B X $B2sAv::$7$?$3$H$K$J$k!#%=!<(B
|
|
4671 ;; $B%H$5$l$F$$$J$$=89gF1;N$+$i=89g$r:n$k0J>e(B ($B8uJd$O%=!<%H$7$F(B
|
|
4672 ;; $B$O$J$i$J$$(B) $B!"C`<!Av::$K$J$k$N$G$3$l$O;_$`$rF@$J$$$+(B...$B!#(B
|
|
4673 (nconc x y)
|
|
4674 x )))))
|
|
4675
|
|
4676 (defun skk-search-kakutei-jisyo-file (file limit &optional nomsg)
|
|
4677 ;; $B<-=q%U%!%$%k$rC5$7!"8uJd$r%j%9%H$GJV$9!#(B
|
|
4678 ;; $B8uJd$r8+$D$1$?>l9g$O!"Bg0hJQ?t(B skk-kakutei-flag $B$K(B non-nil $B$rBeF~$9$k!#(B
|
|
4679 ;; $B8uJd$,8+$D$+$i$J$+$C$?>l9g$O!"(Bnil $B$rJV$9!#(B
|
|
4680 (setq skk-kakutei-flag (skk-search-jisyo-file file limit nomsg)) )
|
|
4681
|
|
4682 ;;;###skk-autoload
|
|
4683 (defun skk-update-jisyo (word &optional purge)
|
|
4684 ;; WORD $B$,<!$NJQ49;~$K:G=i$N8uJd$K$J$k$h$&$K!"%W%i%$%Y!<%H<-=q$r99?7$9$k!#(B
|
|
4685 ;; PURGE $B$,(B non-nil $B$G(B WORD $B$,6&M-<-=q$K$"$k%(%s%H%j$J$i(B skk-ignore-dic-word
|
|
4686 ;; $B4X?t$G%/%)!<%H$7$?%(%s%H%j$r%W%i%$%Y!<%H<-=q$K:n$j!"<!$NJQ49$+$i=PNO$7$J(B
|
|
4687 ;; $B$$$h$&$K$9$k!#(B
|
|
4688 ;; WORD $B$,6&M-<-=q$K$J$1$l$P!"%W%i%$%Y!<%H<-=q$N<-=q%(%s%H%j$+$i:o=|$9$k!#(B
|
|
4689 ;;
|
|
4690 ;; SKK 9.x $B$h$j!"%W%i%$%Y!<%H<-=q$N%(%s%H%j$NA^F~$NJ}K!$rJQ99$7$?(B (9.3 $B$N$_(B
|
|
4691 ;; $B$ONc30(B)$B!#(B
|
|
4692 ;;
|
|
4693 ;; $B!ZJQ99A0![(B
|
|
4694 ;; ;; okuri-ari entries.
|
|
4695 ;; $B8+%-(B $B$o$k(Bk /$B0-(B/[$B$+(B/$B0-(B/]/[$B$/(B/$B0-(B/]/
|
|
4696 ;; $B=P!<(B $B$o$k(Bi /$B0-(B/[$B$$(B/$B0-(B/]/
|
|
4697 ;; $B$7$K(B $B$o$?(Bs /$BEO(B/[$B$5(B/$BEO(B/]/[$B$;(B/$BEO(B/]/
|
|
4698 ;; $B8l9_(B $B$o$9(Br /$BK:(B/[$B$l(B/$BK:(B/]/
|
|
4699 ;; $B$r=g(B $B$o$+(Bt /$BJ,(B/$BH=(B/[$B$C$?(B/$BJ,(B/$BH=(B/]/[$B$C$F(B/$BJ,(B/]/
|
|
4700 ;; $B"-(B .....
|
|
4701 ;; $B$"(Bi /$B9g(B/[$B$$(B/$B9g(B/]/
|
|
4702 ;; ;; okuri-nasi entries.
|
|
4703 ;; $BJQ$G(B $B$8$g$&$?$$(B /$B>uBV(B/
|
|
4704 ;; $B49>:(B $B$=$&$K$e$&(B /$BA^F~(B/
|
|
4705 ;; $B=g=g(B $B$+$J(B /$B2>L>(B/
|
|
4706 ;; $B"-(B ...
|
|
4707 ;; ...
|
|
4708 ;;
|
|
4709 ;; $B!ZJQ998e![(B
|
|
4710 ;; ;; okuri-ari entries.
|
|
4711 ;; $BJQ$G(B $B$G(Bt /$B=P(B/[$B$F(B/$B=P(B/]/[$B$?(B/$B=P(B/]/
|
|
4712 ;; $B49>:(B $B$D(Bi /$BIU(B/[$B$$(B/$BIU(B/]/
|
|
4713 ;; $B=g=g(B $B$1(Bs /$B>C(B/[$B$9(B/$B>C(B/]/[$B$7(B/$B>C(B/]/[$B$;(B/$B>C(B/]/[$B$5(B/$B>C(B/]/
|
|
4714 ;; $B"-(B $B$+$((Bs /$BJV(B/[$B$7(B/$BJV(B/]/[$B$9(B/$BJV(B/]/[$B$5(B/$BJV(B/]/[$B$;(B/$BJV(B/]/
|
|
4715 ;; ...
|
|
4716 ;; ...
|
|
4717 ;; $B$J$,(Bs /$BD9(B/$BN.(B/[$B$7(B/$BN.(B/]/[$B$5(B/$BD9(B/]/[$B$=(B/$BN.(B/]/
|
|
4718 ;; ;; okuri-nasi entries.
|
|
4719 ;; $BJQ$G(B $B$8$g$&$?$$(B /$B>uBV(B/
|
|
4720 ;; $B49>:(B $B$=$&$K$e$&(B /$BA^F~(B/
|
|
4721 ;; $B=g=g(B $B$+$J(B /$B2>L>(B/
|
|
4722 ;; $B"-(B ...
|
|
4723 ;; ...
|
|
4724 ;;
|
|
4725 ;; skk-auto-okuri-process $B$,(B non-nil $B$N$H$-$K!"(B(j-okuri-search $B2~$a(B)
|
|
4726 ;; skk-okuri-search $B$O8+=P$78l$ND9$$=g$K8uJd$rJV$9I,MW$,$"$k!#(B
|
|
4727 ;; SKK 8.6 $B$^$G$O!"(Bskk-okuri-search $B$,(B j-okuri-ari-min $B$+$i(B j-okuri-ari-max
|
|
4728 ;; $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(B
|
|
4729 ;; $B8l$r%-!<$H$7$F9_=g$K%=!<%H$5$l$F$$$kI,MW$,$"$C$?!#(B
|
|
4730 ;; SKK 9.x $B$G$O!"(Bskk-okuri-search $B$,!"8+IU$1$?8uJd$r8+=P$78l$r%-!<$H$7$F>:=g(B
|
|
4731 ;; $B$K%=!<%H$7$FJV$9$?$a!"%W%i%$%Y!<%H<-=q$N%=!<%H$OI,MW$G$J$$!#$h$C$F!":G8e(B
|
|
4732 ;; $B$KJQ49$7$?$b$N$r(B (j-okuri-ari-min $B2~$a(B) skk-okuri-ari-min $B$N0LCV$KA^F~$9(B
|
|
4733 ;; $B$k!#(B
|
|
4734 ;;
|
|
4735 (let ((jisyo-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg))
|
|
4736 (midasi
|
|
4737 (if skk-use-numeric-conversion
|
|
4738 (skk-compute-numeric-henkan-key skk-henkan-key)
|
|
4739 skk-henkan-key ))
|
|
4740 (last skk-last-henkan-result)
|
|
4741 (last-point skk-last-henkan-point)
|
|
4742 (here (point)) )
|
|
4743 (if jisyo-buffer
|
|
4744 (let ((inhibit-quit t) buffer-read-only old-entry okurigana)
|
|
4745 (if skk-auto-okuri-process
|
|
4746 (setq word (skk-remove-common word)) )
|
|
4747 (setq okurigana (or skk-henkan-okurigana skk-okuri-char))
|
|
4748 ;; midasi skk-henkan-key )
|
|
4749 (with-current-buffer jisyo-buffer
|
|
4750 ;; $B4{B8%(%s%H%j$r8!:w8e>C5n$9$k!#A^F~$9$Y$-%(%s%H%j$,(B entry1 $B$K(B 1
|
|
4751 ;; $B$D$7$+$J$/!"(Bword $B$HF1$8J8;z$G$"$C$F$b!"$$$C$?$s>C$7$F$=$N%(%s%H(B
|
|
4752 ;; $B%j$r(B min $B%]%$%s%H$K0\F0$5$;$J$1$l$P$J$i$J$$(B ($BFI$_$NJd40$r9T$&$H(B
|
|
4753 ;; $B$-$O!"(Bmin $B%]%$%s%H$+$i8+=P$7$rC5$9$?$a!"?7$7$$8+=P$7$[$I!"(Bmin
|
|
4754 ;; $B%]%$%s%H$K6a$$$H$3$m$K$J$1$l$P$J$i$J$$(B)$B!#(B
|
|
4755 (setq skk-henkan-key midasi
|
|
4756 old-entry (skk-search-jisyo-file-1 okurigana 0 'delete) )
|
|
4757 (skk-update-jisyo-1 okurigana word old-entry purge)
|
|
4758 (if skk-use-relation
|
|
4759 (progn
|
|
4760 (if (not (and
|
|
4761 last
|
|
4762 (markerp last-point)
|
|
4763 (< last-point here)
|
|
4764 (< (- here last-point) skk-relation-length) ))
|
|
4765 (setq last nil) )
|
|
4766 (skk-update-relation
|
|
4767 midasi okurigana word last purge) ))
|
|
4768 (if skk-debug (message "%S %S %S" last last-point here))
|
|
4769 ;;(if (featurep 'skk-attr)
|
|
4770 ;; (progn
|
|
4771 ;; (and skk-attr-default-update-function
|
|
4772 ;; (funcall skk-attr-default-update-function midasi
|
|
4773 ;; okurigana word purge ))
|
|
4774 ;; (and skk-attr-update-function
|
|
4775 ;; (funcall skk-attr-update-function midasi okurigana
|
|
4776 ;; word purge ))))
|
|
4777 ;; auto save.
|
|
4778 (if skk-jisyo-save-count
|
|
4779 (if (> skk-jisyo-save-count skk-update-jisyo-count)
|
|
4780 (setq skk-update-jisyo-count (1+ skk-update-jisyo-count))
|
|
4781 (setq skk-update-jisyo-count 0)
|
|
4782 (skk-save-jisyo 'quiet) ))
|
|
4783 ;; $B<-=q%P%C%U%!$r%*!<%W%s$7$?$H$-$K(B auto-save-mode $B$r%*%U$K$7$F$*(B
|
|
4784 ;; $B$1$PKhEY2<5-$N$h$&$JA`:n$r$7$J$/$F:Q$`!#(B
|
|
4785 ;;
|
|
4786 ;; $B$3$&$7$F$*$1$P!"<-=q%P%C%U%!$O%*!<%H%;!<%V$5$l$J$/$F:Q$`!#(B
|
|
4787 ;;(set-buffer-modified-p nil)
|
|
4788 )))))
|
|
4789
|
|
4790 (defun skk-update-jisyo-1 (okurigana word old-entry-list purge)
|
|
4791 ;; $B4{B8%(%s%H%j$+$i7W;;$7$?(B entry[1-4] $B$NCM$H!":#2s$NJQ49$N7k2L(B word $B$H$r%^!<(B
|
|
4792 ;; $B%8$7$F!"?7$?$J%(%s%H%j$r7W;;$7!"A^F~$9$k!#(B
|
|
4793 (let ((entry1 (car old-entry-list)) (entry2 (nth 1 old-entry-list))
|
|
4794 (entry3 (nth 2 old-entry-list)) (entry4 (nth 3 old-entry-list)) )
|
|
4795 (if (not purge)
|
|
4796 ;; entry1 $B$N@hF,$N%(%s%H%j$r(B word $B$K$9$k!#(B
|
|
4797 (setq entry1 (cons word (delete word entry1)))
|
|
4798 ;; $BAw$j$J$7!"$b$7$/$O(B skk-henkan-okuri-strictly $B$H(B
|
|
4799 ;; skk-henkan-strict-okuri-precedence $B$,(B nil $B$N>l9g!#(B
|
|
4800 (if (or (not okurigana) (not (or skk-henkan-okuri-strictly
|
|
4801 skk-henkan-strict-okuri-precedence )))
|
|
4802 ;; entry1 $B$r(B purge$B!#6&MQ<-=q$K$"$k%(%s%H%j$@$C$?$i!"(B
|
|
4803 ;; skk-ignore-dic-word $B$G%/%)!<%H$7$F<!$NJQ49$+$i=PNO$7$J$$$h$&$K$9(B
|
|
4804 ;; $B$k!#6&MQ<-=q$K$J$$J8;zNs$O(B word $B$r>C$9!#(B
|
|
4805 (if (skk-public-jisyo-contains-p okurigana word)
|
|
4806 (setq entry1 (skk-compose-ignore-entry entry1 word))
|
|
4807 (setq entry1 (delete word entry1)) )
|
|
4808 ;; $BAw$j$"$j$G!"$+$D(B skk-henkan-okuri-strictly $B$+(B
|
|
4809 ;; skk-henkan-strict-okuri-precedence $B$,(B non-nil $B$N>l9g$G!"$+$D(B
|
|
4810 ;; $B$3$N(B word $B$H%Z%"$K$J$kAw$j2>L>$,(B okurigana $B$7$+$J$$$H$-!#(B
|
|
4811 (if (and okurigana (or skk-henkan-okuri-strictly
|
|
4812 skk-henkan-strict-okuri-precedence )
|
|
4813 (null (member word entry2)) (null (member word entry4)) )
|
|
4814 (setq entry1 (delete word entry1))
|
|
4815 ;; $B$=$NB>$N>l9g$O2?$b$7$J$$!#(B
|
|
4816 )))
|
|
4817 (if (null entry1)
|
|
4818 ;; entry1 $B$,(B null $B$G$"$l$P!"$b$&2?$b$9$k$3$H$O$J$$!#(B
|
|
4819 nil
|
|
4820 (goto-char (if okurigana skk-okuri-ari-min skk-okuri-nasi-min))
|
|
4821 (insert "\n" skk-henkan-key " /")
|
|
4822 ;; entry1 -- $BA4%(%s%H%j(B ($BAw$j$J$7$N>l9g(B) or $B4A;zItJ,$NA4%(%s%H%j(B ($BAw$j$"(B
|
|
4823 ;; $B$j$N>l9g(B)
|
|
4824 (insert (mapconcat 'skk-quote-char entry1 "/") "/")
|
|
4825 (if (not okurigana)
|
|
4826 nil
|
|
4827 ;; entry2 $B0J9_$N%(%s%H%j$r=hM}$9$k$N$O!"Aw$j$"$j$N>l9g$N$_!#(B
|
|
4828 ;; $B@h$KA^F~$9$Y$-%(%s%H%j$r7W;;!"D4@0$9$k!#(B
|
|
4829 (if entry3
|
|
4830 (if (not purge)
|
|
4831 (setq entry3 (cons word (delete word entry3)))
|
|
4832 (setq entry3 (delete word entry3))
|
|
4833 (if (null entry3)
|
|
4834 ;; entry3 $B$H$7$FA^F~$9$k$b$N$,A4$/$J$1$l$P!"(B"/[$B$/(B/]/" $B$N$h(B
|
|
4835 ;; $B$&$JAw$j2>L>$N$_$N%(%s%H%j$r:n$i$J$$$h$&$K$9$k(B ($BI,MW$G(B
|
|
4836 ;; $B$"$l$P!"(Bentry2 $B$N:G8eJ}$H(B) entry4 $B$N@hF,$N%(%s%H%j(B "]"
|
|
4837 ;; $B$r:o=|!#(B
|
|
4838 (let ((last2 (nthcdr (- (length entry2) 2) entry2)))
|
|
4839 ;; entry2 $B$N:G8eJ}$O>o$K(B "[$BAw$j2>L>(B" $B$H$O8B$i$J$$!#(B
|
|
4840 (if (string= (nth 1 last2) (concat "[" okurigana))
|
|
4841 (setcdr last2 nil) )
|
|
4842 ;; entry4 $B$N@hF,$O>o$K(B "]"$B!#(B
|
|
4843 (setq entry4 (cdr entry4)) )))
|
|
4844 ;; entry3 $B$,(B null $B$G$"$l$P(B
|
|
4845 (if (or skk-process-okuri-early purge)
|
|
4846 ;; skk-process-okuri-early $B$,(B non-nil $B$J$iAw$j2>L>$,J,$i$J$$$N$G(B
|
|
4847 ;; $B2?$b$7$J$$!#(B-- $B:#2s;HMQ$7$?Aw$j2>L>$,$o$+$i$J$$$^$^JQ49$7$F$$(B
|
|
4848 ;; $B$k$N$G!"A4$F$N%(%s%H%j$,(B entry2 $B$KF~$C$F$$$k(B -- entry3,
|
|
4849 ;; entry4 $B$O(B null$B!#(B
|
|
4850 ;; entry3 $B$H$7$FA^F~$9$k$b$N$,A4$/$J$1$l$P!"2?$b$7$J$$(B -- entry3
|
|
4851 ;; $B$,(B purge $BA0$+$i(B null $B$J$i!"(Bentry2 $B$NKvHx$O(B "[" $B$G$J$$$7!"(B
|
|
4852 ;; entry4 $B$O(B null $B$@$+$i(B entry[234] $B$NA`:n$OITMW!#(B
|
|
4853 nil
|
|
4854 (setq entry2 (nconc entry2 (list (concat "[" okurigana)))
|
|
4855 entry3 (list word)
|
|
4856 ;; purge $BA0$+$i(B entry3 $B$,(B null $B$@$C$?$N$@$+$i(B entry4 $B$b(B null$B!#(B
|
|
4857 entry4 (list "]") ))))
|
|
4858 (if entry2
|
|
4859 ;; entry2 -- $B:#2s;HMQ$7$J$+$C$?Aw$j2>L>$r;H$&4A;z$N8uJd72(B + "[" + $B:#(B
|
|
4860 ;; $B2s;HMQ$7$?Aw$j2>L>(B ($BAw$j2>L>$N$_!#$=$NAw$j2>L>$r;HMQ$9$k4A;z$N8u(B
|
|
4861 ;; $BJd72$O!"(Bentry3 $B$K4^$^$l$k(B)$B!#(B
|
|
4862 (progn
|
|
4863 (insert (mapconcat 'skk-quote-char entry2 "/" ) "/")
|
|
4864 ;; entry2 $B$,(B null $B$J$i(B entry3 $B$b(B null$B!#(B
|
|
4865 (if entry3
|
|
4866 ;; entry3 -- $B:#2s;HMQ$7$?Aw$j2>L>$r;H$&A44A;z%(%s%H%j(B
|
|
4867 (insert (mapconcat 'skk-quote-char entry3 "/") "/") )
|
|
4868 ;; purge $B$G(B entry3 $B$,(B null $B$K$J$C$?>l9g$O(B entry4 $B$,;D$C$F$$$k$H$-(B
|
|
4869 ;; $B$,$"$k!#(B
|
|
4870 (if entry4
|
|
4871 ;; entry4 -- "]" + $BB>$NAw$j2>L>$r;H$&A44A;z%(%s%H%j(B (entry2 $B$N(B
|
|
4872 ;; $B;D$j(B)$B!#(B
|
|
4873 (insert (mapconcat 'skk-quote-char entry4 "/") "/") ))))))
|
|
4874
|
|
4875 (defun skk-quote-char (word)
|
|
4876 ;; $B<-=q$N@)8B$+$i<-=q%(%s%H%jFb$K4^$a$F$O$J$i$J$$J8;z$,(B WORD $B$NCf$K$"$l$P!"(B
|
|
4877 ;; $BI>2A$7$?$H$-$K$=$NJ8;z$H$J$k$h$&$J(B Lisp $B%3!<%I$rJV$9!#(B
|
|
4878 (save-match-data
|
|
4879 (if (and word
|
|
4880 (string-match "[/\n\r\"]" word)
|
|
4881 ;; we should not quote WORD if it is a symbolic expression
|
|
4882 (not (skk-lisp-prog-p word)) )
|
|
4883 (concat "(concat \""
|
|
4884 (mapconcat (function (lambda (c)
|
|
4885 (cond ((eq c ?/) ; ?/
|
|
4886 "\\057" )
|
|
4887 ((eq c ?\n) ; ?\n
|
|
4888 "\\n" )
|
|
4889 ((eq c ?\r) ; ?\r
|
|
4890 "\\r" )
|
|
4891 ((eq c ?\") ; ?\"
|
|
4892 "\\\"" )
|
|
4893 ((eq c ?\\) ; ?\\
|
|
4894 "\\\\" )
|
|
4895 (t (char-to-string c)))))
|
|
4896 ;; $BJ8;zNs$rBP1~$9$k(B char $B$N%j%9%H$KJ,2r$9$k!#(B
|
|
4897 (append word nil) "")
|
|
4898 "\")")
|
|
4899 word )))
|
|
4900
|
|
4901 (defun skk-lisp-prog-p (word)
|
|
4902 ;; word $B$,(B Lisp $B%W%m%0%i%`$G$"$l$P!"(Bt $B$rJV$9!#(B
|
|
4903 (let ((l (length word)))
|
|
4904 (and (> l 2)
|
|
4905 (eq (aref word 0) ?\() ; ?\(
|
|
4906 (< (aref word 1) 128)
|
|
4907 (eq (aref word (1- l)) ?\)) ))) ; ?\)
|
|
4908
|
|
4909 (defun skk-public-jisyo-contains-p (okurigana word)
|
|
4910 ;; $B6&M-<-=q$,(B MIDASHI $B5Z$S$=$l$KBP1~$9$k(B WORDS $B%(%s%H%j$r;}$C$F$$$l$P!"(B
|
|
4911 ;; non-nil $B$rJV$9!#%W%i%$%Y!<%H<-=q$N%P%C%U%!$G%3!<%k$5$l$k!#(B
|
|
4912 (let (fn skk-henkan-okuri-strictly skk-henkan-strict-okuri-precedence)
|
|
4913 (if okurigana
|
|
4914 (setq skk-henkan-okurigana okurigana) )
|
|
4915 (if (and (not (featurep 'skk-server))
|
|
4916 (or (and (boundp 'skk-server-host) skk-server-host)
|
|
4917 (and (boundp 'skk-servers-list) skk-servers-list)
|
|
4918 (getenv "SKKSERVER")
|
|
4919 (getenv "SKKSERV") ))
|
|
4920 (require 'skk-server) )
|
|
4921 (if (and (featurep 'skk-server)
|
|
4922 (or (and skk-server-host skk-server-prog)
|
|
4923 skk-servers-list ))
|
|
4924 (setq fn (assq 'skk-search-server skk-search-prog-list)) )
|
|
4925 ;; skk-search-server $B$+$i;O$^$k%j%9%H$,$J$1$l$P!"$H$K$+$/Bg$-$$<-=q$r0z?t(B
|
|
4926 ;; $B$K$7$F$$$k(B skk-search-jisyo-file $B%W%m%0%i%`$rC5$9!#(B
|
|
4927 (if (and (not fn) (or skk-aux-large-jisyo skk-large-jisyo))
|
|
4928 (let ((spl skk-search-prog-list)
|
|
4929 cell )
|
|
4930 (while (setq cell (car spl))
|
|
4931 (if (and (eq (car cell) 'skk-search-jisyo-file)
|
|
4932 (member (nth 1 cell)
|
|
4933 '(skk-aux-large-jisyo skk-large-jisyo) ))
|
|
4934 (setq fn cell
|
|
4935 spl nil )
|
|
4936 (setq spl (cdr spl)) ))))
|
|
4937 (and fn (member word (eval fn))) ))
|
|
4938
|
|
4939 (defun skk-compose-ignore-entry (entry &optional add)
|
|
4940 ;; ENTRY $B$NCf$K(B skk-ignore-dic-word $B4X?t$G%/%)!<%H$7$?%(%s%H%j$,$"$l(B
|
|
4941 ;; $B$P!"0l$D$N%(%s%H%j$K$^$H$a$k!#(B
|
|
4942 ;; $B%*%W%7%g%J%k0z?t$N(B ADD $B$,;XDj$5$l$F$$$?$i!"(BADD $B$r4^$a$?(B
|
|
4943 ;; skk-ignore-dic-word $B%(%s%H%j$r:n$k!#(B
|
|
4944 ;; $B?7$7$$(B skk-ignore-dic-word $B%(%s%H%j$r(B car $B$K!"$=$l0J30$N%(%s%H%j(B cdr $B$K$7(B
|
|
4945 ;; $B$?%j%9%H$rJV$9!#(B
|
|
4946 (let (l arg e)
|
|
4947 (if add (setq entry (delete add entry)))
|
|
4948 (setq l entry)
|
|
4949 (save-match-data
|
|
4950 (while l
|
|
4951 (setq e (car l)
|
|
4952 l (cdr l) )
|
|
4953 (if (string-match "(skk-ignore-dic-word +\\([^\)]+\\))" e)
|
|
4954 (setq arg (concat arg
|
|
4955 (substring e (1+ (match-beginning 1))
|
|
4956 (1- (match-end 1)) )
|
|
4957 "\" \"" )
|
|
4958 entry (delq e entry) )))
|
|
4959 (if add
|
|
4960 (setq arg (if arg (concat arg add) add))
|
|
4961 ;; $BKvHx$N(B " \"" $B$r@Z$jMn$H$9!#(B
|
|
4962 (setq arg (substring arg 0 -2)) )
|
|
4963 (cons (concat "(skk-ignore-dic-word \"" arg "\")") entry) )))
|
|
4964
|
|
4965 (defun skk-katakana-region (start end &optional vcontract)
|
|
4966 "$B%j!<%8%g%s$N$R$i$,$J$r%+%?%+%J$KJQ49$9$k!#(B
|
|
4967 $B%*%W%7%g%J%k0z?t$N(B VCONTRACT $B$,(B non-nil $B$G$"$l$P!"(B\"$B$&!+(B\" $B$r(B \"$B%t(B\" $B$KJQ49$9(B
|
|
4968 $B$k!#(B
|
|
4969 $B0z?t$N(B START $B$H(B END $B$O?t;z$G$b%^!<%+!<$G$bNI$$!#(B"
|
|
4970 (interactive "*r\nP")
|
|
4971 (let ((diff (if skk-mule (- ?$B%"(B ?$B$"(B)))
|
|
4972 ch )
|
|
4973 (skk-save-point
|
|
4974 (save-match-data
|
|
4975 ;;(if (and skk-henkan-active skk-use-face) (skk-henkan-face-off))
|
|
4976 (goto-char start)
|
|
4977 (while (re-search-forward "[$B$!(B-$B$s(B]" end 'noerror)
|
|
4978 (setq ch (preceding-char))
|
|
4979 ;; firstly insert a new char, secondly delete an old char to save
|
|
4980 ;; the cursor position.
|
|
4981 (if skk-mule
|
|
4982 (progn
|
|
4983 (backward-char 1)
|
|
4984 (cancel-undo-boundary)
|
|
4985 (insert (+ ch diff)) )
|
|
4986 (backward-char 2)
|
|
4987 (cancel-undo-boundary)
|
|
4988 (insert ?\245 ch) )
|
|
4989 (cancel-undo-boundary)
|
|
4990 (delete-region (+ (match-beginning 0) skk-kanji-len)
|
|
4991 (+ (match-end 0) skk-kanji-len) ))
|
|
4992 (if vcontract
|
|
4993 (progn
|
|
4994 (goto-char start)
|
|
4995 (while (re-search-forward "$B%&!+(B" end 'noerror)
|
|
4996 (if skk-mule
|
|
4997 (backward-char 2)
|
|
4998 (backward-char 3) )
|
|
4999 (cancel-undo-boundary)
|
|
5000 (insert "$B%t(B")
|
|
5001 (cancel-undo-boundary)
|
|
5002 (delete-region (+ (match-beginning 0) skk-kanji-len)
|
|
5003 (+ (match-end 0) skk-kanji-len) ))))
|
|
5004 ;;(if (and skk-henkan-active skk-use-face) (skk-henkan-face-on))
|
|
5005 (skk-set-cursor-properly)
|
|
5006 ))))
|
|
5007
|
|
5008 (defun skk-hiragana-region (start end &optional vexpand)
|
|
5009 "$B%j!<%8%g%s$N%+%?%+%J$r$R$i$,$J$KJQ49$9$k!#(B
|
|
5010 $B%*%W%7%g%J%k0z?t$N(B VEXPAND $B$,(B non-nil $B$G$"$l$P!"(B\"$B%t(B\" $B$r(B \"$B$&!+(B\" $B$KJQ49$9$k!#(B
|
|
5011 $B0z?t$N(B START $B$H(B END $B$O?t;z$G$b%^!<%+!<$G$bNI$$!#(B
|
|
5012 \"$B%u(B\" $B$H(B \"$B%v(B\" $B$OJQ99$5$l$J$$!#$3$N(B 2 $B$D$NJ8;z$OBP1~$9$k$R$i$,$J$,$J$$$N$G!"%+(B
|
|
5013 $B%?%+%J$H$7$F$O07$o$l$J$$!#(B"
|
|
5014 (interactive "*r\nP")
|
|
5015 (let ((diff (if skk-mule (- ?$B%"(B ?$B$"(B)))
|
|
5016 ch )
|
|
5017 (skk-save-point
|
|
5018 (save-match-data
|
|
5019 ;;(if (and skk-henkan-active skk-use-face) (skk-henkan-face-off))
|
|
5020 (goto-char start)
|
|
5021 (while (re-search-forward "[$B%!(B-$B%s(B]" end 'noerror)
|
|
5022 (setq ch (preceding-char))
|
|
5023 ;; firstly insert a new char, secondly delete an old char to save
|
|
5024 ;; the cursor position.
|
|
5025 (if skk-mule
|
|
5026 (progn
|
|
5027 (backward-char 1)
|
|
5028 (cancel-undo-boundary)
|
|
5029 (insert (- ch diff)) )
|
|
5030 (backward-char 2)
|
|
5031 (cancel-undo-boundary)
|
|
5032 (insert ?\244 ch) )
|
|
5033 (cancel-undo-boundary)
|
|
5034 (delete-region (+ (match-beginning 0) skk-kanji-len)
|
|
5035 (+ (match-end 0) skk-kanji-len) ))
|
|
5036 (if vexpand
|
|
5037 (progn
|
|
5038 (goto-char start)
|
|
5039 (while (re-search-forward "$B%t(B" end 'noerror)
|
|
5040 (backward-char 1)
|
|
5041 (cancel-undo-boundary)
|
|
5042 (insert "$B$&!+(B")
|
|
5043 (cancel-undo-boundary)
|
|
5044 (delete-region (+ (match-beginning 0) (* skk-kanji-len 2))
|
|
5045 (+ (match-end 0) (* skk-kanji-len 2)) ))))
|
|
5046 ;;(if (and skk-henkan-active skk-use-face) (skk-henkan-face-on))
|
|
5047 (skk-set-cursor-properly)
|
|
5048 ))))
|
|
5049
|
|
5050 (defun skk-zenkaku-region (start end)
|
|
5051 "$B%j!<%8%g%s$N(B ascii $BJ8;z$rBP1~$9$kA43QJ8;z$KJQ49$9$k!#(B"
|
|
5052 (interactive "*r")
|
|
5053 (skk-save-point
|
|
5054 (save-match-data
|
|
5055 ;;(if (and skk-henkan-active skk-use-face) (skk-henkan-face-off))
|
|
5056 (goto-char end)
|
|
5057 (while (re-search-backward "[ -~]" start 'noerror)
|
|
5058 (cancel-undo-boundary)
|
|
5059 ;; firstly insert a new char, secondly delete an old char to save
|
|
5060 ;; the cursor position.
|
|
5061 (insert (aref skk-default-zenkaku-vector (following-char)))
|
|
5062 (cancel-undo-boundary)
|
|
5063 (delete-region (+ (match-beginning 0) skk-kanji-len)
|
|
5064 (+ (match-end 0) skk-kanji-len) ))
|
|
5065 ;;(if (and skk-henkan-active skk-use-face) (skk-henkan-face-on))
|
|
5066 (skk-set-cursor-properly)
|
|
5067 )))
|
|
5068
|
|
5069 (defun skk-ascii-region (start end)
|
|
5070 ;; $B%j!<%8%g%s$NA43Q1Q?t;z$rBP1~$9$k(B ascii $BJ8;z$KJQ49$9$k!#(B
|
|
5071 ;; egg.el 3.09 $B$N(B hankaku-region $B$r;29M$K$7$?!#(B
|
|
5072 (interactive "*r")
|
|
5073 (skk-save-point
|
|
5074 (save-match-data
|
|
5075 (let (val)
|
|
5076 ;;(if (and skk-henkan-active skk-use-face) (skk-henkan-face-off))
|
|
5077 (goto-char end)
|
|
5078 (while (re-search-backward "\\cS\\|\\cA" start 'noerror)
|
|
5079 (setq val (skk-jisx0208-to-ascii (char-to-string (following-char))))
|
|
5080 (if val
|
|
5081 (progn
|
|
5082 (insert val)
|
|
5083 (delete-region (+ (match-beginning 0) 1)
|
|
5084 (+ (match-end 0) 1) ))))
|
|
5085 ;;(if (and skk-henkan-active skk-use-face) (skk-henkan-face-on))
|
|
5086 (skk-set-cursor-properly)
|
|
5087 ))))
|
|
5088
|
|
5089 (defun skk-katakana-henkan (arg)
|
|
5090 "$B"&%b!<%I$G$"$l$P!"%j!<%8%g%s$N$R$i$,$J$r%+%?%+%J$KJQ49$9$k!#(B
|
|
5091 $B"'%b!<%I$G$O2?$b$7$J$$!#(B
|
|
5092 $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(B
|
|
5093 $B$9$k!#(B"
|
|
5094 (interactive "*P")
|
|
5095 (if skk-henkan-on
|
|
5096 (if (not skk-henkan-active)
|
|
5097 (skk-*-henkan-1 'skk-katakana-region skk-henkan-start-point
|
|
5098 skk-henkan-end-point 'vcontract ))
|
|
5099 (skk-emulate-original-map arg) ))
|
|
5100
|
|
5101 (defun skk-hiragana-henkan (arg)
|
|
5102 "$B"&%b!<%I$G$"$l$P!"%j!<%8%g%s$N%+%?%+%J$r$R$i$,$J$KJQ49$9$k!#(B
|
|
5103 $B"'%b!<%I$G$O2?$b$7$J$$!#(B
|
|
5104 $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(B
|
|
5105 $B$9$k!#(B"
|
|
5106 (interactive "*P")
|
|
5107 (if skk-henkan-on
|
|
5108 (if (not skk-henkan-active)
|
|
5109 (skk-*-henkan-1 'skk-hiragana-region skk-henkan-start-point
|
|
5110 skk-henkan-end-point 'vexpand ))
|
|
5111 (skk-emulate-original-map arg) ))
|
|
5112
|
|
5113 (defun skk-zenkaku-henkan (arg)
|
|
5114 "$B"&%b!<%I$G$"$l$P!"(Bascii $BJ8;z$rBP1~$9$kA43QJ8;z$KJQ49$9$k!#(B
|
|
5115 $B"'%b!<%I$G$O2?$b$7$J$$!#(B
|
|
5116 $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(B
|
|
5117 $B$9$k!#(B"
|
|
5118 (interactive "*P")
|
|
5119 (if skk-henkan-on
|
|
5120 (if (not skk-henkan-active)
|
|
5121 (skk-*-henkan-1 'skk-zenkaku-region skk-henkan-start-point
|
|
5122 skk-henkan-end-point ))
|
|
5123 (skk-emulate-original-map arg) ))
|
|
5124
|
|
5125 (defun skk-ascii-henkan (arg)
|
|
5126 "$B"&%b!<%I$G$"$l$P!"(Bascii $BJ8;z$rBP1~$9$kA43QJ8;z$KJQ49$9$k!#(B
|
|
5127 $B"'%b!<%I$G$O2?$b$7$J$$!#(B
|
|
5128 $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(B
|
|
5129 $B$9$k!#(B"
|
|
5130 (interactive "*P")
|
|
5131 (if skk-henkan-on
|
|
5132 (if (not skk-henkan-active)
|
|
5133 (skk-*-henkan-1 'skk-ascii-region skk-henkan-start-point
|
|
5134 skk-henkan-end-point ))
|
|
5135 (skk-emulate-original-map arg) ))
|
|
5136
|
|
5137 (defun skk-*-henkan-1 (func &rest args)
|
|
5138 ;; $BJQ492DG=$+$I$&$+$N%A%'%C%/$r$7$?8e$K(B ARGS $B$r0z?t$H$7$F(B FUNC $B$rE,MQ$7!"(B
|
|
5139 ;; skk-henkan-start-point $B$H(B skk-henkan-end-point $B$N4V$NJ8;zNs$rJQ49$9$k!#(B
|
|
5140 (let ((pos (point)))
|
|
5141 (cond ((not (string= skk-prefix ""))
|
|
5142 (skk-error "$B%U%#%C%/%9$5$l$F$$$J$$(B skk-prefix $B$,$"$j$^$9(B"
|
|
5143 "Have unfixed skk-prefix" ))
|
|
5144 ((< pos skk-henkan-start-point)
|
|
5145 (skk-error "$B%+!<%=%k$,JQ493+;OCOE@$h$jA0$K$"$j$^$9(B"
|
|
5146 "Henkan end point must be after henkan start point" ))
|
|
5147 ((and (not skk-allow-spaces-newlines-and-tabs)
|
|
5148 (skk-save-point (beginning-of-line)
|
|
5149 (> (point) skk-henkan-start-point) ))
|
|
5150 (skk-error "$BJQ49%-!<$K2~9T$,4^$^$l$F$$$^$9(B"
|
|
5151 "Henkan key may not contain a new line character" )))
|
|
5152 (skk-set-marker skk-henkan-end-point pos)
|
|
5153 (apply func args)
|
|
5154 (skk-kakutei) ))
|
|
5155
|
|
5156 ;;;###skk-autoload
|
|
5157 (defun skk-jisx0208-to-ascii (string)
|
|
5158 (let ((char
|
|
5159 (cond (skk-mule3
|
|
5160 (require 'language/japan-util)
|
|
5161 (get-char-code-property (string-to-char string) 'ascii) )
|
|
5162 (skk-mule
|
|
5163 (let* ((ch (string-to-char string))
|
|
5164 (ch1 (char-component ch 1)) )
|
|
5165 (cond ((eq 161 ch1) ; ?\241
|
|
5166 (cdr (assq (char-component ch 2) skk-hankaku-alist)) )
|
|
5167 ((eq 163 ch1) ; ?\243
|
|
5168 (- (char-component ch 2) 128) ; ?\200
|
|
5169 ))))
|
|
5170 (t (- (aref string (1- skk-kanji-len)) 128)) )))
|
|
5171 (if char (char-to-string char)) ))
|
|
5172
|
|
5173 ;;;###skk-autoload
|
|
5174 (defun skk-middle-list (org offset inserted)
|
|
5175 ;; ORG := '(A B C), INSERTED := '(X Y), OFFSET := 1
|
|
5176 ;; -> '(A B X Y C)
|
|
5177 (let (tmp tail)
|
|
5178 (if (>= 0 offset)
|
|
5179 (error "Cannot insert!") )
|
|
5180 (setq tmp (nthcdr (1- offset) org)
|
|
5181 tail (cdr tmp) )
|
|
5182 (setcdr tmp nil) ;cut off
|
|
5183 (setcdr tmp (if tail (nconc inserted tail) inserted))
|
|
5184 org ))
|
|
5185
|
|
5186 ;;(defun skk-chomp (nth list)
|
|
5187 ;; (let ((l (nthcdr (1- nth) list)))
|
|
5188 ;; (setcdr l nil)
|
|
5189 ;; list ))
|
|
5190
|
|
5191 ;;(defun skk-cutoff-list (list offset)
|
|
5192 ;; ;; LIST := '(A B C), OFFSET := 1
|
|
5193 ;; ;; -> '(A B)
|
|
5194 ;; (if (< 0 offset)
|
|
5195 ;; (setcdr (nthcdr (1- offset) list) nil) )
|
|
5196 ;; list )
|
|
5197
|
|
5198 (defun skk-henkan-face-on ()
|
|
5199 ;; skk-use-face $B$,(B non-nil $B$N>l9g!"(Bskk-henkan-start-point $B$H(B
|
|
5200 ;; skk-henkan-end-point $B$N4V$N(B face $BB0@-$r(B skk-henkan-face $B$NCM$KJQ99$9$k!#(B
|
|
5201 ;;
|
|
5202 ;; SKK 9.4 $B$h$j(B Text Properties $B$r;HMQ$9$k$N$r;_$a$F!"(BOverlays $B$r;HMQ$9$k$h(B
|
|
5203 ;; $B$&$K$7$?(B (egg.el, canna.el, wnn-egg.el $B$r;29M$K$7$?(B)$B!#(B
|
|
5204 ;; Overlays $B$O!"%F%-%9%H$N0lIt$G$O$J$$$N$G!"%P%C%U%!$+$iJ8;z$r@Z$j=P$7$F$b%3(B
|
|
5205 ;; $B%T!<$NBP>]$K$J$i$J$$$7!"%"%s%I%%;~$bL5;k$5$l$k$N$G!"JQ49$5$l$?8uJd$NI=<((B
|
|
5206 ;; $B$r0l;~E*$KJQ99$9$k$K$O(B Text Properties $B$h$j$b9%ET9g$G$"$k!#(B
|
|
5207 ;;
|
|
5208 ;; $BC"$7!"(BOverlays $B$O(B Text Properties $B$h$j07$$$KCm0U$9$Y$-E@$,$"$k!#(B
|
|
5209 ;; $B%*!<%P%l%$$NCf$N%^!<%+$rD>@\JQ99$7$F$7$^$&$H!"$[$+$N=EMW$J%G!<%?9=B$$N99(B
|
|
5210 ;; $B?7$,9T$o$l$:!"<:$o$l$k%*!<%P%l%$$,=P$k$3$H$K$J$j$+$M$J$$(B (Overlay $B$N(B
|
|
5211 ;; Buffer$B$NHO0O$rJQ99$9$k$H$-$O!"I,$:(B move-overlay $B$r;HMQ$7$J$1$l$P$J$i$J$$(B)
|
|
5212 ;; $B$H$$$&E@$G$"$k!#(Bskk-henkan-face-on $B$GJQ497k2L$N8uJd$K4X$9$k(B
|
|
5213 ;; skk-henkan-overlay $B$r?75,$K:n$C$F$+$i(B ($B$"$k$$$O4{B8$N(B Overlay $B$r3:Ev8D=j(B
|
|
5214 ;; $B$K0\F0$7$F$+$i(B) skk-henkan-face-off $B$G>C5n$9$k$^$G$N4V$K(B
|
|
5215 ;; skk-henkan-start-point $B$H(B skk-henkan-end-point $BCf$N%F%-%9%H$r:o=|$9$k$H!"(B
|
|
5216 ;; $B7k2LE*$K(B move-overlay $B$r;HMQ$;$:$=$l$i$N%^!<%+!<CM$r99?7$9$k$3$H$K$J$C$F(B
|
|
5217 ;; $B$7$^$&!#=>$$!"(Bskk-henkan-start-point $B$H(B skk-henkan-end-point $B$N4V$K$"$k%F(B
|
|
5218 ;; $B%-%9%H$KJQ99$r2C$($k$H$-$O!"@h$K(B skk-henkan-face-off $B$G0lC6(B
|
|
5219 ;; skk-henkan-overlay $B$r>C$9I,MW$,$"$k(B (<(skk-e19.el/kill-region)>)$B!#(B
|
|
5220 ;;
|
|
5221 ;;From: enami tsugutomo <enami@ba2.so-net.or.jp>
|
|
5222 ;;Subject: overlay (was Re: SKK-9.4.15)
|
|
5223 ;;Date: 23 Oct 1996 16:35:53 +0900
|
|
5224 ;;Message-ID: <87n2xe5e06.fsf@plants-doll.enami.ba2.so-net.or.jp>
|
|
5225 ;;
|
|
5226 ;;enami> $B4X?t(B skk-henkan-face-on $B$N(B comment $B$N(B
|
|
5227 ;;enami>
|
|
5228 ;;enami> ;; $BC"$7!"(BOverlays $B$O(B Text Properties $B$h$j07$$$KCm0U$9$Y$-E@$,$"$k!#(B
|
|
5229 ;;enami> ;; $B%*!<%P%l%$$NCf$N%^!<%+$rD>@\JQ99$7$F$7$^$&$H!"$[$+$N=EMW$J%G!<%?9=B$$N99(B
|
|
5230 ;;enami> ;; $B?7$,9T$o$l$:!"<:$o$l$k%*!<%P%l%$$,=P$k$3$H$K$J$j$+$M$J$$(B
|
|
5231 ;;enami>
|
|
5232 ;;enami> ($B5Z$S$=$l0J9_(B) $B$NItJ,$K4X$7$F$G$9$,(B, make-overlay $B$G0LCV$N;XDj$K;H$C(B
|
|
5233 ;;enami> $B$?(B marker $B$,$=$N$^$^(B overlay $B$N0lIt$H$7$F;H$o$l$k$H(B, $B8m2r$7$F$$$^$;$s(B
|
|
5234 ;;enami> $B$G$7$g$&$+(B?
|
|
5235 ;;enami>
|
|
5236 ;;enami> $B<B:]$K$O(B overlay $B$N0lIt$r0Y$9(B marker $B$rD>@\0\F0$5$;$k$3$H$O$G$-$^$;$s(B
|
|
5237 ;;enami> $B$7(B, text $B$N:o=|DI2C$K$h$k0\F0$K$OBP=h$7$F$$$^$9$+$iLdBj$J$$$H;W$$$^$9(B.
|
|
5238 ;;enami>
|
|
5239 ;;enami> # $B$=$&$G$J$+$C$?$i(B overlay $B$C$FL5Cc6lCc;H$$$E$i$$$b$N$K$J$C$F$7$^$$$^(B
|
|
5240 ;;enami> # $B$9(B.
|
|
5241 ;;enami> $B$($J$_(B
|
|
5242 (let ((inhibit-quit t)
|
|
5243 cbuf )
|
|
5244 (if (and skk-henkan-face
|
|
5245 (setq cbuf (current-buffer))
|
|
5246 (eq (marker-buffer skk-henkan-start-point) cbuf)
|
|
5247 (eq (marker-buffer skk-henkan-end-point) cbuf)
|
|
5248 (marker-position skk-henkan-start-point)
|
|
5249 (marker-position skk-henkan-end-point) )
|
|
5250 (progn
|
|
5251 (or skk-henkan-overlay
|
|
5252 (setq skk-henkan-overlay (skk-make-overlay skk-henkan-start-point
|
|
5253 skk-henkan-end-point
|
|
5254 cbuf )))
|
|
5255 (skk-move-overlay skk-henkan-overlay skk-henkan-start-point
|
|
5256 skk-henkan-end-point cbuf )
|
|
5257 ;; evaporate $BB0@-$rIU$1$k$Y$-$+(B...$B!#$G$bJQ49$r7+$jJV$9$H$-$O!":FMxMQ(B
|
|
5258 ;; $B$9$k$N$@$+$i!"$`$7$m!"4{$K:n$C$F$"$kJ}$,NI$$$+$b!#(B
|
|
5259 (skk-overlay-put skk-henkan-overlay 'face skk-henkan-face) ))))
|
|
5260
|
|
5261 (defun skk-henkan-face-off ()
|
|
5262 ;; skk-henkan-start-point $B$H(B skk-henkan-end-point $B$N4V$NI=<($rJQ99$7$F$$$k(B
|
|
5263 ;; skk-henkan-overlay $B$r>C$9!#(B
|
|
5264 (and skk-henkan-face
|
|
5265 ;; $B%j%+!<%7%V%_%K%P%C%U%!$KF~$C$?$H$-$O!"(Boverlayp $B$K$h$k8!::$,I,MW!)(B
|
|
5266 (skk-overlayp skk-henkan-overlay)
|
|
5267 (skk-delete-overlay skk-henkan-overlay) ))
|
|
5268
|
|
5269 (defun skk-set-cursor-color (color)
|
|
5270 ;; $B%+!<%=%k$N?'$r(B COLOR $B$KJQ99$9$k!#(B
|
|
5271 (if skk-use-color-cursor
|
|
5272 (condition-case nil
|
|
5273 (set-cursor-color color)
|
|
5274 (error
|
|
5275 (set-cursor-color skk-default-cursor-color)
|
|
5276 (if skk-report-set-cursor-error
|
|
5277 (skk-message
|
|
5278 "$B%+%i!<%^%C%W@Z$l$G$9!#%G%#%U%)%k%H$N%+%i!<$r;H$$$^$9!#(B"
|
|
5279 "Color map is exhausting, use default cursor color" ))))))
|
|
5280
|
|
5281 ;;;###skk-autoload
|
|
5282 (defun skk-set-cursor-properly ()
|
|
5283 ;; $B%+%l%s%H%P%C%U%!$N(B SKK $B$N%b!<%I$K=>$$!"%+!<%=%k$N?'$rJQ99$9$k!#(B
|
|
5284 (if skk-use-color-cursor
|
|
5285 (if (not skk-mode)
|
|
5286 (skk-set-cursor-color skk-default-cursor-color)
|
|
5287 (skk-set-cursor-color (cond (skk-zenkaku-mode skk-zenkaku-cursor-color)
|
|
5288 (skk-katakana skk-katakana-cursor-color)
|
|
5289 (skk-j-mode skk-hirakana-cursor-color)
|
|
5290 (t skk-ascii-cursor-color) ))))
|
|
5291 (if skk-use-cursor-change
|
|
5292 (skk-change-cursor-when-ovwrt) ))
|
|
5293
|
|
5294 ;;;###skk-autoload
|
|
5295 (defun skk-change-cursor-when-ovwrt ()
|
|
5296 (if skk-xemacs
|
|
5297 (setq bar-cursor overwrite-mode)
|
|
5298 (if overwrite-mode
|
|
5299 (modify-frame-parameters (selected-frame) '((cursor-type bar . 3)))
|
|
5300 (modify-frame-parameters (selected-frame) '((cursor-type . box))) )))
|
|
5301
|
|
5302 ;;;###skk-autoload
|
|
5303 (defun skk-make-face (face)
|
|
5304 ;; hilit-lookup-face-create $B$N%5%V%;%C%H!#(Btutorial $B$G?'IU$1$r9T$J$&>l9g$G$b(B
|
|
5305 ;; hilit19 $B$K0MB8$;$:$H$j$"$($:(B face $B$r<+A0$G:n$k$3$H$,$G$-$k$h$&$K!"$H$$$&(B
|
|
5306 ;; $BL\E*$G:n$C$?$b$N$G!"4JC1$J?'IU$1$7$J$G$-$J$$!#$"$^$j8-$/$O$J$$!#J#;($J(B
|
|
5307 ;; face $B$r:n$j$?$$?M$O(B hilit-lookup-face-create $BEy$r;H$C$F2<$5$$!#(B
|
|
5308 (or (car (memq face (face-list)))
|
|
5309 (let ((face-name (symbol-name face))
|
|
5310 fore back )
|
|
5311 (setq face (make-face face))
|
|
5312 (save-match-data
|
|
5313 (if (not (string-match "/" face-name))
|
|
5314 (set-face-foreground face face-name)
|
|
5315 (set-face-foreground
|
|
5316 face
|
|
5317 (substring face-name 0 (match-beginning 0)) )
|
|
5318 (set-face-background
|
|
5319 face
|
|
5320 (substring face-name (1+ (match-beginning 0))) ))
|
|
5321 face ))))
|
|
5322
|
|
5323 ;;(defun skk-reinvoke ()
|
|
5324 ;; (let ((original-status
|
|
5325 ;; (cond (skk-katakana 'katakana)
|
|
5326 ;; (skk-zenkaku-mode 'zenkaku)
|
|
5327 ;; (skk-j-mode 'hirakana)
|
|
5328 ;; (skk-mode 'ascii)
|
|
5329 ;; (t 'unkown) )))
|
|
5330 ;; (skk-mode 1)
|
|
5331 ;; (cond ((eq original-status 'katakana)
|
|
5332 ;; (setq skk-katakana t) )
|
|
5333 ;; ((eq original-status 'zenkaku)
|
|
5334 ;; (setq skk-zenkaku-mode t) )
|
|
5335 ;; ((eq original-status 'ascii)
|
|
5336 ;; (setq skk-j-mode nil) )
|
|
5337 ;; ((eq original-status 'hirakana)) )
|
|
5338 ;; (skk-kakutei) ))
|
|
5339
|
|
5340 (add-hook 'edit-picture-hook 'skk-misc-for-picture 'append)
|
|
5341 (add-hook 'skk-before-kill-emacs-hook
|
|
5342 (function (lambda ()
|
|
5343 (if skk-menu-modified-user-option
|
|
5344 (skk-menu-save-modified-user-option) ))))
|
|
5345 (add-hook 'after-make-frame-hook 'skk-set-cursor-properly)
|
|
5346 (add-hook 'minibuffer-setup-hook
|
|
5347 (function (lambda () (skk-set-cursor-properly))) )
|
|
5348
|
|
5349 (add-hook 'minibuffer-exit-hook
|
|
5350 (function
|
|
5351 (lambda ()
|
|
5352 (remove-hook 'minibuffer-setup-hook 'skk-setup-minibuffer)
|
|
5353 (skk-set-cursor-properly) )))
|
|
5354
|
|
5355 (run-hooks 'skk-load-hook)
|
|
5356
|
|
5357 (provide 'skk)
|
|
5358 ;;; skk.el ends here
|