1 ; SKK tutorial for SKK version 10.46 and later versions
2 ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
4 ;; Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>
6 ;; Author: Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>
7 ;; Maintainer: Mikio Nakajima <minakaji@osaka.email.ne.jp>
8 ;; Version: $Id: skk-tut.el,v 1.3 2000-11-08 01:51:44 youngs Exp $
10 ;; Last Modified: $Date: 2000-11-08 01:51:44 $
12 ;; This file is part of SKK.
14 ;; SKK is free software; you can redistribute it and/or modify
15 ;; it under the terms of the GNU General Public License as published by
16 ;; the Free Software Foundation; either versions 2, or (at your option)
19 ;; SKK is distributed in the hope that it will be useful
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 ;; GNU General Public License for more details.
24 ;; You should have received a copy of the GNU General Public License
25 ;; along with SKK, see the file COPYING. If not, write to the Free
26 ;; Software Foundation Inc., 59 Temple Place - Suite 330, Boston,
27 ;; MA 02111-1307, USA.
34 (defgroup skk-tut nil "SKK tutorial conversion related customization."
38 ;; User variables. prefix should be `skk-tut-'.
39 (defcustom skk-tut-file
40 (static-cond ((eq skk-emacs-type 'xemacs) (locate-data-file "SKK.tut"))
41 (t "/usr/local/share/skk/SKK.tut"))
42 "*SKK
\e$B%A%e!<%H%j%"%k$N%U%!%$%kL>!#
\e(B
43 The English version is SKK.tut.E."
47 (defvar skk-tut-file-alist
48 (` (("Japanese" . (, skk-tut-file))
49 ("English" . (, (concat skk-tut-file ".E"))) ))
50 "*Alist of `(LANGUAGE . TUTORIAL-FILE)' pairs." )
52 (defcustom skk-tut-use-face t
53 "*Non-nil
\e$B$G$"$l$P!"%A%e!<%H%j%"%k$G
\e(B face
\e$B$rMxMQ$7$?I=<($r9T$J$&!#
\e(B"
57 (defface skk-tut-section-face
58 '((((class color) (background light))
59 (:foreground "yellow" :background "dodgerblue"))
60 (((class color) (background dark))
61 (:foreground "yellow" :background "slateblue"))
62 (((class grayscale)) (:bold t) (:italic t)) )
63 "*
\e$B%A%e!<%H%j%"%kCf$N%;%/%7%g%s$NI=<(ItJ,$N
\e(B face
\e$B!#
\e(B"
66 (defface skk-tut-do-it-face
67 '((((class color) (background light)) (:foreground "DarkGoldenrod"))
68 (((class color) (background dark)) (:foreground "LightGoldenrod"))
69 (((class grayscale)) (:bold t)) )
70 "*
\e$B%A%e!<%H%j%"%kCf$N;X<(9`L\$NI=<(ItJ,$N
\e(B face
\e$B!#
\e(B"
73 (defface skk-tut-question-face
74 '((((class color) (background light)) (:foreground "Blue"))
75 (((class color) (background dark)) (:foreground "LightSkyBlue"))
76 (((class grayscale)) (:underline t)) )
77 "*
\e$B%A%e!<%H%j%"%kCf$NLdBj$NI=<(ItJ,$N
\e(B face
\e$B!#
\e(B"
80 (defface skk-tut-key-bind-face
81 '((((class color) (background light)) (:foreground "Firebrick"))
82 (((class color) (background dark)) (:foreground "OrangeRed"))
83 (((class grayscale)) (:bold t)) )
84 "*
\e$B%A%e!<%H%j%"%kCf$N%-!<%P%$%s%I$NI=<(ItJ,$N
\e(B face
\e$B!#
\e(B"
87 (defface skk-tut-hint-face
88 '((((class color) (background light)) (:foreground "CadetBlue"))
89 (((class color) (background dark)) (:foreground "Aquamarine"))
90 (((class grayscale)) (:italic t)) )
91 "*
\e$B%A%e!<%H%j%"%kCf$N%R%s%H$NI=<(ItJ,$N
\e(B face
\e$B!#
\e(B
92 \e$B8=:_$N$H$3$m!"
\e(BSKK.tut.E
\e$B$G$7$+;HMQ$5$l$F$$$J$$!#
\e(B"
95 ;; internal variables and constants.
96 ;; prefix should be `skktut-'.
97 (defvar skk-tut-section-face 'skk-tut-section-face)
98 (defvar skk-tut-do-it-face 'skk-tut-do-it-face)
99 (defvar skk-tut-question-face 'skk-tut-question-face)
100 (defvar skk-tut-key-bind-face 'skk-tut-key-bind-face)
101 (defvar skk-tut-hint-face 'skk-tut-hint-face)
103 (defconst skktut-adviced-alist
104 '((skk-abbrev-mode . before) (skk-insert . before)
105 (skk-kakutei . before) (skk-mode . before)
106 (kill-buffer . around) (other-frame . before)
107 (save-buffers-kill-emacs . around)
108 ;;(select-frame . before)
110 "SKK
\e$B%A%e!<%H%j%"%k$G
\e(B advice
\e$B$,IU$1$i$l$k4X?t$H
\e(B advice class
\e$B$N%(!<%j%9%H!#
\e(B" )
112 (defconst skktut-question-numbers 37 "SKK
\e$B%A%e!<%H%j%"%k$NLdBj?t!#
\e(B")
114 (defconst skktut-tut-jisyo "~/skk-tut-jisyo"
115 "SKK
\e$B%A%e!<%H%j%"%kMQ$N%@%_!<<-=q!#
\e(B" )
117 (defconst skktut-init-variables-alist
118 '((skk-abbrev-cursor-color . "royalblue")
119 (skk-abbrev-mode-string . " a
\e$B$"
\e(B")
120 (skk-allow-spaces-newlines-and-tabs . t)
121 (skk-auto-fill-mode-hook . nil)
122 (skk-auto-insert-paren . nil)
123 (skk-auto-okuri-process . nil)
124 (skk-auto-start-henkan . nil)
125 (skk-byte-compile-init-file . nil)
126 (skk-comp-load-hook . nil)
127 (skk-compare-jisyo-size-when-saving . nil)
128 (skk-completion-function . 'skk-completion-original)
129 (skk-convert-okurigana-into-katakana . nil)
130 (skk-count-jisyo-candidates-function . 'skk-count-jisyo-candidates-original)
131 (skk-count-private-jisyo-candidates-exactly . nil)
132 (skk-dabbrev-like-completion . nil)
134 (skk-default-cursor-color . (if (eq skk-emacs-type 'xemacs)
135 (frame-property (selected-frame) 'cursor-color)
136 (cdr (assq 'cursor-color (frame-parameters (selected-frame)))) ))
137 (skk-delete-implies-kakutei . t)
138 (skk-delete-okuri-when-quit . nil)
139 (skk-downcase-alist . nil)
141 (skk-egg-like-newline . nil)
142 (skk-gadget-load-hook . nil)
143 (skk-henkan-face . 'highlight)
144 (skk-henkan-okuri-strictly . nil)
145 (skk-henkan-overlay-priority . 600)
146 (skk-henkan-show-candidates-keys . '(?a ?s ?d ?f ?j ?k ?l))
147 (skk-henkan-strict-okuri-precedence . nil)
148 (skk-hiragana-mode-string . "
\e$B$+$J
\e(B")
150 (skk-input-by-code-menu-keys1 . '(?a ?s ?d ?f ?g ?h ?q ?w ?e ?r ?t ?y))
151 (skk-input-by-code-menu-keys2 . '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?t ?y ?u))
152 (skk-japanese-message-and-error . nil)
153 (skk-jisx0208-latin-cursor-color . "gold")
154 (skk-jisx0208-latin-mode-string . "
\e$BA41Q
\e(B")
155 (skk-jisx0208-latin-vector . skk-default-jisx0208-latin-vector)
156 (skk-jisyo . "~/skk-tut-jisyo")
157 (skk-jisyo-save-count . nil)
158 (skk-kakutei-early . t)
159 (skk-kakutei-key . "\C-j")
160 (skk-kana-input-search-function . (function
164 "^h\\([bcdfghjklmnpqrstvwxz]\\)$"
166 (member (char-to-string (preceding-char))
167 '("
\e$B$*
\e(B" "
\e$B%*
\e(B") )
168 (cons '("
\e$B%*
\e(B" . "
\e$B$*
\e(B") (match-string 1 skk-prefix)) )))))
169 (skk-katakana-mode-string . "
\e$B%+%J
\e(B")
170 (skk-kcode-load-hook . nil)
171 (skk-keep-record . nil)
172 (skk-kuten-touten-alist . '((jp . ("
\e$B!#
\e(B" . "
\e$B!"
\e(B"))))
173 (skk-kutouten-type . 'jp)
174 (skk-latin-cursor-color . "ivory4")
175 (skk-latin-mode-string . " SKK")
176 (skk-load-hook . nil)
177 (skk-mode-hook . nil)
178 (skk-next-completion-key . ".")
179 (skk-number-style . 1)
180 (skk-okuri-char-alist . nil)
181 (skk-previous-completion-function . 'skk-previous-completion-original)
182 (skk-previous-completion-key . ",")
183 (skk-process-okuri-early . nil)
184 (skk-public-jisyo-has-entry-p-function . 'skk-public-jisyo-has-entry-p-original)
185 (skk-report-set-cursor-error . t)
186 (skk-rom-kana-base-rule-list .
187 '(("a" nil ("
\e$B%"
\e(B" . "
\e$B$"
\e(B")) ("bb" "b" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
188 ("ba" nil ("
\e$B%P
\e(B" . "
\e$B$P
\e(B")) ("be" nil ("
\e$B%Y
\e(B" . "
\e$B$Y
\e(B"))
189 ("bi" nil ("
\e$B%S
\e(B" . "
\e$B$S
\e(B")) ("bo" nil ("
\e$B%\
\e(B" . "
\e$B$\
\e(B"))
190 ("bu" nil ("
\e$B%V
\e(B" . "
\e$B$V
\e(B")) ("bya" nil ("
\e$B%S%c
\e(B" . "
\e$B$S$c
\e(B"))
191 ("bye" nil ("
\e$B%S%'
\e(B" . "
\e$B$S$'
\e(B")) ("byi" nil ("
\e$B%S%#
\e(B" . "
\e$B$S$#
\e(B"))
192 ("byo" nil ("
\e$B%S%g
\e(B" . "
\e$B$S$g
\e(B")) ("byu" nil ("
\e$B%S%e
\e(B" . "
\e$B$S$e
\e(B"))
193 ("cc" "c" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("cha" nil ("
\e$B%A%c
\e(B" . "
\e$B$A$c
\e(B"))
194 ("che" nil ("
\e$B%A%'
\e(B" . "
\e$B$A$'
\e(B")) ("chi" nil ("
\e$B%A
\e(B" . "
\e$B$A
\e(B"))
195 ("cho" nil ("
\e$B%A%g
\e(B" . "
\e$B$A$g
\e(B")) ("chu" nil ("
\e$B%A%e
\e(B" . "
\e$B$A$e
\e(B"))
196 ("cya" nil ("
\e$B%A%c
\e(B" . "
\e$B$A$c
\e(B")) ("cye" nil ("
\e$B%A%'
\e(B" . "
\e$B$A$'
\e(B"))
197 ("cyi" nil ("
\e$B%A%#
\e(B" . "
\e$B$A$#
\e(B")) ("cyo" nil ("
\e$B%A%g
\e(B" . "
\e$B$A$g
\e(B"))
198 ("cyu" nil ("
\e$B%A%e
\e(B" . "
\e$B$A$e
\e(B")) ("dd" "d" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
199 ("da" nil ("
\e$B%@
\e(B" . "
\e$B$@
\e(B")) ("de" nil ("
\e$B%G
\e(B" . "
\e$B$G
\e(B"))
200 ("dha" nil ("
\e$B%G%c
\e(B" . "
\e$B$G$c
\e(B")) ("dhe" nil ("
\e$B%G%'
\e(B" . "
\e$B$G$'
\e(B"))
201 ("dhi" nil ("
\e$B%G%#
\e(B" . "
\e$B$G$#
\e(B")) ("dho" nil ("
\e$B%G%g
\e(B" . "
\e$B$G$g
\e(B"))
202 ("dhu" nil ("
\e$B%G%e
\e(B" . "
\e$B$G$e
\e(B")) ("di" nil ("
\e$B%B
\e(B" . "
\e$B$B
\e(B"))
203 ("do" nil ("
\e$B%I
\e(B" . "
\e$B$I
\e(B")) ("du" nil ("
\e$B%E
\e(B" . "
\e$B$E
\e(B"))
204 ("dya" nil ("
\e$B%B%c
\e(B" . "
\e$B$B$c
\e(B")) ("dye" nil ("
\e$B%B%'
\e(B" . "
\e$B$B$'
\e(B"))
205 ("dyi" nil ("
\e$B%B%#
\e(B" . "
\e$B$B$#
\e(B")) ("dyo" nil ("
\e$B%B%g
\e(B" . "
\e$B$B$g
\e(B"))
206 ("dyu" nil ("
\e$B%B%e
\e(B" . "
\e$B$B$e
\e(B")) ("e" nil ("
\e$B%(
\e(B" . "
\e$B$(
\e(B"))
207 ("ff" "f" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("fa" nil ("
\e$B%U%!
\e(B" . "
\e$B$U$!
\e(B"))
208 ("fe" nil ("
\e$B%U%'
\e(B" . "
\e$B$U$'
\e(B")) ("fi" nil ("
\e$B%U%#
\e(B" . "
\e$B$U$#
\e(B"))
209 ("fo" nil ("
\e$B%U%)
\e(B" . "
\e$B$U$)
\e(B")) ("fu" nil ("
\e$B%U
\e(B" . "
\e$B$U
\e(B"))
210 ("fya" nil ("
\e$B%U%c
\e(B" . "
\e$B$U$c
\e(B")) ("fye" nil ("
\e$B%U%'
\e(B" . "
\e$B$U$'
\e(B"))
211 ("fyi" nil ("
\e$B%U%#
\e(B" . "
\e$B$U$#
\e(B")) ("fyo" nil ("
\e$B%U%g
\e(B" . "
\e$B$U$g
\e(B"))
212 ("fyu" nil ("
\e$B%U%e
\e(B" . "
\e$B$U$e
\e(B")) ("gg" "g" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
213 ("ga" nil ("
\e$B%,
\e(B" . "
\e$B$,
\e(B")) ("ge" nil ("
\e$B%2
\e(B" . "
\e$B$2
\e(B"))
214 ("gi" nil ("
\e$B%.
\e(B" . "
\e$B$.
\e(B")) ("go" nil ("
\e$B%4
\e(B" . "
\e$B$4
\e(B"))
215 ("gu" nil ("
\e$B%0
\e(B" . "
\e$B$0
\e(B")) ("gya" nil ("
\e$B%.%c
\e(B" . "
\e$B$.$c
\e(B"))
216 ("gye" nil ("
\e$B%.%'
\e(B" . "
\e$B$.$'
\e(B")) ("gyi" nil ("
\e$B%.%#
\e(B" . "
\e$B$.$#
\e(B"))
217 ("gyo" nil ("
\e$B%.%g
\e(B" . "
\e$B$.$g
\e(B")) ("gyu" nil ("
\e$B%.%e
\e(B" . "
\e$B$.$e
\e(B"))
218 ;;("h" "" ("
\e$B%*
\e(B" . "
\e$B$*
\e(B"))
219 ("ha" nil ("
\e$B%O
\e(B" . "
\e$B$O
\e(B")) ("he" nil ("
\e$B%X
\e(B" . "
\e$B$X
\e(B"))
220 ("hi" nil ("
\e$B%R
\e(B" . "
\e$B$R
\e(B")) ("ho" nil ("
\e$B%[
\e(B" . "
\e$B$[
\e(B"))
221 ("hu" nil ("
\e$B%U
\e(B" . "
\e$B$U
\e(B")) ("hya" nil ("
\e$B%R%c
\e(B" . "
\e$B$R$c
\e(B"))
222 ("hye" nil ("
\e$B%R%'
\e(B" . "
\e$B$R$'
\e(B")) ("hyi" nil ("
\e$B%R%#
\e(B" . "
\e$B$R$#
\e(B"))
223 ("hyo" nil ("
\e$B%R%g
\e(B" . "
\e$B$R$g
\e(B")) ("hyu" nil ("
\e$B%R%e
\e(B" . "
\e$B$R$e
\e(B"))
224 ("i" nil ("
\e$B%$
\e(B" . "
\e$B$$
\e(B")) ("jj" "j" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
225 ("ja" nil ("
\e$B%8%c
\e(B" . "
\e$B$8$c
\e(B")) ("je" nil ("
\e$B%8%'
\e(B" . "
\e$B$8$'
\e(B"))
226 ("ji" nil ("
\e$B%8
\e(B" . "
\e$B$8
\e(B")) ("jo" nil ("
\e$B%8%g
\e(B" . "
\e$B$8$g
\e(B"))
227 ("ju" nil ("
\e$B%8%e
\e(B" . "
\e$B$8$e
\e(B")) ("jya" nil ("
\e$B%8%c
\e(B" . "
\e$B$8$c
\e(B"))
228 ("jye" nil ("
\e$B%8%'
\e(B" . "
\e$B$8$'
\e(B")) ("jyi" nil ("
\e$B%8%#
\e(B" . "
\e$B$8$#
\e(B"))
229 ("jyo" nil ("
\e$B%8%g
\e(B" . "
\e$B$8$g
\e(B")) ("jyu" nil ("
\e$B%8%e
\e(B" . "
\e$B$8$e
\e(B"))
230 ("kk" "k" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("ka" nil ("
\e$B%+
\e(B" . "
\e$B$+
\e(B"))
231 ("ke" nil ("
\e$B%1
\e(B" . "
\e$B$1
\e(B")) ("ki" nil ("
\e$B%-
\e(B" . "
\e$B$-
\e(B"))
232 ("ko" nil ("
\e$B%3
\e(B" . "
\e$B$3
\e(B")) ("ku" nil ("
\e$B%/
\e(B" . "
\e$B$/
\e(B"))
233 ("kya" nil ("
\e$B%-%c
\e(B" . "
\e$B$-$c
\e(B")) ("kye" nil ("
\e$B%-%'
\e(B" . "
\e$B$-$'
\e(B"))
234 ("kyi" nil ("
\e$B%-%#
\e(B" . "
\e$B$-$#
\e(B")) ("kyo" nil ("
\e$B%-%g
\e(B" . "
\e$B$-$g
\e(B"))
235 ("kyu" nil ("
\e$B%-%e
\e(B" . "
\e$B$-$e
\e(B")) ("mm" "c" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
236 ("ma" nil ("
\e$B%^
\e(B" . "
\e$B$^
\e(B")) ("me" nil ("
\e$B%a
\e(B" . "
\e$B$a
\e(B"))
237 ("mi" nil ("
\e$B%_
\e(B" . "
\e$B$_
\e(B")) ("mo" nil ("
\e$B%b
\e(B" . "
\e$B$b
\e(B"))
238 ("mu" nil ("
\e$B%`
\e(B" . "
\e$B$`
\e(B")) ("mya" nil ("
\e$B%_%c
\e(B" . "
\e$B$_$c
\e(B"))
239 ("mye" nil ("
\e$B%_%'
\e(B" . "
\e$B$_$'
\e(B")) ("myi" nil ("
\e$B%_%#
\e(B" . "
\e$B$_$#
\e(B"))
240 ("myo" nil ("
\e$B%_%g
\e(B" . "
\e$B$_$g
\e(B")) ("myu" nil ("
\e$B%_%e
\e(B" . "
\e$B$_$e
\e(B"))
241 ("n" nil ("
\e$B%s
\e(B" . "
\e$B$s
\e(B")) ("n'" nil ("
\e$B%s
\e(B" . "
\e$B$s
\e(B"))
242 ("na" nil ("
\e$B%J
\e(B" . "
\e$B$J
\e(B")) ("ne" nil ("
\e$B%M
\e(B" . "
\e$B$M
\e(B"))
243 ("ni" nil ("
\e$B%K
\e(B" . "
\e$B$K
\e(B")) ("nn" nil ("
\e$B%s
\e(B" . "
\e$B$s
\e(B"))
244 ("no" nil ("
\e$B%N
\e(B" . "
\e$B$N
\e(B")) ("nu" nil ("
\e$B%L
\e(B" . "
\e$B$L
\e(B"))
245 ("nya" nil ("
\e$B%K%c
\e(B" . "
\e$B$K$c
\e(B")) ("nye" nil ("
\e$B%K%'
\e(B" . "
\e$B$K$'
\e(B"))
246 ("nyi" nil ("
\e$B%K%#
\e(B" . "
\e$B$K$#
\e(B")) ("nyo" nil ("
\e$B%K%g
\e(B" . "
\e$B$K$g
\e(B"))
247 ("nyu" nil ("
\e$B%K%e
\e(B" . "
\e$B$K$e
\e(B")) ("o" nil ("
\e$B%*
\e(B" . "
\e$B$*
\e(B"))
248 ("pp" "p" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("pa" nil ("
\e$B%Q
\e(B" . "
\e$B$Q
\e(B"))
249 ("pe" nil ("
\e$B%Z
\e(B" . "
\e$B$Z
\e(B")) ("pi" nil ("
\e$B%T
\e(B" . "
\e$B$T
\e(B"))
250 ("po" nil ("
\e$B%]
\e(B" . "
\e$B$]
\e(B")) ("pu" nil ("
\e$B%W
\e(B" . "
\e$B$W
\e(B"))
251 ("pya" nil ("
\e$B%T%c
\e(B" . "
\e$B$T$c
\e(B")) ("pye" nil ("
\e$B%T%'
\e(B" . "
\e$B$T$'
\e(B"))
252 ("pyi" nil ("
\e$B%T%#
\e(B" . "
\e$B$T$#
\e(B")) ("pyo" nil ("
\e$B%T%g
\e(B" . "
\e$B$T$g
\e(B"))
253 ("pyu" nil ("
\e$B%T%e
\e(B" . "
\e$B$T$e
\e(B")) ("rr" "r" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
254 ("ra" nil ("
\e$B%i
\e(B" . "
\e$B$i
\e(B")) ("re" nil ("
\e$B%l
\e(B" . "
\e$B$l
\e(B"))
255 ("ri" nil ("
\e$B%j
\e(B" . "
\e$B$j
\e(B")) ("ro" nil ("
\e$B%m
\e(B" . "
\e$B$m
\e(B"))
256 ("ru" nil ("
\e$B%k
\e(B" . "
\e$B$k
\e(B")) ("rya" nil ("
\e$B%j%c
\e(B" . "
\e$B$j$c
\e(B"))
257 ("rye" nil ("
\e$B%j%'
\e(B" . "
\e$B$j$'
\e(B")) ("ryi" nil ("
\e$B%j%#
\e(B" . "
\e$B$j$#
\e(B"))
258 ("ryo" nil ("
\e$B%j%g
\e(B" . "
\e$B$j$g
\e(B")) ("ryu" nil ("
\e$B%j%e
\e(B" . "
\e$B$j$e
\e(B"))
259 ("ss" "s" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("sa" nil ("
\e$B%5
\e(B" . "
\e$B$5
\e(B"))
260 ("se" nil ("
\e$B%;
\e(B" . "
\e$B$;
\e(B")) ("sha" nil ("
\e$B%7%c
\e(B" . "
\e$B$7$c
\e(B"))
261 ("she" nil ("
\e$B%7%'
\e(B" . "
\e$B$7$'
\e(B")) ("shi" nil ("
\e$B%7
\e(B" . "
\e$B$7
\e(B"))
262 ("sho" nil ("
\e$B%7%g
\e(B" . "
\e$B$7$g
\e(B")) ("shu" nil ("
\e$B%7%e
\e(B" . "
\e$B$7$e
\e(B"))
263 ("si" nil ("
\e$B%7
\e(B" . "
\e$B$7
\e(B")) ("so" nil ("
\e$B%=
\e(B" . "
\e$B$=
\e(B"))
264 ("su" nil ("
\e$B%9
\e(B" . "
\e$B$9
\e(B")) ("sya" nil ("
\e$B%7%c
\e(B" . "
\e$B$7$c
\e(B"))
265 ("sye" nil ("
\e$B%7%'
\e(B" . "
\e$B$7$'
\e(B")) ("syi" nil ("
\e$B%7%#
\e(B" . "
\e$B$7$#
\e(B"))
266 ("syo" nil ("
\e$B%7%g
\e(B" . "
\e$B$7$g
\e(B")) ("syu" nil ("
\e$B%7%e
\e(B" . "
\e$B$7$e
\e(B"))
267 ("tt" "t" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("ta" nil ("
\e$B%?
\e(B" . "
\e$B$?
\e(B"))
268 ("te" nil ("
\e$B%F
\e(B" . "
\e$B$F
\e(B")) ("tha" nil ("
\e$B%F%!
\e(B" . "
\e$B$F$!
\e(B"))
269 ("the" nil ("
\e$B%F%'
\e(B" . "
\e$B$F$'
\e(B")) ("thi" nil ("
\e$B%F%#
\e(B" . "
\e$B$F$#
\e(B"))
270 ("tho" nil ("
\e$B%F%g
\e(B" . "
\e$B$F$g
\e(B")) ("thu" nil ("
\e$B%F%e
\e(B" . "
\e$B$F$e
\e(B"))
271 ("ti" nil ("
\e$B%A
\e(B" . "
\e$B$A
\e(B")) ("to" nil ("
\e$B%H
\e(B" . "
\e$B$H
\e(B"))
272 ("tsu" nil ("
\e$B%D
\e(B" . "
\e$B$D
\e(B")) ("tu" nil ("
\e$B%D
\e(B" . "
\e$B$D
\e(B"))
273 ("tya" nil ("
\e$B%A%c
\e(B" . "
\e$B$A$c
\e(B")) ("tye" nil ("
\e$B%A%'
\e(B" . "
\e$B$A$'
\e(B"))
274 ("tyi" nil ("
\e$B%A%#
\e(B" . "
\e$B$A$#
\e(B")) ("tyo" nil ("
\e$B%A%g
\e(B" . "
\e$B$A$g
\e(B"))
275 ("tyu" nil ("
\e$B%A%e
\e(B" . "
\e$B$A$e
\e(B")) ("u" nil ("
\e$B%&
\e(B" . "
\e$B$&
\e(B"))
276 ("vv" "v" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("va" nil ("
\e$B%t%!
\e(B" . "
\e$B$&!+$!
\e(B"))
277 ("ve" nil ("
\e$B%t%'
\e(B" . "
\e$B$&!+$'
\e(B")) ("vi" nil ("
\e$B%t%#
\e(B" . "
\e$B$&!+$#
\e(B"))
278 ("vo" nil ("
\e$B%t%)
\e(B" . "
\e$B$&!+$)
\e(B")) ("vu" nil ("
\e$B%t
\e(B" . "
\e$B$&!+
\e(B"))
279 ("ww" "w" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("wa" nil ("
\e$B%o
\e(B" . "
\e$B$o
\e(B"))
280 ("we" nil ("
\e$B%&%'
\e(B" . "
\e$B$&$'
\e(B")) ("wi" nil ("
\e$B%&%#
\e(B" . "
\e$B$&$#
\e(B"))
281 ("wo" nil ("
\e$B%r
\e(B" . "
\e$B$r
\e(B")) ("wu" nil ("
\e$B%&
\e(B" . "
\e$B$&
\e(B"))
282 ("xx" "x" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("xa" nil ("
\e$B%!
\e(B" . "
\e$B$!
\e(B"))
283 ("xe" nil ("
\e$B%'
\e(B" . "
\e$B$'
\e(B")) ("xi" nil ("
\e$B%#
\e(B" . "
\e$B$#
\e(B"))
284 ("xka" nil ("
\e$B%u
\e(B" . "
\e$B$+
\e(B")) ("xke" nil ("
\e$B%v
\e(B" . "
\e$B$1
\e(B"))
285 ("xo" nil ("
\e$B%)
\e(B" . "
\e$B$)
\e(B")) ("xtsu" nil ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
286 ("xtu" nil ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("xu" nil ("
\e$B%%
\e(B" . "
\e$B$%
\e(B"))
287 ("xwa" nil ("
\e$B%n
\e(B" . "
\e$B$n
\e(B")) ("xwe" nil ("
\e$B%q
\e(B" . "
\e$B$q
\e(B"))
288 ("xwi" nil ("
\e$B%p
\e(B" . "
\e$B$p
\e(B")) ("xya" nil ("
\e$B%c
\e(B" . "
\e$B$c
\e(B"))
289 ("xyo" nil ("
\e$B%g
\e(B" . "
\e$B$g
\e(B")) ("xyu" nil ("
\e$B%e
\e(B" . "
\e$B$e
\e(B"))
290 ("yy" "y" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B")) ("ya" nil ("
\e$B%d
\e(B" . "
\e$B$d
\e(B"))
291 ("ye" nil ("
\e$B%$%'
\e(B" . "
\e$B$$$'
\e(B")) ("yo" nil ("
\e$B%h
\e(B" . "
\e$B$h
\e(B"))
292 ("yu" nil ("
\e$B%f
\e(B" . "
\e$B$f
\e(B")) ("zz" "z" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))
293 ("z," nil "
\e$B!E
\e(B") ("z-" nil "
\e$B!A
\e(B") ("z." nil "
\e$B!D
\e(B")
294 ("z/" nil "
\e$B!&
\e(B") ("z[" nil "
\e$B!X
\e(B") ("z]" nil "
\e$B!Y
\e(B")
295 ("za" nil ("
\e$B%6
\e(B" . "
\e$B$6
\e(B")) ("ze" nil ("
\e$B%<
\e(B" . "
\e$B$<
\e(B"))
296 ("zh" nil "
\e$B"+
\e(B") ("zi" nil ("
\e$B%8
\e(B" . "
\e$B$8
\e(B"))
297 ("zj" nil "
\e$B"-
\e(B") ("zk" nil "
\e$B",
\e(B") ("zl" nil "
\e$B"*
\e(B")
298 ("zo" nil ("
\e$B%>
\e(B" . "
\e$B$>
\e(B")) ("zu" nil ("
\e$B%:
\e(B" . "
\e$B$:
\e(B"))
299 ("zya" nil ("
\e$B%8%c
\e(B" . "
\e$B$8$c
\e(B")) ("zye" nil ("
\e$B%8%'
\e(B" . "
\e$B$8$'
\e(B"))
300 ("zyi" nil ("
\e$B%8%#
\e(B" . "
\e$B$8$#
\e(B")) ("zyo" nil ("
\e$B%8%g
\e(B" . "
\e$B$8$g
\e(B"))
301 ("zyu" nil ("
\e$B%8%e
\e(B" . "
\e$B$8$e
\e(B")) ("." nil skk-current-kuten)
302 ("," nil skk-current-touten) ("-" nil "
\e$B!<
\e(B")
303 (":" nil "
\e$B!'
\e(B") (";" nil "
\e$B!(
\e(B") ("?" nil "
\e$B!)
\e(B")
304 ("[" nil "
\e$B!V
\e(B") ("]" nil "
\e$B!W
\e(B") ("l" nil skk-latin-mode)
305 ("q" nil skk-toggle-kana) ("L" nil skk-jisx0208-latin-mode)
306 ("Q" nil skk-set-henkan-point-subr)
307 ("X" nil skk-purge-from-jisyo) ("/" nil skk-abbrev-mode)
308 ("$" nil skk-display-code-for-char-at-point)
309 ("@" nil skk-today) ("\\" nil skk-input-by-code-or-menu) ))
310 (skk-rom-kana-rule-list . '(("hh" "h" ("
\e$B%C
\e(B" . "
\e$B$C
\e(B"))))
311 (skk-save-jisyo-function . 'skk-save-jisyo-original)
312 (skk-search-excluding-word-pattern-function . nil)
313 (skk-search-prog-list . '((skk-search-jisyo-file skktut-tut-jisyo 0 t)))
314 (skk-set-henkan-point-key . '(?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?M ?N ?O ?P ?R ?S ?T ?U ?V ?W ?Y ?Z))
315 (skk-special-midashi-char-list . '(?> ?< ??))
316 (skk-start-henkan-key . " ")
317 (skk-try-completion-key . "\t")
318 (skk-update-jisyo-function . 'skk-update-jisyo-original)
319 (skk-use-color-cursor . (and window-system (fboundp 'x-display-color-p) (x-display-color-p)))
320 (skk-use-cursor-change . t)
321 (skk-use-face . (or window-system (skk-terminal-face-p)))
323 (skk-use-numeric-conversion . t)
324 (skk-use-rdbms . nil)
325 (skk-use-relation . nil)
326 (skk-use-viper . nil)
328 ;; not user variables but to be localized.
329 (skk-insert-new-word-function . nil)
330 (skk-mode-invoked . t)
333 (skk-compile-rule-list skk-rom-kana-base-rule-list skk-rom-kana-rule-list) ))
334 "skk.el
\e$B$N%f!<%6!<JQ?t$N%j%9%H!#
\e(B" )
336 (defvar skktut-japanese-tut nil
337 "Non-nil
\e$B$G$"$l$P!"%A%e!<%H%j%"%k$,F|K\8l$G$"$k$3$H$r<($9!#
\e(B" )
338 (defvar skktut-right-answer nil "
\e$B@52r$NJ8;zNs!#
\e(B")
339 (defvar skktut-question-count 1 "
\e$B%A%e!<%H%j%"%k$N8=:_$NLdBjHV9f!#
\e(B")
340 (defvar skktut-tutorial-end nil "
\e$B%A%e!<%H%j%"%k$N=*N;$r<($9%U%i%0!#
\e(B")
341 (defvar skktut-working-buffer " *skk-tutorial*")
342 (defvar skktut-question-buffer "*
\e$BLd
\e(B*")
343 (defvar skktut-answer-buffer "*
\e$BEz
\e(B*")
344 (defvar skktut-jisyo-buffer " *skk-tut-jisyo*")
345 (defvar skktut-original-window-configuration nil)
346 (defvar skktut-working-window-configuration nil)
347 (defvar skktut-skk-mode-on nil
348 "Non-nil
\e$B$G$"$l$P!"
\e(Bskk-tutorial
\e$B$r5/F0$7$?$H$-$K
\e(B SKK
\e$B$,4{$K5/F0$5$l$F$$$?$3$H$r<($9!#
\e(B" )
350 (defvar skktut-latin-mode-map nil
351 "SKK
\e$B%A%e!<%H%j%"%k
\e(B ASCII
\e$B%b!<%I%-!<%^%C%W!#
\e(B" )
353 (or skktut-latin-mode-map
354 (let ((map (make-sparse-keymap)))
355 (define-key map "\C-j" 'skk-kakutei)
356 (setq skktut-latin-mode-map map) ))
358 (defvar skktut-j-mode-map nil
359 "SKK
\e$B%A%e!<%H%j%"%k$+$J
\e(B/
\e$B%+%J%b!<%I%-!<%^%C%W!#
\e(B" )
361 (or skktut-j-mode-map
362 (let ((map (make-sparse-keymap)))
363 (substitute-key-definition 'self-insert-command 'skk-insert map
365 (substitute-key-definition 'egg-self-insert-command 'skk-insert map
367 (substitute-key-definition 'canna-self-insert-command 'skk-insert map
369 (substitute-key-definition 'canna-henkan-region-or-self-insert
370 'skk-insert map global-map)
371 (substitute-key-definition 'can-n-egg-self-insert-command 'skk-insert map
373 (define-key map "x" 'skk-previous-candidate)
374 (define-key map "\C-j" 'skk-kakutei)
375 (define-key map "\t" 'skk-insert)
376 (setq skktut-j-mode-map map)))
378 (defvar skktut-jisx0208-latin-mode-map nil
379 "SKK
\e$B%A%e!<%H%j%"%kA43Q1Q?t;z%b!<%I%-!<%^%C%W!#
\e(B" )
381 (or skktut-jisx0208-latin-mode-map
382 (let ((map (make-sparse-keymap))
385 (if (aref skk-jisx0208-latin-vector i)
386 (define-key map (char-to-string i) 'skk-jisx0208-latin-insert))
388 (define-key map "\C-j" 'skk-kakutei)
389 (setq skktut-jisx0208-latin-mode-map map)))
391 (defvar skktut-abbrev-mode-map nil
392 "SKK
\e$B%A%e!<%H%j%"%k
\e(B Abbrev
\e$B%b!<%I%-!<%^%C%W!#
\e(B")
394 (or skktut-abbrev-mode-map
395 (let ((map (make-sparse-keymap)))
396 (define-key map "," 'skk-abbrev-comma)
397 (define-key map "." 'skk-abbrev-period)
398 (define-key map "\C-q" 'skk-jisx0208-latin-henkan)
399 (define-key map "\C-j" 'skk-kakutei)
400 (define-key map " " 'skk-start-henkan)
401 (define-key map "\t" 'skk-try-completion)
402 (setq skktut-abbrev-mode-map map)))
405 (defmacro skktut-message (japanese english &rest arg)
406 ;; skktut-japanese-tut
\e$B$,
\e(B non-nil
\e$B$@$C$?$i
\e(B JAPANESE
\e$B$r
\e(B nil
\e$B$G$"$l$P
\e(B ENGLISH
407 ;;
\e$B$r%(%3!<%(%j%"$KI=<($9$k!#
\e(B
408 ;; ARG
\e$B$O
\e(B message
\e$B4X?t$NBh#20z?t0J9_$N0z?t$H$7$FEO$5$l$k!#
\e(B
409 (append (list 'message (list 'if 'skktut-japanese-tut japanese english))
412 (defmacro skktut-error (japanese english &rest arg)
413 ;; skktut-japanese-tut
\e$B$,
\e(B non-nil
\e$B$@$C$?$i
\e(B JAPANESE
\e$B$r
\e(B nil
\e$B$G$"$l$P
\e(B ENGLISH
414 ;;
\e$B$r%(%3!<%(%j%"$KI=<($7!"%(%i!<$rH/@8$5$;$k!#
\e(B
415 ;; ARG
\e$B$O
\e(B error
\e$B4X?t$NBh#20z?t0J9_$N0z?t$H$7$FEO$5$l$k!#
\e(B
416 (append (list 'error (list 'if 'skktut-japanese-tut japanese english))
419 (defmacro skktut-yes-or-no-p (japanese english)
420 (list 'yes-or-no-p (list 'if 'skktut-japanese-tut japanese english)) )
423 (defadvice skk-abbrev-mode (before skktut-ad disable)
424 "SKK
\e$B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#
\e(B"
425 (and (> 12 skktut-question-count)
426 (skktut-error "
\e$B$3$N%-!<$O$^$@;H$($^$;$s
\e(B" "Cannot use this key yet" ) ))
428 (defadvice skk-insert (before skktut-ad disable)
429 "SKK
\e$B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#
\e(B"
430 (and (memq last-command-char skk-set-henkan-point-key)
431 (> 12 skktut-question-count)
432 (skktut-error "
\e$B$+$J
\e(B/
\e$B%+%J%b!<%I$G$O!"1QBgJ8;z$O$^$@;H$($^$;$s
\e(B"
433 "Cannot use upper case character in kana/katakana mode" ) ))
435 (defadvice skk-kakutei (before skktut-ad disable)
436 "SKK
\e$B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#
\e(B"
438 (= skktut-question-count 1)
439 (skktut-error "
\e$B$3$N%-!<$O$^$@;H$($^$;$s
\e(B" "Cannot use this key yet" ) ))
441 (defadvice skk-mode (before skktut-ad disable)
442 "SKK
\e$B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#
\e(B"
444 (= skktut-question-count 1)
445 (skktut-error "
\e$B$3$N%-!<$O$^$@;H$($^$;$s
\e(B" "Cannot use this key yet" ) ))
447 ;;; XXX interactive subr with args.
448 (defadvice kill-buffer (around skktut-ad disable)
449 "SKK
\e$B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#
\e(B"
450 (interactive "bKill buffer: ")
451 (cond ((or (not (interactive-p))
452 (null (member (ad-get-arg 0) (list skktut-working-buffer
453 skktut-question-buffer
455 skktut-jisyo-buffer ))))
457 ((skktut-yes-or-no-p "
\e$B%A%e!<%H%j%"%k$r$d$a$^$9$+
\e(B? "
459 (skk-tutorial-quit 'now)
464 (defadvice other-frame (before skktut-ad disable)
465 "SKK
\e$B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#
\e(B"
466 (skktut-before-move-to-other-frame) )
468 ;;(defadvice select-frame (before skktut-ad disable)
469 ;;(defadvice select-frame (before skktut-ad activate)
470 ;; "SKK
\e$B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#
\e(B"
471 ;; (skktut-before-move-to-other-frame) )
473 (defadvice save-buffers-kill-emacs (around skktut-ad disable)
474 "SKK
\e$B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#
\e(B"
475 (if (skktut-yes-or-no-p "Tutorial
\e$B$b
\e(B Emacs
\e$B$b=*N;$7$^$9!#$h$m$7$$$G$9$M!)
\e(B "
476 "Quit tutorial and kill emacs? " )
477 (progn (skk-tutorial-quit 'now)
480 ;; interactive commands. prefix should be `skk-tutorial'.
482 (defun skk-tutorial (&optional query-language)
483 "SKK
\e$B%A%e!<%H%j%"%k$r5/F0$9$k!#
\e(B
484 C-u M-x skk-tutorial
\e$B$9$k$H!"%A%e!<%H%j%"%k%U%!%$%k$NA*Br$,2DG=!#
\e(B"
487 (let* ((lang (completing-read "Language: " skk-tut-file-alist))
488 (file (cdr (assoc lang skk-tut-file-alist))) )
489 (if (not (file-exists-p (expand-file-name file)))
490 (error "No file found as %s" file)
491 (setq skk-tut-file file)
492 (message "SKK tutorial language set to %s until you exit Emacs"
494 (let ((inhibit-quit t))
495 (if (not (and (boundp 'skk-major-version) (boundp 'skk-minor-version)
496 (>= skk-major-version 10) (>= skk-minor-version 46) ))
497 (error "skk.el version 10.46 or later is required")
498 (skktut-pre-setup-tutorial)
499 (skktut-setup-jisyo-buffer)
500 (skktut-setup-working-buffer)
501 (skktut-setup-question-buffer)
502 (skktut-setup-answer-buffer)
503 (skktut-enable-advice)
504 (skktut-enable-tutmap)
505 (add-hook 'before-make-frame-hook 'skktut-before-move-to-other-frame)
506 (add-hook 'minibuffer-setup-hook 'skktut-localize-and-init-variables)
507 (skktut-make-windows) )))
509 (defun skk-tutorial-again (&optional now)
510 "SKK
\e$B%A%e!<%H%j%"%k$r:G=i$+$i$d$jD>$9!#
\e(B
511 C-u M-x skk-tutorial-again
\e$B$9$k$H!"
\e(Byes-or-no-p
\e$B$G?R$M$i$l$k$3$H$J$/D>$A$K$d$jD>$9!#
\e(B"
514 (skktut-yes-or-no-p "
\e$B:G=i$+$i
\e(B Tutorial
\e$B$r$d$jD>$7$^$9!#$h$m$7$$$G$9$M!)
\e(B "
515 "Quit tutorial and start from question 1 again? " ))
516 (progn (skk-tutorial-quit 'now)
519 (defun skk-tutorial-quit (&optional now)
520 "SKK
\e$B%A%e!<%H%j%"%k$r$d$a$k!#
\e(B
521 C-u M-x skk-tutorial-quit
\e$B$9$k$H!"
\e(Byes-or-no-p
\e$B$G?R$M$i$l$k$3$H$J$/D>$A$K$d$a$k!#
\e(B"
523 (if (or now (skktut-yes-or-no-p "
\e$BK\Ev$K%A%e!<%H%j%"%k$r$d$a$^$9$+
\e(B? "
524 "Really quit tutorial? " ))
525 (let ((inhibit-quit t))
526 (delete-other-windows)
527 ;;
\e$B:FEY%A%e!<%H%j%"%k$r;H$($k$h$&$K!"FbItJQ?t$r=i4|2=$7$F$*$/!#
\e(B
528 (setq skktut-japanese-tut nil
529 skktut-question-count 1
530 skktut-right-answer nil
531 skktut-tutorial-end nil )
532 (remove-hook 'minibuffer-setup-hook 'skktut-localize-and-init-variables)
533 (remove-hook 'before-make-frame-hook 'skktut-before-move-to-other-frame)
534 (skktut-disable-tutmap)
535 (skktut-disable-advice)
537 (set-buffer skktut-jisyo-buffer)
538 (set-buffer-modified-p nil)
539 (kill-buffer skktut-jisyo-buffer) )
540 (kill-buffer skktut-working-buffer)
541 (kill-buffer skktut-answer-buffer)
542 (kill-buffer skktut-question-buffer)
543 (set-window-configuration skktut-original-window-configuration)
544 ;; SKK
\e$B$r5/F0$;$:$K$$$-$J$j
\e(B
545 ;; skk-tutorial
\e$B$r<B9T$7$?$H$-$K
\e(B skk-jisyo
\e$B%P%C%U%!$,:n$i$l$J$$$N$G
\e(B
546 ;; skk-setup-jisyo-buffer
\e$B$G%(%i!<$H$J$j!"
\e(BEmacs
\e$B$N=*N;$,$G$-$J$/
\e(B
547 ;;
\e$B$J$k$N$G
\e(B SKK
\e$B%b!<%I$r0lEY5/$3$7$F$*$/!#
\e(B
549 ;;
\e$B%A%e!<%H%j%"%k5/F0D>A0$K3+$$$F$$$?%P%C%U%!$G!"
\e(Bskk-mode
\e$B$r5/F0$7$F
\e(B
550 ;;
\e$B$$$?$i!"$=$N>uBV$K$7$F!"%A%e!<%H%j%"%k$r=*N;$9$k!#
\e(B
551 (or skktut-skk-mode-on
554 ;; the following commands are also interactive, but users may not call
555 ;; them by name. So prefix should be `skktut-'.
556 (defun skktut-next-question ()
558 (set-window-configuration skktut-working-window-configuration)
559 ;; called in skktut-answer-buffer.
562 (goto-char (point-min))
564 (skip-chars-backward " \t")
565 (setq user-ans (buffer-substring-no-properties (point-min) (point)))
566 (if (string-match "^>* *" user-ans)
567 (setq user-ans (substring user-ans (match-end 0))) )
568 (if (not (string= skktut-right-answer user-ans))
570 (skktut-message "
\e$BEz$,0c$$$^$9!#$b$&0lEY$d$C$F$_$F2<$5$$
\e(B"
573 (setq skktut-question-count (1+ skktut-question-count))
574 ;; buffer independent.
575 (skktut-get-question-page skktut-question-count)
576 (if (>= skktut-question-count (1+ skktut-question-numbers))
577 (skk-tutorial-quit 'now)
578 (skktut-next-answer-buffer) )))))
580 (defun skktut-skip-question (arg)
582 (set-window-configuration skktut-working-window-configuration)
583 ;; called in skktut-answer-buffer.
584 (skktut-erase-buffer)
585 (setq skktut-question-count (+ skktut-question-count arg))
586 (cond ((> 1 skktut-question-count)
587 (setq skktut-question-count 1) )
589 ((> skktut-question-count skktut-question-numbers)
590 (setq skktut-question-count skktut-question-numbers) )
591 ((and (>= skktut-question-count 3) (not skk-j-mode))
593 ;; buffer independent.
594 (skktut-get-question-page skktut-question-count)
595 (if skktut-tutorial-end
596 (skk-tutorial-quit 'now)
597 (skktut-next-answer-buffer) ))
599 ;; internal functions. prefix should be `skktut-'.
600 (defun skktut-make-windows ()
601 ;; Make window fill its frame.
602 (delete-other-windows)
603 (split-window-vertically)
605 ;; make it selected window and current buffer.
606 (switch-to-buffer skktut-answer-buffer)
607 (enlarge-window (- (window-height (selected-window)) 20))
608 ;; not make it current buffer but visible.
609 (display-buffer skktut-question-buffer)
610 (setq skktut-working-window-configuration (current-window-configuration)) )
612 (defun skktut-enable-advice ()
613 (let ((alist skktut-adviced-alist)
616 (setq e (car alist) )
617 (ad-enable-advice (car e) (cdr e) 'skktut-ad)
618 (ad-activate (car e))
619 (setq alist (cdr alist)) )))
621 (defun skktut-disable-advice ()
622 (let ((alist skktut-adviced-alist)
625 (setq e (car alist) )
626 (ad-disable-advice (car e) (cdr e) 'skktut-ad)
627 (ad-activate (car e))
628 (setq alist (cdr alist)) )))
630 (defun skktut-enable-tutmap ()
631 (let ((inhibit-quit t))
633 'minor-mode-map-alist
635 (list (cons 'skk-latin-mode skktut-latin-mode-map)
636 (cons 'skk-abbrev-mode skktut-abbrev-mode-map)
637 (cons 'skk-j-mode skktut-j-mode-map)
638 (cons 'skk-jisx0208-latin-mode skktut-jisx0208-latin-mode-map) ))
639 ;; for minor-mode-map-alist localized by Viper.
640 (if (not (featurep 'viper))
642 (if (if (eq skk-emacs-type 'xemacs)
643 (local-variable-p 'minor-mode-map-alist nil t)
644 (local-variable-p 'minor-mode-map-alist) )
645 (setq-default minor-mode-map-alist minor-mode-map-alist) ))))
647 (defun skktut-disable-tutmap ()
648 (let ((inhibit-quit t)
650 '(skk-abbrev-mode skk-latin-mode skk-j-mode skk-jisx0208-latin-mode) )
652 (while minor-mode-list
653 (setq minor-mode (car minor-mode-list)
654 minor-mode-list (cdr minor-mode-list) )
656 (while (setq e (assq minor-mode minor-mode-map-alist))
657 (setq minor-mode-map-alist (delq e minor-mode-map-alist)) ))
659 'minor-mode-map-alist
660 (list (cons 'skk-latin-mode skk-latin-mode-map)
661 (cons 'skk-abbrev-mode skk-abbrev-mode-map)
662 (cons 'skk-j-mode skk-j-mode-map)
663 (cons 'skk-jisx0208-latin-mode skk-jisx0208-latin-mode-map) )))
664 ;; for minor-mode-map-alist localized by Viper.
665 (and (default-value skk-use-viper) (skk-viper-normalize-map)) )
667 (defun skktut-pre-setup-tutorial ()
668 (setq skktut-original-window-configuration (current-window-configuration)
669 skktut-skk-mode-on skk-mode
670 skktut-question-count 1 ))
672 (defun skktut-setup-jisyo-buffer ()
673 ;; setup skktut-tut-jisyo buffer.
675 (set-buffer (get-buffer-create skktut-jisyo-buffer))
676 (buffer-disable-undo (current-buffer))
677 (skktut-localize-and-init-variables)
678 (setq case-fold-search nil
679 buffer-file-name (expand-file-name skktut-tut-jisyo) )
680 (insert (concat ";; okuri-ari entries.\n"
681 "
\e$B$[$C
\e(Bs /
\e$BM_
\e(B/\n"
682 "
\e$B$D$+
\e(Bt /
\e$B;H
\e(B/\n"
683 "
\e$B$?$C
\e(Bs /
\e$BC#
\e(B/\n"
684 "
\e$B$7
\e(Bt /
\e$BCN
\e(B/\n"
685 "
\e$B$&$4
\e(Bk /
\e$BF0
\e(B/\n"
686 ";; okuri-nasi entries.\n"
687 "Greek /
\e$B&!
\e(B/
\e$B&"
\e(B/
\e$B&#
\e(B/
\e$B&$
\e(B/
\e$B&%
\e(B/
\e$B&&
\e(B/
\e$B&'
\e(B/
\e$B&(
\e(B/
\e$B&)
\e(B/
\e$B&*
\e(B/
\e$B&+
\e(B/
\e$B&,
\e(B/
\e$B&-
\e(B/
\e$B&.
\e(B/
\e$B&/
\e(B/
\e$B&0
\e(B/"
688 "
\e$B&1
\e(B/
\e$B&2
\e(B/
\e$B&3
\e(B/
\e$B&4
\e(B/
\e$B&5
\e(B/
\e$B&6
\e(B/
\e$B&7
\e(B/
\e$B&8
\e(B/\n"
689 "Russia /
\e$B'!
\e(B/
\e$B'"
\e(B/
\e$B'#
\e(B/
\e$B'$
\e(B/
\e$B'%
\e(B/
\e$B'&
\e(B/
\e$B''
\e(B/
\e$B'(
\e(B/
\e$B')
\e(B/
\e$B'*
\e(B/
\e$B'+
\e(B/
\e$B',
\e(B/
\e$B'-
\e(B/
\e$B'.
\e(B/
\e$B'/
\e(B/
\e$B'0
\e(B/"
690 "
\e$B'1
\e(B/
\e$B'2
\e(B/
\e$B'3
\e(B/
\e$B'4
\e(B/
\e$B'5
\e(B/
\e$B'6
\e(B/
\e$B'7
\e(B/
\e$B'8
\e(B/
\e$B'9
\e(B/
\e$B':
\e(B/
\e$B';
\e(B/
\e$B'<
\e(B/
\e$B'=
\e(B/
\e$B'>
\e(B/
\e$B'?
\e(B/
\e$B'@
\e(B/
\e$B'A
\e(B/\n"
691 "greek /
\e$B&A
\e(B/
\e$B&B
\e(B/
\e$B&C
\e(B/
\e$B&D
\e(B/
\e$B&E
\e(B/
\e$B&F
\e(B/
\e$B&G
\e(B/
\e$B&H
\e(B/
\e$B&I
\e(B/
\e$B&J
\e(B/
\e$B&K
\e(B/
\e$B&L
\e(B/
\e$B&M
\e(B/
\e$B&N
\e(B/
\e$B&O
\e(B/
\e$B&P
\e(B/"
692 "
\e$B&Q
\e(B/
\e$B&R
\e(B/
\e$B&S
\e(B/
\e$B&T
\e(B/
\e$B&U
\e(B/
\e$B&V
\e(B/
\e$B&W
\e(B/
\e$B&X
\e(B/\n"
693 "russia /
\e$B'Q
\e(B/
\e$B'R
\e(B/
\e$B'S
\e(B/
\e$B'T
\e(B/
\e$B'U
\e(B/
\e$B'V
\e(B/
\e$B'W
\e(B/
\e$B'X
\e(B/
\e$B'Y
\e(B/
\e$B'Z
\e(B/
\e$B'[
\e(B/
\e$B'\
\e(B/
\e$B']
\e(B/
\e$B'^
\e(B/
\e$B'_
\e(B/
\e$B'`
\e(B/"
694 "
\e$B'a
\e(B/
\e$B'b
\e(B/
\e$B'c
\e(B/
\e$B'd
\e(B/
\e$B'e
\e(B/
\e$B'f
\e(B/
\e$B'g
\e(B/
\e$B'h
\e(B/
\e$B'i
\e(B/
\e$B'j
\e(B/
\e$B'k
\e(B/
\e$B'l
\e(B/
\e$B'm
\e(B/
\e$B'n
\e(B/
\e$B'o
\e(B/
\e$B'p
\e(B/
\e$B'q
\e(B/\n"
695 "
\e$B$$$A$*$/
\e(B /
\e$B0l2/
\e(B/\n"
696 "
\e$B$*$*$5$+
\e(B /
\e$BBg:e
\e(B/\n"
697 "
\e$B$+$J
\e(B /
\e$B2>L>
\e(B/\n"
698 "
\e$B$+$s$8
\e(B /
\e$B4A;z
\e(B/
\e$B44;v
\e(B/
\e$B4F;v
\e(B/\n"
699 "
\e$B$,$/$7$e$&
\e(B /
\e$B3X=,
\e(B/\n"
700 "
\e$B$-
\e(B /
\e$B4p
\e(B/
\e$B5-
\e(B/
\e$B5$
\e(B/
\e$BLZ
\e(B/
\e$B5"
\e(B/\n"
701 "
\e$B$-$4$&
\e(B /
\e$B5-9f
\e(B/
\e$B!"
\e(B/
\e$B!#
\e(B/
\e$B!$
\e(B/
\e$B!%
\e(B/
\e$B!&
\e(B/
\e$B!'
\e(B/
\e$B!(
\e(B/
\e$B!)
\e(B/
\e$B!*
\e(B/
\e$B!+
\e(B/
\e$B!,
\e(B/
\e$B!-
\e(B/
\e$B!.
\e(B/
\e$B!/
\e(B/"
702 "
\e$B!0
\e(B/
\e$B!1
\e(B/
\e$B!2
\e(B/
\e$B!3
\e(B/
\e$B!4
\e(B/
\e$B!5
\e(B/
\e$B!6
\e(B/
\e$B!7
\e(B/
\e$B!8
\e(B/
\e$B!9
\e(B/
\e$B!:
\e(B/
\e$B!;
\e(B/
\e$B!<
\e(B/
\e$B!=
\e(B/
\e$B!>
\e(B/
\e$B!?
\e(B/
\e$B!@
\e(B/
\e$B!A
\e(B/"
703 "
\e$B!B
\e(B/
\e$B!C
\e(B/
\e$B!D
\e(B/
\e$B!E
\e(B/
\e$B!F
\e(B/
\e$B!G
\e(B/
\e$B!H
\e(B/
\e$B!I
\e(B/
\e$B!J
\e(B/
\e$B!K
\e(B/
\e$B!L
\e(B/
\e$B!M
\e(B/
\e$B!N
\e(B/
\e$B!O
\e(B/
\e$B!P
\e(B/
\e$B!Q
\e(B/
\e$B!R
\e(B/
\e$B!S
\e(B/"
704 "
\e$B!T
\e(B/
\e$B!U
\e(B/
\e$B!V
\e(B/
\e$B![
\e(B/
\e$B!X
\e(B/
\e$B!Y
\e(B/
\e$B!Z
\e(B/
\e$B![
\e(B/
\e$B!\
\e(B/
\e$B!]
\e(B/
\e$B!^
\e(B/
\e$B!_
\e(B/
\e$B!`
\e(B/
\e$B!a
\e(B/
\e$B!b
\e(B/
\e$B!c
\e(B/
\e$B!d
\e(B/
\e$B!e
\e(B/
\e$B!f
\e(B/"
705 "
\e$B!g
\e(B/
\e$B!h
\e(B/
\e$B!i
\e(B/
\e$B!j
\e(B/
\e$B!k
\e(B/
\e$B!l
\e(B/
\e$B!m
\e(B/
\e$B!n
\e(B/
\e$B!o
\e(B/
\e$B!p
\e(B/
\e$B!q
\e(B/
\e$B!r
\e(B/
\e$B!s
\e(B/
\e$B!t
\e(B/
\e$B!u
\e(B/
\e$B!v
\e(B/
\e$B!w
\e(B/
\e$B!x
\e(B/
\e$B!y
\e(B/"
706 "
\e$B!z
\e(B/
\e$B!{
\e(B/
\e$B!|
\e(B/
\e$B!}
\e(B/
\e$B!~
\e(B/
\e$B"!
\e(B/
\e$B""
\e(B/
\e$B"#
\e(B/
\e$B"$
\e(B/
\e$B"%
\e(B/
\e$B"&
\e(B/
\e$B"'
\e(B/
\e$B"(
\e(B/
\e$B")
\e(B/
\e$B"*
\e(B/
\e$B"+
\e(B/
\e$B",
\e(B/
\e$B"-
\e(B/"
708 "
\e$B$-$g$&$H
\e(B /
\e$B5~ET
\e(B/\n"
709 "
\e$B$3$&$Y
\e(B /
\e$B?@8M
\e(B/\n"
710 "
\e$B$4
\e(B /
\e$B8^
\e(B/
\e$B8_
\e(B/
\e$B8`
\e(B/
\e$B8a
\e(B/
\e$B8b
\e(B/
\e$B8c
\e(B/
\e$B8d
\e(B/
\e$B8e
\e(B/
\e$B8f
\e(B/
\e$B8g
\e(B/
\e$B8h
\e(B/
\e$B8i
\e(B/
\e$B8j
\e(B/
\e$B8k
\e(B/
\e$B8l
\e(B/
\e$B8m
\e(B/
\e$B8n
\e(B/"
712 "
\e$B$5$$
\e(B /
\e$B:Y
\e(B/
\e$B:G
\e(B/
\e$B:F
\e(B/\n"
713 "
\e$B$5$$$7$g
\e(B /
\e$B:G=i
\e(B/\n"
714 "
\e$B$5$$$H$&
\e(B /
\e$B:XF#
\e(B/\n"
715 "
\e$B$5$H$&
\e(B /
\e$B:4F#
\e(B/\n"
716 "
\e$B$7$e$&$j$g$&
\e(B /
\e$B=*N;
\e(B/\n"
717 "
\e$B$8$7$g
\e(B /
\e$B<-=q
\e(B/
\e$BCO=j
\e(B/\n"
718 "
\e$B$8$s$3$&
\e(B /
\e$B?M8}
\e(B/\n"
719 "
\e$B$;$s$?$/
\e(B /
\e$BA*Br
\e(B/
\e$B@vBu
\e(B/\n"
720 "
\e$B$=$&
\e(B /
\e$BAv
\e(B/\n"
721 "
\e$B$@$$
\e(B /
\e$BBg
\e(B/
\e$BBh
\e(B/
\e$BBe
\e(B/\n"
722 "
\e$B$F$-
\e(B /
\e$BE*
\e(B/
\e$BE(
\e(B/
\e$BE)
\e(B/
\e$BE,
\e(B/
\e$BE&
\e(B/\n"
723 "
\e$B$H$&
\e(B /
\e$BEl
\e(B/\n"
724 "
\e$B$H$&$[$/
\e(B /
\e$BElKL
\e(B/\n"
725 "
\e$B$H$&$m$/
\e(B /
\e$BEPO?
\e(B/\n"
726 "
\e$B$H$&$m$/
\e(B /
\e$BEPO?
\e(B/\n"
727 "
\e$B$I$&
\e(B /
\e$BF0
\e(B/\n"
728 "
\e$B$K$e$&$j$g$/
\e(B /
\e$BF~NO
\e(B/\n"
729 "
\e$B$R$3$&$-
\e(B /
\e$BHt9T5!
\e(B/\n"
730 "
\e$B$X$s$+$s
\e(B /
\e$BJQ49
\e(B/\n"
731 "
\e$B$[$/
\e(B /
\e$BKL
\e(B/\n"
732 "
\e$B$_$g$&$8
\e(B /
\e$BL>;z
\e(B/\n"
733 "
\e$B$h$&$$
\e(B /
\e$BMF0W
\e(B/
\e$BMQ0U
\e(B/\n" ))
734 (skk-setup-jisyo-buffer) ))
736 (defun skktut-setup-working-buffer ()
739 (set-buffer (get-buffer-create skktut-working-buffer))
740 (buffer-disable-undo (current-buffer))
741 (skktut-localize-and-init-variables)
742 (skktut-erase-buffer) ; fail safe.
743 (insert-file-contents skk-tut-file)
744 (goto-char (point-min))
745 (setq skktut-japanese-tut (looking-at ";; SKK Japanese"))
746 (while (re-search-forward "^>> \\((.+)\\)$" nil t nil)
747 (setq sexp (buffer-substring-no-properties (match-beginning 1)
749 (delete-region (match-beginning 1) (match-end 1))
750 ;; insert evaluated string instead of lisp program.
751 (insert (eval (car (read-from-string sexp)))) )
752 (goto-char (point-min))
753 (if skk-tut-use-face (skktut-colored)) )))
755 (defun skktut-setup-question-buffer ()
757 (set-buffer (get-buffer-create skktut-question-buffer))
758 (buffer-disable-undo (current-buffer))
759 (skktut-erase-buffer) ; fail safe.
760 (setq buffer-read-only t)
761 (skktut-get-question-page skktut-question-count)
762 (local-set-key "\C-xq" 'skk-tutorial-quit)
763 (local-set-key "\C-xt" 'skk-tutorial-again)
764 (local-set-key "\C-xj" 'skktut-error-command)
765 (local-set-key "\C-xn" 'skktut-next-question)
766 (local-set-key "\C-xs" 'skktut-skip-question) ))
768 (defun skktut-setup-answer-buffer ()
770 (set-buffer (get-buffer-create skktut-answer-buffer))
771 ;; users may use undo.
772 ;; (buffer-disable-undo (current-buffer))
773 ;; skktut-answer-buffer
\e$B$N
\e(B skk.el
\e$B$NJQ?t$r%P%C%U%!%m!<%+%k2=$7!"=i4|2=$9$k!#
\e(B
774 (skktut-localize-and-init-variables)
775 (local-set-key "\C-xq" 'skk-tutorial-quit)
776 (local-set-key "\C-xt" 'skk-tutorial-again)
777 (local-set-key "\C-xj" 'skktut-error-command)
778 (local-set-key "\C-xn" 'skktut-next-question)
779 (local-set-key "\C-xs" 'skktut-skip-question)
781 (skktut-next-answer-buffer) ))
783 (defun skktut-localize-and-init-variables ()
784 ;;
\e$B%f!<%6!<$,
\e(B skk.el
\e$B$NJQ?t$r%+%9%?%^%$%:$7$F$$$k2DG=@-$,$"$k$N$G!"%+%l%s%H
\e(B
785 ;;
\e$B%P%C%U%!$N
\e(B skk.el
\e$B$NJQ?t$r%P%C%U%!%m!<%+%k2=$7!"=i4|2=$9$k!#
\e(B
786 (let ((alist skktut-init-variables-alist)
789 (setq v (car (car alist)))
790 (make-local-variable v)
791 (set v (eval (cdr (car alist))))
792 (setq alist (cdr alist)) )))
794 (defun skktut-erase-buffer ()
795 (let ((inhibit-read-only t)
797 (set-text-properties (point-min) (point-max) nil)
800 (defun skktut-before-move-to-other-frame ()
801 (if (skktut-yes-or-no-p "Tutorial
\e$B$r=*N;$7$^$9!#$h$m$7$$$G$9$M!)
\e(B "
803 (skk-tutorial-quit 'now)
804 (skktut-error "Tutorial
\e$B$r=*N;$;$:$KB>$N%U%l!<%`$K0\$k$3$H$O$G$-$^$;$s!#
\e(B"
805 "Quit tutorial or you cannot move to other frame" )))
807 (defun skktut-colored ()
808 ;; face
\e$B$r
\e(B Text Property
\e$B$K$7$F$*$/$H%F%-%9%H$r%3%T!<$7$?$H$-$K0l=o$K%3%T!<$G
\e(B
809 ;;
\e$B$-$k$N$G9%ET9g!#
\e(B
810 (while (re-search-forward "
\e$B"'
\e(B\\([^
\e$B![
\e(B
\e$B$!
\e(B-
\e$B$s%!
\e(B-
\e$B%s
\e(B]+\\)" nil t nil)
811 (put-text-property (match-beginning 1) (match-end 1) 'face
813 (goto-char (point-min))
814 (while (re-search-forward "^==.+==$" nil t nil)
815 (put-text-property (match-beginning 0) (match-end 0)
816 'face skk-tut-section-face ))
817 (goto-char (point-min))
818 (while (re-search-forward "^!!.+" nil t nil)
819 (put-text-property (match-beginning 0) (match-end 0)
820 'face skk-tut-do-it-face ))
821 (goto-char (point-min))
822 (while (re-search-forward "^>> \\(.+\\)$" nil t nil)
823 (put-text-property (match-beginning 1) (match-end 1)
824 'face skk-tut-question-face ))
825 (if skktut-japanese-tut
827 (goto-char (point-min))
828 (while (re-search-forward "Hint: .*$" nil t nil)
829 (put-text-property (match-beginning 0) (match-end 0)
830 'face skk-tut-hint-face ))))
832 (defun skktut-next-answer-buffer ()
835 ;; first get right answer in `skktut-question-buffer'.
836 (set-buffer skktut-question-buffer)
837 (goto-char (point-max))
838 (search-backward "\n>>")
840 (setq skktut-right-answer
841 (buffer-substring-no-properties
843 (skk-save-point (end-of-line) (point)) )))
844 ;; not to save point.
845 (let ((cbuf (current-buffer))
848 (let ((plist (cons (if (eq skk-emacs-type 'xemacs)
851 '(t intangible t read-only t) )))
852 ;; secondary make a new answer buffer.
853 (set-buffer skktut-answer-buffer)
854 (skktut-erase-buffer)
856 (add-text-properties (point-min) (- (point) 2) plist)
859 (if skktut-japanese-tut
860 (concat "*
\e$BEz$,$G$-$?$i
\e(B `C-x n';
\e$BESCf$G$d$a$k$K$O
\e(B `C-x q'"
861 (if (= skktut-question-count 37) " *"
862 ";
\e$B%9%-%C%W$9$k$K$O
\e(B`C-x s' *" ))
863 (concat "* For next question `C-x n'; to quit `C-x q'"
864 (if (= skktut-question-count 37) " *"
865 "; to skip this question `C-x s' *" ))))
867 (put-text-property p (point) 'face skk-tut-key-bind-face) )
868 (add-text-properties p (point) plist)
869 (goto-char (+ (point-min) 3)))
870 (set-buffer cbuf) ))))
872 (defun skktut-get-question-page (page)
875 (set-buffer skktut-working-buffer)
877 (goto-char (point-min))
878 (search-forward "--\n" nil t page)
879 (if (looking-at ";") ; lisp program exists.
885 (eval-region pos (point) nil)
887 (if (not skktut-tutorial-end)
890 (search-forward "\n>>")
892 (setq str (buffer-substring pos (point)))
893 (set-buffer skktut-question-buffer)
894 (skktut-erase-buffer)
895 (let (buffer-read-only)
897 (setq mode-line-buffer-identification
898 (concat "
\e$B#S#K#K%A%e!<%H%j%"%k
\e(B:
\e$B!NLd
\e(B "
899 (number-to-string page)
900 "
\e$B!O
\e(B
\e$B!J;D$j
\e(B "
901 (number-to-string (- skktut-question-numbers page))
903 (set-buffer-modified-p nil)
904 (force-mode-line-update 'all) )))))))
906 ;; The following two functions are tricky, since they are executed by
907 ;; `eval-region' in skktut-working-buffer.
908 (defun skktut-today ()
913 (search-forward "\n>> ")
914 (if (re-search-forward "
\e$B!V
\e(B.*
\e$B!W
\e(B" (skk-save-point (end-of-line) (point)) t)
915 (delete-region (match-beginning 0) (match-end 0)) )
917 (insert (concat "
\e$B!V$-$g$&$O!"
\e(B" (skk-current-date) "
\e$B$G$9!#!W
\e(B"))
918 (narrow-to-region (point-min) (point))
920 (put-text-property p (point) 'face skk-tut-question-face) )))))
922 (defun skktut-end-tutorial ()
923 (switch-to-buffer skktut-question-buffer)
924 (delete-other-windows)
925 (skktut-erase-buffer)
926 (let (buffer-read-only)
927 (goto-char (point-min))
929 (if skktut-japanese-tut
930 (concat "SKK
\e$B%A%e!<%H%j%"%k$O$3$l$G=*$j$G$9!#
\e(B\n\n"
931 "SKK 10.x
\e$B$K4X$9$k<ALd!"%3%a%s%H!"
\e(Bbug report
\e$BEy$O
\e(B\n\n"
932 "\tskk@ring.gr.jp\n\n"
933 "
\e$BKx$*Aw$j2<$5$$!#$J$*!"$3$N%"%I%l%9$O
\e(B SKK Ring Server Openlab
\e$B%a%$%j%s%0
\e(B"
934 "
\e$B%j%9%H$N%"%I%l%9$G$9!#
\e(B\n"
935 "
\e$B2sEz$ODL>o$3$N%"%I%l%9$KBP$7$F$J$5$l$k$N$G!"%a%s%P!<$G$J$$
\e(B"
936 "
\e$BJ}$O$=$N;]$rL@5-$7$F
\e(B\n"
937 "
\e$B%a!<%k$r$*Aw$j$/$@$5$$!#
\e(BSKK Ring Server Openlab
\e$B%a%$%j%s%0%j%9%H$X;2
\e(B"
938 "
\e$B2C4uK>$N>l9g$O
\e(B\n\n"
939 "\tskk-request@ring.gr.jp\n\n"
940 "
\e$B$X%a!<%k$r$*Aw$j$/$@$5$$
\e(B\n\n"
941 "!!
\e$B:G8e$K
\e(B <return>
\e$B%-!<$r2!$7$F$/$@$5$$!#
\e(B" )
942 (concat "Now we end the SKK tutorial.\n\n"
943 "Please send comments, questions and bug reports on SKK "
944 "version 10.x to:\n\n"
945 "\tskk@ring.gr.jp\n\n"
946 "This is the address of the SKK Ring Server Openlab mailing list, and "
947 "normally the responces\n"
948 "will be sent only to the ML members. So, if you are not a ML "
949 "member, please say so \n"
950 "in your mail. If you are interested in joining the SKK Ring Server "
951 "Openlab ML, send a mail to:\n\n"
952 "\tskk-request@ring.gr.jp\n\n"
953 "!! Hit <return> key when you are ready." )))
956 (goto-char (point-min))
957 (re-search-forward "^!!.+" nil t nil)
958 (put-text-property (match-beginning 0) (match-end 0)
959 'face skk-tut-do-it-face )))
960 (while (not skktut-tutorial-end)
962 (let* ((event (skk-read-event))
963 (char (event-to-character event)) )
964 (skktut-message "<return>
\e$B%-!<$r2!$7$F$/$@$5$$
\e(B" "Hit <return> key")
965 (if (and char (eq ?\C-m char))
966 (setq skktut-tutorial-end t)
967 ;;(skk-unread-event event)
972 ;;; skk-tut.el ends here