ddskk-15.2/0000755000570400056700000000000012434434722012607 5ustar kitamotoopenlabddskk-15.2/dic/0000755000570400056700000000000012434434721013345 5ustar kitamotoopenlabddskk-15.2/dic/README0000644000570400056700000000072410664334347014236 0ustar kitamotoopenlab$B$3$N%G%#%l%/%H%j$K(B SKK-JISYO.* $B$r%3%T!<$9$k$H(B skk $B$N%$%s%9%H!<%k$N:]!"(B $B%$%s%9%H!<%i$,<-=q$bE,@Z$J>l=j$K%$%s%9%H!<%k$7!"(Bskk-setup.el $B$K$=$N<-(B $B=q$N@_Dj$r9T$J$$$^$9!#(B $B4{$K<-=q$,%$%s%9%H!<%k$5$l$F$$$k>l9g$O!"(Bskk $B$r:F%$%s%9%H!<%k$9$k:]$G$b(B $B$3$3$K<-=q$r:FEY%3%T!<$9$kI,MW$O$"$j$^$;$s!#$=$N>l9g!"%$%s%9%H!<%i$O!"(B $B<-=q$,%$%s%9%H!<%k$5$l$k$Y$-I8=`E*$J%G%#%l%/%H%j$r%5!<%A$7!"(B skk-setup.el $B$N@_Dj$r9T$J$$$^$9!#(B ddskk-15.2/.cvsignore0000644000570400056700000000024607351403420014602 0ustar kitamotoopenlab*.BAK cvs.hist cvs.log leim-list.el make.log not_used skk-autoloads.el skk-cursor2.el skk-cursor3.el skk-dic.el skk-exsearch.el skk-exserv.el skk-setup.el skk-w3m.el ddskk-15.2/ChangeLog0000644000570400056700000003415412434434534014371 0ustar kitamotoopenlab2014-11-24 Tsuyoshi Kitamoto * Version 15.2 Oshamambe Released. * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.2. 2014-10-21 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2014-10-19 Tsuyoshi Kitamoto * skk-vars.el (skk-annotation-browser-function): Fix docstring. * doc/skk.texi: Update. 2014-10-18 Tsuyoshi Kitamoto * skk-vars.el (skk-use-auto-enclose-pair-of-region): New variable. * skk.el (skk-kana-input, skk-jisx0208-latin-insert): Use it. (skk-insert-str): Fix docstring. 2014-10-13 Tsuyoshi Kitamoto * skk-vars.el (skk-annotation-browser-function): New variable. `browse-url' $B$N$[$+(B `eww-browse-url' $B$b;HMQ2DG=$K(B. * skk-annotation.el (skk-annotation-wait-for-input): Use it. * doc/skk.texi: Update. 2014-10-09 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.1.92. 2014-10-09 Ken Okada * skk.el (skk-setup-modeline): [skk 7790] `mode-line-format' $B$r(B nil $B$H$7$?(B $B>l9g$NBP:v(B. 2014-10-08 Tsuyoshi Kitamoto * skk-annotation.el (skkannot-emacs-24_3-or-later): Around eval-and-compile() for XEmacs (thanks $BLZ2 * skk-emacs.el (skk-tooltip-show-1): tooltip-set-param() $B$KBe$($F(B skk-put-alist() $B$r;HMQ(B. 2014-09-22 Tsuyoshi Kitamoto * doc/skk.texi (skk-show-mode-inline-face): Fix. 2014-09-19 Tsuyoshi Kitamoto * skk-vars.el (skk-show-mode-enable): New variable. $B%A%e!<%H%j%"%k * skk-tut.el (skktut-next-answer-buffer): scroll-other-window() $B$rDI2C(B. 2014-09-15 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2014-09-13 Tsuyoshi Kitamoto * skk-vars.el: Update Docstring. 2014-09-11 Tsuyoshi Kitamoto * SKK-MK (SKK_DATADIR): 2014-09-07 $B$ND{@5(B. data-directory $B$N(B /skk $B%G%#%l%/%H%j(B. * doc/skk.texi: $BJQ?t(B skk-icon $B$K$D$$$F5-:\(B. 2014-09-09 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.1.91. 2014-09-07 Tsuyoshi Kitamoto * SKK-MK (install-prefix, SKK_DATADIR, SKK_INFODIR): NTEmacs 24.4 $B8~$1$ND4@0(B (see Emacs News: Changes in Emacs 24.2 on Non-Free Opetating System). 2014-09-06 Tsuyoshi Kitamoto * skk.el (skk-save-jisyo): $B8D?M<-=q$,$J$1$l$P%(%i!<$H$J$j!"FC$K(B kill-emacs-hook $B$+$i8F$P$l$?>l9g$O(B emacs $B$r=*N;$G$-$J$/$J$k$?$a(B $B8D?M<-=q$NB8H](B (file-exists-p skk-jisyo) $B$rDI2C(B. 2014-06-17 Tsuyoshi Kitamoto * SKK-CFG: Replace from `Mac OS X' to `Apple OS X' in comments. * doc/skk.texi: Update. 2014-06-12 Tsuyoshi Kitamoto * skk-annotation.el, skk-emacs.el, skk-vars.el, skk.el, doc/skk.texi: Replace from `Mac OS X' to `Apple OS X' in comments. 2014-06-08 Tetsuo Tsukamoto * skk-annotation.el (skkannot-wikipedia-test-html-tag): Don't call gzip if url.el is handling the content encoding itself. 2014-04-27 Tsuyoshi Kitamoto * SKK-MK: Display Emacs version on interactive installer. * doc/skk.texi: Update. 2014-04-19 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2014-04-14 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.1.90. 2014-04-12 Tsuyoshi Kitamoto * skk.el (skk-wrap-newline-command): Fix docstring. Wrap `org-insert-heading'. 2014-03-30 Tsuyoshi Kitamoto * doc/skk.texi: Add Yuichi Higashi. 2014-03-09 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-12-15 Tetsuo Tsukamoto * skk-annotation.el (skkannot-emacs-24_3-or-later) (skkannot-py-check-comint-prompt): New functions. (skk-annotation-start-python): Workaround for Emacs 24.3. 2013-11-11 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-11-08 Tsuyoshi Kitamoto * skk-vars.el (skk-rom-kana-base-rule-list): Add new rule. `z:' to `$(O!,(B' $BH>ByE@(B(1$B6h(B12$BE@(B), `z;' to `$(O!+(B' $BByE@(B(1$B6h(B11$BE@(B). 2013-11-04 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-11-02 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk-isearch.el (skk-isearch-setup-keymap, skk-isearch-start-henkan): fboundp() $B$G(B isearch-other-control-char $B$rH=CG$9$k$h$&JQ99(B. isearch-other-control-char / isearch-other-meta-char $B$O(B GNU Emacs 24.3 $B$^$G(B[ChangeLog 2013-10-08]. 2013-10-31 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.1.54. 2013-10-31 Tsuyoshi Kitamoto * skk-isearch.el (skk-isearch-redo-function): $BJQ?t(B skk-dcomp-multiple-activate $B$r(B $B0l;~E*$K(B nil $B$H$9$k(B. isearch $BCf$N$+$J4A;zJQ49$O!"(Bskk-isearch-redo-function() $BFb$N(B command-execute() $B$K$F(B skk-insert() $B7PM3$G(B skk-dcomp-multiple-show() $B$KC)$jCe$/(B. skk-dcomp-multiple-show() $B$O=>A0$+$i(B minibuffer $BH=CG(B skk-in-minibuffer-p() $B$,9MN8$5$l$F$$$k$,!"8F$S=P$785$N(B skk-isearch-redo-function() $B$G$O(B with-current-buffer skk-isearch-working-buffer $B4D6-2<$G$"$k$?$a(B skk-in-minibuffer-p() $B$O(B nil $B$G$"$k(B. $B7k2L$H$7$F(B minibuffer $B$G$"$k$K$b4X$o$i$:(B skk-dcomp-multiple-show() $B$rC5n$7?T$7$?$H$-!"$9$J$o$A(B isearch-cmds $B$,(B nil $B$H$J$C$?$H$-$N9MN8ITB-$G%(%i!<$,@8$8$F$$$?(B. 2013-10-24 Tsuyoshi Kitamoto * skk-isearch.el: Add comment for `isearch-other-control-char'. * skk.el (skk-make-indicator-alist-1): Add comment. 2013-10-15 Tsuyoshi Kitamoto * skk-develop.el (before-init-hook): Use `lisp-el-font-lock-keywords-2' instead of `lisp-font-lock-keywords-2'. 2013-10-10 Tsuyoshi Kitamoto * skk-develop.el: lisp-font-lock-keywords-2 $B$K4X$9$k%3%a%s%H(B. 2013-09-03 Tsuyoshi Kitamoto * doc/skk.texi (azik): Update. 2013-09-02 Tsuyoshi Kitamoto * doc/skk.texi (azik): Update. 2013-09-01 Tsuyoshi Kitamoto * skk-vars.el (skk-azik-keyboard-type): $B%3%a%s%H$rHy=$@5(B. * doc/skk.texi: $BF1>e(B. 2013-08-31 Tsuyoshi Kitamoto * doc/skk.texi (azik): Update. 2013-08-27 Tsuyoshi Kitamoto * skk-vars.el (skk-rom-kana-base-rule-list): Add key stroke z* to `$B"((B', z0 to `$B!{(B' and z@ to `$B!}(B'. 2013-08-24 Tsuyoshi Kitamoto * skk-vars.el (skk-show-mode-inline-overlays): New internal variable. (skk-show-mode-inline-face): New variable. * skk-show-mode.el (skk-show-mode-inline-1): New function. (skk-show-mode-inline): Use it. * doc/skk.texi: Update. 2013-08-24 Tsuyoshi Kitamoto * skk-vars.el (skk-dcomp-face, skk-dcomp-multiple-face) (skk-dcomp-multiple-trailing-face) (skk-dcomp-multiple-selected-face, skk-display-code-prompt-face) (skk-display-code-char-face, skk-tut-section-face) (skk-tut-do-it-face, skk-tut-question-face) (skk-tut-key-bind-face, skk-tut-hint-face): defface() $B$NI=5-$rE}0l(B. 2013-08-21 Tsuyoshi Kitamoto * skk.el (skk-toggle-characters): $B%H%0%kJQ49$N>l9g$O(B skk-show-mode $B$r(B $BI=<($7$J$$(B. 2013-08-20 Tsuyoshi Kitamoto * skk.el (skk-mode-exit): skk-mode-exit() $B * skk-kcode.el (skk-display-code): Use skk-tooltip-show-at-point() instead of `funcall skk-tooltip-function'. 2013-08-17 Tsuyoshi Kitamoto * skk-vars.el (skk-candidate-buffer-background-color-odd): New variable. * skk.el (skk-henkan-show-candidates-buffer): Use it. * doc/skk.texi: Update. 2013-08-16 Tsuyoshi Kitamoto * skk-vars.el (skk-inline-show-background-color-odd): New variable. * skk-inline.el (skk-inline-show-vertically): Use it. * doc/skk.texi: Update. 2013-08-13 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.1.53. 2013-08-13 Tsuyoshi Kitamoto * skk-vars.el (skk-candidate-buffer-display-fringes) (skk-candidate-buffer-fringe-width): New variable. * skk.el (skk-henkan-show-candidates-buffer): Use it. `skk-candidate-buffer-display-fringes' $B$,(B nil $B$J$i$P!"8uJd%P%C%U%!$N(B fringe $B$r>C$9!#(B * doc/skk.texi: Update. 2013-08-11 Tsuyoshi Kitamoto * skk-vars.el (skk-use-auto-kutouten): Use function defcustom() instead of defvar(). 2013-08-10 Tsuyoshi Kitamoto * skk.el (skk-auto-kutouten): New function. * skk-vars.el (skk-rom-kana-base-rule-list): "." $B$H(B "," $B$H(B "-" $B$K$D$$$F!"(B skk-auto-kutouten() $B$r8F$S=P$9$h$&JQ99(B. (skk-use-auto-kutouten): New variable. * doc/skk.texi: Update. 2013-07-18 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-07-15 Tsuyoshi Kitamoto * skk-version.el, doc/skk.texi: Typo fixed. 2013-07-15 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk-comp.el (skk-comp-get-candidate, skk-comp-collect-kana) (skk-comp-arrange-kana-list, skk-comp-re-search-current-buffer) (skk-smart-find): Add autoload cookie. * skk-act.el: warning $BBP:v$N$?$a!"(Bskk-jisx0201{-base}-rule-list $B$r(B defvar $B$9$k!#(B * skk-azik.el: Ditto. 2013-07-13 Tsuyoshi Kitamoto * skk-vars.el (skk-display-code-method): New variable. * skk-kcode.el (skk-display-code-for-char-at-point): Use it. * doc/skk.texi: Update. 2013-07-10 Tsuyoshi Kitamoto * Makefile (cdb): Remove target. 2013-06-24 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-06-22 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.1.52. 2013-06-22 Tatsuya Kinoshita * SKK-MK (SKK-MK-generate-autoloads-el): Add coding tag. * experimental/skk-ja-names.el: Add coding tag. 2013-05-27 Tatsuya Kinoshita * bayesian/bskk: Set default encoding to "EUC-JP" for Ruby 1.9. 2013-05-26 Tatsuya Kinoshita * bayesian/bskk: To support Ruby 1.9, prevent LoadError of `jcode', prevent warning of `$KCODE', add magic comment, and use `fileutils' rather than `ftools'. 2013-04-13 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-04-07 Tatsuya Kinoshita * skk-sticky.el: Do not use `skk-sit-for'. 2013-03-29 l3msh0 <@l3msh0> * skk-xemacs.el: Fix autoload cookie. 2013-03-28 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.1.51. 2013-03-28 Tsuyoshi Kitamoto * skk-macs.el (skk-face-proportional-p): 2013-03-26 $B$N=$@5$rC(B. $B85$N>uBV$XLa$7$?(B. * skk-macs.el (skk-facep): New macro. * skk.el (skk-make-indicator-alist-1): Use skk-facep() for XEmacs. 2013-03-26 Tsuyoshi Kitamoto * SKK-MK (SKK-MK-what-where, SKK-MK-what-where-package): Display emacsen version in ddskk installation. * skk-macs.el (skk-face-proportional-p): $B0z?t$N%A%'%C%/$rDI2C(B. 2013-03-24 Tsuyoshi Kitamoto * skk-macs.el (characterp): Add comment. 2013-03-21 Tsuyoshi Kitamoto * skk-macs.el (int-char): Add comment. * skk.el (skk-compute-henkan-lists): ditto. * skk-macs.el (string-to-char-list): $BGQ;_(B. $B$3$l$,=P8=$9$k$N$O(B "defalias 'string-to-int-list 'string-to-char-list" $B$N$_(B. $B$7$?$,$C$F(B string-to-int-list $B$G * skk-jisyo-edit-mode.el (skk-edit-private-jisyo): * skk-study.el (skk-study-read): * skk-tut.el (skk-tutorial-quit): * skk.el (skk-kill-emacs-without-saving-jisyo) (skk-remove-redundant-okurigana, skk-purge-from-jisyo) (skk-reread-private-jisyo, skk-remove-common): yes-or-no-p() $B$H(B y-or-no-p() $B$N%W%m%s%W%H$NKvHx$K6uGr$rA^F~(B. * skk-macs.el (skk-message, skk-error, skk-yes-or-no-p) (skk-y-or-n-p, skk-set-marker): * skk-tut.el (skktut-message, skktut-error, skktut-yes-or-no-p): $B%P%C%/%/%*!<%H7A<0$K=q$-D>$7$?(B. 2013-03-18 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk-macs.el (skk-put-last-henkan-datum): $B$I$3$+$i$b;2>H$5$l$F(B $B$$$J$$$N$G!"$$$C$?$s:o=|(B. 2013-03-17 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.1.50. * skk-vars.el (skk-version-codename-ja): New variable. * skk-version.el (skk-version): Use it. * doc/skk.texi: Update. ;; Local Variables: ;; coding: iso-2022-7bit-ss2 ;; End: ddskk-15.2/ChangeLog.00000644000570400056700000024607611675101126014531 0ustar kitamotoopenlab1998-12-30 Mikio Nakajima * lisp/skk-kakasi.el: Require path-util.el of Apel. (skk-kakasi-command): Use `exec-installed-p'. (skk-kakasi-region): Check if skk-kakasi-command is not null variable. * lisp/skk-kcode.el (skk-kcode-charset): Typo fixed. 1998-12-27 Mikio Nakajima * lisp/skk-foreword.el (skk-background-mode): Use `skk-emacs-type'. * lisp/skk.el (skk-default-cursor-color, skk-coding-system-alist, skk-hankaku-alist, minibuffer-eyboard-quit, skk-mode, skk-kill-emacs-without-saving-jisyo, skk-change-cursor-when-ovwrt): Use `skk-emacs-type'. (skk-ovwrt-cursor-width): New user variable. (skk-change-cursor-when-ovwrt): Use `skk-ovwrt-cursor-width'. * lisp/skk-viper.el (skk-viper-normalize-map): Use `skk-emacs-type'. * lisp/skk-tut.el (skktut-init-variables-alist, skktut-enable-tutmap, skktut-next-answer-buffer): Use `skk-emacs-type'. * lisp/skk-server.el (skk-open-server): Use `skk-emacs-type'. * experimental/rdbms/skk-rdbms.el (skk-rdbms-init): Use `skk-emacs-type'. * lisp/skk-kcode.el (skk-kcode-charset, skk-kcode-charset-list, skk-display-code-for-char-at-point): Use `skk-emacs-type'. * lisp/skk-isearch.el (skk-isearch-overriding-local-map): (skk-isearch-mode-map): Use `skk-emacs-type'. * experimental/skk-attr.el (skk-attr-save): Use `skk-emacs-type'. * lisp/skk-foreword.el: (skk-xemacs, skk-mule3, skk-mule4, skk-e20): Removed. (skk-emacs-type): New internal constant. * lisp/skk.el (skk-use-look): More doc. (skk-kana-input): Apply patch from Kenji Yamashita as of Dec 18, 1998. 1998-12-25 Mikio Nakajima * lisp/skk.el: Apply patch from Murata Shuuichirou as of Dec 25, 1998 of which Message-ID: <87hfuljwv7.fsf@kotonoha.s.notwork.org>. 1998-12-23 Mikio Nakajima * lisp/skk.el (skk-coding-system-alist): Set in case of `skk-mule4'. 1998-12-22 Mikio Nakajima * lisp/skk-viper.el (skk-looking-at-jisx0208): Rename to `skk-jisx0208-p'. * lisp/skk-viper.el (viper-join-lines): Use `skk-jisx0208-p' (Regexp "\\c" cannot be used on XEmacs). 1998-12-21 Mikio Nakajima * configure.in, jisyo-tools/Makefile.am: * jisyo-tools/skkdic-expr.c: Apply patch from Takao KAWAMURA as of Dec 7, 1998. * lisp/skk.el (skk-make-temp-file, skk-compute-henkan-lists, skk-lisp-prog-p): Use `skk-str-ref' instead of `aref'. * experimental/look/skk-look.el (skk-look-ignore-case): Set default variable to `t'. (skk-look-dictionary-order, skk-look-dictionary): New user variable. 1998-12-20 Mikio Nakajima * lisp/skk.el (skk-del-char-with-pad): Use `=' to compare number. 1998-12-14 Tsukamoto Tetsuo * lisp/skk.el (skk-mode): Call `easy-menu-add' and `easy-menu-remove' for `skk-menu' when necessary for XEmacs. 1998-12-07 Mikio Nakajima * experimental/look/skk-look.el (skk-look-1): Bind `buffer-read-only' to nil. 1998-12-06 Mikio Nakajima * experimental/look/skk-look.el (skk-look-completion): Delete words which are already stacked in `skk-completion-stack' from `skk-look-completion-words'. * jisyo-tools/skkdic-count.c (count_entry): Rename to `count_words'. Output message `xxxx words' instead of `xxxx entries'. (main): Use `count_words'. 1998-12-05 Mikio Nakajima * experimental/look/skk-look.el (skk-look-1): New function. Take core part of search engine from `skk-look'. (skk-look): Use `skk-look-1'. (skk-look-completion): New function. * lisp/skk-comp.el (skk-completion-original): Use skk-look.el when `skk-use-look' is non-nil. * lisp/skk.el (skk-kakutei-save-and-init-variables): Initialize `skk-look-completion-words' when `skk-use-look' is non-nil. 1998-12-03 Mikio Nakajima * experimental/skk-look.el (skk-look-ignore-case, skk-look-use-alternate-dictionary, skk-look-termination-character, skk-look-recursive-search, skk-look-expanded-word-only): New user variable. (skk-look): Handle `skk-look-ignore-case', `skk-look-use-alternate-dictionary', `skk-look-termination-character', `skk-look-recursive-search' and `skk-look-expanded-word-only' options. Handle FILE-ERROR. * experimental/rdbms/skk-rdbms.el (skk-rdbms-private-jisyo-table, skk-rdbms-kakutei-jisyo-table, skk-rdbms-initial-jisyo-table): Use function `user-login-name' instead of variable which has the same name (XEmacs does not have such variable). 1998-12-02 Mikio Nakajima * lisp/skk.el (skk-use-look): Add doc string. * experimental/skk-look.el: Require `skk-foreword.el' and `skk-vars.el' and add `;;;###skk-autoload' cookies. (skk-look): Use `call-process' instead of `call-process-region'. (skk-look-command): Documented. * lisp/skk-tut.el (skktut-init-variables-alist): Add `skk-use-look' entry, remove `skk-num-load-hook' entry, and sort by name of variable (alphabetical order). 1998-12-01 Mikio Nakajima * lisp/skk-look.el: New file. * lisp/skk.el (skk-use-look): New user variable. (skk-search): Change for `skk-look.el'. (skk-regularize): Require skk-look.el when `skk-use-look' is non-nil. 1998-11-30 Mikio Nakajima * lisp/skk.el (skk-katakana-region, skk-hiragana-region, skk-jisx0208-latin-region skk-latin-region): Do not use `combine-after-change-calls'. 1998-11-29 Mikio Nakajima * lisp/skk-kcode.el: Apply patch from Murata Shuuichirou of which Message-ID is <87yap15bu6.fsf@kotonoha.s.notwork.org>. 1998-11-18 Hideki Sakurada * lisp/skk.el (skk-kana-input-search-function): Bug fixed. 1998-11-17 Mikio Nakajima * experimental/rdbms/skk-rdbms.el (skk-rdbms-search-jisyo-table, skk-rdbms-update-jisyo): Enable numeric conversion. * lisp/skk-foreword.el (skk-get-simply-current-candidate): Rename to `skk-get-current-candidate-simply'. 1998-11-15 Mikio Nakajima * lisp/skk.el (skk-change-marker-to-white, skk-change-marker, skk-set-henkan-point, skk-update-jisyo-original, skk-kana-input): Not to use `combine-after-change-calls'. (skk-insert): Enable lowercase + upppercase conversion. (keyboard-quit, abort-recursive-edit, minibuffer-keyboard-quit skk-delete-backward-char, skk-set-henkan-point, skk-start-henkan, skk-set-henkan-point-subr, skk-*-henkan-1): Use `skk-get-prefix' to check if `skk-prefix' is null string or not. 1998-11-14 Mikio Nakajima * Rearrange subdirectories for the official release of SKK 10 in the near future. * experimental/rdbms/skk-rdbms.el (skk-rdbms-stroke): New command. * experimental/rdbms/sql/createtbl.sql: Not to create index on yomi. PostgreSQL does not use indexes when `order by' is used. 1998-11-11 TSUMURA Tomoaki * skk.el (skk-katakana-region, skk-hiragana-region): Bug fixed. 1998-11-10 SAKAI Kiyotaka * skk.el (skk-get-jisyo-buffer): Not to set coding-system-for-read. 1998-11-09 Mikio Nakajima * skk-rdbms.el (skk-rdbms-restore-private-jisyo): New command. 1998-11-08 Mikio Nakajima * make-vars.el (skk-files): Add `skk-obsolete.el' to the list. * skk.el (abort-recursive-edit): Remove before class advice. (minibuffer-exit-hook): Remove local hook `skk-pre-command' from `pre-command-hook'. (skk-remove-minibuffer-setup-hook): New function. (minibuffer-exit-hook, abort-recursive-edit, minibuffer-keyboad-quit): Use `skk-remove-minibuffer-setup-hook'. (abort-recursive-edit, minibuffer-keyboad-quit): Call `skk-set-cursor-properly' before doing anything else. (save-buffers-kill-emacs): Revive advice. (skk-kill-emacs-without-saving-jisyo): Disable advice of `save-buffers-kill-emacs'. * skk-tut.el (skktut-ascii-mode-map): Rename to `skktut-latin-mode-map'. (skktut-init-variables-alist): Remove `skk-num-type-list', `skk-numeric-conversion-float-num' and `skk-uniq-numerals' from alist. 1998-11-07 Mikio Nakajima * skk-obsolete.el: New file. * skk-rdbms.el (skk-rdbms-SQL-search-completion-word-command): Add DISTINCT to SQL command. (skk-rdbms-SQL-search-completion-word-command): Use `skk-rdbms-SQL-wildcard'. * skk-num.el (skk-numeric-convert): Use `skk-splice-in' instead of an obsolete function `skk-middle-list'. * skk-isearch.el (skk-isearch-skk-hirakana-mode-p, skk-isearch-skk-turn-on-hirakana-mode): Rename to `skk-isearch-skk-hiragana-mode-p' and `skk-isearch-skk-turn-on-hiragana-mode' respectively. * skk.el (skk-ascii-cursor-color, skk-ascii-mode-string, skk-ascii-mode-map, skk-ascii-mode, skk-ascii-region, skk-ascii-henkan): Rename to `skk-ascii-cursor-color', `skk-latin-mode-string', `skk-latin-mode-map', `skk-latin-mode', `skk-latin-region' and `skk-latin-henkan' respectively. (skk-hirakana-mode-string, skk-hirakana-cursor-color): Rename to `skk-hirakana-mode-string' and `skk-hirakana-cursor-color' respectively. * skk-foreword.el (skk-erase-prefix): Add check if `skk-prefix' is not null string. (skk-ascii-mode-on): Rename to `skk-latin-mode-on'. (combine-after-change-execute, combine-after-change-calls): Remove. * sql/createtbl.sql: Bug fixed. 1998-11-03 Mikio Nakajima * skk-rdbms.el (skk-rdbms-public-jisyo-has-entry-p): Rename to `skk-rdbms-public-jisyo-to-be-searched'. * skk.el (skk-try-completion-key, skk-next-completion-key, skk-previous-completion-key, skk-start-henkan-key): Rename to `skk-try-completion-char', `skk-next-completion-char', `skk-previous-completion-char' and `skk-start-henkan-char' respectively and assinged relative characters to them. (keyboard-quit, abort-recursive-edit): Bug fixed in their advices. (skk-submit-bug-report): Bug fixed. (skk-j-mode-map): Not define `skk-previous-candidate' to be able to define `skk-previous-candidate-char' in `skk-init-file'. (skk-mode): Define `skk-previous-candidate' key bind in `skk-j-mode-map'. (skk-zenkaku-mode, skk-zenkaku-mode-on, skk-zenkaku-insert, skk-zenkaku-region, skk-zenkaku-henkan, skk-zenkaku-mode-string, skk-zenkaku-vector, skk-zenkaku-cursor-color, skk-zenkaku-mode-map, skk-default-zenkaku-vector): Rename to `skk-jisx0208-latin-mode', `skk-jisx0208-latin-mode-on', `skk-jisx0208-latin-insert', `skk-jisx0208-latin-region', `skk-jisx0208-latin-henkan', `skk-jisx0208-latin-mode-string', `skk-jisx0208-latin-vector', `skk-jisx0208-latin-cursor-color', `skk-jisx0208-latin-mode-map' and `skk-default-jisx0208-latin-vector' respectively. (skk-setup-minibuffer) : Invoke `skk-jisx0208-latin-mode-on' when `skk-minibuffer-origin-mode' is equal to `jisx0208-latin'. (skk-toggle-kana): Invoke `skk-jisx0208-latin-henkan' when CHAR is equal to `jisx0208-latin'. (skk-what-char-type): Return `jisx0208-latin' symbol when looking at jisx0208 latin characters. (skk-backward-and-set-henkan-point-1): Skip jisx0208 characters when TYPE is equal to `jisx0208-latin' symbol. (minibuffer-exit-hook): Remove a lambda which adds `skk-pre-command' to `pre-command-hook' as a local hook. (skk-start-henkan): Simply call `skk-kana-cleanup' instead of processing unfixed skk-prefix internally. (skk-public-jisyo-has-entry-p-function): Rename to `skk-public-jisyo-to-be-searched-function'. (skk-public-jisyo-has-entry-p-original): Rename to `skk-public-jisyo-to-be-searched-original'. * skk-foreword.el (skk-current-insert-mode): Return `jisx0208-latin' symbol when `skk-jisx0208-latin-mode' is non-nil. (skk-alpha-char-p): Rename to `skk-ascii-char-p'. (skk-erase-prefix): Slightly simplify. * skk-isearch.el (skk-isearch-skk-jix0208-latin-mode-p): Rename to `skk-isearch-skk-jisx0208-latin-mode-p'. Maybe it's typo. ^ (skk-isearch-newline): Use `skk-isearch-turn-on-skk-mode'. 1998-11-02 Mikio Nakajima * skk-rdbms.el (skk-rdbms-SQL-search-kakutei-jisyo-command): Remove. (skk-rdbms-SQL-search-publuc-jisyo-command): Rename to `skk-rdbms-SQL-search-jisyo-command'. 1998-11-01 Mikio Nakajima * skk-rdbms.el (skk-rdbms-SQL-delete-command, skk-rdbms-SQL-regexp-delete-command): Check OKURIARI field also. (skk-rdbms-searching-table, skk-rdbms-cutoff-output-function, skk-rdbms-cutoff-output-function-4): Remove. (skk-rdbms-cutoff-output-function-2, skk-rdbms-cutoff-output-function-3): Rename to `skk-rdbms-cutoff-output-function' and `skk-rdbms-cutoff-output-function-2' respectively. (skk-rdbms-init): Message verbosely. (skk-rdbms-search-jisyo-table, skk-rdbms-search-kakutei-jisyo-table, skk-rdbms-sahen-search-1, skk-rdbms-busyu-henkan): Use new `skk-rdbms-cutoff-output-function' and simplify. (skk-rdbms-count-jisyo-candidates): Use new `skk-rdbms-cutoff-output-function-2'. * awk/dicconv.awk: Bug fixed. 1998-10-31 Mikio Nakajima * skk-rdbms.el (skk-rdbms-save-jisyo-function): Check whether `skk-rdbms-private-jisyo-dump' exists or not. * skk-kakasi.el (skk-use-kakasi): Set Default value to `t' simply. (skk-kakasi-command): New user variable. (skk-kakasi-region): Use `skk-kakasi-command'. (skk-gyakubiki-region, skk-gyakubiki-katakana-region, skk-hurigana-region, skk-hurigana-katakana-region, skk-romaji-region): Use `insert-and-inherit' instead of `insert'. * skk-gadget.el (skk-current-date): Use `=' to compare number. Use `?\040' instead of `32'. 1998-10-30 Mikio Nakajima * skk-isearch.el (skk-isearch-delete-char): Call `delete-backward-char' if skk-prefix is null string otherwise `skk-erase-prefix'. 1998-10-29 TSUMURA Tomoaki * skk.el (skk-compute-henkan-key2): Bug fixed. 1998-10-28 TSUMURA Tomoaki * skk.el (skk-hiragana-to-katakana, skk-katakana-to-hiragana): Use `mapconcat' for Emacs 19 compatibility. * skk.el (skk-katakana-region, skk-hiragana-region): Bug fixed. 1998-10-28 Mikio Nakajima * skk-foreword.el (defun-soft, cancel-undo-boundary, skk-character-to-event, skk-event-to-character): Remove. * skk-tut.el (skktut-next-answer-buffer): Use `end-open' property for XEmacs. 1998-10-27 Mikio Nakajima * skk-auto.el, skk-comp.el, skk-foreword.el, skk-isearch.el, skk-kakasi.el, skk-kcode.el, skk-rdbms.el, skk-server.el, skk-tut.el, skk-vip.el, skk-viper.el, skk.el: APEL (A Portable Emacs Library) 9.7 or later required. Many portion of functions and macros which emulate Emacsen other than one uses are now given to APEL 9.7. APEL 9.7 is available from; ftp://ftp.jaist.ac.jp/pub/GNU/elisp/apel/ * skk.el (skk-setup-delete-backward-char): Search `backward-or-forward-delete-char' binding for XEmacs. (skk-compute-henkan-lists): Use `split-string' in subr.el of Emacs 20 instead of `string-split' in string.el of Elib. (skk-create-file): Bug fixed. 1998-10-25 Mikio Nakajima * skk.el (skk-create-file): Message English when `skk-japanese-message-and-error' is nil, otherwise Japanese. 1998-10-24 Mikio Nakajima * skk.el (skk-insert-new-word): Use `skk-functionp'. (skk-insert-new-word, skk-katakana-region, skk-hiragana-region, skk-zenkaku-region, skk-ascii-region, skk-update-jisyo-original): Use `combine-after-change-calls' macro. (skk-middle-list): Rename to `skk-splice-in'. (skk-delete-henkan-markers): Remove `combine-after-change-calls' macro. * skk-isearch.el (skk-isearch-mode-setup, skk-isearch-mode-cleanup): Mark with `;;;###skk-autoload' labels. (skk-isearch-overriding-local-map): Set `overriding-local-map' for XEmacs 21.2 or later. * skk-foreword.el: Add `font-lock-warnign-face' to `;;;###skk-autoload' cookie. (skk-pre-command): Bug fixed. (skk-unread-event): Move to top level for common use. (skk-char-octet): Simplify. * skk-rdbms.el (skk-rdbms-okuri-search): Bug fixed. (skk-rdbms-run-SQL-command): Use `combine-after-change-calls' macro. * skk-kcode.el (skk-kcode-charset): Declare with `defvar' and make it user variable. 1998-10-23 Makoto MATSUSHITA * skk-server.el (skkserv-process): New internal variable. (skk-open-network-stream): Call `process-kill-without-query' for `skkserv-process'. 1998-10-23 Mikio Nakajima * skk-rdbms.el (skk-rdbms-okuri-search): Speed up. * skk.el (skk-hiragana-to-katakana, skk-katakana-to-hiragana): New functions. (skk-katakana-region): Use `skk-hiragana-to-katakana'. (skk-hiragana-region): Use `skk-katakana-to-hiragana'. 1998-10-22 Mikio Nakajima * skk-foreword.el: Apply patch from Murata Shuuichirou as of Oct 22, 1998 of which message-iD is <87ww5uhsdy.fsf@kotonoha.tom-yam.or.jp>. 1998-10-22 * skk.el (skk-set-henkan-point): Bug fixed. 1998-10-21 Mikio Nakajima * skk-tut.el (skktut-error-map): Remove. (skktut-enable-tutmap): Not to `set-buffer' to `skktut-answer-buffer'. (skktut-next-answer-buffer): If question is last one, do not insert `; to skip this question `C-x s' *' text. 1998-10-20 Mikio Nakajima * skk-rdbms.el (skk-rdbms-completion): Call `skk-kana-cleanup' first. * skk-server.el (skk-open-server-1): Use `=' to compare number. (skk-servers-list): Improve doc string. (skk-network-open-status): Declare with `defconst'. (skkserv-working-buffer): New constant. (skk-server-version, skk-search-server-subr, skk-open-network-stream): Use `skkserv-working-buffer'. (skk-open-server-1): Do not call `skk-startup-server' when `skk-server-prog' is nil. * skk-tut.el (skktut-enable-tutmap): Use `setq-default' for `minor-mode-map-alist' localized by Viper. (skktut-original-buffer): Remove. (skktut-disable-tutmap): Call `skk-viper-normalize-map' when default value of skk-use-viper is non-nil. (skktut-next-answer-buffer): Add `rear-nonsticky', `intangible' and `read-only' text properties for answer buffer cookies. (skktut-setup-question-buffer): Also bind tutorial commands in `skktut-question-buffer'. Keep buffer-read-only t. * skk.el (skk-henkan-show-candidates): Use `?\040' instead of `? '. (skk-submit-bug-report, skk-regularize, skk-public-jisyo-has-entry-p): Not to refer to `skk-server-prog' and "SKKSERV". (skk-public-jisyo-has-entry-p-original): Not to refer to `skk-server-prog'. * skk-comp.el (skk-completion-original): Use `eq' and `?\040' instead of `=' and `? '. (skk-completion-original): Call `skk-kana-cleanup' first. * skk-kcode.el : Apply patch from Murata Shuuichirou as of Oct 19, 1998 of which message-id is <8790ic7hv6.fsf@kotonoha.tom-yam.or.jp>. (skk-input-by-code-or-menu-1): Use `?\040' instead of `? '. (skk-kcode-charset): Declare by `defconst' instead of `skk-deflocalvar'. 1998-10-19 Mikio Nakajima * skk.el (skk-public-jisyo-has-entry-p): Modify condition. * skk-viper.el: Apply patch from Murata Shuuichirou as of Oct 19 1998 whose message-id is <87g1clkj75.fsf@kotonoha.tom-yam.or.jp>. * skk-comp.el (skk-completion-original): Use `=' instead of `eq' for char. 1998-10-18 Mikio Nakajima * skk.el (skk-henkan-in-minibuff) : Use `skk-j-mode-on' instead of `skk-setup-minibuffer'. (minibuffer-exit-hook): Remove `skk-j-mode-on' from `minibuffer-setup-hook'. (skk-set-henkan-point): `TaSSi' --> $B!VC#$C$7!W(B, `TasSi' -> $B!VC#$7!W(B * skk-tut.el (skktut-init-variables-alist): Add `skk-search-excluding-word-pattern-function'. (skktut-tutorial-again, skktut-quit-tutorial): Rename to `skk-tutorial-again' and `skk-tutorial-quit' respectively. (skktut-disable-tutmap): Use `skk-viper-normalize-map' for Viper users. (skktut-original-buffer): New internal variable. (skktut-pre-setup-tutorial): Set `skktut-original-buffer'. (skktut-enable-advice, skktut-disable-advice): Not to use arg but refer to `skktut-adviced-alist' directly. (skktut-setup-working-buffer, skktut-setup-question-buffer): Call `buffer-disable-undo'. (kill-buffer): Not to use temporary variable. (skktut-pre-setup-tutorial): Require skk-viper.el if `skk-use-viper' is non-nil. * skk-viper.el (skk-viper-normalize-map): New function (but only named for lambda). 1998-10-17 Mikio Nakajima * skk-tut.el: Totally rewritten for SKK 10.46. * skk-foreword.el (skk-current-insert-mode): New inline function. * skk.el (skk-spy-origin-buffer-mode): Remove. (skk-minibuffer-origin-mode): New internal variable. (skk-major-version, skk-minor-version): New constants. 1998-10-13 Mikio Nakajima * skk-viper.el (viper-forward-word-kernel): (viper-backward-word-kernel): Check by `skk-looking-at-jisx0208'. * skk-foreword.el (skk-y-or-n-p, skk-yes-or-no-p): Allow &rest argument. * skk.el (skk-allow-spaces-newlines-and-tabs, skk-rom-kana-base-rule-list, skk-rom-kana-rule-list, skk-kana-input-search-function, skk-downcase-alist, skk-use-face, skk-default-cursor-color, skk-hirakana-cursor-color, skk-katakana-cursor-color, skk-zenkaku-cursor-color, skk-abbrev-cursor-color, skk-auto-paren-string-alist, skk-search-excluding-word-pattern-function, skk-kutouten-type, skk-submit-bug-report): Modify their doc strings. (skk-henkan-show-candidates): Put in error check. (skk-submit-bug-report): Bug fixed. (skk-regularize): New function. (skk-mode): Use `skk-regularize'. (skk-restart): New command. (skk-setup-delete-selection-mode): Add `skk-current-kuten' and `skk-current-touten'. (skk-start-henkan): Apply patch from SAKAI Kiyotaka whose message-Id is <19981012165842R.ksakai@netwk.ntt-at.co.jp>. (skk-rom-kana-rule-list): Doc fixed. 1998-10-12 Mikio Nakajima * skk-foreword.el (skk-kana-cleanup): * skk.el (skk-auto-start-henkan-keyword-list, skk-auto-start-henkan): Add `*' to their doc strings as user variables. (skk-kana-rom-vector): Modify its doc string. 1998-10-11 Mikio Nakajima * skk.el (skk-rom-kana-base-rule-list): Use `skk-current-kuten' and `skk-current-touten'. (skk-toggle-kutouten): New command. (skk-current-kuten, skk-current-touten): New functions. (skk-start-henkan): Search `skk-rule-tree' instead of rule-list. (skk-set-henkan-point-subr): Use `skk-insert-and-inherit' instead of `insert'. 1998-10-10 Mikio Nakajima * skk-gadget.el (skk-date): Rename to `skk-current-date'. (skk-today): Not insert a string but return it only when called not interactively. * skk.el (skk-kana-input): Use `skk-make-raw-arg'. Use string returned by a function set in DATA as symbol. Set prefix-arg only when skk-isearch-message is nil. (skk-rom-kana-base-rule-list): Allow a string as 2th element of a cell. * skk-foreword.el (skk-make-raw-arg): New inline function. 1998-10-04 Mikio Nakajima * skk.el (skk-kana-input): Remove unnecessary temporary variable. Call `skk-set-okurigana' even if queue is not null. (save-buffers-kill-emacs): Remove advice. (skk-kill-emacs-without-saving-jisyo): Just remove-hook `skk-save-jisyo' from kill-emacs-hook instead of using complex funciton of advice.el. (skk-spy-origin-buffer-mode): Bug fixed. (skk-previous-candidate): Change its argument to numerical one and hand ot to `skk-kana-input'. (skk-start-henkan): Change its argument to numerical one. (skk-zenkaku-mode-map): Remove `skk-kakutei-key' definition. (skk-mode): Add `skk-kakutei-key' definition in `skk-zenkaku-mode-map'. (skk-try-completion-key, skk-next-completion-key, skk-previous-completion-key, skk-start-henkan-key): New user variables. 1998-10-03 Mikio Nakajima * skk.el (skk-setup-auto-paren): Do not nothing if `skk-auto-insert-paren' is nil. Comment fixed. 1998-10-02 Mikio Nakajima * skk.el (skk-zenkaku-insert): Emulate original behavior in the current original map when no string is found in `skk-zenkaku-vector'. (skk-pre-command): Simplify, defsubstify and move to skk-forword.el. (skk-insert): Call `skk-start-henkan', `skk-completion', `skk-previous-completion' respectively when such behavior is properly. Do not call `skk-set-henkan-point' when skk-henkan-on is nil even if CH is a member of `skk-special-midashi-char-list'. (skk-kana-input): Emulate original behavior in the current original map when `skk-current-rule-tree' is eq to `skk-rule-tree' and no DATA is found. Insert a pair string in `skk-auto-paren-string-alist' when necessary. (skk-rom-kana-base-rule-list): Add ",", ".", "!", "-", ":", ";", "?", "[", "]" and " " entries. (skk-input-vector, skk-self-insert, skk-insert-period, skk-insert-comma): Remove. (skk-setup-auto-paren): Change for removing `skk-input-vector'. (skk-zenkaku-vector): Modify doc string. (skk-cancel-undo-boundary): Do not increase `skk-self-insert-non-undo-count' when `skk-current-rule-tree' is not null. (skk-set-henkan-point, skk-start-henkan): Do not call `skk-self-insert'. 1998-09-30 Mikio Nakajima * skk.el (skk-undo-kakutei, skk-start-henkan, skk-set-henkan-point-subr, skk-change-marker, skk-change-marker-to-white, skk-katakana-region, skk-hiragana-region, skk-zenkaku-region, skk-insert-str, skk-insert, skk-set-okurigana, skk-self-insert, skk-zenkaku-insert): Remove unnecessary `cancel-undo-boundary'. 1998-09-29 Mikio Nakajima * skk.el (skk-check-jisyo-size): Typo fixed in the warning message. 1998-09-27 Mikio Nakajima * skk.el (skk-kana-cleanup): Defsubsted and moved to skk-forword.el. (skk-spy-origin-buffer-mode): Do not nothing if `skk-mode' is nil. * skk.el: (eval-expression): Comment out. (overwrite-mode): Adviced documented. 1998-09-25 Mikio Nakajima * skk-num.el (skk-raw-number-to-skk-rep): Modify regexp slightly. (skk-num-type-list): Doc improved. 1998-09-24 Mikio Nakajima * skk.el (skk-delete-backward-char): Revive. (skk-setup-delete-backward-char): New function. (skk-mode): Call `skk-setup-delete-backward-char'. (skk-pre-command): Check if this-command is `skk-delete-backward-char' or not instead of COMMANDS-THAT-DO-NO-CLEANUP. (skk-abbrev-mode-map, skk-zenkaku-mode-map, skk-j-mode-map, skk-ascii-mode-map): Define Meta prefix command even if `skk-use-viper' is non-nil. (skk-abbrev-mode-map, skk-j-mode-map): Do not define-key \177 for `delete-backward-char'. 1998-09-23 Mikio Nakajima * skk-rdbms.el (skk-rdbms-SQL-insert-command): Set null value to okurigana if `skk-henkan-okurigana' is nill. (skk-rdbms-save-jisyo-function): Bug fixed. * skk-viper.el (viper-del-backward-char-in-insert, vip-del-backward-char-in-insert): Adviced documented. Check if `skk-henkan-active' or not first. (viper-forward-word-kernel, viper-backward-word-kernel): Adviced documented. * skk.el (skk-rom-kana-rule-list): Doc fixed. (newline, delete-backward-char): Adviced documented. (delete-backward-char): Check if `skk-henkan-active' or not first. * skk-server.el (skk-servers-list): Doc fixed. 1998-09-21 Mikio Nakajima * skk-gadget.el (skk-convert-ad-to-gengo, skk-convert-gengo-to-ad): Rename to `skk-ad-to-gengo', and `skk-gengo-to-ad' respectively. * skk-viper.el (skk-set-cursor-properly): Overwite original function in skk.el. (viper-insert, vip-insert): New advice. 1998-09-20 Mikio Nakajima * skk-isearch.el (skk-isearch-mode-alias-alist, skk-isearch-mode-canonical-alist, skk-isearch-breakup-string-function, skk-isearch-breakable-character-p-function, skk-isearch-working-buffer): Changed to constants as they are never changed. (skk-isearch-mode-string-alist): Changed to a user variable. (skk-isearch-whitespace-regexp): Changed to a user variable and documented. * skk-attr.el: (skk-attr-time-difference): Renamed to `skk-time-difference' and moved to skk.el. * skk-gadget.el (skk-time-diff): Removed. (skk-clock): Use `skk-time-difference' instead of `skk-time-diff'. * skk.el (skk-auto-start-henkan-keyword-list): Doc fixed. (skk-hankaku-alist): Only define when you use Mule version 1 or 2. (skk-truncate-message): Bug fixed. (skk-kill-local-variables): Call `(skk-mode -1)' to turn off skk-mode. 1998-09-17 Mikio Nakajima * skk.el (skk-kana-input-search-function, skk-rom-kana-rule-list, skk-use-face, skk-kakutei-early): Doc fixed. 1998-09-16 Mikio Nakajima * skk.el (skk-truncate-message): Bug fixed. (skk-save-jisyo): Add doc string. (skk-set-henkan-point-subr): Apply patch from Hideki Sakurada of which message-id is <19980916183041P.sakurada@kuis.kyoto-u.ac.jp>. * skk-foreword.el : Use `string-to-vector' for Mule 3 and `string-to-char-list' for Mule 1 and 2 in `skk-str-ref'. 1998-09-15 Mikio Nakajima * skk.el (skk-setup-auto-paren): Use `skk-alpha-char-p'. (skk-truncate-message): New function. (skk-henkan-show-candidate-subr): Use `skk-truncate-message'. * skk-viper.el : Use `x-color-defined-p' instead of `x-color-value' to check `viper-insert-state-cursor-color' is a valid color value (maybe slightly faster). 1998-09-14 Mikio Nakajima * skk.el (skk-previous-candidate): Do not call `skk-init-auto-okuri-variables' and initialize necessary internal variables. (skk-henkan-overlay-priority): New user variable. (skk-henkan-face-on): Put `skk-henkan-overlay-priority' to `skk-henkan-overlay'. * skk-viper.el (skk-viper-or-vip): Marked with `;;;###skk-autoload' label. 1998-09-13 Mikio Nakajima * skk-rdbms.el (skk-rdbms-init): Call `buffer-disable-undo'. (skk-rdbms-save-jisyo-function, skk-rdbms-private-jisyo-dump, skk-rdbms-dump-error): New user variable. (skk-rdbms-save-jisyo): Funcall `skk-rdbms-save-jisyo-function'. (skk-rdbms-SQL-delete-command): Bug fixed. (skk-rdbms-update-jisyo): Change for `skk-ignore-dic-word'. (skk-rdbms-public-jisyo-has-entry-p): New funcition. (skk-rdbms-sahen-search, skk-rdbms-sahen-search-1): Bug fixed. (skk-rdbms-SQL-update-command): Bug fixed. * skk.el (skk-j-mode-map, skk-ascii-mode-map, skk-abbrev-mode-map): Not define `skk-kakutei-key' so as to change `skk-kakute-key' in ~/.skk. (skk-mode): Define `skk-kakute-key' as `skk-kakutei' in `skk-j-mode-map', `skk-ascii-mode-map' and `skk-abbrev-mode-map' every time `skk-mode' is invoked.. (skk-public-jisyo-has-entry-p): Funcall `skk-public-jisyo-has-entry-p-function'. (skk-public-jisyo-has-entry-p-original): Substantially old `skk-public-jisyo-has-entry-p'. (skk-public-jisyo-has-entry-p-function): New user variable. (skk-abbrev-cursor-color): Doc fixed. 1998-09-12 Mikio Nakajima * skk-viper.el (skk-viper-or-vip, skk-viper-normalize-map-function): Change them to constants as they are never changed. * Cursor color support (`skk-use-color-cursor' is non-nil and `viper-insert-state-cursor-color' is null value, cursor color is set properly according to SKK mode.) (viper-hide-replace-overlay): Adviced. (viper-intercept-ESC-key, vip-intercept-ESC-key): Change them to around advices. * skk.el (skk-kakutei-save-and-init-variables): Initialize `skk-okuri-index-min', `skk-okuri-index-max' and `skk-henkan-in-minibuff-flag'. (skk-update-jisyo-original): Call `skk-remove-common' if `skk-okuri-index-min' is larger than 0. (insert-file): Adviced. (skk-relation-length, skk-relation-record-num, skk-relation-make-period-separator): Move to skk-attr.el * skk-auto.el (skk-init-auto-okuri-variables): Removed. (skk-remove-common, skk-auto-okurigana-prefix, skk-kana-rom-vector skk-henkan-in-minibuff-flag, skk-okuri-index-min, skk-okuri-index-max): Move to skk.el for `skk-rdbms-sahen-search'. * skk-rdbms.el (skk-rdbms-sahen-search): New function. (skk-rdbms-search-sahen-command): New macro. (skk-rdbms-hinsi-base-table, skk-rdbms-hinsi-data-table): New user variable. (skk-rdbms-update-jisyo): Call `skk-remove-common' if `skk-okuri-index-min' is larger than 0. (skk-rdbms-SQL-insert-command): Determine okuriari or not by `skk-henkan-okurigana'. * skk-kakasi.el: Decode with euc-japan coding system what received by kakasi. 1998-09-11 Mikio Nakajima * skk-rdbms.el (skk-rdbms-error-regexp, skk-rdbms-update-fail-regexp): Change regexp slightly. * skk.el (skk-auto-paren-string-alist): Add ("`" . "'") pair. (skk-public-jisyo-contains-p): Rename to `skk-public-jisyo-has-entry-p'. (skk-current-rule-tree, abort-recursive-edit, minibuffer-keyboard-quit, skk-erase-prefix): Apply the patch from Murata Shuuichirou . 1998-09-06 Mikio Nakajima * skk-rdbms.el (skk-rdbms-update-fail-regexp): Documented. (skk-rdbms-kakutei-jisyo-table, skk-rdbms-initial-jisyo-table): Doc improved. 1998-09-01 Mikio Nakajima * skk-auto.el (skk-okuri-search): Marked with `;;;###skk-autoload' label. * skk-rdbms.el (skk-rdbms-private-jisyo-table, skk-rdbms-public-jisyo-table, skk-rdbms-jis2-jisyo-table): Doc improved. Remove `skk_' prefix from default values of these user variables. (skk-rdbms-busyu-henkan, skk-rdbms-stroke-henkan): New functions. (skk-rdbms-kcode-table, skk-rdbms-stroke-table, skk-rdbms-busyu-base-table, skk-rdbms-busyu-data-table): New user variable. (skk-rdbms-SQL-search-busyu-command, skk-rdbms-SQL-search-stroke-command): New macros. (skk-rdbms-okuri-search-subr): Rename to `skk-rdbms-okuri-search'. 1998-09-01 Murata Shuuichirou * skk-foreword.el (skk-str-ref): Defaliased to `sref' if mule version is 2.3 or 3. 1998-08-31 Mikio Nakajima * skk-rdbms.el (skk-rdbms-kill): Call `skk-rdbms-save-jisyo' before killing database process if `this-command' is not `save-buffers-kill-emacs'. * skk.el (skk-byte-compile-init-file): Bind to nil by default. 1998-08-30 Murata Shuuichirou * skk-foreword.el (skk-mule4): New constant. (skk-substring, skk-str-ref, skk-str-length, skk-charsetp, skk-char-octet): New alliases or functions. * skk-auto.el (skk-auto-okurigana-prefix): Use `skk-kana-rom-vector' instead of `skkdic-okurigana-table'. (skk-remove-common): Bug fixed. 1998-08-30 Mikio Nakajima * skk-rdbms.el (skk-rdbms-save-jisyo): Correct message. (skk-rdbms-kill): Message verbosely. (skk-rdbms-search-jisyo-table): Remove temporary variable CUTOFF-FUNC. (skk-rdbms-cutoff-output-function-2): Add `save-excursion'. (skk-rdbms-cutoff-output-function-3): Remake. (skk-rdbms-SQL-insert-command, skk-rdbms-SQL-delete-command, skk-rdbms-SQL-update-command, skk-rdbms-SQL-search-private-jisyo-command, skk-rdbms-SQL-search-public-jisyo-command, skk-rdbms-jis2-jisyo-table): New macros. (skk-rdbms-update-jisyo): Refer to `skk-rdbms-SQL-insert-command', `skk-rdbms-SQL-delete-command', and `skk-rdbms-SQL-update-command'. (skk-rdbms-search-jisyo-table): Use `skk-rdbms-SQL-search-private-jisyo-command' and `skk-rdbms-SQL-search-public-jisyo-command'. (skk-rdbms-SQL-wildcard): Removed. * dicconv.awk: Change for [SML] jisyo or JIS2 jisyo. * createtbl.sql: Make `skk_large_jisyo' and `skk_jis2_jisyo' table. 1998-08-29 Mikio Nakajima * skk-auto.el (skk-okuri-search-subr-function): Rename to `skk-okuri-search-function'. 1998-08-28 Takao KAWAMURA * skk.el (skk-mode): Compile `skk-rom-kana-base-rule-list' first. (skk-start-henkan): Bug fixed. 1998-08-28 Hideki Sakurada * skk.el (skk-compile-rule-list): Bug fixed. 1998-08-27 Mikio Nakajima * Makefile: Add file dependencies. * createtbl.sql: Add `NOT NULL' restriction to `okuriari', `yomi' and `kanji' field when create `skk_private_jisyo 'table (Why can't I add it to `date' field?). * skk-rdbms.el (skk-rdbms-update-jisyo): Process WORD by `skk-remove-common' if `skk-auto-okuri-process' is non-nil. (skk-rdbms-okuri-search-subr): New function. (skk-rdbms-completion, skk-rdbms-previous-completion): Bug fixed. * Add `skk-rdbms-kill' to `skk-before-kill-emacs-hook' instead of `kill-emacs-hook'. (skk-rdbms-cutoff-output-function, skk-rdbms-cutoff-output-function-2): Modify the regexp slightly. (skk-rdbms-cutoff-output-function-3): New user variable. * skk-auto.el (skk-auto-okurigana-prefix): Bug fixed. (skk-okuri-search-subr): Rename to `skk-okuri-search-subr-original'. (skk-okuri-search-subr): Remove. (skk-okuri-search): Funcall `skk-okuri-search-subr-function' instead of calling `skk-okuri-search-subr'. (skk-okuri-search-subr-function): New user variable. (skk-adjust-search-prog-list-for-auto-okuri): Add `(skk-okuri-search)' list just before a list which contains `skk-jisyo' or `skk-rdbms-private-jisyo-table'. * skk.el (skk-search-relation, skk-attr-search-relation, skk-update-relation, skk-attr-update-relation): Move to skk-attr.el. 1998-08-26 Mikio Nakajima * skk.el (skk-use-rdbms): New user variable. * (skk-mode): Require 'skk-rdbms when `skk-use-rdbms' in non-nil. Call `skk-create-file' and `skk-get-jisyo-buffer' only when `skk-use-rdbms' is nil. * skk-rdbms.el (skk-rdbms-save-jisyo): Not vacumming SKK database when skk-rdbms-process is not alive. 1998-08-24 Murata Shuuichirou , Seiichi Namba * skk-foreword.el (skk-e20.2): New constant. (skk-alpha-char-p): Check if CHAR is less than 128 or not, if skk-e20.2 is non-nil. 1998-08-24 Mikio Nakajima * dicconv.awk: Get myctime() value in BEGIN block. * createtbl.sql: Create index on yomi only (as yomi_index). * skk-rdbms.el (skk-rdbms-previous-completion): Rewrite with while loop. * skk-foreword.el (skk-background-mode): Use return value of `frame-parameters' if it has `(background-mode . VALUE)'. * skk-comp.el (skk-completion-function): Bug fixed. 1998-08-22 Mikio Nakajima * skk.el (skk-mode): Hand `skk-rom-kana-base-rule-list' and `skk-rom-kana-rule-list' respectively to `skk-compile-rule-list'. * skk-rdbms.el (skk-rdbms-process-coding-system): New user variable. (skk-rdbms-init): Use `skk-rdbms-process-coding-system'. Use `skk-rdbms-shell' instead of `calc-gnuplot-name' (a base of this function is in calc-graph.el). (skk-rdbms-SQL-wildcard): New user variable. 1998-08-21 Mikio Nakajima * skk-rdbms.el (skk-rdbms-init): unsetenv "PAGER" environment. (skk-rdbms-init): Use `skk-save-point' outside while loop. * skk-foreword.el (skk-downcase): Revive as the inline function as of June 17, 1998. * skk.el (skk-compile-rule-list): Use &rest to get its argument. (skk-downcase-alist): Revive. (skk-record-jisyo-data): Take no argument. * skk-comp.el (skk-previous-completion-original): Do not delete midashi word if no more previous completion for `skk-completion-word'. (skk-previous-completion): Funcall `skk-previous-completion-function'. (skk-previous-completion-original): Old `skk-previous-completion'. Just renamed. (skk-previous-completion-function): New user variable. (skk-completion-original): Old `skk-completion'. Just renamed. (skk-completion): Funcall `skk-count-jisyo-candidates-function'. (skk-completion-function): New user variable. 1998-08-19 Mikio Nakajima * skk.el (skk-record-jisyo-data): Change for skk-rdbms.el. 1998-08-18 Mikio Nakajima * skk.el (skk-count-jisyo-candidates-original): Old `skk-count-jisyo-candidates'. Just renamed. (skk-count-jisyo-candidates): Funcall `skk-count-jisyo-candidates-function'. (skk-count-jisyo-candidates-function): New user variable. * skk-rdbms.el (skk-rdbms-cutoff-output-function): Add `save-match-data'. (skk-rdbms-count-jisyo-candidates): New function. (skk-rdbms-kill-command): New user variable (skk-rdbms-kill): Use `skk-rdbms-kill-command' variable. 1998-08-16 Mikio Nakajima * skk-rdbms.el: New file. Support PostgreSQL database jisyo. * skk.el (skk-update-jisyo-function): New variable. (skk-save-jisyo-original, skk-update-jisyo-original): Old `skk-save-jisyo' and `skk-update-jisyo'. Just renamed respectively. (skk-save-jisyo, skk-update-jisyo): Funcall `skk-save-jisyo-function' and `skk-update-jisyo-function'. (skk-save-jisyo-function, skk-update-jisyo-function): New variables. * skk-foreword.el: Move all macros, inline functions and aliases to this file from skk.el * skk-auto.el (skk-adjust-search-prog-list-for-auto-okuri): Do not add `(skk-okuri-search)' list to `skk-search-prog-list', if no entries are found that contain `skk-jisyo'. 1998-08-15 Mikio Nakajima * skk.el (skk-insert): Use `let' instead of `let*'. * skk-isearch.el: Insert `-*- byte-compile-dynamic-docstring: t;-*-' comment in the header. * (skk-isearch-wrapper): Change for the internationalized isearch.el of the GNU Emacs. * (skk-isearch-incomplete-message, skk-isearch-search-string): Doc fixed. 1998-08-14 Mikio Nakajima * skk.el (skk-rule-tree, skk-current-rule-tree): Doc fixed. (skk-public-jisyo-contains-p): Use `memq' instead of `member'. 1998-08-13 Mikio Nakajima * skk.el: Remove `;; -*-byte-compile-dynamic: t;-*-' from the header. * Apply the patch from Murata Shuuichirou . * Merge skk-tree.el into skk.el. * (skk-tree-load-hook): Remove. (skk-kana-input): Documented by <19980610190611B.sakurada@kuis.kyoto-u.ac.jp> from Hideki Sakurada . * (skk-kana-input, skk-set-henkan-point, skk-self-insert): Change as a non-interactive command. * (skk-rom-kana-base-rule-list, skk-rom-kana-rule-list): Documented. * (skk-rule-tree, skk-current-rule-tree) Change as a non-user variable. * (skk-insert): Documented. Use `memq' instead of `member'. * (skk-set-henkan-point-key): Replace the document. * (skk-setup-delete-selection-mode, skk-cancel-undo-boundary): Change for the replacement of `skk-kana-input' with `skk-insert'. * (skk-cancel-undo-boundary, skk-self-insert-non-undo-count): Doc fix for the replacement of `skk-kana-input' with `skk-insert'. * (skk-setup-special-midashi-char): Remove. * (skk-downcase-alist): Remove. * (skk-kana-input-search-function): Doc improved. * (skk-insert-prefix, skk-del-char-with-pad, skk-set-okurigana, skk-set-henkan-point, skk-set-henkan-point-subr, skk-change-marker, skk-katakana-region, skk-hiragana-region, skk-zenkaku-region, skk-ascii-region, skk-previous-candidate, skk-insert-new-word, skk-undo-kakutei): Use `skk-insert-and-inherit' instead of `insert'. * (skk-mode): Append `skk-rom-kana-rule-list' to `skk-rom-kana-base-rule-list'. Replace `$B!V(B' and `$B!W(B' in the doc string with `"' since we could not indent properly. Compile skk-rule-tree every time when skk-mode is invoked. * skk-foreword.el (skk-downcase): Defaliased to `downcase'. * make-vars.el (skk-files): Remove skk-tree.el from the list. 1998-06-27 Hideki Sakurada * skk.el (skk-insert): Improve the check for input. 1998-06-26 Hideki Sakurada Appy the patch <19980619220419Y.ksakai@netwk.ntt-at.co.jp> from SAKAI Kiyotaka . * skk.el (skk-kana-input): Delay skk-kakutei. 1998-06-17 Hideki Sakurada Apply the patch <19980617221009M.ksakai@netwk.ntt-at.co.jp> from SAKAI Kiyotaka . * skk.el (skk-j-mode-map): Fix mapping on Mule 2. (skk-kana-input): Fix check whether rule is for function or not. * skk-tree.el (skk-rom-kana-base-rule-list): Add rule for skk-start-henkan. 1998-06-17 Hideki Sakurada Apply the patch <81wwapbz91.fsf@mrt.astec.co.jp> from Murata Shuuichirou . * skk-foreword.el (skk-char-octet): Defined as function on Emacs 20. * skk-kcode.el (skk-display-code-for-char-at-point): Use skk-char-octet. 1998-06-17 Hideki Sakurada Apply the following patches from SAKAI Kiyotaka and Murata Shuuichirou . <19980616201706R.ksakai@netwk.ntt-at.co.jp> <19980617100826M.ksakai@netwk.ntt-at.co.jp> <19980617102411T.ksakai@netwk.ntt-at.co.jp> <81pvg8pk71.fsf@mrt.astec.co.jp> * skk.el (skk-set-henkan-point-key): New variable. (skk-insert): New function dispatch input to skk-kana-input, or skk-self-insert. (skk-kana-input): Accept roma-function type rules as well as roma-kana type rules. (skk-j-mode-map): Bind almost all keys to skk-insert. (skk-ascii-mode, skk-zenkaku-mode, skk-abbrev-mode, skk-previous-candidate, skk-set-henkan-point-subr, skk-purge-from-jisyo): Take a numeric argument. * skk-foreword.el (skk-downcase): Fix a bug. * skk-kcode.el (skk-display-code-for-char-at-point): Take an optional numric argument. * elib-node.el, avltree.el: Removed. * Makefile: Remove rule for elib-node.el and avltree.el. 1998-05-20 Hideki Sakurada * skk.el (skk-j-mode-map, skk-abbrev-mode-map): Fix "\M-\ " and "\ ". 1998-05-19 Hideki Sakurada * skk.el: Change (define-key ... "\ " ...) to (define-key ... " " ...). 1998-05-15 Hideki Sakurada * skk.el (skk-mode, skk-erase-prefix): Comments such as ";; (foo" changed to ";; (foo)" to make make-skk-vars work. (skk-save-jisyo-1): Comment fixed. * make-vars.el (skk-file-name-sans-extension): New function for Emacs 19.28. Same as file-name-sans-extension on newer Emacs. (make-skk-vars): Replace file-name-sans-extension with skk-file-name-sans-extension. 1998-05-10 Hideki Sakurada * skk.el (keyboard-quit): Fix "(if skk-prefix ...)" which is always true. 1998-05-07 Hideki Sakurada * skk-auto.el, skk-comp.el, skk-num.el, skk-viper.el, skk.el: Remove bindings of mc-flag, enable-multibyte-characters. 1998-05-06 Hideki Sakurada * skk-foreword.el: Fix skk-characterp. 1998-04-30 Hideki Sakurada * skk-kcode.el (skk-input-by-code-or-menu-jump): Convert 32 to ?\ (space). 1998-04-23 Hideki Sakurada * skk-tree.el (skk-rom-kana-base-rule-list): new rule for "'". * skk.el: "'" mapped to skk-kana-input for "n'". 1998-04-17 Hideki Sakurada * skk-foreword.el: Fix bug around version spcific matters. Thanks to Takao Ono . 1998-03-23 Hideki Sakurada * skk.el (skk-erase-prefix): Add check for skk-kana-start-point. 1998-03-19 Hideki Sakurada * skk.el (skk-mode-off): Replace remove-hook with skk-remove-local-hook (skk-mode): Replace make-local-hook and add-hook with skk-make-local-hook and skk-add-local-hook respectively. * skk-foreword.el (skk-make-local-hook): New macro. (skk-add-local-hook): New macro. (skk-remove-local-hook): New macro. 1998-03-19 Hideki SAKURADA * skk-auto.el, skk-comp.el, skk-gadget.el, skk-isearch.el skk-kakasi.el, skk-kcode.el, skk-leim.el, skk-menu.el skk-num.el, skk-server.el, skk-tut.el, skk-vip.el skk-viper.el: Do not eval-when-compile avltree.el. * skk.el (skk-set-henkan-point): Fix for inputs such as `NEko'. (skk-pre-command): Add check for skk-set-henkan-point. 1998-03-17 Mikio Nakajima * skk-tree.el (skk-rom-kana-rule-list): Doc fixed. * skk.el (skk-downcase): Simplified, defsubsted and moved to skk-foreword.el. (skk-okuri-char-alist, skk-downcase-alist): Documented. (skk-input-kana-helper-function): Removed. (skk-kana-input): Do not funcall skk-input-kana-helper-function. Erase skk-prefix only when skk-prefix has an non-null string. (skk-input-kana-search-function): Renamed to `skk-kana-input-search-function' and documented. (skk-kana-input): Use nconc instead of append because `skk-string-to-char-list' returns newly allocated list. (skk-set-henkan-point): Directly call skk-kana-input instead of using skk-unread-event. 1998-03-17 Hideki Sakurada * skk.el (skk-kana-cleanup): Fix bug around force option. (skk-pre-command): New function for pre-command-hook. 1998-03-16 Hideki Sakurada * skk.el (skk-set-henkan-point): Use skk-kana-cleanup for inputs such like "KAnji". (skk-kana-cleanup): New function which clean up sk-kana-prefix etc. * skk-tree.el (skk-make-rule-tree, skk-set-nextstate): Set nextstate nil if nextstate is "". * skk.el (skk-kakutei-save-and-init-variables): do not initialize skk-prefix 1998-03-15 Mikio Nakajima * skk-foreword.el (skk-alpha-char-p): Quote ascii symbol. 1998-03-14 Hideki Sakurada * skk-foreword.el (skk-string-to-char-list): a new alias to string-to-char-list or string-to-list. * skk-tree.el: Totally rewritten. * skk.el: avltree staffs removed. (skk-roma-kana-base-alist): Converted to skk-rom-kana-base-rule-list in skk-tree.el. (skk-kana-input): Totally rewritten using tree structures. (skk-input-kana-search-function): `sokuon' staffs are removed. `oh'-conversion adapted to skk-kana-input in skk.el. 1998-03-12 Mikio Nakajima * skk.el (delete-backward-char): Erase skk-prefix before setting skk-prefix to null string. 1998-03-11 Mikio Nakajima * skk-auto.el, skk-comp.el, skk-gadget.el, skk-isearch.el, skk-kakasi.el, skk-kcode.el, skk-leim.el, skk-menu.el, skk-num.el, skk-server.el, skk-tree.el, skk-tut.el, skk-vip.el, skk-viper.el: Require avltree when compiling. * skk.el (skk-erase-prefix): Delete only skk-prefix exactly. (skk-kana-input): Not call skk-isearch-message after we fixed skk-prefix. * skk-isearch.el (skk-isearch-set-working-buffer): Removed. (skk-isearch-search-string): Return nil when skk-prefix has some non-null string. 1998-03-05 Mikio Nakajima * skk-num.el : Required avltree. * skk-tut.el (skktut-init-variables-alist): Removed skk-char-type-vector, skk-standard-rom-kana-rule-list, skk-rom-kana-rule-list, skk-fallback-rule-alist, and skk-postfix-rule-alist. * skk-foreword.el (skk-kana-input-char-type): Removed. * skk.el (skk-get-next-rule, skk-get-fallback-rule, skk-check-postfix-rule, skk-get-postfix-rule): Removed. * (skk-char-type-vector, skk-standard-rom-kana-rule-list, skk-rom-kana-rule-list, skk-fallback-rule-alist, skk-postfix-rule-alist): Removed. * Require avltree. * skk-isearch.el (skk-isearch-incomplete-message): Doc fixed. (skk-isearch-message): Not have to refer to dynamic variable `prefix' of skk-kana-input, as skk-kana-input has been rewritten without using while read-char loop. 1998-03-01 Murata Shuuichirou * skk-kcode.el (skk-display-code-for-char-at-point): Use skk-char-octet. * skk-foreword.el (skk-char-octet): New (function|alias). * skk-kcode.el (skk-input-by-code-or-menu-jump): Use skk-chracterp. (skk-input-by-code-or-menu-1): Ditto. (skk-input-by-code-or-menu-jump): Use skk-event-to-character to make an input character. (skk-input-by-code-or-menu-1): Ditto. * skk-foreword.el (skk-chracterp): New alias. 1998-02-03 Murata Shuuichirou * skk.el (skk-nunion): slightly improved. (skk-reread-private-jisyo): add an optional argument to suppress confirmation. * skk-kcode.el (skk-input-by-code-or-menu): bug fixed. * skk.el (skk-kana-input): downcase trailing chars. 1998-01-06 Murata Shuuichirou * skk.el: skk-jisx0208-to-ascii is moved to skk-forword.el * skk-attr.el (skk-prin1): New function. (skk-attr-save): Use it. * skk-num.el (skk-raw-number-to-skk-rep-1): Add missing binding of mc-flag. * skk-foreword.el(Top-level): Reorder def*s. 1997-12-22 Murata Shuuichirou * skk.el (skk-cancel-undo-boundary): Comment fixed. * skk-vip.el (skk-insert-str): Fixed document. skk-insert is not used anymore. * skk.el (skk-prefix): Remove obsolete document. (skk-jis-char-p): Removed. (skk-alpha-char-p,skk-lower-case-p): moved to skk-forword.el. (skk-setup-delete-selection-mode): Remains of skk-insert-a are removed. (skk-self-insert-non-undo-count): ditto. (skk-insert): Removed. (skk-insert-str): Fixed document. 1997-12-10 Murata Shuuichirou * skk-num.el (skk-compute-numeric-henkan-key): bind mc-flag to t. Submitted by Hideki Sakurada . 1997-11-15 Murata Shuuichirou * skk.el (skk-mode): `"' in doc-string. (skk-relation-length, skk-relation-record-num): make into user variable. (skk-relation-make-period-separator): New variable. (skk-insert-period): Use it and skk-last-renkan-results. (skk-last-henkan-result,skk-last-henkan-point): Removed. (skk-last-henkan-results): New variable. (skk-mode-off): Use it. (skk-search-relation, skk-attr-search-relation, skk-update-relation,skk-attr-update-relation, skk-update-jisyo): Multi entry relation is supported. 1997-11-12 Murata Shuuichirou * make-vars.el (make-skk-vars): Disable make-backup-files. 1997-11-09 Stephen Turnbull * skk.el (skk-month-alist, skk-init-file, skk-special-midashi-char-list, skk-auto-fill-mode-hook, skk-kakutei-jisyo, skk-initial-search-jisyo): Add comments in english. (skk-mode): Change doc-string. * skk-tut.el (skk-tut-file-alist): New variable. (skk-tut-file): Remove use of locate-data-directory. (skk-tutorial): Add support for choosing language. 1997-10-27 SL Baur * skk-tut.el (skk-tut-file): Use `locate-data-directory' if available to find the tutorial files. (skktut-setup-problem-buffer): Use `map-keymap' to fill the keymap in XEmacs/Mule. 1997-10-28 Murata Shuuichirou * string.el (Top level form): de-"skk-defunsoft"ified. delete (require 'skk-foreword). 1997-10-26 Murata Shuuichirou * skk-leim.el (Top level form): Add short descriptions to (register... ). 1997-10-25 Murata Shuuichirou * skk-leim.el: new file. * skk.el (skk-mode, skk-auto-fill-mode): ;;;###skk-autoload'ed. * skk-attr.el (skk-attr-save): sexp written by princ can not be read again, so use prin1. * skk-viper.el (Top level form): require viper. 1997-10-21 Murata Shuuichirou * skk.el (skk-kanji-len): Change document. * skk-attr.el (skk-attr-alist): Add ;;;###skk-autoload. (skk-attr-read): Add kluge. * skk.el (skk-use-relation): New variable. (skk-relation-length): New variable. (skk-relation-record-num): New variable. (skk-search-relation): New function. (skk-attr-update-relation): New function. (skk-update-jisyo): Use relation. 1997-10-09 Murata Shuuichirou * skk.el (skk-standard-rom-kana-rule-list): add "ts". 1997-09-22 Murata Shuuichirou * skk-kcode.el(skk-kcode-defined-charsets): New constant. (skk-input-by-code-or-menu): Use it. 1997-09-17 Murata Shuuichirou * skk-viper.el(skk-viper-or-vip): New variable. (skk-viper-advice-select): New macro. (Top level form): change advices into skk-viper-advice-select. 1997-09-16 Murata Shuuichirou * skk-foreword.el(skk-unread-event): make correct unread-command-events. (Top level form): skk-background-mode must be defined before used. * skk-isearch.el(Top level from): put 'isearch-commnd. * skk.el(skk-check-postfix-rule): New function. (skk-kana-input): Use it. (skk-get-postfix-rule): Add optional arg. * make-vars.el(make-sk-vars): bind file-coding-system to 'junet. 1997-09-03 Mikio Nakajima * skk-attr.el: New file. * skk.el: typo fixed. (skk-substring-head-character): New defsubst. (skk-translate-okuri-char): Use skk-substring-head-character. (skk-purge-from-jisyo, skk-search-jisyo-file-1, skk-update-jisyo): Attribute support. 1997-08-31 Mikio Nakajima * queue-m.el (queue-dequeue): Changed `(if (not (null (car (cdr queue)))' to `(if (car (cdr queue))'. * skk.el (skk-save-jisyo): Do not use catch and throw form. Set buffer-modified flag to nil only when saving JISYO successfully. (skk-save-jisyo-1): Remove (set-buffer-modified-p nil) form. (skk-check-jisyo-size): Output a warning when editing private JISYO is smaller than the original one. (skk-reread-private-jisyo): New function. (skk-record-jisyo-data): Bug fixed. * skk-foreword (with-output-to-temp-buffer): Defined for XEmacs and Mule 2.x. (skk-get): Comment out. * skk-gadget.el: Added `;;;###skk-autoload' cookies to `skk-date-ad', `skk-today', `skk-clock', `skk-convert-ad-to-gengo', `skk-convert-gengo-to-ad', `skk-calc', `skk-plus', `skk-minus', `skk-times' and `skk-ignore-dic-word'. * Makefile: Automatically generate skk-vars.el. 1997-08-23 Murata Shuuichirou * skk-viper.el (skk-viper-normalize-map-function): New variable. * skk.el (skk-mode): Use skk-viper-normalize-map-function instead of vip-normalize-minor-mode-map-alist. 1997-08-21 Murata Shuuichirou * skk.el (skk-fallback-rule-alist): New variable. (skk-get-fallback-rule): New function. (skk-get-postfix-rule): New function. (skk-kana-input): Use fallback rule. 1997-08-20 Murata Shuuichirou * skk.el (skk-kana-input): Remove unused local variable. 1997-08-19 Murata Shuuichirou * skk.el (skk-kana-input): Mostly cosmetic change. Maybe speedened. * skk-tree.el (skk-standard-rom-kana-rule-tree): Change doc-string. * skk-kcode.el (skk-kcode-charset): New variable. (skk-input-by-code-or-menu): Change doc-string. 1997-07-31 Murata Shuuichirou * skk-kcode.el (skk-kcode-charset): New variable. * skk.el (skk-henkan): kakutei-henkan was moved from skk-insert-new-word. (skk-insert-new-word): kakutei-henkan was removed. * skk-foreword.el (skk-char-to-string): New function. * skk.el: char-to-string was replaced by skk-char-to-string. 1997-07-27 Mikio Nakajima * skk.el: skk-list-to-avltree is removed. (skk-setup-delete-selection-mode): delete call of avltree-member. * avltree.el: Removed . 1997-07-27 Murata Shuuichirou * skk-kcode.el (skk-make-string): Renamed from skk-char-to-string. * many files (Top level form): Make skk-defvars into defvars. * skk-forword.el (skk-defvar): Removed. * skk-foreword.el (skk-char-to-string): New function. * skk.el (skk-kana-input): Use it. 1997-07-24 SAKAI Kiyotaka * skk-tut.el (skk-tut-init-variable): Removed. (skk-tut-init-variable-alist): New constant. (skktut-localize-and-init-variables): Can work without skk-defvar. 1997-07-22 Murata Shuuichirou * skk.el (skk-get-jisyo-buffer): Bind coding-system-for-read to euc-japan when inserting jisyo file. For XEmacs. * skk-foreword.el (skk-make-char): New function. (skk-charsetp): New function. (Top-Level form): defunsofts is moved from skk.el. Macros are rewritten in old style to work with old emacs. 1997-07-22 SAKAI Kiyotaka * skk.el (skk-standard-rom-kana-rule-list): Add an entry. 1997-07-15 Murata Shuuichirou * skk.el (skk-set-henkan-point): Remove call of skk-int-char because last-char's type is char, not int. (skk-standard-rom-kana-rule-list): Add entries. * many files(Top level form): Add `;;;###autoload's to suppress warnings. 1997-07-15 SAKAI Kiyotaka * skk.el (newline-and-indent): Adviced. (skk-standard-rom-kana-rule-list): Make it constant. Add an entry. * skk-foreword.el (skk-update-autoloads): New function. * skk-tut.el: Now working again. * make-vars.el: New file. 1997-07-14 Murata Shuuichirou * skk.el (skk-debug): New variable. (skk-standard-rom-kana-rule-list): New variable. (skk-get-next-rule): New function. (skk-kana-input): Avoid infifite loop. * skk-kcode.el (skk-input-by-code-or-menu): Add KUTEN input. 1997-07-14 SAKAI Kiyotaka * skk.el (skk-rom-kana-rule-list): Correct wrong entries. * skk-server.el (skk-search-server-subr): Bug fixed. 1997-07-10 Murata Shuuichirou * skk.el (skk-kana-input): Rewritten. (skk-insert-a, skk-insert-i, skk-insert-u, skk-insert-e, skk-insert-o): Removed. (skk-roma-kana-a, skk-roma-kana-i, skk-roma-kana-u, skk-roma-kana-e, skk-roma-kana-o): Removed. (skk-prefix-tree): Removed. (skk-compute-prefix-tree, skk-compute-prefix-tree-1): Removed. (skk-rom-kana-rule-list): Add new entries. (skk-postfix-rule-alist): New variable. (Top level form): Change default key binds. 1997-07-05 Murata Shuuichirou * skk.el (skk-henkan-in-minibuff): Bug fixed. * skk-num.el (skk-raw-number-to-skk-rep, skk-raw-number-to-skk-rep-1): Bug fixed. 1997-07-03 Murata Shuuichirou * skk.el (skk-previous-candidate-char): New variable. (skk-henkan-show-candidates): Use it. (skk-okuri-char-alist): New variable. (skk-translate-okuri-char): New function. (skk-set-okurigana): Add call of skk-translate-okuri-char to use okuri-char made from okurigana instead of skk-okuri-char. (skk-downcase-alist): New variable. (skk-downcase): New function. (skk-set-henkan-point): Use it instead of built-in downcase. 1997-06-19 Murata Shuuichirou * skk.el (skk-update-jisyo): Add call of skk-compute-numeric-henkan-key to make correct jisyo entry for numeric conversion. * skk.el (newline): Add kluge to avoid infinite loop. 1997-06-11 Murata Shuuichirou * skk.el (skk-henkan-strict-okuri-precedence): New variable. (skk-purge-from-jisyo): Use it. (skk-search-jisyo-filr): Ditto. (skk-update-jisyo-1): Ditto. (skk-public-jisyo-contains-p): Ditto. * skk-menu.el (skk-menu-henkan-strict-okuri-precedence): New function. 1997-05-12 Murata Shuuichirou * skk.el (skk-update-jisyo): Bug fixed. 1997-05-07 Mikio Nakajima * skk-gadget.el (skk-date): Bug fixed. * skk-num.el (skk-kanji-num-str2-subr): Bug fixed. (skk-uniq-numerals --- variable): Set default variable according to skk-num-type-list value. (skk-uniq-numerals --- function): Do not work when skk-uniq-numerals is nil. (skk-recompute-numerals): Use skk-henkan-key, skk-henkan-okurigana, skk-okuri-char and skk-use-numeric-conversion variable as its temporary ones. * skk.el (skk-search-jisyo-file, skk-search-jisyo-file-1, skk-update-jisyo, skk-update-jisyo-1): Refer to skk-henkan-key directly. (skk-prefix-tree): Remove `*' from its doc string. (minibuffer-keyboard-quit): Adviced like keyboard-quit or abort-recursive-edit when skk-xemacs is non-nil. XEmacs has minibuffer-keyboard-quit that has nothing to do with delsel. (eval-after-load, set-cursor-color, rassoc, add-to-list): Took them to top level of skk.el from the nested list of skk-foreword.el. XEmacs 20.2 beta4 does not expand a macro in eval-and-load. (skk-start-henkan): Use combine-after-change-calls. 1997-05-05 Murata Shuuichirou * skk.el (skk-get-jisyo-buffer): Bind enable-character-unification to nil. (Top level form): Handed proper arguments to hilit-add-pattern. 1997-05-05 Mikio Nakajima * skk-foreword.el (combine-after-change-calls): Copy from subr.el of gnumule-19.34.94.zeta for Emacs older than 19.33. * skk.el (skk-record-jisyo-data): Use with-temp-file instead of with-temp-buffer. Don't use temporary variable `min'. (skk-kana-input, skk-set-henkan-point, skk-change-marker, skk-change-marker-to-white, skk-delete-henkan-markers): Use combine-after-change-calls. * skk-kakasi.el (skk-gyakubiki-region, skk-gyakubiki-katakana-region, skk-hurigana-region, skk-hurigana-katakana-region, skk-romaji-region): Use combine-after-change-calls. * skk-num.el (skk-adjust-henkan-data-for-numerals): Rename to skk-adjust-numeric-henkan-data. (skk-adjust-numeric-henkan-data): nconc key to skk-henkan-list when key is not a numeric representation. 1997-05-04 Mikio Nakajima * skk.el, skk-num.el: ($B$$$-$J$jF|K\8l$G$9$,(B f(^_^;;;...) $B?tCMJQ49(B $B$K4X$9$kBg2~B$$r9T$J$C$?!#(B SKK $B$G$O!"(B"#1", #2" $B$J$I$N?tCMI=8=$rMQ$$$k$3$H$G!"?tCMJQ49$r9T$J$C(B $B$F$$$k$,!"0JA0$O!"0[$J$k?tCMI=8=$G$bJQ497k2L$,F1$8?tCM$r=EJ#$7$F=P(B $BNO$7$J$$$h$&!"(B~/.skk-jisyo $B$K8uJd$,8+$D$+$C$F$b(B skk-current-search-prog-list $B$,(B null $B$K$J$k$^$G8uJd$rC5$7!"$=$l$+(B $B$i(B uniq $B$r9T$J$C$F$$$?$?$a$K!"?tCMJQ49$K$+$+$k%*!<%P!<%X%C%I$,Bg$-(B $B$+$C$?$,!"0lJ}!"(B $B8!:w(B -> uniq -> $B?tCMJQ49(B $B$H$$$&:n6H$,(B 1 $B2s$G:Q$s$G$$$?$?$a!"(Bskk-henkan-list $B$N07$$$,4JC1$G(B $B$"$C$?(B (uniq $B8e$N(B skk-henkan-list $B$r(B copy $B$7$F(B skk-noconv-henkan-list $B$r:n$j!"(Bskk-henkan-list $B$N3FMWAG$K$O?tCMJQ(B $B498e$NJ8;zNs$KF~$lBX$($F$$$?!#<-=q$N99?7$N$?$a$K$O?tCMJQ49$NFbItI=(B $B8=$H!"?tCMJQ498e$NJ8;zNs$rGD0.$9$kI,MW$,$"$k(B)$B!#(B $B:#2s$N2~B$$G!"8uJd$,(B "#4" $B$N?tCMI=8=$r4^$^$J$$$H$-$O!"0l5$$K(B skk-current-search-prog-list $B$NA4$F$r8!:w$7$F$7$^$o$:$K!"DL>o$NJQ(B $B49$HF1$8$h$&$K8!:w$r9T$J$&$h$&$K$7$?!#JQ49$N$?$a$K(B 1 $B2s%9%Z!<%9$r(B $B2!$9Kh$K(B $B8!:w(B -> uniq -> $B?tCMJQ49(B $B$H$$$&0lO"$N:n6H$r9T$J$&$h$&$K$J$C$F$$$k$N$G!"2?EY$b%9%Z!<%9$r2!$7(B $B$FJQ49$7$^$/$k$H!"(Buniq $B$NEY$K(B skk-henkan-list $B$H(B skk-noconv-henkan-list $B$r%7%s%/%m$5$;$k$N$,Fq$7$/$J$C$F$/$k!#$=$3(B $B$G!"(B $B?tCMJQ49A0$N(B skk-henkan-list; ("#2" "#1" ...) $B?tCMJQ498e$N(B skk-henkan-list; (("#2 . "$B0l(B") ("#1" . "1") ...) $B$H$$$&Iw$K!"(Bskk-henkan-list $B$KD>IU$1$G?tCMJQ49$NFbItI=8=!"$=$N?tCM(B $BJQ49J8;zNs$rI=8=$9$k$h$&$K$7$?(B (uniq $B<+BN$N%3%9%H$O$+$J$j>e$,$C$F(B $B$$$k$O$:(B)$B!#(B * skk.el, skk-auto.el: Change (progn (search-forward "xxx") (point)) to (search-forward "xxx"). search-forward of Emacs 19 returns point after searching. * skk-foreword.el (save-current-buffer, with-current-buffer, with-temp-file, with-temp-buffer, with-output-to-string): Copy from subr.el of gnumule-19.34.94.zeta for Emacs older than 19.33. * skk-menu.el, skk-viper.el: Use save-current-buffer instead of save-excursion. * skk-auto.el, skk-comp.el, skk-isearch.el, skk-kakasi.el, skk-menu.el, skk-server.el, skk-tut.el, skk.el: Use with-current-buffer instead of save-excursion. * skk-kakasi.el, skk.el : Use with-temp-buffer instead of save-excursion. * skk.el (skk-kill-emacs-without-saving-jisyo): ad-activate save-buffers-kill-emacts to remove advice completely. * string.el (string-split): Define with skk-defunsoft. Emacs 20 has it in subr.el. 1997-05-03 Mikio Nakajima * skk-num.el (skk-uniq-numerals): New variable. * skk-menu.el (skk-menu-uniq-numerals): New function. 1997-05-01 Kawashima Manabu * skk-num.el (skk-flatten-list): Rewrite using do loop. 1997-04-30 Kawashima Manabu * skk-num.el (skk-flatten-list): Rewrite. 1997-04-28 Mikio Nakajima * skk.el (skk-version): Don't use temporary variable `date-template'. Bug fixed. (skk-keyboard-quit, skk-newline, skk-delete-backward-char) Deleted. Adviced keyboard-quit, abort-recursive-edit, newline, exit-minibuffer and delete-backward-char. (skk-minibuffer-keyboard-quit): Deleted. Adviced minibuffer-keyboard-quit. (skk-save-point): New macro. Just keep original point --- faster than save-excursion. (skk-toggle-kana, skk-auto-start-henkan, skk-ovwrt-len, skk-set-okurigana, skk-henkan, skk-previous-candidate, skk-start-henkan, skk-backward-and-set-henkan-point, skk-change-marker, skk-change-marker-to-white, skk-delete-henkan-markers, skk-delete-okuri-mark, skk-count-jisyo-candidates, skk-katakana-region, skk-hiragana-region, skk-zenkaku-region, skk-ascii-region, skk-*-henkan-1, skk-henkan-show-candidates): Use skk-save-point instead of save-excursion. * skk-auto.el (skk-okuri-search-subr): Use skk-save-point instead of save-excursion. * skk-menu.el (skk-menu-save-modified-user-option-1): Use skk-save-point instead of save-excursion. * skk-tut.el (skktut-mode): Don't bind C-m of minibuffer-local-map to skk-newline. 1997-04-28 Murata Shuuichirou * skk.el (skk-kana-input): skk-echo $B$,(B t $B$N$H$-(B $B"&%b!<%I$G!":G=i$N0lJ8;z$K%*CJ$NJ8;z$rF~NO$7$?D>8e$KF~NO$7$?BgJ8(B $B;z$,BgJ8;z$H$7$FG'<1$5$l$J$$%P%0$r=$@5!#(B 1997-03-23 Mikio Nakajima * vip.el (vip-get-ex-token, vip-get-ex-buffer, vip-get-ex-count): Use string-to-number instead of string-to-int. * skk-gadget.el (skk-date, skk-time-diff, skk-convert-ad-to-gengo, skk-convert-gengo-to-ad, skk-calc, skk-plus, skk-minus, skk-times): Use string-to-number instead of string-to-int. * skk-auto.el (skk-okuri-search, skk-remove-common): use skk-numeric-p. * skk-num.el (skk-uniq-numerals): Don't use catch and throw construction. (skk-numeric-convert-1): Use save-match-data. * skk-tut.el (skktut-quit-tutorial): ad-activate other-frame and select-frame to remove advices completely. * skk.el (skk-kill-emacs-without-saving-jisyo): Show echo area "XEmacs" when skk-xemacs is non-nil. (skk-undo-kakutei): Undo kakutei even in minibuffer. (skk-numeric-p): New inline function. 1997-03-20 Murata Shuuichirou * (vip-join-lines): Use regexp "\\c|" instead of skk-looking-at-jisx0208. 1997-03-19 Mikio Nakajima * string.el (elib-string-expand-newtext): Use match-string. * skk-num.el (skk-raw-number-to-skk-rep-1): Bug fixed. (skk-compute-numeric-henkan-key): Use match-string. * skk-viper.el (vip-forward-word-kernel, vip-backward-word-kernel): Always use forward-word or backward-word when skk-mode is non-nil. For instance, if we type `w' using forward-word or backward-word only when the following/previous character is JISX0208, -!-Davies$B$5$s$O!"8@$$$^$7$?!#(B the point would be there, Davies$B$5$s$O(B-!-$B!"8@$$$^$7$?!#(B but should be here. Davies-!-$B!"$5$s$O!"8@$$$^$7$?!#(B 1997-03-18 SAKAI Kiyotaka * skk.el (skk-save-jisyo-1): Bind enable-multibyte-characters to non-nil when calling write-region. (skk-jisyo-code): Remove description for Nemacs. * skk-tut.el (skk-tut-file): Refer to "/usr/local/share/skk/SKK.tut". * lp.el: Change file-coding-system-alist to buffer-file-coding-system-alist for XEmacs-20.1-b7. 1997-03-18 Mikio Nakajima * skk-num.el (skk-adjust-henkan-data-for-numerals): Use save-match-data. Convert raw number representation to SKK type representation. (skk-raw-number-to-skk-rep, skk-raw-number-to-skk-rep-1): New functions. 1997-03-17 Mikio Nakajima * vip.el: Apply unofficial patch enclosed in SKK 9.6 package. (provide 'vip) in the end of the file. * skk-vip.el: ** This program has not been tested yet **. (skk-delete-backward-char, skk-vip-change-mode) delete. (delete-backward-char, vip-ESC, vip-insert, vip-Insert, vip-open-line, vip-Open-line, vip-append, vip-Append, vip-overwrite): Adviced. (skk-insert-str): Use skk-insert-and-inherit. (skk-vip-mode): Simplify as SKK 10.x does not use skk-org-mode-line-format and skk-vip-change-mode and VIP 3.x does not use vip-read-string-hook. (skk-ovwrt-len): Only define if (boundp 'vip-ovwrt-limit) is non-nil. (skk-vip-mode-invoked): New variable. 1997-03-16 Mikio Nakajima * skk-viper.el (skk-looking-at-jisx0208) New function. (vip-forward-word-kernel): Adviced. Just forward-word when the following character is JISX0208. (vip-join-lines): Use skk-looking-at-jisx0208. 1997-03-15 Mikio Nakajima * skk-tree.el (skk-tree-load-hook): Use normal defvar. * skk-kcode.el (skk-kcode-load-hook): Use normal defvar. * skk-gadget.el (skk-gadget-load-hook): Use normal defvar. remove skk-month-alist declaration. * skk.el, skk-auto.el, skk-comp.el, skk-num.el: Use skk-deflocalvar. * skk-menu.el: (require 'skk). * skk-foreword.el (skk-deflocalvar, skk-defunsoft): New macro. From viper-util.el and emu.el (tm package). * skk.el: $B%M%9%H$7$F$$$J$$(B defmacro $B$K(B eval-and-compile $B$r;H$&$N$r(B $B;_$a$?!#0JA0$O$3$3$K(B eval-when-compile $B$r;H$C$F$$$?$,!">.NS(B@JAIST $B$5$s$N$4;XE&$G!"(B eval-when-compile $B$r;H$&(B -> skk.el $BFb$K$"$k%^%/%m$O>e $B$G$b(B skk-*.el $BFb$N%^%/%m$O>eB&$NJ8;z%;%C(B $B%H$,(B JISX0208 $B$@$C$?$i%9%Z!<%9$r * skk-menu.el: New file. * skk-viper.el: Viper -> SKK $B$N=g$K5/F0$5$l$?$H$-$O!"4{B8$N%P%C%U%!(B $B$rA4$FD4::$7$F(B localized minor-mode-map-alist $B$G(B SKK $B2=$5$l$F$$$J(B $B$$$b$N$r(B SKK $B$9$k$h$&$K$7$?!#(B * skk-viper.el (vip-intercept-ESC-key): adviced. $BJQ49Cf$K(B ESC $B%-!<(B $B$r2!$9$H3NDj$9$k!#(B * skk-vip.el: revival. Emacs 19.28 $B$G$O(B Viper $B$OAGD>$KF0$+$J$$(B...$B!#(B VIP $B$r;H$$$^$7$g$&!#(B * skk.el (skk-j-mode-map, skk-abbrev-mode-map, skk-zenkaku-mode-map): skk-use-vip $B$,(B non-nil $B$N$H$-$O!"(BM- $B%W%l%U%#%C(B $B%/%9$G;O$^$k%-!<%P%$%s%I$rDj5A$7$J$$$h$&$K$7$?!#(B (skk-setup-special-midashi-char): minor-mode-map-alist $B$r;HMQ$7$?(B $B%-! TAB -> $B!V"&$@$$(B6$B$1$$$d$/$M$s$I!W(B $B$J$I!#(B * skk-num.el (skk-compute-numeric-henkan-key): (enable-multibyte-characters $B$r(B t $B$K%P%$%s%I$9$k$h$&$K$7$?!#(B $B$3$NJQ?t$,(B nil $B$@$HNc$($P(B (string-match "[0-9]" "$B$@$$(B6") $B$,(B non-nil (0) $B$rJV$7$F$7$^$&!#(B 1997-03-13 Hideki Sakurada * skk-forword.el XEmacs $B$G(B skk-unread-event $B$r(B dispatch-event $B$N(B defalias $B$H$7$F$$$?$N$r;_$a!"(Bunread-command-events $B$X(B append $B$9$k(B $B7A$G!"%$%s%i%$%s4X?t$H$7$F * skk-viper.el (vip-del-backward-char-in-insert): adviced. $B"&%b!<(B $B%I!""'%b!<%I$G$NF0$-$r(B SKK $B2=!#(B $B%-!<%^%C%W$ND4@0$N$?$a$K(B vip-normalize-minor-mode-map-alist $B$H(B (setq-default minor-mode-map-alist minor-mode-map-alist) $B$r;HMQ!#(B * skk.el (skk-middle-list): New function. $BNc$($P!"(B'(A B C D) $B$N(B B $B$N8e$K(B '(X Y Z) $B$H$$$&%j%9%H$rA^F~$7!"(B'(A B X Y Z C D) $B$K$9$k!"$H(B $B$$$&:n6H$rI{:nMQ$rMxMQ$7$F8zN(NI$/9T$J$&!#(B * skk-num.el (skk-numeric-convert), skk-auto.el (skk-adjust-search-prog-list-for-auto-okuri): Use skk-middle-list. 1997-03-03 Murata Shuuichirou * skk.el: Viper $B$r(B SKK $B$h$j@h$K%m!<%I$7$F$$$F$b(B VIPER $B$,J;MQ$G$-$k(B $B$h$&$K$7$?!#(B 1997-03-02 Hideki Sakurada * skk-forword.el skk-read-event $B$K(B next-event $B$G$J$/(B next-command-event $B$r;H$&$h$&$K$7$?!#(B * skk-forword.el (skk-this-command-key): $BGQ;_!#(B * skk-isearchl.el: XEmacs $B$G!V$H$j$"$($:F0$/!W$h$&$KJQ99(B ($B$A$c$s$H(B isearch-exit $B$GH4$1$J$$$H$*$+$7$/$J$j$^$9!#(B) 1997-03-02 Murata Shuuichirou * skk-viper.el: minor-mode-map-alist $B$r;H$&(B SKK 10.x $B$r(B Viper $B$KBP(B $B1~$5$;$?!#(B * skk.el: XEmacs $B$G$N(B face $BBP1~!#(B 1997-03-01 Mikio Nakajima * skk.el $BC18lEPO?;~$K(B skk-abbrev-mode $B$d(B eval-expression $B$,;H$($J(B $B$$IT6q9g$r=$@5!#(B skk-yes-or-no-p $B$d(B skk-message $B$r;H$($k$N$K;H$C$F$$$J$+$C$?8D=j$r(B $B=$@5!#(B $B%^%/%m$O%3%s%Q%$%k;~$N$_;HMQ$7!"%m!<%I;~$ODj5A$7$J$$$h$&$KJQ99(B ($B%P(B $B%$%H%3%s%Q%$%k$7$J$$$G;H$&$3$H$O$G$-$J$/$J$j$^$7$?(B)$B!#(B * skk-tut.el (skk-tutorial) : (string< "9.4" "10.1") $B$,0U$KH?$7$F(B nil $B$rJV$9$N$G!"(Bskk-version $B$NHf3S$r?tCM$G9T$J$&$h$&$K$7$?!#(B 1997-02-26 Shuhei KOBAYASHI * skk.el: XEmacs + window-system $BBP1~!#(B (skk-background-mode): BackgroundMode $B$H$$$&(B resource $B$O(B XEmacs $B$K$O$"$j$^$;$s$N$G(B, default $B$N(B face $B$N(B 'background property $B$r;H(B $B$&$3$H$K$7$^$7$?(B. $B$^$?(B, x-color-values $B$KAjEv$9$k4X?t$O(B color-rgb-components $B$J$N$G$9$,(B, $B$3$N0z?t$O(B color-name (string) $B$G$O$J$/(B color-specifier (first-class object) $B$K$J$C$F$$$^$9(B. (skk-default-cursor-color): frame-parameters (frame-properties) $B$G$O$J$<$+(B cursor-color $B$,F@$i$l$^$;$s$N$G(B, frame-property $B$r;H(B $BMQ$7$F$$$^$9(B. (set-cursor-color): New function. (skk-change-cursor-when-ovwrt): bar-cursor $BJQ?t$K(B ovwrt-mode $B$N(B $BCM$rBeF~$9$k7A$K$7$?!#(B 1997-02-28 Mikio Nakajima * skk.el (skk-toggle-kana): $B%+%l%s%H%P%C%U%!$G:G=i$KJQ49$r9T$J$&$^(B $B$G$K"&%b!<%I$G(B skk-toggle-kana $B$r;H$C$FJ?2>L>(B -> $B%+%?%+%JJQ49$r9T(B $B$J$&$H!"%+%l%s%H%P%C%U%!$NA4$F$NJ?2>L>$,%+%?%+%J$KJQ49$5$l$F$7$^$&(B $B%P%0$r%U%#%C%/%9!#(B 1997-02-26 Mikio Nakajima * skk-isearch.el: GNU Emacs $B$GF0$+$J$+$C$?IT6q9g$r=$@5!#(B 1997-02-25 Hideki Sakurada * skk.el (skk-henkan-in-minibuff): read-from-minibuffer $B$r8F$V$H$3(B $B$m$G!"%-!<%^%C%W$H$7$F(B skk-j-mode-map $B$rEO$7$F$$$^$9$,!"$3$l$OB?J,(B $B%^%:$$$H;W$$$^$9!#C<$J$^$^$J$N$O!"(B $B?'$rIU$1$kItJ,$H(B isearch$B!#(B 1997-02-2? Mikio Nakajima * skk.el: skk-e19.el $B$r(B skk.el $B$KE}9g!#$3$NE}9g$K$h$jMW$i$J$/$J$C(B $B$?(B advice $BC#$O%*%j%8%J%k$NCf$X%^!<%8$7$^$7$?!#F1;~$K(B Emacs 18 $BBP1~(B $B%3!<%I$r=|5n!#(B (skk-search-excluding-word-pattern-func): $BFCDj$NJ8;zNs$r8D?M<-=q$K(B $B4X?t$O%a%K%e!<$+$i>e.$5$/$9$k5!G=$rIU$1$^$7$?!#$3(B $B$N5!G=$O!"$*9%$_$G%*%s(B/$B%*%U$G$-$^$9!#(B $B%^%/%m$G$J$-$c:$$k$b$N$@$1%^%/%m$G;D$7!"C1$K%$%s%i%$%s2=$rA@$C$?$b(B $B$N$O(B defsubst $B$r;H$&$h$&$K$7$^$7$?!#(B skk-isearch.el: SKK-8.x $BBP1~%3!<%I$,;D$C$F$$$?$N$G>C$7$^$7$?!#(B Mule 3 $B$G$O(B select-window-hook $B$NGQ;_$,M-NO$J$N$G!"0l1~$3$l$K$J$i(B $B$$!"(Bselect-window-hook $B$rMxMQ$7$F$$$k%3!<%I$rGQ;_$7$^$7$?!#(B $B%P%0%l%]MQ$N4X?t$N%"%I%l%9$,(B SKK ML (for user) $B$K$J$C$F$^$7$?$N$G!"(B $B$3$l$r=$@5$7$^$7$?!#(B SKK $B$r%3%s%Y%s%7%g%J%k$J%^%$%J!<%b!<%I2=$9$k$3$H$K0l1~@.8y$7$^$7$?!#(B $B;EAH$r4JC1$K8@$$$^$9$H!"(Bskk-mode $B$H$$$&%@%_!<$N%^%$%J!<%b!<%I(B (SKK $B$,5/F0$5$l$k$H!"4X?t$HF1L>$NJQ?t$,F~NO%b!<%I$K$+$+$o$i$:(B t $B$K$J$C(B $B$F$*$j!"FH<+$N%^%$%J!<%b!<%I%^%C%W$O;}$?$J$$$,!"%b!<%I%i%$%s$rA`:n(B $B$9$k%-!$lFH<+$N%^%$%J!<%b!<%I%^%C%W$r;}$C$F(B $B$*$j!"$=$l$>$l$N4X?tL>$HF1L>$NJQ?t$,(B t $B$K$J$C$?$H$-$K$=$l$>$l$N%^(B $B%$%J!<%b!<%I$,M-8z$K$J$j$^$9!#%b!<%I%i%$%s$rA`:n$9$kJQ?t$OFH<+$K;}(B $B$?$:!"Be$j$K(B skk-input-mode-string $B$K<+J,$NF~NO%b!<%I$r<($9J8;zNs(B $B$rBeF~$7!"(Bforce-mode-line-update $B$r8F$s$G%b!<%I%i%$%s$NI=<($r99?7(B $B$9$k$h$&$K$J$C$F$$$^$9!#(B skk-j-mode $B$O$+$J!&%+%J%b!<%I$NN>J}$KBP1~$9$k%^%$%J!<%b!<%I%-!<%^%C(B $B%W$r;}$C$F$$$^$9!#$3$l$O!"(Bskk-katakana $B$H$$$&JQ?t$r%-!<$K$7$F!"%-!<(B $B%\!<%IF~NOD>8e$KF~NO$5$l$kJ8;zNs$r7hDj$7$F$*$j!"%-!<%P%$%s%I$H$7$F(B $B$O0lfIW$H;W$o$l$^$9!#(B minor-mode-map-alist $B$rMxMQ$9$k$3$H$G!"(Buse-local-map $B$K(B defadvice $B$9$k!"$H$$$&$h$&$J%H%j%C%-!<$J$3$H$r$;$:$K:Q$`$h$&$K$J$j$^$7$?$7!"(B skk-emulate-original-map $B$,4JC1$K$J$C$?$j$H!"7k9=%=!<%9$O4JAG2=$5(B $B$l$?$h$&$J5$$,$7$^$9!#(B $B$=$NB>!"(BEmacs Lisp Manual $B$rFI$s$G!"(BEmacs $B$N%3%s%Y%s%7%g%J%k$J%M!<(B $B%_%s%05,B'$K$G$-$k$@$1$J$i$&$h$&$K$7!"$^$?!"$=$l0J30$G$b$G$-$k$@$1(B $BE}0lE*$J%M!<%_%s%0$rIU$1$k$h$&$K$7$F$$$k$N$G!"JQ?tL>!"4X?tL>$O!"=>(B $BMh$N$b$N$HJQ99$5$l$F$k$b$N$,?'!9$"$j$^$9!#$3$l$O$* * experimental/skk-jisx0201.el (skk-jisx0201-search-and-replace): New function. (skk-hiragana-to-jisx0201-region): Use `skk-jisx0201-search-and-replace' and bug fixed. (skk-katakana-to-jisx0201-region): Ditto. 1999-10-31 Mikio Nakajima * skk-autoloads.el: Add autoload of `skk-jisx0201-mode', `skk-toggle-katakana' and `skk-jisx0201-henkan'. * SKK-MK (SKK_MODULES): Add `skk-jisx0201' and `skk-hankaku-mode'. * experimental/skk-hankaku-mode.el (skk-hankaku-henkan, skk-hankaku-region, skk-hiragana-to-hankaku-region, skk-katakana-to-hankaku-region): New function. (skk-toggle-zenkaku-hankaku): Convert hiragana/katakana in midasi into hankaku katakana in $B"&(B mode. 1999-10-30 Tsukamoto Tetsuo * experimental/skk-hankaku-mode.el: New experimental program. 1999-10-27 FUKANO Masaaki * doc/skk.texi ($BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B): typo fixed. 1999-10-25 Tsukamoto Tetsuo * skk.el (skk-status-indicator): New variable which decides where to show the current status of SKK. (skk-setup-modeline): New function. (skk-mode): Call it when `skk-init-file' is loaded. Set the value of `skk-input-mode-string' on entering/exiting skk-mode, if `skk-status-indicator' is left. 1999-10-24 Tsuyoshi AKIHO * skk-leim.el (default-input-method): Set `default-input-method' string "japanese-skk" instead of the symbol. 1999-10-23 Mikio Nakajima * skk-autoloads.el: Add autoload of `skk-abbrev-search'. * skk-vars.el: Ditto. * experimental/skk-study.el (skk-study-last-update): New internal variable. (skk-study-last-read): Ditto. (skk-study-time-lessp): New function. (skk-study-save): Refer to `skk-study-last-read', and refer to and set `skk-study-last-save'. (skk-study-read): Set `skk-study-last-read. * SKK-MK (SKK_MODULES): Add skk-abbrev. * experimental/skk-abbrev.el: New experimental program. * skk.el (skk-read-from-minibuffer-function): New user variable. (skk-henkan-in-minibuff): Use `skk-read-from-minibuffer-function'. 1999-10-23 Takeshi Ohmura * make.bat: set EMACS and PREFIX default value to be proper to Meadow 1.10. * READMEs/README.win: Update for Meadow 1.10. 1999-10-22 Mikio Nakajima * skk.el (skk-make-temp-file): New `skk-file-exists-and-writable-p'. Provide "~/tmp" as last choice of working directory. * skk-foreword.el (skk-file-exists-and-writable-p): New inline function. 1999-10-20 Mikio Nakajima * experimental/skk-lookup.el: Require poe.el for `defalias-maybe'. Define `skk-okurigana-prefix' as an alias for `skk-auto-okurigana-prefix' if `skk-okurigana-prefix' is not defined. (skk-lookup-option-alist): New 2th element, search method for okuri-ari and `skk-process-okuri-early' is nil. New 3th element, search method for okuri-ari and `skk-process-okuri-early' is non-nil. Make meaning of 4th element reverse. Not seach if nil. Change :type accordingly. (skk-lookup-default-option-list): New 1th element, search method for okuri-ari and `skk-process-okuri-early' is nil. New 2th element, search method for okuri-ari and `skk-process-okuri-early' is non-nil. Make meaning of 3th element reverse. Not seach if nil. Change :type accordingly. (skk-lookup-get-method): Get proper method according to okurigana and `skk-process-okuri-early'. (skk-lookup-get-nonsearch-sex): Change index accordingly. (skk-lookup-get-pickup-regexp): Ditto. (skk-lookup-get-split-regexp): Ditto. (skk-lookup-process-okurigana): New function. (skk-lookup-search): Use `skk-lookup-process-okurigana'. (skk-lookup-process-heading): Ditto. (skk-lookup-test-regexp): Add doc string. (skk-lookup-pickup-headings): Ditto. * experimental/skk-study.el (skk-study-save): Check coding-system by `find-coding-system', too. * skk.el (skk-auto-okurigana-prefix): Rename to `skk-okurigana-prefix'. (skk-remove-common): Use `skk-okurigana-prefix'. 1999-10-17 Mikio Nakajima * experimental/skk-study.el (skk-study-update): make-ring for `skk-study-data-ring' if nil. * experimental/skk-lookup.el (skk-lookup-option-alist): New 2th element, search method for okuri-nasi. And new 3th element, S expression not to search. (skk-lookup-default-option-list): Likewise. (skk-lookup-get-nonsearch-sex): New inline function. (skk-lookup-get-method): Pick up 1th element when okuri-ari, otherwise 0th. (skk-lookup-search): Change for `skk-lookup-option-alist' and `skk-lookup-default-option-list'. (skk-lookup-process-heading): Likewise. * SKK-MK (SKK-MK-config-package): Removed. (SKK-MK-config): Ditto. (default-load-path): Ditto. 1999-10-16 Mikio Nakajima * skk-leim.el: Specify `japanese-skk' and `japanese-skk-auto-fill' as string for `register-input-method' to work around Emacs bug. 1999-10-15 Mikio Nakajima * skk-num.el (skk-num-recompute): Use `with-temp-buffer' instead of `save-excursion'. * skk.el (skk-reread-private-jisyo): Rename optional argument QUIET to FORCE. 1999-10-15 Takao KAWAMURA , Mikio Nakajima * experimental/skk-study.el (skk-study-read): New optional argument FORCE. 1999-10-15 Mikio Nakajima * experimental/skk-study.el (skk-study-update): Bug fixed. 1999-10-12 Mikio Nakajima * skk-look.el (skk-look-command): Change defcustom type to `file'. * skk-isearch.el (skk-isearch-mode-cleanup): Remove minibuffer hooks. * skk.el (skk-use-relation, skk-use-rdbms): Remove experimental user options. (skk-regularize, skk-purge-from-jisyo, skk-mode, skk-public-jisyo-has-entry-p): Remove `skk-use-relation' and `skk-use-rdbms' related codes. 1999-10-11 Mikio Nakajima * make.bat: Don't set `PACKAGEDIR' and `V_S_LISPDIR' environment variables. 1999-10-10 Mikio Nakajima * experimental/skk-study.el (skk-study-search-1): New function. (skk-study-search): Use `skk-study-search-1'. (skk-study-update): If current update data is just same as the last one, don't save the current one. (skk-study-save): Keep fundamental mode for skk-study-file not to fontify by font-lock.el unnecessarily. (skk-study-read-1): Modify VERSION-STRING accordingly. Check `skk-jisyo-code' by `find-coding-system', too. (skk-study-convert-alist-format): Removed. (skk-study-save): Not to use `skk-study-convert-alist-format'. (skk-kakutei-initialize, skk-undo-kakutei): New advices. 1999-10-07 Mikio Nakajima * skk.el (skk-jisyo-code): :type fixed. (skk-rom-kana-base-rule-list): Doc modified. (skk-rom-kana-rule-list): Ditto. 1999-10-06 Tomotaka SUWA (skk-make-temp-file): Bug fixed. 1999-10-06 Mikio Nakajima * skk.el (skk-remove-common): Assign proper value to `skk-char-okurigana'. * SKK-MK (EMU_PREFIX): get environment variable `EMU_PREFIX' first. 1999-10-05 Mikio Nakajima * experimental/skk-study.el (skk-study-file): Use `convert-standard-filename'. (skk-study-backup-file): Ditto. (skk-study-working-buffer): Remove. (skk-study-read-1): Use `with-temp-buffer' instead of `save-excursion'. Check with `find-coding-system' if `coding-system-p ' returns nil. * experimental/skk-lookup.el (skk-lookup-test-regexp): New function. (skk-lookup-option-alist): Add "IWAKOKU" entry. 1999-10-04 Mikio Nakajima * experimental/skk-lookup.el (skk-lookup-get-method): Search `skk-lookup-option-alist' with index attaching prefix of book's name to NAME. (skk-lookup-get-pickup-regexp): Ditto. (skk-lookup-get-split-regexp): Ditto. (skk-lookup-search-agents): Use `copy-sequence' instead of `copy-list' for compatibility. (skk-lookup-option-alist): Add entries of jedict, GENIUS, GN99EP01, GN99EP02 and NEWANC. (skk-lookup-search): Bug fixed and slightly simplified. * skk-autoloads.el: Update autoloads. 1999-10-03 Mikio Nakajima * skk-vars.el: Update autoloads. * doc/skk.texi ($B$*4j$$(B): Add skk-dic ML e-mail address. * experimental/skk-lookup.el (skk-lookup-pickup-headings): Bind `lookup-gaiji-alternate' to null string and not bind `lookup-enable-gaiji' to nil. (skk-lookup-search): Ditto. New temporary variable PICKUP-REGEXP and SPLIT-REGEXP. Do not use `skk-lookup-process-heading' when both PICKUP-REGEXP and SPLIT-REGEXP is nil. (skk-lookup-process-heading): Simplify slighly. New arguments PICKUP-REGEXP and SPLIT-REGEXP. Discard temporary variable of the same names. Process properly when only SPLIT-REGEXP is specified and PICKUP-REGEXP is nil. * skk.el (skk-mode): Require skk-leim.el when running Mule3, Mule4, XEmacs 20.3 or later. * skk-leim.el: Set `current-language-environment' to "Japanese". Set `default-input-method' to `japanese-skk'. * skk-gadget.el (skk-number-style): Modify document. * skk-tut.el (skk-tut): New group. * skk-isearch.el (skk-isearch-mode-string-alist): Tagify. * (skk-isearch-mode-string-alist): Specify type and tagify. * skk-num.el (skk-num-type-alist): Specify type and tagify. * skk-gadget.el (skk-number-style): Ditto. * skk-server.el (skk-servers-list): Ditto. * skk-kakasi.el (skk-use-kakasi): Bind default variable to return variable of `(exec-installed-p "kakasi")'. * skk-num.el (skk-num-type5-kanji): Bug fixed. * experimental/skk-lookup.el (skk-lookup-search-agents): Use `copy-list' instead of `coyu-sequence'. 1999-10-02 Mikio Nakajima * experimental/skk-lookup.el (skk-lookup-pickup-pattern, skk-lookup-split-pattern): Removed. (skk-lookup-search-agents, skk-lookup-option-alist, skk-lookup-default-option-list, skk-lookup-search-modules): New user variables. (skk-lookup-agent-list, skk-lookup-default-module, skk-lookup-module-list): New internal variables. (skk-lookup-get-method, skk-lookup-get-pickup-regexp, skk-lookup-get-split-regexp): New inline functions. (skk-lookup-search): Use `skk-lookup-default-module'. Bind `lookup-enable-gaiji' to nil not to put out gaiji. Get search method by each dictionary. (skk-lookup-process-heading): Get regexp from name of dictionary. (skk-lookup-default-module, skk-lookup-module-list, skk-lookup-new-module, skk-lookup-agent-list, skk-lookup-pickup-headings): New functions. 1999-09-30 Mikio Nakajima * skk-num.el: Require cl only when compiling. * experimental/skk-lookup.el: Require cl when compiling. (skk-lookup-pickup-pattern): Change regexp for multiple `$B!Z(B' and `$B![(B' pair. (skk-lookup-process-heading): New function. (skk-lookup-search): Use `skk-lookup-process-heading'. * skk-foreword.el (skk-get-current-candidate-simply): Add error checking. * skk.el (kill-buffer): Do `skk-kakutei' only when `kill-buffer' is called interactively. 1999-09-29 Mikio Nakajima * experimental/skk-lookup.el: New file. 1999-09-28 Mikio Nakajima * doc/skk.texi (SKK$B4XO"%=%U%H%&%'%"(B): Add `skkfep$BFbB"(Bjvim' node. 1999-09-27 Mikio Nakajima * experimental/tut-code/skk-tutcdef.el (skk-tutcode-use-touch16+): Add Touch16+ code to `skk-rom-kana-rule-list' when `skk-tutcode-use-touch16+' is non-nil. * experimental/tut-code/skk-tutcode.el (skk-tutcode-display-code-1): Use `skk-char-octet' instead of `char-octet'. (skk-tutcode): New group. (skk-tutcode-use-touch16+): New user variable. 1999-09-26 Mikio Nakajima * doc/skk.texi (SKK$B4XO"%=%U%H%&%'%"(B): Add `SKK95' node. 1999-09-25 Mikio Nakajima * SKK-MK: Rewritten to get Emacs Lisp variables from shell variables in the command line. * skk-kcode.el (skk-input-by-code-or-menu-jump): Use temporary variable `REST' and `CH'. * tinyinstall.el (tinyinstall-add-load-path): New function. * skk-autoloads.el (skk-submit-bug-report): Add `skk-submit-bug-report' entry. * skk-develop.el: Move from experimental directory. (skk-submit-bug-report): Take from skk.el. Define Wanderlust as mail-user-agent when `mail-user-agent' is `wl-user-agent'. (skk-ml-address): Take from skk.el. * skk-kcode.el (skk-display-code): Use `skk-char-octet' instead of `char-octet'. * skk.el (skk-auto-okurigana-prefix): Ditto. (skk-set-henkan-point): Ditto. (skk-make-temp-file): Use `temporary-file-directory'. * skk-viper.el (skk-jisx0208-p): Removed. 1999-09-24 Mikio Nakajima * skk-foreword.el (skk-str-length, skk-substring, skk-read-event, skk-char-to-string, skk-ascii-char-p, skk-str-ref, skk-jisx0208-p, skk-jisx0208-numeric-char-p): Define with `skk-defsubst-cond'. (skk-make-char, skk-charsetp, skk-jisx0208-to-ascii): Define with `skk-defun-cond'. * skk-kcode.el (skk-display-code): New function. (skk-display-code-for-char-at-point): Use `skk-display-code'. * SKK-MK (SKK-MK-config): Recalc `SKK_LISPDIR' variable when `PREFIX' is specified in command line. * doc/skk.texi (SKK$B4XO"%=%U%H%&%'%"(B): Add `dbskkd-cdb' node. 1999-09-23 Mikio Nakajima * experimental/skk-develop.el: `def-edebug-spec' for `skk-defun-cond', `skk-defmacro-cond' and `skk-defsubst-cond'. * experimental/skk-dcomp.el: New file. * skk.el (skk-henkan-face): Simply specify 'highlight. (skk-faces): New group. (skk-henkan-face-on): Define using `defun' instead of `skk-defun-cond'. (skk-henkan-face-off): Ditto. (skk-henkan-face-on): Use `skk-face-on'. (skk-detach-extent): New function. (skk-henkan-face-off): Use 'skk-detach-extent'. (skk-set-jisyo-code): Remove. (skk-get-jisyo-buffer): Not to use `skk-set-jisyo-code'. * skk-foreword.el (skk-defmacro-cond): New macro. (skk-face-on): New macro. * skk-tut.el (skk-tut-section-face): Use `defface' instead of `defcustom'. (skk-tut-do-it-face): Ditto. (skk-tut-question-face): Ditto. (skk-tut-key-bind-face): Ditto. (skk-tut-hint-face): Ditto. 1999-09-22 TSUMURA Tomoaki * skk.el (skk-get-jisyo-buffer): Add check using `find-coding-system' to check using `coding-system-p'. (skk-save-jisyo-1): Ditto. 1999-09-22 Mikio Nakajima * skk.el (skk-face-on): Moved from skk-dcomp.el. (skk-detach-extent): Ditto. (skk-henkan-face-on): Use `skk-face-on'. (skk-henkan-face-off): Use `skk-detach-extent'. * SKK-CFG: Add `APEL_SPECIFIC_LISPDIR' entry. * SKK-MK: Ditto. Require `tinyinstall.el'. Load `SKK-CFG' before cunstructing `load-path'. Add `APEL_SPECIFIC_LISPDIR' directory to `load-path' if `APEL_SPECIFIC_LISPDIR' is existing directory. * tinyinstall.el: New file. 1999-09-21 Masahiko Sato * vip.el (vip-escape-to-emacs): Bug fix. Use (buffer-name old-buff) to check if the buffer OLD-BUFF still exists. 1999-09-20 Mikio Nakajima * skk.el (skk-submit-bug-report): Remove `skk-use-rdbms' from LIST (because it is an experimental option). 1999-09-20 Yuh Ohmura * make.bat: set `PREFIX' variable. * READMEs/README.win: Add description about `PACKAGEDIR'. 1999-09-20 Rei FURUKAWA * skk-foreword.el (skk-make-char): Bug fixed. 1999-09-19 Mikio Nakajima * skk.el (skk-get-jisyo-buffer): Not to use temporary variable `FILE'. Use first argument `FILE' directly instead. 1999-09-17 Mikio Nakajima * SKK-MK (SKK-MK-running-xemacs): New constant. (SKK-MK-texinfo-coding-system): Use `SKK-MK-running-xemacs'. (SKK-MK-install): Call `SKK-MK-cleanup-trouble-makers' when either `SKK-MK-running-xemacs' and `SKK-MK-cleanup-trouble-makers' are non-nil. (SKK-MK-cleanup-trouble-makers): Bug fixed. Bind default variable to nil. (SKK-MK-running-xemacs): Declare on top of file. (SKK-MK-texinfo-coding-system): Ditto. (SKK_MODULES): Add `skk-vars' if `skk-leim.el' is dumped into XEmacs. (skk-vars.el): Revive (for XEmacs dumped with non-package SKK 10.38). * Makefile (CHMOD): New variable. (checkin): New entry. (tar): Refer to `CHMOD' variable. 1999-09-16 Yuh Ohmura * READMEs/README.win: New file. 1999-09-16 Mikio Nakajima * experimental/skk-tutcdef.el: Apply patch of14294.63921.879835.8921F@osaka.email.ne.jp. * SKK-CFG: Add `SKK-MK-cleanup-trouble-makers' entry. * make.bat: Change default EMACS variable to `c:\usr\meadow\1.00\bin\meadow95.exe'. * SKK-MK (SKK-MK-config): Recalculate `LISPDIR', `SKK_DATADIR' and `SKK_INFODIR' when `PREFIX' is specified in command line, and `SKK_LISPDIR' when `LISPDIR is done.' (SKK-MK-config-package): Recalculate `PACKAGE_INFODIR', `SKK_PACKAGE_DATADIR' and `SKK_PACKAGE_LISPDIR' when `PACKAGEDIR' is specified in command line. (SKK-MK-cleanup-trouble-makers): New function. (SKK-MK-install): Not to `cd' DOCDIR, ETCDIR and `..'. (SKK-MK-install-package): Ditto. Call `SKK-MK-cleanup-trouble-makers' if `SKK-MK-cleanup-trouble-makers' is non-nil. (SKK-MK-texinfo-format): Bound `buffer-read-only' to nil. Expand file name of each arg in DOCDIR. * skk-tut.el: Change Iida San's mail address. (skktut-init-variables-alist): Bug fixed. (skk-tut-file): Specify `/usr/local/share/skk' directory for non-package install instead of `data-directory'. * doc/skk.texi: Add `@directry' for XEmacs package install. Remove obsolete `skk-insert-[aiue]' descriptions. 1999-09-15 Mikio Nakajima * skk-foreword.el (skk-package-data-directory): New constant. * skk-tut.el: Require skk.el. (skk-tut-file): Search package installed data file for XEmacs referring to `skk-package-data-directory'. (skk-tut-file-alist): Refer to `skk-tut-file'. * skk.ex: New file to make tarball easily. * Move all lisp program to top directory. * SKK-MK, SKK-CFG: Totally rewritten for easy configurations referring to WL-MK of Wanderlust. * SKK-ELS: discarded. * Makefile: Change for new SKK-MK. * make.bat: Ditto. * skk.el (exit-minibuffer): Adjust `minibuffer-setup-hook' and cursor color before doing actual job. (skk-reread-private-jisyo): Use `with-current-buffer' instead of `save-excursion'. * vip.el: Require poe.el for `convert-standard-filename'. (vip-insert-point, vip-com-point): Set initial value to nil to keep buffer local variable. (vip-move-marker-locally): New macro. (vip-Region, vip-backward-Word, vip-backward-char, vip-backward-paragraph, vip-backward-sentence, vip-backward-word, vip-beginning-of-line, vip-bol-and-skip-white, vip-change-mode, vip-end-of-Word, vip-end-of-word, vip-find-char, vip-find-char-backward, vip-find-char-forward, vip-forward-Word, vip-forward-char, vip-forward-paragraph, vip-forward-sentence, vip-forward-word, vip-goto-char-backward, vip-goto-char-forward, vip-goto-col, vip-goto-eol, vip-goto-line, vip-goto-mark-subr, vip-line, vip-next-line, vip-next-line-at-bol, vip-paren-match, vip-previous-line, vip-previous-line-at-bol, vip-region, vip-repeat-find, vip-repeat-find-opposite, vip-search-backward, vip-search-forward, vip-window-bottom, vip-window-middle, vip-window-top): Use `vip-move-marker-locally' instead of `move-marker'. (vip-escape-to-emacs): Use `eq' instead of `equal' to compare buffer type lisp objects. 1999-09-11 Mikio Nakajima * lisp/vip.el (vip-startup-file): `convert-standard-filename' takes regular UNIX filename only. 1999-09-10 Mikio Nakajima * lisp/skk.el (skk-init-file, skk-jisyo, skk-backup-jisyo, skk-record-file, skk-emacs-id-file): Use `convert-standard-filename'. 1999-09-04 GUNJI Takao * experimental/tut-code/skk-tutcode.el (skk-tutcode-display-code-1): Bug fixed. 1999-09-03 Mikio Nakajima * lisp/skk-foreword.el (skk-uninsertable-p): Removed. * lisp/skk.el (skk-insert): Do not use `skk-uninsertable-p'. 1999-09-02 Mikio Nakajima * lisp/skk-develop.el: Move to experimental directory. * lisp/skk-isearch.el: Require skk.el. Modify install note for isearch-mode-end-hook. * lisp/skk.el (skk-update-jisyo-1): Bug fixed. 1999-08-31 Mikio Nakajima * lisp/SKK-ELS (skk-modules): Add skk-autoloads to `skk-modules'. * lisp/SKK-MK (config-skk-package): Remove skk-autoloads from `skk-modules'. * lisp/skk-foreword.el (skk-erase-prefix): When error is occured by deleting `skk-prefix', initialize `skk-kana-start-point', `skk-prefix' and `skk-current-rule-tree'. * lisp/skk.el (skk-delete-okuri-mark): Check `skk-okurigana-start-point' is a marker. (skk-mode): Require skk-autoloads. 1999-08-30 TSUMURA Tomoaki * lisp/skk-tut.el (skktut-init-variables-alist): Bug fixed. 1999-08-30 Mikio Nakajima * lisp/skk.el (skk-delete-backward-char): Delete `*' and initialize okuri-ari related variables for okuri-ari. 1999-08-29 Mikio Nakajima * lisp/skk-develop.el: Created. * lisp/skk-tut.el (skktut-init-variables-alist): Remove `skk-use-vip' entry. * lisp/skk.el (skk-save-jisyo-original): Initialize `skk-update-jisyo-count'. (skk-update-jisyo-original): Do not initialize `skk-update-jisyo-count'. (skk-kana-cleanup-command-list): New constant. (skk-uninsertable-p): Move skk-foreword.el and make it inline. Define with `skk-defsubst-cond' and check all extents, not just text-properties for XEmacs. (skk-henkan-face-on, skk-henkan-face-off): Use `skk-defun-cond. Use extent for XEmacs. (skk-change-cursor-when-ovwrt): Use `skk-defun-cond. (skk-save-jisyo-original): Call `fillarray' instead of `make-vector'. * lisp/skk-foreword.el (skk-pre-command): Use `skk-kana-cleanup-command-list'. (skk-terminal-face-p): Move to skk.el. (skk-defun-cond, skk-defsubst-cond): New macros (borrowed from poe.el). * lisp/skk-viper.el (skk-viper-or-vip): Rename to `skk-viper-use-vip-prefix'. (skk-viper-normalize-map-function, skk-viper-advice-select, viper-hide-replace-overlay): Use `skk-viper-use-vip-prefix'. 1999-08-29 Masahiko Sato * vip.el (vip-delete-backward-char): skk-mode $B$,(B t $B$N$H$-$N=hM}$r(B $B2~NI!#(B 1999-08-28 Masahiko Sato * vip.el (skk-pre-command): defadvice $B$G(B skk-foreword.el $B$G$NDj5A(B $B$rJQ99!#(B * skk-foreword.el (skk-pre-command): this-command $B$,(B vip-delete-backward-char $B$N>l9g$N=hM}$r(B vip.el $B$K0\$7$?!#(B 1999-08-27 Masahiko Sato * vip.el (vip-skk-mode-on): (add-hook 'pre-command-hook 'skk-pre-command nil 'local) $B$rDI2C!#(B (vip-skk-mode-off): $B0J2<$N9T$r:o=|(B (setq skk-mode nil) (vip-skk-mode-off): (if skk-abbrev-mode (skk-j-mode-on)) $B$r@hF,$KDI2C!#JQ?t(B vip-skk-abbrev-mode $B$,ITMW$K$J$C$?!#(B * skk-foreword.el (skk-pre-command): skk-pre-command $B$r * skk.el: vip $B4XO"$N%3!<%I$r$9$Y$F:o=|!#(B (skk-mode): $B:G=i$K(B skk-mode $B$KF~$C$?$H$-!'(B (require 'skk-autoloads) (if skk-use-numeric-conversion (require 'skk-num)) $B$rDI2C(B. (skk-input-mode-string): buffer local $B$K$7$?!#M}M3$OJ#?t$N(B mode line $B$,$"$k$H$-!"B>$N(B mode line $B$K1F6A$7$J$$$h$&$K$9$k$?$a!#(B (skk-update-jisyo-original): $BCzEY(B skk-jisyo-save-count $B2s$@$1<-=q(B $B$r99?7$7$?$H$-$K%;!<%V$9$k$h$&$K$7$?!#$3$l$^$G$O!"Nc$($P!"(B skk-jisyo-save-count $B$,(B 50 $B$J$i$P(B 51 $B2s99?7$7$?$H$-$K<-=q$,%;!<%V(B $B$5$l$F$$$?!#(B * skk-foreword.el (skk-erase-prefix): skk-kana-start-point $B$,(B (point-max) $B$+$I$&$+$r%A%'%C%/$9$k$h$&$K$7$?!#(B * skk-autoloads.el: (provide 'skk-autoloads) $B$rDI2C!#(B (autoload 'skk-version "skk" nil t nil) $B$r(B comment out$B!#(B * vip.el: minor mode $B$H$7$F 12b (vip-info-on-file): line number $B$N7W;;$r=$@5!#(B (vip-delete-backward-char): $B:G8e$NItJ,$r0J2<$N$h$&$KJQ99!#(B (if (and skk-mode (skk-get-prefix skk-current-rule-tree)) (skk-erase-prefix 'clean) (delete-backward-char val t)))) 1999-08-19 Yuh Ohmura * lisp/skk.el (skk-rom-kana-base-rule-list): Remove `("mm" "c" ("$B%C(B" . "$B$C(B"))' entry. * (skk-rom-kana-rule-list): Add `("mm" "m" ("$B%s(B" . "$B$s(B"))' entry to insert $B!V$,$s$^!W(B by "gamma". 1999-08-19 Mikio Nakajima * lisp/skk-look.el (skk-look-1): Bug fixed. 1999-08-19 GUNJI Takao * lisp/skk.el (skk-kuten-touten-alist): Typo and bug fixed. * (skk-rom-kana-base-rule-list): Bug fixed. * (skk-insert): Enable to include same string as `skk-start-henkan-char' in car of `skk-rom-kana-base-rule-list'. 1999-08-18 TSUMURA Tomoaki * lisp/skk-foreword.el (skk-substring): For mule2. Bug fixed. 1999-08-18 Mikio Nakajima * lisp/skk.el (skk-henkan-face-on): Omit check whether `skk-henkan-start-point' and `skk-henkan-end-point' have really buffer local markers of current buffer. * Do not use CBUF temporary variable. 1999-08-17 SAKAI Kiyotaka * lisp/skk.el (skk-uninsertable-p): New function. * (skk-insert): Use `skk-uninsertable-p' to check if point is really insertable or not. 1999-08-16 Mikio Nakajima * lisp/skk-viper.el (skk-jisx0208-p): Can use on Mule 2 or earlier. * (viper-join-lines): Use `progn' instead of `skk-save-point'. * (vip-join-lines): Ditto. * lisp/skk-vip.el (skk-jisx0208-p): New inline function. * (vip-join-lines): Adviced. Remove white spaces that exists between the joined line if characters of both side are JISX0208. 1999-08-15 Mikio Nakajima * lisp/SKK-ELS: Remove unnecessary `progn'. * Require vip.el even if there is viper.el. * Check 'berkdb feature to examine XEmacs has the database feature. * lisp/skk-vip.el (vip-change-mode-to-vi): Adviced. If `skk-mode' is non-nil, kakutei and turn on skk-latin-mode. * lisp/skk-autoloads.el (skk-vip-mode): Add autoload definition. 1999-08-02 IIDA Yosiaki * lisp/skk-kcode.el (skk-input-by-code-or-menu): Bug fixed. 1999-04-11 Mikio Nakajima * experimental/skk-study.el: New experimental program. * lisp/skk.el (skk-kana-input): Use `skk-get-prefix' to access skk-prefix. (skk-menu-modified-user-option): Removed. 1999-04-10 Mikio Nakajima * lisp/skk-server.el (skk-server): Change group prefix to `skk-server-'. (skk-report-server-response): Renamed to `skk-server-report-response'. (skk-remote-shell-program): Renamed to `skk-server-remote-shell-program'. * lisp/skk-obsolete.el (skk-obsolete-check-all-files): New command. (skk-obsolete-check-all-files-1): New function. (skk-obsolete-check): Renamaed to `skk-obsolete-check-1'. (skk-obsolete-check): Cover function/command for `skk-obsolete-check-1'. Do not check all relative files (check one file per one command session). Enable to designate filename interactively. * lisp/skk-num.el (skk-num): Change group prefix to `skk-num-'. (skk-numeric-conversion-float-num): Rename to `skk-num-convert-float'. (skk-update-jisyo-for-numerals): Renamed to `skk-num-update-jisyo'. (skk-compute-numeric-henkan-key): Renamed to `skk-num-compute-henkan-key'. (skk-numeric-convert): Renamed to `skk-num-convert'. (skk-numeric-convert*7): Renamed to `skk-num-convert*7'. (skk-raw-number-to-skk-rep): Renamed to `skk-num-rawnum-exp'. (skk-raw-number-to-skk-rep-1): Renamed to `skk-num-rawnum-exp-1'. (skk-flatten-list): Renamed to `skk-num-flatten-list'. (skk-jisx0208-latin-num-str): Renamed to `skk-num-jisx0208-latin'. (skk-shogi-num-str): Renamed to `skk-num-shogi'. (skk-recompute-numerals): Renamed to `skk-num-recompute'. (skk-recompute-numerals-key): Renamed to `skk-num-recompute-key'. (skk-uniq-numerals): Renamed to `skk-num-uniq'. (skk-init-numeric-conversion-variables): Renamed to `skk-num-initialize'. (skk-numeric-midasi-word): Renamed to `skk-num-henkan-key'. (skk-kanji-num-str): Renamed to `skk-num-type2-kanji'. (skk-kanji-num-str2): Renamed to `skk-num-type3-kanji'. (skk-kanji-num-str2-subr): Renamed to `skk-num-type3-kanji-1'. (skk-kanji-num-str3): Renamed to `skk-num-type5-kanji'. (skk-kanji-num-str3-subr): Renamed to `skk-num-type5-kanji-1'. (skk-adjust-numeric-henkan-data): Renamed to `skk-num-process-user-minibuf-input'. * lisp/skk.el (skk-kakutei-cleanup-henkan-buffer): Renamed to `skk-kakutei-cleanup-buffer' (Shorten its name). * lisp/skk-vip.el (skk-kakutei-cleanup-henkan-buffer): Likewise. * lisp/skk-num.el (skk-last-num-list, skk-init-numeric-conversion-variables): Remove `skk-last-num-list' (Merged into `skk-last-henkan-data'). * lisp/skk-foreword.el (skk-mode-off): Remove `skk-last-henkan-results'. * experimental/dbm/skk-dbm.el (skk-dbm-update-jisyo): Likwise. * lisp/skk.el (skk-setup-auto-paren): Remove unnecessary temporary variable `cell'. (skk-update-jisyo-original): Remove temporary variable `last'. Add `henkan-buffer'. (skk-search-jisyo-file): Add temporary variable `henkan-buffer'. (skk-kakutei): Remove `skk-last-henkan-results'. (skk-last-kakutei-henkan-key, skk-henkan-1, skk-previous-candidate): Remove `skk-last-kakutei-henkan-key'. (skk-last-henkan-key, skk-last-henkan-okurigana, skk-last-henkan-list, skk-last-okuri-char): Merged into `skk-last-henkan-data'. (skk-previous-candidate, skk-undo-kakutei): Use `skk-get-last-henkan-data'. (skk-kakutei-save-and-init-variables): Renamed to `skk-kakutei-initialize' (Shorten its name). * lisp/skk-foreword.el (skk-get-last-henkan-data): New inline function. * lisp/skk-tut.el (skktut-end-tutorial): Remove unnecessary temporary variable `exit'. * experimental/skk-attr.el (skk-attr-default-update-function): Removed. * lisp/skk.el (skk-search-jisyo-file): Funcall `skk-search-end-function' instead of `skk-attr-search-function'. * experimental/dbm/skk-dbm.el (skk-dbm-search-jisyo-database): Likewise. * lisp/skk.el (skk-update-jisyo-original): Funcall `skk-update-end-function' instead of `skk-update-relation. * experimental/dbm/skk-dbm.el (skk-dbm-update-jisyo): Likewise. * lisp/skk.el (skk-search-end-function, skk-update-end-function): New user variables. 1999-04-08 Mikio Nakajima * lisp/skk.el (skk-mode): Do not funcall `skk-viper-normalize-map-function' (as it is called in skk-viper.el). * lisp/skk-tut.el (skktut-enable-tutmap): Bind `inhibit-quit' to t. (skktut-disable-tutmap): Likewise. * lisp/skk-kakasi.el (skk-gyakubiki-region): Do not use `combine-after-change-calls'. (skk-gyakubiki-katakana-region): Likewise. (skk-hurigana-region): Likewise. (skk-hurigana-katakana-region): Likewise. (skk-romaji-region): Likewise. * lisp/skk-tut.el (skktut-enable-tutmap, skktut-disable-tutmap): Use `set-modified-alist'. * lisp/skk-viper.el (skk-viper-normalize-map): Likewise. * lisp/skk-server.el (skk-adjust-search-prog-list-for-server-search): Use `remove-alist'. 1999-04-07 Mikio Nakajima * lisp/SKK-CFG: Search APEL installed directory and add it to load-path. 1999-04-05 Mikio Nakajima * lisp/skk-foreword.el: Require alist.el. * lisp/skk.el: Use `set-modified-alist' for minor-mode-map-alist. (skk-henkan-show-candidates): Print null message to clear out candidates in echo area after a candidate are selected. (skk-setup-auto-paren): Use `remove-alist'. 1999-04-03 Mikio Nakajima * lisp/skk.el (minibuffer-exit-hook): Use `remove-hook' instead of `remove-local-hook'. * lisp/skk-foreword.el (skk-mode-off): Likewise. * lisp/skk.el (abort-recursive-edit, query-replace-regexp, query-replace, minibuffer-keyboard-quit, skk-mode, skk-henkan-in-minibuff, minibuffer-exit-hook): Use `add-hook' instead of `add-local-hook'. * lisp/skk-obsolete.el (skk-obsolete-function-alist): Add `(skk-set-cursor-color-properly . skk-set-cursor-properly)' entry. 1999-03-27 Mikio Nakajima * lisp/skk-look.el (skk-look-1): Do not output null candidate. (skk-look-working-buffer): Downcase its name. 1999-03-27 Yuh Ohmura * lisp/make.bat: Created. 1999-03-26 Mikio Nakajima * lisp/skk-kcode.el (skk-input-by-code-or-menu-jump): Use `?\040' instead of `?\ '. 1999-03-25 Mikio Nakajima * experimental/dbm/skk-dbm.el (skk-dbm-make-jisyo): Use `insert-file-contents-as-coding-system' instead of `insert-file-contents'. 1999-03-22 SUZUKI Hitoshi * lisp/skk-look.el (skk-look-1): Bug fixed. 1999-03-22 Mikio Nakajima * lisp/skk-tut.el (kill-buffer): Remove unnecessary `interactive' form. * lisp/skk-isearch.el (skk-isearch): Change `skk-' prefix to `skk-isearch'. * lisp/skk-kcode.el (skk-kcode): Likewise. * lisp/skk-look.el (skk-look): Likewise. * experimental/dbm/skk-dbm.el (skk-dbm): Likewise. * lisp/skk-kcode.el: Rearrange `;;;###autoload' cookies, (skk-kcode-load-hook): Bug fixed. * lisp/skk.el: Rearrange `;;;###autoload' cookies, (skk-save-jisyo-1): Use `write-region-as-coding-system' instead of `write-region'. (skk-get-jisyo-buffer): Use `insert-file-contents-as-coding-system' instead of `insert-file-contents'. (skk-set-jisyo-code): Remove `set-file-coding-system' (APEL has an alias to `set-buffer-file-coding-system'). 1999-03-20 Mikio Nakajima * lisp/skk-num.el (skk-numeric-convert): Hand integer instead of character to `skk-num-exp'. (skk-num-type-alist): Change each element of alist `(character . function)' to `(integer . function)'. * lisp/skk-isearch.el (skk-isearch-mode-string-alist, skk-isearch-start-mode, skk-isearch-use-previous-mode, skk-isearch-initial-mode-when-skk-mode-disabled, skk-isearch-whitespace-regexp): Documented in Japanese. * lisp/skk-comp.el (skk-dabbrev-like-completion): Doc improved. 1999-03-16 Mikio Nakajima * lisp/skk-foreword.el (skk-make-raw-arg): Bug fixed. 1999-03-14 Mikio Nakajima * lisp/skk.el (skk-make-face, skk-remove-common): Remove unused temporary variable. * lisp/skk-server.el (skk-open-server-1): Likewise. * lisp/skk-kakasi.el (skk-hurigana-1): Likewise. * lisp/skk-auto.el (skk-okuri-search-subr-original): Likewise. 1999-03-09 Seiichi NAMBA * lisp/skk.el (newline): Work around with `do-auto-fill' which always returns t. 1999-03-01 Kenji Yamashita * lisp/skk-kcode.el (skk-display-code-for-char-at-point): Bug fixed. 1999-02-20 $B>>0f9'M:(B/MATUI Takao * lisp/skk-isearch.el (skk-isearch-breakable-character-p-function): Bug fixed. 1999-02-19 Murata Shuuichirou * lisp/skk-leim.el (skk-auto-fill-inactivate): New function. * (skk-auto-fill-activate): Bug fixed. 1999-02-11 Mikio Nakajima * lisp/skk-obsolete.el (skk-obsolete-variable-alist): Put in `skk-num-type-list' and `skk-num-type-alist' pair. * lisp/skk-num.el (skk-kanji-num-str2-subr, skk-kanji-num-str3-subr): Bug fixed. (skk-last-num-list): New internal variable. (skk-init-numeric-conversion-variables): Keep previous variable of `skk-num-list' in `skk-last-num-list'. (skk-num-type-list): Renamed to `skk-num-type-alist'. * lisp/skk.el (skk-undo-kakutei): Bug fixed. 1999-02-07 Mikio Nakajima * lisp/skk-kcode.el: (skk-jis-char-to-hex): Removed. (skk-char-to-hex): New optional arg JISCHAR. (skk-input-by-code-or-menu): Use `skk-error' instead of `error'. * lisp/skk-num.el (skk-kanji-num-str2-subr): Bug fixed. (skk-compute-numeric-henkan-key): Can use `,' in midasi number key. (skk-kanji-num-str3-subr): New function. (skk-num-alist-type5): New constant. 1999-01-31 Mikio Nakajima * lisp/skk-foreword.el (skk-with-point-move): New macro. (skk-after-point-move): New inline function. * lisp/skk.el (skk-previous-point): New internal local variable. (skk-mode): Make `post-command-hook' local variable and add `skk-after-point-move' to the hook. (skk-try-completion, skk-insert, skk-abbrev-period, skk-abbrev-comma, skk-jisx0208-latin-insert, skk-delete-backward-char, skk-previous-candidate, skk-kakutei, skk-undo-kakutei, skk-start-henkan, skk-set-henkan-point-subr, skk-purge-from-jisyo, skk-hiragana-henkan, skk-jisx0208-latin-henkan, skk-latin-henkan): Use `skk-with-point-move'. 1999-01-27 Mikio Nakajima * lisp/skk-isearch.el (skk-isearch-mode-cleanup): Synchronize mode-line string with the current insert mode. 1999-01-26 Murata Shuuichirou * lisp/skk.el (skk-lisp-prog-p): Bug fixed. 1999-01-20 Hideki SAKURADA * lisp/skk-attr.el, lisp/skk-dbm.el, lisp/skk-look.el, lisp/skk-rdbms.el: Symbolic link removed. * lisp/Makefile.am (SOURCES, EXTRA_DIST): Prepend pathnames like `../experimental' to some targets. Move skk-obsoletes.el. (install-lispLISP, uninstall-lispLISP): New target to install all elc in $(DESTDIR)$(lispdir) using basename. (clean-lisp): New target to clean not only $(ELCFILES) but also skk-vars.el. * lisp/make-vars.el (skk-files): Removed. (make-skk-vars): Use command-line-args-left instead of skk-files. 1999-01-19 Mikio Nakajima * lisp/skk.el (skk-katakana-henkan, skk-hiragana-henkan, skk-jisx0208-latin-henkan, skk-latin-henkan, skk-*-henkan-1): Bug fixed. 1999-01-16 Mikio Nakajima * experimental/dbm/skk-dbm.el (skk-dbm-database-subtype): New user variable. (skk-dbm-get-jisyo-database): Determine database type, subtype, and opening permission according to its file name and hand them as options to `open-database'. Do writable check of directory only when dictionary is private one. (skk-dbm-make-jisyo): Determine coding-system-for-read according to `skk-jisyo-code'. `set-database-property' only for gdbm file. Create new optional arg SUBTYPE. (skk-dbm-large-jisyo): Change its default value to berkeley-db type file naming. * lisp/Makefile.am (SOURCES): Comment out skk-dbm.el and skk-rdbms.el. 1999-01-16 Murata Shuuichirou * lisp/skk.el (skk-delete-backward-char): Bug fixed. 1999-01-08 Takao KAWAMURA * lisp/skk.el (skk-kill-emacs-without-saving-jisyo): Bug fixed. 1999-01-02 Mikio Nakajima * experimental/dbm/skk-dbm.el: Add new experimental program. ;; Local Variables: ;; coding: iso-2022-jp ;; End: ddskk-15.2/ChangeLog.20000644000570400056700000007601611675101126014526 0ustar kitamotoopenlab2000-10-30 Mikio Nakajima * SKK 10.62a released. * skk.el (skk-version): Change to 10.62a. * Makefile (VERSION): Updated to 10.62a. (tar): Change skk-$(VERSION) to skk$(VERSION) for file name of tar ball. (snapshot): Ditto. * SKK 10.62 released. * doc/skk.texi (EDITION): Updated to 1.5. ($B1QC18l$r$"$$$^$$$KJQ49$7$F * doc/skk.texi: "$B<-=q$NF~ * READMEs/FAQ.txt (Emacs 20 $B$K(B SKK 9.6 $B$,%$%s%9%H!<%k$G$-$^$;$s!#(B, $BA4$/4A;z$,=P$F$-$^$;$s!#(B, $B%A%e!<%H%j%"%k$,5/F0$G$-$^$;$s!#(B, $B%9%Z!<(B $B%9$r2!$7$F$bJQ49$G$-$^$;$s!#(B): New questions. * READMEs/NEWS: Add description. * doc/skk-faq.texi (Emacs 20 $B$K(B SKK 9.6 $B$,%$%s%9%H!<%k$G$-$^$;$s!#(B, $BA4$/4A;z$,=P$F$-$^$;$s!#(B, $B%A%e!<%H%j%"%k$,5/F0$G$-$^$;$s!#(B, $B%9%Z!<(B $B%9$r2!$7$F$bJQ49$G$-$^$;$s!#(B): New subsections. 2000-10-25 Mikio Nakajima * doc/skk-faq.texi (Q.1-4 SKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H(B $B$($^$9$+!)(B): Add cross reference to `Q.2-4 APEL $B$C$F2?$G$9$+!)(B'. (Q.1-7 APEL $B$K0MB8$;$:$K(B SKK $B$@$1$G:Q$`$h$&$K3+H/$7$F$b$i$($^$;$s(B $B$+!)(B): Ditto. (Q.2-5 $B?'!9JL$KF~ * READMES/FAQ.txt ($B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B): New question. * doc/skk-faq.texi ($B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B): New subsection. 2000-10-23 Tsuyoshi AKIHO * READMEs/README.win: Maintrunk $BMQ$N@_Dj$KJQ99!#(BMule for Windows $B$G$O(B SKK-CFG $B$rJT=8$9$k$3$H$rDI2C!#(B 2000-10-22 Tetsuo Tsukamoto * doc/{skk-faq.texi, skk.texi}: Some modifications for TeX. 2000-10-22 Mikio Nakajima * doc/skk.texi: Change maintainer's name to SKK Development Team . * doc/skk-faq.texi: Add header. * doc/skk.texi: Call `texinfo-every-node-update' and `texinfo-all-menus-update'. (APEL $B$N%$%s%9%H!<%k(B): Add reference to $B!V(BQ.2-4 APEL $B$C$F2?$G$9$+!)!W(B. * doc/skk-faq.texi: Use `@code', `@file' `@samp' `@kbd' `@key', `@example', `@enumerate' commands. Add cindex, vindex and kindex. Call `texinfo-every-node-update' and `texinfo-all-menus-update'. ([Q.4-4] SKK $B7A<0$N1QOB<-=q$r:n$kJ}K!$,$"$k!"$HJ9$$$?$N$G$9$,!#(B): Change node name to `[Q.4-4] SKK $B7A<0$N1QOB<-=q$,$"$k$HJ9$$$?$N$G(B $B$9$,!#(B 'Add description about how to get `SKK-JISYO.edict'. * skk.el (skk-abbrev-comma): Bug fixed. 2000-10-22 Tetsuo Tsukamoto * doc/skk-faq.texi: Clean up. 2000-10-21 Tetsuo Tsukamoto * doc/skk.texi: Typo. 2000-10-21 Mikio Nakajima * doc/skk.texi: Unify the words $B!V%G%#%l%/%H%j%#!W(Bto$B!V%G%#%l%/%H%j!W(B and $B!V%(%s%H%j!L>$,L5$$>l9g$N<-=qEPO?(B): Ditto. ($BAw$j2>L>$,L5$$>l9g(B): Change reference node $B!V<-=q$N7A<0!W(B to $B!VAw(B $B$j$"$j%(%s%H%j$HAw$j$J$7%(%s%H%j!W(B. ($BAw$j2>L>$,M-$k>l9g(B): Change reference node $B!V<-=qEPO?%b!<%I!W(B to $B!V%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U!W(B. (SKK Ring Server Openlab $B%a!<%j%s%0%j%9%H(B): Do not use the word $B!V9VFI!W(B. Add description about how to read news via http. (skkdic-expr): Add description about `skkdic-sort', put on cindex skkdic-sort and reference to skkdic-sort. (skkdic-sort): Add description about `skkdic-expr', put on cindex skkdic-expr and reference to skkdic-expr. ($B%W%m%0%i%`:n@.J}K!(B): Use `@file' for skkdic-expr, `@code' for ndbm and gdbm, and @var for TMPDIR Use `@var' for CFLAGS instead of `@code'. * READMEs/README.win: Sync up with daredevil's one. Change APEL version 10.2 to 9.22. 2000-10-19 Tetsuo Tsukamoto * READMEs/NEWS: Add description for SKK 10.62. * doc/skk.texi (SKK-VERSION): Bump up to 10.62. * skk.el (skk-version): Bump up to 10.62 {not yet released}. 2000-10-18 Tetsuo Tsukamoto * skk-cursor.el (kill-buffer, select-frame, other-window, switch-to-buffer, recenter): Call `interactive' with args. * skk-tut.el (kill-buffer): Ditto. * skk.el (kill-buffer): Ditto. 2000-10-15 Tsuyoshi AKIHO * doc/skk.texi: Fix links. 2000-10-14 Tetsuo Tsukamoto * doc/gpl.texi: No longer in the repository. * doc/skk-faq.texi: Sync with FAQ.txt. * doc/skk.texi ($B$h$/$"$k * SKK-MK (SKK_LISPDIR): "make PREFIX=dir install" $B$G(B PREFIX $B$N$H(B $B$*$j$K(B elisp $B$,%$%s%9%H!<%k$5$l$k$h$&$K=$@5(B. 2000-10-12 Tetsuo Tsukamoto * skk-foreword.el (skk-emacs-type): Check the feature `xemacs'. * skk-gadget.el: Require "static" at compile time. (skk-clock): Sync with daredevil branch. 2000-10-11 Tetsuo Tsukamoto * doc/skk.texi: Fix links. * skk-tut.el, skk.el: Replace `canna-henkan-region-or-self-insert' with `skk-insert'. * skk.el (skk-setup-modeline): Don't use `mapcar'. 2000-10-10 Tetsuo Tsukamoto * doc/skk.texi: Fix links. (Perl $B$K$h$k%D!<%k(B): Fix. 2000-10-09 Tetsuo Tsukamoto * doc/skk.texi ($B$I$N$h$&$KJQ49$5$l$k$+(B): Use `@samp'. 2000-10-09 Tsuyoshi AKIHO * doc/skk.texi: "$B%5!<%P!<(B" $B$r(B "$B%5!<%P(B" $B$KE}0l!#(B "$B%$%s%9%H!<%k(B" $B$N>O$rDI2C!#(B 2000-10-08 Tetsuo Tsukamoto * skk.el (skk-count-jisyo-candidates): Use `default-directory' instead of "~/". Show "candidate" instead of "candidates" if `count' is 1. 2000-10-07 Tetsuo Tsukamoto * doc/skk.texi ($B<-=q%D!<%k(B, $B3HD%%"%$%G%#%"(B, SKK$B%a!<%j%s%0%j%9%H(B, SKK$B4XO"%=%U%H%&%'%"(B): $B!V$G$9$^$9!WD4$KJQ99!#(B 2000-10-05 Tetsuo Tsukamoto * doc/skk.texi ($B>~$j$D$1(B, VIP/VIPER$B$H$NJ;MQ(B, I-search$B4XO"(B, skk-init-file$B$N%3%s%Q%$%k(B, picture-mode$B$H$NJ;MQ(B, $B%5!<%P!<4XO"(B): $B!V$G$9$^$9!WD4$KJQ99!#(B * skk.el (skk-count-jisyo-candidates): Show "candidates", not "entries". (skk-count-jisyo-candidates-original): Don't search slashes in midashi words. 2000-10-04 Tetsuo Tsukamoto * doc/skk.texi ($BAw$j2>L>4XO"(B, $B<+F0JQ493+;O(B, $BFC * READMEs/FAQ.txt: Change filename description in end of filename tag. 2000-10-03 Tetsuo Tsukamoto * doc/skk.texi ($BF~NO%b!<%I$N0l;~JQ99(B, $B"#%b!<%I$K$*$1$kJ8;zF~NO(B, $B%](B $B%$%s%H$rLa$7$F"&%b!<%I$X(B, $B3NDjJQ49$H$=$NC$7(B, $B3NDj%"%s%I%%(B, $B8+(B $B=P$78l4XO"(B): $B!V$G$9$^$9!WD4$KJQ99!#(B ($B5l%P!<%8%g%s$+$i$NJQ99E@(B): New chapter. 2000-10-02 Tetsuo Tsukamoto * doc/skk.texi ($B%U%!%$%k9=@.(B, $B%f!<%6!<%*%W%7%g%s$N@_DjJ}K!(B, $B<-=q$N(B $B7A<0(B, $B<-=q$K4X$9$k@_Dj(B): $B!V$G$9$^$9!WD4$KJQ99!#(B 2000-10-01 Tsuyoshi AKIHO * doc/skk.texi: "$B<-=q%5!<%P$r;H$$$?$$$H$-$N@_Dj(B" typo fix. "$B%A%e!<%H%j%"%k(B" $B1Q8l$N%A%e!<%H%j%"%k%U%!%$%k$K$D$$$F5-=R(B. "$B%U%!%$%k9=@.(B" $B%U%!%$%kL>$r(B sort $B$7$?=gHV$KJQ99$7(B, skk-cursor.el, skk-develop $B$N5-=R$rDI2C(B. "$B8+=P$78l$NJd40(B" $B8+0W$$$h$&$K(B space $B$rDI2C(B. 2000-10-01 Mikio Nakajima * skk-lookup.el: Require bitmap when running on MULE. * skk-num.el (skk-num-convert): Comment fixed. (skk-num-process-user-minibuf-input): Use `save-match-data'. 2000-09-29 Mikio Nakajima * READMEs/FAQ.txt: Fixed a description about $B!V8!:w$9$k<-=q$rA}$d(B $B$7$?$$$N$G$9$,!W(B. 2000-09-29 Tsuyoshi AKIHO * READMEs/FAQ.txt: Add an answer about $B!VM9JXHV9f<-=q!W(B. 2000-09-29 Mikio Nakajima * READMEs/FAQ.txt: Add a description about $B!V8!:w$9$k<-=q$rA}$d$7(B $B$?$$$N$G$9$,!W(B. * READMEs/skk-faq.txt: Rename to FAQ.txt. 2000-09-28 Shuhei KOBAYASHI * skk.el: (skk-insert, skk-previous-candidate): Fix interactive spec. 2000-09-28 Tsuyoshi AKIHO * ptexinfmt.el: @multitable bug fix (TAKAHASHI Kaoru $B$5$sDs6!(B, Thanks). * doc/skk.texi: SKK$B%*!<%H%U%#%k%b!<%I(B , SKK Ring Server Openlab $B%a!<%j%s%0%j%9%H(B typo fix. skk-lookup.el $B$N5-=R$rDI2C(B. tools $B$NF~ * doc/skk.texi (SKK 9 $B$H(B SKK 10 $B$N0c$$(B): New section. (SKK$B$NF~ * doc/skk.texi ($B4pK\E*$J;HMQJ}K!(B): $B!V$G$9$^$9!WD4$r:NMQ!#(B Don't use concept index for variables and functions. Fix node dependencies. 2000-09-25 Mikio Nakajima * READMEs/skk-faq.txt: Update a description about how to get skk-tools. 2000-09-25 Tetsuo Tsukamoto * ptexinfmt.el: Sync with Wanderlust. 2000-09-22 Tsuyoshi AKIHO * doc/skk.texi: `$B%A%e!<%H%j%"%k(B'$B$rDI2C(B. `stack-m.el' $B$N5-=R:o=|(B. `SKK Ring Server Openlab $B%a!<%j%s%0%j%9%H(B'$B$rDI2C(B. `$B:G?7>pJs(B'$B$rDI2C(B. `$B$=$NB>(B'$B$r(B`$B:G?7>pJs$J$I(B'$B$KJQ99(B. 2000-09-21 Tsuyoshi AKIHO * skk-tut.el (skktut-end-tutorial): Change address to skk@ring.gr.jp. * doc/skk.texi ($B:G$b4pK\E*$J@_Dj(B): typo fix. * SKK-MK: Mule for Windows$BBP:v$H$7$F(B, SKK-MK-compile-info-for-mule4win32 $B$rDI2C(B. * make.bat: info-mule-for-win $B%(%s%H%j$rDI2C(B. del $B$G$N%U%!%$%k:o=|(B $B$rJ,$1$k(B. * Makefile (info-mule-for-win): New target. * READMEs/README.win: MAKE.BAT info-mule-for-win $B$N5-=RDI2C(B. 2000-09-18 Tsuyoshi AKIHO * doc/skk.texi ($B$O$8$a$K(B): New chapter. 2000-09-16 Tetsuo Tsukamoto * SKK-CFG: Rewrite. 2000-09-16 Mikio Nakajima * READMEs/README: Sync up with Daredevil's one. 2000-09-15 Tetsuo Tsukamoto * READMEs/CVS_on_Windows: Update. * doc/skk.texi ($BG[I[>r7o(B, $B35MW(B): Remove these chapters. ($B$O$8$a$N@_Dj(B): <= chapter `$B%$%s%9%H!<%k(B'. Simplify. ($B$=$NB>(B): <= chapter `$B * READMEs/skk-faq.txt: New file. * READMEs/Contributors (Contributors): Change Akiho san's e-mail address. 2000-09-14 Mikio Nakajima * skk-develop.el (skk-ml-address): Change address to skk@ring.gr.jp. 2000-09-14 Tsuyoshi AKIHO * doc/skk.texi: $B%a%K%e!<$K(B $BG[I[>r7o(B $B$rDI2C(B. * skk-gadget.el: eval-when-compile $B$r:o=|(B. * skk-kakasi.el: (require 'skk-cursor)$B$r:o=|(B. (skk-set-cursor-properly) $B$r;H$&A0$K(B, (featurep 'skk-cursor) $B$G(B skk-cursor $B$,(B load $B$5$l$F$$$k$+(B check $B$9$k(B. * experimental/skk-hankaku-mode.el: $BF1>e(B. * experimental/rdbms/skk-rdbms.el: $BF1>e(B. * experimental/skk-jisx0201.el: $BF1>e(B. skk-set-cursor-color $B$r;H$&(B $BA0$K(B, (featurep 'skk-cursor) $B$G(B skk-cursor $B$,(B load $B$5$l$F$$$k$+(B check $B$9$k(B. 2000-09-13 Tetsuo Tsukamoto * Makefile (what-where-package): Use $(XEMACS). * SKK-MK (SKK-MK-running-xemacs): Abolish. Check the feature xemacs instead. (SKK_INFOS): Abolish. Stop guessing how many files resulting info will be split into. (SKK_INFO): New variable. (PACKAGE_DATADIR): <= `SKK_PACKAGE_DATADIR'. (PACKAGE_LISPDIR): <= `SKK_PACKAGE_LISPDIR'. * skk-num.el (skk-num): Add autoload cookie. 2000-09-12 Mikio Nakajima * READMEs/CVS_digest: Sync up with the files distributed as daredevil. * Makefile (DATE): Do not use universal time. (MD5): New variable. (SNAPBASE): Ditto. (TAR): Do not specify absolute path. (tar): Rearrange for making archive in openlab.ring.gr.jp. (snapshot): Ditto. (clean): Remove files that match `.#*' (files which make by CVS when it finds there are conflicts). 2000-09-11 Tetsuo Tsukamoto * skk-num.el (skk-num-list): Remove autoload cookie. 2000-09-10 Mikio Nakajima * Makefile (snapshot): Bug fixed. (TAR): Bug fixed. * Makefile (tar): Modify to make archive in openlab.ring.gr.jp. (snapshot): Ditto. * skk-lookup.el: Moved from experimental directory. * skk-faq.txt: New file. * doc/skk.texi ($BF~NO%b!<%I$N0l;~JQ99(B): Typo fixed. * skk-look.el: Modify comment. 2000-09-09 Tetsuo Tsukamoto * skk.el (skk-coding-system-alist): sjis => shift_jis. 2000-09-08 Tsuyoshi AKIHO * skk.el (skk-get-jisyo-buffer):skk-jisyo-code $B$,%7%s%\%k$+(B check $B$9$k!#(B (skk-save-jisyo-1):$BF1>e(B * doc/skk.texi:dbskkd-cdb $BG[I[@h(B, KAKASI, $B3HD%%"%$%G%#%"(B, $B5/F0$H=*(B $BN;(B, $B4pK\E*$J;HMQJ}K!(B, $B:G$b4pK\E*$J@_Dj(B update & $B<-=q%P%C%U%!$NJ8;z(B $B%3!<%I$N@_Dj(B typo fix * skk-kakasi.el:(require 'skk) $B$G(B eval-when-compile $B$r;H$o$J$$!#(B (require 'skk-cursor)$B$rDI2C!#(B * skk.el (skk-use-fase):DOCSTRING $B$r(B info $B$HF1$8$/%O%$%i%$%H$H=q$/(B. 2000-09-06 Tetsuo Tsukamoto * skk-leim.el (skk-leim-exit-from-minibuffer): New function. (skk-activate, skk-auto-fill-activate): In minibuffer, add `skk-leim-exit-from-minibuffer' to `minibuffer-exit-hook'. 2000-09-05 Mikio Nakajima * doc/skk-faq.texi (Customization): Add descriptions about `skk-rom-kana-rule-list' and `skk-input-vector'. 2000-09-01 Tetsuo Tsukamoto * Makefile (info): New target. 2000-08-31 Tetsuo Tsukamoto * ptexinfmt.el: Sync with Wanderlust. 2000-08-30 Tetsuo Tsukamoto * doc/skk.texi ($B4pK\E*$J;HMQJ}K!(B, $BJXMx$J1~MQ5!G=$H%f!<%6!<%*%W%7%g(B $B%s(B): Misc updates. 2000-08-29 Tetsuo Tsukamoto * doc/skk-faq.texi: New file. * doc/skk.texi: Misc updates. 2000-08-28 Tetsuo Tsukamoto * ptexinfmt.el: New file imported from Wanderlust. * SKK-MK (SKK-MK-texinfo-format): Require ptexinfmt. 2000-08-26 Tetsuo Tsukamoto * doc/skk.texi ($B"#%b!<%I$K$*$1$kJ8;zJQ49(B, $B?t;z$d5-9fJ8;z$NF~NO(B, etc): Update for SKK 10. (SKKIME): New section. 2000-08-18 Tetsuo Tsukamoto * READMEs/PROPOSAL: tm ML => APEL ML. 2000-07-18 Mikio Nakajima * skk-foreword.el (skk-package-data-directory): Removed. * skk-tut.el (skk-tut-file): Use `locate-data-file' instead of referring to `skk-package-data-directory'. 2000-06-29 Mikio Nakajima * skk-cursor.el: Change YAMATO san's email address. * READMEs/Contributors (Contributors): Ditto. 2000-06-24 Mikio Nakajima * skk-cursor.el (skk-cursor-set-properly): Move `skk-abbrev-mode' condition to second place. * Makefile (DATE): New variable. (snapshot): Use DATE to make archive. 2000-06-23 Mikio Nakajima * skk.el: Remove unnecessary spaces between parens. (skk-toggle-kana): Do not setup `skk-input-mode-string'. Do not call `force-mode-line-update'. (skk-kakutei): Check if `skk-mode' is nil or non-nil in a lower region of the function in order not to initialize internal variables before calling `skk-search-excluding-word-pattern-function'). Do not call `force-mode-line-update'. 2000-06-22 Mikio Nakajima * skk.el (skk-toggle-kana): Doc fixed. (skk-kakutei): Ditto. 2000-06-21 Mikio Nakajima * skk.el (skk-toggle-kana): Bug fixed. * skk-cursor.el (skk-cursor-set-color): Bug fixed. * doc/skk.texi: Change SKK-VERSION 10.51 to 10.61. 2000-06-20 Mikio Nakajima * SKK-MK (SKK_MAINTRUNK_NOT_USE): Add `leim-list' and `skk-setup'. * skk-num.el (skk-num-recompute): Setup `skk-num-recompute-key' in a upper region of the function code. (skk-num-update-jisyo): Not to show debug message. Bind `skk-use-numeric-conversion' to nil temporarily. Set buffer to ` *.skk-jisyo*'. (skk-num-recompute-key): Change to global internal variable. * skk-lookup.el (skk-lookup-search): Not to search if `skk-num-list' or `skk-num-recompute-key is non-nil. Do not convert `skk-henkan-key' by `skk-num-compute-henkan-key'. (skk-lookup-process-okurigana): Return nil if STRING is a null string. 2000-05-31 Mikio Nakajima * skk-cursor.el: Add `keyboard-quit' to FUNCS list. Exclude `execute-extended-command' from FUNCS list. Use `static-if' for decide whether to add `minibuffer-keyboard-quit' to FUNCS list or not. Add advices to `newline', `skk-delete-backward-char', `skk-insert' and `skk-start-henkan' (skk-cursor-set-properly): Add condition of `skk-abbrev-mode' is non-nil. (abort-recursive-edit): Add advice for XEmacs. 2000-04-26 Yuh Ohmura * make.bat: change maintenner. 2000-03-29 Yuh Ohmura * READMEs/CVS_on_Windows: cancel below change 2000-03-29 Yuh Ohmura * READMEs/CVS_on_Windows: add about timezone 2000-03-22 Mikio Nakajima * skk-server.el (skk-adjust-search-prog-list-for-server-search): Remove unproper comments. 2000-03-16 Mikio Nakajima * Makefile (VERSION): Change it to 10.60. * skk.el: Version 10.60 released. * SKK-MK (SKK-MK-what-where-package): Remove all spaces between parens. (SKK-MK-what-where): Ditto. (SKK-MK-texinfo-format): Ditto. (SKK-MK-cleanup-trouble-makers): Ditto. (SKK-MK-install-package): Ditto. (SKK-MK-install): Ditto. (SKK-MK-compile-info): Ditto. (SKK-MK-compile): Ditto. (SKK_PACKAGE_LISPDIR): Ditto. (SKK_PACKAGE_DATADIR): Ditto. (PACKAGE_INFODIR): Ditto. (PACKAGEDIR): Ditto. (SKK_LISPDIR): Ditto. (SKK_INFODIR): Ditto. (SKK_DATADIR): Ditto. (SKK_MODULES): Ditto. (SKK_INFOS): Ditto. (SKK-MK-texinfo-coding-system): Ditto. (APEL_SPECIFIC_LISPDIR): Ditto. (VERSION_SPECIFIC_LISPDIR): Ditto. (LISPDIR): Ditto. (SKK-MK-cleanup-trouble-makers): Removed. (SKK-MK-install): Do not use `SKK-MK-cleanup-trouble-makers'. (SKK-MK-install-package): Ditto. (SKK-MK-generate-autoloads-el): Go to a max point before inserting ending tag. 2000-03-16 FURUE Hideyuki * missing: Remove from the repository. * mkinstalldirs: Ditto. 2000-03-16 FURUE Hideyuki * SKK-MK (SKK-MK-compile): Remove local ``standard-output''. (SKK-MK-generate-autoloads-el): Define ``standard-output'' locally. (SKK-MK-texinfo-format): Define ``standard-output'' locally. 2000-03-14 Mikio Nakajima * Makefile (tar): Replace white spaces with tab. (snapshot): Ditto. 2000-03-13 Mikio Nakajima * Makefile (clean): Doesn't remove ../skk*. Remove skk-autoloads.el and experimental/*.elc. (tar): Remove ../skk*. (snapshot): Ditto. 2000-03-12 Mikio Nakajima * Makefile (snapshot): New entry. 2000-03-11 Mikio Nakajima * skk-autoloads.el: Remove from the repository. * Makefile (clean): Remove old archive, links and backup file initiated with dot. * ChangeLog: Move issues before 1999 to ChangeLog.0. 2000-01-17 FURUE Hideyuki * SKK-MK (SKK-MK-compile): Keep ``standard-output'' t. * make.bat (target to clean): Typo fixed. * READMEs/README.win: Correct sample ``.emacs'' files. 2000-01-17 FURUE Hideyuki * skk.el (skk-delete-okuri-mark): Bug fixed. 2000-01-17 FURUE Hideyuki * skk.el (keyboard-quit): Typo fixed. (query-replace-regexp): Disable advice because don't work correctly. (query-replace): Ditto. 1999-12-30 Tsukamoto Tetsuo * experimental/skk-jisx0201.el (skk-setup-modeline): If `skk-status-indicator' is left and the face `modeline' is not proportional, use the same number of columns to display each SKK status, except for `skk-jisx0201-mode'. * skk.el (skk-setup-modeline): Ditto. 1999-12-23 Mikio Nakajima * skk.el (skk-henkan-in-minibuff): Doc fixed. 1999-12-19 Mikio Nakajima * skk-viper.el: Eliminate all spaces which existed between parens. (skk-cursor-set-properly): Check current buffer has a window or not first. Change Murata san's e-mail address. (viper-insert): Remove advice. (vip-insert): Ditto. (viper-hide-replace-overlay): Ditto. (viper-intercept-ESC-key): Doc fixed. (vip-intercept-ESC-key): Ditto. * skk-cursor.el: Eliminate all spaces which existed between parens. Add codes in the top level in order to set cursor properly when first time skk-cursor.el is loaded. (isearch-mode-end-hook): Add `skk-cursor-set-properly' to the hook. (skk-cursor-set-properly): Slightly simplified. Check current buffer has a window or not first. (skk-cursor-set-color): Omit check of `skk-use-color-cursor' is nil or non-nil. (skk-mode): Remove duplicated advice. (overwrite-mode): Use `skk-cursor-set-properly' for advice. * skk.el: Eliminate all spaces which existed between parens. (skk-default-cursor-color): Move to skk-cursor.el. (skk-hiragana-cursor-color): Ditto. (skk-katakana-cursor-color): Ditto. (skk-jisx0208-latin-cursor-color): Ditto. (skk-latin-cursor-color): Ditto. (skk-abbrev-cursor-color): Ditto. (skk-report-set-cursor-error): Ditto. * skk-isearch.el: Eliminate all spaces which existed between parens. Modify doc string about hooks. * experimental/skk-abbrev.el: Eliminate all spaces which existed between parens. Do not require stack-m.el. Sync up with skk-abbrev.el of Daredevil. 1999-12-16 Yuh Ohura * make.bat: correct bug. 1999-12-14 Mikio Nakajima * SKK-MK (SKK_MAINTRUNK_NOT_USE): Add skk-vip. * skk-comp.el (skk-previous-completion-original): Bug fixed. (skk-completion-original): Ditto. 1999-12-12 Mikio Nakajima * skk-cursor.el (skk-save-jisyo-original): Change defadvice for `skk-save-jisyo'. * SKK-MK: Require poe. (SKK_MAINTRUNK_NOT_USE): Add stack-m. (SKK_MODULES): Remove stack-m. Bind `lookup-byte-compile' to t not to load .lookup. (SKK-MK-compile-info): New function. (SKK-MK-generate-autoloads-el): Ditto. (SKK-MK-collect-autoload-functions): Ditto. (SKK-MK-install): Call `SKK-MK-compile-info'. (SKK-MK-compile): Call `SKK-MK-generate-autoloads-el'. * skk.el (skk-mode): Set `skk-mode-invoked' to t after all setting are done properly. * stack-m.el: Removed. * skk-look.el: Not required stack-m.el. (skk-look-completion): Not use stack features. * skk-comp.el: Not required stack-m.el. (skk-completion-function): Add descriptions to doc string. (skk-previous-completion-function): Ditto. (skk-completion-depth): Change doc string slightly. (skk-completion-original): Not use stack features. (skk-previous-completion-original): Ditto. 1999-12-02 Yuh Ohmura (yutopia@t3.rim.or.jp> * READMEs/CVS_on_Windows: update * make.bat: add what-where and clean option 1999-11-30 Mikio Nakajima * skk-vars.el (skk-start-henkan-with-completion-char): Use `?\240' instead of 160 to represent character. (skk-backward-and-set-henkan-point-char): Use `?\321' instead of 209 to represent character. 1999-11-28 FURUE Hideyuki * skk-comp.el (skk-completion-original): Use `skk-completion-depth' to search completed word. (skk-previous-completion-original): Ditto. * skk-kakasi.el (skk-gyakubiki-message): Use "%s" as the first message argument to display properly string containing `%'. (skk-gyakubiki-katakana-message): Ditto. (skk-hurigana-message): Ditto. (skk-hurigana-katakana-message): Ditto. (skk-romaji-message): Ditto. * skk.el (skk-mode): Bind `skk-start-henkan-with-completion-char' and `skk-backward-and-set-henkan-point-char' for each skk related maps. (skk-insert): Set this-command to `skk-completion' when last-command-char is equal to `skk-previous-completion-char', and call `skk-kana-input' when last-command-is neither `skk-previous-completion-char' nor `skk-next-completion-char'. * skk-vars.el (skk-start-henkan-with-completion-char): New user variable. (skk-backward-and-set-henkan-point-char): Ditto. (skk-completion-depth): New internal variable. 1999-11-28 Mikio Nakajima * READMEs/CVS_on_Windows: New file. * experimental/skk-study.el (skk-study-file-format-version): Change version number to string. * skk-isearch.el (skk-isearch-overriding-local-map): Remove `;;;###autoload' cookie. * SKK-MK (SKK_PACKAGE_NOT_USE): New constant. (SKK_MAINTRUNK_NOT_USE): Ditto. (SKK-MK-install): Make directories, SKK_LISPDIR, SKK_DATADIR and SKK_INFODIR if they do not exist. Remove SKK_MAINTRUNK_NOT_USE from SKK_MODULES and delete related files. (SKK-MK-install-package): Remove SKK_PACKAGE_NOT_USE and SKK_MAINTRUNK_NOT_USE from SKK_MODULES and delete related files. * skk.el (skk-%-to-%%): Removed. 1999-11-28 FURUE Hideyuki * skk-num.el (skk-num-convert): Bug fixed. (skk-num-recompute): Ditto. * skk.el (skk-henkan-show-candidates): Ditto. (skk-mode): Call `skk-create-file' for `skk-jisyo'. (skk-henkan-show-candidate-subr): Do not use `skk-%-to-%%'. * skk-kcode.el (skk-char-to-hex): Bug fixed. * skk-isearch.el (skk-isearch-mode-setup): Call `skk-erase-prefix' with its argument non-nil in `skk-isearch-working-buffer'. 1999-11-18 Mikio Nakajima * READMEs/CVS_digest: New file. * READMEs/Contributors: Filename typo fixed. 1999-11-15 Mikio Nakajima * experimental/skk-abbrev.el (skk-completion-original): Bug fixed. 1999-11-10 Mikio Nakajima * skk-foreword.el (skk-mode-off): Remove cursor change support. (skk-j-mode-on): Remove cursor change support. (skk-latin-mode-on): Remove cursor change support. (skk-jisx0208-latin-mode-on): Remove cursor change support. (skk-abbrev-mode-on): Remove cursor change support. * skk-cursor.el (skk-change-cursor-when-ovwrt): Rename to `skk-cursor-change-when-ovwrt'. * skk.el (skk-mode): Require skk-cursor.el if `skk-use-color-cursor' or `skk-use-cursor-change' is non-nil. (abort-recursive-edit): Remove cursor change support. (exit-minibuffer): Ditto. (minibuffer-keyboard-quit):Ditto. (skk-save-jisyo-original): Ditto. (skk-katakana-region): Ditto. (skk-hiragana-region): Ditto. (skk-jisx0208-latin-region): Ditto. (skk-latin-region): Ditto. (skk-auto-fill-mode): Ditto. (skk-toggle-kana): Ditto. (skk-kakutei): Ditto. (kill-buffer): Ditto (and change class). (goto-line): Moved to skk-cursor.el. (yank): Ditto. (yank-pop): Ditto. (recenter): Ditto. (insert-file): Ditto. (bury-buffer): Ditto. (switch-to-buffer): Ditto. (hilit-yank): Ditto. (hilit-yank-pop): Ditto. (hilit-recenter): Ditto. (execute-extended-command): Ditto. (pop-to-buffer): Ditto. (other-window): Ditto. (overwrite-mode):Ditto. (skk-set-cursor-color): Ditto. (skk-set-cursor-properly): Ditto. (skk-change-cursor-when-ovwrt): (after-make-frame-hook): Stop set hook `skk-set-cursor-properly'. (minibuffer-setup-hook): Ditto. (minibuffer-exit-hook): Ditto. 1999-11-09 Shuhei KOBAYASHI * skk-look.el (skk-look): Use copy-sequence instead of `copy-list' not to depend on CL package on FSF Emacs. * skk-num.el (skk-num-flatten-list): Do not use `mapcan' not to depend on CL package on FSF Emacs. 1999-11-09 Mikio Nakajima * skk.el (skk-detach-extent): Use `defun' and `static-cond' instead of `skk-defun-cond' and `cond'. (skk-change-cursor-when-ovwrt): Ditto. * skk-develop.el (skk-submit-bug-report): Remove code for a certain specific version of Mew and Wanderlust. Remove def-edebug-spec for `skk-defsubst-cond', `skk-defun-cond', `skk-defmacro-cond'. * skk-kcode.el (skk-display-code): Use `defun' and `static-cond' instead of `skk-defun-cond' and `cond'. * skk-foreword.el (skk-defun-cond): Removed. (skk-defsubst-cond): Ditto. (skk-defmacro-cond): Ditto. (skk-str-length): Use `defsubst' and `static-cond' instead of `skk-defsubst-cond' and `cond'. (skk-substring): Ditto. (skk-read-event): Ditto. (skk-char-to-string): Ditto. (skk-ascii-char-p): Ditto. (skk-str-ref): Ditto. (skk-jisx0208-p): Ditto. (skk-char-octet): Ditto. (skk-charsetp): Use `defun' and `static-cond' instead of `skk-defun-cond' and `cond'. (skk-make-char): Ditto. (skk-jisx0208-to-ascii): Ditto. (skk-face-on): Use `defmacro' and `static-cond' instead of `skk-defmacro-cond' and `cond'. 1999-11-07 Mikio Nakajima * experimental/skk-jisx0201.el (skk-jisx0201-mode-string): Change mode indicator to `jisx0201' and doc fixed. (skk-jisx0201-rule-list): Define latin-jisx0201 characters. (skk-setup-modeline): Change mode indicator to `jisx0201'. ;; Local Variables: ;; coding: iso-2022-jp ;; End: ddskk-15.2/ChangeLog.2.daredevil0000644000570400056700000027633111675101126016466 0ustar kitamotoopenlab2000-10-31 Mikio Nakajima * doc/skk-faq.texi: Sync up with maintrunk. * doc/skk.texi: Ditto. 2000-10-30 Mikio Nakajima * skk-vars.el (skk-lookup-option-alist): Use "MYPAEDIA" spec of $B!V<-!&E5!&HW!W(B version MYPAEDIA. * skk-annotation.el (skk-nunion): New advice. 2000-10-29 Mikio Nakajima * skk-vars.el (skk-lookup-option-alist): Doc updated. Created new element "CHIEZO". Specified 7th element of "IWAKOKU" in order to remove "$B!R(B", "$B!S(B", "$B!P(B", "$B!Q(B", "( and ")". Specified 5th element of "MYPAEDIA" in order to pick up necessary strings between parens and/or blackets. (skk-lookup-default-option-list): Doc updated. * experimental/skk-annotation.el (skk-annotation-add): Bug fixed. * experimental/skk-annotation.el (skk-annotation-mode-map): Change key bind skk-annotation-quit to "\C-c\C-k". (skk-annotation-add): Document updated. Use `skk-annotation-setup'. (skk-annotation-quit): Call `kill-buffer'. Rename to `skk-annotation-kill'. (skk-annotation-quote): Use `skk-annotation-setup'. (skk-annotation-remove): Use `skk-annotation-setup'. Abolish optional argument NO-PREVIOUS-ANNOTATION. (skk-annotation-setup): New function. * skk-vars.el (skk-annotation-annotated-word): New internal variable. 2000-10-28 Mikio Nakajima * experimental/skk-annotation.el (skk-annotation-quit): New function. (skk-annotation-add): Bug fixed. Put out skk-annotation-quit key bind, too. (skk-annotation-last-word-1): Bug fixed. (skk-annotation-remove): Do not change END to marker. (skk-annotation-save-and-quit): Ditto. (skk-annotation-show-message): Do not insert ANNOTATION. Do not sit for a second. (skk-annotation-last-word-1): Call FUNCTION all okuri ari candidates that are the same word and has different okurigana. Set BEG and END markers respectively and set such markers to nil after FUNCTION is called. * skk-vars.el (skk-annotation): New group. (skk-annotation-buffer): New internal constants. (skk-annotation-function): New user variable. (skk-annotation-mode-hook): Ditto. (skk-annotation-show-message): New user option. (skk-annotation-mode-map): New keymap. (skk-annotation-original-window-configuration): New internal variable. (skk-annotation-mode): Ditto. * experimental/skk-annotation.el: Require `skk-macs' and `skk-vars'. (skk-annotation-insert): New inline function. (skk-annotation-quote-1): Ditto. (skk-annotation-show): Rename to `skk-annotation-show-buffer'. (skk-annotation-show): New function. (skk-annotation-show-1): Ditto. (skk-annotation-show-message): Ditto. (skk-annotation-last-word-1): Ditto. (skk-annotation-add): New command. (skk-annotation-save-and-quit): Ditto. (skk-annotation-remove): Ditto. (skk-annotation-quote): Ditto. 2000-10-27 Mikio Nakajima * SKK-MK (SKK_MODULES): Add skk-annotation. * skk-vars.el (skk-show-annotation): New user option. * skk-jisx0213.el: Require `skk-macs' and `skk-vars'. * skk.el (skk-quote-char): Quote ";". (skk-insert-new-word): Divide WORD into two pieace, real WORD and ANNOTATION and call `skk-annotation-show' if `skk-show-annotation' is non-nil. * experimental/skk-annotation.el: New experimental program. 2000-10-26 Tetsuo Tsukamoto * READMEs/FAQ.txt (Emacs 20 $B$K(B SKK 9.6 $B$,%$%s%9%H!<%k$G$-$^$;$s!#(B, $BA4$/4A;z$,=P$F$-$^$;$s!#(B, $B%A%e!<%H%j%"%k$,5/F0$G$-$^$;$s!#(B, $B%9%Z!<(B $B%9$r2!$7$F$bJQ49$G$-$^$;$s!#(B): New questions. * READMEs/NEWS: Add description. * missing, mkinstalldirs: No longer in the repository. 2000-10-25 Mikio Nakajima * skk-vars.el (skk-coding-system-alist): Define "euc" and "ujis" for euc-jisx0213, "sjis" for shift_jisx0213 and "jis" for iso-2022-jp-3-compatible if emacs has a feature 'jisx0213. (skk-code-n1-max): Set 254 if emacs has a feature 'jisx0213. (skk-kcode-charset): Set 'japanese-jisx0213-1 if emacs has a feature 'jisx0213. * skk-kakasi.el: Update Takahashi-san's email address and description about a ftp site to get kakasi. * skk-lookup.el (skk-lookup-get-method): Use `skk-lookup-get-1'. (skk-lookup-get-1): Simplified slightly. 2000-10-25 Tetsuo Tsukamoto * READMES/FAQ.txt ($B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B): New question. 2000-10-25 Mikio Nakajima * skk-vars.el (skk-lookup-option-alist): Bug fixed. 2000-10-25 Tetsuo Tsukamoto * skk-vars.el (skk-lookup-option-alist): Bug fixed. 2000-10-24 Mikio Nakajima * skk-vars.el (skk-lookup-option-alist): Change 6th element regexp to cons cell and defcustom type accordingly. Add new element 7th and defcustom type accordingly. Add new lists of which headers are "KOUJIEN", "KOJIEN" and "KOKUGO" (skk-lookup-default-option-list): Change 5th element regexp to cons cell and defcustom type accordingly. Add new element 6th and defcustom type accordingly. * skk-lookup.el (skk-lookup-get-1): New inline function. (skk-lookup-get-cleanup-regexp): Ditto. (skk-lookup-get-nonsearch-sex): Use `skk-lookup-get-1'. (skk-lookup-get-pickup-regexp): Ditto. (skk-lookup-get-split-regexp): Ditto. (skk-lookup-process-heading): Use cdr part of 6th element of `skk-lookup-option-alist' or 5th element of `skk-lookup-default-option-alist' in order to get a matched string. Remove unnecessary strings from CANDIDATES-STRING by using 7th element of `skk-lookup-option-alist' or 6th element of `skk-lookup-default-option-alist'. * skk-kcode.el (skk-input-by-code-or-menu): Use `match-string-no-properties' instead of `match-string'. 2000-10-22 Mikio Nakajima * doc/skk-faq.texi ([Q.1-4] SKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+!)(B): * skk.el (skk-abbrev-comma): Bug fixed. * ccc.el (ccc-defadvice): Check if FUNCTION is fboundp or not. Fixed warning message. * skk-macs.el (skk-defadvice): Ditto. 2000-10-21 Mikio Nakajima * ccc.el (ccc-defadvice): Delete interactive call from advice definition if trying to add an advice to subr/non-command. * skk-macs.el (skk-defadvice): Ditto. * skk.el (keyboard-quit): Use `skk-defadvice' instead of `defadvice'. (abort-recursive-edit): Ditto. (newline): Ditto. (newline-and-indent): Ditto. (exit-minibuffer): Ditto. (undo): Ditto. (kill-buffer): Ditto. (save-buffers-kill-emacs): Ditto. (minibuffer-keyboard-quit): Ditto. * skk-cursor.el (minibuffer-keyboard-quit): Use `skk-defadvice' instead of `defadvice'. * skk-jisx0201.el (newline): Ditto. (newline-and-indent): Ditto. (exit-minibuffer): Ditto. * skk-tut.el (kill-buffer): Ditto. (other-frame): Ditto. (save-buffers-kill-emacs): Ditto. * skk-viper.el (read-from-minibuffer): Ditto. * skk-develop.el: Add `skk-defadvice' regexp for hilit19 and font-lock. 2000-10-20 Tetsuo Tsukamoto * READMEs/NEWS: Add description about leim-list.el, etc. * skk-setup.el.in (isearch-message-prefix): Move the advice * skk-isearch.el: to here. (skk-isearch-delete-char): Update only the 2nd element of `isearch-cmds'. 2000-10-19 Mikio Nakajima * ccc.el (ccc-defadvice): New macro. * skk-macs.el (skk-defadvice): Ditto. 2000-10-19 Tsuyoshi AKIHO * READMEs/NEWS: $B?75!G=$dGQ;_$5$l$?4X?t$K$D$$$F2CI.!#(B 2000-10-19 Tetsuo Tsukamoto * skk-leim.el: In "auto-autoloads.el", require "skk-setup". * skk-setup.el.in: Override "C-x C-j" under XEmacs. * skk.el (skk-save-jisyo-original): Check if `skk-emacs-id-file' exists. 2000-10-19 Tsuyoshi AKIHO * SKK-MK (SKK_LISPDIR): "make PREFIX=dir install" $B$G(B PREFIX $B$N$H(B $B$*$j$K(B elisp $B$,%$%s%9%H!<%k$5$l$k$h$&$K=$@5(B. 2000-10-18 Tetsuo Tsukamoto * ccc.el (ccc-apply): New macro. (ccc-ads): New variable. 2000-10-18 Mikio Nakajima * READMEs/README.win: Move $B!V(B`MAKE.BAT'$B$NJT=8$H%$%s%9%H!<%k(B (Windows 95,98/NT)$B!W(B to header (change to non-section). Section structer rearranged (change `****' section to `***', `***' to `**' and `**' section to `*'). New sections $B!V(B* Windows $B>e$GF0$/%5!<%P$K$D$$$F!W(B,$B!V(Bwskkserve$B!W(B, $B!V(B cygwin $B$rMxMQ$7$F%=!<%9$+$i%3%s%Q%$%k$7$FMxMQ$9$k!W(B,$B!V(Bscript $B8@(B $B8l$G * ccc.el: Apply Tsukamoto-san's patch Message-ID: . * READMEs/CVS_on_Windows: Typo fixed. 2000-10-16 Mikio Nakajima * READMEs/README.win (SKK95 (Windows 95/98/NT)): Remove the sentence $B!V(BWindows 95 $B$G$O>e5-$N(B SKKIME $B$,F0:n$7$J$$$?$a$3$A$i$r;H(B $BMQ$7$^$9!#!W(B. SKKIME98 now works on Windows 95 (using Winsock version 1). Updated the link to kmc. (wskkserve): Merged into "skkserve on Windows". (skkserve on Windows): Moved before the section "SKK on Windows". * skk-develop.el (skk-submit-bug-report): Do not put out skk-henkan-face information. Dump variables `isearch-mode-hook' and `isearch-mode-end-hook'. Use skk-exserv.el when `skk-exserv-list' is non-nil. Use new `skk-version'. * skk-abbrev.el: Require product and call product-provide for its feature. * skk-auto.el: Ditto. * skk-comp.el: Ditto. * skk-cursor.el: Ditto. * skk-develop.el: Ditto. * skk-gadget.el: Ditto. * skk-isearch.el: Ditto. * skk-jisx0201.el: Ditto. * skk-jisx0213.el: Ditto. * skk-kakasi.el: Ditto. * skk-kcode.el: Ditto. * skk-leim.el: Ditto. * skk-look.el: Ditto. * skk-lookup.el: Ditto. * skk-macs.el: Ditto. * skk-num.el: Ditto. * skk-obsolete.el: Ditto. * skk-server.el: Ditto. * skk-tut.el: Ditto. * skk-vars.el: Ditto. * skk-viper.el: Ditto. * skk-xm20_4.el: Ditto. * skk.el: Ditto. * experimental/skk-correct.el: Ditto. * experimental/skk-dos.el: Ditto. * experimental/skk-dcomp.el: Ditto. * experimental/skk-study.el: Ditto. * experimental/tut-code/skk-tutcode.el: Ditto. * experimental/tut-code/skk-tutcdef.el: Ditto. * experimental/skk-is-n.el: Ditto. * experimental/skk-exserv.el: Ditto. * experimental/skk-exsearch.el: Ditto. * experimental/skk-e18.el: Ditto. * experimental/dbm/skk-dbm.el: Ditto. * experimental/rdbms/skk-rdbms.el: Ditto. * SKK-MK (SKK_MODULES): Add `skk-version'. * skk-tut.el (skktut-end-tutorial): Use `(product-string-1 'skk-version t)' instead of `skk-branch-name'. (kill-buffer): Specify original interactive spec. (skk-tutorial): Check skk version using `product-version>='. * skk-vars.el (skk-version): Removed. (skk-major-version): Ditto. (skk-minor-version): Ditto. (skk-branch-name): Ditto. (skk-codename): Ditto. * skk.el (skk-version): Removed. Check APEL version using `product-version>='. (kill-buffer): Specify original interactive spec. * ccc.el (buffer-local-frame-params-ad-targets): Removed. Check a function if a subr that has an interactive spec when adding advices, and put on a mirroring original interactive spec to advice. * skk-version.el: New file. * skk-study.el: Move it back to experimental directory. 2000-10-15 Mikio Nakajima * skk.el (skk-toggle-characters): Hand 'vcontract to `skk-katakana-region' as VCONTRACT argument . 2000-10-15 Tetsuo Tsukamoto * skk-cursor.el (skk-cursor-buffer-local-frame-params-ad-targets): Add `skk-j-mode-on'. (minibuffer-setup-hook): No longer call `set-buffer-local-cursor-color' under FSF Emacs. (skk-cursor-current-color): No longer check if `skk-jisx0201-mode' is bound. 2000-10-13 Tetsuo Tsukamoto * skk-cursor.el: Changes for XEmacs. (minibuffer-keyboard-quit): New advice. (minibuffer-exit-hook): Call `set-face-property' in the minibuffer. * skk-macs.el (skk-emacs-type, skk-detect-emacs): Check the feature `xemacs'. 2000-10-12 Tetsuo Tsukamoto * ccc.el (buffer-local-cursor-color-default, buffer-local-foreground-color-default, buffer-local-background-color-default): Check the feature `xemacs'. * skk-cursor.el: Ditto. (minibuffer-setup-hook): Call `set-buffer-local-cursor-color' under FSF Emacs. * skk-gadget.el (skk-clock): Don't perform redisplay in `sit-for'. * skk-isearch.el (skk-isearch-delete-char): Use `when'. * skk-jisx0201.el (skk-jisx0201-insert, skk-toggle-katakana): Don't call `skk-cursor-set-properly'. Call `set-face-property' or `set-buffer-local-cursor-color' instead. * skk-obsolete.el (skk-obsolete-function-alist): Don't check `skk-set-cursor-color' and `skk-set-cursor-properly'. * skk-vars.el (skk-emacs-type): Check the feature `xemacs'. * skk.el (skk-setup-modeline): Don't use `mapcar'. 2000-10-08 Tetsuo Tsukamoto * skk.el (skk-count-jisyo-candidates): Use `default-directory' instead of "~/". Show "candidate" instead of "candidates" if `count' is 1. 2000-10-05 Tetsuo Tsukamoto * skk.el (skk-count-jisyo-candidates): Show "candidates", not "entries". (skk-count-jisyo-candidates-original): Don't search slashes in midashi words. 2000-10-03 Mikio Nakajima * READMEs/FAQ.txt: Change filename description in end of filename tag. 2000-10-02 Tetsuo Tsukamoto * skk-leim.el (locate-libraries, load-libraries): New functinos from egg-util.el in Tamago 4. * skk-setup.el.in: Load all `leim-list.el' files. 2000-10-02 Mikio Nakajima * skk-vars.el (skk-num-uniq): Check if `skk-num-type-alist' has indexes 2 and 3 or 5. * skk.el (skk-henkan-show-candidates): Use `skk-henkan-list-filter' instead of `skk-num-uniq'. Do not use `(skk-num-multiple-convert 7)'. 2000-10-01 Mikio Nakajima * skk-lookup.el: Require bitmap when running on MULE. * SKK-MK (SKK_MODULES): Add skk-jisx0213 if available. (SKK_DICTIONARIES): Add "SKK-JISYO.JIS2", "SKK-JISYO.JIS3_4", "SKK-JISYO.pubdic+", "SKK-JISYO.edict", "SKK-JISYO.office.zipcode" and "SKK-JISYO.zipcode". * skk-jisx0213.el: New file. * skk-vars.el (skk-jisx0213-prohibit): New user option. * skk.el (skk-henkan): Use `skk-get-current-candidate-1'. (skk-previous-candidate): Use new `skk-get-current-candidate'. (skk-kakutei): Ditto. (skk-purge-from-jisyo): Ditto. (skk-henkan-show-candidates): Use `skk-num-multiple-convert' instead of `skk-num-convert*7'. (skk-get-current-candidate): New funcition. (skk-henkan-1): Call `skk-search' until getting NEW-WORD even if skk-henkan-count is 0. * skk-num.el (skk-num-convert-1): New subroutine. (skk-num-process-user-minibuf-input): Removed. (skk-num-convert): Call `skk-num-uniq' if type 4 numeric conversion is done. Abolish argument KEY. Do not return CURRENT. (skk-num-exp): Use `save-match-data'. (skk-num-process-user-minibuf-input): Ditto. (skk-num-convert*7): Removed. (skk-num-multiple-convert): New function. (skk-henkan-list-filter): New funcition. * skk-macs.el (skk-get-current-candidate-simply): Abolish optional argument NOCONV and renamed it to `skk-get-current-candidate-1'. 2000-09-29 Mikio Nakajima * READMEs/FAQ.txt: Fixed a description about $B!V8!:w$9$k<-=q$rA}$d(B $B$7$?$$$N$G$9$,!W(B. Sync up with a description about $B!V(BWnn $B$G$b(B Canna $B$G$bM9JXHV9f<-=q(B $B$,;H$($k$1$l$I!"(BSKK $B$G$O;H$($J$$$N(B ?$B!W(B * READMEs/FAQ.txt: Add a description about $B!V8!:w$9$k<-=q$rA}$d$7(B $B$?$$$N$G$9$,!W(B. * READMEs/skk-faq.txt: Rename to FAQ.txt. 2000-09-28 Tetsuo Tsukamoto * ptexinfmt.el: Sync with Wanderlust. 2000-09-27 Mikio Nakajima * Makefile: Change Maintainer to SKK Development Team. * SKK-CFG: Ditto. * SKK-MK: Ditto. * ccc.el: Ditto. * doc/skk.texi: Ditto. * etc/SKK.tut.E: Ditto. * etc/SKK.tut: Ditto. * experimental/skk-correct.el: Ditto. * experimental/skk-dcomp.el: Ditto. * experimental/skk-dos.el: Ditto. * experimental/skk-e18.el: Ditto. * experimental/skk-exsearch.el: Ditto. * experimental/skk-exserv.el: Ditto. * experimental/skk-is-n.el: Ditto. * experimental/tut-code/skk-def.el: Ditto. * experimental/tut-code/skk-tutcode.el: Ditto. * make.bat: Ditto. * skk-abbrev.el: Ditto. * skk-auto.el: Ditto. * skk-comp.el: Ditto. * skk-cursor.el: Ditto. * skk-develop.el: Ditto. * skk-gadget.el: Ditto. * skk-isearch.el: Ditto. * skk-jisx0201.el: Ditto. * skk-kakasi.el: Ditto. * skk-kcode.el: Ditto. * skk-leim.el: Ditto. * skk-look.el: Ditto. * skk-lookup.el: Ditto. * skk-num.el: Ditto. * skk-obsolete.el: Ditto. * skk-server.el: Ditto. * skk-setup.el.in: Ditto. * skk-study.el: Ditto. * skk-tut.el: Ditto. * skk-vars.el: Ditto. * skk-viper.el: Ditto. * skk-xm20_4.el: Ditto. * skk.el: Ditto. * tinyinstall.el: Ditto. * vip.el: Ditto. 2000-09-26 Tetsuo Tsukamoto * skk-num.el (skk-num-type3-kanji-1, skk-num-type5-kanji-1): Don't miss "$BK|(B" {"$Bh_(B"}, "$B2/(B", "$BC{(B", "$B5~(B". 2000-09-25 Mikio Nakajima * READMEs/skk-faq.txt: Update a description about how to get skk-tools. 2000-09-25 Shuhei KOBAYASHI * skk-num.el: Eliminate CL dependency. (skk-num-compute-henkan-key, skk-num-convert): Expand `setf' to `setcar'/`nthcdr' pair. * skk.el: (skk-insert, skk-previous-candidate): Fix interactive spec. 2000-09-25 Tetsuo Tsukamoto * ptexinfmt.el: Sync with Wanderlust. 2000-09-22 Tetsuo Tsukamoto * READMEs/CVS_00readme: Update for CVS 1.11. 2000-09-18 Tetsuo Tsukamoto * Makefile (package): Call `SKK-MK-compile-package'. * SKK-MK (SKK-MK-compile-package, SKK-MK-generate-autoloads-el-package): New functions. (SKK-MK-install-package): Call `SKK-MK-compile-package'. 2000-09-17 Mikio Nakajima * skk-vars.el: Grouping by function and filename. (skk-custom-by-function): New group. (skk-custom-by-filename): Ditto. (skk-use-look): Doc sync up with READMEs/skk-faq.txt. (skk-kutouten-type): Use `defcustom' instead of `skk-deflocalvar'. (skk-faces): Removed. (skk-decoration): Ditto. (skk-dictionary): Ditto. (skk-filenames): Ditto. (skk-hooks-and-functions): Ditto. (skk-keybinds): Ditto. (skk-okurigana): Ditto. (skk-misc): Ditto. (skk-abbrev): Ditto. (skk-auto): Change its group to skk-custom-by-filename. (skk-comp): Ditto. (skk-cursor): Ditto. (skk-gadget): Ditto. (skk-isearch): Ditto. (skk-jisx0201): Ditto. (skk-kakasi): Ditto. (skk-kcode): Ditto. (skk-look): Ditto. (skk-lookup): Ditto. (skk-num): Ditto. (skk-server): Ditto. (skk-init-file): Use `defcustom' instead of `defvar'. 2000-09-17 Tetsuo Tsukamoto * skk-isearch.el: Add comments. * skk-jisx0201.el: No real changes. Just a matter of appearance. * skk-leim.el: Don't check for `register-input-method'. 2000-09-16 Tetsuo Tsukamoto * SKK-CFG: Rewrite. 2000-09-16 Mikio Nakajima * READMEs/README: Updated. 2000-09-15 Mikio Nakajima * READMEs/Contributors (Contributors): Change Akiho san's e-mail address. * doc/skk.texi ($B$*4j$$(B): Change `skk-jisyo@kuis.kyoto-u.ac.jp' to `skk@ring.gr.jp'. 2000-09-14 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-delete-char): Rewrite the last change. 2000-09-13 Tetsuo Tsukamoto * patch/e18/README.ja: Update. * patch/e18/bytecomp-2.07/eval.c-e19.patch: <= eval.c.patch. * patch/e18/bytecomp-2.07/eval_c-e18.patch: New file. 2000-09-13 Mikio Nakajima * patch/custom-1.9962.patch: Moved to e19 subdirectory. 2000-09-12 Tetsuo Tsukamoto * SKK-MK: Emacs 18 only. Work around for a bug in cl.el. * experimental/skk-e18.el: Modify the error message. * patch/e18: New repository. * patch/e18/{README.ja, advice.el, cl.elc, cl_el-defsetf.patch}: New files. * patch/e18/bytecomp-2.07: New repository. * patch/e18/bytecomp-2.07/{README.en, README.ja, byte-optimize.el, bytecomp-runtime.el, bytecomp.el, bytecomp_el-mule-1_1_pl04.patch, disass.el, eval.c.patch, make-docfile.c}: New files. * skk-isearch.el (skk-isearch-find-keys-define): Simplify. (skk-isearch-delete-char): Do not show white-space regular expressions. 2000-09-12 Mikio Nakajima * READMEs/skk-faq.txt (http): Update. * experimental/GUIDELINE: Update. * experimental/tut-code/skk-def.el: Update comments for daredevil. * experimental/tut-code/skk-tutcdef.el: Ditto. * experimental/tut-code/skk-tutcode.el: Ditto. 2000-09-11 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-find-keys-define): Use `dolist'. (skk-isearch-delete-char): Ditto. (skk-isearch-setup-keymap): Use `do'. (skk-isearch-search-string-regexp): Ditto. * skk-vars.el (skk-num-list): Remove autoload cookie. 2000-09-11 Mikio Nakajima * Makefile (DATE): Do not use universal time. (MD5): New variable. (SNAPBASE): Ditto. (TAR): Do not specify absolute path. (tar): Rearrange for making archive in openlab.ring.gr.jp. (snapshot): Ditto. (clean): Remove files that match `.#*' (files which make by CVS when it finds there are conflicts). 2000-09-10 Tetsuo Tsukamoto * READMEs/CVS_00readme: Use overlays instead of text properties. * READMEs/CVS_on_Windows: Update. * SKK-MK: Tiny bug fix for Emacs 18. * skk-look.el (skk-look-ispell): Set VAR. 2000-09-10 Mikio Nakajima * Makefile (snapshot): Bug fixed. * Makefile (tar): Modify to make archive in openlab.ring.gr.jp. (snapshot): Ditto. * READMEs/skk-faq.txt: Updated. * skk-setup.el.in (isearch-mode-end-hook): Remove skk-set-cursor-properly from the hook. * doc/skk.texi ($BF~NO%b!<%I$N0l;~JQ99(B): Typo fixed. * skk-look.el (skk-look-ispell): Call `skk-look-1' for a word originally handed to when ispell puts miss and guess out. Slightly simplify condition. Comment modified. 2000-09-09 Tetsuo Tsukamoto * Makefile (package): New target. * SKK-MK (SKK-MK-running-xemacs): Abolish. Check the feature xemacs instead. (SKK_INFOS): Abolish. Stop guessing how many files resulting info will be split into. (SKK_INFO): New variable. (PACKAGE_DATADIR): <= `SKK_PACKAGE_DATADIR'. (PACKAGE_LISPDIR): <= `SKK_PACKAGE_LISPDIR' (SKK_PACKAGE_NOT_USE): Abolish. (SKK-MK-install-package): Use `SKK-MK-compile'. (SKK-MK-generate-autoloads-el): Modify for XEmacs. * skk-look.el (skk-look-ispell): Use the original word as well as misses and guesses. 2000-09-09 Mikio Nakajima * skk-look.el (skk-look-ispell): Call `skk-look-1' for a word originally handed to when ispell recognize spelling of WORD is right. * experimental/skk-exsearch.el (search-engine): Do not put out originally handed word. 2000-09-09 Tetsuo Tsukamoto * READMEs/CVS_00readme: Update. * skk-cursor.el (skk-mode-hook): Call `skk-mode-once-again'. * skk-vars.el (skk-coding-system-alist): sjis => shift_jis. * skk.el (skk-henkan-show-candidate-subr): If the selected frame has 2 or more windows, delete other windows. If point is not visible in the selected window, put point in the center of the window. 2000-09-09 Mikio Nakajima * experimental/skk-cursor2.el: Merged skk-cursor2 and skk-cursor3 into skk-cursor.el. * experimental/skk-cursor3.el: Ditto. * skk-cursor.el: Ditto. * SKK-MK (SKK_MODULES): Remove skk-cursor2 and skk-cursor3. Add ccc if FSF Emacs is running. (SKK_DAREDEVIL_NOT_USE): Add `skk-cursor2' and `skk-cursor3'. * experimental/ccc.el (ccc-before-update-function): Removed. (update-buffer-local-frame-params): Do not call `ccc-before-update-function'. (buffer-local-cursor-color-default): Bug fixed. (buffer-local-foreground-color-default): Ditto. (buffer-local-background-color-default): Ditto. * experimental/skk-cursor2.el: Use `set-buffer-local-cursor-color' for advice of each element of `skk-cursor2-buffer-local-frame-params-ad-targets'. Do not set `ccc-before-update-function'. * skk-look.el (skk-look): Typo fixed. * skk-viper.el (skk-cursor-set-properly): Removed advice. (skk-cursor-current-color): (read-from-minibuffer): Add `update-buffer-local-frame-params' to `minibuffer-setup-hook' instead of `skk-cursor-setup-minibuffer'. 2000-09-08 Mikio Nakajima * skk-look.el (skk-look-1): Do not put out originally handed word. (skk-look-ispell): Call look command by each candidate put out by ispell. Set symbol `error' to POSS if ispell-parse-output returns nil (and make a error message if POSS is equal to symbol `error'. (skk-look): Do not union lists made by `skk-look-1' and `skk-look-ispell'. (skk-look-completion): Ditto. Do not remove `skk-look-completion-words' from a list made by `skk-look-1' or `skk-look-ipell' (as it is removed already). 2000-09-07 Tetsuo Tsukamoto * Makefile (set_jisyo): New variable. * SKK-MK (SKK_SET_JISYO): New variable. (SKK-MK-install): Set `skk-large-jisyo' if `SKK_SET_JISYO' is non-nil. (SKk-MK-install-package): Ditto. * skk-vars.el (skk): Place this group under "Mule" and "Leim". 2000-09-07 Mikio Nakajima * skk-look.el (skk-look-ispell): Return not only miss but also guess. 2000-09-07 Tetsuo Tsukamoto * skk-look.el (skk-look): Bug fixed. (skk-look-ispell): Ditto. 2000-09-06 Tetsuo Tsukamoto * SKK-MK (SKK-MK-server-installed-p): New function. (SKK-MK-install): Don't set `skk-large-jisyo' if a local server is found. (SKk-MK-install-package): Ditto. * skk-isearch.el (skk-isearch-mode-setup): Don't call `toggle-input-method' so that the SKK status is preserverd. * skk-setup.el.in (skk-aux-large-jisyo): Use @AUXDIC@ instead of @DIC@. * skk-vars.el (skk-look-use-ispell): Check if ispell.el is installed. 2000-09-06 Mikio Nakajima * READMEs/MEMO.txt: Add some idea. * READMEs/CVS_digest: Typo fixed. Add description about pySKK. 2000-09-06 Tetsuo Tsukamoto * skk-leim.el (skk-leim-exit-from-minibuffer): New function. (skk-activate, skk-auto-fill-activate): In minibuffer, add `skk-leim-exit-from-minibuffer' to `minibuffer-exit-hook'. 2000-09-04 Tetsuo Tsukamoto * SKK-MK: Under Emacs 18, load bytecomp-runtime.el if possible. * experimental/nicola: New repository. Import NICOLA-DDSKK. ChangeLog files in this repository will show details. * skk-cursor.el (execute-extended-command): Advise this function under XEmacs only. * skk-isearch.el (skk-isearch-mode-setup): Activate input method in the working buffer, if `current-input-method' is japanese-skk{-auto-fill}. (skk-isearch-mode-cleanup): Inactivate input method in the working buffer, if `default-input-method' is japanese-skk{-auto-fill}. (skk-isearch-find-keys-define): Don't overwrite the keymaps for prefix keys. (skk-isearch-setup-keymap): Keys for `toggle-input-method' call `skk-isearch-skk-mode', if `default-input-method' is japanese-skk{-auto-fill}. (skk-isearch-skk-mode): Add an autoload cookie. * skk-leim.el: Now don't set `current-input-method-title'. Always show `skk-input-mode-string'. * skk-setup.el.in (isearch-mode-end-hook): Call `skk-isearch-mode-cleanup' if the feature skk-isearch is provided. (isearch-mode-map): Make sure C-\ is bound to `isearch-toggle-input-method'. (isearch-toggle-input-method): New advice. Invoke skk-isearch if `default-input-method' is japanese-skk{-auto-fill}. (isearch-message-prefix): Don't show `current-input-method-title' if `default-input-method' is japanese-skk{-auto-fill}. 2000-09-04 Mikio Nakajima * skk-look.el (skk-look-ispell): New function. (skk-look-completion): Use `skk-look-ispell' if `skk-look-use-ispell' is non-nil. (skk-look): Ditto. * skk-vars.el (skk-look-use-ispell): New user option. 2000-08-31 Tetsuo Tsukamoto * SKK-MK: Under Emacs 18, Use `if' instead of `when' where it is not yet defined. * ptexinfmt.el: Sync with Wanderlust. * skk-jisx0201.el (skk-toggle-katakana): Set the extent for `skk-input-mode-string' under XEmacs. * skk-macs.el (skk-mode-off, skk-j-mode-on, skk-latin-mode-on, skk-jisx0208-latin-mode-on, skk-abbrev-mode-on): Ditto. * skk.el: Changes for XEmacs -- (skk-mode): Create extents for `skk-input-mode-string'. (skk-setup-modeline): If `skk-status-indicator' is left, Add an extent to the modeline format, as well as `skk-input-mode-string'. 2000-08-28 Tetsuo Tsukamoto * SKK-MK (SKK-MK-compile): Require cl for Emacs 18. * experimental/skk-e18.el: Don't require cl here. * skk-kcode.el (skk-make-char): Typo. 2000-08-27 Tetsuo Tsukamoto * experimental/skk-e18.el (call-process): Work around for Emacs 18.55. * ptexinfmt.el: New file imported from Wanderlust. * SKK-MK (SKK-MK-texinfo-format): Require ptexinfmt. (SKK-MK-compile): Work around for Emacs 18.55. * skk-num.el (skk-num-convert): Work around for Emacs 18.55. 2000-08-26 Tetsuo Tsukamoto * doc/skk.texi ($B"#%b!<%I$K$*$1$kJ8;zJQ49(B, $B?t;z$d5-9fJ8;z$NF~NO(B, etc):Update for SKK 10 and lator. (SKKIME): New section. 2000-08-25 Tetsuo Tsukamoto * experimental/skk-dos.el (skk-save-jisyo): Advise to preserve file modes. 2000-08-23 Tetsuo Tsukamoto * experimental/skk-dos.el: Work around for Demacs 1.2.0. * skk-vars.el (skk-isearch-switch): Default to nil. * skk.el (comint-send-input): New advice. (skk-make-temp-jisyo): Use short file name under MS-DOS. (skk-make-temp-file): Expand DIR before passing it to `expand-file-name'. 2000-08-20 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-delete-char): Call `skk-kakutei' if point in the working buffer is the same as {or less than} `skk-henkan-start-point'. 2000-08-19 Tetsuo Tsukamoto * READMEs/CVS_00readme: Update. 2000-08-19 YOSHIZAWA Masahiro * skk.el (skk-okurigana-prefix): Fix the condition description. 2000-08-18 Tetsuo Tsukamoto * READMEs/PROPOSAL: tm ML => APEL ML. * skk.el (skk-okurigana-prefix): Don't use `skk-char-octet' under Nemacs. 2000-08-16 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Provide skk-autoloads. * skk-cursor.el (skk-cursor-current-color): No longer check if `skk-jisx0201-mode' is bound. * skk-jisx0201.el: Move variables to skk-vars.el. (skk-setup-modeline): No longer redefine this function. * skk-vars.el (skk-use-jisx0201-input-method): New user option. (skk-cursor-jisx0201-color, skk-jisx0201-mode-string, skk-jisx0201-mode-map, skk-jisx0201-base-rule-tree, skk-jisx0201-roman-rule-tree, skk-jisx0201-roman, skk-jisx0201-current-rule-tree, skk-jisx0201-mode): From skk-jisx0201.el. * skk.el (skk-regularize): Require skk-jisx0201 if `skk-use-jisx0201-input-method' is non-nil. Require skk-kanagaki if `skk-use-kana-keyboard' is non-nil. -- in this function instead of `skk-mode'. 2000-08-16 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Always generate autoloads here. 2000-08-15 Tetsuo Tsukamoto * SKK-MK (SKK-MK-install,SKK-MK-generate-autoloads-el): if $(EMACS) is Emacs 20 or lator, generate autoloads by `update-autoloads-from-directories'. Don't install leim-list.el for Emacs 19 or earlier. (SKK_MODULES): Don't install skk-leim.el for Emacs 19 or earlier. * skk-leim.el: Register input methods here. (skk-activate, skk-auto-fill-activate): Advise `skk-setup-modeline' to do nothing. * skk-setup.el.in: Don't register input methods here. 2000-08-14 Tetsuo Tsukamoto * skk-jisx0201.el: Modify doc string. 2000-08-12 Tetsuo Tsukamoto * skk-gadget.el (skk-clock): Quit by any event. Play sounds, if available, under XEmacs. * skk-vars.el (skk-use-kana-keyboard): Default to nil. 2000-08-11 Tetsuo Tsukamoto * Makefile (tar, snapshot): Fix the problem that the resulting tar ball contains "..". * SKK-MK (SKK-MK-compile): Expand "." before passing it to `compile-elisp-modules'. * skk-tut.el (skktut-setup-question-buffer, skktut-setup-answer-buffer): Don't bind a key for a non-existent command `skktut-error-command'. * skk-vars.el (skk-use-kana-keyboard): New user option. * skk.el (skk-mode): Require `skk-kanagaki' if `skk-use-kana-keyboard' is non-nil. 2000-08-08 Tetsuo Tsukamoto * experimental/skk-kanagaki.el: Add comments. (skk-kanagaki-set-henkan-point-key, skk-kanagaki-abbrev-mode-key, skk-kanagaki-katakana-mode-key, skk-kanagaki-latin-jisx0208-mode-key, skk-kanagaki-hankaku-mode-key, skk-kanagaki-latin-mode-key, skk-kanagaki-code-input-key): New default value for Emacs 18. 2000-08-07 Tetsuo Tsukamoto * experimental/skk-kanagaki.el: New file. * skk-vars.el (skk-rom-kana-base-rule-list, skk-rom-kana-rule-list, skk-jisx0208-latin-vector, skk-kana-rom-vector, skk-isearch-mode-string-alist, skk-server-host, skk-server-prog, skk-server-jisyo, skk-lookup-kana-vector): Fix the custom type descriptions. * skk.el (skk-mode): Don't use `skk-previous-candidate-char' under skk-kanagaki. (skk-henkan-show-candidates): Work even if the last event is not invoked by a character key. (skk-previous-candidate): Ditto. 2000-08-04 Tetsuo Tsukamoto * skk-jisx0201.el, skk-tut.el, skk.el: Replace `canna-henkan-region-or-self-insert' with `skk-insert'. 2000-08-02 Tetsuo Tsukamoto * skk.el (skk-search): Undo the previous change. 2000-08-02 Tetsuo Tsukamoto * experimental/skk-e18.el (frame-width): Call `screen-width'. * skk-look.el (skk-look): Bind `skk-use-numeric-conversion' to nil. * skk.el (skk-search): When `skk-use-numeric-conversion' is non-nil, also do non-numeric conversion after numeric conversion. (skk-henkan-show-candidate-subr): If Emacs has MULE 4.0 or greater, call `string-bytes' instead of `string-width'. When candidates are displayed using a normal window, assign one line to each candidate. 2000-07-21 Mikio Nakajima * skk-tut.el (skktut-init-variables-alist): Set `skk-cursor-change-width' nil instead of t. 2000-07-18 Tetsuo Tsukamoto * skk-vars.el (skk-isearch-switch, skk-isearch-state, skk-isearch-in-editing): New internal variables. * skk-isearch.el (skk-isearch-initial-mode): Restore the previous SKK status for the isearch after `isearch-edit-string'. (skk-isearch-setup): Set `skk-isearch-switch' to t. Set `skk-isearch-in-editing' to nil. (skk-isearch-cleanup): Set `skk-isearch-switch' to nil. If `skk-isearch-in-editing' is nil, set `skk-isearch-state' to nil. (skk-isearch-newline): Turn on SKK mode when `skk-isearch-current-mode' reurns nil. (isearch-repeat): Advise this function only when `skk-isearch-switch' is t. (isearch-search): Ditto. (isearch-edit-string): Ditto. Save the value `skk-isearch-current-mode' returns. Set `skk-isearch-in-editing' to t. 2000-07-18 Mikio Nakajima * skk-tut.el (skktut-init-variables-alist): Removed `(skk-previous-completion-function . 'skk-previous-completion-original)' and `(skk-completion-function . 'skk-completion-original)' pairs. * skk-comp.el (skk-completion-original): Merged into `skk-completion'. (skk-completion-1): New subroutine. (skk-completion): Do not use temporary variable `COMPLETION-WORD'. (skk-previous-completion-original): Merged into `skk-previous-completion'. * skk-vars.el (skk-package-data-directory): Removed. * experimental/skk-exsearch.el: Require path-util. Remove all unnecessary spaces between paren. (skk-look-search): Remove `(skk-look-search)' from `skk-current-search-prog-list'. (look): Use `exec-installed-p'. (cdbget): Ditto. 2000-07-11 Mikio Nakajima * experimental/skk-cursor3.el: Change all the second argument of set-face-property to `background'. (skk-mode): Remove t condition (set cursor to `skk-cursor-latin-color'). (skk-auto-fill-mode): Ditto. * skk-leim.el Do not register input-method. (skk-leim-change-input-method-title): New function. (skk-abbrev-mode): New advice. (skk-auto-fill-mode): Ditto. (skk-jisx0201-mode): Ditto. (skk-jisx0208-latin-mode): Ditto. (skk-kakutei): Ditto. (skk-latin-mode): Ditto. (skk-mode): Ditto. (skk-toggle-kana): Ditto. * skk-setup.el.in (isearch-mode-end-hook): Separate into two parts, isearch cleanup parts and cursor parts. Add advice to `toggle-input-method'. Add title of japanese-skk. Add hook `isearch-mode-hook' only when * skk.el (skk-setup-modeline): Change condition t to `(eq skk-status-indicator 'minor-mode)'. (skk-mode): When exit, set `skk-input-mode-string' null string unless `skk-status-indicator' is `minor-mode'. When entering into skk-mode, set `skk-input-mode-string' `skk-hiragana-mode-string' if `skk-status-indicator' is `left'. * skk-jisx0201.el: Change condition t to `(eq skk-status-indicator 'minor-mode)'. 2000-07-09 Mikio Nakajima * skk-setup.el.in (isearch-mode-end-hook): Check if skk-cursor feature is provided or not. * SKK-MK (SKK_MODULES): Add skk-cursor3. 2000-07-09 YOSHIZAWA Masahiro * skk-setup.el.in (isearch-mode-end-hook): Bug fixed. 2000-07-08 Mikio Nakajima * experimental/skk-cursor3.el: New experimental program. * SKK-MK (SKK_MODULES): Add `skk-cursor2' and `ccc'. * skk-setup.el.in: Add check if skk-cursor2 feature is exists or not. * experimental/ccc.el: New experimental program. * experimental/skk-cursor2.el: Ditto (modified version of skk-cursor.el which uses `ccc.el'. 2000-06-24 Mikio Nakajima * skk-viper.el (viper-forward-word-kernel): Add check whether following character is Japanese JISX0213 or not. (viper-backward-word-kernel): Ditto. (viper-join-lines): Ditto. * skk-macs.el (skk-jisx0213-p): New inline function. * doc/skk.texi (Makefile$B$NJT=8$H%$%s%9%H!<%k(B): Change required APEL version 9.22 to 10.2. * skk.el (skk-version): Use `apel-version'. 2000-06-23 Mikio Nakajima * skk-vars.el (skk-last-input-mode): Removed. * skk-cursor.el (skk-cursor-current-color): Add comment. * skk-macs.el (skk-abbrev-mode-on): Do not initialize `skk-katakana'. * skk.el (skk-abbrev-mode): Do not set `skk-last-input-mode'. (skk-kakutei): Do not refer to `skk-last-input-mode'. (skk-start-henkan): Keep `skk-katakana'. 2000-06-23 Takao KAWAMURA * skk-lookup.el (skk-lookup-agent-list): Set `skk-lookup-search-agents' correctly. 2000-06-22 Mikio Nakajima * skk-obsolete.el (skk-obsolete-function-alist): Add `(skk-toggle-kana . skk-toggle-characters)' and `(skk-current-insert-mode . skk-current-input-mode)' pairs. * skk-abbrev.el: Remove unnecessary spaces between parens. * skk-auto.el: Ditto. * skk-comp.el: Ditto. * skk-develop.el: Ditto. * skk-gadget.el: Ditto. * skk-isearch.el: Ditto. * skk-kakasi.el: Ditto. * skk-kcode.el: Ditto. * skk-look.el: Ditto. * skk-lookup.el: Ditto. * skk-obsolete.el: Ditto. * skk-server.el: Ditto. * skk-study.el: Ditto. * skk-tut.el: Ditto. * skk-vars.el: Ditto. * skk-viper.el: Ditto. * skk-xm20_4.el: Ditto. * skk.el: Ditto. * vip.el: Ditto. * experimental/skk-dcomp.el: Ditto. * experimental/tut-code/skk-def.el: Ditto. * experimental/tut-code/skk-tutcdef.el: Ditto. * experimental/tut-code/skk-tutcode.el: Ditto. * skk-cursor.el (skk-cursor-current-color): Check if `skk-abbrev-mode' is nil or not in a upper region of the function. * skk-isearch.el (skk-isearch-mode-cleanup): Use `skk-current-input-mode'. * skk-vars.el (skk-last-input-mode): New internal variable. * skk.el (skk-toggle-kana): Renamed to `skk-toggle-characters'. Bug and doc fixed. Call *-region function intead of *-henkan not to call `skk-kakutei'. Do not setup `skk-input-mode-string'. Do not call `force-mode-line-update'. (skk-kakutei): Check if `skk-mode' is nil or non-nil in a lower region of the function in order not to initialize internal variables before calling `skk-search-excluding-word-pattern-function'. Do not call `force-mode-line-update'. (skk-mode): Do not setup `skk-input-mode-string'. (skk-abbrev-mode): Set current input mode to `skk-last-input-mode'. Call `skk-kakutei' only when `skk-henkan-active' is non-nil. * skk-lookup.el (skk-lookup-search): Add temporary variable V. * skk-macs.el (skk-j-mode-on): Setup `skk-input-mode-string'. (skk-current-insert-mode): Renamed to `skk-current-input-mode'. * READMEs/MEMO.txt: New file. 2000-06-21 Mikio Nakajima * skk-lookup.el (skk-lookup-process-okurigana): When `skk-henkan-okuri-strictly' is nil check prefix of OKURIGANA is equal to `skk-okuri-char' or not. (skk-lookup-search): Call `skk-lookup-process-henkan-key-function' to process HENKAN-KEY when `skk-lookup-process-henkan-key-function' is non-nil. * skk-vars.el (skk-lookup-kana-vector): New user variable. (skk-lookup-process-henkan-key-function): Ditto. (skk-lookup-prefix-and-kana-map): New internal variable. * skk-tut.el (skktut-init-variables-alist): Bug fixed. * skk.el (skk-okurigana-prefix): Return nil when OKURIGANA is not hirakana string. 2000-06-20 Mikio Nakajima * SKK-CFG: Remove unnecessary comments. * skk-num.el: Remove unnecessary spaces between parens. 2000-06-19 YOSHIZAWA Masahiro * SKK-MK (SKK-MK-install-package): Missing quote. 2000-06-19 TSUKAMOTO Tetsuo * SKK-MK (SKK_MODULES): Do not install skk-study.el under Emacs 18. * tinyinstall.el (data-directory): Give it the same value as `exec-directory', under Emacs 18. 2000-06-19 Mikio Nakajima * skk-num.el (skk-num-update-jisyo): Not to show debug message. Bind `skk-use-numeric-conversion' to nil temporarily. Set buffer to ` *.skk-jisyo*'. * Makefile (clean): Add leim-list.el as a target. * skk.el (skk-henkan-show-candidate-subr): Bug fixed. * skk-num.el (skk-num-recompute): Setup `skk-num-recompute-key' in a upper region of the function code. * skk-vars.el (skk-lookup-search-agents): Change its default value to nil and remove require tag. (skk-num-recompute-key): Change to global internal variable. * skk-lookup.el: All variables and constants are moved to skk-vars.el. (skk-lookup-search): Not to search if `skk-num-list' or `skk-num-recompute-key is non-nil. Do not convert `skk-henkan-key' by `skk-num-compute-henkan-key'. (skk-lookup-agent-list): Initialize `skk-lookup-search-agents' when it has a null value. 2000-06-18 Mikio Nakajima * skk-lookup.el (skk-lookup-process-okurigana): Bug fixed. 2000-06-17 Mikio Nakajima * SKK-MK (SKK-MK-install): Bug fixed. (SKK-MK-install-package): Ditto. (SKK-MK-install): Copy skk-setup.el to leim-list.el and install both of them. (SKK-MK-install-package): Ditto. * skk-lookup.el (skk-lookup-process-okurigana): Return nil if STRING is a null string. * skk-leim.el: Remove unnecessary spaces between parens. * skk-setup.el.in: Register SKK as an input method if Emacs has `register-input-method'. Add `skk-tut-file' setup strings. * SKK-MK (SKK-MK-make-setup-file): Change its argument `DICTIONARY' to `SPEC'. (SKK-MK-install-package): Do not use multiple let scopes. Use `SKK-MK-compile-info'. Use new `SKK-MK-make-setup-file'. (SKK-MK-install): Ditto. Make `SKK-MK-make-setup-file' to setup as to tutorial file. 2000-06-03 Mikio Nakajima * SKK-MK (SKK-MK-install): Bug fixed. (SKK-MK-install-package): Ditto. 2000-05-31 Mikio Nakajima * skk-cursor.el: Add `keyboard-quit' to FUNCS list. Remove duplicate `kill-buffer' from FUNCS list. * experimental/GUIDELINE: Renewed. 2000-05-15 Mikio Nakajima * skk-lookup.el (skk-lookup-option-alist): Typo fixed. (skk-lookup-default-option-list): Ditto. 2000-05-14 Mikio Nakajima * skk-lookup.el: Add install notes to Commentary. Remove unnecessary blanks between parens. (skk-lookup-option-alist): As to the list whose car is "GENIUS", change 6th element nil to ",". Change all S expressions in nested lists which represent regexp to search to symbol `prefix'. Doc fixed. Change sexp choice in option to `(const nil)'. (skk-lookup-default-option-list): Ditto. 2000-04-28 Mikio Nakajima * skk.el (skk-truncate-message): Removed. (skk-henkan-show-candidate-subr): Pop up another buffer to display long string that cannot displayed wholly in the echo area. (skk-henkan-show-candidates): Use `save-window-excursion' for the purpose above. 2000-04-27 Mikio Nakajima * READMEs/README.win: Change file name descriptions `Readme' to `README' and `Install' to `INSTALL'. 2000-4-27 Yuh Ohmura * READMEs/README.win: add SKK on Windows and skkserve on windows. 2000-04-27 Mikio Nakajima * READMEs/README.win: Reorganize it as outline mode. * READMEs/INSTALL: Typo fixed. 2000-04-26 Yuh Ohmura * make.bat: Change maintenner. * READMEs/README.win: add about dictionary 2000-04-26 Mikio Nakajima * READMEs/INSTALL: Add description about dictionaries. * doc/skk.texi (Makefile$B$NJT=8$H%$%s%9%H!<%k(B): Ditto. (.emacs$B$N@_Dj(B): Add description about `skk-setup.el', and change description about isearch-mode-end-hook. Change open parens to closed ones. Change `SKK 10' to `Daredevil SKK'. * SKK-MK (SKK-MK-make-setup-file): New function. (DICDIR): New variable. (SKK_DICTIONARIES): Ditto. (SKK-MK-install): Install dictionaries if they exist in ./dic subdirectory. (SKK-MK-install-package): Ditto. * Makefile (clean): Add `skk-setup.el'. * dic/README: New file. * skk-setup.el.in: New file. 2000-04-09 Takao KAWAMURA * skk-vars.el (skk-keep-record): change type from 'boolean to '(choice integer (const t) (const nil)) * skk.el (skk-save-jisyo-original): Move calling `skk-record-jisyo-data' into `skk-before-kill-emacs-hook'. (skk-record-jisyo-data): if `skk-keep-record' is a integer, skk-record-file does not grow over it. 2000-04-06 Mikio Nakajima * experimental/skk-exsearch.el (core-engine): Bug fixed. (search-engine): New argument ARGUMENT. (skk-cdbget-search): Take SKK-HENKAN-KEY as its second argument. 2000-04-03 Murata Shuuichirou * skk-viper.el (skk-viper-normalize-map): Use local-variable-if-set-p instead of local-variable-p, when running on FSF emacs. Sync with XEmacs case. 2000-03-29 Yuh Ohmura * READMEs/CVS_on_Windows: cancel below change 2000-03-29 Yuh Ohmura * READMEs/CVS_on_Windows: add about timezone. 2000-03-24 Mikio Nakajima * experimental/skk-exserv.el (server-version): Bug fixed. * SKK-MK (SKK_MODULES): Add `skk-exserv'. * experimental/skk-exserv.el: New experimental program. * experimental/skk-exsearch.el (search-engine): Convert `skk-henkan-key' by `skk-num-compute-henkan-key' if `skk-use-numeric-conversion' is non-nil. Remove arg ARGUMENT. (skk-cdbget-search): Remove second argument `skk-henkan-key'. 2000-03-22 Mikio Nakajima * skk-server.el (skk-adjust-search-prog-list-for-server-search): Remove unproper comments. 2000-03-21 Mikio Nakajima * experimental/skk-exsearch.el (search-engine): Get forward one character if there is a candidates string in the working buffer. (synchronous-search-engine): Removed (server is connecting with TCP network stream, not started by `start-process'...) (server-search-engine): Removed. (synchronous-search-engine): New slot `success-exit-code' and `error-exit-code' are provided. (core-engine): Refer to slot of eigine `success-exit-code' and `error-exit-code'. If error occured, show stderr as error message. Bug fixed as to BUFFER argument of `call-process'. 2000-03-20 Mikio Nakajima * skk-server.el (skk-open-server): Use temporary variable PROC for NEmacs. * experimental/skk-exsearch.el (search-engine): New superclass. (synchronous-search-engine): Change it to class (not superclass). (asynchronous-search-engine): Specify `search-engine' as its superclass. Doc fixed. (setup-synchronous-engine): New function. 2000-03-19 Mikio Nakajima * SKK-MK (SKK_MODULES): Add skk-exsearch. * experimental/skk-exsearch.el: New experimental program. * skk-develop.el: Move edebug specs of `skk-save-point' and `skk-with-point-move' to skk-macs.el. 2000-03-16 Mikio Nakajima * SKK-MK (SKK-MK-cleanup-trouble-makers): Removed. (SKK-MK-install): Do not use `SKK-MK-cleanup-trouble-makers'. (SKK-MK-install-package): Ditto. (LISPDIR): Remove space between a S expression and paren. (SKK-MK-install): Ditto. (SKK-MK-install-package): Ditto. (SKK-MK-texinfo-format): Ditto. (SKK-MK-what-where): Ditto. (SKK-MK-texinfo-format): Bind `standard-output' to nil. (SKK-MK-generate-autoloads-el): Ditto. (SKK-MK-compile): Remove local `standard-output'. (write-region): Removed. 2000-03-13 Takao KAWAMURA * Makefile (clean): Doesn't remove ../ddskk*. (tar): Remove ../ddskk*. (snapshot): Ditto. 2000-03-12 Mikio Nakajima * skk-vars.el (skk-codename): Specify station name only. * Makefile (snapshot): New entry. 2000-03-11 Mikio Nakajima * Makefile (tar): Modify for tar 1.12. (clean): Remove old archive, links and backup file initiated with dot. * ChangeLog: Move issues before 1999 to ChangeLog.0. 2000-02-25 Daiki Ueno * skk.el (skk-setup-modeline): Use `add-minor-mode' under XEmacs. * skk-kcode.el (skk-input-by-code-or-menu-jump): Use "%s" for the 1st argument of `message'. 2000-02-06 Kenichi OKADA * skk-vars.el (skk-emacs-type): Add `mule5'. (skk-kcode-charset): Ditto. (skk-coding-system-alist): Ditto. (skk-kcode-charset-list): Ditot. * skk.el (skk-jisx0208-to-ascii): Ditto. (skk-mode): Ditto. * skk-macs.el (skk-emacs-type): Ditto. (skk-detect-emacs): Ditto. (skk-str-length): Ditto. (skk-substring): Ditto. (skk-ascii-char-p): Ditto. (skk-str-ref): Ditto. (skk-jisx0208-p): Ditto. * skk-kcode.el (skk-make-char): Ditto. (skk-display-code): Ditto. 2000-02-05 Tsukamoto Tetsuo * experimental/skk-e18.el (insert-and-inherit): Sync with APEL. (number-to-string): Ditto. 2000-01-31 Mikio Nakajima * skk.el (skk-auto-fill-mode): Add defition for Emacs 18. * skk-macs.el (skk-do-auto-fill): Add defition for Emacs 18. 2000-01-30 Tsukamoto Tetsuo * experimental/skk-dos.el (require): Fix. * experimental/skk-e18.el (insert-file-contents-as-coding-system): Sync with APEL. * skk-macs.el (skk-j-mode-on): Create a local keymap here. (skk-latin-mode-on): Ditto. (skk-jisx0208-latin-mode-on): Ditto. (skk-abbrev-mode-on): Ditto. * skk-vars.el (skk-kakutei-key): The value is not necessarily a string. * skk.el (skk-e18-setup): Do not let local key bindings in `skk-j-mode-map', `skk-latin-mode-map', `skk-jisx0208-latin-mode-map', `skk-abbrev-mode-map'. These are not local variables. 2000-01-30 Tsukamoto Tetsuo * skk.el (skk-isearch-forward, skk-isearch-forward-regexp, skk-isearch-backward, skk-isearch-backward-regexp): Enclose with `static-unless' instead of `unless'. 2000-01-30 Mikio Nakajima * experimental/skk-e18.el (skk-hiragana-to-katakana): Moved to skk.el. (skk-katakana-to-hiragana): Ditto. (unread-command-events): Removed. * skk-macs.el (skk-lisp-prog-p): Use `skk-ascii-char-p'. (skk-unread-event): Add definition for Emacs 18. 2000-01-29 Tsukamoto Tetsuo * skk.el: Check `emacs-major-version' instead of `emacs-version' under Emacs 18. 2000-01-29 Tsukamoto Tetsuo * skk-jisx0208.el (skk-setup-modeline): Set the value of `mode-line-format' in each buffer. * skk.el (skk-setup-modeline): Ditto. 2000-01-29 Tsukamoto Tetsuo * experimental/skk-e18.el (skk-hiragana-to-katakana): New function for Nemacs. (skk-katakana-to-hiragana): Ditto. (window-minibuffer-p): Refer to WINDOW when it is given. * skk.el (skk-search-and-replace): Use `goto-char' to go back to the beginning of the match, instead of `backward-char'. 2000-01-29 Daiki Ueno * skk-macs.el (skk-charsetp): Rearrange conditionals. 2000-01-28 Tsukamoto Tetsuo * skk.el (skk-e18-setup): Add `skk-abbrev-mode-map'. 2000-01-28 Mikio Nakajima * skk.el (skk-make-char): Moved to skk-kcode.el. * skk-vars.el (skk-cursor-change-width): Bind default variable to nil for nemacs. (skk-use-color-cursor): Ditto. (skk-hankaku-alist): Define for mule1 and nemacs, too. (skk-coding-system-alist): Define string and number data for nemacs. * experimental/skk-e18.el (skk-j-mode-on): Removed (skk-j-mode-on): Ditto. (skk-latin-mode-on): Ditto. (skk-jisx0208-latin-mode-on): Ditto. (skk-abbrev-mode-on): Ditto. (skk-hankaku-alist): Ditto. (skk-emulate-original-map): Ditto. (skk-mode): Remove advice. (skk-e18-setup): Moved to skk.el. (skk-current-local-map): Ditto. (skk-e18-self-insert-keys): Ditto. 2000-01-27 Tsukamoto Tetsuo * experimental/skk-e18.el (overlayp): New emulation. 2000-01-27 Mikio Nakajima * experimental/skk-correct.el: New experimental program. * SKK-MK (SKK_MODULES): Add skk-correct. * skk.el: Do not occur error even on Emacs 18 (just warning...). (skk-jisx0208-to-ascii): Add defition taken from skk-e18.el for nemacs and mule1. * experimental/skk-e18.el (skk-jisx0208-to-ascii): Removed. 2000-01-26 Tsukamoto Tetsuo * experimental/skk-e18.el (save-match-data): `defmacro-maybe' instead of `defmacro'. 2000-01-26 Mikio Nakajima * skk-macs.el (skk-ascii-char-p): typo fixed. 2000-01-26 Tsukamoto Tetsuo * experimental/skk-e18.el (skk-hankaku-alist): New variable. (skk-jisx0208-to-ascii): New function. 2000-01-26 Mikio Nakajima * skk.el (skk-henkan-show-candidate-subr): Revive. 2000-01-25 Mikio Nakajima * skk-macs.el (skk-str-length): Use `string-to-char-list' for Emacsen other than XEmacs, Mule4 and Mule3 (hereinafter referred to as `old Emacs'. (skk-str-ref): Ditto. (skk-read-event): Use `read-char' for old Emacs. (skk-substring): Use last definition for old Emacs. (skk-ascii-char-p): Compare character using `<' for Mule1 and NEmacs. (skk-jisx0208-p): Ditto. * skk-kcode.el (skk-make-string): Do not use `skk-make-char' for NEmacs. * skk.el (skk-make-temp-file): Use `expand-file-name'. Set end slashed directory to temporary variable DIR. Do not access A drive even if system-type is MS-DOS oriented one. (skk-make-char): Use last definition for mule1. (skk-mode): Use static-if for for the place using `skk-emacs-type'. (skk-kill-emacs-without-saving-jisyo): Ditto. (skk-henkan-show-candidates): Ditto. * experimental/skk-e18.el (read-event): Removed. (skk-in-minibuffer-p): Ditto. (skk-lisp-prog-p): Ditto. (skk-make-string): Ditto. (skk-make-temp-file): Ditto. (skk-str-length): Ditto. (skk-str-ref): Ditto. (skk-make-char): Ditto. (window-minibuffer-p): Temporarily defined until poe-18.el defines it. 2000-01-25 Tsukamoto Tetsuo * SKK-MK (SKK_MODULES): Do not install skk-cursor.el for Emacs 18. * experimental/skk-e18.el (skk-use-color-cursor): Default to nil under Emacs 18. (skk-cursor-change-width): Ditto. (skk-e18-self-insert-keys): New variable. (skk-lisp-prog-p): Don't redefine here -- use the original. (skk-in-minibuffer-p): Ditto. (skk-str-length): New inline function. (skk-str-ref): Ditto. (search-backward): New advice -- by $BCfEg$5$s(B. (re-search-backward): Ditto. (window-minibuffer-p): New function -- by $BCfEg$5$s(B. (skk-e18-define-j-mode-map): Abolish. (insert-file-contents-as-coding-system): Work arond for Mule 1. (skk-make-string): This is only for Nemacs. (skk-make-char): This is for Mule 1. * skk-macs.el (skk-emacs-type): Add `mule1'. (skk-detect-emacs): Ditto. * skk-vars.el (skk-emacs-type): Ditto. (skk-background-mode): Avoid an error under Emacs 18. (skk-cursor-default-color): Ditto. (skk-isearch-overriding-local-map): Ditto. * skk.el (skk-isearch-forward): This function is not obsolete for Emacs 18 -- though Emacs 18 seems obsolete ;^) (skk-isearch-forward-regexp): Ditto. (skk-isearch-backward): Ditto. (skk-isearch-backward-regexp): Ditto. 2000-01-24 Takao KAWAMURA * SKK-MK (SKK-MK-generate-autoloads-el): corrected the indentation. 2000-01-23 Tsukamoto Tetsuo * Makefile (clean): Delete experimental/skk-isearch.el. * SKK-MK: Copy "experimental/skk-is-n.el" to "experimental/skk-isearch.el" under Emacs 18. (SKK-MK-compile): Also gather autoloads from "experimental/skk-isearch.el". (SKK-MK-generate-autoloads-el): Use a file name without its directory name. * experimental/skk-is-n.el: New file. 2000-01-23 Tsukamoto Tetsuo * Makefile (clean): Delete experimental/*.elc. * SKK-MK: Require "skk-e18" if `emacs-major-version' is 18. (SKK-MK-texinfo-coding-system): Modify for Emacs 18. (SKK_MODULES): Ditto. (SKK-MK-compile): Ditto. (SKK-MK-install): Ditto. (SKK_INFOS): Creating info files is not yet supported under Emacs 18. (SKK-MK-compile-info): Do nothing if `SKK_INFOS' is nil. (SKK-MK-generate-autoloads-el): Make sure the point is eobp before the last comment is inserted. * experimental/skk-e18.el: New file. * skk-macs.el (skk-emacs-type): Modify for Nemacs. (skk-detect-emacs): Ditto. * skk-server.el: Require "static" at the compile time. (skk-open-server): Use `static-cond'. Call `process-kanji-code' under Nemacs. * skk-vars.el (skk-emacs-type): Modify for Nemacs. (skk-cursor-default-color): Default to nil under Nemacs. (skk-background-mode): Ditto. (skk-kcode-charset): Ditto -- It's OK. Don't use this variable. (skk-isearch-breakable-character-p-function): Ditto. (skk-check-okurigana-on-touroku): Rename from `skk-check-okurigana-on-toroku'. * skk.el: Don't refer to `skk-branch-name' before "skk-vars" is loaded. Require "skk-e18" under Emacs 18. If loading "easymenu" fails, ignore `easy-menu-define'. (skk-setup-delete-backward-char): If `overriding-local-map' is not used, use the return value of `current-global-map' instead. * tinyinstall.el: (emacs-major-version): New variable for Emacs 18. (member): New function for Emacs 18. 2000-01-23 Mikio Nakajima * skk.el (skk-henkan-show-candidates): Remove unnecessary temporary variable STR. 2000-01-21 Mikio Nakajima * skk.el (skk-insert-new-word): Change for new `skk-eval-string'. (skk-henkan-show-candidate-subr): Ditto. (skk-nunion): Change open parens to closed ones. * skk-macs.el (skk-eval-string): Return STRING. 2000-01-19 Tsukamoto Tetsuo * SKK-MK: Typo. * skk-isearch.el (skk-isearch-find-keys-define): New function. (skk-isearch-setup-keymap): Call it. * skk.el (skk-truncate-message): Use `truncate-string' instead of `truncate-string-to-width'. 2000-01-19 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-setup-keymap): Find keys that invoke SKK in `current-global-map', and let them execute `skk-isearch-skk-mode' in isearch-mode. * skk-jisx0201.el: Modify comments. 2000-01-19 Mikio Nakajima * skk.el (skk-insert-new-word): Use `skk-eval-string'. (skk-insert-new-word): Remove unnecessary temporary variable FUNC. * skk-macs.el (skk-lisp-prog-p): Move from skk.el and make it inline. (skk-eval-string): New inline function. 2000-01-18 Tsukamoto Tetsuo * SKK-MK (standard-character-unification-table-for-decode): Under Emacs 20.2, set this variable and compile skk-jisx0201.el properly. 2000-01-17 Murata Shuuichirou * skk.el (skk-kakutei-cleanup-buffer): Convert hiragana as okurigana into katakana even if skk-okurigana is nil. 2000-01-17 FURUE Hideyuki * skk-cursor.el (skk-cursor-current-color): Evaluate the clauses in original order. (^_^; (keyboard-quit): Remove advice. 2000-01-17 FURUE Hideyuki * SKK-MK (SKK-MK-compile): Keep ``standard-output'' t. * make.bat (target to clean): Typo fixed. * READMEs/README.win: Correct sample ``.emacs'' files. 2000-01-17 SAKAI Kiyotaka * skk-leim.el: Not to overwrite user's input method setting. 2000-01-15 Tsukamoto Tetsuo * skk-jisx0201.el: Require "static" at the compile time. (skk-jisx0201-zenkaku): Use `static-cond'. (skk-jisx0201-hankaku): Ditto. (skk-setup-modeline): Ditto. 2000-01-08 Mikio Nakajima * skk.el (skk-setup-delete-selection-mode): Setup for pending-del on XEmacs. (skk-lisp-prog-p): Check first character by aref instead of skk-str-ref. Check second character is more than ?\37, too. 2000-01-02 Tsukamoto Tetsuo * experimental/skk-dos.el: Fix comments. (require): Fix the advice. 1999-12-31 Mikio Nakajima * skk-lookup.el (skk-lookup-get-method): Omit check by `skk-lisp-prog-p'. (skk-lookup-search-1): New subroutine. (skk-lookup-search): Use `skk-lookup-search-1'. 1999-12-30 Tsukamoto Tetsuo * skk-jisx0201.el: Add Comments. (skk-jisx0201-roman-rule-list, skk-jisx0201-base-rule-tree, skk-jisx0201-roman-rule-tree. skk-jisx0201-roman): New variables. (skk-toggle-jisx0201): New function. (skk-jisx0201-mode-on): Accept an optional argument. (skk-kakutei): Refer to `skk-jisx0201-roman'. 1999-12-30 Tsukamoto Tetsuo * SKK-MK (LISPDIR): Select a good place for MS-DOS and Windows. (VERSION_SPECIFIC_LISPDIR): Ditto. (standard-translation-table-for-decode): Under Emacs 20.3 or later, set this variable and compile skk-jisx0201.el properly. * etc/Emacs.ad: Typo. * experimental/skk-dos.el: New file. * skk-isearch.el: Always require "skk". * skk-jisx0201.el (skk-setup-modeline): Don't check the feature "xemacs". Refer to `skk-emacs-type' instead. * skk-study.el (skk-study-file): Let the default value appropriate for MS-DOS. (skk-study-backup-file): Ditto. (skk-study-save): Don't use `copy-file' under MS-DOS. * skk-vars.el (skk-cursor-change-width): Ugh, fix the default value. * tinyinstall.el (install-prefix): Select a good place for MS-DOS and Windows. 1999-12-27 Tsukamoto Tetsuo * skk-vars.el (skk-background-mode): Don't call `x-color-values' if it is not defined. (skk-init-file, skk-jisyo, skk-backup-jisyo, skk-record-file): Let the default values appropriate for MS-DOS. (skk-use-color-cursor, skk-cursor-change-width): nil by default under MS-DOS. 1999-12-26 Mikio Nakajima * skk-vars.el (skk-rule-tree): Doc fixed. (skk-cursor-change-width): Change default value to value of variable `window-system'. * skk.el (skk-mode): Remove locally skk-pre-command from pre-command-hook and skk-after-point-move from post-command-hook when exit skk-mode. * skk-macs.el (skk-get-char): Comment (it is not used). (skk-set-char): Ditto. (skk-set-prefix): Ditto. Use `cdr' instead of `nthcdr'. (skk-charsetp): Simplify. (skk-color-display-p): Add fboundp check of `x-display-color-p'. Omit `window-system' is eq `x' or not. 1999-12-23 Mikio Nakajima * skk-macs.el: Eliminate all spaces which existed between parens. (skk-get-last-henkan-data): Renamed to `skk-get-last-henkan-data'. (skk-put-last-henkan-data): Renamed to `skk-put-last-henkan-datum'. (skk-put-last-henkan-data): New inline function. * skk.el (skk-update-jisyo-original): Get HENKAN-BUFFER temporary variable only when `skk-update-end-function' is non-nil. (skk-remove-redundant-okurgana): New function. (skk-henkan-in-minibuff): Use `skk-remove-redundant-okurgana'. Doc fixed. Remove OKURIGANA temporary variable. (skk-version): Remove a `,' between version number and code name. (skk-remove-redundant-okurgana): Bug fixed. * skk-vars.el: Remove unnecessary blanks between parens. * skk-viper.el (skk-viper-normalize-map): Use `static-if' instead of `if'. Call `skk-viper-normalize-map-function' even if SKK related minor mode map is in minor-mode-map-alist. 1999-12-21 Murata Shuuichirou * skk-macs.el (skk-color-display-p): Check whether X or not, before use `x-display-color-p'. * skk-viper.el (read-from-minibuffer): Advice only when skk-use-color-cursor is no-nil. 1999-12-20 Mikio Nakajima * skk.el (kill-buffer): Doc fixed. (minibuffer-keyboard-quit): Add advice only for XEmacs. * READMEs/PROPOSAL ($BJ,3d$7$?%U%!%$%k$KI,?\$N5-=R(B): Modify for Daredevil. * READMEs/README.win (Message-ID): Ditto. 1999-12-19 Mikio Nakajima * skk.el: Eliminate all spaces which existed between parens. (skk-mode): Require `skk-cursor.el' everytime skk-mode is called. (skk-mode-once-again): New function. (minibuffer-keyboard-quit): Apply Tsukamoto san's Message-Id: <199912181531.AAA24324@ring.etl.go.jp> patch. * skk-vars.el: Eliminate all spaces which existed between parens. (skk-cursor): New group. (skk-cursor-default-color): Change its group to skk-cursor. (skk-cursor-hiragana-color): Ditto. (skk-cursor-katakana-color): Ditto. (skk-cursor-jisx0208-latin-color): Ditto. (skk-cursor-latin-color): Ditto. (skk-cursor-abbrev-color): Ditto. (skk-cursor-report-set-error): Ditto. (skk-cursor-change-width): Ditto. * skk-cursor.el: Eliminate all spaces which existed between parens. Check if display supports color. (isearch-mode-end-hook): Add `skk-cursor-set-properly' to the hook. (skk-cursor-current-color): Slightly simplified. (skk-cursor-set-color): Omit check of `skk-use-color-cursor' is nil or non-nil. Check if COLOR is non-nil. (skk-cursor-set-properly): New optional arg COLOR. (skk-cursor-setup-minibuffer): New function. (minibuffer-setup-hook): Hook `skk-cursor-setup-minibuffer'. (skk-mode-hook): Hook `skk-mode-once-again'. (minibuffer-exit-hook): Set cursor in the latest current buffer (not minibuffer). * skk-viper.el: Eliminate all spaces which existed between parens. (skk-cursor-set-properly): Change function to advice. (skk-mode-hook): Hook `skk-mode-once-again'. (viper-toggle-case): Japanized version. Hirakana to Katakana and vice versa. (viper-intercept-ESC-key): Doc fixed. (vip-intercept-ESC-key): Ditto. (vip-Append): New advice of skk-viper-cursor-ad. (vip-Insert): Ditto. (vip-insert): Ditto. (vip-intercept-ESC-key): Ditto. (vip-open-line): Ditto. (viper-Append): Ditto. (viper-Insert): Ditto. (viper-hide-replace-overlay): Ditto. (viper-insert): Ditto. (viper-intercept-ESC-key): Ditto. (viper-open-line): Ditto. (skk-abbrev-mode): Ditto. (skk-jisx0208-latin-mode): Ditto. (skk-kakutei): Ditto. (skk-latin-mode): Ditto. (skk-mode): Ditto. (skk-toggle-kana): Ditto. (skk-viper-saved-cursor-color): New internal variable. (viper-read-string-with-history): New advice of skk-viper-ad. (read-from-minibuffer): Ditto. (skk-mode): Change class of skk-viper-cusror-ad to after. (skk-cursor-set-properly): Change its class to around. Set `viper-insert-state-cursor-color' to the value of `skk-viper-saved-cursor-color' if insert-state. (viper-insert-state-cursor-color): Make it buffer-local variable. ;; * skk-isearch.el: Eliminate all spaces which existed between parens. Modify doc string about hooks. 1999-12-18 Tsukamoto Tetsuo * experimental/skk-hankaku-mode.el: Hey, is she still there? She's coming home. :-) No longer in the repository. * skk-cursor.el (minibuffer-setup-hook): Fix the behaviour under XEmacs. 1999-12-18 Tsukamoto Tetsuo * skk-jisx0201.el (skk-setup-modeline): If `skk-status-indicator' is left and the face `modeline' is not proportional, use the same number of columns to display each SKK status, except for `skk-jisx0201-mode'. * skk.el (skk-setup-modeline): Ditto. 1999-12-18 Tsukamoto Tetsuo * skk-cursor.el: (abort-recursive-edit): Advise under XEmacs. (skk-mode): Call `skk-cursor-set-properly'. (skk-auto-fill-mode): Seems this advice is not needed -- though I'm not sure. (skk-insert): New advice. Call `skk-cursor-set-properly' when `skk-abbrev-mode' is non-nil. (minibuffer-setup-hook): Adjust cusor color under XEmacs. 1999-12-17 Tsukamoto Tetsuo * skk-isearch.el (isearch-search): New advice. 1999-12-16 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-abbrev-mode-p): New function. (skk-isearch-current-mode): Enable to recognize abbrev mode. (isearch-repeat): This should be `after' advice. (isearch-edit-string): New advice. * skk-vars.el (skk-isearch-mode-string-alist): Add a string for abbrev mode. 1999-12-16 Yuh Ohmura * make.bat: correct bug. 1999-12-15 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-setup-keymap): No longer check if `skk-kakutei-key' is defined. 1999-12-15 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-delete-char): Fix regexp by `regexp-quote'. 1999-12-15 Tsukamoto Tetsuo * skk-isearch.el (isearch-repeat): Delete unnecessary or unreasonable elements from `isearch-cmds'. 1999-12-15 Mikio Nakajima * skk.el (skk-mode): Move skk-cursor.el related codes to skk-cursor.el. * skk-cursor.el (skk-mode): Remove duplicated advice. Do not use skk-cursor-set-properly. Add codes in the top level in order to set cursor properly when first time skk-cursor.el is loaded. 1999-12-14 Tsukamoto Tetsuo * skk-isearch.el: Require `skk-vars' also at the load time. (skk-isearch-mode-setup): Make sure `skk-isearch-mode-map' is a keymap. (isearch-repeat): Rewrite the advice so that it look like advice. :-) There should be no changes in its behaviour. 1999-12-14 FURUE Hideyuki * skk-cursor.el (set-buffer, erase-buffer): Remove advices. 1999-12-14 Mikio Nakajima * SKK-MK (SKK_DAREDEVIL_NOT_USE): Add skk-vip. 1999-12-13 Mikio Nakajima * skk-viper.el (skk-cursor-set-properly): Sync up with skk-cursor-set-properly in skk-cursor.el. * skk-cursor.el (skk-save-jisyo-original): Change defadvice for `skk-save-jisyo'. (skk-cursor-set-properly): Check current buffer has a window or not first. 1999-12-13 FURUE Hideyuki * skk-cursor.el (skk-cursor-current-color): Change order again. (keyboard-quit): New advice. (newline): Revive advice. (skk-latin-mode): Ditto. (skk-jisx0208-latin-mode): Ditto. (skk-abbrev-mode): Ditto. (skk-auto-fill-mode): Ditto. (skk-toggle-kana): Ditto. (skk-kakutei): Ditto. (skk-save-jisyo-original): Ditto. (skk-katakana-region): Ditto. (skk-hiragana-region): Ditto. (skk-jisx0208-latin-region): Ditto. (skk-latin-region): Ditto. (skk-jisx0201-region): Ditto. (skk-gyakubiki-message): Ditto. (skk-gyakubiki-katakana-region): Ditto. (skk-gyakubiki-katakana-message): Ditto. (skk-hurigana-region): Ditto. (skk-hurigana-message): Ditto. (skk-hurigana-katakana-region): Ditto. (skk-romaji-region): Ditto. (skk-romaji-message): Ditto. (skk-delete-backward-char): Ditto. (skk-start-henkan): Ditto. (force-mode-line-update): Remove advice. 1999-12-13 FURUE Hideyuki * skk-comp.el (skk-completion-original): Bug fixed. (skk-previous-completion-original): Ditto. * skk-cursor.el (skk-cursor-current-color): Change order to evaluate `skk-abbrev-mode' first. (newline): Remove advice. (skk-latin-mode): Ditto. (skk-jisx0208-latin-mode): Ditto. (skk-abbrev-mode): Ditto. (skk-auto-fill-mode): Ditto. (skk-toggle-kana): Ditto. (skk-kakutei): Ditto. (skk-save-jisyo-original): Ditto. (skk-katakana-region): Ditto. (skk-hiragana-region): Ditto. (skk-jisx0208-latin-region): Ditto. (skk-latin-region): Ditto. (skk-jisx0201-region): Ditto. (skk-gyakubiki-message): Ditto. (skk-gyakubiki-katakana-region): Ditto. (skk-gyakubiki-katakana-message): Ditto. (skk-hurigana-region): Ditto. (skk-hurigana-message): Ditto. (skk-hurigana-katakana-region): Ditto. (skk-romaji-region): Ditto. (skk-romaji-message): Ditto. (skk-delete-backward-char): Ditto. (skk-start-henkan): Ditto. (force-mode-line-update): New advice. (after-make-frame-hook): Remove hook. (minibuffer-setup-hook): Simplify hook. 1999-12-12 Mikio Nakajima * skk-cursor.el (skk-cursor-set-properly): Bug fixed. * skk.el (skk-mode): Call `skk-cursor-set-properly` if `skk-use-color-cursor' or `skk-cursor-change-width' is non-nil. Not required skk-num.el expressly. (skk-num-list $B$H$$$&(B buffer local $BJQ?t$K4X$9$k%(%i!<$r2sHr$9$k$?$a$K(B skk-use-numeric-conversion $B$,(B non-nil $B$G$"$l$P(B skk-mode $BFb$G@h$K(B skk-num.el $B$r(B require $B$7$F$$$?$N$@$,!">e5-$NLdBj$O(B daredevil $B$K8B$C(B $B$F$O5/$3$k2DG=@-$,$J$$$N$G!"L@<(E*$J(B require $B$r;_$a$?(B ($BI,MW$H$J$C(B $B$?$H$-$K(B autoload $B$5$l$k(B)$B!#(B skk-use-numeric-conversion $B$,(B non-nil $B$G!"(Bskk-num.el $B$N(B load $BA0$K(B let $B$G(B temporary $BJQ?t$H$7$F(B bind $B$7!"$=$N(B let $BFb$G(B skk-num.el $B$r(B require $B$7$?$H$-!"(Blet $B$r=P$?8e$K(B skk-num-list $B$,(B void $B$K$J$k$H$$$&(B $B%(%i!<$,$"$C$?!#(BDaredevil $B$G$OJQ?t$OA4$F(B skk-vars.el $B$KF~$C$F$*$j!"(B $B$3$l$r(B skk.el $B$,(B require $B$7$F$$$k$N$G!"(Bskk-num-list $BJQ?t$O(B skk.el $B$N(B load $BD>8e$+$iB8:_$7$F$$$k$N$G!"$3$NLdBj$OH/@8$7$J$$!#(B * skk-vars.el (skk-completion-function): Add descriptions to doc string. (skk-previous-completion-function): Ditto. 1999-12-10 FURUE Hideyuki * skk.el (skk-delete-okuri-mark): Bug fixed. 1999-12-09 FURUE Hideyuki * skk.el (keyboard-quit): Typo fixed. (query-replace-regexp): Disable advice because don't work correctly. (query-replace): Ditto. * skk-cursor.el (goto-line): Removed. (insert-file): Ditto. (execute-extended-command): Ditto. (read-from-minibuffer): Ditto. (completing-read): Ditto. (minibuffer-keyboard-quit): Ditto. (exit-minibuffer): Ditto. (abort-recursive-edit): Ditto. (delete-window, select-window, select-frame, delete-frame, set-buffer, erase-buffer): New advices. (kill-buffer, bury-buffer, switch-to-buffer, pop-to-buffer, other-window): Included among the above advices. (skk-cursor-current-color): New function. Extracted from ``skk-cursor-set-properly''. (skk-cursor-set-properly): Call ``skk-cursor-current-color''. (minibuffer-setup-hook): Preserve cursor color in ``skk-cursor-color-before-entering-minibuffer''. (minibuffer-exit-hook): Retrieve cursor color from ``skk-cursor-color-before-entering-minibuffer''. * skk-vars.el (skk-cursor-color-before-entering-minibuffer): New internal buffer local variable. * doc/skk.texi ($B8+=P$78l$NJd40(B): Moved @footnote outside @group block. 1999-12-08 Tsukamoto Tetsuo * skk-cursor.el (exit-minibuffer): Set cursor color even if the point still exists in the minibuffer. (minibuffer-keyboard-quit): Ditto. * skk-vars.el (skk-check-okurigana-on-toroku): Fix doc string. 1999-12-07 Tsukamoto Tetsuo * skk-vars.el (skk-check-okurigana-on-toroku): New variable. * skk.el (skk-henkan-in-minibuff): If `skk-check-okurigana-on-toroku' is non-nil, prompt user to check okurigana. 1999-12-07 Tsukamoto Tetsuo * skk-cursor.el (completing-read): Fix the advice. (read-from-minibuffer): Ditto. 1999-12-07 Tsukamoto Tetsuo * skk-cursor.el (completing-read): Don't use `unwind-protect'. Use `condition-case'. Don't advise to XEmacs' `completing-read'. (read-from-minibuffer): New advice. Call `skk-cursor-set-properly'. * skk-jisx0201.el (fence-mode-map): defvar under Mule 2. 1999-12-07 Mikio Nakajima * skk-macs.el (skk-detect-emacs): New macro. * skk-cursor.el (completing-read): Disabled. * SKK-MK (write-region): New advice, but does not work (;_;)... 1999-12-06 Tsukamoto Tetsuo * skk-isearch.el (isearch-repeat): Compile the advice at the compile time. 1999-12-06 Tsukamoto Tetsuo * READMEs/CVS_00readme: New file, whose contents written by $B 1999-12-05 Takao KAWAMURA * SKK-MK (SKK-MK-compile-info): New function. * Makefile (info): New entry. 1999-12-05 Tsukamoto Tetsuo * skk-cursor.el (completing-read): New advice. Call `skk-cursor-set-properly'. 1999-12-04 Mikio Nakajima * skk-isearch.el (skk-isearch-redo-function): Use list for handler of condition-case. * skk.el (skk-kakutei-initialize): Remove skk-num and skk-look related code. (skk-undo-kakutei): Use list for handler of condition-case. * skk-look.el (skk-kakutei-initialize): New advice for initialize skk-look related variables. * skk-num.el (skk-kakutei-initialize): New advice for initialize skk-num related variables. 1999-12-04 Tsukamoto Tetsuo * etc/Emacs.ad: New file. This is for displaying menu items in Japanese under XEmacs. 1999-12-04 Tsukamoto Tetsuo * skk-jisx0201.el (skk-jisx0201-insert): When starting conversion, call `skk-cursor-set-properly'. 1999-12-04 Tsukamoto Tetsuo * skk-isearch.el (isearch-repeat): New advice. 1999-12-04 Tsukamoto Tetsuo * skk-jisx0201.el (skk-toggle-katakana): Set `skk-input-mode-string'. 1999-12-04 Tsukamoto Tetsuo * skk-cursor.el (skk-cursor-set-properly): Change cursor color to `skk-cursor-jisx0201-color' when needed. * skk-jisx0201.el (skk-toggle-katakana): Call `skk-cursor-set-properly'. 1999-12-04 Tsukamoto Tetsuo * skk.el (skk-define-menu-bar-map): Call lambda expressions by `call-interactively'. 1999-12-04 Murata Shuuichirou * skk-macs.el (skk-find-coding-system): Check symbolicity of arg, before pass it to `find-coding-system'. xemacs's `find-coding-system' doesn't like string argument. 1999-12-03 Mikio Nakajima * skk-study.el: Remove ``;; -*- mode: emacs-lisp; byte-compile-dynamic: t;-*-'' and ``;; -*- byte-compile-dynamic-docstring: t;-*-'' cooklies. * skk-isearch.el: Remove ``;; -*- byte-compile-dynamic-docstring: t;-*-'' cookie. * skk-look.el: Remove ``;; -*-byte-compile-dynamic: t;-*-'' cookie. 1999-12-03 Tsukamoto Tetsuo * SKK-MK (SKK_INFOS): Add skk.info-5 and skk.info-6. * doc/.cvsignore: Ditto. * experimental/dbm/skk-dbm.el: Don't require `skk-foreword'. * experimental/skk-dcomp.el: Ditto. (skk-dcomp-extent): Now this is a local variable. * skk-jisx0201.el: Load "jisx0201" under Mule 2. (newline, newline-and-indent, exit-minibuffer): New advices. Check if `skk-egg-like-newline' is non-nil. (skk-jisx0201-string-conversion): New function. (skk-jisx0201-zenkaku, skk-jisx0201-hankaku): New functions that call it. (skk-jisx0201-insert): Call `skk-jisx0201-zenkaku' instead of `japanese-zenkaku'. (skk-hiragana-to-jisx0201-region): Call `skk-jisx0201-hankaku' instead of `japanese-hankaku'. (skk-katakana-to-jisx0201-region): Ditto. 1999-12-02 Yuh Ohmura (yutopia@t3.rim.or.jp> * READMEs/CVS_on_Windows: update * make.bat: add what-where and clean option 1999-12-01 Mikio Nakajima * skk-abbrev.el: Do not require stack-m. (skk-completion-original): Do not use stack-all. * skk-look.el: Do not require stack-m and path-util. (skk-look-completion): Do not use stack-all. (skk-look-1): Use `with-temp-buffer'. Do not use `condition-case'. * skk-comp.el: Do not require stack-m. (skk-completion-original): Do not use stack-nth, stack-push, stack-pop. (skk-previous-completion-original): Ditto. * skk-vars.el (skk-completion-depth): Doc modified slightly. (skk-look-working-buffer): Ditto. * SKK-MK (SKK_MODULES): Remove stack-m. (SKK_DAREDEVIL_NOT_USE): Add stack-m. * stack-m: Removed. 1999-11-30 Mikio Nakajima * skk-vars.el (skk-start-henkan-with-completion-char): Use `?\240' instead of 160 to represent character. (skk-backward-and-set-henkan-point-char): Use `?\321' instead of 209 to represent character. 1999-11-29 Tsukamoto Tetsuo * SKK-MK: Require `poe'. 1999-11-29 Murata Shuuichirou * skk-macs.el (skk-find-coding-system): New macro. * skk-study.el (skk-study-save,skk-study-read-1): Use `skk-find-coding-system'. * skk.el (skk-save-jisyo-1): Ditto. * skk.el (skk-get-jisyo-buffer): Use `skk-find-coding-system'. Accept pair of filename and coding-system as an argument. * skk-obsolete.el (skk-obsolete-function-alist): Replace `skk-set-cursor-color-properly' with `skk-set-cursor-properly'. 1999-11-29 Tsukamoto Tetsuo * skk-cursor.el (skk-cursor-set-properly): Set color properly on `skk-abbrev-mode'. 1999-11-29 Tsukamoto Tetsuo * skk-cursor.el (newline, execute-extended-command, skk-delete-backward-char, skk-start-henkan): Advise, maybe, more effectively. 1999-11-29 Takao KAWAMURA * Makefile (clean): Remove skk-autoloads.el. (tar): Depend on clean. 1999-11-28 FURUE Hideyuki * skk-comp.el (skk-completion-original): Use `skk-completion-depth' to search completed word. (skk-previous-completion-original): Ditto. * skk-kakasi.el (skk-gyakubiki-message): Use "%s" as the first message argument to display properly string containing `%'. (skk-gyakubiki-katakana-message): Ditto. (skk-hurigana-message): Ditto. (skk-hurigana-katakana-message): Ditto. (skk-romaji-message): Ditto. * skk.el (skk-mode): Bind `skk-start-henkan-with-completion-char' and `skk-backward-and-set-henkan-point-char' for each skk related maps. (skk-insert): Set this-command to `skk-completion' when last-command-char is equal to `skk-previous-completion-char', and call `skk-kana-input' when last-command-is neither `skk-previous-completion-char' nor `skk-next-completion-char'. * skk-vars.el (skk-start-henkan-with-completion-char): New user variable. (skk-backward-and-set-henkan-point-char): Ditto. (skk-completion-depth): New internal variable. 1999-11-28 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-delete-char): Check the car of the cdr of each element of `isearch-cmds', and update it, if necessary, according to the return value of `skk-isearch-mode-string'. 1999-11-28 Tsukamoto Tetsuo * skk-cursor.el (newline): New advice. Call `skk-cursor-set-properly'. (skk-delete-backward-char): Ditto. (skk-start-henkan): Ditto. (minibuffer-setup-hook): If `skk-insert' or `skk-start-henkan' has just been executed, call `skk-cursor-set-properly', else set cursor color to `skk-cursor-default-color'. 1999-11-28 Mikio Nakajima * skk.el (minibuffer-keyboard-quit): Use `static-cond'. * READMEs/CVS_on_Windows: New file. 1999-11-28 Takao KAWAMURA * SKK-MK (SKK-MK-generate-autoloads-el): Generate skk-autoloads.el. * skk.el (skk-version): Add `;;;###autoload' cookie. * skk-server.el (skk-server-version): Ditto. * skk-num.el (skk-num-compute-henkan-key): Ditto. (skk-num): Ditto. * skk-jisx0201.el (skk-toggle-katakana): Ditto. * skk-study.el (skk-study-check-alist-format): Remove `;;;###autoload' cookie. 1999-11-28 Tsukamoto Tetsuo * skk-study.el: Force emacs-lisp-mode. (skk-study-check-alist-format-1): Use `skk-str-length' instead of `length' for okuri-ari and okuri-nasi entries. 1999-11-28 Mikio Nakajima * READMEs/INSTALL: Change outline mode and add descriptions about custom package. * skk-study.el (skk-study-file-format-version): Change version number to string. * SKK-MK (SKK_PACKAGE_NOT_USE): New constant. (SKK_DAREDEVIL_NOT_USE): Ditto. (SKK-MK-install): Make directories, SKK_LISPDIR, SKK_DATADIR and SKK_INFODIR if they do not exist. Remove SKK_DAREDEVIL_NOT_USE from SKK_MODULES and delete related files. (SKK-MK-install-package): Remove SKK_PACKAGE_NOT_USE and SKK_DAREDEVIL_NOT_USE from SKK_MODULES and delete related files. * doc/skk.texi (Makefile$B$NJT=8$H%$%s%9%H!<%k(B): Doc fixed. * skk-tut.el (skktut-end-tutorial): Refer to `skk-branch-name', `skk-ml-command-address' and `skk-ml-address'. Doc fixed. * skk.el (skk-version): Refer to `skk-branch-name'. (skk-%-to-%%): Removed. * skk-vars.el (skk-branch-name): New constant. (skk-ml-command-address): New constant. (skk-codename): Contain rail company name. 1999-11-28 FURUE Hideyuki * skk-num.el (skk-num-convert): Bug fixed. * skk.el (skk-henkan-show-candidates): Ditto. (skk-henkan-show-candidate-subr): Do not use `skk-%-to-%%'. * skk-kcode.el (skk-char-to-hex): Bug fixed. 1999-11-25 Tsukamoto Tetsuo * skk-jisx0201.el (skk-setup-modeline): Make sure, under XEmacs, `modeline-format' in each buffer is a list. * skk.el (skk-setup-modeline): Ditto. 1999-11-25 TSUMURA Tomoaki * skk.el (skk-katakana-region): Fix the problem that lambda function returns `nil' on byte-compiled code. (skk-hiragana-region): Ditto. 1999-11-25 Takao KAWAMURA * skk-autoloads.el: Added an entry for `skk-compile-rule-list'. * skk.el (skk-compile-rule-list): ;;;###autoload * skk-tut.el (skk-tutorial): Fixed to be used with the version 11 or later. (skktut-end-tutorial): Modified for Daredevil SKK. Activated (require 'skk-vars) while being loaded. 1999-11-24 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-mode-setup): Call `skk-isearch-setup-keymap' in this function, not at top level, so that `skk-kakutei-key' can be set in `skk-init-file'. 1999-11-24 FURUE Hideyuki * skk-isearch.el (skk-isearch-mode-setup): Call `skk-erase-prefix' with its argument non-nil in `skk-isearch-working-buffer'. 1999-11-24 Mikio Nakajima * SKK-MK (SKK-MK-install-package): delete 'skk-autoloads from SKK_MODULES. * skk-isearch.el (skk-isearch-mode-message): Adjust doc string. 1999-11-24 FURUE Hideyuki * skk.el (skk-mode): Call `skk-create-file' for `skk-jisyo'. 1999-11-23 Tsukamoto Tetsuo * skk-jisx0201.el (skk-setup-modeline): Fix typo -- use `default-modeline-format', not `default-mode-line-format' under XEmacs. * skk.el (skk-setup-modeline): Ditto. 1999-11-22 Tsukamoto Tetsuo * doc/.cvsignore: Add skk.info-4. 1999-11-22 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-search-string): Use `>' instead of `/='. 1999-11-22 Tsukamoto Tetsuo * skk-isearch.el: Use `static-if', requiring "static" at the compile time. 1999-11-22 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-setup-keymap): Define `skk-kakutei-key' instead of "\C-j" if the symbol value is already set. Define backward-deleting keys to run `skk-isearch-delete-char', not merely writing "\177". (skk-isearch-newline): Do not call `isearch-printing-char' if no ASCII approximation to `last-command-char' is returned. * skk.el (skk-setup-modeline): Use `static-cond'. 1999-11-22 Mikio Nakajima * skk.el (skk-katakana-region): Use `skk-search-and-replace'. (skk-hiragana-region): Ditto. (skk-jisx0208-latin-region): Ditto. (skk-latin-region): Ditto. * skk-jisx0201.el (skk-jisx0201-search-and-replace): Moved to skk.el and renamed to `skk-search-and-replace'. (skk-hiragana-to-jisx0201-region): Use `skk-search-and-replace'. Do not use `identity' to return just a string. (skk-katakana-to-jisx0201-region): Ditto. 1999-11-22 Takao KAWAMURA * SKK-MK (SKK_MODULES): Bound `lookup-byte-compile' to t when (require 'lookup) is executed. * skk-vars.el: Added (require 'path-util). 1999-11-22 Mikio Nakajima * READMEs/CVS_digest: Add descriptions abount only DES based crypt is available for a passwd of the cvs account. Change slighly descriptions about making encrypted passwd. Debian Linux -> Debian GNU/Linux. Reorganize structure of sections. 1999-11-21 Tsukamoto Tetsuo * skk.el (skk-mode): Set cursor color if `skk-mode-invoked' is nil and the function is called interactively. 1999-11-21 Mikio Nakajima * READMEs/CVS_digest: Add descriptions about creating encrypted passwd. 1999-11-18 Mikio Nakajima * READMEs/AUTHORS: Add descriptions for Daredeveil branch. * READMEs/CVS_digest: New file. * READMEs/Codename: New file. * READMEs/Contributors: Filename typo fixed. 1999-11-18 TSUMURA Tomoaki * skk-cursor.el (skk-change-cursor-when-ovwrt): Renamed to `skk-cursor-change-when-ovwrt'. * skk-viper.el (skk-cursor-set-properly): Use `skk-cursor-change-when-ovwrt'. * skk.el (skk-mode): Put off setting `skk-mode-invoked'. 1999-11-14 Mikio Nakajima * skk-abbrev.el (skk-completion-original): Bug fixed. 1999-11-09 Shuhei KOBAYASHI * skk-look.el (skk-look): Use copy-sequence instead of `copy-list' not to depend on CL package on FSF Emacs. * skk-num.el (skk-num-flatten-list): Do not use `mapcan' not to depend on CL package on FSF Emacs. 1999-11-09 Mikio Nakajima * skk-develop.el: Remove def-edebug-spec for `skk-defun-cond', `skk-defsubst-cond', `skk-defmacro-cond'. (skk-submit-bug-report): Remove code for a certain specific version of Mew and Wanderlust. * skk-macs.el (skk-face-on): Use `defmacro' and `static-cond' instead of `skk-defmacro-cond' and `cond'. (skk-defun-cond): Removed. (skk-defsubst-cond): Removed. (skk-defmacro-cond): Removed. * skk-kcode.el (skk-display-code): Use `defun' and `static-cond' instead of `skk-defun-cond' and `cond'. Require static.el. * skk-cursor.el (skk-change-cursor-when-ovwrt): Use `defun' and `static-cond' instead of `skk-defun-cond' and `cond'. Require static.el. * skk.el (skk-detach-extent): Use `defun' and `static-cond' instead of `skk-defun-cond' and `cond'. (skk-jisx0208-to-ascii): Ditto. (skk-make-char): Ditto. * skk-macs.el (skk-str-length): Use `defsubst' and `static-cond' instead of `skk-defsubst-cond' and `cond'. (skk-substring): Ditto. (skk-read-event): Ditto. (skk-char-to-string): Ditto. (skk-ascii-char-p): Ditto. (skk-str-ref): Ditto. (skk-jisx0208-p): Ditto. (skk-char-octet): Ditto. (skk-charsetp): Ditto. 1999-11-07 Mikio Nakajima * skk-jisx0201.el (skk-jisx0201-cursor-color): Renamed to `skk-cursor-jisx0201-color'. * SKK-MK (SKK_MODULES): Arrange for new files. * skk.el (skk-terminal-face-p): Removed. (skk-mode): Require skk-xm20_4.el. * skk-viper.el: (viper-intercept-ESC-key): Remove cursor control and change class to before. (vip-intercept-ESC-key): Ditto. (skk-set-cursor-properly): Renamed to `skk-cursor-set-properly'. * skk-cursor.el: Revive to simplify skk.el. (skk-default-cursor-color): Renamed to `skk-cursor-default-color' (for grouping of customize). (skk-hiragana-cursor-color): Renamed to `skk-cursor-hiragana-color'. (skk-katakana-cursor-color): Renamed to `skk-cursor-katakana-color'. (skk-jisx0208-latin-cursor-color): Renamed to `skk-cursor-jisx0208-latin-color'. (skk-latin-cursor-color): Renamed to `skk-cursor-latin-color'. (skk-abbrev-cursor-color): Renamed to `skk-cursor-abbrev-color'. (skk-report-set-cursor-error): Renamed to `skk-cursor-report-set-error'. (skk-use-cursor-change): Renamed to `skk-cursor-change-width'. * skk.el (abort-recursive-edit): Remove cursor control. (exit-minibuffer): Ditto. (kill-buffer): Ditto. And change class to before. (skk-kakutei): Ditto. (skk-save-jisyo-original): Ditto. (minibuffer-keyboard-quit): Ditto (as to XEmacs advice only). (skk-auto-fill-mode): Ditto. (skk-toggle-kana): Ditto. (skk-katakana-region): Ditto. (skk-hiragana-region): Ditto. (skk-jisx0208-latin-region): Ditto. (skk-latin-region): Ditto. (skk-mode-off): Ditto. (skk-j-mode-on): Ditto. (skk-latin-mode-on): Ditto. (skk-jisx0208-latin-mode-on): Ditto. (skk-abbrev-mode-on): Ditto. (overwrite-mode): Moved to skk-cursor.el. (goto-line): Ditto. (yank): Ditto. (yank-pop): Ditto. (recenter): Ditto. (insert-file): Ditto. (bury-buffer): Ditto. (switch-to-buffer): Ditto. (hilit-yank): Ditto. (hilit-yank-pop): Ditto. (hilit-recenter): Ditto. (execute-extended-command): Ditto. (pop-to-buffer): Ditto. (other-window): Ditto. (skk-set-cursor-color): Ditto. (skk-set-cursor-properly): Ditto. (skk-change-cursor-when-ovwrt): Ditto. (kill-buffer): Ditto. (skk-default-cursor-color): Ditto. (skk-hiragana-cursor-color): Ditto. (skk-katakana-cursor-color): Ditto. (skk-jisx0208-latin-cursor-color): Ditto. (skk-latin-cursor-color): Ditto. (skk-abbrev-cursor-color): Ditto. (skk-report-set-cursor-error): Ditto. (skk-use-cursor-change): Ditto. (skk-mode): Require skk-cursor.el when `skk-use-color-cursor' or `skk-use-cursor-change' is non-nil. * skk-kakasi.el (skk-gyakubiki-region): Remove cursor control. (skk-gyakubiki-message): Ditto. (skk-gyakubiki-katakana-region): Ditto. (skk-gyakubiki-katakana-message): Ditto. (skk-hurigana-region): Ditto. (skk-hurigana-message): Ditto. (skk-hurigana-katakana-region): Ditto. (skk-hurigana-katakana-message): Ditto. (skk-romaji-region): Ditto. (skk-romaji-message): Ditto. * skk-develop.el (skk-submit-bug-report): Add `skk-share-private-jisyo' to BASE list. * skk.el (skk-emacs-id-file): New user option. (skk-share-private-jisyo): Ditto. (skk-mode): Add code for `skk-share-private-jisyo'. (skk-save-jisyo-original): Ditto. (skk-update-jisyo-original): Ditto. * experimental/skk-jisx0201.el (skk-jisx0201-mode-string): Change mode indicator to `jisx0201' and doc fixed. (skk-jisx0201-rule-list): Define latin-jisx0201 characters. (skk-setup-modeline): Change mode indicator to `jisx0201'. * skk-vars.el: Renamed to skk-xm20_4.el. * skk-vars.el: New file for definitions of user variables. (skk-emacs-id): New internal variable. (skk-jisyo-update-vector): Ditto. ;; Local Variables: ;; coding: iso-2022-jp ;; mode: change-log ;; End: ddskk-15.2/ChangeLog.30000644000570400056700000066554511675101126014542 0ustar kitamotoopenlab2007-08-18 Tetsuo Tsukamoto * Version 13.1 Hattori released. 2007-08-18 Tetsuo Tsukamoto * skk-e21.el (skk-e21-prepare-modeline-properties): Ignore errors in `file-name-directory'. * skk-vars.el: Require `poem' instead of `poe'. * skk-version.el (skk-version): Bump to 13.1. 2007-08-17 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Fix for nested
    s. (skk-annotation-url-package-available-p): Require un-define for Emacs 20, 21 or XEmacs 21.4. 2007-08-16 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Workaround for nested
      s. * skk.el (backward-kill-sentence): New advice. 2007-08-15 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-en-wiktionary-part-of-speech-regexp): Add "Quasi-Adjective", "Proverb" "Personal pronoun" and "Counter". (skk-annotation-en-wiktionary-lang-regexp): Typo. 2007-08-14 Tetsuo Tsukamoto * skk-tankan.el (skk-search-tankanji): Try to talk to a server. 2007-08-13 Tetsuo Tsukamoto Suggested by Tatsuya Kinoshita . * skk-vars.el (skk-show-inline): (skk-show-tooltip): Update docstring. * skk-macs.el (skk-erase-prefix): Call `redraw-frame' under Emacs 20.7. * skk.el (skk-inline-show): Do not call `propertize' if face is nil. (skk-setup-delete-selection-mode): Always put property for delsel or pending-del. 2007-08-11 Tetsuo Tsukamoto * Makefile (clean): Don't remove skk-dic.el. 2007-08-10 Tetsuo Tsukamoto Suggested by Eiji Obata . * skk-comp.el (skk-search-lisp-symbol): Modify doc string. * skk-comp.el (skk-smart-find): Load "smart-find" only if function `smart-find-file' is not defined. * skk-vars.el (skk-annotation-en-wiktionary-part-of-speech-regexp): Add "Letter". * skk.el (skk-search-jisx0208-romaji): Modify doc string. 2007-08-09 Kitamoto Tsuyoshi * doc/skk.texi: Typo. 2007-08-08 Tetsuo Tsukamoto * Makefile (tar): Copy skk-dic.el.in to skk-dic.el. * tut-code/README.tut: .skk -> ~/.skk. 2007-08-05 Eiji Obata * skk-server-completion.el (skk-server-completion-search-midasi): Treat 2nd character as separator. 2007-08-05 Tetsuo Tsukamoto Suggested by Kitamoto Tsuyoshi and Tatsuya Kinoshita * doc/skk.texi: Always use "openlab.jp" for Open Laboratory URLs. 2007-08-04 Eiji Obata * skk-vars.el (skk-server-disable-completion): New variable. * skk-server-completion.el (skk-server-completion-search-midasi): If SKK server doesn't respond for server completion, set `skk-server-disable-completion'. * skk.el (skk-restart): Clear `skk-server-disable-completion'. 2007-08-03 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Refer to skk-annotation-ja-wiktionary-lang-regexp and skk-annotation-ja-wiktionary-part-of-speech-regexp. Ignore "Badtitle" page. Deal with simple.wikipedia. * skk-tankan.el (skk-search-tankanji): New function. * skk-vars.el (skk-search-prog-list-5): Set default value for skk-tankan. (skk-annotation-wikipedia-sources): Add simple.wikipedia. (skk-annotation-en-wiktionary-lang-regexp): (skk-annotation-en-wiktionary-part-of-speech-regexp): Update. (skk-annotation-ja-wiktionary-lang-regexp): (skk-annotation-ja-wiktionary-part-of-speech-regexp): New variables. * skk.el (skk-setup-verbose-messages): Show "$BC14A;z(B" for C-5. 2007-08-02 Eiji Obata * skk.el (skk-kakutei): Add optional argument `ARG' so that C-u C-j doesn't raise error. (skk-henkan): Remove redundant code. 2007-08-02 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-buffer-string): New function. (skk-isearch-search-string): (skk-isearch-delete-char): Call it instead of `buffer-string'. * skk-macs.el (skk-erase-prefix): (skk-insert-prefix): Don't insert skk-prefix to the current buffer. Instead, display it using overlay. * skk-vars.el (skk-prefix-overlay): New local variable. * skk.el (skk-delete-backward-char): Don't call `skk-kakutei' if skk-prefix is present. * skk-act.el: Update URL. * skk-comp.el: Add autoload cookie. * doc/skk.texi: List new elisp files. 2007-08-01 Eiji Obata * skk-server-completion.el (skk-server-completion-search-midasi): Workaround for defect of protocol about SERVER COMPLETION. 2007-07-31 Tetsuo Tsukamoto * ccc.el (ccc-setup-new-frame): Name anonymous function for after-make-frame-functions. 2007-07-29 Tetsuo Tsukamoto Suggested by Eiji Obata . * skk-vars.el (skk-look-completion-arguments): By default, do not pass "-d" to look command. 2007-07-27 Eiji Obata * skk-look.el (skk-look-completion): If `skk-comp-use-prefix' is non-nil, restrict result using `skk-comp-prefix'. * skk-server-completion.el (skk-comp-by-server-completion): Ditto. * skk-vars.el (skk-server-completion-words): Stop being buffer local. * skk-comp.el (skk-comp-restrict-by-prefix): Update docstring. 2007-07-21 Eiji Obata * skk-vars.el (skk-kakutei-prog-list): Abolish. * skk.el (skk-kakutei-program-p): Ditto. * experimental/rdbms/skk-rdbms.el (skk-rdbms-search-kakutei-jisyo-table): Set skk-kakutei-henkan-flag instead of skk-kakutei-flag. * doc/skk.texi: skk-kakutei-flag -> skk-kakutei-henkan-flag. Update lisp code using `when', etc. Update description about usage of skkserv. * skk-vars.el (skk-kakutei-jisyo): Update docstring. 2007-07-18 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-normalize-word): Don't call `upcase-initials'. Instead, upcase only the first letter of WORD. 2007-07-17 Tetsuo Tsukamoto * skk-tankan.el: Modify comments considering the position of skk-search-kakutei-jisyo-file in skk-search-prog-list. 2007-07-16 Eiji Obata * skk.el (skk-undo-kakutei-subr): Consider skk-search-prog-list-[0-9]. 2007-07-16 Kitamoto Tsuyoshi * doc/skk.texi: Add ~/ to init file names. Add spaces around ascii words. 2007-07-15 IRIE Tetsuya * skk-vars.el (skk-undo-kakutei-flag): New variable. * skk.el (skk-undo-kakutei-subr): New function. (skk-undo-kakutei): Use it. (skk-previous-candidate): Ditto. Update docstring. (skk-kakutei-initialize): Clear `skk-undo-kakutei-flag'. (skk-henkan-1): Disable kakutei henkan if `skk-undo-kakutei-flag' is non-nil. 2007-07-14 Kitamoto Tsuyoshi * doc/skk.texi: X -> X Window System. 2007-07-14 Eiji Obata * skk-vars.el (skk-kakutei-henkan-flag): New variable. (skk-kakutei-flag): Update docstring. (skk-kakutei-unique-candidate-flag): Abolish. * skk.el (skk-henkan-1): Check for `skk-kakutei-henkan-flag'. (skk-kakutei-initialize): Clear `skk-kakutei-henkan-flag'. (skk-search-kakutei-jisyo-file): Update docstring. 2007-07-10 Tetsuo Tsukamoto Suggested by IRIE Tetsuya . * doc/skk.texi: Fix documentation for private dictionary. 2007-06-30 IRIE Tetsuya * skk-vars.el (skk-undo-kakutei-return-previous-point): New user option. (skk-undo-kakutei-previous-point) (skk-undo-kakutei-previous-length): New variable. * skk.el (skk-kakutei, skk-undo-kakutei): Use them. * skk-vars.el (skk-kakutei-end-function, skk-last-henkan-data): Fix docstring. 2007-06-28 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-mode-cleanup): Do not remove `skk-pre-command' from pre-command-hook. * skk-isearch.el (skk-isearch-mode-cleanup): * skk-macs.el (skk-mode-off): * skk-viper.el (viper-read-string-with-history): Use `skk-add-pre-command' or `skk-remove-pre-command' instead of an expression with `add-hook' or `remove-hook'. * skk-vars.el (skk-egg-like-newline): Modify custom group to skk-kakutei. 2007-06-28 Eiji Obata * skk.el (skk-search): Undo the last change. (skk-henkan-1): Handle `skk-kakutei-when-unique-candidate' here. 2007-06-27 Eiji Obata * skk-vars.el (skk-kakutei-when-unique-candidate): New user option. (skk-kakutei-unique-candidate-flag): New variable. * skk.el (skk-henkan-1, skk-search): Consider them. * skk-vars.el (skk-kakutei-prog-list): New variable. * skk.el (skk-kakutei-program-p): New function. (skk-henkan-1, skk-undo-kakutei): Use it. (skk-search-kakutei-jisyo-file): Update docstring. 2007-06-26 Eiji Obata * skk.el (skk-cancel-undo-boundary): Call `cancel-undo-boundary' after `skk-kakutei-henkan'. 2007-06-19 Tetsuo Tsukamoto * skk.el (skk-henkan-in-minibuff): Restore point after exiting minibuffer. 2007-06-18 Kenichi Kurihara * experimental/bayesian/bskk (DB::marshal): Remove an unused line. 2007-06-15 Tetsuo Tsukamoto * SKK-CFG: Distinguish Carbon Emacs Package from generic Carbon Emacs. 2007-06-14 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Add "h5" to html2text-remove-tag-list. Do not show "Inflection" in en.wiktionary. * skk-vars.el (skk-annotation-en-wiktionary-part-of-speech-regexp): Support "Demonstrative adjective" and "Phrase". (skk-annotation-en-wiktionary-lang-regexp): Support Albanian, Balinese, Lithuanian, Lojban, and Old Prussian. 2007-06-14 Eiji Obata * skk-comp.el (skk-comp-do): Fix order of candidates after user displayed previous candidate. * skk-vars.el (skk-comp-use-prefix): Update docstring. 2007-06-14 IRIE Tetsuya * skk.el (skk-delete-backward-char): * skk-viper.el (viper-del-backward-char-in-insert): Consider okurigana length when comparing `skk-henkan-end-point' with current point. 2007-06-13 Tetsuo Tsukamoto * SKK-MK: Distinguish Carbon Emacs Package from generic Carbon Emacs. * skk-xemacs.el (skk-tooltip-resize-text): Decide max lines according to `display-pixel-height' and the size of the default font. 2007-06-12 Eiji Obata * skk-vars.el (skk-use-look): Fix value. 2007-06-12 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Remove span with interProject class. * skk-e21.el (skk-tooltip-resize-text): Decide max lines according to `display-pixel-height' and `frame-char-height'. * skk-vars.el (skk-kana-cleanup-command-list): Add `skk-try-completion' and `skk-completion-wrapper'. 2007-06-10 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-en-wiktionary-lang-regexp): (skk-annotation-en-wiktionary-part-of-speech-regexp): New variables. * skk-annotation.el (skk-annotation-wikipedia-1): Use variables above. Remove all
      s for wikipedia. * skk-isearch.el (skk-isearch-turn-off-skk-mode): (skk-isearch-turn-on-skk-mode): (skk-isearch-skk-kakutei): (skk-isearch-skk-turn-on-hiragana-mode): (skk-isearch-skk-turn-on-katakana-mode): (skk-isearch-skk-turn-on-jix0208-latin-mode): (skk-isearch-skk-turn-on-latin-mode): Bind skk-use-color-cursor to nil. * skk-e21.el (skk-e21-prepare-modeline-properties): Use `locate-data-file' under Emacs 22.1 or later. Do not call `find-image' if SKK data director is not found. 2007-06-07 IRIE Tetsuya * experimental/bayesian/skk-bayesian.el (skk-bayesian-save-history): Improve log message. 2007-05-23 IRIE Tetsuya * skk.el (skk-delete-okuri-mark): Accept optional argument NOCLEAR. Do not clear okurigana data if it is non-nil. (skk-kakutei-cleanup-buffer): When skk-okurigana is set, keep okurigana data. 2007-05-20 IRIE Tetsuya * skk.el (skk-henkan): Fix typo in comment. (skk-undo-kakutei): Ditto. 2007-05-14 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-message): Call `keyboard-quit' unless skk-henkan-mode is active. 2007-05-13 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-message): * skk.el (skk-henkan-on-message): Undo previous change. * skk.el (skk-search-function-usage): Noop unless under FSF Emacs 22. * skk-annotation.el (skk-annotation-message): Unread event for `skk-previous-candidate' instead of calling `keyboard-quit'. 2007-05-10 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Recognize "Min Nan". (skk-annotation-message): Fix nonlocal exit codes. 2007-05-09 Tetsuo Tsukamoto * ccc.el: Remove advices to interactive functions. Do not use isearch-mode-end-hook, minibuffer-setup-hook or minibuffer-exit-hook. Use post-command-hook instead. (ccc-defadvice): Abolish. (ccc-read-color): (ccc-color-equal): Support only Emacsen with facemenu. * skk-annotation.el (skk-annotation-message): * skk.el (skk-henkan-on-message): Noop unless under FSF Emacs 22 or later. 2007-05-08 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Support Latin. Remove Kurdish, Korean, Breton, Murrinh-Patha and Scots. Support more parts of speech. Remove more
      s. (skk-annotation-wikipedia-remove-nested): Accept optional argument IBTAG. 2007-05-03 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-message): * skk.el (skk-henkan-on-message): Do not show verbose message when skk-isearch is on or point is in minibuffer. 2007-05-02 Tetsuo Tsukamoto * skk-annotation.el: Rename `skk-annotation-wikipedia-message' to `skk-annotation-message'. (skk-annotation-message): Show skk-annotation-message as well as skk-annotation-wikipedia-message. * skk-e21.el (skk-tooltip-show-at-point): * skk-xemacs.el (skk-tooltip-show-at-point): Call `skk-annotation-message'. * skk-vars.el (skk-annotation-message): New variable. 2007-04-29 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-message): New function. (skk-annotation-wait-for-input): Call it unless digit is set. (skk-annotation-wikipedia-1): Remove tags. (skk-annotation-show-buffer): Call 'skk-annotation-wikipedia-message'. * skk-dcomp.el (skk-dcomp-after-delete-backward-char): Call `skk-henkan-on-message'. * skk-e21.el (skk-tooltip-show-at-point): * skk-xemacs.el (skk-tooltip-show-at-point): Rename optional 2nd argument. Call `skk-annotation-wikipedia-message' for annotation. * skk-vars.el (skk-verbose): (skk-verbose-wait): (skk-henkan-on-message): (skk-annotation-wikipedia-message): New variables. * skk.el (skk-setup-verbose-messages): (skk-henkan-on-message): New functions. (skk-insert): (skk-previous-candidate): Call `skk-henkan-on-message'. 2007-04-27 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Remove "Wikipedia has an article on sth" descriptions for en.wiktionary. * skk-comp.el (skk-comp-lisp-symbol): Bind completion-ignore-case to nil. (skk-search-lisp-symbol): (skk-search-smart-find): (skk-completion-search): Take optional argument WITHOUT-CHAR-MAYBE. * skk-macs.el (skk-eval-string): Format the eval result into string. * skk.el (skk-search-function-usage): New function. 2007-04-26 Tetsuo Tsukamoto * skk-comp.el (skk-comp-do): Modify message when skk-current-completion-prog-list does not contain `skk-comp-by-history'. (skk-comp-get-candidate): When FIRST is integer from 0 to 9, use skk-completion-prog-list-{0-9} instead of skk-completion-prog-list. * skk-dcomp.el (skk-comp): When FIRST is integer, reset completion data. * skk-vars.el (skk-completion-prog-list-0): (skk-completion-prog-list-1): (skk-completion-prog-list-2): (skk-completion-prog-list-3): (skk-completion-prog-list-4): (skk-completion-prog-list-5): (skk-completion-prog-list-6): (skk-completion-prog-list-7): (skk-completion-prog-list-8): (skk-completion-prog-list-9): New user options. * skk.el (skk-insert): Pass PARG as is to `skk-comp'. (skk-start-henkan): If PARG is nil, set it to current-prefix-arg. 2007-04-25 Tetsuo Tsukamoto * skk.el (skk-search-romaji): Search romaji even when the key contains non-hiragana characters. 2007-04-24 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-start-henkan): Modify the 1st arg of `skk-start-henkan' from 0 to 1. * skk.el (skk-insert): (skk-start-henkan): (skk-henkan): Rename the 2nd arg. Distinguish C-u and other prefix arguments for skk-comp-first and skk-katakana. 2007-04-23 NAKAMURA Toshikazu * skk-vars.el (skk-tut-file): (skk-large-jisyo): (skk-aux-large-jisyo): The 2nd arg of `locate-file' must be list of directories. Fix. 2007-04-23 Tetsuo Tsukamoto * skk-e21.el (skk-tooltip-show-at-point): * skk-xemacs.el (skk-tooltip-show-at-point): In skk-isearch, refer to `minibuffer-window' instead of `selected-window'. * skk-isearch.el (skk-isearch-mode-map): Under FSF Emacs, define keys for digit argument conversion. (skk-isearch-wrapper-1): (skk-isearch-start-henkan): New functions. (digit-argument): Advise XEmacs to call `skk-isearch-start-henkan'. 2007-04-22 Tetsuo Tsukamoto * ptexinfmt.el: Sync with emacs-w3m, keeping workarounds for `texinfo-format-separate-node' and `texinfo-format-end-node'. * context-skk.el (context-skk-insert): When `this-command-keys' are translated via function-key-map or key-translation-map, refer to the keymap. * skk-annotation.el (skk-annotation-wikipedia-1): Just stop retrieval on C-g. (skk-annotation-wait-for-input): No longer wait when SKK exits henkan active mode. * skk-vars.el (skk-search-prog-list-0): (skk-search-prog-list-1): (skk-search-prog-list-2): (skk-search-prog-list-3): (skk-search-prog-list-4): (skk-search-prog-list-5): (skk-search-prog-list-6): (skk-search-prog-list-7): (skk-search-prog-list-8): (skk-search-prog-list-9): New user options. * skk.el (skk-search-hankaku-katakana): (skk-search-jisx0208-romaji): New functions. (skk-searc-romaji): Accept optional arg JISX0208. (skk-insert): (skk-start-henkan): Accept optional argument PREFIX-ARG. (skk-henkan): If digit is specified with prefix argument, use skk-search-prog-list-{0-9} instead of skk-search-prog-list. 2007-04-22 Tetsuo Tsukamoto Suggested by Tatsuya Kinoshita . * SKK-CFG, SKK-MK, *.el: Specify coding at the first line of each file containing non-ASCII characters. * skk-jisyo-edit-mode.el (skk-edit-private-jisyo): Take optional argument CODING-SYSTEM, default to one implied with skk-jisyo-code. Bind coding-system-for-read to CODING-SYSTEM for avoiding misdecoding of skk-jisyo. 2007-04-20 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia): Catch `skk-annotation-wikipedia-suspended'. (skk-annotation-wikipedia-1): (skk-annotation-wikipedia-retrieved): Throw `skk-annotation-wikipedia-suspended' when user seems to have started editing before retrieval is complete. 2007-04-19 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wait-for-input): Workaround for XEmacs 21.4. Explicitly call `keyboard-quit'. 2007-04-18 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Support for nested
        or
        . 2007-04-17 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): Abolish function. (skk-annotation-show): Include it. Take optional argument SOURCES. (skk-annotation-wait-for-input): Take optional argument SOURCES. browse wikipedia/wiktionary URL for SOURCES. Workaround for XEmacs event handling. (skk-annotation-wikipedia-1): Support "$B1Q8l(B", "$BA0CV;l(B" and "$B@\B3;l(B" for ja.wiktionary. Use `skk-annotation-wikipedia-remove-nested' for removing uls, dls, and tables. (skk-annotation-wikipedia-remove-nested): New function. (skk-annotation-wikipedia-normalize-word): Downcase WORD for wiktionary if WORD doesn't seem consist of only upper case characters. * skk-macs.el (skk-event-key): Under XEmacs, give 2nd, 3rd and 4th args to `event-to-character' with non-nil values. * skk-e21.el (skk-e21-coding-system): Set default value for Carbon Emacs. * skk-vars.el (skk-show-japanese-menu): Set default value for Carbon Emacs. (skk-tooltip-parameters): Add sample setting for customize. * skk.el (skk-preload): Confirm `stringp' of JISYO. 2007-04-16 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wait-for-input): (skk-annotation-wikipedia-region): Allow user to use prefix argument (digit-argument) and limit wikipedia/wiktionary sources. This means source is limited to `(1- prefix-arg)'th element of skk-annotation-wikipedia-sources. (skk-annotation-wikipedia-cache): (skk-annotation-wikipedia): (skk-annotation-treat-wikipedia): Take optional argument SOURCES. * skk-vars.el (skk-show-inline): Also add to skk-basic group. 2007-04-15 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-clean-sup): (skk-annotation-wikipedia-clean-sub): New functions. (skk-annotation-wikipedia-1): Bind `html2text-format-tag-list' to use functions above for tags and . 2007-04-14 Tetsuo Tsukamoto * SKK-MK (SKK_MODULES): Remove duplicate `skk-azik'. * skk-act.el: * skk-azik.el: Move definitions of user options to skk-vars.el. * skk-vars.el (skk-input-basic): Rename group from `skk-input'. (skk-input-enhanced): New custom group. (skk-act): (skk-azik): New groups that belong to `skk-input-enhanced'. (skk-use-act): (skk-use-azik): New user options. * skk.el (skk-mode-invoke): Setup skk-act, skk-azik, skk-tutcode or skk-kanagaki when requested. * tut-code/README.tut: Modify installtation instructions. * tut-code/skk-tutcode.el: Set parent of group `skk-tutcode' to `skk-input-enhanced'. 2007-04-12 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Check for "Cantonese". Pick up "Han character". 2007-04-11 Tetsuo Tsukamoto * doc/skk.texi: Update for supported Emacsen and setup. * skk-macs.el (skk-string-lessp-in-coding-system): (skk-string<): New functions. These provide workaround for the unicode branch of Emacs. * skk-auto.el (skk-okuri-search-subr-original): * skk-macs.el (skk-string<=): * skk-study.el (skk-study-save): * skk.el (skk-search-jisyo): Use `skk-string<' instead of `string<'. * skk-hint.el (skk-hint-limit): Do not take matching of ?\;. 2007-04-10 Tetsuo Tsukamoto * skk-cus.el (skk-customize-group-skk): New function. * skk-e21.el: * skk-xemacs.el: Add popup menu item for `skk-customize-group-skk'. * skk-vars.el: Explicitly call `set-face-foreground' for skk-tut faces. (skk-kcode-charset): (skk-tankan-search-key): Also list in group skk-jisx0213. (skk-treat-candidate-appearance-function): Allow a user to select sample settings. (skk-treat-candidate-sample1): (skk-treat-candidate-sample2): New functions. * skk.el: Under GNU Emacs 20 and XEmacs 21.4, always ignore `skk-tooltip-show-at-point'. (skk-henkan-show-candidate-subr): Don't call `skk-tooltip-show-at-point' for GNU Emacs 20 and XEmacs 21.4. 2007-04-09 Tetsuo Tsukamoto * skk-e21.el (skk-tooltip-show-at-point): More carefully place tooltip frame, so that mouse pointer will not interfere near bottom of the screen. * skk-xemacs.el (skk-tooltip-show-at-point): Likewise. 2007-04-08 Tetsuo Tsukamoto * skk-comp.el (skk-comp-smart-find): Return nil unless skk-abbrev-mode. Set skk-smart-find-file-path to nil when skk-abbrev-mode is nil. (skk-comp-lisp-symbol): (skk-search-lisp-symbol): New functions. * skk-cus.el (skk-cus-update): (skk-cus-save-file): New functions. (custom-save-variables): Advise to call `skk-cus-update'. * skk-e21.el (skk-tooltip-show-at-point): Adjust mouse position in non-follow mode. * skk-vars.el: Custom-related modifications to skk-init-file, skk-large-jisyo, skk-aux-large-jisyo, skk-jisyo, skk-backup-jisyo, skk-show-icon, skk-use-kana-keyboard, and skk-tut-file. Define groups skk-kanagaki and akk-nicola here. (skk-comp-lisp-symbols): New variable. 2007-04-07 Tetsuo Tsukamoto * SKK-MK: Add APEL_DIR to load-path before loading install.el. (SKK_DICTIONARIES): Add dictionaries. * context-skk.el: Modify parent group for "context-skk" group. * skk-annotation.el (skk-annotation-wait-for-input): Suppress warning caused by `split-string' incompatibility. (skk-annotation-wikipedia): For Wiktionary, downcase WORD when needed. (skk-annotation-wikipedia-1): Support for Translingual Symbols such as Greek alphabet. Remove unnecessary local bindings. * skk-comp.el (skk-comp-smart-find): (skk-smart-find): (skk-search-smart-find): New functions. * skk-e21.el: Suppress warnings for Emacs 21. * skk-vars.el: Whole review and update for custom groups and widget types. (skk-smart-find-file-path): (skk-smart-find-ignored-file-regexp): (skk-comp-smart-find-files): New variables. * skk.el (skk-search-identity): New function. (skk-completion-wrapper): Rename from anonymous function assigned to [tab]. 2007-04-07 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Code cleanups. Remove unnecessary variables and procedures. Add "Acronym" as a Category. * skk-vars.el (skk-annotation-wikipedia-sources): (skk-annotation-wikipedia-key): (skk-tooltip-parameters): Fix for custom types. 2007-04-06 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Support for en.wiktionary.org and en.wikipedia.org. Use process buffer as cache buffer. (skk-annotation-wikipedia-cache): If cache for Upcased WORD is not found, lookup cache for WORD itself (un-upcased). (skk-annotation-wikipedia-region): If region is not active, pick up word at point. (skk-annotation-wikipedia-normalize-word): Don't upcase for wiktionary. (skk-annotation-insert): Go to the beginning of buffer after inserting text. * skk-e21.el (skk-tooltip-size): Abolish. (skk-tooltip-resize-text): New function. Resize text when it is too large. * skk-vars.el (skk-tooltip-mouse-behavior): Defaults to `banish' under XEmacs. (skk-annotation-wikipedia-sources): add en.wikipedia and en.wiktionary. * skk-xemacs.el (skk-tooltip-show-at-point): Add missing support for skk-tooltip-x-offset, skk-tooltip-y-offset and skk-tooltip-mouse-behavior. 2007-04-05 Tetsuo Tsukamoto * skk-annotations.el (skk-annotation-find-url): Intended `point-min', not `point-max'. * skk-comp.el (skk-comp-get-regexp): * skk-isearch.el (skk-isearch-search-string-regexp): * skk.el (skk-kana-input): (skk-add-rule): (skk-delete-rule): * tut-code/skk-mkmgk.el (skk-make-mazegaki-dic-1): Use `string-to-list' instead of `string-to-char-list'. * skk-e21.el (skk-e21-mouse-position): Refer to skk-henkan-start-point only when skk-henkan-mode is active. 2007-04-04 Tetsuo Tsukamoto * skk-annotations.el (skk-annotation-wikipedia-1): Regexp fix. Remove tables and bigs. Remove "A > B > C"-like hierarchy. Modify the cache buffer name. (skk-annotation-wikipedia-cache): Return pair of cached annotation and the cache buffer name. (skk-annotation-wait-for-input): Also browse wikipedia/wiktionary URLs. (skk-annotation-find-url): Discard URL that does not contain a domain name. (skk-annotation-wikipedia-normalize-word): New function. 2007-04-03 Tatsuya Kinoshita * skk-server.el (skk-search-server-1): Workaround for a problem where Emacs tries to accept replies from SKK server too fast and too often. Just call `sit-for' with 10 milliseconds interval after `accept-process-output' to avoid the problem. 2007-04-03 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-url-package-available-p): Also support Emacs 20.7 with unofficial MULE 4.1 patch. (skk-annotation-find-and-show): (skk-annotation-display-p): (skk-annotation-wikipedia-region): Clear existing messages. * skk-e21.el (skk-tooltip-size): New function. (skk-tooltip-show-at-point): Implement mouse pointer-indepent decision of tooltip frame position. (skk-tooltip-show-1): When skk-tooltip-mouse-behavior is follow, refer to skk-tooltip-x-offset and skk-tooltip-y-offset instead of default offset variables. Clear existing messages. Use `mouse-avoidance-set-mouse-position'. * skk-vars.el (skk-tooltip-mouse-behavior): (skk-tooltip-x-offset): (skk-tooltip-y-offset): New variables. * skk-xemacs.el (skk-tooltip-show-at-point): (skk-xemacs-balloon-help-resize-help-frame): Adjust size and position of tooltip frame. 2007-04-02 Tetsuo Tsukamoto * skk-xemacs.el (multibyte-string-p): Typo. (skk-tooltip-show-1): Bind parameters fail-safe. (skk-tooltip-show-at-point): (skk-xemacs-balloon-help-resize-help-frame): Adjust size and position of tooltip frame. 2007-04-01 Tetsuo Tsukamoto * skk-annotation.el: Wikipedia support for XEmacs. (skk-annotation-generate-url): url-util.el is mandatory. (skk-annotation-wikipedia-1): Use `get-buffer' instead of 'buffer-live-p'. (skk-annotation-url-package-available-p): Properly advise XEmacs or Emacs 21. * skk-e21.el (skk-tooltip-show-at-point): When `mouse-position' does not return a valid position, find position with `mouse-avoidance-point-position'. (skk-tooltip-hide): New alias to `tooltip-hide'. * skk-vars.el (skk-tooltip-parameters): Update comment for XEmacs. * skk-xemacs.el (multibyte-string-p): New alias to `stringp'. (current-pixel-row): New maybe-alias to `ignore'. (skk-tooltip-hide): New alias to `balloon-help-undisplay-help'. (skk-tooltip-show-at-point): New function definition for XEmacs. (skk-xemacs-balloon-help-resize-help-frame): New function. (minibuffer-setup-hook): Remove `skk-add-skk-pre-command' from minibuffer-setup-hook. * skk.el (skk-henkan-show-candidate-subr): Avoid using multiple methods for candidate display. (skk-add-skk-pre-command): (skk-remove-skk-pre-command): New functions, used by many functions. 2007-04-01 Kitamoto Tsuyoshi * makeit.bat: Typo. 2007-04-01 Tetsuo Tsukamoto * skk-e21.el (skk-e21-modeline-menu): New variable. (skk-e21-prepare-menu): New function. (skk-e21-modeline-menu): Pop up skk-e21-modeline-menu instead of skk-e21-modeline-menu-items. * skk-server-completion.el: Require skk-server. * skk-vars.el (skk-show-japanese-menu): Set the default value. * skk-viper.el: Check function `sentence-end' at compile time. * skk.el (skk-mode-invoke): Call `skk-e21-prepare-menu'. 2007-03-31 Tetsuo Tsukamoto * doc/skk.texi: Update for required APEL version. * skk-annotation.el (skk-annotation-wait-for-input): Store wikipedia annotation in local variable ANNOTATION for the following events. * skk.el: Add comments for APEL and `make-temp-file'. (widget-field-activate): Advise with`skk-wrap-newline-command'. 2007-03-30 Tetsuo Tsukamoto * SKK-CFG: Update. 2007-03-29 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): (skk-annotation-show-2): Inhibit `skk-annotation-wait-for-input' when `skk-annotation-display-p' fails for minibuf or skk-isearch-switch is on. * skk-e21.el (skk-tooltip-show-at-point): Disable the Elscreen workaround in minibuffer. * skk-vars.el (skk-jisx0201-mode-string): Modify the default value. 2007-03-28 Tetsuo Tsukamoto * skk-version.el (skk-version): Bump to 13.0.91. * SKK-MK: Fix installation paths for Carbon Emacs. * skk-annotation.el: Load skk-macs.el and skk-vars.el within 'eval-and-compile'. 2007-03-28 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-generate-url): (skk-annotation-url-package-available-p): (skk-annotation-find-and-show): New functions. * skk-vars.el (skk-annotation-url-package-available-p): New variable. * skk.el (skk-henkan): (skk-henkan-in-minibuff): (skk-previous-candidate): Call `skk-annotation-find-and-show'. 2007-03-27 Tetsuo Tsukamoto * etc/NICOLA-SKK.tut: * etc/SKK.tut: * etc/SKK.tut.E: Use `skktut-user-name' instead of `user-full-name'. * SKK-CFG: Update comments and examples. * SKK-MK: Set APEL_DIR and EMU_DIR instead of APEL_SPECIFIC_LISPDIR and EMU_PREFIX. No longer support customization with enviromental variables. * skk-tut.el (skktut-user-name): New function. * tinyinstall.el: No longer in repository. 2007-03-25 Tetsuo Tsukamoto * SKK-MK: Remove functions for detecting APEL installation paths. (SKK-MK-generate-autoloads-el-package): Under XEmacs 21.5, call `autoload-featurep-protect-autoloads' instead of `fixup-autoload-buffer'. Now requires APEL 10.7 or later. * skk-macs.el (skk-event-key): Under XEmacs, when there exists a character that is relevant to EVENT, return the character. * skk-tankan.el: Convert coding system (euc-jp -> iso-2022-jp). * tinyinstall.el: Remove codes, except one for setting install-prefix. 2007-03-20 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Fix patterns for wiktionary. (skk-annotation-wikipedia-region): New command. * skk-e21.el (skk-tooltip-show-at-point): Modify so that it also works when skk-henkan-mode is not active. 2007-03-19 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia): Also refer to Wiktionary. (skk-annotation-wikipedia-1): New function. * skk-vars.el (skk-annotation-wikipedia-sources): New user option. 2007-03-17 Masatake YAMATO * skk.el (skk-wrap-newline-command): New macro. Don't do defadvice `commint-send-input' directly. Use `skk-wrap-newline-command' to do defadvice instead. Wrap `ielm-return' and `rcirc-send-input' with `skk-wrap-newline-command'. 2007-03-12 Tetsuo Tsukamoto * skk.el (skk-setup-keymap): Workaround for Emacs key translation. If TAB is assigned as the completion key, also assign . 2007-03-09 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show): (skk-annotation-show-1): (skk-annotation-wait-for-input): Accept optional arg WORD. (skk-annotation-wikipedia-cache): New function. (skk-annotation-wikipedia): Modify regexp. * skk-vars.el (skk-annotation-show-wikipedia): (skk-annotation-wikipedia-wait-before-retrieval): Abolish variables. (skk-annotation-show-wikipedia-url): New variable. * skk.el (skk-henkan): (skk-henkan-in-minibuff): (skk-previous-candidate): Use wikipedia cache. 2007-03-09 Tetsuo Tsukamoto Suggested by KOIE Hidetaka . * skk-vars.el (skk-annotation-wikipedia-key): New variable. 2007-03-08 KOIE Hidetaka * skk-annotation.el (skk-annotation-treat-wikipedia): Fix for local variable name. 2007-03-08 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia): Decode data before searching. Check if value of skk-treat-candidate-appearance-function is a function. * skk-e21.el (skk-tooltip-show-at-point): When elscreen is loaded, also check variable elscreen-display-tab. 2007-03-07 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-treat-wikipedia): New function. * skk-e21.el (skk-tooltip-show-at-point): When elscreen is loaded, move mouse pointer 1 more position downward. * skk.el (skk-henkan): (skk-henkan-in-minibuff): (skk-previous-candidate): Call `skk-annotation-treat-wikipedia'. 2007-03-04 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia) (skk-annotation-wikipedia-retrieved): New functions. * skk-vars.el (skk-annotation-show-wikipedia) (skk-annotation-wikipedia-wait-before-retrieval): New user options. * skk.el (skk-henkan): When WORD has no note and `skk-annotation-show-wikipedia' is set, use Wikipedia for annotation. (skk-search-upcase): If optional arg INITIAL is non-nil, only upcase initials. 2007-02-17 Tetsuo Tsukamoto Suggested by Kitamoto Tsuyoshi . * doc/skk.texi: Modify example for skk-tut-file. Accurately write the term "X Window System". 2007-02-02 Tetsuo Tsukamoto * skk-obsolete.el: Update for abolished functions `skk-jisx0208-latin-henkan' and `skk-latin-henkan'. * skk-vars.el (skk-allow-spaces-newlines-and-tabs): Docstring update. * skk.el (skk-define-jisx0208-latin-mode-map): Define C-q to call `skk-toggle-characters' instead of abolished function `skk-latin-henkan'. 2006-12-29 IRIE Tetsuya * skk-act.el: Fixed comment. (skk-delete-implies-kakutei): Don't modify value. 2006-12-10 IRIE Tetsuya * skk-kakasi.el: Require `skk-vars' at toplevel. 2006-11-19 Eiji Obata * skk.el (skk-henkan-show-candidate-subr): Fixed disposition when `skk-show-tooltip' and `skk-henkan-show-candidates-rows' > 1. (skk-henkan-show-candidates-buffer): Enlarge candidates-buffer if needed. (skk-henkan-show-candidates): Replace ?\040 with `skk-start-henkan-char', ?x with `skk-previous-candidate-char'. (skk-henkan-in-minibuff): Redisplay note after exiting from registration mode. 2006-11-18 Eiji Obata * skk-kcode.el (skk-input-by-code-or-menu-1): Bug fixed. (skk-input-by-code-or-menu-jump, skk-input-by-code-or-menu-1): Replace ?\040 with `skk-start-henkan-char'. 2006-10-10 Tetsuo Tsukamoto Suggested by IRIE Tetsuya . * skk-tankan.el: Modify comments, i.e. use `add-hook' for skk-search-excluding-word-pattern-function. 2006-10-10 Kenichi Kurihara * experimental/bayesian/bskk (serve): Bug fixed. * experimental/bayesian/skk-bayesian.el (skk-bayesian-search): Bug fixed. 2006-09-11 Tatsuya Kinoshita * skk.el (skk-count-jisyo-candidates-original): Typo. 2006-08-07 Tatsuya Kinoshita * tinyinstall.el (install-detect-elisp-directory): Sync with install.el in APEL CVS head. Ignore nils in default-load-path. 2006-08-03 Tetsuo Tsukamoto * skk-macs.el (skk-sit-for): 2nd arg of `sit-for' is MILLISECONDS under Emacs 21.4 or earlier, but it is NODISP under Emacs 22. Fix. 2006-07-17 Yoichi NAKAYAMA * skk-hint.el: Move (require 'skk-vars) to top level. 2006-05-31 Tetsuo Tsukamoto * skk.el (skk-henkan-show-candidate-subr): When skk-show-inline is non-nil and the pointer is in minibuffer, show the classic candidate list. 2006-03-12 Eiji Obata * skk.el (skk-henkan-candidate-list): Don't call `skk-annotation-get' when `skk-show-annotation' is nil. (skk-compile-rule-list): Don't modify rule-list. Use `dolist'. 2006-03-11 Eiji Obata * skk-server-completion.el: Modify comments. 2006-03-08 Eiji Obata * skk.el (skk-henkan-show-candidates): Bugfix related to `skk-henkan-show-candidates-rows'. E.g., ignore "q" if `skk-henkan-show-candidates-rows' is 1. 2006-02-24 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): Also call `skk-eval-string' for updating ANNOTATION. 2006-02-23 Eiji Obata * skk.el (abort-recursive-edit): While completing key in minibuffer, back to the original input by typing C-g. 2006-02-22 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): split ANNOTATION before `skk-eval-string' is called. (skk-annotation-wait-for-input): Take 2nd argument NOTES. 2006-02-21 Eiji Obata * skk.el (skk-search-kakutei-jisyo-file): Modify docstring. * skk-look.el (skk-look-completion): More readable. * skk-server-completion.el (skk-server-completion-search) (skk-comp-by-server-completion): Ditto. 2006-02-21 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-2): New function. (skk-annotation-wait-for-input, skk-annotation-find-url): New functions. Browse sites in the current notes using URLs that `thing-at-point' finds. (skk-annotation-show-1): Call `skk-annotation-show-2' and `skk-annotation-wait-for-input'. 2006-02-20 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): Also browse URL within the current note. 2006-02-16 Tetsuo Tsukamoto * skk-server.el (skk-open-server, skk-open-server-1): Don't call `skk-open-network-stream' for the same host twice. First add information for skk-server-host or environment variable SKKSERVER to skk-servers-list. After that try to open the connection according to skk-servers-list. After that unsetenv SKKSERVER i.e. won't connect to SKKSERVER again. Fix the bad conditional statement by skk-server-inhibit-startup-server. (skk-open-network-stream): Take optional arguments HOST and PORT. (skk-startup-server): Take arguments HOST, PROG, JISYO and PORT. Use `sleep-for' instead of `sit-for' for actually waiting for the invoked service. 2006-02-14 Eiji Obata * skk-vars.el (skk-delete-implies-kakutei): Accept value `dont-update'. * skk.el (skk-delete-backward-char): If `skk-delete-implies-kakutei' is `dont-update', bind `skk-update-jisyo-function' to `ignore'. * skk-isearch.el (skk-isearch-delete-char): Ditto. * skk-viper.el (viper-del-backward-char-in-insert) (vip-del-backward-char-in-insert): Ditto. 2006-02-13 Eiji Obata * skk.el (skk-restart): Arrange order. * skk-vars.el: Modify docstrings. * skk.el: Ditto. 2006-02-12 Eiji Obata * context-skk.el (context-skk-mode): Change autoload cookie for XEmacs. 2006-02-11 Eiji Obata * experimental/bayesian/skk-bayesian.el (skk-bayesian-search): Use `mapconcat'. (skk-bayesian-update): Suppress message. 2006-02-10 Eiji Obata * skk.el (skk-search-with-suffix): Remove note. * skk-vars.el (skk-aux-large-jisyo, skk-search-prog-list) (skk-server-prog, skk-server-jisyo): Modify docstrings. 2006-02-09 Eiji Obata * skk-server-completion.el (skk-server-completion-search): Merge with `skk-server-completion-search-recursive'. Consider `skk-use-numeric-conversion'. (skk-server-completion-search-recursive): Abolish. 2006-02-08 Eiji Obata * skk-num.el (skk-num-compute-henkan-key): Don't convert "." which is not part of float. 2006-02-05 Eiji Obata * skk-comp.el (skk-comp-restrict-by-prefix): New function. * skk-look.el (skk-look-completion): Consider `skk-use-numeric-conversion'. * skk-server-completion.el (skk-comp-by-server-completion): Ditto. * skk-comp.el (skk-comp-re-search-current-buffer): Bug fixed. * skk-num.el (skk-num-compute-henkan-key): Remove "," only when surrounded by number. 2006-02-04 Eiji Obata * skk-vars.el (skk-comp-prefix-regexp-alist) (skk-comp-kana-list-filter-function): New variables. * skk-comp.el (skk-comp-get-regexp, skk-comp-collect-kana) (skk-comp-arrange-kana-list): New functions. (skk-comp-re-search-current-buffer): New function. (skk-comp-from-jisyo): Use it. 2006-02-03 Eiji Obata * skk-vars.el (skk-annotation-function): Update doc string. 2006-02-01 Eiji Obata * skk-annotation.el (skk-annotation-get): Use `defun' instead of `defsubst'. Handle empty string properly. * skk.el (skk-henkan-candidate-list): Use `skk-annotation-get'. Eval candidate and note only once. 2006-01-30 Eiji Obata * skk-vars.el (skk-show-num-type-info): New user option. * skk.el (skk-show-num-type-info): New function. (skk-henkan-in-minibuff): Use it. 2006-01-26 Eiji Obata * skk.el (skk-search): Change order of numeric and non-numeric search. * skk-jisyo-edit-mode.el (skk-henkan-in-minibuff@before@notify-no-effect) (skk-purge-from-jisyo@around@notify-no-effect): New advices. (skk-edit-private-jisyo): Use them. 2006-01-24 Eiji Obata * skk-jisyo-edit-mode.el (skk-jisyo-edit-original-window-configuration): New variable. (skk-edit-private-jisyo): New command. 2006-01-23 Eiji Obata * skk-comp.el (skk-comp-get-all-candidates): Bug fixed. 2006-01-16 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-1): Never throw. Just ignore quit signal. * skk.el (skk-insert-new-word): Don't show the note here. (skk-henkan, skk-previous-candidate): Show the note there. 2006-01-16 Eiji Obata * skk-comp.el (skk-comp-get-all-candidates): Remove duplicate. * skk-vars.el (skk-annotation-target-data): Rename from `skk-annotation-annotated-word'. Now, it's 3rd element is candidate, not copy of skk-henkan-list. * skk-annotation.el (skk-annotation-remove) (skk-annotation-last-word-1): Update. (skk-annotation-setup): Handle numeric candidate correctly. (skk-annotation-add): Don't remove too much `*'. (skk-annotation-save-and-quit): Allow annotation which start with `;'. When new annotation is null, remove old annotation. 2006-01-15 Eiji Obata * skk-comp.el (skk-comp-do): Even if input pattern is irregular, don't clear it. 2006-01-14 Eiji Obata * skk-vars.el (skk-comp-use-prefix): Accept value `kakutei-first'. * skk-macs.el (skk-kana-cleanup): Return data. * skk-comp.el (skk-comp-do): When `skk-comp-use-prefix' is not `kakutei-first' and non-nil, keep original key and prefix. (skk-comp-prefix-unnecessary-p): Abolish. 2006-01-13 Eiji Obata * skk-act.el, skk-azik.el: Modification for `skk-restart'. * skk-comp.el (skk-completion-search): Bind `skk-comp-use-prefix' to nil. 2006-01-12 Tetsuo Tsukamoto Suggested by Eiji Obata * skk-develop.el: More highlighting (e.g. `skk-save-point', `skk-with-point-move', etc). Put `doc-string-elt' for `skk-deflocalvar', `skk-defadvice', `defun-maybe', `defmacro-maybe' and `defalias-maybe'. 2006-01-11 Tetsuo Tsukamoto * skk-vars.el (skk-show-candidates-toggle-display-place-char): Rename from skk-show-candidates-toggle-display-char. * skk.el (skk-henkan-show-candidates): Modify for it. 2006-01-11 Eiji Obata * skk.el (skk-search-progs): Rename from `skk-search-all-progs'. Add optional arguments PROG-LIST, REMOVE-NOTE. (skk-search-sagyo-henkaku, skk-search-with-suffix): Update. * skk-vars.el (skk-completion-search-char): New variable. * skk-comp.el (skk-completion-search): New function. (skk-comp-by-history): Add doc-string. * skk.el (skk-update-jisyo-original): When `skk-numeric-p' and `skk-lisp-prog-p' return non-nil, treat candidate as numeric entry. 2006-01-11 Tetsuo Tsukamoto * skk-vars.el (skk-show-candidates-toggle-display-char): New variable. * skk.el (skk-henkan-show-candidates): Toggle skk-show-candidates-always-pop-to-buffer by typing skk-show-candidates-toggle-display-char. 2006-01-10 Eiji Obata * skk-look.el (skk-look): Add optional arguments CONVERSION-ARGUMENTS, NOT-ABBREV-ONLY, EXPAND-NULL. Add doc-string. (skk-look-completion): Add optional argument EXPAND-NULL. Update doc-string. Don't downcase key. 2006-01-10 IRIE Tetsuya * skk-act.el: New file. 2006-01-10 Tetsuo Tsukamoto * skk-azik.el: From experimental. * SKK-MK (SKK_MODULES): Add skk-act and skk-azik. 2006-01-09 Eiji Obata * skk-comp.el (skk-comp-get-all-candidates): Autoload. * skk-server-completion.el (skk-server-completion-search): Merge `skk-server-completion-search-1' and simplify. (skk-server-completion-search-1): Abolish. (skk-server-completion-search-midasi): Simplify. 2006-01-08 Eiji Obata * skk-look.el (skk-look-completion): When `skk-comp-key' is "", do nothing. 2006-01-08 Tetsuo Tsukamoto * skk-look.el (skk-look-1): Accept null word. 2006-01-08 Eiji Obata * skk-vars.el (skk-server-completion-search-char): Variable from skk-server-completion.el. Rename -key to -char. (skk-server-completion-words): New internal variable. * skk-server-completion.el (skk-comp-do-1@after@skk-server-completion-advice-skk-comp-do-1): Abolish. (skk-comp-by-server-completion): New function. (skk-server-completion-search-1): Use `skk-server-completion-search-char' instead of `skk-server-completion-search-key'. * skk-look.el (skk-look-completion): Bug fixed. 2006-01-07 Eiji Obata * skk-vars.el (skk-comp-use-prefix, skk-completion-prog-list): New variables. (skk-comp-prefix, skk-current-completion-prog-list) (skk-comp-first): New internal variables. * skk-comp.el (skk-comp-get-candidate) (skk-comp-prefix-unnecessary-p): New functions. (skk-comp-do): Use them. Now, completion programs can be controlled by `skk-completion-prog-list'. (skk-comp-previous): Modify message. (skk-comp-do-1): Abolish. (skk-comp-from-jisyo): New function. (skk-comp-by-history): Update for new spec. (skk-comp-get-all-candidates): New function. For test use. * skk-look.el (skk-look-completion): Update for new spec. Add optional arguments COMPLETION-ARGUMENTS, NOT-ABBREV-ONLY. (skk-try-completion@before@skk-look-ad): Abolish. 2006-01-06 Tetsuo Tsukamoto * Makefile: Don't set SKK_DEFAULT_JISYO. (tar): (snapshot): No longer depend on rb-skk-dic. (clean): Remove skk-dic.el. * SKK-MK (SKK_DEFAULT_JISYO): Default to nil. (SKK-MK-skk-dic): If user does not specify SKK_DEFAULT_JISYO, just copy skk-dic.el.in to skk-dic.el. * skk.el (skk-kakutei): When combining words, always strip notes from all words. * skk-vars.el (skk-look-dictionary): (skk-look-ignore-case): (skk-look-dictionary-order): (skk-look-termination-character): Abolish variables. (skk-look-conversion-arguments): (skk-look-completion-arguments): New variables. (skk-search-prog-list): Remove `skk-search-small-dic'. * skk-look.el (skk-look-1): (skk-look-ispell): Abolish 2nd arg ignore-case. Instead, take new 2nd arg situation. Simplify. (skk-look): Pass `conversion' as the 2nd arg for them. (skk-look-completion): Pass `completion' as the 2nd arg for them. * skk-comp.el (skk-comp-do): No longer refer to skk-look-ignore-case. Check skk-look-completion-arguments instead. 2006-01-05 Tetsuo Tsukamoto * skk-develop.el: Use before-init-hook for setting lisp-font-lock-keywords-2. Separate patterns of func declarations, var declarations and other declarations. Fix matching number. * skk-macs.el (substring-no-properties): Define for XEmacs and FSF Emacs 21 or older. (next-command-event): Do not use definition in APEL 10.6. Redefine for FSF Emacs. * skk-vars.el (skk-learn-combined-word): New user option, default to nil. * skk.el (skk-kakutei): Do not learn combind word if skk-learn-combined-word is nil. Before combining prefix and word, strip note from word. (skk-insert-new-word): Do not call `skk-treat-candidate-appearance-function' when skk-kakutei-flag is on. 2006-01-04 Eiji Obata * skk.el (skk-insert): Don't call `skk-process-prefix-or-suffix' when point is immediately following `$B"&(B'. (skk-restart): Use `set-default' to re-initialize variables. * skk-annotation.el (skk-annotation-insert) (skk-annotation-show-as-message): Don't call `skk-eval-string' here. 2006-01-04 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): Allow user browse and copy simultaneously. Handle quit signal. * skk-dcomp.el (skk-dcomp-activate-p): Use `save-match-data'. 2005-12-29 Eiji Obata * skk-server-completion.el (skk-server-completion-search-recursive): Optimize using `nconc'. 2005-12-29 Fumihiko MACHIDA * SKK-MK (SKK_MODULES): Add skk-server-completion. * skk-server-completion.el: New file. 2006-01-04 Tetsuo Tsukamoto * *: Update FSF address. * skk-annotation.el (skk-annotation-show-1): While showing a note, allow users to make use of it. If skk-annotation-copy-key is typed, save it to kill ring. If skk-annotation-browse-key is typed, browse it as URL. * skk-vars.el (skk-annotation-copy-key): (skk-annotation-browse-key): New variables. 2005-12-29 Eiji Obata * skk-vars.el (skk-share-private-jisyo-internal) (skk-jisyo-save-count-internal): Abolish variables. * skk-macs.el (skk-share-private-jisyo-p): New inline function. * skk.el (skk-adjust-user-option): Undo the last change. (skk-save-jisyo-original, skk-update-jisyo-original): Use `skk-share-private-jisyo-p'. 2005-12-28 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-setup): Set skk-kakutei-flag to nil after `skk-henkan-in-minibuff'. * skk-gadget.el (skk-ignore-dic-word): Do not return new-word. Instead, throw new-word to `skk-insert-new-word'. When no new-word, throw `none'. * skk.el (skk-henkan): Do not set skk-henkan-in-minibuff-nest-level here. (skk-henkan-in-minibuff): Set skk-henkan-in-minibuff-nest-level here. (skk-insert-new-word): If `skk-ignore-dic-word' skips current word and throws the next word, do everything from the beginning. If `skk-ignore-dic-word' throws `none', do nothing. When skk-kakutei-flag is on, call `skk-kakutei'. 2005-12-28 Tetsuo Tsukamoto * skk-e21.el (skk-e21-mouse-position): Undo previous workaround for Emacs 22. Use (cddr P) for position y. 2005-12-27 Masatake YAMATO * context-skk.el (context-skk-on-vowel-key-reserved-p) (context-skk-in-read-only-area-p): Don't call `car' on a return value from `get-char-property'. 2005-12-27 Masatake YAMATO * context-skk.el (context-skk-on-vowel-key-reserved-p): Use `get-char-property' instead of `get-char-property-and-overlay'. (context-skk-in-read-only-area-p): Ditto. 2005-12-26 Tetsuo Tsukamoto * Makefile (VERSION): 13.0.90. (CP): Abolish. * doc/skk.texi: Remove antique questions. * skk-e21.el (skk-tooltip-show-at-point): Refer to emacs-major-version instead of emacs-version. Do not use `sit-for'. Use `next-command-event' and `skk-unread-event' instead with inhibit-quit bound to t. Call `tooltip-hide'. 2005-12-25 Tetsuo Tsukamoto * doc/skk.texi: Update news chapter. * skk-isearch.el (isearch-repeat): Call `replace-regexp-in-string'. * skk-macs.el (skk-replace-regexp-in-string): Abolish. (skk-minibuffer-origin): Undo the last change. * skk-vars.el (skk-henkan-in-minibuff-nest-level): Declare as a global variable. (skk-deflocalvar): Do not pass docstring to `defvar' if it is nil. (skk-minibuffer-origin): Abolish variable. * skk-version.el (skk-version): Pre-release version 13.0.90. * skk.el (skk-henkan): At the first entry into minibuffer registration, set skk-henkan-in-minibuff-nest-level to `minibuffer-depth' - 1. (skk-henkan-in-minibuff): Create "`minibuffer-depth' - skk-henkan-in-minibuff-nest-level" pairs of parens. Do not set skk-minibuffer-origin. (skk-exit-henkan-in-minibuff): When exiting minibuffer registration, set skk-henkan-in-minibuff-nest-level to nil. Do not set skk-minibuffer-origin. 2005-12-24 Tetsuo Tsukamoto * SKK-MK: Temporarily do not install context-skk.el if `define-minor-mode' is not available. * skk-e21.el: Move inline candidate display method to skk.el and skk-vars.el. * skk-macs.el (skk-minibuffer-origin): Return value of skk-minibuffer-origin if it is set. (propertize): (replace-regexp-in-string): defun-maybe. * skk-server.el (skk-disconnect-server): Autoload. * skk-vars.el (skk-minibuffer-origin): New variable. (skk-inline-overlay): From skk-e21.el. * skk-xemacs.el (minibuffer-keyboard-quit): Call `skk-exit-henkan-in-minibuff'. * skk.el: Autoload `skk-jisx0213-henkan-list-filter'. Do not show compile time warning for migemo-isearch-enable-p. (skk-mode-exit): XEmacs only. Call `delete-menu-item' instead of `easy-menu-remove'. (skk-henkan): Set skk-minibuffer-origin before entering minibuffer. Set skk-henkan-in-minibuff-nest-level in buffer returned by `skk-minibuffer-origin'. Call `skk-inline-hide' even if Emacs is not FSF Emacs 21 or greater. (skk-exit-henkan-in-minibuff): Avoid too much decrement of skk-henkan-in-minibuff-nest-level [incomplete]. Set skk-minibuffer-origin to nil when minibuffer edit is totally over. (minibuffer-exit-hook): Call `skk-exit-henkan-in-minibuff'. (skk-henkan-show-candidate-subr): (skk-henkan-in-minibuff): Call `skk-inline-show' even if Emacs is not FSF Emacs 21 or greater. (skk-inline-show): (skk-inline-hide): From skk-e21.el. 2005-12-24 Tetsuo Tsukamoto * skk-dcomp.el (skk-abbrev-comma): (skk-abbrev-period): Advices. 2005-12-23 Tetsuo Tsukamoto * skk-macs.el (skk-deflocalvar): Remove duplicate. * skk-vars.el (skk-deflocalvar): Use the new style backquote. Do not describe "buffer local" in doc string for FSF Emacs 22 and XEmacs. * skk.el (skk-set-henkan-point): Fix for 2005-02-27 commitment. Bind skk-dcomp-activate. Not set. (skk-get-current-candidate): Validate if `skk-get-current-candidate-1' returns a cons cell before calling `car' or `cdr' for it. (skk-henkan-candidate-list): Set note to nil at the beginning of every step of the loop. 2005-12-23 Masatake YAMATO * context-skk.el: Rewrite. Use custom for customising context-skk.el. Introduce on-the-fly skk customising framework. Delte `lisp-interaction-mode' from `context-skk-programming-mode'. *scratch* is not for emacs lisp programming. 2005-12-22 Eiji Obata * skk-vars.el (skk-share-private-jisyo, skk-jisyo-save-count): Update doc string. (skk-share-private-jisyo-internal, skk-jisyo-save-count-internal): New internal variables. * skk.el (skk-restart): Call `skk-save-jisyo' first. Re-initialize SKK related variables, except for `skk-init-file', which has `standard-value' property. Disconnect server. (skk-adjust-user-option): Copy `skk-jisyo-save-count' to `skk-jisyo-save-count-internal', `skk-share-private-jisyo' to `skk-share-private-jisyo-internal'. (skk-save-jisyo-original): Use `skk-share-private-jisyo-internal' instead of `skk-share-private-jisyo'. (skk-update-shared-jisyo): Use length of `skk-jisyo-update-vector' instead of `skk-jisyo-save-count'. (skk-update-jisyo-original): Use `skk-share-private-jisyo-internal' instead of 'skk-share-private-jisyo'. Use `skk-jisyo-save-count-internal' but don't affect users who don't share private jisyo. 2005-12-20 Eiji Obata * skk-macs.el (skk-lisp-prog-p): Call `read-from-string' for STRING and validate the length of the returned expression. 2005-12-20 Tetsuo Tsukamoto * skk-comp.el (skk-comp-do): No longer treat skk-use-look and skk-look-ignore-case as boolean. Check if it is t, nil, conversion, completion or sth. * skk-e21.el (skk-tooltip-show-at-point): Take optional argument LISTING. * skk-look.el (skk-look): Do nothing when skk-look is nil or completion. Disable skk-look-ignore-case if its value is nil or completion. (skk-look-completion): Disable skk-look-ignore-case if its value is nil or conversion. (skk-look-1): (skk-look-ispell): Accept optional argument IGNORE-CASE. * skk-vars.el: Update doc strings. * skk.el (skk-henkan-show-candidate-subr): Call `skk-tooltip-show-at-point' with its 2nd arg LISTING non-nil. 2005-12-19 TAKAHASHI Kaoru * doc/skk.texi: Fix @xref{} nodename. 2005-12-18 Tetsuo Tsukamoto * skk-dcomp.el (skk-dcomp-activate-p): New function. (skk-dcomp-do-completion): Call it. (skk-comp-start-henkan): Advice. * skk.el: Add comments. (skk-henkan-candidate-list): (skk-henkan-show-candidates-buffer): New functions. (skk-henkan-show-candidate-subr): Call them. 2005-12-16 Tetsuo Tsukamoto * skk-vars.el (skk-henkan-in-minibuff-nest-level): Declare as a buffer local variable. * skk.el (skk-exit-henkan-in-minibuff): New function. (skk-henkan): Call it from minibuffer-exit-hook to decrement skk-henkan-in-minibuff-nest-level. (skk-henkan-in-minibuff): When skk-show-tooltip is non-nil, call `tooltip-hide'. 2005-12-16 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): Call `skk-eval-string' for ANNOTATION. * skk-macs.el (skk-eval-string): No longer inline function. If STRING contains note, split it into candidate and note, eval each of them and concatenate again. Always check for `skk-lisp-prog-p'. Preserve face property of STRING. * skk.el (skk-henkan-show-candidate-subr): When skk-treat-candidate-appearance-function is called and user returns a cons cell of candidate and note, call `skk-eval-string' for each of them. Do not check e for consp twice. Do not check for `skk-lisp-prog-p' here, just call `skk-eval-string'. 2005-12-15 Tetsuo Tsukamoto * skk.el (skk-henkan-show-candidate-subr): When skk-treat-candidate-appearance-function is called and user returns note without separator string, add ";". 2005-12-15 Tetsuo Tsukamoto * skk-e21.el (skk-tooltip-show-1): New function. (skk-tooltip-show): Call it. Temporarily do not call `tooltip-hide' here. * skk-vars.el (skk-tooltip-parameters): New variable. * skk.el (skk-kakutei): Temporarily call `tooltip-hide' here. 2005-12-15 Tetsuo Tsukamoto * experimental/bayesian/skk-bayesian.el (skk-bayesian-update): In the current henkan buffer, before calculating how many characters the point should move backward, strip note from WORD to avoid moving too many characters backward. * skk-e21.el (skk-inline-show): If FACE is nil, do not set face property of STRING. * skk-vars.el (skk-inline-show-face): New variable. * skk.el (skk-henkan-show-candidate-subr): If candidate e is a cons cell, set e to the cdr of e instead of the car of it. When skk-treat-candidate-appearance-function is called and note is set, do not check e for ";" again. Pass skk-inline-show-face to `skk-inline-show' as the second argument. Do not display the classic candidate list if skk-show-inline is non-nil. (skk-insert-new-word): Get face property of WORD and erase the face property from it before insertion. When skk-treat-candidate-appearance-function is called and note is set, do not check e for ";" again. (skk-treat-strip-note-from-word): New function. 2005-12-14 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): Undo the last change. * skk-vars.el (skk-treat-candidate-appearance-function): Rename from skk-annotation-propertize-function. Update doc string according to new specifications. (skk-non-numeric-prog-list): Rename from skk-non-numeric-program-list. (skk-show-candidates-always-pop-to-buffer): New variable. * skk.el (skk-henkan-show-candidate-subr): If candidate e is a cons cell, set e to the car of e. Call skk-treat-candidate-appearance-function before treating annotation. If skk-show-candidates-always-pop-to-buffer is non-nil, always call `pop-to-buffer'. (skk-insert-new-word): Call skk-treat-candidate-appearance-function before treating annotation. Pass the face property of WORD to `skk-henkan-face-on'. (skk-henka-face-on): Accept optional argument FACE. Use it if set instead of skk-henkan-face. Always clear skk-henkan-overlay. (skk-numeric-program-p): Modify skk-non-numeric-program-list to skk-non-numeric-prog-list. 2005-12-13 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): When skk-annotation-propertize-function is a function, call it and modify ANNOTATION. * skk-vars.el (skk-annotation-propertize-function): New variable. * skk.el (skk-henkan-show-candidate-subr): When candidate contains a note and skk-annotation-propertize-function is a function, call it and modify the note. 2005-12-13 Tetsuo Tsukamoto * skk-vars.el (skk-non-numeric-program-list): New variable. * skk.el (skk-numeric-program-p): New function. (skk-search): Do not do numeric search if `skk-numeric-program-p' returns nil for prog. 2005-12-11 Masatake YAMATO * skk-vars.el (skk-henkan-in-minibuff-nest-level): New variable. * skk.el (skk-henkan): Bind `skk-henkan-in-minibuff-nest-level'. If it is not bount to a number i.e. SKK is yet to enter henkan in minibuff mode, bind it to 0, otherwise increment it. (skk-henkan-in-minibuff): When skk-show-inline is non-nil, modify the inline prompt to "$B"-<-=qEPO?Cf"-(B". Create prompt so that it have `skk-henkan-in-minibuff-nest-level + 1' pairs of parens, i.e. number of pairs of parens shows the recursive depth of the word registration mode in progress. 2005-01-23 MITA Yuusuke Modified on 2005-12-11 by Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-display-p): (skk-annotation-toggle-display-p): New functions. (skk-annotation-show-1): When `skk-annotation-display-p' returns nil for minibuf and SKK is in minibuffer, do not show notes. * skk-cus.el (skk-cus-params-visual): Modify custom type for skk-show-annotation. * skk-vars.el (skk-show-annotation): Modify custom type. Accept (not list) (not minibuf) or (not list minibuf). (skk-annotation-toggle-display-char): New variable. * skk.el (skk-henkan-show-candidates): If the last event is skk-annotation-toggle-display-char, call `skk-annotation-toggle-display-p'. (skk-henkan-show-candidate-subr): When `skk-annotation-display-p' returns nil for list, turn off notes. 2005-12-11 Tetsuo Tsukamoto * context-skk.el: From experimental to the top directory. * experimental/bayesian/skk-bayesian.el: * experimental/skk-exserv.el: Use `kill-emacs-hook' instead of `skk-before-kill-emacs-hook'. * ccc.el: Describe why we need to give interactive specs to advices to interactive subrs. This is againt our will. * skk-e21.el (skk-e21-mouse-position): Pass `w' to `window-width', `windows-height', `window-hscroll' and `compute-motion'. (skk-tooltip-show-at-point): Emacs 22.0.50 only. Move mouse pointer slightly up to avoid tooltip partly off the screen. (tooltip-hide): Advice. Call `update-buffer-local-frame-params'. * skk-server.el: Use `kill-emacs-hook' instead of `skk-before-kill-emacs-hook'. * skk-study.el: Use `kill-emacs-hook' instead of `skk-before-kill-emacs-hook'. * skk-tut.el (skktut-adviced-alist): Do not check for `kill-buffer' and `save-buffers-kill-emacs'. (kill-buffer): (save-buffers-kill-emacs): Abolish advices. Use kill-buffer-hook and kill-emacs-hook instead. (skktut-init-variables-alist): Use `skk-search-jisyo-buf' instead of `skk-search-jisyo-file'. Bind `skk-show-tooltip' and `skk-show-inline' to nil. (skk-get-jisyo-buffer): Advice. Return skktut-jisyo-buffer in SKK tutorial. (skktut-setup-jisyo-buffer): Do not set buffer-file-name. (skktut-before-move-to-other-frame): Temporarily abolish function. (other-frame): Temporarily abolish advice. (skk-tutorial): (skk-tutorial-quit): Temporarily remove `skktut-before-move-to-other-frame' call in before-make-frame-hook. * skk.el: Use `kill-emacs-hook' instead of `skk-before-kill-emacs-hook'. (newline): (newline-and-indent): (undo): `defadvice' instead of `skk-defadvice'. (kill-buffer): (save-buffers-kill-emacs): Abolish advices. Use kill-buffer-hook and kill-emacs-hook instead. (skk-kill-emacs-without-saving-jisyo): Don't care for advice to `save-buffers-kill-emacs'. 2005-12-10 Tetsuo Tsukamoto * skk-tankan.el: Modify comments. Use `add-hook' to modify skk-search-excluding-word-pattern-function. * skk-vars.el (skk-search-excluding-word-pattern-function): Customize as a hook variable. * skk.el (skk-update-jisyo-p): Use `run-hook-with-args-until-success'. 2005-12-09 Tetsuo Tsukamoto * skk-tankan.el: Comments update. * skk-vars.el (skk-search-excluding-word-pattern-function): Allow a list of functions as its value. * skk.el (skk-kakutei): If `skk-update-jisyo-p' returns non-nil, update the private jisyo. (skk-update-jisyo-p): New function. Decide whether the entered word should be included in the private jisyo or not. 2005-12-04 Tetsuo Tsukamoto * skk-comp.el (skk-comp-search-current-buffer): In skk-abbrev-mode, check c-word only when it is set. * skk-dcomp.el (skk-dcomp-do-completion): (skk-dcomp-after-delete-backward-char): (skk-kana-input): Do not modify markers if skk-hint-inhibit-dcomp is non-nil. (skk-kana-input): Do not do completion if last-command-char belongs to skk-set-henkan-point-key. (skk-dcomp-marked-p): (skk-dcomp-before-kakutei): Autoload. * skk-hint.el: From experimental to the top directory. (skk-insert): Clean up dcomp string and inihibit further dynamic completion before setting skk-hint-start-point. * skk-jisyo-edit-mode.el (skk-jisyo-edit-font-lock-keywords): Modify regexps for fontifying every note. * skk-vars.el (skk-hint-start-char): (skk-hint-henkan-hint): (skk-hint-start-point): (skk-hint-end-point): (skk-hint-okuri-char): (skk-hint-state): (skk-hint-inhibit-kakutei): Variables from skk-hint.el. (skk-hint-inhibit-dcomp): New variable. * skk.el (skk-set-henkan-point): Delete dcomp marker before setting skk-okurigana-start-point. 2005-12-03 Tetsuo Tsukamoto * SKK-MK (SKK_MODULES): Add context-skk. 2005-12-02 Tetsuo Tsukamoto * skk-comp.el (skk-comp-do): Check for skk-abbrev-mode as well as skk-use-look and skk-look-ignore-case before calling `downcase'. (skk-comp-do-1): (skk-comp-search-current-buffer): In skk-abbrev-mode, do not pick up words containing non-ascii characters. * skk-dcomp.el (skk-dcomp-do-completion): Value of skk-dcomp-activate is now used as a test to decide whether to do completion or not. If its value is a function, funcall it. If it is a list, eval it. Otherwise if it is non-nil, always do completion. * skk-look.el (skk-look-1): Don't use user option `skk-look-use-alternate-dictionary' since "-a" option is not accepted by look command except for GNU/Linux. * skk-vars.el (skk-look-use-alternate-dictionary): Abolish variable. (skk-look-dictionary): Give default value properly since look command changes behavior when dictionary file name is not passed, in which case 2 user options `skk-look-ignore-case' and `skk-look-dictionary-order' doesn't function. 2005-12-01 Tetsuo Tsukamoto * skk-comp.el (skk-comp-do): When skk-use-look and skk-look-ignore-case are both non-nil, downcase skk-comp-key and midashi. * skk-cus.el (skk-cus-params-henkan): Use radio button instead of choice menu. * skk-dcomp.el (skk-dcomp-do-completion): If skk-dcomp-activate is eolp, do completion only when point is at the end of line. * skk-vars.el (skk-dcomp-activate): Accept value eolp. 2005-11-30 Tetsuo Tsukamoto * SKK-MK (SKK_MODULES): New module skk-tankan. * skk-cus.el (skk-custom-map): New variable. (skk-custom-mode): (skk-customize): Use `skk-custom-map' as local keymap. * skk-dcomp.el (skk-dcomp-after-delete-backward-char): Also do completion in skk-abbrev-mode. (skk-abbrev-insert): Advice for function. Do completion. * skk-server.el (skk-disconnect-server): When Emacs is NTEmacs and in noninteractive mode, do not call `accept-process-output'. * skk-tankan.el: From experimental to the top directory. Do not use `mapcar' where its return value is not referred to. Use `dolist' instead. (skk-tankan-get-char-annotation): (skk-tankan-set-char-annotaion): Under XEmacs, call `get-char-table' or `put-char-table' instead of `aref' or `aset'. (skk-tankan-search): Autoload. Use `product-provide'. * skk-tut.el (skktut-get-question-page): When skktut-question-count exceeds skktut-question-numbers, simply call `skktut-end-tutorial', i.e. no need to depend on SKK.tut for deciding whether to call it or not. * skk-vars.el (skk-look-use-ispell): Default to nil. (skk-tankan-search-key): (skk-tankan-get-char-data-functions): (skk-tankan-annotation-table): New variables from skk-tankan.el. * skk.el (skk-abbrev-insert): New command. Merely call `self-insert-command'. (skk-define-abbrev-mode-map): Define self insertion keys to call `skk-abbrev-insert'. (skk-henkan): Call `skk-inline-hide' only under FSF Emacs 21 or greater. (skk-search): Bind `skk-use-numeric-conversion' to nil for `skk-look', etc. 2005-11-27 Tetsuo Tsukamoto * doc/skk.texi: Update for $BF|IUF~NO(B. * skk-gadget.el (skk-current-date): The 3rd argument for PP-FUNCTION should be (not skk-date-ad), not skk-date-ad. * skk.el (skk-kakutei): Regexp fix for prefix conversion keys. (skk-search): When skk-use-numeric-conversion is non-nil, do not do duplicate search for `skk-look', etc. 2005-11-19 Tetsuo Tsukamoto * skk.el (skk-search): When skk-use-numeric-conversion is non-nil, also do non-numeric conversion. (skk-update-jisyo-original): Don't call `skk-num-compute-henkan-key' if WORD does not contain numeric characters. (skk-search-upcase): New function. 2005-11-14 Tetsuo Tsukamoto * skk.el (skk-search-romaji): New function. 2005-11-13 Tetsuo Tsukamoto * doc/skk.texi: Update. 2005-10-31 Tetsuo Tsukamoto * SKK-MK (SKK-MK-server-installed-p): Do not signal error. 2005-10-30 Tetsuo Tsukamoto * SKK-MK (SKK-MK-server-installed-p): Workaround for a problem in Emacs 21.4 or earlier, under GNU/Linux, where Emacs with a new shell process causes SIGPOLL in batch mode just after it calls `open-network-stream'. Do not check the server state in this case. 2005-10-20 Tetsuo Tsukamoto * skk.el (skk-henkan-in-minibuff): Modify prompt in skk-show-inline, "[$B"-<-=qEPO?(B]" -> "Echo area $B$r8+$F(B!". 2005-10-11 Tetsuo Tsukamoto * skk-vars.el (skk-kuten-touten-alist): Accept new pairs jp-en and en-jp. (skk-kutouten-type): Accept new values -- jp-en, en-jp or a cons cell of two strings. * skk.el (skk-toggle-kutouten): Toggle four pairs -- jp, en, jp-en and en-jp. (skk-current-kuten): If skk-kutouten-type is a cons cell, return car of it. (skk-current-touten): If skk-kutouten-type is a cons cell, return cdr of it. (skk-what-char-type): Recognize $B%t(B, $B%u(B, $B%v(B, $B!3(B and $B!4(B as katakana. (skk-toggle-characters): Set VEXPAND for `skk-hiragana-region'. 2005-10-05 Masatake YAMATO * skk-e21.el (skk-inline-show): New function. (skk-inline-hide): New function. (skk-inline-overlay): New variable. * skk-vars.el (skk-show-inline): New option. * skk.el (skk-henkan-in-minibuff): Call `skk-inline-show'. (skk-henkan-show-candidate-subr): Call `skk-inline-show'. (skk-henkan): call `skk-inline-hide'. 2005-10-02 Kitamoto Tsuyoshi * doc/skk.texi: Patch for unification of terminology. 2005-09-27 Tetsuo Tsukamoto * skk-kcode.el (skk-input-by-code-or-menu-jump): (skk-input-by-code-or-menu-1): Use `skk-previous-candidate-char' instead of ?x. * skk-vars.el (skk-default-current-date-function): Use skk-number-style as the 3rd argument of `skk-default-current-date'. 2005-09-25 Tetsuo Tsukamoto * SKK-MK: * skk-jisx0213.el: Do not require jisx0213 unless jisx0213 capable coding systems are present. This is a modification for the unicode branch of Emacs. * skk-vars.el (skk-kcode-charset-list): Under Emacs 21 or greater, do not call `charset-list'. Refer to variable `charset-list' instead. 2005-09-24 Tetsuo Tsukamoto * skk.el (skk-preload): Preload all dictionaries specified in `skk-search-prog-list'. 2005-09-23 Tetsuo Tsukamoto * skk-vars.el (skk-lookup-option-alist): Add rule for LIFE SCIENCE DICTIONARY (lsd). 2005-08-25 Tetsuo Tsukamoto Suggested by Masatake YAMATO * skk-e21.el (skk-e21-circulate-modes): New function. (skk-e21-modeline-property): Mouse-1 calls it and switch modes in order. * skk-vars.el (skk-server-portnum): Missing group parameter. Fix. 2005-05-25 Masatake YAMATO * skk-e21.el (skk-e21-modeline-property): Added mouse-face property for GNU Emacs in CVS. 2005-05-19 Tetsuo Tsukamoto Patch by Masao Takaku * skk.el (skk-search-jisyo): Exit binary search if `beginning-of-line' moves point to the search min, which means only one line is left for the search. 2005-02-27 Tetsuo Tsukamoto * skk.el (skk-set-henkan-point): In mistypes described on 2005-02-24, bind `skk-dcomp-activate' to nil. Call `skk-set-char-before-as-okurigana' even when last-command-char does not belong to [AEIOU] solely for avoiding deletion of the following character. Never use SKK this way. 2005-02-26 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-setup-keymap): Define [?\C-x t] after defining keys for `skk-isearch-skk-mode', for properly exiting isearch. * skk-server.el (skk-open-network-stream): For Emacs 22.0.50 or greater, call `set-process-query-on-exit-flag' instead of `process-kill-without-query'. 2005-02-24 Tetsuo Tsukamoto * skk-jisyo-edit-mode.el (skk-jisyo-edit-font-lock-keywords): `defvar' instead of `defconst'. * skk.el (skk-set-char-before-as-okurigana): New function. (skk-set-henkan-point): When user mistypes, e.g. "ArukU" for "AruKu", insert "Aruku" and call `skk-set-char-before-as-okurigana'. 2005-02-21 Kenichi Kurihara * experimental/bayesian/skk-bayesian.el (skk-bayesian-update): Bug fixed; when skk-undo-kakutei-word-only is non-nil. (skk-bayesian-add-to-history): Ditto. 2005-02-18 Kenichi Kurihara * experimental/bayesian/skk-bayesian.el (skk-bayesian-kill-process): Bug fixed. * experimental/bayesian/bskk (EBTCPServer::initialize): setsockopt SO_REUSEADDR. 2005-02-17 Kenichi Kurihara * experimental/bayesian/skk-bayesian.el : Use defcustom instead of defvar. (skk-bayesian-corpus-*): New. (skk-bayesian-corpus-save): Fix comments. * experimental/bayesian/bskk (IString): Remove. (DB::save): Bug fixed; set @dirty to false. 2005-02-12 TAKAHASHI Kaoru * doc/skk.texi: Use @pxref instead of @xref+@footnote. 2005-01-31 Kenichi Kurihara * experimental/bayesian/bskk (serve): Bug fixed. 2005-01-30 Kenichi Kurihara * experimental/bayesian/skk-bayesian.el (skk-bayesian-search): Bug fixed. (skk-bayesian-update): Ditto. (skk-bayesian-add-to-history): Ditto. (skk-bayesian-restart-process): Ditto. 2005-01-10 Kenichi Kurihara * skk-kakasi.el (skk-kakasi-region): Add options "-ieuc" and "-oeuc". 2004-12-31 KURIHARA Kenichi * experimental/bayesian/skk-bayesian.el (skk-bayesian-read-process-output): Change specifications. (skk-bayesian-kill-process): Ditto. (skk-bayesian-add-to-history): Bug fixed. * experimental/bayesian/bskk: Update comments. (Distribution::initialize): Dont either chomp or raise exceptions. (v_puts):Obsolete. (v_err_puts):New. (DB::initialize): Accept prefixes which have [:blank:]. (DB::initialize): Dont raise exceptions. (serve): Bug fixed. 2004-12-27 Kenichi Kurihara * experimental/bayesian/skk-bayesian.el (skk-bayesian-add-to-history): Bug fixed. 2004-12-26 Kenichi Kurihara * experimental/bayesian/skk-bayesian.el (skk-bayesian-make-pending-data-alist): Bug fixed. (skk-bayesian-get-pending-data-alist): Raise error if the key is invalid. (skk-bayesian-update): Bug fixed. (skk-bayesian-save-history): Finish the last pending if any. 2004-12-24 KURIHARA Kenichi * experimental/bayesian/skk-bayesian.el (skk-bayesian-make-pending-data-alist): Bug fixed. 2004-12-23 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): * skk.el (skk-henkan-show-candidate-subr): Do not show tooltip when window-system is nil. 2004-12-20 KURIHARA Kenichi * experimental/bayesian/skk-bayesian.el (skk-bayesian-make-pending-data-alist): New. (skk-bayesian-get-pending-data-alist): Ditto. 2004-12-20 KURIHARA Kenichi * experimental/bayesian/skk-bayesian.el: Rename some variables to use context instead of prefix. (skk-bayesian-make-context): New. (skk-bayesian-search): Use skk-bayesian-make-context. (skk-bayesian-last-okurigana): New variable. (skk-bayesian-last-henkan-point): New variable. (skk-bayesian-add-to-history): Bug fixed. * experimental/bayesian/bskk (split_line): New. (serve): Use split_line. 2004-12-08 KURIHARA Kenichi * experimental/bayesian/bskk (DB::save): Use File.copy instead of system("cp ..."). 2004-12-07 KURIHARA Kenichi * experimental/bayesian/skk-bayesian.el (skk-bayesian-number-of-command-after-kakutei): New variable. (skk-bayesian-last-kakutei-word): Ditto. (skk-bayesian-last-buffer): Ditto. (skk-bayesian-add-to-history-pending): Ditto. (skk-bayesian-max-commands-to-wait-for): Ditto. (skk-bayesian-search): Bug fixed. (skk-bayesian-update): Don't record new kakutei-word if the kakutei-word was deleted soon. (skk-bayesian-check-modification-after-kakutei): New function. (skk-bayesian-add-to-history): New function. (skk-bayesian-add-to-history): Bug fixed. (skk-bayesian-restart-process): Bug fixed. 2004-12-01 KURIHARA Kenichi * experimental/bayesian/skk-bayesian.el: Add comments more. (skk-bayesian-read-process-output): New. (skk-bayesian-search): Use `skk-bayesian-read-process-output'. (skk-bayesian-save-history): Ditto. (skk-bayesian-kill-process): Ditto. (skk-bayesian-restart-process): Use -d when `skk-bayesian-debug'. Add `skk-bayesian-kill-process' to `skk-before-kill-emacs-hook' * experimental/bayesian/bskk (DB): Add a flag `dirty'. (DB::add_history): Ditto. (DB::save): New. (DB::debug_log): New. (save_DB): Remove. (serve): Add an error handling. (mode_serve): Make more stable in hadling exceptions and signals. Add an opetion -d. Bug fixed. 2004-11-30 KURIHARA Kenichi * skk-viper.el: check whether function `sentence-end' exists. 2004-11-28 Tetsuo Tsukamoto * skk-macs.el (skk-replace-regexp-in-string): New function. * skk-isearch.el (isearch-repeat): Don't call `replace-regexp'. Call `skk-replace-regexp-in-string' instead. 2004-11-26 Masatake YAMATO Introduce a context to check whether the current buffer is read-only or not in context-skk. * experimental/context-skk.el (context-skk-mode): Rename the minor mode from `context-skk'. (context-skk-insert): Show a message when the skk is turned off by context-skk. (context-skk-in-read-only-buffer-p): New function. * skk.el (skk-insert): Don't use * in `interactive'. Use `barf-if-buffer-read-only' instead. (skk-jisx0208-latin-insert): Ditto. 2004-11-14 Tetsuo Tsukamoto * skk-e21.el (skk-e21-mouse-position): When skk-isearch is on, place mouse pointer on the minibuffer window. 2004-09-14 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-delete-char): Workaround for modification in Emacs 21.3.50 which uses a vector, instead of a list, for each element of `isearch-cmds'. 2004-08-19 Masatake YAMATO * skk-e21.el (skk-tooltip-show-at-point): Don't use ox and oy if they are nil. 2004-08-18 Kitamoto Tsuyoshi * doc/skk.texi: Typo fixed. 2004-07-30 Kitamoto Tsuyoshi * doc/skk.texi: Typo fixed. 2004-07-29 Kitamoto Tsuyoshi * doc/skk.texi: Typo fixed. 2004-07-23 Kitamoto Tsuyoshi * doc/skk.texi: Typo fixed. 2004-07-22 Kitamoto Tsuyoshi * doc/skk.texi: Typo fixed. 2004-07-17 Tetsuo Tsukamoto * skk-jisyo-edit-mode.el (skk-jisyo-edit-font-lock-keywords): Avoid highlighting part of comments by font-lock-type-face. 2004-06-07 Tetsuo Tsukamoto * skk.el (skk-emulate-original-map): When `key-binding' fails to find command for KEYS, translate KEYS according to function-key-map and call `key-binding' again. 2004-04-18 Tetsuo Tsukamoto * skk-e21.el (skk-e21-coding-system): Default to nil if window-system is nil. 2004-04-15 Tetsuo Tsukamoto Patch by KOSEKI Yoshinori * SKK-MK (SKK_MODULES): Add module skk-e21 for Emacs 22 or greater. 2004-04-12 KURIHARA Kenichi * experimental/bayesian/bskk (save_DB): Bug fixed. (Distribution::initialize): Bug fixed. * experimental/bayesian/skk-bayesian.el (skk-bayesian-search): Bug fixed. 2004-04-11 Tetsuo Tsukamoto * skk-e21.el (skk-tooltip-show-at-point): Don't require `avoid'. 2004-04-08 Masatake YAMATO * skk.el (skk-henkan-in-minibuff): Prepend "[$B<-=qEPO?(B]" on the prompt. 2004-04-04 Tetsuo Tsukamoto * skk-e21.el (skk-tooltip-show-at-point): Bind tooltip-hide-delay to skk-tooltip-hide-delay. * skk-vars.el (skk-tooltip-hide-delay): New user option. 2004-04-04 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): Under Emacs 21, call `skk-tooltip-show-at-point' if skk-show-tooltip is non-nil. * skk-e21.el (skk-e21-mouse-position): New function, almost identical to `mouse-avoidance-point-position' except that skk-henkan-start-point is used for stop pos when the marker is set. (skk-tooltip-show-at-point): Rename from `tooltip-show-at-point'. Call `skk-e21-mouse-position'. * skk-vars.el (skk-show-tooltip): Rename variable from skk-use-tooltip. * skk.el (skk-henkan-show-candidate-subr): Call `skk-tooltip-show-at-point'. 2004-04-03 Tetsuo Tsukamoto Patch by Masatake YAMATO . * skk-e21.el (tooltip-show-at-point): New function. * skk-vars.el (skk-show-tooltip): New user option. * skk.el (skk-henkan-show-candidate-subr): Under Emacs 21, call `tooltip-show-at-point' for showing candidates if skk-use-tooltip is non-nil. 2004-04-03 Tetsuo Tsukamoto * skk-e21.el (skk-e21-modeline-property): mouse-1 pops up menu. * skk-jisyo-edit-mode.el (skk-jisyo-edit-font-lock-keywords): Highlight okuri blocks. * skk-xemacs.el (skk-xemacs-prepare-modeline-properties): button1 pops up menu. 2004-04-01 Tetsuo Tsukamoto * skk-e21.el (skk-e21-coding-system): Default to nil if window-system is w32, otherwise default to the value of locale-coding-system. (skk-e21-encode-string): Do not encode if skk-e21-coding-system is nil. * skk.el (skk-mode-invoke): Find skk menus by "SKK" or "skk". 2004-03-31 Tetsuo Tsukamoto * skk-e21.el (skk-e21-menu-resource-ja): (skk-e21-coding-system): New variables. (skk-e21-encode-string): (skk-e21-menu-replace): New functions. * skk-macs.el (skk-indicator-to-string): (skk-mode-string-to-indicator): (skk-event-key): (skk-update-modeline): (skk-erase-prefix): (skk-kana-cleanup): (skk-mode-off): (skk-j-mode-on): (skk-latin-mode-on): (skk-jisx0208-latin-mode-on): (skk-abbrev-mode-on): (skk-put-last-henkan-data): (skk-find-coding-system): (skk-quote-char-1): (skk-key-binding-member): `defun' instead of `defsubst', since these functions are not very small. * skk-vars.el (skk-show-japanese-menu): New user option. * skk.el (skk-mode-invoke): Under Emacs 21, setup japanese menu if requested. 2004-03-09 Tetsuo Tsukamoto * skk-e21.el (skk-e21-prepare-modeline-properties): Don't copy face modeline. Simply call `make-face'. 2004-03-05 Tetsuo Tsukamoto * skk-jisyo-edit-mode.el (skk-jisyo-edit-mode): Set major-mode properly. 2004-03-04 Tetsuo Tsukamoto * skk-version.el (skk-version): Bump to 12.2.1. * ccc.el (ccc-defadvice): * skk-macs.el (skk-defadvice): Remove irregular format spec passed to `message'. * skk-comp.el (skk-comp-do-1): (skk-comp-search-current-buffer): (skk-comp-by-history): Add autoload cookie. * skk-dcomp.el (skk-dcomp-do-completion): Do not do complete if point is on `skk-henkan-start-point'. * skk-macs.el (skk-face-proportional-p): Under Emacs 21, return non-nil if FACE is equal to face `variable-pitch' or inherits the property of `variable-pitch'. 2004-02-29 KURIHARA Kenichi * experimental/bayesian/bskk (initialize): Use "/" as a separator instead of " ". (to_s): Ditto. (serve): Ditto. (serve): Bug fixed. Handle double quotations correctly. * experimental/bayesian/skk-bayesian.el (skk-bayesian-search): Use "/" as a separator instead of " ". 2004-02-29 NAKAJIMA Mikio * experimental/bayesian/skk-bayesian.el (skk-bayesian-save-history): Remove a kuten and a period from the message strings. (skk-bayesian-update): Remove a period from the message string. (skk-bayesian-restart-process): Ditto. (skk-bayesian-kill-process): Ditto. (skk-bayesian-debug-message): Declare with `defmacro' instead of `defsubst'. (skk-bayesian-process-live-p): Simplify. (skk-bayesian-kill-process): Slightly modify the message string. (skk-bayesian-update): Ditto. * SKK-MK (SKK_MODULES): Add skk-bayesian. * experimental/bayesian/skk-bayesian.el (skk-bayesian-search): Use `with-current-buffer'. (skk-bayesian-update): Ditto. (skk-bayesian-save-history): Ditto. (skk-bayesian-kill-process): Ditto. (skk-bayesian-prefer-server): Add `*' to the top of doc string. (skk-bayesian-port): Ditto. (skk-bayesian-host): Ditto. (skk-bayesian-prefix-len): Ditto. (skk-bayesian-last-prefix-str): Ditto. (skk-bayesian-history-file): Ditto. (skk-bayesian-debug): Ditto. (skk-bayesian-search): Use `buffer-substring-no-properties' instead of `buffer-substring'. 2004-02-26 KURIHARA Kenichi * experimental/bayesian/bskk: New file. 2004-02-21 NAKAJIMA Mikio * experimental/bayesian/skk-bayesian.el (skk-bayesian-restart-process): Bug fixed. 2004-02-21 Kenichi Kurihara * experimental/bayesian/skk-bayesian.el: New file. 2004-01-26 Tetsuo Tsukamoto * skk-macs.el (skk-get-current-candidate-1): Call `skk-henkan-count'. * skk.el (skk-henkan-count): (skk-set-henkan-count): (skk-exit-show-candidates): (skk-set-exit-show-candidates): New functions, workaround for XEmacs isearch. (skk-henkan-1): (skk-henkan-show-candidates): (skk-henkan-in-minibuff): (skk-previous-candidate): (skk-start-henkan): (skk-remove-common): (skk-process-prefix-or-suffix): (skk-set-okurigana): (skk-kakutei-initialize): (skk-undo-kakutei): (skk-set-henkan-point): (abort-recursive-edit): Call them. 2004-01-19 Tetsuo Tsukamoto * skk-setup.el.in (isearch-mode-end-hook): Check the value of `skk-isearch-mode-enable', not merely eval it. 2003-07-21 Tsuyoshi AKIHO * doc/skk.texi: Add description( skk-kutouten-type, skk-toggle-kutouten) in "Q.3-2 $B!V!%!W!"!V!$!W(B $B$,F~NO$G$-$k$h$&$K%+%9%?%^%$%:$7$?$$$N$G$9$,!#(B" 2003-07-21 NAKAJIMA Mikio * SKK-MK (SKK_DICTIONARIES): Add `SKK-JISYO.ML'. (SKK-MK-install-elc): Handle `SKK-JISYO.ML'. (SKK-MK-install-package): Ditto. 2003-07-19 NAKAJIMA Mikio * skk.el (skk-kakutei-initialize): Reuse marker in henkan-point. * skk-macs.el (skk-set-marker): Fix doc string. (skk-deflocalvar): Update doc string. * experimental/skk-study.el (skk-study-file-format-version): Bump up to 0.3. (skk-study-current-buffer-theme): New buffer local variable. (skk-study-get-current-alist): New inline function. (skk-study-search): Use `skk-study-get-current-alist'. (skk-study-update): Ditto. (skk-undo-kakutei): Ditto. (skk-study-switch-current-theme): New function. (skk-study-read-1): Modify to handle theme. (skk-study-check-alist-format): Ditto. (skk-study-check-alist-format-1): Ditto. (skk-study-switch-current-theme): Bug fixed. (skk-study-remove-theme): New function. (skk-study-copy-theme): Ditto. (skk-study-check-alist-format): Modified doc string. 2003-07-18 NAKAJIMA Mikio * skk.el (skk-select-words-from-list): Funcall each symbol of skk-search-end-function. (skk-update-jisyo-original): Funcall each symbol of skk-update-end-function. * skk-vars.el (skk-search-end-function, skk-update-end-function): Remove duplicated declarations. (skk-search-end-function): Change its type '(list symbol). (skk-update-end-function): Ditto. * skk-study.el: Require pym.el. (ring-elements): Declare with defun-maybe. 2003-07-13 NAKAJIMA Mikio * skk-study.el (skk-study-read): Use `when' instead of `if'. (skk-undo-kakutei): Ditto. (skk-study-check-alist-format-1): Ditto. (skk-study-read-1): Ditto. (skk-study-save): Ditto. (skk-study-read): Use `unless' instead of `or'. (skk-kakutei-initialize): Call `ring-insert' anyway without checking ring element duplication. * skk-vars.el (skk-study-check-alist-format): Change its default value to nil. * ptexinfmt.el (texinfo-format-separate-node): Declare with `ptexinfmt-broken-facility' and `ptexinfmt-defun-if-broken'. (texinfo-format-end-node): Ditto. * skk-study.el (skk-study-read): Require skk-macs.el, skk-vars.el and ring.el outside `eval-when-compile'. (skk-study-search): Use `when' instead of `if', simplified slightly and add doc string. (skk-study-update): Simplified slightly and add doc string. 2003-07-12 NAKAJIMA Mikio * skk-study.el: Move all variables and constants to skk-vars.el. (skk-study-update): Check if `skk-study-max-distance' is nil or not. Check if `skk-study-first-candidate' is nil or not. (skk-study-first-candidate): New user variable. * Makefile (VERSION): Change 12.2.0rc1 to 12.2.0. * skk-study.el: Move from experimental directory. (skk-kakutei-initialize): Simplified it by using `ring-elements'. (skk-study-search-times): Change its default value to 5. (skk-study-max-distance): New user variable. (skk-study-update): Bug fixed. Not to study henkan relationship when (i) buffer was changed since last henkan, (ii) distance from last henkan point was negative or (iii) such distance is longer than `skk-study-max-distance'. * skk.el (skk-kakutei-initialize): Store buffer and point (marker) data of last henkan. 2003-07-11 NAKAJIMA Mikio * experimental/skk-study.el (skk-kakutei-initialize): Bug fixed. (skk-study-update): Do not add/update data to `skk-study-alist' when KAKUTEI-WORD is equal to car of `skk-henkan-list'. (skk-study-save): Modify message string slightly. 2003-07-10 NAKAJIMA Mikio * experimental/skk-study.el (skk-search-end-function): Declared with defvar. (skk-update-end-function): Ditto. 2003-07-07 NAKAJIMA Mikio * experimental/skk-study.el (skk-kakutei-initialize): Bug fixed. 2003-07-06 NAKAJIMA Mikio * experimental/skk-hint.el (skk-hint-limit): Use `aref' instead of `skk-str-ref'. (skk-hint-member): Ditto. * experimental/skk-study.el (skk-study-check-alist-format-1): Ditto. (skk-kakutei-initialize): Do not add DATA to `skk-study-data-ring' when KAKUTEI-WORD is equal to car of `skk-henkan-list'. (skk-study-save): Bug fixed. (skk-study-sort-saving): Change its default value to nil. (skk-study-associates-number): Change its default value to 5. * experimental/rdbms/skk-rdbms.el (skk-rdbms-sahen-search-1): Ditto. * ptexinfmt.el: Sync up with the file in emacs-w3m 1.3. * Makefile (VERSION): Change 12.1.1rc1 to 12.2.0rc1. * skk-version.el (skk-version): Bump to 12.2.0 (Sone). 2003-07-05 NAKAJIMA Mikio * Makefile (VERSION): Change 11.6.0 to 12.1.1rc1. * SKK-MK: Change required APEL version to 10.6. 2003-06-25 Masatake YAMATO * experimental/context-skk.el (context-skk-in-programming-mode-p): (context-skk-out-of-string-or-comment-in-programming-mode-p): Fix a typo. (context-skk-in-mew-draft-attachments-region-p): New function. (context-skk-insert): Invoke (key-binding (this-command-keys)) instead of self-insert-command. (context-skk-context-check-hook): context-skk-in-mew-draft-attachments-region-p is added. 2003-06-21 NAKAJIMA Mikio * experimental/context-skk.el: New file (see [skk 4558]). (context-skk-in-programming-mode-p): Use `memq' instead of `member'. 2003-06-20 NAKAJIMA Mikio * skk.el (skk-make-temp-jisyo): Abolish. (skk-setup-shared-private-jisyo): Do not use `make-temp-name' (see [skk 4646]). 2003-03-28 Tetsuo Tsukamoto * skk.el (skk-toggle-characters): Function `skk-katakana-henkan' should be called with optional argument VCONTRACT non-nil. 2003-03-30 NAKAJIMA Mikio * skk-lookup.el (skk-lookup-search): Remove skk-henkan-key from return value in order to suppress a candidate that is equal to skk-henkan-key itself. 2003-03-30 YAGI Tatsuya * experimental/skk-tankan.el: Update annotations in accordance with JIS X0213 $B2~@50F(B. 2003-03-28 Tetsuo Tsukamoto * skk-jisx0201.el (skk-toggle-katakana): When `skk-henkan-mode' is active, perform kakutei. * skk-tut.el (skktut-abbrev-mode-map): Bind `skk-toggle-characters' instead of `skk-jisx0208-latin-henkan'. * skk.el (skk-setup-keymap): Check for `skk-try-completion-char' instead of `skk-kakutei-key'. 2003-03-28 Tetsuo Tsukamoto * skk.el (skk-henkan-skk-region-by-func): Rename from `skk-*-henkan-2'. Include function `skk-*-henkan-1'. (skk-toggle-chracters): Call `skk-henkan-skk-region-by-func' instead of `skk-katakana-henkan', `skk-hiragana-henkan', `skk-latin-henkan' or `skk-jisx0208-latin-henkan'. (skk-katakana-henkan): (skk-hiragana-henkan): (skk-latin-henkan): (skk-jisx0208-latin-henkan): (skk-*-henkan-1): Abolish these functions. * skk-jisx0201.el (skk-jisx0201-henkan): Call `skk-henkan-skk-region-by-func'. 2003-03-28 Tetsuo Tsukamoto * skk-var.el (skk-kakutei-history): Doc string update. * skk.el (skk-define-abbrev-mode-map): Define key for `skk-toggle-characters' instead of `skk-jisx0208-latin-henkan'. (skk-toggle-chracters): Refer to the local variable `skk-save-point' instead of `skk-henkan-end-point'. 2003-03-27 Tetsuo Tsukamoto * skk-xemacs.el (skk-xemacs-find-func-keys): Call `skk-remove-duplicates' only when KEY is a list. * skk.el (skk-kakutei): When `skk-henkan-mode' is on, check if the string consists of hiraganas, before updating `skk-kakutei-history'. (skk-define-abbrev-mode-map): Define key for `skk-toggle-character' instead of `skk-jisx0208-latin-henkan'. (skk-toggle-chracters): Don't set `skk-henkan-end-point' here. Call `skk-katakana-henkan', `skk-hiragana-region', `skk-latin-henkan' or `skk-jisx0208-latin-henkan' instead of `skk-katakana-region', `skk-hiragana-henkan', `skk-latin-region' or `skk-jisx0208-latin-region'. (skk-*-henkan-1): Update `skk-kakutei-history'. 2003-03-23 Tetsuo Tsukamoto * skk-e21.el (skk-e21-modeline-menu): When variable `skk-mode' is nil, find keys for function `skk-mode'. * skk-xemacs.el (skk-xemacs-find-func-keys): Do not show "linefeed" in menu. * skk.el (skk-remove-duplicates): New function. 2003-03-22 Tetsuo Tsukamoto * doc/skk.texi: Update for skkinput, SKKIME, and SKK95. 2003-03-16 Tsuyoshi AKIHO * doc/skk.texi: To avoid texinfo error on Emacs 21, following changes. Modify stirng from "$B>e5-$NNc$G$O!"(B" to "$B>e5-$NNc$O!"(B". Delete a space before @samp{$BN)$A>e$2$k(B}. 2003-02-25 Tetsuo Tsukamoto * doc/skk.texi: Insert a space before @samp{$BN)$A>e$2$k(B}. This is a workaround for Emacs 21.4. * skk-viper.el (viper-toggle-case): * skk.el (skk-multiple-line-message): Function `insert-string' will be obsolete in Emacs 21.4. Use `insert' instead. 2003-02-25 Tetsuo Tsukamoto * skk-jisyo-edit-mode.el: Use `add-to-list' for updating `auto-mode-alist'. 2003-02-08 YAGI Tatsuya * experimental/skk-tankan.el: New file. 2003-01-28 NAKAJIMA Mikio * skk-vars.el (skk-force-registration-mode-char): New user variable. * skk.el (skk-henkan-show-candidates): If input char is `skk-force-registration-mode-char', force to enter into word registration mode. Doc fixed. (skk-henkan-show-candidate-subr): Doc fixed. (skk-undo-kakutei): Ditto. 2002-11-30 NAKAJIMA Mikio * README.MacOSX.ja: New file. 2002-11-20 NAKAJIMA Mikio * Makefile (SNAPBASE, tar, snapshot): Add `-'. 2002-11-10 NAKAJIMA Mikio * skk-dic.el.in: Set buffer coding system to iso-2022-jp and specify the coding system in the header. 2002-11-09 NAKAJIMA Mikio * skk-dic.el.in (skk-search-small-dic): Add doc string. 2002-11-09 Akihiro Motoki * skk-comp.el (skk-comp-do): Keyword completion shows a candidate circularly. (After showing the last candidate, back to the first.) (skk-comp-previous): Ditto. * skk.el (keyboard-quit): While keyword completion in Midashi input mode, C-g terminates the completion and redisplay the original Midashi input. * skk-vars.el (skk-comp-circulate): New user variable. (skk-comp-search-done): New buffer local variable. 2002-11-09 NAKAJIMA Mikio * skk-setup.el.in (isearch-mode-end-hook): Check if `skk-isearch-mode-enable' is non-nil before invoking `skk-isearch-mode-cleanup' * skk.el (skk-toggle-isearch-mode): New command. 2002-11-03 NAKAJIMA Mikio * skk-vars.el (skk-isearch-mode-enable): New user variable. * skk-setup.el.in (isearch-mode-hook): Check if `skk-isearch-mode-enable' is non-nil before invoking `skk-isearch-mode-setup'. 2002-10-28 Tsuyoshi AKIHO * doc/skk.texi ($BM=HwCN<1(B): remove. ($B%U%!%$%k9=@.(B & $B%f!<%6!<%*%W%7%g%s$N@_DjJ}K!(B): move from ($BM=HwCN<1(B) to ($BJXMx$J1~MQ5!G=(B). ($B<-=q$N7A<0(B & $B<-=q$K4X$9$k@_Dj(B): move from ($BM=HwCN<1(B) to ($B<-=q4XO"(B). ($B<-=q$K4X$9$k@_Dj(B): Add subsubsection($BJ#?t<-=q$N8!:wJ}K!(B). ($B5l%P!<%8%g%s$+$i$NJQ99E@(B): Add section(SKK 11 $B$+$i$NJQ99E@(B). 2002-10-22 Yano Keisuke * skk-kcode.el (skk-display-code): Modified for JISX0213. Change display of KUTEN code in accordance with `$B5,3J6(2q!V(BJIS$B4A;z(B $B;zE5!W(B. (skk-jis2sjis2): New function. 2002-09-05 Akihiro MOTOKI * skk.el (skk-try-completion): Correct argument handling. 2002-09-01 Tetsuo Tsukamoto * skk-isearch.el: (skk-isearch-mode-setup): (skk-isearch-mode-cleanup): Do not consider MULE 3. 2002-08-03 Tetsuo Tsukamoto * SKK-MK: Signal error when Emacs is version 20.2 or older. 2002-08-02 Tetsuo Tsukamoto * SKK-MK: (SKK_MODULES): Always install `skk-leim'. * skk-isearch.el: No longer check if `register-input-method' is bound. Use `unless' for autoloaded expressions. 2002-08-01 Tetsuo Tsukamoto * skk-version.el: (skk-version): Bump to 12.1.1. 2002-07-31 Tetsuo Tsukamoto * doc/skk.texi: No longer refer to `skk-dabbrev-like-completion'. Describe how to use `C-u TAB' instead of `.' in completion. 2002-07-27 Tetsuo Tsukamoto * skk-comp.el: (skk-comp-do): Do not refer to `skk-dabbrev-like-completion'. * skk-tut.el: (skktut-init-variables-alist): Do not consider `skk-dabbrev-like-completion'. * skk-vars.el: (skk-dabbrev-like-completion): Abolish variable. * skk.el: (skk-try-completion): (skk-insert): When the user types C-u TAB instead of TAB solely, discard the current copmletion key, get new comletion key from the current buffer, and begin new completion. 2002-07-20 Tetsuo Tsukamoto * SKK-MK: (SKK-MK-skk-dic): Modify regexp. * skk-dic.el.in: (skk-small-dic): (skk-dic-buffer-name): Abolish variables. (skk-dic-buffer): New variable. (skk-search-small-dic): Search in `skk-dic-buffer'. (skk-dic-setup-buffer): Set `skk-dic-buffer' or return its value. 2002-07-16 Tetsuo Tsukamoto * skk.el: (skk-purge-from-jisyo): When `skk-henkan-mode' is active, call `skk-emulate-original-map'. (next-line@before@skk-ad): (previous-line@before@skk-ad): When `skk-henkan-mode' is active, perform kakutei before these commands. 2002-07-14 Tetsuo Tsukamoto * skk-vars.el: (skk-icon): (skk-modeline-input-mode): Mark variables risky-local-variable. 2002-07-13 Tetsuo Tsukamoto * skk-vars.el: (skk-after-prefix): New variable. * skk.el: (skk-process-prefix-or-suffix): When inserting prefix, turn `skk-after-prefix' on. (skk-search-katakana): When inserting prefix or suffix, remove ">" before conversion. (skk-kakutei): When the word before `kakutei-word' is a prefix, combine the prefix and the current `kakutei-word', and record the combined word in the private dictionary. 2002-07-06 Tetsuo Tsukamoto * skk-dcomp.el: (skk-kana-input@around@skk-dcomp-ad): Do not call `skk-dcomp-do-completion' in skk-abbrev-mode. * skk-look.el: (skk-look): (skk-look-completion): Do not call `skk-look-ispell' for a null string. 2002-06-22 Tetsuo Tsukamoto * skk.el: (skk-kakutei): When `kakutei-word' is a suffix, combine the previous `kakutei-word' and the current `kakutei-word', and record the combined word in the private dictionary. E.g. "$B$+$s$I$&(B /$B46F0(B/" + ">$B$F$-(B /$BE*(B/" ===> "$B$+$s$I$&$F$-(B /$B46F0E*(B/" (skk-update-kakutei-history): Record the buffer where the kakutei is performed. 2002-06-10 Eiji Obata * skk-annotation.el: Update comments. (skk-annotation-setup): Fix. 2002-06-02 Tetsuo Tsukamoto * skk-annotation.el: (skk-annotation-add): When `wholestring' does not contain annotation, then `realword' should be the same as `wholestring'. 2002-05-27 Eiji Obata * skk-tut.el (skktut-get-question-page): Trivial fix. 2002-05-12 Tsuyoshi AKIHO * etc/dot.skk (skk-hyphen): Bug fixed. * experimental/skk-exsearch (skk-grep-search): New function. 2002-05-06 Eiji Obata * experimental/skk-dinsert.el: Modify example code. 2002-04-27 Eiji Obata * skk-look.el (skk-try-completion@before@skk-look-ad): New advice. Clear `skk-look-completion-words' here. (skk-kakutei-initialize@after@skk-look-ad): Removed. 2002-04-12 Eiji Obata * skk.el (skk-multiple-line-message): Candidates should not be hidden by existing message. 2002-04-05 Eiji Obata * skk-num.el (skk-num-henkan-key): Call `skk-num-compute-henkan-key'. Update doc string. 2002-04-05 NAKAJIMA Mikio * skk-num.el (skk-num-convert): New arg INDEX (does not refer to SKK-HENKAN-COUNT). Update doc string. (skk-num-multiple-convert): Does not refer to SKK-HENKAN-COUNT. Call `skk-num-uniq'. * skk-macs.el (skk-get-current-candidate-1): New optional arg COUNT. 2002-04-03 Tetsuo Tsukamoto * skk-num.el: (skk-num-flatten-list): Local variable `dst' must be a list of strings. * skk-server.el: (skk-server-live-p): Do not refer to `skk-network-open-status'. * skk-vars.el: (skk-network-open-status): Abolish variable. 2002-04-01 Eiji Obata * skk.el (skk-henkan-show-candidate-subr): Fix bug that when `skk-numeric-p' returns t, lisp program was not evaluated. * skk-macs.el (skk-eval-string): Simplify. 2002-03-29 Eiji Obata * skk-vars.el (skk-buffer-undo-list): New variable. * skk.el (skk-multiple-line-message): Restore minibuffer at exit if `skk-emacs-type' is `mule4'. 2002-03-29 FURUE Hideyuki * skk.el: (skk-kakutei-cleanup-buffer): Fix bug that kakutei in $B"&(B mode inserts junk characters to the current bufffer when `skk-undo-kakutei-word-only' is t. (skk-set-henkan-point-subr): (skk-change-marker-to-white): Bind `skk-henkan-end-point' to nil after entering $B"&(B mode. (skk-undo-kakutei): Do nothing when `skk-henkan-end-point' is nil. 2002-03-22 FURUE Hideyuki * skk.el: (skk-kakutei-cleanup-buffer): Fix bug that `skk-undo-kakutei' does not treat the last okuri-ari kakutei correctly when `skk-undo-kakutei-word-only' is t. 2002-03-16 Tetsuo Tsukamoto * skk.el: (skk-update-jisyo-1): When PURGE, do not consider `skk-henkan-okuri-strictly' or `skk-henkan-strict-okuri-precedence'. I think it is a trial. It will be reverted to the original as soon as something is found to be wrong. 2002-03-16 Tetsuo Tsukamoto * skk-tut.el: (skktut-init-variables-alist): Bind `skk-dcomp-activate' nil. * skk.el: (skk-update-jisyo-1): 1st arg of `nthcdr' couldn't be a negative integer. So work around it. 2002-03-12 Tetsuo Tsukamoto * etc/Emacs.ad: * skk-e21.el: * skk-xemacs.el: Menu items update. * skk.el: (skk-search-all-progs): (skk-search-with-suffix): New functions. (skk-search-sagyo-henkaku): Call `skk-search-all-progs'. 2002-03-08 IIDA Yosiaki * skk-tut.el: Use \[] notation and call substitute-key-definition for guidance in answer buffer. 2002-03-07 Eiji Obata * skk.el (skk-setup-keymap): Use `skk-comp-start-henkan' instead of `skk-start-henkan-with-completion'. 2002-03-07 Tetsuo Tsukamoto * skk-isearch.el: (skk-isearch-setup-keymap): Key for `skk-previous-candidate-char' runs `skk-isearch-wrapper'. (skk-isearch-delete-char): Consider the behavior of `skk-delete-backward-char' when `skk-henkan-mode' is active. If `skk-delete-implies-kakutei' is non-nil, perform implicit kakutei, otherwise call `skk-previous-candidate'. 2002-03-07 IIDA Yosiaki * doc/skk.texi: GPL => GNU GPL. Fix IIDA's email address. 2002-03-06 IIDA Yosiaki * skk-tut.el: Use \[] notation in help strings. 2002-03-05 IIDA Yosiaki * skk-tut.el: Update initial dummy JISYO. See [skk 2809]. Russia ==> Cyrillic and other minor JISYO updates and typo fix. 2002-03-03 Tetsuo Tsukamoto * skk-vars.el: (skk-show-icon): New variable. * skk-e21.el: (skk-e21-prepare-modeline-properties): Set `skk-icon'. (skk-e21-modeline-property): mouse-3 instead of mouse-2 shows SKK menu. mouse-1 toggles SKK. * skk-xemacs.el: (skk-xemacs-prepare-modeline-properties): Set `skk-icon'. (skk-xemacs-modeline-map): button3 instead of button2 shows SKK menu. button1 toggles SKK. * skk-cus.el: (skk-cus-params-misc): Customize `skk-show-icon'. 2002-03-02 Daiki Ueno * skk.el (skk-henkan-show-candidate-subr): Select candidates buffer before centering point in window. [cf. ] 2002-03-02 Daiki Ueno * skk-vars.el (skk-henkan-show-candidates-rows): New user option. (skk-henkan-show-candidates-keys): Append 14 keys to default. * skk.el (skk-multiple-line-message-clear): New function. (skk-multiple-line-message): New function. (skk-multiple-line-string-width): New function. (skk-henkan-show-candidates): Take into account of `skk-henkan-show-candidates-rows'; bind `echo-keystrokes' to 0; clear out candidates in echo area each time one enters an interaction loop. (skk-henkan-show-candidate-subr): Take into account of `skk-henkan-show-candidates-rows'. 2002-02-26 Eiji Obata * skk.el (skk-remove-redundant-okurigana): Rename from `skk-remove-redundant-okurgana'. Update doc string and modify prompt string. 2002-02-17 Tetsuo Tsukamoto * skk.el (skk-save-jisyo-original): When `skk-share-private-jisyo', bind `buffer-file-name' and `buffer-file-truename' so that `set-buffer-modified-p' should unlock the file `skk-jisyo'. 2002-02-14 Tetsuo Tsukamoto * skk-num.el: Add doc strings. 2002-02-11 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-buffer): Alas, local variable WINDOW is needed. * skk-jisx0201.el: * skk-jisyo-edit-mode.el: * skk-server.el: Add or update doc strings. 2002-02-09 NAKAJIMA Mikio * experimental/skk-study.el (skk-study-check-alist-format-1): Use `length' instead of `skk-str-length'. * experimental/skk-hint.el (skk-hint-member, skk-hint-limit): Ditto. 2002-02-09 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-buffer): Abolish local variable WINDOW. * skk-macs.el Add or update doc strings. * skk.el Add or update doc strings. (skk-compile-init-file-maybe): Rename from `skk-setup-init-file'. (skk-preload): Call `skk-get-jisyo-buffer' if `skk-large-jisyo' is readable. 2002-02-06 Tetsuo Tsukamoto * READMEs/Contributors: Following person is added. YAMASHITA Junji 2002-02-04 YAMASHITA Junji * ccc.el (set-frame-cursor-color) (set-frame-foreground-color) (set-frame-background-color): New functions. (frame-cursor-color) (frame-foreground-color) (frame-background-color): make these variables frame-local. 2002-02-03 NAKAJIMA Mikio * skk-vars.el (skk-lookup-option-alist): Add regexp for KOJIEN. 2002-02-02 NAKAJIMA Mikio * skk-vars.el (skk-lookup-option-alist): Add regexp for KOUJIEN. 2002-01-29 NAKAJIMA Mikio * doc/skk.texi (Q.5-2 abbrev $B%b!<%I$G$b$C$H1QC18l$rMxMQ$7$?JQ49$,(B $B$G$-$^$;$s$+(B?): Write about `skk-look-use-ispell'. 2002-01-24 Tetsuo Tsukamoto * skk-gadget.el (skk-clock): Use common syntax for functions. * skk-macs.el: No longer work around for the invalid `dolist'. 2002-01-23 Tetsuo Tsukamoto * install-info.el (install-info-insert-file-contents): (install-info-write-region): (install-info-add-groups): Use common syntax for functions. * skk-comp.el (skk-comp-do): When no more comletion is left, don't increment `skk-comp-depth'. (skk-comp-do-1): When FIRST, move point to `skk-okuri-nasi-min' in all buffers for completion. Use `skk-loop-for-buffers'. (skk-comp-do-1-in-buf): Abolish function. (skk-comp-search-current-buffer): New function. * skk-macs.el: Require `skk-vars' at load time as well as at compile time. * skk-vars.el (skk-dic-comp-first): Abolish optional argument. * skk.el (after-init-hook): Avoid warning for `init-file-user'. 2002-01-22 Tetsuo Tsukamoto * SKK-MK: Always call `set-language-environment'. (SKK-MK-generate-autoloads-el): No longer check if `autoload' is valid. * skk.el (skk-mode-invoke): Call `skk-adjust-user-option' just after `skk-cus-setup'. (skk-adjust-user-option): If `skk-jisyo-save-count' is nil, set `skk-share-private-jisyo' nil. 2002-01-20 Tetsuo Tsukamoto * patch/e19/custom-1.9962.patch: No longer in the repository. * SKK-MK (SKK-MK-texinfo-coding-system): Always 'iso-2022-jp'. * doc/skk.texi: Update for Daredevil SKK 12. 2002-01-19 Tetsuo Tsukamoto * skk-cursor.el: * skk-isearch.el: * skk.el: Use #' for functions. * skk-vars.el (skk-background-mode): Use a little more simple conditions. * skk-macs.el (ignore-errors): (skk-defadvice): (skk-save-point): (skk-deflocalvar): (skk-with-point-move): (skk-face-on): (skk-cannot-be-undone): (skk-loop-for-buffers): Use common backquote style. * skk-jisyo-edit-mode.el (auto-mode-alist): Use `unless'. 2002-01-18 Tetsuo Tsukamoto No longer support Emacs 20.2 or earlier. * skk-version.el (skk-version): Bump to 12.1.0. * SKK-CFG: Remove examples for old Emacsen. * SKK-MK (SKK-MK-texinfo-Coding-system): (SKK-MODULES): (SKK-MK-install-elc): (SKK-MK-generate-autoloads-el): (SKK-MK-skk-dic): No longer support Mule 2. * skk-auto.el (skk-okuri-search-1): (skk-okuri-search-subr-original): Use 1 instead of `skk-kanji-len'. * skk-develop.el: No longer support hilit19. * skk-isearch.el (skk-isearch-conversion-start): (skk-isearch-wrapper): No longer refer to `skk-kanji-len'. * skk-jisx0201.el (skk-jisx0201-hankaku): (skk-jisx0201-zenkaku-region): No longer support Mule 2. * skk-kcode.el (skk-make-char): (skk-display-code): No longer support Mule 2. * skk-look.el (skk-look): Use `aref' instead of `skk-str-ref'. * skk-lookup.el (skk-lookup-process-okurigana): Use 1 instead of `skk-kanji-len'. * skk-macs.el (skk-str-length): (skk-substring): (skk-str-ref): Abolish functions. (skk-ascii-char-p): (skk-jisx0208-p): (skk-charsetp): (skk-local-variable-p): No longer support Mule 2. (skk-lisp-prog-p): Use `length' and `aref' instead of `skk-str-length' and `skk-str-ref'. * skk-setup.el.in: No longer support Mule 2, Emacs 20.2 and XEmacs 20.4. * skk-vars.el: (skk-emacs-type): (skk-kcode-charset): (skk-coding-system-alist): (skk-kcode-charset-list): Do not consider Mule 2 and MULE 3. (skk-kanji-len): (skk-hankaku-alist): Abolish variables. * skk-xemacs.el: No longer support XEmacs 20.4. * skk.el (skk-kill-emacs-without-saving-jisyo): (skk-jisx0208-to-ascii): Do not consider Mule 2. (skk-change-marker): (skk-change-marker-to-white): (skk-delete-henkan-markers): (keyboard-quit): (abort-recursive-edit): Do not refer to `skk-kanji-len'. (skk-compute-henkan-lists): (skk-remove-common): Use `aref' instead of `skk-str-ref'. (skk-remove-redundant-okurgana): (skk-search-sagyo-henkaku): (skk-remove-common): Use `length' instead of `skk-str-length'. * tinyinstall.el: No longer consider Mule 2. 2002-01-18 Tsuyoshi AKIHO * SKK-MK (SKK_MODULES): Add `skk-azik'. * READMEs/Contributors: Following person is added. ONODA Arata * READMEs/NEWS: Add AZIK's URL. 2002-01-17 Tetsuo Tsukamoto * leim-list.el.in: Do nothing when `noninteractive' is non-nil. * skk-e21.el (skk-icon): Don't bind `load-path'. * skk-cus.el (skk-cus-info): Use `if' instead of `and'. 2002-01-15 Tetsuo Tsukamoto * READMEs/Contributors: Following person is added. KIHARA Hideto * ccc.el (update-buffer-local-frame-params): Abolish optional argument FORCE-CURRENT-BUFFER. New optional argument BUFFER. (minibuffer-exit-hook): Don't bother setting buffer. * skk-tut.el (skktut-init-variables-alist): Set `skk-update-jisyo-function' to be `skktut-update-jisyo'. (skktut-update-jisyo): New function. It is intended not to autosave the dictionary for the tutorial. 2002-01-14 Tetsuo Tsukamoto * ccc.el (update-buffer-local-frame-params): New optional argument FORCE-CURRENT-BUFFER. (minibuffer-exit-hook): Force to refer to the values in the specified buffer. 2002-01-13 Eiji Obata * experimental/skk-azik.el: Require `skk-macs' and `skk-vars' and `alist'. Fix and re-indent. * experimental/skk-dinsert.el: Require `skk-macs' and `skk-vars'. 2002-01-13 ONODA Arata * experimental/skk-azik.el: Reset `skk-rom-kana-rule-list'. 2002-01-12 Eiji Obata * experimental/skk-dinsert.el Comments update. (skk-dinsert-mode): Doc update. (skk-dinsert): Deactivate when `skk-henkan-mode' is non-nil and cursor is at `skk-henkan-start-point'. 2002-01-12 NAKAJIMA Mikio * skk.el (skk-reread-private-jisyo): Modify prompt string. 2002-01-11 Tetsuo Tsukamoto * skk-e21.el (skk-icon): Set variable. * skk-xemacs.el (skk-icon): Set variable. (skk-setup-modeilne): Don't advise here. * skk-vars.el (skk-icon): Declare variable here. * skk.el (skk-setup-modeline): Add `skk-icon' if non-nil. 2002-01-11 Eiji Obata * skk.el (skk-save-jisyo-original): Always reset `skk-update-jisyo-count'. * experimental/skk-dinsert.el (skk-dinsert): Deactivate while isearch. (skk-dinsert-rule-list): Doc fixed. 2002-01-11 Tetsuo Tsukamoto * skk.el (skk-restart): Reset `skk-rom-kana-rule-list' and `skk-rule-tree'. (skk-preload): Call `skk-mode' in temporary buffer. (skk-adjust-user-option): Set `skk-use-color-cursor' nil when `skk-color-display-p' returns nil. 2002-01-10 Eiji Obata * experimental/skk-dinsert.el : New file. 2002-01-10 Tsuyoshi AKIHO * experimental/skk-azik.el : New file. 2002-01-09 Tetsuo Tsukamoto * ccc.el (update-buffer-local-frame-params): Set buffer to be the window buffer. * skk-cus.el (skk-custom-file) (skk-custom-alist): Autoload. (skk-cus-params-misc): Add `skk-preload'. * skk-vars.el (skk-preload): New variale. * skk.el (skk-preload): New function. This function is called on `after-init-hook' if variable `skk-preload' is non-nil. 2002-01-07 Tetsuo Tsukamoto * skk-xemacs.el Don't require skk-setup when XEmacs is started noninteractively. 2002-01-06 Tetsuo Tsukamoto * skk.el (skk-compile-rule-list): Don't add rule when key is not a string. 2002-01-03 Tetsuo Tsukamoto * etc/skk.xpm: New file. * SKK-MK (SKK_TUTORIALS): Add skk.xpm. * skk-xemacs.el (skk-icon): New variable. (skk-setup-modeline): Advise to display the icon. 2002-01-02 Tetsuo Tsukamoto * ccc.el (ccc-read-color): Typo. * skk-isearch.el (skk-isearch-really-early-advice): Don't quote. 2002-01-01 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el-package): Don't add (require 'skk-setup) here. * skk-setup.el.in: Don't require skk-autoloads under XEmacs. * skk-xemacs.el: Add (require 'skk-setup) here. Don't need to check `skk-emacs-type'. 2001-12-23 Tetsuo Tsukamoto * ccc.el (update-buffer-local-cursor-color) (update-buffer-local-foreground-color) (update-buffer-local-background-color): Simplify. (ccc-read-color): Return nil if `read-string' returns null string. 2001-12-22 NAKAJIMA Mikio * etc/dot.skk (skk-hyphen): Remove interactive spec. * etc/dot.emacs: Move the example of skk-hyphen to etc/dot.skk. * READMEs/Contributors (Contributors): Add ISHIKAWA Naoya. * etc/dot.emacs: Add an example of skk-hyphen (suggested by ISHIKAWA Naoya ). 2001-12-16 Tetsuo Tsukamoto * skk-version.el (skk-version): Bump to 11.7.0. * SKK-MK (SKK-MK-server-installed-p): Use `skk-server-live-p'. 2001-12-16 Tsuyoshi AKIHO * Daredevil SKK 11.6.0 released. * Makefile (version): Change to 11.6.0. * READMEs/NEWS : Update. * doc/skk.texi (SKK$B$NNr;K(B): Update. 2001-12-16 Tetsuo Tsukamoto * *: Mega typo fix. * SKK-MK (SKK-MK-compile-package): Load auto-autoloads.el. * skk-dcomp.el (skk-dcomp-after-delete-backward-char): Don't complete in `skk-abbrev-mode'. * skk-server.el (skk-open-server-1): Refer to `skk-server-inhibit-startup-server' earlier. * skk-tut.el (skktut-init-variables-alist): Set `skk-kcode-charset' japanese-jisx0208 when feature `jisx0213' is found. 2001-12-15 Tetsuo Tsukamoto * SKK-MK (SKK_MOULES): For Emacsen without face support. Don't install ccc and skk-cursor. 2001-12-15 Tsuyoshi AKIHO * skk.texi (SKK-VERSION): Updated to 11.6.0. Add ($BAw$j2>L>$NM%@hE*$J%^%C%A(B). 2001-12-10 Tsuyoshi AKIHO * skk-vars.el Check if function `face-background' exists. 2001-12-09 Tetsuo Tsukamoto * skk-vars.el Check if variable `frame-background-mode' exists. * skk.el (skk-define-j-mode-map) (skk-define-jisx0208-mode-map): Use `lookup-key' instead of `skk-key-binding-member'. (skk-setup-keymap): Don't define keys many times. 2001-12-06 NAKAJIMA Mikio * skk.el (skk-make-plist): New function. (skk-make-plist-alist): Ditto. * skk-macs.el (skk-get): New inline function. (skk-put): Ditto. * skk.el (skk-after-point-move): Declare with `defun' instead of `defsubst'. (skk-pre-command): Ditto. 2001-12-05 Tetsuo Tsukamoto * skk-cursor.el (skk-cursor-off-1): New function. * skk-macs.el (skk-cursor-off): New function. (skk-mode-off): Call `skk-cursor-off'. 2001-12-05 NAKAJIMA Mikio * doc/skk.texi (FTP$B$rMxMQ$7$FF~ * skk.el Call `skk-define-abbrev-mode-map' before `skk-define-j-mode-map'. 2001-12-03 NAKAJIMA Mikio * skk-viper.el (skk-viper-advice-select): Put lisp-indent-function property `defun' to it. * READMEs/NEWS: Typo fixed. 2001-12-02 Tetsuo Tsukamoto * skk-version.el (skk-version): Bump to 11.6.0. * ccc.el (buffer-local-cursor-color-default) (buffer-local-foreground-color-default) (buffer-local-background-color-default): Abolish functions and variables. (frame-cursor-color) (frame-foreground-color) (frame-background-color): New variables. (buffer-local-cursor-color) (buffer-local-foreground-color) (buffer-local-background-color): Default values are nil. (ccc-read-color) (ccc-color-equal) (get-apparent-cursor-color) (get-apparent-foreground-color) (get-apparent-background-color) (set-cursor-color-buffer-local) (set-foreground-color-buffer-local) (set-background-color-buffer-local): New functions. (modify-frame-parameters): New advice. * skk-cursor.el (skk-cursor-default-color): New function. * skk-macs.el (skk-mode-off): For FSF Emacs. Call `set-cursor-color-buffer-local'. (ignore-errors) (dolist) (dotimes): Put property `defmacro-maybe'. 2001-12-02 Tsuyoshi AKIHO * Daredevil SKK 11.5.2 released. * Makefile (version): Change to 11.5.2. * doc/skk.texi (SKK$B$NNr;K(B): Update. (SKK 9 $B$+$i$NJQ99E@(B): Update. 2001-12-02 Eiji Obata * doc/skk.texi (XEmacs & Emacs 21 $B$N%b!<%I%i%$%s(B): Doc fixed. 2001-12-02 Tsuyoshi AKIHO * skk-annotation.el(skk-annotation-show): Fixed. * doc/skk.texi: Add $B<-=q$N%"%N%F!<%7%g%s(B($BCp * doc/skk.texi ($B"&%b!<%I$K$*$1$k<+F0%@%$%J%_%C%/%3%s%W%j!<%7%g%s(B): Update. ($B%5!<%P4XO"(B): Add description about `skk-server-inhibit-startup-server'. 2001-12-01 Tetsuo Tsukamoto * skk-dcomp.el (skk-set-henkan-point-subr): Pass one argument to `char-after'. 2001-11-29 Tetsuo Tsukamoto * skk.el (skk-setup-keymap): Don't define key for `skk-toggle-jisx0201'. 2001-11-27 Tetsuo Tsukamoto * skk-server.el (skk-server-live-p): New function. * skk.el (skk-mode): For Emacs 21. Don't call `make-local-hook'. 2001-11-27 NAKAJIMA Mikio * skk-viper.el (viper-forward-word-kernel@around@skk-ad, vip-forward-word-kernel@around@skk-ad): Use `ad-get-arg' instead of referring to temporary variable VAL. (viper-backward-word-kernel@around@skk-ad, vip-backward-word-kernel@around@skk-ad): Ditto. 2001-11-25 Tsuyoshi AKIHO * doc/skk.texi (APEL $B$N%$%s%9%H!<%k(B): Doc fixed. ($B:G$b4pK\E*$J@_Dj(B): Add doc about sample(etc/dot.emacs,etc/dot.skk) files. ($BAw$j2>L>$,M-$k>l9g$N<-=qEPO?(B): Add doc about skk-check-okurigana-on-touroku. ($B%U%!%$%k9=@.(B): Update doc. ($B%f!<%6!<%*%W%7%g%s$N@_DjJ}K!(B): Coment out skk-viper-load-hook. (skk-rom-kana-rule-list$B$NMxMQNc(B): Sample code fixed. ($B%+%?%+%J$N8+=P$78l(B): Update doc. ($B<-=qEPO?$N:]$KCm0U$9$Y$-$3$H(B): Update doc. ($B%W%m%0%i%` * skk-kakasi.el (skk-gyakubiki-katakana-region): Bug fixed. * skk-vars.el (skk-server-inhibit-startup-server): Set default variable to t. * skk-server.el (skk-open-server-1): Refer to `skk-server-inhibit-startup-server'. * skk-vars.el (skk-server-inhibit-startup-server): New user variable. 2001-11-25 Tetsuo Tsukamoto * skk-server.el (skk-server-version) (skk-search-server-1) (skk-disconnect-server): Refer to `skkserv-process'. (skk-open-server) (skk-open-server-1) (skk-open-network-stream) (skk-startup-server): Return a process object. (skk-open-server): Don't open a new process when `skkserv-process' is open. * skk.el (skk-mode): For XEmacs only. Call `easy-menu-add' here. 2001-11-25 NAKAJIMA Mikio * skk-vars.el (skk-dcomp-activate): Set default value to nil. 2001-11-25 Tetsuo Tsukamoto * skk.el (skk-abbrev-mode): Bind `skk-dcomp-activate' nil. 2001-11-25 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-get-candidates-from-goo-daijirin): Filter out "$B!T(B" and "$B!U(B " from a candidate. Check if a candidate is redundant or not. Update comments. * skk-dcomp.el: Update comments. * skk.el (skk-require-module): Require skk-dcomp when `skk-dcomp-activate' is non-nil. 2001-11-24 NAKAJIMA Mikio * skk-server.el (skk-open-network-stream): Check if process status of "skkservd" is equal to `skk-network-open-status'. (skk-open-server): Omit process status. Do not use temporary variable PROC. (skk-open-server-1): Check if `skk-server-prog' is dbskkd-cdb or not before calling `skk-startup-server'. (skk-open-server-1): Update comment. (skk-open-server): Bug fixed. * experimental/skk-w3m.el: Update comments. (skk-w3m-search-by-emcas-w3m): Call `erase-buffer' after cutting off a candidate. * skk-vars.el (skk-menu-items): Replace skk-use-kakasi with t in "Ascii", "Hiragana", "Katakana", "Zenkaku" menu (submenu of "Convert Region and Replace"). * experimental/skk-w3m.el (skk-w3m-w3m-w3m-retrieve-has-new-argument-spec): New constant. (skk-w3m-w3m-retrieve): New function. (skk-w3m-search-by-emcas-w3m): Use `skk-w3m-w3m-retrieve'. (skk-w3m-with-work-buffer): New macro. (skk-w3m-search-by-backend): Use `skk-w3m-with-work-buffer'. (skk-w3m-search-by-emcas-w3m): Ditto. Do not bind `w3m-work-buffer-name' temporarily. (skk-w3m-get-candidates-from-goo-daijirin): Modify regexp. 2001-11-24 Tetsuo Tsukamoto * etc/dot.emacs: New file. * skk-dcomp.el (skk-set-henkan-point-subr): Don't call `skk-dcomp-do-completion' when `char-after' returns non-nil. * skk.el (skk-kakutei): Don't call `skk-j-mode-on' in `skk-jisx0201-mode'. 2001-11-24 NAKAJIMA Mikio * Makefile (TAGS): New target. * SKK-MK (SKK_MODULES): Add skk-w3m even if there is `w3m-search' in load-path. * skk-auto.el (skk-adjust-search-prog-list-for-auto-okuri): Check if MARK is non-nil. * skk.el (skk-set-henkan-point-subr): Slightly arrange doc string. (skk-toggle-characters): Convert region when CHAR is jisx0208-latin or ascii, too. 2001-11-23 Tetsuo Tsukamoto * etc/dot.skk: New file. * skk.el (skk-setup-keymap): Use conditions a little better. (skk-toggle-characters): Call `skk-j-mode-on' in `skk-j-mode'. (skk-kakutei): Don't call `skk-j-mode-on' in `skk-j-mode'. 2001-11-21 Tetsuo Tsukamoto * skk-jisyo-edit-mode.el: Use `if' instead of `unless'. * skk.el (skk-search-sagyo-henkaku): Bind `skk-okuri-char' nil. 2001-11-19 Tetsuo Tsukamoto * *: Comments fix. * skk.el (skk-get-jisyo-buffer): Bind `enable-character-translation' non-nil if main Japanese characters do not belong to JIS X 0208 Japanese Kanji. (skk-define-j-mode-map): Always define keys for `skk-jisx0201'. * doc/skk.texi: Remove a duplicate URL. 2001-11-19 Tsuyoshi AKIHO * skk-tut.el (skktut-end-tutorial) : Update for ml program change to ezmlm. * skk-vars.el (skk-ml-command-address) : Update for ml program change to ezmlm. * READMEs/NEWS : Add support for GNU Emacs 21. Add that archive include S dictoionary. * READMEs/README.win : Update site of tar.exe. * doc/skk.texi (EDITION): Updated to 1.7. (SKK-VERSION) : Updated to 11.5.2. ($B$O$8$a$K(B) : Add support for GNU Emacs 21. ($B<-=q$NF~ * SKK-MK: Require `pcustom'. (SKK_MODULES): Check the feature `tinycustom' by `featurep' instead of `module-installed-p'. 2001-11-17 Tetsuo Tsukamoto * *.el: Add keywords. 2001-11-16 Tetsuo Tsukamoto * *.el: Comments and strings update, and coding style fix. * skk-cus.el (skk-cus-set): New function. (skk-customize-done): Push all options into `skk-custom-alist'. 2001-11-15 Tetsuo Tsukamoto * SKK-MK (SKK-MK-skk-dic): Check if skk-dic.el is newer than skk-dic.el.in. 2001-11-14 Tetsuo Tsukamoto * skk-macs.el * skk-num.el: Add autoloads. * skk.el: Require `skk-autoloads' at the top level. (skk-search-sagyo-henkaku): New optional argument `anything'. 2001-11-13 Tetsuo Tsukamoto * skk-cus.el: New file. * SKK-MK (SKK_MODULES): Add `skk-cus'. * skk-e21.el (skk-e21-modeline-menu-items): Call `skk-customize' instead of `skk-e21-customize'. * skk-xemacs.el (skk-xemacs-modeline-menu-items): Call `skk-customize' instead of `skk-xemacs-customize'. * skk-jisx0201.el: Don't set `minor-mode-map-alist' here. * skk-macs.el (skk-j-mode-on) (skk-latin-mode-on) (skk-jisx0208-latin-mode-on) (skk-abbrev-mode-on): Call `skk-setup-keymap'. * skk.el (skk-define-j-mode-map) (skk-define-latin-mode-map) (skk-define-jisx0208-latin-mode-map) (skk-define-abbrev-mode-map): New functions. (skk-henkan): Use the candidate unmodified when `skk-numeric-p'. (skk-mode-invoke): Call `skk-cus-setup'. * skk-isearch.el (skk-isearch-initialize-working-buffer): Set `skk-dcomp-activate' nil. * skk-obsolete.el Define aliases to obsolete functions here. * skk-kcode.el: Typo. 2001-11-11 Tetsuo Tsukamoto * skk.el (skk-henkan-show-candidate-subr): When the current window is a minibuffer window, select anonther window before `delete-other-windows'. 2001-11-11 Eiji Obata * doc/skk.texi ($B5/F0$H=*N;(B): Doc fixed. 2001-11-11 Tetsuo Tsukamoto * READMEs/Contributors * doc/skk.texi: Following persons are added (a-b order). Eiji Obata Yukihiro Nakai * skk-vars.el (skk-indicator-use-cursor-color): New variable. * skk-e21.el (skk-e21-prepare-modeline-properties): Refer to `skk-indicator-use-cursor-color'. * skk-xemacs.el (skk-xemacs-prepare-modeline-properties): Refer to `skk-indicator-use-cursor-color'. 2001-11-10 Tetsuo Tsukamoto * skk-version.el (skk-version): Bump to 11.5.2. 2001-11-05 Tetsuo Tsukamoto * SKK-MK (SKK_INFODIR): Refer to `Info-default-directory-list' instead of `Info-directory-list'. Consider FHS. * skk-vars.el (skk-units-alist): Typo. From someone at 2ch. * tinyinstall.el (when) (unless): New macros. * install-info.el (install-info-1): Missing `set-buffer' when the section is `Miscellaneous'. 2001-11-04 Tetsuo Tsukamoto * skk-vars.el (skk-isearch-switch): Autoload. 2001-11-03 Tetsuo Tsukamoto * skk.el (skk-process-prefix-or-suffix): Bind `skk-kakutei-history' nil. * skk-macs.el: No need to declare `skk-emacs-type' here. * skk-vars.el (skk-emacs-type): No need to check if `mule-version' is bound for FSF Emacsen. 2001-11-02 Tetsuo Tsukamoto * skk.el (skk-try-completion): Use `skk-comp' instead of `skk-comp-do'. 2001-11-01 Tetsuo Tsukamoto * skk-jisx0201.el (skk-hiragana-to-jisx0201-region) (skk-katakana-to-jisx0201-region): Abolish the optional argument `vcontract'. Modify the regexp. (skk-jisx0201-roman-rule-list): Remove the rule for space. (skk-set-okurigana): Modify for okuri with dakuten. * SKK-MK: Check the versions of Emacs and APEL here. * skk.el (skk-search-katakana): Accept an optional argument `jisx0201-katakana'. 2001-10-31 Tetsuo Tsukamoto * ccc.el: Modification concerning specificity. * skk-vars.el (skk-henkan-on) (skk-henkan-active): Abolish. (skk-henkan-mode): New variable. (skk-isearch-overriding-local-map): Simplify. * experimental/skk-hint.el * skk-comp.el * skk-cursor.el * skk-dcomp.el * skk-isearch.el * skk-jisx0201.el * skk-kcode.el * skk-viper.el * skk-xemacs.el * skk.el * vip.el: Refer to `skk-henkan-mode'. * skk.el (skk-create-file): The first arg for `message' here should be "%s". 2001-10-29 Tetsuo Tsukamoto * SKK-MK * skk.el: More readable. * skk-dcomp.el (skk-dcomp-after-delete-backward-char): Call `skk-dcomp-do-comletion' even when `skk-marked-p' returns nil. (skk-set-henkan-point-subr): Advise to call `skk-dcomp-do-completion'. 2001-10-24 Tetsuo Tsukamoto * skk.el (skk-set-henkan-point): A little more readable. 2001-10-23 Tetsuo Tsukamoto * skk-vars.el (skk-viper-saved-cursor-color): Make sure `viper-insert-state-cursor-color' is bound. (skk-menu-items): Call `skk-latin-region' instead of `skk-ascii-region'. * skk.el (skk-latin-region): Search char category j instead of category A or S. * skk-e21.el * skk-xemacs.el * skk.el: More specific. 2001-10-21 Tetsuo Tsukamoto * skk-annotation.el * skk-develop.el * skk-lookup.el * skk-obsolete.el * skk-viper.el: Modification concerning specificity. * skk-macs.el (skk-loop-for-buffers): Use `save-current-buffer' instead of `with-current-buffer'. * skk-look.el (skk-search-prog-list): Don't call `skk-splice-in' when MARK is nil. * skk-vars.el: Doc strings update. 2001-10-20 Tetsuo Tsukamoto * install-info.el (install-info-add-groups): Use `when' instead of `if'. * skk-look.el * skk-macs.el: More specific. * skk.el (skk-search-sagyo-henkaku): Accept an optional argument. Use `skk-substring', not `substring'. (skk-backward-and-set-henkan-point): Use `when' instead of `if'. * skk-jisx0201.el (skk-search-sagyo-henkaku): Set the argument. 2001-10-19 Tetsuo Tsukamoto * skk.el (skk-katakana-henkan) (skk-hiragana-henkan) (skk-jisx0208-latin-henkan) (skk-latin-henkan): Call `skk-*-henkan-2'. (skk-*-henkan-2): New function. (skk-search-sagyo-henkaku): Use `skk-nunion' instead of `nconc'. * skk-jisx0201.el (skk-jisx0201-region): Call `skk-*-henkan-2'. * skk-abbrev.el * skk-kakasi.el * skk-dcomp.el * skk-num.el: More specific. * skk-dcomp.el (skk-dcomp-delete-completion) (skk-dcomp-do-completion) (skk-dcomp-before-kakutei) (skk-dcomp-after-kakutei): New functions. 2001-10-18 Tetsuo Tsukamoto * skk-comp.el (skk-comp-do): More specific. * skk.el (skk-setup-keymap): Check if `minibuffer-local-ns-map' is a keymap. 2001-10-16 Tetsuo Tsukamoto * READMES/Contributors * doc/skk.texi: Add the following person. SIMOYAMA Takasi * skk.el (skk-setup-delete-selection-mode): Bind functions. 2001-10-15 Tetsuo Tsukamoto * skk.el (skk-require-module): If the feature `skk-jisx0201' is present, set `skk-use-jisx0201-input-method' t. 2001-10-14 Tsuyoshi AKIHO * READMEs/README.Mac : Add note of byte compile. * Makefile : Modified argument of tar for old GNU tar 1.11.2. 2001-10-14 Tetsuo Tsukamoto * skk-macs.el (skk-quote-char-1): Don't use `format'. (skk-mode-string-to-indicator): For Emacs 21 -- don't call `propertize' if MODE is `default'. * skk.el (skk-quote-char) (skk-quote-semicolon): Use `format'. (skk-compose-ignore-word-sub-quote-char): Call `skk-quote-char-1'. (skk-make-indicator-alist) (skk-make-indicator-alist-1): Call `skk-mode-string-to-indicator'. 2001-10-13 Tetsuo Tsukamoto * skk-auto.el (skk-okuri-search) (skk-okuri-search-1): Rename the former to the latter. (skk-adjust-search-prog-list-for-auto-okuri): Never delete `skk-okuri-search' from `skk-search-prog-list'. * skk-server.el (skk-search-server): Move to skk.el (skk-adjust-search-prog-list-for-server-search): Never delete `skk-search-server' from `skk-search-prog-list'. * skk-vars.el (skk-search-prog-list): Add `skk-okuri-search' and `skk-search-server'. * skk.el (skk-search-server) (skk-okuri-search): New functions. (skk-search-sagyo-henkaku): Do not use `skk-search'. Bind `skk-auto-okuri-process' nil. * SKK-MK (SKK-MK-compile): Load skk-autoloads.el, not require. 2001-10-13 SIMOYAMA Takasi * skk-vars.el (skk-gyakubiki-jisyo-list): New variable. * skk-kakasi.el (skk-kakasi-region): Add reverse-dictionary argument to skk-kakasi-command. 2001-10-13 Tetsuo Tsukamoto * skk-isearch.el (isearch-message-prefix): Bind `current-input-method' nil when `skk-isearch-swtich' is on. * skk.el (skk-latin-mode) (skk-toggle-characters) (skk-jisx0208-latin-mode) (skk-set-henkan-point-subr) (skk-purge-from-jisyo) (skk-abbrev-mode): Return nil. (skk-define-menu-bar-map): Abolish. (skk-define-menu): New function. (skk-search-sagyo-henkaku): New funcion. * skk-vars.el (skk-menu-items): New variable. * skk-kcode.el: More specific. 2001-10-11 Tetsuo Tsukamoto * skk-macs.el * skk-tut.el * skk.el: Modification concerning specificity. * skk-cursor.el (skk-cursor-set-1): New function. (skk-cursor-set): Abolish. (skk-abbrev-mode) (skk-auto-fill-mode) (skk-jisx0208-latin-mode) (skk-kakutei) (skk-latin-mode) (skk-mode) (skk-toggle-kana): Don't advise. (skk-cursor-init-function): Abolish. * skk-macs.el (skk-cursor-set): New function. (skk-latin-mode-on) (skk-abbrev-mode-on) (skk-jisx0208-latin-mode-on): Call `skk-cursor-set'. * skk-jisx0201.el (skk-jisx0201-mode-on): Don't check the value of `skk-use-color-cursor'. * skk.el (skk-require-module): Don't require `skk-cursor'. 2001-10-10 Tetsuo Tsukamoto * SKK-MK * install-info.el * skk-e21.el * skk-gadget.el * skk-leim.el * skk-tut.el * skk-xemacs.el * skk.el: Modification concerning specificity. * skk-annotation.el (skk-annotation-show): Do nothing when `skk-kakutei-flag' is non-nil. * skk-dic.el.in (skk-dic-setup-buffer): Call `buffer-disable-undo' without an argument. * skk-gadget.el (skk-ignore-dic-word): If new-word contains a note, rip it off and return a cell of the word and the note. * skk.el (skk-insert-new-word): If word is a lisp program and it returns a cons cell, car of the return value is a word, while cdr is a note. (skk-compose-ignore-word-sub-quote-char): New function. (skk-compose-ignore-word): Quote characters in `skk-quote-char-alist'. 2001-10-09 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-as-message): Always use `message'. * install-info.el * skk-comp.el * skk-dic.el.in * skk-gadget.el * skk-isearch.el * skk-num.el * skk-xemacs.el * skk.el: Modification concerning specificity. * skk-gadget.el (skk-plus) (skk-minus) (skk-times): Use `skk-calc'. 2001-10-08 Tetsuo Tsukamoto * skk-gadget.el (skk-clock): More specific. * skk-isearch.el (isearch-message-prefix): Fix for hiding `current-input-method-title'. * skk-macs.el (ignore-errors): New macro. (skk-message) (skk-error): 1st argument for `message' or `error' should be a format string. * skk-num.el (skk-num-compute-henkan-key): Avoid duplicate processing. * skk-server.el (skk-server-version) (skk-search-server-subr) (skk-open-server) (skk-open-server-1) (skk-open-network-stream) (skk-startup-server) (skk-adjust-search-prog-list-for-server-search) (skk-disconnect-server): More specific. * skk.el (skk-jisx0208-latin-mode) (skk-misc-for-picture) (skk-kill-local-variables) (skk-kana-input): More specific. (skk-mode-invoke): No need to require `skk-kanagaki'. (skk-del-char-with-pad) (skk-cancel-undo-boundary) (skk-set-okurigana) (skk-toggle-kutouten) (skk-current-kuten) (skk-henkan-face-off) (skk-make-face) (abort-recursive-edit) (newline) (newline-and-indent) (exit-minibuffer) (undo) (kill-buffer) (commint-send-input): More specific. (skk-require-module): Don't require `skk-leim'. 2001-10-07 Tetsuo Tsukamoto * skk-cursor.el: Don't advise `skk-jisx0201-mode'. * skk-jisx0201.el (skk-toggle-jisx0201): Use one `cond'. * skk-look.el (skk-look-completion): Use `unless' instead of `or'. Use `pop' instead of `prog1'. * skk-macs.el (skk-erase-prefix) (skk-kana-cleanup): More specific. * skk.el (skk-henkan-show-candidates): Use `cdr-safe' instead of `consp' followed by `cdr'. (skk-insert-new-word): More specific. (skk-latin-mode-map) (skk-j-mode-map) (skk-jisx0208-latin-mode-map) (skk-abbrev-mode-map): Use `unless' instead of `or'. (skk-jisx0208-to-ascii): Use `if' instead of `and'. (skk-compute-henkan-lists): Thought this `catch' is useless. Call `skk-compute-henkan-lists-sub-adjust-okuri'. (skk-compute-henkan-lists-sub-adjust-okuri): New function. 2001-10-06 Tetsuo Tsukamoto * SKK-MK: Never remove skk-dic from `SKK_MODULES'. * skk-comp.el (skk-comp-by-history): Use `pop'. * skk-isearch.el (skk-isearch-current-mode): Use `case'. * skk.el (skk-after-point-move) (skk-pre-command): More specific. 2001-10-04 Tetsuo Tsukamoto * skk-jisx0201.el (newline) (newline-and-indent) (exit-minibuffer): Don't advise here. * skk.el (newline) (newline-and-indent) (exit-minibuffer): Advise in skk-jisx0201-mode as well as in skk-j-mode. 2001-10-03 Tetsuo Tsukamoto * skk-jisx0201.el (skk-hiragana-to-jisx0201-region) (skk-katakana-to-jisx0201-region): Don't consider JISX0201 Roman. Comments update. * skk-isearch.el: Comments update. 2001-10-02 Tetsuo Tsukamoto * skk-jisx0201.el: Don't define keys here. * skk.el (skk-require-module): If `skk-use-jisx0201-input-method' is non-nil, define keys instead of loading skk-jisx0201.el. 2001-09-30 Tetsuo Tsukamoto * install-info.el: Typo. * SKK-MK (SKK_MODULES): Do not add skk-xm20_4. (SKK-MK-skk-dic): Do not push skk-dic in SKK_MODULES. * skk-setup.el.in: On XEmacs 20.4, load skk-leim.el and skk-autoloads.el. * skk-xemacs.el: On XEmacs 20.4, load skk-leim.el and skk-autoloads.el. (skk-xemacs-prepare-modeline-properties): Do not set some face properties on XEmacs 20.4. * skk-xm20_4.el: No longer in the repository. * skk.el (skk-mode-invoke): Remove workaround for XEmacs 20.4. 2001-09-23 Tetsuo Tsukamoto * skk-viper.el (skk-cursor-current-color): Always set `ad-return-value'. (read-from-minibuffer): Add `skk-cursor-set' to `minibuffer-setup-hook'. * skk-vars.el (skk-viper-saved-cursor-color): Don't refer to `viper-insert-state-cursor-color' if viper is not required. 2001-09-23 NAKAJIMA Mikio * skk-viper.el: Check if `viper-insert-state-cursor-color' is bound using `if' instead of `static-if' (A user may replace Viper with its newer version after installing SKK). Check if `viper-insert-state-cursor-color' is bound instead of checking by `skk-color-display-p' for cursor support. (skk-cursor-current-color@around@skk-viper-cursor-ad): Check if `viper-current-state' and `vip-current-state' and are bound using `cond' instead of `static-cond'. (read-from-minibuffer@before@skk-viper-ad): Not advise if `skk-emacs-type' is `xemacs'. Change Murata-san's email address to `mrt@notwork.org'. (skk-viper-saved-cursor-color): Moved to skk-vars.el. (skk-color-display-p): Use `skk-cursor-set' instead of `set-buffer-local-cursor-color' for `vip-Append', `vip-Insert', `vip-insert', `vip-intercept-ESC-key', `vip-open-line', 'viper-Append', `viper-Insert' `viper-hide-replace-overlay', `viper-insert', `viper-intercept-ESC-key' and `viper-open-line'. (skk-viper-init-function): Set `viper-insert-state-cursor-color' value only when skk-viper.el is compiled on Emacs that has this variable. 2001-09-23 Tetsuo Tsukamoto * READMEs/Contributors * doc/skk.texi: Add the following person. TAKAHASHI Kaoru * SKK-MK (SKK-MK-skk-dic): Do nothing if skk-dic.el exists. * skk-jisyo-edit-mode.el (auto-mode-alist): Add association for private jisyo. * skk-xemacs.el (before-init-hook): Fill. * skk-cursor.el (skk-cursor-buffer-local-frame-params-ad-targets): Thought this variable is not needed. (isearch-mode-end-hook) (minibuffer-setup-hook): Don't call `lambda'. * skk-jisx0201.el (skk-jisx0201-mode-on) (skk-insert): Call `skk-cursor-set'. * skk-macs.el (skk-j-mode-on): Ditto. * skk-vars.el (skk-cursor-color-before-entering-minibuffer): This is obsolete. Abolish. 2001-09-22 Tetsuo Tsukamoto * READMEs/Contributors: Add the following person. Shigeru OKUMURA * doc/skk.texi: Sync with READMEs/Contributors. 2001-09-21 Tetsuo Tsukamoto * skk-vars.el: Do not consider MS-DOS. (skk-cursor-report-set-error, skk-cursor-change-width): These are not used. Abolish. * skk-tut.el (skktut-init-variables-alist): Do not set variables above. * skk-obsolete.el (skk-obsolete-variable-alist): Do not check them. 2001-09-20 Tetsuo Tsukamoto * etc/skk-dic.rb: Simplify. 2001-09-19 Tetsuo Tsukamoto * Makefile (rb-skk-dic): New target. (tar) (snapshot): Create skk-dic.el. * skk-jisyo-edit-mode.el (skk-jisyo-edit-font-lock-keywords): Regexp improvement. * etc/skk-dic.rb: New file. 2001-09-17 Tetsuo Tsukamoto * skk-macs.el: Put dotimes' value of lisp-indent-function. * skk-jisyo-edit-mode.el: New file. * SKK-MK: Setup Japanese environment on Emacs 20 or later. (SKK_MODULES): Add skk-jisyo-edit-mode. 2001-09-16 Tetsuo Tsukamoto * Makefile (clean): No, don't delete skk-dic.el. (skk-dic): First delete skk-dic.el * SKK-MK: Keep skk-dic.el. (SKK-MK-skk-dic): Check if JISYO is newer than skk-dic.el. Escape "\"". Escape "\\". 2001-09-16 Tetsuo Tsukamoto * skk-dic.el: No longer in the repository. * skk-dic.el.in: New file. * Makefile (clean): Delete skk-dic.el. * SKK-MK (SKK_DEFAULT_JISYO): New variable. (SKK-MK-skk-dic): Create skk-dic.el from SKK_DEFAULT_JISYO and skk-dic.el.in. 2001-09-15 Tetsuo Tsukamoto * skk-macs.el (dolist) (dotimes): New macros. From Emacs 21. (skk-put-last-henkan-datum) (skk-put-last-henkan-data): Use `push'. (skk-key-binding-member) (skk-loop-for-buffers): Use `dolist'. Workaround for the pseudo-`dolist' in egg.el. * skk-comp.el (skk-comp-do) (skk-comp-by-history): Use `dolist' and `push'. * skk-cursor.el (skk-cursor-set): New function. Advice, hooks and functions in this program will call it. * skk-isearch.el (skk-isearch-setup-keymap): Use `push'. * skk.el (skk-setup-emulation-commands): Use `dolist'. * install-info.el (install-info-1): Use `push' and `setcar'. Use `cond' instead of `if'. 2001-09-15 Tetsuo Tsukamoto * skk-comp.el: Re-indent and re-order cases. (skk-comp-do-1-in-buf): New function. (skk-comp-do-1): Call it. Refer to `skk-dic-comp-first'. (skk-comp-do): Add only new words. * skk-dic.el (skk-dic-setup-buffer): New function. (skk-search-small-dic): Call it. * skk-vars.el (skk-dic-comp-first): New variable. * skk-macs.el (skk-loop-for-buffers): Use `while'. Use `if'. 2001-09-14 Tetsuo Tsukamoto * skk-version.el (skk-version): Bump to 11.5.1. * READMEs/Contributors: Following persons are added (a-b order). Daiki Ueno EGUCHI Satoshi Martin Buchholz Norio Maeda Toru YANO Yoshiki Hayashi * Makefile (skk-dic): New target. * SKK-CFG: Modify examples for Windows. * SKK-MK (SKK-MK-skk-dic): New function. * skk-dic.el (skk-small-dic): Typo. (skk-search-small-dic): Call `buffer-size' with no argument. * skk-e21.el (skk-e21-modeline-property): Use `static-if'. (skk-e21-modeline-menu-items): nil under tty. * skk-macs.el (skk-loop-for-buffers): New macro. * skk-vars.el (skk-emacs-type): Use ordinary clauses. * skk.el: Re-indent. Make the 1st argment of `error' a format string. (skk-mode): The usage of term `entry' is not valid. Say `input'. (skk-update-jisyo-original) (skk-compute-henkan-lists) (skk-update-jisyo-1): The usage of term `entry' is not valid. Say `words'. (skk-public-jisyo-has-entry-p): Rename to ... (skk-public-jisyo-has-word-p): it. (skk-compose-ignore-entry): Rename to ... (skk-compose-ignore-word): it. (skk-setup-keymap): When `skk-kakutei-key' is a vector, bind it to `skk-kakutei'. (skk-mode-invoke): No need to check version number of XEmacs. 2001-09-13 Tetsuo Tsukamoto * SKK-MK: Re-indent. * skk.el (skk-search-jisyo-buf): New function. (skk-search-jisyo-file): Call it. (skk-select-words-from-list): New function. (skk-search-jisyo-file-1): Rename to ... (skk-search-jisyo): it. * skk-dic.el: New file. * skk-vars.el (skk-search-prog-list): Add `skk-search-small-dic'. 2001-09-12 Tetsuo Tsukamoto * etc/{NICOLA-SKK.tut, SKK.tut, SKK.tut.E}: Do not show `skk-today'. * skk-num.el (skk-num-get-kanji): Rename to ... (skk-num-get-suuji): it. (skk-num-jisx0208-latin, skk-num-type2-kanji, skk-num-shogi): Use it. (skk-num-int-p): New function. (skk-num-type2-kanji, skk-num-type3-kanji, skk-num-type5-kanji, skk-num-shogi): Use it. * skk-tut.el (skktut-init-variables-alist): Add `skk-kakutei-key' to `skk-rom-kana-base-rule-list'. (skktut-j-mode-map): Do not use `substitute-key-definition'. (skktut-setup-jisyo-buffer, skktut-end-tutorial): Do not use `concat'. * skk-vars.el (skk-check-okurigana-on-touroku, skk-rom-kana-base-rule-list, skk-rom-kana-rule-list, skk-rule-tree, skk-num-alist-type3, skk-num-alist-type5): Doc string update. (skk-quote-char-alist): New variable. * skk-macs.el (skk-quote-char-1): New function. * skk.el (skk-quote-char, skk-quote-semicolon): Call it. * skk-xemacs.el: Use #' for `function'. 2001-09-11 Tetsuo Tsukamoto * skk-dcomp.el (skk-dcomp-marked-p): New function. Each function should call it for checking if the word has been completed or not. (skk-kana-input, skk-kakutei, keyboard-quit, skk-comp): `ad-do-it' when skk-dcomp is not active. * skk-develop.el (lisp-font-lock-keywords-2): Highlight `skk-defadvice'. * skk-e21.el, skk-xemacs.el: Add `skk-submit-bug-report' to the popup menu. * skk-num.el (skk-num-type3-kanji-1, skk-num-type5-kanji): Abolish. (skk-num-to-kanji): New function. (skk-num-type3-kanji, skk-num-type5-kanji): Call it. (skk-num-get-kanji): New function. * skk-vars.el (skk-num-alist-type3): New variable. (skk-num-alist-type5): Add "$BNm(B". * READMEs/NEWS: Update. * etc/Emacs.ad: Add `skk-submit-bug-report'. * SKK-MK: Make Emacs 18 or older exit before loading tinyinstall.el. * skk.el (skk-check-size-and-do-save-jisyo): Call `princ' just once. (skk-make-temp-jisyo): If function `temp-directory' exists, call it. * tinyinstall.el: Remove codes for Emacs 18. 2001-09-10 NAKAJIMA Mikio * READMEs/CVS_digest (cvs $B$NF~ * *: Remove codes for Emacs 18. * skk-e18.el, skk-is-n.el: No longer in repository. * experimental/skk-dos.el: Ditto. * patch/e18: Ditto. * doc/skk.texi (SKK$B$NNr;K(B): New chapter. * skk.el (skk-kakutei): Always return nil. 2001-09-08 Tetsuo Tsukamoto * READMEs/NEWS: Update. * skk-dcomp.el (skk-dcomp-cleanup-buffer): Check if any completion should exist. 2001-09-07 Tetsuo Tsukamoto * skk-e18.el: Load skk-vars.el before skk-macs.el. * skk-jisx0201.el (skk-jisx0201-rule-list): Remove unnecessary rules. (skk-jisx0201-mode-on): Make local variable `skk-rule-tree'. (skk-kanagaki-toggle-katakana): Kill local variable `skk-rule-tree'. Toggle hankaku kana <-> hiragana. (skk-mode, skk-latin-mode, skk-jisx0208-latin-mode, skk-abbrev-mode): Kill local variable `skk-rule-tree'. Now these are before-advised. (skk-insert): Make sure kana prefix be clean. (skk-jisx0201-zenkaku-region): New function. * skk-macs.el (skk-mode-off, skk-j-mode-on, skk-latin-mode, skk-jisx0208-latin-mode, skk-abbrev-mode): Set `skk-jisx0201-mode' nil. 2001-09-06 Tetsuo Tsukamoto * skk-macs.el (skk-j-mode-on): Set cursor color both on FSF Emacs and XEmacs. * skk-e21.el (skk-e21-modeline-menu-items): Don't set cursor color. * skk-xemacs.el (skk-xemacs-modeline-menu-items): Ditto. * skk-jisx0201.el: Don't set the global value of a variable at local eval. (skk-jisx0201-insert, skk-jisx0201-kana-input, skk-jisx0201-set-henkan-point, skk-jisx0201-set-henkan-point-subr): Abolish. (skk-jisx0201-mode-map): Use `skk-j-mode-map' instead. (skk-jisx0201-orig-rule-tree): New variable. (skk-set-okurigana, skk-insert): Advise to do OKURI-ARI conversion. * skk-vars.el (skk-jisx0201-rule-tree, skk-jisx0201-current-rule-tree, jisx0201-mode-map): Abolish. (skk-jisx0201-orig-rule-tree): New variable. * skk.el (skk-emulate-original-map): Do emulation also in skk-jisx0201-mode. 2001-09-05 Tetsuo Tsukamoto * skk-isearch.el (isearch-repeat): Don't show `skk-isearch-whitespace-regexp' in regexp i-search. * skk.el (skk-j-mode-map): Don't use `substitute-key-definition'. Just get what are needed. (skk-henkan-in-minibuff): Bind `minibuffer-max-depth' to nil. 2001-09-04 Tetsuo Tsukamoto * skk-num.el (skk-num-type3-kanji-1, skk-num-type5-kanji-1): Return "" for "0". 2001-09-03 NAKAJIMA Mikio * skk-lookup.el: Require lookup after loading lookup.el and only when `lookup-use-bitmap' is non-nil. 2001-09-01 Tetsuo Tsukamoto * skk.el (skk-define-menu-bar-map): Fix menu commands. 2001-09-01 Tetsuo Tsukamoto * skk-e21.el (skk-e21-prepare-modeline-properties): Do nothing on tty. * skk-macs.el (skk-mode-string-to-indicator): Ditto. * skk.el (skk-make-indicator-alist-1): Ditto. 2001-09-01 YOSHIZAWA Masahiro * skk-e21.el (skk-e21-modeline-property): Fix for Emacs-21.0.105. 2001-09-01 Tetsuo Tsukamoto * etc/Emacs.ad: Add items for popup menu. * skk-e21.el: Popup menu improvements. (skk-e21-modeline-menu): Always use a new hash table so that key comparison should always fail. * skk-xemacs.el (skk-xemacs-find-func-keys): Show "C-j" if the key description is "LFD". 2001-08-31 Tetsuo Tsukamoto * *: Re-indent. * ChangeLog.1, ChangeLog.2, ChangeLog.2.daredevil: New files. * ChangeLog.daredevil: No longer here. * skk-dcomp.el (keyboard-quit@around@skk-dcomp-ad): Make sure `skk-dcomp-start-point' and `skk-dcomp-end-point' are markers. * skk-e21.el (skk-e21-property-alist): New variable. (skk-e21-prepare-modeline-properties): New function. * skk-macs.el (skk-mode-string-to-indicator): Refer to `skk-e21-property-alist'. * skk.el (skk-make-indicator-alist): Call `skk-e21-prepare-modeline-properties'. (skk-make-indicator-alist-1): Refer to `skk-e21-property-alist'. 2001-08-30 Tetsuo Tsukamoto * install-info.el (install-info-delete-entry): Regexp fix. * skk-macs.el (skk-j-mode-on): Call `set-buffer-local-cursor-color' under FSF Emacs. * skk-tut.el (skktut-setup-jisyo-buffer): Add "today" entry. * etc/NICOLA-SKK.tut: Modify for the latest version of NICOLA-DDSKK. 2001-08-27 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-buffer): Call `other-window' if no window for the minibuffer origin is found. 2001-08-26 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-show-1): Call `skk-annotation-show-buffer' in minibuffer. (skk-annotation-show-buffer): Switch to another window when the current window is the minibuffer window. Never signal quit. * skk-macs.el (skk-event-key, skk-key-binding-member): New functions. * skk.el (skk-henkan-show-candidates): Use them. 2001-08-25 Tetsuo Tsukamoto * SKK-MK (SKK-MK-collect-autoload-functions): Don't look at a newline. * skk.el (skk-henkan-show-candidates): Treat a key event for `skk-nicola-self-insert-rshift' as space. 2001-08-18 Tetsuo Tsukamoto * SKK-MK (SKK-MK-server-installed-p): Check for config files of xinetd. 2001-08-09 Tetsuo Tsukamoto * skk-macs.el (skk-quote-semicolon): Quote all problematic characters. 2001-07-31 NAKAJIMA Mikio * tut-code/skk-mkmgk.el (skk-make-mazegaki-dic-region): Add more doc string. (skk-mkmgk-filter): Bug fixed. (skk-mkmgk-binary-search): Ditto. 2001-07-30 NAKAJIMA Mikio * tut-code/skk-mkmgk.el (skk-make-mazegaki-dic): Bug fixed. (skk-make-mazegaki-dic-region): Erase OUTBUF before working. (skk-make-mazegaki-dic-1): Do not use `format'. Bug fixed. (skk-mkmgk-filter): Do not put out string that contains any katakana or hiragana. 2001-07-29 NAKAJIMA Mikio * tut-code/skk-mkmgk.el (skk-make-mazegaki-dic-1): Created new optional arg REFERENCE. (skk-make-mazegaki-dic): Use `unwind-protect' to secure kill working buffer. (skk-make-mazegaki-dic-region): Ditto. Not to pop up working buffer when no Mazegaki entries are there. Abolish optional arg NOMSG and created new optional arg REFERENCE. (skk-mkmgk-filter): New optional arg ONECHARACTER. Delete "" to avoid SKK-JISYO.L bug. (skk-mkmgk-binary-search): Use `skk-mkmgk-filter' with optional arg ONECHARACTER. 2001-07-28 NAKAJIMA Mikio * tut-code/skk-mkmgk.el: New file. (skk-mkmgk-filter): New function. (skk-make-mazegaki-dic-1): Use `skk-mkmgk-filter'. (skk-mkmgk-region-limit): New user variable. (skk-mkmgk-filter): Arrange conditions order. (skk-mkmgk-binary-search): New function. (skk-make-mazegaki-dic-1): Use `skk-mkmgk-binary-search' instead of renear search using `re-search-forward'. 2001-07-23 NAKAJIMA Mikio * READMEs/README.Mac: Updated. 2001-07-22 NAKAJIMA Mikio * doc/skk.texi (Q.5-2 abbrev $B%b!<%I$G$b$C$H1QC18l$rMxMQ$7$?JQ49$,(B $B$G$-$^$;$s$+(B?): Typo fixed. (Q.1-1 $B:G?7$N%P!<%8%g%s$O(B?): Sync up with skk/main/READMEs/FAQ.txt. (Q.1-3 SKK $B$O$I$N%P!<%8%g%s$N(B Emacs $B$G;H$($^$9$+(B?): Ditto. (Q.1-6 $B3+H/HG$O2?8N!"(BDaredevil $B$H8@$&$N$G$9$+(B?): Ditto. (Q.1-7 APEL $B$K0MB8$;$:$K(B SKK $B$@$1$G:Q$`$h$&$K3+H/$7$F$b$i$($^$;$s(B $B$+(B?): Ditto. (Q.1-6 $B3+H/HG$O2?8N!"(BDaredevil $B$H8@$&$N$G$9$+(B?): Change section name to `Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B?' and move to Q.1-2. (Q.1-4 SKK $B$O$I$N%P!<%8%g%s$N(B Emacs $B$G;H$($^$9$+(B?): Change section name to `Q.1-4 DDSKK $B$O$I$N%P!<%8%g%s$N(B Emacs $B$G;H$($^$9$+(B?'. (Q.1-5 SKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+(B?): Change section name to `Q.1-5 DDSKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H(B $B$($^$9$+(B?' and sync up with skk/main/READMEs/FAQ.txt. (Q.2-6 Emacs 20 $B$K(B SKK 9.6 $B$,%$%s%9%H!<%k$G$-$^$;$s!#(B): Sync up with skk/main/READMEs/FAQ.txt. * READMEs/FAQ.txt ([Q.] $B:G?7$N%P!<%8%g%s$O(B?): Updated. ([Q.] SKK $B$O$I$N%P!<%8%g%s$N(B Emacs $B$G;H$($^$9$+(B?): Ditto. ([Q.] $B:G?7HG$N(B SKK $B$O$I$3$+$iF~$,$D$$$F$$(B $B$k$N$G$9$+(B?): Ditto. ($B3+H/HG$N(B SKK $B$O2?8N!"(B`Daredevil SKK' $B$J$I$H8@$&L>$,$D$$$F$$$k$N$G$9$+(B?): Change section name to `Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B?'. ([Q.] SKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+(B?): Change section name to `[Q.] DDSKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$((B $B$^$9$+(B?' ([Q.] Emacs 20 $B$K(B SKK 9.6 $B$,%$%s%9%H!<%k$G$-$^$;$s!#(B): Change URL. ([Q.] SKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+(B?): Change section name to `[Q.] DDSKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$((B $B$^$9$+(B?' and update sentences. * READMEs/PROPOSAL (Emacs $B$N%P!<%8%g%s4V:90[$N5[<}$O(B?): Updated. * READMEs/INSTALL (APEL): Updated. * skk-vars.el (skk-use-face): Set t when emacs-major-version is more than 21. (skk-tut-use-face): Set value of `skk-use-face'. 2001-07-20 NAKAJIMA Mikio * READMEs/PROPOSAL ($BJ,3d$7$?%U%!%$%k$KI,?\$N5-=R(B): Updated. Change section name to `skk.el $B0J30$N%U%!%$%k$KI,?\$N5-=R(B'. (SKK 10 $B$,F0:n$9$k(B Emacs $B$N%P!<%8%g%s$O(B?): Change section name to `Daredevil skk 11 $B$,F0:n$9$k(B Emacs $B$N%P!<%8%g%s$O(B?'. (Emacs $B$N%P!<%8%g%s4V:90[$N5[<}$O(B?): Updated. * READMEs/README: Updated. * skk-vars.el (skk-rom-kana-base-rule-list): Add an element whose car is skk-kakutei-key. * tut-code/skk-tutcdef.el: Not to define key even if running Emacs is XEmacs. (skk-rom-kana-base-rule-list): Add an element whose car is "\C-@". * tut-code/skk-tutcode.el (skk-tutcode-use-touch16+): Add `;;;###autoload' cookie. * skk.el (skk-setup-keymap): Not to bind `skk-kakutei-key' for `skk-j-mode-map'. (skk-compile-rule-list): Bind key to `skk-insert' for `skk-j-mode-map' when the rule list key is not bound to the function. (skk-create-file): Set file modes by `set-file-modes' when new optional argument MODES is specified. (skk-save-jisyo-1): Renamed to `skk-do-save-jisyo-as'. (skk-init-shared-jisyo): New function. (skk-jisyo-is-shared-p, skk-update-shared-jisyo): Ditto. (skk-save-jisyo-original): Use `skk-init-shared-jisyo', `skk-jisyo-is-shared-p' and `skk-update-shared-jisyo'. (skk-compute-henkan-lists): Remove skk-kanagaki specific transactions. (skk-make-temp-jisyo): Use `static-if' instead of `if'. Use `user-login-name' for defining prefix (skk-make-temp-file): Merged it into `skk-make-temp-jisyo'. * tut-code/README.tut: New file. * READMEs/README.Mac: New file (its original file is written by Yuh Ohmura ). * READMEs/FAQ.txt ([Q.] SKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$((B $B$^$9$+(B?): Updated. ([Q.] APEL $B$K0MB8$;$:$K(B SKK $B$@$1$G:Q$`$h$&$K3+H/$7$F$b$i$($^$;$s$+(B?): Updated. 2001-07-10 NAKAJIMA Mikio * experimental/skk-hint.el: Require skk-macs and skk-vars instead of skk. (skk-hint-member, skk-hint-limit): Use `skk-str-length' instead of `length' and `skk-str-ref' instead of `aref' respectively. * skk-vars.el (skk-hint-start-char, skk-hint-henkan-hint) (skk-hint-start-point, skk-hint-end-point, skk-hint-okuri-char) (skk-hint-state, skk-hint-inhibit-kakutei): Move to experimental/skk-hint.el. 2001-07-06 NAKAJIMA Mikio * SKK-MK (SKK_MODULES): Add skk-hint. * skk-tut.el (skk-tutorial-quit, skktut-setup-answer-buffer) (skktut-setup-jisyo-buffer, skktut-setup-question-buffer): * skk-jisx0201.el (skk-jisx0201-string-conversion): Use `with-temp-buffer' instead of `save-excursion'. * skk.el (skk-setup-modeline): Use `with-current-buffer' instead of `save-excursion'. Do not use `save-current-buffer'. (skk-emulate-original-map): Use `with-current-buffer' instead of `save-excursion'. (skk-henkan-show-candidate-subr): Ditto. * experimental/skk-w3m.el (skk-w3m-search-by-emcas-w3m): Do not use `save-excursion'. * skk-lookup.el (skk-lookup-search): Ditto. 2001-07-05 Yoshiki Hayashi * experimental/skk-hint.el: New file. * skk-vars.el (skk-hint-start-char): New user variable. (skk-hint-henkan-hint): New internal variable. (skk-hint-start-point, skk-hint-end-point, skk-hint-okuri-char) (skk-hint-state, skk-hint-inhibit-kakutei): Ditto. 2001-07-02 NAKAJIMA Mikio * skk.el (skk-save-jisyo-original): Call `unlock-buffer' in JISYO-BUFFER. 2001-06-17 Takao KAWAMURA * experimental/skk-w3m.el (skk-w3m-get-candidates-from-quote-yahoo): Modified the regex for searching a candidate. 2001-06-16 NAKAJIMA Mikio * skk-gadget.el (skk-today): Call `skk-mode' if `skk-mode' is nil. (skk-current-date-1): New optional argument `SPECIFIED-TIME'. Remove space at the top of DATE. * skk-jisx0201.el (skk-hiragana-to-jisx0201-region) Shut byte-compiler up. (skk-katakana-to-jisx0201-region): Ditto. 2001-06-15 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-get-candidates-from-goo-daijirin): Fixed regexp. * skk-tut.el (skktut-adviced-alist): Add `(skk-create-file . around)' and `(skk-save-jisyo-original . around)' cells to the alist. (skk-create-file@around@skktut-ad): New dummy advice. (skk-save-jisyo-original@around@skktut-ad): Ditto. * skk.el (skk-mode): Remove skk-tut.el related code. (skk-save-jisyo-original): Ditto. (skk-make-new-jisyo): Ditto. (skk-define-menu-bar-map): Change ENABLE `(or (not (boundp 'skktut-problem-count)) (eq skktut-problem-count 0))' to `skk-use-kakasi'. 2001-06-05 NAKAJIMA Mikio * skk.el (skk-update-jisyo-original): Remove skk-tut.el related code. * skk-tut.el (skktut-init-variables-alist): Add cons cell `(skk-share-private-jisyo . nil)'. * experimental/skk-w3m.el (skk-w3m-last-process-point): Removed. (skk-w3m-get-candidates-from-goo-daijirin): Not to refer to `skk-w3m-last-process-point'. (skk-w3m-init-w3m-backend): Ditto. (skk-w3m-run-command): Ditto. (skk-w3m-search-by-backend): Not to check whether POS is markerp or not. (skk-w3m-search): Do not call `skk-w3m-cache' when NO-CACHE is non-nil. (skk-w3m-search-engine-alist): Set nil to 3th of "quote-yahoo" header list. 2001-06-04 NAKAJIMA Mikio * tut-code/skk-tutcode.el: Remove unnecessary spaces between parens. * tut-code/skk-tutcdef.el: Ditto. 2001-06-03 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-search-engine-alist): Add new entry "quote-yahoo". Optional new element 6th. Update doc. (skk-w3m-quote-yahoo-currency-symbol-alist): New user variable. (skk-w3m-currency-from, skk-w3m-currency-to): New internal variables. (skk-w3m-search-by-emcas-w3m, skk-w3m-search-by-backend): Funcall QUERY-STRING-FUNCTION when it is non-nil. (skk-w3m-get-candidates-from-quote-yahoo): New function. (skk-w3m-make-query-quote-yahoo, skk-w3m-query-quote-yahoo): Ditto. 2001-06-01 NAKAJIMA Mikio * skk-gadget.el (skk-gadget-units-conversion): New function. * skk-vars.el (skk-units-alist): New user variable. 2001-05-31 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-search-escape-query-string): Bug fixed. * skk-gadget.el (skk-current-date): Add doc string. (skk-current-date-1): Ditto. (skk-default-current-date): Ditto. * skk-num.el (skk-num-exp): Add ;;;###autoload cookie. * skk-gadget.el (skk-current-date): New optional argument PP-FUNCTION and FORMAT. (skk-clock): Use new `skk-current-date' (specifying new arg PP-FUNCTION and FORMAT). (skk-today): Ditto. Insert "today" midasi and convert it. (skk-current-date-1): New function. (skk-default-current-date): Ditto. * skk-vars.el (skk-month-alist): Declare with `defcustom' instead of `defconst'. (skk-day-of-week-alist): New user variable. (skk-default-current-date-function): Ditto. (skk-week-alist): Removed. (skk-current-date-function): Removed. (skk-GYMDWHMS-list): Removed. * skk-viper.el (sentence-end): Add "$B!%(B". * skk-auto.el: Remove unnecessary spaces between parens. 2001-05-30 NAKAJIMA Mikio * skk-gadget.el (skk-ad-to-gengo-1, skk-gengo-to-ad-1): New functions. (skk-gengo-to-ad): Use `skk-gengo-to-ad-1'. New optional argument HEAD. (skk-ad-to-gengo): Use `skk-ad-to-gengo-1'. (skk-gengo-to-ad-1): Modified error message slightly. * skk-num.el (skk-num): Check C is a number representing character or not. * skk-dcomp.el (skk-dcomp-after-delete-backward-char): Do markerp check for `skk-dcomp-start-point' and `skk-dcomp-end-point'. * skk-vars.el (skk-gengo-alist): New user variable. (skk-look-termination-character): Doc shortened and simplified. (skk-henkan-face-default): Doc modified. 2001-05-28 NAKAJIMA Mikio * skk-vars.el (skk-current-date-function): New user variable. (skk-GYMDWHMS-list): Add symbol to and remove const t from its type. * skk-gadget.el (skk-current-date): Funcall `skk-current-date-function'. * skk-num.el (skk-num): Ignore white spaces. 2001-05-26 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-run-command): Do not use catch and throw. * skk-vars.el (skk-GYMDWHMS-list): Add `*' to top of the document. 2001-05-25 NAKAJIMA Mikio * experimental/skk-w3m.el: Do not require w3m and w3m-search on top level. (skk-w3m-search-engine-alist): Set nil to 3th element of "goo-exceed-waei", "goo-exceed-eiwa" and "goo-daily-shingo" since skk-w3m-get-candidates-from-* function has not implemented yet. (skk-w3m-search): Search `skk-w3m-cache' first. Use `skk-w3m-search-by-backend', `skk-w3m-search-by-emcas-w3m' and `skk-w3m-cache'. (skk-w3m-use-w3m-backend): New user variable. (skk-w3m-command): Ditto. (skk-w3m-command-args): Ditto. (skk-w3m-backend-command-prompt): Ditto. (skk-w3m-default-process-coding-system): Ditto. (skk-w3m-kill-command): Ditto. (skk-w3m-no-wait): Ditto. (skk-w3m-process): New internal variable. (skk-w3m-last-process-point): Ditto. (skk-w3m-cache): Ditto. (skk-w3m-process-alive): New inline function. (skk-w3m-cache): New function. (skk-w3m-search-by-emcas-w3m): Ditto. (skk-w3m-search-by-backend): Ditto. (skk-w3m-set-process-coding-system): Ditto. (skk-w3m-init-w3m-backend): Ditto. (skk-w3m-kill): Ditto. (skk-w3m-run-command): Ditto. (skk-w3m-url-encode-string): Ditto. (skk-w3m-search-escape-query-string): Ditto. (skk-w3m-get-candidates-from-goo-daijirin): Modified in order to search w3m halfdump buffer. 2001-05-20 Tsuyoshi AKIHO * READMEs/Contributors: Update akiho's mail-address. * doc/skk.texi (SKK Ring Server Openlab $B%a!<%j%s%0%j%9%H(B): Update for ml program change to ezmlm. (SKK$B$N:n * skk-vars.el (skk-henkan-face-default): Use more simple definition. * skk-xemacs.el (before-init-hook): Use better key definition. 2001-05-19 Tetsuo Tsukamoto * skk-vars.el (skk-henkan-face): Default to skk-henkan-face-default. (skk-henkan-face-default): New face. 2001-05-18 YAMAUCHI Hitoshi * skk-vars.el (skk-GYMDWHMS-list): New user variable. * skk-gadget.el (skk-current-date): Use `skk-GYMDWHMS-list'. 2001-05-13 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-working-buffer): Removed. (skk-w3m-search): Use `w3m-w3m-retrieve' and `w3m-search-escape-query-string' instead of `w3m'. Do not use `save-window-excursion'. Set w3m-work-buffer-name to " *skk-w3m-work*" temporarily to work around. Refer to skk-w3m-search-engine-alist directly. Do not bind `w3m-display-inline-image' to nil. (skk-w3m-get-candidates-from-goo-daijirin): Renewed to work in skk-w3m working buffer. (skk-w3m-get-candidates-from-goo-exceed-eiwa): Change to dummy function temporarily. (skk-w3m-get-candidates-from-goo-exceed-eiwa-1): Removed. 2001-04-29 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-get-candidates): Removed. (skk-w3m-get-candidates-from-goo-daijirin): Do not use `skk-w3m-get-candidates'. Filter out "$B!R(B" and "$B!S(B". 2001-04-28 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-search): Bind `w3m-async-exec' to nil temporarily. (skk-w3m-working-buffer): New constant. (skk-w3m-search): Set to `skk-w3m-working-buffer' and call `w3m-mode'. 2001-04-21 Tetsuo Tsukamoto * skk.el (skk-kana-input): Call `skk-emulate-original-map' when `this-command' is `skk-insert'. 2001-04-17 NAKAJIMA Mikio * experimental/skk-w3m.el: Require w3m. (skk-w3m-get-candidates-from-goo-exceed-eiwa-1): New function. (skk-w3m-get-candidates-from-goo-exceed-eiwa): Use `skk-w3m-get-candidates-from-goo-exceed-eiwa-1'. Call `w3m-view-this-url' when regexp "[0-9]+ $B?75,$G3+$/(B" is found in a *w3m* buffer. 2001-04-14 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-search-engine-alist): Fix 4th of "goo-exceed-eiwa". (skk-w3m-filter-string): New function. (skk-w3m-get-candidates): Add optional argument split. Wrap around by save-match-data. (skk-w3m-get-candidates-from-goo-daijirin): Use optional argument split of `skk-w3m-get-candidates'. (skk-w3m-get-candidates-from-goo-exceed-eiwa): New function. Filter "([, a-z]+)" out to remove a string like a `(with, on, in)'. Bug fixed. (skk-w3m-working-buffer): Removed. (skk-w3m-search): Do not set to `skk-w3m-working-buffer'. (skk-w3m-get-candidates-from-goo-exceed-eiwa): Bug fixed. 2001-04-13 NAKAJIMA Mikio * experimental/skk-w3m.el (skk-w3m-search): Temporarily bind w3m-display-inline-image to nil. Do not do actual search when one of skk-num-list, skk-num-recompute-key or SEX is non-nil. Process HENKAN-KEY using a function of 5th element. (skk-w3m-search-engine-alist): Add doc string. Create new 4th and 5th element. (skk-w3m-get-candidates-from-goo-daijirin): Fix regexp. * skk-lookup.el (skk-lookup-search): Do not check if `skk-num-list' is bound or not (it is declared in skk-vars.el). 2001-04-12 NAKAJIMA Mikio * experimental/skk-w3m.el: New file. (skk-w3m-search): Wrap around by condition-case. * SKK-MK (SKK_MODULES): Add `skk-w3m'. 2001-04-10 NAKAJIMA Mikio * skk-lookup.el: Do not require bitmap when SKK-EMACS-TYPE is `mule5'. 2001-03-30 NAKAJIMA Mikio * doc/skk.texi ($B1QC18l$r$"$$$^$$$KJQ49$7$F * skk-kcode.el (skk-display-code): added SJIS encoding. 2001-03-28 NAKAJIMA Mikio * doc/skk.texi (SKK$B$N:n * skk-e21.el: Sync with skk-xemacs.el. (skk-e21-modeline-menu-items): Add new menu items - "Hiragana", "Katakana", "Hankaku alphabet" and "Zenkaku alphabet". (skk-e21-modeline-menu): Find keys for menu items above. (skk-e21-find-func-keys): New funcion. 2001-03-22 Masatake YAMATO * skk-xemacs.el (skk-xemacs-find-func-keys): Use sorted-key-descriptions instead of key-description. 2001-03-21 Masatake YAMATO * skk-xemacs.el (skk-xemacs-modeline-menu-items): Added :keys slot to "Hiragana" menu item vector. (skk-xemacs-modeline-menu): Change the value of :keys slot of skk-xemacs-modeline-menu-items according to the input mode. 2001-03-21 Tsuyoshi AKIHO * doc/skk.texi ($B%f!<%6!<%a!<%j%s%0%j%9%H(B): Removed. 2001-03-20 Tetsuo Tsukamoto * skk-xemacs.el (skk-xemacs-modeline-menu-items): Add new menu items - "Hiragana", "Katakana", "Hankaku alphabet" and "Zenkaku alphabet". (skk-xemacs-modeline-menu): Find keys for "Katakana". (skk-xemacs-find-func-keys); New function. From Masatake YAMATO 2001-03-12 Tetsuo Tsukamoto * doc/skk.texi: Typo. * skk.el (skk-kana-input): Don't call `skk-emulate-original-map' when `skk-henkan-on' is t. 2001-03-10 Tetsuo Tsukamoto * skk-comp.el (skk-comp-do): Don't signal error when `skk-comp-key' is null. (skk-comp-do-1): Call `skk-comp-by-history' when `skk-comp-key' is null. (skk-comp-by-history): New function. * skk-kcode.el (skk-input-by-code-or-menu): Call `skk-update-kakutei-history' when `skk-kakutei-history' is positive. * skk-vars.el (skk-kakutei-history-limit): New customizable variable. (skk-kakutei-history, skk-comp-kakutei-midasi-list): New variables. * skk.el (skk-kakutei, skk-update-jisyo): Call `skk-update-kakutei-history' when `skk-kakutei-history' is positive. (skk-update-kakutei-history): New function. 2001-03-04 NAKAJIMA Mikio * skk-vars.el (skk-server-host): Set "localhost" to its default value if "SKKSERVER" environment value is not found. (skk-server-portnum): Set 1178 to its default value on MS-DOS variants. 2001-02-14 NAKAJIMA Mikio * skk.el (skk-toggle-characters): Move point forward not until the end of buffer but until SKK-HENKAN-END-POINT to determine a character type. Set SKK-KATAKANA value (not change midasi strings) when SKK-HENKAN-ACTIVE is non-nil. Update doc string. 2001-02-04 NAKAJIMA Mikio * skk-vars.el (skk-lookup-default-option-list): Doc fixed. (skk-lookup-option-alist): Ditto. * skk-vars.el (skk-lookup-option-alist): Update doc string. (skk-lookup-default-option-list): Ditto. * skk-lookup.el (skk-lookup-process-heading): Handle multipule matched string. Set HEADING to CANDIDATES-LIST as its initial value when PICKUP is null. * skk-vars.el (skk-lookup-option-alist): Add regexp symbol '$' for each regexp of "KOJIEN" and "KOUJIEN". As to "KOUJIEN" and "KOJIEN", use number list for `match-string' argument in order to pick up a pattern like `$B%"%j%9%H%F%l%9!>$7$e$.!Z!=%V%C%/!ZEE;R!=![(B'. 2001-02-03 NAKAJIMA Mikio * skk-dcomp.el: Update install notes. * skk-annotation.el: Ditto. * skk-vars.el (skk-lookup-option-alist): Change 4th and 7th value of "KOUJIEN" and "KOJIEN" to pick up composed word properly. * skk-lookup.el (skk-lookup-process-heading): Eval MATCH and set that value to MATCH itself. 2001-01-27 NAKAJIMA Mikio * skk-dcomp.el (skk-dcomp-cleanup-buffer): New function. (skk-henkan@before@skk-dcomp-ad): Removed. (skk-start-henkan@before@skk-dcomp-ad): Revive. Use `skk-dcomp-cleanup-buffer'. (skk-process-prefix-or-suffix@before@skk-dcomp-ad): New advice. 2001-01-25 NAKAJIMA Mikio * skk-dcomp.el (skk-start-henkan@before@skk-dcomp-ad): Change its advice for `skk-henkan@before@skk-dcomp-ad' (Thanks for Hiroya Murata 's patch of Message-ID: ) 2001-01-24 Yuh Ohmura *make.bat : delete. *makeit.bat : rename from make.bat and sync with cmail *make1.bat : sync with cmail 2001-01-16 Yuh Ohmura * make1.bat: rename from make.bat and delete enviroment definition. * make.bat: new configuration get from cmail's make.bat. 2001-01-10 Tetsuo Tsukamoto * skk.el (skk-toggle-characters): Do not signal error when point reaches eob. (skk-search-katakana): New function. 2001-01-07 Tetsuo Tsukamoto * install-info.el (install-info-delete-entry): Rename from `install-info-delete-groups'. (install-info-1): Call it when DELETE is non-nil. 2001-01-02 NAKAJIMA Mikio * skk-version.el (skk-version): Change version to 11.5 and Codename to `Hotarugaike' respectively. * Makefile (VERSION): Change to 11.5. 2001-01-02 NAKAJIMA Mikio * Daredevil SKK 11.4 released. * Makefile (VERSION): Change to 11.4. * READMEs/Codename ($BJQ998D=j(B): Updated. 2000-12-30 NAKAJIMA Mikio * READMEs/CVS_digest: Sync up with skk/web/cvs-ja.html. * SKK-MK: Set nil to of load NOSUFFIX argument in order to load SKK-CFG.el instead of SKK-CFG when SKK-CFG.el exists. 2000-12-28 NAKAJIMA Mikio * experimental/skk-exsearch.el (setup-synchronous-engine): Check if `synchronous-search-engine' object has a `program' slot value. 2000-12-27 NAKAJIMA Mikio * dic/README: New file. 2000-12-22 Tetsuo Tsukamoto * skk-e18.el (skk-e18-pre-command): Do not set char. (get-minibuffer): Use `with-current-buffer'. 2000-12-21 Tetsuo Tsukamoto * skk-e18.el: No longer work around problems solved in APEL 10.2 or earlier. (skk-e18-adjust-local-variables-in-minibuffer): New function. * skk-tut.el (skk-tutorial): No longer work aronud problems under Emacs 18. 2000-12-21 NAKAJIMA Mikio * skk-e18.el (exit-minibuffer@around@skk-e18-ad): Revive. * skk.el (exit-minibuffer@around@skk-ad): Remove nemacs and mule1 part of advices. Defined for non-`nemacs' and non-`mule1' Emacsen using static-unless. 2000-12-20 Tetsuo Tsukamoto * skk-e18.el: Call `require' at toplevel for the feature `advice'. From Shuhei KOBAYASHI . (get-minibuffer, safe-run-hooks): New functions. (read-from-minibuffer): Use them. (skk-kana-input): Advise to work around a bug {until debugged}. 2000-12-19 Tetsuo Tsukamoto * skk-e18.el (read-from-minibuffer): Set the minibuffer window's buffer to the new buffer which is to be a next minibuffer. * skk-macs.el (skk-in-minibuffer-p): No longer work around a bug in `read-from-minibuffer' defined in skk-e18.el. 2000-12-18 Tetsuo Tsukamoto * skk-e18.el (read-from-minibuffer): Call `kill-all-local-variables', and store the keymap just after `minibuffer-setup-hook' is called. (skk-insert, skk-previous-candidate): Advise to call `skk-e18-pre-command'. (skk-kakutei): Advise to call `skk-after-point-move'. (skk-e18-pre-command, skk-e18-advise-skk-functions): New function. * skk-macs.el (skk-in-minibuffer-p): Compare buffers instead of windows, but also compare windows under Emacs 18 {perhaps for a bug}. * skk-vars.el (skk-kana-rom-vector): Modify the value so that `skk-okurigana-prefix' returns "t" for "$B$C(B". * skk.el (skk-mode-invoke): Call `skk-e18-advise-skk-functions' under Emacs 18. (skk-henkan-in-minibuff): Changes for Emacs 18. No longer {perhaps} need to give a keymap here. 2000-12-17 NAKAJIMA Mikio * skk.el (exit-minibuffer@around@skk-ad): Define piece of advice for Emacs 18 that was exit-minibuffer@around@skk-e18-ad. (minibuffer-exit-hook): Use ' instead of `function'. (skk-henkan-in-minibuff): Use ' instead of `function' for `minibuffer-setup-hook'. (abort-recursive-edit@around@skk-ad): Use ' instead of `function' for `skk-remove-minibuffer-setup-hook'. (exit-minibuffer@around@skk-ad): Ditto. (abort-recursive-edit@around@skk-ad): Bug fixed. * skk-e18.el (exit-minibuffer@around@skk-e18-ad): Removed. 2000-12-16 NAKAJIMA Mikio * READMEs/CVS_on_Windows: Sync up with web/cvswin-ja.html. * skk-e18.el (read-from-minibuffer@around@skk-e18-ad): Put an advice if apel version is 10.2 or earlier (10.3 will have read-from-minibuffer that call `minibuffer-setup-hook' and `minibuffer-exit-hook'. * skk-dcomp.el (viper-del-backward-char-in-insert@after@skk-dcomp-ad): Call `skk-dcomp-after-delete-backward-char' only when `skk-mode' and `skk-dcomp-activate' are non-nil. (vip-del-backward-char-in-insert@after@skk-dcomp-ad): Ditto. 2000-12-15 NAKAJIMA Mikio * skk-e18.el (skk-latin-mode-map): Do not declare with defconst. (skk-j-mode-map): Ditto. (skk-jisx0208-latin-mode-map): Ditto. (skk-abbrev-mode-map): Ditto. 2000-12-15 Hiroya Murata * skk.el (skk-mode-invoke): Call `skk-setup-auto-paren' before compiling skk-rule-tree. 2000-12-14 Tetsuo Tsukamoto * install-info.el (install-info-1): New function. * skk-server.el (skk-adjust-search-prog-list-for-server-search): Use `setq-default' instead of `setq'. * skk-tut.el (skk-tutorial): Work for Emacs 18. 2000-12-14 Mikio Nakajima * skk-viper.el (skk-viper-init-function): New function. (skk-mode-hook): Add `skk-viper-init-function' to this hook. (skk-cursor-current-color@around@skk-viper-cursor-ad): Use `ad-return-value' to set `viper-insert-state-cursor-color'. * skk-cursor.el (skk-cursor-init-function): New function. (skk-mode-hook): Add `skk-cursor-init-function' to this hook. (skk-cursor-buffer-local-frame-params-ad-targets): Remove `skk-j-mode' from this variable. * skk.el (skk-mode-once-again): Removed. (skk-require-module): Require skk-cursor first and skk-viper second. (skk-setup-modeline): Use `save-current-buffer'. 2000-12-13 Tetsuo Tsukamoto * skk-macs.el (skk-modify-indicator-alist): New function. (skk-update-modeline): Call it when optional 2nd arg STRING is non-nil. * skk-xemacs.el (skk-xemacs-extent-alist): Add default extent. (skk-xemacs-prepare-modeline-properties): Refer to the symbol values of `skk-cursor-%s-face'. * skk.el (skk-make-indicator-alist): Refer to `skk-xemacs-extent-alist' for the default extent. (skk-make-indicator-alist-1): Under Emacs 21, return the propertized string. 2000-12-13 Mikio Nakajima * experimental/dbm/skk-dbm.el: Require skk-macs and skk-vars instead of skk. Remove unnecessary spaces between parens. * skk-abbrev.el: Remove unnecessary spaces between parens. * experimental/rdbms/skk-rdbms.el: Require skk-macs instead of skk-forword. Remove unnecessary spaces between parens. * tut-code/skk-tutcode.el (skk-tutcode-display-code-1): Declare with defun using `static-cond' instead of `skk-defun-cond'. Recognize jisx0213 charset characters. Recognize skk-emacs-type mule5. * skk-kcode.el (skk-display-code): Recognize jisx0213 charset characters. * skk.el (skk-make-indicator-alist): Bug fixed. * skk-e18.el: Require pces.el. (skk-latin-mode-map): Declare as a constant for dummy purpose. (skk-j-mode-map): Ditto. (skk-jisx0208-latin-mode-map): Ditto. (skk-abbrev-mode-map): Ditto. (insert-file-contents-as-coding-system): Declare with `defun-maybe' instead of `defun' (APEL 10.2 has it already). (auto-fill-function): Declare with `defvar-maybe' instead of `defvar' (APEL 10.2 has it already). * skk.el (skk-e18-self-insert-keys): Move to skk-e18.el (skk-current-local-map): Ditto. (skk-e18-setup): Ditto. * skk-xemacs.el (skk-xemacs-prepare-modeline-properties): Bug fixed. Set `skk-xemacs-modeline-map' value in this function. (skk-xemacs-hiragana-extent): Removed. (skk-xemacs-katakana-extent): Ditto. (skk-xemacs-jisx0208-latin-extent): Ditto. (skk-xemacs-latin-extent): Ditto. (skk-xemacs-jisx0201-extent): Ditto. * skk.el (skk-exit): Rename to `skk-mode-exit'. (skk-invoke): Rename to `skk-mode-invoke'. * skk-xemacs.el: Bug fixed. (skk-xemacs-prepare-modeline-properties): Simplify. 2000-12-12 Mikio Nakajima * skk-jisx0201.el (skk-toggle-katakana): Use new `skk-update-modeline'. (skk-jisx0201-mode-on): Ditto. * tut-code/skk-def.el (skk-kana-rom-vector): Removed. (skk-latin-mode-string): Removed. (skk-hiragana-mode-string): Ditto. (skk-katakana-mode-string): Ditto. (skk-jisx0208-latin-mode-string): Ditto. * tut-code/skk-tutcdef.el (skk-kana-rom-vector): Removed. (skk-latin-mode-string): Comment out. (skk-hiragana-mode-string): Ditto. (skk-katakana-mode-string): Ditto. (skk-jisx0208-latin-mode-string): Ditto. (skk-abbrev-mode-string): Ditto. (skk-auto-insert-paren): Removed. * experimental/tut-code/skk-tutcode.el: Moved to skk-11/tut-code directory. * experimental/tut-code/skk-tutcdef.el: Ditto. * experimental/tut-code/skk-def.el: Ditto. * skk-xemacs.el (skk-xemacs-extent-alist): New internal variable. (skk-xemacs-hiragana-extent): Comment out. (skk-xemacs-katakana-extent): Ditto. (skk-xemacs-jisx0208-latin-extent): Ditto. (skk-xemacs-latin-extent): Ditto. (skk-xemacs-jisx0201-extent): Ditto. (skk-xemacs-prepare-modeline-properties): Refer to `skk-xemacs-extent-alist' to set extent face. Do not set `skk-default-indicator', `skk-latin-mode-indicator', `skk-hiragana-mode-indicator', `skk-katakana-mode-indicator', `skk-jisx0208-latin-mode-indicator', `skk-jisx0201-mode-indicator' and `skk-abbrev-mode-indicator'. * skk-e21.el (skk-e21-prepare-modeline-properties): Comment out. * skk.el (skk-invoke): New function. (skk-exit): Ditto. Use new `skk-update-modeline'. (skk-require-module): New function. (skk-setup-shared-private-jisyo): Ditto. (skk-setup-keymap): Ditto. (skk-make-indicator-alist): Ditto. (skk-make-indicator-alist-1):Ditto. (skk-regularize): Merged into `skk-invoke'. (skk-setup-modeline): Delete null string and symbol `skk-modeline-input-mode' from `mode-line-format' when `skk-status-indicator' is not equal to 'left. Change conditions order (smaller body should be first). (skk-mode): Use new `skk-update-modeline'. Use `skk-exit', `skk-invoke', `skk-require-module' and `skk-setup-keymap'. * vip.el (vip-skk-mode-off): Do not use `skk-mode-string-to-indicator'. * skk-macs.el (skk-mode-string-to-indicator): Comment out. (skk-update-modeline): Change macro to inline function. New optional argument MODE. Call `force-mode-line-update'. (skk-mode-off): Use new `skk-update-modeline'. (skk-j-mode-on): Ditto. (skk-latin-mode-on): Ditto. (skk-jisx0208-latin-mode-on): Ditto. (skk-abbrev-mode-on): Ditto. * skk-vars.el (skk-latin-mode-string): Remove space in the top of its default value. (skk-hiragana-mode-string): Ditto. (skk-katakana-mode-string): Ditto (skk-jisx0208-latin-mode-string): Ditto (skk-abbrev-mode-string): Ditto (skk-status-indicator): Change its default value to 'left. Add symbol to :type. (skk-indicator-alist): New internal variable. (skk-default-indicator): Removed. (skk-latin-mode-indicator): Ditto. (skk-hiragana-mode-indicator): Ditto. (skk-katakana-mode-indicator): Ditto. (skk-jisx0208-latin-mode-indicator): Ditto. (skk-jisx0201-mode-indicator): Ditto. (skk-abbrev-mode-indicator): Ditto. 2000-12-10 Mikio Nakajima * skk-dcomp.el (skk-dcomp): Move to skk-vars.el (skk-dcomp-face): Ditto. (skk-dcomp-activate): Ditto. (skk-dcomp-face-priority): Ditto. (skk-dcomp-keep-completion-keys): Ditto. (skk-dcomp-start-point): Ditto. (skk-dcomp-end-point): Ditto. (skk-dcomp-extent): Ditto. * experimental/skk-annotation.el: Move to top directory. * experimental/skk-dcomp.el: Ditto. 2000-12-10 Takao KAWAMURA * skk-vars.el (skk-okuri-char-alist): Fix typo in the doc-string. 2000-12-08 Mikio Nakajima * skk.el (skk-translate-okuri-char): Removed. * skk-vars.el (skk-kana-rom-vector): Use `defconst' instead of `defcustom' to declare its as an internal constant. Modify doc string. 2000-12-08 Murata Shuuichirou * skk.el (skk-set-okurigana): Use `skk-okurigana-prefix' instead of `skk-translate-okuri-char'. 2000-12-05 Tetsuo Tsukamoto * skk-jisx0201.el (skk-jisx0201-insert): Modify for skk-comp. * skk.el (skk-compute-henkan-lists): Modify okuriganas in blocks when `skk-use-kana-keyboard' and `skk-henkan-okuri-strictly' are both non-nil. (skk-set-henkan-point): When `skk-process-okuri-early' is non-nil, Set `skk-okuri-char' according to `skk-okuri-char-alist'. 2000-12-04 Tetsuo Tsukamoto * install-info.el: Modify Comments. * skk-vars.el (skk-init-file, skk-special-midashi-char-list): Modify doc strings. * skk.el (skk-process-prefix-or-suffix): New function. (skk-insert): Call it. 2000-12-04 Mikio Nakajima * skk-vars.el (skk-okuri-char-alist): Doc updated. * skk.el (skk-translate-okuri-char): Use `skk-okurigana-prefix' instead of `skk-substring-head-character'. (skk-okurigana-prefix): Do not refer to `skk-henkan-okurigana'. (skk-remove-common): Calculate NEW-SKK-OKURI-CHAR by `(skk-okurigana-prefix skk-henkan-okurigana)' instead of `(skk-okurigana-prefix okuri-first)'. * skk-macs.el (skk-substring): Make second arg POS2 optional. (skk-substring-head-character): Comment out. * experimental/skk-dcomp.el (skk-extentp): Comment out. (skk-dcomp-face-on): Make it inline function. (skk-dcomp-face-off): Ditto. (skk-dcomp-activate): New user variable. (skk-kana-input@around@skk-dcomp-ad): Refer to `skk-dcomp-activate'. (skk-kakutei@around@skk-dcomp-ad): Ditto. (skk-start-henkan@before@skk-dcomp-ad): Ditto. (keyboard-quit@around@skk-dcomp-ad): Ditto. (skk-comp@around@skk-dcomp-ad): Ditto. (skk-delete-backward-char@after@skk-dcomp-ad): Ditto. (viper-del-backward-char-in-insert@after@skk-dcomp-ad): Ditto. (vip-del-backward-char-in-insert@after@skk-dcomp-ad): Ditto. * experimental/skk-dcomp.el (skk-kakutei): Check if skk-dcomp-start-point and skk-dcomp-end-point are markers before entering into an actual work. (skk-start-henkan): Ditto. (skk-dcomp-after-delete-backward-char): New function. (skk-delete-backward-char@after@skk-dcomp-ad): New advice. (viper-del-backward-char-in-insert@after@skk-dcomp-ad): Ditto. (vip-del-backward-char-in-insert@after@skk-dcomp-ad): Ditto. 2000-12-02 Mikio Nakajima * Makefile (tar): Use tar 's --exclude-from option. (snapshot): Ditto. 2000-12-02 Mikio Nakajima * Makefile (tar): Do not use tar 's --exclude-from option. (snapshot): Ditto. 2000-12-01 Mikio Nakajima * skk.el (skk-insert): Arrange order of conditions. * skk-xm20_4.el: Load "skk-autoloads.el" instead of specifying all autoloads definitions of functions. * skk-vars.el (skk-completion-word): Renamed to `skk-comp-key'. (skk-completion-depth): Renamed to `skk-comp-depth'. (skk-completion-function): Abolish. (skk-previous-completion-function): Ditto. * skk-comp.el (skk-completion-1): Renamed to `skk-comp-do-1'. (skk-completion): Renamed to `skk-comp-do'. (skk-previous-completion): Renamed to `skk-comp-previous'. (skk-start-henkan-with-completion): Renamed to `skk-comp-start-henkan'. * experimental/skk-dcomp.el (skk-dcomp-toggle-key): Abolish. (skk-dcomp-keep-completion-keys): New user variable. (skk-dcomp-face): Add group skk-dcomp. (skk-kana-input): When error occurred in the completion stage, just initialize `skk-completion-stack' and echo area (not to put on markers and face and move to `skk-dcomp-start-point'). Initialize `skk-dcomp-end-point', too. 2000-11-30 Tetsuo Tsukamoto * install-info.el (install-info-point-at-eol): Use `prog1'. * skk.el (skk-setup-modeline): Don't use unnecessary extents. 2000-11-29 Mikio Nakajima * experimental/skk-dcomp.el (skk-kana-input): Go to `skk-dcomp-start-point' after the hairy work finishes. 2000-11-28 Tetsuo Tsukamoto * skk-e18.el, skk-is-n.el: From "experimental". * SKK-MK: Modify according to it. 2000-11-28 Mikio Nakajima * experimental/skk-dcomp.el (skk-dcomp-end-point): New variable. (skk-dcomp-toggle-key): New variable. (skk-kana-input): Set `skk-dcomp-end-point'. Set `skk-dcomp-start-point' value as a marker. Do not remove a completed part of SKK-HENKAN-KEY if this command key is equal to `skk-toggle-character' (or `skk-toggle-kana'). (skk-kakutei): Set `skk-dcomp-start-point' and `skk-dcomp-end-point' to nil. (skk-start-henkan): New advice. (keyboard-quit): Ditto. 2000-11-28 Tetsuo Tsukamoto * skk-tut.el (skk-tutorial): Call `skk-nicola-setup-tutorial' for skk-nicola. 2000-11-28 Mikio Nakajima * experimental/skk-dcomp.el (skk-kana-input): Use second argument SILENT for `skk-completion'. * skk-comp.el (skk-completion): New optional argument SILENT. 2000-11-27 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-setup): Remember the current buffer. * skk-tut.el (skktut-init-variables-alist): Set `skk-rule-tree' for skk-nicola. * skk-vars.el: Modify group dependencies for skk-tut. (skk-isearch-current-buffer): New variable. * skk.el (skk-mode): Call `skk-kanagaki-initialize'. 2000-11-27 FURUE Hideyuki * skk.el (skk-emulate-original-map): Remove `skk-cancel-undo-boundary'. (skk-kana-input): Reset `skk-kana-start-point' when ``NEXT have at least one branch''. Do `skk-cancel-undo-boundary' only when kana insertion. (skk-delete-backward-char): kana cleanup. (skk-undo): kana cleanup. (skk-kakutei-cleanup-buffer): Enable undo again if `skk-undo-kakutei-word-only' is set. (skk-undo-kakutei): Disable undo temporarily if `skk-undo-kakutei-word-only' is set. (skk-set-henkan-point-subr): Disable undo temporarily if `skk-undo-kakutei-word-only' is set. (newline): Do `undo-boundary'. (newline-and-indent): Do `undo-boundary'. * skk-vars.el (skk-kana-cleanup-command-list): Add `skk-undo' and `skk-kakutei'. (skk-undo-kakutei-word-only): New user variable. (skk-last-buffer-modified): New buffer local variable. (skk-last-buffer-modified): New buffer local variable. * skk-macs.el (skk-cannot-be-undone): New macro. (skk-erase-prefix): Use `skk-cannot-be-undone'. (skk-insert-prefix): Use `skk-cannot-be-undone'. 2000-11-26 Mikio Nakajima * experimental/skk-dcomp.el: Remove unnecessary spaces between parens. Add year 2000 to the copyright notice. * skk.el (skk-nunion): Bug fixed. 2000-11-25 Tetsuo Tsukamoto * experimental/skk-e18.el: (exit-minibuffer@around@skk-e18-ad): New advice. (read-from-minibuffer@before@skk-e18-ad): Ditto. * skk-macs.el (skk-ding): Use the first arg under FSF Emacs. * skk-setup.el.in: Use `add-path' instead of `add-latest-path'. * skk-tut.el (skk-tutorial): Work around for Emacs 18. * skk-xemacs.el (minibuffer-keyboard-quit@arond@skk-xemacs-ad): From skk.el. * skk.el: Modify preface. (skk-henkan-show-candidate-subr): Use `string-width', not `string-bytes' {mm.el is broken}. (minibuffer-keyboard-quit@arond@skk-ad): Move to skk-xemacs.el. (exit-minibuffer@around@skk-ad): Don't advise Emacs 18. * vip.el: Use `skk-modeline-input-mode' instead of `skk-input-mode-string'. 2000-11-24 Tetsuo Tsukamoto * etc/NICOLA-SKK.tut: New file. * etc/SKK.tut: Typo. * install-info.el: Add comments. * skk-comp.el (skk-completion, skk-previous-completion): Don't signal error. Just show the message. * skk-tut.el (skktut-nicola-tut-file): New variable. (skk-tutorial): Use it for `skk-tut-file' when `skk-nicola' is used. (skktut-setup-working-buffer): Count how many questions the tutorial file contains. * skk-vars.el: Require "pcustom" also at the load time. * skk.el (skk-update-jisyo-original): Don't consider private dictionary sharing in tutorial. 2000-11-22 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el-package): Eval the temporary buffer. (SKK-MK-detect-shadow-directory): Do not signal error. (SKK-MK-compile): Disable local eval. * install-info.el (install-info-add-groups): Detect the next section more correctly. * leim-list.el.in: Do nothing when `site-run-file' is nil. 2000-11-22 Mikio Nakajima * skk-jisx0201.el: Put in a comment at the bottom to eval the form which makes Emacs not to translate characters. * ChangeLog.daredevil: Put in a comment at the top to specify change-log major mode. * READMEs/AUTHORS: Updated. * READMEs/Contributors: Ditto. 2000-11-21 Mikio Nakajima * SKK-MK (SKK-MK-detect-shadow-directory): New function. (SKK-MK-install-elc): Use `SKK-MK-detect-shadow-directory'. (SKK-MK-install-package): Ditto. 2000-11-21 Tetsuo Tsukamoto * Makefile (clean): Undo the last change. * SKK-MK (SKK-MK-install-elc): Install leim-list.el.in as leim-list.el. * leim-list.el.in: Rename from leim-list.el. 2000-11-20 Tetsuo Tsukamoto * *: Plenty of `goodbye-warning's. * Makefile (clean): Don't delete leim-list.el * SKK-MK (SKK-MK-install-elc): Now leim-list.el and skk-setup.el are not the same files. * leim-list.el: New file. * skk-macs.el (skk-mode-string-to-indicator): New function. * skk-setup.el.in: Move XEmacs related codes to skk-xemacs.el. Move isearch related codes to skk-isearch.el. * skk-vars.el (skk-input-mode-string): Abolish. * skk.el (skk-setup-modeline): Always use `skk-modeline-input-mode'. 2000-11-19 Tetsuo Tsukamoto * SKK-MK (SKK_MODULES): Add `skk-e21'. * skk-e21.el: New file. * skk-jisx0201.el, skk-macs.el: Modify for skk-e21.el. * skk-macs.el (skk-update-modeline): New function. (skk-update-modeline-with-extent): Abolish. * skk-vars.el (skk-modeline-input-mode, skk-default-indicator, skk-latin-mode-indicator, skk-hiragana-mode-indicator, skk-katakana-mode-indicator, skk-jisx0208-latin-mode-indicator, skk-jisx0201-mode-indicator, skk-abbrev-mode-indicator): New variables. * skk-xemacs.el (skk-xemacs-prepare-modeline-properties): Rename from `skk-xemacs-prepare-extents'. * skk.el (skk-setup-modeline): Add `skk-modeline-input-mode' instead of `skk-input-mode-string' to `mode-line-format'. 2000-11-19 Mikio Nakajima * skk-version.el (skk-version): Change its argument meaning. If WITHOUT-CODENAME is non-nil, simply return SKK version. If nil return the version with its codename. * SKK-MK (SKK-MK-what-where-package): Remove skk-autoloads from SKK_MODULES. (SKK-MK-install-elc): Set up setup.el.in for SKK_TUTORIALS even if SKK_DICTIONARIES is nil. (SKK-MK-install-package): Ditto. Call error in the top of the function if running emacs does not have feature xemacs. (SKK-MK-make-setup-file): Do not eval 1th of SPEC. * Makefile (tar): Change ddskk-$(VERSION) to ddskk$(VERSION) for file name of tar ball. (SNAPBASE): Replace ddskk-`$(DATE) '+%Y%m%d' with `ddskk`$(DATE) '+%Y%m%d'`. 2000-11-19 Tetsuo Tsukamoto * SKK-MK (SKK_MODULES): Add `skk-xemacs'. * skk-jisx0201.el, skk-macs.el: Modify for skk-xemacs.el. * skk-xemacs.el: New file. * skk.el (skk-mode): Call `skk-xemacs-prepare-extents'. 2000-11-19 Mikio Nakajima * doc/skk.texi (skk-lookup): Replace VERSION_SPECIFIC_LISPDIR with ADDITIONAL_LISPDIR. * READMEs/FAQ.txt ([Q.] SKK $B$N8!:w$G!";THN$N(B CD-ROM $B<-=q$d%M%C%H%o!<(B $B%/$N<-=q%5!<%P$,MxMQ$G$-$^$9$+!)(B): Replace VERSION_SPECIFIC_LISPDIR with ADDITIONAL_LISPDIR. * experimental/skk-annotation.el (skk-annotation-quote): Bug fixed. * SKK-CFG: Add documents about ADDITIONAL_LISPDIR. * SKK-MK: Removed modules which do not exist in top directory from SKK_MODULES. (ADDITIONAL_LISPDIR): New variable. (LISPDIR): Sync up with VERSION_SPECIFIC_LISPDIR in relation to the part which detects directory on ms-dos system. (SKK_LISPDIR): Refer to VERSION_SPECIFIC_LISPDIR instead of LISPDIR. * skk-macs.el (skk-detect-emacs): Removed. 2000-11-18 Tetsuo Tsukamoto * install-info.el (install-info-skip-blank-lines): New function. (install-info-add-groups): Skip blank lines until point reaches the next section. * skk-setup.el.in: Modify for Emacs 18. Quite ugly works for Emacs 21. Don't call `defadvice' when leim-list.el is loaded. Use `before-init-hook' or `after-init-hook'. 2000-11-16 Tetsuo Tsukamoto * READMEs/FAQ.txt: Update for version 11.4. * doc/skk.texi: Ditto. * skk-setup.el.in: Make sure dired/auto-autoloads.el exists. * skk.el (skk-remove-redundant-okurgana): Make sure str2 is non-nil. 2000-11-15 Tetsuo Tsukamoto * SKK-MK (SKK-MK-install-elc): Under Emacs 20.2 or earlier, copy skk-setup.el to a directory in `default-load-path', not to a subdirectory "skk". * skk-macs.el (skk-update-modeline-with-extent): New function. (skk-mode-off, skk-j-mode-on, skk-latin-mode-on, skk-jisx0208-latin-mode-on, skk-abbrev-mode-on): Call it under XEmacs. * skk-setup.el.in: Emacs 20.2 or earlier, load "path-util" and add subdirectory "skk" to load-path. * skk-vars.el (skk-check-okurigana-on-touroku): Accpept the value `auto'. * skk.el (skk-remove-redundant-okurgana): Don't ask if `skk-check-okurigana-on-touroku' is auto. Also check the okurigana which consists of two characters. (skk-henkan-show-candidates): Show previous candidates if the read event is for `skk-delete-backward-char'. * tinyinstall.el: Under Emacs 18, override `member' defined in cl.el with a valid one. 2000-11-14 Tetsuo Tsukamoto * doc/skk-faq.texi: No longer in the repository. * doc/skk.texi: Integrate skk-faq.texi. * etc/SKK.tut: Don't use more than 19 lines. * experimental/skk-e18.el (skk-e18-make-local-map): New function. * skk-macs.el (skk-j-mode-on, skk-latin-mode-on, skk-jisx0208-latin-mode-on, skk-abbrev-mode-on): Call it. (skk-local-variable-p): New function. * skk-setup.el.in: Call `ad-remove-advice' under XEmacs. * skk-tut.el: Bug fixes, and modifications for Emacs 18. (skktut-setup-delete-backward-char): New function. (skk-tutorial): Call it. Invoke `skk-mode' at least once before starting tutorial. (skktut-original-local-map): New variable for Emacs 18. (skktut-make-windows): Keep at least 20 lines for the upper window. * skk.el (skk-mode, skk-save-jisyo-original, skk-make-new-jisyo): Don't create or save `skk-jisyo' file, if it is one for tutorial. 2000-11-13 Tetsuo Tsukamoto * doc/skk-faq.texi: Typo. * skk.el (skk-henkan-show-candidates): Signal quit when the read event is for `keyboard-quit', `skk-kanagaki-bs' or `skk-kanagaki-esc'. 2000-11-13 Mikio Nakajima * skk-vars.el (skk-coding-system-alist): Use `iso-2022-jp-3-strict' instead of `iso-2022-jp-3-compatible' for "jis". 2000-11-12 Mikio Nakajima * skk-auto.el (skk-okuri-search): Convert hiragana of each element into katakana. * skk-tut.el (skktut-init-variables-alist): Remove `(skk-convert-okurigana-into-katakana . nil)' element. * skk-vars.el (skk-convert-okurigana-into-katakana): Removed. * skk.el (skk-start-henkan): When SKK-KATAKANA is non-nil and ARG is equal to 1, not convert a string of a region to hiragana but convert a string in SKK-HENKAN-KEY itself. (skk-set-okurigana): Ditto. Also convert SKK-HENKAN-OKURIGANA. (skk-hiragana-to-katakana): Bug fixed. (skk-katakana-to-hiragana): Ditto. (skk-toggle-characters): Convert region even if SKK-HENKAN-ACTIVE is non-nil. Try to recognize characters type by checking second characters and more even if type of first character is `unknown'. Doc updated. (skk-previous-candidate): Put out katakana when SKK-KATAKANA is non-nil. (skk-kakutei-cleanup-buffer): Not to convert okurigana into katakana. * doc/skk.texi: Call `texinfo-every-node-update' and `texinfo-all-menus-update'. * doc/skk.texi ($BAw$j$"$jJQ49Cf$N(BC-g): Doc fixed. ($B%+%J%b!<%I$G$NJQ49$NAw$j2>L>$N=hM}(B): Removed. 2000-11-11 Mikio Nakajima * skk.el (skk-quote-char): Use `format' instead of `concat'. (skk-henkan): Hand NEW-WORD to `skk-kakutei'. (skk-henkan-in-minibuff): Use `skk-quote-semicolon' if NEW-ONE contains `;'. (skk-nunion): Recognize annotated word. * skk-macs.el (skk-annotation-quote-1): Rename to `skk-quote-semicolon'. * experimental/skk-annotation.el (skk-annotation-add): Use `start-closed' property for XEmacs. (skk-annotation-quote-1): Use `format' instead of `concat'. Export to `skk-macs.el'. (skk-henkan-in-minibuff): Removed. (skk-nunion): Removed. 2000-11-08 Mikio Nakajima * skk-macs.el (skk-eval-string): Remove unnecessary STRING when error occured. * experimental/skk-annotation.el (skk-annotation-add): Bug fixed. (skk-annotation-insert): Use `skk-string-eval' instead of `eval'. (skk-annotation-show-as-message): Use `skk-string-eval' for ANNOTATION. * skk.el (skk-quote-char): Do not quote if WORD has an annotation. 2000-11-08 Tetsuo Tsukamoto * SKK-MK (SKK_INFODIR): See `Info-directory-list' only when $INFOPATH is set. * skk.el: Fix for invalid condition handler. 2000-11-06 Mikio Nakajima * experimental/skk-annotation.el (skk-henkan-in-minibuff): Bug fixed. * experimental/skk-annotation.el (skk-annotation-update-jisyo-format): Add autoload cookie. Bug fixed. * skk.el (skk-henkan-show-candidate-subr): Use `(message "%s" str)' instead of `(message str)'. * skk-vars.el (skk-annotation-show-message): Rename to `skk-annotation-show-as-message'. (skk-annotation-function): Doc updated. * experimental/skk-annotation.el: Comment (document) updated. (skk-update-jisyo-format): Renamed to `skk-update-jisyo-format'. Call `(skk-setup-jisyo-buffer)' first. Make it interactive. (skk-update-jisyo-format-1): Renamed to `skk-annotation-update-jisyo-format-1'. (skk-annotation-remove): Added user confirmation. (skk-henkan-in-minibuff): New advice. (skk-annotation-save-and-quit): Remove zenkaku spaces from ANNOTATION, too. If ANNOTATION is null string set it to nil. Show "Added annotation" message only when ANNOTATION is actually added. (skk-annotation-show): Funcall with argument ANNOTATION. Use skk-annotation-get'. (skk-annotation-get): New inline function. (skk-annotation-show-1): Do not cut off top `*' character. (skk-annotation-kill): Call `(skk-annotation-erase-buffer)' before killing current buffer. (skk-annotation-show-message): Rename to `skk-annotation-show-as-message'. * skk.el (skk-quote-char): Do not quote `;'. (skk-update-jisyo-format): Export to experimental/skk-annotation.el. (skk-update-jisyo-format-1): Ditto. * SKK-MK (SKK_INFODIR): Get car of `Info-directory-list'. * skk.el (skk-update-jisyo-format-1): Use temporary variable CANDIDATE. (skk-get-jisyo-buffer): Do not call `skk-update-jisyo-format'. (skk-quote-char): Remove `;' from the first regexp. * experimental/skk-annotation.el: Require static.el. (skk-annotation-show-message): When echo area is occupied by candidates, open other window and show annotation. (skk-annotation-erase-buffer): New inline function. (skk-annotation-insert): Use `skk-annotation-erase-buffer'. (skk-annotation-add): Ditto. Bug fixed. (skk-annotation-last-word-1): Remove unnecessary temporary variable CANDIDATE. (skk-annotation-save-and-quit): Trim whitespaces, newlines and tabs in head of the annotation. * skk.el: Require product.el first for APEL version check. * skk.el (skk-update-jisyo-format): New function. (skk-update-jisyo-format-1): New function. (skk-get-jisyo-buffer): Use `skk-update-jisyo-format'. (skk-quote-char): Bug fixed. * experimental/skk-annotation.el (skk-annotation-show-1): Do nothing when ANNOTATION is a null string. 2000-11-03 Mikio Nakajima * skk-server.el (skk-search-server): Add `;;;###autoload' cookie. 2000-11-01 Tetsuo Tsukamoto * skk-isearch.el, etc/SKK.tut.E: Typos. Reported by Yoshiki Hayashi . 2000-10-31 Tetsuo Tsukamoto * ptexinfmt.el: Sync with Wanderlust. 2000-10-31 Mikio Nakajima * doc/skk.texi: Add 2000 year to Copyright notice. ($B1QC18l$r$"$$$^$$$KJQ49$7$F * Version 14.4 Nakatsu Released. * doc/skk.texi, Makefile, skk-version.el: Bump SKK verison to 14.4. 2011-12-30 Tsuyoshi Kitamoto * doc/skk.texi (skk-verbose-intention-face): $B!V$I$N(Bwiki$B!W$r!V$I$l$r;2>H!W(B $B$H=$@0(B. (skk-check-okurigana-on-touroku): footnote $B$+$i(B defvr $B$XJQ99(B. * skk-vars.el (skk-verbose-intention-face): $B!V$I$N(Bwiki$B!W$r!V$I$l$r;2>H!W(B $B$H=$@0(B. (skk-undo-kakutei-return-previous-point): docstring $B$r=$@0(B. 2011-12-27 Tsuyoshi Kitamoto * doc/skk.texi ($BJ8;z%3!<%I$rCN$kJ}K!(B): M-x skk-display-code-for-char-at-point $B$r5-:\(B. * skk-macs.el (skk-split-char): Add comment. 2011-12-24 Tsuyoshi Kitamoto * doc/skk.texi ($B>iD9$J0FFb%a%C%;!<%8$NI=<((B): $B99?7(B. 2011-12-23 Tetsuo Tsukamoto * skk-vars.el: Set coding to iso-2022-7bit-ss2. (skk-annotation-python-program) (skk-annotation-dict-coding-system): In docstrings, modify charset of some characters from chinese-gb2312 to japanese-jisx0208. 2011-12-23 Tsuyoshi Kitamoto * doc/skk.texi: @documentlanguage $B$rDI2C(B. @subsection $B9T$NCf$G;H$o$l$F$$$?(B @code{}, @key{}, @kbd{} $B$r:o=|(B. @subsubsection $B9T$bF1MM(B. 2011-12-18 Tsuyoshi Kitamoto * skk-tut.el (skktut-init-variables-alist): Add skk-show-mode-show. * skk-vars.el (skk-show-mode-invoked): New variable. (skk-show-mode-show): $B%f!<%6%*%W%7%g%s2=(B. (skk-show-mode-style): docstring $B$rJQ99(B. * skk-show-mode.el (skk-cursor-set): $BH=Dj$K(B skk-show-mode-invoked $B$r(B $B2C$($?(B. (skk-show-mode): $B?7$?$J%3%^%s%I(B. * skk.el (skk-require-module): skk-show-mode $B$r(B require. * doc/skk.texi: $B99?7(B. 2011-12-17 Tetsuo Tsukamoto * doc/skk.texi: Set coding to iso-2022-jp-3. 2011-12-17 Tsuyoshi Kitamoto * skk-kcode.el (skk-kcode-read-code-string): RET $B$N%?%$%W$G(B char-list $B$,5/F0$9$k$N$+(B menu $B$,5/F0$9$k$N$+$r!"$"$i$+$8$aI=<((B. 2011-12-15 Tetsuo Tsukamoto * skk-kcode.el (skk-display-code): Check function `char-to-ucs' also at run time. 2011-12-14 Tetsuo Tsukamoto * doc/skk.texi: Set coding to iso-2022-7bit. Replace invisible chars with correct ones. * SKK-MK (SKK-MK-texinfo-coding-system): Default to iso-2022-7bit. (SKK-MK-texinfo-pre-formart, SKK-MK-texinfo-post-format): New functions. (SKK-MK-texinfo-format): Call them. * skk-annotation.el (skk-annotation-lookup-region-or-at-point): Now this is defined with defun, while `skk-annotation-wikipedia-region-or-at-point' is treated as an alias. * skk-emacs.el (skk-emacs-menu-resource-ja): Typo. * skk-setup.el.in (skk-isearch-setup-maybe) (skk-isearch-cleanup-maybe): Requie skk-vars. * skk-vars.el (skk-kcode-charset): Update the custom type. (skk-list-chars-mode-map): Define for the cursor keys. 2011-12-13 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-annotation.el, skk-isearch.el: Update comments. * skk-emacs.el (skk-emacs-modeline-menu-items): Typo. * skk-setup.el.in (skk-isearch-setup-maybe) (skk-isearch-cleanup-maybe): New functions. (isearch-mode-hook, isearch-mode-end-hook): Call them. * skk-vars.el (skk-isearch-mode-enable): Always enable skk-isearch if value is `always'. 2011-12-10 Tsuyoshi Kitamoto * skk-kcode.el (skk-list-chars): $B%3!<%I$r@0M}(B. 2011-12-08 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wait-for-input): Call `lookup-word' if user try to browse the source for a lookup entry. 2011-12-08 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.3.92. 2011-12-07 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-annotation.el (skkannot-wikipedia-format-buffer): Remove uls in ja.wiktionary. * skk-vars.el (skk-annotation-wiktionary-preferred-lang-alist): Add "$B8EE5F|K\8l(B". (skkannot-ja-wiktionary-part-of-speech-regexp): Add "$BOB8l$N4A;zI=(B $B5-(B". * skk-emacs.el (skk-emacs-modeline-menu-items): Add new items for skk-tankan, skk-list-chars, skk-annotation-lookup-region-or-at-point, and skk-clock. (skk-emacs-menu-resource-ja): Update. 2011-12-07 Tsuyoshi Kitamoto * skk-vars.el (skk-search-state, skk-search-ex-state): New internal variables. * skk.el (skk-search, skk-search-extra-jisyo-files): Use it. (skk-search-state): New command. * doc/skk.texi: Update. 2011-12-06 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-lookup.el (skk-lookup-get-content): Simplify just slightly. * skk.el (skk-backward-and-set-henkan-point-1): Ditto. 2011-12-06 Tsuyoshi Kitamoto * skk-lookup.el (skk-lookup-get-content): Remove message(). (skk-lookup-get-content-setup-dic): Add message() and interactive(). * doc/skk.texi: $B99?7(B. 2011-12-05 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-name-radical-alist): $B?7$?$J%j%9%H(B. (skk-tankan-yomi-compread): $B?7$?$J4X?t(B. (skk-tankan): $BIt * skk-vars.el (skk-annotation-other-sources): Add lookup.el. (skkannot-cached-srcs): Renamed from skk-annotation-wikimedia-srcs. * skk-annotation.el (skkannot-in-normal-buffer-p) (skkannot-clear-msg, skkannot-check-lookup): New functions. (skkannot-cache, skk-annotation-wikipedia): Call `skk-lookup-get-content' if source is lookup.el. (skk-annotation-find-and-show): Pass skkannot-cached-srcs to `skk-annotation-show' if skk-annotation-lookup-lookup is nil. 2011-12-04 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-lookup-lookup): New user option. (skk-treat-candidate-sample2): If it is set to `always', call `skk-lookup-get-content'. * skk.el (skk-check-treat-candidate-appearance-function): Check it. * skk-annotation.el (skk-annotation-find-and-show): Call `skk-lookup-get-content' if `skk-annotation-lookup-lookup' is non-nil. * skk-lookup.el (skk-lookup-get-content): If content is a null string, then return nil. Take optional arg listing-p. 2011-12-04 Tsuyoshi Kitamoto * skk-vars.el (skk-tankan-radical-name-face): $B?7$?$J(B FACE. * skk-tankan.el (skk-tankan-radical-name): $B?7$?$JG[Ns(B. (skk-tankan-bushu-compread): skk-tankan-radical-name $B$H(B skk-tankan-radical-name-face $B$r;HMQ(B. * doc/skk.texi: $B99?7(B. 2011-12-03 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2011-11-30 Tetsuo Tsukamoto * skk-annotation.el (skkannot-DictServ-cache) (skk-annotation-lookup-DictionaryServices): Remove unused local variables. 2011-11-28 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-wiktionary-preferred-lang-alist): Modify the default value for en.wiktionary. (skkannot-en-wiktionary-part-of-speech-regexp): Add Kanji, Hanzi, and Hanja. 2011-11-27 Tsuyoshi Kitamoto * skk-show-mode.el (skk-cursor-set): $B%$%s%/%j%a%s%?%k!&%5!<%ACf$N(B $BF~NO%b!<%I@Z$jBX$(;~$K$OI=<($7$J$$!#JQ?t(B skk-isearch-switch $B$GH=CG(B. 2011-11-26 Tetsuo Tsukamoto * skk-annotation.el (skkannot-DictServ-command): New function. (skk-annotation-lookup-DictionaryServices): Accept an optional third arg force. (skk-annotation-wikipedia-1): Call it with the 3rd arg non-nil. * skk-vars.el (skk-annotation-lookup-DictionaryServices): Update doc string. (skkannot-py-none-regexp, skkannot-DictServ-cmd-format-str): New constant variables. * skk.el (skk-check-treat-candidate-appearance-function) (skk-treat-candidate-appearance): New functions. (skk-henkan-candidate-list, skk-treat-new-word): Call them. 2011-11-26 Tetsuo Tsukamoto * skk-version.el: Bump skk-version to 14.3.91. * skk-vars.el (skk-annotation-show-wikipedia-url): Abolish variable. (skk-annotation-lookup-DictionaryServices): Accept `always'. (skk-treat-candidate-sample2): If it is set to `always', call `skk-annotation-lookup-DictionaryServices'. * skk-annotation.el: Update comments. (skk-skkannot-treat-wikipedia): Abolish function. (skk-annotation-find-and-show, skk-annotation-wait-for-input): Do not refer to skk-annotation-show-wikipedia-url. * doc/skk.texi: Update. 2011-11-23 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.3.90. 2011-11-23 Tsuyoshi Kitamoto * skk-vars.el (skk-annotation-delay): $BC10L$,IC$G$"$k;]$r5-:\(B. * doc/skk.texi (skk-annotation-delay): $BDI2C(B. (VIP/VIPER$B$H$NJ;MQ(B): $B!V(BI-search$B4XO"!W$H=g$rF~$lBX$((B. * skk.el (skk-check-size-and-do-save-jisyo): skk-yes-or-no-p() $B$N(B $B0z?t(B JAPANESE $B$H(B ENGLISH $B$N@8@.$,0[$J$C$F$$$?$N$r=$@5(B. 2011-11-21 Tsuyoshi Kitamoto * doc/skk.texi (skk-show-mode-style): $B99?7(B. ($BJ8;z%3!<%I4XO"(B): $B99?7(B. * experimental/skk-search-web.el: $BDI2C(B. * SKK-MK (SKK_MODULES): skk-search-web $B$rDI2C(B. 2011-11-20 Tsuyoshi Kitamoto * skk-show-mode.el (skk-show-mode-inline): New file. * SKK-MK (SKK_MODULES): Add skk-show-mode. * skk-vars.el (skk-show-mode-show, skk-show-mode-functions): New internal variables. (skk-show-mode-style): New user option. * doc/skk.texi (skk-show-mode-style): $BDI2C(B. 2011-11-19 Tsuyoshi Kitamoto * doc/skk.texi (SKK$B$H$O$J$K$+(B): $B99?7(B. * skk-inline.el (skk-add-background-color): docstring $B$r=$@5(B. (skk-inline-show-vertically): $B%=!<%9%3!<%I>e$N%$%s%G%s%HI}8m$j(B $B$r=$@5(B. 2011-11-18 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-wiktionary-preferred-lang-alist): New user option. * skk-annotation.el (skkannot-wikt-preferred-lang-regexp) (skkannot-wikt-find-preferred-langs): New functions. (skkannot-wikipedia-format-buffer): In wiktionary, prefer word langs found in skk-annotation-wiktionary-preferred-lang-alist. 2011-11-15 Tetsuo Tsukamoto * skk-annotation.el (skkannot-dict-exec-find, skkannot-sit-for) (skkannot-py-send-string skkannot-py-send-command) (skkannot-DictServ-cache, skkannot-dict-buffer-format) (skkannot-start-dict-process, skkannot-wikipedia-clean-sup) (skkannot-wikipedia-clean-sub, skkannot-wikipedia-format-buffer) (skkannot-wikipedia-remove-nested, skkannot-wikipedia-retrieved) (skkannot-wikipedia-test-html-tag, skkannot-treat-wikipedia) (skkannot-cache, skkannot-generate-url) (skkannot-wikipedia-normalize-word, skkannot-url-installed-p): Abbreviate function names. (skkannot-treat-wikipedia): Remove autoload cookie. (skk-annotation-show-buffer): Use `skk-reset-henkan-count'. * skk-vars.el (skkannot-remaining-delay, skkannot-buffer-origin) (skkannot-py-buffer, skkannot-url-installed-p) (skkannot-en-wiktionary-lang-regexp) (skkannot-en-wiktionary-part-of-speech-regexp) (skkannot-ja-wiktionary-lang-regexp) (skkannot-ja-wiktionary-part-of-speech-regexp): Abbreviate internal variable names. 2011-11-14 Tsuyoshi Kitamoto * skk-vars.el (skk-lookup-get-content-nth-dic): docstring $B$r=$@5(B. * doc/skk.texi ($B%"%N%F!<%7%g%s$H$7$F(BEPWING$B<-=q$rI=<($9$k(B): $BDI2C(B. 2011-11-14 Tetsuo Tsukamoto * skk-annotation.el: Autoload `run-python'. (skk-annotation-start-python): Abolish the 2nd optional arg. 2011-11-13 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-lookup-DictionaryServices): Update the rule for truncating annotations. * skk-annotation.el (skk-annotation-exclude-dict-maybe): Abolish function. (skk-annotation-send-python-string) (skk-annotation-send-python-command): New functions. (skk-annotation-start-python): Rename the newly created buffer to an skk specific one. Restore the original value of python-buffer after that. * skk-vars.el (skk-annotation-other-sources): Remove `dict' from the default value. Move `ja.wiktionary' to the top. * skk-macs.el (skk-reset-henkan-count) (skk-escape-from-show-candidates): New functions. * skk-annotation.el (skk-annotation-sit-for) (skk-annotation-wait-for-input) * skk.el (skk-henkan-show-candidate-subr): Use them. * skk-vars.el (skk-annotation-python-program): Simply find "python" executable. * skk-annotation.el (skk-annotation-start-python): Call `set-buffer-process-coding-system'. (skk-annotation-lookup-DictionaryServices): Make command a little bit simple. Insert the command if it has not been echoed. Output a header line. (skk-annotation-DictionaryServices-cache): Take word instead of command as an argument. Take optional arg truncate. 2011-11-13 Tsuyoshi Kitamoto * skk-vars.el (skk-lookup-get-content-nth-dic) : New user option. (skk-lookup-get-content-default-dic) (skk-lookup-get-content-default-dic-name): New internal variables. * skk-lookup.el (skk-lookup-pickup-headings): Fix docstring. (skk-lookup-get-content, skk-lookup-get-content-setup-dic): New Function. 2011-11-12 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-lookup-DictionaryServices) (skk-annotation-loop-interval): New user options. (skk-annotation-python-program, skk-annotation-process-buffer): New variables. (skk-annotation-dict-program): Default to skk-annotation-python-program under Darwin. (skk-annotation-other-sources): Add `DictionaryServices'. Move `ja.wikitionary' next to `ja.wikipedia'. * skk-annotation.el (skk-annotation-start-python) (skk-annotation-DictionaryServices-cache) (skk-annotation-lookup-DictionaryServices): New functions. (skk-annotation-find-and-show, skk-annotation-wikipedia) (skk-annotation-wikipedia-1, skk-annotation-wikipedia-cache): Modify to accept `DictionaryServices'. (skk-annotation-lookup-region-or-at-point): Alias to `skk-annotation-wikipedia-region-or-at-point'. (skk-annotation-wait-for-input): Modify according to it. * skk.el (skk-mode-invoke, skk-preload): Call `skk-annotation-start-python' if skk-annotation-lookup-DictionaryServices is non-nil. 2011-11-11 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-lookup-dict): Accept an optional arg truncate for candidate listing. Add autoload cookie. Do not kill or erase buffer before the throw. (skk-annotation-preread-dict): Take an optional arg nowait. (skk-annotation-wikipedia-format-buffer): Avoid a loop in ja.wikitionary articles. (skk-annotation-find-and-show): Fix the order in skk-annotation-wikimedia-srcs. * skk-vars.el (skk-annotation-dict-program) (skk-annotation-dict-program-arguments): Check the system type darwin instead of the feature ns. 2011-11-10 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-dict-coding-system): New user option. * skk-annotation.el (skk-annotation-dict-exec-find) (skk-annotation-exclude-dict-maybe): New functions. (skk-annotation-find-and-show) (skk-annotation-wikipedia-region-or-at-point): Use them. (skk-annotation-start-dict-process): Call `skk-process-kill-without-query' here. Set coding-system-for-read according to skk-annotation-dict-coding-system. 2011-11-10 Tsuyoshi Kitamoto * doc/skk.texi: $BHy=$@5(B. 2011-11-10 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-start-process): Locally set coding-system-for-read. Encode word in utf-8. (skk-annotation-preread-dict): Set skk-annotation-remaining-delay. (skk-annotation-lookup-dict): Do not reset skk-annotation-remaining-delay here. 2011-11-07 Tetsuo Tsukamoto * skk-macs.el (skk-process-kill-without-query): New function. * skk-server.el (skk-open-network-stream): Use it. * skk-annotation.el (skk-annotation-find-and-show): Always call `skk-annotation-show'. (skk-annotation-find-and-show) (skk-annotation-wikipedia-region-or-at-point): Return nil even if `executable-find' causes an error. (skk-annotation-lookup-dict): Call `skk-process-kill-without-query'. 2011-11-07 Tsuyoshi Kitamoto * doc/skk.texi ($BNN0h$NA`:n(B): skk-romaji-*-by-hepburn $B$r(B @defvr. ($BF0E*Jd40(B): skk-dcomp-multiple-activate $B$r99?7(B. ($B30It%3%^%s%I$+$i%"%N%F!<%7%g%s$r * skk-vars.el (skk-annotation-original-buffer): New internal variable. * skk-annotation.el (skk-annotation-sit-for): New function. (skk-annotation-find-and-show, skk-annotation-preread-dict) (skk-annotation-lookup-dict): Use it. Always set process. 2011-11-06 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-delay, skk-annotation-lookup-dict) (skk-annotation-dict-program) (skk-annotation-dict-program-arguments): New user options. (skk-annotation-other-sources): Rename from skk-annotation-wikipedia-sources, which is now defined as an obsolete variable alias. (skk-annotation-remaining-delay, skk-annotation-first-candidate): New variables. * skk.el (skk-start-henkan): When entering henkan-active mode, set skk-annotation-first-candidate to t. * skk-annotation.el (skk-annotation-dict-buffer-format) (skk-annotation-start-dict-process, skk-annotation-preread-dict) (skk-annotation-lookup-dict): New functions. (skk-annotation-find-and-show): If skk-annotation-lookup-dict is non-nil, call them to find an annotation. Wait for skk-annotation-delay before showing the annotation when user is acting quickly. (skk-annotation-wait-for-input): Browse "dict://" instead of "http://" for `dict' annotations. (skk-annotation-message): Modify message. (skk-annotation-wikipedia-1, skk-annotation-wikipedia-cache): When source is `dict', call `skk-annotation-lookup-dict'. (skk-annotation-wikipedia-region-or-at-point): When skk-annotation-dict-program is not available, delete `dict' from skk-annotation-other-sources. 2011-11-06 Tsuyoshi Kitamoto * doc/skk.texi ($B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B, skk-tut-lang) (skk-tooltip-mouse-behavior): $B99?7(B. (skk-tut-use-face, skk-show-num-type-info) (skk-tooltip-parameters): $BDI2C(B. 2011-11-06 Tetsuo Tsukamoto * skk-jisx0201.el: Update comments for JIS X 0201 Roman. 2011-11-05 Tsuyoshi Kitamoto * skk-vars.el (skk-share-private-jisyo): doc string $B$r99?7(B. * doc/skk.texi ($BFI$_$NJd40(B): $B99?7(B. 2011-11-04 Tsuyoshi Kitamoto * doc/skk.texi (skk-extra-jisyo-file-list) ($B<-=q8!:w$N@_Dj$N6qBNNc(B): $B99?7(B. 2011-11-03 Tsuyoshi Kitamoto * skk.el (skk-kana-input): $B%$%s%G%s%H$r=$@5(B. 2011-11-02 Tsuyoshi Kitamoto * doc/skk.texi (skk-read-from-minibuffer-function) ($B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B, $B:F5"E*<-=qEPO?(B) ($B3NDj<-=q(B, $BJQ49$N3X=,(B): $B99?7(B. 2011-11-01 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. 2011-10-31 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. 2011-10-30 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-format-buffer): Fix regexp to detect disambiguation pages. 2011-10-30 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. 2011-10-28 Tsuyoshi Kitamoto * skk-cus.el (skk-cus-params-visual): docstring $B$N(B "$B=u8@E*(B" $B$r(B "$B>iD9$J(B" $B$X(B. * doc/skk.texi (skk-server-portnum): $B5-=R8m$j$r=$@5(B. (skk-customize$B$K$h$k@_DjJQ99(B): @subsection $B2=$7$?(B. (skk-gyakubiki-jisyo-list, $BF0E*Jd40(B): $B=$@5(B. 2011-10-28 Tetsuo Tsukamoto * skk-var.el (skk-verbose, skk-verbose-wait) (skk-verbose-message-interval, skk-verbose-intention-face) (skk-verbose-kbd-face, skk-henkan-on-message): Replace in docstrings "$B=u8@E*(B" to "$B>iD9$J(B" to be more accurate. {These are rather reversions than modifications.} 2011-10-27 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. 2011-10-25 Tsuyoshi Kitamoto * skk-tut.el (skktut-init-variables-alist): $B%A%e!<%H%j%"%k$N5/F0(B $B;~$K(B skk-kcode-method $B$r=i4|2=(B. 2011-10-24 Tsuyoshi Kitamoto * doc/skk.texi (skk-isearch-use-previous-mode): $B5-=R$r99?7(B. * skk.el (skk-setup-shared-private-jisyo): $B%$%s%G%s%H$r@0M}(B. * skk-vars.el (skk-record-file): docstring $B$r99?7(B. 2011-10-23 Tsuyoshi Kitamoto * skk-vars.el (skk-init-file, skk-count-private-jisyo-candidates-exactly) (skk-auto-insert-paren, skk-auto-start-henkan-keyword-list) (skk-delete-implies-kakutei, skk-verbose): docstring $B$r99?7(B. * doc/skk.texi (skk-jisyo-fix-order): $B5-=R$r99?7(B. * skk-annotation.el (skk-annotation-message): (split-string ...) $B$r(B (delete "" (split-string ...)) $B$XJQ99(B [skk 7513]. 2011-10-22 Tsuyoshi Kitamoto * SKK-MK (SKK-MK-what-where): interactive-p() $B$KBe$($F(B noninteractive $B$r;HMQ(B. 2011-10-22 Tsuyoshi Kitamoto * skk-hint.el (skk-hint-setup-hint): $B%a%C%;!<%8$NFbMF$r=$@5(B. * skk-kakasi.el (skk-kakasi-region): $BF1>e(B. * skk.el (skk-record-jisyo-data): docstring $B$r=$@5(B. * doc/skk.texi: $BHy=$@5(B. 2011-10-21 Tsuyoshi Kitamoto * doc/skk.texi: $BHy=$@5(B. 2011-10-18 Tsuyoshi Kitamoto * doc/skk.texi: $BHy=$@5(B. 2011-10-04 Tsuyoshi Kitamoto * doc/skk.texi: $BHy=$@5(B. 2011-08-14 Tetsuo Tsukamoto * skk-emacs.el (skk-tooltip-relative-p): New function. (skk-tooltip-show-at-point): Use it to detect Cocoa Emacs 23. 2011-08-10 Tsuyoshi Kitamoto * bayesian/README.ja: $B%I%-%e%a%s%H$NHy=$@5(B. * bayesian/bskk: $B%I%-%e%a%s%H$NHy=$@5(B. RCS $B$N%-!<%o!<%IE83+(B Id $B$H(B Date $B$rA^F~(B. 2011-07-21 Tsuyoshi Kitamoto * skk-study.el (skk-study-remove-theme): skk-error() $B$KBe$($F(B skk-message() $B$r;HMQ(B. 2011-07-19 Tsuyoshi Kitamoto * skk-azik.el (skk-azik-additional-rom-kana-rule-list): $B!V;R2;(B + $B%T%j%*%I!W$NAH$_9g$;!"6qBNE*$K$O $B$5$s!"(BTeika Kazura $B$5$s$+$i$NDs0F(B [skk 7485]. 2011-07-15 Tsuyoshi Kitamoto * skk-tut.el (skktut-make-windows, skktut-end-tutorial): switch-to-buffer() $B$KBe$($F(B pop-to-buffer() $B$r;HMQ(B. (skktut-end-tutorial): $B=*N;;~%a%C%;!<%8$NJ88@$rHy=$@5(B. 2011-07-14 Tsuyoshi Kitamoto * skk-vars.el (skk-tankan-mode-original-window-configuration): $B?7$?$JJQ?t(B. * skk-tankan.el (skk-tankan): M-x skk-tankan $B * skk-vars.el (skk-update-jisyo-function) (skk-save-jisyo-function): docstring $B$r99?7(B. 2011-07-10 Tsuyoshi Kitamoto * skk.el (skk-kakutei, skk-search-jisyo): $B%3%a%s%H$rDI2C(B. * doc/skk.texi (skk-search-jisyo-file): $B99?7(B. 2011-07-09 Tetsuo Tsukamoto * skk-emacs.el (skk-tooltip-show-at-point): Workaround for NTEmacs with its frame maximized. Eval the frame parameters left and top. 2011-07-09 Tsuyoshi Kitamoto * skk.el (skk-save-jisyo-original, skk-create-file) (skk-get-jisyo-buffer, skk-search-jisyo-file) (skk-compose-ignore-word): $B%3%a%s%H$d(B docstring $B$K5-:\$N$"$C$?C18l(B $B!V%*%W%7%g%s0z?t!W$r!V%*%W%7%g%J%k0z?t!W$XE}0l$7$?(B. * skk-macs.el (skk-erase-prefix): $BF1>e(B. * skk-jisyo-edit-mode.el (skk-edit-private-jisyo): $BF1>e(B. * skk-gadget.el (skk-ad-to-gengo, skk-gengo-to-ad): $BF1>e(B. 2011-07-08 Tsuyoshi Kitamoto * skk-server.el (skk-server-version): skk-error() $B$N0z?t$N=g=x$,5U$G(B $B$"$C$?$?$a!"$3$l$r=$@5(B. 2011-07-02 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. * skk-kcode.el (skk-display-code-for-char-at-point): if() $B$K$D$$$F!"(Bthen $B$G$b(B else $B$G$b(B t $B$rJV$9%3!<%I$G$"$k$?$a!"(Bif() $B$r(B $BH4$1$?$"$H$K(B t $B$rI>2A$9$k$h$&$K$7$?(B. (skk-display-code): "$BH=JL$G$-$J$$J8;z$G$9(B" $B$K$D$$$F!"(Bskk-error() $B$r(B $B$d$a$F%a%C%;!<%82=$7$?(B. $B$3$l$^$G$NI=<(J}K!!J%D!<%k%A%C%W$^$?$O%(%3!<%(%j%"!K$K2C$(!"JL%&%#%s(B $B%I%&$G$NI=<($r%5%]!<%H$7$?(B. skk-show-candidates-always-pop-to-buffer $B$HO"F0$9$k(B. 2011-07-02 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.3.50. 2011-07-01 Tsuyoshi Kitamoto * Version 14.3 Juso released. * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.3. 2011-06-28 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-get-char-data-internal): let $B$G:Q$`2U=j(B $B$r(B let* $B$+$i(B let $B$XJQ99(B. * skk-look.el (skk-look-1): $BF1>e(B. * skk-kcode.el (skk-display-code) (skk-list-chars-find-char-string-for-code): $BF1>e(B. * skk-jisx0201.el (skk-set-okurigana): $BF1>e(B. * skk.el (newline, newline-and-indent): use skk-called-interactively-p instead of interactive-p. 2011-06-26 Tsuyoshi Kitamoto * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.94. 2011-06-26 Tsuyoshi Kitamoto * doc/skk.texi (skk-server-version): ($B%5!<%P%3%s%W%j!<%8%g%s(B): $BDI2C(B. * skk-vars.el (skk-kcode-method): 'this-key $B$rDI2C(B. (skk-server-report-response): docstring $B$r=$@5(B. * skk-kcode.el (skk-input-by-code-or-menu): skk-kcode-method $B$NF0:n$K(B 'this-key $B$rDI2C(B. 2011-06-25 Tsuyoshi Kitamoto * skk-macs.el (skk-fit-window): New function. * skk-annotation.el (skk-annotation-show-buffer): Use it. * skk.el (skk-henkan-show-candidates-buffer) (skk-show-num-type-info): Use it. 2011-06-23 Tsuyoshi Kitamoto * doc/skk.texi (skk-henkan-face): $B2CI.(B. (skk-make-face): $B=$@5(B. 2011-06-21 Tsuyoshi Kitamoto * doc/skk.texi (skk-kcode-method): $BDI2C(B. * skk-kcode.el (skk-list-chars-next-line) (skk-list-chars-previous-line): $B%3!<%I$N8+D>$7(B. 2011-06-19 Tetsuo Tsukamoto * skk-kcode.el (skk-list-chars): Move to skk-list-chars-default-charstr if it is set. (skk-list-chars-jump): Rename from `skk-list-chars-move-to-char'. (skk-list-chars-move-to-char): Redefine as a function to just move point. * skk-vars.el (skk-list-chars-mode-map): Modify for `skk-list-chars-jump'. (skk-list-chars-default-charstr): New variable. 2011-06-19 Tetsuo Tsukamoto * skk-kcode.el (skk-input-by-code-or-menu): Redefine to check skk-kcode-method. (skk-kcode-read-code-string, skk-kcode-parse-code-string) (skk-kcode-find-char-string, skk-list-chars-move-to-char): New functions. (skk-list-chars-code-input): Call `skk-list-chars-move-to-char' with the optional arg non-nil. (skk-display-code): Use `skk-char-charset'. * skk-macs.el (skk-char-charset): New function. * skk-vars.el (skk-kcode-method): New user option. (skk-list-chars-mode-map): Define "g" for `skk-list-chars-move-to-char'. 2011-06-18 Tsuyoshi Kitamoto * skk-vars.el (skk-tooltip-x-offset, skk-tooltip-y-offset) (skk-tut-lang): docstring $B$r=$@5(B. * doc/skk.texi (skk-tut-lang, skk-hint-start-char) (skk-tooltip-hide-delay): $BDI2C(B. ($BJQ490LCV$N;XDjJ}K!(B): $B99?7(B. 2011-06-16 Tsuyoshi Kitamoto * doc/skk.texi (skk-annotation-browse-key): $BDI2C(B. 2011-06-15 Tetsuo Tsukamoto * doc/skk.texi: Modify for ja-dic. 2011-06-12 Tetsuo Tsukamoto * skk-cus.el (skk-cus-set): Accept an optional arg ALIST. * skk-jisyo-edit-mode.el: Require skk-cus instead of custom and cus-edit. (skk-edit-private-jisyo): Call `skk-cus-set' instead of directly calling `custom-save-all'. (skk-jisyo-edit-mode): Move the previous docstring change describing the local key bindings to the docstring of `skk-edit-private-jisyo' which actually binds these keys. 2011-06-12 Tetsuo Tsukamoto * skk-vars.el (skk-jisyo-edit-user-accepts-editing): New Variable. * skk-jisyo-edit-mode.el: Require custom, cus-edit and skk-vars. Require skk-macs at compile time. (skk-edit-private-jisyo): Check skk-jisyo-edit-user-accepts-editing to know if user really wants to edit the private dictionary at her/his own risk. 2011-06-12 Tsuyoshi Kitamoto * skk-jisyo-edit-mode.el (skk-edit-private-jisyo):$B * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.93. 2011-06-11 Tsuyoshi Kitamoto * skk-setup.el.in: 2011-05-20 $B$N!V%-!<%P%$%s%I(B C-f10 $B$K(B skk-edit-private-jisyo $B$r3d$jEv$F!W$OC$7$^$9(B. * skk-vars.el (skk-tooltip-face): docstring $B$r=$@5(B. (skk-display-code-tankan-radical-face) (skk-display-code-tankan-annotation-face) (skk-list-chars-face, skk-list-chars-table-header-face): New face. (skk-verbose-kbd-face): $BB0@-(B inverse-video $B$rC$7!"%G%U%)%k%H(B $B?'$rM?$($?(B. (skk-verbose-intention-face): $BB0@-(B bold $B$r(B t $B$H$7$F$_$?(B. * skk-kcode.el: require font-lock $B$rL58z2=(B($B%3%a%s%H2=(B). (skk-display-code): skk-display-code-tankan-radical-face, skk-display-code-tankan-annotation-face $B$rF3F~(B. (skk-list-chars-sub): skk-list-chars-table-header-face $B$rF3F~(B. (skk-list-chars): skk-list-chars-face $B$rF3F~(B. * doc/skk.texi: skk-jisyo-registration-badge-face, skk-display-code-tankan-radical-face, skk-display-code-tankan-annotation-face, skk-list-chars-face, skk-list-chars-table-header-face $B$K4X$9$k5-=R$rDI2C(B. skk-input-by-code-or-menu $B$K4X$9$k5-=R$rI|3h(B. 2011-06-10 Tsuyoshi Kitamoto * skk-vars.el (skk-jisyo-registration-badge-face) :New face. (skk-verbose-kbd-face): $BB0@-(B inverse-video $B$r(B t $B$H$7$F$_$?(B. * skk.el (skk-henkan-in-minibuff): Use skk-jisyo-registration-badge-face. * context-skk.el (context-skk-insert): message $B4X?t$N;H$$J}$r=$@5(B. * skk-vars.el (skk-rom-kana-base-rule-list): 2010-12-09 $B$N(B commit $B$rD{@5!#(B\ $B$N%?%$%W$O(B skk-input-by-code-or-menu $B$N5/F0$KLa$9(B. 2011-06-10 Tetsuo Tsukamoto * skk.el (skk-toggle-isearch-mode): message $B4X?t$N;H$$J}$r=$@5(B. [skk 7438]. 2011-06-09 Tetsuo Tsukamoto * skk-kcode.el (skk-display-code, skk-input-by-code-or-menu-jump): Add missing format strings to `message'. * skk-vars.el (skk-menu-items): Ditto. 2011-06-09 Tsuyoshi Kitamoto * skk-vars.el (skk-verbose-intention-face, skk-verbose-kbd-face): New face. * skk-annotation.el (skk-annotation-message): Use new face. * skk.el (skk-setup-verbose-messages): Use new face. * doc/skk.texi: $B>e5-(B face $B$K4X$9$k5-=R$rDI2C(B. * skk.el (skk-toggle-isearch-mode): $B4X?t(B message $B$NBh(B1$B0z?t$K(B "%s" $B$r(B $BIU2C(B. * skk-annotation.el (skk-annotation-save-and-quit) (skk-annotation-quote): $BF1>e(B. * skk-macs.el (ignore-errors): 2011-06-04 $B$NJQ99$rC$7(B. [skk 7427]. 2011-06-08 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia): Also search "Word" for "word". This is needed for proper nouns. (skk-annotation-wikipedia-1) (skk-annotation-wikipedia-normalize-word): Take an optional arg PRESERVE-CASE. 2011-06-08 Tsuyoshi Kitamoto * skk-vars.el (skk-kakutei-jisyo, skk-search-prog-list) (skk-jisyo-updated, skk-rom-kana-rule-list): docstring $B$r=$@5(B. 2011-06-06 Tsuyoshi Kitamoto * skk-inline.el (skk-add-background-color): $B0z?t(B COLOR $B$N%A%'%C%/$r(B $B873J$K$9$k$?$a(B color-defined-p $B$rDI2C(B. 2011-06-05 Tsuyoshi Kitamoto * skk-annotation.el (skk-annotation-save-and-quit) (skk-annotation-quote): $BM>J,$J(B %s $B$r:o=|(B. * skk-macs.el (skk-message, skk-error, skk-yes-or-no-p) (skk-y-or-n-p): Update docstring. * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.92. 2011-06-05 Tsuyoshi Kitamoto * doc/skk.texi (skk-search-excluding-word-pattern-function): $BDI2C(B. * skk-vars.el (skk-search-excluding-word-pattern-function): Update docstring. * skk.el (skk-update-jisyo-p): Update docstring. 2011-06-04 Tsuyoshi Kitamoto * skk-macs.el (ignore-errors): GNU Emacs 22 $B0J2<$N>l9g$K(B defmacro $B$7$F$$$^$7$?$,!"(BGNU Emacs 21.4 (cl-macs.el) $B$K$bB8:_$7$F$*$jIaDL$K(B $B;H$($k$3$H$+$i!"(Bskk-macs.el $B$+$i$O:o=|$7$?!#(B * skk-vars.el (skk-read-from-minibuffer-function): Update docstring. * skk-macs.el (skk-downcase): Update docstring. * doc/skk.texi (skk-read-from-minibuffer-function): $BDI2C(B. * skk-tut.el (skktut-init-variables-alist): $B=i4|2=BP>]$NJQ?t$H$7$F(B skk-dcomp-multiple-activate, skk-read-from-minibuffer-function, skk-verbose, debug-on-error $B$rDI2C(B. * skk.el (skk-ovwrt-len, skk-compute-henkan-lists): Use line-end-position instead of (progn (end-of-line) (point)). * skk-tut.el (skktut-next-answer-buffer, skktut-today): Ditto. * skk-server-completion.el (skk-server-completion-search-midasi): Ditto. * skk-auto.el (skk-okuri-search-subr-original): Ditto. * skk-annotation.el (skk-annotation-last-word-1): Ditto. * skk-auto.el, skk-isearch.el, skk-lookup.el, skk-num.el, skk-study.el: * skk-tankan.el, skk-vars.el, skk.el: function foo $B$r(B #'foo $B$X$H=q$-49$((B. * skk-annotation.el, skk-comp.el, skk-cursor.el, skk-cus.el: * skk-develop.el, skk-gadget.el: * skk-isearch.el, skk-jisx0201.el, skk-jisyo-edit-mode.el: * skk-kcode.el, skk-macs.el, skk-num.el, skk-server-completion.el: * skk-tankan.el, skk-tut.el, skk-vars.el, skk.el: lambda $B$O%^%/%mE83+$G(B function $BIU2C$5$l$k$?$a(B #' $B$OITMW(B. 2011-06-02 Tsuyoshi Kitamoto * skk-emacs.el (skk-emacs-menu-replace, skk-tooltip-resize-text): $B%3!<%I$N@0M}(B. * skk-tankan.el (skk-tankan-select-tankanji-kouho): Use cddr instead of cdr cdr. * skk-kcode.el (skk-input-by-code-or-menu-jump): Ditto. * skk-emacs.el (skk-emacs-mouse-position): Ditto. * skk-study.el (skk-study-check-alist-format-1): Use cdar instead of cdr car. * skk-num.el (skk-num-convert): Ditto. * skk.el (skk-current-kuten, skk-nunion): Use cadr instead of car cdr. * skk-macs.el (eval-when-compile, eval-when-compile): Ditto. * skk-kcode.el (skk-input-by-code-or-menu-jump): Ditto. * skk-emacs.el (skk-emacs-mouse-position): Ditto. * skk-study.el (skk-study-check-alist-format-1): Use caar instead of car car. * skk-kcode.el (skk-input-by-code-or-menu-jump): Ditto. * skk-gadget.el (skk-default-current-date): Ditto. 2011-06-01 Tsuyoshi Kitamoto * skk.el (skk-setup-jisyo-buffer, skk-kana-input) (skk-jisx0208-latin-insert, skk-henkan-show-candidate-subr) (skk-check-size-and-do-save-jisyo): Use zerop instead of `= foo 0'. * skk-xemacs.el (skk-xemacs-balloon-help-resize-help-frame): ditto. * skk-tankan.el (skk-tankan-select-tankanji-kouho): ditto. * skk-study.el (skk-study-search-1, skk-study-read-1): ditto. * skk-lookup.el (skk-lookup-process-okurigana): ditto. * skk-look.el (skk-look-1): ditto. * skk-kcode.el (skk-list-chars-sub): ditto. * skk-isearch.el (skk-isearch-redo-function): ditto. * skk-hint.el (skk-previous-candidate): ditto. * skk-dcomp.el (skk-dcomp-multiple-get-candidates) (skk-dcomp-multiple-show): ditto. * skk-comp.el (skk-comp-do): ditto. 2011-05-31 Tsuyoshi Kitamoto * skk-macs.el (skk-key-binding-member): $BITMW$J(B lambda $B$r:o=|(B. * skk-tankan.el (skk-tankan-select-tankanji-kouho): lambda $B$r(B #'lambda $B$XJQ99(B. 2011-05-30 Tsuyoshi Kitamoto * skk-macs.el (skk-delete-overlay): New macro. (skk-inline-hide): Remove function. * skk-dcomp.el (skk-dcomp-multiple-hide): Remove function. (skk-dcomp-cleanup-buffer, skk-dcomp-multiple-show) (skk-dcomp-before-kakutei, skk-dcomp-after-delete-backward-char): Use macro skk-delete-overlay. * skk-inline.el (skk-inline-hide-1): Remove function. (skk-inline-show): Use macro skk-delete-overlay. * skk.el (skk-henkan, skk-henkan-in-minibuff): Use macro skk-delete-overlay. 2011-05-29 Tsuyoshi Kitamoto * skk-develop.el (before-init-hook): $BITI,MW$J%-!<%o!<%I$r:o=|(B. * skk-comp.el (skk-comp-search-current-buffer) (skk-comp-re-search-current-buffer): $B%$%s%G%s%H$r@07A(B. (skk-comp-by-history): Use function skk-remove-duplicates. * skk-emacs.el (skk-emacs-prepare-menu) (skk-emacs-prepare-modeline-properties): $B%$%s%G%s%H$r@07A(B. * skk-vars.el (skk-list-chars-original-window-configuration): New Variable. * skk-kcode.el (skk-list-chars-quit): Use skk-list-chars-original-window-configuration. (skk-list-chars-insert): $BA^F~@h%P%C%U%!$r(B buffer-live-p $B$G3NG'(B. * skk-annotation.el (skk-annotation-message): $B=u8@E*%a%C%;!<%8$r(B face $B$G?'IU$1$7$?(B. (skk-annotation-insert): docstring $B$rIU2C$7$?(B. (skk-annotation-get): $B%3!<%I8+D>$7(B. * skk.el (skk-setup-verbose-messages): $B=u8@E*%a%C%;!<%8$r(B face $B$G?'IU$1$7$?(B. 2011-05-28 Tsuyoshi Kitamoto * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.91. 2011-05-28 Tsuyoshi Kitamoto * skk-vars.el (XXX workaround): while $B$+$i(B dolist $B$XJQ99(B. * skk-tankan.el (skk-tankan): while $B$+$i(B dolist $B$XJQ99(B. * skk-num.el (skk-num-flatten-list): while $B$+$i(B dolist $B$XJQ99(B. * skk-kcode.el (skk-list-chars): while $B$+$i(B dotimes $B$XJQ99(B. * skk-gadget.el (skk-today-execute-char): while $B$+$i(B dolist $B$XJQ99(B. * skk.el (skk-remove-minibuffer-setup-hook, skk-setup-auto-paren) (skk-kill-local-variables, skk-search-extra-jisyo-files) (skk-remove-duplicates): while $B$+$i(B dolist $B$XJQ99(B. (skk-define-j-mode-map, skk-define-jisx0208-latin-mode-map) (skk-define-abbrev-mode-map): while $B$+$i(B dotimes $B$XJQ99(B. (skk-mode-exit, skk-setup-charset-list, skk-setup-verbose-messages): $B%3!<%I8+D>$7(B. 2011-05-27 Tsuyoshi Kitamoto * skk.el (skk-get-jisyo-buffer): $B%$%s%G%s%H$r@07A(B. (skk-search, skk-numeric-program-p, skk-search-server) (skk-update-jisyo-original, skk-quote-char): docstring $B$r=$@5(B. (skk-undo-kakutei): skk-error $B$r=|5n(B. (skk-mode-exit): $B%3!<%I8+D>$7(B. 2011-05-25 Tsuyoshi Kitamoto * skk.el (skk-mode-exit): $B%3!<%I8+D>$7(B. (skk-ovwrt-len): $BITMW$J(B let $B$r:o=|(B. (skk-insert-str): skk-ovwrt-len $B$N8F$S=P$7J}K!$rJQ99(B. (skk-kakutei-cleanup-buffer): skk-ovwrt-len $B$N8F$S=P$7J}K!$rJQ99(B. (skk-show-num-type-info): Use fit-window-to-buffer except XEmacs 21.4. 2011-05-24 Tsuyoshi Kitamoto * skk.el (skk-toggle-kutouten): $B%a%C%;!<%8=g$r!V6gE@(B $BFIE@!W$+$i(B $B!VFIE@(B $B6gE@!W$X(B $BJQ99(B. (skk-search-jisyo): $BITMW$J(B progn $B$r:o=|(B. (skk-mode-exit): skk-mode $B$rH4$1$?:]$O(B *$B8uJd(B*$B%P%C%U%!$H(B *SKK annotation*$B%P%C%U%!$r:o=|$9$k$h$&JQ99$7$?(B. 2011-05-23 Tsuyoshi Kitamoto * skk-macs.el (skk-multiple-line-string-width): $B:o=|(B. * skk.el (skk-henkan-show-candidate-subr): skk-multiple-line-string-width $B$KBe$($F(B skk-max-string-width $B$r;HMQ(B. 2011-05-22 Tsuyoshi Kitamoto * skk.el (skk-multiple-line-string-width): skk-macs.el $B$X0\F0(B. (skk-kakutei-cleanup-buffer): $B%$%s%G%s%H$r@07A(B. * skk-macs.el (skk-max-string-width): New function. (skk-multiple-line-string-width): skk.el $B$+$i0\F0(B. * skk-inline.el (skk-inline-show-vertically): Use skk-max-string-width. (skk-inline-show-vertically): $B%$%s%G%s%H$r@07A(B. * skk-dcomp.el (skk-dcomp-multiple-show): Use skk-max-string-width. (skk-dcomp-do-completion, skk-kana-input, skk-comp-previous) (skk-comp, skk-comp-do): $B%$%s%G%s%H$r@07A(B. * skk-kcode.el (skk-display-code): Use replace-regexp-in-string. 2011-05-22 Tsuyoshi Kitamoto * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.90. 2011-05-22 Tsuyoshi Kitamoto * doc/skk.texi (skk-tooltip-face): $B5-=R$r=$@5(B. * skk-vars.el (skk-tooltip-face): docstring $B$r=$@5(B. * skk-emacs.el (skk-tooltip-show-at-point, skk-tooltip-show-1): docstring $B$rDI2C(B. * skk.el (skk-henkan-show-candidates) (skk-henkan-show-candidate-subr, skk-henkan-in-minibuff) (skk-show-num-type-info, skk-kakutei-initialize): $B%=!<%9%3!<%I$N%$%s%G%s%H$r=$@5(B. 2011-05-21 Tsuyoshi Kitamoto * skk-dcomp.el (skk-dcomp-multiple-show): $B%3%a%s%H$r=$@5(B. * skk.el (skk-kill-emacs-without-saving-jisyo): docstring $B$H(B $B%a%C%;!<%8$r=$@5(B. (skk-multiple-line-string-width): $B5!G=$OJQ$($:%=!<%9%3!<%I$r8+D>$7$?(B. 2011-05-20 Tsuyoshi Kitamoto * skk-vars.el (skk-auto-okuri-process): docstring $B$r99?7(B. * skk-jisyo-edit-mode.el (skk-jisyo-edit-mode): docstring $B$r99?7(B. (skk-edit-private-jisyo): $B4J0W$J%,%$%@%s%9$rI=<((B. * skk-setup.el.in: $B%-!<%P%$%s%I(B C-f10 $B$K(B skk-edit-private-jisyo $B$r(B $B3d$jEv$F(B. 2011-05-19 Tsuyoshi Kitamoto * skk.el (skk-mode): docstring $B$r99?7(B. * skk-vars.el (skk-background-mode): docstring $B$r99?7(B. (skk-auto-start-henkan-keyword-list): docstring $B$r99?7(B. 2011-05-18 Tsuyoshi Kitamoto * SKK-MK (SKK-MK-generate-autoloads-el): kill-buffer $B$NA0$K(B set-buffer-modified-p $B$r(B nil $B$H$7$?(B. 2011-05-16 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Undo the previous changes. instead, set buffer-file-name. 2011-05-15 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Call `autoload-generate-file-autoloads' if it is defined instead of `generat-file-autoloads'. * skk-comp.el (skk-comp-get-regexp): Add autoload cookie. 2011-05-15 Tsuyoshi Kitamoto * doc/skk.texi: $B?7JQ?t(B context-skk-mode-off-message $B$K4X$9$k5-=R(B. * context-skk.el: RCS $B$N%-!<%o!<%IE83+(B Id $B$H(B Date $B$rA^F~(B. (context-skk-mode-off-message): New variable. 2011-05-08 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Set generated-autoload-file under Emacs 24 or later. * skk-annotation.el (skk-annotation-wikipedia-1): If `url-queue-retrieve' is defined, call it instead of `url-retrieve'. 2011-05-04 Tsuyoshi Kitamoto * skk.el (skk-henkan-skk-region-by-func): typo docstring. (skk-setup-modeline, skk-henkan-1, skk-henkan-show-candidates) (skk-previous-candidate, skk-kakutei, skk-update-jisyo-1) (skk-katakana-region, skk-hiragana-region) (skk-jisx0208-latin-region, skk-latin-region) (skk-henkan-skk-region-by-func): $B%=!<%9%3!<%I$N%$%s%G%s%H$r=$@5(B. (skk-make-face): $B5!G=$OJQ$($:!"%=!<%9%3!<%I$r8+D>$7$?(B. 2011-05-03 Tsuyoshi Kitamoto * skk-vars.el (skk-inhibit-ja-dic-search, skk-jisyo-save-count) (skk-jisyo-updated, skk-kuten-touten-alist): docstring $B$r99?7(B. * skk-tankan.el (skk-tankan-search, skk-tankan-bushu-compread): docstring $B$r99?7(B. * skk-server.el (skk-search-server-1): docstring $B$r99?7(B. * skk-macs.el (skk-string<=): docstring $B$r99?7(B. * skk-kcode.el (skk-make-string): docstring $B$r99?7(B. * skk-kakasi.el (skk-hurigana-1): $B%$%s%G%s%H$r@07A(B. (skk-romaji-region, skk-romaji-message): docstring $B$r99?7(B. * skk-gadget.el (skk-clock): docstring $B$r99?7(B. (skk-ad-to-gengo-1): typo (Unkown -> Unknown). * doc/skk.texi: skk-comp-lisp-symbol $B$N5-=R$rDI2C(B. * skk-comp.el (skk-comp-lisp-symbol, skk-search-smart-find) (skk-search-lisp-symbol): docstring $B$r99?7(B. * skk-annotation.el (skk-annotation-add) (skk-annotation-wikipedia-region-or-at-point): docstring $B$r99?7(B. 2011-05-01 Tsuyoshi Kitamoto * doc/skk.texi ($BJQ495Z$S8D?M<-=q$K4X$9$kE}7W(B): $B99?7(B. * skk-vars.el (skk-dcomp-multiple-activate, skk-gengo-alist) (skk-month-alist, skk-day-of-week-alist, skk-isearch-mode-enable) (skk-isearch-mode-string-alist, skk-isearch-start-mode) (skk-isearch-initial-mode-when-skk-mode-disabled) (skk-show-inline, skk-inline-show-face) (skk-inline-show-background-color, skk-delete-okuri-when-quit) (skk-kakutei-early, skk-henkan-okuri-strictly, skk-keep-record) (skk-record-file, skk-preload, skk-status-indicator) (skk-latin-mode-string, skk-hiragana-mode-string) (skk-katakana-mode-string, skk-jisx0208-latin-mode-string) (skk-abbrev-mode-string, skk-emacs-id): docstring $B$r99?7(B. 2011-05-01 Tsuyoshi Kitamoto * doc/skk.texi: skk-share-private-jisyo $B$N5-=R$rDI2C(B. * skk-vars.el: docstring $BFb$NMQ8l!V<-=q%5!<%P!e(B. * skk-server-completion.el: $BF1>e(B. 2011-04-30 Tetsuo Tsukamoto * skk-macs.el (skk-called-interactively-p): Update. 2011-04-26 Tsuyoshi Kitamoto * skk-vars.el (skk-inhibit-ja-dic-search): docstring $B$r99?7(B. * doc/skk.texi: $BJQ?t(B skk-inhibit-ja-dic-search $B$H(B $B4X?t(B skk-search-ja-dic $B$K$D$$$F!"5-=R$rDI2C(B. docstring $B$+$i@Z$jE=$j$7$?$@$1$G$9$N$G!"$b$&>/$78+D>$7$^$9!#(B 2011-04-23 Tsuyoshi Kitamoto * skk-server.el (skk-server-version): skk-called-interactively-p $B$N0z?t$r(B 'any $B$+$i(B 'interactive $B$X$HJQ99(B [skk 7420]. * skk-tut.el (kill-buffer-hook): Ditto. * skk-version.el (skk-version): Ditto. * skk.el (skk-toggle-kutouten, skk-count-jisyo-candidates) (skk-count-jisyo-candidates-original): Ditto. 2011-04-20 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2011-04-18 Tsuyoshi Kitamoto * skk.el (skk-start-henkan, skk-backward-and-set-henkan-point): Fix docstring (use \\[universal-argument] instead of C-u). * skk-vars.el (skk-tut-lang): Ditto. * skk-tankan.el (skk-tankan): Ditto. * skk-annotation.el (skk-annotation-add): Ditto. 2011-04-17 Tsuyoshi Kitamoto * skk-study.el (skk-study-switch-current-theme): Fix docstring. 2011-04-17 Tsuyoshi Kitamoto * skk-macs.el (skk-called-interactively-p): New macro. interactive-p is an obsolete function (as of Emacs 23.2). use called-interactively-p instead. * skk-server.el (skk-server-version): use skk-called-interactively-p instead of interactive-p. * skk-tut.el (kill-buffer-hook): Ditto. * skk-version.el (skk-version): Ditto. * skk.el (skk-toggle-kutouten): Ditto. (skk-count-jisyo-candidates): Ditto. (skk-count-jisyo-candidates-original): Ditto. 2011-04-14 Tsuyoshi Kitamoto * doc/skk.texi: Add skk-study-switch-current-theme, skk-study-remove-theme, skk-study-copy-theme. 2011-04-09 Tsuyoshi Kitamoto * SKK-MK: Fix [skk 7393] remove-hook 'kill-emacs-hook 'skk-save-jisyo. 2011-03-27 Tetsuo Tsukamoto Suggested by Tatsuya Kinoshita . * experimental/skk-study.el: No longer in the repository. * skk-study.el: Install the experimental version. * experimental/GUIDELINE: Update. 2011-03-22 Tetsuo Tsukamoto * skk-vars.el (skk-tut-file): Fix docstring so as to advise users to specify the Japanese tutorial file. (skk-tut-lang): New user option. (skk-tut-file-alist): Abolish. (skk-tut-file-suffix-alist, skk-tut-current-lang): New variables. * skk-tut.el (skk-tut-find-tut-file, skk-tut-nicola-p): New functions. (skktut-init-variables-alist): Use `skk-tut-nicola-p'. (skktut-enable-tutmap): Ditto. (skk-tutorial): Set skk-tut-current-lang. Call `skk-tut-find-tut-file'. (skktut-nicola-tut-file): Specify file name sans directory. (skktut-setup-working-buffer): Accept an argument. 2011-03-21 Tetsuo Tsukamoto * skk-cdb.el (skk-search-cdb-jisyo): Check cdb-path instead of skk-cdb-large-jisyo. * skk-tankan.el (skk-search-tankanji): Do not try to find SKK-JISYO.L or SKK-JISYO.L.cdb. Call `skk-search-ja-dic-maybe' if no other methods are available. 2011-02-21 Tatsuya Kinoshita * experimental/skk-study.el: Do not require pym. Add defvar for jka-compr-compression-info-list and print-quoted at compile time. Use kill-emacs-hook instead of skk-before-kill-emacs-hook. (ring-elements): Remove definition for Emacs 20. (skk-study-save, skk-study-read-1): Remove APEL dependencies. Use `skk-string<' instead of `string<'. 2011-01-23 Tsuyoshi Kitamoto * doc/skk.texi: $B8m;z$N=$@5!"%=!<%9$N@07A(B. 2011-01-15 Tsuyoshi Kitamoto * skk.el (skk-insert-str): Docstring $B$r=$@5(B. (skk-auto-start-henkan): Docstring $B$r=$@5(B. (skk-what-char-type): Docstring $B$r=$@5(B. 2010-01-13 Tetsuo Tsukamoto * skk.el (skk-preload): Rewrite the docstring bacause 1) the original one was based on the old version of the function and was not complete, and 2) the previous modification by Mr. Tsuyoshii Kitamoto contains some misunderstandings. Of course I appreciate his efforts on improvement of the document so much. Please consult me if there remains any issue about it. (skk-preload-jisyo): Undo the previous indent fix which I believe is unnecessary, even though I really appreciate his attitude toward better and more readble codes. Please feel free to consult me if anyone still thinks it is important. 2011-01-12 Tsuyoshi Kitamoto * skk.el (skk-preload): modify docstring. (skk-preload-jisyo): modify indent. (skk-make-face): modify indent. 2011-01-10 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code-for-char-at-point): interactive. (skk-list-chars): interactive. 2011-01-08 Teika Kazura * doc/skk.texi: Update. 2011-01-07 Tsuyoshi Kitamoto * SKK-CFG: Update comment. * doc/skk.texi: Add $BBPOCE*$J%$%s%9%H!<%k(B. * SKK-MK (SKK_INFO_DIR_FILE): New variable. (SKK-MK-install-info-1): Separate from SKK-MK-install-info. (DDSKK_Interactive_Installer): New. 2011-01-05 Tsuyoshi Kitamoto * SKK-MK (SKK-MK-make-setup-file): search-forward $B<:GT$N860x$G$"$C$?(B STRING $B0c$$(B "Initial setup for SKK" $B$r(B "initial setup for SKK" $B$X=$@5(B. skk-setup.el.in $B$H$N@09g@-$r?^$C$?(B. (SKK-MK-install-info): Fix indent. 2011-01-03 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-bushu-compread): introduce skk-tankan-face. * skk.el (skk-insert): Add comment. 2011-01-03 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.2.50. 2011-01-01 Tsuyoshi Kitamoto * Version 14.2 Mikuni released. * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.2. 2010-12-29 Tsuyoshi Kitamoto * SKK-CFG: Update comment. * doc/skk.texi: Update. 2010-12-26 Tsuyoshi Kitamoto * skk-jisyo-edit-mode.el (skk-edit-private-jisyo): Fix string. * doc/skk.texi: Update. * skk.el (skk-start-henkan): Fix docstring. (skk-backward-and-set-henkan-point): Fix docstring. (skk-check-size-and-do-save-jisyo): Fix docstring. * skk-vars.el (skk-cursor-abbrev-color): Fix string. (skk-kcode): Fix string. * skk-emacs.el (skk-emacs-menu-resource-ja): Fix string. 2010-12-25 Tsuyoshi Kitamoto * skk-vars.el: Update comment. * skk-comp.el: Update comment. * doc/skk.texi: Update. 2010-12-25 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.1.93. 2010-12-23 Tsuyoshi Kitamoto * skk.el (skk-latin-mode): Fix docstring. (skk-jisx0208-latin-mode): Fix docstring. (skk-toggle-characters): Fix docstring. (skk-henkan-in-minibuff): Fix prompt message. * doc/skk.texi (skk-dcomp-multiple-activate): Update. 2010-12-21 Tsuyoshi Kitamoto * skk-kcode.el (skk-list-chars-forward, skk-list-chars-backward): Remove. (skk-list-chars-sub): Propertize mouse-face 'highlight when insert char. * skk-vars.el (skk-list-chars-skip-chars): Remove. (skk-list-chars-mode-map): Use next-completion/previous-completion instead of skk-list-chars-forward/skk-list-chars-backward. (skk-display-code-[prompt|char]-face): Update docstring. * doc/skk.texi: Add skk-tankan-face, skk-display-code-prompt-face and skk-display-code-char-face. 2010-12-19 Tsuyoshi Kitamoto * skk-vars.el (skk-tankan-face): New face. (skk-tankan-overlay): New variable. (skk-display-code-prompt-face): New face. (skk-display-code-char-face): New face. * skk-tankan.el (skk-tankan-overlay): New function. (skk-tankan-mode-prev, skk-tankan-mode-next): Use skk-tankan-overlay. (skk-tankan): Use skk-tankan-face. * skk-kcode.el (skk-display-code): Use skk-display-code-prompt-face and skk-display-code-char-face. 2010-12-17 Tsuyoshi Kitamoto * skk-vars.el (skk-search-prog-list): $BI8=`$K(B skk-tankan-search $B$r2C$($?(B. * doc/skk.texi: Add skk-save-jisyo-instantly. Update FAQ. 2010-12-17 Yu-ji Hosokawa * skk-vars.el (skk-save-jisyo-instantly, skk-jisyo-updated): New variable. (skk-inhibit-ja-dic-search): Fix docstring. * skk.el (skk-henkan-in-minibuff, skk-update-jisyo): Use it. 2010-12-16 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk-macs.el (skk-find-coding-system): Add docstring. 2010-12-12 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk-annotation.el: Update comment. * skk-vars: Insert new line for legible. * skk-tankan.el (skk-search-by-stroke-or-radical): Update Docstring. * skk-kcode.el (skk-list-chars-mode): Update comment. (skk-list-chars-other-charset): intern $B$KBe$($F(B intern-soft $B$r;HMQ(B. 2010-12-12 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.1.92. 2010-12-12 Tsuyoshi Kitamoto * skk-kcode.el (skk-list-chars-next-line): Skip separate line. (skk-list-chars-previous-line): Ditto. * skk-vars.el (skk-list-chars-mode-map): Add C-f, C-b, C-n, C-p. 2010-12-11 Tetsuo Tsukamoto * skk-kcode.el: Require font-lock at compile time. (skk-display-code, skk-list-chars): Require font-lock. (skk-list-chars): Workaround for XEmacs. Refer to variable font-lock-doc-face instead of directly using the face with the same name. 2010-12-11 Tsuyoshi Kitamoto * doc/skk.texi: Update for $BJ8;z%3!<%IF~NO(B. * skk-tankan.el (skk-search-by-stroke-or-radical): $BIt * skk-tankan.el (skk-tankan): $B%3!<%I8+D>$7!#(B * skk-kcode.el (skk-list-chars-code-input): New function. (skk-list-chars-code-input-1): New function. (skk-list-chars): C-u \ $B$G(B $B%+!<%=%k0LCV$NJ8;z$r0z?t$K(B skk-list-chars $B$r * skk-vars.el (skk-rom-kana-base-rule-list): \ $B$N * skk-kcode.el (skk-list-chars): New function. to execute with type C-u $. 2010-12-05 Tsuyoshi Kitamoto * skk-kcode.el (skk-input-by-code-or-menu): $B7ZHy$J=$@5!#(B (skk-display-code): $B7ZHy$J=$@5!#(B 2010-12-04 Tsuyoshi Kitamoto * doc/skk.texi: Replace string from $B4A;z%3!<%I(B to $BJ8;z%3!<%I(B. * skk-kcode.el (skk-input-by-code-or-menu): JIS X 0213 $B$N#2LL$N6hE@(B $BHV9f$rF~NO2DG=$H$7$?!#7A<0(B 00-00-00 $B$r#2LL$H$_$J$9!#(B Unicode $B$NId9f0LCV$rF~NO2DG=$H$7$?!#7A<0(B U+nnnnn $B!#(B (skk-char-to-hex): $B%3!<%I8+D>$7!#(B (skk-display-code): $B?'IU$1(B (font-lock-keyword-face) $B$7$F8+$d$9$/$7$?!#(B 2010-12-02 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-test-html-tag): Bind coding-system-for-write while calling gzip. * skk-inline.el (skk-inline-hide-1): Rename from `skk-inline-hide'. * skk-macs.el (skk-inline-hide): New function. Call `skk-inline-hide-1'. 2010-12-02 Tetsuo Tsukamoto * doc/skk.texi: Update for skk-search-katakana, skk-search-sagyo-henkaku, skk-extra-jisyo-file-list, and ja-dic. * skk-annotation.el (skk-annotation-wikipedia-test-html-tag): New function separated from skk-annotation-wikipedia-retrieved. Check if the html data ends with . Prior to the test gunzip the data if it is gzipped. 2010-12-02 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): Display UNICODE. 2010-12-01 Tetsuo Tsukamoto * doc/skk.texi: Update. * Makefile, SKK-MK: Remove codes related to skk-dic.el.in. * skk-dic.el.in: No longer in the repository. * skk-emacs.el (skk-search-ja-dic): New function. * skk-vars.el (skk-inhibit-ja-dic-search) (skk-extra-jisyo-file-list, skk-search-katakana) (skk-search-sagyo-henkaku): New user options. (skk-search-prog-list): Add `skk-search-ja-dic-maybe', `skk-search-extra-jisyo-files', `skk-search-katakana-maybe' and `skk-search-sagyo-henkaku-maybe'. (skk-tooltip-face): Change group to `skk-tooltip'. * skk.el (skk-search-extra-jisyo-files, skk-search-katakana-maybe) (skk-search-sagyo-henkaku-maybe, skk-search-ja-dic-maybe) (skk-preload-jisyo): New functions. (skk-preload): Also preload jisyo files specified in skk-extra-jisyo-file-list. (skk-search-katakana, skk-search-romaji): Do not do search when user inputs prefix/suffix. 2010-12-01 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-30 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-29 Tsuyoshi Kitamoto * skk-tankan.el: Update comment. * doc/skk.texi: Update. * skk-gadget.el (skk-today): $B%3!<%I8+D>$7!#(B * skk-kakasi.el (skk-gyakubiki-and-henkan): Typo function name. 2010-11-28 Tsuyoshi Kitamoto * skk-kakasi.el (skk-gyakubiki-and-hankan): New command. * skk-gadget.el (skk-today-execute-char): New function. (skk-today): Return this-command-keys's value if skk-henkan-mode on ($B"&(Bmode). Use function skk-today-execute-char. 2010-11-27 Tetsuo Tsukamoto * skk.el (skk-treat-new-word): Fix for the previous change in function where note and word were incorrectly set. 2010-11-27 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-26 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-25 Tetsuo Tsukamoto * skk.el (skk-treat-new-word): Swap car and cdr of return value. (skk-insert-new-word): Modify according to it. 2010-11-24 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk.el: Update docstring. 2010-11-24 Kiyoka Nishiyama * skk-azik.el (skk-azik-additional-rom-kana-rule-list): $BJQ49%k!<%k$r=$@5(B [skk 7327]$B!#(B 2010-11-23 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk.el (skk-henkan-show-candidate-subr): 2010-11-14 $B$N(B commit $B!J%D!<%k%F%#%C%W$G$N(B [$B;D$j(B99++] $B$N1&4s$;I=<(!K$O!"(BXEmacs $B$G$OL58z(B $B$H$7$^$7$?!#(B 2010-11-22 Tetsuo Tsukamoto * skk.el (skk-undo-kakutei): Do not call `skk-j-mode-on' here. (skk-undo-kakutei-subr): Call `skk-j-mode-on' when skk-mode is nil. (skk-kakutei): Call `skk-j-mode-on' when skk-undo-kakutei-prev-state indicates that the previous state was skk-j-mode. This is needed for the kakutei after user returns to skk-abbrev-mode with M-x skk-undo-kakutei. * skk-xemacs.el: Disable `skk-tooltip-show-at-point' for XEmacs 21.4. 2010-11-22 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-21 Tsuyoshi Kitamoto * skk.el (skk-henkan-show-candidates-buffer): little modify. (skk-undo-kakutei): skk-mode $B$G$O$J$$$H$-$K3NDj%"%s%I%%$rl9g!"(B $B3NDj%"%s%I%%$NK\=hM}$NA0$K(B skk-j-mode-on $B$rDI2C$7$?!#(B[skk 7319]$B!#(B * skk-vars.el: Update docstring. * doc/skk.texi: Update. 2010-11-20 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-19 Tetsuo Tsukamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.1.91. 2010-11-18 Tsuyoshi Kitamoto * skk.el (skk-restart): little modify docstring. * skk-vars.el (skk-menu-items): Add menu item "Restart SKK". * skk-emacs.el (skk-emacs-menu-resource-ja): Ditto. * doc/skk.texi (skk-restart): Add description. * skk-tankan.el (skk-tankan): Modify the interactive spec. 2010-11-17 Tetsuo Tsukamoto * skk-isearch.el: Sort isearch-commands (at the last part of the file). 2010-11-16 Tsuyoshi Kitamoto * skk-cus.el: Modify strings. 2010-11-16 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Update docstring. * skk-kcode.el (skk-input-by-code-or-menu): Improve readability. (skk-input-by-code-or-menu-jump, skk-input-by-code-or-menu-1): Enable tooltip. Improve readability. * skk.el (skk-setup-keymap): Fix typo in "skk-abbrev-mode". (skk-toggle-characters): Use `case'. (skk-ovwrt-len, skk-kana-input, skk-jisx0208-latin-insert): Improve readability. 2010-11-14 Tetsuo Tsukamoto * Pre-release 14.1.90. 2010-11-14 Tsuyoshi Kitamoto * skk.el (skk-henkan-show-candidate-subr): $B%D!<%k%F%#%C%W$G$b(B $B%$%s%8%1!<%?!J(B[$B;D$j(B99++]$B!K$r1&4s$;I=<(2DG=$H$7$?!#(B $B$[$+!"(Bdocstring $B$NHy=$@5!#(B * doc/skk.texi (skk-previous-candidate-keys): Add description. 2010-11-14 Tetsuo Tsukamoto * experimental/skk-ja-names.el: Update. * skk-vars.el (skk-previous-candidate-keys): Fix doc string. (skk-previous-candidate-char): Default to nil. 2010-11-14 Tsuyoshi Kitamoto * skk-vars.el (skk-previous-completion-use-backtab): Change default value. * doc/skk.texi: Ditto. 2010-11-13 Tetsuo Tsukamoto * experimental/skk-ja-names.el: New file. * skk-vars.el (skk-previous-candidate-keys): New variable. (skk-previous-candidate-char): Make obsolete. * skk.el (skk-setup-j-mode-map-options): Define keys in skk-previous-candidate-keys. (skk-henkan-show-candidates): Do not refer to skk-previous-candidate-char. Check key binding of the current input instead. (skk-previous-candidate): Update doc string. (skk-henan-off-by-quit): Temporarily check both last-command and this-command. * skk-isearch.el (skk-isearch-setup-keymap): Set keys in skk-previous-candidate-keys instead of skk-previous-candidate-char. * skk-kcode.el (skk-input-by-code-or-menu-jump) (skk-input-by-code-or-menu-1): Do not refer to skk-previous-candidate-char. Check key binding of the current input instead. * skk-macs.el (skk-region-active-p): Check feature xemacs at compile time. 2010-11-13 Tsuyoshi Kitamoto * skk-vars.el :Update Docstring. 2010-11-12 Tsuyoshi Kitamoto * doc/skk.texi: Add skk-inline.el. 2010-11-11 Tetsuo Tsukamoto * skk-comp.el (skk-comp-previous/next): Use `cond' instead of `case'. * skk.el (skk-henkan-off-by-quit): Rename from `skk-henkan-off'. Temporarily set both last-command and this-command. 2010-11-10 Tetsuo Tsukamoto * SKK-MK (SKK_MODULES): Add skk-inline. * doc/skk.texi: Update for skk-previous-completion-backtab-key. * skk-emacs.el: Modify copyright notice. * skk-inline.el: New file. * skk-comp.el (skk-try-completion, skk-completion-wrapper): Move functions from skk.el. (skk-previous-comp-maybe): Give name to anonymous funtion in `skk-setup-keymap'. (skk-comp-do, skk-comp-previous): Add an optional arg set-this-command. * skk-macs.el (skk-color-cursor-display-p): Check skk-running-gnu-emacs at compile time. * skk-tankan.el (skk-tankan): Modify the interactive spec. * skk-tut.el (skktut-init-variables-alist): Bind skk-try-completion-char, skk-next-completion-char and skk-previous-completion-char. * skk-vars.el (skk-quit-commands): New internal variable. (skk-previous-completion-backtab-key): Rename from `skk-previous-completion-backtab-key-description' and change custom type to `key-sequence', allowing users to customize it by C-q [key] in M-x customize-variable. * skk.el (skk-define-minibuffer-maps) (skk-setup-j-mode-map-options, skk-setup-latin-mode-map-options) (skk-setup-jisx0208-latin-mode-map-options) (skk-setup-abbrev-mode-map-options): New functions sepatated from `skk-setup-keymap'. (skk-start-henkan-prog-i): New function. (skk-define-start-henkan-progs): New macro to define `skk-start-henkan-prog-{0-9}'. (skk-inline-show, skk-inline-show-vertical, skk-inline-hide) (skk-add-background-color): Move to skk-inline.el. (skk-henkan-inactivate, skk-henkan-off): New functions called from advised `keyboard-quit' and `abort-recursive-edit'. 2010-11-08 Tsuyoshi Kitamoto * doc/skk.texi: Add description for skk-previous-completion-use-backtab. 2010-11-08 Tetsuo Tsukamoto * skk-vars.el (skk-large-jisyo, skk-aux-large-jisyo) (skk-cdb-large-jisyo, skk-tut-file): Provide some strings even when `locate-file' fails. 2010-11-07 Tsuyoshi Kitamoto * skk-vars.el (skk-previous-completion-use-backtab): New variable. (skk-previous-completion-backtab-key-description): Rename from skk-previous-completion-backtab. * skk.el (skk-setup-keymap): Use it. 2010-11-06 Tsuyoshi Kitamoto * SKK-MK (SKK_MODULES): remove skk-obsolete. * skk-emacs.el (skk-tooltip-resize-text): $B6XB'=hM}$N$7$?!#(B * skk-vars.el (skk-previous-completion-backtab): New variable. * skk.el (skk-setup-keymap): Use it. * doc/skk.texi: Add description for skk-try-completion-char, skk-next-completion-char, skk-previous-completion-char and skk-previous-completion-backtab. 2010-11-05 Tetsuo Tsukamoto * doc/skk.texi: Refer to changes in DDSKK 14.2. * skk-emacs (skk-tooltip-show-1): Avoid modifying tooltip-frame-parameters by side effect. * skk.el (skk-save-jisyo): Do not save in the batch mode. 2010-11-05 Tsuyoshi Kitamoto * skk-emacs.el (skk-tooltip-resize-text): skk-auto-start-henkan-keyword-list $B$rN.MQ$7$?6XB'=hM}!#(B * doc/skk.texi: Remove description with reference to skk-obsolete.el. 2010-11-04 Tsuyoshi Kitamoto * skk-obsolete.el: Remove file. * doc/skk.texi: Remove description with reference to skk-obsolete.el. * skk.el (skk-setup-keymap): Define key in skk-j-mode-map for skk-comp-previous/next. 2010-11-03 Tsuyoshi Kitamoto * skk-kcode.el (skk-input-by-code-or-menu): Modify prompt message. 2010-11-02 Tetsuo Tsukamoto * Makefile (VERSION): * doc/skk.texi (SKK-VERSION): * skk-version.el (skk-version): Bump to 14.1.90. * skk-emacs.el (skk-tooltip-resize-text): Use `memq' and `eq' for char comparisons to determine indent. 2010-11-02 Tsuyoshi Kitamoto * skk-emacs.el (skk-tooltip-resize-text): Bug fix [skk 7297]. 2010-10-29 Tetsuo Tsukamoto * skk-emacs.el: Workaround for Cocoa Emacs 23.2 where variable x-max-tooltip-size is not defined. (skk-emacs-max-tooltip-size): New variable. (skk-tooltip-max-tooltip-size): New function. (skk-tooltip-resize-text): Use it. Under Cocoa Emacs, set top and left as positions on the current frame. 2010-10-27 Tetsuo Tsukamoto * skk-cus.el (skk-custom-mode): Use custom faces. 2010-10-18 Tetsuo Tsukamoto * leim-list.el.in: Remove old codes for Emacs 20. 2010-10-10 Tsuyoshi Kitamoto * skk-emacs.el (skk-tooltip-resize-text): $BF~NO$,D9Bg$J>l9g!"(B $BE,EY$K2~9T$rA^F~$9$k(B [skk 7291]. 2010-10-05 Tsuyoshi Kitamoto * doc/skk.texi (Emacs21.4): Add restriction for Emacs21.4. (skk-dcomp-multiple-activate): Update. (skk-dcomp-multiple-face): Update. (skk-dcomp-multiple-trailing-face): Update. (skk-dcomp-multiple-selected-face): Update. 2010-09-28 Tsuyoshi Kitamoto * doc/skk.texi (skk-comp-circulate): Add new describe. 2010-09-27 Tsuyoshi Kitamoto * doc/skk.texi (skk-tooltip-mouse-behavior): Update. 2010-09-27 Tetsuo Tsukamoto * skk-vars.el (skk-find-window-system): Under Emacs 22 or older, just check the value of window-system. Under Emacs 23 or later, check the return values of function `window-system'. 2010-09-26 Tsuyoshi Kitamoto * doc/skk.texi (skk-dcomp-activate): Add new describe. (skk-show-annotation): Modify message. 2010-09-26 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-message): Modify message. * skk-emacs.el (skk-emacs-tool-bar-height) (skk-emacs-menu-bar-height): New variables. (skk-tooltip-show-at-point): Use them. Modify y-axis calculation. * skk-vars.el (skk-tooltip-y-offset): Default to zero. (skk-find-window-system): New function. (skk-use-color-cursor): Use it. * skk-macs.el (skk-color-cursor-display-p): Ditto. 2010-09-25 Tetsuo Tsukamoto * skk-macs.el (skk-region-active-p): New function. * skk-annotation.el (skk-annotation-wikipedia-region-or-at-point): Use it. 2010-09-23 Tsuyoshi Kitamoto * doc/skk.texi (skk-search-lisp-symbol): Add new describe. 2010-09-22 Tsuyoshi Kitamoto * doc/skk.texi (skk-byte-compile-init-file): Update. * skk-vars.el (skk-preload): Update docstring. 2010-09-21 Tetsuo Tsukamoto * SKK-MK (running-gnu-emacs): New variable. Use it instead of "(not (featurep 'xemacs)". (SKK_MODULES): Always include ccc, skk-cursor and context-skk for GNU Emacs. 2010-09-20 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-09-19 Tsuyoshi Kitamoto * SKK-MK: Update error message. * doc/skk.texi: Update. 2010-09-18 Tsuyoshi Kitamoto * skk.el (skk-setup-verbose-messages): insert a white space between words. * skk-vars.el (skk-verbose, skk-verbose-wait) (skk-verbose-message-interval, skk-henkan-on-message): Unified from $B$-$b$AB?$a$J%a%C%;!<%8(B to $B=u8@E*%a%C%;!<%8(B. * skk-annotation.el (skk-annotation-show-buffer): Use fit-window-to-buffer except XEmacs 21.4. (skk-annotation-insert): *SKK annotation* buffer changed to read only. * skk-macs.el (skk-in-minibuffer-p): Update docstring. * skk-obsolete.el (skk-obsolete-variable-alist): Add obsolete-variables skk-e21-*-face. * doc/skk.texi: typo, and update. 2010-09-17 Tsuyoshi Kitamoto * Makefile (VERSION): 14.1.50. * doc/skk.texi: Update. 2010-09-16 Tsuyoshi Kitamoto * skk-annotation.el (skk-annotation-wikipedia-region-or-at-point): Update docstring. * SKK-MK: Add comment. * SKK-CFG (SKK-MK-debugging): Add comment. 2010-09-13 Tsuyoshi Kitamoto * skk-setup.el.in: 2010-09-12 $B$N(B commit $B$O * SKK-MK, skk-xemacs.el: Require APEL for XEmacs. * skk-cus.el (skk-cus-params-visual): Support skk-show-inline's value `vertical'. * skk.el: Remove unnecessary defaliases. 2010-09-12 Tetsuo Tsukamoto * skk-macs.el, skk.el: Use `case' instead of `cond' where it is suitable. * skk-macs.el (string-to-int-list): Fix definition for XEmacs. (skk-update-minor-mode-map-alist): Use `add-to-list'. * skk.el (skk-setup-modeline): Make `left' precede. (skk-henkan-show-candidate-subr): Fix the condition to call `skk-show-inline'. 2010-09-12 Tsuyoshi Kitamoto * skk-setup.el.in (before-init-hook): add-hook 'before-init-hook for display skk-version on emacs startup screen. * skk-version.el (skk-startup-screen): Remove function. 2010-09-11 Tetsuo Tsukamoto * bayesian/skk-bayesian.el, skk-dcomp.el, skk-tankan.el: Do not use static.el. Use `eval-when-compile' instead. * skk-cus.el: Fix indents. * skk-kakasi.el: Do not require path-util. * skk-lookup.el, skk-vars.el, skk-xemacs.el: Do not use `defalias-maybe'. * skk-macs.el (characterp, int-char, set-buffer-multibyte): Add definitions for Emacsen missing these functions. (skk-string<): Defun instead of defsubst. * skk.el (skk-mode-invoke): Do not check for Emacs 21. * skk-annotation.el (skk-annotation-wikipedia-normalize-word): Make sure word is not a null string. * install.el: Import from APEL 10.8 with minimal modifications. * SKK-MK: Use it. Do not check for APEL except for Emacs 21. Do not require poem. * SKK-CFG: Remove descriptions on APEL_DIR and EMU_DIR. 2010-09-11 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code-for-char-at-point):code reviewd. (skk-display-code): code reviewd. * doc/skk.texi: Update. 2010-09-10 Tetsuo Tsukamoto * SKK-MK: Do not require poem here. No longer use `write-region-as-coding-system' and `insert-file-contents-as-coding-system'. (SKK_MODULES): Remove skk-e21. * ccc.el: Temporarily disable loading poe here. * skk-act.el, skk-azik.el: Use `skk-put-alist' and `skk-del-alist' instead of `put-alist' and `del-alist'. * skk-cus.el (custom-quote): Remove definition. * skk-e21.el: Remove file. * skk-emacs.el: Move contens of skk-e21.el to this file. * skk-lookup.el: static.el is not used. Do not require it. * skk-macs.el: Do not require static.el. Do not use `defun-maybe', `defmacro-maybe'. Use `eval-when-compile' instead. (string-to-char-list, string-to-int-list, character-to-event) (event-to-character, cancel-undo-boundary, skk-put-alist) (skk-del-alist, skk-remove-alist): Define here. (skk-update-minor-mode-map-alist): New function. * skk-num.el (skk-num-initialize): Use `skk-put-alist' instead of `put-alist'. * skk-server.el (skk-open-network-stream): Use skk-running-gnu-emacs. * skk-study.el: Temporarily disable loading pym here. * skk-tut.el (skktut-enable-tutmap, skktut-disable-tutmap): * skk-viper.el (skk-viper-normalize-map): Use `skk-update-minor-mode-map-alist' instead of `set-modified-alist'. * skk-vars.el: Do not use static.el. Use `eval-when-compile' instead (if needed). Also do not use `exec-installed-p' in path-util.el. Use `executable-find' instead. * skk-xemacs.el: Do not require poe. Require overlay. * skk.el: Temporarily disable loading poe, poem, pces, and alist. Use `skk-update-minor-mode-map-alist' instead of `set-modified-alist'. Use `executable-find' instead of `exec-installed-p'. Use skk-running-gnu-emacs. * skk-annotation.el, skk-cursor.el, skk-gadget.el, skk-isearch.el, * skk-jisx0201.el, skk-jisyo-edit-mode.el, skk-kakasi.el, * skk-kcode.el, skk-server.el, skk-viper.el: Do not require static.el. Use `eval-when-compile' instead. 2010-09-10 Tsuyoshi Kitamoto * skk-version.el (skk-startup-screen): Add new function. insert skk-version on emacs startup screen. * doc/skk.texi: Update. 2010-09-09 Tetsuo Tsukamoto * skk-cursor.el (skk-cursor-default-color): Defsubst. * skk-hint.el, skk-jisyo-edit-mode.el: Modify coding system to iso-2022-jp. * skk-var.el (skk-emacs-type): Abolish variable. (skk-running-gnu-emacs): New variable. * skk-kcode.el, skk-macs.el, skk.el: Use skk-running-gnu-emacs. * skk-annotation.el, skk-dcomp.el, skk-lookup.el, skk-macs.el, * skk.el: Remove codes for GNU Emacs 20. * skk-study.el, skk.el: No longer use `write-region-as-coding-system' and `insert-file-contents-as-coding-system'. * skk.el (skk-inline-show-vertical): Make sure beg-col is not negative. 2010-09-09 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-09-08 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-get-char-data, skk-tankan-encode-0213-2): GNU Emacs 23 $B8~$1(B japanese-jisx0213-2 $BBP1~!#(B * skk-kcode.el (skk-display-code): tooltip $B;~$N(B `$' $B%a%C%;!<%8FbMF(B $B$KE,592~9T$r2C$($?!#(B 2010-09-07 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): `$' $B$NI=<($r(B tooltip $B2=(B. 2010-09-07 Tetsuo Tsukamoto * SKK-MK: Define and use variable EMACS_SELF_CONTAINED for NTEmacs, Meadow, Carbon and Cocoa Emacsen. 2010-09-06 Tetsuo Tsukamoto * skk-version.el (skk-version): Bump to 14.1.50. 2010-09-05 Tetsuo Tsukamoto * Version 14.1 Syounai released. 2010-09-05 Tetsuo Tsukamoto * Makefile (VERSION) * skk-version.el (skk-version): Bump to 14.1. 2010-09-04 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan): Code update. * doc/skk.texi: Update. * skk-macs.el: Update docstring. 2010-09-03 Tsuyoshi Kitamoto * context-skk.el: Insert white space for comment and docstring. 2010-09-02 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-09-01 Tetsuo Tsukamoto * SKK-MK (SKK_DICTIONARIES): Also install cdb dictionaries. * doc/skk.texi: Update. 2010-08-31 Tetsuo Tsukamoto * Makefile (cdb): New target to create dic/SKK-JISYO.L.cdb. 2010-08-31 Yusuke Shinyama * etc/skk2cdb.py: New file. 2010-08-30 Tetsuo Tsukamoto * skk-tankan.el (skk-tankan): Add autoload cookie. 2010-08-29 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): Add displaying skk-tankan-get-char-annotation. * skk-tankan.el: Update docstring. 2010-08-28 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan): New interactive function `M-x skk-tankan'. 2010-08-27 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-search): $BAm2h?tJQ49$HIt * skk-annotation.el, skk-cursor.el, skk-dcomp.el, skk-gadget.el, skk-isearch.el, skk-kcode.el, skk-macs.el, skk-tankan.el, skk-tut.el, skk-vars.el, skk-viper.el, skk.el, tut-code/skk-tutcdef.el: Reduce usage of skk-emacs-type. * doc/skk.texi: Update. * skk-kcode.el (skk-display-code): For GNU Emacs 23.1 or later, call `char-charset' with skk-charset-list as the second arg. * skk.el (skk-setup-charset-list): Modify charsets' order. 2010-08-27 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): $B%-!<(B `$' $B$r%?%$%W$7$?:]$N%a%C%;!<%8(B $B$K(B "$BAm(B%d$B2h(B(%s$BIt(B%d$B2h(B)" $B$rDI2C!#(B 2010-08-26 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-26 Tetsuo Tsukamoto * doc/skk.texi: Update. * bayesian/skk-bayesian.el (skk-bayesian-history-file) (skk-bayesian-corpus-file): Save in skk-user-directory if it is specified. * skk-tankan.el (skk-search-tankanji): Read a CDB dictionary when available. * skk-vars.el (skk-jisyo-update-vector): Update doc string. (skk-verbose-message-interval): New user option. * skk-annotation.el (skk-annotation-message): Use it. * skk.el (skk-setup-shared-private-jisyo): Make skk-jisyo-update-vector a bit longer than skk-jisyo-save-count. (skk-update-shared-jisyo): Do not call `skk-update-jisyo-1' for null entries. (skk-update-jisyo-original): Call `skk-save-jisyo' when skk-update-jisyo-count reaches skk-jisyo-save-count, i.e. usually before it reaches the length of skk-jisyo-update-vector. 2010-08-25 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-var.sl (skk-verbose-wait): Change default value to 1.5. * skk.el (skk-update-jisyo-original): Ensure that skk-jisyo-save-count is smaller than the length of skk-jisyo-update-vector. (skk-search-server): Check if file is readable. 2010-08-24 Tetsuo Tsukamoto * bayesian/README.ja, patches/README.ja: Convert to junet. * skk-annotation.el (skk-annotation-wikipedia-format-buffer): Check wgCategories to find disambiguation pages. (skk-annotation-wikipedia): Maybe search upcased word. (skk-annotation-wikipedia-1): Remove unused local variable note. * skk-comp.el: Don' warn for dont-bind-my-keys. * skk-gadget.el (skk-ignore-dic-word): Remove unused local variable save-okurigana. * skk-kcode.el (skk-jis2sjis2): Alias to `ignore' for XEmacs. * skk-server.el (skk-search-server-1): Check if file is readable. * skk-study.el: Don't warn for print-quoted. (skk-study-save): Remove unused local variable last-time. * skk-xemacs.el (skk-xemacs-balloon-help-resize-help-frame): Modify calculation of frame size. (skk-xemacs-need-redraw-tooltip, skk-xemacs-redraw-interval): New variables. (skk-tooltip-show-1): Redraw tooltip when skk-xemacs-need-redraw-tooltip is non-nil. * skk.el (skk-setup-delete-selection-mode): Remove unused local variable feature. (skk-compile-rule-list): Remove unused local variable rule. (skk-get-jisyo-buffer): Remove unused local variable obj. * tut-code/skk-tutcode.el (skk-tutcode-display-code-1): Remove codes written for Mule 2. 2010-08-23 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-region-or-at-point): Rename from `skk-annotation-wikipedia-region-or-at-point'. (skk-annotation-wikipedia-region): Redefine as an alias to it. (skk-annotation-wait-for-input): Modify according to the above changes. (skk-annotation-wikipedia-1): Also throw `skk-annotation-wikipedia-suspended' on quit. * skk-vars.el (skk-annotation-en-wiktionary-lang-regexp): Update. (skk-annotation-ja-wiktionary-part-of-speech-regexp): Fix doc string. * skk-xemacs.el (skk-tooltip-default-font-pixel-size): Change the default value to 12. 2010-08-22 Tetsuo Tsukamoto * bayesian: From experimental. * SKK-MK: Modify according to it. * doc/skk.texi: Update. * skk-tut.el (skktut-init-variables-alist): Bind skk-previous-char. (skktut-end-tutorial): Update message. 2010-08-22 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-21 Tetsuo Tsukamoto * Makefile (TAR): Use gtar, assuming the FreeBSD system. 2010-08-21 Tetsuo Tsukamoto * Pre-release 14.0.92. 2010-08-21 Tetsuo Tsukamoto * Makefile (VERSION): Bump to 14.0.92. * skk-tut.el (skktut-update-jisyo): Bind skk-jisyo-update-vector. * skk.el (skk-adjust-user-option): Check the default value of skk-share-private-jisyo. * skk-version.el (skk-version): Bump to 14.0.92. 2010-08-21 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-20 Tetsuo Tsukamoto * skk-tut.el (skktut-init-variables-alist): Bind skk-henkan-show-candidates-rows, skk-show-candidates-always-pop-to-buffer, skk-show-annotation and skk-verbose. (skktut-make-windows): Increase the height of the question window. (skktut-next-answer-buffer): In skktut-question-buffer, move point to bob. * skk-vars.el (skk-show-japanese-menu): Find Cocoa Emacs by checking the feature ns. (skk-candidate-buffer-background-color, skk-henkan-rest-indicator) (skk-henkan-show-candidates-keys-face) (skk-henkan-rest-indicator-face): Modify custom types and/or groups. * patches/README.ja: * patches/emacs22-gtk-fix-dynamic-menus.diff: * patches/emacs23_1-gtk-fix-dynamic-menus.diff: Add patches which fix the menu update problem in Emacs 22/23.1 with GTK 2.18 or later. 2010-08-19 Tetsuo Tsukamoto * doc/skk.texi: Update. * cdb.el: Undo previous changes for Emacs 20. * skk-e21.el (skk-tooltip-show-1): Bind x-gtk-use-system-tooltips to nil in order to use the Emacs' own tooltips and thus preserve text properties. * skk-obsolete.el (skk-obsolete-put-obsolete-mark): Under Emacs 20, call `make-obsolete-variable' with only 2 args. * skk-vars.el (skk-cdb-coding-system): Modify the custom type. * skk.el (skk-henkan-show-candidates-buffer): Do not call `fit-window-to-buffer' under Emacs 20 or XEmacs 21.4. 2010-08-19 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-18 Tetsuo Tsukamoto Suggested by Takeru Naito * skk-e21.el (skk-e21-prepare-menu): Find Cocoa Emacs by checking the feature ns. 2010-08-18 Tetsuo Tsukamoto * *: Update copyright notices. * doc/skk.texi: Update. * skk-emacs.el: New file. * SKK-MK (SKK_MODULES): Add skk-emacs for GNU Emacs. * cdb.el: Require cl at the compile time. (cdb-test-simple): Uncomment. (cdb-hash): Under Emacs 20, call mapcar instead of mapc. * skk-cdb.el: Add comments. * skk-e21.el (skk-jis2sjis2): Move function to skk-emacs.el. * skk-jisyo-edit-mode.el: Don't register "SKK-JISYO" to auto-mode-alist under Emacs 20. * skk-kcode.el: Update comments. * skk-vars.el (skk-show-inline, skk-dcomp-multiple-activate): Update docstrings. (skk-background-mode): defcustom. * skk-macs.el (skk-color-cursor-display-p): Rename from `skk-color-display-p'. (skk-cursor-set, skk-cursor-off): Check `skk-color-cursor-display-p'. * skk-cursor.el: Modify according to it. * skk.el: Require skk-emacs under GNU Emacs. (skk-add-background-color): Workaround for Emacs 21 where :inherit attribute does not always work correctly. (skk-adjust-user-option): Check `skk-color-cursor-display-p'. 2010-08-18 Tsuyoshi Kitamoto * doc/skk.texi: Remove remove README.Mac.ja related. 2010-08-17 Yusuke Shinyama * cdb.el, skk-cdb.el: New files. * SKK-MK (SKK_MODULES): Add cdb and skk-cdb. * skk-vars.el (skk-cdb-large-jisyo, skk-cdb-coding-system): New user options. (skk-search-prog-list): Add `skk-search-cdb-jisyo'. 2010-08-17 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-kcode.el (skk-jis2sjis2): Move funtion to skk-e21.el simply to avoid a compile error in XEmacs. * skk-xemacs.el (skk-tooltip-default-font-pixel-size): New variable. (skk-tooltip-resize-text): Use it. * skk-vars.el (skk-menu-items): Rename and reorder items. (skk-large-jisyo, skk-aux-large-jisyo, skk-cdb-large-jisyo): Make custom types compatible with Emacs 21. * skk-e21.el (skk-e21-prepare-menu): Avoid a warning for gtk-version-string in Emacs 21. (skk-e21-menu-resource-ja): Modify according to changes in skk-menu-items. * skk-cus.el: Require `cus-edit' instead of `wid-edit'. 2010-08-15 Tsuyoshi Kitamoto * doc/skk.texi: update. 2010-08-14 Tsuyoshi Kitamoto * skk-vars.el (skk-show-japanese-menu): Fix docstring. * doc/skk.texi: update. 2010-08-12 Tsuyoshi Kitamoto * doc/skk.texi: From @code{} to @command{}, @option{} or @env{} replaced. 2010-08-10 Tsuyoshi Kitamoto * skk-vars.el (skk-delete-okuri-when-quit): Fix docstring. * doc/skk.texi: update. 2010-08-09 Tsuyoshi Kitamoto * doc/skk.texi: update. 2010-08-08 Tsuyoshi Kitamoto * doc/skk.texi: update. 2010-08-07 Tsuyoshi Kitamoto * skk-vars.el (skk-candidate-buffer-background-color): Rename option name from `skk-kouho-window-background'. * skk.el (skk-henkan-show-candidates-buffer): Ditto. * doc/skk.texi: Ditto. 2010-08-06 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-02 Tetsuo Tsukamoto * *.el: Never provide product.el. * skk-isearch.el (skk-isearch-delete-char): Use `delete-char' intead of `delete-backward-char'. * skk.el (skk-set-henkan-point, keyboard-quit@around@skk-ad) (abort-recursive-edit@around@skk-ad): Ditto. 2010-08-02 Tsuyoshi Kitamoto * skk.el: Fix docstring. * doc/skk.texi: Update. 2010-08-01 Tsuyoshi Kitamoto * skk-vars.el: Fix docstring. 2010-07-31 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-07-29 Tsuyoshi Kitamoto * skk-e21.el (skk-e21-visit-openlab): fix url. * skk-xemacs.el (skk-xemacs-visit-openlab): fix url. 2010-07-25 Tsuyoshi Kitamoto * skk.el (skk-kill-emacs-without-saving-jisyo): Fix doc. * doc/skk.texi: Fix. * skk-vars.el (skk-rom-kana-base-rule-list): Add new rule. 2010-07-22 Tsuyoshi Kitamoto * skk-vars.el: tiny fix docstring. 2010-07-21 Tsuyoshi Kitamoto * skk-vars.el (skk-henkan-show-candidates-keys-face) (skk-henkan-rest-indicator-face, skk-kouho-window-background): Change the default value. 2010-07-20 Tsuyoshi Kitamoto * skk-vars.el (skk-kouho-window-background): fix. 2010-07-19 Tsuyoshi Kitamoto * skk-vars.el: tiny fix docstring. * doc/skk.texi: tiny fix. 2010-07-18 Tsuyoshi Kitamoto * skk-vars.el: tiny fix docstring. * skk.el: tiny fix docstring. 2010-07-18 Tetsuo Tsukamoto * doc/skk.texi: Add Fumihiko MACHIDA and Yano Keisuke in Contributors. Update entry for Yuh Ohmura. * skk-jisx0201.el (skk-jisx0201-roman-rule-list): Broken at the last commitment. Fix. 2010-07-17 Tsuyoshi Kitamoto * skk-vars.el (skk-tooltip-function): New variable. * skk.el (skk-henkan-show-candidate-subr): Use it. Switching function that allows user to use to draw a tip. 2010-07-16 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-message): Modify messages. 2010-07-16 Tsuyoshi Kitamoto * skk-obsolete.el (skk-obsolete-put-obsolete-mark): give nil to make-obsolete-variable's 3rd argument. * doc/skk.texi: some update. 2010-07-14 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-format-buffer): Simplify for wikipedia. Don't remove
        tags explicitly. 2010-07-11 Tsuyoshi Kitamoto * skk-vars.el (skk-henkan-rest-indicator-face): New face. * skk.el (skk-henkan-show-candidate-subr): Use it. * doc/skk.texi: Update. 2010-07-10 Tsuyoshi Kitamoto * skk-vars.el (skk-henkan-show-candidates-keys-face): New face. * skk.el (skk-henkan-show-candidate-subr): Use it. * skk-kcode.el (skk-input-by-code-or-menu-jump) (skk-input-by-code-or-menu-1): Use it. * skk-vars.el (skk-henkan-rest-indicator): New user option. * skk.el (skk-henkan-show-candidate-subr) (skk-henkan-show-candidates-buffer): Use it. * skk.el (skk-henkan-show-candidates-buffer): Add `fit-window-to-buffer'. * skk-vars.el (skk-kouho-window-background): New user option. * skk.el (skk-henkan-show-candidates-buffer): Use it. * doc/skk.texi: Update. 2010-07-04 Tsuyoshi Kitamoto * skk-vars.el: $BMQ8l$NE}0l!#$=$N$[$+(B. * make1.bat (install-info): new argument. 2010-07-03 Tsuyoshi Kitamoto * make1.bat (clean): add "goto end". 2010-05-15 Kazuhiro NISHIYAMA * SKK-MK: EMU_DIR $B$N(B load-path $B$X$NDI2C$r(B (requre 'install) $B$NA0$K0\F0(B. 2010-03-07 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-search): update indent. 2010-02-26 Tsuyoshi Kitamoto * skk.el: Misc updates. * skk-vars.el: ditto. 2010-02-22 Tsuyoshi Kitamoto * skk.el: s/(SKK)?($B<-=q(B)?$B%5!<%P(B/$B<-=q%5!<%P(B/g * skk-vars.el: ditto. * skk-server.el: ditto. * skk-server-completion.el: ditto * doc/skk.texi: ditto. 2010-02-22 Tsuyoshi Kitamoto * skk-vars.el: s/$B%f!<%6<-=q(B/$B8D?M<-=q(B/g 2010-02-21 Tsuyoshi Kitamoto * skk-macs.el: s/$BHs(Bnil/non-nil/g * skk.el: ditto. * doc/skk.texi: ditto. 2010-02-21 Tsuyoshi Kitamoto * doc/skk.texi (skk-search-jisyo-file): Add content. some function/variable are ditto. 2010-02-18 Tsuyoshi Kitamoto * skk-macs.el (skk-screen-column, skk-move-to-screen-column): Add docstring. 2010-02-14 Tsuyoshi Kitamoto * doc/skk.texi: Tiny Fix. 2010-02-13 Tsuyoshi Kitamoto * doc/skk.texi: some CODE redefined from @example to @lisp. 2010-02-13 Tsuyoshi Kitamoto * doc/skk.texi: some variables defined by @defvr. 2010-02-10 Tsuyoshi Kitamoto * make1.bat: Add 'info' option. 2010-02-10 Tetsuo Tsukamoto * Pre-release 14.0.91. 2010-02-06 Teika Kazura * doc/skk.texi: $B%j%s%/@Z$l$r=$@5!#(Bmakeinfo $B$K$h$k%3%s%Q%$%k$NJ}K!!#(B $B$3$N%U%!%$%k$K4^$^$l$kHs(B Unicode $BJ8;z$K$D$$$F%3%a%s%H!#(B 2010-02-01 Kitamoto Tsuyoshi * doc/skk.texi: Tiny fix. 2010-01-30 Tetsuo Tsukamoto * skk-tut.el (skktut-next-answer-buffer): Use `with-current-buffer' instead of `save-excursion'. 2010-01-28 Tetsuo Tsukamoto * doc/skk.texi: Update for the copyright page i.e. add missing Kitamoto Tsuyoshi's name. * skk-cursor.el (skk-cursor-set-1, skk-cursor-off-1): Modifications for FSF Emacs. Do not set cursor color when default-cursor-color is not yet set. * skk-e21.el (skk-tooltip-show-at-point): Also call `skk-tooltip-resize-text' when skk-tooltip-mouse-behavior is `follow'. 2010-01-27 Tetsuo Tsukamoto * doc/skk.texi: Move footnote for Viper with skk-annotation to subsection "$B%"%N%F!<%7%g%s$N;HMQ(B". * skk-annotation.el (skk-annotation-wikipedia): Do not call `upcase-initials' for wikipedia here. * skk-jisyo-edit-mode.el: Add "SKK-JISYO" to the last of auto-mode-alist. * skk-version.el (skk-version): Bump to 14.0.91. 2010-01-25 Tetsuo Tsukamoto * Pre-release 14.0.90. * doc/skk.texi: Add author Teika Kazura. 2010-01-20 Tetsuo Tsukamoto * skk-e21.el (skk-e21-menu-replace): Workaround for an NTEmacs problem where names of menu items with widget properties do not appear correctly. Encode strings in shift_jis here. Note that this workaround is not needed for Meadow 3 (based on Emacs 22). * skk-version.el (skk-version): Bump to 14.0.90. 2009-12-26 Teika Kazura * doc/skk.texi: Major rewritements, mostly in the chapter $BJXMx$J(B $B1~MQ5!G=(B. Reorganizations. Improvements in various descriptions. 2009-12-16 Tetsuo Tsukamoto * doc/skk.texi: Update email info. 2009-12-16 Teika Kazura * READMEs/NEWS.ja: Minor correction & notice addition. * skk.el (skk-show-num-type-info): Minor doc correction. 2009-11-14 Teika Kazura * doc/skk.texi: Add description for skk-jisyo-fix-order. Also edit skk-edit-private-jisyo. 2009-09-23 Teika Kazura * skk-vars.el (skk-jisyo-fix-order): New user option. * skk.el (skk-update-jisyo-1): When skk-jisyo-fix-order is non-nil, do not modify word order. 2009-11-02 Tetsuo Tsukamoto * skk-macs.el (skk-char-to-unibyte-string): New function. Call `string-make-unibyte' under Emacs 23. (skk-char-to-string): Abolish function. * skk-hint.el (skk-insert@around@skk-hint-ad): * skk-isearch.el (skk-isearch-message, skk-isearch-setup-keymap): * skk-kcode.el (skk-input-by-code-or-menu-jump) (skk-input-by-code-or-menu-1): * skk-tut.el: * skk.el (skk-setup-keymap, skk-define-jisx0208-latin-mode-map) (skk-define-abbrev-mode-map, skk-process-prefix-or-suffix) (skk-kana-input, skk-henkan-show-candidates) (skk-set-henkan-point): Call `skk-char-to-unibyte-string' for key definitions etc, where unibyte strings are expected. * skk-var.el (skk-annotation-en-wiktionary-lang-regexp) (skk-annotation-en-wiktionary-part-of-speech-regexp) (skk-annotation-ja-wiktionary-lang-regexp) (skk-annotation-ja-wiktionary-part-of-speech-regexp): Update. * skk-annotation.el (skk-annotation-wikipedia-1): Remove ") ;; $B$r=|5n(B (skkannot-wikipedia-remove-nested "" "
        ") ;; (goto-char (point-min)) (when (or (when (re-search-forward "

        \\(
        \n\\|[^\n]*\\)?[^\n]+[^\n]+" nil t) (goto-char (match-beginning 0)) (if (and (save-excursion (re-search-forward "

        " nil t)) (string-match (cond ((eq source 'ja.wikipedia) "$B!#(B\\|$B!%(B") (t "\\.")) (buffer-substring (point) (match-beginning 0)))) t (setq point (point) continue t) nil)) (when (progn (goto-char (point-min)) (re-search-forward "<\\(u\\|o\\)l>" nil t)) (goto-char (if continue point (match-beginning 0))) (setq nop t))) (delete-region (point-min) (point)) (goto-char (point-min)) ;; (cond ((or aimai nop) (setq pt1 (if (re-search-forward "<\\(u\\|o\\)l>" nil t) (match-end 0) nil) pt2 nil) (while (and (not end) (re-search-forward "" nil t)) (setq pt2 (match-end 0)) (save-excursion (goto-char (or pt1 (1+ (point-min)))) (when (re-search-forward "<\\(u\\|o\\)l>" nil t) (setq pt1 (match-end 0)))) (when (or (null pt1) (> pt1 pt2)) (setq end t)))) (t (re-search-forward "

        " nil t))) (delete-region (point) (point-max)))))) ;; (setq point nil) (when (> (buffer-size) 0) (html2text) (goto-char (point-min)) (cond ((memq source '(ja.wiktionary en.wiktionary)) ;; wiktionary $B$N@07A7k2L$O6u9T$@$i$1$K$J$k(B... (goto-char (point-min)) (while (re-search-forward "\n[\n]+" nil t) (replace-match "\n")) (goto-char (point-min)) (while (not (eobp)) (beginning-of-line) (setq point (point)) (forward-line 1) (fill-region point (point)))) (t (while (looking-at "^[ \t]*$") (kill-line 1)) (cond ((or aimai nop) (while (not (eobp)) (beginning-of-line) (setq point (point)) (forward-line 1) (fill-region point (point)))) (t (fill-paragraph nil))))) ;; (when aimai (insert (if (eq source 'ja.wikipedia) "\n($B[#Kf$52sHr$N%Z!<%8(B)" "\n(Disambiguation page)"))) ;; (goto-char (point-max)) (while (and (looking-at "^$") (not (string= "" (buffer-string)))) (delete-char -1)) ;; (when (and (not (equal (buffer-string) "")) (not (get-text-property 1 'face))) (put-text-property 1 2 'face 'default)) (setq note (buffer-string))))) ;; (cond ((stringp note) (if (equal note "") nil note)) (t nil)))) (defun skkannot-wikipedia-remove-nested (btag etag &optional ibtag) "
          $B$J$I$NF~$l;R9=B$$r=|5n$9$k!#(B" (unless ibtag (setq ibtag btag)) (let (point pt1 pt2 orig-btag) (setq point nil) (goto-char (point-min)) (while (re-search-forward btag nil t) (setq point (match-beginning 0)) (goto-char point) (cond ((not (search-forward etag nil t)) (delete-region point (match-end 0)) (goto-char (point-min))) (t (setq pt2 (match-end 0)) (goto-char (1+ point)) (cond ((not (re-search-forward ibtag nil t)) (delete-region point pt2) (when orig-btag (setq btag orig-btag orig-btag nil)) (goto-char (point-min))) (t (setq pt1 (match-beginning 0)) (cond ((< pt2 pt1) (delete-region point pt2) (setq point nil) (when orig-btag (setq btag orig-btag orig-btag nil)) (goto-char (point-min))) (t (unless orig-btag (setq orig-btag btag btag ibtag)) (goto-char pt1)))))))))) (defun skkannot-wikipedia-retrieved (&rest args) (cond ((or (member "deleted\n" (assq 'error (memq :error (car args)))) (< (buffer-size) 7) (not (skkannot-wikipedia-test-html-tag))) ;; $BIT40A4$J(B retrieval $B$K$*$$$F$b(B STATUS $B$,(B nil $B$H$J$k$3$H$,$"$k$N$G(B ;; $B$3$3$GD4@0$9$k!#(B (kill-buffer (current-buffer)) (ignore-errors (throw 'skkannot-wikipedia-suspended (cadr args)))) (t (throw 'skkannot-wikipedia-retrieved (current-buffer))))) (defun skkannot-wikipedia-test-html-tag () ;; html $B%G!<%?$,:G8e$N(B $B%?%0$r;}$D$3$H$r3NG'$9$k(B (goto-char (point-min)) (when (re-search-forward "^Content-Encoding: gzip$" nil t) ;; html $B$,(B gzip $B05=L$GAw$i$l$FMh$?>l9g(B (unless (fboundp 'url-handle-content-transfer-encoding) ;; Emacs 24.3 or earlier (let ((gzip (executable-find "gzip"))) (unless gzip (error "$B$3$NFbMF$rI=<($9$k$K$O(B %s $B$,I,MW$G$9(B" "gzip")) (while (and (not (looking-at "^\n")) (not (eobp))) (forward-line 1)) (forward-line 1) (when (< (point) (point-max)) (let ((coding-system-for-write 'binary)) (call-process-region (point) (point-max) gzip t t t "-cd")))))) (goto-char (point-max)) (search-backward "" nil t)) ;;;###autoload (defalias 'skk-annotation-wikipedia-region-or-at-point 'skk-annotation-lookup-region-or-at-point) (defun skkannot-generate-url (format-string &rest args) (condition-case nil (require 'url-util) (error (error "%s" "$B?7$7$$(B URL $B%Q%C%1!<%8$,I,MW$G$9(B"))) (if (skkannot-url-installed-p) (apply #'format format-string (mapcar (lambda (element) (if (stringp element) (url-hexify-string element) element)) args)) (error "%s" "URL $B%Q%C%1!<%8$^$?$O(B Mule-UCS $B$,MxMQ$G$-$^$;$s(B"))) (defun skkannot-wikipedia-normalize-word (word &optional method preserve-case) ;; $B%9%Z!<%9$O(B %20 $B$G$O$J$/!"%"%s%@!<%9%3%"$KJQ49$9$k(B (replace-regexp-in-string " " "_" (cond ((memq method '(ja.wiktionary en.wiktionary)) (if (and (not preserve-case) (> (length word) 1) (skk-ascii-char-p (aref word 0)) (skk-lower-case-p (aref word 1))) ;; $BFsJ8;z$a$,(B lower case $B$J$i(B downcase (downcase word) ;; $B0lJ8;z$@$C$?$i85$N(B case ;; $BFsJ8;z$a$,(B upper case $B$J$i85$N(B case ;; $B1Q8l0J30$OL$BP1~(B word)) ((eq method 'upcase-initials) (upcase-initials word)) (t (if (> (length word) 1) (concat (vector (upcase (aref word 0))) (substring word 1)) word))))) (defun skkannot-url-installed-p () (when (eq skkannot-url-installed-p 'untested) ;; GNU Emacs 22 $B0J9_0J30$G(B URL $B%Q%C%1!<%8$r%F%9%H$9$k(B (cond ((and (featurep 'xemacs) (= emacs-major-version 21) (= emacs-minor-version 4) (not (featurep 'un-define))) ;; XEmacs 21.4 $B$G(B Mule-UCS $B$b$J$$>l9g(B (setq skkannot-url-installed-p nil)) (t ;; Emacs 21 $B$H(B XEmacs (defadvice url-hexify-string (around multibyte-char activate) (setq ad-return-value (mapconcat (lambda (byte) (if (memq byte url-unreserved-chars) (char-to-string byte) (format "%%%02x" byte))) (if (multibyte-string-p (ad-get-arg 0)) (encode-coding-string (ad-get-arg 0) 'utf-8) (ad-get-arg 0)) ""))) ;; (setq skkannot-url-installed-p t)))) ;; skkannot-url-installed-p) ;;; $B3F (length string) 0) (throw 'found (cons string ccache-buffer)) (setq string (if (and cccache-buffer (get-buffer cccache-buffer)) ;; Word Word (with-current-buffer (get-buffer cccache-buffer) (buffer-string)) "")) (if (> (length string) 0) (throw 'found (cons string cccache-buffer)) (setq string (if (get-buffer cache-buffer) ;; word word (with-current-buffer (get-buffer cache-buffer) (buffer-string)) "")) (if (string= string "") nil (throw 'found (cons string cache-buffer)))))))))))) (provide 'skk-annotation) ;;; skk-annotation.el ends here ddskk-15.2/skk-auto.el0000644000570400056700000001153411572303377014676 0ustar kitamotoopenlab;;; skk-auto.el --- $BAw$j2>L>$N<+F0=hM}$N$?$a$N%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, ;; 1998, 1999, 2001 ;; Masahiko Sato ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk-auto.el,v 1.23 2011/06/04 01:14:39 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2011/06/04 01:14:39 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) ;;;###autoload (defun skk-okuri-search-1 () (when (and (not (or skk-abbrev-mode skk-process-okuri-early skk-henkan-okurigana)) ;; we don't do auto-okuri-process ;; if henkan key contains numerals. (not (skk-numeric-p)) (> (length skk-henkan-key) 1)) (let (l) (setq skk-okuri-index-min (length skk-henkan-list) l (funcall skk-okuri-search-function) skk-okuri-index-max (+ skk-okuri-index-min (length l))) (if (not skk-katakana) l (mapcar 'skk-hiragana-to-katakana l))))) (defun skk-okuri-search-subr-original () ;; skk-okuri-search $B$N%5%V%k!<%A%s!#8+$D$1$?%(%s%H%j$N%j%9%H$rJV$9!#(B (let* ((henkan-key skk-henkan-key) (key (substring henkan-key 0 1)) (len (length henkan-key)) (key1 (concat "\n" key)) key2 len2 key3 len3 okuri3 ;; case-fold-search $B$O!"<-=q%P%C%U%!$G$O>o$K(B nil$B!#(B ;;case-fold-search (inhibit-quit t) key-cand-alist p q r) (save-match-data (with-current-buffer (skk-get-jisyo-buffer skk-jisyo) (goto-char skk-okuri-ari-min) (while (search-forward key1 skk-okuri-ari-max t) (setq p (point) key2 (concat key (buffer-substring-no-properties p (- (search-forward " ") 2))) len2 (length key2)) (when (and (<= len2 len) (string= key2 (substring henkan-key 0 len2))) (let ((cont t)) (setq q (line-end-position)) (while (and cont (search-forward "/[" q t)) (setq r (point)) (setq okuri3 (buffer-substring-no-properties r (1- (search-forward "/"))) key3 (concat key2 okuri3) len3 (length key3)) (when (and (<= len3 len) (string= key3 (substring henkan-key 0 len3))) ;; finally found a candidate! (let ((okuri (concat okuri3 (substring henkan-key len3 len))) cand) (while (not (eq (following-char) ?\])) (setq cand (concat (buffer-substring-no-properties (point) (1- (search-forward "/" skk-okuri-ari-max t))) okuri)) ;; $B8+=P$78l$,0c$C$F$b8uJd$,F1$8$3$H$,$"$jF@$k!#(B ;; $B$+$s(Bz /$B46(B/[$B$8(B/$B46(B/]/ ;; $B$+$s(Bj /$B46(B/[$B$8(B/$B46(B/]/ ;; $B$J$I!#(B (unless (rassoc cand key-cand-alist) (setq key-cand-alist (cons (cons key3 cand) key-cand-alist)))) ;; it is not necessary to seach for "\[" on this line ;; any more (setq cont nil))))))) ;; key3 $B$ND9$$$b$N=g$K%=!<%H$7$FJV$9!#(B (mapcar 'cdr (sort (nreverse key-cand-alist) (lambda (x y) (skk-string< (car y) (car x))))))))) ;;;###autoload (defun skk-adjust-search-prog-list-for-auto-okuri () ;; `skk-auto-okuri-process' $B$,(B non-nil $B$G$"$l$P(B ;; `skk-search-prog-list' $B$K(B `skk-okuri-search' $B$r2C$($k!#(B ;; ;; `skk-okuri-search' $B$r2C$($k0LCV$K$D$$$F$O!"(Bskk-jisyo $B$N(B ;; $B8e$,:GNI$+$I$&$+$OJ,$i$J$$$N$G!"%*%W%7%g%s$GJQ99$G$-$k(B ;; $B$h$&$K$9$Y$-$@$,(B...$B!#(B (unless (member '(skk-okuri-search) (default-value 'skk-search-prog-list)) (let ((pl (default-value 'skk-search-prog-list)) (n 0) dic mark) (while pl (setq dic (car pl)) (if (memq (nth 1 dic) '(skk-jisyo skk-rdbms-private-jisyo-table)) (setq mark n pl nil) (setq pl (cdr pl) n (1+ n)))) (when mark (skk-splice-in (default-value 'skk-search-prog-list) (1+ mark) '((skk-okuri-search))))))) ;;(add-hook 'skk-mode-hook 'skk-adjust-search-prog-list-for-auto-okuri) (run-hooks 'skk-auto-load-hook) (provide 'skk-auto) ;;; skk-auto.el ends here ddskk-15.2/skk-azik.el0000644000570400056700000006552512170640416014666 0ustar kitamotoopenlab;;; skk-azik.el --- $B3HD%%m!<%^;zF~NO(B "AZIK" $B$r(B SKK $B$G;H$&$?$a$N@_Dj(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2002 ONODA Arata ;; Author: ONODA Arata ;; Maintainer: SKK Development Team ;; Version: $Id: skk-azik.el,v 1.11 2013/07/15 00:23:42 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Created: Jan. 9, 2002 ;; Last Modified: $Date: 2013/07/15 00:23:42 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B3HD%%m!<%^;zF~NO(B "AZIK" $B$r(B SKK $B$G;H$&$?$a$N@_Dj$G$9!#(B ;; "AZIK"$B$K$D$$$F$O!"0J2<$N(B URL $B$r;2>H$7$F2<$5$$!#(B ;; http://hp.vector.co.jp/authors/VA002116/azik/azikindx.htm ;; ;; $B;H$$J}(B - $B2<5-$N@_Dj$r(B .skk $B$K2C$($F$/$@$5$$!#(B ;; $B$=$N8e(B Emacs(Mule) $B$r:F5/F0$9$l$P(B skk $B$K$h$k(B AZIK $B$G$N(B ;; $BF~NO$,2DG=$G$9!#(B ;; ;; (setq skk-use-azik t) ;; (setq skk-azik-keyboard-type 'jp106) ;; ;; $BJQ?t(B skk-azik-keyboard-type $B$K$*;H$$$N%-!<%\!<%I$N%?%$%W$r(B ;; $B;XDj$7$F2<$5$$!#(Bskk-azik-keyboard-type $B$O%7%s%\%k$G(B ;; 'jp106 $B$b$7$/$O(B 'jp-pc98 $B!"$^$?$O!"(B 'en $B$r;XDj$7$^$9!#(B ;; ;; ;; $BCm0U(B 1 - AZIK $B$G$O(B "q" $B$r(B "$B$s(B" $B$NF~NO$K;H$&$N$G!"(B"q" $B$N$b$H$b$H(B ;; $B$N5!G=$G$"$k(B "skk-toggle-kana" $B$K$O!"F|K\8l%-!<%\!<%I(B ;; $B$G$"$l$P(B "@" $B$r!"1Q8l%-!<%\!<%I$G$"$l$P!"(B"[" $B$GBeMQ$7$^$9!#(B ;; SKK $BI8=`$N(B "@"($BF|K\8l%-!<%\!<%I(B) $B$d(B "["($B1Q8l%-!<%\!<%I(B) $B$O!"(B ;; $B$O!"(B x $B$rIU$1$F!"$=$l$>$l(B "x@" $B$H(B "x[" $B$G;HMQ$G$-$^$9!#(B ;; ;; 2 - $B=c@5$N(B AZIK $B$G$O(B "la" $B$G(B "$B$!(B" $B$rF~NO$7$^$9!#$7$+$7(B ;; SKK $B$G$O(B L $B$r(B ASCII/$BA41Q%b!<%I$N@Z$jBX$(%-!<$H$7$F(B ;; $B;HMQ$9$k$N$G!"(B "xxa" $B$G(B "$B$!(B" $B$,F~NO$G$-$k$h$&$K$7$F(B ;; $B$$$^$9!#(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars) (defvar skk-jisx0201-rule-list) (defvar skk-jisx0201-base-rule-list)) (defvar skk-azik-unnecessary-base-rule-list '("cha" "che" "chi" "cho" "chu" "dha" "dhe" "dhi" "dho" "dhu" "sha" "she" "shi" "sho" "shu" "tha" "the" "thi" "tho" "thu")) (defvar skk-azik-additional-rom-kana-rule-list '((";" nil ("$B%C(B" . "$B$C(B")) ("x;" nil ";") ("bd" nil ("$B%Y%s(B" . "$B$Y$s(B")) ("bh" nil ("$B%V%&(B" . "$B$V$&(B")) ("bj" nil ("$B%V%s(B" . "$B$V$s(B")) ("bk" nil ("$B%S%s(B" . "$B$S$s(B")) ("bl" nil ("$B%\%s(B" . "$B$\$s(B")) ("bn" nil ("$B%P%s(B" . "$B$P$s(B")) ("bp" nil ("$B%\%&(B" . "$B$\$&(B")) ("bq" nil ("$B%P%$(B" . "$B$P$$(B")) ("br" nil ("$B%P%i(B" . "$B$P$i(B")) ("bt" nil ("$B%S%H(B" . "$B$S$H(B")) ("bw" nil ("$B%Y%$(B" . "$B$Y$$(B")) ("bx" nil ("$B%Y%$(B" . "$B$Y$$(B")) ("byd" nil ("$B%S%'%s(B" . "$B$S$'$s(B")) ("byh" nil ("$B%S%e%&(B" . "$B$S$e$&(B")) ("byj" nil ("$B%S%e%s(B" . "$B$S$e$s(B")) ("byl" nil ("$B%S%g%s(B" . "$B$S$g$s(B")) ("byn" nil ("$B%S%c%s(B" . "$B$S$c$s(B")) ("byp" nil ("$B%S%g%&(B" . "$B$S$g$&(B")) ("byq" nil ("$B%S%c%$(B" . "$B$S$c$$(B")) ("byw" nil ("$B%S%'%$(B" . "$B$S$'$$(B")) ("byz" nil ("$B%S%c%s(B" . "$B$S$c$s(B")) ("bz" nil ("$B%P%s(B" . "$B$P$s(B")) ("ca" nil ("$B%A%c(B" . "$B$A$c(B")) ("cc" nil ("$B%A%c(B" . "$B$A$c(B")) ("cd" nil ("$B%A%'%s(B" . "$B$A$'$s(B")) ("ce" nil ("$B%A%'(B" . "$B$A$'(B")) ("cf" nil ("$B%A%'(B" . "$B$A$'(B")) ("ch" nil ("$B%A%e%&(B" . "$B$A$e$&(B")) ("ci" nil ("$B%A(B" . "$B$A(B")) ("cj" nil ("$B%A%e%s(B" . "$B$A$e$s(B")) ("ck" nil ("$B%A%s(B" . "$B$A$s(B")) ("cl" nil ("$B%A%g%s(B" . "$B$A$g$s(B")) ("cn" nil ("$B%A%c%s(B" . "$B$A$c$s(B")) ("co" nil ("$B%A%g(B" . "$B$A$g(B")) ("cp" nil ("$B%A%g%&(B" . "$B$A$g$&(B")) ("cq" nil ("$B%A%c%$(B" . "$B$A$c$$(B")) ("cu" nil ("$B%A%e(B" . "$B$A$e(B")) ("cv" nil ("$B%A%c%$(B" . "$B$A$c$$(B")) ("cw" nil ("$B%A%'%$(B" . "$B$A$'$$(B")) ("cx" nil ("$B%A%'%$(B" . "$B$A$'$$(B")) ("cz" nil ("$B%A%c%s(B" . "$B$A$c$s(B")) ("dch" nil ("$B%G%e!<(B" . "$B$G$e!<(B")) ("dci" nil ("$B%G%#(B" . "$B$G$#(B")) ("dck" nil ("$B%G%#%s(B" . "$B$G$#$s(B")) ("dcp" nil ("$B%I%%!<(B" . "$B$I$%!<(B")) ("dcu" nil ("$B%G%e(B" . "$B$G$e(B")) ("dd" nil ("$B%G%s(B" . "$B$G$s(B")) ("df" nil ("$B%G(B" . "$B$G(B")) ("dg" nil ("$B%@%,(B" . "$B$@$,(B")) ("dh" nil ("$B%E%&(B" . "$B$E$&(B")) ("dj" nil ("$B%E%s(B" . "$B$E$s(B")) ("dk" nil ("$B%B%s(B" . "$B$B$s(B")) ("dl" nil ("$B%I%s(B" . "$B$I$s(B")) ("dm" nil ("$B%G%b(B" . "$B$G$b(B")) ("dn" nil ("$B%@%s(B" . "$B$@$s(B")) ("dp" nil ("$B%I%&(B" . "$B$I$&(B")) ("dq" nil ("$B%@%$(B" . "$B$@$$(B")) ("dr" nil ("$B%G%"%k(B" . "$B$G$"$k(B")) ("ds" nil ("$B%G%9(B" . "$B$G$9(B")) ("dt" nil ("$B%@%A(B" . "$B$@$A(B")) ("dv" nil ("$B%G%s(B" . "$B$G$s(B")) ("dw" nil ("$B%G%$(B" . "$B$G$$(B")) ("dy" nil ("$B%G%#(B" . "$B$G$#(B")) ("dz" nil ("$B%@%s(B" . "$B$@$s(B")) ("fd" nil ("$B%U%'%s(B" . "$B$U$'$s(B")) ("fh" nil ("$B%U%&(B" . "$B$U$&(B")) ("fj" nil ("$B%U%s(B" . "$B$U$s(B")) ("fk" nil ("$B%U%#%s(B" . "$B$U$#$s(B")) ("fl" nil ("$B%U%)%s(B" . "$B$U$)$s(B")) ("fm" nil ("$B%U%`(B" . "$B$U$`(B")) ("fn" nil ("$B%U%!%s(B" . "$B$U$!$s(B")) ("fp" nil ("$B%U%)!<(B" . "$B$U$)!<(B")) ("fq" nil ("$B%U%!%$(B" . "$B$U$!$$(B")) ("fr" nil ("$B%U%k(B" . "$B$U$k(B")) ("fs" nil ("$B%U%!%$(B" . "$B$U$!$$(B")) ("fw" nil ("$B%U%'%$(B" . "$B$U$'$$(B")) ("fz" nil ("$B%U%!%s(B" . "$B$U$!$s(B")) ("gd" nil ("$B%2%s(B" . "$B$2$s(B")) ("gh" nil ("$B%0%&(B" . "$B$0$&(B")) ("gj" nil ("$B%0%s(B" . "$B$0$s(B")) ("gk" nil ("$B%.%s(B" . "$B$.$s(B")) ("gl" nil ("$B%4%s(B" . "$B$4$s(B")) ("gn" nil ("$B%,%s(B" . "$B$,$s(B")) ("gp" nil ("$B%4%&(B" . "$B$4$&(B")) ("gq" nil ("$B%,%$(B" . "$B$,$$(B")) ("gr" nil ("$B%,%i(B" . "$B$,$i(B")) ("gt" nil ("$B%4%H(B" . "$B$4$H(B")) ("gw" nil ("$B%2%$(B" . "$B$2$$(B")) ("gyd" nil ("$B%.%'%s(B" . "$B$.$'$s(B")) ("gyh" nil ("$B%.%e%&(B" . "$B$.$e$&(B")) ("gyj" nil ("$B%.%e%s(B" . "$B$.$e$s(B")) ("gyl" nil ("$B%.%g%s(B" . "$B$.$g$s(B")) ("gyn" nil ("$B%.%c%s(B" . "$B$.$c$s(B")) ("gyp" nil ("$B%.%g%&(B" . "$B$.$g$&(B")) ("gyq" nil ("$B%.%c%$(B" . "$B$.$c$$(B")) ("gyw" nil ("$B%.%'%$(B" . "$B$.$'$$(B")) ("gyz" nil ("$B%.%c%s(B" . "$B$.$c$s(B")) ("gz" nil ("$B%,%s(B" . "$B$,$s(B")) ("hd" nil ("$B%X%s(B" . "$B$X$s(B")) ("hf" nil ("$B%U(B" . "$B$U(B")) ("hga" nil ("$B%R%c(B" . "$B$R$c(B")) ("hgd" nil ("$B%R%'%s(B" . "$B$R$'$s(B")) ("hge" nil ("$B%R%'(B" . "$B$R$'(B")) ("hgh" nil ("$B%R%e%&(B" . "$B$R$e$&(B")) ("hgj" nil ("$B%R%e%s(B" . "$B$R$e$s(B")) ("hgl" nil ("$B%R%g%s(B" . "$B$R$g$s(B")) ("hgn" nil ("$B%R%c%s(B" . "$B$R$c$s(B")) ("hgo" nil ("$B%R%g(B" . "$B$R$g(B")) ("hgp" nil ("$B%R%g%&(B" . "$B$R$g$&(B")) ("hgq" nil ("$B%R%c%$(B" . "$B$R$c$$(B")) ("hgu" nil ("$B%R%e(B" . "$B$R$e(B")) ("hgw" nil ("$B%R%'%$(B" . "$B$R$'$$(B")) ("hgz" nil ("$B%R%c%s(B" . "$B$R$c$s(B")) ("hh" nil ("$B%U%&(B" . "$B$U$&(B")) ("hj" nil ("$B%U%s(B" . "$B$U$s(B")) ("hk" nil ("$B%R%s(B" . "$B$R$s(B")) ("hl" nil ("$B%[%s(B" . "$B$[$s(B")) ("hn" nil ("$B%O%s(B" . "$B$O$s(B")) ("hp" nil ("$B%[%&(B" . "$B$[$&(B")) ("hq" nil ("$B%O%$(B" . "$B$O$$(B")) ("ht" nil ("$B%R%H(B" . "$B$R$H(B")) ("hw" nil ("$B%X%$(B" . "$B$X$$(B")) ("hyd" nil ("$B%R%'%s(B" . "$B$R$'$s(B")) ("hyh" nil ("$B%R%e%&(B" . "$B$R$e$&(B")) ("hyl" nil ("$B%R%g%s(B" . "$B$R$g$s(B")) ("hyp" nil ("$B%R%g%&(B" . "$B$R$g$&(B")) ("hyq" nil ("$B%R%c%$(B" . "$B$R$c$$(B")) ("hyw" nil ("$B%R%'%$(B" . "$B$R$'$$(B")) ("hyz" nil ("$B%R%c%s(B" . "$B$R$c$s(B")) ("hz" nil ("$B%O%s(B" . "$B$O$s(B")) ("jd" nil ("$B%8%'%s(B" . "$B$8$'$s(B")) ("jf" nil ("$B%8%e(B" . "$B$8$e(B")) ("jh" nil ("$B%8%e%&(B" . "$B$8$e$&(B")) ("jj" nil ("$B%8%e%s(B" . "$B$8$e$s(B")) ("jk" nil ("$B%8%s(B" . "$B$8$s(B")) ("jl" nil ("$B%8%g%s(B" . "$B$8$g$s(B")) ("jn" nil ("$B%8%c%s(B" . "$B$8$c$s(B")) ("jp" nil ("$B%8%g%&(B" . "$B$8$g$&(B")) ("jq" nil ("$B%8%c%$(B" . "$B$8$c$$(B")) ("jv" nil ("$B%8%e%&(B" . "$B$8$e$&(B")) ("jw" nil ("$B%8%'%$(B" . "$B$8$'$$(B")) ("jz" nil ("$B%8%c%s(B" . "$B$8$c$s(B")) ("kA" nil ("$B%u(B" . "$B%u(B")) ("kE" nil ("$B%v(B" . "$B%v(B")) ("kd" nil ("$B%1%s(B" . "$B$1$s(B")) ("kf" nil ("$B%-(B" . "$B$-(B")) ("kga" nil ("$B%-%c(B" . "$B$-$c(B")) ("kgd" nil ("$B%-%'%s(B" . "$B$-$'$s(B")) ("kge" nil ("$B%-%'(B" . "$B$-$'(B")) ("kgh" nil ("$B%-%e%&(B" . "$B$-$e$&(B")) ("kgl" nil ("$B%-%g%s(B" . "$B$-$g$s(B")) ("kgn" nil ("$B%-%c%s(B" . "$B$-$c$s(B")) ("kgo" nil ("$B%-%g(B" . "$B$-$g(B")) ("kgp" nil ("$B%-%g%&(B" . "$B$-$g$&(B")) ("kgq" nil ("$B%-%c%$(B" . "$B$-$c$$(B")) ("kgu" nil ("$B%-%e(B" . "$B$-$e(B")) ("kgw" nil ("$B%-%'%$(B" . "$B$-$'$$(B")) ("kgz" nil ("$B%-%c%s(B" . "$B$-$c$s(B")) ("kh" nil ("$B%/%&(B" . "$B$/$&(B")) ("kj" nil ("$B%/%s(B" . "$B$/$s(B")) ("kk" nil ("$B%-%s(B" . "$B$-$s(B")) ("kl" nil ("$B%3%s(B" . "$B$3$s(B")) ("km" nil ("$B%+%b(B" . "$B$+$b(B")) ("kn" nil ("$B%+%s(B" . "$B$+$s(B")) ("kp" nil ("$B%3%&(B" . "$B$3$&(B")) ("kq" nil ("$B%+%$(B" . "$B$+$$(B")) ("kr" nil ("$B%+%i(B" . "$B$+$i(B")) ("kt" nil ("$B%3%H(B" . "$B$3$H(B")) ("kv" nil ("$B%-%s(B" . "$B$-$s(B")) ("kw" nil ("$B%1%$(B" . "$B$1$$(B")) ("kyd" nil ("$B%-%'%s(B" . "$B$-$'$s(B")) ("kyh" nil ("$B%-%e%&(B" . "$B$-$e$&(B")) ("kyj" nil ("$B%-%e%s(B" . "$B$-$e$s(B")) ("kyl" nil ("$B%-%g%s(B" . "$B$-$g$s(B")) ("kyn" nil ("$B%-%c%s(B" . "$B$-$c$s(B")) ("kyp" nil ("$B%-%g%&(B" . "$B$-$g$&(B")) ("kyq" nil ("$B%-%c%$(B" . "$B$-$c$$(B")) ("kyw" nil ("$B%-%'%$(B" . "$B$-$'$$(B")) ("kyz" nil ("$B%-%c%s(B" . "$B$-$c$s(B")) ("kz" nil ("$B%+%s(B" . "$B$+$s(B")) ("md" nil ("$B%a%s(B" . "$B$a$s(B")) ("mf" nil ("$B%`(B" . "$B$`(B")) ("mga" nil ("$B%_%c(B" . "$B$_$c(B")) ("mgd" nil ("$B%_%'%s(B" . "$B$_$'$s(B")) ("mge" nil ("$B%_%'(B" . "$B$_$'(B")) ("mgh" nil ("$B%_%e%&(B" . "$B$_$e$&(B")) ("mgj" nil ("$B%_%e%s(B" . "$B$_$e$s(B")) ("mgl" nil ("$B%_%g%s(B" . "$B$_$g$s(B")) ("mgn" nil ("$B%_%c%s(B" . "$B$_$c$s(B")) ("mgo" nil ("$B%_%g(B" . "$B$_$g(B")) ("mgp" nil ("$B%_%g%&(B" . "$B$_$g$&(B")) ("mgq" nil ("$B%_%c%$(B" . "$B$_$c$$(B")) ("mgu" nil ("$B%_%e(B" . "$B$_$e(B")) ("mgw" nil ("$B%_%'%$(B" . "$B$_$'$$(B")) ("mgz" nil ("$B%_%c%s(B" . "$B$_$c$s(B")) ("mh" nil ("$B%`%&(B" . "$B$`$&(B")) ("mj" nil ("$B%`%s(B" . "$B$`$s(B")) ("mk" nil ("$B%_%s(B" . "$B$_$s(B")) ("ml" nil ("$B%b%s(B" . "$B$b$s(B")) ("mn" nil ("$B%b%N(B" . "$B$b$N(B")) ("mp" nil ("$B%b%&(B" . "$B$b$&(B")) ("mq" nil ("$B%^%$(B" . "$B$^$$(B")) ("mr" nil ("$B%^%k(B" . "$B$^$k(B")) ("ms" nil ("$B%^%9(B" . "$B$^$9(B")) ("mt" nil ("$B%^%?(B" . "$B$^$?(B")) ("mv" nil ("$B%`%s(B" . "$B$`$s(B")) ("mw" nil ("$B%a%$(B" . "$B$a$$(B")) ("myd" nil ("$B%_%'%s(B" . "$B$_$'$s(B")) ("myh" nil ("$B%_%e%&(B" . "$B$_$e$&(B")) ("myj" nil ("$B%_%e%s(B" . "$B$_$e$s(B")) ("myl" nil ("$B%_%g%s(B" . "$B$_$g$s(B")) ("myn" nil ("$B%_%c%s(B" . "$B$_$c$s(B")) ("myp" nil ("$B%_%g%&(B" . "$B$_$g$&(B")) ("myq" nil ("$B%_%c%$(B" . "$B$_$c$$(B")) ("myw" nil ("$B%_%'%$(B" . "$B$_$'$$(B")) ("myz" nil ("$B%_%c%s(B" . "$B$_$c$s(B")) ("mz" nil ("$B%^%s(B" . "$B$^$s(B")) ("nb" nil ("$B%M%P(B" . "$B$M$P(B")) ("nd" nil ("$B%M%s(B" . "$B$M$s(B")) ("nf" nil ("$B%L(B" . "$B$L(B")) ("nga" nil ("$B%K%c(B" . "$B$K$c(B")) ("ngd" nil ("$B%K%'%s(B" . "$B$K$'$s(B")) ("nge" nil ("$B%K%'(B" . "$B$K$'(B")) ("ngh" nil ("$B%K%e%&(B" . "$B$K$e$&(B")) ("ngj" nil ("$B%K%e%s(B" . "$B$K$e$s(B")) ("ngl" nil ("$B%K%g%s(B" . "$B$K$g$s(B")) ("ngn" nil ("$B%K%c%s(B" . "$B$K$c$s(B")) ("ngo" nil ("$B%K%g(B" . "$B$K$g(B")) ("ngp" nil ("$B%K%g%&(B" . "$B$K$g$&(B")) ("ngq" nil ("$B%K%c%$(B" . "$B$K$c$$(B")) ("ngu" nil ("$B%K%e(B" . "$B$K$e(B")) ("ngw" nil ("$B%K%'%$(B" . "$B$K$'$$(B")) ("ngz" nil ("$B%K%c%s(B" . "$B$K$c$s(B")) ("nh" nil ("$B%L%&(B" . "$B$L$&(B")) ("nj" nil ("$B%L%s(B" . "$B$L$s(B")) ("nk" nil ("$B%K%s(B" . "$B$K$s(B")) ("nl" nil ("$B%N%s(B" . "$B$N$s(B")) ("np" nil ("$B%N%&(B" . "$B$N$&(B")) ("nq" nil ("$B%J%$(B" . "$B$J$$(B")) ("nr" nil ("$B%J%k(B" . "$B$J$k(B")) ("nt" nil ("$B%K%A(B" . "$B$K$A(B")) ("nv" nil ("$B%L%s(B" . "$B$L$s(B")) ("nw" nil ("$B%M%$(B" . "$B$M$$(B")) ("nyd" nil ("$B%K%'%s(B" . "$B$K$'$s(B")) ("nyh" nil ("$B%K%e%&(B" . "$B$K$e$&(B")) ("nyj" nil ("$B%K%e%s(B" . "$B$K$e$s(B")) ("nyl" nil ("$B%K%g%s(B" . "$B$K$g$s(B")) ("nyn" nil ("$B%K%c%s(B" . "$B$K$c$s(B")) ("nyp" nil ("$B%K%g%&(B" . "$B$K$g$&(B")) ("nyq" nil ("$B%K%c%$(B" . "$B$K$c$$(B")) ("nyw" nil ("$B%K%'%$(B" . "$B$K$'$$(B")) ("nyz" nil ("$B%K%c%s(B" . "$B$K$c$s(B")) ("nz" nil ("$B%J%s(B" . "$B$J$s(B")) ("pd" nil ("$B%Z%s(B" . "$B$Z$s(B")) ("pf" nil ("$B%]%s(B" . "$B$]$s(B")) ("pga" nil ("$B%T%c(B" . "$B$T$c(B")) ("pgd" nil ("$B%T%'%s(B" . "$B$T$'$s(B")) ("pge" nil ("$B%T%'(B" . "$B$T$'(B")) ("pgh" nil ("$B%T%e%&(B" . "$B$T$e$&(B")) ("pgj" nil ("$B%T%e%s(B" . "$B$T$e$s(B")) ("pgl" nil ("$B%T%g%s(B" . "$B$T$g$s(B")) ("pgn" nil ("$B%T%c%s(B" . "$B$T$c$s(B")) ("pgo" nil ("$B%T%g(B" . "$B$T$g(B")) ("pgp" nil ("$B%T%g%&(B" . "$B$T$g$&(B")) ("pgq" nil ("$B%T%c%$(B" . "$B$T$c$$(B")) ("pgu" nil ("$B%T%e(B" . "$B$T$e(B")) ("pgw" nil ("$B%T%'%$(B" . "$B$T$'$$(B")) ("pgz" nil ("$B%T%c%s(B" . "$B$T$c$s(B")) ("ph" nil ("$B%W%&(B" . "$B$W$&(B")) ("pj" nil ("$B%W%s(B" . "$B$W$s(B")) ("pk" nil ("$B%T%s(B" . "$B$T$s(B")) ("pl" nil ("$B%]%s(B" . "$B$]$s(B")) ("pn" nil ("$B%Q%s(B" . "$B$Q$s(B")) ("pp" nil ("$B%]%&(B" . "$B$]$&(B")) ("pq" nil ("$B%Q%$(B" . "$B$Q$$(B")) ("pv" nil ("$B%]%&(B" . "$B$]$&(B")) ("pw" nil ("$B%Z%$(B" . "$B$Z$$(B")) ("pyd" nil ("$B%T%'%s(B" . "$B$T$'$s(B")) ("pyh" nil ("$B%T%e%&(B" . "$B$T$e$&(B")) ("pyj" nil ("$B%T%e%s(B" . "$B$T$e$s(B")) ("pyl" nil ("$B%T%g%s(B" . "$B$T$g$s(B")) ("pyn" nil ("$B%T%c%s(B" . "$B$T$c$s(B")) ("pyp" nil ("$B%T%g%&(B" . "$B$T$g$&(B")) ("pyq" nil ("$B%T%c%$(B" . "$B$T$c$$(B")) ("pyw" nil ("$B%T%'%$(B" . "$B$T$'$$(B")) ("pyz" nil ("$B%T%c%s(B" . "$B$T$c$s(B")) ("pz" nil ("$B%Q%s(B" . "$B$Q$s(B")) ("q" nil ("$B%s(B" . "$B$s(B")) ("rd" nil ("$B%l%s(B" . "$B$l$s(B")) ("rh" nil ("$B%k%&(B" . "$B$k$&(B")) ("rj" nil ("$B%k%s(B" . "$B$k$s(B")) ("rk" nil ("$B%j%s(B" . "$B$j$s(B")) ("rl" nil ("$B%m%s(B" . "$B$m$s(B")) ("rn" nil ("$B%i%s(B" . "$B$i$s(B")) ("rp" nil ("$B%m%&(B" . "$B$m$&(B")) ("rq" nil ("$B%i%$(B" . "$B$i$$(B")) ("rr" nil ("$B%i%l(B" . "$B$i$l(B")) ("rw" nil ("$B%l%$(B" . "$B$l$$(B")) ("ryd" nil ("$B%j%'%s(B" . "$B$j$'$s(B")) ("ryh" nil ("$B%j%e%&(B" . "$B$j$e$&(B")) ("ryj" nil ("$B%j%e%s(B" . "$B$j$e$s(B")) ("ryk" nil ("$B%j%g%/(B" . "$B$j$g$/(B")) ("ryl" nil ("$B%j%g%s(B" . "$B$j$g$s(B")) ("ryn" nil ("$B%j%c%s(B" . "$B$j$c$s(B")) ("ryp" nil ("$B%j%g%&(B" . "$B$j$g$&(B")) ("ryq" nil ("$B%j%c%$(B" . "$B$j$c$$(B")) ("ryw" nil ("$B%j%'%$(B" . "$B$j$'$$(B")) ("ryz" nil ("$B%j%c%s(B" . "$B$j$c$s(B")) ("rz" nil ("$B%i%s(B" . "$B$i$s(B")) ("sd" nil ("$B%;%s(B" . "$B$;$s(B")) ("sf" nil ("$B%5%$(B" . "$B$5$$(B")) ("sh" nil ("$B%9%&(B" . "$B$9$&(B")) ("sj" nil ("$B%9%s(B" . "$B$9$s(B")) ("sk" nil ("$B%7%s(B" . "$B$7$s(B")) ("sl" nil ("$B%=%s(B" . "$B$=$s(B")) ("sm" nil ("$B%7%b(B" . "$B$7$b(B")) ("sn" nil ("$B%5%s(B" . "$B$5$s(B")) ("sp" nil ("$B%=%&(B" . "$B$=$&(B")) ("sq" nil ("$B%5%$(B" . "$B$5$$(B")) ("sr" nil ("$B%9%k(B" . "$B$9$k(B")) ("ss" nil ("$B%;%$(B" . "$B$;$$(B")) ("st" nil ("$B%7%?(B" . "$B$7$?(B")) ("sv" nil ("$B%5%$(B" . "$B$5$$(B")) ("sw" nil ("$B%;%$(B" . "$B$;$$(B")) ("syd" nil ("$B%7%'%s(B" . "$B$7$'$s(B")) ("syh" nil ("$B%7%e%&(B" . "$B$7$e$&(B")) ("syj" nil ("$B%7%e%s(B" . "$B$7$e$s(B")) ("syl" nil ("$B%7%g%s(B" . "$B$7$g$s(B")) ("syp" nil ("$B%7%g%&(B" . "$B$7$g$&(B")) ("syq" nil ("$B%7%c%$(B" . "$B$7$c$$(B")) ("syw" nil ("$B%7%'%$(B" . "$B$7$'$$(B")) ("syz" nil ("$B%7%c%s(B" . "$B$7$c$s(B")) ("sz" nil ("$B%5%s(B" . "$B$5$s(B")) ("tU" nil ("$B%C(B" . "$B$C(B")) ("tb" nil ("$B%?%S(B" . "$B$?$S(B")) ("td" nil ("$B%F%s(B" . "$B$F$s(B")) ("tgh" nil ("$B%F%e!<(B" . "$B$F$e!<(B")) ("tgi" nil ("$B%F%#(B" . "$B$F$#(B")) ("tgk" nil ("$B%F%#%s(B" . "$B$F$#$s(B")) ("tgp" nil ("$B%H%%!<(B" . "$B$H$%!<(B")) ("tgu" nil ("$B%F%e(B" . "$B$F$e(B")) ("th" nil ("$B%D%&(B" . "$B$D$&(B")) ("tj" nil ("$B%D%s(B" . "$B$D$s(B")) ("tk" nil ("$B%A%s(B" . "$B$A$s(B")) ("tl" nil ("$B%H%s(B" . "$B$H$s(B")) ("tm" nil ("$B%?%a(B" . "$B$?$a(B")) ("tn" nil ("$B%?%s(B" . "$B$?$s(B")) ("tp" nil ("$B%H%&(B" . "$B$H$&(B")) ("tq" nil ("$B%?%$(B" . "$B$?$$(B")) ("tr" nil ("$B%?%i(B" . "$B$?$i(B")) ("tsU" nil ("$B%C(B" . "$B$C(B")) ("tsa" nil ("$B%D%!(B" . "$B$D$!(B")) ("tse" nil ("$B%D%'(B" . "$B$D$'(B")) ("tsi" nil ("$B%D%#(B" . "$B$D$#(B")) ("tso" nil ("$B%D%)(B" . "$B$D$)(B")) ("tt" nil ("$B%?%A(B" . "$B$?$A(B")) ("tw" nil ("$B%F%$(B" . "$B$F$$(B")) ("tyd" nil ("$B%A%'%s(B" . "$B$A$'$s(B")) ("tyh" nil ("$B%A%e%&(B" . "$B$A$e$&(B")) ("tyj" nil ("$B%A%e%s(B" . "$B$A$e$s(B")) ("tyl" nil ("$B%A%g%s(B" . "$B$A$g$s(B")) ("tyn" nil ("$B%A%c%s(B" . "$B$A$c$s(B")) ("typ" nil ("$B%A%g%&(B" . "$B$A$g$&(B")) ("tyq" nil ("$B%A%c%$(B" . "$B$A$c$$(B")) ("tyw" nil ("$B%A%'%$(B" . "$B$A$'$$(B")) ("tyz" nil ("$B%A%c%s(B" . "$B$A$c$s(B")) ("tz" nil ("$B%?%s(B" . "$B$?$s(B")) ("vd" nil ("$B%t%'%s(B" . "$B$&!+$'$s(B")) ("vk" nil ("$B%t%#%s(B" . "$B$&!+$#$s(B")) ("vl" nil ("$B%t%)%s(B" . "$B$&!+$)$s(B")) ("vn" nil ("$B%t%!%s(B" . "$B$&!+$!$s(B")) ("vp" nil ("$B%t%)!<(B" . "$B$&!+$)!<(B")) ("vq" nil ("$B%t%!%$(B" . "$B$&!+$!$$(B")) ("vw" nil ("$B%t%'%$(B" . "$B$&!+$'$$(B")) ("vya" nil ("$B%t%c(B" . "$B$&!+$c(B")) ("vye" nil ("$B%t%'(B" . "$B$&!+$'(B")) ("vyo" nil ("$B%t%g(B" . "$B$&!+$g(B")) ("vyu" nil ("$B%t%e(B" . "$B$&!+$e(B")) ("vz" nil ("$B%t%!%s(B" . "$B$&!+$!$s(B")) ("wA" nil ("$B%n(B" . "$B$n(B")) ("wd" nil ("$B%&%'%s(B" . "$B$&$'$s(B")) ("wf" nil ("$B%o%$(B" . "$B$o$$(B")) ("wha" nil ("$B%&%!(B" . "$B$&$!(B")) ("whe" nil ("$B%&%'(B" . "$B$&$'(B")) ("whi" nil ("$B%&%#(B" . "$B$&$#(B")) ("who" nil ("$B%&%)(B" . "$B$&$)(B")) ("whu" nil ("$B%&(B" . "$B$&(B")) ("wk" nil ("$B%&%#%s(B" . "$B$&$#$s(B")) ("wl" nil ("$B%&%)%s(B" . "$B$&$)$s(B")) ("wn" nil ("$B%o%s(B" . "$B$o$s(B")) ("wp" nil ("$B%&%)!<(B" . "$B$&$)!<(B")) ("wq" nil ("$B%o%$(B" . "$B$o$$(B")) ("wr" nil ("$B%o%l(B" . "$B$o$l(B")) ("wso" nil ("$B%&%)(B" . "$B$&$)(B")) ("wt" nil ("$B%o%?(B" . "$B$o$?(B")) ("wz" nil ("$B%o%s(B" . "$B$o$s(B")) ("xa" nil ("$B%7%c(B" . "$B$7$c(B")) ("xc" nil ("$B%7%c(B" . "$B$7$c(B")) ("xd" nil ("$B%7%'%s(B" . "$B$7$'$s(B")) ("xe" nil ("$B%7%'(B" . "$B$7$'(B")) ("xf" nil ("$B%7%'%$(B" . "$B$7$'$$(B")) ("xh" nil ("$B%7%e%&(B" . "$B$7$e$&(B")) ("xi" nil ("$B%7(B" . "$B$7(B")) ("xj" nil ("$B%7%e%s(B" . "$B$7$e$s(B")) ("xk" nil ("$B%7%s(B" . "$B$7$s(B")) ("xl" nil ("$B%7%g%s(B" . "$B$7$g$s(B")) ("xn" nil ("$B%7%c%s(B" . "$B$7$c$s(B")) ("xo" nil ("$B%7%g(B" . "$B$7$g(B")) ("xp" nil ("$B%7%g%&(B" . "$B$7$g$&(B")) ("xq" nil ("$B%7%c%$(B" . "$B$7$c$$(B")) ("xt" nil ("$B%7%e%D(B" . "$B$7$e$D(B")) ("xu" nil ("$B%7%e(B" . "$B$7$e(B")) ("xv" nil ("$B%7%c%$(B" . "$B$7$c$$(B")) ("xw" nil ("$B%7%'%$(B" . "$B$7$'$$(B")) ("xxa" nil ("$B%!(B" . "$B$!(B")) ("xxe" nil ("$B%'(B" . "$B$'(B")) ("xxi" nil ("$B%#(B" . "$B$#(B")) ("xxo" nil ("$B%)(B" . "$B$)(B")) ("xxu" nil ("$B%%(B" . "$B$%(B")) ("xxh" nil "$B"+(B") ("xxj" nil "$B"-(B") ("xxk" nil "$B",(B") ("xxl" nil "$B"*(B") ("xz" nil ("$B%7%c%s(B" . "$B$7$c$s(B")) ("y<" nil "$B"+(B") ("y>" nil "$B"*(B") ("y^" nil "$B",(B") ("yf" nil ("$B%f(B" . "$B$f(B")) ("yh" nil ("$B%f%&(B" . "$B$f$&(B")) ("yi" nil ("$B%p(B" . "$B$p(B")) ("yj" nil ("$B%f%s(B" . "$B$f$s(B")) ("yl" nil ("$B%h%s(B" . "$B$h$s(B")) ("yn" nil ("$B%d%s(B" . "$B$d$s(B")) ("yp" nil ("$B%h%&(B" . "$B$h$&(B")) ("yq" nil ("$B%d%$(B" . "$B$d$$(B")) ("yr" nil ("$B%h%k(B" . "$B$h$k(B")) ("yv" nil ("$B%f%&(B" . "$B$f$&(B")) ("yz" nil ("$B%d%s(B" . "$B$d$s(B")) ("zc" nil ("$B%6(B" . "$B$6(B")) ("zd" nil ("$B%<%s(B" . "$B$<$s(B")) ("zf" nil ("$B%<(B" . "$B$<(B")) ("zh" nil ("$B%:%&(B" . "$B$:$&(B")) ("zj" nil ("$B%:%s(B" . "$B$:$s(B")) ("zk" nil ("$B%8%s(B" . "$B$8$s(B")) ("zl" nil ("$B%>%s(B" . "$B$>$s(B")) ("zn" nil ("$B%6%s(B" . "$B$6$s(B")) ("zp" nil ("$B%>%&(B" . "$B$>$&(B")) ("zq" nil ("$B%6%$(B" . "$B$6$$(B")) ("zr" nil ("$B%6%k(B" . "$B$6$k(B")) ("zv" nil ("$B%6%$(B" . "$B$6$$(B")) ("zw" nil ("$B%<%$(B" . "$B$<$$(B")) ("zx" nil ("$B%<%$(B" . "$B$<$$(B")) ("zyd" nil ("$B%8%'%s(B" . "$B$8$'$s(B")) ("zyh" nil ("$B%8%e%&(B" . "$B$8$e$&(B")) ("zyj" nil ("$B%8%e%s(B" . "$B$8$e$s(B")) ("zyl" nil ("$B%8%g%s(B" . "$B$8$g$s(B")) ("zyn" nil ("$B%8%c%s(B" . "$B$8$c$s(B")) ("zyp" nil ("$B%8%g%&(B" . "$B$8$g$&(B")) ("zyq" nil ("$B%8%c%$(B" . "$B$8$c$$(B")) ("zyw" nil ("$B%8%'%$(B" . "$B$8$'$$(B")) ("zyz" nil ("$B%8%c%s(B" . "$B$8$c$s(B")) ("zz" nil ("$B%6%s(B" . "$B$6$s(B")))) (defvar skk-azik-keyboard-specific-additional-rom-kana-rule-list nil) ;; $B%-!<%\!<%I0MB8ItJ,!#(B ;; skk-azik-keyboard-type $B$,@_Dj$5$l$F$$$l$P0J2<$r ;; Author: Yusuke Shinyama ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method, cdb ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; Usage: Set skk-cdb-large-jisyo in your ~/.skk like the following. ;; ;; (setq skk-cdb-large-jisyo "/usr/share/skk/SKK-JISYO.L.cdb") ;; (require 'cdb) (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (defconst skk-cdb-version "20100719+") ;; skk-cdb-working-buffer ;; (defvar skk-cdb-working-buffer " *skk-cdb*") ;; skk-search-cdb-jisyo ;; ;;;###autoload (defun skk-search-cdb-jisyo (cdb-path) (unless cdb-path (setq cdb-path skk-cdb-large-jisyo)) (when (and (stringp cdb-path) (file-readable-p cdb-path)) (cdb-init cdb-path) (let* ((key (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (bkey (encode-coding-string key skk-cdb-coding-system)) (bval (cdb-get cdb-path bkey)) l) (when bval (with-current-buffer (get-buffer-create skk-cdb-working-buffer) (erase-buffer) (insert (decode-coding-string bval skk-cdb-coding-system)) (goto-char (point-min)) (when (eq (following-char) ?/) (let ((okurigana (or skk-henkan-okurigana skk-okuri-char))) (forward-char 1) (setq l (skk-compute-henkan-lists okurigana)) (when l (cond ((and okurigana skk-henkan-okuri-strictly) (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l))))))))))) (provide 'skk-cdb) ;;; skk-cdb.el ends here ddskk-15.2/skk-comp.el0000644000570400056700000005067012170640416014661 0ustar kitamotoopenlab;;; skk-comp.el --- $BJd40$N$?$a$N%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 ;; 1999, 2000 ;; Masahiko Sato ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk-comp.el,v 1.94 2013/07/15 00:23:42 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/07/15 00:23:42 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B"&$5(B (TAB) -> $B"&$5$H$&(B (.) -> $B"&$5$$$H$&(B (,) -> $B"&$5$H$&(B(.) -> $B"&$5$$$H$&(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars) (defvar smart-find-file-path) (defvar dont-bind-my-keys) (condition-case nil (let ((dont-bind-my-keys t)) (load "smart-find")) (error (defalias 'smart-find-file-all 'ignore)))) ;;;###autoload (defun skk-comp-start-henkan (arg) "$B"&%b!<%I$GFI$_$rJd40$7$?8e!"JQ49$9$k!#(B $B$=$l0J30$N%b!<%I$G$O%*%j%8%J%k$N%-!<%^%C%W$K3d$jIU$1$i$l$?%3%^%s%I$r%(%_%e%l!<(B $B%H$9$k!#(B" (interactive "*P") (cond ((eq skk-henkan-mode 'on) (skk-comp-do (not (eq last-command 'skk-comp-do))) (skk-start-henkan arg)) (t (skk-emulate-original-map arg)))) ;;;###autoload (defun skk-comp (first &optional silent) (setq this-command 'skk-comp-do) (skk-comp-do first silent)) ;;;###autoload (defun skk-comp-do (first &optional silent set-this-command) ;; main completion engine. (when set-this-command (setq this-command 'skk-comp-do)) (let ((inhibit-quit t) ;; skk-num $B$,(B require $B$5$l$F$J$$$H(B ;; buffer-local $BCM$r2u$962$l$"$j!#(B skk-num-list tmp-key data orig-key c-word) (when first (setq skk-comp-search-done nil skk-comp-stack nil skk-comp-depth 0 skk-comp-prefix skk-prefix) ;; key \ use-prefix nil kakutei-first non-nil # data ;; "$B$+(Bk" "$B$+(B" , "" "$B$+(B" , "k" "$B$+(B", "k" # t ;; "$B$+(Bn" "$B$+$s(B", "" "$B$+$s(B", "" "$B$+(B", "n" # non-t (setq tmp-key (buffer-substring-no-properties skk-henkan-start-point (point))) ;; skk-kana-cleanup() $B$r8F$VA0$N(B key $B$re8uJd$,$J$$$N$G(B c-word = nil (if skk-comp-circulate (setq skk-comp-depth (length skk-comp-stack))) (setq skk-comp-depth (1- skk-comp-depth)) (setq c-word (nth skk-comp-depth skk-comp-stack)))) ;; ($BL$C5:w8uJd$,;D$C$F$$$k2DG=@-M-$j(B) (t (cond ;; $B:G8e$KF@$i$l$?8uJd$rI=<($7$F$$$k(B ((zerop skk-comp-depth) (setq c-word (let ((word (skk-comp-get-candidate first))) (while (member word skk-comp-stack) (setq word (skk-comp-get-candidate))) word)) (if c-word ;; $B?75,$K8+$D$1$?$H$-$@$1(B push $B$9$k!#(B (push c-word skk-comp-stack) (setq skk-comp-search-done t) (if skk-comp-circulate (setq skk-comp-depth (length skk-comp-stack))))) (t ;; "," $B$J$I$GA08uJd$KLa$C$F$$$k(B (setq skk-comp-depth (1- skk-comp-depth) c-word (nth skk-comp-depth skk-comp-stack)))))) (cond (c-word (delete-region skk-henkan-start-point (point)) (insert c-word)) (t ;; When skk-comp-circulate, return to the keyword. (when skk-comp-circulate (delete-region skk-henkan-start-point (point)) (insert orig-key)) (unless silent (ding) (cond ((and (string= skk-comp-key "") (assq 'skk-comp-by-history skk-completion-prog-list) (or (not skk-comp-use-prefix) (string= skk-comp-prefix ""))) (skk-message "$B$3$l0J>e$NMzNr$O$"$j$^$;$s(B" "No more words in history")) (t (if skk-japanese-message-and-error (message "\"%s\" $B$GJd40$9$Y$-8+=P$78l$O(B%s$B$"$j$^$;$s(B" (if skk-comp-use-prefix (concat orig-key skk-comp-prefix) orig-key) (if first "" "$BB>$K(B")) (message "No %scompletions for \"%s\"" (if first "" "more ") (if skk-comp-use-prefix (concat orig-key skk-comp-prefix) orig-key)))))))))) ;;;###autoload (defun skk-comp-get-candidate (&optional first) (when first (setq skk-comp-first t skk-current-completion-prog-list (cond ((and (integerp first) (<= 0 first) (<= first 9)) (let ((list (symbol-value (intern (format "skk-completion-prog-list-%d" first))))) (or list skk-completion-prog-list))) (t skk-completion-prog-list)))) (let (cand prog) (while (and (null cand) skk-current-completion-prog-list) (setq prog (car skk-current-completion-prog-list)) (setq cand (eval prog) skk-comp-first nil) (unless cand (setq skk-current-completion-prog-list (cdr skk-current-completion-prog-list)) (setq skk-comp-first t))) (if (and skk-katakana cand) (skk-hiragana-to-katakana cand) cand))) ;; for test or backend use ;;;###autoload (defun skk-comp-get-all-candidates (key prefix prog-list) (let ((skk-comp-key key) (skk-comp-prefix prefix) (skk-completion-prog-list prog-list) skk-current-completion-prog-list skk-comp-first cand ret) (setq cand (skk-comp-get-candidate 'first)) (when cand (setq ret (list cand)) (while (setq cand (skk-comp-get-candidate)) (unless (member cand ret) (setq ret (cons cand ret))))) (nreverse (if skk-katakana (mapcar 'skk-hiragana-to-katakana ret) ret)))) ;;;###autoload (defun skk-comp-get-regexp (prefix) ;; $B%W%l%U%#%C%/%9$KBP1~$9$k@55,I=8=$rJV$9!#(B ;; $B0lEY@8@.$7$?@55,I=8=$O(B skk-comp-prefix-regexp-alist $B$KJ]B8$7$F$*$/!#(B (or (cdr (assoc prefix skk-comp-prefix-regexp-alist)) (let ((regexp (if (string= prefix "") "" (let ((tree skk-rule-tree) kana-list) (dolist (c (string-to-list prefix)) (setq tree (skk-select-branch tree c))) (setq kana-list (skk-comp-arrange-kana-list (skk-comp-collect-kana tree) prefix)) (condition-case nil (regexp-opt kana-list 'with-paren) (error (if kana-list (concat "\\(" (mapconcat #'regexp-quote kana-list "\\|") "\\)") ""))))))) (add-to-list 'skk-comp-prefix-regexp-alist (cons prefix regexp)) regexp))) ;;;###autoload (defun skk-comp-collect-kana (tree) ;; skk-rule-tree $B$NItJ,LZ$KB0$9$k(B "$B$+$J(B" $B$r=8$a$k(B (let ((data (skk-get-kana tree)) (branches (skk-get-branch-list tree)) kana kana-list) (when data (setq kana (if (consp data) (cdr data) data)) (when (stringp kana) (setq kana-list (list kana)))) (nconc kana-list (apply #'nconc (mapcar #'skk-comp-collect-kana branches))))) ;;;###autoload (defun skk-comp-arrange-kana-list (kana-list prefix) ;; skk-comp-collect-kana $B$+$iF@$?(B "$B$+$J(B" $B$N%j%9%H$r85$K(B ;; $B%W%l%U%#%C%/%9$KBP1~$7$?D4@0$r$9$k(B (let (short-list long-list tmp) (dolist (kana kana-list) (if (= (length kana) 1) (add-to-list 'short-list kana) (add-to-list 'long-list kana))) ;; "$B$K(B" $B$,$"$k;~$K(B "$B$K$c(B" $B$H$+$O$$$i$J$$(B (dolist (s-kana short-list) (dolist (l-kana long-list) (when (string= s-kana (substring l-kana 0 1)) (setq long-list (delete l-kana long-list))))) (setq tmp (nconc short-list long-list)) (if skk-comp-kana-list-filter-function (funcall skk-comp-kana-list-filter-function tmp prefix) tmp))) ;;;###autoload (defun skk-comp-from-jisyo (file) ;; skk-comp-prefix $B$r;H$($k(B "SKK $B<-=q%U%)!<%^%C%H$N(B FILE $B$+$iJd408uJd$rF@$k!#(B" (let ((buffer (skk-get-jisyo-buffer file 'nomsg)) (abbrev skk-abbrev-mode) (key skk-comp-key) (prefix skk-comp-prefix) (first skk-comp-first) (use-prefix skk-comp-use-prefix)) (with-current-buffer buffer (when first (goto-char skk-okuri-nasi-min)) (if use-prefix (unless (and (string= key "") (string= prefix "")) (skk-comp-re-search-current-buffer key prefix abbrev)) (unless (string= key "") (skk-comp-search-current-buffer key abbrev)))))) ;;;###autoload (defun skk-comp-search-current-buffer (key &optional abbrev) (let (c-word) (save-match-data ;; `case-fold-search' $B$O!"<-=q%P%C%U%!$G$O>o$K(B nil$B!#(B (while (and (not c-word) (search-forward (concat "\n" (if skk-use-numeric-conversion (skk-num-compute-henkan-key key) key)) nil t)) (unless (eq (following-char) ?\040) ;SPC (setq c-word (concat key (buffer-substring-no-properties ;; $B8+=P$78l$K6uGr$O4^$^$l$J$$!#(B ;; " /" $B$r%5!<%A$9$kI,MW$O$J$$!#(B (point) (1- (search-forward " "))))) (when (and abbrev (string-match "\\Ca" c-word)) ;; abbrev $B%b!<%I$G!V(B3$B$M$s!W$J$I$NJd40$O$7$J$$(B (setq c-word nil)))) c-word))) ;;;###autoload (defun skk-comp-re-search-current-buffer (key prefix &optional abbrev) ;; $BLdBj$N$"$k%1!<%9$,$"$k$+$b$7$l$J$$$N$G(B ;; skk-comp-search-current-buffer $B$H$N0lK\2=$O$H$j$"$($:J]N1(B (let (c-word regexp-key) (setq regexp-key (concat (regexp-quote (if skk-use-numeric-conversion (skk-num-compute-henkan-key key) key)) (skk-comp-get-regexp prefix))) (save-match-data ;; `case-fold-search' $B$O!"<-=q%P%C%U%!$G$O>o$K(B nil$B!#(B (while (and (not c-word) (re-search-forward (concat "\n" regexp-key) nil t)) (beginning-of-line) (search-forward (if skk-use-numeric-conversion (skk-num-compute-henkan-key key) key)) (unless (eq (following-char) ?\040) ;SPC (setq c-word (concat key (buffer-substring-no-properties (point) (1- (search-forward " "))))) (when (and abbrev (string-match "\\Ca" c-word)) ;; abbrev $B%b!<%I$G!V(B3$B$M$s!W$J$I$NJd40$O$7$J$$(B (setq c-word nil)))) c-word))) ;;;###autoload (defun skk-comp-previous (&optional set-this-command) ;; skk-abbrev-comma, skk-insert-comma $B$N%5%V%k!<%A%s!#(B ;; $BD>A0$KJd40$r9T$C$?8+=P$7$rA^F~$9$k!#(B (when set-this-command (setq this-command 'skk-comp-do)) (let ((inhibit-quit t) (stack-length (length skk-comp-stack)) c-word) (if (and skk-comp-circulate (= skk-comp-depth stack-length)) (setq skk-comp-depth 0) (setq skk-comp-depth (1+ skk-comp-depth))) (setq c-word (nth skk-comp-depth skk-comp-stack)) (cond (c-word (delete-region skk-henkan-start-point (point)) (insert c-word)) (t (if (null skk-comp-circulate) ;; non-circulate $B$J$i$P(B skk-comp-depth $B$,HO0O30$J$N$G(B 1 $BLa$9(B (setq skk-comp-depth (1- skk-comp-depth)) (delete-region skk-henkan-start-point (point)) (insert skk-comp-key)) ;;(setq skk-comp-depth (1- skk-comp-depth)) (ding) (skk-message "\"%s\"$B$GJd40$9$Y$-8+=P$78l$OB>$K$"$j$^$;$s(B" "No more previous completions for \"%s\"" (if skk-comp-use-prefix (concat skk-comp-key skk-comp-prefix) skk-comp-key)))))) ;;;###autoload (defun skk-comp-previous/next (ch) (cond ((eq ch skk-next-completion-char) (skk-comp-do nil nil t)) ((eq ch skk-previous-completion-char) (skk-comp-previous t)))) ;;;###autoload (defun skk-try-completion (arg) "$B"&%b!<%I$G8+=P$78l$rJd40$9$k!#(B $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" (interactive "P") (skk-with-point-move (if (eq skk-henkan-mode 'on) (skk-comp (or arg (not (eq last-command 'skk-comp-do)))) (skk-emulate-original-map arg)))) ;;;###autoload (defun skk-comp-wrapper (&optional arg) "Character $B$G$J$$%-!<$KJd40$r3d$jEv$F$k$?$a$N%3%^%s%I!#(B" (interactive "p") (skk-bind-last-command-char skk-try-completion-char (call-interactively #'skk-insert))) ;;;###autoload (defun skk-previous-comp-maybe (&optional arg) "Character $B$G$J$$%-!<$KJd40A08uJd$r3d$jEv$F$k$?$a$N%3%^%s%I!#(B $B"&%b!<%I$G$OJd40A08uJd!"$5$b$J$1$l$P%*%j%8%J%k$N%-!]$O8=:_$N(B Emacs $B$N%;%C%7%g%s$K$*$$$F9T$C$?Aw$jL5$7JQ49$N$&$A!"(B `skk-kakutei-history-limit' $B$G;XDj$5$l$k:G6a$N$b$N$G$"$k!#(B" (when (and (string= skk-comp-key "") (or (not skk-comp-use-prefix) (string= skk-comp-prefix ""))) (when skk-comp-first (setq skk-comp-kakutei-midasi-list (skk-remove-duplicates (mapcar #'car skk-kakutei-history)))) (pop skk-comp-kakutei-midasi-list))) ;;;###autoload (defun skk-comp-smart-find (&optional path) "`smart-find' $B$,8+$D$1$?%U%!%$%kL>$GJd40$9$k(B" (cond (skk-abbrev-mode (when skk-comp-first (setq skk-comp-smart-find-files (skk-smart-find skk-comp-key path))) (if skk-comp-smart-find-files (pop skk-comp-smart-find-files) nil)) (t (setq skk-comp-smart-find-files nil)))) ;;;###autoload (defun skk-search-smart-find (&optional path not-abbrev-only without-char-maybe) "`smart-find'$B$rMxMQ$7$?JQ49$r9T$&!#(B SKK abbrev $B%b!<%I$K$F!"1QJ8;z(B + `skk-completion-search-char' (~)$B$G(B $BL$40%9%Z%k$r;XDj$7$FJQ49$9$k$H!"Jd408uJd$,JQ498uJd$H$7$F=P8=$9$k!#(B $B%G%U%)%k%H$G$O(B SKK abbrev $B%b!<%I$N$_$GM-8z$J5!G=$@$,!"(B NOT-ABBREV-ONLY $B$r;XDj$9$k;v$G>o$KM-8z$H$J$k!#(B" (when (and (or not-abbrev-only skk-abbrev-mode)) (skk-completion-search `((skk-comp-smart-find ',path)) '((skk-search-identity)) 'without-midasi without-char-maybe))) ;;;###autoload (defun skk-smart-find (key &optional path) ;; smart-find $B$O(B provide $B$5$l$F$$$J$$(B (unless (fboundp 'smart-find-file) (let ((dont-bind-my-keys t)) (load-library "smart-find")) (message "")) ;; (unless path (setq path skk-smart-find-file-path)) (setq skk-comp-smart-find-files nil) ;; (let ((smart-find-file-path (or path smart-find-file-path)) results files) (unless (string= key "") (setq results (smart-find-file-all key)) (while results (if (string-match skk-smart-find-ignored-file-regexp (car results)) (setq results (cdr results)) (setq files (cons (pop results) files))))) (when files (setq files (sort files #'string-lessp))))) ;;;###autoload (defun skk-comp-lisp-symbol (&optional predicate) "Lisp symbol $BL>$GJd40$9$k!#(B PREDICATE $B$K0z?t(B 1 $B8D$N4X?t$r;XDj$9$l$P!"(BPREDICATE $B$rK~$?$9%7%s%\%k(B $B$K8B$C$FJd40$9$k!#(BPREDICATE $B$K$O(B `fboundp', `boundp', `commandp' $B$J$I$,;XDj$G$-$k!#;XDj$7$J$1$l$P4X?t$^$?$OJQ?t$K8B$C$FJd40$9$k!#(B `skk-completion-prog-list' $B$XDI2C$9$k$HM-8z$H$J$k!#(B \(add-to-list 'skk-completion-prog-list '\(skk-comp-lisp-symbol\) t\)" (cond (skk-abbrev-mode (when skk-comp-first (let (temp) (unless predicate (setq predicate (lambda (symbol) (or (fboundp symbol) (boundp symbol))))) (setq temp (sort (let ((completion-ignore-case nil)) (all-completions skk-comp-key obarray predicate)) #'string-lessp)) (when temp ;; read-only $B$J(B object $B$J$I$b$"$k$N$G$=$N$^$^;H$o$J$$(B (setq skk-comp-lisp-symbols (mapcar #'copy-sequence temp))))) (if skk-comp-lisp-symbols (pop skk-comp-lisp-symbols) nil)) (t (setq skk-comp-lisp-symbols nil)))) ;;;###autoload (defun skk-search-lisp-symbol (&optional predicate not-abbrev-only without-char-maybe) "Lisp symbol $BL>$GJd40$7$?7k2L$r8!:w7k2L$H$7$FJV$9!#(B PREDICATE $B$K0z?t(B 1 $B8D$N4X?t$r;XDj$9$l$P!"(BPREDICATE $B$rK~$?$9%7%s%\%k(B $B$K8B$C$FJd40$9$k!#(BPREDICATE $B$K$O(B `fboundp', `boundp', `commandp' $B$J$I$,;XDj$G$-$k!#;XDj$7$J$1$l$P4X?t$^$?$OJQ?t$K8B$C$FJd40$9$k!#(B SKK abbrev $B%b!<%I$K$F!"1QJ8;z(B + `skk-completion-search-char' (~)$B$G(B $BL$40%9%Z%k$r;XDj$7$FJQ49$9$k$H!"Jd408uJd$,JQ498uJd$H$7$F=P8=$9$k!#(B $B%G%U%)%k%H$G$O(B SKK abbrev $B%b!<%I$N$_$GM-8z$J5!G=$@$,!"(B NOT-ABBREV-ONLY $B$r;XDj$9$k;v$G>o$KM-8z$H$J$k!#(B $B@_DjNc(B \(add-to-list 'skk-search-prog-list '\(skk-search-lisp-symbol\) t\)" (when (and (or not-abbrev-only skk-abbrev-mode)) (skk-completion-search `((skk-comp-lisp-symbol ',predicate)) '((skk-search-identity)) 'without-midasi without-char-maybe))) (defun skk-comp-restrict-by-prefix (comp-prog) "$BJd40%W%m%0%i%`$K$h$jF@$i$l$?8uJd$r(B `skk-comp-prefix' $B$G9J$j9~$`!#(B `skk-comp-prefix' $B$KBP1~$7$F$$$J$$Jd40%W%m%0%i%`$rJ$+$l$k!#(B" (let (search-char) (when (or (setq search-char (eq (aref skk-henkan-key (1- (length skk-henkan-key))) skk-completion-search-char)) without-char-maybe) (let* ((key (if search-char (substring skk-henkan-key 0 (1- (length skk-henkan-key))) skk-henkan-key)) (skk-comp-use-prefix nil) (midasi-list (skk-comp-get-all-candidates key "" comp-prog-list)) tmp words) (dolist (midasi midasi-list) (setq tmp (skk-search-progs midasi (or search-prog-list skk-search-prog-list))) (when tmp ; $BJd40BP>]$H8!:wBP>]$OFHN)$J$N$GB8:_$7$J$$;v$b(B (unless without-midasi (setq words (nconc words (list midasi)))) ;; SKK $BK\BN$G(B skk-nunion $B$7$F$k$N$G$3$3$G$O9bB.@-=E;k(B (setq words (nconc words tmp)))) words)))) (defalias 'skk-start-henkan-with-completion 'skk-comp-start-henkan) (run-hooks 'skk-comp-load-hook) (provide 'skk-comp) ;;; skk-comp.el ends here ddskk-15.2/skk-cursor.el0000644000570400056700000000773412074501114015235 0ustar kitamotoopenlab;;; skk-cursor.el --- SKK cursor control -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Masatake YAMATO ;; Author: Masatake YAMATO ;; Maintainer: SKK Development Team ;; Version: $Id: skk-cursor.el,v 1.46 2013/01/13 09:45:48 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/01/13 09:45:48 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (unless (skk-color-cursor-display-p) (error "%s" "SKK-CURSOR requires color display")) (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (eval-and-compile (when (featurep 'emacs) (require 'ccc))) ;; Functions. (defun skk-cursor-default-color () (cond ((eval-when-compile (featurep 'xemacs)) (frame-property (selected-frame) 'cursor-color)) (t (frame-cursor-color)))) ;;;###autoload (defun skk-cursor-current-color () ;; $B%+%l%s%H%P%C%U%!$N(B SKK $B$N%b!<%I$+$i!"%+!<%=%k$N?'$r8e$KF~NO$9$kJ8(B ;; $B;z$,85$NF~NO%b!<%I$K$F9T$o$l$k$h$&$K(B)$B!#=>$$!"(Bskk-abbrev-mode ;; $B%U%i%0$N%A%'%C%/$NM%@hEY$r>e$2$k!#(B (skk-abbrev-mode skk-cursor-abbrev-color) (skk-jisx0208-latin-mode skk-cursor-jisx0208-latin-color) (skk-katakana skk-cursor-katakana-color) (skk-j-mode skk-cursor-hiragana-color) (skk-jisx0201-mode skk-cursor-jisx0201-color) (t skk-cursor-latin-color))) ;;;###autoload (defun skk-cursor-set-1 (color) (cond ((eval-when-compile (featurep 'xemacs)) ;;At 10 Jul 2000 16:37:49 +0900, ;;Yoshiki Hayashi wrote: ;;> foreground $B$r(B background $B$KJQ$($kI,MW$,$"$k$3$H0J30$O!":#$N(B ;;> $B$H$3$m$=$N$^$^$GF0$$$F$$$k$h$&$G$9!#$7$P$i$/(B test $B$7$F$_$^$9!#(B ;;> $B$I$&$b!"(Btext-cursor $B$bIaDL$N(B face $B$N$h$&$G!"(Bforeground $B$,J8(B ;;> $B;z$N?'$r!"(Bbackground $B$,J8;z$NGX7J$N?'$rI=$7$F$$$k$h$&$G$9!#(B (set-face-property 'text-cursor 'background (or color (skk-cursor-current-color)) (current-buffer))) (t (when default-cursor-color (set-buffer-local-cursor-color (or color (skk-cursor-current-color))))))) ;;;###autoload (defun skk-cursor-off-1 () (cond ((eval-when-compile (featurep 'xemacs)) (skk-cursor-set)) (t (when default-cursor-color (set-cursor-color-buffer-local nil))))) ;; advices. (when (eval-when-compile (featurep 'xemacs)) (defadvice minibuffer-keyboard-quit (before skk-cursor-ad activate) (unless skk-henkan-mode (skk-cursor-set (skk-cursor-default-color))))) ;; Hooks (when (eval-when-compile (featurep 'xemacs)) (add-hook 'isearch-mode-end-hook #'skk-cursor-set 'append) (add-hook 'minibuffer-setup-hook #'skk-cursor-set 'append) (add-hook 'minibuffer-exit-hook (lambda () (with-current-buffer (skk-minibuffer-origin) (skk-cursor-set)) (skk-cursor-set skk-cursor-default-color 'force)) 'append)) (provide 'skk-cursor) ;;; skk-cursor.el ends here ddskk-15.2/skk-cus.el0000644000570400056700000002555611704026276014526 0ustar kitamotoopenlab;;; skk-cus.el --- SKK $B$N4JC1$+$9$?$^$$$:;n:nIJ(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2001 SKK Development Team ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; SKK $B5/F08e(B M-x skk-customize $B$G@_Dj$9$k!#(B ;;; Code: (eval-when-compile (require 'skk-macs)) (require 'skk-vars) (require 'cus-edit) (require 'custom) (defvar skk-custom-params nil) (defvar skk-custom-alist nil) (defvar skk-custom-buffer-original nil) (defvar skk-custom-map (let ((map (make-keymap))) (set-keymap-parent map widget-keymap) (define-key map [mouse-1] 'widget-move-and-invoke) map)) (defconst skk-cus-params-visual '((skk-use-face (const :tag "$BJQ49Cf$K?'$r$D$1$k(B" t) "") (skk-use-color-cursor (const :tag "$B%+!<%=%k$K?'$r$D$1$k(B" t) "") (skk-japanese-message-and-error (const :tag "$B%a%C%;!<%8$OF|K\8l$GDLCN$9$k(B" t) "") (skk-verbose (const :tag "$B>iD9$J%a%C%;!<%8$rI=<($9$k(B" t) "") (skk-show-japanese-menu (const :tag "$B%a%K%e!<%P!<$rF|K\8l$GI=<($9$k(B" t) "") (skk-show-annotation (radio :tag "$BJQ49;~$KCpo$KI=<((B" t) (const :tag "$B8uJd0lMw$G$OHsI=<((B" (not list)) (const :tag "$B%_%K%P%C%U%!$G$OHsI=<((B" (not minibuf)) (const :tag "$B8uJd0lMw$H%_%K%P%C%U%!$G$OHsI=<((B" (not list minibuf)) (const :tag "$BHsI=<((B" nil)) "") (skk-show-inline (radio :tag "$B8uJd0lMw$r%$%s%i%$%sI=<($9$k!)(B" (const :tag "$B=D$KJB$Y$FI=<((B" vertical) (const :tag "$B0lNs$KI=<((B" t) (const :tag "$B%$%s%i%$%sI=<($7$J$$(B" nil)) "") (skk-show-tooltip (const :tag "$B8uJd0lMw!&CmJN,2DG=$K$9$k(B" t) "") (skk-delete-implies-kakutei (const :tag "$B"'%b!<%I$G(B BS $B$r2!$7$?$i3NDj$9$k(B" t) "") (skk-auto-insert-paren (const :tag "$BJD3g8L$r<+F0E*$KA^F~$9$k(B" t) ""))) (defconst skk-cus-params-henkan '((skk-auto-start-henkan (const :tag "$BFCDj$NJ8;z$NF~NO;~$K<+F0E*$KJQ49$r3+;O$9$k(B" t) "") (skk-henkan-okuri-strictly (const :tag "$BAw$j2>L>$,87L)$K@5$7$$8uJd$N$_I=<($9$k(B" t) "") (skk-henkan-strict-okuri-precedence (const :tag "$BAw$j2>L>$,87L)$K@5$7$$8uJd$rM%@h$7$FI=<($9$k(B" t) "") (skk-check-okurigana-on-touroku (radio :tag "$B<-=qEPO?;~$NM>7W$JAw$j2>L>$N<+F0=hM}$O!)(B" (const :tag "$B<+F0=hM}$9$k(B" auto) (const :tag "$B%f!<%6$N;X<($K$h$k(B" ask) (const :tag "$B<+F0=hM}$7$J$$(B" nil)) "") (skk-j-mode-function-key-usage (radio :tag "$B$+$J%b!<%I$G%U%!%s%/%7%g%s%-!<$r;H$&!)(B" (const :tag "$BFC3Q%+%J$rF~NO2DG=$K$9$k(B" t) ""))) (defconst skk-cus-params-misc '((skk-share-private-jisyo (const :tag "$BJ#?t$N(B SKK $B$,8D?M<-=q$r6&M-$9$k(B" t) "") (skk-show-icon (const :tag "SKK $B$N%"%$%3%s$rI=<($9$k(B" t) "") (skk-preload (const :tag "SKK $B$r$"$i$+$8$a%m!<%I$7$F=i2s5/F0$r9bB.$K$9$k(B" t) ""))) (defun skk-custom-mode () (kill-all-local-variables) (setq major-mode 'skk-custom-mode mode-name "SKK $B$N@_Dj(B") (use-local-map skk-custom-map) (when (and (facep 'custom-button-face) (facep 'custom-button-pressed-face)) (set (make-local-variable 'widget-button-face) 'custom-button-face) (set (make-local-variable 'widget-button-pressed-face) 'custom-button-pressed-face) (set (make-local-variable 'widget-mouse-face) 'custom-button-pressed-face)) (when (and (boundp 'custom-raised-buttons) (symbol-value 'custom-raised-buttons)) (set (make-local-variable 'widget-push-button-prefix) "") (set (make-local-variable 'widget-push-button-suffix) "") (set (make-local-variable 'widget-link-prefix) "") (set (make-local-variable 'widget-link-suffix) "")) (run-hooks 'skk-custom-mode-hook)) (defun skk-cus-info (params) (delq nil (mapcar (lambda (el) (let ((val (symbol-value (car el)))) (if val (cons (car el) val) nil))) params))) ;;;###autoload (defun skk-customize-group-skk () (interactive) (customize-group 'skk)) ;;;###autoload (defun skk-customize () (interactive) (dolist (param (append skk-cus-params-visual skk-cus-params-ui skk-cus-params-henkan skk-cus-params-search skk-cus-params-input skk-cus-params-misc)) (let ((var (car param))) (when (and (eq 'const (caadr param)) (symbol-value var)) (set var t)))) (setq skk-custom-buffer-original (current-buffer)) (let ( (visual (mapcar (lambda (entry) `(cons :format "%v%h\n" :doc ,(nth 2 entry) (const :format "" ,(nth 0 entry)) ,(nth 1 entry))) skk-cus-params-visual)) (ui (mapcar (lambda (entry) `(cons :format "%v%h\n" :doc ,(nth 2 entry) (const :format "" ,(nth 0 entry)) ,(nth 1 entry))) skk-cus-params-ui)) (henkan (mapcar (lambda (entry) `(cons :format "%v%h\n" :doc ,(nth 2 entry) (const :format "" ,(nth 0 entry)) ,(nth 1 entry))) skk-cus-params-henkan)) (search (mapcar (lambda (entry) `(cons :format "%v%h\n" :doc ,(nth 2 entry) (const :format "" ,(nth 0 entry)) ,(nth 1 entry))) skk-cus-params-search)) (input (mapcar (lambda (entry) `(cons :format "%v%h\n" :doc ,(nth 2 entry) (const :format "" ,(nth 0 entry)) ,(nth 1 entry))) skk-cus-params-input)) (misc (mapcar (lambda (entry) `(cons :format "%v%h\n" :doc ,(nth 2 entry) (const :format "" ,(nth 0 entry)) ,(nth 1 entry))) skk-cus-params-misc)) (info (append (skk-cus-info skk-cus-params-visual) (skk-cus-info skk-cus-params-ui) (skk-cus-info skk-cus-params-henkan) (skk-cus-info skk-cus-params-search) (skk-cus-info skk-cus-params-input) (skk-cus-info skk-cus-params-misc)))) (kill-buffer (get-buffer-create "*SKK $B$N4pK\@_Dj(B*")) ;; (switch-to-buffer (get-buffer-create "*SKK $B$N4pK\@_Dj(B*")) (set-window-buffer (selected-window) (get-buffer-create "*SKK $B$N4pK\@_Dj(B*")) (set-buffer "*SKK $B$N4pK\@_Dj(B*") (skk-custom-mode) (widget-insert "SKK $B$N4pK\@_Dj!#=*$o$C$?$i(B ") (widget-create 'push-button :tag "done" :help-echo "$B=*$o$C$?$i%\%/$r2!$7$F!#(B" :action 'skk-customize-done) (widget-insert " $B$r2!$7$F$/$@$5$$!#(B\n\n") (widget-insert "$BCm0U(B: $B$$$/$D$+$N@_Dj$O:F5/F0$,I,MW$G$9!#(B\n\n") (setq skk-custom-params (list (widget-create 'group :value info `(set :inline t :greedy t :tag "$BI=<($K4X$9$k@_Dj(B" :format "%t:\n%h%v" :doc "" ,@visual)) (widget-create 'group :value info `(set :inline t :greedy t :tag "$B4pK\E*$J%f!<%6!&%$%s%?!<%U%'!<%9(B" :format "%t:\n%h%v" :doc "" ,@ui)) (widget-create 'group :value info `(set :inline t :greedy t :tag "$BJQ49$K4X$9$k@_Dj(B" :format "%t:\n%h%v" :doc "" ,@henkan)) (widget-create 'group :value info `(set :inline t :greedy t :tag "$B<-=q8!:w$K4X$9$k@_Dj(B" :format "%t:\n%h%v" :doc "" ,@search)) (widget-create 'group :value info `(set :inline t :greedy t :tag "$BF~NOJ}<0$K4X$9$k@_Dj(B" :format "%t:\n%h%v" :doc "" ,@input)) (widget-create 'group :value info `(set :inline t :greedy t :tag "$B$=$NB>$N@_Dj(B" :format "%t:\n%h%v" :doc "" ,@misc)))) (use-local-map skk-custom-map) (local-set-key "q" 'bury-buffer) (widget-setup) (goto-char (point-min)))) (defun skk-customize-done (&rest args) (interactive) (setq skk-custom-alist nil) (dolist (group skk-custom-params) (setq skk-custom-alist (append skk-custom-alist (widget-value group)))) (dolist (param (append skk-cus-params-visual skk-cus-params-ui skk-cus-params-henkan skk-cus-params-search skk-cus-params-input skk-cus-params-misc)) (unless (assq (car param) skk-custom-alist) (push (cons (car param) nil) skk-custom-alist))) (skk-cus-set) (bury-buffer) (unless (eq skk-custom-buffer-original (current-buffer)) ;; (switch-to-buffer skk-custom-buffer-original)) (set-window-buffer (selected-window) (get-buffer skk-custom-buffer-original))) (skk-adjust-user-option)) ;;;###autoload (defun skk-cus-setup () ;; obsolete (when (and (boundp 'skk-custom-file) (ignore-errors (file-readable-p (symbol-value 'skk-custom-file)))) (let* ((old-name (expand-file-name (symbol-value 'skk-custom-file))) (new-name (concat old-name ".not_used"))) (load-file old-name) (copy-file old-name new-name 'ok-if-already-exists) (delete-file old-name)) (skk-cus-set))) ;;;###autoload (defun skk-cus-set (&optional alist) (unless alist (setq alist skk-custom-alist)) (dolist (param alist) (let ((variable (car param)) (value (cdr param))) (funcall (or (get variable 'custom-set) 'set-default) variable value) (put variable 'saved-value (list (custom-quote value))) (custom-push-theme 'theme-value variable 'user 'set (custom-quote value)) (put variable 'customized-value nil) (put variable 'customized-variable-comment nil))) (custom-save-all) ;; (when (eq alist skk-custom-alist) (setq skk-custom-alist nil))) (provide 'skk-cus) ;;; skk-cus.el ends here ddskk-15.2/skk-dcomp.el0000644000570400056700000005732112074501114015017 0ustar kitamotoopenlab;;; skk-dcomp.el --- SKK dynamic completion -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000, 2001 NAKAJIMA Mikio ;; Copyright (C) 2008, 2009 IRIE Tetsuya ;; Author: NAKAJIMA Mikio ;; Author: IRIE Tetsuya ;; Maintainer: SKK Development Team ;; Version: $Id: skk-dcomp.el,v 1.74 2013/01/13 09:45:48 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/01/13 09:45:48 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary ;; $B$3$l$O"&%b!<%I$K$*$1$k8+=P$78l$NF~NO$r!"<+F0E*$K%@%$%J%_%C%/$K%3%s%W(B ;; $B%j!<%7%g%s$9$k%W%m%0%i%`$G$9!#(B ;; ;; MS Excel $B$N%;%kF~NO$N<+F0Jd40(B ($BF1$8Ns$K4{$KF~NO$7$F$$$kJ8;zNs$,$"$C(B ;; $B$?$H$-$K$=$l$r;2>H$7$FJd40$7$h$&$H$9$k5!G=(B) $B$r8+$F$$$F!"$3$lJXMx$@$J$!(B ;; $B$H;W$C$?$N$,!"3+H/$N$-$C$+$1$G$9!#(B ;; ;; $B$=$N8e!"A}0f=SG7(B $B$5$s$,3+H/$7$F$$$k(B POBox $B$r8+$F!"(BMS Excel $B$r8+$?:]$K(B ;; $B;W$C$?$3$H$r;W$$=P$7!"(BSKK $B$N(B skk-comp.el $B$GDs6!$5$l$F$$$k%3%s%W%j!<%7(B ;; $B%g%s$N5!G=$r<+F0E*$KDs6!$9$kJ}8~$G/$7F0:n$,CY$$$N$,FqE@$G$9!#(Bskk-dcomp.el ;; $B$O0l$D$7$+8uJd$r=P$7$^$;$s$,!"%f!<%6$N8+=P$78l$NF~NO$KDI=>$7%@%$%J%_%C(B ;; $B%/$K%3%s%W%j!<%7%g%s$9$k5!G=$O(B POBox $BF1MM;}$C$F$$$^$9$7!"$^$?F0:n$O$+$J(B ;; $B$j9bB.$G!"(Bskk-dcomp.el $B$r;H$&$3$H$K$h$k%*!<%P!<%X%C%I$rBN46$9$k$3$H$O$J(B ;; $B$$$H;W$$$^$9!#(B ;; ;; ;; ;; ;; SKK $B$rIaDL$K(B make $B$7$F2<$5$$!#FC$K:n6H$OITMW$G$9!#(B ;; ;; ;; ;; .emacs $B$b$7$/$O(B .skk $B$K(B (setq skk-dcomp-activate t) $B$H=q$-$^$7$g$&!#(B ;; SKK $B5/F08e$K%@%$%J%_%C%/%3%s%W%j!<%7%g%s$N5!G=$r;_$a$?$+$C$?$i!"(B ;; (setq skk-dcomp-activate nil) $B$rI>2A$7$^$7$g$&!#(B ;; ;; ;; ;; ;; $B"&%b!<%I$KF~$j8+=P$78l$rF~NO$9$k$H!"8D?M<-=q$r<+F0E*$K8!:w$7!"8+=P(B ;; $B$78l$r(B $B%3%s%W%j!<%7%g%s$7$^$9!#2<5-$N$h$&$KF0:n$7$^$9(B ($B%+%C%3Fb$O%-!<(B ;; $BF~NO$r!"(B-!- $B$O%]%$%s%H0LCV$rI=$7$^$9(B)$B!#(B ;; ;; (Ho) $B"&$[(B -> $B"&$[(B-!-$B$s$H$&(B ;; ;; * SKK $B$N%3%s%W%j!<%7%g%s$O!"85Mh8D?M<-=q$N$_$r;2>H$9$k;EMM$K$J$C$F$$(B ;; $B$k$N$G!"8D?M<-=q$K$J$$8+=P$78l$O%3%s%W%j!<%7%g%s$5$l$^$;$s!#(B ;; * $B%3%s%W%j!<%7%g%s$O!"Aw$j$J$7JQ49$N>l9g$7$+9T$o$l$^$;$s!#(B ;; * Ho $B$NF~NO$KBP$7!"!V$[$s$H$&!W$,%3%s%W%j!<%7%g%s$5$l$k$+$I$&$+$O8D(B ;; $B?M<-=q$N%(%s%H%j$N=gHV$l0c$&$O$:$G$9!#(B ;; ;; $B<+F0E*$K%3%s%W%j!<%7%g%s$5$l$?8+=P$78l$,!"<+J,$N0U?^$7$?$b$N$G$"$l$P(B TAB ;; $B$r2!$9$3$H$G%]%$%s%H0LCV$rF0$+$7!"%3%s%W%j!<%7%g%s$5$l$?8+=P$78l$rA*Br$9(B ;; $B$k$3$H$,$G$-$^$9!#$=$N$^$^(B SPC $B$r2!$7$FJQ49$9$k$J$j!"(Bq $B$r2!$7$F%+%?%+%J(B ;; $B$K$9$k$J$j(B SKK $BK\Mh$NF0:n$r2?$G$b9T$&$3$H$,$G$-$^$9!#(B ;; ;; (Ho) $B"&$[(B -> $B"&$[(B-!-$B$s$H$&(B (TAB) -> $B"&$[$s$H$&(B-!- (TAB) ;; ;; $B%3%s%W%j!<%7%g%s$5$l$?8+=P$78l$,<+J,$N0U?^$7$?$b$N$G$J$$>l9g$O!"$+$^(B ;; $B$o$: $B"&$[(B-!-$B$s$H$&(B (ka) -> $B"&$[$+(B-!-$B$s(B ;; ;; $B%3%s%W%j!<%7%g%s$5$l$J$$>uBV$,<+J,$N0U?^$7$?$b$N$G$"$k>l9g$b!"%3%s%W%j!<(B ;; $B%7%g%s$5$l$?ItJ,$rC1$KL5;k$9$k$@$1$G(B OK $B$G$9!#(B ;; ;; (Ho) $B"&$[(B -> $B"&$[(B-!-$B$s$H$&(B (C-j) -> $B$[(B ;; (Ho) $B"&$[(B -> $B"&$[(B-!-$B$s$H$&(B (SPC) -> $B"'J](B ($B!V$[!W$r8+=P$78l$H$7$?JQ49$,(B ;; $B9T$o$l$k(B) ;; (Ho) $B"&$[(B -> $B"&$[(B-!-$B$s$H$&(B (q) -> $B%[(B ;; ;; $B%3%s%W%j!<%7%g%s$5$l$?>uBV$+$i(B BS $B$r2!$9$H!">C$5$l$?%3%s%W%j!<%7%g%sA0$N(B ;; $B8+=P$78l$+$i:FEY%3%s%W%j!<%7%g%s$r9T$$$^$9!#(B ;; ;; (Ho) $B"&$[(B -> $B"&$[(B-!-$B$s$H$&(B (ka) -> $B"&$[$+(B-!-$B$s(B (BS) -> $B"&$[(B-!-$B$s$H$&(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (require 'skk-comp) (eval-when-compile (require 'cl)) ;;; functions. ;; (defsubst skk-extentp (object) ;; (static-cond ;; ((featurep 'xemacs) (extentp object)) ;; (t (overlayp object)))) (defsubst skk-dcomp-face-on (start end) (skk-face-on skk-dcomp-extent start end skk-dcomp-face skk-dcomp-face-priority)) (defsubst skk-dcomp-face-off () (skk-detach-extent skk-dcomp-extent)) (defsubst skk-dcomp-delete-completion () (ignore-errors (delete-region skk-dcomp-start-point skk-dcomp-end-point))) ;;;###autoload (defun skk-dcomp-marked-p () (and (eq skk-henkan-mode 'on) (markerp skk-dcomp-start-point) (markerp skk-dcomp-end-point) (marker-position skk-dcomp-start-point) (marker-position skk-dcomp-end-point) (< skk-dcomp-start-point skk-dcomp-end-point))) (defun skk-dcomp-cleanup-buffer () (skk-delete-overlay skk-dcomp-multiple-overlays) (when (and (or skk-dcomp-activate skk-dcomp-multiple-activate) (skk-dcomp-marked-p)) (skk-dcomp-face-off) (delete-region skk-dcomp-end-point (point)) (skk-set-marker skk-dcomp-end-point (point)) (setq skk-dcomp-multiple-select-index -1))) (defun skk-dcomp-activate-p () (and skk-dcomp-activate (cond ((functionp skk-dcomp-activate) (save-match-data (funcall skk-dcomp-activate))) ((listp skk-dcomp-activate) (save-match-data (eval skk-dcomp-activate))) (skk-hint-inhibit-dcomp nil) (t t)))) (defun skk-dcomp-multiple-activate-p () (and skk-dcomp-multiple-activate (cond ((functionp skk-dcomp-multiple-activate) (save-match-data (funcall skk-dcomp-multiple-activate))) ((listp skk-dcomp-multiple-activate) (save-match-data (eval skk-dcomp-multiple-activate))) (skk-hint-inhibit-dcomp nil) (t t)))) (defun skk-dcomp-do-completion (pos) (when (and (eq skk-henkan-mode 'on) (not skk-okurigana)) (when (and (not (eq (marker-position skk-henkan-start-point) (point))) (skk-dcomp-activate-p)) (condition-case nil (progn (skk-comp-do 'first 'silent) (skk-set-marker skk-dcomp-start-point pos) (skk-set-marker skk-dcomp-end-point (point)) (skk-dcomp-face-on skk-dcomp-start-point skk-dcomp-end-point) (goto-char skk-dcomp-start-point)) (error (setq skk-comp-stack nil) (message nil)))) (when (and (skk-dcomp-multiple-activate-p) (skk-dcomp-multiple-available-p)) (skk-dcomp-multiple-show (skk-dcomp-multiple-get-candidates (and (string= skk-dcomp-multiple-key (buffer-substring-no-properties skk-henkan-start-point (point))) (string= skk-dcomp-multiple-prefix skk-prefix))))))) ;; $BJ#?tI=<($N$?$a$K8!:w$7$F<-=q%P%C%U%!$N(B point $B$rF0$+$9$H!"(Bskk-comp $B$N(B ;; $BJd408uJd$,68$C$F$7$^$&$N$G0lC6J]B8$7$F$*$-:G8e$K85$KLa$9(B (defmacro skk-dcomp-save-point-in-jisyo-buffer (form) `(let (alist) (dolist (buf skk-dcomp-multiple-keep-point-buffer-list) (when (get-buffer buf) (with-current-buffer buf (setq alist (cons (cons buf (point)) alist))))) ,form (dolist (pair alist) (with-current-buffer (car pair) (goto-char (cdr pair)))))) (defun skk-dcomp-multiple-available-p () (cond ((eval-when-compile (featurep 'xemacs)) nil) (t (< (1+ skk-dcomp-multiple-rows) (skk-window-body-height))))) (defun skk-dcomp-multiple-increase-index (index &optional ignore-search-done) (cond ((and skk-comp-circulate (or ignore-search-done skk-dcomp-multiple-search-done skk-comp-search-done) (<= (1- (length skk-dcomp-multiple-candidates)) index)) -1) ((and skk-dcomp-multiple-search-done (<= (1- (length skk-dcomp-multiple-candidates)) index)) index) (t (1+ index)))) (defun skk-dcomp-multiple-extract-candidates (candidates index) (let ((i 0) head extract) (setq head (cond ((< index skk-dcomp-multiple-rows) candidates) (t (nthcdr (* (/ index skk-dcomp-multiple-rows) skk-dcomp-multiple-rows) candidates)))) (while (and (< i skk-dcomp-multiple-rows) head) (push (pop head) extract) (incf i)) (nreverse extract))) (declare-function skk-comp-get-candidate "skk-comp") (defun skk-dcomp-multiple-get-candidates (&optional same-key) (let (candidates) (cond ( ;; $B?75,8!:w(B (not same-key) (setq skk-dcomp-multiple-select-index ;; skk-comp $B$N(B C-u TAB $B$r9MN8$9$k(B (if (and current-prefix-arg (listp current-prefix-arg)) 0 -1)) (setq skk-dcomp-multiple-key ;; skk-comp $B$N(B C-u TAB $B$r9MN8$9$k(B (if (and current-prefix-arg (listp current-prefix-arg)) skk-comp-key (let ((key (buffer-substring-no-properties skk-henkan-start-point (point)))) (if skk-katakana (skk-katakana-to-hiragana key) key)))) (setq skk-dcomp-multiple-prefix skk-prefix) (setq skk-dcomp-multiple-search-done nil) (let ( ;; `skk-comp-get-candidate' $B$KI,MW$J%G!<%?$rB+G{(B (skk-comp-key skk-dcomp-multiple-key) (skk-comp-prefix skk-dcomp-multiple-prefix) ;; `skk-comp-get-candidate' $B$GCM$,JQ$o$C$F$7$^$&$?$aB+G{(B (skk-current-completion-prog-list skk-current-completion-prog-list) (skk-server-completion-words skk-server-completion-words) (skk-look-completion-words skk-look-completion-words) (i 0) cand) (when (or skk-comp-use-prefix ;; skk-comp-use-prefix $B$,(B nil $B$N>l9g!""&(Bn $B$J$I$O(B ;; $BJd408uJd$r8!:w$7$J$$(B (not (skk-get-kana skk-current-rule-tree))) (skk-dcomp-save-point-in-jisyo-buffer (while (and (< i skk-dcomp-multiple-rows) (setq cand (skk-comp-get-candidate (zerop i)))) (unless (member cand candidates) (push cand candidates) (incf i))))) (setq candidates (nreverse candidates)) (when (< i skk-dcomp-multiple-rows) (setq skk-dcomp-multiple-search-done t)) (setq skk-dcomp-multiple-candidates candidates))) ;; $BA4$F8!:w:Q(B (skk-dcomp-multiple-search-done (setq candidates (skk-dcomp-multiple-extract-candidates skk-dcomp-multiple-candidates skk-dcomp-multiple-select-index))) ;; $BA48!:w$9$k(B ((and same-key (< (1- (length skk-dcomp-multiple-candidates)) skk-dcomp-multiple-select-index)) (skk-dcomp-save-point-in-jisyo-buffer (let ( ;; `skk-comp-get-all-candidates' $B$G6u$K$J$C$F$7$^$&$?$aB+G{(B (skk-comp-kakutei-midasi-list skk-comp-kakutei-midasi-list) (skk-server-completion-words skk-server-completion-words) (skk-look-completion-words skk-look-completion-words)) (setq skk-dcomp-multiple-candidates (skk-comp-get-all-candidates skk-dcomp-multiple-key skk-dcomp-multiple-prefix skk-completion-prog-list)))) (setq skk-dcomp-multiple-search-done t) (setq skk-dcomp-multiple-select-index (min skk-dcomp-multiple-select-index (1- (length skk-dcomp-multiple-candidates)))) (setq candidates (skk-dcomp-multiple-extract-candidates skk-dcomp-multiple-candidates skk-dcomp-multiple-select-index))) (t (setq candidates skk-dcomp-multiple-candidates))) (when candidates (append candidates (list (format " [ %s / %s ]" (if (< skk-dcomp-multiple-select-index 0) "-" (1+ skk-dcomp-multiple-select-index)) (if skk-dcomp-multiple-search-done (length skk-dcomp-multiple-candidates) "??"))))))) (defun skk-dcomp-multiple-show (candidates) (skk-delete-overlay skk-dcomp-multiple-overlays) (unless (skk-in-minibuffer-p) (let* ((margin 1) (beg-col (save-excursion (goto-char skk-henkan-start-point) (max 0 (- (skk-screen-column) margin)))) (i 0) max-width bottom col ol invisible) (when candidates (when (zerop beg-col) (setq margin 0)) (setq max-width (skk-max-string-width candidates)) (dolist (str candidates) (setq str (concat (make-string margin ? ) str (make-string (+ (- max-width (string-width str)) margin) ? ))) (cond ((and (< -1 skk-dcomp-multiple-select-index) (= i (mod skk-dcomp-multiple-select-index skk-dcomp-multiple-rows))) (setq str (propertize str 'face 'skk-dcomp-multiple-selected-face))) (t (setq str (propertize str 'face 'skk-dcomp-multiple-face)) (unless (string= "" skk-dcomp-multiple-key) (let ((beg (string-match skk-dcomp-multiple-key str)) (end (progn (string-match "[^ ]+" str) (match-end 0)))) (when beg (put-text-property (+ beg (length skk-dcomp-multiple-key)) end 'face 'skk-dcomp-multiple-trailing-face str)))))) (save-excursion (scroll-left (max 0 (- (+ beg-col margin max-width margin 1) (window-width) (window-hscroll)))) (unless (zerop (window-hscroll)) (setq beg-col (save-excursion (goto-char skk-henkan-start-point) (- (current-column) margin)))) (setq bottom (> (1+ i) (vertical-motion (1+ i)))) (cond (bottom ;; $B%P%C%U%!:G=*9T$G$OIaDL$K(B overlay $B$rDI2C$7$F$$$/J}(B ;; $BK!$@$H(B overlay $B$NI=<($5$l$k=gHV$,68$&$3$H$,$"$C$F(B ;; $B$&$^$/$J$$!#$7$?$,$C$FA02s$N(B overlay $B$N(B ;; after-string $B$KDI2C$9$k!#$?$@$7!"(BEOB $B$N>l9g$O(B ;; prefix $B$N(B overlay $B$H>WFM$9$k$?$a(B ;; `skk-prefix-overlay' $B$KDI2C$9$k(B (setq ol (if (zerop i) (cond ((or (not skk-echo) (string= "" skk-prefix) (< (overlay-end skk-prefix-overlay) (point))) (make-overlay (point) (point))) (t skk-prefix-overlay)) (pop skk-dcomp-multiple-overlays))) (setq str (concat (overlay-get ol 'after-string) "\n" (make-string beg-col ? ) str))) (t (setq col (skk-move-to-screen-column beg-col)) (cond ((> beg-col col) ;; $B7e9g$o$;$N6uGr$rDI2C(B (setq str (concat (make-string (- beg-col col) ? ) str))) ;; overlay $B$N:8C<$,%^%k%AI}J8;z$H=E$J$C$?$H$-$NHyD4@0(B ((< beg-col col) (backward-char) (setq col (skk-screen-column)) (setq str (concat (make-string (- beg-col col) ? ) str)))))) ;; $B$3$N;~E@$G(B overlay $B$N3+;O0LCV$K(B point $B$,$"$k(B (unless bottom (let ((ol-beg (point)) (ol-end-col (+ col (string-width str))) base-ol) (setq col (skk-move-to-screen-column ol-end-col)) ;; overlay $B$N1&C<$,%^%k%AI}J8;z$H=E$J$C$?$H$-$NHyD4@0(B (when (< ol-end-col col) (setq str (concat str (make-string (- col ol-end-col) ? )))) (setq ol (make-overlay ol-beg (point))) ;; $B85%F%-%9%H$N(B face $B$r7Q>5$7$J$$$h$&$K(B1$B$D8e$m$K(B ;; overlay $B$r:n$C$F!"$=$N(B face $B$r(B 'default $B$K;XDj$7$F$*$/(B (setq base-ol (make-overlay (point) (1+ (point)))) (overlay-put base-ol 'face 'default) (push base-ol skk-dcomp-multiple-overlays) ;; $B8uJd$,2D;k$+$I$&$+%A%'%C%/(B (unless (pos-visible-in-window-p (point)) (setq invisible t))))) (overlay-put ol 'invisible t) (overlay-put ol 'after-string str) (push ol skk-dcomp-multiple-overlays) (incf i)) (when (or invisible (and bottom (> (+ 2 skk-dcomp-multiple-rows) (- (skk-window-body-height) (count-screen-lines (window-start) (point)))))) (recenter (- (+ 2 skk-dcomp-multiple-rows)))))))) ;;;###autoload (defun skk-dcomp-before-kakutei () (skk-delete-overlay skk-dcomp-multiple-overlays) (when (and (or skk-dcomp-activate skk-dcomp-multiple-activate) (eq skk-henkan-mode 'on) (skk-dcomp-marked-p)) (skk-dcomp-face-off) (skk-dcomp-delete-completion))) (defun skk-dcomp-after-kakutei () (when (or skk-dcomp-activate skk-dcomp-multiple-activate) (skk-set-marker skk-dcomp-start-point nil) (skk-set-marker skk-dcomp-end-point nil) (setq skk-comp-stack nil) (setq skk-dcomp-multiple-select-index -1))) ;;;###autoload (defun skk-dcomp-after-delete-backward-char () (when (and (or skk-dcomp-activate skk-dcomp-multiple-activate) skk-mode (eq skk-henkan-mode 'on) (not skk-hint-inhibit-dcomp)) (skk-delete-overlay skk-dcomp-multiple-overlays) (setq skk-dcomp-multiple-select-index -1) (when (skk-dcomp-marked-p) (skk-dcomp-face-off) (skk-dcomp-delete-completion)) (when (and skk-abbrev-mode skk-use-look) (setq skk-look-completion-words nil)) (skk-dcomp-do-completion (point))) ;; dcomp $B$H$N=gHV@)8f$N$?$a!"$3$3$G8F$V(B (skk-henkan-on-message)) ;;; advices. ;; main dynamic completion engine. (defadvice skk-kana-input (around skk-dcomp-ad activate) (cond ((or skk-hint-inhibit-dcomp (not (and (or skk-dcomp-activate skk-dcomp-multiple-activate) skk-henkan-mode))) ad-do-it) (t (cond ((or (eq skk-henkan-mode 'active) (skk-get-prefix skk-current-rule-tree) (not skk-comp-stack)) (skk-set-marker skk-dcomp-start-point nil) (skk-set-marker skk-dcomp-end-point nil)) ((skk-dcomp-marked-p) (skk-dcomp-face-off) (unless (member (this-command-keys) skk-dcomp-keep-completion-keys) (skk-dcomp-delete-completion)))) ad-do-it (when (and skk-j-mode (or skk-use-kana-keyboard ;; $BAw$j$"$jJQ49$,;O$^$C$?$iJd40$7$J$$(B (not (memq (skk-last-command-char) skk-set-henkan-point-key)))) (if (skk-get-prefix skk-current-rule-tree) (when (and (skk-dcomp-multiple-activate-p) (skk-dcomp-multiple-available-p)) (skk-dcomp-multiple-show (skk-dcomp-multiple-get-candidates))) (skk-dcomp-do-completion (point))))))) (defadvice skk-set-henkan-point-subr (around skk-dcomp-ad activate) (cond ((or skk-dcomp-activate skk-dcomp-multiple-activate) (let ((henkan-mode skk-henkan-mode)) ad-do-it (unless (or henkan-mode (char-after (point))) (skk-dcomp-do-completion (point))))) (t ad-do-it))) (defadvice skk-abbrev-insert (around skk-dcomp-ad activate) (cond ((or skk-dcomp-activate skk-dcomp-multiple-activate) (when (skk-dcomp-marked-p) (skk-dcomp-face-off) (skk-dcomp-delete-completion)) ad-do-it (when skk-use-look (setq skk-look-completion-words nil)) (unless (memq (skk-last-command-char) '(?*)) (skk-dcomp-do-completion (point)))) (t ad-do-it))) (defadvice skk-abbrev-comma (around skk-dcomp-ad activate) (cond ((and (or skk-dcomp-activate skk-dcomp-multiple-activate) (not (eq last-command 'skk-comp-do))) (when (skk-dcomp-marked-p) (skk-dcomp-face-off) (skk-dcomp-delete-completion)) ad-do-it (when skk-use-look (setq skk-look-completion-words nil)) (unless (memq (skk-last-command-char) '(?*)) (skk-dcomp-do-completion (point)))) (t ad-do-it))) (defadvice skk-abbrev-period (around skk-dcomp-ad activate) (cond ((and (or skk-dcomp-activate skk-dcomp-multiple-activate) (not (eq last-command 'skk-comp-do))) (when (skk-dcomp-marked-p) (skk-dcomp-face-off) (skk-dcomp-delete-completion)) ad-do-it (when skk-use-look (setq skk-look-completion-words nil)) (unless (memq (skk-last-command-char) '(?*)) (skk-dcomp-do-completion (point)))) (t ad-do-it))) (defadvice skk-comp-previous (after skk-dcomp-ad activate) (when (and (skk-dcomp-multiple-activate-p) (skk-dcomp-multiple-available-p) (or skk-comp-circulate (< 0 skk-dcomp-multiple-select-index))) (skk-kana-cleanup 'force) (setq skk-dcomp-multiple-select-index (cond ((and skk-comp-circulate (< skk-dcomp-multiple-select-index 0)) (1- (length skk-comp-stack))) (t (1- skk-dcomp-multiple-select-index)))) (skk-dcomp-multiple-show (skk-dcomp-multiple-get-candidates t)))) (defadvice skk-kakutei (around skk-dcomp-ad activate) (skk-dcomp-before-kakutei) ad-do-it (skk-dcomp-after-kakutei)) (defadvice keyboard-quit (around skk-dcomp-ad activate) (skk-dcomp-before-kakutei) ad-do-it (skk-dcomp-after-delete-backward-char)) ;;(defadvice skk-henkan (before skk-dcomp-ad activate) (defadvice skk-start-henkan (before skk-dcomp-ad activate) (skk-dcomp-cleanup-buffer)) (defadvice skk-process-prefix-or-suffix (before skk-dcomp-ad activate) (when skk-henkan-mode (skk-dcomp-cleanup-buffer))) (defadvice skk-comp (around skk-dcomp-ad activate) (cond ((and (or skk-dcomp-activate skk-dcomp-multiple-activate) (skk-dcomp-marked-p)) (cond ((integerp (ad-get-arg 0)) (skk-dcomp-cleanup-buffer) ad-do-it) (t (goto-char skk-dcomp-end-point) (setq this-command 'skk-comp-do) (skk-dcomp-face-off) (skk-set-marker skk-dcomp-start-point nil) (skk-set-marker skk-dcomp-end-point nil) (when (and (skk-dcomp-multiple-activate-p) (skk-dcomp-multiple-available-p) (or skk-comp-circulate (< skk-dcomp-multiple-select-index (1- (length skk-dcomp-multiple-candidates))))) (setq skk-dcomp-multiple-select-index (skk-dcomp-multiple-increase-index skk-dcomp-multiple-select-index t)) (skk-dcomp-multiple-show (skk-dcomp-multiple-get-candidates t)))))) (t ad-do-it (when (and (skk-dcomp-multiple-activate-p) (skk-dcomp-multiple-available-p)) (setq skk-dcomp-multiple-select-index (skk-dcomp-multiple-increase-index skk-dcomp-multiple-select-index)) (skk-dcomp-multiple-show (skk-dcomp-multiple-get-candidates ;; skk-comp $B$N(B C-u TAB $B$r9MN8$9$k(B (not (and current-prefix-arg (listp current-prefix-arg))))))))) (defadvice skk-comp-do (before skk-dcomp-ad activate) (when (and skk-comp-use-prefix (not (string= "" skk-prefix)) (eq (skk-last-command-char) skk-next-completion-char)) (ad-set-arg 0 t))) (defadvice skk-comp-do (after skk-dcomp-ad activate) (when (and (skk-dcomp-multiple-activate-p) (skk-dcomp-multiple-available-p) ;;(not (ad-get-arg 0)) (eq (skk-last-command-char) skk-next-completion-char)) (skk-kana-cleanup 'force) (setq skk-dcomp-multiple-select-index (skk-dcomp-multiple-increase-index skk-dcomp-multiple-select-index)) (skk-dcomp-multiple-show (skk-dcomp-multiple-get-candidates t)))) (defadvice skk-comp-start-henkan (around skk-dcomp-ad activate) (cond ((and (eq skk-henkan-mode 'on) (or skk-dcomp-activate skk-dcomp-multiple-activate) (skk-dcomp-marked-p)) (goto-char skk-dcomp-end-point) (setq this-command 'skk-comp-do) (skk-dcomp-face-off) (skk-set-marker skk-dcomp-start-point nil) (skk-set-marker skk-dcomp-end-point nil) (skk-start-henkan (ad-get-arg 0))) (t ad-do-it))) (defadvice skk-delete-backward-char (after skk-dcomp-ad activate) (skk-dcomp-after-delete-backward-char)) (defadvice skk-undo (after skk-dcomp-ad activate) (skk-dcomp-after-delete-backward-char)) (defadvice viper-del-backward-char-in-insert (after skk-dcomp-ad activate) (skk-dcomp-after-delete-backward-char)) (defadvice vip-del-backward-char-in-insert (after skk-dcomp-ad activate) (skk-dcomp-after-delete-backward-char)) (defadvice skk-previous-candidate (around skk-dcomp-ad activate) (let ((active (eq skk-henkan-mode 'active))) ad-do-it (when active (skk-dcomp-after-delete-backward-char)))) (provide 'skk-dcomp) ;;; skk-dcomp.el ends here ddskk-15.2/skk-develop.el0000644000570400056700000001161012227234734015355 0ustar kitamotoopenlab;;; skk-develop.el --- support SKK developper -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-develop.el,v 1.33 2013/10/15 12:49:32 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/10/15 12:49:32 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (eval-when-compile (defvar skk-exserv-list)) ;;;###autoload (defun skk-submit-bug-report () "SKK $B$N%P%0%l%]!<%H$r=q$/%a!<%k%P%C%U%!$rMQ0U$9$k!#(B mail-user-agent $B$r@_Dj$9$k$3$H$K$h$j9%$_$N%a!<%k%$%s%?!<%U%'%$%9$r;HMQ$9$k$3$H(B $B$,$G$-$k!#Nc$($P!"(BWanderlust $B$r;HMQ$7$?$$>l9g$O2<5-$N$h$&$K@_Dj$9$k!#(B \(setq mail-user-agent 'wl-user-agent\) " (interactive) (require 'reporter) (when (skk-y-or-n-p "SKK $B$K$D$$$F$N%P%0%l%]!<%H$r=q$-$^$9$+!)(B " "Do you really want to write a bug report on SKK? ") (reporter-submit-bug-report skk-ml-address (concat (skk-version 'with-codename) ", " (cond ((or (and (boundp 'skk-servers-list) skk-servers-list) (or (and (boundp 'skk-server-host) skk-server-host) (getenv "SKKSERVER")) ;; refer to DEFAULT_JISYO when skk-server-jisyo is nil. ;;(or (and (boundp 'skk-server-jisyo) skk-server-jisyo) ;; (getenv "SKK_JISYO")))) ) (require 'skk-server) (concat "skkserv; " (skk-server-version) (when (getenv "SKKSERVER") (concat ",\nSKKSERVER; " (getenv "SKKSERVER"))) (when (getenv "SKKSERV") (concat ", SKKSERV; " (getenv "SKKSERV"))))) ((and (boundp 'skk-exserv-list) skk-exserv-list) (require 'skk-exserv) (skk-server-version)))) (let ((base (list 'window-system 'isearch-mode-hook 'isearch-mode-end-hook 'skk-auto-okuri-process 'skk-auto-start-henkan 'skk-egg-like-newline 'skk-henkan-okuri-strictly 'skk-henkan-strict-okuri-precedence 'skk-kakutei-early 'skk-process-okuri-early 'skk-search-prog-list 'skk-share-private-jisyo 'skk-use-viper))) (when (boundp 'skk-server-host) (setq base (append base '(skk-server-host)))) (when (boundp 'skk-server-prog) (setq base (append base '(skk-server-prog)))) (when (boundp 'skk-servers-list) (setq base (append base '(skk-servers-list)))) (when (boundp 'skk-exserv-list) (setq base (append base '(skk-exserv-list)))) base))) (message "")) ;;;###autoload (add-hook 'before-init-hook (lambda () (eval-after-load "font-lock" ;; `lisp-font-lock-keywords-2' is an alias for `lisp-el-font-lock-keywords-2'. ;; `lisp-font-lock-keywords-2' is obsolete since 24.4; ;; use `lisp-el-font-lock-keywords-2' instead. '(set (if (boundp 'lisp-el-font-lock-keywords-2) 'lisp-el-font-lock-keywords-2 'lisp-font-lock-keywords-2) (nconc (list (list (concat "(\\(\\(skk-\\)?def\\(" ;; Function type declarations. "\\(un-cond\\|subst-cond\\|advice\\|" "macro-maybe\\|alias-maybe\\|un-maybe\\)\\|" ;; Variable type declarations. "\\(var\\|localvar\\)" "\\)\\)\\>" ;; Any whitespace and defined object. "[ \t'\(]*" "\\(\\sw+\\)?") '(1 font-lock-keyword-face) '(6 (cond ((match-beginning 4) font-lock-function-name-face) ((match-beginning 5) font-lock-variable-name-face)) nil t))) (list (list (concat "(" (regexp-opt '("skk-save-point" "skk-with-point-move" "skk-loop-for-buffers") t) "\\>") '(1 font-lock-keyword-face))) (list (list "(\\(skk-error\\)\\>" '(1 font-lock-warning-face))) (symbol-value (if (boundp 'lisp-el-font-lock-keywords-2) 'lisp-el-font-lock-keywords-2 'lisp-font-lock-keywords-2)) ))) ;; (put 'skk-deflocalvar 'doc-string-elt 3) (put 'skk-defadvice 'doc-string-elt 3) )) (provide 'skk-develop) ;;; skk-develop.el ends here ddskk-15.2/skk-emacs.el0000644000570400056700000006352112413630162015007 0ustar kitamotoopenlab;;; skk-emacs.el --- GNU Emacs support for SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 2004 Masatake YAMATO ;; Copyright (C) 2004-2010 SKK Development Team ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'cl) (require 'ja-dic-utl) (require 'tooltip) (require 'skk-vars) (require 'skk-macs) (defvar tool-bar-border)) (eval-and-compile (autoload 'mouse-avoidance-banish-destination "avoid") (autoload 'mouse-avoidance-point-position "avoid") (autoload 'mouse-avoidance-set-mouse-position "avoid") (autoload 'Info-goto-node "info") (autoload 'browse-url "browse-url")) ;; Variables. (defvar skk-emacs-modeline-menu-items (when window-system '("Daredevil SKK Menu" ["Hiragana" (skk-j-mode-on) :selected (and skk-j-mode (not skk-katakana)) :style radio :keys nil :key-sequence nil] ["Katakana" (skk-j-mode-on t) :selected (and skk-j-mode skk-katakana) :style radio :keys nil :key-sequence nil] ["Hankaku alphabet" skk-latin-mode :selected skk-latin-mode :style radio :keys nil :key-sequence nil] ["Zenkaku alphabet" skk-jisx0208-latin-mode :selected skk-jisx0208-latin-mode :style radio :keys nil :key-sequence nil] "--" ["Find kanji by radicals" skk-tankan t] ["Show list of characters" (skk-list-chars nil) t] ["Lookup word in region or at point" skk-annotation-lookup-region-or-at-point t] ["SKK Clock" (skk-clock nil t) t] "--" ["Read Manual" skk-emacs-info t] ["Start Tutorial" skk-tutorial t] ["Customize SKK" skk-customize-group-skk t] ["Customize SKK (simple)" skk-customize t] "--" ["Send a Bug Report" (let (skk-japanese-message-and-error) (skk-submit-bug-report)) t] ["About Daredevil SKK.." skk-version t] ["Visit Daredevil Web Site" skk-emacs-visit-openlab t]))) (defvar skk-emacs-menu-resource-ja '(("Daredevil SKK Menu" . "Daredevil SKK $B%a%K%e!<(B") ("Convert Region and Echo" . "$BNN0h$rJQ49$7$F%_%K%P%C%U%!$KI=<((B") ("Gyakubiki" . "$B5U0z$-(B") ("to Hiragana" . "$B$R$i$,$J$KJQ49(B") ("to Hiragana, All Candidates" . "$B$R$i$,$J$KJQ49!"A4$F$N8uJd$rI=<((B") ("to Katakana" . "$B%+%?%+%J$KJQ49(B") ("to Katakana, All Candidates" . "$B%+%?%+%J$KJQ49!"A4$F$N8uJd$rI=<((B") ("Hurigana" . "$B$U$j$,$J(B") ("Convert Region and Replace" . "$BNN0h$rJQ49$7$FCV$-49$($k(B") ("Hiragana" . "$B$R$i$,$J(B") ("Katakana" . "$B%+%?%+%J(B") ("Hiragana to Katakana" . "$B$R$i$,$J$r%+%?%+%J$KJQ49(B") ("Katakana to Hiragana" . "$B%+%?%+%J$r$R$i$,$J$KJQ49(B") ("Kana and Zenkaku to Romaji" . "$B$+$J!&%+%J!&A43Q$r%m!<%^;z$KJQ49(B") ("Ascii to Zenkaku" . "ASCII $B$rA43Q1Q?t$KJQ49(B") ("Zenkaku to Ascii" . "$BA43Q1Q?t$r(B ASCII $B$KJQ49(B") ("Count Jisyo Candidates" . "$B<-=qCf$N8uJd?t$r?t$($k(B") ("Save Jisyo" . "$B<-=q$rJ]B8$9$k(B") ("Undo Kakutei" . "$B3NDj$rC$9(B ($B%"%s%I%%(B)") ("Restart SKK" . "SKK $B$N:F5/F0(B") ("Version" . "SKK $B$N%P!<%8%g%s(B") ("Daredevil SKK Menu" . "Daredevil SKK $B%a%K%e!<(B") ("Hankaku alphabet" . "$BH>3Q1Q?t(B") ("Zenkaku alphabet" . "$BA43Q1Q?t(B") ("Read Manual" . "$B%^%K%e%"%k$rFI$`(B") ("Start Tutorial" . "$B%A%e!<%H%j%"%k(B") ("Customize SKK" . "SKK $B$r%+%9%?%^%$%:(B") ("Customize SKK (simple)" . "SKK $B$r%+%9%?%^%$%:(B ($B4J0WHG(B)") ("Find kanji by radicals" . "$B4A;z$rItJ,(B (ex.512) (frame-char-height)) ;$B$N9T?t(B(ex.16) => 32 2)) ;$B4p=`$H$9$k:GBg9b(B => 16 (max-columns (- (car (skk-tooltip-max-tooltip-size)) 2)) ;ex.78 (columns 0) current-column indent) (with-temp-buffer (set-buffer-multibyte t) (insert text) (setq indent (if (and (memq (downcase (char-after (point-min))) skk-henkan-show-candidates-keys) (eq ?: (char-after (1+ (point-min))))) " " "")) (goto-char (point-min)) (while (not (eobp)) (setq lines (1+ lines)) (cond ((= lines max-lines) ;$BD9$9$.$k(B (beginning-of-line) (insert "($BD9$9$.$k$N$G>JN,$5$l$^$7$?(B)") (delete-region (point) (point-max)) (goto-char (point-max))) ;; (t (when (> (progn (end-of-line) (current-column)) max-columns) (move-to-column max-columns) (backward-char) (if (member (char-to-string (following-char)) skk-auto-start-henkan-keyword-list) (forward-char)) (insert "\n" indent) (forward-line -1)) (end-of-line) (setq current-column (current-column)) (when (> current-column columns) (setq columns current-column)) (forward-line 1)))) (goto-char (point-min)) (while (re-search-forward "\n *\n" nil t) (replace-match "\n" nil t)) (setq text (buffer-string))) ;; (text . (x . y)) (cons text (cons columns lines)))) (defun skk-tooltip-relative-p () (and (featurep 'ns) (< emacs-major-version 24))) (defun skk-tooltip-show-at-point (text &optional situation) "TEXT $B$r(B tooltip $B$GI=<($9$k!#(B" (require 'tooltip) (let* ((P (cdr (skk-emacs-mouse-position))) (oP (cdr (mouse-position))) event parameters (avoid-destination (if (memq skk-tooltip-mouse-behavior '(avoid avoid-maybe banish)) (mouse-avoidance-banish-destination))) win tip-destination fontsize left top tooltip-info tooltip-size spacing border-width internal-border-width text-width text-height screen-width screen-height (inhibit-quit t)) ;; (when (null (car P)) (unless (memq skk-tooltip-mouse-behavior '(avoid-maybe banish nil)) (setq oP (cdr (mouse-avoidance-point-position))))) ;; (when (eq skk-tooltip-mouse-behavior 'follow) (mouse-avoidance-set-mouse-position P)) ;; (when (or (and (memq skk-tooltip-mouse-behavior '(avoid banish)) (not (equal (mouse-position) avoid-destination))) (and (eq skk-tooltip-mouse-behavior 'avoid-maybe) (cadr (mouse-position)) (not (equal (mouse-position) avoid-destination)))) (set-mouse-position (selected-frame) (car avoid-destination) ;; XXX pending ;; $B%^%&%9%]%$%s%?$O$I$3$X$$$/$Y$-$+(B ;; (cdr avoid-destination) 0)) ;; (cond ((eq skk-tooltip-mouse-behavior 'follow) (setq tooltip-info (skk-tooltip-resize-text text) text (car tooltip-info))) (t ;; $B%^%&%9%]%$%s%?$K0MB8$;$:(B tooptip $B$N0LCV$r7hDj$9$k!#(B (setq win (if skk-isearch-switch (minibuffer-window) (selected-window)) tip-destination (posn-x-y (if skk-isearch-switch (posn-at-point (with-current-buffer (window-buffer (minibuffer-window)) (point-min)) (minibuffer-window)) (posn-at-point (point)))) fontsize (frame-char-height) spacing (let ((val (or (cdr-safe (assq 'line-spacing skk-tooltip-parameters)) (cdr-safe (assq 'line-spacing tooltip-frame-parameters)) (frame-parameter (selected-frame) 'line-spacing) (default-value 'line-spacing) 0))) (if (integerp val) val (truncate (* fontsize spacing)))) border-width (or (cdr-safe (assq 'border-width skk-tooltip-parameters)) (cdr-safe (assq 'border-width tooltip-frame-parameters)) (frame-parameter (selected-frame) 'border-width) 0) internal-border-width (or (cdr-safe (assq 'internal-border-width skk-tooltip-parameters)) (cdr-safe (assq 'internal-border-width tooltip-frame-parameters)) (frame-parameter (selected-frame) 'internal-border-width) 0) ;; $B0J2<(B left $B$H(B top $B$O!"(BX Window System $B2<$G$O2hLLA4BN$NCf$G$N:BI8$r(B ;; $B;XDj$9$k!#(B Apple OS X $B$K$*$$$F$b!"(BCarbon Emacs 22.3 $B$G$OF1MM$@$,(B ;; Cocoa Emacs 23.2 $B$G$O(B Emacs $B%U%l!<%`Fb$G$N:BI8$r;XDj$9$kI,MW$,$"$k!#(B ;; x $B:BI8(B ($B:8$+$i$N(B) left (+ (car tip-destination) (nth 0 (window-inside-pixel-edges win)) (if (skk-tooltip-relative-p) 0 (eval (frame-parameter (selected-frame) 'left))) skk-tooltip-x-offset) ;; y $B:BI8(B ($B>e$+$i$N(B) top (+ (cdr tip-destination) (nth 1 (window-inside-pixel-edges win)) (if (skk-tooltip-relative-p) 0 (+ (if tool-bar-mode skk-emacs-tool-bar-height 0) (if (and menu-bar-mode (not (or (boundp 'mac-carbon-version-string) (featurep 'ns)))) skk-emacs-menu-bar-height 0) (eval (frame-parameter (selected-frame) 'top)) (+ fontsize spacing))) skk-tooltip-y-offset) tooltip-info (skk-tooltip-resize-text text) text (car tooltip-info) tooltip-size (cdr tooltip-info) text-width (+ (* (/ (1+ fontsize) 2) (car tooltip-size)) (* 2 (+ border-width internal-border-width))) text-height (+ (* (+ fontsize spacing) (cdr tooltip-size)) (* 2 (+ border-width internal-border-width))) screen-width (display-pixel-width) screen-height (display-pixel-height)) ;; (unless (skk-tooltip-relative-p) (when (> (+ left text-width) screen-width) ;; $B1&$K4s$j$9$.$F7g$1$F$7$^$o$J$$$h$&$K(B (setq left (- left (- (+ left text-width ;; $B>/$7M>7W$K:8$K4s$;$J$$$H(B avoid ;; $B$7$?%^%&%9%]%$%s%?$H43>D$9$k(B (* 2 fontsize)) screen-width)))) (when (> (+ top text-height) screen-height) ;; $B2<$K4s$j$9$.$F7g$1$F$7$^$o$J$$$h$&$K(B (setq top (- top ;; $B==J,>e$2$J$$$H%F%-%9%H$H=E$J$k$N$G!"(B ;; $B$$$C$=%F%-%9%H$N>e$K$7$F$_$k(B text-height (* 2 (+ fontsize spacing)))) ;; $B$5$i$K(B X $B:BI8$r(B... (let ((right (+ left text-width skk-tooltip-x-offset)) (mouse-x (+ (frame-parameter (selected-frame) 'left) (* (frame-pixel-width))))) (when (and (<= left mouse-x) (<= mouse-x right)) ;; $B%^%&%9%]%$%s%?$HHo$j$=$&$J$H$-(B (setq left (- left (- right mouse-x) fontsize)))))) )) ; END **$B%^%&%9%]%$%s%?$K0MB8$;$:(B tooptip $B$N0LCV$r7hDj$9$k(B** ;; (setq parameters (if (eq skk-tooltip-mouse-behavior 'follow) skk-tooltip-parameters (append skk-tooltip-parameters (list (cons 'top top) (cons 'left left))))) ;; (skk-tooltip-show-1 text parameters) ;; (when (eq situation 'annotation) (skk-annotation-message situation)) ;; (setq event (next-command-event)) (cond ((skk-key-binding-member (skk-event-key event) '(keyboard-quit skk-kanagaki-bs skk-kanagaki-esc) skk-j-mode-map) (tooltip-hide) (when (and (not (memq skk-tooltip-mouse-behavior '(banish nil))) (car oP)) (mouse-avoidance-set-mouse-position oP)) (skk-set-henkan-count 0) (cond ((eq skk-henkan-mode 'active) (skk-unread-event (character-to-event (aref (car (where-is-internal 'skk-previous-candidate skk-j-mode-map)) 0))) (when (eq situation 'listing) ;; skk-henkan $B$^$G0l5$$K(B throw $B$9$k!#(B (throw 'unread nil))) (t (skk-unread-event event)))) (t (when (and (not (memq skk-tooltip-mouse-behavior '(banish nil))) (car oP)) (mouse-avoidance-set-mouse-position oP)) (tooltip-hide) (skk-unread-event event))))) (defun skk-tooltip-show-1 (text skk-params) "TEXT $B$r(B tooltip $B$GI=<($9$k!#(B SKK-PARAMS $B$O(B `skk-tooltip-parameters' $BKt$O(B `tooltip-frame-parameters' $B$N$$$:$l$+!#(B TEXT $B$K$O(B `skk-tooltip-face' $B$,E,MQ$5$l$k!#(B" (condition-case error (let ((params (or skk-params tooltip-frame-parameters)) fg bg) (if skk-params ;; $B%f!<%6$,FH<+$K(B tooltip $BI=<(@_Dj$9$k(B (dolist (cell tooltip-frame-parameters) (unless (assq (car cell) skk-params) (setq params (cons cell params)))) ;; tooltip $B$N%G%U%)%k%H$N@_Dj$r$9$k(B (setq fg (face-attribute 'tooltip :foreground)) (setq bg (face-attribute 'tooltip :background)) (when (stringp fg) (setq params (skk-put-alist 'foreground-color fg params)) (setq params (skk-put-alist 'border-color fg params))) (when (stringp bg) (setq params (skk-put-alist 'background-color bg params)))) ;; (when (facep skk-tooltip-face) (setq text (propertize text 'face skk-tooltip-face))) ;; $B%_%K%P%C%U%!$K$$$k$H$-M>7W$J%a%C%;!<%8$r%/%j%"$9$k(B (when (or skk-isearch-switch (skk-in-minibuffer-p)) (message nil)) ;; (let ((x-gtk-use-system-tooltips nil)) ;; GTK $BIU(B Emacs $B$G!"(BGTK $B$N%D!<%k%F%#%C%W$rMxMQ$9$k$H(B ;; $B8=>u%U%'%$%9B0@-$,E,MQ$5$l$J$$$N$G!"(BEmacs $B$N%D!<%k(B ;; $B%F%#%C%W$rMQ$$$k!#(B (x-show-tip text (selected-frame) params skk-tooltip-hide-delay ;; (if (eq skk-tooltip-mouse-behavior 'follow) skk-tooltip-x-offset tooltip-x-offset) ;; (if (eq skk-tooltip-mouse-behavior 'follow) skk-tooltip-y-offset tooltip-y-offset)))) (error (message "Error while displaying tooltip: %s" error) (sit-for 1) (message "%s" text)))) (defalias 'skk-tooltip-hide 'tooltip-hide) ;;@@ Other functions. ;;;###autoload (defun skk-search-ja-dic () "GNU Emacs $B$KIUB0$9$k$+$J4A;zJQ49<-=q$rMQ$$$F8!:w$9$k!#(B $B8=:_$N(B Emacs $B$K$O(B SKK-JISYO.L $B$r4p$KJQ49$5$l$?(B ja-dic.el $B$,IUB0$7$F$$$k!#(B $B$3$N<-=q%G!<%?$rMQ$$$FAw$j$"$j!"Aw$j$J$7!"@\F,<-!"@\Hx<-$NJQ49$r9T$&!#(B $B$?$@$7!"(BSKK-JISYO.L $B$N$h$&$J1Q?tJQ49!"?tCMJQ49$J$I$O$G$-$J$$!#(B" (require 'ja-dic-utl) ;; Mostly from ja-dic-utl.el. (when (and (locate-library "ja-dic/ja-dic") (not skkdic-okuri-nasi)) (ignore-errors (load-library "ja-dic/ja-dic"))) (when skkdic-okuri-nasi (let* ((len (length skk-henkan-key)) (vec (make-vector len 0)) (i 0) entry result) ;; At first, generate vector VEC from SEQ for looking up SKK ;; alists. Nth element in VEC corresponds to Nth element in SEQ. ;; The values are decided as follows. ;; If SEQ[N] is `$B!<(B', VEC[N] is 0, ;; else if SEQ[N] is a Hiragana character, VEC[N] is: ;; ((The 2nd position code of SEQ[N]) - 32), ;; else VEC[N] is 128. (while (< i len) (let ((ch (aref skk-henkan-key i)) code) (cond ((= ch ?$B!<(B) (aset vec i 0)) ((and (eval-when-compile (>= emacs-major-version 23)) (>= ch (car skkdic-jisx0208-hiragana-block)) (<= ch (cdr skkdic-jisx0208-hiragana-block)) (setq code (encode-char ch 'japanese-jisx0208))) (aset vec i (- (logand code #xFF) 32))) ((and (eval-when-compile (= emacs-major-version 22)) (setq code (split-char ch)) (eq (car code) 'japanese-jisx0208) (= (nth 1 code) skkdic-jisx0208-hiragana-block)) (aset vec i (- (nth 2 code) 32))) (t (aset vec i 128)))) (setq i (1+ i))) (cond (skk-henkan-okurigana ; $BAw$j$"$jJQ49(B (let ((okurigana (assq (aref skk-henkan-okurigana 0) skkdic-okurigana-table)) orig-element) (when okurigana (setq orig-element (aref vec (1- len))) (aset vec (1- len) (- (cdr okurigana))) (when (and (setq entry (lookup-nested-alist vec skkdic-okuri-ari len 0 t)) (consp (car entry))) (setq entry (nreverse (copy-sequence (car entry)))))))) ((string-match ">$" skk-henkan-key) ; $B@\F,<-(B (setq entry (lookup-nested-alist vec skkdic-prefix (1- len) 0 t))) ((string-match "^>" skk-henkan-key) ; $B@\Hx<-(B (setq entry (lookup-nested-alist vec skkdic-postfix len 1 t))) (t ; $BDL>o$NAw$j$J$7JQ49(B (setq entry (lookup-nested-alist vec skkdic-okuri-nasi len 0 t)))) ;; (when (consp (car entry)) (setq entry (car entry))) (while entry (when (stringp (car entry)) (setq result (nconc result (list (car entry))))) (setq entry (cdr entry))) result))) ;; skk-kcode.el $B$h$j!#(B ;; XEmacs $B$G$N%(%i!<2sHr$N$?$a$K$3$N4X?t$r0l;~B`Hr$7$F$$$k!#(B ;; 2$BLL(B ;;;###autoload (defun skk-jis2sjis2 (char1 char2) (let* ((ch2 (if (eq (* (/ char1 2) 2) char1) (+ char2 125) (+ char2 31))) (c2 (if (>= ch2 127) (+ ch2 1) ch2)) (ku (- char1 32)) (c1 (if (<= ku 15) (- (/ (+ ku ?\x1df) 2) (* (/ ku 8) 3)) (/ (+ ku ?\x19b) 2)))) (list c1 c2))) ;; advices. (defadvice tooltip-hide (after ccc-ad activate) (update-buffer-local-frame-params)) (provide 'skk-emacs) ;;; skk-emacs.el ends here ddskk-15.2/skk-gadget.el0000644000570400056700000006316612103440536015157 0ustar kitamotoopenlab;;; skk-gadget.el --- $B ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk-gadget.el,v 1.54 2013/02/03 10:52:14 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/02/03 10:52:14 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B%W%m%0%i%`L>$N$J$$<-=q$NJQ49$N8uJd$K(B Emacs Lisp $B$N%3!<%I$,=q$$$F$"$l$P!"(BSKK ;; $B$O$=$N%3!<%I$r(B Lisp $B$N%W%m%0%i%`$H$7$FeIU$1$i$l$?!#(B ;; $BM>CL$@$,!"(BX Window $B$G;HMQ$5$l$k(B `Widget' $B$H$$$&8@MU$O!"(B`window'+`gadget' ;; $B$+$i:n$i$l$?B$8l$i$7$$!#(B ;; $B<-=q%(%s%H%j(B today $B$N2r@b(B ;; ====================== ;; today /(skk-current-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 0 'gengo 0 0 0)) )/ ;; 1. lambda() $BA4BN$r0z?t$H$7$F(B skk-current-date() $B$r ("2013" "Jan" "29" "Tue" "22" "59" "50") ;; b. format => nil ;; c. (not skk-date-ad) => t=$B@>Nq(B, nil=$B859f(B ;; d. and-time => nil ;; $B$r0z?t$H$7$F(B lambda() $B$r(B funcall $B$9$k(B ;; 3. $B$9$J$o$A!"(Blambda() $B<+?H$N0z?t(B `date-information' `format' `gengo' `and-time' $B$O!"(B ;; $B>e5-$N(B a $B!A(B d $B$G$"$k(B ;; 4. $B:G=*E*$K(B skk-default-current-date() $B$, $B4A?t;z(B ;; h. 'gengo [gengo] ... non-nil => $BJ?@.Fs==8^G/(B ;; nil => $BFs@i==;0G/(B ;; i. 0 [gengo-index] ... ;; j. 0 [month-alist-index] ... ;; k. 0 [dayofweek-alist-index] ... ;; opt. and-time ;; 5. *scratch* $B$GI>2A$7$F$_$k(B ;; (skk-default-current-date ;; '("2013" "Jan" "29" "Tue" "22" "59" "50") nil 3 t 0 0 0) [C-j] ;; => "$BJ?@.Fs==8^G/0l7nFs==6eF|(B($B2P(B)" ;; $B$3$l",$,!"H/C<$G$"$k(B skk-current-date() $B$NLa$jCM$G$"$k(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars) (require 'cl)) ;; -- programs ;;;###autoload (defun skk-current-date (&optional pp-function format and-time) "`current-time-string' $B$N=PNO$r2C9)$7!"8=:_$NF|;~(B \(string\) $B$rJV$9!#(B $B%*%W%7%g%J%k0z?t$N(B PP-FUNCTION $B$r;XDj$9$k$H!"(B `skk-current-date-1' $B$NJV$jCM!"(B FORMAT $B!"(B AND-TIME $B$r0z?t$K$7$F(B PP-FUNCTION $B$r(B `funcall' $B$9$k!#(B PP-FUNCTION $B$,(B nil $B$N>l9g$O(B `skk-default-current-date-function' $B$r(B `funcall' $B$9$k!#(B FORMAT $B$O(B `format' $B$NBh#10z?t$NMM<0(B \(string\) $B$K$h$k=PNO;XDj%F%s%W%l!<%H!#(B AND-TIME \(boolean\) $B$r;XDj$9$k$H;~9o$bJV$9!#(B `skk-today' $B$H(B `skk-clock' $B$N%5%V%k!<%A%s$G$"$k!#(B" (funcall (if pp-function pp-function skk-default-current-date-function) (skk-current-date-1) format (not skk-date-ad) and-time)) (defun skk-current-date-1 (&optional specified-time) "`current-time-string' $B$N=PNO$r2C9)$7!"F|IU!&;~9o>pJs$r%j%9%H$K$7$FJV$9!#(B \(year month day day-of-week hour minute second\) \(\"2013\" \"Jan\" \"29\" \"Tue\" \"22\" \"41\" \"11\"\) $B%*%W%7%g%J%k0z?t$N(B SPECIFIED-TIME $B$O(B `current-time-string' $B$N(B docstring $B$r;2>H$N$3$H!#(B" (multiple-value-bind (dow month day time year) (split-string (current-time-string specified-time)) (append (list year month day dow) (split-string time ":")))) ;;;###autoload (defun skk-default-current-date (date-information format num-type gengo gengo-index month-alist-index dayofweek-alist-index &optional and-time) "\ $BF|IU>pJs$NI8=`E*$J=PNO$r$9$kB>!"%f!<%6$K$"$kDxEY$N%+%9%?%^%$%:5!G=$rDs6!$9$k!#(B $B$3$N4X?t$N0z?t$G%+%9%?%^%$%:$G$-$J$$=PNO$r4uK>$9$k>l9g$O!"(B `skk-default-current-date-function' $B$K<+A0$N4X?t$r;XDj$9$k!#(B DATE-INFORMATION $B$O(B \(year month day day-of-week hour minute second\) $B$N7A<0$N%j%9%H!#3FMWAG$OJ8;zNs!#(B`skk-current-date-1' $B$N=PNO$r;HMQ!#(B FORMAT $B$O(B `format' $B$NBh#10z?t$NMM<0$K$h$k=PNO7ABV$r;XDj$9$kJ8;zNs!#(B nil $B$G$"$l$P(B \"%s$BG/(B%s$B7n(B%s$BF|(B\(%s\)%s$B;~(B%s$BJ,(B%s$BIC(B\" \($B$b$7$/$O(B \"%s$BG/(B%s$B7n(B%s$BF|(B\(%s\)\" $B$,;H$o$l$k!#(B NUM-TYPE \(number\) $B$O(B 0 -> $BL5JQ49(B 1 -> $BA43Q?t;z$XJQ49(B 2 -> $B4A?t;z$XJQ49(B \($B0L $B4A?t;z$XJQ49(B \($B0L $B$=$N?t;z$=$N$b$N$r%-!<$K$7$F<-=q$r:F8!:w(B 5 -> $B4A?t;z(B \($B $B>-4}$G;HMQ$9$k?t;z(B \(\"$B#3;M(B\" $B$J$I(B\) $B$KJQ49(B GENGO $B$O859fI=<($9$k$+$I$&$+(B \(boolean\)$B!#(B GENGO-INDEX $B$O(B `skk-gengo-alist' $B$N3FMWAG$N(B cadr $B$r(B 0 $B$H$9$k(B index \(number\)$B!#(Bnil $B$G$"$l$P(B `current-time-string' $B$N=PNO$N$^$^L5JQ49!#(B MONTH-ALIST-INDEX $B$O(B `skk-month-alist' $B$N3FMWAG$N(B cadr $B$r(B 0 $B$H$9$k(B index \(number\)$B!#(Bnil $B$G$"$l$P(B `current-time-string' $B$N=PNO$N$^$^L5JQ49!#(B DAYOFWEEK-ALIST-INDEX $B$O(B `skk-day-of-week-alist' $B$N3FMWAG$N(B cadr $B$r(B 0 $B$H$9$k(B index \(number\)$B!#(Bnil $B$G$"$l$P(B `current-time-string' $B$N=PNO$N$^(B $B$^L5JQ49!#(B AND-TIME $B$O;~9o$bI=<($9$k$+$I$&$+(B \(boolean\)$B!#(B" (multiple-value-bind (year month day day-of-week hour minute second v) date-information (when gengo (setq v (skk-ad-to-gengo-1 (string-to-number year)))) (setq year (if gengo (concat (if gengo-index (nth gengo-index (car v)) (caar v)) (skk-num-exp (number-to-string (cdr v)) num-type)) (skk-num-exp year num-type))) (when month-alist-index (setq month (skk-num-exp (nth month-alist-index (cdr (assoc month skk-month-alist))) num-type))) (setq day (skk-num-exp day num-type)) (when dayofweek-alist-index (setq day-of-week (nth dayofweek-alist-index (cdr (assoc day-of-week skk-day-of-week-alist))))) (when and-time (setq hour (skk-num-exp hour num-type)) (setq minute (skk-num-exp minute num-type)) (setq second (skk-num-exp second num-type))) (if and-time (format (or format "%s$BG/(B%s$B7n(B%s$BF|(B(%s)%s$B;~(B%s$BJ,(B%s$BIC(B") year month day day-of-week hour minute second) (format (or format "%s$BG/(B%s$B7n(B%s$BF|(B(%s)") year month day day-of-week)))) ;;;###autoload (defun* skk-relative-date (pp-function format and-time &key (yy 0) (mm 0) (dd 0)) "`skk-current-date' $B$N3HD%HG!#(BPP-FUNCTION, FORMAT, AND-TIME $B$O(B `skk-current-date' $B$r;2>H$N$3$H!#(B $B \"$BJ?@.(B25$BG/(B2$B7n(B03$BF|(B($BF|(B)\" (skk-relative-date (lambda (arg) body) nil nil :dd -1) => \"$BJ?@.(B25$BG/(B2$B7n(B02$BF|(B($BEZ(B)\" (skk-relative-date (lambda (arg) body) nil nil :mm -1) => \"$BJ?@.(B25$BG/(B1$B7n(B03$BF|(B($BLZ(B)\" (skk-relative-date (lambda (arg) body) nil nil :yy 2) => \"$BJ?@.(B27$BG/(B2$B7n(B03$BF|(B($B2P(B)\" " (let ((specified-time (multiple-value-bind (sec min hour day month year dow dst zone) (decode-time) (encode-time sec min hour (+ day dd) (+ month mm) (+ year yy))))) (funcall (if pp-function pp-function skk-default-current-date-function) (skk-current-date-1 specified-time) format (not skk-date-ad) and-time))) ;; $B$-$N$&(B /(skk-relative-date ; $BJ?@.(B25$BG/(B2$B7n(B02$BF|(B($BEZ(B) ;; (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 0 'gengo 0 0 0)) nil nil :dd -1) ;; /(skk-relative-date ; 2013-2-02(Sat) ;; (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s-%s-%s(%s)" 0 nil 0 0 nil)) nil nil :dd -1) ;; /(skk-relative-date ; H25$BG/(B2$B7n(B02$BF|(B($BEZ(B) ;; (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 0 'gengo 1 0 0)) nil nil :dd -1) ;; /(skk-relative-date ; $BJ?@.Fs==8^G/Fs7nFsF|(B($BEZ(B) ;; (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 3 'gengo 0 0 0)) nil nil :dd -1) ;; /(skk-relative-date nil nil nil :dd -1)/ ; $BJ?@.#2#5G/#27n#0#2F|(B($BEZ(B) ;; $B$*$H$H$$(B /(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 0 'gengo 0 0 0)) nil nil :dd -2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s-%s-%s(%s)" 0 nil 0 0 nil)) nil nil :dd -2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 0 'gengo 1 0 0)) nil nil :dd -2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 3 'gengo 0 0 0)) nil nil :dd -2)/(skk-relative-date nil nil nil :dd -2)/ ;; $B$*$H$D$$(B /ditto/ ;; $B$"$9(B /(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 0 'gengo 0 0 0)) nil nil :dd 1)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s-%s-%s(%s)" 0 nil 0 0 nil)) nil nil :dd 1)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 0 'gengo 1 0 0)) nil nil :dd 1)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 3 'gengo 0 0 0)) nil nil :dd 1)/(skk-relative-date nil nil nil :dd 1)/ ;; $B$"$7$?(B /ditto/ ;; $B$"$5$C$F(B /(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 0 'gengo 0 0 0)) nil nil :dd 2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s-%s-%s(%s)" 0 nil 0 0 nil)) nil nil :dd 2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 0 'gengo 1 0 0)) nil nil :dd 2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil 3 'gengo 0 0 0)) nil nil :dd 2)/(skk-relative-date nil nil nil :dd 2)/ ;; $B$3$H$7(B /(skk-current-date ; "2013$BG/(B" ;; (lambda (date-information format gengo and-time) ;; (skk-default-current-date date-information "%s$BG/(B" 0 nil 0 0 0))) ;; /(skk-current-date ; "$BJ?@.(B25$BG/(B" ;; (lambda (date-information format gengo and-time) ;; (skk-default-current-date date-information "%s$BG/(B" 0 'gengo 0 0 0))) ;; /(skk-current-date ; "$BJ?@.Fs==8^G/(B" ;; (lambda (date-information format gengo and-time) ;; (skk-default-current-date date-information "%s$BG/(B" 3 'gengo 0 0 0))) ;; /(skk-current-date ; "$BJ?@.#2#5G/(B" ;; (lambda (date-information format gengo and-time) ;; (skk-default-current-date date-information "%s$BG/(B" 1 'gengo 0 0 0)))/ ;; $B$-$g$M$s(B /(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 0 nil 0 0 0)) nil nil :yy -1)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 0 'gengo 0 0 0)) nil nil :yy -1)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 3 'gengo 0 0 0)) nil nil :yy -1)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 1 'gengo 0 0 0)) nil nil :yy -1)/ ;; $B$*$H$H$7(B /(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 0 nil 0 0 0)) nil nil :yy -2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 0 'gengo 0 0 0)) nil nil :yy -2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 3 'gengo 0 0 0)) nil nil :yy -2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 1 'gengo 0 0 0)) nil nil :yy -2)/ ;; $B$i$$$M$s(B /(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 0 nil 0 0 0)) nil nil :yy 1)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 0 'gengo 0 0 0)) nil nil :yy 1)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 3 'gengo 0 0 0)) nil nil :yy 1)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 1 'gengo 0 0 0)) nil nil :yy 1)/ ;; $B$5$i$$$M$s(B /(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 0 nil 0 0 0)) nil nil :yy 2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 0 'gengo 0 0 0)) nil nil :yy 2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 3 'gengo 0 0 0)) nil nil :yy 2)/(skk-relative-date (lambda (date-information format gengo and-time) (skk-default-current-date date-information "%s$BG/(B" 1 'gengo 0 0 0)) nil nil :yy 2)/ (defun skk-today-execute-char () (let (char) (dolist (list (nth 4 skk-rule-tree)) (when (memq 'skk-today list) (setq char (char-to-string (car list))))) char)) ;;;###autoload (defun skk-today (arg) "\ `current-time-string' $B$N=PNO$r2C9)$7!"8=:_$NF|;~$rI=$9J8;zNs$r:n$j!"A^F~(B $B$9$k!#!"(B\"clock /(skk-clock)/\" $B$J$I$N%(%s%H%j$r(B SKK $B$N<-=q(B $B$K2C$(!"(B\"/clock\"+ SPC $B$GJQ49$9$k$3$H$K$h$C$F$b5/F02D!#(B\\[keyboard-quit] $B$G;_$^$k!#(B $Bl9g$O!"(B\\[keyboard-quit] $B$7$?;~E@$N;~E@$NF|;~$rA^F~$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B KAKUTEI-WHEN-QUIT $B$,(B non-nil $B$G$"$l$P(B \\[keyboard-quit] $B$7$?$H$-$K3NDj$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B TIME-SIGNAL $B$,(B non-nil $B$G$"$l$P!"(BNTT $B$N;~JsIw$K(B ding $B$9$k!#(B $B$=$l$>$l(B \"clock /(skk-clock nil t)/\" $B$N$h$&$J%(%s%H%j$r<-=q$KA^F~$9$l$PNI$$!#(B `skk-date-ad' $B$H(B `skk-number-style' $B$K$h$C$FI=<(J}K!$N%+%9%?%^%$%:$,2DG=!#(B" (interactive "*") (let ((start (current-time)) end mes expr1 expr2 sec snd) (cond ((or (not skk-number-style) (eq skk-number-style 0)) (setq expr1 "[789]$BIC(B" expr2 "0$BIC(B")) ((or (eq skk-number-style t) ;; skk-number-style $B$K(B $B?t;z$H(B t $B0J30$N(B non-nil $BCM$rF~$l$F$$$k>l(B ;; $B9g!"(B= $B$r;H$&$H(B Wrong type argument: number-or-marker-p, xxxx ;; $B$K$J$C$F$7$^$&!#(B (eq skk-number-style 1)) (setq expr1 "[$B#7#8#9(B]$BIC(B" expr2 "$B#0IC(B")) (t (setq expr1 "[$B<7H,6e(B]$BIC(B" expr2 "$B!;IC(B"))) ;; (when (eval-when-compile (featurep 'xemacs)) ;; XEmacs $B$G(B sound $B$,%m!<%I$5$l$F$$$k$+$I$&$+!#(B (when (setq snd (and (boundp 'sound-alist) (eq t (catch 'tag (mapc (lambda (list) (when (eq 'drum (cadr (memq :sound list))) (throw 'tag t))) sound-alist))))) (unless (assq 'clink sound-alist) (load-sound-file "clink" 'clink)))) ;; (save-match-data (condition-case nil (let (case-fold-search inhibit-quit visible-bell) (while (not quit-flag) (setq mes (skk-current-date nil nil t) sec 0) (message "%s Hit any key to quit" mes) (when time-signal (cond ((string-match expr1 mes) ;; [7890] $B$N$h$&$K@55,I=8=$r;H$o$:!"(B7 $B$@$1$GA4$F$N%^%7%s$,(B ;; $BCe$$$F$f$1$PNI$$$N$@$,(B...$B!#CzEY$3$N4X?tl9g$,$"$k!#(B (skk-ding nil 'drum)) ((string-match expr2 mes) ;; 0 $B$@$1!V%]!A%s!W$H$$$-$?$$$H$3$m$G$9$,!"%^%7%s$K$h$C(B ;; $B$F:9$,$"$k!#(B ;; 386SX 25Mhz + Mule-2.x $B$@$H!V%T%C!"%T%C!W$H$$$&46$8!#(B ;; $BIU$$$F$f$/$N$,Hs>o$K?I$$!#(B68LC040 33Mhz + NEmacs $B$@$H(B ;; $B!V%T%T%C!W$H$J$j!"2;$N%?%$%_%s%0$ONI$$$N$@$,!"$H$-(B ;; $B$I$-(B 1 $BICJ,$D$$$F$$$1$J$/$J$k!#(BPentium 90Mhz + ;; Mule-2.x$B$@$H!V%T%C!W$H$$$&C12;$K$J$C$F$7$^$&(B... (;_;)$B!#(B (if snd (skk-ding nil 'clink) (ding) (unless (sit-for (setq sec (+ sec 0.16)) 'nodisplay) (next-command-event) (signal 'quit nil)) (ding))))) (unless (sit-for (- 1 sec) 'nodisplay) (next-command-event) (signal 'quit nil)))) (quit (prog2 (setq end (current-time)) (skk-current-date nil nil t) (when kakutei-when-quit (setq skk-kakutei-flag t)) (message "$B7P2a;~4V(B: %s $BIC(B" (skk-time-difference start end)))))))) ;;;###autoload (defun skk-ad-to-gengo (gengo-index &optional divider tail not-gannen) ;; $B@>Nq$r859f$KJQ49$9$k!#%*%W%7%g%J%k0z?t$N(B DIVIDER $B$,;XDj$5$l$F$$$l$P!"G/9f(B ;; $B$H?t;z$N4V$K!"(BTAIL $B$,;XDj$5$l$F$$$l$P!"?t;z$NKvHx$K!"$=$l$>$l$NJ8;zNs$rO"(B ;; $B7k$9$k!#(B ;; $B<-=q8+=P$7Nc(B; ;; $B$;$$$l$-(B#$B$M$s(B /(skk-ad-to-gengo 0 nil "$BG/(B")/(skk-ad-to-gengo 0 " " " $BG/(B")/ (let ((v (skk-ad-to-gengo-1 (string-to-number (car skk-num-list)) not-gannen))) (concat (nth gengo-index (car v)) divider (if (not (stringp (cdr v))) (number-to-string (cdr v)) (cdr v)) tail))) ;;;###autoload (defun skk-ad-to-gengo-1 (ad &optional not-gannen) ;; AD is a number and NOT-GANNEN is a boolean optional ;; arg. ;; return a cons cell of which car is a Gengo list ;; gotten from `skk-gengo-alist', and cdr is a number ;; of year. ;; if NOT-GANNEN is non-nil and calculated year is 1, ;; return a value of which cdr is "$B85(B" (string). (when (>= 1866 ad) (skk-error "$BJ,$j$^$;$s(B" "Unknown year")) (cons (cond ((>= 1911 ad) (setq ad (- ad 1867)) (cdr (assq 'meiji skk-gengo-alist))) ((>= 1925 ad) (setq ad (- ad 1911)) (cdr (assq 'taisho skk-gengo-alist))) ((>= 1988 ad) (setq ad (- ad 1925)) (cdr (assq 'showa skk-gengo-alist))) (t (setq ad (- ad 1988)) (cdr (assq 'heisei skk-gengo-alist)))) (cond (not-gannen ad) ((= ad 1) "$B85(B") (t ad)))) ;;;###autoload (defun skk-gengo-to-ad (&optional head tail) ;; $B859f$r@>Nq$KJQ49$9$k!#%*%W%7%g%J%k0z?t$N(B HEAD, TAIL $B$,;XDj$5$l$F$$(B ;; $B$l$P!"$=$NJ8;zNs$r@hF,!"KvHx$KO"7k$9$k!#(B ;; $B<-=q8+=P$7Nc(B; ;; $B$7$g$&$o(B#$B$M$s(B /(skk-gengo-to-ad "" "$BG/(B")/(skk-gengo-to-ad "" " $BG/(B")/\ ;; (skk-gengo-to-ad "$B@>Nq(B" "$BG/(B")/(skk-gengo-to-ad "$B@>Nq(B" " $BG/(B")/ (save-match-data (when (string-match (car skk-num-list) skk-henkan-key) (let ((v (skk-gengo-to-ad-1 (substring skk-henkan-key 0 (match-beginning 0)) (string-to-number (car skk-num-list))))) (when v (concat head (number-to-string v) tail)))))) ;;;###autoload (defun skk-gengo-to-ad-1 (gengo number) ;; GENGO is a string and NUMBER is a number. ;; return a year (number) equal to GENGO-NUMBER. (+ number (cond ((eq number 0) (skk-error "0 $BG/$O$"$jF@$J$$(B" "Cannot convert 0 year")) ((member gengo '("$B$X$$$;$$(B" "$BJ?@.(B")) 1988) ((member gengo '("$B$7$g$&$o(B" "$B> 64 number) 1925 (skk-error "$B> 15 number) 1911 (skk-error "$BBg@5$O(B 14 $BG/$^$G$G$9(B" "The last year of Taisyo is 14"))) ((member gengo '("$B$a$$$8(B" "$BL@<#(B")) (if (> 45 number) 1867 (skk-error "$BL@<#$O(B 44 $BG/$^$G$G$9(B" "The last year of Meiji is 44"))) (t (skk-error "$BH=JLITG=$J859f$G$9!*(B" "Unknown Gengo!"))))) ;;;###autoload (defun skk-calc (operator) ;; 2 $B$D$N0z?t$rC$9!#>C$9$Y$-8uJd$O(B ;; skk-henkan-list $B$+$iD>@\Cj=P$7$F$$$k$N$G(B delete $B$G$O$J$/(B delq $B$G==J,!#(B (setq skk-henkan-list (delq (nth skk-henkan-count skk-henkan-list) skk-henkan-list)) ;; $BA48uJd$r(B skk-henkan-list $B$KF~$l$k!#(B (while skk-current-search-prog-list (setq skk-henkan-list (skk-nunion skk-henkan-list (skk-search)))) ;; $BITMW$J8uJd$rC$7$?$N$G!"(B ;; skk-henkan-count $B$OuBV$KLa$9!#(B ;; (nth -1 '(A B C)) $B$O!"(BA $B$rJV$9$N$G!"(Bn $B$,Ii$N?t$G$J$$$3$H$r%A%'%C%/(B ;; $B$7$F$*$/I,MW$,$"$k!#(B (if (> skk-henkan-count 0) (setq skk-henkan-count (- skk-henkan-count 1) new-word (nth skk-henkan-count skk-henkan-list)) ;; (1- skk-henkan-count) == -1 $B$K$J$k!#"&%b!<%I$KLa$9!#(B (throw 'next-word 'none))) ;; (throw 'next-word new-word))) ;;;###autoload (defun skk-henkan-face-off-and-remove-itself () ;; skk-insert-new-word-function $B$K%;%C%H$9$k$?$a$N4X?t!#%+%l%s%H%P%C%U%!$N(B ;; $BJQ49ItJ,$,(B Overlay $B$N(B face $BB0@-$K$h$C$FI=<($,JQ99$5$l$F$$$k$N$rLa$7!"$=$N(B ;; $B8e<+J,<+?H$r(B skk-insert-new-word-function $B$+$iH$7!"49;;$r9T$&!#(B NUMBER $B$K$D$$$F(B UNIT-FROM $B$+$i(B UNIT-TO $B$X$N49;;$r9T$&!#(B" (let ((v (assoc unit-to (cdr (assoc unit-from skk-units-alist))))) (when v (concat (number-to-string (* number (cdr v))) (car v))))) (run-hooks 'skk-gadget-load-hook) (provide 'skk-gadget) ;;; skk-gadget.el ends here ddskk-15.2/skk-hint.el0000644000570400056700000001671712074501114014663 0ustar kitamotoopenlab;;; skk-hint.el --- SKK conversion with hints -*- coding: iso-2022-jp -*- ;; Copyright (C) 2001, 2003 Yoshiki Hayashi ;; Author: Yoshiki Hayashi ;; Keywords: japanese ;; This file is part of Daredevil SKK. ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This program is distributed in the hope that it will be useful ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to the ;; Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, ;; MA 02110-1301, USA. ;;; Commentary ;; $B$3$l$O"&%b!<%I$H"'%b!<%I$GFI$_$N@Q=89g(B ($B$_$?$$$J$b$N(B) $B$ruBV$K$J$j$^$9!#(B ;; ;; $B87L)$K@Q=89g$ruBV$K$J$j$^$9!#(B ;; ;; $B$D$^$j!"DL>o$NJQ498uJd$N$J$+$G!"%R%s%H$H$7$FM?$($i$l$?FI$_$r4^$s$@(B ;; $B4A;z$r;}$D$b$N$K8uJd$r9J$j$^$9!#(B ;; ;; -- Tips -- ;; ;; skk-hint.el $B$OC14A;z$N8uJd$,$?$/$5$s$"$k>l9g$K!"$=$3$+$i8uJd$r9J$j(B ;; $B$3$`o$KM-8z$G$9!#Nc$($P(B ;; ;; $B"&$+(B ;; ;; $B$rJQ49$9$k$H!"2c!"2=!"2D!"2!W$K4^$^$l$k(B ;; ;; $B"'2_(B ;; ;; $B$,>e0L$K8=$l$^$9!#(B ;;;Code (eval-when-compile (require 'skk-macs)) (require 'skk-vars) ;; is this necessary? (require 'skk-comp) (defadvice skk-search (around skk-hint-ad activate) ;; skk-current-search-prog-list $B$NMWAG$K$J$C$F$$$k%W%m%0%i%`$rI>2A$7$F!"(B ;; skk-henkan-key $B$r%-!<$K$7$F8!:w$r9T$&!#(B (if (null skk-hint-henkan-hint) ad-do-it (let (l kouho hint) (while (and (null l) skk-current-search-prog-list) (setq l (eval (car skk-current-search-prog-list))) (let ((skk-henkan-key (nth 0 skk-hint-henkan-hint)) (skk-henkan-okurigana (nth 1 skk-hint-henkan-hint)) (skk-okuri-char (nth 2 skk-hint-henkan-hint))) (setq hint (skk-nunion hint (eval (car skk-current-search-prog-list))))) (setq kouho (skk-nunion kouho l)) (setq l (skk-hint-limit kouho hint)) (setq skk-current-search-prog-list (cdr skk-current-search-prog-list))) (setq ad-return-value l)))) (defun skk-hint-setup-hint () (cond ((eq skk-hint-state 'kana) (skk-kana-cleanup t) (let ((hint (buffer-substring-no-properties skk-hint-start-point (point)))) (unless (string= hint "") (setq skk-hint-henkan-hint (list (if skk-katakana (skk-katakana-to-hiragana hint) hint)))))) ((eq skk-hint-state 'okuri) (let ((henkan-key (buffer-substring-no-properties skk-hint-start-point skk-hint-end-point)) (okurigana (buffer-substring-no-properties skk-hint-end-point (point)))) (unless (or (string= henkan-key "") (string= okurigana "")) (when skk-katakana (setq henkan-key (skk-katakana-to-hiragana henkan-key) okurigana (skk-katakana-to-hiragana okurigana))) (setq skk-hint-henkan-hint (list (concat henkan-key skk-hint-okuri-char) okurigana skk-hint-okuri-char))))) (t (skk-error "$BM=4|$7$J$$>uBV$G(B %s $B$,8F$P$l$^$7$?(B" "%s is called from unexpected place" "skk-hint-setup-hint"))) (setq skk-hint-inhibit-kakutei nil)) (defadvice skk-insert (around skk-hint-ad activate) (cond ((and skk-henkan-mode (eq (skk-last-command-char) skk-hint-start-char) (not skk-hint-state)) (skk-with-point-move (when (featurep 'skk-dcomp) (skk-dcomp-before-kakutei)) (setq skk-hint-inhibit-dcomp t) (skk-set-marker skk-hint-start-point (point)) (setq skk-hint-state 'kana skk-hint-inhibit-kakutei t))) ((and (eq skk-hint-state 'kana) (eq (skk-last-command-char) skk-start-henkan-char)) (skk-with-point-move (skk-hint-setup-hint) (delete-region skk-hint-start-point (point)) (setq skk-hint-state 'henkan) (setq skk-henkan-count -1) (setq skk-henkan-list nil) (skk-start-henkan arg))) ((and (eq skk-hint-state 'kana) (memq (skk-last-command-char) skk-set-henkan-point-key)) (skk-with-point-move (setq skk-hint-end-point (point)) (setq skk-hint-state 'okuri) (skk-set-last-command-char (skk-downcase (skk-last-command-char))) (setq skk-hint-okuri-char (skk-char-to-unibyte-string (skk-last-command-char))) (skk-kana-input arg) (when (skk-jisx0208-p (char-before)) (skk-hint-setup-hint) (delete-region skk-hint-start-point (point)) (setq skk-hint-state 'henkan) (setq skk-henkan-count -1) (setq skk-henkan-list nil) (skk-start-henkan arg)))) ((eq skk-hint-state 'okuri) (skk-with-point-move (skk-kana-input arg) (skk-hint-setup-hint) (delete-region skk-hint-start-point (point)) (setq skk-hint-state 'henkan) (setq skk-henkan-count -1) (setq skk-henkan-list nil) (skk-start-henkan arg))) (t ad-do-it))) (defadvice keyboard-quit (before skk-hint-ad activate) (setq skk-hint-inhibit-kakutei nil)) (defadvice abort-recursive-edit (before skk-hint-ad activate) (setq skk-hint-inhibit-kakutei nil)) (defadvice skk-previous-candidate (before skk-hint-ad activate) (when (and (eq skk-henkan-mode 'active) (not (string= skk-henkan-key "")) (zerop skk-henkan-count)) (setq skk-hint-henkan-hint nil skk-hint-state nil)) (setq skk-hint-inhibit-kakutei nil)) (defadvice skk-kakutei (around skk-hint-ad activate) (unless skk-hint-inhibit-kakutei ad-do-it)) (defadvice skk-kakutei-initialize (after skk-hint-ad activate) (setq skk-hint-henkan-hint nil skk-hint-start-point nil skk-hint-state nil skk-hint-inhibit-dcomp nil skk-hint-inhibit-kakutei nil)) (defadvice skk-delete-backward-char (before skk-hint-ad activate) (when (and (markerp skk-hint-start-point) (or (eq (1+ skk-hint-start-point) (point)) (eq skk-hint-start-point (point)))) (setq skk-hint-state nil skk-hint-inhibit-kakutei nil))) (defun skk-hint-member (char kouho) ;; $BJ8;zNs$N%j%9%H(B KOUHO $B$NCf$KJ8;z(B CHAR $B$r4^$`$b$N$,$"$l$P!"$=$NJ8;zNs$rJV$9(B (catch 'found (dolist (word kouho) (let ((length (length word))) (dotimes (i length) (if (eq char (aref word i)) (throw 'found word))))))) (defun skk-hint-limit (kouho hint) ;; $BJQ498uJd(B KOUHO $B$r!"J8;zNs$N%j%9%H(B HINT $B$NCf$N$I$l$+$NJ8;z$,(B ;; $B4^$^$l$F$$$k$b$N$N$_$K@)8B$9$k!#(B (let ((kouho (copy-sequence kouho)) result) (dolist (string hint) (let ((length (length string))) (dotimes (i length) (let (ret) (when (setq ret (skk-hint-member (aref string i) kouho)) (unless (eq (aref string i) ?\;) (setq result (cons ret result)) (delete ret kouho))))))) (nreverse result))) (provide 'skk-hint) ;;; Local Variables: ;;; End: ;;; skk-hint.el ends here ddskk-15.2/skk-inline.el0000644000570400056700000001546612203417201015174 0ustar kitamotoopenlab;;; skk-inline.el --- Inline candidate display support for SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 2005 Masatake YAMATO ;; Copyright (C) 2007 IRIE Tetsuya ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'cl) (require 'skk-vars) (require 'skk-macs)) ;; Functions. (defun skk-add-background-color (string color) "STRING $B$N$&$AGX7J?'$,;XDj$5$l$F$$$J$$J8;z$K8B$C$F(B COLOR $B$NGX7J?'$r(B $BE,MQ$9$k!#(B" (when (eval-when-compile (featurep 'emacs)) (when (and string color (color-defined-p color)) (let ((start 0) (end 1) (len (length string)) orig-face) (while (< start len) (setq orig-face (get-text-property start 'face string)) (while (and (< end len) (eq orig-face (get-text-property end 'face string))) (incf end)) (cond ((not orig-face) (put-text-property start end 'face `(:background ,color) string)) ;; ((and (facep orig-face) (not (face-background orig-face))) (put-text-property start end 'face `(:inherit ,orig-face :background ,color) string)) ;; ((and (listp orig-face) (not (plist-get (get-text-property start 'face string) :background)) (not (and (plist-get (get-text-property start 'face start) :inherit) (face-background (plist-get (get-text-property start 'face start) :inherit))))) (put-text-property start end 'face (cons `(:background ,color) orig-face) string))) (setq start (max (1+ start) end) end (1+ start))))) string)) ;;;###autoload (defun skk-inline-show (str face &optional vertical-str text-max-height) (skk-delete-overlay skk-inline-overlays) (if (and (eq 'vertical skk-show-inline) ;; window $B$,8uJd72$rI=<($G$-$k9b$5$,$"$k$+%A%'%C%/(B (stringp vertical-str) (integerp text-max-height) (< (1+ text-max-height) (skk-window-body-height))) (skk-inline-show-vertically vertical-str face) (skk-inline-show-horizontally str face))) (defun skk-inline-show-horizontally (string face) (unless (skk-in-minibuffer-p) (let ((ol (make-overlay (point) (point))) (base-ol (make-overlay (point) (1+ (point))))) (overlay-put base-ol 'face 'default) (push base-ol skk-inline-overlays) (push ol skk-inline-overlays) (when face (setq string (propertize string 'face face))) (when skk-inline-show-background-color (setq string (skk-add-background-color string skk-inline-show-background-color))) (overlay-put ol 'after-string string)))) (defun skk-inline-show-vertically (string face) (unless (skk-in-minibuffer-p) (let* ((margin 2) ;; XXX beg-col $B$,(B -1 $B$K$J$C$F(B `make-string' $B$G%(%i!<$K$J$k(B ;; $B>l9g$"$j(B ? (beg-col (max 0 (- (skk-screen-column) margin))) (candidates (split-string string "\n")) (max-width (skk-max-string-width candidates)) (i 0) bottom col ol invisible) (dolist (str candidates) (setq str (concat (when (/= 0 i) (make-string margin ? )) str (make-string (+ (- max-width (string-width str)) margin) ? ))) (when face (setq str (propertize str 'face face))) (when skk-inline-show-background-color (setq str (skk-add-background-color str (if (zerop (mod i 2)) skk-inline-show-background-color skk-inline-show-background-color-odd)))) (save-excursion (scroll-left (max 0 (- (+ beg-col margin max-width margin 1) (window-width) (window-hscroll)))) (unless (zerop (window-hscroll)) (setq beg-col (save-excursion (goto-char skk-henkan-start-point) (- (current-column) margin)))) (case i (0 (setq col (skk-screen-column))) (t (setq bottom (> i (vertical-motion i))) (cond (bottom ;; $B%P%C%U%!:G=*9T$G$OIaDL$K(B overlay $B$rDI2C$7$F$$$/J}K!$@(B ;; $B$H(B overlay $B$NI=<($5$l$k=gHV$,68$&$3$H$,$"$C$F$&$^$/$J(B ;; $B$$!#$7$?$,$C$FA02s$N(B overlay $B$N(B after-string $B$KDI2C$9(B ;; $B$k!#(B (setq ol (cond ((< (overlay-end (car skk-inline-overlays)) (point)) (make-overlay (point) (point))) (t (pop skk-inline-overlays)))) (setq str (concat (overlay-get ol 'after-string) "\n" (make-string beg-col ? ) str))) (t (setq col (skk-move-to-screen-column beg-col)) (cond ((> beg-col col) ;; $B7e9g$o$;$N6uGr$rDI2C(B (setq str (concat (make-string (- beg-col col) ? ) str))) ;; overlay $B$N:8C<$,%^%k%AI}J8;z$H=E$J$C$?$H$-$NHyD4@0(B ((< beg-col col) (backward-char) (setq col (skk-screen-column)) (setq str (concat (make-string (- beg-col col) ? ) str)))))))) ;; $B$3$N;~E@$G(B overlay $B$N3+;O0LCV$K(B point $B$,$"$k(B (unless bottom (let ((ol-beg (point)) (ol-end-col (+ col (string-width str))) base-ol) (setq col (skk-move-to-screen-column ol-end-col)) ;; overlay $B$N1&C<$,%^%k%AI}J8;z$H=E$J$C$?$H$-$NHyD4@0(B (when (< ol-end-col col) (setq str (concat str (make-string (- col ol-end-col) ? )))) (setq ol (make-overlay ol-beg (point))) ;; $B85%F%-%9%H$N(B face $B$r7Q>5$7$J$$$h$&$K(B1$B$D8e$m$K(B overlay ;; $B$r:n$C$F!"$=$N(B face $B$r(B 'default $B$K;XDj$7$F$*$/(B (setq base-ol (make-overlay (point) (1+ (point)))) (overlay-put base-ol 'face 'default) (push base-ol skk-inline-overlays) ;; $B8uJd$,2D;k$+$I$&$+%A%'%C%/(B (unless (pos-visible-in-window-p (point)) (setq invisible t))))) (overlay-put ol 'invisible t) (overlay-put ol 'after-string str) (push ol skk-inline-overlays) (incf i)) (when (or invisible (and bottom (> (1+ (* 7 skk-henkan-show-candidates-rows)) (- (skk-window-body-height) (count-screen-lines (window-start) (point)))))) (recenter (- (1+ (* 7 skk-henkan-show-candidates-rows)))))))) (provide 'skk-inline) ;;; skk-inline.el ends here ddskk-15.2/skk-isearch.el0000644000570400056700000007337312235106721015344 0ustar kitamotoopenlab;;; skk-isearch.el --- isearch mode for SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999 ;; Enami Tsugutomo ;; Author: Enami Tsugutomo ;; Maintainer: SKK Development Team ;; Version: $Id: skk-isearch.el,v 1.80 2013/11/02 05:29:53 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/11/02 05:29:53 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; Hook functions are defined in skk-setup.el. ;; ;; 1. always invoke skk isearch. ;; ;; (setq skk-isearch-mode-enable 'always) ;; ;; 2. invoke only if skk-mode is on. ;; ;; (setq skk-isearch-mode-enable t) ;; ;; 3. invoke if current buffer has japanese characters. ;; ... ;; ;; skk-isearch-initial-mode examine the variable of skk before calling ;; skk-mode. ;;; Code: (eval-when-compile (require 'cl) (require 'skk-macs)) (require 'skk) (require 'skk-vars) ;; interface to skk.el ;; (defsubst skk-isearch-turn-off-skk-mode () "Turn off skk mode." (let ((skk-use-color-cursor nil)) (skk-mode 0))) (defsubst skk-isearch-turn-on-skk-mode () "Turn on skk mode." (let ((skk-use-color-cursor nil)) (skk-mode 1))) (defsubst skk-isearch-conversion-active-p () "Non-nil if skk conversion is active." skk-henkan-mode) (defsubst skk-isearch-conversion-start () "Point where conversion is start. Includes skk marker." (1- skk-henkan-start-point)) (defsubst skk-isearch-skk-kakutei () "Perform kakutei." (let ((skk-use-color-cursor nil)) (skk-kakutei))) (defsubst skk-isearch-skk-hiragana-mode-p () "Non-nil if skk is hiragana input mode." (and (not skk-katakana) skk-j-mode)) (defsubst skk-isearch-skk-turn-on-hiragana-mode () "Set current skk mode to hiragana input mode." (let ((skk-use-color-cursor nil)) (skk-j-mode-on))) (defsubst skk-isearch-skk-katakana-mode-p () "Non-nil if skk is katakana input mode." (and skk-j-mode skk-katakana)) (defsubst skk-isearch-skk-turn-on-katakana-mode () "Set current skk mode to katakana input mode." (let ((skk-use-color-cursor nil)) (skk-j-mode-on 'katakana))) (defsubst skk-isearch-skk-jisx0208-latin-mode-p () "Non-nil if skk is jisx0208 latin (zenkaku) input mode." skk-jisx0208-latin-mode) (defsubst skk-isearch-skk-abbrev-mode-p () "Non-nil if skk is Abbrev mode." skk-abbrev-mode) (defsubst skk-isearch-skk-turn-on-jix0208-latin-mode () "Set current skk mode to jisx0208 latin (zenkaku) input mode." (let ((skk-use-color-cursor nil)) (skk-jisx0208-latin-mode-on))) (defsubst skk-isearch-skk-turn-on-latin-mode () "Set current skk mode to normal latin input mode." (let ((skk-use-color-cursor nil)) (skk-latin-mode-on))) (defun skk-isearch-buffer-string () (if (and skk-echo skk-prefix) (concat (buffer-string) skk-prefix) (buffer-string))) ;;;###autoload (defun skk-isearch-message () "Show isearch message." (skk-isearch-incomplete-message (if (string= skk-prefix "") (skk-char-to-unibyte-string (skk-last-command-char)) skk-prefix))) (defun skk-isearch-current-mode () "Return the symbolic current mode of skk for skk-isearch." (cond ((not skk-mode) nil) ((skk-isearch-skk-katakana-mode-p) 'katakana) ((skk-isearch-skk-hiragana-mode-p) 'hiragana) ((skk-isearch-skk-jisx0208-latin-mode-p) 'jisx0208-latin) ((skk-isearch-skk-abbrev-mode-p) 'abbrev) (t 'latin))) (defun skk-isearch-set-initial-mode (mode) "Set up the initial condition according to given symbolic MODE. The MODE should be canonical." ;; following code is highly depends on internal of skk. ;; (skk-isearch-turn-on-skk-mode) ;; (skk-isearch-skk-kakutei) (case mode (hiragana (skk-isearch-skk-turn-on-hiragana-mode)) (katakana (skk-isearch-skk-turn-on-katakana-mode)) (jisx0208-latin (skk-isearch-skk-turn-on-jix0208-latin-mode)) (latin (skk-isearch-skk-turn-on-latin-mode)) (t (skk-isearch-turn-off-skk-mode)))) (defun skk-isearch-symbolic-mode (mode) "Return symbolic skk isearch mode for given numerical MODE." (car (rassq mode skk-isearch-mode-canonical-alist))) (defun skk-isearch-numerical-mode (mode) "Return numerical skk isearch mode for given symbolic MODE." (cdr (assq mode skk-isearch-mode-canonical-alist))) (defun skk-isearch-mode-string () "Return the current skk mode string for prompting." (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (cdr (assq (skk-isearch-current-mode) skk-isearch-mode-string-alist)))) (defun skk-isearch-current-numerical-mode () "Return the symbolic skk isearch mode according to the current skk internal condition." (skk-isearch-numerical-mode (or (skk-isearch-current-mode) 'latin))) (defun skk-isearch-canonical-start-mode (mode) "Canonicalize the symbolic skk isearch MODE." ;; alias, canonical, or error. (cond ((cdr (rassq mode skk-isearch-mode-alias-alist))) ((cdr (assq mode skk-isearch-mode-alias-alist))) ((skk-isearch-numerical-mode mode) mode) (t (error "Unknown skk-isearch-start-mode: %s" mode)))) (defun skk-isearch-initial-mode () "Return a symbol that represents a skk-isearch mode name. It is used to initialize the working buffer." (cond ((and skk-isearch-use-previous-mode skk-isearch-mode) ;; use the mode when last isearch is done. note that the ;; `skk-isearch-mode' is numerical, so convert it to symbolic ;; mode. (skk-isearch-symbolic-mode skk-isearch-mode)) (skk-isearch-start-mode ;; always start with the specified mode. ;; `skk-isearch-start-mode' is symbolic. (skk-isearch-canonical-start-mode skk-isearch-start-mode)) (skk-isearch-state ;; after `isearch-edit-string'. skk-isearch-state) ;; guess the current buffer. note that if skk-mode is off, ;; skk-isearch-current-mode returns symbol `nil' and control ;; falls through to next cond clause. ((skk-isearch-current-mode)) ;; skk-mode is off in this buffer. (t skk-isearch-initial-mode-when-skk-mode-disabled))) (defun skk-isearch-initialize-working-buffer () "Initialize the current buffer as working buffer for skk isearch. More precicely, turn on skk-mode, put into kana mode, make sure kakutei'ed and erase the buffer contents." (skk-isearch-turn-on-skk-mode) (skk-isearch-skk-kakutei) (make-local-variable 'skk-dcomp-activate) (setq skk-dcomp-activate nil) (erase-buffer)) ;;;###autoload (defun skk-isearch-mode-setup () "hook function called when skk isearch begin." ;; setup working buffer. initial skk mode for isearch should be ;; determined in the original buffer and set in working buffer. (let ((initial (skk-isearch-initial-mode))) (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (skk-erase-prefix 'clean) (skk-isearch-initialize-working-buffer) (skk-isearch-set-initial-mode initial))) ;; setup variables and keymap (unless (keymapp skk-isearch-mode-map) (cond ((eval-when-compile (featurep 'xemacs)) (setq skk-isearch-mode-map (skk-isearch-setup-keymap (make-keymap))) (set-keymap-parents skk-isearch-mode-map isearch-mode-map)) (t (setq skk-isearch-mode-map (skk-isearch-setup-keymap (cons 'keymap isearch-mode-map)))))) (set skk-isearch-overriding-local-map skk-isearch-mode-map) ;; Input Method $B$H$7$F(B SKK $B$r;H$C$F$$$k>l9g$NBP:v(B (when (eval-when-compile (featurep 'emacs)) (when (and current-input-method (string-match "^japanese-skk" current-input-method)) (let* ((method current-input-method) (func (if (string= "japanese-skk" method) 'skk-inactivate 'skk-auto-fill-inactivate))) (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (unless current-input-method (skk-set-deactivate-im-func func) (setq current-input-method method)))))) ;; skk-isearch $B$N>uBV$rI=$9FbItJQ?t$N@_Dj(B (setq skk-isearch-switch t) (setq skk-isearch-in-editing nil) (setq skk-isearch-current-buffer (current-buffer)) ;; (setq skk-isearch-incomplete-message "" ;; set skk-isearch-message non-nil to call skk-isearch-message. skk-isearch-message "") (skk-isearch-mode-message) (skk-isearch-incomplete-message)) ;;;###autoload (defun skk-isearch-mode-cleanup () "Hook function called when skk isearch is done." ;; remember the current skk mode for next use. (let ((mode (skk-current-input-mode))) (when skk-isearch-use-previous-mode (setq skk-isearch-mode (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (skk-isearch-current-numerical-mode)))) ;; reset the overrinding-local-map. (set skk-isearch-overriding-local-map nil) (setq skk-isearch-message nil skk-isearch-last-mode-string "" skk-isearch-last-mode-regexp "") ;; $B%5!<%ACf$KF~NO%b!<%I$rJQ99$7$?$i!"%b!<%I%i%$%s$NI=<($b$=$l$K=>$$(B ;; $BJQ99$5$l$k$N$G!"%+%l%s%H%P%C%U%!$NF~NO%b!<%I$H%b!<%I%i%$%s$NI=<((B ;; $B$H$,(B sync $B$7$J$/$J$k!#=>$$!"%5!<%A$,=*N;$7$?:]!"%b!<%I%i%$%s$r%+(B ;; $B%l%s%H%P%C%U%!$NF~NO%b!<%I$H(B sync $B$5$;$k!#(B (case mode (hiragana (skk-j-mode-on)) (katakana (skk-j-mode-on t)) (abbrev (skk-abbrev-mode-on)) (latin (skk-latin-mode-on)) (jisx0208-latin (skk-jisx0208-latin-mode-on)))) ;; Input Method $B$H$7$F(B SKK $B$r;H$C$F$$$k>l9g$NBP:v(B (when (eval-when-compile (featurep 'emacs)) (when (string-match "^japanese-skk" (format "%s" default-input-method)) (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (skk-deactivate-input-method)))) ;; skk-isearch $B$N>uBV$rI=$9FbItJQ?t$N@_Dj(B (setq skk-isearch-switch nil) (unless skk-isearch-in-editing (setq skk-isearch-state nil)) (setq skk-isearch-current-buffer nil) ;; (skk-remove-minibuffer-setup-hook 'skk-j-mode-on 'skk-setup-minibuffer 'skk-add-skk-pre-command)) (defun skk-isearch-incomplete-message (&optional prefix) "Show message when kana kanji conversion is in progress. Optional argument PREFIX is appended if given." (let ((isearch-message (concat isearch-message skk-isearch-incomplete-message prefix))) (isearch-message))) ;; ;; define keymap ;; (defun skk-isearch-find-keys-define (map commands command) ;; COMMANDS $B$N$$$:$l$+$K%P%$%s%I$5$l$F$$$k%-!<$rA4$FD4$Y$k!#(B ;; skk-isearh $B$NCf$G$=$l$i$N%-!<$r(B COMMAND $B$K%P%$%s%I$9$k!#(B (let (prefs) (dolist (c commands) (dolist (key (where-is-internal c (current-global-map))) (when (and (= (length key) 2) (not (member (aref key 0) prefs))) (define-key map (vector (aref key 0)) (make-sparse-keymap)) (push (aref key 0) prefs)) (when (<= (length key) 2) (define-key map key command)))))) ;; XXX should be more generic (defun skk-isearch-setup-keymap (map) ;; printable chars. (do ((c ?\040 (1+ c))) ((>= c ?\177)) (define-key map (skk-char-to-unibyte-string c) 'skk-isearch-wrapper)) (when skk-j-mode-function-key-usage (define-key map [f1] 'skk-isearch-wrapper) (define-key map [f2] 'skk-isearch-wrapper) (define-key map [f3] 'skk-isearch-wrapper) (define-key map [f4] 'skk-isearch-wrapper) (define-key map [f5] 'skk-isearch-wrapper) (define-key map [f6] 'skk-isearch-wrapper) (define-key map [f7] 'skk-isearch-wrapper) (define-key map [f8] 'skk-isearch-wrapper) (define-key map [f9] 'skk-isearch-wrapper) (define-key map [f10] 'skk-isearch-wrapper)) ;; control chars for skk. (define-key map "\C-g" 'skk-isearch-keyboard-quit) (define-key map skk-kakutei-key 'skk-isearch-newline) (define-key map "\C-m" 'skk-isearch-exit) (dolist (key skk-previous-candidate-keys) (define-key map key 'skk-isearch-wrapper)) ;; C-x map for skk. (define-key map "\C-x" (make-sparse-keymap)) ;; Keys for `skk-isearch-skk-mode'. (let ((commands '(skk-mode skk-auto-fill-mode))) (unless (eval-when-compile (featurep 'xemacs)) (when (string-match "^japanese-skk" (format "%s" default-input-method)) (push 'toggle-input-method commands))) (skk-isearch-find-keys-define map commands 'skk-isearch-skk-mode)) (unless (eval-when-compile (featurep 'xemacs)) ;; XEmacs $B$K$O$J$$%3%^%s%I(B (if (fboundp 'isearch-other-control-char) ;2013-10-08 Remove functions (define-key map [?\C-x t] 'isearch-other-control-char)) ; GNU Emacs 24.4 $B$+$iGQ;_(B (define-key map [?\C-0] 'skk-isearch-start-henkan) (define-key map [?\C-1] 'skk-isearch-start-henkan) (define-key map [?\C-2] 'skk-isearch-start-henkan) (define-key map [?\C-3] 'skk-isearch-start-henkan) (define-key map [?\C-4] 'skk-isearch-start-henkan) (define-key map [?\C-5] 'skk-isearch-start-henkan) (define-key map [?\C-6] 'skk-isearch-start-henkan) (define-key map [?\C-7] 'skk-isearch-start-henkan) (define-key map [?\C-8] 'skk-isearch-start-henkan) (define-key map [?\C-9] 'skk-isearch-start-henkan) (define-key map [?\M-0] 'skk-isearch-start-henkan) (define-key map [?\M-1] 'skk-isearch-start-henkan) (define-key map [?\M-2] 'skk-isearch-start-henkan) (define-key map [?\M-3] 'skk-isearch-start-henkan) (define-key map [?\M-4] 'skk-isearch-start-henkan) (define-key map [?\M-5] 'skk-isearch-start-henkan) (define-key map [?\M-6] 'skk-isearch-start-henkan) (define-key map [?\M-7] 'skk-isearch-start-henkan) (define-key map [?\M-8] 'skk-isearch-start-henkan) (define-key map [?\M-9] 'skk-isearch-start-henkan)) ;; Keys for `skk-isearch-delete-char'. (let ((commands '(backward-delete-char-untabify backward-delete-char backward-or-forward-delete-char delete-backward-char))) (skk-isearch-find-keys-define map commands 'skk-isearch-delete-char)) ;; map) ;; ;; wrapper functions ;; (defun skk-isearch-redo-function () "Execute the command of given key sequence in skk environment." ;; with saving value of old binding. (let ((local-map (symbol-value skk-isearch-overriding-local-map))) (unwind-protect (progn ;; temporarily disable the overriding-local-map. this ;; should be done in ther buffer isearch is performed, i.e., ;; before entering skk-isearch-working-buffer. (set skk-isearch-overriding-local-map nil) ;; don't change the current buffer during save/restore the ;; overriding-local-map, because it is buffer local in some ;; version of emacs. (with-current-buffer (get-buffer-create skk-isearch-working-buffer) ;; listify this-command-keys. this works only if it is ;; string. (setq unread-command-events (append (if (zerop (length (this-command-keys))) (list last-command-event) (this-command-keys)) nil)) (condition-case error ;; setup last-command-event and this-command because ;; some command refers them. (let* ((keys (read-key-sequence nil)) (this-command (key-binding keys)) ;; $BD>8e$N(B command-execute() $B$K$F!"(Bskk-insert() $B7PM3$G(B ;; skk-dcomp-multiple-show() $B$, start 1) (prog1 (buffer-substring 1 start) (delete-region 1 start))))) ;; a conversion is in progress ((not (string= skk-prefix "")) nil) ;;(skk-current-rule-tree nil) ;; whole string in the buffer is fixed. ((not (zerop (buffer-size))) (prog1 (skk-isearch-buffer-string) (erase-buffer)))) ;; update incomplete-message with contents of working buffer. (setq skk-isearch-incomplete-message (skk-isearch-buffer-string)) ;; update echo area. (skk-isearch-incomplete-message)))) ;; ;; regexp search supports. ;; (defun skk-isearch-last-char (string) (when (string-match ".\\'" string) (string-to-char (substring string (match-beginning 0))))) (defun skk-isearch-breakable-p (char) (and char (funcall skk-isearch-breakable-character-p-function char))) (defun skk-isearch-search-string-regexp (string) (if isearch-regexp (do ((prev (skk-isearch-last-char isearch-string) (car chars)) (result "" (concat result (char-to-string (car chars)))) (chars (string-to-list string) (cdr chars))) ((null chars) result) (when (and (skk-isearch-breakable-p prev) (skk-isearch-breakable-p (car chars))) (setq result (concat result skk-isearch-whitespace-regexp)))) ;; else string)) (defun skk-isearch-mode-message () "Prepend the skk isearch mode string to `isearch-message'. If the current mode is different from previous, remove it first." (let ((mode-string (skk-isearch-mode-string))) (unless (string= mode-string skk-isearch-last-mode-string) (if (string-match skk-isearch-last-mode-regexp isearch-message) (setq isearch-message (substring isearch-message (match-end 0)))) (setq skk-isearch-last-mode-string mode-string skk-isearch-last-mode-regexp (concat "^" (regexp-quote mode-string))) (setq isearch-message (concat mode-string isearch-message))))) (defun skk-isearch-process-search-string (string) (isearch-process-search-string (skk-isearch-search-string-regexp string) string)) ;; ;; interactive functions. ;; (defun skk-isearch-delete-char (&rest args) (interactive "P") (unless (with-current-buffer (get-buffer-create skk-isearch-working-buffer) ;; following code is highly depends on internal of skk. (when (skk-isearch-conversion-active-p) (prog1 t (cond ((save-excursion (ignore-errors (goto-char (point-max))) (>= skk-henkan-start-point (point))) (setq skk-henkan-count 0) (skk-kakutei) (isearch-message)) ((and (eq skk-henkan-mode 'active) skk-delete-implies-kakutei) (if (eq skk-delete-implies-kakutei 'dont-update) (let ((skk-update-jisyo-function #'ignore)) (skk-kakutei)) (skk-kakutei)) (delete-char -1) (setq isearch-string (concat isearch-string (skk-isearch-buffer-string)) isearch-message (concat (skk-isearch-mode-string) (mapconcat #'isearch-text-char-description isearch-string ""))) (isearch-push-state) (isearch-update) (erase-buffer)) (t (cond ((eq skk-henkan-mode 'active) ;; In this case, `skk-delete-implies-kakutei' is nil. (skk-previous-candidate)) ((string= skk-prefix "") ;; now, we can't pass the universal argument within ;; the isearch-mode. so hard code the value `1'. (delete-char -1)) (t (skk-erase-prefix 'clean))) (setq skk-isearch-incomplete-message (skk-isearch-buffer-string)) (skk-isearch-incomplete-message)))))) ;; isearch-cmds ... Stack of search status sets. ;; '(["test" "test" 198 198 t 194 nil nil nil 192 t nil] ;; ["tes" "tes" 197 197 t 194 nil nil nil 192 t nil] ;; ["te" "te" 196 196 t 194 nil nil nil 192 t nil] ;; ["t" "t" 195 195 t 194 nil nil nil 192 t nil] ;; ["" "" 192 t t nil nil nil nil 192 t nil]) ;; or ;; '([cl-struct-isearch--state "test" "[aa] test" 196 196 t ..] ;; [cl-struct-isearch--state "tes" "[aa] tes" 195 195 t ..] ;; [cl-struct-isearch--state "te" "[aa] te" 102 102 t ..] ;; [cl-struct-isearch--state "t" "[aa] t" 92 92 t ..] ;; [cl-struct-isearch--state "" "[$B$+(B] " 78 t t ..] (let* ((cmd (nth 1 isearch-cmds)) (oldmsg (cond ((null cmd) "") ((stringp (aref cmd 0)) (aref cmd 1)) ; GNU Emacs 24.2 $B$^$G(B (t (aref cmd 2)))) ; GNU Emacs 24.3 $B$+$i(B (prompt (skk-isearch-mode-string)) newmsg) (unless (or (null cmd) (string-match (concat "^" (regexp-quote prompt)) oldmsg)) ;; `skk-isearch-delete-char' $B$,8F$P$l$kA0$K(B `skk-isearch-working-buffer' ;; $BFb$N%b!<%I$,@Z$jBX$($i$l$F$$$?>l9g!"(B isearch-cmds $B$NBh(B 2 $BMWAG$K$D$$(B ;; $B$F!"(B messege $B$NFbMF$r(B update $B$7$J$$$H(B [DEL] $B$7$?$H$-$N%b!<%I$NI=<($,(B ;; $B$*$+$7$/$J$k!#(B (do ((alist skk-isearch-mode-string-alist (cdr alist)) (msg nil (when (string-match (concat "^" (regexp-quote (cdar alist))) oldmsg) (substring oldmsg (match-end 0))))) ((or msg (null alist)) (setq newmsg (concat prompt (or msg oldmsg))) (if (stringp (aref cmd 0)) (aset cmd 1 newmsg) ;GNU Emacs 24.2 $B$^$G(B (aset cmd 2 newmsg)) ;GNU Emacs 24.3 $B$+$i(B )))) (isearch-delete-char))) (defun skk-isearch-kakutei (isearch-function) "Special wrapper for skk-kakutei or newline." (if (with-current-buffer (get-buffer-create skk-isearch-working-buffer) ;; following code is highly depends on internal of skk. (when (skk-isearch-conversion-active-p) (prog1 t (skk-isearch-skk-kakutei)))) (skk-isearch-process-search-string (skk-isearch-search-string)) (funcall isearch-function))) (defun skk-isearch-exit (&rest args) (interactive "P") (skk-isearch-kakutei #'isearch-exit)) (defun skk-isearch-newline (&rest args) (interactive "P") ;; following code is highly depends on internal of skk. (cond ((with-current-buffer (get-buffer-create skk-isearch-working-buffer) (when (memq (skk-isearch-current-mode) '(latin jisx0208-latin nil)) (prog1 t ;; if the working buffer is latin or jisx0208-latin ;; mode, default behaviour of C-j is set current mode ;; to kana mode. (skk-isearch-turn-on-skk-mode) (skk-isearch-mode-message)))) (isearch-message)) ((event-to-character last-command-event) (skk-isearch-kakutei #'isearch-printing-char)) (t (skk-isearch-mode-message) (isearch-message)))) ;;;###autoload (defun skk-isearch-skk-mode (&rest args) (interactive "P") (skk-isearch-redo-function) (isearch-message)) (defun skk-isearch-keyboard-quit (&rest args) (interactive "P") (condition-case () (progn (skk-isearch-redo-function) ;; update echo area message. (skk-isearch-search-string)) (quit (isearch-abort)))) (defun skk-isearch-wrapper (&rest args) (interactive "P") (skk-isearch-redo-function) (skk-isearch-wrapper-1)) (defun skk-isearch-wrapper-1 () (let ((string (skk-isearch-search-string))) (when string ; nil means on the way to converting to kanji. ;; with saving value of old binding... (let ((local-map (symbol-value skk-isearch-overriding-local-map)) (current-buffer (current-buffer))) ;; because the overrinding local map may be buffer local, keep the ;; current buffer, but we can't use save-excursion. ... (unwind-protect (progn (set skk-isearch-overriding-local-map isearch-mode-map) (let ((command (key-binding string))) (cond ((not (commandp command)) ;; just search literally. (skk-isearch-process-search-string string)) ;; internationalized isearch.el ((fboundp 'isearch-process-search-multibyte-characters) ;; internationalized isearch.el binds all ;; multibyte characters to `isearch-printing-char'. (skk-isearch-process-search-string string)) ;; non internationalized isearch.el (t (command-execute command))))) ;; restore the overriding local map. (set-buffer current-buffer) (set skk-isearch-overriding-local-map local-map)))))) (defun skk-isearch-start-henkan (&optional digit last-event) "skk-isearch $B$N"&%b!<%I$GJQ49$r3+;O$9$k!#(B $B$3$N%3%^%s%I$O(B digit-argument $B$N(B 0-9 $B$KBP1~$9$k%-!<$K3d$jEv$F$i$l$k!#(B $BJQ49$K$O(B skk-search-prog-list $B$NBe$o$j$K(B skk-search-prog-list-{0-9} $B$,;2>H$5$l$k!#(B" (interactive) (let ((digit (or digit (- (logand (skk-last-command-char) ?\177) ?0))) (event (next-command-event nil (skk-isearch-incomplete-message)))) (cond ((equal event (character-to-event ?\ )) ;; XEmacs $B$G$O(B eq $B$K$O$J$i$J$$(B (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (when (eq skk-henkan-mode 'on) (skk-bind-last-command-char skk-start-henkan-char (skk-start-henkan 1 digit)))) (skk-isearch-mode-message) (skk-isearch-wrapper-1)) (t (cond ((eval-when-compile (featurep 'xemacs)) (let ((search-nonincremental-instead nil)) (isearch-exit)) (skk-unread-event last-event) ;; XXX $B$J$<(B 2 $B2s(B unread $B$9$k(B...? (skk-unread-event event) (skk-unread-event event)) (t (skk-unread-event event) (if (fboundp 'isearch-other-control-char) ; 2013-10-08 Remove functions. (isearch-other-control-char))) ; GNU Emacs 24.4 $B$+$iGQ;_(B ))))) ;; ;; advices. ;; (defadvice isearch-repeat (after skk-isearch-ad activate compile) "`isearch-message' $B$rE,@Z$K@_Dj$9$k!#(B" (when skk-isearch-switch (unless (string-match (concat "^" (regexp-quote (skk-isearch-mode-string))) isearch-message) (setq isearch-message (concat (skk-isearch-mode-string) (mapconcat #'isearch-text-char-description isearch-string ""))) (setq isearch-cmds (cdr isearch-cmds)) (isearch-push-state) (isearch-update)) ;; (when isearch-regexp (let ((regexp (regexp-quote (mapconcat 'isearch-text-char-description skk-isearch-whitespace-regexp "")))) (when (string-match regexp isearch-message) (setq isearch-message (replace-regexp-in-string regexp "" isearch-message)) (setq isearch-cmds (cdr isearch-cmds)) (isearch-push-state) (isearch-update)))))) (defadvice isearch-edit-string (before skk-isearch-ad activate compile) "`isearch-message' $B$rE,@Z$K@_Dj$9$k!#(B" (when skk-isearch-switch (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (setq skk-isearch-state (skk-isearch-current-mode)) (setq skk-isearch-in-editing t)) (when (string-match (concat "^" (regexp-quote (skk-isearch-mode-string))) isearch-message) (setq isearch-message (substring isearch-message (match-end 0)))))) (defadvice isearch-search (before skk-isearch-ad activate compile) "`isearch-message' $B$rE,@Z$K@_Dj$9$k!#(B" (when skk-isearch-switch (unless (or isearch-nonincremental (string-match (concat "^" (regexp-quote (skk-isearch-mode-string))) isearch-message)) (setq isearch-message (concat (skk-isearch-mode-string) (mapconcat 'isearch-text-char-description isearch-string "")))))) (when (eval-when-compile (featurep 'xemacs)) (defadvice digit-argument (around skk-isearch activate) "isearch $BFb$G(B digit-argument $B$r3hMQ$G$-$k$h$&D4@0$9$k!#(B" (if (and skk-isearch-switch (with-current-buffer skk-isearch-working-buffer (eq skk-henkan-mode 'on))) (let* ((event last-command-event) (key (and (key-press-event-p event) (event-key event))) (digit (and key (characterp key) (>= key ?0) (<= key ?9) (- key ?0)))) (skk-isearch-start-henkan digit event)) ad-do-it))) ;;; This advice will be enabled before skk-isearch is loaded. ;;;###autoload (defconst skk-isearch-really-early-advice (lambda () (defadvice isearch-message-prefix (around skk-isearch-ad activate) (let ((current-input-method (unless (and (boundp 'skk-isearch-switch) skk-isearch-switch) current-input-method))) ad-do-it)) (defadvice isearch-toggle-input-method (around skk-isearch-ad activate) ;; Needed for calling skk-isearch via isearch-x. (cond ((string-match "^japanese-skk" (format "%s" default-input-method)) (let ((skk-isearch-initial-mode-when-skk-mode-disabled 'latin)) (skk-isearch-mode-setup) (skk-isearch-skk-mode))) ((null default-input-method) ad-do-it (when (string-match "^japanese-skk" (format "%s" default-input-method)) (let ((skk-isearch-initial-mode-when-skk-mode-disabled 'latin)) (skk-isearch-mode-setup)) (skk-deactivate-input-method))) (t ad-do-it))))) ;;;###autoload (unless (featurep 'xemacs) (define-key isearch-mode-map [(control \\)] 'isearch-toggle-input-method) (cond ((and (featurep 'advice) (assq 'skk-isearch-ad (assq 'around (ad-get-advice-info 'isearch-toggle-input-method)))) ;; Already advised. nil) ((locate-library "advice") ;; Advise now. (funcall skk-isearch-really-early-advice)) (t ;; Emacs 21 loads "leim-list" files before `load-path' is prepared. (add-hook 'before-init-hook skk-isearch-really-early-advice)))) (put 'digit-argument 'isearch-command t) (if (fboundp 'isearch-other-control-char) ; 2013-10-08 Remove functions (put 'isearch-other-control-char 'isearch-command t)) ; GNU Emacs 24.4 $B$+$iGQ;_(B (put 'skk-isearch-delete-char 'isearch-command t) (put 'skk-isearch-exit 'isearch-command t) (put 'skk-isearch-keyboard-quit 'isearch-command t) (put 'skk-isearch-newline 'isearch-command t) (put 'skk-isearch-skk-mode 'isearch-command t) (put 'skk-isearch-start-henkan 'isearch-command t) (put 'skk-isearch-wrapper 'isearch-command t) (provide 'skk-isearch) ;;; skk-isearch.el ends here ddskk-15.2/skk-jisx0201.el0000644000570400056700000004132712074501114015174 0ustar kitamotoopenlab;;; skk-jisx0201.el --- JIS X 0201 (I6E(B, Roman -*- coding: iso-2022-7bit -*- ;; Copyright (C) 1999-2007 SKK Development Team ;; Author: Tsukamoto Tetsuo ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; Created: Oct. 30, 1999. ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; <$B4JC1$J@bL@(B> ;; ;; ~/.skk $B$K(B ;; ;; (setq skk-use-jisx0201-input-method t) ;; ;; $B$H=q$/$3$H$G%$%s%9%H!<%k$5$l$^$9!#;H$$J}$O0J2<$N$h$&$K$J$j$^$9!#(B ;; ;; $B!}%+%?%+%J%b!<%I$K$*$$$F!"(B ;; $B!&(B"C-q" $B$GA43Q%+%J%b!<%I$HH>3Q%+%J%b!<%I$r@Z$j$+$($^$9!#(B ;; ;; $B!}$R$i$,$J(B/$B%+%?%+%JN>%b!<%IFb$G$N"&%b!<%I$K$*$$$F!"(B ;; $B!&(B"C-q" $B$r2!$9$H(I$$B8+=P$78l$H$7$FF~NO$5$l$?$R$i$,$J(B/$B%+%?%+%J$r(IJ]686@6E$B$KJQ(B ;; $B49$7$^$9!#(B ;; ;; `skk-jisx0201-roman-rule-list' $B$K(B JISX0201.1976 Japanese Roman ;; (latin-jisx0201) $B$NJ8;zNs$rDj5A$7$F$$$^$9!#$?$@$7(B GNU Emacs 23 $B0J9_!"%U%!(B ;; $B%$%kJ]B8;~$K(B JIS X 0201 Roman $B$H(B ASCII $B$N6hJL$,$5$l$J$/$J$C$?$h$&$G$9(B ($B1_(B ;; $B5-9f$*$h$S%*!<%P!<%i%$%s$r=|$/(B)$B!#$7$?$,$C$F$3$N%U%!%$%k$N8=9THG$G$O!"$3$l(B ;; $B$i$N(B 2 $BJ8;z0J30$O(B ASCII $B$NJ8;z$,Dj5A$5$l$F$$$^$9!#(B ;; ;; (I6E(B $B$H(B roman $B$r@Z$jBX$($k5!G=(B `skk-toggle-jisx0201' $B$K$O%-! ;; ;; GNU Emacs 20.3 $B!A(B 22 $B$G$3$N%U%!%$%k$rJT=8$9$k>l9g$O!"%U%!%$%k$r3+$/A0$K(B ;; ;; (setq standard-translation-table-for-decode (make-translation-table nil)) ;; ;; $B$rI>2A$7$F$/$@$5$$!#(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (require 'japan-util) ;; $B=tHL$N;v>p$K$h$j(B skk-vars.el $B$KF~$l$k$Y$-$G$J$$JQ?t(B (defvar skk-jisx0201-base-rule-list '(("a" nil "(I1(B") ("bb" "b" "(I/(B") ("ba" nil "(IJ^(B") ("be" nil "(IM^(B") ("bi" nil "(IK^(B") ("bo" nil "(IN^(B") ("bu" nil "(IL^(B") ("bya" nil "(IK^,(B") ("bye" nil "(IK^*(B") ("byi" nil "(IK^((B") ("byo" nil "(IK^.(B") ("byu" nil "(IK^-(B") ("cc" "c" "(I/(B") ("cha" nil "(IA,(B") ("che" nil "(IA*(B") ("chi" nil "(IA(B") ("cho" nil "(IA.(B") ("chu" nil "(IA-(B") ("cya" nil "(IA,(B") ("cye" nil "(IA*(B") ("cyi" nil "(IA((B") ("cyo" nil "(IA.(B") ("cyu" nil "(IA-(B") ("dd" "d" "(I/(B") ("da" nil "(I@^(B") ("de" nil "(IC^(B") ("dha" nil "(IC^,(B") ("dhe" nil "(IC^*(B") ("dhi" nil "(IC^((B") ("dho" nil "(IC^.(B") ("dhu" nil "(IC^-(B") ("di" nil "(IA^(B") ("do" nil "(ID^(B") ("du" nil "(IB^(B") ("dya" nil "(IA^,(B") ("dye" nil "(IA^*(B") ("dyi" nil "(IA^((B") ("dyo" nil "(IA^.(B") ("dyu" nil "(IA^-(B") ("e" nil "(I4(B") ("ff" "f" "(I/(B") ("fa" nil "(IL'(B") ("fe" nil "(IL*(B") ("fi" nil "(IL((B") ("fo" nil "(IL+(B") ("fu" nil "(IL(B") ("fya" nil "(IL,(B") ("fye" nil "(IL*(B") ("fyi" nil "(IL((B") ("fyo" nil "(IL.(B") ("fyu" nil "(IL-(B") ("gg" "g" "(I/(B") ("ga" nil "(I6^(B") ("ge" nil "(I9^(B") ("gi" nil "(I7^(B") ("go" nil "(I:^(B") ("gu" nil "(I8^(B") ("gya" nil "(I7^,(B") ("gye" nil "(I7^*(B") ("gyi" nil "(I7^((B") ("gyo" nil "(I7^.(B") ("gyu" nil "(I7^-(B") ("ha" nil "(IJ(B") ("he" nil "(IM(B") ("hi" nil "(IK(B") ("ho" nil "(IN(B") ("hu" nil "(IL(B") ("hya" nil "(IK,(B") ("hye" nil "(IK*(B") ("hyi" nil "(IK((B") ("hyo" nil "(IK.(B") ("hyu" nil "(IK-(B") ("i" nil "(I2(B") ("jj" "j" "(I/(B") ("ja" nil "(I<^,(B") ("je" nil "(I<^*(B") ("ji" nil "(I<^(B") ("jo" nil "(I<^.(B") ("ju" nil "(I<^-(B") ("jya" nil "(I<^,(B") ("jye" nil "(I<^*(B") ("jyi" nil "(I<^((B") ("jyo" nil "(I<^.(B") ("jyu" nil "(I<^-(B") ("kk" "k" "(I/(B") ("ka" nil "(I6(B") ("ke" nil "(I9(B") ("ki" nil "(I7(B") ("ko" nil "(I:(B") ("ku" nil "(I8(B") ("kya" nil "(I7,(B") ("kye" nil "(I7*(B") ("kyi" nil "(I7((B") ("kyo" nil "(I7.(B") ("kyu" nil "(I7-(B") ("mm" "c" "(I/(B") ("ma" nil "(IO(B") ("me" nil "(IR(B") ("mi" nil "(IP(B") ("mo" nil "(IS(B") ("mu" nil "(IQ(B") ("mya" nil "(IP,(B") ("mye" nil "(IP*(B") ("myi" nil "(IP((B") ("myo" nil "(IP.(B") ("myu" nil "(IP-(B") ("n" nil "(I](B") ("n'" nil "(I](B") ("na" nil "(IE(B") ("ne" nil "(IH(B") ("ni" nil "(IF(B") ("nn" nil "(I](B") ("no" nil "(II(B") ("nu" nil "(IG(B") ("nya" nil "(IF,(B") ("nye" nil "(IF*(B") ("nyi" nil "(IF((B") ("nyo" nil "(IF.(B") ("nyu" nil "(IF-(B") ("o" nil "(I5(B") ("pp" "p" "(I/(B") ("pa" nil "(IJ_(B") ("pe" nil "(IM_(B") ("pi" nil "(IK_(B") ("po" nil "(IN_(B") ("pu" nil "(IL_(B") ("pya" nil "(IK_,(B") ("pye" nil "(IK_*(B") ("pyi" nil "(IK_((B") ("pyo" nil "(IK_.(B") ("pyu" nil "(IK_-(B") ("rr" "r" "(I/(B") ("ra" nil "(IW(B") ("re" nil "(IZ(B") ("ri" nil "(IX(B") ("ro" nil "(I[(B") ("ru" nil "(IY(B") ("rya" nil "(IX,(B") ("rye" nil "(IX*(B") ("ryi" nil "(IX((B") ("ryo" nil "(IX.(B") ("ryu" nil "(IX-(B") ("ss" "s" "(I/(B") ("sa" nil "(I;(B") ("se" nil "(I>(B") ("sha" nil "(I<,(B") ("she" nil "(I<*(B") ("shi" nil "(I<(B") ("sho" nil "(I<.(B") ("shu" nil "(I<-(B") ("si" nil "(I<(B") ("so" nil "(I?(B") ("su" nil "(I=(B") ("sya" nil "(I<,(B") ("sye" nil "(I<*(B") ("syi" nil "(I<((B") ("syo" nil "(I<.(B") ("syu" nil "(I<-(B") ("tt" "t" "(I/(B") ("ta" nil "(I@(B") ("te" nil "(IC(B") ("tha" nil "(IC'(B") ("the" nil "(IC*(B") ("thi" nil "(IC((B") ("tho" nil "(IC.(B") ("thu" nil "(IC-(B") ("ti" nil "(IA(B") ("to" nil "(ID(B") ("tsu" nil "(IB(B") ("tu" nil "(IB(B") ("tya" nil "(IA,(B") ("tye" nil "(IA*(B") ("tyi" nil "(IA((B") ("tyo" nil "(IA.(B") ("tyu" nil "(IA-(B") ("u" nil "(I3(B") ("vv" "v" "(I/(B") ("va" nil "(I3^'(B") ("ve" nil "(I3^*(B") ("vi" nil "(I3^((B") ("vo" nil "(I3^+(B") ("vu" nil "(I3^(B") ("ww" "w" "(I/(B") ("wa" nil "(I\(B") ("we" nil "(I3*(B") ("wi" nil "(I3((B") ("wo" nil "(I&(B") ("wu" nil "(I3(B") ("xx" "x" "(I/(B") ("xa" nil "(I'(B") ("xe" nil "(I*(B") ("xi" nil "(I((B") ("xka" nil "(I6(B") ("xke" nil "(I9(B") ("xo" nil "(I+(B") ("xtsu" nil "(I/(B") ("xtu" nil "(I/(B") ("xu" nil "(I)(B") ("xwa" nil "(I\(B") ("xwe" nil "(I*(B") ("xwi" nil "(I((B") ("xya" nil "(I,(B") ("xyo" nil "(I.(B") ("xyu" nil "(I-(B") ("yy" "y" "(I/(B") ("ya" nil "(IT(B") ("ye" nil "(I2*(B") ("yo" nil "(IV(B") ("yu" nil "(IU(B") ("zz" "z" "(I/(B") ("z," nil "$B!E(B") ("z-" nil "$B!A(B") ("z." nil "$B!D(B") ("z/" nil "(I%(B") ("z[" nil "$B!X(B") ("z]" nil "$B!Y(B") ("za" nil "(I;^(B") ("ze" nil "(I>^(B") ("zh" nil "$B"+(B") ("zi" nil "(I<^(B") ("zj" nil "$B"-(B") ("zk" nil "$B",(B") ("zl" nil "$B"*(B") ("zo" nil "(I?^(B") ("zu" nil "(I=^(B") ("zya" nil "(I<^,(B") ("zye" nil "(I<^*(B") ("zyi" nil "(I<^((B") ("zyo" nil "(I<^.(B") ("zyu" nil "(I<^-(B") ("," nil "(I$(B") ("." nil "(I!(B") ("-" nil "(I0(B") (":" nil ":") (";" nil ";") ("?" nil "?") ("[" nil "(I"(B") ("]" nil "(I#(B") ("l" nil skk-latin-mode) ("q" nil skk-toggle-katakana) ("L" nil skk-jisx0208-latin-mode) ("Q" nil skk-set-henkan-point-subr) ("X" nil skk-purge-from-jisyo) ("/" nil skk-abbrev-mode) ("$" nil skk-display-code-for-char-at-point) ("@" nil skk-today) ("\\" nil skk-input-by-code-or-menu) (skk-kakutei-key nil skk-kakutei)) "*SKK JISX0201 $B%b!<%I$N%Y!<%9$N%k!<%k!#(B") (defvar skk-jisx0201-roman-rule-list '(("!" nil "!") ("\"" nil "\"") ("#" nil "#") ("$" nil "$") ("%" nil "%") ("&" nil "&") ("'" nil "'") ("\(" nil "(") ("\)" nil ")") ("*" nil "*") ("+" nil "+") ("," nil ",") ("-" nil "-") ("." nil ".") ("/" nil "/") ("0" nil "0") ("1" nil "1") ("2" nil "2") ("3" nil "3") ("4" nil "4") ("5" nil "5") ("6" nil "6") ("7" nil "7") ("8" nil "8") ("9" nil "9") (":" nil ":") (";" nil ";") ("<" nil "<") ("=" nil "=") (">" nil ">") ("?" nil "?") ("@" nil "@") ("A" nil "A") ("B" nil "B") ("C" nil "C") ("D" nil "D") ("E" nil "E") ("F" nil "F") ("G" nil "G") ("H" nil "H") ("I" nil "I") ("J" nil "J") ("K" nil "K") ("L" nil "L") ("M" nil "M") ("N" nil "N") ("O" nil "O") ("P" nil "P") ("Q" nil "Q") ("R" nil "R") ("S" nil "S") ("T" nil "T") ("U" nil "U") ("V" nil "V") ("W" nil "W") ("X" nil "X") ("Y" nil "Y") ("Z" nil "Z") ("[" nil "[") ("\\" nil "\(J\(B") ("]" nil "]") ("^" nil "^") ("_" nil "_") ("`" nil "`") ("a" nil "a") ("b" nil "b") ("c" nil "c") ("d" nil "d") ("e" nil "e") ("f" nil "f") ("g" nil "g") ("h" nil "h") ("i" nil "i") ("j" nil "j") ("k" nil "k") ("l" nil "l") ("m" nil "m") ("n" nil "n") ("o" nil "o") ("p" nil "p") ("q" nil "q") ("r" nil "r") ("s" nil "s") ("t" nil "t") ("u" nil "u") ("v" nil "v") ("w" nil "w") ("x" nil "x") ("y" nil "y") ("z" nil "z") ("{" nil "{") ("|" nil "|") ("}" nil "}") ("~" nil "(J~(B")) "*SKK JISX0201 $B%b!<%I$N(B Roman $B$N%k!<%k!#(B") (defvar skk-jisx0201-rule-list '(("\(" nil "(") ("{" nil "{")) "*SKK JISX0201 $B%b!<%I$NDI2C$N%k!<%k!#(B") (setq skk-jisx0201-base-rule-tree (skk-compile-rule-list skk-jisx0201-base-rule-list skk-jisx0201-rule-list)) (setq skk-jisx0201-roman-rule-tree (skk-compile-rule-list skk-jisx0201-roman-rule-list)) ;; Hooks. ;; inline functions. (defsubst skk-jisx0201-mode-on (&optional arg) "SKK JIS X 0201 ($B%+%J(B) $B%b!<%I$r5/F0$9$k!#(B" (make-local-variable 'skk-rule-tree) (setq skk-mode t skk-jisx0201-mode t skk-jisx0201-roman arg skk-rule-tree (if arg skk-jisx0201-roman-rule-tree skk-jisx0201-base-rule-tree) skk-abbrev-mode nil skk-latin-mode nil skk-j-mode nil skk-jisx0208-latin-mode nil skk-katakana nil) (skk-update-modeline 'jisx0201) (skk-cursor-set)) ;; Pieces of advice. (defadvice skk-mode (before skk-jisx0201-ad activate) (setq skk-jisx0201-mode nil) (kill-local-variable 'skk-rule-tree)) (defadvice skk-kakutei (around skk-jisx0201-ad activate) (let ((jisx0201 skk-jisx0201-mode)) ad-do-it (when jisx0201 (skk-jisx0201-mode-on skk-jisx0201-roman)))) (defadvice skk-latin-mode (before skk-jisx0201-ad activate) (setq skk-jisx0201-mode nil) (kill-local-variable 'skk-rule-tree)) (defadvice skk-jisx0208-latin-mode (before skk-jisx0201-ad activate) (setq skk-jisx0201-mode nil) (kill-local-variable 'skk-rule-tree)) (defadvice skk-abbrev-mode (before skk-jisx0201-ad activate) (setq skk-jisx0201-mode nil) (kill-local-variable 'skk-rule-tree)) (defadvice skk-set-okurigana (around skk-jisx0201-ad activate) "$BH>3Q%+%J$NAw$j2>L>$r@5$7$/L>$rH>3Q%+%J$K$9$k!#(B" (when skk-jisx0201-mode (ad-set-arg 0 '("(I;(B" "(I<(B" "(I=(B" "(I>(B")))) ;; functions. ;;;###autoload (defun skk-jisx0201-mode (arg) "SKK $B$N%b!<%I$r(B JIS X 0201 $B%b!<%I$KJQ99$9$k!#(B" (interactive "P") (skk-kakutei) (skk-jisx0201-mode-on)) (defun skk-toggle-jisx0201 (arg) "$BH>3Q%+%J%b!<%I$H%m!<%^;z%b!<%I$r@Z$jBX$($k!#(B" (interactive "P") (cond ((eq skk-henkan-mode 'on) (skk-jisx0201-henkan arg)) (skk-jisx0201-roman (setq skk-rule-tree skk-jisx0201-base-rule-tree skk-jisx0201-roman nil)) (t (setq skk-rule-tree skk-jisx0201-roman-rule-tree skk-jisx0201-roman t)))) (defun skk-jisx0201-string-conversion (str func) (with-temp-buffer (insert str) (funcall func 1 (point)) (buffer-string))) (defun skk-jisx0201-zenkaku (str) "STR $B$N(B JIS X 0201 $B%+%JJ8;z$rBP1~$9$k(B JIS X 0208 $B$NJ8;z$GCV$-49$($k!#(B" (skk-jisx0201-string-conversion str #'skk-jisx0201-zenkaku-region)) (defun skk-jisx0201-hankaku (str) "STR $B$N(B JIS X 0208 $BJ8;z$rBP1~$9$k(B JIS X 0201 $B%+%J$NJ8;z$GCV$-49$($k!#(B" (skk-jisx0201-string-conversion str #'japanese-hankaku-region)) ;;;###autoload (defun skk-toggle-katakana (arg) (interactive "P") (cond ((eq skk-henkan-mode 'on) (skk-jisx0201-henkan arg)) (skk-jisx0201-mode (when (eq skk-henkan-mode 'active) (skk-kakutei)) (setq skk-jisx0201-mode nil) (skk-j-mode-on) (kill-local-variable 'skk-rule-tree)) (t (when (eq skk-henkan-mode 'active) (skk-kakutei)) (skk-jisx0201-mode-on)))) (defun skk-jisx0201-zenkaku-region (start end) (japanese-zenkaku-region start end 'katakana-only)) (defun skk-jisx0201-henkan (arg) "$B"&%b!<%I$G$"$l$P!"NN0h$N$R$i$,$J(B/$B%+%?%+%J$r(B (IJ]686@6E(B $B$KJQ49$9$k!#(B $B"'%b!<%I$G$O2?$b$7$J$$!#(B $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 ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-jisx0213.el,v 1.13 2010/08/02 15:21:05 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Created: Sep. 30, 2000. ;; Last Modified: $Date: 2010/08/02 15:21:05 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (unless (find-coding-system 'euc-jisx0213) (require 'jisx0213)) ;;(require 'un-define) ;;;###autoload (defun skk-jisx0213-henkan-list-filter () ;; remove candidate that contains jisx0213 characters from ;; SKK-HENKAN-LIST. (let ((henkan-list (nthcdr skk-henkan-count skk-henkan-list)) e charset) (while (setq e (car henkan-list)) (setq charset (find-charset-string (if (consp e) (cdr e) e))) (if (or (memq 'japanese-jisx0213-1 charset) (memq 'japanese-jisx0213-2 charset)) (setq skk-henkan-list (delq e skk-henkan-list) henkan-list (delq e henkan-list)) (setq henkan-list (cdr henkan-list)))))) (provide 'skk-jisx0213) ;;; skk-jisx0213.el ends here ddskk-15.2/skk-jisyo-edit-mode.el0000644000570400056700000001674512122225401016720 0ustar kitamotoopenlab;;; skk-jisyo-edit-mode.el --- major mode for editing SKK dictionaries -*- coding: iso-2022-jp -*- ;; Copyright (C) 2001-2010 SKK Development Team ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; This is a major mode for editing SKK dictionaries. ;;; Code: (eval-when-compile (require 'skk-macs)) (require 'skk-cus) (require 'skk-vars) (eval-when-compile (defvar font-lock-defaults)) (defvar skk-jisyo-edit-map nil "Keymap for SKK JISYO Edit mode.") (defvar skk-jisyo-edit-mode-hook nil "Hook run on entry in `skk-jisyo-edit-mode'.") (defvar skk-jisyo-edit-syntax-table nil) (unless skk-jisyo-edit-map (setq skk-jisyo-edit-map (make-sparse-keymap 'skk-jisyo-edit-map))) (defvar skk-jisyo-edit-font-lock-keywords '(("\\(\\[[^]]*/\\]\\)" 1 font-lock-constant-face) ("^\\([^; ]+ \\)/" 1 font-lock-function-name-face) ("/[^;\n]+\\(;[^/\n]*\\)" 1 font-lock-type-face t) ("^\\(;.+\\)$" 1 font-lock-comment-face t) ("^\\(;; okuri-ari entries\\.\\)$" 1 font-lock-keyword-face t) ("^\\(;; okuri-nasi entries\\.\\)$" 1 font-lock-keyword-face t) ("/\\([^/\n]+\\)$" 1 highlight) ("\\(/\\)" 1 font-lock-warning-face)) "Additional expressions to highlight in SKK JISYO edit mode.") (put 'skk-jisyo-edit-mode 'font-lock-defaults '(skk-jisyo-edit-font-lock-keywords)) (defvar skk-jisyo-edit-original-window-configuration nil) ;;;###autoload (defun skk-jisyo-edit-mode () "Major mode for editing SKK JISYO." (interactive) (kill-all-local-variables) (setq mode-name "SKK JISYO Edit") (setq major-mode #'skk-jisyo-edit-mode) (make-local-variable 'font-lock-defaults) (setq font-lock-defaults '(skk-jisyo-edit-font-lock-keywords)) (make-local-variable 'skk-jisyo-edit-syntax-table) (setq skk-jisyo-edit-syntax-table (make-syntax-table)) (set-syntax-table skk-jisyo-edit-syntax-table) (let ((map (make-sparse-keymap))) (cond ((eval-when-compile (featurep 'xemacs)) (set-keymap-parents map (list skk-jisyo-edit-map)) (use-local-map map)) (t (use-local-map (nconc map skk-jisyo-edit-map))))) (modify-syntax-entry ?\" "w" skk-jisyo-edit-syntax-table) (modify-syntax-entry ?/ "w" skk-jisyo-edit-syntax-table) (run-hooks 'skk-jisyo-edit-mode-hook)) ;;;###autoload (add-to-list 'auto-mode-alist '("SKK-JISYO" . skk-jisyo-edit-mode) t) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.skk-jisyo\\(\\.BAK\\|\\.bak\\|~\\)?$" . skk-jisyo-edit-mode)) ;;;###autoload (add-to-list 'auto-mode-alist '("\\..*skk/jisyo\\(\\.BAK\\|\\.bak\\|~\\)?$" . skk-jisyo-edit-mode)) ;;;###autoload (defun skk-edit-private-jisyo (&optional coding-system) "$B8D?M<-=q%U%!%$%k(B `skk-jisyo' $B$rJT=8$9$k!#(B $BG$0U$G$N8D?M<-=qJ]B8$N$"$H!"(B`skk-jisyo' $B$r3+$-!"(B`skk-jisyo-edit-mode' $B$KF~$k!#(B $B%m!<%+%k$K(B $B0J2<$N%-!l9g$O(B SKK $B$K$h$k8D?M<-=q%P%C%U%!$N99?7$,6X;_$5$l$k!#(B $B%*%W%7%g%J%k0z?t(B CODING-SYSTEM $B$K$F8D?M<-=q$N%3!<%I7O$r;XDj2DG=!#(B $B$3$N5!G=$O=>Mh$N ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-kakasi.el,v 1.36 2011/10/22 01:58:48 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2011/10/22 01:58:48 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; skk-kakasi.el $B$O(B KAKASI $B$r(B SKK $B$NCf$+$i;H$&%$%s%?!<%U%'%$%9$G$9!#(BKAKASI $B$O!"(B ;; $B9b66M5?.$5$s(B $B$K$h$k!"!V4A;z$+$J$^$8$jJ8$r$R$i$,(B ;; $B$JJ8$d%m!<%^;zJ8$KJQ49$9$k$3$H$rL\E*$H$7$F:n@.$7$?%W%m%0%i%`$H<-=q$NAm>N!W(B ;; $B$G$9!#;d<+?H$,%K%e!<%9$d%a!<%k$rFI$s$G$$$F!"F|>oFI$_$,J,$i$J$/$FCQ$:$+$7$$(B ;; $B;W$$$r$9$k$3$H$,B?$$$N$G!"5U0z$-$r$7$?$/$F:n$j$^$7$?!#(B ;; ;; KAKASI $B$O!"(B ;; ;; ftp://kakasi.namazu.org/pub/kakasi/ ;; ;; $B$K$"$j(B anonymous ftp $B$GF~L>$rA4$F$R$i$,$J$KJQ49$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B $BCfEg(B -> {$B$J$+$7$^(B|$B$J$+$8$^(B}" (interactive "*r\nP") (let ((str (skk-gyakubiki-1 start end all))) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-gyakubiki-and-henkan (start end) "$BNN0h$N4A;z$r$R$i$,$J$KJQ49$7!"$=$N$R$i$,$J$r8+=P$78l$H$7$F$+$J4A;zJQ49$rL>$rA4$F$R$i$,$J$KJQ498e!"%(%3!<$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B $BCfEg(B -> {$B$J$+$7$^(B|$B$J$+$8$^(B}" (interactive "r\nP") (let ((str (skk-gyakubiki-1 start end all))) (save-match-data (when (string-match "^[ $B!!(B\t]+" str) ;; $B@hF,$N6uGr$rL>$rA4$F%+%?%+%J$KJQ49$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B $BCfEg(B -> {$B%J%+%7%^(B|$B%J%+%8%^(B}" (interactive "*r\nP") (let ((str (skk-gyakubiki-1 start end all 'katakana))) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-gyakubiki-katakana-message (start end &optional all) "$BNN0h$N4A;z!"Aw$j2>L>$rA4$F%+%?%+%J$KJQ498e!"%(%3!<$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B $BCfEg(B -> {$B%J%+%7%^(B|$B%J%+%8%^(B}" (interactive "r\nP") (let ((str (skk-gyakubiki-1 start end all 'katakana))) (save-match-data (when (string-match "^[ $B!!(B\t]+" str) ;; $B@hF,$N6uGr$r \"$BJQ49A0(B[$B$X$s$+$s$^$((B]$B$N4A;z(B[$B$+$s$8(B]$B$NOF(B[$B$o$-(B]$B$K(B\" $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B \"$BCfEg(B\" -> \"$BCfEg(B[{$B$J$+$7$^(B|$B$J$+$8$^(B}]\"" (interactive "*r\nP") (let ((str (skk-hurigana-1 start end all))) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-hurigana-message (start end &optional all) "$BNN0h$N4A;z$KA4$F$U$j$,$J$rIU$1!"%(%3!<$9$k!#(B $BNc$($P!"(B \"$BJQ49A0$N4A;z$NOF$K(B\" -> \"$BJQ49A0(B[$B$X$s$+$s$^$((B]$B$N4A;z(B[$B$+$s$8(B]$B$NOF(B[$B$o$-(B]$B$K(B\" $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B \"$BCfEg(B\" -> \"$BCfEg(B[{$B$J$+$7$^(B|$B$J$+$8$^(B}]\"" (interactive "r\nP") (message "%s" (skk-hurigana-1 start end all))) ;;;###autoload (defun skk-hurigana-katakana-region (start end &optional all) "$BNN0h$N4A;z$KA4$F%U%j%,%J$rIU$1$k!#(B $BNc$($P!"(B \"$BJQ49A0$N4A;z$NOF$K(B\" -> \"$BJQ49A0(B[$B%X%s%+%s%^%((B]$B$N4A;z(B[$B%+%s%8(B]$B$NOF(B[$B%o%-(B]$B$K(B\" $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B \"$BCfEg(B\" -> \"$BCfEg(B[{$B%J%+%7%^(B|$B%J%+%8%^(B}]\"" (interactive "*r\nP") (let ((str (skk-hurigana-1 start end all 'katakana))) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-hurigana-katakana-message (start end &optional all) "$BNN0h$N4A;z$KA4$F%U%j%,%J$rIU$1!"%(%3!<$9$k!#(B $BNc$($P!"(B \"$BJQ49A0$N4A;z$NOF$K(B\" -> \"$BJQ49A0(B[$B%X%s%+%s%^%((B]$B$N4A;z(B[$B%+%s%8(B]$B$NOF(B[$B%o%-(B]$B$K(B\" $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B \"$BCfEg(B\" -> \"$BCfEg(B[{$B%J%+%7%^(B|$B%J%+%8%^(B}]\"" (interactive "r\nP") (message "%s" (skk-hurigana-1 start end all 'katakana))) (defun skk-hurigana-1 (start end all &optional katakana) ;; skk-hurigana-* $B$N%5%V%k!<%A%s!#(B ;; $B%*%W%7%g%J%k0z?t$N(B KATAKANA $B$,(B non-nil $B$G$"$l$P!"%+%?%+%J$XJQ49$9$k!#(B (let ((arg (if katakana '("-JK" "-f") '("-JH" "-f")))) (when skk-allow-spaces-newlines-and-tabs (setq arg (cons "-c" arg))) (when all (setq arg (cons "-p" arg))) (skk-kakasi-region start end arg))) ;;;###autoload (defun skk-romaji-region (start end) "$BNN0h$N4A;z!"$R$i$,$J!"%+%?%+%J!"A41QJ8;z$rA4$F%m!<%^;z$KJQ49$9$k!#(B $BJQ49$K$O!"%X%\%s<0$rMQ$$$k!#(B $BNc$($P!"(B \"$B4A;z$+$J:.$8$jJ8$r%m!<%^;z$KJQ49(B\" -> \" kan'zi kana ma ziri bun' woro-ma zi ni hen'kan' \" `skk-romaji-*-by-hepburn' $B$,(B nil $B$G$"$l$P!"%m!<%^;z$X$NJQ49MM<0$r71Na<0$KJQ99$9(B $B$k!#Nc$($P!"(B\"$B$7(B\" $B$O%X%\%s<0$G$O(B \"shi\" $B$@$,!"71Na<0$G$O(B \"si\" $B$H$J$k!#(B" (interactive "*r") (let ((arg '("-Ha" "-Ka" "-Ja" "-Ea" "-ka" "-s")) str) (when skk-allow-spaces-newlines-and-tabs (setq arg (cons "-c" arg))) (unless skk-romaji-*-by-hepburn (setq arg (cons "-rk" arg))) (setq str (skk-kakasi-region start end arg)) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-romaji-message (start end) "$BNN0h$N4A;z!"$R$i$,$J!"%+%?%+%J!"A41QJ8;z$rA4$F%m!<%^;z$KJQ49$7!"%(%3!<$9$k!#(B $BJQ49$K$O!"%X%\%s<0$rMQ$$$k!#(B $BNc$($P!"(B \"$B4A;z$+$J:.$8$jJ8$r%m!<%^;z$KJQ49(B\" -> \" kan'zi kana ma ziri bun' woro-ma zi ni hen'kan' \" `skk-romaji-*-by-hepburn' $B$,(B nil $B$G$"$l$P!"%m!<%^;z$X$NJQ49MM<0$r71Na<0$KJQ99$9(B $B$k!#Nc$($P!"(B\"$B$7(B\" $B$O%X%\%s<0$G$O(B \"shi\" $B$@$,!"71Na<0$G$O(B \"si\" $B$H$J$k!#(B" (interactive "r") (let ((arg '("-Ha" "-Ka" "-Ja" "-Ea" "-ka" "-s"))) (when skk-allow-spaces-newlines-and-tabs (setq arg (cons "-c" arg))) (unless skk-romaji-*-by-hepburn (setq arg (cons "-rk" arg))) (message "%s" (skk-kakasi-region start end arg)))) (defun skk-kakasi-region (start end arglist) ;; START $B$H(B END $B4V$NNN0h$KBP$7(B kakasi $B%3%^%s%I$rE,MQ$9$k!#(BARGLIST $B$r(B ;; kakasi $B$N0z?t$H$7$FEO$9!#(Bkakasi $B$N=PNO$rJV$9!#(B (unless (or skk-use-kakasi skk-kakasi-command) (skk-error "KAKASI $B$,%$%s%9%H!<%k$5$l$F$$$J$$$+!";HMQ$7$J$$@_Dj(B(%s)$B$K$J$C$F$$$^$9(B" "KAKASI was not installed, or %s is nil" "skk-use-kakasi")) ;; $BJ#?t<-=qBP1~(B (dolist (jisyo skk-gyakubiki-jisyo-list) (setq arglist (append arglist (list (expand-file-name jisyo))))) (let ((str (buffer-substring-no-properties start end))) ;; $BIQEY>pJs$r;H$C$F2?$+$*$b$7$m$$;H$$J}$,$G$-$k$+$J!)(B $B8=>u$G$O;H$C$F(B ;; $B$$$J$$!#(B ;;(hindo-file (skk-make-temp-file "skkKKS")) (with-temp-buffer ;; current buffer $B$,(B read-only $B$N$H$-$K(B current buffer $B$G(B call-process ;; $B$r8F$V$H(B destination buffer $B$rJL$K;XDj$7$F$$$F$b%(%i!<$K$J$k$N$G!"%j!<(B ;; $B%8%g%s$NJ8;zNs$r%o!<%/%P%C%U%!$KB`Hr$9$k!#(B (insert str) (unless (and (eq (apply 'call-process-region (point-min) (point) skk-kakasi-command ;; kakasi-2.2.5.hindo.diff $B$,Ev$C$F$$$k$H(B ;; $BI8=`%(%i!<=PNO$KIQEY>pJs$,=PNO$5$l$k!#(B 'delete-original-text ;;(list t hindo-file) '(t nil) nil (cons "-ieuc" (cons "-oeuc" arglist))) 0) (> (buffer-size) 0)) (skk-error "$BJQ49$G$-$^$;$s(B" "Cannot convert!")) (buffer-string)))) (run-hooks 'skk-kakasi-load-hook) (provide 'skk-kakasi) ;;; skk-kakasi.el ends here ddskk-15.2/skk-kcode.el0000644000570400056700000006146012204030621014774 0ustar kitamotoopenlab;;; skk-kcode.el --- $BJ8;z%3!<%I$r;H$C$?JQ49$N$?$a$N%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, ;; 1998, 1999, 2000 ;; Masahiko Sato ;; Copyright (C) 1998-2010 SKK Development Team ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk-kcode.el,v 1.109 2013/08/18 02:29:37 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/08/18 02:29:37 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'cl) (require 'skk-macs) (require 'skk-vars) (defvar enable-recursive-minibuffers) (defvar message-log-max)) (require 'skk-tankan) ;;;###autoload (defun skk-input-by-code-or-menu (&optional arg) "$BJQ?t(B `skk-kcode-method' $B$G;XDj$5$l$?5!G=$rMQ$$$FJ8;z$rA^F~$9$k!#(B" ;; `skk-rom-kana-base-rule-list' $B$,;X$7$F$$$k$N$O$3$N4X?t!#(B (interactive "*P") (let (list) (case skk-kcode-method (char-list (skk-list-chars arg)) (code-or-char-list (and (setq list (skk-input-by-code arg)) (skk-list-chars arg))) (this-key (insert (format "%s" (this-command-keys)))) (t (and (setq list (skk-input-by-code arg)) (insert (apply #'skk-input-by-code-or-menu-0 list)))))) (when (eq skk-henkan-mode 'active) (skk-kakutei))) (defun skk-input-by-code (&optional arg) "7/8 bit JIS $B%3!<%I(B $B$b$7$/$O(B $B6hE@HV9f$KBP1~$9$kJ8;z$rA^F~$9$k!#(B" (interactive "*P") (when arg (setq skk-kcode-charset (intern (completing-read "Character set: " '(("japanese-jisx0213-1") ("japanese-jisx0213-2") ("japanese-jisx0208")) nil t (symbol-name skk-kcode-charset))))) (let* ((enable-recursive-minibuffers t) (codestr (skk-kcode-read-code-string)) (list (skk-kcode-parse-code-string codestr)) (flag (nth 0 list)) (n1 (nth 1 list)) (n2 (nth 2 list)) (char (nth 3 list))) (cond ((> n1 160) (insert (skk-kcode-find-char-string flag n1 n2 char)) nil) (t (list n1 n2))))) (defun skk-kcode-read-code-string () (read-string (format (if skk-japanese-message-and-error "\ `%s' $B$NJ8;z$r;XDj$7$^$9!#(B7/8 $B%S%C%H(B JIS $B%3!<%I(B (00nn), $B6hE@%3!<%I(B (00-00),\ UNICODE (U+00nn), $B$^$?$O(B [RET] (%s): " "\ To find a character in `%s', type 7/8 bits JIS code (00nn),\ KUTEN code (00-00), UNICODE (U+00nn), or [RET] for %s: ") skk-kcode-charset (if (eq skk-kcode-method 'code-or-char-list) "char-list" "menu")))) (defun skk-kcode-parse-code-string (str) (let* ((list (split-string str "-")) (len (length list)) n1 n2 flag char) (cond ((eq len 2) ;; $B%O%$%U%s(B `-' $B$G6h@Z$i$l$?!V6h(B-$BE@!W(B (setq n1 (+ (string-to-number (nth 0 list)) 32 128) n2 (+ (string-to-number (nth 1 list)) 32 128))) ((eq len 3) ;; $B%O%$%U%s(B `-' $B$G6h@Z$i$l$?!VLL(B-$B6h(B-$BE@!W(B (setq flag (if (equal "2" (nth 0 list)) 'x0213-2 'x0213-1) n1 (+ (string-to-number (nth 1 list)) 32 128) n2 (+ (string-to-number (nth 2 list)) 32 128))) ((string-match "^[uU]\\+\\(.*\\)$" str) ;; `U+' $B$G;O$^$l$P%f%K%3!<%I(B (setq flag 'unicode n1 161 n2 0 char (string-to-number (match-string-no-properties 1 str) 16))) (t ;; $B>e5-0J30$O(B JIS $B%3!<%I$H$_$J$9(B (setq n1 (if (string= str "") 128 (+ (* 16 (skk-char-to-hex (aref str 0) 'jis)) (skk-char-to-hex (aref str 1)))) n2 (if (string= str "") 128 (+ (* 16 (skk-char-to-hex (aref str 2) 'jis)) (skk-char-to-hex (aref str 3))))))) ;; (when (or (> n1 256) (> n2 256)) (skk-error "$BL58z$J%3!<%I$G$9(B" "Invalid code")) (list flag n1 n2 char))) (defun skk-kcode-find-char-string (flag n1 n2 char) (case flag (x0213-1 (char-to-string (skk-make-char 'japanese-jisx0213-1 n1 n2))) (x0213-2 (char-to-string (skk-make-char 'japanese-jisx0213-2 n1 n2))) (unicode (char-to-string (if (fboundp 'ucs-representation-decoding-backend) (funcall #'ucs-representation-decoding-backend 'ucs char nil) char))) (t (skk-make-string n1 n2)))) (defun skk-char-to-hex (char &optional jischar) "CHAR $B$r(B 16 $B?J?t$H$_$J$7$F!"BP1~$9$k?tCM$r(B 10 $B?J?t$GJV$9!#(B" (cond ;; a(97) -- f(102) ((and (<= 97 char) (<= char 102)) (- char 87)) ; a $B$J$i(B 10 $B$,!"(Bf $B$J$i(B 15 $B$,JV$k!#(B ;; A(65) -- F(70) ((and (<= 65 char) (<= char 70)) (- char 55)) ; A $B$J$i(B 10 $B$,!"(BF $B$J$i(B 15 $B$,JV$k!#(B ;; 0(48) -- 9(57) ((and (<= 48 char) (<= char 57)) (if jischar (- char 40) ; 0 $B$J$i(B 8 $B$,!"(B9 $B$J$i(B 17 $B$,JV$k!#(B (- char 48))) ; 0 $B$J$i(B 0 $B$,!"(B9 $B$J$i(B 9 $B$,JV$k!#(B (t (skk-error "`%c' $B$r(B 16 $B?J?t$KJQ49$G$-$^$;$s(B" "Cannot convert `%c' to hexadecimal number" char)))) (defun skk-make-string (n1 n2) "`skk-kcode-charset' $B$,<($9J8;z=89g$K=>$C$F(B n1 n2 $B$KBP1~$9$k(B STRING $B$rJV$9(B" (char-to-string (skk-make-char skk-kcode-charset n1 n2))) ;; tiny function, but called once in skk-kcode.el. So not make it inline. (defun skk-make-char (charset n1 n2) (cond ((eval-when-compile (featurep 'xemacs)) (make-char charset (logand (lognot 128) n1) (logand (lognot 128) n2))) (t (make-char charset n1 n2)))) (defun skk-next-n2-code (n) (if (<= (setq n (1+ n)) skk-code-n2-max) n skk-code-n2-min)) (defun skk-previous-n2-code (n) (if (<= skk-code-n2-min (setq n (1- n))) n skk-code-n2-max)) (defun skk-next-n1-code (n) (if (<= (setq n (1+ n)) skk-code-n1-max) n skk-code-n1-min)) (defun skk-previous-n1-code (n) (if (<= skk-code-n1-min (setq n (1- n))) n skk-code-n1-max)) (defun skk-input-by-code-or-menu-0 (n1 n2) (if (= n1 skk-code-null) (skk-input-by-code-or-menu-jump n2) (skk-input-by-code-or-menu-1 n1 n2))) (defun skk-input-by-code-or-menu-jump (n) (let ((menu-keys1 (mapcar (lambda (char) ; $BI=<(MQ$N%-!<%j%9%H(B (skk-char-to-unibyte-string (upcase char))) skk-input-by-code-menu-keys1)) kanji-char) (when (< n skk-code-n1-min) (setq n skk-input-by-code-or-menu-jump-default)) (while (not kanji-char) (let ((n-org n) (chars (list (list (skk-make-string n skk-code-n1-min) n skk-code-n1-min) (list (skk-make-string n 177) n 177) (list (skk-make-string n 193) n 193) (list (skk-make-string n 209) n 209) (list (skk-make-string n 225) n 225) (list (skk-make-string n 241) n 241) (progn (setq n (skk-next-n1-code n)) (list (skk-make-string n skk-code-n1-min) n skk-code-n1-min)) (list (skk-make-string n 177) n 177) (list (skk-make-string n 193) n 193) (list (skk-make-string n 209) n 209) (list (skk-make-string n 225) n 225) (list (skk-make-string n 241) n 241)))) (skk-save-point (let ((i 0) message-log-max str) (while (< i 12) (setq str (concat str (propertize (nth i menu-keys1) 'face 'skk-henkan-show-candidates-keys-face) ":" (car (nth i chars)) (if (and skk-show-tooltip (= i 5)) "\n" " ")) i (1+ i))) (if skk-show-tooltip (funcall skk-tooltip-function str) (message "%s" str))) ;; (let* ((event (next-command-event)) (char (event-to-character event)) (key (skk-event-key event)) rest ch) (cond ((skk-key-binding-member key skk-quit-commands skk-j-mode-map) (signal 'quit nil)) ;; ((not (characterp char)) (skk-message "`%s' $B$OL58z$J%-!<$G$9!*(B" "`%s' is not valid here!" (or (key-description key) (key-description char))) (sit-for 1) (message "") (setq n n-org)) ;; ((setq rest (or (memq char skk-input-by-code-menu-keys1) (if (skk-lower-case-p char) (memq (upcase char) skk-input-by-code-menu-keys1) (memq (downcase char) skk-input-by-code-menu-keys1))) ch (if rest ;; 12 == (length skk-input-by-code-menu-keys1) (nth (- 12 (length rest)) chars) nil)) (setq kanji-char ch)) ;; ((or (skk-key-binding-member (skk-char-to-unibyte-string char) '(skk-previous-candidate)) (and (not skk-delete-implies-kakutei) (eq 'skk-delete-backward-char (lookup-key skk-j-mode-map (vector char))))) (when (< (setq n (- n-org 2)) skk-code-n1-min) (setq n skk-code-n1-max))) ;; ((eq char skk-start-henkan-char) ; space (setq n (skk-next-n1-code n))) ;; ((eq char ?\?) (skk-message "\ `%s' EUC: %2x%2x (%3d, %3d), JIS: %2x%2x (%3d, %3d) [$B2?$+%-!<$r2!$7$F$/$@$5$$(B]" "\ `%s' EUC: %2x%2x (%3d, %3d), JIS: %2x%2x (%3d, %3d) [Hit any key to continue]" (caar chars) n-org skk-code-n1-min n-org skk-code-n1-min (- n-org 128) (- skk-code-n1-min 128) (- n-org 128) (- skk-code-n1-min 128)) (next-command-event) (setq n n-org)) ;; (t (skk-message "`%c' $B$OL58z$J%-!<$G$9!*(B" "`%c' is not valid here!" char) (sit-for 1) (message "") (setq n n-org) nil)))))) (setq skk-input-by-code-or-menu-jump-default (cadr kanji-char)) (skk-input-by-code-or-menu-1 (cadr kanji-char) (car (cddr kanji-char))))) (defun skk-input-by-code-or-menu-1 (n1 n2) (let ((menu-keys2 (mapcar (lambda (char) ; $BI=<(MQ$N%-!<%j%9%H(B (skk-char-to-unibyte-string (upcase char))) skk-input-by-code-menu-keys2)) kanji-char) (while (not kanji-char) (let ((n1-org n1) (n2-org n2) (i 0) (chars (list (skk-make-string n1 n2)))) ;; 16 == (length skk-input-by-code-menu-keys2) (while (< i (1- 16)) (nconc chars (list (progn (setq n2 (skk-next-n2-code n2)) (if (= n2 skk-code-n2-min) (setq n1 (skk-next-n1-code n1))) (skk-make-string n1 n2)))) (setq i (1+ i))) (skk-save-point (let ((i 0) message-log-max str) (while (< i 16) (setq str (concat str (propertize (nth i menu-keys2) 'face 'skk-henkan-show-candidates-keys-face) ":" (nth i chars) (if (and skk-show-tooltip (= i 8)) "\n" " ")) i (1+ i))) (if skk-show-tooltip (funcall skk-tooltip-function str) (message "%s" str))) (let* ((event (next-command-event)) (char (event-to-character event)) (key (skk-event-key event)) rest ch) (cond ((skk-key-binding-member key skk-quit-commands skk-j-mode-map) (signal 'quit nil)) ((not (characterp char)) (skk-message "`%s' $B$OL58z$J%-!<$G$9!*(B" "`%s' is not valid here!" (or (key-description key) (key-description char))) (sit-for 1) (message "") (setq n1 n1-org n2 n2-org)) ((setq rest (or (memq char skk-input-by-code-menu-keys2) (if (skk-lower-case-p char) (memq (upcase char) skk-input-by-code-menu-keys2) (memq (downcase char) skk-input-by-code-menu-keys2))) ch (when rest ;; 16 == (length skk-input-by-code-menu-keys2) (nth (- 16 (length rest)) chars))) (setq kanji-char ch)) ((or (skk-key-binding-member (skk-char-to-unibyte-string char) '(skk-previous-candidate)) (and (not skk-delete-implies-kakutei) (eq 'skk-delete-backward-char (lookup-key skk-j-mode-map(vector char))))) (when (< (setq n2 (- n2 31)) skk-code-n2-min) (setq n2 (+ n2 94) n1 (skk-previous-n1-code n1)))) ;; ((eq char skk-start-henkan-char) ; space (if (= (setq n2 (skk-next-n2-code n2)) skk-code-n2-min) (setq n1 (skk-next-n1-code n1)))) ;; ((eq char ?\?) (skk-message "\ `%s' EUC: %2x%2x (%3d, %3d), JIS: %2x%2x (%3d, %3d) [$B2?$+%-!<$r2!$7$F$/$@$5$$(B]" "\ `%s' EUC: %2x%2x (%3d, %3d), JIS: %2x%2x (%3d, %3d) [Hit any key to continue]" (car chars) n1-org n2-org n1-org n2-org (- n1-org 128) (- n2-org 128) (- n1-org 128) (- n2-org 128)) (next-command-event) (setq n1 n1-org n2 n2-org)) ;; ((eq char ?>) (if (= (setq n2 (skk-next-n2-code n2-org)) skk-code-n2-min) (setq n1 (skk-next-n1-code n1-org)) (setq n1 n1-org))) ;; ((eq char ?<) (if (= (setq n2 (skk-previous-n2-code n2-org)) skk-code-n2-max) (setq n1 (skk-previous-n1-code n1-org)) (setq n1 n1-org))) ;; (t (skk-message "`%c' $B$OL58z$J%-!<$G$9!*(B" "`%c' is not valid here!" char) (sit-for 1) (message "") (setq n1 n1-org n2 n2-org))))))) kanji-char)) ;;;###autoload (defun skk-display-code-for-char-at-point (&optional arg) "$B%]%$%s%H$K$"$kJ8;z$N6hE@HV9f!"(BJIS $B%3!<%I!"(BEUC $B%3!<%I!"%7%U%H(B JIS $B%3!<%I(B\ $B5Z$S%f%K%3!<%I$rI=<($9$k!#(B" (interactive) (cond ((not skk-display-code-method) (insert (format "%s" (this-command-keys)))) ((eobp) (skk-message "$B%+!<%=%k$,%P%C%U%!$N=*C<$K$"$j$^$9(B" "Cursor is at the end of the buffer")) (t (skk-display-code (following-char) (point)))) t) ; $B%(%3!<$7$?J8;zNs$r%+%l%s%H%P%C%U%!$KA^F~$7$J$$$h$&$K!#(B (defun skk-display-code (char p) (let ((charset (skk-char-charset char skk-charset-list)) mesg) (cond ((memq charset '(japanese-jisx0213-1 japanese-jisx0213-2 japanese-jisx0208 japanese-jisx0208-1978)) (let* ((char1-j (skk-char-octet char 0)) (char1-k (- char1-j 32)) (char1-e (+ char1-j 128)) (char2-j (skk-char-octet char 1)) (char2-k (- char2-j 32)) (char2-e (+ char2-j 128)) (sjis (if (eq charset 'japanese-jisx0213-2) (skk-jis2sjis2 char1-j char2-j) (skk-jis2sjis char1-j char2-j))) (char1-s (car sjis)) (char2-s (cadr sjis)) (char-data (skk-tankan-get-char-data char)) (anno (skk-tankan-get-char-annotation char)) (unicode (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) (concat ", " (propertize "UNICODE:" 'face 'skk-display-code-prompt-face) (format "U+%04x" char))) ((and (eval-when-compile (fboundp 'char-to-ucs)) (fboundp 'char-to-ucs) (char-to-ucs char)) (concat ", " (propertize "UNICODE:" 'face 'skk-display-code-prompt-face) (format "U+%04x" (char-to-ucs char)))) ((and (eval-when-compile (fboundp 'encode-char)) (fboundp 'encode-char) (encode-char char 'ucs)) (concat ", " (propertize "UNICODE:" 'face 'skk-display-code-prompt-face) (format "U+%04x" (encode-char char 'ucs)))) (t ""))) (composition (find-composition p nil nil t))) (setq mesg (concat (propertize (char-to-string char) 'face 'skk-display-code-char-face) "\t" (propertize "KUTEN:" 'face 'skk-display-code-prompt-face) (if (eq charset 'japanese-jisx0213-2) "(plane2)" "") (format "%02d-%02d, " char1-k char2-k) (propertize "JIS:" 'face 'skk-display-code-prompt-face) (format "#x%2x%2x, " char1-j char2-j) (propertize "EUC:" 'face 'skk-display-code-prompt-face) (format "#x%2x%2x, " char1-e char2-e) (propertize "SJIS:" 'face 'skk-display-code-prompt-face) (format "#x%2x%2x" char1-s char2-s) unicode (if composition (format " (Composed with U+%x)" (string-to-char (buffer-substring (1+ p) (nth 1 composition))))) (unless (zerop (nth 2 char-data)) (concat ", " (propertize (format "$BAm(B%d$B2h!J(B%s$BIt(B %d$B2h!K(B" (nth 2 char-data) (aref skk-tankan-radical-vector (nth 0 char-data)) (nth 1 char-data)) 'face 'skk-display-code-tankan-radical-face))) (if anno (concat ", " (propertize anno 'face 'skk-display-code-tankan-annotation-face))) )))) ;; ((memq charset '(ascii latin-jisx0201)) (setq mesg (concat (format "`%c', " char) (propertize "HEX:" 'face 'skk-display-code-prompt-face) (format "#x%2x, " (skk-char-octet char 0)) (propertize "DECIMAL:" 'face 'skk-display-code-prompt-face) (format "%3d" (skk-char-octet char 0))))) ;; ((eq (char-charset char) 'unicode) (setq mesg (format "UNICODE: U+%04x" char))) ;$BMW(Bmule-ucs(emacs22)$BBP1~(B ;; (t (setq mesg (format (if skk-japanese-message-and-error "$BJ8;z=89g(B %s $B$O%5%]!<%H$7$F$$$^$;$s(B" "%s character set is not supported") (char-charset char))))) ;; (cond ((and window-system skk-show-tooltip (not (eq (symbol-function 'skk-tooltip-show-at-point) 'ignore))) (skk-tooltip-show-at-point (replace-regexp-in-string ", " "\n\t" mesg) 'annotation)) (skk-show-candidates-always-pop-to-buffer (skk-annotation-show (replace-regexp-in-string ", " "\n\t" mesg))) (t (message "%s" mesg))))) (defun skk-jis2sjis (char1 char2) (let* ((ch2 (if (eq (* (/ char1 2) 2) char1) (+ char2 125) (+ char2 31))) (c2 (if (>= ch2 127) (+ ch2 1) ch2)) (ch1 (+ (/ (- char1 33) 2) 129)) (c1 (if (> ch1 159) (+ ch1 64) ch1))) (list c1 c2))) (defun skk-sjis2jis (char1 char2) (let* ((ch1 (if (<= char1 159) (+ (* (- char1 113) 2) 1) (+ (* (- char1 177) 2) 1))) (ch2 (if (> char2 127) (- char2 1) char2)) (c2 (if (>= ch2 158) (- ch2 125) (- ch2 31))) (c1 (if (> ch2 127) (+ ch1 1) ch1))) (list c1 c2))) ;; 2$BLL(B ;; XEmacs $B$G$N%(%i!<2sHr$N$?$a$K$3$N4X?t$r0l;~(B skk-emacs.el $B$KB`Hr$9$k!#(B ;; (autoload 'skk-jis2sjis2 "skk-emacs") (when (eval-when-compile (featurep 'xemacs)) (defalias 'skk-jis2sjis2 'ignore)) ;;;; skk-list-chars ;; TODO ;; o mode-line $B$K8=:_(B charset $B$rI=<($7$?$$(B ;; o $BA^F~@h$N%P%C%U%!(B skk-list-chars-destination-buffer $B$,B8:_$7$J$$>l9g$NBP=h(B ;; o $B%-! $B$G@hF,(B/$BKvHx$X(B (defun skk-list-chars-mode () "Major mode for skk-list-chars. \\{skk-list-chars-mode-map}" (kill-all-local-variables) (use-local-map skk-list-chars-mode-map) (setq mode-name "skk-list-chars" major-mode 'skk-list-chars-mode) (setq tab-width 4)) (defun skk-list-chars-sub (high charset) "Docstring." (let ((min 33) ;?\x21 (max 126) ;?\x7e i ch) (insert "\n" (propertize (format "%02d-#x--- 0-- 1-- 2-- 3-- 4-- 5-- 6-- 7-- 8-- 9-- A-- B-- C-- D-- E-- F" (- high 32)) 'face 'skk-list-chars-table-header-face)) (setq i (* (/ min 16) 16)) ; i $B$O(B $B2<0L%P%$%H(B (while (<= i max) ; 0x21 .. 0x7e (when (zerop (% i 16)) (insert (propertize (format "\n %5X0" (/ (+ (* high 256) i) 16)) 'face 'skk-list-chars-table-header-face))) (setq ch (if (< i min) 32 (or (make-char charset (/ (* high 256) 256) i) 32))) (insert "\t" (propertize (char-to-string ch) 'mouse-face 'highlight)) (setq i (1+ i))))) ;;;###autoload (defun skk-list-chars (arg) "$BJQ?t(B `skk-kcode-charset' $B$K=>$C$FJ8;z0lMw$rI=<($9$k(B. \\[universal-argument] $BIU$-$Gl9g(B (skk-kakutei)) (setq skk-list-chars-destination-buffer (current-buffer)) (set-buffer buf) (setq buffer-read-only nil) (erase-buffer) (set-buffer-multibyte t) (insert (format "Characters in the coded character set `%s'.\n" charset)) (dotimes (high 94) ; from ?\x21 to ?\x7e (skk-list-chars-sub (+ high 33) charset)) (pop-to-buffer buf) (search-backward (char-to-string char)) (setq skk-list-chars-point (point)) (put-text-property skk-list-chars-point (progn (forward-char) (point)) 'face 'skk-list-chars-face) (goto-char skk-list-chars-point) (set-buffer-modified-p nil) (setq buffer-read-only t) (skk-list-chars-mode) ;; (when skk-list-chars-default-charstr (skk-list-chars-move-to-charstr skk-list-chars-default-charstr)))) (defun skk-list-chars-quit () (interactive) (kill-buffer (current-buffer)) (set-window-configuration skk-list-chars-original-window-configuration)) (defun skk-list-chars-display-code () (interactive) (let ((c (following-char))) (if (eq 'ascii (car (split-char c))) ;; $B6h@Z$j9T$J$I$G(B $ $B$5$l$?>l9g(B (next-completion 1) (skk-display-code c (point))))) (defun skk-list-chars-copy () (interactive) (unless (eobp) (message "`%s' copied." (kill-new (char-to-string (following-char)))))) (defun skk-list-chars-next-line () (interactive) (let ((col (current-column))) (when (< col 8) (setq col 8)) (unless (zerop (mod col 4)) (setq col (- col 2))) (forward-line) (move-to-column col) (when (eq 'ascii (car (split-char (following-char)))) (forward-line) (move-to-column col) (when (eq 'ascii (car (split-char (following-char)))) (forward-line) (move-to-column col))))) (defun skk-list-chars-previous-line () (interactive) (let ((col (current-column))) (when (< col 8) (setq col 8)) (unless (zerop (mod col 4)) (setq col (- col 2))) (if (< (count-lines (point-min) (point)) 5) (progn (goto-char (point-min)) (search-forward (char-to-string (make-char skk-kcode-charset 33 33))) (move-to-column col)) (forward-line -1) (move-to-column col) (when (eq 'ascii (car (split-char (following-char)))) (forward-line -1) (move-to-column col) (when (eq 'ascii (car (split-char (following-char)))) (forward-line -1) (move-to-column col)))))) (defun skk-list-chars-goto-point () (interactive) (goto-char skk-list-chars-point)) (defun skk-list-chars-insert () (interactive) (when (buffer-live-p skk-list-chars-destination-buffer) (if (eobp) (forward-char -1) (if (eq 'ascii (car (split-char (following-char)))) ;; $B6h@Z$j9T$J$I$G(B RET $B$5$l$?>l9g(B (next-completion 1) (let ((c (following-char))) (set-buffer skk-list-chars-destination-buffer) (insert c) (setq skk-list-chars-default-charstr (char-to-string c))))))) (defun skk-list-chars-other-charset () (interactive) (setq skk-kcode-charset (intern-soft (completing-read "Character set: " '(("japanese-jisx0213-1") ("japanese-jisx0213-2") ("japanese-jisx0208")) nil t (symbol-name skk-kcode-charset)))) (skk-list-chars-quit) (skk-list-chars nil)) (defun skk-list-chars-code-input () (interactive) (skk-list-chars-jump 'insert)) (defun skk-list-chars-jump (&optional insert) (interactive) (let ((code (skk-kcode-read-code-string)) str) (unless (string= code "") (setq str (skk-list-chars-find-char-string-for-code code)) (when str (when insert (save-current-buffer (set-buffer skk-list-chars-destination-buffer) (insert str)) (setq skk-list-chars-default-charstr str)) (skk-list-chars-move-to-charstr str))))) (defun skk-list-chars-move-to-charstr (charstr) (when (memq (skk-char-charset (string-to-char charstr) skk-charset-list) (list 'japanese-jisx0208 skk-kcode-charset)) (goto-char (point-min)) (let ((case-fold-search nil)) (search-forward charstr nil t)) (forward-char -1))) (defun skk-list-chars-find-char-string-for-code (code) (let ((list (skk-kcode-parse-code-string code))) (if (> (nth 1 list) 160) (apply #'skk-kcode-find-char-string list) nil))) (run-hooks 'skk-kcode-load-hook) (provide 'skk-kcode) ;;; skk-kcode.el ends here ddskk-15.2/skk-leim.el0000644000570400056700000000453512011434206014640 0ustar kitamotoopenlab;;; skk-leim.el --- SKK related code for LEIM ;; Copyright (C) 1997, 1999, 2000 ;; Murata Shuuichirou ;; Author: Murata Shuuichirou ;; Maintainer: SKK Development Team ;; Version: $Id: skk-leim.el,v 1.20 2012/08/11 10:48:38 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2012/08/11 10:48:38 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) ;;;###autoload (defun skk-activate (&optional name) (skk-set-deactivate-im-func 'skk-inactivate) (skk-mode 1) (when (eq (selected-window) (minibuffer-window)) (add-hook 'minibuffer-exit-hook 'skk-leim-exit-from-minibuffer))) ;;;###autoload (defun skk-auto-fill-activate (&optional name) (skk-set-deactivate-im-func 'skk-auto-fill-inactivate) (skk-auto-fill-mode 1) (when (eq (selected-window) (minibuffer-window)) (add-hook 'minibuffer-exit-hook 'skk-leim-exit-from-minibuffer))) ;;;###autoload (defun skk-inactivate () (skk-mode -1)) ;;;###autoload (defun skk-auto-fill-inactivate () (skk-auto-fill-mode -1)) (defun skk-leim-exit-from-minibuffer () (skk-deactivate-input-method) (when (<= (minibuffer-depth) 1) (remove-hook 'minibuffer-exit-hook 'skk-leim-exit-from-minibuffer))) ;;;###autoload (register-input-method "japanese-skk" "Japanese" 'skk-activate "" "Simple Kana to Kanji conversion program") ;;;###autoload (register-input-method "japanese-skk-auto-fill" "Japanese" 'skk-auto-fill-activate "" "Simple Kana to Kanji conversion program with auto-fill") (provide 'skk-leim) ;;; skk-leim.el ends here ddskk-15.2/skk-look.el0000644000570400056700000003002512074501114014651 0ustar kitamotoopenlab;;; skk-look.el --- UNIX look command interface for SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 1998, 1999, 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-look.el,v 1.45 2013/01/13 09:45:48 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/01/13 09:45:48 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; ;; .skk $B$+(B .emacs $B$G(B `skk-use-look' $B$r(B t $B$K%;%C%H$7$F$3$l$rI>2A$7$F2<$5$$!#$=$N(B ;; $B8e(B skk-mode $B$rN)$A>e$2$k$+!"(BM-x skk-restart $B$9$k$H!"(B $B2<5-$N$h$&$J7]Ev$,2DG=(B ;; $B$K$J$j$^$9!#(B ;; ;; (1)$B1QC18l$rJd40$,$G$-$^$9!#(B ;; ;; $B"&(Babstr(TAB) ---> $B"&(Babstract ;; ;; $BDL>o$NJd405!G=F1MM!"(B`.' $B$G $B"'(Babstract ;; ;; $B8+=P$78l$K%"%9%?%j%9%/(B (`*') $B$rF~$l$k$N$r$*K:$l$J$/!#(B ;; ;; $B3NDj$9$k$H!"(B`abstr*' $B$r8+=P$78l!"(B`abstract' $B$r8uJd$H$9$k%(%s%H%j$,8D?M<-(B ;; $B=q$KDI2C$5$l$^$9!#$3$N$h$&$J%(%s%H%j$rDI2C$7$?$/$J$$>l9g$O!"(B ;; $B%f!<%6!\$7$/$O!"(B ;; `skk-search-excluding-word-pattern-function' $B$N%I%-%e%a%s%H$r$4Mw2<$5$$!#(B ;; ;; (3)(2)$B$GJQ49$7$?8e!"99$K:F5"E*$J1QOBJQ49$r9T$&$3$H$,$G$-$^$9!#(B ;; ;; $B$^$:!"(B`skk-look-recursive-search' $B$NCM$r(B non-nil $B$K%;%C%H$7$F2<$5(B ;; $B$$!#(BEmacs/SKK $B$r:F5/F0$9$kI,MW$O$"$j$^$;$s!#(B ;; ;; $B$9$k$H!"Nc$($P!"(B ;; ;; $B"&(Babstr* (SPC) ;; ;; ---> $B"'(Babstract (SPC) -> $B"'%"%V%9%H%i%/%H(B (SPC) -> $B"'Cj>](B (SPC) ;; -> $B"'(Babstraction (SPC) -> $B"'%"%V%9%H%i%/%7%g%s(B ;; ;; $B$3$N$h$&$K1QC18l(B + $B$=$N1QC18l$r8+=P$78l$K$7$?8uJd$N!V%;%C%H!W$rJQ49(B ;; $B7k2L$H$7$F=PNO$9$k$3$H$,$G$-$^$9!#(B ;; ;; $B$3$N:]!"(B`skk-look-expanded-word-only' $B$NCM$,(B non-nil $B$G$"$l$P!":F5"(B ;; $B8!:w$K@.8y$7$?1QC18l$N!V%;%C%H!W$@$1$r=PNO$9$k$3$H$,$G$-$^$9(B ($B:F5"(B ;; $B8!:w$G8!=P$5$l$J$+$C$?1QC18l$OL5;k$7$F=PNO$7$^$;$s(B) $B!#(B ;; ;; $B$b$A$m$s!"(BSKK $B<-=q$K(B ;; ;; abstract /$B%"%V%9%H%i%/%H(B/$BCj>](B/ ;; abstraction /$B%"%V%9%H%i%/%7%g%s(B/ ;; ;; $B$H$$$&%(%s%H%j$,$"$k$3$H$rA0Ds$H$7$F$$$^$9!#(Bedict $B$r(B SKK $B<-=q7A<0$K(B ;; $BJQ49$9$k$HNI$$$G$9$M!#(B ;; ;; $BF0:n$r3NG'$7$?(B look $B$O!"(BSlackware 3.5 $B$KF~$C$F$$$?!"(Bman page $B$K(B ;; `BSD Experimental June 14, 1993' $B$H5-:\$N$"$k$b$N(B ($B%P!<%8%g%s>pJs$,$J$$(B) ;; $B$G$9!#%*%W%7%g%s$N;XDj$J$I$,0[$J$k(B look $B$,$"$l$P!"$40lJs2<$5$$!#(B ;; $B$h$m$7$/$*4j$$$$$?$7$^$9!#(B ;; ;; ftp://ftp.u-aizu.ac.jp:/pub/SciEng/nihongo/ftp.cc.monash.edu.au/ ;; $B$KCV$$$F$"$k(B edict $B$rMxMQ$9$k$H temp ;; % skkdic-expr temp | skkdic-sort > SKK-JISYO.E2J ;; % rm temp ;; ;; $B$G$-$?(B SKK-JISYO.E2J $B$NMxMQJ}K!$O?'!9$"$j$^$9$,!"(B ;; ;; % skkdic-expr SKK-JISYO.E2J + /usr/local/share/skk/SKK-JISYO.L\ ;; | skkdic-sort > SKK-JISYO.L ;; ;; $B$J$I$H$7$F!"(BSKK-JISYO.L $B$H%^!<%8$7$F;H$&$N$, ;; $B$3$N%W%m%0%i%`$O!"(BeWnn for Linux/FreeBSD $B$N9-9p$KN`;w$N5!G=>R2p$,$"$C$?$N$r(B ;; $B8+$F!"!V$3$s$J5!G=$J$i(B SKK $B>e$K$9$0%$%s%W%j%a%s%H$G$-$k$5!W$H;W$&$H$?$^$i$/(B ;; $B$J$C$F=q$$$F$7$^$$$^$7$?!#(BeWnn $B$KIi$1$k$J!"(BSKK! ;; ;; $B@N!"(BSeiichi Namba $B$5$s$H0l=o$K(B Emacs Lisp $B$G(B ;; look interface $B$r=q$$$?$3$H$,$"$k$N$G$9$,!":#2s$O$=$N:]$N7P83$r@8$+$9$3$H$,(B ;; $B$G$-$^$7$?!#FqGH$5$s$K46\$7$/$O(B skk-look.el $B%U%!%$%k$N%3%a%s%H$d(B Info $B$r;2>H$N;v!#(B CONVERSION-ARGUMENTS $B$O(B `skk-look-conversion-arguments' $B$r(B $B0l;~E*$KCV$-49$($?$$;~$K;XDj$9$k!#(B $B%G%U%)%k%H$G$O(B SKK abbrev $B%b!<%I$N$_$GM-8z$J5!G=$@$,!"(B NOT-ABBREV-ONLY $B$r;XDj$9$k;v$G>o$KM-8z$H$J$k!#(B EXPAND-NULL $B$r;XDj$9$k$H!"F~NO$,(B \"*\" $B$N$_$N;~$O(B words $B%U%!%$%k$K$"$kA4$F$N8+=P$7$,BP>]$H$J$k!#(B `skk-look-recursive-search', `skk-look-expanded-word-only', `skk-look-use-ispell' $B$r0l;~E*$KJQ99$7$?$$>l9g$K$O(B `let' $B$K$h$jB+G{$7$F;H$&;v!#(B" (when (and (not (memq skk-use-look '(nil completion))) (or not-abbrev-only skk-abbrev-mode) (or expand-null (not (string= skk-henkan-key "*"))) (eq (aref skk-henkan-key (1- (length skk-henkan-key))) ?*)) (let* ((skk-look-conversion-arguments (or conversion-arguments skk-look-conversion-arguments)) (substr (substring skk-henkan-key 0 (1- (length skk-henkan-key)))) (v (if (and (not (memq skk-look-use-ispell '(nil completion))) (> (length substr) 0)) (skk-look-ispell substr 'conversion) (skk-look-1 substr 'conversion))) skk-henkan-key skk-use-look v2 v3) (cond ((not skk-look-recursive-search) v) (t (dolist (key v) (let ((skk-current-search-prog-list (copy-sequence skk-search-prog-list))) (setq skk-henkan-key key) (while skk-current-search-prog-list (setq v3 (let (skk-use-numeric-conversion) (skk-search)) v2 (if (or (not skk-look-expanded-word-only) v3) (skk-nunion v2 (cons key v3)) v2))))) v2))))) (defun skk-look-1 (word situation) ;; core search engine (let ((format-string (cond ((eq situation 'conversion) skk-look-conversion-arguments) ((eq situation 'completion) skk-look-completion-arguments) (t "%s"))) args preargs postargs) (if (string= format-string "%s") (setq args (list word)) (save-match-data (when (string-match "%s" format-string) (setq preargs (substring format-string 0 (match-beginning 0)) postargs (substring format-string (match-end 0)) args (append (delete "" (split-string preargs " ")) (list word) (delete "" (split-string postargs " "))))))) (with-temp-buffer (when (and (zerop (apply #'call-process skk-look-command nil t nil args)) (> (buffer-size) 0)) (delete word (split-string (buffer-substring-no-properties (point-min) (1- (point-max))) "\n")))))) ;;;###autoload (defun skk-look-completion (&optional completion-arguments not-abbrev-only expand-null) "look $B%3%^%s%I$rMxMQ$7$FJd408uJd$rF@$k!#(B COMPLETION-ARGUMENTS $B$O(B `skk-look-completion-arguments' $B$r(B $B0l;~E*$KCV$-49$($?$$;~$K;XDj$9$k!#(B $B%G%U%)%k%H$G$O(B SKK abbrev $B%b!<%I$N$_$GM-8z$J5!G=$@$,!"(B NOT-ABBREV-ONLY $B$r;XDj$9$k;v$G>o$KM-8z$H$J$k!#(B EXPAND-NULL $B$r;XDj$9$k$H!"F~NO$,6u$G$"$k;~$K(B words $B%U%!%$%k$K$"$kA4$F$N8+=P$7$rJV$9!#(B `skk-look-use-ispell' $B$r0l;~E*$KJQ99$7$?$$>l9g$K$O(B `let' $B$K$h$jB+G{$7$F;H$&;v!#(B" (let* ((numericp (and skk-use-numeric-conversion (save-match-data (string-match "[0-9$B#0(B-$B#9(B]" skk-comp-key)))) (conv-key (and numericp (skk-num-compute-henkan-key skk-comp-key))) (comp-key (or conv-key skk-comp-key)) word) (when (and (not (memq skk-use-look '(nil conversion))) (or not-abbrev-only skk-abbrev-mode) (or expand-null (not (string= comp-key "")))) (let ((skk-look-completion-arguments (or completion-arguments skk-look-completion-arguments))) (when skk-comp-first ;; look $B$OJ#?t$N8uJd$rEG$/$N$G!"0lC6Cy$a$F$*$$$F!"(B ;; $B0l$D$:$D(B complete $B$9$k!#(B (setq skk-look-completion-words (if (and (not (memq skk-look-use-ispell '(nil conversion))) (> (length comp-key) 0)) (skk-look-ispell comp-key 'completion) (skk-look-1 comp-key 'completion)))) (setq word (pop skk-look-completion-words)) (when (and skk-comp-use-prefix (not (string= skk-comp-prefix ""))) (save-match-data (let ((regexp-key (concat "^" (regexp-quote comp-key) (skk-comp-get-regexp skk-comp-prefix)))) (while (and word (not (string-match regexp-key word))) (setq word (pop skk-look-completion-words)))))) (when word (if numericp (concat skk-comp-key (substring word (length comp-key))) word)))))) ;;;###autoload (defun skk-look-ispell (word &optional situation) (require 'ispell) (ispell-accept-buffer-local-defs) (message "") (process-send-string ispell-process "%\n") ;put in verbose mode (process-send-string ispell-process (concat "^" word "\n")) (while (progn (accept-process-output ispell-process) (not (string= "" (car ispell-filter))))) (setq ispell-filter (cdr ispell-filter)) ; remove extra \n (let ((poss (when (and ispell-filter (listp ispell-filter)) ;; 1: t for an exact match. ;; 2: A string containing the root word matched via suffix ;; removal. ;; 3: A list of possible correct spellings of the format: ;; (ORIGINAL-WORD OFFSET MISS-LIST GUESS-LIST) ;; ORIGINAL-WORD is a string of the possibly misspelled ;; word. ;; OFFSET is an integer giving the line offset of the word. ;; MISS-LIST and GUESS-LIST are possibly null lists of ;; guesses and misses. ;; 4: Nil when an error has occurred." (or (ispell-parse-output (car ispell-filter)) 'error))) ret var) (setq ispell-filter nil) (cond ((eq poss 'error) (skk-message "ispell process $B$G%(%i!<$,H/@8$7$^$7$?(B" "error in ispell process") (sit-for 1) (message "") nil) ((or (eq poss t) ;; root word $B$KBP$7$F(B skk-look-1 $B$+$1$A$c$*$&$+!)(B ;; $B$G$b$A$C$H$bJd40$B$c$J$/$J$C$A$^$$$^$9$M(B... (^^;;$B!#(B (stringp poss) (null (or (nth 2 poss) (nth 3 poss)))) (skk-look-1 word situation)) (t (setq var (nconc (nth 2 poss) (nth 3 poss))) (dolist (key var) ;; call look command by each candidate put out by ispell. (setq ret (skk-nunion ret (cons key (skk-look-1 key situation))))) (delete word (skk-nunion (skk-look-1 word situation) ret)))))) (provide 'skk-look) ;;; skk-look.el ends here ddskk-15.2/skk-lookup.el0000644000570400056700000004313012074501114015217 0ustar kitamotoopenlab;;; skk-lookup.el --- SKK lookup gateway -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000, 2001 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-lookup.el,v 1.41 2013/01/13 09:45:48 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Created: Sep. 23, 1999 ;; Last Modified: $Date: 2013/01/13 09:45:48 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary ;; Keisuke Nishida $B$5$s$N:n$i$l$?<-=q8!:w%D!<%k(B ;; Lookup $B$H(B SKK $B$H$N(B gateway $B$r9T$$!"(BLookup $B$G8!:w$G$-$k<-=q$r;H$C(B ;; $B$F8uJd$r=PNO$9$k%W%m%0%i%`$G$9!#(B ;; ;; ;; make $B$r ;; $BEvA3$G$9$,!"(BLookup $B$,%$%s%9%H!<%k$5$l$F$$$F!"$+$D!"BP1~$9$k<-=q$,(B ;; $B%^%&%s%H$5$l$F$$$J$$$H;H$($^$;$s!#(B ;; ;; $BJF2(B $B%K%e!<%;%s%A%e%j!<1QOB!&?7%/%i%&%sOB1Q<-E5(B ;; "GENIUS" ; $B%8!<%K%"%91QOB(B, $B%8!<%K%"%91QOB!&OB1Q<-E5(B ;; "GN99EP01" ;Super$BE}9g<-=q(B99 Disk1/$B8=BeMQ8l$N4pACCN<1(B ;; "GN99EP02" ;Super$BE}9g<-=q(B99 Disk2/$B8=BeMQ8l$N4pACCN<1(B ;; "IWAKOKU" ;$B4dGH9q8l<-E5(B ;; "KANJIGEN"; Super$BE}9g<-=q(B99 Disk2/$B4A;z8;(B : EPWING ;; "KANWA"; ;; "KOJIEN" ; $B9-<-1qBh(B5$BHG(B($B4dGH(B,EPWING) ;; "KOKUGO" ;$B;0>JF2(B $BF|K\8l<-E5!J8=Be9q8l!"30Mh8l!K(B ;; "KOUJIEN"; $B9-<-1qBh(B4$BHG(B($B4dGH(B,EPWING) $B%^%k%A%a%G%#%"HG(B ;; "MYPAEDIA" ;$B!V<-!&E5!&HW!WImB0$N%^%$%Z%G%#%"(B ;; ; mypaedia-fpw $B$+$i@8@.$7$?(B PC Success $BHG%^%$%Z%G%#%"(B ;; (FreePWING $B<-=q(B) ;; "NEWANC" ; $B%K%e!<%"%s%+!<1QOB(B ;; "PLUS"; ;; "RIKAGAKU" ;$BM}2=3X<-E5(B ;; "WAEI"; ;; "ispell"; ;; "jedict"; ;; ;; $B$4<+J,$G;HMQ$7$F$$$k<-=q$N=PNO$,>e2A$7$F(B ("$B$3$7$g$&(B" $B$NJ8;zNsItJ,$OLdBj$H$J$C$F$$$k8!:wBP>]$H(B ;; $BF~$lBX$($^$7$g$&(B) `lookup-dictionary-name' $B$H(B ;; `lookup-entry-heading' $B$,JV$9CM$r;29M$K!"(B`skk-lookup-option-alist' ;; $B$KI,MW$J%j%9%H$r2C$($^$7$g$&!#?7$?$J%j%9%H$r2C$($i$l$?$i@'Hs(B ;; skk@ring.gr.jp $B08$F$KCN$;$F2<$5$$!#(Bdefault value $B$K $B$5$s!"3+H/$N=i4|(B ;; $B$+$i%G%P%C%0$r $B$5$s!"(Bsphere $B$5(B ;; $B$s$K?<$/46' is put out. ;;(lookup-enable-gaiji nil) (lookup-gaiji-alternate "") (henkan-key skk-henkan-key) okuri-process v) (cond ((not (or skk-henkan-okurigana skk-okuri-char)) ;; okuri-nasi (setq okuri-process 0)) ;; okuri-ari and `skk-lookup-process-henkan-key-function' is non-nil. (skk-lookup-process-henkan-key-function (setq v (funcall skk-lookup-process-henkan-key-function henkan-key) henkan-key (car v) okuri-process (cdr v))) ;; okuri-ari and (not skk-process-okuri-early) (skk-henkan-okurigana ;; $BAw$j2>L>$N$+$J(B prefix $B$rL>$rB-$7$F(B lookup $B$KEO$9!#(B (setq henkan-key (concat (substring henkan-key 0 (1- (length henkan-key))) skk-henkan-okurigana) okuri-process 1)) ;; okuri-ari and skk-process-okuri-early (skk-okuri-char ;; $BAw$j2>L>$N$+$J(B prefix $B$r$-!Z??LZ!&(B(GAIJI)$B!&Kj![(B' ;; As GAIJI cannot be processed by skk-lookup.el, the heading ;; is equal to `$B$^!>$-!Z??LZ!&!&Kj![(B' for skk-lookup.el. ;; It causes to produce a null string candidate. ;; (split-string "$B??LZ!&!&Kj(B" "$B!&(B") -> ("$B??LZ(B" "" "$BKj(B") ;; So return nil if STRING is a null string. nil) ;; okuri-nasi ((zerop process-type) string) ;; okuri-ari (t (let* ((okuri-length (cond ;; has `skk-henkan-okurigana'. ((= process-type 1) (length skk-henkan-okurigana)) ;; `skk-process-okuri-early' is non-nil. ((= process-type 2) ;; don't know exactly how long okurigana is. ;; truncate length of one character anyway. 1))) (okurigana (and (> (length string) okuri-length) (substring string (- okuri-length))))) (cond ( ;; cannot detect okurigana in STRING. (not okurigana) nil) (skk-henkan-okuri-strictly (and (string= skk-henkan-okurigana okurigana) ;; cut okurigana off. (substring string 0 (- okuri-length)))) ;; `skk-process-okuri-early' or not `skk-henkan-okuri-strictly'. ((string= (skk-okurigana-prefix okurigana) skk-okuri-char) ;; cut okurigana off. (substring string 0 (- okuri-length)))))))) (defun skk-lookup-process-heading (name heading okuri-process-type) ;; heading $B$7$+$K$b>pJs$rH$9$k$+!)(B (save-match-data (do* ((pickup (skk-lookup-get-pickup-regexp name)) (pickup-regexp (if (consp pickup) (car pickup))) (match (if (consp pickup) (cdr pickup) 1)) (split-regexp (skk-lookup-get-split-regexp name)) (cleanup-regexp (skk-lookup-get-cleanup-regexp name)) (candidates-list (if (not pickup) (list heading))) candidates-string) ;; `$B$@$7!Z=P$7![!Z=P$7!&!R=P=A!S![!Z!P;3l9g(B ;; $B$,$"$k$N$G%k!<%W$G:n6H$9$k!#(B ((or (string= heading "") (and pickup-regexp (not (string-match pickup-regexp heading)))) candidates-list) (setq match (eval match)) (cond ((and pickup-regexp (listp match)) (setq candidates-string (mapconcat (lambda (num) (match-string-no-properties num heading)) match "") ;; XXX MATCH $B$,J#?t$@$C$?$i!"(Bheading $B@Z$j=P$7$O(B ;; $B0lEY$@$1$7$+$G$-$J$$(B...$B!#(B heading "")) (pickup-regexp (setq candidates-string (match-string-no-properties match heading) heading (substring heading (min (1+ (match-end match)) (length heading))))) (t ;; XXX never be used? (setq candidates-string heading heading ""))) (when cleanup-regexp (while (string-match cleanup-regexp candidates-string) (setq candidates-string (concat (substring candidates-string 0 (match-beginning 0)) (substring candidates-string (match-end 0)))))) (cond (split-regexp (lookup-foreach (lambda (c) (unless (string= lookup-search-pattern c) (setq c (skk-lookup-process-okurigana c okuri-process-type)) (when c (setq candidates-list (cons c (delete c candidates-list)))))) (split-string candidates-string split-regexp))) ((string= lookup-search-pattern candidates-string) nil) (t (setq candidates-string (skk-lookup-process-okurigana candidates-string okuri-process-type)) (when candidates-string (setq candidates-list (cons candidates-string (delete candidates-string candidates-list))))))))) ;; The following four functions were imported from lookup.el and ;; lookup-types.el. (defun skk-lookup-default-module () (or skk-lookup-default-module (setq skk-lookup-default-module (car (skk-lookup-module-list))))) (defun skk-lookup-module-list () (or skk-lookup-module-list (setq skk-lookup-module-list (mapcar 'skk-lookup-new-module (or skk-lookup-search-modules '(("%SKK-EVERY" ""))))))) (defun skk-lookup-new-module (spec) (let ((name (car spec)) (id-list (cdr spec)) module agents match start) ;; get agent list (lookup-foreach (lambda (id) ;; get the list of agents matched with ID (setq match (concat "^" (regexp-quote id)) start agents) (lookup-foreach (lambda (e) (when (string-match match (lookup-agent-id e)) (setq agents (cons e agents)))) (skk-lookup-agent-list)) (when (eq start agents) (error "No match agent: %s" id))) ;; get a list of agent-IDs (lookup-nunique (mapcar (lambda (id) (string-match "^[^:]*" id) (substring id 0 (match-end 0))) id-list))) (setq agents (nreverse (lookup-nunique agents 'eq))) ;; construct module (setq module (lookup-make-module name nil)) (lookup-module-put-property module 'agents agents) (lookup-module-put-property module 'id-list id-list) (lookup-module-init module))) (defun skk-lookup-agent-list () (or skk-lookup-agent-list (progn (unless skk-lookup-search-agents ;; copy-list is a C primitive of XEmacs, but FSFmacs has it ;; in cl.el. (setq skk-lookup-search-agents (let ((agents (copy-sequence lookup-search-agents)) e) ;; use `skk-kakasi.el' instead of ndkks. (setq agents (delete '(ndkks) agents)) (while (setq e (assq 'ndcookie agents)) (setq agents (delq e agents))) (while (setq e (assq 'ndnmz agents)) (setq agents (delq e agents))) agents))) (setq skk-lookup-agent-list (mapcar 'lookup-new-agent skk-lookup-search-agents))))) ;; the following two are to check dictionary output of heading for ;; creating new regexp. (defun skk-lookup-test-regexp (regexp place string) "Search STRING by REGEXP and pick up a part of STRING in PLACE." (string-match regexp string) (match-string-no-properties place string)) (defun skk-lookup-pickup-headings (pattern method) "Search PATTERN by METHOD. METHOD $B$OJQ?t(B`lookup-search-methods'$B$r;2>H$N$3$H(B." (let ((module (skk-lookup-default-module)) (lookup-gaiji-alternate "") ;;lookup-enable-gaiji ; not to put out gaiji. var) (lookup-module-setup module) (lookup-foreach (lambda (dictionary) (lookup-foreach (lambda (entry) (setq var (nconc (list (list (lookup-dictionary-name dictionary) (lookup-dictionary-id dictionary) (lookup-entry-heading entry) ;;(lookup-dictionary-command dictionary 'content entry) )) var))) (lookup-vse-search-query dictionary (lookup-make-query method pattern)))) (lookup-module-dictionaries module)) var)) (defun skk-lookup-map-prefix-and-kana () (let ((lenv (length skk-lookup-kana-vector)) (n 0) kana prefix prefix-kana alist) (while (> lenv n) (setq kana (aref skk-lookup-kana-vector n) prefix (aref skk-kana-rom-vector n) prefix-kana (assoc prefix alist) n (1+ n)) (if prefix-kana (setcdr prefix-kana (cons kana (cdr prefix-kana))) (setq alist (cons (cons prefix (list kana)) alist)))) alist)) ;; ;; (defun skk-lookup-get-content-setup-dic () (interactive) (let ((module (skk-lookup-default-module))) (lookup-module-setup module) (setq skk-lookup-get-content-default-dic-name (lookup-dictionary-name (setq skk-lookup-get-content-default-dic (nth skk-lookup-get-content-nth-dic (lookup-module-dictionaries module)))))) (message "skk-lookup-get-content: %s" skk-lookup-get-content-default-dic-name)) ;;;###autoload (defun skk-lookup-get-content (word &optional listing-p) (unless skk-lookup-get-content-default-dic (skk-lookup-get-content-setup-dic)) (let* ((query (lookup-vse-search-query skk-lookup-get-content-default-dic (lookup-make-query 'exact word))) (content (if query (lookup-dictionary-command skk-lookup-get-content-default-dic 'content (car query)) nil))) (when content (setq content (replace-regexp-in-string "<[^>]*>" "" (if listing-p (nth 1 (split-string content "\n")) content)) content (format "%s [%s]" content skk-lookup-get-content-default-dic-name))) content)) (provide 'skk-lookup) ;;; skk-lookup.el ends here ddskk-15.2/skk-macs.el0000644000570400056700000011352312125027647014650 0ustar kitamotoopenlab;;; skk-macs.el --- macros and inline functions commonly used in SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999-2010 SKK Development Team ;; Copyright (C) 1993-2000 Free Software Foundation, Inc. ;; Maintainer: SKK Development Team ;; Version: $Id: skk-macs.el,v 1.199 2013/03/28 11:55:19 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/03/28 11:55:19 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (defvar mule-version) (defvar skk-emacs-modeline-property)) (eval-when-compile (require 'advice)) (eval-and-compile (require 'skk-vars)) ;;;; macros (when (eval-when-compile (and (featurep 'emacs) (= emacs-major-version 22))) (defmacro ignore-errors (&rest body) "Execute BODY; if an error occurs, return nil. Otherwise, return result of last form in BODY." `(condition-case nil (progn ,@body) (error nil)))) (defmacro skk-defadvice (function &rest everything-else) "Defines a piece of advice for FUNCTION (a symbol). This is like `defadvice', but warns if FUNCTION is a subr command and advice doesn't give arguments of `interactive'. See `interactive' for details." (let ((origfunc (and (fboundp function) (if (ad-is-advised function) (ad-get-orig-definition function) (symbol-function function)))) interactive) (unless (or (not origfunc) (not (subrp origfunc)) (memq function ; XXX possibilly Emacs version dependent ;; built-in commands which do not have interactive specs. '(abort-recursive-edit bury-buffer delete-frame delete-window exit-minibuffer))) ;; check if advice definition has a interactive call or not. (setq interactive (cond ((and (stringp (nth 1 everything-else)) ; have document (eq 'interactive (car-safe (nth 2 everything-else)))) (nth 2 everything-else)) ((eq 'interactive (car-safe (nth 1 everything-else))) (nth 1 everything-else)))) (cond ((and (commandp origfunc) (not interactive)) (message "\ *** WARNING: Adding advice to subr %s\ without mirroring its interactive spec ***" function)) ((and (not (commandp origfunc)) interactive) (setq everything-else (delq interactive everything-else)) (message "\ *** WARNING: Deleted interactive call from %s advice\ as %s is not a subr command ***" function function)))) `(defadvice ,function ,@everything-else))) ;;;###autoload (put 'skk-defadvice 'lisp-indent-function 'defun) (def-edebug-spec skk-defadvice defadvice) (defmacro skk-save-point (&rest body) `(let ((skk-save-point (point-marker))) (unwind-protect (progn ,@body) (goto-char skk-save-point) (skk-set-marker skk-save-point nil)))) (def-edebug-spec skk-save-point t) (defmacro skk-message (japanese english &rest arg) "$B%a%C%;!<%8$rI=<($9$k!#(B `skk-japanese-message-and-error' $B$,(B non-nil $B$G$"$l$P(B JAPANESE $B$r!"(B nil $B$G(B $B$"$l$P(B ENGLISH $B$r%(%3!<%(%j%"$KI=<($9$k!#(B ARG $B$O(B `message' $B4X?t$NBh#20z?t0J9_$N0z?t$H$7$FEO$5$l$k!#(B" (append (if arg `(message (if skk-japanese-message-and-error ,japanese ,english)) `(message "%s" (if skk-japanese-message-and-error ,japanese ,english))) arg)) (defmacro skk-error (japanese english &rest arg) "$B%a%C%;!<%8$rI=<($7$F!"%(%i!<$rH/@8$5$;$k!#(B `skk-japanese-message-and-error' $B$,(B non-nil $B$G$"$l$P(B JAPANESE $B$r!"(B nil $B$G(B $B$"$l$P(B ENGLISH $B$r%(%3!<%(%j%"$KI=<($7!"%(%i!<$rH/@8$5$;$k!#(B ARG $B$O(B `error' $B4X?t$NBh#20z?t0J9_$N0z?t$H$7$FEO$5$l$k!#(B" (append (if arg `(error (if skk-japanese-message-and-error ,japanese ,english)) `(error "%s" (if skk-japanese-message-and-error ,japanese ,english))) arg)) (defmacro skk-yes-or-no-p (japanese english) "$B%f!<%6$K(B yes-or-no $B$rl9g$O(B `skk-yes-or-no-p' $B$r(B $B;H$&$h$j$b%*%j%8%J%k$N(B `yes-or-no-p' $B$r;HMQ$7$?J}$,%3!<%I$,J#;($K$J$i$J$$>l9g(B $B$,$"$k!#(B" `(yes-or-no-p (if skk-japanese-message-and-error ,japanese ,english))) (defmacro skk-y-or-n-p (japanese english) "$B%f!<%6$K(B \"y or n\" $B$rl9g$K;H$&!#(B" `(unwind-protect (progn ,@form) (setq skk-previous-point (point)))) (def-edebug-spec skk-with-point-move t) (defmacro skk-face-on (object start end face &optional priority) (cond ((eval-when-compile (featurep 'xemacs)) `(let ((inhibit-quit t)) (if (not (extentp ,object)) (progn (setq ,object (make-extent ,start ,end)) (if (not ,priority) (set-extent-face ,object ,face) (set-extent-properties ,object (list 'face ,face 'priority ,priority)))) (set-extent-endpoints ,object ,start ,end)))) (t `(let ((inhibit-quit t)) (if (not (overlayp ,object)) (progn (setq ,object (make-overlay ,start ,end)) (when ,priority (overlay-put ,object 'priority ,priority)) (overlay-put ,object 'face ,face) ;;(overlay-put (, object) 'evaporate t) ) (move-overlay ,object ,start ,end)))))) (defmacro skk-cannot-be-undone (&rest body) `(let ((buffer-undo-list t) ;;buffer-read-only (modified (buffer-modified-p))) (unwind-protect (progn ,@body) (set-buffer-modified-p modified)))) ;;;###autoload (put 'skk-loop-for-buffers 'lisp-indent-function 1) (defmacro skk-loop-for-buffers (buffers &rest body) "BUFFERS $B$,;XDj$9$k3F%P%C%U%!$K0\F0$7$F(B BODY $B$r= emacs-major-version 24) (and (= emacs-major-version 23) (>= emacs-minor-version 2))) ;; GNU Emacs 23.2 or later ;; `called-interactively-p' takes one argument. `(called-interactively-p ,kind)) (t ;; GNU Emacs 22 and 23.1 ;; `called-interactively-p' takes no argument and is equivalent ;; to (called-interactively-p 'any) in later Emacs versions. `(if (eq ,kind 'interactive) (interactive-p) (called-interactively-p))))) (defmacro skk-delete-overlay (list) ;; skk-dcomp-multiple-hide $B$H(B skk-inline-hide $B$rE}9g$7$?!#(B `(when ,list (dolist (o ,list) (delete-overlay o)) (setq ,list nil))) (defmacro skk-set-deactivate-im-func (func) (cond ((boundp 'deactivate-current-input-method-function) ;; GNU Emacs 24.2 $B$+$i(B `(setq deactivate-current-input-method-function ,func)) (t ;; GNU Emacs 24.1 $B$^$G(B `(setq inactivate-current-input-method-function ,func)) )) (defmacro skk-deactivate-input-method () (cond ((fboundp 'deactivate-input-method) ;; GNU Emacs 24.2 $B$+$i(B '(deactivate-input-method)) (t ;; GNU Emacs 24.1 $B$^$G(B '(inactivate-input-method)) )) (defmacro skk-facep (face) (cond ((featurep 'xemacs) `(find-face ,face)) (t `(facep ,face)))) ;;; functions. ;; version dependent ;; Many functions are derived from emu (APEL). (when (eval-when-compile (and (featurep 'emacs) (= emacs-major-version 22))) ;; GNU Emacs 22 $B$^$G(B ;; . char-valid-p is a built-in function in `C source code'. ;; (char-valid-p OBJECT &optional GENERICP) ;; Return t if OBJECT is a valid normal character. ;; If optional arg GENERICP is non-nil, also return t if OBJECT is ;; a valid generic character. (defalias 'characterp 'char-valid-p) ;; GNU Emacs 23 $B$+$i(B ;; . char-valid-p is an alias for `characterp' in `mule.el'. ;; (char-valid-p OBJECT &optional IGNORE) ;; This function is obsolete since 23.1; ;; use `characterp' instead. ;; . characterp is a built-in function in `C source code'. ;; (characterp OBJECT &optional IGNORE) ;; Return non-nil if OBJECT is a character. ) (when (eval-when-compile (featurep 'emacs)) ;; int-char() $B$,=P8=$9$k$N$O(B skk-compute-henkan-lists() $B$N$_(B ;; XEmacs $B$G$O(B int-char() $B$OI8=`!)(B (defalias 'int-char 'identity)) ;;; string-to-char-list $B$,=P8=$9$k$N$O(B 9 $B9T2<$N(B defalias $B$N$_(B ;;; $B$h$C$F(B string-to-int-list $B$NDj5A$rJQ99$7$F$7$^$&(B ;; (when (eval-when-compile (featurep 'emacs)) ;; (defun string-to-char-list (string) ;; "Return a list of which elements are characters in the STRING." ;; (mapcar #'identity string))) ;;; string-to-int-list() $B$NDj5A$r(B macro $B$XJQ99(B ;; (when (eval-when-compile (featurep 'emacs)) ;; ;; (defalias 'string-to-int-list 'string-to-char-list)) ;; (defun string-to-int-list (string) ;; "Return a list of which elements are characters in the STRING." ;; (mapcar #'identity string))) ;; ;; (when (eval-when-compile (featurep 'xemacs)) ;; (defun string-to-int-list (string) ;; (mapcar #'char-int string))) (defmacro string-to-int-list (string) (cond ((featurep 'xemacs) `(mapcar #'char-int ,string)) ; XEamcs (t `(mapcar #'identity ,string)))) ; GNU Emacs (when (eval-when-compile (featurep 'emacs)) (defun character-to-event (ch) "Convert keystroke CH into an event structure, replete with bucky bits. Note that CH (the keystroke specifier) can be an integer, a character or a symbol such as 'clear." ch)) (when (eval-when-compile (featurep 'emacs)) (defun event-to-character (event) "Return the character approximation to the given event object. If the event isn't a keypress, this returns nil." (cond ((symbolp event) ;; mask is (BASE-TYPE MODIFIER-BITS) or nil. (let ((mask (get event 'event-symbol-element-mask))) (if mask (let ((base (get (car mask) 'ascii-character))) (if base (logior base (cadr mask))))))) ((integerp event) event)))) (when (eval-when-compile (featurep 'emacs)) (defun cancel-undo-boundary () "Cancel undo boundary." (if (and (consp buffer-undo-list) (null (car buffer-undo-list))) (setq buffer-undo-list (cdr buffer-undo-list))))) (when (eval-when-compile (featurep 'xemacs)) (defun substring-no-properties (string &optional from to) "Return a substring of string, without text properties. It starts at index from and ending before to. to may be nil or omitted; then the substring runs to the end of string. If from is nil or omitted, the substring starts at the beginning of string. If from or to is negative, it counts from the end. With one argument, just copy string without its properties." (let ((substr (copy-sequence (substring string (or from 0) to)))) (set-text-properties 0 (length substr) nil substr) substr))) ;; From GNU Emacs 22.1. (when (eval-when-compile (and (featurep 'xemacs) (= emacs-major-version 21) (= emacs-minor-version 4))) (defun replace-regexp-in-string (regexp rep string &optional fixedcase literal subexp start) "Replace all matches for REGEXP with REP in STRING. Return a new string containing the replacements. Optional arguments FIXEDCASE, LITERAL and SUBEXP are like the arguments with the same names of function `replace-match'. If START is non-nil, start replacements at that index in STRING. REP is either a string used as the NEWTEXT arg of `replace-match' or a function. If it is a function, it is called with the actual text of each match, and its value is used as the replacement text. When REP is called, the match-data are the result of matching REGEXP against a substring of STRING. To replace only the first match (if any), make REGEXP match up to \\' and replace a sub-expression, e.g. (replace-regexp-in-string \"\\\\(foo\\\\).*\\\\'\" \"bar\" \" foo foo\" nil nil 1) => \" bar foo\" " ;; To avoid excessive consing from multiple matches in long strings, ;; don't just call `replace-match' continually. Walk down the ;; string looking for matches of REGEXP and building up a (reversed) ;; list MATCHES. This comprises segments of STRING which weren't ;; matched interspersed with replacements for segments that were. ;; [For a `large' number of replacements it's more efficient to ;; operate in a temporary buffer; we can't tell from the function's ;; args whether to choose the buffer-based implementation, though it ;; might be reasonable to do so for long enough STRING.] (let ((l (length string)) (start (or start 0)) matches str mb me) (save-match-data (while (and (< start l) (string-match regexp string start)) (setq mb (match-beginning 0) me (match-end 0)) ;; If we matched the empty string, make sure we advance by one char (when (= me mb) (setq me (min l (1+ mb)))) ;; Generate a replacement for the matched substring. ;; Operate only on the substring to minimize string consing. ;; Set up match data for the substring for replacement; ;; presumably this is likely to be faster than munging the ;; match data directly in Lisp. (string-match regexp (setq str (substring string mb me))) (setq matches (cons (replace-match (if (stringp rep) rep (funcall rep (match-string 0 str))) fixedcase literal str subexp) (cons (substring string start mb) ; unmatched prefix matches))) (setq start me)) ;; Reconstruct a string from the pieces. (setq matches (cons (substring string start l) matches)) ; leftover (apply #'concat (nreverse matches)))))) ;; For GNU Emacs. (when (eval-when-compile (featurep 'emacs)) (defun next-command-event (&optional event prompt) "Read an event object from the input stream. If EVENT is non-nil, it should be an event object and will be filled in and returned; otherwise a new event object will be created and returned. If PROMPT is non-nil, it should be a string and will be displayed in the echo area while this function is waiting for an event." (read-event prompt))) (when (eval-when-compile (featurep 'xemacs)) (defun set-buffer-multibyte (flag) "Set the multibyte flag of the current buffer to FLAG. If FLAG is t, this makes the buffer a multibyte buffer. If FLAG is nil, this makes the buffer a single-byte buffer. The buffer contents remain unchanged as a sequence of bytes but the contents viewed as characters do change. \[Emacs 20.3 emulating function]" flag)) (defun skk-ding (&optional arg sound device) "`ding' $B$N(B Emacsen $B$K$h$k0c$$$r5[<}$9$k!#(B" (cond ((eval-when-compile (featurep 'xemacs)) (ding arg sound device)) (t (ding arg)))) (defun skk-color-cursor-display-p () (cond ((eval-when-compile (featurep 'xemacs)) (eq (device-class (selected-device)) 'color)) ((eval-when-compile (featurep 'emacs)) (and (skk-find-window-system) (fboundp 'x-display-color-p) (x-display-color-p))))) (defun skk-char-to-unibyte-string (char) (ignore-errors (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; GNU Emacs 23.1 or later (string-make-unibyte (char-to-string char))) (t (char-to-string char))))) (defun skk-ascii-char-p (char) (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; GNU Emacs 23.1 or later (eq (char-charset char skk-charset-list) 'ascii)) (t (eq (char-charset char) 'ascii)))) (defun skk-jisx0208-p (char) (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; GNU Emacs 23.1 or later (eq (char-charset char skk-charset-list) 'japanese-jisx0208)) (t (eq (char-charset char) 'japanese-jisx0208)))) (defun skk-jisx0213-p (char) (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; GNU Emacs 23.1 or later (memq (char-charset char skk-charset-list) '(japanese-jisx0213-1 japanese-jisx0213.2004-1 japanese-jisx0213-2))) (t (and (featurep 'jisx0213) ; Mule-UCS (memq (char-charset char) '(japanese-jisx0213-1 japanese-jisx0213-2)))))) (defun skk-split-char (ch) ;; http://mail.ring.gr.jp/skk/200908/msg00006.html (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; C $B$N(B split-char() $B$HF1MM$N5!G=$@$,!"(Bchar-charset() $B$N8F=P$7$K$*$$$F(B ;; $BJ8;z=89g$NA*Br;h$r(B skk-charset-list $B$K4^$^$l$k$b$N$K@)8B$9$k!#(B ;; $B$3$l$ONc$($P!"(Bjapanese-jisx0208 $B$NJ8;z$,(B unicode-bmp $B$KB0$9$k!"(B ;; $B$HH=Dj$5$l$k$h$&$J>u67$r2sHr$9$k!#(B (let* ((charset (char-charset ch skk-charset-list)) (code (encode-char ch charset)) (dimension (charset-dimension charset)) val) (while (> dimension 0) (setq val (cons (logand code 255) ;; 0xFF val)) (setq code (lsh code -8)) (setq dimension (1- dimension))) (cons charset val))) (t ;; Emacs 22 $B$*$h$S(B XEmacs (split-char ch)))) (defun skk-char-charset (ch &optional restriction) (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; GNU Emacs 23.1 or later (char-charset ch restriction)) (t (char-charset ch)))) ;; this one is called once in skk-kcode.el, too. (defun skk-charsetp (object) (cond ((eval-when-compile (featurep 'xemacs)) (find-charset object)) (t (charsetp object)))) (defun skk-indicator-to-string (indicator &optional no-properties) "SKK $B%$%s%8%1!<%?7?%*%V%8%'%/%H(B INDICATOR $B$rJ8;zNs$KJQ49$9$k!#(B" (cond ((eval-when-compile (featurep 'xemacs)) (if (stringp indicator) indicator (cdr indicator))) (t (if no-properties (with-temp-buffer (insert indicator) (buffer-substring-no-properties (point-min) (point-max))) indicator)))) (defun skk-mode-string-to-indicator (mode string) "$BJ8;zNs(B STRING $B$r(B SKK $B%$%s%8%1!<%?7?%*%V%8%'%/%H$KJQ49$9$k!#(B" (cond ((eval-when-compile (featurep 'xemacs)) (cons (cdr (assq mode skk-xemacs-extent-alist)) string)) (t (if (and window-system (not (eq mode 'default))) (apply 'propertize string (cdr (assq mode skk-emacs-property-alist))) string)))) (defun skk-local-variable-p (variable &optional buffer afterset) "Non-nil if VARIABLE has a local binding in buffer BUFFER. BUFFER defaults to the current buffer." (cond ((eval-when-compile (featurep 'xemacs)) (local-variable-p variable (or buffer (current-buffer)) afterset)) (t (local-variable-p variable (or buffer (current-buffer)))))) (defun skk-face-proportional-p (face) (cond ((eval-when-compile (featurep 'xemacs)) (face-proportional-p face)) (t (or (face-equal face 'variable-pitch) (eq (face-attribute face :inherit) 'variable-pitch))))) (defun skk-event-key (event) "$B%$%Y%s%H(B EVENT $B$rH/@8$7$?F~NO$N>pJs$r= emacs-major-version 23))) (use-region-p)) ((eval-when-compile (featurep 'xemacs)) (region-active-p)) (t ;; GNU Emacs 22. (and transient-mark-mode mark-active)))) (put 'skk-bind-last-command-char 'lisp-indent-function 1) (defmacro skk-bind-last-command-char (char &rest body) (let ((variable (cond ((featurep 'xemacs) 'last-command-char) (t 'last-command-event)))) `(let ((,variable ,char)) (progn ,@body)))) (defun skk-process-kill-without-query (process) (cond ((eval-when-compile (featurep 'emacs)) (set-process-query-on-exit-flag process nil)) (t (process-kill-without-query process)))) ;;; version independent (defsubst skk-char-octet (ch &optional n) (or (nth (if n (1+ n) 1) (skk-split-char ch)) 0)) (defun skk-cursor-set (&optional color force) (unless (skk-color-cursor-display-p) (setq skk-use-color-cursor nil)) (when (or skk-use-color-cursor force) (skk-cursor-set-1 color))) (defun skk-cursor-off () (unless (skk-color-cursor-display-p) (setq skk-use-color-cursor nil)) (when skk-use-color-cursor (skk-cursor-off-1))) (defun skk-modify-indicator-alist (mode string) (setcdr (assq mode skk-indicator-alist) (cons string (skk-mode-string-to-indicator mode string)))) (defun skk-update-modeline (&optional mode string) (unless mode (setq mode 'default)) ;; (when string (skk-modify-indicator-alist mode string)) ;; (let ((indicator (cdr (assq mode skk-indicator-alist)))) (setq skk-modeline-input-mode (if (eq skk-status-indicator 'left) (cdr indicator) (car indicator))) (force-mode-line-update))) ;; $B%D%j!<$K%"%/%;%9$9$k$?$a$N%$%s%?!<%U%'!<%9(B (defun skk-make-rule-tree (char prefix nextstate kana branch-list) (list char prefix (if (string= nextstate "") nil nextstate) kana branch-list)) ;;(defsubst skk-get-char (tree) ;; (car tree)) ;; ;; skk-current-rule-tree $B$KBP$7$FGK2uE*$JA`:n$O9T$($J$$!#(Bskk-rule-tree $B$N(B ;; $BFbMF$^$GJQ$o$C$F$7$^$$!"(Bskk-current-rule-tree $B$N(B initialize $B$,C$9!#(B $B%*%W%7%g%J%k0z?t$N(B CLEAN $B$,;XDj$5$l$k$H!"JQ?t$H$7$F$N(B `skk-prefix' $B$r6uJ8;z$K!"(B `skk-current-rule-tree' $B$r(B nil $B$K=i4|2=$9$k!#(B" ;; $B$+$JJ8;z$NF~NO$,$^$@40@.$7$F$$$J$$>l9g$K$3$N4X?t$,8F$P$l$?$H$-$J$I$O(B ;; $BI=<($5$l$F$$$k(B skk-prefix $B$O:o=|$7$?$$$,!"JQ?t$H$7$F$N(B skk-prefix $B$O(B ;; null $BJ8;z$K$7$?$/$J$$!#(B (when (overlayp skk-prefix-overlay) (condition-case nil (delete-overlay skk-prefix-overlay) (error (skk-set-marker skk-kana-start-point nil) (setq skk-prefix "" skk-current-rule-tree nil)))) (when clean (setq skk-prefix "" skk-current-rule-tree nil))) ; fail safe (defun skk-kana-cleanup (&optional force) (let ((data (cond ((and skk-current-rule-tree (null (skk-get-nextstate skk-current-rule-tree))) (skk-get-kana skk-current-rule-tree)) (skk-kana-input-search-function (car (funcall skk-kana-input-search-function))))) kana) (when (or force data) (skk-erase-prefix 'clean) (setq kana (if (functionp data) (funcall data nil) data)) (when (consp kana) (setq kana (if skk-katakana (car kana) (cdr kana)))) (when (stringp kana) (skk-insert-str kana)) (skk-set-marker skk-kana-start-point nil) (or data t)))) ; skk-prefix $B$KBP1~$9$k%G!<%?$,$"$C$?$J$i$=$l$rJV$9(B (defsubst skk-numeric-p () (and skk-use-numeric-conversion (require 'skk-num) skk-num-list)) (defsubst skk-file-exists-and-writable-p (file) (and (setq file (expand-file-name file)) (file-exists-p file) (file-writable-p file))) (defsubst skk-share-private-jisyo-p () (vectorp skk-jisyo-update-vector)) (defsubst skk-lower-case-p (char) "CHAR $B$,>.J8;z$N%"%k%U%!%Y%C%H$G$"$l$P!"(Bt $B$rJV$9!#(B" (and (<= ?a char) (>= ?z char))) (defsubst skk-downcase (char) "$BO"A[%j%9%H(B `skk-downcase-alist' $B$K3:Ev$"$l$P(B (assq)$B!"MWAG(B($B;R%j%9%H(B)$B$N(B cdr $B$rJV$9!#(B $B3:Ev$J$1$l$P(B $B4X?t(B `downcase'$B$N7k2L$rJV$9!#(B $B4X?t(B `skk-set-henkan-point' $B$+$i8F$P$l$F$$$k!#(B" (or (cdr (assq char skk-downcase-alist)) (downcase char))) (defun skk-mode-off () (setq skk-mode nil skk-abbrev-mode nil skk-latin-mode nil skk-j-mode nil skk-jisx0208-latin-mode nil skk-jisx0201-mode nil ;; sub mode of skk-j-mode. skk-katakana nil) ;; initialize (skk-update-modeline) (skk-cursor-off) (skk-remove-skk-pre-command)) (defun skk-j-mode-on (&optional katakana) (setq skk-mode t skk-abbrev-mode nil skk-latin-mode nil skk-j-mode t skk-jisx0208-latin-mode nil skk-jisx0201-mode nil ;; sub mode of skk-j-mode. skk-katakana katakana) (skk-setup-keymap) (skk-update-modeline (if skk-katakana 'katakana 'hiragana)) (skk-cursor-set)) (defun skk-latin-mode-on () (setq skk-mode t skk-abbrev-mode nil skk-latin-mode t skk-j-mode nil skk-jisx0208-latin-mode nil skk-jisx0201-mode nil ;; sub mode of skk-j-mode. skk-katakana nil) (skk-setup-keymap) (skk-update-modeline 'latin) (skk-cursor-set)) (defun skk-jisx0208-latin-mode-on () (setq skk-mode t skk-abbrev-mode nil skk-latin-mode nil skk-j-mode nil skk-jisx0208-latin-mode t skk-jisx0201-mode nil ;; sub mode of skk-j-mode. skk-katakana nil) (skk-setup-keymap) (skk-update-modeline 'jisx0208-latin) (skk-cursor-set)) (defun skk-abbrev-mode-on () (setq skk-mode t skk-abbrev-mode t skk-latin-mode nil skk-j-mode nil skk-jisx0208-latin-mode nil skk-jisx0201-mode nil ;; skk-abbrev-mode $B$O0l;~E*$J(B ascii $BJ8;z$K$h$kJQ49$J$N$G!"JQ498e$O85$N(B ;; $BF~NO%b!<%I(B ($B$+$J%b!<%I$+%+%J%b!<%I(B) $B$KLa$k$3$H$,4|BT$5$l$k!#(B ;; skk-katakana $B$O(B minor-mode $B%U%i%0$G$O$J$/!"(Bskk-j-mode $B%^%$%J!<%b!<%I(B ;; $B$NCf$G$3$N%U%i%0$K$h$jF~NOJ8;z$r7hDj$9$k%]%$%s%?$rJQ99$9$k$@$1$J$N$G(B ;; skk-abbrev-mode $B%^%$%J!<%b!<%I2=$9$k$N$K(B skk-katakana $B%U%i%0$r=i4|2=(B ;; $B$7$J$1$l$P$J$i$J$$I,A3@-$O$J$$!#(B ;; sub mode of skk-j-mode. ;;skk-katakana nil ) (skk-setup-keymap) (skk-update-modeline 'abbrev) (skk-cursor-set)) (defsubst skk-in-minibuffer-p () "$B%+%l%s%H%P%C%U%!$,%_%K%P%C%U%!$G$"$l$P(B t $B$rJV$9!#(B" (eq (current-buffer) (window-buffer (minibuffer-window)))) (defun skk-window-body-height () (cond ((eval-when-compile (featurep 'xemacs)) nil) ; XEmacs $B$G%5%]!<%H$5$l$J$$5!G=(B (t (window-body-height)))) ; emacs21 $B$K$O$J$$(B (defun skk-screen-column () "$B%9%/%j!<%s9T$+$iF@$?%+!<%=%k0LCV$N7e?t$rJV$9!#(B $B%F%-%9%H9T!J2~9TJ8;z$G6h@Z$i$l$?%F%-%9%H!K$,%&%#%s%I%&I}$r1[$($F@^$jJV$7$FI=<((B $B$5$l$F$$$k>l9g$K$bBP1~$9$k!#(B" (- (current-column) (save-excursion (vertical-motion 0) ;$B%9%/%j!<%s9T$N9TF,$K0\F0$9$k(B (current-column)))) ;$B",$3$N7k2L!"%9%/%j!<%s9T$N9TF,$J$N$+(B ;$B%F%-%9%H9T$N9TF,$J$N$+(B (defun skk-move-to-screen-column (col) "$B%9%/%j!<%s9T$+$i8+$?(B COL $B7e0LCV$K%]%$%s%H$r0\F0$9$k!#(B $B%F%-%9%H9T!J2~9TJ8;z$G6h@Z$i$l$?%F%-%9%H!K$,%&%#%s%I%&I}$r1[$($F@^$jJV$7$FI=<((B $B$5$l$F$$$k>l9g$K$bBP1~$9$k$,!"2~9TJ8;z$r1[$($k0\F0$O9T$o$J$$!#(B" (move-to-column (+ (current-column) ;$B%F%-%9%H9T$+$i8+$?7e?t(B (- col (skk-screen-column)))) (skk-screen-column)) (defun skk-max-string-width (list) "LIST $B$N3FMWAG$NCf$+$i!":GD9$N%3%i%`I}(B (string-width) $B$rJV$9!#(B" (apply 'max (mapcar 'string-width list))) (defun skk-insert-prefix (&optional char) "`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" (when skk-echo ;; skk-prefix $B$O%"%s%I%%$NBP>]$H$J$i$J$$$N$G(B ;; $B%P%C%U%!$KA^F~$5$l$kI,MW$,$J$$!#(B (setq skk-prefix-overlay (make-overlay (point) (point))) (let ((prefix (or char skk-prefix))) (when (and skk-use-face (not skk-henkan-mode)) (setq prefix (propertize prefix 'face (cond ((and skk-j-mode (not skk-katakana)) 'skk-prefix-hiragana-face) (skk-katakana 'skk-prefix-katakana-face) (skk-jisx0201-mode 'skk-prefix-jisx0201-face))))) (overlay-put skk-prefix-overlay 'after-string prefix)))) (defsubst skk-string-lessp-in-coding-system (str1 str2 coding-system) (string< (encode-coding-string str1 coding-system) (encode-coding-string str2 coding-system))) (defun skk-string< (str1 str2) "STR1 $B$H(B STR2 $B$H$rHf3S$9$k!#(B $BFbIt%3!<%I$,(B emacs-mule $B$G$J$$$J$I(B `stringp' $B$NJV$jCM$,0[$J$k(B Emacs $B$K(B $BBP$7$F(B emacs-mule $B$N(B encoded string $B$KJQ49$7$FHf3S$9$k!#(B $BHf3S$N7k2L(B str1 < str2 $B$J$i$P(B t $B$rJV$9!#(B" (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; Emacs with coding system utf-8-emacs (skk-string-lessp-in-coding-system str1 str2 'emacs-mule)) (t (string< str1 str2)))) (defsubst skk-string<= (str1 str2) "STR1 $B$H(B STR2 $B$H$rHf3S$7$F!"(B`string<' $B$+(B `string=' $B$G$"$l$P!"(Bt $B$rJV$9!#(B" (or (skk-string< str1 str2) (string= str1 str2))) (defsubst skk-do-auto-fill () "`auto-fill-function' $B$KCM$,BeF~$5$l$F$$$l$P!"$=$l$r%3!<%k$9$k!#(B" (when auto-fill-function (funcall auto-fill-function))) (defsubst skk-current-input-mode () (cond (skk-abbrev-mode 'abbrev) (skk-latin-mode 'latin) (skk-jisx0208-latin-mode 'jisx0208-latin) (skk-katakana 'katakana) (skk-j-mode 'hiragana))) ;;(defsubst skk-substring-head-character (string) ;; (char-to-string (string-to-char string))) (defsubst skk-get-current-candidate-1 (&optional count) (setq count (or count (skk-henkan-count))) (when (> 0 count) (skk-error "$B8uJd$r ::= nil | ( . ) ;; ::= ( ) ;; ::= (<$B$R$i$,$JJ8;zNs(B> . <$B%+%?%+%JJ8;zNs(B>) | nil ;; ::= <$B1Q>.J8;z(B> ;; ::= <$B1Q>.J8;zJ8;zNs(B> | nil (defsubst skk-make-raw-arg (arg) (case arg (1 nil) (-1 '-) (t (if (numberp arg) (list arg) nil)))) (defsubst skk-unread-event (event) "Unread single EVENT." (setq unread-command-events (nconc unread-command-events (list event)))) (defsubst skk-get-last-henkan-datum (key) (cdr (assq key skk-last-henkan-data))) ;;; 2013-3-18 $B$I$3$+$i$b;2>H$5$l$F$*$i$:(B ;; (defsubst skk-put-last-henkan-datum (key val) ;; (let ((e (assq key skk-last-henkan-data))) ;; (if e ;; (setcdr e val) ;; (push (cons key val) skk-last-henkan-data)))) (defun skk-put-last-henkan-data (alist) (let (e) (dolist (kv alist) (if (setq e (assq (car kv) skk-last-henkan-data)) (setcdr e (cdr kv)) (push (cons (car kv) (cdr kv)) skk-last-henkan-data))))) (defun skk-find-coding-system (code) "CODE $B$,!"(BEmacs $B$,2r l 2) (eq (aref string 0) ?\() ;; second character is ascii or not. (skk-ascii-char-p (aref string 1)) (eq (aref string (1- l)) ?\)) ; $B$3$N9T!"$b$&ITMW$+$b(B (ignore-errors (= l (cdr (read-from-string string))))))) (defun skk-eval-string (string) "Eval STRING as a lisp program and return the result." (cond ((string-match ";" string) (concat (skk-eval-string (substring string 0 (match-beginning 0))) (substring string (match-beginning 0) (match-end 0)) (skk-eval-string (substring string (match-end 0))))) ((skk-lisp-prog-p string) (let (func face) ;; (^_^;) $B$N$h$&$JJ8;zNs$KBP$7!"(Bread-from-string $B$r8F$V$H(B ;; $B%(%i!<$K$J$k$N$G!"(Bignore-errors $B$G0O$`!#(B (ignore-errors (setq func (car (read-from-string string))) (when (and (listp func) (functionp (car func))) (setq face (get-text-property 0 'face string)) (setq string (if face (propertize (format "%s" (eval func)) 'face face) (format "%s" (eval func)))))) string)) (t string))) ;;;; from dabbrev.el. Welcome! ;; $BH=Dj4V0c$$$rHH$9>l9g$"$j!#MW2~NI!#(B (defsubst skk-minibuffer-origin () (nth 1 (buffer-list))) (defun skk-quote-char-1 (word alist) (mapconcat (lambda (char) (or (cdr (assq char alist)) (char-to-string char))) ;; $BJ8;zNs$rBP1~$9$k(B char $B$N%j%9%H$KJ,2r$9$k!#(B (append word nil) "")) (defun skk-key-binding-member (key commands &optional map) "$BF~NO(B KEY $B$,H/F0$9$k%3%^%s%I$,!"(BCOMMANDS $B$K4^$^$l$l$P(B non-nil $B$rJV$9!#(B MAP $B$OF~NO$,=q$+$l$F$$$k%-!<%^%C%W$r;XDj$9$k$,!";XDj$5$l$J$1$l$P(B `skk-j-mode-map' $B$r;2>H$9$k!#(B $B$3$N4X?t$O!"F~NO(B KEY $B$,(B `lookup-key' $B$GC5$;$J$$7A<0$G$"$j$&$k>l9g$KMQ$$$k!#(B" (unless map (setq map skk-j-mode-map)) (let (keys) (dolist (command commands) (setq keys (nconc keys (where-is-internal command map)))) (member (key-description key) (mapcar #'key-description keys)))) (defun skk-update-minor-mode-map-alist (mode map) (let ((element (assq mode minor-mode-map-alist))) (if element (setcdr element map) (add-to-list 'minor-mode-map-alist (cons mode map))))) ;; Functions from alist.el (APEL) (defun skk-put-alist (key value alist) "Set cdr of an element (KEY . ...) in ALIST to VALUE and return ALIST. If there is no such element, create a new pair (KEY . VALUE) and return a new alist whose car is the new pair and cdr is ALIST." (let ((elm (assoc key alist))) (if elm (progn (setcdr elm value) alist) (cons (cons key value) alist)))) (defun skk-del-alist (key alist) "Delete an element whose car equals KEY from ALIST. Return the modified ALIST." (let ((pair (assoc key alist))) (if pair (delq pair alist) alist))) (defun skk-remove-alist (symbol key) "Delete an element whose car equals KEY from the alist bound to SYMBOL." (and (boundp symbol) (set symbol (skk-del-alist key (symbol-value symbol))))) (defun skk-fit-window (&optional window) "$B%+%l%s%H%&%#%s%I%&(B ($BKt$O(B WINDOW) $B$r!"$=$NI=<(FbMF$K1~$8$?9b$5$KD4@a$9$k!#(B" (unless (eval-when-compile (and (featurep 'xemacs) (= emacs-major-version 21) (<= emacs-minor-version 4))) ;; XEmacs 21.4 $B$K$O$J$$4X?t(B (fit-window-to-buffer window))) (defun skk-reset-henkan-count (count) ;; $B"&%b!<%I$KLa$k$H$-$O(B 0 ;; $B"'%b!<%I$N$^$^8uJd0lMw$N ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk-num.el,v 1.53 2014/10/03 23:25:38 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2014/10/03 23:25:38 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (defsubst skk-num-get-suuji (expression alist) (cdr (assq expression alist))) (defsubst skk-num-int-p (num) (not (string-match "\\.[0-9]" num))) ;;;###autoload (defun skk-num-compute-henkan-key (key) "KEY $B$NCf$NO"B3$9$k?t;z$r8=$o$9J8;zNs$r(B \"#\" $B$KCV$-49$($?J8;zNs$rJV$9!#(B \"12\" $B$d(B \"$B#0#9(B\" $B$J$IO"B3$9$k?t;z$r(B 1 $B$D$N(B \"#\" $B$KCV$-49$($k$3$H$KCm0U!#(B $BCV$-49$($??t;z$r(B `skk-num-list' $B$NCf$K%j%9%H$N7A$GJ]B8$9$k!#(B $BNc$($P!"(BKEY $B$,(B \"$B$X$$$;$$(B7$B$M$s(B12$B$,$D(B\" $B$G$"$l$P!"(B\"$B$X$$$;$$(B#$B$M$s(B#$B$,$D(B\" $B$HJQ49$7!"(B`skk-num-list' $B$K(B (\"7\" \"12\") $B$H$$$&%j%9%H$rBeF~$9$k!#(B $B<-=q$N8+=P$78l$N8!:w$K;HMQ$9$k!#(B" (let ((numexp (if skk-num-convert-float "[0-9]+\\(\\.[0-9]+\\)?" "[0-9]+"))) ;;(setq skk-noconv-henkan-key key) (save-match-data ;; $BA43Q?t;z$r(B ascii $B?t;z$KJQ49$9$k!#(B (while (string-match "[$B#0(B-$B#9(B]" key) (let ((zen-num (match-string 0 key))) (setq key (concat (substring key 0 (match-beginning 0)) (skk-jisx0208-to-ascii zen-num) (substring key (match-end 0)))))) ;; $B0L \(\"#2\" .\"$B0l(B\"\) $B$N$h$&$KJQ49$9$k!#(B" (let ((key (skk-get-current-candidate-1 index)) convlist current) (unless (consp key) (setq convlist (skk-num-convert-1 key)) (cond ((null convlist) nil) ;; CONV-LIST $B$NA4MWAG$,J8;zNs!#(B ((null (memq t (mapcar 'listp convlist))) (setq current (mapconcat 'identity convlist "")) (if (skk-get-current-candidate-1) ;; ("A" "#2" "C") -> ("A" ("#2" ."$B0l(B") "C") (setcar (nthcdr index skk-henkan-list) (cons key current)) (setq skk-henkan-list (nconc skk-henkan-list (list (cons key current)))))) ;; #4 (t (let ((l (mapcar (lambda (e) (cons key e)) (skk-num-flatten-list convlist)))) (setq current (cdar l)) (if (and (> index -1) (nth index skk-henkan-list)) (progn (setcar (nthcdr index skk-henkan-list) (car l)) (setq skk-henkan-list (skk-splice-in skk-henkan-list (1+ index) (cdr l)))) (setq skk-henkan-list (nconc skk-henkan-list l)) (skk-num-uniq)))))))) (defun skk-num-convert-1 (key) "KEY $B$r(B `skk-num-list' $B$K=>$$JQ49$9$k!#(B $BJQ498e$NJ8;zNs$N%Q!<%D$r=g$K$J$i$Y$?%j%9%H$rJV$9!#Nc$($P(B KEY ::= `$BJ?@.(B#0$BG/(B', return ::= (\"$BJ?@.(B\" \"13\" \"$BG/(B\")" (unless (or (not key) (consp key)) (let ((numexp (if skk-num-convert-float ;; "." $B$r4^$a$k0U?^$O(B? "#[.0-9]+" "#[0-9]+")) (n 0) (workkey key) num convnum string convlist beg) (save-match-data (while (and ;; $B6qBNE*$J?tCM$rJ];}$7$F$$$k%j%9%H$r;2>H$9$k!#(B (setq num (nth n skk-num-list)) (setq beg (string-match numexp workkey))) (setq convnum ; $B?tCMJQ49$5$l$?ItJ,$NJ8;zNs(B ;; $B6qBNE*$J?t;z$rJQ49%?%$%W$K=>$$JQ49$9$k!#(B (skk-num-exp num (string-to-number (substring workkey (1+ beg) (match-end 0)))) ;; $B=hM}$5$l$??tCM%-!<$^$G$N(B prefix $BJ8;zNs(B string (substring workkey 0 beg) ;; $BL$=hM}$NJ8;zNs(B workkey (substring workkey (match-end 0)) n (1+ n)) ;; $BJQ49$5$l$?J8;z$H?tCMJQ49$K4X78$N$J$$L5JQ49$NJ8;z$rJB$Y$?%j%9%H(B (setq convlist (nconc convlist (list string convnum)))) (delete "" (nconc convlist (list workkey))))))) ;;;###autoload (defun skk-num-multiple-convert (&optional count) (let ((index skk-henkan-count)) (catch 'break (while (nth index skk-henkan-list) (when (and count (> 0 count)) (throw 'break nil)) (skk-num-convert index) (setq index (1+ index)) (when count (setq count (1- count))))) (skk-num-uniq))) (defun skk-num-rawnum-exp (string) (setq string (skk-num-rawnum-exp-1 string "[$B#0(B-$B#9(B][$B!;0l6e8^;0;M<7FsH,O;(B]" "#9" 0)) (setq string (skk-num-rawnum-exp-1 string "\\(^\\|[^#0-9]\\)\\([0-9]+\\)" "#0" 2)) (setq string (skk-num-rawnum-exp-1 string "[$B#0(B-$B#9(B]+" "#1" 0)) (setq string (skk-num-rawnum-exp-1 string "\\([$B!;0l6e8^;0;M<7FsH,O;==(B][$B==I4@iK|2/C{5~(B]\\)+" "#3" 0)) ;; (mapcar 'char-to-string ;; (sort ;; '(?$B0l(B ?$BFs(B ?$B;0(B ?$B;M(B ?$B8^(B ?$BO;(B ?$B<7(B ?$BH,(B ?$B6e(B ?$B!;(B) '<)) ;; --> ("$B!;(B" "$B0l(B" "$B6e(B" "$B8^(B" "$B;0(B" "$B;M(B" "$B<7(B" "$BFs(B" "$BH,(B" "$BO;(B") ;; ;; [$B!;(B-$B6e(B] $B$H$$$&@55,I=8=$,;H$($J$$$N$G!"@8$N$^$^$D$C$3$s$G$*$/!#(B (skk-num-rawnum-exp-1 string "[$B!;0l6e8^;0;M<7FsH,O;(B]+" "#2" 0)) (defun skk-num-rawnum-exp-1 (string key type place) (save-match-data (while (string-match key string) (setq string (concat (substring string 0 (match-beginning place)) type (substring string (match-end place))))) string)) (defun skk-num-flatten-list (list) "$BM?$($i$l$?%j%9%H$N3FMWAG$+$iAH$_9g$;2DG=$JJ8;zNs$NO"@\$r:n$k!#(B $B7k2L$O%j%9%H$GJV$9!#Nc$($P(B ((\"A\" \"B\") \"1\" (\"X\" \"Y\")) -> (\"A1X\" \"A1Y\" \"B1X\" \"B1Y\")" (let ((dst (car list))) (unless (listp dst) (setq dst (list dst))) (dolist (elt (cdr list)) (setq dst (cond ((consp elt) (apply #'nconc (mapcar (lambda (str0) (mapcar (lambda (str1) (concat str0 str1)) elt)) dst))) (t (mapcar (lambda (str0) (concat str0 elt)) dst))))) dst)) ;;;###autoload (defun skk-num-exp (num type) "ascii $B?t;z(B (string) $B$N(B NUM $B$r(B TYPE $B$K=>$C$FJQ49$7$?J8;zNs$rJV$9!#(B TYPE $B$O2<5-$NDL$j!#(B 0 -> $BL5JQ49(B 1 -> $BA43Q?t;z$XJQ49(B 2 -> $B4A?t;z(B ($B0L $B0l!;Fs;M(B 3 -> $B4A?t;z(B ($B0L $B@iFs==;M(B 4 -> $B$=$N?t;z$=$N$b$N$r%-!<$K$7$F<-=q$r:F8!:w(B 5 -> $B4A?t;z(B ($B $B7e6h@Z$j$XJQ49(B (1,234,567) 9 -> $B>-4}$G;HMQ$9$k?t;z(B (\"$B#3;M(B\" $B$J$I(B) $B$XJQ49(B" (save-match-data (let ((fun (cdr (assq type skk-num-type-alist)))) (when fun (funcall fun num))))) (defun skk-num-jisx0208-latin (num) "ascii $B?t;z$N(B NUM $B$rA43Q?t;z$NJ8;zNs$KJQ49$7!"JQ498e$NJ8;zNs$rJV$9!#(B $BNc$($P(B \"45\" $B$r(B \"$B#4#5(B\" $B$KJQ49$9$k!#(B" (let ((candidate (mapconcat (lambda (c) (skk-num-get-suuji c skk-num-alist-type1)) num ""))) (unless (string= candidate "") candidate))) (defun skk-num-type2-kanji (num) "ascii $B?t;z(B NUM $B$r4A?t;z$NJ8;zNs(B ($B0L.?tE@$r4^$^$J$$?t(B (skk-num-to-kanji num 'type3)))) (defun skk-num-type5-kanji (num) "ascii $B?t;z(B NUM $B$r4A?t;z$NJ8;zNs$KJQ49$7!"JQ498e$NJ8;zNs$rJV$9!#(B $BNc$($P(B \"1021\" $B$r(B \"$B0motFu=&0m(B\" $B$KJQ49$9$k!#(B" (save-match-data (when (skk-num-int-p num) ;; $B>.?tE@$r4^$^$J$$?t(B (skk-num-to-kanji num 'type5)))) (defun skk-num-to-kanji (num type &optional alist) "NUM $B$r(B TYPE $B$N7A<0$N4A?t;z$K$9$k!#0L$J$I$rI=$94A;z$O(B ALIST $B$+$i len 20) (skk-error "$B0L$,Bg$-$9$.$^$9!*(B" "Too big number!")) (setq num (append num nil)) (cond ((<= len 4) (while (setq char (car num)) ;; $B0L(B: $B0l(B $B==(B $BI4(B $B@i(B ;; len: 1 2 3 4 (cond ((= len 1) ;; $B0L$rI=$o$94A?t;z0J30$N4A?t;z!#(B (unless (eq char ?0) ;; $B0l$N0L$G(B 0 $B$G$J$$?t!#(B (setq v (concat v (skk-num-get-suuji char alist))))) (t ;; $B0L$rI=$o$94A?t;z0J30$N4A?t;z!#(B (unless (or (and (eq type 'type3) (memq char '(?0 ?1))) (and (eq type 'type5) (eq char ?0))) ;; type3 $B$N$H$-$O!"==$N0L0J>e$G!"$+$D(B 0, 1 $B0J30$N?t;z!#(B ;; type5 $B$N$H$-$O!"==$N0L0J>e$G!"$+$D(B 0 $B0J30$N?t;z!#(B (setq v (concat v (skk-num-get-suuji char alist)))) ;; $B0L$rI=$o$94A?t;z!#(B (when (and (not (eq char ?0)) (< 1 len)) (setq v (concat v (skk-num-get-suuji (cond ((eq len 2) 'ju) ; $B==(B ((eq len 3) 'hyaku) ; $BI4(B (t 'sen)) ; $B@i(B alist)))))) (setq len (1- len) num (cdr num)))) (t (setq num (nreverse num)) (while num (setq num1 nil) (while (and (< (length num1) 4) num) (setq num1 (cons (car num) num1) num (cdr num))) (when num1 (setq v1 (skk-num-to-kanji num1 type alist)) (when (string= v1 (skk-num-get-suuji ?0 alist)) (setq v1 "")) (when (and (eq type 'type3) (eq i 1) (equal v1 "$B@i(B")) ;; $BF|K\8l$G$O!V@i2/!W$H$$$&I=8=$O$H$-$K;H$o$l$k$,!"!V@iK|!W$H$$$&I=(B ;; $B8=$O$^$:;H$o$l$J$$$N$G!"!V0l@iK|!W$KD>$9!#(B (setq v1 (concat "$B0l(B" v1))) (setq v (concat v1 (when v1 (skk-num-get-suuji (cond ((eq i 0) ?\ ) ((eq i 1) 'man) ; $BK|(B ((eq i 2) 'oku) ; $B2/(B ((eq i 3) 'cho) ; $BC{(B ((eq i 4) 'kei)) ; $B5~(B alist)) v))) (setq i (1+ i))))) ;; (or v (skk-num-get-suuji ?0 alist)))) (defun add-number-grouping (number &optional separator places) ;; http://www.emacswiki.org/cgi-bin/wiki/AddCommasToNumbers ;; and $B6LLn7r0l(B "Add commas to NUMBER and return it as a string. Optional SEPARATOR is the string to use to separate groups. It defaults to a comma. PLACES is the number of places of a group. It defaults to three." (let ((num (number-to-string number)) (op (or separator ",")) (pl (or (if (< places 1) 3 places) 3))) (while (string-match (concat "\\(.*[0-9]\\)\\([0-9]\\{" (number-to-string pl) "\\}.*\\)") num) (setq num (concat (match-string 1 num) op (match-string 2 num)))) num)) (defun skk-num-grouping (num) "ascii $B?t;z$N(B NUM $B$r7e6h@Z$j$XJQ49$7!"JQ498e$NJ8;zNs$rJV$9!#(B $BNc$($P(B \"1234567\" $B$r(B \"1,234,567\" $B$XJQ49$9$k!#(B $B6h@Z$k5-9f$O(B `skk-num-grouping-separator' $B$G!"6h@Z$k7e?t$O(B `skk-num-grouping-places' $B$G;XDj$9$k!#(B" (add-number-grouping (string-to-number num) ; number skk-num-grouping-separator ; `,' skk-num-grouping-places ; 3 )) (defun skk-num-shogi (num) "ascii $B?t;z$N(B NUM $B$r>-4}$G;HMQ$5$l$k?t;zI=5-$KJQ49$9$k!#(B $BNc$($P(B \"34\" $B$r(B \"$B#3;M(B\" $B$KJQ49$9$k!#(B" (save-match-data (when (and (= (length num) 2) (skk-num-int-p num)) (let ((candidate (concat (skk-num-get-suuji (aref num 0) skk-num-alist-type1) (skk-num-get-suuji (aref num 1) skk-num-alist-type2)))) (unless (string= candidate "") candidate))))) (defun skk-num-recompute (num) "#4 $B$N8+=P$7$KBP$7(B `skk-henkan-key' $B$KBeF~$5$l$??t;z$=$N$b$N$r:FEY8!:w$9$k!#(B" (let (result) (setq skk-num-recompute-key num) (with-temp-buffer ;; $B%+%l%s%H%P%C%U%!$N%P%C%U%!%m!<%+%kJQ?t$K1F6A$r5Z$\$5$J$$$h$&!"(B ;; $B%o!<%-%s%0%P%C%U%!$X0lC6F($2$k(B (let ((skk-current-search-prog-list skk-search-prog-list) (skk-henkan-key num) ;; $B%+%l%s%H$NJQ49$OAw$j$J$7(B (skk-henkan-okurigana $B$H(B ;; skk-okuri-char $B$O$$$:$l$b(B nil) $B$@$,!"JL%P%C%U%!(B ;; (work $B%P%C%U%!(B) $B$KF~$C$F$$$k$N$G!"G0$N$?$a!"(Bnil $B$r(B ;; $BF~$l$F$*$/!#(B skk-henkan-okurigana skk-okuri-char skk-use-numeric-conversion) (while skk-current-search-prog-list (setq result (skk-nunion result (skk-search)))))) ;; $B$3$3$G(B temp-buffer $B$r=P$FJQ49$r9T$C$F$$$k%+%l%s%H%P%C%U%!$KLa$k(B ;; ($B%P%C%U%!%m!<%+%kCM$G$"$k(B skk-henkan-list $B$rA`:n$7$?$$$?$a(B)$B!#(B (cond ((not result) ;; $BJQ49$G$-$J$+$C$?$i85$N?t;z$r$=$N$^$^JV$7$F$*$/!#(B num) ((null (cdr result));;(= (length result) 1) (car result)) (t result)))) ;;;###autoload (defun skk-num-uniq () (when (and skk-num-uniq skk-henkan-list) (save-match-data (let ((n1 -1) n2 e1 e2 e3 ;; 1 $B$D$G$b(B 2 $B7e0J>e$N?t;z$,$"$l$P!"(B#2 $B$H(B #3 $B$G$O(B uniq $B$7$J$$!#(B (type2and3 (> 2 (apply 'max (mapcar 'length skk-num-list)))) type2 type3 index2 index3 head2 head3 tail2 tail3 case-fold-search) (while (setq n1 (1+ n1) e1 (nth n1 skk-henkan-list)) ;; cons cell $B$G$J$1$l$P(B skk-nunion $B$G=hM}:Q$_$J$N$G!"=EJ#$O$J$$!#(B (when (consp e1) (setq skk-henkan-list (delete (car e1) skk-henkan-list) skk-henkan-list (delete (cdr e1) skk-henkan-list))) (when (and skk-num-recompute-key (consp e1)) ;; ("#4" . "xxx") $B$r4^$`8uJd$,(B skk-henkan-list $B$NCf$K$"$k!#(B (setq n2 -1) (while (setq n2 (1+ n2) e2 (nth n2 skk-henkan-list)) (when (and (not (= n1 n2)) (consp e2) ;; $BNc$($P(B ("#4" . "$B0l(B") $B$H(B ("#2" . "$B0l(B") $B$,(B ;; $BJBB8$7$F$$$k>l9g!#(B (string= (cdr e1) (cdr e2))) (setq skk-henkan-list (delq e2 skk-henkan-list))))) (when type2and3 ;; 1 $B7e$N?t;z$rJQ49$9$k:]$K!"(Bskk-henkan-list $B$K(B #2 $B%(%s%H%j$H(B #3 ;; $B%(%s%H%j$,$"$l$P!"(B#2 $B$b$7$/$O(B #3 $B%(%s%H%j$N$&$A!"$h$j8eJ}$K$"$k(B ;; $B$b$N$r>C$9!#(B (setq e3 (if (consp e1) (car e1) e1)) ;; e3 $B$O(B "#2" $B$N$h$&$K?tCMJQ49$r<($9J8;zNs$N$_$H$O8B$i$J$$$N$G!"(B ;; member $B$O;H$($J$$!#(B (cond ((string-match "#2" e3) (setq type2 e1 index2 n1 head2 (substring e3 0 (match-beginning 0)) tail2 (substring e3 (match-end 0)))) ((string-match "#3" e3) (setq type3 e1 index3 n1 head3 (substring e3 0 (match-beginning 0)) tail3 (substring e3 (match-end 0))))))) (when (and type2and3 type2 type3 ;; $B?tCMJQ49$r<($9J8;zNs(B "#[23]" $B$NA08e$NJ8;zNs$bF10l$N$H(B ;; $B$-$N$_(B uniq $B$r9T$&!#(B (string= head2 head3) (string= tail2 tail3)) (if (> index2 index3) ;; "#3" $B$NJ}$,A0$K$"$k!#(B (setq skk-henkan-list (delq type2 skk-henkan-list)) ;; $BJQ?t(B type[23] $B$NCM$O!"(Bskk-henkan-list $B$+$iD>@\Cj=P$7$?$b(B ;; $B$N$@$+$i(B delete $B$G$J$/!"(Bdelq $B$G==J,!#(B (setq skk-henkan-list (delq type3 skk-henkan-list)))))))) ;;;###autoload (defun skk-num-initialize () "`skk-use-numeric-conversion' $B4XO"$NJQ?t$r=i4|2=$9$k!#(B" (setq skk-last-henkan-data (skk-put-alist 'num-list skk-num-list skk-last-henkan-data) skk-num-list nil skk-num-recompute-key nil)) ;;;###autoload (defun skk-num-henkan-key () "$BE,@Z$JJQ49%-!<$rJV$9!#(B type4 $B$N?tCM:FJQ49$,9T$o$l$?$H$-$O!"?tCM<+?H$rJV$7!"$=$l0J30$N?tCMJQ49(B $B$G$O!"(B`skk-henkan-key' $B$N?tCM$r(B \"#\" $B$GCV$-49$($?%-!<$rJV$9!#(B" (or skk-num-recompute-key (skk-num-compute-henkan-key skk-henkan-key))) ;;;###autoload (defun skk-num-update-jisyo (noconvword word &optional purge) "$B?t;z<+?H$r8+=P$78l$H$7$F<-=q$r%"%C%W%G!<%H$9$k!#(B" (when (and skk-num-recompute-key (save-match-data (string-match "#4" noconvword))) (with-current-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg) (let ((skk-henkan-key skk-num-recompute-key) skk-use-numeric-conversion) ;;(message "%S" skk-num-recompute-key) (skk-update-jisyo word purge))))) ;;;###autoload (defun skk-num (str) "$B?t;z$r(B `skk-number-style' $B$NCM$K=>$$JQ49$9$k!#(B `skk-current-date' $B$N%5%V%k!<%A%s!#(B" (mapconcat (lambda (c) (cond ((or (< ?9 c) (< c 0)) nil) ((or (not skk-number-style) (and (numberp skk-number-style) (= skk-number-style 0))) (char-to-string c)) ((or (eq skk-number-style t) (and (numberp skk-number-style) (= skk-number-style 1))) (cdr (assq c skk-num-alist-type1))) (t (cdr (assq c skk-num-alist-type2))))) str "")) (defadvice skk-kakutei-initialize (after skk-num-ad activate) (when (skk-numeric-p) (skk-num-initialize))) (run-hooks 'skk-num-load-hook) (provide 'skk-num) ;;; skk-num.el ends here ddskk-15.2/skk-server-completion.el0000644000570400056700000001565312074501114017374 0ustar kitamotoopenlab;;; skk-server-completion.el --- server completion $B$N%/%i%$%"%s%H(B -*- coding: iso-2022-jp -*- ;; ;; Copyright (C) 2005 Fumihiko MACHIDA ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software ;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ;; 02110-1301, USA ;;; Commentary: ;; Server completion $B$KBP1~$7$?<-=q%5!<%P$rMQ$$8+=P$78l$+$i;O$^$kA4$F$N(B ;; $B8l6g$N8!:w$r9T$$$^$9!#(B ;; $B$3$N%W%m%0%i%`$O0J2<$N(B 2 $B$D$N5!G=$rDs6!$7$^$9!#(B ;; ;; * skk-look $B$NF|K\8lHG!#FI$_$N:G8e$K(B `~' $B$rIU$1$FJQ49$9$k$H!"$=$NFI$_$+(B ;; $B$i;O$^$kA4$F$N8uJd$rI=<($7$^$9!#(B ;; ;; $BNc!'(B ;; ;; $B"&$^$A$@(B~ ;; ==> "$B$^$A$@(B" "$BD.ED(B" "$B$^$A$@$($-(B" "$BD.ED1X(B" "$B$^$A$@$*$@$-$e$&(B" "$BD.ED>.ED5^(B" .. ;; ;; * skk-comp $B$G!"(Bserver completion $B$r;HMQ(B ;; ;; $BNc!'(B ;; ;; $B"&$^$A$@(B-!- $B$G(B Tab $B$r2!$9$H!""&$^$A$@$($-(B $B"*(B $B"&$^$A$@$*$@$-$e$&(B $B!D!D(B ;; $B$H$J$j$^$9!#(B ;; [$B@_DjJ}K!(B] ;; ;; .skk $B$K!"0J2<$rDI2C$7$^$9!#(B ;; ;; (add-to-list 'skk-search-prog-list ;; '(skk-server-completion-search) t) ;; ;; (add-to-list 'skk-completion-prog-list ;; '(skk-comp-by-server-completion) t) ;; ;; $B$^$?!"(B`~' $B$rIU$1$?JQ497k2L$r8D?M<-=q$K3X=,$7$F$7$^$&$N$r$d$a$k$?$a$K$O(B ;; $B0J2<$rDI2C$7$F$/$@$5$$!#(B ;; ;; (add-hook 'skk-search-excluding-word-pattern-function ;; #'(lambda (kakutei-word) ;; (eq (aref skk-henkan-key (1- (length skk-henkan-key))) ;; skk-server-completion-search-char))) ;;; Code: (require 'skk) (require 'skk-comp) (require 'skk-server) ;;;###autoload (defun skk-server-completion-search () "$B%5!<%P!<%3%s%W%j!<%7%g%s$r9T$$!"F@$i$l$?3F8+=P$7$G$5$i$K8!:w$9$k!#(B $BAw$jM-$jJQ49$K$OHsBP1~!#(B" (when (and (eq (aref skk-henkan-key (1- (length skk-henkan-key))) skk-server-completion-search-char) (not (or skk-henkan-okurigana skk-okuri-char))) ;; skk-search $B$G$O8+=P$7$,?t;z$r4^$`;~$N$_(B ;; skk-use-numeric-conversion $B$,(B t $B$J8F=P$7$r$9$k$,!"(B ;; $B0l1~$=$l$K0MB8$7$J$$$h$&$K$7$F$$$k!#(B (let* ((henkan-key (substring skk-henkan-key 0 (1- (length skk-henkan-key)))) (numericp (and skk-use-numeric-conversion (save-match-data (string-match "[0-9$B#0(B-$B#9(B]" henkan-key)))) (conv-key (and numericp (skk-num-compute-henkan-key henkan-key))) (key (or conv-key henkan-key)) midasi-list result-list kouho-list) (setq midasi-list (skk-server-completion-search-midasi key)) (dolist (skk-henkan-key midasi-list) ;; $B8+=P$7$KBP1~$7$?%(%s%H%j$,<-=q%5!<%P$KB8:_$9$k;v$rA0Ds$H$7$F$$$k!#(B ;; $BIT@09g$,$"$C$F$b%(%i!<$K$O$J$i$J$$$,!"8+=P$7$@$1$,I=<($5$l$k;v$K$J$k$N$G(B ;; $B8!:wBP>]<-=q$+$iD>@\Jd408uJd$r@8@.$7$F$$$J$$<-=q%5!<%P$G$O1?MQ$K5$$r$D$1$k;v!#(B (setq kouho-list (cons (if numericp (concat henkan-key (substring skk-henkan-key (length key))) skk-henkan-key) (skk-search-server-1 nil nil)) result-list (nconc result-list kouho-list))) result-list))) (defun skk-server-completion-search-midasi (key) "server completion $B$rMxMQ$7$F!"(Bkey $B$+$i;O$^$k$9$Y$F$N8+=P$78l$N%j%9%H$rJV5Q$9$k!#(B" (when (and (not skk-server-disable-completion) (skk-server-live-p (skk-open-server))) (with-current-buffer skkserv-working-buffer (let ((cont t) (count 0) sep ret) (erase-buffer) ;; server completion $B$KBP1~$7$F$*$i$:!"$+$DL5H?1~$J<-=q%5!<%P$KBP=h(B ;; 5$BIC$bBT$F$P= (buffer-size) 0) (if (eq (char-after 1) ?1) ;?1 ;; found key successfully, so check if a whole line ;; is received. (when (eq (char-after (1- (point-max))) ?\n) ;?\n (setq cont nil)) ;; not found or error, so exit (setq cont nil)))) (goto-char (point-min)) (when skk-server-report-response (skk-message "$B<-=q%5!<%P$N1~Ez$r(B %d $B2sBT$A$^$7$?(B" "Waited for server response %d times" count)) (when (eq (following-char) ?1) ;?1 ;; 2$BJ8;zL\$r%;%Q%l!<%?$H$7$F07$&(B ('/' $B$+(B ' ' $B$NH&(B) (setq sep (char-to-string (char-after 2))) (forward-char 2) (setq ret (save-match-data (split-string (buffer-substring-no-properties (point) (1- (line-end-position))) sep))) (when (string= sep "/") ;; $B8+=P$7$K(B '/' $B$r4^$s$G$$$k;~!"%;%Q%l!<%?$N(B '/' $B$H:.F1$7!"(B ;; $B@5$7$/=hM}$G$-$J$$!#(B (setq ret (delq nil (let ((len (length key))) (mapcar (lambda (midasi) ;; key $B$K40A40lCW$J(B midasi $B$r$I$&$9$k$+!#(B (when (and (> (length midasi) len) (string-equal key (substring midasi 0 len))) midasi)) ret))))) ret)))))) ;;;###autoload (defun skk-comp-by-server-completion () "Server completion $B$KBP1~$7$?<-=q%5!<%P$rMxMQ$9$kJd40%W%m%0%i%`!#(B `skk-completion-prog-list' $B$NMWAG$K;XDj$7$F;H$&!#(B" (let* ((numericp (and skk-use-numeric-conversion (save-match-data (string-match "[0-9$B#0(B-$B#9(B]" skk-comp-key)))) (conv-key (and numericp (skk-num-compute-henkan-key skk-comp-key))) (comp-key (or conv-key skk-comp-key)) word) (when skk-comp-first (setq skk-server-completion-words (skk-server-completion-search-midasi comp-key)) (when (string= comp-key (car skk-server-completion-words)) (pop skk-server-completion-words))) (setq word (pop skk-server-completion-words)) (when (and skk-comp-use-prefix (not (string= skk-comp-prefix ""))) (save-match-data (let ((regexp-key (concat "^" (regexp-quote comp-key) (skk-comp-get-regexp skk-comp-prefix)))) (while (and word (not (string-match regexp-key word))) (setq word (pop skk-server-completion-words)))))) (when word (if numericp (concat skk-comp-key (substring word (length comp-key))) word)))) (provide 'skk-server-completion) ;;; skk-server-completion.el ends here ddskk-15.2/skk-server.el0000644000570400056700000002562211656053065015236 0ustar kitamotoopenlab;;; skk-server.el --- $B<-=q%5!<%P$N$?$a$N%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, ;; 1997, 1998, 1999, 2000, 2001 ;; Masahiko Sato ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk-server.el,v 1.54 2011/11/07 22:05:41 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2011/11/07 22:05:41 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either versions 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (defun skk-server-live-p (&optional process) "Return t if PROCESS is alive. When PROCESS is nil, check `skkserv-process' instead." (unless process (setq process skkserv-process)) (and process (eq (process-status process) 'open))) ;;;###autoload (defun skk-server-version () "Return version information of SKK server. When called interactively, print version information." (interactive) (cond ((skk-called-interactively-p 'interactive) (message "%s" (skk-server-version))) ((not (or skk-server-host skk-servers-list)) (skk-error "$B<-=q%5!<%P$N%[%9%H>pJs$,$"$j$^$;$s(B" "Lack of host information of SKK server")) ((skk-server-live-p (skk-open-server)) (let (v) (save-match-data (with-current-buffer skkserv-working-buffer (erase-buffer) ;; $B<-=q%5!<%P$N%P!<%8%g%s$rF@$k!#(B (process-send-string skkserv-process "2") (while (eq (buffer-size) 0) (accept-process-output)) (setq v (buffer-string)) (erase-buffer) ;; $B%[%9%HL>$rF@$k!#(B (process-send-string skkserv-process "3") (while (eq (buffer-size) 0) (accept-process-output)) (goto-char (point-min)) (format (concat "SKK SERVER version %s" (if skk-japanese-message-and-error "($B%[%9%HL>(B %s)" "running on HOST %s")) v (prog1 (buffer-string) (erase-buffer))))))))) ;;;###autoload (defun skk-search-server-1 (file limit) "`skk-search-server' $B$N%5%V%k!<%A%s!#(B" (let ((key (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) ;; $B%P%C%U%!%m!<%+%kCM$N$N0l;~JQ?t$K]$,3NG'$G$-$k!#(B ;; $B0J2<$NBP:v$G$[$\2sHr$G$-$kLOMM!#(B (sit-for 0.01) ;; (setq count (1+ count)) (when (> (buffer-size) 0) (if (eq (char-after 1) ?1) ;?1 ;; found key successfully, so check if a whole line ;; is received. (when (eq (char-after (1- (point-max))) ?\n) ;?\n (setq cont nil)) ;; not found or error, so exit (setq cont nil)))) (goto-char (point-min)) (when skk-server-report-response (skk-message "$B<-=q%5!<%P$N1~Ez$r(B %d $B2sBT$A$^$7$?(B" "Waited for server response %d times" count)) (when (eq (following-char) ?1) ;?1 (forward-char 2) (setq l (skk-compute-henkan-lists okurigana)) (when l (cond ((and okurigana skk-henkan-okuri-strictly) ;; $BAw$j2>L>$,F10l$N%(%s%H%j$N$_$rJV$9!#(B (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l)))))))) (t ;; server is not active, so search file instead (when (and (stringp file) (file-readable-p file)) (skk-search-jisyo-file file limit)))))) (defun skk-open-server () "$B<-=q%5!<%P$H@\B3$9$k!#%5!<%P!<%W%m%;%9$rJV$9!#(B" (unless (skk-server-live-p) (setq skkserv-process (skk-open-server-1)) (when (skk-server-live-p) (let ((code (cdr (assoc "euc" skk-coding-system-alist)))) (set-process-coding-system skkserv-process code code)))) skkserv-process) (defun skk-open-server-1 () "`skk-open-server' $B$N%5%V%k!<%A%s!#(B skkserv $B%5!<%S%9$r%*!<%W%s$G$-$?$i(B process $B$rJV$9!#(B" (let* ((host (or skk-server-host (getenv "SKKSERVER"))) (prog (or skk-server-prog (getenv "SKKSERV"))) (jisyo (or skk-server-jisyo (getenv "SKK_JISYO"))) (port skk-server-portnum) ;; skk-server-host $B$N>pJs$r(B skk-servers-list $B$KH?1G$9$k(B (list (cond ((null skk-servers-list) (if host (list (list host prog jisyo port)) (setq skk-server-prog nil))) ((and host (not (assoc host skk-servers-list))) ;; skk-servers-list $B$K(B host $B$,F~$C$F$$$J$$>l9g(B (cons (list host prog jisyo port) skk-servers-list)) (t skk-servers-list))) elt process) ;; (while (and (not (skk-server-live-p process)) list) ;; $B%5!<%S%9$,MxMQ2DG=$G$J$$%[%9%H$N>pJs$O(B skk-servers-list $B$+$i>C$9(B (setq skk-servers-list list elt (car list) process (or (skk-open-network-stream (car elt) (nth 3 elt)) ;; $B%5!<%S%9$,MxMQ2DG=$G$J$$>l9g$O%5!<%S%9$r5/F0(B ;; $B$G$-$k$+$I$&$+;n$_$k(B (if (not skk-server-inhibit-startup-server) (apply #'skk-startup-server elt) nil)) list (cdr list))) ;; (unless (skk-server-live-p process) ;; clear skk-server-host to disable server search in this session (setq skk-server-host nil skk-server-prog nil skk-servers-list nil)) ;; $B4D6-JQ?t(B SKKSERVER $B$r(B clear $B$7$F:FEY$NLd$$9g$o$;$rKI$0!#(B (setenv "SKKSERVER" nil t) ;; process)) (defun skk-open-network-stream (&optional host port) "HOST $B$K;XDj$5$l$?%[%9%H$K$*$1$k(B skkserv $B%5!<%S%9$N(B TCP $B@\B3$r%*!<%W%s$9$k!#(B HOST $B$,(B nil $B$J$i$P(B `skk-server-host' $B$r;2>H$9$k!#(B $B%W%m%;%9$rJV$9!#(B" (ignore-errors (let ((process (open-network-stream "skkservd" skkserv-working-buffer (or host skk-server-host) (or port "skkserv")))) (skk-process-kill-without-query process) process))) (defun skk-startup-server (host prog jisyo port) "HOST $B$N(B skkserv $B$rD>@\5/F0$9$k!#(B $B5/F08e$=$N%5!<%S%9$K@\B3$r;n$_$k!#@\B3$G$-$?>l9g$O%W%m%;%9$rJV$9!#(B" (when (and host prog) (let (;;(msgbuff (get-buffer-create " *skkserv-msg*")) (count 7) arg process) ;; skkserv $B$KM?$($k0z?t$r@_Dj$9$k!#(B ;; skkserv $B$N5/F0%*%W%7%g%s$O2<5-$NDL$j!#(B ;; skkserv [-d] [-p NNNN] [JISHO] ;; `-d' $B%G%#%P%C%0!&%b!<%I(B ;; `-p NNNN' $BDL?.MQ$N%]!<%HHV9f$H$7$F(BNNNN$B$r;H$&(B. ;; `~/JISYO' ~/JISYO$B$r<-=q$H$7$FMxMQ(B. (when jisyo ;; skkserv $B$O0z?t$K<-=q$,;XDj$5$l$F$$$J$1$l$P!"(BDEFAULT_JISYO $B$r(B ;; $B;2>H$9$k!#(B (setq arg (list jisyo))) ;;(if skk-server-debug ;; (setq arg (cons "-d" arg))) (when port (setq arg (nconc (list "-p" (number-to-string port)) arg))) ;; skkserv $B$N5/F0%H%i%$%"%k$r7+$jJV$9(B...? (while (> count 0) (skk-message "%s $B$N<-=q%5!<%P$,5/F0$7$F$$$^$;$s!#5/F0$7$^$9(B%s" "SKK SERVER on %s is not active, I will activate it%s" host (make-string count ?.)) (if (or (string= host (system-name)) (string= host "localhost")) ;; server host is local machine (apply 'call-process prog nil ;;msgbuff 0 nil arg) (apply 'call-process skk-server-remote-shell-program nil ;; 0 $B$K$7$F%5%V%W%m%;%9$N=*N;$rBT$C$F$O$$$1$J$$M}M3$,$"$k!)(B ;; $B$J$1$l$P(B msgbuf $B$K%(%i!<=PNO$rl9g$O$3$N(B while $B%k!<%W<+?H$,$$$i$J$$!)(B ;; msgbuff 0 nil host prog arg)) (sleep-for 3) (if (and (setq process (skk-open-network-stream host port)) (skk-server-live-p process)) (setq count 0) (setq count (1- count)))) ;; (cond ((skk-server-live-p process) (skk-message "$B%[%9%H(B %s $B$N<-=q%5!<%P$,5/F0$7$^$7$?(B" "SKK SERVER on %s is active now" skk-server-host) (sit-for 1) ;; process $B$rJV$jCM$H$9$k(B process) (t (skk-message "%s $B$N<-=q%5!<%P$r5/F0$9$k$3$H$,$G$-$^$;$s$G$7$?(B" "Could not activate SKK SERVER on %s" skk-server-host) (sit-for 1) (ding) nil))))) ;;;###autoload (defun skk-adjust-search-prog-list-for-server-search (&optional non-del) "$BJQ?t(B `skk-search-prog-list' $B$rD4@0$9$k!#(B `skk-server-host' $B$b$7$/$O(B `skk-servers-list' $B$,(B nil $B$G$"$l$P!"(B `skk-search-prog-list' $B$+$i(B `skk-search-server' $B$r(B car $B$K;}$D%j%9%H$r>C$9!#(B non-nil $B$G$"$l$P!"2C$($k!#(B" (when (and (or skk-server-host skk-servers-list) (not (assq 'skk-search-server (default-value 'skk-search-prog-list)))) ;; skk-search-prog-list $B$,(B nil $B$H$$$&$3$H$O$^$:$J$$$@$m$&$,!"G0$N$?(B ;; $B$a!"(Bsetq $B$7$F$*$/!#(B (setq-default skk-search-prog-list ;; $BKvHx$KIU$1$k!#KvHx$K$O(B (skk-okuri-search) $B$r;}$C$F$-$?$$?M(B ;; $B$b$$$k$+$b!#%*%W%7%g%s$GIU$1$k>l=j$rJQ99$9$k$h$&$K$7$?J}$,(B ;; $BNI$$!)(B (nconc (default-value 'skk-search-prog-list) (list '(skk-search-server skk-aux-large-jisyo 10000)))))) ;;;###autoload (defun skk-disconnect-server () "$B<-=q%5!<%P$r@Z$jN%$9!#(B" (when (and skk-server-host (skk-server-live-p)) ;; disconnect server (process-send-string skkserv-process "0") ;; Workaround is needed for NTEmacs. It cannot receive output from ;; a server at least in noninteractive mode. (unless (and (eq system-type 'windows-nt) (not (featurep 'meadow)) noninteractive) (accept-process-output skkserv-process)))) ;;(add-hook 'skk-mode-hook 'skk-adjust-search-prog-list-for-server-search) (add-hook 'kill-emacs-hook 'skk-disconnect-server) (run-hooks 'skk-server-load-hook) (provide 'skk-server) ;;; skk-server.el ends here ddskk-15.2/skk-setup.el.in0000644000570400056700000000405311672222020015453 0ustar kitamotoopenlab;;; skk-setup.el --- initial setup for SKK -*- emacs-lisp -*- ;; Copyright (C) 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-setup.el.in,v 1.36 2011/12/14 22:32:48 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2011/12/14 22:32:48 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin St, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: ;;; Autoloads. (unless (featurep 'xemacs) (require 'skk-autoloads)) ;;; Key bindings. (global-set-key "\C-x\C-j" 'skk-mode) (global-set-key "\C-xj" 'skk-auto-fill-mode) (global-set-key "\C-xt" 'skk-tutorial) ;;; Dictionaries. ;;(defvar skk-large-jisyo "@DIC@") ;;(defvar skk-aux-large-jisyo "@AUXDIC@") ;;(defvar skk-tut-file "@TUT@") ;;; Isearch setting. (defun skk-isearch-setup-maybe () (require 'skk-vars) (when (or (eq skk-isearch-mode-enable 'always) (and (boundp 'skk-mode) skk-mode skk-isearch-mode-enable)) (skk-isearch-mode-setup))) (defun skk-isearch-cleanup-maybe () (require 'skk-vars) (when (and (featurep 'skk-isearch) skk-isearch-mode-enable) (skk-isearch-mode-cleanup))) (add-hook 'isearch-mode-hook #'skk-isearch-setup-maybe) (add-hook 'isearch-mode-end-hook #'skk-isearch-cleanup-maybe) (provide 'skk-setup) ;;; skk-setup.el ends here ddskk-15.2/skk-show-mode.el0000644000570400056700000001476012206111103015607 0ustar kitamotoopenlab;;; skk-show-mode.el --- $B%b!<%I@ZBX;~$K(B tooltip/inline $BI=<($9$k(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2011 Tsuyoshi Kitamoto ;; Author: 2011 Tsuyoshi Kitamoto ;; Maintainer: SKK Development Team ;; Version: $Id: skk-show-mode.el,v 1.7 2013/08/24 11:00:19 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/08/24 11:00:19 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; ;; ~/.skk $B$K$F(B ;; (setq skk-show-mode-show t) ;; $B$H@_Dj$7$F$/$@$5$$!#(B ;; Emacs $B5/F0Cf$O(B M-x skk-show-mode $B$G%H%0%k$9$k$3$H$,$G$-$^$9!#(B ;; $BJQ?t(B skk-show-mode-style $B$K(B 'tooltip $BKt$O(B 'inline $B$r@_Dj$7$F$/$@$5$$!#(B ;;; Code: (eval-when-compile (require 'skk-vars)) (defadvice skk-isearch-set-initial-mode (before skk-show-mode activate) (setq skk-show-mode-show nil)) (defadvice skk-isearch-initialize-working-buffer (before skk-show-mode activate) (setq skk-show-mode-show nil)) (defadvice skk-cursor-set (after skk-show-mode activate) "$B$+$J%b!<%I$d%"%9%-!<%b!<%I$X@Z$jBX$o$C$?$H$-$K(B skk-*-mode-string $B$r(B tooltip / inline $BI=<($9$k(B." (when (and skk-show-mode-invoked skk-show-mode-show (not skk-isearch-switch)) (let ((func (cdr (assq skk-show-mode-style skk-show-mode-functions)))) (when func (funcall func)))) (setq skk-show-mode-invoked t)) (defun skk-show-mode-inline () (let ((skk-henkan-start-point (point)) string) (unless (skk-in-minibuffer-p) (cond (skk-abbrev-mode (setq string skk-abbrev-mode-string) (set-face-foreground 'skk-show-mode-inline-face skk-cursor-abbrev-color)) (skk-jisx0208-latin-mode (setq string skk-jisx0208-latin-mode-string) (set-face-foreground 'skk-show-mode-inline-face skk-cursor-jisx0208-latin-color)) (skk-katakana (setq string skk-katakana-mode-string) (set-face-foreground 'skk-show-mode-inline-face skk-cursor-katakana-color)) (skk-j-mode (setq string skk-hiragana-mode-string) (set-face-foreground 'skk-show-mode-inline-face skk-cursor-hiragana-color)) (skk-jisx0201-mode (setq string skk-jisx0201-mode-string) (set-face-foreground 'skk-show-mode-inline-face skk-cursor-jisx0201-color)) (t (setq string skk-latin-mode-string) (set-face-foreground 'skk-show-mode-inline-face skk-cursor-latin-color))) ;; (skk-show-mode-inline-1 string))) (sit-for 0.5) (skk-delete-overlay skk-show-mode-inline-overlays)) (defun skk-show-mode-inline-1 (str) ;; skk-dcomp-multiple-show() $B$+$iGRl9g$O(B prefix $B$N(B overlay $B$H>WFM$9$k$?$a(B ;; `skk-prefix-overlay' $B$KDI2C$9$k(B (setq ol (cond ((or (not skk-echo) (string= "" skk-prefix) (< (overlay-end skk-prefix-overlay) (point))) (make-overlay (point) (point))) (t skk-prefix-overlay))) (setq str (concat (overlay-get ol 'after-string) "\n" (make-string beg-col ? ) str))) ;; bottom $B0J30(B (t (setq col (skk-move-to-screen-column beg-col)) (cond ((> beg-col col) ;; $B7e9g$o$;$N6uGr$rDI2C(B (setq str (concat (make-string (- beg-col col) ? ) str))) ;; overlay $B$N:8C<$,%^%k%AI}J8;z$H=E$J$C$?$H$-$NHyD4@0(B ((< beg-col col) (backward-char) (setq col (skk-screen-column)) (setq str (concat (make-string (- beg-col col) ? ) str)))))) ;; $B$3$N;~E@$G(B overlay $B$N3+;O0LCV$K(B point $B$,$"$k(B (unless bottom (let ((ol-beg (point)) (ol-end-col (+ col (string-width str))) base-ol) (setq col (skk-move-to-screen-column ol-end-col)) ;; overlay $B$N1&C<$,%^%k%AI}J8;z$H=E$J$C$?$H$-$NHyD4@0(B (when (< ol-end-col col) (setq str (concat str (make-string (- col ol-end-col) ? )))) (setq ol (make-overlay ol-beg (point))) ;; $B85%F%-%9%H$N(B face $B$r7Q>5$7$J$$$h$&$K(B1$B$D8e$m$K(B overlay $B$r:n$C$F!"(B ;; $B$=$N(B face $B$r(B 'default $B$K;XDj$7$F$*$/(B (setq base-ol (make-overlay (point) (1+ (point)))) (overlay-put base-ol 'face 'default) (push base-ol skk-show-mode-inline-overlays) ))) (overlay-put ol 'invisible t) (overlay-put ol 'after-string str) (push ol skk-show-mode-inline-overlays))) (defun skk-show-mode-tooltip () (when window-system (let ((indicator (apply 'skk-mode-string-to-indicator (cond (skk-abbrev-mode `(abbrev ,skk-abbrev-mode-string)) (skk-jisx0208-latin-mode `(jisx0208-latin ,skk-jisx0208-latin-mode-string)) (skk-katakana `(katakana ,skk-katakana-mode-string)) (skk-j-mode `(hiragana ,skk-hiragana-mode-string)) (skk-jisx0201-mode `(jisx0201 ,skk-jisx0201-mode-string)) (t `(latin ,skk-latin-mode-string)))))) (skk-tooltip-show-at-point indicator)))) ;;;###autoload (defun skk-show-mode () (interactive) (message "skk-show-mode-show: %s" (setq skk-show-mode-show (null skk-show-mode-show)))) (provide 'skk-show-mode) ;;; skk-show-mode.el ends here ddskk-15.2/skk-sticky.el0000644000570400056700000002024212130533633015217 0ustar kitamotoopenlab;;; skk-sticky.el --- Improved sticky-shift on SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 2008 IRIE Tetsuya ;; Author: IRIE Tetsuya ;; Version: $Id: skk-sticky.el,v 1.5 2013/04/08 12:27:07 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/04/08 12:27:07 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; [$B35MW(B] ;; SKK $B$G$ODL>o!"JQ493+;O$*$h$SAw$j3+;O$N0LCV$rBgJ8;z$G;XDj$7$^$9$,!"$3(B ;; $B$l$rG$0U$N%-!<$G;XDj$G$-$k$h$&$K$7!"(Bsticky-shift $B%i%$%/$JA`:n$r2DG=(B ;; $B$K$7$^$9!#(B ;; ;; ~/.skk.el $B$K(B ;; ;; (setq skk-sticky-key ";") ;; ;; $B$H=q$$$F$*$/$H(B ";" $B%-!<$GJQ490LCV$,;XDj$G$-$k$h$&$K$J$j$^$9!#Nc$($P(B ;; $B!VM-$k!W$,(B ;; ;; "; a ; r u" ;; ;; $B$G$bF~NO$G$-!"%7%U%H%-!<$r2!$9I,MW$,$J$/$J$j$^$9!#A`:n>e$O(B ;; ;; (info "(skk) Q.3-4 $B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B") ;; ;; $B$J$I$K$"$kDL>o$N(B sticky-shift $B$HJQ$o$j$^$;$s$,!"2hLLI=<($O(B ;; ;; $BBG80(B $BDL>o$N(Bsticky skk-sticky ;; ; $BJQ2=$J$7(B $B"&(B ;; a $B"&$"(B $B"&$"(B ;; ; $B"&$"(B $B"&$"(B* ;; r $B"&$"(B*r $B"&$"(B*r ;; ;; $B$HA+0\$7$^$9!#(Bskk-sticky $B$O(B ";" $B$r2!$7$?;~E@$GI=<($,JQ2=$9$k$N$Gl9g$O(B ;; ;; (setq skk-sticky-key ";") ;; ;; $B$N$h$&$K(B string $B$r@_Dj$7$F2<$5$$!#(B`skk-sticky-key' $B$K@_Dj$7$?J8;z(B ;; $B$=$N$b$N$rF~NO$7$?$$>l9g$O(B2$B2sB3$1$FBG$D$HF~NO$G$-$^$9!#(B ;; ;; 2. $BI=<($5$l$J$$%-!<(B ;; ;; "$BL5JQ49(B" $B$N$h$&$JI=<($rH<$o$J$$%-!<$N>l9g$O(B ;; ;; (setq skk-sticky-key [muhenkan]) ; Windows $B4D6-$@$H(B [noconvert] ;; ;; $B$N$h$&$K$=$N%-!<$rI=$o$9(B vector $B$r@_Dj$7$F2<$5$$!#(B ;; ;; 3. $BF1;~BG80(B ;; ;; 2$B$D$N%-!<$rF1;~$KBG80$9$k$3$H$G$bJQ490LCV$r;XDj$G$-$^$9!#Nc$($P(B ;; "f" $B$H(B "j" $B$NF1;~BG80$G;XDj$9$k>l9g$O(B ;; ;; (setq skk-sticky-key '(?f ?j)) ;; ;; $B$N$h$&$K(B character $B$N%j%9%H$r@_Dj$7$F2<$5$$!#(B ;; Dvorak $BG[Ns$N$h$&$J!"2!$7$d$9$$>l=j$KE,Ev$J%-!<$,$J$$4D6-$G$b$3$N(B ;; $B5!G=$r;H$$$?$$>l9g$KJXMx$+$b$7$l$^$;$s!#(B ;; ;; [$BCm0U;v9`(B] ;; o $B$3$l$O$"$/$^$G$b!VG$0U$N%-!<$GJQ490LCV$r;XDj$9$k!W$b$N$G$"$j!"(B ;; sticky-shift $B$=$N$b$N$G$O$"$j$^$;$s!#$7$?$,$C$F!"(Blatin $B%b!<%I$d(B ;; abbrev $B%b!<%I!"$^$?(B SKK $B0J30$G$b(B sticky-shift $B$r;H$$$?$$>l9g$OA0=R(B ;; $B$N(B info $B$N$h$&$J@_Dj$rJ;MQ$9$kI,MW$,$"$j$^$9!#(B ;; ;; o skk-hint.el $B$rJ;MQ$9$k>l9g!"(B`skk-hint-start-char' $B$N%G%U%)%k%H$,(B ;; ";" $B$J$N$G@_Dj$K$h$C$F$O3dEv$F%-!<$,=EJ#$9$k2DG=@-$,$"$j$^$9!#(B ;;; TODO ;; * SPC $B$K3dEv$F$?$$$H$$$&?M$b5o$?$j$9$k(B? ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (defvar skk-sticky-key-orig-output nil) (skk-deflocalvar skk-sticky-okuri-flag nil) ;;; $B=i4|@_Dj(B (cond ((stringp skk-sticky-key) (let ((orig-rule (assoc skk-sticky-key (append skk-rom-kana-rule-list skk-rom-kana-base-rule-list)))) (setq skk-sticky-key-orig-output (car (cddr orig-rule))) (setq skk-rom-kana-rule-list (cons `(,skk-sticky-key nil skk-sticky-set-henkan-point) (delete orig-rule skk-rom-kana-rule-list))))) ((vectorp skk-sticky-key) (define-key skk-j-mode-map skk-sticky-key 'skk-sticky-set-henkan-point))) ;;; Functions (defun skk-sticky-looking-back-okuri-mark () "`point' $B$ND>A0$NJ8;z$,(B `*' $B$J$i$P(B t $B$rJV$9!#(B" (and (not (bobp)) (string= "*" (buffer-substring-no-properties (1- (point)) (point))))) (defun skk-sticky-set-okuri-mark () "$BAw$j3+;OE@$r(B `*' $B$rA^F~$9$k$3$H$GI8<1$7!"Aw$j$"$jJQ49$NBT$A>uBV$KF~$k!#(B" (when (eq skk-henkan-mode 'on) (unless (and skk-sticky-okuri-flag (skk-sticky-looking-back-okuri-mark)) (when (and skk-dcomp-activate (skk-dcomp-marked-p)) (skk-dcomp-before-kakutei)) (insert-and-inherit "*") (setq skk-sticky-okuri-flag t) nil))) (defun skk-sticky-set-henkan-point (&optional arg) "$BJQ493+;O0LCV$b$7$/$OAw$j3+;O0LCV$r;XDj$9$k!#(B" (interactive "*P") (cond ((not (eq skk-henkan-mode 'on)) (skk-set-henkan-point-subr)) ((eq (point) (marker-position skk-henkan-start-point)) (let ((data skk-sticky-key-orig-output)) (when data (skk-kakutei) (when (functionp data) (setq data (funcall data (skk-make-raw-arg arg)))) (when (stringp (if (consp data) (car data) data)) (if (consp data) (if skk-katakana (car data) (cdr data)) data))))) (t (skk-sticky-set-okuri-mark)))) (defadvice skk-kakutei (after skk-sticky-ad activate) "`skk-sticky-okuri-flag' $B$r%/%j%"$9$k!#(B" (setq skk-sticky-okuri-flag nil)) (defadvice keyboard-quit (after skk-sticky-ad activate) "`skk-sticky-okuri-flag' $B$r%/%j%"$9$k!#(B" (setq skk-sticky-okuri-flag nil)) (defadvice skk-insert (before skk-sticky-ad activate) "`*' $B$ND>8e$G$"$l$PF~NO$rBgJ8;z$KJQ49$9$k!#(B" (when (and skk-sticky-okuri-flag (skk-sticky-looking-back-okuri-mark) (string= "" skk-prefix)) (let ((pair (rassq (skk-last-command-char) skk-downcase-alist))) (skk-set-last-command-char (if pair (car pair) (upcase (skk-last-command-char))))))) (defadvice skk-set-henkan-point (before skk-sticky-ad activate) "`point' $BD>A0$N(B `*' $B$r>C$9!#(B" (when (and skk-sticky-okuri-flag (skk-sticky-looking-back-okuri-mark)) (delete-backward-char 1))) ;; `skk-kana-input' $B$ODL>o(B `cancel-undo-boundary' $B$r8F$V$,!"(B ;; `skk-sticky-key' $B$N(B2$BEYBG$A$N:]$KK\Mh$"$k$Y$-(B boundary (C-k $B$N8e$J$I(B) ;; $B$b>C$7$F$7$^$&$?$a!"(Badvice $B$K$F8F$P$J$$$h$&$KBP=h$9$k!#(B ;; $B$3$l$K$h$j!"(B`skk-undo-kakutei-word-only' $B$,(B non-nil $B$G$b(B2$BEYBG$A$N;~(B ;; $B$K(B boundary $B$,F~$C$F$7$^$&I{:nMQ$,$"$k$,!"@h$NLdBj$h$j$O%^%7$@$H9M$((B ;; $B$k!#(B ;;; (defadvice skk-kana-input (around skk-sticky-ad activate) ;;; "$B"&D>8e$N(B `skk-sticky-key' $B$NF~NO$N:](B `cancel-undo-boundary' $B$r8F$P$J$$$h$&$K!#(B" ;;; (if (and (stringp skk-sticky-key) ;;; (eq (skk-last-command-char) (string-to-char skk-sticky-key)) ;;; (eq skk-henkan-mode 'on) ;;; (eq (point) (marker-position skk-henkan-start-point))) ;;; (progn ;;; (let ((skk-self-insert-non-undo-count 20)) ;;; ad-do-it) ;;; (setq skk-self-insert-non-undo-count (1+ skk-self-insert-non-undo-count))) ;;; ad-do-it)) ;;; $BF1;~BG804XO"(B (defun skk-sticky-double-p (first next) "FIRST $B$H(B NEXT $B$,F1;~BG80$G$"$l$P(B non-nil $B$rJV$9!#(B" (let ((char (if (characterp first) first (skk-last-command-char)))) (and (not (eq char next)) (memq char skk-sticky-key) (memq next skk-sticky-key)))) (defadvice skk-insert (around skk-sticky-ad-double activate) "$BF1;~BG80$r8!=P$7$F=hM}$9$k!#(B" (cond ((not (consp skk-sticky-key)) ad-do-it) ((not (memq (skk-last-command-char) skk-sticky-key)) ad-do-it) ((sit-for skk-sticky-double-interval t) ;; No input in the interval. ad-do-it) (t ;; Some key's pressed. (let ((next-event (next-command-event))) (if (skk-sticky-double-p this-command (aref (skk-event-key next-event) 0)) (skk-sticky-set-henkan-point) ad-do-it (skk-unread-event next-event)))))) (provide 'skk-sticky) ;;; skk-sticky.el ends here ddskk-15.2/skk-study.el0000644000570400056700000004236512122225401015063 0ustar kitamotoopenlab;;; skk-study.el --- SKK $B3X=,8z2LDs6!%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000, 2002, 2003 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-study.el,v 1.67 2013/03/20 03:20:33 skk-cvs Exp $ ;; Keywords: japanese ;; Created: Apr. 11, 1999 ;; Last Modified: $Date: 2013/03/20 03:20:33 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$"$k8l(B A' $B$r3NDj$7$?>l9g$K!"(BA' $B5Z$S$=$N8+=P$78l(B A $B$KBP$7$F!"D>A0$K(B ;; $BJQ49$7$?8l(B B' $B$H$=$N8+=P$78l(B B $B$r4XO"8l$H$7$FEPO?$7$F$*$-!":FEY(B A ;; $B$NJQ49$r9T$C$?$H$-$K!"(BB $B5Z$S(B B' $B$N%Z%"$,D>A0$N2?2s$+$K3NDj$7$?8l$N(B ;; $BCf$K8+$D$+$l$P!"(BA' $B$rM%@h$7$F=PNO$9$kC1=c$J3X=,8z2L$rDs6!$9$k%W%m%0(B ;; $B%i%`$G$9!#(B ;; ;; $B@N(B SKK ML $B$GOCBj$K$J$C$?C18l$NB0@-$NJ]B8$N$?$a$K!"(Bskk-attr.el $B$r:n(B ;; $B$j$^$7$?$,!"5!G=$rM_D%$j$9$.$F$b$N$K$J$j$^$;$s$G$7$?!#D>A0$NJQ49$H(B ;; $B$N4XO"@-$rJ]B8$9$k$?$a$@$1$K5!G=$r9J$C$F:F9=@.$7$?$N$,$3$N%W%m%0%i(B ;; $B%`$G$9!#(B ;; ;; ;; ~/.skk $B$K(B ;; ;; (require 'skk-study) ;; ;; $B$H=q$$$F2<$5$$!#(B ;; ;; ;; ((okuri-ari . ((A . (((B . B') . (A' ...)) ;; ...)))) ;; (okuri-nasi . ((A . (((B . B') . (A' ...)) ;; ...))))) ;; ;; o examples ;; ;; ((okuri-ari . ;; (("$B$-(Br" . ((("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) ;; (("$B$-(B" . "$BLZ(B") . ("$B@Z(B")) ;; (("$B$($s(B" . "$B1o(B") . ("$B@Z(B")))) ;; ("$B$J(Bk" . ((("$B$3$I$b(B" . "$B;R6!(B") . ("$B5c(B")) ;; (("$B$3$H$j(B" . "$B>.D;(B") . ("$BLD(B")))) ;; ("$B$+(Bk" . ((("$B$+$_(B" . "$B;f(B") . ("$B=q(B")) (("$B$R$s$+$/(B" . "$BIJ3J(B") . ("$B7g(B"))))) ;; ...) ;; (okuri-nasi . ;; (("$B$+$_(B" . ((("$B$-(Br" . "$B@Z(B") . ("$B;f(B")))) ;; ...))) ;; ;; ;;; Code: (eval-when-compile (require 'cl) (defvar jka-compr-compression-info-list) (defvar print-quoted)) (require 'skk-macs) (require 'skk-vars) (require 'ring) (defconst skk-study-file-format-version "0.3") (skk-deflocalvar skk-study-current-buffer-theme nil) ;;;; inline functions. (defsubst skk-study-get-last-henkan-data (index) (and (> (ring-length skk-study-data-ring) index) (ring-ref skk-study-data-ring index))) (defsubst skk-study-get-current-alist (&optional theme) (let ((base-alist (cdr (if theme (assoc theme skk-study-alist) (or (assoc skk-study-current-buffer-theme skk-study-alist) (assoc "general" skk-study-alist)))))) (assq (cond ((or skk-okuri-char skk-henkan-okurigana) 'okuri-ari) (t 'okuri-nasi)) base-alist))) (add-to-list 'skk-search-end-function 'skk-study-search) (add-to-list 'skk-update-end-function 'skk-study-update) ;;;###autoload (defun skk-study-search (henkan-buffer midasi okurigana entry) "$B3X=,%G!<%?$r;2>H$7$F(B ENTRY $B$r2C9)$7!"4XO"@-$N$"$k8l$NM%@h=g0L$r>e$2$FJV$9!#(B" (or skk-study-data-ring (setq skk-study-data-ring (make-ring skk-study-search-times))) (when (and entry (cdr entry)) (or skk-study-alist (skk-study-read)) (with-current-buffer henkan-buffer ;; (("$B$-(Br" . ((("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) (("$B$-(B" . "$BLZ(B") . ("$B@Z(B")))) ;; ("$B$J(Bk" . ((("$B$3$I$b(B" . "$B;R6!(B") . ("$B5c(B"))))) (let ((alist (cdr (assoc midasi (cdr (skk-study-get-current-alist)))))) (when alist (setq entry (skk-study-search-1 alist midasi okurigana entry)))))) entry) (defun skk-study-search-1 (target-alist midasi okurigana entry) (do ((index 0 (1+ index)) (times skk-study-search-times (1- times)) last-data associates e exit) ((or exit (zerop times)) entry) (and (setq last-data (skk-study-get-last-henkan-data index)) ;; ((("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) (("$B$-(B" . "$BLZ(B") . ("$B@Z(B"))) ;; ("$BCe(B") (setq associates (cdr (assoc last-data target-alist))) (setq associates (reverse associates)) (setq exit t) (while (setq e (car associates)) ;;uniq (setq entry (cons e (delete e entry)) associates (cdr associates)))))) ;;;###autoload (defun skk-study-update (henkan-buffer midasi okurigana word purge) "MIDASI $B$H(B WORD $B$K$D$$$F(B `skk-study-data-ring' $B$N:G=i$N4XO"8l$r4XO"IU$1$F3X=,$9$k!#(B" (or skk-study-data-ring (setq skk-study-data-ring (make-ring skk-study-search-times))) (let ((inhibit-quit t) last-data diff grandpa papa baby) (with-current-buffer henkan-buffer (when (and ;; $BBh0l8uJd$G3NDj$7$?$+$I$&$+(B (or skk-study-first-candidate (not (string= word (car skk-henkan-list)))) ;; $BJQ49%P%C%U%!$,JQ$o$C$F$$$J$$$+$I$&$+(B (eq (skk-get-last-henkan-datum 'henkan-buffer) henkan-buffer) (or (not skk-study-max-distance) (and (setq diff (- (point) (skk-get-last-henkan-datum 'henkan-point))) ;; $BD>A0$NJQ49$h$j%]%$%s%H$,A0$X0\F0$7$F$$$J$$$+$I$&$+(B (> diff 0) ;; skk-study-max-distance $B$rD6$($FD>A0$NJQ49$H%]%$%s(B ;; $B%H$,N%$l$F$$$J$$$+$I$&$+!#(B (> skk-study-max-distance diff))) midasi word (setq last-data (if (not (ring-empty-p skk-study-data-ring)) (ring-ref skk-study-data-ring 0))) (not (or (string= midasi "") (string= word "") (and (string= midasi (car last-data)) (string= word (cdr last-data)))))) (or skk-study-alist (skk-study-read)) (setq grandpa (skk-study-get-current-alist) ;; ((("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) (("$B$-(B" . "$BLZ(B") . ("$B@Z(B"))) papa (assoc midasi (cdr grandpa))) (cond ( ;; car $B$K8+=P$78l$r;}$D(B cell $B$,$J$$(B (not (or papa purge)) (setcdr grandpa (nconc (list (cons midasi (list (cons last-data (list word))))) (cdr grandpa)))) ;; $B8+=P$78l$+$i;O$^$k(B cell $B$O$"$k$,!"(Bcdr $B$K(B (last-key . last-word) $B$r(B ;; $B%-!<$K$7$?(B cell $B$,$J$$!#(B ((not (or ;; (("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) (setq baby (assoc last-data (cdr papa))) purge)) (setcdr papa (cons (cons last-data (list word)) (cdr papa)))) ;; $B8+=P$78l$r%-!<$H$7$?4{B8$N(B cell $B9=B$$,$G$-$"$,$C$F$$$k$N$G!"4XO"8l$@$1(B ;; $B%"%C%W%G!<%H$9$k!#(B ((not purge) ;; ring $B%G!<%?$NJ}$,$b$C$H8zN(E*$+!)(B $B$G$b$3$3$NItJ,$N%G!<%?$N%"%C%W%G!<%H(B ;; $B$,8zN(NI$/$G$-$J$$!#(B (setcdr baby (cons word (delete word (cdr baby)))) (if (> (1- (length (cdr baby))) skk-study-associates-number) (skk-study-chomp (cdr baby) (1- skk-study-associates-number)))) (t (setcdr grandpa (delq baby (cdr grandpa))))))))) ;;;###autoload (defun skk-study-save (&optional nomsg) "$B3X=,7k2L$r(B `skk-study-file' $B$XJ]B8$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B NOMSG $B$,(B non-nil $B$G$"$l$P!"J]B8%a%C%;!<%8$rI=<($7$J$$!#(B" (interactive "P") (if (or (and (null skk-study-alist) (not nomsg)) (not skk-study-last-read) (and skk-study-last-save (skk-study-time-lessp skk-study-last-save skk-study-last-read))) (progn (skk-message "SKK $B$N3X=,7k2L$r%;!<%V$9$kI,MW$O$"$j$^$;$s(B" "No SKK study need saving") (sit-for 1)) (skk-study-save-1 nomsg))) (defun skk-study-save-1 (nomsg) (let ((inhibit-quit t) e) (when (not nomsg) (skk-message "SKK $B$N3X=,7k2L$r(B %s $B$K%;!<%V$7$F$$$^$9(B..." "Saving SKK study to %s..." skk-study-file)) (and skk-study-backup-file (file-exists-p (expand-file-name skk-study-file)) (cond ((eq system-type 'ms-dos) (with-temp-file skk-study-backup-file (erase-buffer) (insert-file-contents skk-study-file))) (t (copy-file (expand-file-name skk-study-file) (expand-file-name skk-study-backup-file) 'ok-if-already-exists 'keep-date)))) (with-temp-buffer (insert (format ";;; skk-study-file format version %s\n" skk-study-file-format-version)) (when skk-study-sort-saving ;; sort is not necessary, but make an alist rather readable. (setq e (assq 'okuri-ari skk-study-alist)) (setcdr e (sort (cdr e) (lambda (a b) (skk-string< (car a) (car b))))) (setq e (assq 'okuri-nasi skk-study-alist)) (setcdr e (sort (cdr e) (lambda (a b) (skk-string< (car a) (car b)))))) (skk-study-prin1 skk-study-alist (current-buffer)) (let ((coding-system-for-write (skk-find-coding-system skk-jisyo-code)) jka-compr-compression-info-list) (write-region (point-min) (point-max) skk-study-file))) (setq skk-study-last-save (current-time)) (when (not nomsg) (skk-message "SKK $B$N3X=,7k2L$r(B %s $B$K%;!<%V$7$F$$$^$9(B...$B40N;!*(B" "Saving SKK study to %s...done" skk-study-file) (sit-for 1) (message "")))) ;;;###autoload (defun skk-study-switch-current-theme (theme) "$B%+%l%s%H%P%C%U%!$KBP$7$F(B skk-study $B$N3X=,%F!<%^(B THEME $B$r@_Dj$9$k!#(B $B3X=,%F!<%^L>(B THEME $B$K$OG$0U$NJ8;zNs$r;XDj$G$-$k!#(B $B%+%l%s%H%P%C%U%!$K3X=,%F!<%^$,@_Dj$5$l$J$$$H$-$O!"3X=,%F!<%^(B \"general\" $B$KBP$7$F3X=,$,9T$o$l$k!#(B" (interactive (list (completing-read "Theme of current buffer: (default: general) " (when (or skk-study-alist (skk-study-read)) (let ((n 0)) (mapcar (lambda (e) (setq n (1+ n)) (cons e n)) (mapcar 'car skk-study-alist))))))) (setq skk-study-current-buffer-theme theme) (let ((alist (assoc theme skk-study-alist))) (unless alist (setq skk-study-alist (cons (cons theme '((okuri-ari) (okuri-nasi))) skk-study-alist))))) ;;;###autoload (defun skk-study-remove-theme (theme) "skk-study $B$N3X=,%F!<%^(B THEME $B$r:o=|$9$k!#(B" (interactive (list (completing-read "Remove skk-study theme: " (when (or skk-study-alist (skk-study-read)) (let ((n 0)) (mapcar (lambda (e) (setq n (1+ n)) (cons e n)) (mapcar 'car skk-study-alist)))) nil 'require-match))) (if (string= theme "general") (skk-message "$B3X=,%F!<%^(B `general' $B$O:o=|$G$-$^$;$s(B" "Cannot remove skk-study theme `general'") (setq skk-study-alist (delq (assoc theme skk-study-alist) skk-study-alist)) (when (and skk-study-current-buffer-theme (string= skk-study-current-buffer-theme theme)) (setq skk-study-current-buffer-theme nil)))) ;;;###autoload (defun skk-study-copy-theme (from to) "skk-study $B$N3X=,%F!<%^(B FROM $B$r(B TO $B$K%3%T!<$9$k!#(B TO $B$N4{B8%G!<%?$OGK2u$5$l$k!#(B" (interactive (list (completing-read "Copy skk-study theme from: " (when (or skk-study-alist (skk-study-read)) (let ((n 0)) (mapcar (lambda (e) (setq n (1+ n)) (cons e n)) (mapcar 'car skk-study-alist)))) nil 'require-match) (completing-read "Copy skk-study theme to: " (let ((n 0)) (mapcar (lambda (e) (setq n (1+ n)) (cons e n)) (mapcar 'car skk-study-alist)))))) (when (string= from to) (skk-error "$B%3%T!<85$H%3%T!<@h$N%F!<%^$,F10l$G$9(B" "FROM and TO is the same theme")) (let ((fromalist (copy-tree (cdr (assoc from skk-study-alist)))) (toalist (assoc to skk-study-alist))) (unless fromalist (skk-error "$B%3%T!<85$N3X=,%G!<%?$,$"$j$^$;$s(B" "FROM study data is null")) (if toalist (setcdr toalist fromalist) (setq skk-study-alist (cons (cons to fromalist) skk-study-alist))))) ;;;###autoload (defun skk-study-read (&optional nomsg force) "`skk-study-file' $B$+$i3X=,7k2L$rFI$_9~$`!#(B $B%*%W%7%g%J%k0z?t$N(B FORCE $B$,(B non-nil $B$G$"$l$P!"GK4~$N3NG'$r$7$J$$!#(B" (interactive "P") (skk-create-file skk-study-file (if (not nomsg) (if skk-japanese-message-and-error "SKK $B$N3X=,7k2L%U%!%$%k$r:n$j$^$7$?(B" "I have created an SKK study file for you"))) (when (or (null skk-study-alist) force (skk-yes-or-no-p (format "%s $B$r:FFI$_9~$_$7$^$9$+!)(B " skk-study-file) (format "Reread %s? " skk-study-file))) (unless nomsg (skk-message "%s $B$N(B SKK $B3X=,7k2L$rE83+$7$F$$$^$9(B..." "Expanding SKK study of %s ..." (file-name-nondirectory skk-study-file))) (when skk-study-check-alist-format (skk-study-check-alist-format skk-study-file)) (setq skk-study-alist (skk-study-read-1 skk-study-file)) (setq skk-study-last-read (current-time)) (when (and skk-study-alist (not nomsg)) (skk-message "%s $B$N(B SKK $B3X=,7k2L$rE83+$7$F$$$^$9(B...$B40N;!*(B" "Expanding SKK study of %s ...done" (file-name-nondirectory skk-study-file)) (sit-for 1) (message "")))) (defun skk-study-read-1 (file) ;; read FILE and return alist. (with-temp-buffer (let ((version-string (format ";;; skk-study-file format version %s\n" skk-study-file-format-version)) version) (let ((coding-system-for-read (skk-find-coding-system skk-jisyo-code)) format-alist) (insert-file-contents file)) (when (zerop (buffer-size)) ;; bare alist (insert version-string "((\"general\" . ((okuri-ari) (okuri-nasi))))")) (goto-char (point-min)) (when (looking-at "^;;; skk-study-file format version \\([.0-9]+\\)\n") (setq version (match-string 1))) (cond ((not version) (skk-error "skk-study-file $B$,2u$l$F$$$^$9(B" "Broken skk-study-file")) ((string= version skk-study-file-format-version) (read (current-buffer))) (t ;; convert the format to new one (list (cons "general" (read (current-buffer))))))))) (defun skk-study-check-alist-format (file) "skk-study $B$N3X=,%G!<%?%U%!%$%k(B FILE $B$N%U%)!<%^%C%H$r%A%'%C%/$9$k!#(B" (interactive (list (read-file-name (format "File to check: (default: %s) " skk-study-file) default-directory skk-study-file))) (skk-message "%s $B$N%U%)!<%^%C%H$r%A%'%C%/$7$F$$$^$9(B..." "Checking format of %s..." file) (or (skk-study-check-alist-format-1 (skk-study-read-1 file)) (skk-error "%s $B$N%U%)!<%^%C%H$O2u$l$F$$$^$9(B" "%s format is broken" file)) (skk-message "%s $B$N%U%)!<%^%C%H$r%A%'%C%/$7$F$$$^$9(B...$B40N;(B!" "Checking format of %s...done" file) (sit-for 1) (message "")) (defun skk-study-check-alist-format-1 (alist) (let (a) (dolist (elm alist) (when (and (= (length elm) 3) (stringp (car elm)) (setq a (cdr elm)) (assq 'okuri-ari a) (assq 'okuri-nasi a)) (catch 'exit (let ((index '(okuri-ari okuri-nasi)) (func (lambda (str) (let ((len (length str))) (and (> len 1) (skk-ascii-char-p (aref str (1- len))))))) a2 e f) (while index (and (eq (car index) 'okuri-nasi) (setq func (lambda (str) (let ((len (length str))) (cond ((= len 1)) ((not (skk-ascii-char-p (aref str (1- len))))) ((skk-ascii-char-p (aref str (- len 2))))))))) (setq a2 (cdr (assq (car index) a))) (while a2 (setq e (car a2)) (or (funcall func (car e)) ;; $B8+=P$78l$N%A%'%C%/(B (throw 'exit nil)) (setq f (cdr e)) (while f (if (not (and ;; $BD>A0$NJQ49$N>pJs(B (consp (caar f)) ;; $B4XO"8l%j%9%H(B (listp (cdar f)))) (throw 'exit nil)) (setq f (cdr f))) (setq a2 (cdr a2))) (setq index (cdr index))) t)))))) (defun skk-study-prin1 (form &optional stream) (let ((print-readably t) print-level print-length print-quoted) (prin1 form stream))) (defun skk-study-chomp (nth list) ;; LIST := '(A B C D), NTH := 1 ;; -> '(A B) (and (> nth -1) (setcdr (nthcdr nth list) nil)) list) (defadvice skk-kakutei-initialize (before skk-study-ad activate) (let ((kakutei-word (ad-get-arg 0))) (when kakutei-word (ring-insert skk-study-data-ring (cons skk-henkan-key kakutei-word))))) (defadvice skk-undo-kakutei (after skk-study-ad activate) (let ((last (ring-ref skk-study-data-ring 0)) (last2 (ring-ref skk-study-data-ring 1)) target) (when (and last last2) (setq target (assoc (car last) ;; skk-undo-kakutei is called in henkan buffer (skk-study-get-current-alist)) target (delq (assoc last2 (cdr target)) target))))) ;; time utilities... ;; from ls-lisp.el. Welcome! (defun skk-study-time-lessp (time0 time1) (let ((hi0 (car time0)) (hi1 (car time1)) (lo0 (nth 1 time0)) (lo1 (nth 1 time1))) (or (< hi0 hi1) (and (= hi0 hi1) (< lo0 lo1))))) (add-hook 'kill-emacs-hook 'skk-study-save) (provide 'skk-study) ;;; skk-study.el ends here ddskk-15.2/skk-tankan.el0000644000570400056700000055732212046714061015205 0ustar kitamotoopenlab;;; skk-tankan.el --- SKK $BC14A;zJQ49%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2003 YAGI Tatsuya ;; Copyright (C) 2010 Tsuyoshi Kitamoto ;; Author: YAGI Tatsuya ;; Author: Tsuyoshi Kitamoto ;; Maintainer: SKK Development Team ;; Version: $Id: skk-tankan.el,v 1.57 2012/11/08 11:32:01 skk-cvs Exp $ ;; Keywords: japanese ;; Last Modified: $Date: 2012/11/08 11:32:01 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; 1. $B;H$$J}(B ;; ;; 1-a. $BFI$_$N:G8e$K!"FI$_$N0lIt$H$7$F(B @ $B$rF~NO$7$F$+$iJQ49$9$k$H!"(B ;; $B0lJ8;z$N$_$+$i$J$k8uJd$K9J$j9~$s$@>e$G!"(B ;; $B8uJd$rAm2h?t=g$G%=!<%H$7$F$+$iJQ49$7$^$9!#(B ;; ;; 1-b. $B!VFI$_!WItJ,$,?tCM$G$"$l$P!"$=$N?tCM$rAm2h?t$H$9$k8uJd$rI=<($7$^$9!#(B ;; $B"&(B12@ [Q 1 2 @ ] ;; ;; 1-c. $B!VFI$_!WItJ,$,(B @ $B$G$"$l$P!"It [Q @ @ ] ;; ;; 2. $B@_DjJ}K!(B ;; ;; ~/.skk $B$K$Ol9g$O!"0J2<$N$h$&$K(B skk-search-prog-list $B$N@hF,$K(B ;; ;; $BDI2C$7$F$b9=$$$^$;$s!#(B ;; (add-to-list 'skk-search-prog-list ;; '(skk-tankan-search 'skk-search-jisyo-file ;; skk-large-jisyo 10000)) ;; ;; ;; $B$7$+$7!"3NDjJQ49$rJ;MQ$9$k>l9g$O!"(B skk-search-kakutei-jisyo-file ;; ;; $B$^$?$OBe$o$j$N3NDj%W%m%0%i%`$,(B skk-search-prog-list $B$N@hF,$K(B ;; ;; $B$J$1$l$P$$$1$^$;$s!#$=$N>l9g$OBe$o$j$K0J2<$N@_Dj$r$7$^$9!#(B ;; (setq skk-search-prog-list ;; (cons (car skk-search-prog-list) ;; (cons '(skk-tankan-search 'skk-search-jisyo-file ;; skk-large-jisyo 10000) ;; (cdr skk-search-prog-list)))) ;; ;; ;; $BC14A;z8!:w$N%-!<$r(B @ $B$K$9$k(B($B%G%U%)%k%H(B) ;; (setq skk-tankan-search-key ?@) ;; ;; ;; ;; @ $B$rF~NO$G$-$k$h$&$K$9$k(B ; DDSKK 14.2 $B$+$i$OITMW$G$9!#(B ;; ;; (setq skk-rom-kana-rule-list ; $B%a!<%j%s%0%j%9%H(B 2010-11-27 ;; ;; (append skk-rom-kana-rule-list ;; ;; '(("@" nil "@")))) ;; ;; ;; annotation $B$H$7$F2h?t$HIt]$+$i$O$:$9(B ;; (add-hook 'skk-search-excluding-word-pattern-function ;; #'(lambda (kakutei-word) ;; (string-match (format "%s$" ;; (regexp-quote ;; (char-to-string skk-tankan-search-key))) ;; skk-henkan-key))) ;; ;; ;; $BJ8;z(B CHAR $B$N(B ANNOTATION ($BJ8;zNs(B) $B$rJQ99$7$?$$>l9g(B ;; ;; (skk-tankan-set-char-annotation CHAR ANNOTATION) ;; ;; ;; $B%a%b%j$r@aLs$7$?$$?M8~$1(B ($BIt==KNRGRLRSKt(B\ $B8}SxEZ;NTiTjM.UwUyV%;3V_9)8J6R43VvVxW.W0W55]W@WDWF(B\ $B?4Xy8M 57777 ;; (skk-tankan-get-char-data 57777) ;; => (24 7 9) ;; (aref skk-tankan-radical-vector 24) ;; => "$B==(B" (let* ((charset (if (eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; GNU Emacs 23.1 or later (char-charset char skk-charset-list) (char-charset char))) ; => 'japanese-jisx0208 ; or 'japanese-jisx0213-2 (fun (cdr (assq charset skk-tankan-get-char-data-functions)))) ;; (or (and fun (funcall fun char)) ; => skk-tankan-get-char-data-0213-1() (list 0 0 0)))) (defun skk-tankan-get-char-data-0213-1 (char) (skk-tankan-get-char-data-internal char #'skk-tankan-encode-0213-1 skk-tankan-radical-stroke-table-0213-1)) (defun skk-tankan-get-char-data-0213-2 (char) (skk-tankan-get-char-data-internal char #'skk-tankan-encode-0213-2 skk-tankan-radical-stroke-table-0213-2)) (defun skk-tankan-get-char-data-internal (char encoder table) (let ((n (funcall encoder char)) radical dat stroke) (if (null n) nil (setq n (* 2 n) ; table $B$O!"(B1 $BJ8;z$"$?$j(B 2 byte $B$r;HMQ(B radical (aref table n) ; $BIt 55329 ;; (split-char 55329) => (japanese-jisx0208 48 33) ;; split-char $B$N7k2L$r(B 16$B?J$KD>$9$H(B JIS$B%3!<%I(B $B$,F@$i$l$k!#(B ;; (format "%x %x" 48 33) => "30 21" ;; ?! = 33 = 0x21 ;; 01$B6h!A(B13$B6h$^$G$OHs4A;zNN0h(B ;; $B6h$R$H$DEv$?$j(B (- (* 16 6) 2) = 94 ;; (skk-tankan-encode-0213-1 55329) => 188 (defun skk-tankan-encode-0213-1 (char) (let* ((l (split-char char)) (n (+ (* 94 (- (nth 1 l) ?! 13)) (- (nth 2 l) ?!)))) (and (>= n 0) n))) (defun skk-tankan-encode-0213-2 (char) (let* ((l (skk-split-char char)) (ku (- (nth 1 l) ?!)) (tmp (if (>= ku 77) (- ku 68) (cdr (assq ku '((0 . 0) (2 . 1) (3 . 2) (4 . 3) (7 . 4) (11 . 5) (12 . 6) (13 . 7) (14 . 8))))))) (and tmp (+ (* 94 tmp) (- (nth 2 l) ?!))))) (defun skk-search-by-stroke-or-radical-sub (high himax lomin lomax num i charset) (let (low char list) (while (<= high himax) (setq low lomin) (while (<= low lomax) (setq char (make-char charset high low)) (if (= num (nth i (skk-tankan-get-char-data char))) (setq list (cons (char-to-string char) list))) (setq low (1+ low))) (setq high (1+ high))) list)) (defun skk-search-by-stroke-or-radical (num method) "JIS X 0208 $BKt$O(B JIS X 0213-[12] $B$NJ8;z=89g$N$&$A;XDj$NJ}K!$GC14A;z$r8!:w$9$k!#(B METHOD $B$,(B 0 $B$G$"$l$P?tCM(B NUM $B$OIt@\;2>H$9$k$h$&=q$-49$($k!#(B ;; $B",$N(B 1st byte $B$,It= emacs-major-version 23)) (featurep 'jisx0213)) ; Mule-UCS ;; JIS X 0213 (append (skk-search-by-stroke-or-radical-sub ?\x2e ?\x7e ?\x21 ?\x7e num method 'japanese-jisx0213-1) (skk-search-by-stroke-or-radical-sub ?\x21 ?\x21 ?\x21 ?\x7e num method 'japanese-jisx0213-2) (skk-search-by-stroke-or-radical-sub ?\x23 ?\x25 ?\x21 ?\x7e num method 'japanese-jisx0213-2) (skk-search-by-stroke-or-radical-sub ?\x28 ?\x28 ?\x21 ?\x7e num method 'japanese-jisx0213-2) (skk-search-by-stroke-or-radical-sub ?\x2c ?\x2f ?\x21 ?\x7e num method 'japanese-jisx0213-2) (skk-search-by-stroke-or-radical-sub ?\x6e ?\x7e ?\x21 ?\x7e num method 'japanese-jisx0213-2) ) ;; JIS X 0208 (let ((charset 'japanese-jisx0208)) (append (skk-search-by-stroke-or-radical-sub ?\x30 ?\x4e ?\x21 ?\x7e num method charset) (skk-search-by-stroke-or-radical-sub ?\x4f ?\x4f ?\x21 ?\x53 num method charset) (skk-search-by-stroke-or-radical-sub ?\x50 ?\x73 ?\x21 ?\x7e num method charset) (skk-search-by-stroke-or-radical-sub ?\x74 ?\x74 ?\x21 ?\x26 num method charset) )))) (defun skk-tankan-bushu-compread () "$BG[Ns(B `skk-tankan-radical-vector' $B$NFbMF$r0lMwI=<($7$FA*Br$9$k!#(B $BLa$jCM$O?tCM$G$"$k!#(B" ;; Memo ;; skk-tankan-radical-vector $B$O8GDjCM!JITJQ!K$J$N$G!"(B ;; $BK\Mh$G$"$l$P(B alist $B$bF0E*$K@8@.$;$:$K8GDjCM$GNI$$!#(B ;; $B$?$@$7!"(Bface $B$rF3F~$7$F$7$^$C$?(B(2011-1-3)$B$N$G!"F0E*$K(B face $B$rE,MQ$5$;$k$?$a(B ;; $BEvLL$O(B alist $B$bF0E*$K@8@.$9$k!#(B (let ((i 1) (len (length skk-tankan-radical-vector)) alist) (while (< i len) (setq alist (cons (list (concat (format "%03d " i) (propertize (aref skk-tankan-radical-vector i) 'face 'skk-tankan-face) (propertize (concat " (" (aref skk-tankan-radical-name i) ")") 'face 'skk-tankan-radical-name-face))) alist)) (setq i (1+ i))) (setq i (string-to-number (completing-read "$BIto$O(B `skk-search-prog-list' $B$N#1MWAG$H$7$F => $BAm2h?tJQ49(B ((string-match "^[0-9]+$" skk-henkan-key) (skk-search-by-stroke-or-radical (string-to-number skk-henkan-key) 2)) ;; $B"&(B@@ => $BIt => "$BFI$_(B"$BC14A;zJQ49(B (t (apply func args)))))))) (defun skk-tankan-select-tankanji-kouho (lis) (let ((top lis) tmp) ;; select TANKANJI KOUHO (while (cdr lis) ;; remove annotation (setq tmp (nth 1 lis)) (if (string-match ";" tmp) (setq tmp (substring tmp 0 (match-beginning 0)))) (if (not (string-match "^.$" tmp)) (setcdr lis (cddr lis)) (setq lis (cdr lis)) (setq tmp (string-to-char tmp) tmp (cons tmp (cons (skk-tankan-get-char-annotation tmp) (skk-tankan-get-char-data tmp)))) (setcar lis tmp))) ;; sort KOUHO by KAKUSUU(or BUSYU) (setq lis (sort (cdr top) (lambda (x y) (let ((xa (nth 2 x)) (xb (nth 3 x)) (xc (nth 4 x)) (ya (nth 2 y)) (yb (nth 3 y)) (yc (nth 4 y))) (if (= xc yc) (if (= xa ya) (if (= xb yb) (< (car x) (car y)) (< xb yb)) (< xa ya)) (< xc yc)))))) ;; return list with annotation (mapcar (lambda (cell) (let ((anno (if (zerop (nth 2 cell)) (nth 1 cell) (format "%d$B2h(B(%s$BIt(B%d$B2h(B)%s" (nth 4 cell) (aref skk-tankan-radical-vector (nth 2 cell)) (nth 3 cell) (or (nth 1 cell) "") )))) (if (zerop (length anno)) (char-to-string (car cell)) (concat (char-to-string (car cell)) ";" anno)))) lis))) ;;;###autoload (defun skk-search-tankanji (&optional jisyo) (let ((skk-henkan-key (concat skk-henkan-key (char-to-string skk-tankan-search-key))) (server-prog (if skk-server-host (assq 'skk-search-server skk-search-prog-list) nil))) (or (cond ((and (stringp jisyo) (file-readable-p jisyo)) (skk-tankan-search 'skk-search-jisyo-file jisyo 10000)) ((and (stringp skk-cdb-large-jisyo) (file-readable-p skk-cdb-large-jisyo)) (skk-tankan-search 'skk-search-cdb-jisyo skk-cdb-large-jisyo)) ((and (stringp skk-large-jisyo) (file-readable-p skk-large-jisyo)) (skk-tankan-search 'skk-search-jisyo-file skk-large-jisyo 10000)) (t (skk-tankan-search 'skk-search-ja-dic-maybe))) (if server-prog (apply #'skk-tankan-search server-prog) nil)))) ;;; annotation data for japanese-jisx0208 (when skk-tankan-annotation-table (let ((l '( (?$B!!(B "$BOB;z4V3V(B,IDEOGRAPHIC SPACE") (?$B!"(B "$BFIE@(B,IDEOGRAPHIC COMMA") (?$B!#(B "$B6gE@(B,IDEOGRAPHIC FULL STOP") (?$B!$(B "$B%3%s%^(B,COMMA") (?$B!%(B "$B%T%j%*%I(B,FULL STOP") (?$B!&(B "$BCfE@(B,KATAKANA MIDDLE DOT") (?$B!'(B "$B%3%m%s(B,COLON") (?$B!((B "$B%;%_%3%m%s(B,SEMICOLON") (?$B!)(B "$B5?LdId(B,QUESTION MARK") (?$B!*(B "$B46C2Id(B,EXCLAMATION MARK") (?$B!+(B "$BByE@(B,KATAKANA-HIRAGANA VOICED SOUND MARK") (?$B!,(B "$BH>ByE@(B,KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK") (?$B!-(B "$B%"%/%5%s%F%.%e(B,$B%"%-%e!<%H%"%/%;%s%H(B,$B%W%i%$%`5-9f(B,ACUTE ACCENT") (?$B!.(B "$B%"%/%5%s%0%i!<%V(B,$B%0%l!<%V%"%/%;%s%H(B,GRAVE ACCENT") (?$B!/(B "$B%&%`%i%&%H(B,$B%@%$%(%l%7%9(B,DIAERESIS") (?$B!0(B "$B%"%/%5%s%7%k%3%s%U%l%C%/%9(B,$B%5!<%+%`%U%l%C%/%9%"%/%;%s%H(B,CIRCUMFLEX ACCENT") (?$B!1(B "$B%*!<%P!<%i%$%s(B,$BO@M}H]Dj5-9f(B,OVERLINE") (?$B!2(B "$B%"%s%@!<%i%$%s(B,LOW LINE") (?$B!3(B "$BJR2>L>7+JV$75-9f(B,KATAKANA ITERATION MARK") (?$B!4(B "$BJR2>L>7+JV$75-9f(B($BByE@(B),KATAKANA VOICED ITERATION MARK") (?$B!5(B "$BJ?2>L>7+JV$75-9f(B,HIRAGANA ITERATION MARK") (?$B!6(B "$BJ?2>L>7+JV$75-9f(B($BByE@(B),HIRAGANA VOICED ITERATION MARK") (?$B!7(B "$BF1$8$/5-9f(B,DITTO MARK") (?$B!8(B "$BF1>e5-9f(B,CJK UNIFIED IDEOGRAPH-4EDD") (?$B!9(B "$B7+JV$75-9f(B,IDEOGRAPHIC ITERATION MARK") (?$B!:(B "$B$7$a(B,IDEOGRAPHIC CLOSING MARK") (?$B!;(B "$B4A?t;z%<%m(B,IDEOGRAPHIC NUMBER ZERO") (?$B!<(B "$BD92;5-9f(B,KATAKANA-HIRAGANA PROLONGED SOUND MARK") (?$B!=(B "$B%@%C%7%e(B($BA43Q(B),EM DASH") (?$B!>(B "$B%O%$%U%s(B($B;MJ,(B),HYPHEN") (?$B!?(B "$B.3g8L(B,$B;O$a4]3g8L(B,LEFT PARENTHESIS") (?$B!K(B "$B=*$o$j>.3g8L(B,$B=*$o$j4]3g8L(B,RIGHT PARENTHESIS") (?$B!L(B "$B;O$a$-$C$3$&(B($B559C(B)$B3g8L(B,LEFT TORTOISE SHELL BRACKET") (?$B!M(B "$B=*$o$j$-$C$3$&(B($B559C(B)$B3g8L(B,RIGHT TORTOISE SHELL BRACKET") (?$B!N(B "$B;O$aBg3g8L(B,$B;O$a3Q3g8L(B,LEFT SQUARE BRACKET") (?$B!O(B "$B=*$o$jBg3g8L(B,$B=*$o$j3Q3g8L(B,RIGHT SQUARE BRACKET") (?$B!P(B "$B;O$aCf3g8L(B,$B;O$aGH3g8L(B,LEFT CURLY BRACKET") (?$B!Q(B "$B=*$o$jCf3g8L(B,$B=*$o$jGH3g8L(B,RIGHT CURLY BRACKET") (?$B!R(B "$B;O$a;33g8L(B,LEFT ANGLE BRACKET") (?$B!S(B "$B=*$o$j;33g8L(B,RIGHT ANGLE BRACKET") (?$B!T(B "$B;O$aFs=E;33g8L(B,LEFT DOUBLE ANGLE BRACKET") (?$B!U(B "$B=*$o$jFs=E;33g8L(B,RIGHT DOUBLE ANGLE BRACKET") (?$B!V(B "$B;O$a$+$.3g8L(B,LEFT CORNER BRACKET") (?$B!W(B "$B=*$o$j$+$.3g8L(B,RIGHT CORNER BRACKET") (?$B!X(B "$B;O$aFs=E$+$.3g8L(B,LEFT WHITE CORNER BRACKET") (?$B!Y(B "$B=*$o$jFs=E$+$.3g8L(B,RIGHT WHITE CORNER BRACKET") (?$B!Z(B "$B;O$a$9$_IU$-3g8L(B,LEFT BLACK LENTICULAR BRACKET") (?$B![(B "$B=*$o$j$9$_IU$-3g8L(B,RIGHT BLACK LENTICULAR BRACKET") (?$B!\(B "$B@5Id9f(B,$B2C;;5-9f(B,PLUS SIGN") (?$B!](B "$BIiId9f(B,$B8:;;5-9f(B,MINUS SIGN") (?$B!^(B "$B@5Kt$OIiId9f(B,PLUS-MINUS SIGN") (?$B!_(B "$B>h;;5-9f(B,MULTIPLICATION SIGN") (?$B!`(B "$B=|;;5-9f(B,DIVISION SIGN") (?$B!a(B "$BEy9f(B,EQUALS SIGN") (?$B!b(B "$BEy9fH]Dj(B,NOT EQUAL TO") (?$B!c(B "$BITEy9f(B($B$h$j>.(B),LESS-THAN SIGN") (?$B!d(B "$BITEy9f(B($B$h$jBg(B),GREATER-THAN SIGN") (?$B!e(B "$B$h$j>.$5$$$+Kt$OEy$7$$(B,LESS-THAN OVER EQUAL TO") (?$B!f(B "$B$h$jBg$-$$$+Kt$OEy$7$$(B,GREATER-THAN OVER EQUAL TO") (?$B!g(B "$BL58BBg(B,INFINITY") (?$B!h(B "$B$f$($K(B,THEREFORE") (?$B!i(B "$BM:5-9f(B,MALE SIGN") (?$B!j(B "$B;s5-9f(B,FEMALE SIGN") (?$B!k(B "$BEY(B,DEGREE SIGN") (?$B!l(B "$BJ,(B,PRIME") (?$B!m(B "$BIC(B,DOUBLE PRIME") (?$B!n(B "$B%;;aEY5-9f(B,DEGREE CELSIUS") (?$B!o(B "$B1_5-9f(B,YEN SIGN") (?$B!p(B "$B%I%k5-9f(B,DOLLAR SIGN") (?$B!q(B "$B%;%s%H5-9f(B,CENT SIGN") (?$B!r(B "$B%]%s%I5-9f(B,POUND SIGN") (?$B!s(B "$B%Q!<%;%s%H5-9f(B,PERCENT SIGN") (?$B!t(B "$BHV9f5-9f(B,$B0f$2$?(B,NUMBER SIGN") (?$B!u(B "$B%"%s%Q%5%s%I(B,AMPERSAND") (?$B!v(B "$B@10u(B,$B%"%9%F%j%9%/(B,ASTERISK") (?$B!w(B "$BC12A5-9f(B,COMMERCIAL AT") (?$B!x(B "$B@a5-9f(B,SECTION SIGN") (?$B!y(B "$BGr@1(B,WHITE STAR") (?$B!z(B "$B9u@1(B,BLACK STAR") (?$B!{(B "$B4]0u(B,$BGr4](B,WHITE CIRCLE") (?$B!|(B "$B9u4](B,BLACK CIRCLE") (?$B!}(B "$BFs=E4](B,BULLSEYE") (?$B!~(B "$B$R$77A(B,WHITE DIAMOND") (?$B"!(B "$B9u$R$77A(B,BLACK DIAMOND") (?$B""(B "$B;M3Q(B,WHITE SQUARE") (?$B"#(B "$B9u;M3Q(B,BLACK SQUARE") (?$B"$(B "$B;03Q(B,WHITE UP-POINTING TRIANGLE") (?$B"%(B "$B9u;03Q(B,BLACK UP-POINTING TRIANGLE") (?$B"&(B "$B5U;03Q(B,WHITE DOWN-POINTING TRIANGLE") (?$B"'(B "$B5U9u;03Q(B,BLACK DOWN-POINTING TRIANGLE") (?$B"((B "$BJF0u(B,REFERENCE MARK") (?$B")(B "$BM9JX5-9f(B,POSTAL MARK") (?$B"*(B "$B1&Lp0u(B,RIGHTWARDS ARROW") (?$B"+(B "$B:8Lp0u(B,LEFTWARDS ARROW") (?$B",(B "$B>eLp0u(B,UPWARDS ARROW") (?$B"-(B "$B2(B "$B??ItJ,=89g(B,SUBSET OF") (?$B"?(B "$B??ItJ,=89g(B($B5UJ}8~(B),SUPERSET OF") (?$B"@(B "$B9gJ;=89g(B,UNION") (?$B"A(B "$B6&DL=89g(B,INTERSECTION") (?$B"J(B "$B5Z$S(B($B9g@\(B),LOGICAL AND") (?$B"K(B "$BKt$O(B($BN%@\(B),LOGICAL OR") (?$B"L(B "$BH]Dj(B,NOT SIGN") (?$B"M(B "$B$J$i$P(B($B4^0U(B),RIGHTWARDS DOUBLE ARROW") (?$B"N(B "$BF1CM(B,LEFT RIGHT DOUBLE ARROW") (?$B"O(B "$B$9$Y$F$N(B($BIaDL8BDj;R(B),FOR ALL") (?$B"P(B "$BB8:_$9$k(B($BB8:_8BDj;R(B),THERE EXISTS") (?$B"\(B "$B3Q(B,ANGLE") (?$B"](B "$B?bD>(B,UP TACK") (?$B"^(B "$B8L(B,ARC") (?$B"_(B "$B%G%k(B,$B%i%&%s%I%G%#!<(B,PARTIAL DIFFERENTIAL") (?$B"`(B "$B%J%V%i(B,NABLA") (?$B"a(B "$B>o$KEy$7$$(B,$B9gF1(B,IDENTICAL TO") (?$B"b(B "$B$[$H$s$IEy$7$$(B,APPROXIMATELY EQUAL TO OR THE IMAGE OF") (?$B"c(B "$BHs>o$K>.$5$$(B,MUCH LESS-THAN") (?$B"d(B "$BHs>o$KBg$-$$(B,MUCH GREATER-THAN") (?$B"e(B "$B:,9f(B,SQUARE ROOT") (?$B"f(B "$BAj;w(B,REVERSED TILDE") (?$B"g(B "$BHfNc(B,PROPORTIONAL TO") (?$B"h(B "$B$J$<$J$i$P(B,BECAUSE") (?$B"i(B "$B@QJ,5-9f(B,INTEGRAL") (?$B"j(B "2$B=E@QJ,5-9f(B,DOUBLE INTEGRAL") (?$B"r(B "$B%*%s%0%9%H%m!<%`(B,ANGSTROM SIGN") (?$B"s(B "$B%Q!<%_%k(B,PER MILLE SIGN") (?$B"t(B "$B%7%c!<%W(B,MUSIC SHARP SIGN") (?$B"u(B "$B%U%i%C%H(B,MUSIC FLAT SIGN") (?$B"v(B "$B2;Id(B,EIGHTH NOTE") (?$B"w(B "$B%@%,!<(B,DAGGER") (?$B"x(B "$B%@%V%k%@%,!<(B,DOUBLE DAGGER") (?$B"y(B "$BCJMn5-9f(B,PILCROW SIGN") (?$B"~(B "$BBg$-$J4](B,LARGE CIRCLE") (?$B#0(B "0,DIGIT ZERO") (?$B#1(B "1,DIGIT ONE") (?$B#2(B "2,DIGIT TWO") (?$B#3(B "3,DIGIT THREE") (?$B#4(B "4,DIGIT FOUR") (?$B#5(B "5,DIGIT FIVE") (?$B#6(B "6,DIGIT SIX") (?$B#7(B "7,DIGIT SEVEN") (?$B#8(B "8,DIGIT EIGHT") (?$B#9(B "9,DIGIT NINE") (?$B#A(B "$B%i%F%sBgJ8;z(BA,LATIN CAPITAL LETTER A") (?$B#B(B "$B%i%F%sBgJ8;z(BB,LATIN CAPITAL LETTER B") (?$B#C(B "$B%i%F%sBgJ8;z(BC,LATIN CAPITAL LETTER C") (?$B#D(B "$B%i%F%sBgJ8;z(BD,LATIN CAPITAL LETTER D") (?$B#E(B "$B%i%F%sBgJ8;z(BE,LATIN CAPITAL LETTER E") (?$B#F(B "$B%i%F%sBgJ8;z(BF,LATIN CAPITAL LETTER F") (?$B#G(B "$B%i%F%sBgJ8;z(BG,LATIN CAPITAL LETTER G") (?$B#H(B "$B%i%F%sBgJ8;z(BH,LATIN CAPITAL LETTER H") (?$B#I(B "$B%i%F%sBgJ8;z(BI,LATIN CAPITAL LETTER I") (?$B#J(B "$B%i%F%sBgJ8;z(BJ,LATIN CAPITAL LETTER J") (?$B#K(B "$B%i%F%sBgJ8;z(BK,LATIN CAPITAL LETTER K") (?$B#L(B "$B%i%F%sBgJ8;z(BL,LATIN CAPITAL LETTER L") (?$B#M(B "$B%i%F%sBgJ8;z(BM,LATIN CAPITAL LETTER M") (?$B#N(B "$B%i%F%sBgJ8;z(BN,LATIN CAPITAL LETTER N") (?$B#O(B "$B%i%F%sBgJ8;z(BO,LATIN CAPITAL LETTER O") (?$B#P(B "$B%i%F%sBgJ8;z(BP,LATIN CAPITAL LETTER P") (?$B#Q(B "$B%i%F%sBgJ8;z(BQ,LATIN CAPITAL LETTER Q") (?$B#R(B "$B%i%F%sBgJ8;z(BR,LATIN CAPITAL LETTER R") (?$B#S(B "$B%i%F%sBgJ8;z(BS,LATIN CAPITAL LETTER S") (?$B#T(B "$B%i%F%sBgJ8;z(BT,LATIN CAPITAL LETTER T") (?$B#U(B "$B%i%F%sBgJ8;z(BU,LATIN CAPITAL LETTER U") (?$B#V(B "$B%i%F%sBgJ8;z(BV,LATIN CAPITAL LETTER V") (?$B#W(B "$B%i%F%sBgJ8;z(BW,LATIN CAPITAL LETTER W") (?$B#X(B "$B%i%F%sBgJ8;z(BX,LATIN CAPITAL LETTER X") (?$B#Y(B "$B%i%F%sBgJ8;z(BY,LATIN CAPITAL LETTER Y") (?$B#Z(B "$B%i%F%sBgJ8;z(BZ,LATIN CAPITAL LETTER Z") (?$B#a(B "$B%i%F%s>.J8;z(BA,LATIN SMALL LETTER A") (?$B#b(B "$B%i%F%s>.J8;z(BB,LATIN SMALL LETTER B") (?$B#c(B "$B%i%F%s>.J8;z(BC,LATIN SMALL LETTER C") (?$B#d(B "$B%i%F%s>.J8;z(BD,LATIN SMALL LETTER D") (?$B#e(B "$B%i%F%s>.J8;z(BE,LATIN SMALL LETTER E") (?$B#f(B "$B%i%F%s>.J8;z(BF,LATIN SMALL LETTER F") (?$B#g(B "$B%i%F%s>.J8;z(BG,LATIN SMALL LETTER G") (?$B#h(B "$B%i%F%s>.J8;z(BH,LATIN SMALL LETTER H") (?$B#i(B "$B%i%F%s>.J8;z(BI,LATIN SMALL LETTER I") (?$B#j(B "$B%i%F%s>.J8;z(BJ,LATIN SMALL LETTER J") (?$B#k(B "$B%i%F%s>.J8;z(BK,LATIN SMALL LETTER K") (?$B#l(B "$B%i%F%s>.J8;z(BL,LATIN SMALL LETTER L") (?$B#m(B "$B%i%F%s>.J8;z(BM,LATIN SMALL LETTER M") (?$B#n(B "$B%i%F%s>.J8;z(BN,LATIN SMALL LETTER N") (?$B#o(B "$B%i%F%s>.J8;z(BO,LATIN SMALL LETTER O") (?$B#p(B "$B%i%F%s>.J8;z(BP,LATIN SMALL LETTER P") (?$B#q(B "$B%i%F%s>.J8;z(BQ,LATIN SMALL LETTER Q") (?$B#r(B "$B%i%F%s>.J8;z(BR,LATIN SMALL LETTER R") (?$B#s(B "$B%i%F%s>.J8;z(BS,LATIN SMALL LETTER S") (?$B#t(B "$B%i%F%s>.J8;z(BT,LATIN SMALL LETTER T") (?$B#u(B "$B%i%F%s>.J8;z(BU,LATIN SMALL LETTER U") (?$B#v(B "$B%i%F%s>.J8;z(BV,LATIN SMALL LETTER V") (?$B#w(B "$B%i%F%s>.J8;z(BW,LATIN SMALL LETTER W") (?$B#x(B "$B%i%F%s>.J8;z(BX,LATIN SMALL LETTER X") (?$B#y(B "$B%i%F%s>.J8;z(BY,LATIN SMALL LETTER Y") (?$B#z(B "$B%i%F%s>.J8;z(BZ,LATIN SMALL LETTER Z") (?$B$!(B "$B>.=q$-J?2>L>$"(B,HIRAGANA LETTER SMALL A") (?$B$"(B "$BJ?2>L>$"(B,HIRAGANA LETTER A") (?$B$#(B "$B>.=q$-J?2>L>$$(B,HIRAGANA LETTER SMALL I") (?$B$$(B "$BJ?2>L>$$(B,HIRAGANA LETTER I") (?$B$%(B "$B>.=q$-J?2>L>$&(B,HIRAGANA LETTER SMALL U") (?$B$&(B "$BJ?2>L>$&(B,HIRAGANA LETTER U") (?$B$'(B "$B>.=q$-J?2>L>$((B,HIRAGANA LETTER SMALL E") (?$B$((B "$BJ?2>L>$((B,HIRAGANA LETTER E") (?$B$)(B "$B>.=q$-J?2>L>$*(B,HIRAGANA LETTER SMALL O") (?$B$*(B "$BJ?2>L>$*(B,HIRAGANA LETTER O") (?$B$+(B "$BJ?2>L>$+(B,HIRAGANA LETTER KA") (?$B$,(B "$BByE@IU$-J?2>L>$+(B,HIRAGANA LETTER GA") (?$B$-(B "$BJ?2>L>$-(B,HIRAGANA LETTER KI") (?$B$.(B "$BByE@IU$-J?2>L>$-(B,HIRAGANA LETTER GI") (?$B$/(B "$BJ?2>L>$/(B,HIRAGANA LETTER KU") (?$B$0(B "$BByE@IU$-J?2>L>$/(B,HIRAGANA LETTER GU") (?$B$1(B "$BJ?2>L>$1(B,HIRAGANA LETTER KE") (?$B$2(B "$BByE@IU$-J?2>L>$1(B,HIRAGANA LETTER GE") (?$B$3(B "$BJ?2>L>$3(B,HIRAGANA LETTER KO") (?$B$4(B "$BByE@IU$-J?2>L>$3(B,HIRAGANA LETTER GO") (?$B$5(B "$BJ?2>L>$5(B,HIRAGANA LETTER SA") (?$B$6(B "$BByE@IU$-J?2>L>$5(B,HIRAGANA LETTER ZA") (?$B$7(B "$BJ?2>L>$7(B,HIRAGANA LETTER SI") (?$B$8(B "$BByE@IU$-J?2>L>$7(B,HIRAGANA LETTER ZI") (?$B$9(B "$BJ?2>L>$9(B,HIRAGANA LETTER SU") (?$B$:(B "$BByE@IU$-J?2>L>$9(B,HIRAGANA LETTER ZU") (?$B$;(B "$BJ?2>L>$;(B,HIRAGANA LETTER SE") (?$B$<(B "$BByE@IU$-J?2>L>$;(B,HIRAGANA LETTER ZE") (?$B$=(B "$BJ?2>L>$=(B,HIRAGANA LETTER SO") (?$B$>(B "$BByE@IU$-J?2>L>$=(B,HIRAGANA LETTER ZO") (?$B$?(B "$BJ?2>L>$?(B,HIRAGANA LETTER TA") (?$B$@(B "$BByE@IU$-J?2>L>$?(B,HIRAGANA LETTER DA") (?$B$A(B "$BJ?2>L>$A(B,HIRAGANA LETTER TI") (?$B$B(B "$BByE@IU$-J?2>L>$A(B,HIRAGANA LETTER DI") (?$B$C(B "$B>.=q$-J?2>L>$D(B,HIRAGANA LETTER SMALL TU") (?$B$D(B "$BJ?2>L>$D(B,HIRAGANA LETTER TU") (?$B$E(B "$BByE@IU$-J?2>L>$D(B,HIRAGANA LETTER DU") (?$B$F(B "$BJ?2>L>$F(B,HIRAGANA LETTER TE") (?$B$G(B "$BByE@IU$-J?2>L>$F(B,HIRAGANA LETTER DE") (?$B$H(B "$BJ?2>L>$H(B,HIRAGANA LETTER TO") (?$B$I(B "$BByE@IU$-J?2>L>$H(B,HIRAGANA LETTER DO") (?$B$J(B "$BJ?2>L>$J(B,HIRAGANA LETTER NA") (?$B$K(B "$BJ?2>L>$K(B,HIRAGANA LETTER NI") (?$B$L(B "$BJ?2>L>$L(B,HIRAGANA LETTER NU") (?$B$M(B "$BJ?2>L>$M(B,HIRAGANA LETTER NE") (?$B$N(B "$BJ?2>L>$N(B,HIRAGANA LETTER NO") (?$B$O(B "$BJ?2>L>$O(B,HIRAGANA LETTER HA") (?$B$P(B "$BByE@IU$-J?2>L>$O(B,HIRAGANA LETTER BA") (?$B$Q(B "$BH>ByE@IU$-J?2>L>$O(B,HIRAGANA LETTER PA") (?$B$R(B "$BJ?2>L>$R(B,HIRAGANA LETTER HI") (?$B$S(B "$BByE@IU$-J?2>L>$R(B,HIRAGANA LETTER BI") (?$B$T(B "$BH>ByE@IU$-J?2>L>$R(B,HIRAGANA LETTER PI") (?$B$U(B "$BJ?2>L>$U(B,HIRAGANA LETTER HU") (?$B$V(B "$BByE@IU$-J?2>L>$U(B,HIRAGANA LETTER BU") (?$B$W(B "$BH>ByE@IU$-J?2>L>$U(B,HIRAGANA LETTER PU") (?$B$X(B "$BJ?2>L>$X(B,HIRAGANA LETTER HE") (?$B$Y(B "$BByE@IU$-J?2>L>$X(B,HIRAGANA LETTER BE") (?$B$Z(B "$BH>ByE@IU$-J?2>L>$X(B,HIRAGANA LETTER PE") (?$B$[(B "$BJ?2>L>$[(B,HIRAGANA LETTER HO") (?$B$\(B "$BByE@IU$-J?2>L>$[(B,HIRAGANA LETTER BO") (?$B$](B "$BH>ByE@IU$-J?2>L>$[(B,HIRAGANA LETTER PO") (?$B$^(B "$BJ?2>L>$^(B,HIRAGANA LETTER MA") (?$B$_(B "$BJ?2>L>$_(B,HIRAGANA LETTER MI") (?$B$`(B "$BJ?2>L>$`(B,HIRAGANA LETTER MU") (?$B$a(B "$BJ?2>L>$a(B,HIRAGANA LETTER ME") (?$B$b(B "$BJ?2>L>$b(B,HIRAGANA LETTER MO") (?$B$c(B "$B>.=q$-J?2>L>$d(B,HIRAGANA LETTER SMALL YA") (?$B$d(B "$BJ?2>L>$d(B,HIRAGANA LETTER YA") (?$B$e(B "$B>.=q$-J?2>L>$f(B,HIRAGANA LETTER SMALL YU") (?$B$f(B "$BJ?2>L>$f(B,HIRAGANA LETTER YU") (?$B$g(B "$B>.=q$-J?2>L>$h(B,HIRAGANA LETTER SMALL YO") (?$B$h(B "$BJ?2>L>$h(B,HIRAGANA LETTER YO") (?$B$i(B "$BJ?2>L>$i(B,HIRAGANA LETTER RA") (?$B$j(B "$BJ?2>L>$j(B,HIRAGANA LETTER RI") (?$B$k(B "$BJ?2>L>$k(B,HIRAGANA LETTER RU") (?$B$l(B "$BJ?2>L>$l(B,HIRAGANA LETTER RE") (?$B$m(B "$BJ?2>L>$m(B,HIRAGANA LETTER RO") (?$B$n(B "$B>.=q$-J?2>L>$o(B,HIRAGANA LETTER SMALL WA") (?$B$o(B "$BJ?2>L>$o(B,HIRAGANA LETTER WA") (?$B$p(B "$BJ?2>L>$p(B,HIRAGANA LETTER WI") (?$B$q(B "$BJ?2>L>$q(B,HIRAGANA LETTER WE") (?$B$r(B "$BJ?2>L>$r(B,HIRAGANA LETTER WO") (?$B$s(B "$BJ?2>L>$s(B,HIRAGANA LETTER N") (?$B%!(B "$B>.=q$-JR2>L>%"(B,KATAKANA LETTER SMALL A") (?$B%"(B "$BJR2>L>%"(B,KATAKANA LETTER A") (?$B%#(B "$B>.=q$-JR2>L>%$(B,KATAKANA LETTER SMALL I") (?$B%$(B "$BJR2>L>%$(B,KATAKANA LETTER I") (?$B%%(B "$B>.=q$-JR2>L>%&(B,KATAKANA LETTER SMALL U") (?$B%&(B "$BJR2>L>%&(B,KATAKANA LETTER U") (?$B%'(B "$B>.=q$-JR2>L>%((B,KATAKANA LETTER SMALL E") (?$B%((B "$BJR2>L>%((B,KATAKANA LETTER E") (?$B%)(B "$B>.=q$-JR2>L>%*(B,KATAKANA LETTER SMALL O") (?$B%*(B "$BJR2>L>%*(B,KATAKANA LETTER O") (?$B%+(B "$BJR2>L>%+(B,KATAKANA LETTER KA") (?$B%,(B "$BByE@IU$-JR2>L>%+(B,KATAKANA LETTER GA") (?$B%-(B "$BJR2>L>%-(B,KATAKANA LETTER KI") (?$B%.(B "$BByE@IU$-JR2>L>%-(B,KATAKANA LETTER GI") (?$B%/(B "$BJR2>L>%/(B,KATAKANA LETTER KU") (?$B%0(B "$BByE@IU$-JR2>L>%/(B,KATAKANA LETTER GU") (?$B%1(B "$BJR2>L>%1(B,KATAKANA LETTER KE") (?$B%2(B "$BByE@IU$-JR2>L>%1(B,KATAKANA LETTER GE") (?$B%3(B "$BJR2>L>%3(B,KATAKANA LETTER KO") (?$B%4(B "$BByE@IU$-JR2>L>%3(B,KATAKANA LETTER GO") (?$B%5(B "$BJR2>L>%5(B,KATAKANA LETTER SA") (?$B%6(B "$BByE@IU$-JR2>L>%5(B,KATAKANA LETTER ZA") (?$B%7(B "$BJR2>L>%7(B,KATAKANA LETTER SI") (?$B%8(B "$BByE@IU$-JR2>L>%7(B,KATAKANA LETTER ZI") (?$B%9(B "$BJR2>L>%9(B,KATAKANA LETTER SU") (?$B%:(B "$BByE@IU$-JR2>L>%9(B,KATAKANA LETTER ZU") (?$B%;(B "$BJR2>L>%;(B,KATAKANA LETTER SE") (?$B%<(B "$BByE@IU$-JR2>L>%;(B,KATAKANA LETTER ZE") (?$B%=(B "$BJR2>L>%=(B,KATAKANA LETTER SO") (?$B%>(B "$BByE@IU$-JR2>L>%=(B,KATAKANA LETTER ZO") (?$B%?(B "$BJR2>L>%?(B,KATAKANA LETTER TA") (?$B%@(B "$BByE@IU$-JR2>L>%?(B,KATAKANA LETTER DA") (?$B%A(B "$BJR2>L>%A(B,KATAKANA LETTER TI") (?$B%B(B "$BByE@IU$-JR2>L>%A(B,KATAKANA LETTER DI") (?$B%C(B "$B>.=q$-JR2>L>%D(B,KATAKANA LETTER SMALL TU") (?$B%D(B "$BJR2>L>%D(B,KATAKANA LETTER TU") (?$B%E(B "$BByE@IU$-JR2>L>%D(B,KATAKANA LETTER DU") (?$B%F(B "$BJR2>L>%F(B,KATAKANA LETTER TE") (?$B%G(B "$BByE@IU$-JR2>L>%F(B,KATAKANA LETTER DE") (?$B%H(B "$BJR2>L>%H(B,KATAKANA LETTER TO") (?$B%I(B "$BByE@IU$-JR2>L>%H(B,KATAKANA LETTER DO") (?$B%J(B "$BJR2>L>%J(B,KATAKANA LETTER NA") (?$B%K(B "$BJR2>L>%K(B,KATAKANA LETTER NI") (?$B%L(B "$BJR2>L>%L(B,KATAKANA LETTER NU") (?$B%M(B "$BJR2>L>%M(B,KATAKANA LETTER NE") (?$B%N(B "$BJR2>L>%N(B,KATAKANA LETTER NO") (?$B%O(B "$BJR2>L>%O(B,KATAKANA LETTER HA") (?$B%P(B "$BByE@IU$-JR2>L>%O(B,KATAKANA LETTER BA") (?$B%Q(B "$BH>ByE@IU$-JR2>L>%O(B,KATAKANA LETTER PA") (?$B%R(B "$BJR2>L>%R(B,KATAKANA LETTER HI") (?$B%S(B "$BByE@IU$-JR2>L>%R(B,KATAKANA LETTER BI") (?$B%T(B "$BH>ByE@IU$-JR2>L>%R(B,KATAKANA LETTER PI") (?$B%U(B "$BJR2>L>%U(B,KATAKANA LETTER HU") (?$B%V(B "$BByE@IU$-JR2>L>%U(B,KATAKANA LETTER BU") (?$B%W(B "$BH>ByE@IU$-JR2>L>%U(B,KATAKANA LETTER PU") (?$B%X(B "$BJR2>L>%X(B,KATAKANA LETTER HE") (?$B%Y(B "$BByE@IU$-JR2>L>%X(B,KATAKANA LETTER BE") (?$B%Z(B "$BH>ByE@IU$-JR2>L>%X(B,KATAKANA LETTER PE") (?$B%[(B "$BJR2>L>%[(B,KATAKANA LETTER HO") (?$B%\(B "$BByE@IU$-JR2>L>%[(B,KATAKANA LETTER BO") (?$B%](B "$BH>ByE@IU$-JR2>L>%[(B,KATAKANA LETTER PO") (?$B%^(B "$BJR2>L>%^(B,KATAKANA LETTER MA") (?$B%_(B "$BJR2>L>%_(B,KATAKANA LETTER MI") (?$B%`(B "$BJR2>L>%`(B,KATAKANA LETTER MU") (?$B%a(B "$BJR2>L>%a(B,KATAKANA LETTER ME") (?$B%b(B "$BJR2>L>%b(B,KATAKANA LETTER MO") (?$B%c(B "$B>.=q$-JR2>L>%d(B,KATAKANA LETTER SMALL YA") (?$B%d(B "$BJR2>L>%d(B,KATAKANA LETTER YA") (?$B%e(B "$B>.=q$-JR2>L>%f(B,KATAKANA LETTER SMALL YU") (?$B%f(B "$BJR2>L>%f(B,KATAKANA LETTER YU") (?$B%g(B "$B>.=q$-JR2>L>%h(B,KATAKANA LETTER SMALL YO") (?$B%h(B "$BJR2>L>%h(B,KATAKANA LETTER YO") (?$B%i(B "$BJR2>L>%i(B,KATAKANA LETTER RA") (?$B%j(B "$BJR2>L>%j(B,KATAKANA LETTER RI") (?$B%k(B "$BJR2>L>%k(B,KATAKANA LETTER RU") (?$B%l(B "$BJR2>L>%l(B,KATAKANA LETTER RE") (?$B%m(B "$BJR2>L>%m(B,KATAKANA LETTER RO") (?$B%n(B "$B>.=q$-JR2>L>%o(B,KATAKANA LETTER SMALL WA") (?$B%o(B "$BJR2>L>%o(B,KATAKANA LETTER WA") (?$B%p(B "$BJR2>L>%p(B,KATAKANA LETTER WI") (?$B%q(B "$BJR2>L>%q(B,KATAKANA LETTER WE") (?$B%r(B "$BJR2>L>%r(B,KATAKANA LETTER WO") (?$B%s(B "$BJR2>L>%s(B,KATAKANA LETTER N") (?$B%t(B "$BByE@IU$-JR2>L>%&(B,KATAKANA LETTER VU") (?$B%u(B "$B>.=q$-JR2>L>%+(B,KATAKANA LETTER SMALL KA") (?$B%v(B "$B>.=q$-JR2>L>%1(B,KATAKANA LETTER SMALL KE") (?$B&!(B "$B%.%j%7%"BgJ8;z(BALPHA,GREEK CAPITAL LETTER ALPHA") (?$B&"(B "$B%.%j%7%"BgJ8;z(BBETA,GREEK CAPITAL LETTER BETA") (?$B&#(B "$B%.%j%7%"BgJ8;z(BGAMMA,GREEK CAPITAL LETTER GAMMA") (?$B&$(B "$B%.%j%7%"BgJ8;z(BDELTA,GREEK CAPITAL LETTER DELTA") (?$B&%(B "$B%.%j%7%"BgJ8;z(BEPSILON,GREEK CAPITAL LETTER EPSILON") (?$B&&(B "$B%.%j%7%"BgJ8;z(BZETA,GREEK CAPITAL LETTER ZETA") (?$B&'(B "$B%.%j%7%"BgJ8;z(BETA,GREEK CAPITAL LETTER ETA") (?$B&((B "$B%.%j%7%"BgJ8;z(BTHETA,GREEK CAPITAL LETTER THETA") (?$B&)(B "$B%.%j%7%"BgJ8;z(BIOTA,GREEK CAPITAL LETTER IOTA") (?$B&*(B "$B%.%j%7%"BgJ8;z(BKAPPA,GREEK CAPITAL LETTER KAPPA") (?$B&+(B "$B%.%j%7%"BgJ8;z(BLAMBDA,GREEK CAPITAL LETTER LAMBDA") (?$B&,(B "$B%.%j%7%"BgJ8;z(BMU,GREEK CAPITAL LETTER MU") (?$B&-(B "$B%.%j%7%"BgJ8;z(BNU,GREEK CAPITAL LETTER NU") (?$B&.(B "$B%.%j%7%"BgJ8;z(BXI,GREEK CAPITAL LETTER XI") (?$B&/(B "$B%.%j%7%"BgJ8;z(BOMICRON,GREEK CAPITAL LETTER OMICRON") (?$B&0(B "$B%.%j%7%"BgJ8;z(BPI,GREEK CAPITAL LETTER PI") (?$B&1(B "$B%.%j%7%"BgJ8;z(BRHO,GREEK CAPITAL LETTER RHO") (?$B&2(B "$B%.%j%7%"BgJ8;z(BSIGMA,GREEK CAPITAL LETTER SIGMA") (?$B&3(B "$B%.%j%7%"BgJ8;z(BTAU,GREEK CAPITAL LETTER TAU") (?$B&4(B "$B%.%j%7%"BgJ8;z(BUPSILON,GREEK CAPITAL LETTER UPSILON") (?$B&5(B "$B%.%j%7%"BgJ8;z(BPHI,GREEK CAPITAL LETTER PHI") (?$B&6(B "$B%.%j%7%"BgJ8;z(BCHI,GREEK CAPITAL LETTER CHI") (?$B&7(B "$B%.%j%7%"BgJ8;z(BPSI,GREEK CAPITAL LETTER PSI") (?$B&8(B "$B%.%j%7%"BgJ8;z(BOMEGA,GREEK CAPITAL LETTER OMEGA") (?$B&A(B "$B%.%j%7%">.J8;z(BALPHA,GREEK SMALL LETTER ALPHA") (?$B&B(B "$B%.%j%7%">.J8;z(BBETA,GREEK SMALL LETTER BETA") (?$B&C(B "$B%.%j%7%">.J8;z(BGAMMA,GREEK SMALL LETTER GAMMA") (?$B&D(B "$B%.%j%7%">.J8;z(BDELTA,GREEK SMALL LETTER DELTA") (?$B&E(B "$B%.%j%7%">.J8;z(BEPSILON,GREEK SMALL LETTER EPSILON") (?$B&F(B "$B%.%j%7%">.J8;z(BZETA,GREEK SMALL LETTER ZETA") (?$B&G(B "$B%.%j%7%">.J8;z(BETA,GREEK SMALL LETTER ETA") (?$B&H(B "$B%.%j%7%">.J8;z(BTHETA,GREEK SMALL LETTER THETA") (?$B&I(B "$B%.%j%7%">.J8;z(BIOTA,GREEK SMALL LETTER IOTA") (?$B&J(B "$B%.%j%7%">.J8;z(BKAPPA,GREEK SMALL LETTER KAPPA") (?$B&K(B "$B%.%j%7%">.J8;z(BLAMBDA,GREEK SMALL LETTER LAMBDA") (?$B&L(B "$B%.%j%7%">.J8;z(BMU,GREEK SMALL LETTER MU") (?$B&M(B "$B%.%j%7%">.J8;z(BNU,GREEK SMALL LETTER NU") (?$B&N(B "$B%.%j%7%">.J8;z(BXI,GREEK SMALL LETTER XI") (?$B&O(B "$B%.%j%7%">.J8;z(BOMICRON,GREEK SMALL LETTER OMICRON") (?$B&P(B "$B%.%j%7%">.J8;z(BPI,GREEK SMALL LETTER PI") (?$B&Q(B "$B%.%j%7%">.J8;z(BRHO,GREEK SMALL LETTER RHO") (?$B&R(B "$B%.%j%7%">.J8;z(BSIGMA,GREEK SMALL LETTER SIGMA") (?$B&S(B "$B%.%j%7%">.J8;z(BTAU,GREEK SMALL LETTER TAU") (?$B&T(B "$B%.%j%7%">.J8;z(BUPSILON,GREEK SMALL LETTER UPSILON") (?$B&U(B "$B%.%j%7%">.J8;z(BPHI,GREEK SMALL LETTER PHI") (?$B&V(B "$B%.%j%7%">.J8;z(BCHI,GREEK SMALL LETTER CHI") (?$B&W(B "$B%.%j%7%">.J8;z(BPSI,GREEK SMALL LETTER PSI") (?$B&X(B "$B%.%j%7%">.J8;z(BOMEGA,GREEK SMALL LETTER OMEGA") (?$B'!(B "$B%-%j!<%kBgJ8;z(BA,CYRILLIC CAPITAL LETTER A") (?$B'"(B "$B%-%j!<%kBgJ8;z(BBE,CYRILLIC CAPITAL LETTER BE") (?$B'#(B "$B%-%j!<%kBgJ8;z(BVE,CYRILLIC CAPITAL LETTER VE") (?$B'$(B "$B%-%j!<%kBgJ8;z(BGHE,CYRILLIC CAPITAL LETTER GHE") (?$B'%(B "$B%-%j!<%kBgJ8;z(BDE,CYRILLIC CAPITAL LETTER DE") (?$B'&(B "$B%-%j!<%kBgJ8;z(BIE,CYRILLIC CAPITAL LETTER IE") (?$B''(B "$B%-%j!<%kBgJ8;z(BIO,CYRILLIC CAPITAL LETTER IO") (?$B'((B "$B%-%j!<%kBgJ8;z(BZHE,CYRILLIC CAPITAL LETTER ZHE") (?$B')(B "$B%-%j!<%kBgJ8;z(BZE,CYRILLIC CAPITAL LETTER ZE") (?$B'*(B "$B%-%j!<%kBgJ8;z(BI,CYRILLIC CAPITAL LETTER I") (?$B'+(B "$B%-%j!<%kBgJ8;z(BSHORT I,CYRILLIC CAPITAL LETTER SHORT I") (?$B',(B "$B%-%j!<%kBgJ8;z(BKA,CYRILLIC CAPITAL LETTER KA") (?$B'-(B "$B%-%j!<%kBgJ8;z(BEL,CYRILLIC CAPITAL LETTER EL") (?$B'.(B "$B%-%j!<%kBgJ8;z(BEM,CYRILLIC CAPITAL LETTER EM") (?$B'/(B "$B%-%j!<%kBgJ8;z(BEN,CYRILLIC CAPITAL LETTER EN") (?$B'0(B "$B%-%j!<%kBgJ8;z(BO,CYRILLIC CAPITAL LETTER O") (?$B'1(B "$B%-%j!<%kBgJ8;z(BPE,CYRILLIC CAPITAL LETTER PE") (?$B'2(B "$B%-%j!<%kBgJ8;z(BER,CYRILLIC CAPITAL LETTER ER") (?$B'3(B "$B%-%j!<%kBgJ8;z(BES,CYRILLIC CAPITAL LETTER ES") (?$B'4(B "$B%-%j!<%kBgJ8;z(BTE,CYRILLIC CAPITAL LETTER TE") (?$B'5(B "$B%-%j!<%kBgJ8;z(BU,CYRILLIC CAPITAL LETTER U") (?$B'6(B "$B%-%j!<%kBgJ8;z(BEF,CYRILLIC CAPITAL LETTER EF") (?$B'7(B "$B%-%j!<%kBgJ8;z(BHA,CYRILLIC CAPITAL LETTER HA") (?$B'8(B "$B%-%j!<%kBgJ8;z(BTSE,CYRILLIC CAPITAL LETTER TSE") (?$B'9(B "$B%-%j!<%kBgJ8;z(BCHE,CYRILLIC CAPITAL LETTER CHE") (?$B':(B "$B%-%j!<%kBgJ8;z(BSHA,CYRILLIC CAPITAL LETTER SHA") (?$B';(B "$B%-%j!<%kBgJ8;z(BSHCHA,CYRILLIC CAPITAL LETTER SHCHA") (?$B'<(B "$B%-%j!<%kBgJ8;z(BHARD SIGN,CYRILLIC CAPITAL LETTER HARD SIGN") (?$B'=(B "$B%-%j!<%kBgJ8;z(BYERU,CYRILLIC CAPITAL LETTER YERU") (?$B'>(B "$B%-%j!<%kBgJ8;z(BSOFT SIGN,CYRILLIC CAPITAL LETTER SOFT SIGN") (?$B'?(B "$B%-%j!<%kBgJ8;z(BE,CYRILLIC CAPITAL LETTER E") (?$B'@(B "$B%-%j!<%kBgJ8;z(BYU,CYRILLIC CAPITAL LETTER YU") (?$B'A(B "$B%-%j!<%kBgJ8;z(BYA,CYRILLIC CAPITAL LETTER YA") (?$B'Q(B "$B%-%j!<%k>.J8;z(BA,CYRILLIC SMALL LETTER A") (?$B'R(B "$B%-%j!<%k>.J8;z(BBE,CYRILLIC SMALL LETTER BE") (?$B'S(B "$B%-%j!<%k>.J8;z(BVE,CYRILLIC SMALL LETTER VE") (?$B'T(B "$B%-%j!<%k>.J8;z(BGHE,CYRILLIC SMALL LETTER GHE") (?$B'U(B "$B%-%j!<%k>.J8;z(BDE,CYRILLIC SMALL LETTER DE") (?$B'V(B "$B%-%j!<%k>.J8;z(BIE,CYRILLIC SMALL LETTER IE") (?$B'W(B "$B%-%j!<%k>.J8;z(BIO,CYRILLIC SMALL LETTER IO") (?$B'X(B "$B%-%j!<%k>.J8;z(BZHE,CYRILLIC SMALL LETTER ZHE") (?$B'Y(B "$B%-%j!<%k>.J8;z(BZE,CYRILLIC SMALL LETTER ZE") (?$B'Z(B "$B%-%j!<%k>.J8;z(BI,CYRILLIC SMALL LETTER I") (?$B'[(B "$B%-%j!<%k>.J8;z(BSHORT I,CYRILLIC SMALL LETTER SHORT I") (?$B'\(B "$B%-%j!<%k>.J8;z(BKA,CYRILLIC SMALL LETTER KA") (?$B'](B "$B%-%j!<%k>.J8;z(BEL,CYRILLIC SMALL LETTER EL") (?$B'^(B "$B%-%j!<%k>.J8;z(BEM,CYRILLIC SMALL LETTER EM") (?$B'_(B "$B%-%j!<%k>.J8;z(BEN,CYRILLIC SMALL LETTER EN") (?$B'`(B "$B%-%j!<%k>.J8;z(BO,CYRILLIC SMALL LETTER O") (?$B'a(B "$B%-%j!<%k>.J8;z(BPE,CYRILLIC SMALL LETTER PE") (?$B'b(B "$B%-%j!<%k>.J8;z(BER,CYRILLIC SMALL LETTER ER") (?$B'c(B "$B%-%j!<%k>.J8;z(BES,CYRILLIC SMALL LETTER ES") (?$B'd(B "$B%-%j!<%k>.J8;z(BTE,CYRILLIC SMALL LETTER TE") (?$B'e(B "$B%-%j!<%k>.J8;z(BU,CYRILLIC SMALL LETTER U") (?$B'f(B "$B%-%j!<%k>.J8;z(BEF,CYRILLIC SMALL LETTER EF") (?$B'g(B "$B%-%j!<%k>.J8;z(BHA,CYRILLIC SMALL LETTER HA") (?$B'h(B "$B%-%j!<%k>.J8;z(BTSE,CYRILLIC SMALL LETTER TSE") (?$B'i(B "$B%-%j!<%k>.J8;z(BCHE,CYRILLIC SMALL LETTER CHE") (?$B'j(B "$B%-%j!<%k>.J8;z(BSHA,CYRILLIC SMALL LETTER SHA") (?$B'k(B "$B%-%j!<%k>.J8;z(BSHCHA,CYRILLIC SMALL LETTER SHCHA") (?$B'l(B "$B%-%j!<%k>.J8;z(BHARD SIGN,CYRILLIC SMALL LETTER HARD SIGN") (?$B'm(B "$B%-%j!<%k>.J8;z(BYERU,CYRILLIC SMALL LETTER YERU") (?$B'n(B "$B%-%j!<%k>.J8;z(BSOFT SIGN,CYRILLIC SMALL LETTER SOFT SIGN") (?$B'o(B "$B%-%j!<%k>.J8;z(BE,CYRILLIC SMALL LETTER E") (?$B'p(B "$B%-%j!<%k>.J8;z(BYU,CYRILLIC SMALL LETTER YU") (?$B'q(B "$B%-%j!<%k>.J8;z(BYA,CYRILLIC SMALL LETTER YA") (?$B(!(B "$B2#:Y@~AGJR(B,BOX DRAWINGS LIGHT HORIZONTAL") (?$B("(B "$B=D:Y@~AGJR(B,BOX DRAWINGS LIGHT VERTICAL") (?$B(#(B "$B:Y@~AGJR:8>e(B,BOX DRAWINGS LIGHT DOWN AND RIGHT") (?$B($(B "$B:Y@~AGJR1&>e(B,BOX DRAWINGS LIGHT DOWN AND LEFT") (?$B(%(B "$B:Y@~AGJR1&2<(B,BOX DRAWINGS LIGHT UP AND LEFT") (?$B(&(B "$B:Y@~AGJR:82<(B,BOX DRAWINGS LIGHT UP AND RIGHT") (?$B('(B "$B:Y@~AGJR:8(B,BOX DRAWINGS LIGHT VERTICAL AND RIGHT") (?$B(((B "$B:Y@~AGJR>e(B,BOX DRAWINGS LIGHT DOWN AND HORIZONTAL") (?$B()(B "$B:Y@~AGJR1&(B,BOX DRAWINGS LIGHT VERTICAL AND LEFT") (?$B(*(B "$B:Y@~AGJR2<(B,BOX DRAWINGS LIGHT UP AND HORIZONTAL") (?$B(+(B "$B:Y@~AGJRCf1{(B,BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL") (?$B(,(B "$B2#B@@~AGJR(B,BOX DRAWINGS HEAVY HORIZONTAL") (?$B(-(B "$B=DB@@~AGJR(B,BOX DRAWINGS HEAVY VERTICAL") (?$B(.(B "$BB@@~AGJR:8>e(B,BOX DRAWINGS HEAVY DOWN AND RIGHT") (?$B(/(B "$BB@@~AGJR1&>e(B,BOX DRAWINGS HEAVY DOWN AND LEFT") (?$B(0(B "$BB@@~AGJR1&2<(B,BOX DRAWINGS HEAVY UP AND LEFT") (?$B(1(B "$BB@@~AGJR:82<(B,BOX DRAWINGS HEAVY UP AND RIGHT") (?$B(2(B "$BB@@~AGJR:8(B,BOX DRAWINGS HEAVY VERTICAL AND RIGHT") (?$B(3(B "$BB@@~AGJR>e(B,BOX DRAWINGS HEAVY DOWN AND HORIZONTAL") (?$B(4(B "$BB@@~AGJR1&(B,BOX DRAWINGS HEAVY VERTICAL AND LEFT") (?$B(5(B "$BB@@~AGJR2<(B,BOX DRAWINGS HEAVY UP AND HORIZONTAL") (?$B(6(B "$BB@@~AGJRCf1{(B,BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL") (?$B(7(B "$B=DB@@~2#:Y@~AGJR:8(B,BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT") (?$B(8(B "$B2#B@@~=D:Y@~AGJR>e(B,BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY") (?$B(9(B "$B=DB@@~2#:Y@~AGJR1&(B,BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT") (?$B(:(B "$B2#B@@~=D:Y@~AGJR2<(B,BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY") (?$B(;(B "$B=D:Y@~2#B@@~AGJRCf1{(B,BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY") (?$B(<(B "$B=D:Y@~2#B@@~AGJR:8(B,BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY") (?$B(=(B "$B2#:Y@~=DB@@~AGJR>e(B,BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT") (?$B(>(B "$B=D:Y@~2#B@@~AGJR1&(B,BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY") (?$B(?(B "$B2#:Y@~=DB@@~AGJR2<(B,BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT") (?$B(@(B "$B2#:Y@~=DB@@~AGJRCf1{(B,BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT") (?$B0"(B "83$B;zBNJQ99(B") (?$B03(B "83$BF~BX$((B($BrM(B)") (?$B1<(B "$B$&$k$&!#o`(B($BE55rIT>\(B)$B$OJL;z(B") (?$B1k(B "83$B;zBNJQ99(B") (?$B2)(B "83$BF~BX$((B($Brt(B)$B!#rt(B($B$&$0$$$9(B)$B$NN,;z!#s?(B($B$&$=(B)$B$OJL;z(B") (?$B2*(B "83$B;zBNJQ99(B") (?$B3>(B "$BG[Ns$NMp$l!#(B19$B6h(B 29$B3=(B($B$+$$$j(B) 30$B3>(B($B$+$*$k(B) 31$B3?(B($B$+$($k(B)") (?$B3B(B "83$BF~BX$((B($BiZ(B)") (?$B3I(B "83$BF~BX$((B($BYx(B)") (?$B3v(B "83$BF~BX$((B($Bc^(B)") (?$B3z(B "83$B;zBNJQ99(B") (?$B4C(B "83$BF~BX$((B($B^u(B)") (?$B4R(B "83$BF~BX$((B($Bk](B)") (?$B6"(B "83$B;zBNJQ99(B") (?$B6F(B "83$BDI2CF~BX$((B($Bt!(B)") (?$B6m(B "83$B;zBNJQ99(B") (?$B7[(B "83$BF~BX$((B($Bpt(B)") (?$B84(B "83$B;zBNJQ99(B") (?$B9\(B "83$BF~BX$((B($Bbh(B)") (?$B9m(B "83$B;zBNJQ99(B") (?$BU(B "83$B;zBNJQ99(B") (?$B>_(B "83$B;zBNJQ99(B") (?$B?Y(B "83$BF~BX$((B($BpW(B)") (?$B@f(B "83$B;zBNJQ99(B") (?$BA((B "83$BF~BX$((B($BlM(B)") (?$BA_(B "83$B;zBNJQ99(B") (?$BBM(B "83$B;zBNJQ99(B") (?$BC=(B "83$B;zBNJQ99(B") (?$BDO(B "83$B;zBNJQ99(B") (?$BD[(B "83$BF~BX$((B($BTd(B)$B!#Td(B($B$D$\(B)$B$NN,;z!#Tg(B($B%3%s(B)$B$OJL;z(B") (?$BE6(B "83$B;zBNJQ99(B") (?$BE?(B "83$B;zBNJQ99(B") (?$BEW(B "83$BF~BX$((B($Bbj(B)") (?$BEn(B "83$BF~BX$((B($B[m(B)") (?$BEs(B "83$BF~BX$((B($B^9(B)") (?$BEx(B "83$B;zBNJQ99(B") (?$BFB(B "83$B;zBNJQ99(B") (?$BFv(B "83$BF~BX$((B($Bmn(B)") (?$BG*(B "$BG)(B($B%M(B)$B$NN,;z!#jY(B($BE55rIT>\(B)$B$OJL;z(B") (?$BG9(B "83$B;zBNJQ99(B") (?$BGh(B "83$BF~BX$((B($Bj$(B)") (?$BH.(B "83$B;zBNJQ99(B") (?$BH0(B "83$B;zBNJQ99(B") (?$BI0(B "83$BF~BX$((B($B[X(B)") (?$BJj(B "$B$D$A$N$(!#Xz(B($B$^$5$+$j(B)$B$OJL;z(B") (?$BKK(B "83$B;zBNJQ99(B") (?$BKj(B "83$BDI2CF~BX$((B($Bt"(B)") (?$BKy(B "83$BF~BX$((B($BPV(B)") (?$BLM(B "83$B;zBNJQ99(B") (?$BLy(B "83$BF~BX$((B($Bi.(B)") (?$BMZ(B "83$BDI2CF~BX$((B($Bt#(B)") (?$BMi(B "83$B;zBNJQ99(B") (?$BNB(B "$B$d$J!#dm(B($B$"$o(B)$B$OJL;z(B") (?$BO6(B "83$BF~BX$((B($BdF(B)") (?$BO9(B "83$B;zBNJQ99(B") (?$BPG(B "$BJ)(B($B$[$H$1(B)$B$N5l;z!#WJ(B($B%U%D(B)$B$OJL;z(B") (?$BPV(B "83$BF~BX$((B($BKy(B)") (?$BQI(B "$B$+$V$H!#ft(B($B%A%e%&(B)$B$OJL;z(B") (?$BR9(B "$B$O$3$,$^$(!#R>(B($B$+$/$7$,$^$((B)$B$OJL;z(B") (?$BR>(B "$B$+$/$7$,$^$(!#R9(B($B$O$3$,$^$((B)$B$OJL;z(B") (?$BTW(B "$BE55rITL@(B") (?$BT_(B "$BE55rITL@(B") (?$BTd(B "83$BF~BX$((B($BD[(B)$B!#$D$\!#Tg(B($B%3%s(B)$B$OJL;z(B") (?$BTg(B "$B%3%s!#Td(B($B$D$\(B)$B$OJL;z(B") (?$BTi(B "$B%A!#Tj(B($B%9%$(B)$B$OJL;z$@$,:.F1$5$l$k(B") (?$BTj(B "$B%9%$!#Ti(B($B%A(B)$B$OJL;z$@$,:.F1$5$l$k(B") (?$BV,(B "$BE55rIT>\!#$"$1$S$N8m;z$+(B") (?$BW;(B "$BF1DjITG=(B") (?$BWJ(B "$B%U%D!#PG(B($B$[$H$1(B)$B$OJL;z(B") (?$BXz(B "$B$^$5$+$j!#Jj(B($B$D$A$N$((B)$B$OJL;z(B") (?$BX{(B "$B$^$b$k!#X|(B($B$$$L(B)$B$OJL;z(B") (?$BX|(B "$B$$$L!#X{(B($B$^$b$k(B)$B$OJL;z(B") (?$BYK(B "$BE55rIT>\(B") (?$BYx(B "83$BF~BX$((B($BYx(B)") (?$BZ9(B "83$B;zBNJQ99(B") (?$BZH(B "$B%7%g%&!#ZI(B($B%X%$(B)$B$OJL;z(B") (?$BZI(B "$B%X%$!#ZH(B($B%7%g%&(B)$B$OJL;z(B") (?$BZl(B "$BCk(B($B$R$k(B)$B$N5l;z!#aA(B($B%+%/(B)$B$OJL;z(B") (?$BZs(B "$BE55rIT>\(B") (?$B[6(B "$B$*$&$4!#[7(B($B%H%&(B)$B$OJL;z(B") (?$B[7(B "$B%H%&!#[6(B($B$*$&$4(B)$B$OJL;z(B") (?$B[X(B "83$BF~BX$((B($BI0(B)") (?$B[m(B "83$BF~BX$((B($BEn(B)") (?$B[{(B "$BE55rIT>\!#$L$GEg$N$L$G$N8m;z$+(B") (?$B\Y(B "$BE55rIT>\(B") (?$B^9(B "83$BF~BX$((B($BEs(B)") (?$B^u(B "83$BF~BX$((B($B4C(B)") (?$B`v(B "83$BDI2CF~BX$((B($Bt$(B)") (?$BaA(B "$B2h(B($B%+%/(B)$B$N5l;z!#Zl(B($B$R$k(B)$B$OJL;z(B") (?$Bad(B "$B%^!#ae(B($B%j%s(B)$B$OJL;z(B") (?$Bae(B "$B%j%s!#ad(B($B%^(B)$B$OJL;z(B") (?$Bbh(B "83$BF~BX$((B($B9\(B)") (?$Bbj(B "83$BF~BX$((B($BEW(B)") (?$Bc^(B "83$BF~BX$((B($B3v(B)") (?$BdF(B "83$BF~BX$((B($BO6(B)") (?$Bdm(B "$B$"$o!#NB(B($B$d$J(B)$B$OJL;z(B") (?$Bft(B "$B%A%e%&!#QI(B($B$+$V$H(B)$B$OJL;z(B") (?$Bi"(B "83$BF~BX$((B($B\(B") (?$BjY(B "$BE55rIT>\!#G*(B($B%M(B)$B$OJL;z(B") (?$Bk](B "83$BF~BX$((B($B4R(B)") (?$BlM(B "83$BF~BX$((B($BA((B)") (?$Bmn(B "83$BF~BX$((B($BFv(B)") (?$Bmr(B "$B$9$J$o$A!#n%(B($B%7%e%&(B)$B$OJL;z(B") (?$Bn%(B "$Bn$(B($B%7%e%&(B)$B$N0[BN;z!#mr(B($B$9$J$o$A(B)$B$OJL;z(B") (?$Bn[(B "$B$+$?$J!#n^(B($B%3%/(B)$B$OJL;z(B") (?$Bn^(B "$B%3%/!#n[(B($B$+$?$J(B)$B$OJL;z(B") (?$BoL(B "$B$d$9$j!#oN(B($B%m(B)$B$OJL;z(B") (?$BoN(B "$B%m!#oL(B($B$d$9$j(B)$B$OJL;z(B") (?$Bo`(B "$BE55rIT>\!#1<(B($B$&$k$&(B)$B$OJL;z(B") (?$Bo}(B "$B%-%g%&!#p!(B($B%;%s(B)$B$OJL;z(B") (?$Bp!(B "$B%;%s!#o}(B($B%-%g%&(B)$B$OJL;z(B") (?$BpW(B "83$BF~BX$((B($B?Y(B)") (?$Bpt(B "83$BF~BX$((B($B7[(B)") (?$BqR(B "$BE55rIT>\(B") (?$BrM(B "83$BF~BX$((B($B03(B)") (?$Brt(B "83$BF~BX$((B($B2)(B)$B!#$&$0$$$9!#s?(B($B$&$=(B)$B$OJL;z(B") (?$Bs?(B "$B$&$=!#rt(B($B$&$0$$$9(B)$B$OJL;z(B") (?$Bt!(B "83$BDI2CF~BX$((B($B6F(B)") (?$Bt"(B "83$BDI2CF~BX$((B($BKj(B)") (?$Bt#(B "83$BDI2CF~BX$((B($BMZ(B)") (?$Bt$(B "83$BDI2CF~BX$((B($B`v(B)") (?$Bt%(B "90$BDI2C(B") (?$Bt&(B "90$BDI2C(B") ))) (dolist (x l) (skk-tankan-set-char-annotaion (car x) (nth 1 x))))) ;;; annotation data for japanese-jisx0213-1 (when (and skk-tankan-annotation-table (charsetp 'japanese-jisx0213-1)) (let ((l '( (2 15 "$B%"%]%9%H%m%U%#(B,APOSTROPHE") (2 16 "$B0zMQId(B,$B%/%)!<%F!<%7%g%s%^!<%/(B,QUOTATION MARK") (2 17 "$B%O%$%U%s%^%$%J%9(B,HYPHEN-MINUS") (2 18 "$B%A%k%I(B,TILDE") (2 19 "$B$/$N;zE@>e(B,VERTICAL KANA REPEAT MARK UPPER HALF") (2 20 "$B$/$N;zE@>e(B($BByE@(B),VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF") (2 21 "$B$/$N;zE@2<(B,VERTICAL KANA REPEAT MARK LOWER HALF") (2 22 "$BFs$N;zE@(B,$B$f$9$jE@(B,VERTICAL IDEOGRAPHIC ITERATION MARK") (2 23 "$B$^$95-9f(B,MASU MARK") (2 24 "$B%3%H(B,KATAKANA DIGRAPH KOTO") (2 25 "$B$h$j(B,HIRAGANA DIGRAPH YORI") (2 34 "$BItJ,=89g$NH]Dj(B,NOT A SUBSET OF") (2 35 "$BItJ,=89g$NH]Dj(B($B5UJ}8~(B),NOT A SUPERSET OF") (2 36 "$B??ItJ,=89g(B2,SUBSET OF WITH NOT EQUAL TO") (2 37 "$B??ItJ,=89g(B2($B5UJ}8~(B),SUPERSET OF WITH NOT EQUAL TO") (2 38 "$BMWAG$NH]Dj(B,$B85$NH]Dj(B,NOT AN ELEMENT OF") (2 39 "$B6u=89g(B,EMPTY SET") (2 40 "$BOB(B,CIRCLED PLUS") (2 50 "$B4]IU$-%^%$%J%9(B,CIRCLED MINUS") (2 51 "$B%F%s%=%k@Q(B,CIRCLED TIMES") (2 52 "$BJ?9T(B,PARALLEL TO") (2 53 "$BJ?9T$NH]Dj(B,NOT PARALLEL TO") (2 54 "$B;O$aFs=E%Q!<%l%s(B,$B;O$aFs=E3g8L(B,FULLWIDTH LEFT WHITE PARENTHESIS") (2 55 "$B=*$o$jFs=E%Q!<%l%s(B,$B=*$o$jFs=E3g8L(B,FULLWIDTH RIGHT WHITE PARENTHESIS") (2 56 "$B;O$aFs=E$-$C$3$&(B($B559C(B)$B3g8L(B,LEFT WHITE TORTOISE SHELL BRACKET") (2 57 "$B=*$o$jFs=E$-$C$3$&(B($B559C(B)$B3g8L(B,RIGHT WHITE TORTOISE SHELL BRACKET") (2 58 "$B;O$a$9$_IU$-3g8L(B($BGr(B),LEFT WHITE LENTICULAR BRACKET") (2 59 "$B=*$o$j$9$_IU$-3g8L(B($BGr(B),RIGHT WHITE LENTICULAR BRACKET") (2 75 "$B9gF1H]Dj(B,NOT IDENTICAL TO") (2 76 "$BA2?JE*$KEy$7$$(B,$B%[%b%H!<%W(B,ASYMPTOTICALLY EQUAL TO") (2 77 "$BF17A(B,APPROXIMATELY EQUAL TO") (2 78 "$B6a;wE*$KEy$7$$(B,$BF1Aj(B,ALMOST EQUAL TO") (2 79 "$B>.$5$$$+Bg$-$$(B,LESS-THAN OR GREATER-THAN") (2 80 "$BBg$-$$$+>.$5$$(B,GREATER-THAN OR LESS-THAN") (2 81 "$BF1Ey(B,LEFT RIGHT ARROW") (2 90 "$B%J%A%e%i%k(B,MUSIC NATURAL SIGN") (2 91 "$BO"$3$&(B($B7e(B)$BIU$-H,J,2;Id(B,BEAMED EIGHTH NOTES") (2 92 "$BO"$3$&(B($B7e(B)$BIU$-==O;J,2;Id(B,BEAMED SIXTEENTH NOTES") (2 93 "$B;MJ,2;Id(B,QUARTER NOTE") (3 1 "$B1&8~;03Q(B,WHITE RIGHT-POINTING TRIANGLE") (3 2 "$B1&8~9u;03Q(B,BLACK RIGHT-POINTING TRIANGLE") (3 3 "$B:88~;03Q(B,WHITE LEFT-POINTING TRIANGLE") (3 4 "$B:88~9u;03Q(B,BLACK LEFT-POINTING TRIANGLE") (3 5 "$B1&>e8~Lp0u(B,NORTH EAST ARROW") (3 6 "$B1&2<8~Lp0u(B,SOUTH EAST ARROW") (3 7 "$B:8>e8~Lp0u(B,NORTH WEST ARROW") (3 8 "$B:82<8~Lp0u(B,SOUTH WEST ARROW") (3 9 "$B1&Lp0u:8Lp0u(B,RIGHTWARDS ARROW OVER LEFTWARDS ARROW") (3 10 "$B1&8~GrLp0u(B,RIGHTWARDS WHITE ARROW") (3 11 "$B:88~GrLp0u(B,LEFTWARDS WHITE ARROW") (3 12 "$B>e8~GrLp0u(B,UPWARDS WHITE ARROW") (3 13 "$B2<8~GrLp0u(B,DOWNWARDS WHITE ARROW") (3 14 "$B6J$,$jLp0u>e$,$k(B,ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS") (3 15 "$B6J$,$jLp0u2<$,$k(B,ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS") (3 26 "$B4]Cf9u(B,CIRCLED BULLET") (3 27 "$BL>$&(B,HIRAGANA LETTER VU") (4 85 "$B>.=q$-J?2>L>$+(B,HIRAGANA LETTER SMALL KA") (4 86 "$B>.=q$-J?2>L>$1(B,HIRAGANA LETTER SMALL KE") (4 87 "$BH>ByE@IU$-J?2>L>$+(B,[HIRAGANA LETTER BIDAKUON NGA]") (4 88 "$BH>ByE@IU$-J?2>L>$-(B,[HIRAGANA LETTER BIDAKUON NGI]") (4 89 "$BH>ByE@IU$-J?2>L>$/(B,[HIRAGANA LETTER BIDAKUON NGU]") (4 90 "$BH>ByE@IU$-J?2>L>$1(B,[HIRAGANA LETTER BIDAKUON NGE]") (4 91 "$BH>ByE@IU$-J?2>L>$3(B,[HIRAGANA LETTER BIDAKUON NGO]") (5 87 "$BH>ByE@IU$-JR2>L>%+(B,[KATAKANA LETTER BIDAKUON NGA]") (5 88 "$BH>ByE@IU$-JR2>L>%-(B,[KATAKANA LETTER BIDAKUON NGI]") (5 89 "$BH>ByE@IU$-JR2>L>%/(B,[KATAKANA LETTER BIDAKUON NGU]") (5 90 "$BH>ByE@IU$-JR2>L>%1(B,[KATAKANA LETTER BIDAKUON NGE]") (5 91 "$BH>ByE@IU$-JR2>L>%3(B,[KATAKANA LETTER BIDAKUON NGO]") (5 92 "$BH>ByE@IU$-JR2>L>%;(B,[KATAKANA LETTER AINU CE]") (5 93 "$BH>ByE@IU$-JR2>L>%D(B,[KATAKANA LETTER AINU TU]") (5 94 "$BH>ByE@IU$-JR2>L>%H(B,[KATAKANA LETTER AINU TO]") (6 25 "$B%9%Z!<%I(B($BGr(B),WHITE SPADE SUIT") (6 26 "$B%9%Z!<%I(B,BLACK SPADE SUIT") (6 27 "$B%@%$%d(B($BGr(B),WHITE DIAMOND SUIT") (6 28 "$B%@%$%d(B,BLACK DIAMOND SUIT") (6 29 "$B%O!<%H(B($BGr(B),WHITE HEART SUIT") (6 30 "$B%O!<%H(B,BLACK HEART SUIT") (6 31 "$B%/%i%V(B($BGr(B),WHITE CLUB SUIT") (6 32 "$B%/%i%V(B,BLACK CLUB SUIT") (6 57 "$B%.%j%7%">.J8;z%U%!%$%J%k(BSIGMA,GREEK SMALL LETTER FINAL SIGMA") (6 58 "$BFs=E4](B1,DOUBLE CIRCLED DIGIT ONE") (6 59 "$BFs=E4](B2,DOUBLE CIRCLED DIGIT TWO") (6 60 "$BFs=E4](B3,DOUBLE CIRCLED DIGIT THREE") (6 61 "$BFs=E4](B4,DOUBLE CIRCLED DIGIT FOUR") (6 62 "$BFs=E4](B5,DOUBLE CIRCLED DIGIT FIVE") (6 63 "$BFs=E4](B6,DOUBLE CIRCLED DIGIT SIX") (6 64 "$BFs=E4](B7,DOUBLE CIRCLED DIGIT SEVEN") (6 65 "$BFs=E4](B8,DOUBLE CIRCLED DIGIT EIGHT") (6 66 "$BFs=E4](B9,DOUBLE CIRCLED DIGIT NINE") (6 67 "$BFs=E4](B10,DOUBLE CIRCLED NUMBER TEN") (6 68 "$BGr>-4}6p(B,WHITE SHOGI PIECE") (6 69 "$B9u>-4}6p(B,BLACK SHOGI PIECE") (6 70 "$BM9JX%^!<%/(B,POSTAL MARK FACE") (6 71 "$BEEOC%^!<%/(B,BLACK TELEPHONE") (6 72 "$B@2%^!<%/(B,BLACK SUN WITH RAYS") (6 73 "$BF^%^!<%/(B,CLOUD") (6 74 "$B1+%^!<%/(B,UMBRELLA") (6 75 "$B@c%^!<%/(B,SNOWMAN") (6 76 "$B29@t%^!<%/(B,HOT SPRINGS") (6 77 "$BJ?9T;MJU7A(B,WHITE PARALLELOGRAM") (6 78 "$B>.=q$-JR2>L>%/(B,KATAKANA LETTER SMALL KU") (6 79 "$B>.=q$-JR2>L>%7(B,KATAKANA LETTER SMALL SI") (6 80 "$B>.=q$-JR2>L>%9(B,KATAKANA LETTER SMALL SU") (6 81 "$B>.=q$-JR2>L>%H(B,KATAKANA LETTER SMALL TO") (6 82 "$B>.=q$-JR2>L>%L(B,KATAKANA LETTER SMALL NU") (6 83 "$B>.=q$-JR2>L>%O(B,KATAKANA LETTER SMALL HA") (6 84 "$B>.=q$-JR2>L>%R(B,KATAKANA LETTER SMALL HI") (6 85 "$B>.=q$-JR2>L>%U(B,KATAKANA LETTER SMALL HU") (6 86 "$B>.=q$-JR2>L>%X(B,KATAKANA LETTER SMALL HE") (6 87 "$B>.=q$-JR2>L>%[(B,KATAKANA LETTER SMALL HO") (6 88 "$B>.=q$-H>ByE@IU$-JR2>L>%U(B,[KATAKANA LETTER AINU P]") (6 89 "$B>.=q$-JR2>L>%`(B,KATAKANA LETTER SMALL MU") (6 90 "$B>.=q$-JR2>L>%i(B,KATAKANA LETTER SMALL RA") (6 91 "$B>.=q$-JR2>L>%j(B,KATAKANA LETTER SMALL RI") (6 92 "$B>.=q$-JR2>L>%k(B,KATAKANA LETTER SMALL RU") (6 93 "$B>.=q$-JR2>L>%l(B,KATAKANA LETTER SMALL RE") (6 94 "$B>.=q$-JR2>L>%m(B,KATAKANA LETTER SMALL RO") (7 34 "$B:8>e3QAGJR(B,DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT") (7 35 "$B:82<3QAGJR(B,DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT") (7 36 "$B4]IU$-=D@~AGJR(B,DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE") (7 37 "$B4]IU$->e2#=D@~AGJR(B,DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE") (7 38 "$B4]IU$-2<2#=D@~AGJR(B,DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE") (7 39 "$B;03QIU$-=D@~AGJR(B,DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE") (7 40 "$B;03QIU$->e2#=D@~AGJR(B,DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE") (7 41 "$B;03QIU$-2<2#=D@~AGJR(B,DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE") (7 42 "$BGHIU$-=D@~AGJR(B,DENTISTRY SYMBOL LIGHT VERTICAL WITH WAVE") (7 43 "$BGHIU$->e2#=D@~AGJR(B,DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE") (7 44 "$BGHIU$-2<2#=D@~AGJR(B,DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE") (7 45 "$B>e2#=D@~AGJR(B,DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL") (7 46 "$B2<2#=D@~AGJR(B,DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL") (7 47 "$B1&>e3QAGJR(B,DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT") (7 48 "$B1&2<3QAGJR(B,DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT") (7 82 "$BByE@IU$-JR2>L>%o(B,KATAKANA LETTER VA") (7 83 "$BByE@IU$-JR2>L>%p(B,KATAKANA LETTER VI") (7 84 "$BByE@IU$-JR2>L>%q(B,KATAKANA LETTER VE") (7 85 "$BByE@IU$-JR2>L>%r(B,KATAKANA LETTER VO") (7 86 "$B>.$5$$$+Ey$7$$$+Bg$-$$(B,LESS-THAN EQUAL TO OR GREATER-THAN") (7 87 "$BBg$-$$$+Ey$7$$$+>.$5$$(B,GREATER-THAN EQUAL TO OR LESS-THAN") (7 88 "3$BJ,$N(B1,VULGAR FRACTION ONE THIRD") (7 89 "3$BJ,$N(B2,VULGAR FRACTION TWO THIRDS") (7 90 "5$BJ,$N(B1,VULGAR FRACTION ONE FIFTH") (7 91 "$B%A%'%C%/%^!<%/(B,CHECK MARK") (7 92 "$B%3%^%s%I5-9f(B,PLACE OF INTEREST SIGN") (7 93 "$B6uGr5-9f(B,OPEN BOX") (7 94 "$B%j%?!<%s5-9f(B,RETURN SYMBOL") (8 33 "$B4](B21,CIRCLED NUMBER TWENTY ONE") (8 34 "$B4](B22,CIRCLED NUMBER TWENTY TWO") (8 35 "$B4](B23,CIRCLED NUMBER TWENTY THREE") (8 36 "$B4](B24,CIRCLED NUMBER TWENTY FOUR") (8 37 "$B4](B25,CIRCLED NUMBER TWENTY FIVE") (8 38 "$B4](B26,CIRCLED NUMBER TWENTY SIX") (8 39 "$B4](B27,CIRCLED NUMBER TWENTY SEVEN") (8 40 "$B4](B28,CIRCLED NUMBER TWENTY EIGHT") (8 41 "$B4](B29,CIRCLED NUMBER TWENTY NINE") (8 42 "$B4](B30,CIRCLED NUMBER THIRTY") (8 43 "$B4](B31,CIRCLED NUMBER THIRTY ONE") (8 44 "$B4](B32,CIRCLED NUMBER THIRTY TWO") (8 45 "$B4](B33,CIRCLED NUMBER THIRTY THREE") (8 46 "$B4](B34,CIRCLED NUMBER THIRTY FOUR") (8 47 "$B4](B35,CIRCLED NUMBER THIRTY FIVE") (8 48 "$B4](B36,CIRCLED NUMBER THIRTY SIX") (8 49 "$B4](B37,CIRCLED NUMBER THIRTY SEVEN") (8 50 "$B4](B38,CIRCLED NUMBER THIRTY EIGHT") (8 51 "$B4](B39,CIRCLED NUMBER THIRTY NINE") (8 52 "$B4](B40,CIRCLED NUMBER FORTY") (8 53 "$B4](B41,CIRCLED NUMBER FORTY ONE") (8 54 "$B4](B42,CIRCLED NUMBER FORTY TWO") (8 55 "$B4](B43,CIRCLED NUMBER FORTY THREE") (8 56 "$B4](B44,CIRCLED NUMBER FORTY FOUR") (8 57 "$B4](B45,CIRCLED NUMBER FORTY FIVE") (8 58 "$B4](B46,CIRCLED NUMBER FORTY SIX") (8 59 "$B4](B47,CIRCLED NUMBER FORTY SEVEN") (8 60 "$B4](B48,CIRCLED NUMBER FORTY EIGHT") (8 61 "$B4](B49,CIRCLED NUMBER FORTY NINE") (8 62 "$B4](B50,CIRCLED NUMBER FIFTY") (8 71 "$B:8H>9u4](B,CIRCLE WITH LEFT HALF BLACK") (8 72 "$B1&H>9u4](B,CIRCLE WITH RIGHT HALF BLACK") (8 73 "$B29u4](B,CIRCLE WITH LOWER HALF BLACK") (8 74 "$B>eH>9u4](B,CIRCLE WITH UPPER HALF BLACK") (8 75 "$B46C2IdFs$D(B,DOUBLE EXCLAMATION MARK") (8 76 "$B5?LdIdFs$D(B,DOUBLE QUESTION MARK") (8 77 "$B5?LdId46C2Id(B,QUESTION EXCLAMATION MARK") (8 78 "$B46C2Id5?LdId(B,EXCLAMATION QUESTION MARK") (8 79 "$B%-%c%m%sIU$-(BA,LATIN CAPITAL LETTER A WITH CARON") (8 80 "$B%-%c%m%sIU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH CARON") (8 81 "$B%-%c%m%sIU$-(BI$B>.J8;z(B,LATIN SMALL LETTER I WITH CARON") (8 82 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BM,LATIN CAPITAL LETTER M WITH ACUTE") (8 83 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BM$B>.J8;z(B,LATIN SMALL LETTER M WITH ACUTE") (8 84 "$B%0%l!<%V%"%/%;%s%HIU$-(BN,LATIN CAPITAL LETTER N WITH GRAVE") (8 85 "$B%0%l!<%V%"%/%;%s%HIU$-(BN$B>.J8;z(B,LATIN SMALL LETTER N WITH GRAVE") (8 86 "$B%-%c%m%sIU$-(BO,LATIN CAPITAL LETTER O WITH CARON") (8 87 "$B%-%c%m%sIU$-(BO$B>.J8;z(B,LATIN SMALL LETTER O WITH CARON") (8 88 "$B%-%c%m%sIU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH CARON") (8 89 "$B%^%/%m%s$H%@%$%(%l%7%9IU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH DIAERESIS AND MACRON") (8 90 "$B%"%-%e!<%H%"%/%;%s%H$H%@%$%(%l%7%9IU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE") (8 91 "$B%-%c%m%s$H%@%$%(%l%7%9IU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH DIAERESIS AND CARON") (8 92 "$B%0%l!<%V%"%/%;%s%H$H%@%$%(%l%7%9IU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE") (9 1 "$B%f!<%m5-9f(B,EURO SIGN") (9 2 "$B%N!<%V%l!<%/%9%Z!<%9(B,NO-BREAK SPACE") (9 3 "$B5U46C2Id(B,INVERTED EXCLAMATION MARK") (9 4 "$BITFCDjDL2_5-9f(B,CURRENCY SIGN") (9 5 "$BGKCG@~(B,BROKEN BAR") (9 6 "$BCx:n8"I=<(5-9f(B,COPYRIGHT SIGN") (9 7 "$B=w@-=x?tI8<1(B,FEMININE ORDINAL INDICATOR") (9 8 "$B;O$aFs=E;33g8L0zMQ5-9f(B,$B;O$a%.%e%a(B,LEFT-POINTING DOUBLE ANGLE QUOTATION MARK") (9 9 "$B%=%U%H%O%$%U%s(B,SOFT HYPHEN") (9 10 "$BEPO?>&I85-9f(B,REGISTERED SIGN") (9 11 "$B%^%/%m%s(B,MACRON") (9 12 "$B>eIU$-(B2,SUPERSCRIPT TWO") (9 13 "$B>eIU$-(B3,SUPERSCRIPT THREE") (9 14 "$BCfE@(B($B%i%F%s(B),MIDDLE DOT") (9 15 "$B%;%G%#%i(B,CEDILLA") (9 16 "$B>eIU$-(B1,SUPERSCRIPT ONE") (9 17 "$BCK@-=x?tI8<1(B,MASCULINE ORDINAL INDICATOR") (9 18 "$B=*$o$jFs=E;33g8L0zMQ5-9f(B,$B=*$o$j%.%e%a(B,RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK") (9 19 "4$BJ,$N(B1,VULGAR FRACTION ONE QUARTER") (9 20 "2$BJ,$N(B1,VULGAR FRACTION ONE HALF") (9 21 "4$BJ,$N(B3,VULGAR FRACTION THREE QUARTERS") (9 22 "$B5U5?LdId(B,INVERTED QUESTION MARK") (9 23 "$B%0%l!<%V%"%/%;%s%HIU$-(BA,LATIN CAPITAL LETTER A WITH GRAVE") (9 24 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BA,LATIN CAPITAL LETTER A WITH ACUTE") (9 25 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BA,LATIN CAPITAL LETTER A WITH CIRCUMFLEX") (9 26 "$B%A%k%IIU$-(BA,LATIN CAPITAL LETTER A WITH TILDE") (9 27 "$B%@%$%(%l%7%9IU$-(BA,LATIN CAPITAL LETTER A WITH DIAERESIS") (9 28 "$B>e%j%s%0IU$-(BA,LATIN CAPITAL LETTER A WITH RING ABOVE") (9 29 "AE,LATIN CAPITAL LETTER AE") (9 30 "$B%;%G%#%iIU$-(BC,LATIN CAPITAL LETTER C WITH CEDILLA") (9 31 "$B%0%l!<%V%"%/%;%s%HIU$-(BE,LATIN CAPITAL LETTER E WITH GRAVE") (9 32 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BE,LATIN CAPITAL LETTER E WITH ACUTE") (9 33 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BE,LATIN CAPITAL LETTER E WITH CIRCUMFLEX") (9 34 "$B%@%$%(%l%7%9IU$-(BE,LATIN CAPITAL LETTER E WITH DIAERESIS") (9 35 "$B%0%l!<%V%"%/%;%s%HIU$-(BI,LATIN CAPITAL LETTER I WITH GRAVE") (9 36 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BI,LATIN CAPITAL LETTER I WITH ACUTE") (9 37 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BI,LATIN CAPITAL LETTER I WITH CIRCUMFLEX") (9 38 "$B%@%$%(%l%7%9IU$-(BI,LATIN CAPITAL LETTER I WITH DIAERESIS") (9 39 "$B%"%$%9%i%s%I8l(BETH,LATIN CAPITAL LETTER ETH(Icelandic)") (9 40 "$B%A%k%IIU$-(BN,LATIN CAPITAL LETTER N WITH TILDE") (9 41 "$B%0%l!<%V%"%/%;%s%HIU$-(BO,LATIN CAPITAL LETTER O WITH GRAVE") (9 42 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BO,LATIN CAPITAL LETTER O WITH ACUTE") (9 43 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BO,LATIN CAPITAL LETTER O WITH CIRCUMFLEX") (9 44 "$B%A%k%IIU$-(BO,LATIN CAPITAL LETTER O WITH TILDE") (9 45 "$B%@%$%(%l%7%9IU$-(BO,LATIN CAPITAL LETTER O WITH DIAERESIS") (9 46 "$B%9%H%m!<%/IU$-(BO,LATIN CAPITAL LETTER O WITH STROKE") (9 47 "$B%0%l!<%V%"%/%;%s%HIU$-(BU,LATIN CAPITAL LETTER U WITH GRAVE") (9 48 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BU,LATIN CAPITAL LETTER U WITH ACUTE") (9 49 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BU,LATIN CAPITAL LETTER U WITH CIRCUMFLEX") (9 50 "$B%@%$%(%l%7%9IU$-(BU,LATIN CAPITAL LETTER U WITH DIAERESIS") (9 51 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BY,LATIN CAPITAL LETTER Y WITH ACUTE") (9 52 "$B%"%$%9%i%s%I8l(BTHORN,LATIN CAPITAL LETTER THORN(Icelandic)") (9 53 "$B%I%$%D8l%(%9%D%'%C%H(B,LATIN SMALL LETTER SHARP S(German)") (9 54 "$B%0%l!<%V%"%/%;%s%HIU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH GRAVE") (9 55 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH ACUTE") (9 56 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH CIRCUMFLEX") (9 57 "$B%A%k%IIU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH TILDE") (9 58 "$B%@%$%(%l%7%9IU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH DIAERESIS") (9 59 "$B>e%j%s%0IU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH RING ABOVE") (9 60 "AE$B>.J8;z(B,LATIN SMALL LETTER AE") (9 61 "$B%;%G%#%iIU$-(BC$B>.J8;z(B,LATIN SMALL LETTER C WITH CEDILLA") (9 62 "$B%0%l!<%V%"%/%;%s%HIU$-(BE$B>.J8;z(B,LATIN SMALL LETTER E WITH GRAVE") (9 63 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BE$B>.J8;z(B,LATIN SMALL LETTER E WITH ACUTE") (9 64 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BE$B>.J8;z(B,LATIN SMALL LETTER E WITH CIRCUMFLEX") (9 65 "$B%@%$%(%l%7%9IU$-(BE$B>.J8;z(B,LATIN SMALL LETTER E WITH DIAERESIS") (9 66 "$B%0%l!<%V%"%/%;%s%HIU$-(BI$B>.J8;z(B,LATIN SMALL LETTER I WITH GRAVE") (9 67 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BI$B>.J8;z(B,LATIN SMALL LETTER I WITH ACUTE") (9 68 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BI$B>.J8;z(B,LATIN SMALL LETTER I WITH CIRCUMFLEX") (9 69 "$B%@%$%(%l%7%9IU$-(BI$B>.J8;z(B,LATIN SMALL LETTER I WITH DIAERESIS") (9 70 "$B%"%$%9%i%s%I8l(BETH$B>.J8;z(B,LATIN SMALL LETTER ETH(Icelandic)") (9 71 "$B%A%k%IIU$-(BN$B>.J8;z(B,LATIN SMALL LETTER N WITH TILDE") (9 72 "$B%0%l!<%V%"%/%;%s%HIU$-(BO$B>.J8;z(B,LATIN SMALL LETTER O WITH GRAVE") (9 73 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BO$B>.J8;z(B,LATIN SMALL LETTER O WITH ACUTE") (9 74 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BO$B>.J8;z(B,LATIN SMALL LETTER O WITH CIRCUMFLEX") (9 75 "$B%A%k%IIU$-(BO$B>.J8;z(B,LATIN SMALL LETTER O WITH TILDE") (9 76 "$B%@%$%(%l%7%9IU$-(BO$B>.J8;z(B,LATIN SMALL LETTER O WITH DIAERESIS") (9 77 "$B%9%H%m!<%/IU$-(BO$B>.J8;z(B,LATIN SMALL LETTER O WITH STROKE") (9 78 "$B%0%l!<%V%"%/%;%s%HIU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH GRAVE") (9 79 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH ACUTE") (9 80 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH CIRCUMFLEX") (9 81 "$B%@%$%(%l%7%9IU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH DIAERESIS") (9 82 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BY$B>.J8;z(B,LATIN SMALL LETTER Y WITH ACUTE") (9 83 "$B%"%$%9%i%s%I8l(BTHORN$B>.J8;z(B,LATIN SMALL LETTER THORN(Icelandic)") (9 84 "$B%@%$%(%l%7%9IU$-(BY$B>.J8;z(B,LATIN SMALL LETTER Y WITH DIAERESIS") (9 85 "$B%^%/%m%sIU$-(BA,LATIN CAPITAL LETTER A WITH MACRON") (9 86 "$B%^%/%m%sIU$-(BI,LATIN CAPITAL LETTER I WITH MACRON") (9 87 "$B%^%/%m%sIU$-(BU,LATIN CAPITAL LETTER U WITH MACRON") (9 88 "$B%^%/%m%sIU$-(BE,LATIN CAPITAL LETTER E WITH MACRON") (9 89 "$B%^%/%m%sIU$-(BO,LATIN CAPITAL LETTER O WITH MACRON") (9 90 "$B%^%/%m%sIU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH MACRON") (9 91 "$B%^%/%m%sIU$-(BI$B>.J8;z(B,LATIN SMALL LETTER I WITH MACRON") (9 92 "$B%^%/%m%sIU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH MACRON") (9 93 "$B%^%/%m%sIU$-(BE$B>.J8;z(B,LATIN SMALL LETTER E WITH MACRON") (9 94 "$B%^%/%m%sIU$-(BO$B>.J8;z(B,LATIN SMALL LETTER O WITH MACRON") (10 1 "$B%*%4%M%/IU$-(BA,LATIN CAPITAL LETTER A WITH OGONEK") (10 2 "$B%V%j!<%V(B,BREVE") (10 3 "$B%9%H%m!<%/IU$-(BL,LATIN CAPITAL LETTER L WITH STROKE") (10 4 "$B%-%c%m%sIU$-(BL,LATIN CAPITAL LETTER L WITH CARON") (10 5 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BS,LATIN CAPITAL LETTER S WITH ACUTE") (10 6 "$B%-%c%m%sIU$-(BS,LATIN CAPITAL LETTER S WITH CARON") (10 7 "$B%;%G%#%iIU$-(BS,LATIN CAPITAL LETTER S WITH CEDILLA") (10 8 "$B%-%c%m%sIU$-(BT,LATIN CAPITAL LETTER T WITH CARON") (10 9 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BZ,LATIN CAPITAL LETTER Z WITH ACUTE") (10 10 "$B%-%c%m%sIU$-(BZ,LATIN CAPITAL LETTER Z WITH CARON") (10 11 "$B>e%I%C%HIU$-(BZ,LATIN CAPITAL LETTER Z WITH DOT ABOVE") (10 12 "$B%*%4%M%/IU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH OGONEK") (10 13 "$B%*%4%M%/(B,OGONEK") (10 14 "$B%9%H%m!<%/IU$-(BL$B>.J8;z(B,LATIN SMALL LETTER L WITH STROKE") (10 15 "$B%-%c%m%sIU$-(BL$B>.J8;z(B,LATIN SMALL LETTER L WITH CARON") (10 16 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BS$B>.J8;z(B,LATIN SMALL LETTER S WITH ACUTE") (10 17 "$B%-%c%m%s(B,CARON(Mandarin Chinese third tone)") (10 18 "$B%-%c%m%sIU$-(BS$B>.J8;z(B,LATIN SMALL LETTER S WITH CARON") (10 19 "$B%;%G%#%iIU$-(BS$B>.J8;z(B,LATIN SMALL LETTER S WITH CEDILLA") (10 20 "$B%-%c%m%sIU$-(BT$B>.J8;z(B,LATIN SMALL LETTER T WITH CARON") (10 21 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BZ$B>.J8;z(B,LATIN SMALL LETTER Z WITH ACUTE") (10 22 "$B%@%V%k%"%-%e!<%H%"%/%;%s%H(B,DOUBLE ACUTE ACCENT") (10 23 "$B%-%c%m%sIU$-(BZ$B>.J8;z(B,LATIN SMALL LETTER Z WITH CARON") (10 24 "$B>e%I%C%HIU$-(BZ$B>.J8;z(B,LATIN SMALL LETTER Z WITH DOT ABOVE") (10 25 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BR,LATIN CAPITAL LETTER R WITH ACUTE") (10 26 "$B%V%j!<%VIU$-(BA,LATIN CAPITAL LETTER A WITH BREVE") (10 27 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BL,LATIN CAPITAL LETTER L WITH ACUTE") (10 28 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BC,LATIN CAPITAL LETTER C WITH ACUTE") (10 29 "$B%-%c%m%sIU$-(BC,LATIN CAPITAL LETTER C WITH CARON") (10 30 "$B%*%4%M%/IU$-(BE,LATIN CAPITAL LETTER E WITH OGONEK") (10 31 "$B%-%c%m%sIU$-(BE,LATIN CAPITAL LETTER E WITH CARON") (10 32 "$B%-%c%m%sIU$-(BD,LATIN CAPITAL LETTER D WITH CARON") (10 33 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BN,LATIN CAPITAL LETTER N WITH ACUTE") (10 34 "$B%-%c%m%sIU$-(BN,LATIN CAPITAL LETTER N WITH CARON") (10 35 "$B%@%V%k%"%-%e!<%H%"%/%;%s%HIU$-(BO,LATIN CAPITAL LETTER O WITH DOUBLE ACUTE") (10 36 "$B%-%c%m%sIU$-(BR,LATIN CAPITAL LETTER R WITH CARON") (10 37 "$B>e%j%s%0IU$-(BU,LATIN CAPITAL LETTER U WITH RING ABOVE") (10 38 "$B%@%V%k%"%-%e!<%H%"%/%;%s%HIU$-(BU,LATIN CAPITAL LETTER U WITH DOUBLE ACUTE") (10 39 "$B%;%G%#%iIU$-(BT,LATIN CAPITAL LETTER T WITH CEDILLA") (10 40 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BR$B>.J8;z(B,LATIN SMALL LETTER R WITH ACUTE") (10 41 "$B%V%j!<%VIU$-(BA$B>.J8;z(B,LATIN SMALL LETTER A WITH BREVE") (10 42 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BL$B>.J8;z(B,LATIN SMALL LETTER L WITH ACUTE") (10 43 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BC$B>.J8;z(B,LATIN SMALL LETTER C WITH ACUTE") (10 44 "$B%-%c%m%sIU$-(BC$B>.J8;z(B,LATIN SMALL LETTER C WITH CARON") (10 45 "$B%*%4%M%/IU$-(BE$B>.J8;z(B,LATIN SMALL LETTER E WITH OGONEK") (10 46 "$B%-%c%m%sIU$-(BE$B>.J8;z(B,LATIN SMALL LETTER E WITH CARON") (10 47 "$B%-%c%m%sIU$-(BD$B>.J8;z(B,LATIN SMALL LETTER D WITH CARON") (10 48 "$B%9%H%m!<%/IU$-(BD$B>.J8;z(B,LATIN SMALL LETTER D WITH STROKE") (10 49 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BN$B>.J8;z(B,LATIN SMALL LETTER N WITH ACUTE") (10 50 "$B%-%c%m%sIU$-(BN$B>.J8;z(B,LATIN SMALL LETTER N WITH CARON") (10 51 "$B%@%V%k%"%-%e!<%H%"%/%;%s%HIU$-(BO$B>.J8;z(B,LATIN SMALL LETTER O WITH DOUBLE ACUTE") (10 52 "$B%-%c%m%sIU$-(BR$B>.J8;z(B,LATIN SMALL LETTER R WITH CARON") (10 53 "$B>e%j%s%0IU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH RING ABOVE") (10 54 "$B%@%V%k%"%-%e!<%H%"%/%;%s%HIU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH DOUBLE ACUTE") (10 55 "$B%;%G%#%iIU$-(BT$B>.J8;z(B,LATIN SMALL LETTER T WITH CEDILLA") (10 56 "$B>e%I%C%H(B,DOT ABOVE(Mandarin Chinese light tone)") (10 57 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BC,LATIN CAPITAL LETTER C WITH CIRCUMFLEX") (10 58 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BG,LATIN CAPITAL LETTER G WITH CIRCUMFLEX") (10 59 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BH,LATIN CAPITAL LETTER H WITH CIRCUMFLEX") (10 60 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BJ,LATIN CAPITAL LETTER J WITH CIRCUMFLEX") (10 61 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BS,LATIN CAPITAL LETTER S WITH CIRCUMFLEX") (10 62 "$B%V%j!<%VIU$-(BU,LATIN CAPITAL LETTER U WITH BREVE") (10 63 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BC$B>.J8;z(B,LATIN SMALL LETTER C WITH CIRCUMFLEX") (10 64 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BG$B>.J8;z(B,LATIN SMALL LETTER G WITH CIRCUMFLEX") (10 65 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BH$B>.J8;z(B,LATIN SMALL LETTER H WITH CIRCUMFLEX") (10 66 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BJ$B>.J8;z(B,LATIN SMALL LETTER J WITH CIRCUMFLEX") (10 67 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%HIU$-(BS$B>.J8;z(B,LATIN SMALL LETTER S WITH CIRCUMFLEX") (10 68 "$B%V%j!<%VIU$-(BU$B>.J8;z(B,LATIN SMALL LETTER U WITH BREVE") (10 69 "$B%U%C%/IU$-(BM$B>.J8;z(B,$BM-@.J8;z(B,$BM-@.J8;z(B,$BM-@<;u7TCF$-2;(B,LATIN SMALL LETTER R WITH FISHHOOK") (10 72 "ESH$B>.J8;z(B,$BL5@<8eIt;u7TK`;$2;(B,LATIN SMALL LETTER ESH") (10 73 "EZH$B>.J8;z(B,$BM-@<8eIt;u7TK`;$2;(B,LATIN SMALL LETTER EZH") (10 74 "$B%Y%k%HIU$-(BL$B>.J8;z(B,$BL5@<;u7TB&LLK`;$2;(B,LATIN SMALL LETTER L WITH BELT") (10 75 "LEZH$B>.J8;z(B,$BM-@<;u7TB&LLK`;$2;(B,LATIN SMALL LETTER LEZH") (10 76 "$B%?!<%s%I(BR$B>.J8;z(B,$BL5@<;u7T@\6a2;(B,LATIN SMALL LETTER TURNED R") (10 77 "$B%l%H%m%U%l%C%/%9%U%C%/IU$-(BT$B>.J8;z(B,$BL5@<$=$j@eGKNv2;(B,LATIN SMALL LETTER T WITH RETROFLEX HOOK") (10 78 "$B%F!<%kIU$-(BD$B>.J8;z(B,$BM-@<$=$j@eGKNv2;(B,LATIN SMALL LETTER D WITH TAIL") (10 79 "$B%l%H%m%U%l%C%/%9%U%C%/IU$-(BN$B>.J8;z(B,$BM-@<$=$j@eI!2;(B,LATIN SMALL LETTER N WITH RETROFLEX HOOK") (10 80 "$B%F!<%kIU$-(BR$B>.J8;z(B,$BM-@<$=$j@eCF$-2;(B,LATIN SMALL LETTER R WITH TAIL") (10 81 "$B%U%C%/IU$-(BS$B>.J8;z(B,$BL5@<$=$j@eK`;$2;(B,LATIN SMALL LETTER S WITH HOOK") (10 82 "$B%l%H%m%U%l%C%/%9%U%C%/IU$-(BZ$B>.J8;z(B,$BM-@<$=$j@eK`;$2;(B,LATIN SMALL LETTER Z WITH RETROFLEX HOOK") (10 83 "$B%U%C%/IU$-%?!<%s%I(BR$B>.J8;z(B,$BM-@<$=$j@e@\6a2;(B,LATIN SMALL LETTER TURNED R WITH HOOK") (10 84 "$B%l%H%m%U%l%C%/%9%U%C%/IU$-(BL$B>.J8;z(B,$BM-@<$=$j@eB&LL@\6a2;(B,LATIN SMALL LETTER L WITH RETROFLEX HOOK") (10 85 "$B%9%H%m!<%/IU$-%I%C%H$J$7(BJ$B>.J8;z(B,$BM-@<9E8}38GKNv2;(B,LATIN SMALL LETTER DOTLESS J WITH STROKE") (10 86 "$B:8%U%C%/IU$-(BN$B>.J8;z(B,$BM-@<9E8}38I!2;(B,LATIN SMALL LETTER N WITH LEFT HOOK") (10 87 "$B%/%m%9%I%F!<%kIU$-(BJ$B>.J8;z(B,$BM-@<9E8}38K`;$2;(B,LATIN SMALL LETTER J WITH CROSSED-TAIL") (10 88 "$B%?!<%s%I(BY$B>.J8;z(B,$BM-@<9E8}38B&LL@\6a2;(B,LATIN SMALL LETTER TURNED Y") (10 89 "$B%9%/%j%W%H(BG$B>.J8;z(B,$BM-@.J8;z(B,$BM-@.J8;z(B,$BM-@.J8;z(B,$BL5@<0vF,K`;$2;(B,LATIN SMALL LETTER H WITH STROKE") (10 94 "$B%j%P!<%9%I%0%m%C%?%k%9%H%C%W(B,$BM-@<0vF,K`;$2;(B,LATIN LETTER PHARYNGEAL VOICED FRICATIVE") (11 1 "$B%0%m%C%?%k%9%H%C%W(B,$BL5@<@.J8;z(B,$BM-@<@?05[Ce2;(B,LATIN LETTER BILABIAL CLICK") (11 4 "$B9E8}38;u7T5[Ce2;(B,LATIN LETTER ALVEOLAR CLICK") (11 5 "$B%U%C%/IU$-(BB$B>.J8;z(B,$BM-@?0FbGK2;(B,LATIN SMALL LETTER B WITH HOOK") (11 6 "$B%U%C%/IU$-(BD$B>.J8;z(B,$BM-@<;u7TFbGK2;(B,LATIN SMALL LETTER D WITH HOOK") (11 7 "$B%U%C%/$H%9%H%m!<%/IU$-%I%C%H$J$7(BJ$B>.J8;z(B,$BM-@<9E8}38FbGK2;(B,LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK") (11 8 "$B%U%C%/IU$-(BG$B>.J8;z(B,$BM-@.J8;z(B,$B1_?0A0@e9-!&CfCJJl2;(B,LATIN SMALL LIGATURE OE") (11 11 "$B%j%,%A%c(BOE$BBgJ8;z(B,$B1_?0A0@e9-Jl2;(B,LATIN CAPITAL LIGATURE OE") (11 12 "$B%9%H%m!<%/IU$-(BI$B>.J8;z(B,$BHs1_?0Cf@e69Jl2;(B,LATIN SMALL LETTER I WITH STROKE") (11 13 "$B%P!.J8;z(B,$B1_?0Cf@e69Jl2;(B,LATIN SMALL LETTER U BAR") (11 14 "$B%j%P!<%9%I(BE$B>.J8;z(B,$BHs1_?0Cf@e69!&CfCJJl2;(B,LATIN SMALL LETTER REVERSED E") (11 15 "$B%P!.J8;z(B,$B1_?0Cf@e69!&CfCJJl2;(B,LATIN SMALL LETTER BARRED O") (11 16 "SCHWA$B>.J8;z(B,$BHs1_?0Cf@eCf1{Jl2;(B,LATIN SMALL LETTER SCHWA") (11 17 "$B%j%P!<%9%I%*!<%W%s(BE$B>.J8;z(B,$BHs1_?0Cf@e9-!&CfCJJl2;(B,LATIN SMALL LETTER REVERSED OPEN E") (11 18 "$B%/%m!<%:%I%j%P!<%9%I%*!<%W%s(BE$B>.J8;z(B,$B1_?0Cf@e9-!&CfCJJl2;(B,LATIN SMALL LETTER CLOSED REVERSED OPEN E") (11 19 "$B%?!<%s%I(BA$B>.J8;z(B,$BHs1_?0Cf@e69$a$N9-Jl2;(B,LATIN SMALL LETTER TURNED A") (11 20 "$B%?!<%s%I(BM$B>.J8;z(B,$BHs1_?08e@e69Jl2;(B,LATIN SMALL LETTER TURNED M") (11 21 "UPSILON$B>.J8;z(B,$B1_?08e@e9-$a$N69Jl2;(B,LATIN SMALL LETTER UPSILON") (11 22 "$B%Y%S!<%,%s%^(B,$BHs1_?08e@e69CfCJJl2;(B,LATIN SMALL LETTER RAMS HORN") (11 23 "$B%?!<%s%I(BV$B>.J8;z(B,$BHs1_?08e@e9-!&CfCJJl2;(B,LATIN SMALL LETTER TURNED V") (11 24 "$B%*!<%W%s(BO$B>.J8;z(B,$B1_?08e@e9-!&CfCJJl2;(B,LATIN SMALL LETTER OPEN O") (11 25 "$B%9%/%j%W%H(BA$B>.J8;z(B,$BHs1_?08e@e9-Jl2;(B,LATIN SMALL LETTER ALPHA") (11 26 "$B%?!<%s%I(BALPHA$B>.J8;z(B,$B1_?08e@e9-Jl2;(B,LATIN SMALL LETTER TURNED ALPHA") (11 27 "$B%?!<%s%I(BW$B>.J8;z(B,$BL5@?0!&Fp8}38K`;$2;(B,LATIN SMALL LETTER TURNED W") (11 28 "$B%?!<%s%I(BH$B>.J8;z(B,$BM-@?0!&9E8}38@\6a2;(B,LATIN SMALL LETTER TURNED H") (11 29 "$B%9%H%m!<%/IU$-%j%P!<%9%I%0%m%C%?%k%9%H%C%W(B,$BM-@<0vF,38K`;$2;(B,LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE") (11 30 "$B%9%H%m!<%/IU$-%0%m%C%?%k%9%H%C%W(B,$B0vF,38GKNv2;(B,LATIN LETTER GLOTTAL STOP WITH STROKE") (11 31 "$B%+!<%kIU$-(BC$B>.J8;z(B,$B;u7T!&9E8}38K`;$2;(B,LATIN SMALL LETTER C WITH CURL") (11 32 "$B%+!<%kIU$-(BZ$B>.J8;z(B,$B;u7T!&9E8}38K`;$2;(B,LATIN SMALL LETTER Z WITH CURL") (11 33 "$B%m%s%0%l%C%0IU$-%?!<%s%I(BR$B>.J8;z(B,$B;u7TB&LLCF$-2;(B,LATIN SMALL LETTER TURNED R WITH LONG LEG") (11 34 "$B%U%C%/IU$-(BHENG$B>.J8;z(B,$BL5@<8eIt;u7TFp8}38K`;$2;(B,LATIN SMALL LETTER HENG WITH HOOK") (11 35 "$B%U%C%/IU$-(BSCHWA,LATIN SMALL LETTER SCHWA WITH HOOK") (11 36 "$B%0%l!<%V%"%/%;%s%HIU$-(BAE$B>.J8;z(B,[LATIN SMALL LETTER AE WITH GRAVE]") (11 37 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BAE$B>.J8;z(B,LATIN SMALL LETTER AE WITH ACUTE") (11 38 "$B%0%l!<%V%"%/%;%s%HIU$-%9%/%j%W%H(BA$B>.J8;z(B,GREEK SMALL LETTER ALPHA WITH VARIA") (11 39 "$B%"%-%e!<%H%"%/%;%s%HIU$-%9%/%j%W%H(BA$B>.J8;z(B,GREEK SMALL LETTER ALPHA WITH OXIA") (11 40 "$B%0%l!<%V%"%/%;%s%HIU$-%*!<%W%s(BO$B>.J8;z(B,[LATIN SMALL LETTER OPEN O WITH GRAVE]") (11 41 "$B%"%-%e!<%H%"%/%;%s%HIU$-%*!<%W%s(BO$B>.J8;z(B,[LATIN SMALL LETTER OPEN O WITH ACUTE]") (11 42 "$B%0%l!<%V%"%/%;%s%HIU$-%?!<%s%I(BV$B>.J8;z(B,[LATIN SMALL LETTER TURNED V WITH GRAVE]") (11 43 "$B%"%-%e!<%H%"%/%;%s%HIU$-%?!<%s%I(BV$B>.J8;z(B,[LATIN SMALL LETTER TURNED V WITH ACUTE]") (11 44 "$B%0%l!<%V%"%/%;%s%HIU$-(BSCHWA$B>.J8;z(B,[LATIN SMALL LETTER SCHWA WITH GRAVE]") (11 45 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BSCHWA$B>.J8;z(B,[LATIN SMALL LETTER SCHWA WITH ACUTE]") (11 46 "$B%0%l!<%V%"%/%;%s%H$H%U%C%/IU$-(BSCHWA$B>.J8;z(B,[LATIN SMALL LETTER HOOKED SCHWA WITH GRAVE]") (11 47 "$B%"%-%e!<%H%"%/%;%s%H$H%U%C%/IU$-(BSCHWA$B>.J8;z(B,[LATIN SMALL LETTER HOOKED SCHWA WITH ACUTE]") (11 48 "$B%0%l!<%V%"%/%;%s%HIU$-(BEPSILON$B>.J8;z(B,GREEK SMALL LETTER EPSILON WITH VARIA") (11 49 "$B%"%-%e!<%H%"%/%;%s%HIU$-(BEPSILON$B>.J8;z(B,GREEK SMALL LETTER EPSILON WITH OXIA") (11 50 "$B%@%V%k%$%s%P!<%F%C%I%V%j!<%V(B($B9g@.2DG=(B),$BGK;$2;Kt$OFs=ED42;5-9f(B,COMBINING DOUBLE INVERTED BREVE") (11 51 "$B>.=D@~(B,$BBh0l6/@*(B,MODIFIER LETTER VERTICAL LINE") (11 52 "$B2<>.=D@~(B,$BBhFs6/@*(B,MODIFIER LETTER LOW VERTICAL LINE") (11 53 "$BD9(B,MODIFIER LETTER TRIANGULAR COLON") (11 54 "$BH>D9(B,MODIFIER LETTER HALF TRIANGULAR COLON") (11 55 "$B%V%j!<%V(B($B9g@.2DG=(B),$BD6C;(B,COMBINING BREVE(Vrachy)") (11 56 "$BO"7k$7$F$$$k(B,UNDERTIE(Enotikon)") (11 57 "$B%@%V%k%"%-%e!<%H%"%/%;%s%H(B($B9g@.2DG=(B),$B@e>:D4(B,COMBINING CARON") (11 63 "$B%5!<%+%`%U%l%C%/%9%"%/%;%s%H(B($B9g@.2DG=(B),$B@e>:D4(B,[RISING SYMBOL]") (11 70 "$B@e(BX($B9g@.2DG=(B),$BCfCJCf@eJl2;2=(B,COMBINING X ABOVE") (11 79 "$B2<=D@~(B($B9g@.2DG=(B),$B2;@ae%l%U%H%"%s%0%k(B($B9g@.2DG=(B),$B3+J|$,J9$3$($J$$(B,COMBINING LEFT ANGLE ABOVE") (12 1 "$B9u4](B1,DINGBAT NEGATIVE CIRCLED DIGIT ONE") (12 2 "$B9u4](B2,DINGBAT NEGATIVE CIRCLED DIGIT TWO") (12 3 "$B9u4](B3,DINGBAT NEGATIVE CIRCLED DIGIT THREE") (12 4 "$B9u4](B4,DINGBAT NEGATIVE CIRCLED DIGIT FOUR") (12 5 "$B9u4](B5,DINGBAT NEGATIVE CIRCLED DIGIT FIVE") (12 6 "$B9u4](B6,DINGBAT NEGATIVE CIRCLED DIGIT SIX") (12 7 "$B9u4](B7,DINGBAT NEGATIVE CIRCLED DIGIT SEVEN") (12 8 "$B9u4](B8,DINGBAT NEGATIVE CIRCLED DIGIT EIGHT") (12 9 "$B9u4](B9,DINGBAT NEGATIVE CIRCLED DIGIT NINE") (12 10 "$B9u4](B10,DINGBAT NEGATIVE CIRCLED NUMBER TEN") (12 11 "$B9u4](B11,NEGATIVE CIRCLED NUMBER ELEVEN") (12 12 "$B9u4](B12,NEGATIVE CIRCLED NUMBER TWELVE") (12 13 "$B9u4](B13,NEGATIVE CIRCLED NUMBER THIRTEEN") (12 14 "$B9u4](B14,NEGATIVE CIRCLED NUMBER FOURTEEN") (12 15 "$B9u4](B15,NEGATIVE CIRCLED NUMBER FIFTEEN") (12 16 "$B9u4](B16,NEGATIVE CIRCLED NUMBER SIXTEEN") (12 17 "$B9u4](B17,NEGATIVE CIRCLED NUMBER SEVENTEEN") (12 18 "$B9u4](B18,NEGATIVE CIRCLED NUMBER EIGHTEEN") (12 19 "$B9u4](B19,NEGATIVE CIRCLED NUMBER NINETEEN") (12 20 "$B9u4](B20,NEGATIVE CIRCLED NUMBER TWENTY") (12 21 "$B%m!<%^?t;z(B1$B>.J8;z(B,SMALL ROMAN NUMERAL ONE") (12 22 "$B%m!<%^?t;z(B2$B>.J8;z(B,SMALL ROMAN NUMERAL TWO") (12 23 "$B%m!<%^?t;z(B3$B>.J8;z(B,SMALL ROMAN NUMERAL THREE") (12 24 "$B%m!<%^?t;z(B4$B>.J8;z(B,SMALL ROMAN NUMERAL FOUR") (12 25 "$B%m!<%^?t;z(B5$B>.J8;z(B,SMALL ROMAN NUMERAL FIVE") (12 26 "$B%m!<%^?t;z(B6$B>.J8;z(B,SMALL ROMAN NUMERAL SIX") (12 27 "$B%m!<%^?t;z(B7$B>.J8;z(B,SMALL ROMAN NUMERAL SEVEN") (12 28 "$B%m!<%^?t;z(B8$B>.J8;z(B,SMALL ROMAN NUMERAL EIGHT") (12 29 "$B%m!<%^?t;z(B9$B>.J8;z(B,SMALL ROMAN NUMERAL NINE") (12 30 "$B%m!<%^?t;z(B10$B>.J8;z(B,SMALL ROMAN NUMERAL TEN") (12 31 "$B%m!<%^?t;z(B11$B>.J8;z(B,SMALL ROMAN NUMERAL ELEVEN") (12 32 "$B%m!<%^?t;z(B12$B>.J8;z(B,SMALL ROMAN NUMERAL TWELVE") (12 33 "$B4](BA$B>.J8;z(B,CIRCLED LATIN SMALL LETTER A") (12 34 "$B4](BB$B>.J8;z(B,CIRCLED LATIN SMALL LETTER B") (12 35 "$B4](BC$B>.J8;z(B,CIRCLED LATIN SMALL LETTER C") (12 36 "$B4](BD$B>.J8;z(B,CIRCLED LATIN SMALL LETTER D") (12 37 "$B4](BE$B>.J8;z(B,CIRCLED LATIN SMALL LETTER E") (12 38 "$B4](BF$B>.J8;z(B,CIRCLED LATIN SMALL LETTER F") (12 39 "$B4](BG$B>.J8;z(B,CIRCLED LATIN SMALL LETTER G") (12 40 "$B4](BH$B>.J8;z(B,CIRCLED LATIN SMALL LETTER H") (12 41 "$B4](BI$B>.J8;z(B,CIRCLED LATIN SMALL LETTER I") (12 42 "$B4](BJ$B>.J8;z(B,CIRCLED LATIN SMALL LETTER J") (12 43 "$B4](BK$B>.J8;z(B,CIRCLED LATIN SMALL LETTER K") (12 44 "$B4](BL$B>.J8;z(B,CIRCLED LATIN SMALL LETTER L") (12 45 "$B4](BM$B>.J8;z(B,CIRCLED LATIN SMALL LETTER M") (12 46 "$B4](BN$B>.J8;z(B,CIRCLED LATIN SMALL LETTER N") (12 47 "$B4](BO$B>.J8;z(B,CIRCLED LATIN SMALL LETTER O") (12 48 "$B4](BP$B>.J8;z(B,CIRCLED LATIN SMALL LETTER P") (12 49 "$B4](BQ$B>.J8;z(B,CIRCLED LATIN SMALL LETTER Q") (12 50 "$B4](BR$B>.J8;z(B,CIRCLED LATIN SMALL LETTER R") (12 51 "$B4](BS$B>.J8;z(B,CIRCLED LATIN SMALL LETTER S") (12 52 "$B4](BT$B>.J8;z(B,CIRCLED LATIN SMALL LETTER T") (12 53 "$B4](BU$B>.J8;z(B,CIRCLED LATIN SMALL LETTER U") (12 54 "$B4](BV$B>.J8;z(B,CIRCLED LATIN SMALL LETTER V") (12 55 "$B4](BW$B>.J8;z(B,CIRCLED LATIN SMALL LETTER W") (12 56 "$B4](BX$B>.J8;z(B,CIRCLED LATIN SMALL LETTER X") (12 57 "$B4](BY$B>.J8;z(B,CIRCLED LATIN SMALL LETTER Y") (12 58 "$B4](BZ$B>.J8;z(B,CIRCLED LATIN SMALL LETTER Z") (12 59 "$B4]%"(B,CIRCLED KATAKANA A") (12 60 "$B4]%$(B,CIRCLED KATAKANA I") (12 61 "$B4]%&(B,CIRCLED KATAKANA U") (12 62 "$B4]%((B,CIRCLED KATAKANA E") (12 63 "$B4]%*(B,CIRCLED KATAKANA O") (12 64 "$B4]%+(B,CIRCLED KATAKANA KA") (12 65 "$B4]%-(B,CIRCLED KATAKANA KI") (12 66 "$B4]%/(B,CIRCLED KATAKANA KU") (12 67 "$B4]%1(B,CIRCLED KATAKANA KE") (12 68 "$B4]%3(B,CIRCLED KATAKANA KO") (12 69 "$B4]%5(B,CIRCLED KATAKANA SA") (12 70 "$B4]%7(B,CIRCLED KATAKANA SI") (12 71 "$B4]%9(B,CIRCLED KATAKANA SU") (12 72 "$B4]%;(B,CIRCLED KATAKANA SE") (12 73 "$B4]%=(B,CIRCLED KATAKANA SO") (12 74 "$B4]%?(B,CIRCLED KATAKANA TA") (12 75 "$B4]%A(B,CIRCLED KATAKANA TI") (12 76 "$B4]%D(B,CIRCLED KATAKANA TU") (12 77 "$B4]%F(B,CIRCLED KATAKANA TE") (12 78 "$B4]%H(B,CIRCLED KATAKANA TO") (12 79 "$B4]%m(B,CIRCLED KATAKANA RO") (12 80 "$B4]%O(B,CIRCLED KATAKANA HA") (12 81 "$B4]%K(B,CIRCLED KATAKANA NI") (12 82 "$B4]%[(B,CIRCLED KATAKANA HO") (12 83 "$B4]%X(B,CIRCLED KATAKANA HE") (12 93 "$B%@%V%k%"%9%F(B,TWO ASTERISKS ALIGNED VERTICALLY") (12 94 "$B%"%9%F%j%:%`(B,ASTERISM") (13 1 "$B4](B1,CIRCLED DIGIT ONE") (13 2 "$B4](B2,CIRCLED DIGIT TWO") (13 3 "$B4](B3,CIRCLED DIGIT THREE") (13 4 "$B4](B4,CIRCLED DIGIT FOUR") (13 5 "$B4](B5,CIRCLED DIGIT FIVE") (13 6 "$B4](B6,CIRCLED DIGIT SIX") (13 7 "$B4](B7,CIRCLED DIGIT SEVEN") (13 8 "$B4](B8,CIRCLED DIGIT EIGHT") (13 9 "$B4](B9,CIRCLED DIGIT NINE") (13 10 "$B4](B10,CIRCLED NUMBER TEN") (13 11 "$B4](B11,CIRCLED NUMBER ELEVEN") (13 12 "$B4](B12,CIRCLED NUMBER TWELVE") (13 13 "$B4](B13,CIRCLED NUMBER THIRTEEN") (13 14 "$B4](B14,CIRCLED NUMBER FOURTEEN") (13 15 "$B4](B15,CIRCLED NUMBER FIFTEEN") (13 16 "$B4](B16,CIRCLED NUMBER SIXTEEN") (13 17 "$B4](B17,CIRCLED NUMBER SEVENTEEN") (13 18 "$B4](B18,CIRCLED NUMBER EIGHTEEN") (13 19 "$B4](B19,CIRCLED NUMBER NINETEEN") (13 20 "$B4](B20,CIRCLED NUMBER TWENTY") (13 21 "$B%m!<%^?t;z(B1,ROMAN NUMERAL ONE") (13 22 "$B%m!<%^?t;z(B2,ROMAN NUMERAL TWO") (13 23 "$B%m!<%^?t;z(B3,ROMAN NUMERAL THREE") (13 24 "$B%m!<%^?t;z(B4,ROMAN NUMERAL FOUR") (13 25 "$B%m!<%^?t;z(B5,ROMAN NUMERAL FIVE") (13 26 "$B%m!<%^?t;z(B6,ROMAN NUMERAL SIX") (13 27 "$B%m!<%^?t;z(B7,ROMAN NUMERAL SEVEN") (13 28 "$B%m!<%^?t;z(B8,ROMAN NUMERAL EIGHT") (13 29 "$B%m!<%^?t;z(B9,ROMAN NUMERAL NINE") (13 30 "$B%m!<%^?t;z(B10,ROMAN NUMERAL TEN") (13 31 "$B%m!<%^?t;z(B11,ROMAN NUMERAL ELEVEN") (13 32 "$BA43Q%_%j(B,SQUARE MIRI") (13 33 "$BA43Q%-%m(B,SQUARE KIRO") (13 34 "$BA43Q%;%s%A(B,SQUARE SENTI") (13 35 "$BA43Q%a!<%H%k(B,SQUARE MEETORU") (13 36 "$BA43Q%0%i%`(B,SQUARE GURAMU") (13 37 "$BA43Q%H%s(B,SQUARE TON") (13 38 "$BA43Q%"!<%k(B,SQUARE AARU") (13 39 "$BA43Q%X%/%?!<%k(B,SQUARE HEKUTAARU") (13 40 "$BA43Q%j%C%H%k(B,SQUARE RITTORU") (13 41 "$BA43Q%o%C%H(B,SQUARE WATTO") (13 42 "$BA43Q%+%m%j!<(B,SQUARE KARORII") (13 43 "$BA43Q%I%k(B,SQUARE DORU") (13 44 "$BA43Q%;%s%H(B,SQUARE SENTO") (13 45 "$BA43Q%Q!<%;%s%H(B,SQUARE PAASENTO") (13 46 "$BA43Q%_%j%P!<%k(B,SQUARE MIRIBAARU") (13 47 "$BA43Q%Z!<%8(B,SQUARE PEEZI") (13 48 "$BA43Q(BMM,SQUARE MM") (13 49 "$BA43Q(BCM,SQUARE CM") (13 50 "$BA43Q(BKM,SQUARE KM") (13 51 "$BA43Q(BMG,SQUARE MG") (13 52 "$BA43Q(BKG,SQUARE KG") (13 53 "$BA43Q(BCC,SQUARE CC") (13 54 "$BA43Q(BM2,SQUARE M SQUARED") (13 55 "$B%m!<%^?t;z(B12,ROMAN NUMERAL TWELVE") (13 63 "$BA43Q859fJ?@.(B,SQUARE ERA NAME HEISEI") (13 64 "$B;O$a%@%V%k%_%K%e!<%H(B,REVERSED DOUBLE PRIME QUOTATION MARK") (13 65 "$B=*$o$j%@%V%k%_%K%e!<%H(B,LOW DOUBLE PRIME QUOTATION MARK") (13 66 "$BA43Q(BNO,NUMERO SIGN") (13 67 "$BA43Q(BKK,SQUARE KK") (13 68 "$BA43Q(BTEL,TELEPHONE SIGN") (13 69 "$B4]IU$->e(B,CIRCLED IDEOGRAPH HIGH") (13 70 "$B4]IU$-Cf(B,CIRCLED IDEOGRAPH CENTRE") (13 71 "$B4]IU$-2<(B,CIRCLED IDEOGRAPH LOW") (13 72 "$B4]IU$-:8(B,CIRCLED IDEOGRAPH LEFT") (13 73 "$B4]IU$-1&(B,CIRCLED IDEOGRAPH RIGHT") (13 74 "$BA43Q3g8LIU$-3t(B,PARENTHESIZED IDEOGRAPH STOCK") (13 75 "$BA43Q3g8LIU$-M-(B,PARENTHESIZED IDEOGRAPH HAVE") (13 76 "$BA43Q3g8LIU$-Be(B,PARENTHESIZED IDEOGRAPH REPRESENT") (13 77 "$BA43Q859fL@<#(B,SQUARE ERA NAME MEIZI") (13 78 "$BA43Q859fBg@5(B,SQUARE ERA NAME TAISYOU") (13 79 "$BA43Q859f>3Q(B,RIGHT ANGLE") (13 89 "$BD>3Q;03Q(B,RIGHT TRIANGLE") (13 93 "$B;M$DI)(B,BLACK DIAMOND MINUS WHITE X") (13 94 "$B;X<(%^!<%/(B,WHITE RIGHT POINTING INDEX") (14 1 "2003$BDI(B") (15 94 "2003$BDI2C(B") (47 52 "2003$BDI2C(B") (47 94 "2003$BDI2C(B") (84 7 "2003$BDI2C(B") (94 90 "2003$BDI2C(B") (94 91 "2003$BDI2C(B") (94 92 "2003$BDI2C(B") (94 93 "2003$BDI2C(B") (94 94 "2003$BDI2C(B") ))) (dolist (x l) (skk-tankan-set-char-annotaion (make-char 'japanese-jisx0213-1 (+ 32 (car x)) (+ 32 (nth 1 x))) (nth 2 x))))) (provide 'skk-tankan) ;;; skk-tankan.el ends here ddskk-15.2/skk-tut.el0000644000570400056700000013052512406562720014540 0ustar kitamotoopenlab;;; skk-tut.el --- SKK tutorial -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, ;; 1998, 1999, 2000, 2001, 2002 ;; Masahiko Sato ;; Copyright (C) 1999-2010 SKK Development Team ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk-tut.el,v 1.94 2014/09/18 14:01:52 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2014/09/18 14:01:52 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk-macs)) (eval-and-compile (require 'skk-vars) (autoload 'skk-nicola-setup-tutorial "skk-nicola") (autoload 'skk-viper-normalize-map "skk-viper")) (eval-when-compile (defvar skk-kanagaki-keyboard-type) (defvar skk-kanagaki-state)) ;; internal variables and constants. ;; prefix should be `skktut-'. (defvar skk-tut-section-face 'skk-tut-section-face) (defvar skk-tut-do-it-face 'skk-tut-do-it-face) (defvar skk-tut-question-face 'skk-tut-question-face) (defvar skk-tut-key-bind-face 'skk-tut-key-bind-face) (defvar skk-tut-hint-face 'skk-tut-hint-face) (defconst skktut-adviced-alist '((skk-abbrev-mode . before) (skk-insert . before) (skk-kakutei . before) (skk-mode . before) (skk-create-file . around) (skk-save-jisyo-original . around) (skk-get-jisyo-buffer . around) ) "SKK $B%A%e!<%H%j%"%k$G(B advice $B$,IU$1$i$l$k4X?t$H(B advice class $B$N%(!<%j%9%H!#(B") (defvar skktut-question-numbers nil "SKK $B%A%e!<%H%j%"%k$NLdBj?t!#(B") (defconst skktut-tut-jisyo "~/skk-tut-jisyo" "SKK $B%A%e!<%H%j%"%kMQ$N<-=q!#(B") (defconst skktut-init-variables-alist '((skk-cursor-abbrev-color . "royalblue") (skk-abbrev-mode-string . " a$B$"(B") (skk-allow-spaces-newlines-and-tabs . t) (skk-auto-fill-mode-hook . nil) (skk-auto-insert-paren . nil) (skk-auto-okuri-process . nil) (skk-auto-start-henkan . nil) (skk-byte-compile-init-file . nil) (skk-comp-load-hook . nil) (skk-compare-jisyo-size-when-saving . nil) (skk-count-jisyo-candidates-function . 'skk-count-jisyo-candidates-original) (skk-count-private-jisyo-candidates-exactly . nil) (skk-date-ad . 1) (skk-cursor-default-color . (cond ((featurep 'xemacs) (frame-property (selected-frame) 'cursor-color)) (t (cdr (assq 'cursor-color (frame-parameters (selected-frame))))))) (skk-delete-implies-kakutei . t) (skk-delete-okuri-when-quit . nil) (skk-downcase-alist . nil) (skk-echo . t) (skk-egg-like-newline . nil) (skk-gadget-load-hook . nil) (skk-henkan-face . 'highlight) (skk-henkan-okuri-strictly . nil) (skk-henkan-overlay-priority . 600) (skk-henkan-show-candidates-keys . '(?a ?s ?d ?f ?j ?k ?l)) (skk-henkan-show-candidates-rows . 1) (skk-show-candidates-always-pop-to-buffer . nil) (skk-henkan-strict-okuri-precedence . nil) (skk-previous-candidate-keys . (if (skk-tut-nicola-p) '("\C-p") '("\C-p" "x"))) (skk-hiragana-mode-string . " $B$+$J(B") (skk-init-file . "") (skk-input-by-code-menu-keys1 . '(?a ?s ?d ?f ?g ?h ?q ?w ?e ?r ?t ?y)) (skk-input-by-code-menu-keys2 . '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?t ?y ?u)) (skk-japanese-message-and-error . nil) (skk-cursor-jisx0208-latin-color . "gold") (skk-jisx0208-latin-mode-string . " $BA41Q(B") (skk-jisx0208-latin-vector . skk-default-jisx0208-latin-vector) (skk-jisyo . "~/skk-tut-jisyo") (skk-jisyo-save-count . nil) (skk-update-jisyo-count . 0) (skk-kakutei-early . t) (skk-kakutei-key . "\C-j") (skk-kana-input-search-function . (lambda () (save-match-data (when (and (string-match "^h\\([bcdfghjklmnpqrstvwxz]\\)$" skk-prefix) (member (char-to-string (preceding-char)) '("$B$*(B" "$B%*(B"))) (cons '("$B%*(B" . "$B$*(B") (match-string 1 skk-prefix)))))) (skk-katakana-mode-string . " $B%+%J(B") (skk-kcode-load-hook . nil) (skk-keep-record . nil) (skk-kuten-touten-alist . '((jp . ("$B!#(B" . "$B!"(B")))) (skk-kutouten-type . 'jp) (skk-cursor-latin-color . "ivory4") (skk-latin-mode-string . " SKK") (skk-load-hook . nil) (skk-mode-hook . nil) (skk-next-completion-char . ?.) (skk-number-style . 1) (skk-okuri-char-alist . nil) (skk-previous-completion-char . ?,) (skk-process-okuri-early . nil) (skk-public-jisyo-has-entry-p-function . 'skk-public-jisyo-has-entry-p-original) (skk-rom-kana-base-rule-list . '(("a" nil ("$B%"(B" . "$B$"(B")) ("bb" "b" ("$B%C(B" . "$B$C(B")) ("ba" nil ("$B%P(B" . "$B$P(B")) ("be" nil ("$B%Y(B" . "$B$Y(B")) ("bi" nil ("$B%S(B" . "$B$S(B")) ("bo" nil ("$B%\(B" . "$B$\(B")) ("bu" nil ("$B%V(B" . "$B$V(B")) ("bya" nil ("$B%S%c(B" . "$B$S$c(B")) ("bye" nil ("$B%S%'(B" . "$B$S$'(B")) ("byi" nil ("$B%S%#(B" . "$B$S$#(B")) ("byo" nil ("$B%S%g(B" . "$B$S$g(B")) ("byu" nil ("$B%S%e(B" . "$B$S$e(B")) ("cc" "c" ("$B%C(B" . "$B$C(B")) ("cha" nil ("$B%A%c(B" . "$B$A$c(B")) ("che" nil ("$B%A%'(B" . "$B$A$'(B")) ("chi" nil ("$B%A(B" . "$B$A(B")) ("cho" nil ("$B%A%g(B" . "$B$A$g(B")) ("chu" nil ("$B%A%e(B" . "$B$A$e(B")) ("cya" nil ("$B%A%c(B" . "$B$A$c(B")) ("cye" nil ("$B%A%'(B" . "$B$A$'(B")) ("cyi" nil ("$B%A%#(B" . "$B$A$#(B")) ("cyo" nil ("$B%A%g(B" . "$B$A$g(B")) ("cyu" nil ("$B%A%e(B" . "$B$A$e(B")) ("dd" "d" ("$B%C(B" . "$B$C(B")) ("da" nil ("$B%@(B" . "$B$@(B")) ("de" nil ("$B%G(B" . "$B$G(B")) ("dha" nil ("$B%G%c(B" . "$B$G$c(B")) ("dhe" nil ("$B%G%'(B" . "$B$G$'(B")) ("dhi" nil ("$B%G%#(B" . "$B$G$#(B")) ("dho" nil ("$B%G%g(B" . "$B$G$g(B")) ("dhu" nil ("$B%G%e(B" . "$B$G$e(B")) ("di" nil ("$B%B(B" . "$B$B(B")) ("do" nil ("$B%I(B" . "$B$I(B")) ("du" nil ("$B%E(B" . "$B$E(B")) ("dya" nil ("$B%B%c(B" . "$B$B$c(B")) ("dye" nil ("$B%B%'(B" . "$B$B$'(B")) ("dyi" nil ("$B%B%#(B" . "$B$B$#(B")) ("dyo" nil ("$B%B%g(B" . "$B$B$g(B")) ("dyu" nil ("$B%B%e(B" . "$B$B$e(B")) ("e" nil ("$B%((B" . "$B$((B")) ("ff" "f" ("$B%C(B" . "$B$C(B")) ("fa" nil ("$B%U%!(B" . "$B$U$!(B")) ("fe" nil ("$B%U%'(B" . "$B$U$'(B")) ("fi" nil ("$B%U%#(B" . "$B$U$#(B")) ("fo" nil ("$B%U%)(B" . "$B$U$)(B")) ("fu" nil ("$B%U(B" . "$B$U(B")) ("fya" nil ("$B%U%c(B" . "$B$U$c(B")) ("fye" nil ("$B%U%'(B" . "$B$U$'(B")) ("fyi" nil ("$B%U%#(B" . "$B$U$#(B")) ("fyo" nil ("$B%U%g(B" . "$B$U$g(B")) ("fyu" nil ("$B%U%e(B" . "$B$U$e(B")) ("gg" "g" ("$B%C(B" . "$B$C(B")) ("ga" nil ("$B%,(B" . "$B$,(B")) ("ge" nil ("$B%2(B" . "$B$2(B")) ("gi" nil ("$B%.(B" . "$B$.(B")) ("go" nil ("$B%4(B" . "$B$4(B")) ("gu" nil ("$B%0(B" . "$B$0(B")) ("gya" nil ("$B%.%c(B" . "$B$.$c(B")) ("gye" nil ("$B%.%'(B" . "$B$.$'(B")) ("gyi" nil ("$B%.%#(B" . "$B$.$#(B")) ("gyo" nil ("$B%.%g(B" . "$B$.$g(B")) ("gyu" nil ("$B%.%e(B" . "$B$.$e(B")) ;;("h" "" ("$B%*(B" . "$B$*(B")) ("ha" nil ("$B%O(B" . "$B$O(B")) ("he" nil ("$B%X(B" . "$B$X(B")) ("hi" nil ("$B%R(B" . "$B$R(B")) ("ho" nil ("$B%[(B" . "$B$[(B")) ("hu" nil ("$B%U(B" . "$B$U(B")) ("hya" nil ("$B%R%c(B" . "$B$R$c(B")) ("hye" nil ("$B%R%'(B" . "$B$R$'(B")) ("hyi" nil ("$B%R%#(B" . "$B$R$#(B")) ("hyo" nil ("$B%R%g(B" . "$B$R$g(B")) ("hyu" nil ("$B%R%e(B" . "$B$R$e(B")) ("i" nil ("$B%$(B" . "$B$$(B")) ("jj" "j" ("$B%C(B" . "$B$C(B")) ("ja" nil ("$B%8%c(B" . "$B$8$c(B")) ("je" nil ("$B%8%'(B" . "$B$8$'(B")) ("ji" nil ("$B%8(B" . "$B$8(B")) ("jo" nil ("$B%8%g(B" . "$B$8$g(B")) ("ju" nil ("$B%8%e(B" . "$B$8$e(B")) ("jya" nil ("$B%8%c(B" . "$B$8$c(B")) ("jye" nil ("$B%8%'(B" . "$B$8$'(B")) ("jyi" nil ("$B%8%#(B" . "$B$8$#(B")) ("jyo" nil ("$B%8%g(B" . "$B$8$g(B")) ("jyu" nil ("$B%8%e(B" . "$B$8$e(B")) ("kk" "k" ("$B%C(B" . "$B$C(B")) ("ka" nil ("$B%+(B" . "$B$+(B")) ("ke" nil ("$B%1(B" . "$B$1(B")) ("ki" nil ("$B%-(B" . "$B$-(B")) ("ko" nil ("$B%3(B" . "$B$3(B")) ("ku" nil ("$B%/(B" . "$B$/(B")) ("kya" nil ("$B%-%c(B" . "$B$-$c(B")) ("kye" nil ("$B%-%'(B" . "$B$-$'(B")) ("kyi" nil ("$B%-%#(B" . "$B$-$#(B")) ("kyo" nil ("$B%-%g(B" . "$B$-$g(B")) ("kyu" nil ("$B%-%e(B" . "$B$-$e(B")) ("mm" "c" ("$B%C(B" . "$B$C(B")) ("ma" nil ("$B%^(B" . "$B$^(B")) ("me" nil ("$B%a(B" . "$B$a(B")) ("mi" nil ("$B%_(B" . "$B$_(B")) ("mo" nil ("$B%b(B" . "$B$b(B")) ("mu" nil ("$B%`(B" . "$B$`(B")) ("mya" nil ("$B%_%c(B" . "$B$_$c(B")) ("mye" nil ("$B%_%'(B" . "$B$_$'(B")) ("myi" nil ("$B%_%#(B" . "$B$_$#(B")) ("myo" nil ("$B%_%g(B" . "$B$_$g(B")) ("myu" nil ("$B%_%e(B" . "$B$_$e(B")) ("n" nil ("$B%s(B" . "$B$s(B")) ("n'" nil ("$B%s(B" . "$B$s(B")) ("na" nil ("$B%J(B" . "$B$J(B")) ("ne" nil ("$B%M(B" . "$B$M(B")) ("ni" nil ("$B%K(B" . "$B$K(B")) ("nn" nil ("$B%s(B" . "$B$s(B")) ("no" nil ("$B%N(B" . "$B$N(B")) ("nu" nil ("$B%L(B" . "$B$L(B")) ("nya" nil ("$B%K%c(B" . "$B$K$c(B")) ("nye" nil ("$B%K%'(B" . "$B$K$'(B")) ("nyi" nil ("$B%K%#(B" . "$B$K$#(B")) ("nyo" nil ("$B%K%g(B" . "$B$K$g(B")) ("nyu" nil ("$B%K%e(B" . "$B$K$e(B")) ("o" nil ("$B%*(B" . "$B$*(B")) ("pp" "p" ("$B%C(B" . "$B$C(B")) ("pa" nil ("$B%Q(B" . "$B$Q(B")) ("pe" nil ("$B%Z(B" . "$B$Z(B")) ("pi" nil ("$B%T(B" . "$B$T(B")) ("po" nil ("$B%](B" . "$B$](B")) ("pu" nil ("$B%W(B" . "$B$W(B")) ("pya" nil ("$B%T%c(B" . "$B$T$c(B")) ("pye" nil ("$B%T%'(B" . "$B$T$'(B")) ("pyi" nil ("$B%T%#(B" . "$B$T$#(B")) ("pyo" nil ("$B%T%g(B" . "$B$T$g(B")) ("pyu" nil ("$B%T%e(B" . "$B$T$e(B")) ("rr" "r" ("$B%C(B" . "$B$C(B")) ("ra" nil ("$B%i(B" . "$B$i(B")) ("re" nil ("$B%l(B" . "$B$l(B")) ("ri" nil ("$B%j(B" . "$B$j(B")) ("ro" nil ("$B%m(B" . "$B$m(B")) ("ru" nil ("$B%k(B" . "$B$k(B")) ("rya" nil ("$B%j%c(B" . "$B$j$c(B")) ("rye" nil ("$B%j%'(B" . "$B$j$'(B")) ("ryi" nil ("$B%j%#(B" . "$B$j$#(B")) ("ryo" nil ("$B%j%g(B" . "$B$j$g(B")) ("ryu" nil ("$B%j%e(B" . "$B$j$e(B")) ("ss" "s" ("$B%C(B" . "$B$C(B")) ("sa" nil ("$B%5(B" . "$B$5(B")) ("se" nil ("$B%;(B" . "$B$;(B")) ("sha" nil ("$B%7%c(B" . "$B$7$c(B")) ("she" nil ("$B%7%'(B" . "$B$7$'(B")) ("shi" nil ("$B%7(B" . "$B$7(B")) ("sho" nil ("$B%7%g(B" . "$B$7$g(B")) ("shu" nil ("$B%7%e(B" . "$B$7$e(B")) ("si" nil ("$B%7(B" . "$B$7(B")) ("so" nil ("$B%=(B" . "$B$=(B")) ("su" nil ("$B%9(B" . "$B$9(B")) ("sya" nil ("$B%7%c(B" . "$B$7$c(B")) ("sye" nil ("$B%7%'(B" . "$B$7$'(B")) ("syi" nil ("$B%7%#(B" . "$B$7$#(B")) ("syo" nil ("$B%7%g(B" . "$B$7$g(B")) ("syu" nil ("$B%7%e(B" . "$B$7$e(B")) ("tt" "t" ("$B%C(B" . "$B$C(B")) ("ta" nil ("$B%?(B" . "$B$?(B")) ("te" nil ("$B%F(B" . "$B$F(B")) ("tha" nil ("$B%F%!(B" . "$B$F$!(B")) ("the" nil ("$B%F%'(B" . "$B$F$'(B")) ("thi" nil ("$B%F%#(B" . "$B$F$#(B")) ("tho" nil ("$B%F%g(B" . "$B$F$g(B")) ("thu" nil ("$B%F%e(B" . "$B$F$e(B")) ("ti" nil ("$B%A(B" . "$B$A(B")) ("to" nil ("$B%H(B" . "$B$H(B")) ("tsu" nil ("$B%D(B" . "$B$D(B")) ("tu" nil ("$B%D(B" . "$B$D(B")) ("tya" nil ("$B%A%c(B" . "$B$A$c(B")) ("tye" nil ("$B%A%'(B" . "$B$A$'(B")) ("tyi" nil ("$B%A%#(B" . "$B$A$#(B")) ("tyo" nil ("$B%A%g(B" . "$B$A$g(B")) ("tyu" nil ("$B%A%e(B" . "$B$A$e(B")) ("u" nil ("$B%&(B" . "$B$&(B")) ("vv" "v" ("$B%C(B" . "$B$C(B")) ("va" nil ("$B%t%!(B" . "$B$&!+$!(B")) ("ve" nil ("$B%t%'(B" . "$B$&!+$'(B")) ("vi" nil ("$B%t%#(B" . "$B$&!+$#(B")) ("vo" nil ("$B%t%)(B" . "$B$&!+$)(B")) ("vu" nil ("$B%t(B" . "$B$&!+(B")) ("ww" "w" ("$B%C(B" . "$B$C(B")) ("wa" nil ("$B%o(B" . "$B$o(B")) ("we" nil ("$B%&%'(B" . "$B$&$'(B")) ("wi" nil ("$B%&%#(B" . "$B$&$#(B")) ("wo" nil ("$B%r(B" . "$B$r(B")) ("wu" nil ("$B%&(B" . "$B$&(B")) ("xx" "x" ("$B%C(B" . "$B$C(B")) ("xa" nil ("$B%!(B" . "$B$!(B")) ("xe" nil ("$B%'(B" . "$B$'(B")) ("xi" nil ("$B%#(B" . "$B$#(B")) ("xka" nil ("$B%u(B" . "$B$+(B")) ("xke" nil ("$B%v(B" . "$B$1(B")) ("xo" nil ("$B%)(B" . "$B$)(B")) ("xtsu" nil ("$B%C(B" . "$B$C(B")) ("xtu" nil ("$B%C(B" . "$B$C(B")) ("xu" nil ("$B%%(B" . "$B$%(B")) ("xwa" nil ("$B%n(B" . "$B$n(B")) ("xwe" nil ("$B%q(B" . "$B$q(B")) ("xwi" nil ("$B%p(B" . "$B$p(B")) ("xya" nil ("$B%c(B" . "$B$c(B")) ("xyo" nil ("$B%g(B" . "$B$g(B")) ("xyu" nil ("$B%e(B" . "$B$e(B")) ("yy" "y" ("$B%C(B" . "$B$C(B")) ("ya" nil ("$B%d(B" . "$B$d(B")) ("ye" nil ("$B%$%'(B" . "$B$$$'(B")) ("yo" nil ("$B%h(B" . "$B$h(B")) ("yu" nil ("$B%f(B" . "$B$f(B")) ("zz" "z" ("$B%C(B" . "$B$C(B")) ("z," nil "$B!E(B") ("z-" nil "$B!A(B") ("z." nil "$B!D(B") ("z/" nil "$B!&(B") ("z[" nil "$B!X(B") ("z]" nil "$B!Y(B") ("za" nil ("$B%6(B" . "$B$6(B")) ("ze" nil ("$B%<(B" . "$B$<(B")) ("zh" nil "$B"+(B") ("zi" nil ("$B%8(B" . "$B$8(B")) ("zj" nil "$B"-(B") ("zk" nil "$B",(B") ("zl" nil "$B"*(B") ("zo" nil ("$B%>(B" . "$B$>(B")) ("zu" nil ("$B%:(B" . "$B$:(B")) ("zya" nil ("$B%8%c(B" . "$B$8$c(B")) ("zye" nil ("$B%8%'(B" . "$B$8$'(B")) ("zyi" nil ("$B%8%#(B" . "$B$8$#(B")) ("zyo" nil ("$B%8%g(B" . "$B$8$g(B")) ("zyu" nil ("$B%8%e(B" . "$B$8$e(B")) ("." nil skk-current-kuten) ("," nil skk-current-touten) ("-" nil "$B!<(B") (":" nil "$B!'(B") (";" nil "$B!((B") ("?" nil "$B!)(B") ("[" nil "$B!V(B") ("]" nil "$B!W(B") ("l" nil skk-latin-mode) ("q" nil skk-toggle-kana) ("L" nil skk-jisx0208-latin-mode) ("Q" nil skk-set-henkan-point-subr) ("X" nil skk-purge-from-jisyo) ("/" nil skk-abbrev-mode) ("$" nil skk-display-code-for-char-at-point) ("\C-j" nil skk-kakutei) ("@" nil skk-today) ("\\" nil skk-input-by-code-or-menu))) (skk-rom-kana-rule-list . '(("hh" "h" ("$B%C(B" . "$B$C(B")))) (skk-save-jisyo-function . 'skk-save-jisyo-original) (skk-search-excluding-word-pattern-function . nil) (skk-search-prog-list . '((skk-search-jisyo-buf (get-buffer skktut-jisyo-buffer) 0))) (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)) (skk-share-private-jisyo . nil) (skk-special-midashi-char-list . '(?> ?< ??)) (skk-start-henkan-key . " ") (skk-try-completion-char . ?\011) (skk-update-jisyo-function . 'skktut-update-jisyo) (skk-use-color-cursor . (and window-system (fboundp 'x-display-color-p) (x-display-color-p))) (skk-use-face . window-system) (skk-use-look . nil) (skk-use-numeric-conversion . t) (skk-use-rdbms . nil) (skk-use-relation . nil) (skk-use-viper . nil) (skk-show-tooltip . nil) (skk-show-inline . nil) (skk-show-annotation . nil) (skk-kcode-charset . (if (featurep 'jisx0213) (quote japanese-jisx0208) skk-kcode-charset)) (skk-kcode-method . (if (featurep 'emacs) 'code-or-char-list 'code-or-menu)) (skk-dcomp-activate . nil) (skk-dcomp-multiple-activate . nil) (skk-read-from-minibuffer-function . nil) (skk-verbose . nil) (debug-on-error . nil) (skk-show-mode-show . nil) (skk-show-mode-enable . nil) ;; not user variables but to be localized. (skk-insert-new-word-function . nil) (skk-mode-invoked . t) (skk-rule-tree . (if (and skk-use-kana-keyboard (memq skk-kanagaki-keyboard-type '(oasys nicola-jis nicola-us nicola-dvorak omelet-jis omelet-us omelet-dvorak)) (eq skk-kanagaki-state 'kana) skktut-nicola-tut-file) skk-kanagaki-rule-tree (skk-compile-rule-list skk-rom-kana-base-rule-list skk-rom-kana-rule-list)))) "skk.el $B$N%f!<%6!!#(B $B%G%#%l%/%H%jL>$O4^$^$J$$!#(B") (defvar skktut-japanese-tut nil "Non-nil $B$G$"$l$P!"%A%e!<%H%j%"%k$,F|K\8l$G$"$k$3$H$r<($9!#(B") (defvar skktut-right-answer nil "$B@52r$NJ8;zNs!#(B") (defvar skktut-question-count 1 "$B%A%e!<%H%j%"%k$N8=:_$NLdBjHV9f!#(B") (defvar skktut-tutorial-end nil "$B%A%e!<%H%j%"%k$N=*N;$r<($9%U%i%0!#(B") (defvar skktut-working-buffer " *skk-tutorial*") (defvar skktut-question-buffer "*$BLd(B*") (defvar skktut-answer-buffer "*$BEz(B*") (defvar skktut-jisyo-buffer " *skk-tut-jisyo*") (defvar skktut-original-window-configuration nil) (defvar skktut-working-window-configuration nil) (defvar skktut-original-local-map nil) (defvar skktut-skk-mode-on nil "Non-nil $B$J$i!"(Btutorial $B$r5/F0;~$K(B SKK $B$,4{$K5/F0$5$l$F$$$?$3$H$r<($9!#(B") (defvar skktut-latin-mode-map nil "SKK $B%A%e!<%H%j%"%k(B ASCII $B%b!<%I%-!<%^%C%W!#(B") (unless skktut-latin-mode-map (let ((map (make-sparse-keymap))) (define-key map "\C-j" 'skk-kakutei) (setq skktut-latin-mode-map map))) (defvar skktut-j-mode-map nil "SKK $B%A%e!<%H%j%"%k$+$J(B/$B%+%J%b!<%I%-!<%^%C%W!#(B") (unless skktut-j-mode-map (let ((map (make-sparse-keymap)) (c 32)) (while (< c 127) (define-key map (skk-char-to-unibyte-string c) 'skk-insert) (setq c (1+ c))) (setq skktut-j-mode-map map))) (defvar skktut-jisx0208-latin-mode-map nil "SKK $B%A%e!<%H%j%"%kA43Q1Q?t;z%b!<%I%-!<%^%C%W!#(B") (unless skktut-jisx0208-latin-mode-map (let ((map (make-sparse-keymap)) (i 0)) (while (< i 128) (if (aref skk-jisx0208-latin-vector i) (define-key map (skk-char-to-unibyte-string i) 'skk-jisx0208-latin-insert)) (setq i (1+ i))) (define-key map "\C-j" 'skk-kakutei) (setq skktut-jisx0208-latin-mode-map map))) (defvar skktut-abbrev-mode-map nil "SKK $B%A%e!<%H%j%"%k(B Abbrev $B%b!<%I%-!<%^%C%W!#(B") (unless skktut-abbrev-mode-map (let ((map (make-sparse-keymap))) (define-key map "," 'skk-abbrev-comma) (define-key map "." 'skk-abbrev-period) (define-key map "\C-q" 'skk-toggle-characters) (define-key map "\C-j" 'skk-kakutei) (define-key map " " 'skk-start-henkan) (define-key map "\t" 'skk-try-completion) (setq skktut-abbrev-mode-map map))) ;; -- macros (defmacro skktut-message (japanese english &rest arg) ;; skktut-japanese-tut $B$,(B non-nil $B$@$C$?$i(B JAPANESE $B$r(B nil $B$G$"$l$P(B ENGLISH ;; $B$r%(%3!<%(%j%"$KI=<($9$k!#(B ;; ARG $B$O(B message $B4X?t$NBh#20z?t0J9_$N0z?t$H$7$FEO$5$l$k!#(B (append `(message (if skktut-japanese-tut ,japanese ,english)) arg)) (defmacro skktut-error (japanese english &rest arg) ;; skktut-japanese-tut $B$,(B non-nil $B$@$C$?$i(B JAPANESE $B$r(B nil $B$G$"$l$P(B ENGLISH ;; $B$r%(%3!<%(%j%"$KI=<($7!"%(%i!<$rH/@8$5$;$k!#(B ;; ARG $B$O(B error $B4X?t$NBh#20z?t0J9_$N0z?t$H$7$FEO$5$l$k!#(B (append `(error (if skktut-japanese-tut ,japanese ,english)) arg)) (defmacro skktut-yes-or-no-p (japanese english) `(yes-or-no-p (if skktut-japanese-tut ,japanese ,english))) ;; advices. (defadvice skk-create-file (around skktut-ad disable)) (defadvice skk-save-jisyo-original (around skktut-ad disable)) (defadvice skk-abbrev-mode (before skktut-ad disable) "SKK $B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#(B" (when (> 12 skktut-question-count) (skktut-error "$B$3$N%-!<$O$^$@;H$($^$;$s(B" "Cannot use this key yet"))) (defadvice skk-insert (before skktut-ad disable) "SKK $B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#(B" (when (and (memq (skk-last-command-char) skk-set-henkan-point-key) (> 12 skktut-question-count)) (skktut-error "$B$+$J(B/$B%+%J%b!<%I$G$O!"1QBgJ8;z$O$^$@;H$($^$;$s(B" "Cannot use upper case character in kana/katakana mode"))) (defadvice skk-kakutei (before skktut-ad disable) "SKK $B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#(B" (when (and (skk-called-interactively-p 'interactive) (= skktut-question-count 1)) (skktut-error "$B$3$N%-!<$O$^$@;H$($^$;$s(B" "Cannot use this key yet"))) (defadvice skk-mode (before skktut-ad disable) "SKK $B%A%e!<%H%j%"%kMQ%"%I%P%$%9IU!#(B" (when (and (skk-called-interactively-p 'interactive) (= skktut-question-count 1)) (skktut-error "$B$3$N%-!<$O$^$@;H$($^$;$s(B" "Cannot use this key yet"))) (defadvice skk-get-jisyo-buffer (around skktut-ad disable) (cond ((string= skk-jisyo skktut-tut-jisyo) (setq ad-return-value (get-buffer skktut-jisyo-buffer))) (t ad-do-it))) ;; hooks (add-hook 'kill-buffer-hook (lambda () (when (and (skk-called-interactively-p 'interactive) (member (buffer-name (current-buffer)) (list skktut-working-buffer skktut-question-buffer skktut-answer-buffer skktut-jisyo-buffer))) (skk-tutorial-quit 'now)))) (add-hook 'kill-emacs-hook (lambda () (when (buffer-live-p (get-buffer skktut-jisyo-buffer)) (skk-tutorial-quit 'now)))) ;; interactive commands. prefix should be `skk-tutorial'. ;;;###autoload (defun skk-tutorial (&optional query-language) "Start SKK tutorial. You can select English version by \\[universal-argument] \\[skk-tutorial]." (interactive "P") ;; (unless skk-mode-invoked ;; SKK $B$r5/F0$;$:$K$$$-$J$j(B ;; skk-tutorial $B$r$9!#(B \\[universal-argument] \\[skk-tutorial-again] $B$9$k$HD>$A$K$d$jD>$9!#(B" (interactive "P") (when (or now (skktut-yes-or-no-p "$B:G=i$+$i(B Tutorial $B$r$d$jD>$7$^$9!#$h$m$7$$$G$9$M!)(B " "Quit tutorial and start from question 1 again? ")) (skk-tutorial-quit 'now) (skk-tutorial))) (defun skk-tutorial-quit (&optional now) "$B%f!<%6$NF10U$,$"$k>l9g(B SKK $B%A%e!<%H%j%"%k$r$d$a$k!#(B \\[universal-argument] \\[skk-tutorial-quit] $B$9$k$HD>$A$K$d$a$k!#(B" (interactive "P") (when (or now (skktut-yes-or-no-p "$BK\Ev$K%A%e!<%H%j%"%k$r$d$a$^$9$+!)(B " "Really quit tutorial? ")) (let ((inhibit-quit t)) (delete-other-windows) ;; $B:FEY%A%e!<%H%j%"%k$r;H$($k$h$&$K!"FbItJQ?t$r=i4|2=$7$F$*$/!#(B (setq skktut-japanese-tut nil skktut-question-count 1 skktut-right-answer nil skktut-tutorial-end nil) (remove-hook 'minibuffer-setup-hook 'skktut-localize-and-init-variables) (skktut-disable-tutmap) (skktut-disable-advice) (with-current-buffer skktut-jisyo-buffer (set-buffer-modified-p nil) (kill-buffer skktut-jisyo-buffer)) (kill-buffer skktut-working-buffer) (kill-buffer skktut-answer-buffer) (kill-buffer skktut-question-buffer) (set-window-configuration skktut-original-window-configuration) ;; $B%A%e!<%H%j%"%k5/F0D>A0$K3+$$$F$$$?%P%C%U%!$G!"(Bskk-mode $B$r5/F0$7$F(B ;; $B$$$?$i!"$=$N>uBV$K$7$F!"%A%e!<%H%j%"%k$r=*N;$9$k!#(B (unless skktut-skk-mode-on (skk-mode -1))))) ;; the following commands are also interactive, but users may not call ;; them by name. So prefix should be `skktut-'. (defun skktut-next-question () (interactive) (set-window-configuration skktut-working-window-configuration) ;; called in skktut-answer-buffer. (save-match-data (let (user-ans) (save-excursion (goto-char (point-min)) (end-of-line) (skip-chars-backward " \t") (setq user-ans (buffer-substring-no-properties (point-min) (point)))) (when (string-match "^>* *" user-ans) (setq user-ans (substring user-ans (match-end 0)))) (if (not (string= skktut-right-answer user-ans)) (progn (skktut-message "$BEz$,0c$$$^$9!#$b$&0lEY$d$C$F$_$F2<$5$$(B" "Wrong. Try again") (ding)) (setq skktut-question-count (1+ skktut-question-count)) ;; buffer independent. (skktut-get-question-page skktut-question-count) (if (>= skktut-question-count (1+ skktut-question-numbers)) (skk-tutorial-quit 'now) (skktut-next-answer-buffer)))))) (defun skktut-skip-question (arg) (interactive "p") (set-window-configuration skktut-working-window-configuration) ;; called in skktut-answer-buffer. (skktut-erase-buffer) (setq skktut-question-count (+ skktut-question-count arg)) (cond ((> 1 skktut-question-count) (setq skktut-question-count 1)) ;; overrun ((> skktut-question-count skktut-question-numbers) (setq skktut-question-count skktut-question-numbers)) ((and (>= skktut-question-count 3) (not skk-j-mode)) (skk-mode 1))) ;; buffer independent. (skktut-get-question-page skktut-question-count) (if skktut-tutorial-end (skk-tutorial-quit 'now) (skktut-next-answer-buffer))) ;; internal functions. prefix should be `skktut-'. (defun skktut-make-windows () ;; Make window fill its frame. (delete-other-windows) (split-window-vertically) (let ((height (window-height (selected-window)))) (unless (< 22 height) ;; Keep at least 23 lines for the upper window. (enlarge-window (- 23 height)))) ;; (other-window 1) ;; make it selected window and current buffer. ;; (switch-to-buffer skktut-answer-buffer) (pop-to-buffer skktut-answer-buffer) ;; not make it current buffer but visible. (display-buffer skktut-question-buffer) (setq skktut-working-window-configuration (current-window-configuration))) (defun skktut-enable-advice () (let ((alist skktut-adviced-alist) e) (dolist (e alist) (ad-enable-advice (car e) (cdr e) 'skktut-ad) (ad-activate (car e))))) (defun skktut-disable-advice () (let ((alist skktut-adviced-alist) e) (dolist (e alist) (ad-disable-advice (car e) (cdr e) 'skktut-ad) (ad-activate (car e))))) (defun skktut-enable-tutmap () (let ((inhibit-quit t)) (skk-update-minor-mode-map-alist 'skk-latin-mode skktut-latin-mode-map) (skk-update-minor-mode-map-alist 'skk-abbrev-mode skktut-abbrev-mode-map) (skk-update-minor-mode-map-alist 'skk-j-mode skktut-j-mode-map) (skk-update-minor-mode-map-alist 'skk-jisx0208-mode skktut-jisx0208-latin-mode-map) (define-key skktut-j-mode-map "\C-p" 'skk-previous-candidate) (unless (skk-tut-nicola-p) (define-key skktut-j-mode-map "x" 'skk-previous-candidate)) (define-key skktut-j-mode-map "\C-j" 'skk-insert) (define-key skktut-j-mode-map "\t" 'skk-insert) ;; for minor-mode-map-alist localized by Viper. (when (and (featurep 'viper) (skk-local-variable-p 'minor-mode-map-alist nil t)) (setq-default minor-mode-map-alist minor-mode-map-alist)))) (defun skktut-disable-tutmap () (let ((inhibit-quit t) (minor-mode-list '(skk-abbrev-mode skk-latin-mode skk-j-mode skk-jisx0208-latin-mode)) minor-mode e) (while minor-mode-list (setq minor-mode (car minor-mode-list) minor-mode-list (cdr minor-mode-list)) ;; fail safe. (while (setq e (assq minor-mode minor-mode-map-alist)) (setq minor-mode-map-alist (delq e minor-mode-map-alist)))) (skk-update-minor-mode-map-alist 'skk-latin-mode skk-latin-mode-map) (skk-update-minor-mode-map-alist 'skk-abbrev-mode skk-abbrev-mode-map) (skk-update-minor-mode-map-alist 'skk-j-mode skk-j-mode-map) (skk-update-minor-mode-map-alist 'skk-jisx0208-mode skk-jisx0208-latin-mode-map)) ;; for minor-mode-map-alist localized by Viper. (when (default-value skk-use-viper) (skk-viper-normalize-map))) (defun skktut-pre-setup-tutorial () (setq skktut-original-window-configuration (current-window-configuration) skktut-skk-mode-on skk-mode skktut-question-count 1)) (defun skktut-update-jisyo (word &optional purge) (let ((skk-share-private-jisyo nil) (skk-jisyo-update-vector nil) (skk-update-jisyo-count 0)) (skk-update-jisyo-original word purge))) (defun skktut-setup-jisyo-buffer () ;; setup skktut-tut-jisyo buffer. (with-current-buffer (get-buffer-create skktut-jisyo-buffer) (buffer-disable-undo (current-buffer)) (skktut-localize-and-init-variables) (setq case-fold-search nil) (insert "\ ;; okuri-ari entries. $B$[$C(Bs /$BM_(B/ $B$D$+(Bt /$B;H(B/ $B$?$C(Bs /$BC#(B/ $B$7(Bt /$BCN(B/ $B$&$4(Bk /$BF0(B/ ;; okuri-nasi entries. Cyrillic /$B'!(B/$B'"(B/$B'#(B/$B'$(B/$B'%(B/$B'&(B/$B''(B/$B'((B/$B')(B/$B'*(B/$B'+(B/$B',(B/$B'-(B/$B'.(B/$B'/(B/$B'0(B/$B'1(B/$B'2(B/$B'3(B/$B'4(B/$B'5(B/$B'6(B/\ $B'7(B/$B'8(B/$B'9(B/$B':(B/$B';(B/$B'<(B/$B'=(B/$B'>(B/$B'?(B/$B'@(B/$B'A(B/ Greek /$B&!(B/$B&"(B/$B&#(B/$B&$(B/$B&%(B/$B&&(B/$B&'(B/$B&((B/$B&)(B/$B&*(B/$B&+(B/$B&,(B/$B&-(B/$B&.(B/$B&/(B/$B&0(B/$B&1(B/$B&2(B/$B&3(B/$B&4(B/$B&5(B/$B&6(B/$B&7(B/\ $B&8(B/ cyrillic /$B'Q(B/$B'R(B/$B'S(B/$B'T(B/$B'U(B/$B'V(B/$B'W(B/$B'X(B/$B'Y(B/$B'Z(B/$B'[(B/$B'\(B/$B'](B/$B'^(B/$B'_(B/$B'`(B/$B'a(B/$B'b(B/$B'c(B/$B'd(B/$B'e(B/$B'f(B/\ $B'g(B/$B'h(B/$B'i(B/$B'j(B/$B'k(B/$B'l(B/$B'm(B/$B'n(B/$B'o(B/$B'p(B/$B'q(B/ greek /$B&A(B/$B&B(B/$B&C(B/$B&D(B/$B&E(B/$B&F(B/$B&G(B/$B&H(B/$B&I(B/$B&J(B/$B&K(B/$B&L(B/$B&M(B/$B&N(B/$B&O(B/$B&P(B/$B&Q(B/$B&R(B/$B&S(B/$B&T(B/$B&U(B/$B&V(B/$B&W(B/\ $B&X(B/ tutorial /$B%A%e!<%H%j%"%k(B/ $B$$$A(B /$B0l(B/ $B$$$A$*$/(B /$B0l2/(B/ $B$*$*$5$+(B /$BBg:e(B/ $B$*$/(B /$B2/(B/ $B$+$J(B /$B2>L>(B/ $B$+$s$8(B /$B4A;z(B/$B44;v(B/$B4F;v(B/ $B$,$/(B /$B3X(B/ $B$,$/$7$e$&(B /$B3X=,(B/ $B$-(B /$B4p(B/$B5-(B/$B5$(B/$BLZ(B/$B5"(B/ $B$-$4$&(B /$B5-9f(B/$B!&(B/$B!+(B/$B!,(B/$B!-(B/$B!.(B/$B!/(B/$B!1(B/$B!3(B/$B!4(B/$B!5(B/$B!6(B/$B!7(B/$B!8(B/$B!9(B/$B!:(B/$B!;(B/$B!=(B/$B!>(B/$B!B(B/$B!D(B/$B!E(B/\ $B!H(B/$B!I(B/$B!L(B/$B!M(B/$B!R(B/$B!S(B/$B!T(B/$B!U(B/$B!X(B/$B!Y(B/$B!Z(B/$B![(B/$B!^(B/$B!_(B/$B!`(B/$B!b(B/$B!e(B/$B!f(B/$B!g(B/$B!h(B/$B!i(B/$B!j(B/$B!k(B/$B!l(B/$B!m(B/$B!n(B/\ $B!o(B/$B!q(B/$B!r(B/$B!x(B/$B!y(B/$B!z(B/$B!{(B/$B!|(B/$B!}(B/$B!~(B/$B"!(B/$B""(B/$B"#(B/$B"$(B/$B"%(B/$B"&(B/$B"'(B/$B"((B/$B")(B/$B"*(B/$B"+(B/$B",(B/$B"-(B/$B".(B/ $B$-$g$&$H(B /$B5~ET(B/ $B$3$&(B /$B8}(B/ $B$3$&$Y(B /$B?@8M(B/ $B$4(B /$B8^(B/$B8_(B/$B8`(B/$B8a(B/$B8b(B/$B8c(B/$B8d(B/$B8e(B/$B8f(B/$B8g(B/$B8h(B/$B8i(B/$B8j(B/$B8k(B/$B8l(B/$B8m(B/$B8n(B/$B8o(B/ $B$5$$(B /$B:Y(B/$B:G(B/$B:F(B/ $B$5$$$7$g(B /$B:G=i(B/ $B$5$$$H$&(B /$B:XF#(B/ $B$5$H$&(B /$B:4F#(B/ $B$7$e$&(B /$B=,(B/$B=*(B/ $B$7$e$&$j$g$&(B /$B=*N;(B/ $B$7$g(B /$B=q(B/ $B$8(B /$B<-(B/$B;z(B/ $B$8$7$g(B /$B<-=q(B/$BCO=j(B/ $B$8$s(B /$B?M(B/ $B$8$s$3$&(B /$B?M8}(B/ $B$;$s(B /$BA*(B/$B@v(B/ $B$;$s$?$/(B /$BA*Br(B/$B@vBu(B/ $B$=$&(B /$BAv(B/ $B$@$$(B /$BBg(B/$BBh(B/$BBe(B/ $B$?$/(B /$BBr(B/$BBu(B/ $B$F$-(B /$BE*(B/$BE((B/$BE)(B/$BE,(B/$BE&(B/ $B$H$&(B /$BEl(B/$BEP(B/ $B$H$&$[$/(B /$BElKL(B/ $B$H$&$m$/(B /$BEPO?(B/ $B$I$&(B /$BF0(B/ $B$K$e$&$j$g$/(B /$BF~NO(B/ $B$R$3$&$-(B /$BHt9T5!(B/ $B$X$s$+$s(B /$BJQ49(B/ $B$[$/(B /$BKL(B/ $B$_$g$&(B /$BL>(B/ $B$_$g$&$8(B /$BL>;z(B/ $B$h$&$$(B /$BMF0W(B/$BMQ0U(B/ $B$j$g$&(B /$BN;(B/ $B$m$/(B /$BO?(B/ ") (skk-setup-jisyo-buffer))) (defun skktut-setup-working-buffer (file) (save-match-data (let (sexp) (set-buffer (get-buffer-create skktut-working-buffer)) (buffer-disable-undo (current-buffer)) (skktut-localize-and-init-variables) (skktut-erase-buffer) ; fail safe. (insert-file-contents file) ;; Count how many questions there are. (setq skktut-question-numbers -1) (goto-char (point-min)) (while (re-search-forward "^----$" nil t) (setq skktut-question-numbers (1+ skktut-question-numbers))) ;; (goto-char (point-min)) (setq skktut-japanese-tut (looking-at ";; SKK Japanese")) (while (re-search-forward "^>> \\((.+)\\)$" nil t nil) (setq sexp (buffer-substring-no-properties (match-beginning 1) (match-end 1))) (delete-region (match-beginning 1) (match-end 1)) ;; insert evaluated string instead of lisp program. (insert (eval (car (read-from-string sexp))))) (goto-char (point-min)) (when skk-tut-use-face (skktut-colored))))) (defun skktut-setup-question-buffer () (with-current-buffer (get-buffer-create skktut-question-buffer) (buffer-disable-undo (current-buffer)) (skktut-erase-buffer) ; fail safe. (setq buffer-read-only t) (skktut-get-question-page skktut-question-count) (local-set-key "\C-xq" 'skk-tutorial-quit) (local-set-key "\C-xt" 'skk-tutorial-again) (local-set-key "\C-xn" 'skktut-next-question) (local-set-key "\C-xs" 'skktut-skip-question))) (defun skktut-setup-answer-buffer () (with-current-buffer (get-buffer-create skktut-answer-buffer) ;; users may use undo. ;; (buffer-disable-undo (current-buffer)) ;; skktut-answer-buffer $B$N(B skk.el $B$NJQ?t$r%P%C%U%!%m!<%+%k2=$7!"=i4|2=$9(B ;; $B$k!#(B (skktut-localize-and-init-variables) (local-set-key "\C-xq" 'skk-tutorial-quit) (local-set-key "\C-xt" 'skk-tutorial-again) (local-set-key "\C-xn" 'skktut-next-question) (local-set-key "\C-xs" 'skktut-skip-question) (auto-fill-mode -1) (skktut-next-answer-buffer))) (defun skktut-localize-and-init-variables () ;; $B%f!<%6!<$,(B skk.el $B$NJQ?t$r%+%9%?%^%$%:$7$F$$$k2DG=@-$,$"$k$N$G!"%+%l%s%H(B ;; $B%P%C%U%!$N(B skk.el $B$NJQ?t$r%P%C%U%!%m!<%+%k2=$7!"=i4|2=$9$k!#(B (let ((alist skktut-init-variables-alist) v) (dolist (cell alist) (setq v (car cell)) (make-local-variable v) (set v (eval (cdr cell)))))) (defun skktut-erase-buffer () (let ((inhibit-read-only t) buffer-read-only) (set-text-properties (point-min) (point-max) nil) (erase-buffer))) (defun skktut-colored () ;; face $B$r(B Text Property $B$K$7$F$*$/$H%F%-%9%H$r%3%T!<$7$?$H$-$K0l=o$K%3%T!<$G(B ;; $B$-$k$N$G9%ET9g!#(B (while (re-search-forward "$B"'(B\\([^$B![(B $B$!(B-$B$s%!(B-$B%s(B]+\\)" nil t nil) (put-text-property (match-beginning 1) (match-end 1) 'face 'highlight)) (goto-char (point-min)) (while (re-search-forward "^==.+==$" nil t nil) (put-text-property (match-beginning 0) (match-end 0) 'face skk-tut-section-face)) (goto-char (point-min)) (while (re-search-forward "^!!.+" nil t nil) (put-text-property (match-beginning 0) (match-end 0) 'face skk-tut-do-it-face)) (goto-char (point-min)) (while (re-search-forward "^>> \\(.+\\)$" nil t nil) (put-text-property (match-beginning 1) (match-end 1) 'face skk-tut-question-face)) (unless skktut-japanese-tut (goto-char (point-min)) (while (re-search-forward "Hint: .*$" nil t nil) (put-text-property (match-beginning 0) (match-end 0) 'face skk-tut-hint-face)))) (defun skktut-next-answer-buffer () (save-match-data (with-current-buffer skktut-question-buffer ;; first get right answer in `skktut-question-buffer'. (goto-char (point-max)) (search-backward "\n>>") (forward-char 1) (setq skktut-right-answer (buffer-substring-no-properties (+ 3 (point)) (line-end-position))) (goto-char (point-min))) ;; not to save point. (let ((cbuf (current-buffer)) p) (unwind-protect (let ((plist (cons (if (featurep 'xemacs) 'end-open 'rear-nonsticky) '(t intangible t read-only t)))) ;; secondary make a new answer buffer. (set-buffer skktut-answer-buffer) (skktut-erase-buffer) (insert ">> \n\n") (add-text-properties (point-min) (- (point) 2) plist) (setq p (point)) (insert (let ((next " `\\[skktut-next-question]'") (quit " `\\[skk-tutorial-quit]'") (skip " `\\[skktut-skip-question]'") (sow " `\\[scroll-other-window]'")) (substitute-command-keys (if skktut-japanese-tut (concat "* $BEz$,$G$-$?$i(B" next "\n" "* $BESCf$G$d$a$k$K$O(B" quit "\n" (if (/= skktut-question-count skktut-question-numbers) (concat "* $B%9%-%C%W$9$k$K$O(B" skip "\n")) "* $B!ZLd![$r%9%/%m!<%k$9$k$K$O(B" sow) (concat "* For next question" next "\n" "* to quit " quit "\n" (if (/= skktut-question-count skktut-question-numbers) (concat "* to skip this question" skip "\n")) "* to scroll question window" sow))))) (when skk-tut-use-face (put-text-property p (point) 'face skk-tut-key-bind-face)) (add-text-properties p (point) plist) (goto-char (+ (point-min) 3))) (set-buffer cbuf))))) (defun skktut-get-question-page (page) (save-excursion (save-match-data (if (>= skktut-question-count (1+ skktut-question-numbers)) ;; No more need to search for S expressions in the working buffer. ;; It's time to finish. (skktut-end-tutorial) ;; Tutorial continues. (set-buffer skktut-working-buffer) (let (pos str) (goto-char (point-min)) (search-forward "--\n" nil t page) (when (looking-at ";") ; lisp program exists. (forward-char 3) (setq pos (point)) (end-of-line) (skk-save-point (eval-region pos (point) nil)) (forward-char 1)) (unless skktut-tutorial-end (setq pos (point)) (search-forward "\n>>") (end-of-line) (setq str (buffer-substring pos (point))) (set-buffer skktut-question-buffer) (skktut-erase-buffer) (let (buffer-read-only) (insert str) (setq mode-line-buffer-identification (concat "$B#S#K#K%A%e!<%H%j%"%k(B: $B!NLd(B " (number-to-string page) "$B!O(B $B!J;D$j(B " (number-to-string (- skktut-question-numbers page)) "$BLd!K(B")) (set-buffer-modified-p nil) (force-mode-line-update 'all)))))))) ;; The following two functions are tricky, since they are executed by ;; `eval-region' in skktut-working-buffer. (defun skktut-today () (save-restriction (save-match-data (let (p) (widen) (search-forward "\n>> ") (when (re-search-forward "$B!V(B.*$B!W(B" (line-end-position) t) (delete-region (match-beginning 0) (match-end 0))) (setq p (point)) (insert (concat "$B!V$-$g$&$O!"(B" (skk-current-date) "$B$G$9!#!W(B")) (narrow-to-region (point-min) (point)) (when skk-tut-use-face (put-text-property p (point) 'face skk-tut-question-face)))))) (defun skktut-end-tutorial () ;; (switch-to-buffer skktut-question-buffer) (pop-to-buffer skktut-question-buffer) (delete-other-windows) (skktut-erase-buffer) (let (buffer-read-only) (goto-char (point-min)) (insert (format (if skktut-japanese-tut "\ SKK $B%A%e!<%H%j%"%k$O$3$l$G=*$j$G$9!#(B %s $B$K4X$9$k $B%-!<$r2!$7$F$/$@$5$$!#(B" "\ Now we end the SKK tutorial. Please send comments, questions and bug reports on %s to: \t%s This is the address of the SKK Ring Server Openlab Mailing list. Note that only members can post to the ML. So, if you are not an ML member, please subscribe to the ML first, by sending email to: \t%s with both the subject and the body empty. !! Hit key when you are ready.") (skk-version t) skk-ml-address skk-ml-command-address)) (when skk-tut-use-face (save-match-data (goto-char (point-min)) (re-search-forward "^!!.+" nil t nil) (put-text-property (match-beginning 0) (match-end 0) 'face skk-tut-do-it-face))) (while (not skktut-tutorial-end) (ignore-errors (let* ((event (next-command-event)) (char (event-to-character event))) (skktut-message " $B%-!<$r2!$7$F$/$@$5$$(B" "Hit key") (if (and char (eq ?\C-m char)) (setq skktut-tutorial-end t))))) (message nil))) (defun skktut-setup-delete-backward-char () (let ((commands '(backward-delete-char-untabify backward-delete-char backward-or-forward-delete-char delete-backward-char picture-backward-clear-column ;; following two are SKK adviced. ;;viper-del-backward-char-in-insert ;;vip-del-backward-char-in-insert )) (map (if (and (boundp 'overriding-local-map) (keymapp 'overriding-local-map)) overriding-local-map (current-global-map))) keys) (dolist (command commands) (setq keys (where-is-internal command map)) (dolist (key keys) (define-key skktut-abbrev-mode-map key 'skk-delete-backward-char) (define-key skktut-j-mode-map key 'skk-delete-backward-char))))) (defun skktut-user-name () (let ((name (user-full-name))) (if (not (or (string= name "") ;; non-ASCII characters (save-match-data (string-match "[^\000-\177]" name)))) name (setq name (user-login-name)) (if (not (or (string= name "") ;; non-ASCII characters (save-match-data (string-match "[^\000-\177]" name)))) name "nanasi")))) (provide 'skk-tut) ;;; skk-tut.el ends here ddskk-15.2/skk-vars.el0000644000570400056700000063770612420555253014713 0ustar kitamotoopenlab;;; skk-vars.el --- common vars and consts in SKK -*- coding: iso-2022-7bit-ss2 -*- ;; Copyright (C) 1999-2010 SKK Development Team ;; Author: SKK Development Team ;; Maintainer: SKK Development Team ;; Version: $Id: skk-vars.el,v 1.467 2014/10/18 21:24:59 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2014/10/18 21:24:59 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (require 'wid-edit) (eval-when-compile ;; shut down compiler warnings. (defvar charset-list) (defvar word-across-newline) (defvar emacs-beta-version) (defvar mule-version)) ;; *** 2012.1.15 $B:o=|(B *** ;; (eval-and-compile ;; ;; XEmacs $B$N<1JL$O(B (featurep 'xemacs) $B$rMQ$$$k!#(BGNU Emacs $B$K$D$$$F$O(B ;; ;; Emacs 21 $B$,(B `emacs' feature $B$r(B provide $B$7$J$$$N$G0J2<$rMQ$$$k!#(B ;; ;; Emacs 21 $B%5%]!<%H=*N;8e$O(B (featurep 'emacs) $B$,$h$$$H;W$o$l$k!#(B ;; (defconst skk-running-gnu-emacs (or (featurep 'emacs) ;; (string-match "^GNU" (emacs-version))))) ;; Functions needed prior to loading skk-macs.el. (when (eval-when-compile (featurep 'emacs)) (defsubst find-coding-system (obj) "Return OBJ if it is a coding-system." (if (coding-system-p obj) obj))) (defun skk-find-window-system () (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; GNU Emacs 23 or later (let ((frames (frame-list)) val) (while (and (not val) frames) ;; $BJQ?t(B window-system $B$O(B frame local $BCM$r;}$D!#(B ;; $BNc$($P(B window system $B$H(B "emacsclient -nw" $B$NJ;MQ;~$J$I(B ;; $B$$$:$l$+$N(B frame $B$,(B window system $B2<$GF0$$$F$$$k$3$H$r(B ;; $B3NG'$9$k!#(B (setq val (window-system (car frames)) frames (cdr frames))) val)) (t ;; Emacs 22 and XEmacs window-system))) ;;;###autoload (put 'skk-deflocalvar 'lisp-indent-function 'defun) (defmacro skk-deflocalvar (symbol initvalue &optional docstring) (if docstring `(progn (defvar ,symbol ,initvalue ,docstring) (make-variable-buffer-local ',symbol)) `(progn (defvar ,symbol ,initvalue) (make-variable-buffer-local ',symbol)))) (defconst skk-ml-address "skk@ring.gr.jp") (defconst skk-ml-command-address "skk-subscribe@ring.gr.jp") ;;;; Custom group definitions (defgroup skk nil "$BF|K\8lF~NO%7%9%F%`(B SKK $B$N%+%9%?%^%$%:(B" :group 'mule :group 'applications) ;;; by function (defgroup skk-basic nil "SKK $B4pK\$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-dictionary nil "SKK $B<-=q$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-private nil "SKK $B8D?M<-=q$N$$$m$$$m(B" :prefix "skk-" :group 'skk) (defgroup skk-visual nil "SKK $B$N8+$?L\$r%+%9%?%^%$%:(B" :prefix "skk-" :group 'skk) ;;; by filename (defgroup skk-annotation nil "SKK $B%"%N%F!<%7%g%sI=<((B/$BJT=8$N@_Dj(B" :prefix "skk-annotation-" :group 'skk) (defgroup skk-auto nil "SKK $B<+F0Aw$j$,$J5!G=$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-cdb nil "SKK CDB $B<-=q8!:w5!G=$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-comp nil "SKK $BJd405!G=$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-server-completion nil "$B<-=q%5!<%PJd405!G=$K4X$9$k@_Dj(B" :group 'skk) (defgroup skk-cursor nil "SKK $B%+!<%=%k@)8f$N@_Dj(B" :prefix "skk-cursor-" :group 'skk) (defgroup skk-dcomp nil "SKK $BF0E*Jd40$N@_Dj(B" :prefix "skk-dcomp-" :group 'skk) (defgroup skk-gadget nil "SKK $B3Q%+%J(B) $B4XO"$N@_Dj(B" :prefix "skk-jisx0201-" :group 'skk) (defgroup skk-jisx0213 nil "SKK JIS X 0213 $B4XO"$N@_Dj(B" :group 'skk) (defgroup skk-jisyo-edit-mode nil "SKK $B$N<-=qJT=85!G=$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-kakasi nil "SKK $B$+$i(B kakasi $B$r;H$&@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-kcode nil "SKK $BJ8;z%3!<%I$r07$&@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-look nil "SKK $B$+$i(B look $B%3%^%s%I$rMxMQ$9$k@_Dj(B" :prefix "skk-look-" :group 'skk) (defgroup skk-lookup nil "SKK $B$+$i(B Lookup $B%Q%C%1!<%8$rMxMQ$9$k@_Dj(B" :prefix "skk-lookup-" :group 'skk) (defgroup skk-num nil "SKK $B$G?t;z$r07$&$?$a$N@_Dj(B" :prefix "skk-num-" :group 'skk) (defgroup skk-server nil "$B<-=q%5!<%P$H$NDL?.$K4X$9$k@_Dj(B" :prefix "skk-server-" :group 'skk) (defgroup skk-sticky nil "SKK $BJQ490LCV;XDjJ}<0$N@_Dj(B" :prefix "skk-sticky-" :group 'skk) (defgroup skk-study nil "SKK $B3X=,5!G=$N@_Dj(B" :prefix "skk-study-" :group 'skk) (defgroup skk-tankan nil "SKK $BC14A;zJQ495!G=$N@_Dj(B" :prefix "skk-tankan-" :group 'skk) (defgroup skk-tooltip nil "SKK $B%D!<%k%F%#%C%WI=<($N@_Dj(B" :prefix "skk-tooltip-" :group 'skk) (defgroup skk-tut nil "SKK $B%A%e!<%H%j%"%k$N@_Dj(B" :prefix "skk-tut-" :group 'skk) (defgroup skk-viper nil "SKK/Viper $B4XO"$N@_Dj(B" :prefix "skk-viper-" :group 'skk) (defgroup skk-act nil "SKK $B$G3HD%%m!<%^;zF~NO(B ACT $B$r;H$&@_Dj(B" :prefix "skk-act-" :group 'skk-input-enhanced) (defgroup skk-azik nil "SKK $B$G3HD%%m!<%^;zF~NO(B AZIK $B$r;H$&@_Dj(B" :prefix "skk-azik-" :group 'skk-input-enhanced) (defgroup skk-kanagaki nil "SKK $B$+$JF~NO$N@_Dj(B" :prefix "skk-kanagaki-" :group 'skk-input-enhanced) (defgroup skk-nicola nil "SKK $B?F;X%7%U%HF~NO$N@_Dj(B" :prefix "skk-nicola-" :group 'skk-kanagaki) ;;; skk-vars.el related. (defcustom skk-background-mode ;; from font-lock-make-faces of font-lock.el Welcome! (or frame-background-mode (cond ((featurep 'xemacs) (if (< (apply '+ (color-rgb-components (face-property 'default 'background))) (/ (apply '+ (color-rgb-components (make-color-specifier "white"))) 3)) 'dark 'light)) (t (cond ((and window-system (x-display-color-p)) (let ((bg-resource (x-get-resource ".backgroundMode" "BackgroundMode")) (params (frame-parameters))) (cond (bg-resource (intern (downcase bg-resource))) ((and (eq system-type 'windows-nt) (not (fboundp 'x-color-values))) (if (string-match "light" (cdr (assq 'background-color params))) 'light 'dark)) ((not (null (cdr (assq 'background-mode params)))) ;; Emacs20.x (Meadow) (cdr (assq 'background-mode params))) ((< (apply '+ (x-color-values (cdr (assq 'background-color params)))) (/ (apply '+ (x-color-values "white")) 3)) 'dark) (t 'light)))) (t nil))))) "*SKK $B$NI8=`$N%U%'%$%9?'$r7h$a$k$?$a$NGX7J?'$K4X$9$k>pJs!#(B $BI8=`$G$O(B `frame-background-mode' $B$r@_Dj$7$F$$$k>l9g$O$=$l$K=>$$!"(B $B@_Dj$7$F$$$J$$>l9g$OFH<+$NJ}K!$G(B `light' $B$+(B `dark' $B$+$r7h$a$k!#(B $B$?$@$7!"%?!<%_%J%k$G(B Emacs $B$rMxMQ$7$F$$$k>l9g$OH=Dj$G$-$:!"(B $B%f!<%6$N0U?^$H9g$o$J$$$+$b$7$l$J$$$N$G!"$3$N%*%W%7%g%s$+(B `frame-background-mode' $B$r$"$i$+$8$a@_Dj$7$F$*$/$3$H$,K>$^$7$$!#(B $B$3$N%*%W%7%g%s$O(B ~/.skk $B$K@_Dj$7$F$bH?1G$5$l$J$$!#(B~/.emacs $B$+(B \\[customize] $B$K$F!"(BSKK $B$,FI$_9~$^$l$kA0$K@_Dj$9$k$3$H$,I,MW!#(B" :type '(choice (const dark) (const light) (const :tag "$B<+F0$G7h$a$k(B" nil)) :group 'skk-basic :group 'skk-visual) ;;; skk.el related. (defcustom skk-user-directory nil "*SKK $B$N@_Dj%U%!%$%k$J$I$rCV$/%G%#%l%/%H%jL>!#(B $B3Fl9g$K@_Dj$9$k!#(B ($BNc(B) (setq skk-user-directory \"~/.ddskk\") " :type '(radio (directory :tag "$B%G%#%l%/%H%jL>(B" "~/.ddskk") (const :tag "$B@_Dj$7$J$$(B" nil)) :group 'skk-basic) (defcustom skk-init-file (if skk-user-directory (expand-file-name "init" skk-user-directory) (convert-standard-filename "~/.skk")) "*SKK $B$N=i4|@_Dj$r5-=R$9$k%U%!%$%kL>!#(BSKK $B$r5/F0$7$?:G=i$N0lEY$@$1FI$_(B $B9~$^$l$k!#$3$N%U%!%$%k$K5-=R$9$kBe$o$j$K(B ~/.emacs $B$K(B SKK $B$N3Fl9g$O(B \\[skk-restart] $B$G$OH?1G$5$l$J$$!#(B ~/.emacs $B$G(B $BJQ?t(B `skk-byte-compile-init-file' $B$r@_Dj$9$k$3$H$G(B `skk-init-file' $B$r(B $B<+F0E*$K%P%$%H%3%s%Q%$%k$9$k$3$H$b2DG=!#(B" ;;"*Name of the SKK initialization file. ;;From skk.el 9.x on all customization may be done in ~/.emacs." :type '(file :tag "$B%U%!%$%kL>(B") :group 'skk-basic) (defcustom skk-japanese-message-and-error nil "*Non-nil $B$G$"$l$P!"(BSKK $B$N%a%C%;!<%8$H%(%i!<$rF|K\8l$GI=<($9$k!#(B nil $B$G$"$l$P!"1Q8l$GI=<($9$k!#(B" :type 'boolean :group 'skk-basic) (defcustom skk-version-codename-ja nil "*Non-nil $B$G$"$l$P!"4X?t(B `skk-version' $B$G$N%3!<%I%M!<%`$rF|K\8l$GI=<($9$k!#(B" :type 'boolean :group 'skk-basic) (defcustom skk-jisyo-fix-order nil "*Non-nil $B$G$"$l$P!"3NDj$N:]$K8D?M<-=q$NF12;8l$N=g=x$rJQ99$;$:!"(B $B8D?M<-=q$K?75,DI2C$9$k:]$O4{=P8l$N8e$KDI2C$9$k!#(B" :type 'boolean :group 'skk-dictionary) (defcustom skk-kakutei-jisyo nil ;; $B%=!<%H$5$l$F$$$kI,MW$,$"$k$+$I$&$+$O@_Djl9g$K$O!"(B (skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t) $B$N$h$&$JMWAG$r(B `skk-search-prog-list' $B$N@hF,$KG[CV$9$k$3$H!#(B" ;; "*The first dictionary to be searched. ;;If non-nil, and this variable is used as a component of ;;`skk-search-prog-list', the indicated dictionary is read into a ;;buffer and searched. ;;The keys must be sorted. ;;Only the first entry in each key is checked; if several entries are ;;present the second and following entries are ignored. ;;By setting the value of `skk-search-prog-list' the dictionaries ;;searched and the order of search can be changed." :type '(radio (file :tag "$B<-=q%U%!%$%kL>(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary) (defcustom skk-initial-search-jisyo nil ;; $B%=!<%H$5$l$F$$$kI,MW$,$"$k$+$I$&$+$O@_Dj(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary) (defcustom skk-large-jisyo nil ;; (FILE . CODE) $B$N7A<0$b$$$1$k$O$:(B "*$B8D?M<-=q$N8!:w$N8e$K8!:w$9$k<-=q!#(B $B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B Non-nil $B$G$"$l$P!";XDj$5$l$?<-=q$r8!:w$N$?$a%P%C%U%!$KFI$_9~$_!"8!:w$r9T$&!#(B" :type `(radio (file :tag "$B<-=q%U%!%$%kL>(B" ,(cond ((featurep 'xemacs) (or (locate-data-file "SKK-JISYO.L") "")) ((fboundp 'locate-file) (or (locate-file "skk/SKK-JISYO.L" (list (expand-file-name "../../.." data-directory))) (locate-file "skk/SKK-JISYO.L" (list data-directory)) "")))) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary) (defcustom skk-aux-large-jisyo nil ;; (FILE . CODE) $B$N7A<0$b$$$1$k$O$:(B "*$B<-=q%5!<%P$,;H$($J$$;~$K!"Be$o$j$K8!:w$9$k<-=q!#(B $B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B Non-nil $B$G$"$l$P!"<-=q%5!<%P$,(B active $B$G$J$$;~$K!"(B $B;XDj$5$l$?<-=q$r%P%C%U%!$KFI$_9~$_!"8!:w$r9T$&!#(B" :type `(radio (file :tag "$B<-=q%U%!%$%kL>(B" ,(cond ((featurep 'xemacs) (or (locate-data-file "SKK-JISYO.L") "")) ((fboundp 'locate-file) (or (locate-file "skk/SKK-JISYO.L" (list (expand-file-name "../../.." data-directory))) (locate-file "skk/SKK-JISYO.L" (list data-directory)) "")))) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary :group 'skk-server) (defcustom skk-inhibit-ja-dic-search nil "*$B!V(BGNU Emacs $BIUB0$N<-=q$rMQ$$$?8!:w!W$N6X;_$r;X<($9$k%*%W%7%g%s!#(B GNU Emacs $B$K$O(B SKK-JISYO.L $B$r85$KJQ49$5$l$?(B ja-dic.el $B$H$$$&<-=q$,IUB0$9$k!#(B $B$3$l$rMQ$$$FDL>o$N$+$J4A;zJQ49(B ($BAw$j$"$j!"Aw$j$J$7!"@\F,<-!"@\Hx<-(B) $B$,2DG=(B $B$G$"$k(B ($B$?$@$7(B SKK-JISYO.L $B$K$h$k1Q?tJQ49!"?tCMJQ49$J$I$O$G$-$J$$(B)$B!#(B DDSKK 14.2 $B$h$j!V(Bja-dic.el $B8!:w5!G=(B `skk-search-ja-dic'$B!W$,DI2C$5$l$?!#(B $B$3$N(B `skk-search-ja-dic' $B$O!"(B `skk-large-jisyo'$B!"(B`skk-aux-large-jisyo'$B!"(B `skk-cdb-large-jisyo' $B5Z$S(B `skk-server-host' $B$NA4$F$,L58z$J>l9g$KM-8z$H$J$k(B $B$,!"$"$i$f$k>lLL$G6X;_$7$?$$>l9g$O!"$3$NJQ?t$r(B Non-nil $B$K@_Dj$9$k!#(B" :type 'boolean :group 'skk-dictionary) (defcustom skk-extra-jisyo-file-list nil "*$B%a%$%s<-=q$NB>$K8!:w$9$k<-=q$N%j%9%H$r;XDj$9$k!#(B $B$$$:$l$N<-=q$b!"8+=P$78l$O%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B (setq skk-extra-jisyo-file-list (list '(\"/usr/share/skk/SKK-JISYO.JIS3_4\" . euc-jisx0213) \"/usr/share/skk/SKK-JISYO.zipcode\")) SKK $B<-=q$K$O(B SKK OpenLab $B$GG[I[$7$F$$$k$b$N!"Bh;0$K8!:w$7$?$$<-=q$N%U%!%$%kL>$N(B $B%j%9%H$r;XDj$9$k!#%U%!%$%kL>$NBe$o$j$K!"%U%!%$%kL>$H%3!<%I7O$N%Z%"$r;XDj$9$k(B $B$3$H$b$G$-$k!#<-=q$O;XDj$5$l$?=g$K8!:w$5$l$k!#(B" :type '(repeat (file :tag "$B<-=q%U%!%$%kL>(B")) :group 'skk-dictionary) (defcustom skk-itaiji-jisyo nil "$B0[BN;z<-=q(B `SKK-JISYO.itaiji', `SKK-JISYO.itaiji.JIS3_4' $B$X$N%Q%9$r;XDj$9$k!#(B" :type '(radio (file :tag "$B<-=q%U%!%$%kL>(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary) (defcustom skk-search-prog-list '((skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t) (skk-tankan-search 'skk-search-jisyo-file skk-large-jisyo 10000) (skk-search-jisyo-file skk-initial-search-jisyo 10000 t) (skk-search-jisyo-file skk-jisyo 0 t) (skk-okuri-search) (skk-search-cdb-jisyo skk-cdb-large-jisyo) (skk-search-jisyo-file skk-large-jisyo 10000) (skk-search-server skk-aux-large-jisyo 10000) (skk-search-ja-dic-maybe) (skk-search-extra-jisyo-files) (skk-search-katakana-maybe) (skk-search-sagyo-henkaku-maybe) (skk-search-itaiji)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B $B$3$NJQ?t$NCM$r2A$9$k$3$H$K$h$C$F$+$J4A;zJQ49$r]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-1 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-2 nil "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-2 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-3 nil "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-3 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-4 nil "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-4 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-5 '((skk-search-tankanji)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-5 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-6 '((skk-search-identity)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-6 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-7 '((skk-search-katakana)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-7 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-8 '((skk-search-hankaku-katakana)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-8 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-9 '((skk-search-jisx0208-romaji)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-9 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-0 '((skk-search-romaji)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-0 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-count-jisyo-candidates-function 'skk-count-jisyo-candidates-original "*`skk-count-jisyo-candidates' $B$G;HMQ$9$k4X?t!#(B" :type 'function :group 'skk-dictionary) (defcustom skk-public-jisyo-to-be-searched-function 'skk-public-jisyo-to-be-searched-original "*`skk-public-jisyo-has-word-p' $B$G;HMQ$9$k4X?t!#(B" :type 'function :group 'skk-dictionary) (defcustom skk-jisyo (if skk-user-directory (expand-file-name "jisyo" skk-user-directory) (convert-standard-filename "~/.skk-jisyo")) "*SKK $B$N8D?M<-=q!#(B" :type `(file :tag "$B<-=q%U%!%$%kL>(B") :group 'skk-private) (defcustom skk-backup-jisyo (if skk-user-directory (expand-file-name "jisyo.bak" skk-user-directory) (convert-standard-filename "~/.skk-jisyo.BAK")) "*SKK $B$N8D?M<-=q$N%P%C%/%"%C%W%U%!%$%k!#(B" :type '(file :tag "$B<-=q%U%!%$%kL>(B") :group 'skk-private) (defcustom skk-jisyo-code nil ;; $B8=:_$N$r;XDj$9$k!#(B $B$?$@$7J8;zNs(B \"euc\", \"ujis\", \"sjis\", \"jis\" $B$N;XDj$b0l1~l9g(B \"euc\" $B$HF1$807$$$K$J$k!#(B $B8D?M<-=q$O$3$N%3!<%G%#%s%0%7%9%F%`$GJ]B8$5$l$k!#(B" :type '(radio coding-system (radio :tag "$B%3!<%I$NDL>N(B" (const "euc") (const "ujis") (const "sjis") (const "jis")) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-private) (defcustom skk-share-private-jisyo nil "\ *Non-nil $B$G$"$l$P!"8D?M<-=q$r99?7$9$k:]$K!VJ#?t$N(B SKK $B%W%m%;%9$,FCDj$N8D(B $B?M<-=q$r6&M-$7$F$$$k!W$r9MN8$7$?>e$G=hM}$r9T$&!#(B SKK $B5/F08e$K$3$NJQ?t$NCM$rJQ99$7$?>l9g$O(B \\[skk-restart] $B$GH?1G$5$;$k;v!#(B" :type 'boolean :group 'skk-basic :group 'skk-private) (defcustom skk-jisyo-save-count 50 "*$B?tCM$G$"$l$P!"$=$N2s?t$@$18D?M<-=q$,99?7$5$l$?$H$-$K<+F0E*$K%;!<%V$9$k!#(B nil $B$G$"$l$P!"8D?M<-=q$N%*!<%H%;!<%V$r9T$o$J$$!#(B SKK $B5/F08e$G!"JQ?t(B `skk-share-private-jisyo' $B$,(B non-nil $B$J>l9g(B $B$K(B `skk-jisyo-save-count' $B$NCM$rJQ99$7$?>l9g$O(B \\[skk-restart] $B$GH?1G$5$;$k;v!#(B" :type '(radio (integer :tag "$B@0?t(B" 50) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-private) (defcustom skk-count-private-jisyo-candidates-exactly nil "*Non-nil $B$G$"$l$P!"(BEmacs $B$r=*N;$9$k$H$-$K(B `skk-record-file' $B$KJ]B8$5$l(B $B$kE}7W>pJs$N!V8l?t!W$r@53N$K?t$($k!#(B nil $B$G$"$l$P!"(B1 $B9T$KJ#?t$N8uJd$,$"$C$F$b(B 1 $B8uJd$H$7$F?t$($k!#(B" :type 'boolean :group 'skk-private) (defcustom skk-compare-jisyo-size-when-saving t "*Non-nil $B$G$"$l$P!"(B`skk-jisyo' $B$N%;!<%V;~$K%U%!%$%k%5%$%:$r%A%'%C%/$9$k!#(B $BA02s%;!<%V$7$?(B `skk-jisyo' $B$H:#2s%;!<%V$7$h$&$H$9$k<-=q$H$N%5%$%:$rHf3S$7!"(B $B8er7o$r;XDj$9$k!#(B $B$3$NJQ?t$K$O0z?t(B 1 $B8D$N4X?t!JKt$O4X?t$N%j%9%H!K$rBeF~$9$k$3$H$H$7!"BeF~$7(B $B$?4X?t$O3NDj$7$?J8;zNs$r0z?t$K(B `skk-update-jisyo-p' $BFb$G(B `funcall' $B$5$l$k!#(B $B4pK\E*$K$3$NJQ?t$O%U%C%/JQ?t$G$"$j!"$=$NCM$r@_Dj$7$?$$>l9g$K$O(B `add-hook' $B$GDI2C$9$k$+(B `remove-hook' $B$G:o=|$9$k!#(B SKK $B$G$O!"$+$J4A;zJQ49!&3NDj$r9T$C$?J8;zNs$OA4$F8D?M<-=q$Ke$KKD$l$k$N$rM^$($kL\E*$K;HMQ(B $B$G$-$k!#(B $B$J$*!"8D?M<-=q$KpJs$rH$9$k$3$H$,$G$-$k!#(B" :type '(list symbol) :group 'skk-private) (defcustom skk-learn-combined-word nil "*$B@\F,<-!"@\Hx<-$NF~NO$N7k2L$r<+F0E*$K3X=,$9$k$+$I$&$+$r@_Dj$9$k!#(B Non-nil $B$J$i$P!"@\F,<-$^$?$O@\Hx<-F~NO$N:]!"@\F,<-$^$?$O@\Hx<-$H7k9g$7$?(B $B8l$r<+F0E*$K3X=,$9$k!#(B" :type 'boolean :group 'skk-private) (defcustom skk-save-jisyo-instantly nil "*non-nil $B$G$"$l$P!"C18lEPO?!JC18l:o=|!K$NETEY!"8D?M<-=q$rJ]B8$9$k!#(B" :type 'boolean :group 'skk-private) (defvar skk-jisyo-updated nil "`skk-henkan-in-minibuff' ($BC18lEPO?(B) $B$5$l$l$P(B t $B$H$J$k!#(B `skk-update-jisyo' $B$G;2>H$7$F$$$k!#(B") (defcustom skk-rom-kana-base-rule-list '(("a" nil ("$B%"(B" . "$B$"(B")) ("bb" "b" ("$B%C(B" . "$B$C(B")) ("ba" nil ("$B%P(B" . "$B$P(B")) ("be" nil ("$B%Y(B" . "$B$Y(B")) ("bi" nil ("$B%S(B" . "$B$S(B")) ("bo" nil ("$B%\(B" . "$B$\(B")) ("bu" nil ("$B%V(B" . "$B$V(B")) ("bya" nil ("$B%S%c(B" . "$B$S$c(B")) ("bye" nil ("$B%S%'(B" . "$B$S$'(B")) ("byi" nil ("$B%S%#(B" . "$B$S$#(B")) ("byo" nil ("$B%S%g(B" . "$B$S$g(B")) ("byu" nil ("$B%S%e(B" . "$B$S$e(B")) ("cc" "c" ("$B%C(B" . "$B$C(B")) ("cha" nil ("$B%A%c(B" . "$B$A$c(B")) ("che" nil ("$B%A%'(B" . "$B$A$'(B")) ("chi" nil ("$B%A(B" . "$B$A(B")) ("cho" nil ("$B%A%g(B" . "$B$A$g(B")) ("chu" nil ("$B%A%e(B" . "$B$A$e(B")) ("cya" nil ("$B%A%c(B" . "$B$A$c(B")) ("cye" nil ("$B%A%'(B" . "$B$A$'(B")) ("cyi" nil ("$B%A%#(B" . "$B$A$#(B")) ("cyo" nil ("$B%A%g(B" . "$B$A$g(B")) ("cyu" nil ("$B%A%e(B" . "$B$A$e(B")) ("dd" "d" ("$B%C(B" . "$B$C(B")) ("da" nil ("$B%@(B" . "$B$@(B")) ("de" nil ("$B%G(B" . "$B$G(B")) ("dha" nil ("$B%G%c(B" . "$B$G$c(B")) ("dhe" nil ("$B%G%'(B" . "$B$G$'(B")) ("dhi" nil ("$B%G%#(B" . "$B$G$#(B")) ("dho" nil ("$B%G%g(B" . "$B$G$g(B")) ("dhu" nil ("$B%G%e(B" . "$B$G$e(B")) ("di" nil ("$B%B(B" . "$B$B(B")) ("do" nil ("$B%I(B" . "$B$I(B")) ("du" nil ("$B%E(B" . "$B$E(B")) ("dya" nil ("$B%B%c(B" . "$B$B$c(B")) ("dye" nil ("$B%B%'(B" . "$B$B$'(B")) ("dyi" nil ("$B%B%#(B" . "$B$B$#(B")) ("dyo" nil ("$B%B%g(B" . "$B$B$g(B")) ("dyu" nil ("$B%B%e(B" . "$B$B$e(B")) ("e" nil ("$B%((B" . "$B$((B")) ("ff" "f" ("$B%C(B" . "$B$C(B")) ("fa" nil ("$B%U%!(B" . "$B$U$!(B")) ("fe" nil ("$B%U%'(B" . "$B$U$'(B")) ("fi" nil ("$B%U%#(B" . "$B$U$#(B")) ("fo" nil ("$B%U%)(B" . "$B$U$)(B")) ("fu" nil ("$B%U(B" . "$B$U(B")) ("fya" nil ("$B%U%c(B" . "$B$U$c(B")) ("fye" nil ("$B%U%'(B" . "$B$U$'(B")) ("fyi" nil ("$B%U%#(B" . "$B$U$#(B")) ("fyo" nil ("$B%U%g(B" . "$B$U$g(B")) ("fyu" nil ("$B%U%e(B" . "$B$U$e(B")) ("gg" "g" ("$B%C(B" . "$B$C(B")) ("ga" nil ("$B%,(B" . "$B$,(B")) ("ge" nil ("$B%2(B" . "$B$2(B")) ("gi" nil ("$B%.(B" . "$B$.(B")) ("go" nil ("$B%4(B" . "$B$4(B")) ("gu" nil ("$B%0(B" . "$B$0(B")) ("gya" nil ("$B%.%c(B" . "$B$.$c(B")) ("gye" nil ("$B%.%'(B" . "$B$.$'(B")) ("gyi" nil ("$B%.%#(B" . "$B$.$#(B")) ("gyo" nil ("$B%.%g(B" . "$B$.$g(B")) ("gyu" nil ("$B%.%e(B" . "$B$.$e(B")) ;;("h" "" ("$B%*(B" . "$B$*(B")) ("ha" nil ("$B%O(B" . "$B$O(B")) ("he" nil ("$B%X(B" . "$B$X(B")) ("hi" nil ("$B%R(B" . "$B$R(B")) ("ho" nil ("$B%[(B" . "$B$[(B")) ("hu" nil ("$B%U(B" . "$B$U(B")) ("hya" nil ("$B%R%c(B" . "$B$R$c(B")) ("hye" nil ("$B%R%'(B" . "$B$R$'(B")) ("hyi" nil ("$B%R%#(B" . "$B$R$#(B")) ("hyo" nil ("$B%R%g(B" . "$B$R$g(B")) ("hyu" nil ("$B%R%e(B" . "$B$R$e(B")) ("i" nil ("$B%$(B" . "$B$$(B")) ("jj" "j" ("$B%C(B" . "$B$C(B")) ("ja" nil ("$B%8%c(B" . "$B$8$c(B")) ("je" nil ("$B%8%'(B" . "$B$8$'(B")) ("ji" nil ("$B%8(B" . "$B$8(B")) ("jo" nil ("$B%8%g(B" . "$B$8$g(B")) ("ju" nil ("$B%8%e(B" . "$B$8$e(B")) ("jya" nil ("$B%8%c(B" . "$B$8$c(B")) ("jye" nil ("$B%8%'(B" . "$B$8$'(B")) ("jyi" nil ("$B%8%#(B" . "$B$8$#(B")) ("jyo" nil ("$B%8%g(B" . "$B$8$g(B")) ("jyu" nil ("$B%8%e(B" . "$B$8$e(B")) ("kk" "k" ("$B%C(B" . "$B$C(B")) ("ka" nil ("$B%+(B" . "$B$+(B")) ("ke" nil ("$B%1(B" . "$B$1(B")) ("ki" nil ("$B%-(B" . "$B$-(B")) ("ko" nil ("$B%3(B" . "$B$3(B")) ("ku" nil ("$B%/(B" . "$B$/(B")) ("kya" nil ("$B%-%c(B" . "$B$-$c(B")) ("kye" nil ("$B%-%'(B" . "$B$-$'(B")) ("kyi" nil ("$B%-%#(B" . "$B$-$#(B")) ("kyo" nil ("$B%-%g(B" . "$B$-$g(B")) ("kyu" nil ("$B%-%e(B" . "$B$-$e(B")) ("ma" nil ("$B%^(B" . "$B$^(B")) ("me" nil ("$B%a(B" . "$B$a(B")) ("mi" nil ("$B%_(B" . "$B$_(B")) ("mo" nil ("$B%b(B" . "$B$b(B")) ("mu" nil ("$B%`(B" . "$B$`(B")) ("mya" nil ("$B%_%c(B" . "$B$_$c(B")) ("mye" nil ("$B%_%'(B" . "$B$_$'(B")) ("myi" nil ("$B%_%#(B" . "$B$_$#(B")) ("myo" nil ("$B%_%g(B" . "$B$_$g(B")) ("myu" nil ("$B%_%e(B" . "$B$_$e(B")) ("n" nil ("$B%s(B" . "$B$s(B")) ("n'" nil ("$B%s(B" . "$B$s(B")) ("na" nil ("$B%J(B" . "$B$J(B")) ("ne" nil ("$B%M(B" . "$B$M(B")) ("ni" nil ("$B%K(B" . "$B$K(B")) ("nn" nil ("$B%s(B" . "$B$s(B")) ("no" nil ("$B%N(B" . "$B$N(B")) ("nu" nil ("$B%L(B" . "$B$L(B")) ("nya" nil ("$B%K%c(B" . "$B$K$c(B")) ("nye" nil ("$B%K%'(B" . "$B$K$'(B")) ("nyi" nil ("$B%K%#(B" . "$B$K$#(B")) ("nyo" nil ("$B%K%g(B" . "$B$K$g(B")) ("nyu" nil ("$B%K%e(B" . "$B$K$e(B")) ("o" nil ("$B%*(B" . "$B$*(B")) ("pp" "p" ("$B%C(B" . "$B$C(B")) ("pa" nil ("$B%Q(B" . "$B$Q(B")) ("pe" nil ("$B%Z(B" . "$B$Z(B")) ("pi" nil ("$B%T(B" . "$B$T(B")) ("po" nil ("$B%](B" . "$B$](B")) ("pu" nil ("$B%W(B" . "$B$W(B")) ("pya" nil ("$B%T%c(B" . "$B$T$c(B")) ("pye" nil ("$B%T%'(B" . "$B$T$'(B")) ("pyi" nil ("$B%T%#(B" . "$B$T$#(B")) ("pyo" nil ("$B%T%g(B" . "$B$T$g(B")) ("pyu" nil ("$B%T%e(B" . "$B$T$e(B")) ("rr" "r" ("$B%C(B" . "$B$C(B")) ("ra" nil ("$B%i(B" . "$B$i(B")) ("re" nil ("$B%l(B" . "$B$l(B")) ("ri" nil ("$B%j(B" . "$B$j(B")) ("ro" nil ("$B%m(B" . "$B$m(B")) ("ru" nil ("$B%k(B" . "$B$k(B")) ("rya" nil ("$B%j%c(B" . "$B$j$c(B")) ("rye" nil ("$B%j%'(B" . "$B$j$'(B")) ("ryi" nil ("$B%j%#(B" . "$B$j$#(B")) ("ryo" nil ("$B%j%g(B" . "$B$j$g(B")) ("ryu" nil ("$B%j%e(B" . "$B$j$e(B")) ("ss" "s" ("$B%C(B" . "$B$C(B")) ("sa" nil ("$B%5(B" . "$B$5(B")) ("se" nil ("$B%;(B" . "$B$;(B")) ("sha" nil ("$B%7%c(B" . "$B$7$c(B")) ("she" nil ("$B%7%'(B" . "$B$7$'(B")) ("shi" nil ("$B%7(B" . "$B$7(B")) ("sho" nil ("$B%7%g(B" . "$B$7$g(B")) ("shu" nil ("$B%7%e(B" . "$B$7$e(B")) ("si" nil ("$B%7(B" . "$B$7(B")) ("so" nil ("$B%=(B" . "$B$=(B")) ("su" nil ("$B%9(B" . "$B$9(B")) ("sya" nil ("$B%7%c(B" . "$B$7$c(B")) ("sye" nil ("$B%7%'(B" . "$B$7$'(B")) ("syi" nil ("$B%7%#(B" . "$B$7$#(B")) ("syo" nil ("$B%7%g(B" . "$B$7$g(B")) ("syu" nil ("$B%7%e(B" . "$B$7$e(B")) ("tt" "t" ("$B%C(B" . "$B$C(B")) ("ta" nil ("$B%?(B" . "$B$?(B")) ("te" nil ("$B%F(B" . "$B$F(B")) ("tha" nil ("$B%F%!(B" . "$B$F$!(B")) ("the" nil ("$B%F%'(B" . "$B$F$'(B")) ("thi" nil ("$B%F%#(B" . "$B$F$#(B")) ("tho" nil ("$B%F%g(B" . "$B$F$g(B")) ("thu" nil ("$B%F%e(B" . "$B$F$e(B")) ("ti" nil ("$B%A(B" . "$B$A(B")) ("to" nil ("$B%H(B" . "$B$H(B")) ("tsu" nil ("$B%D(B" . "$B$D(B")) ("tu" nil ("$B%D(B" . "$B$D(B")) ("tya" nil ("$B%A%c(B" . "$B$A$c(B")) ("tye" nil ("$B%A%'(B" . "$B$A$'(B")) ("tyi" nil ("$B%A%#(B" . "$B$A$#(B")) ("tyo" nil ("$B%A%g(B" . "$B$A$g(B")) ("tyu" nil ("$B%A%e(B" . "$B$A$e(B")) ("u" nil ("$B%&(B" . "$B$&(B")) ("vv" "v" ("$B%C(B" . "$B$C(B")) ("va" nil ("$B%t%!(B" . "$B$&!+$!(B")) ("ve" nil ("$B%t%'(B" . "$B$&!+$'(B")) ("vi" nil ("$B%t%#(B" . "$B$&!+$#(B")) ("vo" nil ("$B%t%)(B" . "$B$&!+$)(B")) ("vu" nil ("$B%t(B" . "$B$&!+(B")) ("ww" "w" ("$B%C(B" . "$B$C(B")) ("wa" nil ("$B%o(B" . "$B$o(B")) ("we" nil ("$B%&%'(B" . "$B$&$'(B")) ("wi" nil ("$B%&%#(B" . "$B$&$#(B")) ("wo" nil ("$B%r(B" . "$B$r(B")) ("wu" nil ("$B%&(B" . "$B$&(B")) ("xx" "x" ("$B%C(B" . "$B$C(B")) ("xa" nil ("$B%!(B" . "$B$!(B")) ("xe" nil ("$B%'(B" . "$B$'(B")) ("xi" nil ("$B%#(B" . "$B$#(B")) ("xka" nil ("$B%u(B" . "$B$+(B")) ("xke" nil ("$B%v(B" . "$B$1(B")) ("xo" nil ("$B%)(B" . "$B$)(B")) ("xtsu" nil ("$B%C(B" . "$B$C(B")) ("xtu" nil ("$B%C(B" . "$B$C(B")) ("xu" nil ("$B%%(B" . "$B$%(B")) ("xwa" nil ("$B%n(B" . "$B$n(B")) ("xwe" nil ("$B%q(B" . "$B$q(B")) ("xwi" nil ("$B%p(B" . "$B$p(B")) ("xya" nil ("$B%c(B" . "$B$c(B")) ("xyo" nil ("$B%g(B" . "$B$g(B")) ("xyu" nil ("$B%e(B" . "$B$e(B")) ("yy" "y" ("$B%C(B" . "$B$C(B")) ("ya" nil ("$B%d(B" . "$B$d(B")) ("ye" nil ("$B%$%'(B" . "$B$$$'(B")) ("yo" nil ("$B%h(B" . "$B$h(B")) ("yu" nil ("$B%f(B" . "$B$f(B")) ("zz" "z" ("$B%C(B" . "$B$C(B")) ("z " nil "$B!!(B") ("z*" nil "$B"((B") ("z," nil "$B!E(B") ("z-" nil "$B!A(B") ("z." nil "$B!D(B") ("z/" nil "$B!&(B") ("z0" nil "$B!{(B") ("z:" nil "$(O!,(B") ("z;" nil "$(O!+(B") ("z@" nil "$B!}(B") ("z[" nil "$B!X(B") ("z]" nil "$B!Y(B") ("z{" nil "$B!Z(B") ("z}" nil "$B![(B") ("z(" nil "$B!J(B") ("z)" nil "$B!K(B") ("za" nil ("$B%6(B" . "$B$6(B")) ("ze" nil ("$B%<(B" . "$B$<(B")) ("zh" nil "$B"+(B") ("zi" nil ("$B%8(B" . "$B$8(B")) ("zj" nil "$B"-(B") ("zk" nil "$B",(B") ("zl" nil "$B"*(B") ("zL" nil "$B"M(B") ("zo" nil ("$B%>(B" . "$B$>(B")) ("zu" nil ("$B%:(B" . "$B$:(B")) ("zya" nil ("$B%8%c(B" . "$B$8$c(B")) ("zye" nil ("$B%8%'(B" . "$B$8$'(B")) ("zyi" nil ("$B%8%#(B" . "$B$8$#(B")) ("zyo" nil ("$B%8%g(B" . "$B$8$g(B")) ("zyu" nil ("$B%8%e(B" . "$B$8$e(B")) ("." nil skk-auto-kutouten) ("," nil skk-auto-kutouten) ("-" nil skk-auto-kutouten) (":" nil "$B!'(B") (";" nil "$B!((B") ("?" nil "$B!)(B") ("[" nil "$B!V(B") ("]" nil "$B!W(B") ("l" nil skk-latin-mode) ("q" nil skk-toggle-kana) ("L" nil skk-jisx0208-latin-mode) ("Q" nil skk-set-henkan-point-subr) ("X" nil skk-purge-from-jisyo) ("/" nil skk-abbrev-mode) ("$" nil skk-display-code-for-char-at-point) ("@" nil skk-today) ("\\" nil skk-input-by-code-or-menu) (skk-kakutei-key nil skk-kakutei) ;; XXX ;;("\t" nil skk-insert) ;;("," nil skk-previous-candidate) ;;("\M-\040" nil skk-start-henkan-with-completion); M-SPC ;;("\M-\121" nil skk-backward-and-set-henkan-point); M-Q ) ;; $B%3%s%9%?%s%H$K$7$F$7$^$o$J$$$N$O!"%m!<%^;zF~NO$H$OA4$/JL$N@_Dj$r(B ;; $B$9$k?M$b$$$k$+$i$G$9!#(B "*$B%-!uBVA+0\5,B'$N%j%9%H!#(B $B%j%9%H$N3FMWAG$O!"$=$l$>$l$,0l$D$N5,B'$G$"$j!"2<5-$N7A<0$rK~$?$7$F$$$J$1$l$P(B $B$J$i$J$$!#(B (INPUT-STATE NEXT-STATE OUTPUT) SKK $B$O(B INPUT-STATE $B$r8!=P$9$k$H!"(BOUTPUT $B$r%P%C%U%!$KA^F~$7!"B3$$$F(B NEXT-STATE $B$K>uBV$r0\$7$?$&$($G!"F~NOBT$A>uBV$H$J$k!#(B $BNc$($P!"(B (\"a\" nil (\"$B%"(B\" . \"$B$"(B\")) (\"ki\" nil (\"$B%-(B\" . \"$B$-(B\")) (\"tt\" \"t\" (\"$B%C(B\" . \"$B$C(B\")) (\"nn\" nil (\"$B%s(B\" . \"$B$s(B\")) (\"n'\" nil (\"$B%s(B\" . \"$B$s(B\")) $B>e5-$N5,B'$O!"$=$l$>$l!"(B a => $B$"(B ki => $B$-(B tt => $B$C(Bt nn => $B$s(B n' => $B$s(B $B$3$N$h$&$K>uBV$,0\$jJQ$o$k$3$H$r0UL#$9$k!#(B INPUT-STATE $B5Z$S(B NEXT-STATE $B$O!"DL>o(B US-ASCII $BJ8;z$+$i@.$kJ8;zNs$rMQ$$$k!#(B $B$?$@$7!"FCJL$J>l9g$K$O(B INPUT-STATE $B$K$=$l0J30$NJ8;zNs$r;XDj$9$k$3$H$,$"$k!#(B OUTPUT $B$K$O!"0J2<$N(B 3$B$D$N7A<0$r;XDj$G$-$k!#(B $BJ8;zNs(B -- $B$+$J%b!<%I!"%+%J%b!<%I$H$b!"$3$l$,A^F~$5$l$k!#(B $BJ8;zNs$HJ8;zNs$N%;%k(B ($B%I%C%H%Z%"(B) -- $B$+$J%b!<%I$K$*$$$F$O(B CDR $B$N!"%+%J%b!<%I$K$*$$$F$O(B CAR $B$NJ8;zNs$,!"(B $B$=$l$>$lA^F~$5$l$k!#(B $B4X?tL>%7%s%\%k(B -- $B4X?t$rJ}$N5,B'$rMx(B $BMQ$9$k$,!"(B `skk-rom-kana-rule-list' $B$NJ}$,M%@h$5$l$k!#=>$C$F%f!<%6$,FH<+$N5,(B $BB'$r@_Dj$7$?$$>l9g$K$O!"(B`skk-rom-kana-rule-list' $B$NJ}$r;H$&$N$,$h$$!#(B" :type '(repeat (list :tag "$B%k!<%k(B" (radio :tag "1 $BF~NO(B" (string :tag "$BJ8;zNs(B") (symbol :tag "$BJQ?tL>(B")) (radio :tag "2 $BuBV(B" (string :tag "$BJ8;zNs(B") (const :tag "nil ($B6u$N>uBV(B)" nil)) (radio :tag "3 $B=PNO(B" (function :tag "$B4X?t$G$-$a$k(B") (string :tag "$BJ8;zNs(B") (cons :tag "$BJ8;zNs$NAH(B" (string :tag "3-1 $B%+%?%+%J(B") (string :tag "3-2 $B$R$i$,$J(B"))))) :group 'skk-input-basic) (defcustom skk-rom-kana-rule-list '(;; $B%f!<%6!<$N9%$_$G@_Dj$,J,$l$=$&$JMWAG$O!"(B ;; skk-rom-kana-base-rule-list $B$+$i$3$A$i$X0\$7$^$7$g$&(B...$B!#(B ("hh" "h" ("$B%C(B" . "$B$C(B")) ;; when you may want to insert $B!V$,$s$^!W(Bby "gamma"... ("mm" "m" ("$B%s(B" . "$B$s(B"))) "*$B>uBVA+0\5,B'$N%j%9%H$G!"%f!<%6$NDI2C@_DjMQ$NJQ?t!#(B $B$3$NJQ?t$O!"(B`skk-rom-kana-base-rule-list' $B$HF1MM$N=q<0$rK~$?$9I,MW$,$"$k!#(B SKK $B$O5/F0;~$K$3$N(B 2 $BJQ?t$rJT=8$7$F(B `skk-rule-tree' $B$r:n@.$9$k$,!"(B `skk-rom-kana-rule-list' $B$N5,B'$O(B `skk-rom-kana-base-rule-list' $B$N5,B'$h$j$b(B $BM%@h$5$l$k!#(B $B%j%9%H$N3FMWAG$O!"$=$l$>$l$,0l$D$N5,B'$G$"$j!"2<5-$N7A<0$rK~$?$7$F$$$J$1$l$P(B $B$J$i$J$$!#(B (INPUT-STATE NEXT-STATE OUTPUT) SKK $B$O(B INPUT-STATE $B$r8!=P$9$k$H!"(BOUTPUT $B$r%P%C%U%!$KA^F~$7!"B3$$$F(B NEXT-STATE $B$K>uBV$r0\$7$?$&$($G!"F~NOBT$A>uBV$H$J$k!#(B $B>\$7$/$O!"(B`skk-rom-kana-base-rule-list' $B$N@bL@$r;2>H$N$3$H!#(B $B%f!<%6$O!"DI2C$7$?$$5,B'$r!"Nc$($P(B (setq skk-rom-kana-rule-list '( (\"hh\" \"h\" (\"$B%C(B\" . \"$B$C(B\")) (\"@\" nil \"$B!w(B\") ... )) $B>e5-$N$h$&$K(B `.emacs' $B$^$?$O(B `skk-init-file' $B$K$F@_Dj$9$k$3$H$,$G$-$k!#(B $B$3$NJQ?t$O!"I8=`$G$O(B (\"hh\" \"h\" (\"$B%C(B\" . \"$B$C(B\")) $B$N@_Dj$,$5$l$F$$$k!#$3$N5,B'$K=>$&$H!"(B ohhonn => $B$*$C$[$s(B ohhira => $B$*$C$R$i(B $B$N$h$&$KA^F~$5$l$k!#$b$7$3$l$r(B ohhonn => $B$*$*$[$s(B ohhira => $B$*$*$R$i(B $B$N$h$&$KJQ99$7$?$1$l$P!"$3$N@_Dj(B (\"hh\" \"h\" (\"$B%C(B\" . \"$B$C(B\")) $B$r:o=|$9$k!#(B $B$^$?!"(B`@' $B$G(B `skk-today' ($BEvF|$NF|IU$NF~NO(B) $B$r5/F0$9$kBe$j$K(B `$B!w(B' $B$rF~(B $BNO$7$?$$>l9g$O!"(B`skk-rom-kana-rule-list' $B$K(B (\"@\" nil \"$B!w(B\") $B$H$$$&MWAG$r2C$($k!#(B $B$b$7!"(BSKK $B$r5/F0$7$?8e$G(B `skk-rom-kana-rule-list' $B$rJQ99$7$?>l9g!"$=$N@_(B $BDj$rH?1G$5$;$k$K$O(B \\[skk-restart] $B$r(B")) (radio :tag "2 $BuBV(B" (string :tag "$BJ8;zNs(B") (const :tag "nil ($B6u$N>uBV(B)" nil)) (radio :tag "3 $B=PNO(B" (function :tag "$B4X?t$G$-$a$k(B") (string :tag "$BJ8;zNs(B") (cons :tag "$BJ8;zNs$NAH(B" (string :tag "3-1 $B%+%?%+%J(B") (string :tag "3-2 $B$R$i$,$J(B"))))) :group 'skk-input-basic) (defcustom skk-kana-input-search-function (lambda () (save-match-data (and (string-match "^h\\([bcdfghjklmnpqrstvwxz]\\)$" skk-prefix) (member (char-to-string (preceding-char)) '("$B$*(B" "$B%*(B")) (cons '("$B%*(B" . "$B$*(B") (match-string 1 skk-prefix))))) "*$B%k!<%k%j%9%H$NCf$K5-$;$J$$JQ49%k!<%k$r=hM}$9$k4X?t!#(B `skk-rom-kana-base-rule-list' $B$H(B `skk-rom-kana-rule-list' $B$NMWAG$rA4$F8!:w(B $B$7$?8e$K%3!<%k$5$l$k!#0z?t$O$J$$!#(B ($B8=:_$NF~NO$KBP$9$k=PNO(B . \"$BB3$/(B unfixed prefix\") $B$H$$$&%;%k$rJV$9!#=PNO$NH$N$3$H!#(B $B%G%U%)%k%H$G$O!"(B\"$B$*(B\" $B$N8e$N(B \"h\" + $B;R2;$NF~NO$r(B \"$B$*$*(B\" + $BB3$/;R2;(B $B=hM}MQ$N(B unfixed prefix $B$KJQ49$7$F$$$k!#(B" :type 'function :group 'skk-input-basic) (defcustom skk-downcase-alist nil "*$BJQ49%-!<(B ($BBgJ8;z%m!<%^;z(B) $B$N>.J8;z$X$NJQ495,B'$rI=$o$9O"A[%j%9%H!#(B $BJQ49%-!<$NF~NO$r3+;O$9$k:]!"(BSKK $B$G$OBgJ8;z$GF~NO$r9T$&$N$G!"(B `skk-set-henkan-point' $B$NCf$G$3$l$r>.J8;z$KJQ49$9$k!#$3$NO"A[(B $B%j%9%H$KBgJ8;z(B -> $B>.J8;z$NJQ49%k!<%k$r=q$$$F$*$/$3$H$G!"%-!l9g$O!"C1$K(B downcase $B$5$l$k!#(B" :type '(repeat (cons character character)) :group 'skk-input-basic) (defcustom skk-jisx0208-latin-vector [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil "$B!!(B" "$B!*(B" "$B!I(B" "$B!t(B" "$B!p(B" "$B!s(B" "$B!u(B" "$B!G(B" "$B!J(B" "$B!K(B" "$B!v(B" "$B!\(B" "$B!$(B" "$B!](B" "$B!%(B" "$B!?(B" "$B#0(B" "$B#1(B" "$B#2(B" "$B#3(B" "$B#4(B" "$B#5(B" "$B#6(B" "$B#7(B" "$B#8(B" "$B#9(B" "$B!'(B" "$B!((B" "$B!c(B" "$B!a(B" "$B!d(B" "$B!)(B" "$B!w(B" "$B#A(B" "$B#B(B" "$B#C(B" "$B#D(B" "$B#E(B" "$B#F(B" "$B#G(B" "$B#H(B" "$B#I(B" "$B#J(B" "$B#K(B" "$B#L(B" "$B#M(B" "$B#N(B" "$B#O(B" "$B#P(B" "$B#Q(B" "$B#R(B" "$B#S(B" "$B#T(B" "$B#U(B" "$B#V(B" "$B#W(B" "$B#X(B" "$B#Y(B" "$B#Z(B" "$B!N(B" "$B!@(B" "$B!O(B" "$B!0(B" "$B!2(B" "$B!F(B" "$B#a(B" "$B#b(B" "$B#c(B" "$B#d(B" "$B#e(B" "$B#f(B" "$B#g(B" "$B#h(B" "$B#i(B" "$B#j(B" "$B#k(B" "$B#l(B" "$B#m(B" "$B#n(B" "$B#o(B" "$B#p(B" "$B#q(B" "$B#r(B" "$B#s(B" "$B#t(B" "$B#u(B" "$B#v(B" "$B#w(B" "$B#x(B" "$B#y(B" "$B#z(B" "$B!P(B" "$B!C(B" "$B!Q(B" "$B!A(B" nil] "*`skk-jisx0208-latin-insert' $B$G;2>H$5$l$kJ8;z%F!<%V%k!#(B $B%-!<$KBP1~$9$k0LCV$KJ8;zNs$,$"$l$P!"A41Q%b!<%I$G3:Ev$N%-!<$r2!$9$3$H$G!"BP1~$9(B $B$kJ8;z$,A^F~$5$l$k!#(B $BNc$($P!"%9%Z!<%9%-!<$KBP1~$7$F!"H>3Q%9%Z!<%9$rA^F~$5$;$k$h$&$KJQ99$7$?$1$l$P!"(B skk.el $B$N%m!<%I8e(B ($B$b$7$/$O(B `skk-load-hook' $B$rMxMQ$7$F(B)$B!"(B (aset skk-jisx0208-latin-vector 32 \" \") $B$H$9$k$+!"$b$7$/$O!"(B`skk-jisx0208-latin-vector' $B$N(B 32 $BHVL\(B (0 $BHV$+$i?t$($F(B) $B$NCM$r(B \" \"$B$H$9$k$h$&$J(B `skk-jisx0208-latin-vector' $B$rD>@\=q$-!"(Bsetq $B$G(B $BBeF~$9$k!#(B32 $B$O!"(B? ($BH>3Q%9%Z!<%9$N(B char type) $B$rI>2A$7$?$H$-$NCM!#(B" :type 'sexp :group 'skk-input-basic) (defcustom skk-special-midashi-char-list '(?> ?< ??) "*$B@\F,<-!"@\Hx<-$NF~NO$r;XDj$9$kJ8;z$N%j%9%H!#(B" ;; "*List of characters for entering prefixes and suffixes." :type '(repeat character) :group 'skk-input-basic) (defcustom skk-kuten-touten-alist '((jp . ("$B!#(B" . "$B!"(B")) (en . ("$B!%(B" . "$B!$(B")) (jp-en . ("$B!#(B" . "$B!$(B")) (en-jp . ("$B!%(B" . "$B!"(B"))) "*$B6gE@$HFIE@$NO"A[%j%9%H!#(B $B3FMWAG$N7A<0$O!"(B ($B%7%s%\%k(B . ($B6gE@$rI=$o$9J8;zNs(B . $BFIE@$rI=$o$9J8;zNs(B)) $B$H$$$&(B cons cell$B!#%7%s%\%k$NItJ,$O!"(B`jp' $B$b$7$/$O(B `en' $B!#(B \\[skk-toggle-kutouten] $B$O!"$3$l$r%H%0%k$G@Z$j49$($k!#(B $B%G%U%)%k%H$N6gFIE@$N%?%$%W$O!"JQ?t(B `skk-kutouten-type' $B$G;XDj$9$k!#(B" :type '(repeat (cons (radio :tag "$BAH$N$J$^$((B" (const jp) (const en) (const jp-en) (const en-jp)) (cons :tag "$B6gFIE@$NAH(B" (string :tag "$B6gE@(B" "$B!#(B") (string :tag "$BFIE@(B" "$B!"(B")))) :group 'skk-input-basic) (defcustom skk-kutouten-type 'jp "*$BI8=`$N6gFIE@$N%?%$%W!#(B $B$3$NJQ?t$NCM$K;XDj$G$-$k%7%s%\%k$H6gFIE@$NAH$H$NBP1~$O0J2<$NDL$j!#(B `jp': $B!V!#!W!V!"!W(B `en': $B!V!%!W!V!$!W(B `jp-en': $B!V!#!W!V!$!W(B `en-jp': $B!V!%!W!V!"!W(B $B$3$NJQ?t$K$O%3%s%9!&%;%k$r;XDj$9$k$3$H$b2DG=!#$=$N>l9g$O(B ($B6gE@$r<($9J8;zNs(B . $BFIE@$r<($9J8;zNs(B) $B$N$h$&$K;XDj$9$k!#(B $B$3$NJQ?t$O(B `skk-use-kana-keyboard' $B$,(B non-nil $B$J$i$PL58z$G$"$k!#(B $B$3$NJQ?t$O(B `setq' $B$9$k$H%P%C%U%!%m!<%+%k2=$5$l$k$?$a!"%0%m!<%P%k$K(B $BCM$r@_Dj$7$?$$>l9g$O(B `setq-default' $B$rMQ$$$k$3$H$,?d>)$5$l$k!#(B" :type '(radio (const jp) (const en) (const jp-en) (const en-jp) (cons :tag "$BG$0U$NAH(B" (string :tag "$B6gE@(B" "$B!#(B") (string :tag "$BFIE@(B" "$B!"(B"))) :group 'skk-input-basic) (make-variable-buffer-local 'skk-kutouten-type) ;;;###autoload (put 'skk-kutouten-type 'safe-local-variable 'symbolp) (defcustom skk-use-auto-kutouten nil "*Non-nil $B$G$"$l$P!"$+$J%b!<%I$K$*$1$kD92;(B($B!<(B)$B!"6gE@(B($B!#(B)$BKt$OFIE@(B($B!"(B)$B$NF0:n$rJQ99$9$k!#(B ASCII $B?t;z$ND>8e$G$"$l$P!"D92;(B($B!<(B)$B$O(B `-' $B$X!"6gE@(B($B!#(B)$B$O(B `.' $B$X!"FIE@(B($B!"(B)$B$O(B `,' $B$X$HJQ99$7!"(BJISX0208($BA43Q(B)$B?t;z$ND>8e$G$"$l$P!"D92;(B($B!<(B)$B$O(B `$B!](B' $B$X!"6gE@(B($B!#(B)$B$O(B `$B!%(B' $B$X!"FIE@(B($B!"(B)$B$O(B `$B!$(B' $B$X$HJQ99$9$k!#(B" :type 'boolean :group 'skk-input-basic) (defcustom skk-auto-insert-paren nil "*Non-nil $B$G$"$l$P!"3g8L$HJD3g8L$r$^$H$a$FA^F~$9$k!#(B $BNc$($P!"(B\"$B!V(B\" $B$rF~NO$7$?$H$-$K(B \"$B!W(B\" $B$r<+F0E*$KA^F~$7!"N>$+$.3g8L$N4V$K(B $B%+!<%=%k$r0\F0$9$k!#(B $BA^F~$9$kJ8;zNs$O!"(B`skk-auto-paren-string-alist' $B$G;XDj$9$k!#(B" :type 'boolean :group 'skk-basic :group 'skk-input-basic) (defcustom skk-auto-paren-string-alist '(("$B!V(B" . "$B!W(B") ("$B!X(B" . "$B!Y(B") ("(" . ")") ("$B!J(B" . "$B!K(B") ("{" . "}")("$B!P(B" . "$B!Q(B") ("$B!R(B" . "$B!S(B") ("$B!T(B" . "$B!U(B") ("[" . "]") ("$B!N(B" . "$B!O(B") ("$B!L(B" . "$B!M(B") ("$B!Z(B" . "$B![(B") ("\"" . "\"")("$B!H(B" . "$B!I(B") ("`" . "'") ;;("<" . ">") ;; skk-special-midashi-char-list $B$NCf$K$"$kJ8;z!#(B ) "*$B<+F0E*$KBP$K$J$kJ8;zNs$rF~NO$9$k$?$a$NO"A[%j%9%H!#(B `skk-auto-insert-paren' $B$,(B non-nil $B$N>l9g!"(Bcar $B$NJ8;zNs$,A^F~$5$l$?$H$-(B $B$K(B cdr $B$NJ8;zNs$r<+F0E*$KA^F~$7!"%+!<%=%k$O$=$N(B 2 $B$D$NJ8;z$N4V$K0\F0$9$k!#(B `skk-special-midashi-char-list' $B$NMWAG$K$J$C$F$$$kJ8;z$O!"(B `skk-auto-paren-string-alist' $B$K4^$a$F$b:o=|$5$l$k!#(B " :type '(repeat (cons string string)) :group 'skk-input-basic) (defcustom skk-use-auto-enclose-pair-of-region nil "*Non-nil $B$G$"$l$P!"%j!<%8%g%s$,M-8z$J>uBV$G(B `skk-auto-insert-paren' $B$r$lFCJL$J5!G=$K3d$jEv(B $B$F$i$l$F$$$k$N$G!"$3$N%j%9%H$NCf$K$O4^$a$J$$$3$H!#(B" :type '(repeat character) :group 'skk-henkan) (defface skk-henkan-show-candidates-keys-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*$BA*Br%-!<$N(B face $BB0@-!#(B" :group 'skk-henkan :group 'skk-visual) (defcustom skk-henkan-rest-indicator nil "*Non-nil $B$G$"$l$P(B \[$B;D$j(B 99++\] $B$NI=<($r1&4s$;G[CV$9$k!#(B" :type 'boolean :group 'skk-henkan :group 'skk-visual) (defface skk-henkan-rest-indicator-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*\[$B;D$j(B 99++\] $B$N(B face $BB0@-!#(B" :group 'skk-henkan :group 'skk-visual) (defcustom skk-auto-start-henkan t "*$BC18l$dJ8@a$N6h@Z$j$r<($9J8;z$NBG80$K$h$j<+F0E*$KJQ49$r3+;O$9$k!#(B `skk-auto-start-henkan-keyword-list' $B$K$h$jC18l$dJ8@a$N6h@Z$j$r<($9J8;z$r(B $B;XDj$9$k!#(B" :type 'boolean :group 'skk-henkan) (defcustom skk-auto-start-henkan-keyword-list '("$B$r(B" "$B!"(B" "$B!#(B" "$B!%(B" "$B!$(B" "$B!)(B" "$B!W(B" "$B!*(B" "$B!((B" "$B!'(B" ")" ";" ":" "$B!K(B" "$B!I(B" "$B![(B" "$B!Y(B" "$B!U(B" "$B!S(B" "$B!Q(B" "$B!O(B" "$B!M(B" "}" "]" "?" "." "," "!") ;; $B$"$^$j%-!<%o!<%I$,B?$/$J$k$H!"DL>o$NJQ49$r:$Fq$K$9$k!)(B "*$B<+F0JQ49$r3+;O$9$k%-!<%o!<%I!#(B `skk-auto-start-henkan' $B$,(B non-nil $B$N$H$-!"$3$N%j%9%H$NMWAG$NJ8;z$rBG80(B $B$9$k$H!"(BSPC (`skk-start-henkan-char') $B$r2!$7$?$+$N$h$&$KJQ49$r3+;O$7$F(B $B"'%b!<%I$KF~$k!#(B" :type '(repeat string) :group 'skk-henkan) (defcustom skk-force-registration-mode-char ?. "*$B6/@)E*$K<-=qEPO?%b!<%I$KF~$k%-!<%-%c%i%/%?!#(B $B%(%3!<%(%j%"$G8uJd$rI=<($7$F$$$k$H$-$K$3$NJQ?t$GDj5A$7$?%-!<%-%c%i%/%?$r(B $B%?%$%W$9$k$H!"6/@)E*$K<-=qEPO?%b!<%I$KF~$j$^$9!#(B" :type 'character :group 'skk-henkan) (defcustom skk-show-candidates-toggle-display-place-char ?\C-f "*$B8uJdI=<(0lMw$N0LCV$r%(%3!<%(%j%"$H%P%C%U%!$H$G@Z$jBX$($k%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-henkan) (defcustom skk-backward-and-set-henkan-point-char ?\321 ; M-Q "*$B%]%$%s%H$rLa$7$F"&%b!<%I$KF~$k%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-henkan) (defcustom skk-show-inline nil "*Non-nil $B$G$"$l$P!"JQ498uJd$r%$%s%i%$%sI=<($9$k!#(B `vertical' $B$G$"$l$P!"=DJ}8~$K%$%s%i%$%sI=<($9$k!J(BXEmacs $B$G$OF0:n$7$J$$!K!#(B" :type '(radio (const :tag "$BM-8z(B" t) (const :tag "$BM-8z(B ($B=DI=<((B)" vertical) (const :tag "$BL58z(B" nil)) :group 'skk-basic :group 'skk-henkan) (defcustom skk-inline-show-face 'underline "*$B%$%s%i%$%sI=<($9$kJQ498uJd$rAu>~$9$k%U%'%$%9$r;XDj$9$kJQ?t!#(B $B8uJdJ8;zNs$N%U%'%$%9B0@-$r$=$N$^$^;H$$$?$$>l9g$O(B nil $B$K@_Dj$9$k!#(B" :type '(radio (face :tag "$B%U%'%$%9$r;XDj(B") (const :tag "$B8uJdJ8;zNs$N%U%'%$%9B0@-$r$=$N$^$^;HMQ(B" nil)) :group 'skk-visual) (defcustom skk-inline-show-background-color (if (eq skk-background-mode 'light) "beige" "gray15") "*$B%$%s%i%$%sI=<($9$kJQ498uJd$NGX7J?'$r;XDj$9$kJQ?t!#(B `skk-inline-show-face' $B$^$?$O(B `skk-treat-candidate-appearance-function' $B$G(B $BGX7J?'$,;XDj$5$l$F$$$J$$J8;z$KBP$7$F$N$_:nMQ$9$k!#(B" :type 'string :group 'skk-visual) (defcustom skk-inline-show-background-color-odd (if (eq skk-background-mode 'light) "wheat" "gray20") "*$B%$%s%i%$%sI=<($9$kJQ498uJd$NGX7J?'(B($B4q?t%i%$%s(B)$B$r;XDj$9$kJQ?t!#(B `skk-inline-show-face' $B$^$?$O(B `skk-treat-candidate-appearance-function' $B$G(B $BGX7J?'$,;XDj$5$l$F$$$J$$J8;z$KBP$7$F$N$_:nMQ$9$k!#(B" :type 'string :group 'skk-visual) (defcustom skk-search-end-function nil "*$BC18l8!:w=*N;;~$K%3!<%k$5$l$k4X?t!#(B $B$3$N4X?t$rMxMQ$7$F8!:w$7$?C18l$NM%@h=g0L$rJQ99$9$k$J$I$N:n6H$,2DG=!#(B HENKAN-BUFFER, MIDASI, OKURIGANA, ENTRY $B$N(B 4 $B0z?t$rH<$J$C$F%3!<%k$5$l$k!#(B $B2C9)$7$?(B ENTRY $B$rJV$9$3$H!#(B $B$3$N4X?t$O!"<-=q%P%C%U%!$G%3!<%k$5$l$k$N$G!"JQ49$r9T$C$?%P%C%U%!%m!<%+%k$J(B $B>pJs$r \"$B2>L>(B\" $B$3$NCM$,(B nil $B$G$"$l$P!":G=i$N%9%Z!<%9$G8+=P$78l$r@Z$j5M$a$F$7$^$$!"0J9_$N%9%Z!<(B $B%9!"%?%V!"2~9T$OL5;k$5$l$k!#(B $B$3$NCM$O!"(B`skk-toggle-characters' $B5Z$S(B `skk-backward-and-set-henkan-point' $B$NF0(B $B:n$K1F6A$9$k!#(B" :type 'boolean :group 'skk-henkan) (defcustom skk-delete-okuri-when-quit nil "*Non-nil $B$G$"$l$PJQ49Cf$N(B \\[keyboard-quit] $B$GAw$j2>L>$r>C$7$F"&%b!<%I(B $B$KF~$k!#(B $BNc!K(B \"$B"&$J(B*$B$/(B -> $B"'5c$/(B -> \\[keyboard-quit] ->$B"&$J(B\" nil $B$G$"$l$P!"Aw$j2>L>$r4^$a$?8+=P$78l$r$=$N$^$^;D$7$F"&%b!<%I$KF~$k!#(B $BNc!K(B \"$B"&$J(B*$B$/(B -> $B"'5c$/(B -> \\[keyboard-quit] -> $B"&$J$/(B\"" :type 'boolean :group 'skk-henkan) (defcustom skk-henkan-show-candidates-rows 1 "*$BJQ498uJd72$NI=<(9T?t!#(B" :type 'integer :group 'skk-henkan) (defcustom skk-show-candidates-always-pop-to-buffer nil "*$B$3$NJQ?t$,(B non-nil $B$G$"$l$P!">o$K(B\"*$B8uJd(B*\"$B%P%C%U%!$r:n@=$7$F!"JQ498uJd0lMw$r@lMQ%&%#%s%I%&$KI=<($9$k!#(B $B$3$NJQ?t$,(B nil $B$G$"$l$P!"8uJd0lMw$r%(%3!<%(%j%"$KI=<($9$k!#$?$@$7!"8uJd0lMw$NJ8;zNs$ND9$5$,%U%l!<%`$N2#I}$K<}$^$i$J$$>l9g$O!"(B\"*$B8uJd(B*\"$B%P%C%U%!$r:n@=(B(pop-to-buffer)$B$7$F@lMQ$N%&%#%s%I%&$GI=<($9$k!#(B " :type 'boolean :group 'skk-henkan) (defcustom skk-candidate-buffer-background-color nil "*\"*$B8uJd(B*$B%P%C%U%!(B\"$B$NGX7J?'!#(B" :type '(radio (string :tag "$B?'$NL>A0(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-henkan :group 'skk-visual) (defcustom skk-candidate-buffer-background-color-odd nil "*\"*$B8uJd(B*$B%P%C%U%!(B\"$B$NGX7J?'!J4q?t%i%$%s!K!#(B" :type '(radio (string :tag "$B?'$NL>A0(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-henkan :group 'skk-visual) (defcustom skk-candidate-buffer-display-fringes t "*nil $B$G$"$l$P!"(B\"*$B8uJd(B*$B%P%C%U%!(B\" $B$N(B fringe $B$r>C$9(B." :type 'boolean :group 'skk-henkan :group 'skk-visual) (defvar skk-candidate-buffer-fringe-width (list nil (cdr (assoc 'left-fringe (frame-parameters))) (cdr (assoc 'right-fringe (frame-parameters)))) "skk $B5/F0;~$N(B fringe $B$NI}(B") (defcustom skk-search-katakana nil "*$B$+$J$rC1=c$K%+%?%+%JJQ49$7$?8uJd$rI=<($9$k$+$I$&$+$r7h$a$k%*%W%7%g%s!#(B nil $B$J$i$P4^$a$J$$!#(Bt $B$J$i$PA43Q%+%J8uJd$r4^$a$k!#(B `jisx0201-kana' $B$J$i$PA43Q$K2C$($FH>3Q%+%J8uJd$b4^$a$k!#(B $B$3$N5!G=$O0lHLE*$J(B FEP $B$N;H$$>!3Q%+%J$b4^$a$k(B" jisx0201-kana)) :group 'skk-henkan) (defcustom skk-search-sagyo-henkaku nil "*$B4J0W$J%5JQF0;lJQ495!G=$rM-8z$K$9$k$+$I$&$+7h$a$k%*%W%7%g%s!#(B nil $B$J$i$P!"Aw$j2>L>$,(B \"$B$5(B\" \"$B$7(B\" \"$B$9(B\" \"$B$;(B\" $B$N$$$:$l$+$N;~$K(B $BAw$j$J$78uJd$,JQ498uJd$K8=$l$k!#(B anything $B$K@_Dj$9$k$H!"Aw$j2>L>$,2?$G$"$C$F$bAw$j$J$78uJd$rAw$j$"$jJQ49$K(B $BMQ$$$k!#$3$N>l9g!"Aw$j2>L>$H$$$&$h$j$b!"G$0U$N4A;z$H$+$J$N@Z$jBX$(0LCV$r(B $B;XDj$9$k$h$&$JF~NO$K$J$k!#(B $B$3$N5!G=$OIT@53N$J=PNO$r$9$k2DG=@-$KCm0U$9$kI,MW$,$"$k$,!"8D?M<-=q$r0i$F$?$$(B $B%f!<%6!<8~$1$KDs6!$5$l$k!#(B" :type '(radio (const :tag "$B$3$N5!G=$rL58z$K$9$k(B" nil) (const :tag "$B4J0W%5JQF0;lJQ49$r$9$k(B" t) (const :tag "$B$3$N5!G=$rG$0U$NAw$j$"$jJQ49$K3HD%$9$k(B" anything)) :group 'skk-henkan) (defcustom skk-kakutei-key "\C-j" "*$B4A;zJQ49$N3NDjF0:n$r9T$&%-! $B"'3NDj(B -> $B3NDj(Bs -> $B3NDj$9(B\" $B$N$h$&$KJQ498e!"!V$9!W$N(B prefix $B$G$"$k(B \"s\" $B$rF~NO$7$?;~E@$G3NDj$9$k!#(B nil $B$G$"$l$P!"Nc$($P(B \"$B"&$+$/$F$$(B -> $B"'3NDj(B -> $B"'3NDj(Bs -> $B"'3NDj$9$k(B -> $B3NDj$9$k!#(B\" $B$N$h$&$K(B `skk-kakutei' $B$rD>@\!"4V@\$K%3!<%k$9$k$^$G(B ($B6gFIE@$rF~NO$7$?$j!"(B $B?7$?$J"&%b!<%I$KF~$C$?$j$9$k$H4V@\E*$K(B `skk-kakutei' $B$r%3!<%k$9$k(B) $B$O!"3NDj(B $B$7$J$$$N$G!"$=$N4V$O!"JQ498uJd$rA*$SD>$9$3$H$J$I$,2DG=!#(B $B$3$N%*%W%7%g%sMxMQ;~$O!"(B`skk-process-okuri-early' $B$NCM$O(B nil $B$G$J$1$l$P(B $B$J$i$J$$!#(B" :type 'boolean :group 'skk-basic :group 'skk-kakutei) (defcustom skk-egg-like-newline nil "*Non-nil $B$G$"$l$P!""'%b!<%I$G(B RET $B$r%?%$%W$7$F$b3NDj$N$_9T$$!"2~9T$7$J$$!#(B" :type 'boolean :group 'skk-basic :group 'skk-kakutei) (defcustom skk-delete-implies-kakutei t "*Non-nil $B$G$"$l$P!""'%b!<%I$G(B BS $B$r2!$9$H!"A0$N0lJ8;z$r:o=|$73NDj$9$k!#(B nil $B$G$"$l$P!"0l$DA0$N8uJd$rI=<($9$k!#(B $B%7%s%\%k(B `dont-update' $B$G$"$l$P!"8D?M<-=q$r99?7$7$J$$!#(B $B$J$*!"$3$NJQ?t$NCM$K$+$+$o$i$:!"8uJd0lMw$rI=<($7$F$$$k$H$-$N(B BS $BBG80$O(B $BA08uJd(B($B72(B)$B$NI=<($K$J$k!#(B" :type '(radio (const t) (const dont-update) (const nil)) :group 'skk-basic :group 'skk-kakutei) (defcustom skk-kakutei-when-unique-candidate nil "*Non-nil $B$G$"$l$P!"JQ498uJd$,0l$D$7$+$J$$$H$-3NDjJQ49$9$k!#(B $B$3$NCM$,(B t $B$G$"$l$P$I$NJQ49%b!<%I$G$b3NDjJQ49$9$k!#(B `okuri-ari', `okuri-nasi', `abbrev' $B$N$$$:$l$+$rMWAG$H$9$k%j%9%H$G(B $B$"$l$P!"JQ49%b!<%I$,$=$N>r7o$K9gCW$7$?>l9g$N$_3NDjJQ49$9$k!#(B $B8uJd$,B>$KL5$$;v$r3NG'$9$k$?$a!"(B`skk-search-prog-list' $B$NFbMFl9g(B `skk-kakutei-search-prog-limit' $B$r@_Dj$9$k$3$H$G8!:wBP>]$r@)8B$9$k(B $B$3$H$b2DG=!#(B" :type '(radio (const :tag "$B>o$KM-8z(B" t) (set :tag "$BM-8z$K$9$kJQ49%b!<%I(B" (const :tag "$BAw$jM-$jJQ49(B" okuri-ari) (const :tag "$BAw$jL5$7JQ49(B" okuri-nasi) (const :tag "abbrev $BJQ49(B" abbrev)) (const :tag "$BL58z(B" nil)) :group 'skk-kakutei) (defcustom skk-kakutei-search-prog-limit nil "*$BJ#?t<-=q$K$h$k3NDjJQ49$K$*$$$F!"8!:wBP>]$H$9$k<-=q$r@)8B$9$k!#(B $B$3$l$,?tCM$G$"$l$P!"8!:wBP>]$r(B `skk-search-prog-list' $B$N@hF,$+$i$3(B $B$N8D?t$^$G$N<-=q$K@)8B$9$k!#(B $B$=$l0J30$G$"$l$PL5@)8B$KA4$F$N<-=q$rBP>]$H$9$k!#(B `skk-kakutei-when-unique-candidate' $B$,(B non-nil $B$N$H$-$N$_M-8z!#(B" :type '(radio (integer :tag "$BBP>]$H$9$k<-=q$N?t(B") (const :tag "$B@)8B$7$J$$(B" nil)) :group 'skk-kakutei) (defcustom skk-kakutei-end-function nil "*$B3NDj;~$K%3!<%k$5$l$k4X?t!#(B `skk-kakutei-initialize' $B$,%3!<%k$5$l$kA0$K$3$N4X?t$,%3!<%k$5$l$k$N$G!"(B $B:G8e$N3NDj$K4X$9$k%U%i%0N`$O!"$3$N4X?t$NCf$+$i;2>H$9$k$3$H$,$G$-$k!#(B" :type '(radio (function :tag "$B4X?t(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-kakutei) (defcustom skk-henkan-okuri-strictly nil "*Non-nil $B$G$"$l$P!"8+=P$78l$HAw$j2>L>$,0lCW$7$?$H$-$@$18uJd$H$7$F=PNO$9$k!#(B $BNc$($P!"2<5-$N$h$&$J<-=q%(%s%H%j$,(B `skk-jisyo' ($B8D?M<-=q(B) $B$K$"$C$?(B $B>l9g$K(B \"$B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/\" \"$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 SKK-JISYO.[SML] $B$NAw$j2>L>%(%s%H%j$O>e5-$N7A<0$K$J$C$F$$$J$$$N$G!"(B`skk-jisyo' $B$NAw$j$"$j$N<-=q%(%s%H%j$,$3$N7A<0$N$b$N$r$"$^$j4^$s$G$$$J$$>l9g$O!"$3$N(B $B%*%W%7%g%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 `skk-process-okuri-early' $B$NCM$,(B nil $B$J$i$P!">e5-$N7A<0$G(B `skk-jisyo' $B$,(B $B:n$i$l$k!#(B $B2<5-$N<0$rI>2A$9$k$3$H$G!"C18lEPO?$KF~$C$?$H$-$@$1(B $B0l;~E*$K$3$N%*%W%7%g%s$rL58z$K$9$k$3$H$,$G$-$k!#(B (add-hook 'minibuffer-setup-hook (function (lambda () (if (and (boundp 'skk-henkan-okuri-strictly) skk-henkan-okuri-strictly (not (eq last-command 'skk-purge-from-jisyo))) (progn (setq skk-henkan-okuri-strictly nil) (put 'skk-henkan-okuri-strictly 'temporary-nil t)))))) (add-hook 'minibuffer-exit-hook (function (lambda () (if (and (get 'skk-henkan-okuri-strictly 'temporary-nil) (<= (minibuffer-depth) 1)) (progn (put 'skk-henkan-okuri-strictly 'temporary-nil nil) (setq skk-henkan-okuri-strictly t)))))) $B$3$N%*%W%7%g%sMxMQ;~$O!"(B`skk-process-okuri-early' $B$NCM$O(B nil $B$G$J$1$l$P(B $B$J$i$J$$!#(B" :type 'boolean :group 'skk-basic :group 'skk-okurigana) (defcustom skk-henkan-strict-okuri-precedence nil "*Non-nil $B$G$"$l$P!"8+=P$78l$HAw$j2>L>$,0lCW$7$?8uJd$rM%@h$7$FI=<($9$k!#(B $BNc$($P!"2<5-$N$h$&$J<-=q%(%s%H%j$,(B `skk-jisyo' ($B8D?M<-=q(B) $B$K$"$C$?(B $B>l9g$K(B \"$B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/\" \"$B"&$*$*(B*$B$/(B\" $B$rJQ49$7$?$H$-!"$^$:(B\"$BB?$/(B\" $B$r=PNO$7!"(B $BL>$N%m!<%^;z%W%l%U%#%C%/%9F~NO;~E@$GJQ49$r3+;O$9$k!#(B $BNc$($P!"(B \"UgoK -> $B"'F0(Bk\"$B!#(B $BAw$j2>L>$,J,$i$J$$$^$^JQ49$7$F$$$k$3$H$K$J$k$N$G!"(B`skk-jisyo' $B$,Aw$j2>L>$K(B $BBP1~$7$?7A$K@.D9$7$J$$!#$D$^$j(B \"$B$&$4(Bk /$BF0(B/\" $B$N$h$&$J7ABV$N$^$^$H$J$k!#$?$@$7!"4{$K(B \"$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/]/\" $B$N$h$&$J%(%s%H%j$,(B `skk-jisyo' $B$K$"$l$P!"$=$l$rGK2u$7$J$$!#(B nil $B$G$"$l$P!"Aw$j2>L>$NF~NO$,40N;$7$?;~E@$GJQ49$,3+;O$9$k!#Nc$($P!"(B \"UgoK -> $B"&$&$4(B*k\", \"UgoKu -> $B"'F0$/(B\" $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(B $B$G$"$k(B `skk-kakutei-early', `skk-auto-okuri-process' $B5Z$S(B `skk-henkan-okuri-strictly' $B$O(B nil $B$K%;%C%H$5$l$k!#(B" :type 'boolean :group 'skk-okurigana) (defcustom skk-check-okurigana-on-touroku nil "*Non-nil $B$G$"$l$P!"Aw$j$"$j$NEPO?;~$K!"M>7W$J2>L>$r%A%'%C%/$9$k!#(B $BNc$($P!"(B \"$B$H$S$@(B*$B$9(B $BHt$S=P(B\" $B$HEPO?$9$k$N$,@5$7$$$K$b$+$+$o$i$:!"%f!<%6$,(B \"$B$H$S$@(B*$B$9(B $BHt$S=P$9(B\" $B$G$&$C$+$j(B [RET] $B$r2!$7$F$7$^$C$?$H$-$K!":G8e$N!V$9!W$,Aw$j2>L>$G$"$k$+$I$&$+(B $BD4$Y$k!#(B $B$3$NJQ?t$O0J2<$NCM$r$H$jF@$k!#4{DjCM$O(B nil$B!#(B ask -- $B%f!<%6$K3NG'$r5a$a!"Aw$j2>L>$HG'$a$i$l$l$P$3$l$r!L>$rH=CG$7$F:o=|$7$F$+$iEPO?$9$k!#(B nil -- $B0l@ZAw$j2>L>$N%A%'%C%/$r$;$:!"A4BN$rC18l$H$7$FEPO?$9$k!#$3$l$O(B SKK $BK\(B $BMh$NF0:n$G$"$k!#(B" :type '(radio (const :tag "$B%f!<%6$K3NG'$9$k(B" ask) (const :tag "$B<+F0E*$K=hM}$9$k(B" auto) (const :tag "$B%A%'%C%/$7$J$$(B" nil)) :group 'skk-basic :group 'skk-okurigana :group 'skk-private) (defcustom skk-okuri-char-alist nil "*$BAw$j2>L>(B prefix $B$rJQ49$9$k%k!<%k$r5-=R$9$kO"A[%j%9%H!#(B car $B$K!Vl9g$N$_$G$"$k!#(B $BNc$($P!"$+9T$NAw$j2>L>F~NO$K(B \"c\" $B$N(B prefix $B$r;H$&$N$G$"$l$P!"(B (setq skk-okuri-char-alist '((\"c\" . \"k\"))) $B$N$h$&$K=q$/!#(B" :type '(repeat (cons string string)) :group 'skk-okurigana) (defcustom skk-emacs-id-file (if skk-user-directory (expand-file-name "emacs-id" skk-user-directory) (convert-standard-filename "~/.skk-emacs-id")) "\ *`skk-jisyo-file' $B$K:G6a%"%/%;%9$7$?(B SKK $B$N(B `skk-emacs-id' $B$rJ]B8$9$k%U%!%$%k!#(B" :type 'file :group 'skk-misc) (defcustom skk-keep-record t "*Non-nil $B$G$"$l$P!"JQ495Z$S8D?M<-=q$K4X$9$kE}7W$r(B `skk-record-file' $B$KpJs$r<}$a$k!#(B" :type 'file :group 'skk-misc) (defcustom skk-byte-compile-init-file nil "*Non-nil $B$G$"$l$P!"(B`skk-mode' $B5/F0;~$K(B `skk-init-file' $B$r%P%$%H%3%s%Q%$%k$9$k!#(B $B@53N$K8@$&$H!"(B (1)`skk-init-file' $B$r%P%$%H%3%s%Q%$%k$7$?%U%!%$%k$,$J$$$+!"(B (2)`skk-init-file' $B$H$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$rHf3S$7$F!"A0C$9!#(B $B$3$NJQ?t$O(B ~/.emacs $B$G@_Dj$9$k$3$H!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-read-from-minibuffer-function nil "\ *$B<-=qEPO?%b!<%I$KF~$C$?$H$-$N%W%m%s%W%H$KI=<($9$k=i4|CM$rDs6!$9$k4X?t!#(B $B$3$N4X?t$OJ8;zNs$rJV$5$J$1$l$P$J$i$J$$!#(B $B4X?t(B `read-from-minibuffer' $B$N0z?t(B INITIAL-CONTENTS $B$K3:Ev$9$k!#(B `skk-henkan-key' $B$r$=$N$^$^=i4|CM$H$7$FMxMQ$7$?$$$H$-$O!"(B (setq skk-read-from-minibuffer-function (lambda () skk-henkan-key)) $B$H;XDj$9$k!#(B" :type '(radio (function :tag "$B4X?t(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-misc) (defface skk-jisyo-registration-badge-face '((((class color) (type tty)) (:inherit default :inverse-video t)) (((class color) (background light)) (:inherit default :inverse-video t)) (((class color) (background dark)) (:inherit default :inverse-video t)) (((class grayscale)) (:inherit default :inverse-video t))) "*$B"-<-=qEPO?Cf"-$KE,MQ$9$k%U%'%$%9!#(B" :group 'skk-visual) ;;;###autoload (defcustom skk-preload nil "*Non-nil $B$J$i$P!"(BEmacs $B5/F0;~$K(B SKK $B%W%m%0%i%`$H<-=q$NFI$_9~$_$r:Q$^$;$k!#(B Emacs $B$N5/F0$=$N$b$N$OCY$/$J$k$,!"(BDDSKK $B$N=i2s5/F0$rAa$/$9$k$3$H$,$G$-$k!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-undo-kakutei-word-only nil "*Non-nil $B$G$"$l$P(B $B"&%b!<%I$H"'%b!<%I;~$N%"%s%I%%>pJs$r5-O?$7$J$$!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-undo-kakutei-return-previous-point nil "*Non-nil $B$G$"$l$P!"3NDj%"%s%I%%=hM}$,40N;$7$?8e$K!"3NDj%"%s%I%%=hM}$N(B $BD>A0$N0LCV$K%+!<%=%k$rLa$9!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-show-japanese-menu (and window-system (or (eq window-system 'w32) (boundp 'mac-carbon-version-string) ; Carbon Emacs (featurep 'ns) ; Cocoa Emacs (and (eq window-system 'x) (boundp 'gtk-version-string) (stringp (symbol-value 'gtk-version-string)) (string< "2.0" (symbol-value 'gtk-version-string)))) (equal current-language-environment "Japanese")) "\ *Non-nil $B$G$"$l$P%a%K%e!<%P!<$rF|K\8l$GI=<($9$k!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-verbose nil "*Non-nil $B$G$"$l$P!"F~NOCf!?JQ49Cf$K%(%3!<%(%j%"$K>iD9$J%a%C%;!<%8$rI=<($9$k!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-verbose-wait 1.5 "*$B>iD9$J%a%C%;!<%8$rI=<($9$k$^$G$NBT$A;~4V(B ($BIC(B)$B!#(B" :type 'number :group 'skk-misc) (defcustom skk-verbose-message-interval 5.0 "*$B>iD9$J%a%C%;!<%8$,J#?t$"$k>l9g!"#1$D$"$?$jI=<(;~4V(B ($BIC(B)$B!#(B $B$3$N;~4V$,7P2a$7$?$iiD9$J%a%C%;!<%8$N(B {$B%"%N%F!<%7%g%s(B} $B$H(B {$B$I$l$r;2>H(B?} $B$KE,MQ$9$k(B $B%U%'%$%9!#(B" :group 'skk-visual) (defface skk-verbose-kbd-face '((((class color) (type tty)) (:inherit default :foreground "cyan")) (((class color) (background light)) (:inherit default :foreground "Purple")) (((class color) (background dark)) (:inherit default :foreground "Cyan")) (((class grayscale)) (:inherit default :foreground "LightGray"))) "*$B>iD9$J%a%C%;!<%8$NA`:n%-!iD9$J%a%C%;!<%8$NFbMF!#(B $BI8=`$G$O<+F0@_Dj$9$k!#(B" :type '(radio (string :tag "$BFbMF$r;XDj(B") (const :tag "$B<+F0@_Dj(B" nil)) :group 'skk-misc) (defcustom skk-j-mode-function-key-usage nil "*$B%-!<%\!<%I>e$N(B F1 $B!A(B F10 $B%-!<$N;H$$J}$r;XDj$9$k!#(B `conversion' $B$J$i$P!"(B`skk-search-prog-list-1' $B!A(B `skk-search-prog-list-0' $B$r(B $B$K!"(B`skk-auto-fill-mode-hook', `skk-load-hook', `skk-init-file' $B$G$b(B $B%+%9%?%^%$%:$,2DG=!#(B" ;; "*Hook run at SKK startup. This hook is also run ;;in skk-auto-fill-mode after skk-auto-fill-mode-hook. ;;skk-auto-fill-mode-hook, skk-load-hook, skk-init-file may also be used ;;for customization." :type 'hook :group 'skk-misc) (defcustom skk-auto-fill-mode-hook nil "*`skk-auto-fill-mode' $B$r5/F0$7$?$H$-$N%U%C%/!#(B $BB>$K!"(B`skk-mode-hook', `skk-load-hook', `skk-init-file' $B$G$b%+%9%?%^%$%:$,(B $B2DG=!#(B" ;; "*Hook run at startup of skk-auto-fill-mode. ;;skk-mode-hook$B!"(Bskk-load-hook, skk-init-file may also be used for ;;customization." :type 'hook :group 'skk-misc) (defcustom skk-load-hook nil "*skk.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B $BB>$K!"(B`skk-mode-hook', `skk-auto-fill-mode-hook', `skk-init-file' $B$G$b%+%9%?(B $B%^%$%:$,2DG=!#(B" ;; "*Hook run when SKK is loaded. ;;skk-auto-fill-mode-hook$B!"(Bskk-mode-hook, skk-init-file may also be used ;;for customization." :type 'hook :group 'skk-misc) (defcustom skk-status-indicator 'left "*SKK $B$N>uBV$r%b!<%I%i%$%s$N$I$N0LCV$KI=<($9$k$+$r7h$a$k!#(B left $B$G$"$l$P:8C<$KI=<($9$k!#(B $B$5$b$J$1$l$P%^%$%J!<%b!<%I$H$7$F$NI=<(K!$ro;~I=<($9$k!#(B $BI=<($9$k(B SKK $B%"%$%3%s$N2hA|$O(B `skk-icon' $B$G;XDj$9$k!#(B" :type 'boolean :set (lambda (symbol value) (prog1 (if (fboundp 'custom-set-default) (custom-set-default symbol value) (set-default symbol value)) (when (and (boundp 'skk-mode-invoked) skk-mode-invoked) (cond (value (if (featurep 'xemacs) (skk-xemacs-prepare-modeline-properties) (skk-emacs-prepare-modeline-properties)) (skk-setup-modeline)) (t (setq skk-icon nil)))))) :group 'skk-visual) (defcustom skk-echo t "*Non-nil $B$G$"$l$P!"2>L>J8;z$N%W%l%U%#%C%/%9$rI=<($9$k!#(B" :type 'boolean :group 'skk-visual) (defcustom skk-use-face (or window-system (fboundp 'selected-frame) ; XEmacs does not have this. (fboundp 'frame-face-alist)) "*Non-nil $B$G$"$l$P!"(BEmacs $B$N(B face $B$N5!G=$r;HMQ$7$FJQ498uJd$r%O%$%i%$%HI=<($9$k!#(B" :type 'boolean :group 'skk-basic :group 'skk-visual) ;; should use defface? however, can I use defface for highlight? (defcustom skk-henkan-face 'skk-henkan-face-default "*$BJQ498uJd$N(B face $BB0@-!#(B`skk-use-face' $B$,(B non-nil $B$N$H$-$N$_M-8z!#(B Emacs $BI8=`$N%U%'%$%9$N$[$+!"?7$?$K(B face $B$r:n$C$F;XDj$9$k$3$H$b2DG=!#(B $B?7$?$J(B face $B$r:n$C$F;XDj$9$k$K$O!"(B (setq skk-henkan-face (skk-make-face 'DimGray/PeachPuff1)) $B$N$h$&$K(B skk-make-face() $B$rMxMQ$9$k$N$,l9g$O!"(B`skk-make-face' $B$G(B $B$OBP1~$G$-$J$$$N$G!"(BEmacs $B$N(B hilit19.el $B$N(B `hilit-lookup-face-create' $B$J$I$rMxMQ$9$k!#(B $B?'$rIU$1$k>l9g$NG[?'$O!"(Bcanna.el $B$N(B `canna:attribute-alist' $B$,NI$$Nc$+$b$7$l$J$$!#(B $B$3$NJQ?t$h$j$b(B `skk-treat-candidate-appearance-function' $B$N@_Dj$,M%@h$5$l$k!#(B" :type 'face :group 'skk-visual) (defface skk-henkan-face-default '((((class color) (type tty)) (:foreground "black" :background "green")) (((class color) (background light)) (:foreground "black" :background "darkseagreen2")) (((class color) (background dark)) (:foreground "white" :background "darkolivegreen")) (((class grayscale)) (:underline t))) "*$BI8=`$NJQ498uJd$N(B face $BB0@-!#(B" :group 'skk-visual) (when (and skk-use-face (boundp 'frame-background-mode) (not frame-background-mode) (fboundp 'face-background) (not (face-background 'skk-henkan-face-default))) (set-face-foreground 'skk-henkan-face-default "black") (set-face-background 'skk-henkan-face-default "darkseagreen2")) (defcustom skk-henkan-overlay-priority 600 "*$BJQ49$7$?8uJd$K=E$M$k(B overlay $B$N(B priority$B!#(B $BNc$($P!"(BViper $B$G(B R $B%3%^%s%I$K$h$j(B replace $B$r9T$&$H$-$K!"(B `viper-replace-overlay' $B$H$$$&(B priority 400 $B$N(B overlay $B$r=E$M$i$l$k$,!"(B `skk-henkan-overlay-priority' $B$N%G%U%)%k%HCM$O$3$N(B overlay $B$h$j(B priority $B$,9b$$$N$G!"M%@h$7$FI=<($5$l$k!#(B" :type 'integer :group 'skk-visual) (defcustom skk-treat-candidate-appearance-function nil "*$B8uJd$NI=<($rAu>~$9$k$?$a$N4X?t$r;XDj$9$kJQ?t!#(B $B%f!<%6$O8uJd$H$J$k$Y$-J8;zNs$KBP$7$F!"$=$NCmr7o$rK~$?$9I,MW$,$"$k!#(B 1. $B0z?t$r#2$Do$NJQ49;~!"(Bnon-nil $B$N;~$O8uJd0lMwI=<(;~$rI=$9(B $B$b$N$H$7$F07$&$3$H!#(B 4. $BJV$jCM$O0J2<$N$$$:$l$+$H$9$k$3$H!#(B a. $BJ8;zNs(B $B$3$N>l9g!"$3$NJ8;zNs$O8uJd$H%"%N%F!<%7%g%s$rN>J}4^$_$&$k$b$N$H$7$F=h(B $BM}$5$l$k!#(B b. cons cell ($B8uJd(B . $B%"%N%F!<%7%g%s(B) $B$3$N>l9g!"8uJd$O$b$&%"%N%F!<%7%g%s$r4^$^$J$$$b$N$H$7$F=hM}$5$l$k!#(B $B%"%N%F!<%7%g%s$K$D$$$F$O@hF,$,(B \";\" $B$+$I$&$+$rD4$Y$?>e$G=hM}$5$l$k!#(B c. cons cell ($B8uJd(B . ($B%;%Q%l!<%?(B . $B%"%N%F!<%7%g%s(B)) $B$3$N>l9g!"8uJd$O$b$&%"%N%F!<%7%g%s$r4^$^$J$$$b$N$H$7$F=hM}$5$l$k!#(B $B%;%Q%l!<%?$ODL>o$N(B \";\" $B$NBe$o$j$KMxMQ$5$l$k!#%"%N%F!<%7%g%s$O$b$&(B $B%;%Q%l!<%?$r4^$^$J$$$b$N$H$7$F=hM}$5$l$k!#(B $B$3$N4X?t$O0J2<$N>l9g$K8F$P$l$k!#(B o $BDL>o$NJQ49F0:n$NETEY(B $B$3$N>l9g$O!"8uJd$O%P%C%U%!$K!"%"%N%F!<%7%g%s$O%(%3!<%(%j%"$J$I!J%f!<%6(B $B$N@_Dj$K$h$C$F0[$J$k>l=j!K$KI=<($5$l$k!#%;%Q%l!<%?$OI=<($5$l$J$$!#(B o $B8uJd0lMw$rI=<($9$k$H$-(B ($B8uJd$NJ8;zNs$N8e$m$K%"%N%F!<%7%g%s$,IU2C$5$l$k(B) $B$3$N>l9g$O!"8uJd!"%;%Q%l!<%?!"%"%N%F!<%7%g%s$N3FJ8;zNs$,I=<($5$l$k!#(B ($B@_DjNc(B) (setq skk-treat-candidate-appearance-function (lambda (candidate listing-p) (cond ((string-match \";\" candidate) (put-text-property 0 (match-beginning 0) 'face (if listing-p 'tooltip 'underline) candidate) (put-text-property (match-beginning 0) (length candidate) 'face 'shadow candidate)) (t (put-text-property 0 (length candidate) 'face (if listing-p 'tooltip 'underline) candidate))) candidate)) " :type '(radio (const :tag "$B@_Dj%5%s%W%k(B1" skk-treat-candidate-sample1) (const :tag "$B@_Dj%5%s%W%k(B2" skk-treat-candidate-sample2) (const :tag "$B;XDj$7$J$$(B" nil) (function :tag "$BG$0U$N4X?t(B")) :group 'skk-annotation :group 'skk-visual) ;; skk-treat-candidate-appearance-function $B$N$?$a$KMQ0U$9$k4X?t(B (defun skk-treat-candidate-sample1 (candidate listing-p) (cond ((string-match ";" candidate) (put-text-property 0 (match-beginning 0) 'face 'skk-tut-question-face candidate) (put-text-property (match-beginning 0) (length candidate) 'face 'skk-tut-hint-face candidate)) (t (put-text-property 0 (length candidate) 'face 'skk-tut-question-face candidate))) candidate) (defun skk-treat-candidate-sample2 (candidate listing-p) (let* ((value (skk-treat-strip-note-from-word candidate)) (cand (car value)) (note (if listing-p (or (and (eq skk-annotation-lookup-lookup 'always) (skk-lookup-get-content cand t)) (and (eq skk-annotation-lookup-DictionaryServices 'always) (skk-annotation-lookup-DictionaryServices cand t)) (cdr value)) (cdr value))) (sep (if note (propertize (if (skk-annotation-display-p 'list) " $B"b(B " " !") 'face 'skk-tut-do-it-face) nil))) (cond (note (put-text-property 0 (length cand) 'face 'skk-tut-question-face cand) (put-text-property 0 (length note) 'face 'skk-tut-hint-face note) (cons cand (cons sep note))) (t (put-text-property 0 (length cand) 'face 'skk-treat-default cand) cand)))) (defface skk-treat-default '((((class color) (background light)) (:foreground "black")) (((class color) (background dark)) (:foreground "white"))) "$BGX7J$J$7$NC1=c$J(B face$B!#(B`default' $B$NBe$o$j$K;H$&!#(B" :group 'skk-visual) ;;; -- Internal constants and variables of skk.el (defconst skk-coding-system-alist (cond ((and (featurep 'emacs) (>= emacs-major-version 23)) '(("euc" . euc-jis-2004) ("ujis" . euc-jis-2004) ("sjis". japanese-shift-jis-2004) ("jis" . iso-2022-jp-3))) ((featurep 'jisx0213) '(("euc" . euc-jisx0213) ("ujis" . euc-jisx0213) ("sjis". shift_jisx0213) ("jis" . iso-2022-jp-3-strict))) (t '(("euc" . euc-japan) ("ujis" . euc-japan) ("sjis". shift_jis) ("jis" . junet)))) "coding-system $B$NJ8;zNsI=8=$H!"%7%s%\%kI=8=$NO"A[%j%9%H!#(B") (defconst skk-kana-rom-vector ["x" "a" "x" "i" "x" "u" "x" "e" "x" "o" "k" "g" "k" "g" "k" "g" "k" "g" "k" "g" "s" "z" "s" "j" "s" "z" "s" "z" "s" "z" "t" "d" "t" "d" "t" "t" "d" "t" "d" "t" "d" "n" "n" "n" "n" "n" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "m" "m" "m" "m" "m" "x" "y" "x" "y" "x" "y" "r" "r" "r" "r" "r" "x" "w" "x" "x" "w" "n"] "$B$+$JJ8;z$+$i%m!<%^;z$X$NJQ49%k!<%k!#(B $B2<5-$N3:Ev$9$k$+$JJ8;z$r$=$NJ8;z$N%m!<%^;z%W%l%U%#%C%/%9$G8=$o$7$?$b$N!#(B $B$!(B $B$"(B $B$#(B $B$$(B $B$%(B $B$&(B $B$'(B $B$((B $B$)(B $B$*(B $B$+(B $B$,(B $B$-(B $B$.(B $B$/(B $B$0(B $B$1(B $B$2(B $B$3(B $B$4(B $B$5(B $B$6(B $B$7(B $B$8(B $B$9(B $B$:(B $B$;(B $B$<(B $B$=(B $B$>(B $B$?(B $B$@(B $B$A(B $B$B(B $B$C(B $B$D(B $B$E(B $B$F(B $B$G(B $B$H(B $B$I(B $B$J(B $B$K(B $B$L(B $B$M(B $B$N(B $B$O(B $B$P(B $B$Q(B $B$R(B $B$S(B $B$T(B $B$U(B $B$V(B $B$W(B $B$X(B $B$Y(B $B$Z(B $B$[(B $B$\(B $B$](B $B$^(B $B$_(B $B$`(B $B$a(B $B$b(B $B$c(B $B$d(B $B$e(B $B$f(B $B$g(B $B$h(B $B$i(B $B$j(B $B$k(B $B$l(B $B$m(B $B$n(B $B$o(B $B$p(B $B$q(B $B$r(B $B$s(B" ;; (length skk-kana-rom-vector) ;; --> 83 ;; (setq kana '("$B$!(B" "$B$"(B" "$B$#(B" "$B$$(B" "$B$%(B" "$B$&(B" "$B$'(B" "$B$((B" "$B$)(B" "$B$*(B" ;; "$B$+(B" "$B$,(B" "$B$-(B" "$B$.(B" "$B$/(B" "$B$0(B" "$B$1(B" "$B$2(B" "$B$3(B" "$B$4(B" ;; "$B$5(B" "$B$6(B" "$B$7(B" "$B$8(B" "$B$9(B" "$B$:(B" "$B$;(B" "$B$<(B" "$B$=(B" "$B$>(B" ;; "$B$?(B" "$B$@(B" "$B$A(B" "$B$B(B" "$B$C(B" "$B$D(B" "$B$E(B" "$B$F(B" "$B$G(B" "$B$H(B" "$B$I(B" ;; "$B$J(B" "$B$K(B" "$B$L(B" "$B$M(B" "$B$N(B" "$B$O(B" "$B$P(B" "$B$Q(B" "$B$R(B" "$B$S(B" "$B$T(B" ;; "$B$U(B" "$B$V(B" "$B$W(B" "$B$X(B" "$B$Y(B" "$B$Z(B" "$B$[(B" "$B$\(B" "$B$](B" ;; "$B$^(B" "$B$_(B" "$B$`(B" "$B$a(B" "$B$b(B" "$B$c(B" "$B$d(B" "$B$e(B" "$B$f(B" "$B$g(B" "$B$h(B" ;; "$B$i(B" "$B$j(B" "$B$k(B" "$B$l(B" "$B$m(B" "$B$n(B" "$B$o(B" "$B$p(B" "$B$q(B" "$B$r(B" "$B$s(B")) ;; (length kana) ;; --> 83 ;; (mapcar (lambda (s) (- (char-octet (string-to-char s) 1) 33)) ;; kana) ;; --> (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25\ ;; 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48\ ;; 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71\ ;; 72 73 74 75 76 77 78 79 80 81 82) ) (defconst skk-default-jisx0208-latin-vector ;; note that skk-jisx0208-latin-vector is a user variable. ;; skk.el $B%m!<%IA0$K(B .emacs $B$J$I$G!"(Bskk-jisx0208-latin-vector $B$NJL$NCM$r%f!<(B ;; $B%6!<$,D>@\=q$$$?$j!"(Bskk.el $B%m!<%I8e$K$3$NCM$r(B aset $B$GD>@\$$$8$C$?$j$7$J(B ;; $B$1$l$P(B default-value $B$G(B skk-jisx0208-latin-vector $B$K%"%/%;%9$9$k$3$H$G(B ;; skk-default-jisx0208-latin-vector $B$NCM$rJ];}$9$k$3$H$b$G$-$h$&$,!"$=$l$O(B ;; $BK>$a$J$$(B...$B!#(B [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil "$B!!(B" "$B!*(B" "$B!I(B" "$B!t(B" "$B!p(B" "$B!s(B" "$B!u(B" "$B!G(B" "$B!J(B" "$B!K(B" "$B!v(B" "$B!\(B" "$B!$(B" "$B!](B" "$B!%(B" "$B!?(B" "$B#0(B" "$B#1(B" "$B#2(B" "$B#3(B" "$B#4(B" "$B#5(B" "$B#6(B" "$B#7(B" "$B#8(B" "$B#9(B" "$B!'(B" "$B!((B" "$B!c(B" "$B!a(B" "$B!d(B" "$B!)(B" "$B!w(B" "$B#A(B" "$B#B(B" "$B#C(B" "$B#D(B" "$B#E(B" "$B#F(B" "$B#G(B" "$B#H(B" "$B#I(B" "$B#J(B" "$B#K(B" "$B#L(B" "$B#M(B" "$B#N(B" "$B#O(B" "$B#P(B" "$B#Q(B" "$B#R(B" "$B#S(B" "$B#T(B" "$B#U(B" "$B#V(B" "$B#W(B" "$B#X(B" "$B#Y(B" "$B#Z(B" "$B!N(B" "$B!@(B" "$B!O(B" "$B!0(B" "$B!2(B" "$B!F(B" "$B#a(B" "$B#b(B" "$B#c(B" "$B#d(B" "$B#e(B" "$B#f(B" "$B#g(B" "$B#h(B" "$B#i(B" "$B#j(B" "$B#k(B" "$B#l(B" "$B#m(B" "$B#n(B" "$B#o(B" "$B#p(B" "$B#q(B" "$B#r(B" "$B#s(B" "$B#t(B" "$B#u(B" "$B#v(B" "$B#w(B" "$B#x(B" "$B#y(B" "$B#z(B" "$B!P(B" "$B!C(B" "$B!Q(B" "$B!A(B" nil] "`skk-jisx0208-latin-region' $B$G;2>H$9$kJ8;z%F!<%V%k!#(B \"ascii\" -> \"$B#a#s#c#i#i(B\" $B$N$h$&$JA43QJ8;z$XJQ49$9$k:]$KMxMQ$9$k!#(B") (defconst skk-kana-cleanup-command-list '(skk-undo skk-kakutei skk-delete-backward-char skk-insert skk-try-completion skk-completion-wrapper skk-previous-candidate)) (defconst skk-delete-backward-char-commands ;; following two are SKK adviced. ;;viper-del-backward-char-in-insert ;;vip-del-backward-char-in-insert '(backward-delete-char-untabify backward-delete-char backward-or-forward-delete-char delete-backward-char picture-backward-clear-column)) (defconst skk-undo-commands '(undo advertised-undo)) (defconst skk-quote-char-alist '((?\; . "\\073") (?/ . "\\057") (?\n . "\\n") (?\r . "\\r") (?\" . "\\\"") (?\\ . "\\\\")) "$B<-=q%(%s%H%jFb$K4^$a$F$O$J$i$J$$J8;z$rCV$-JQ$($k$?$a$NO"A[%j%9%H!#(B `;' $B$O!"Cpl9g$@$1CV49$9$k!#(B") (defvar skk-charset-list nil "SKK $B$,07$&J8;z=89g$N%j%9%H!#(BSKK $B=i2s5/F0;~$K(B GNU Emacs 23 $B0J>e$G$"$l$P@_Dj$5$l$k!#(B") (defvar skk-emacs-id nil "$BJ#?t$N(B emacs $B%W%m%;%9$r<1JL$9$kJ8;zNs!#(B $B$R$H$D$N8D?M<-=q%U%!%$%k$rJ#?t$N(B emacs $B>e$G5/F0$7$F$$$k(B SKK $B$G6&M-$9$k$H(B $B$-$K;2>H$9$k!#(B") (defvar skk-jisyo-update-vector nil "`skk-share-private-jisyo' $BM-8z;~$K<-=q%P%C%U%!99?7>pJs$rJ];}$9$k(B vector. $BD9$5$O(B `skk-jisyo-save-count' $B$h$jD9$/$J$k$h$&$K@_Dj$7$F$$$k!#(B $B<-=q%P%C%U%!99?7$N5-O?$rJ]B8$7!"<-=q%P%C%U%!$r<-=q%U%!%$%k$K%;!<%V$9$k$H$-$K!"(B $BB>$N(B SKK $B$,<-=q%U%!%$%k$K:G6a%"%/%;%9$7$F$$$k$H$-$K$O!"<-=q%U%!%$%k$r%P%C%U%!(B $B$KFI$_9~$s$G$+$i!"(B`skk-jisyo-update-vector' $B$rMQ$$$F%P%C%U%!$r99?7D>$7!"$=$N(B $B7k2L$r%U%!%$%k$K%;!<%V$9$k!#(B") (defvar skk-rule-tree nil "$B%m!<%^;z(B -> $B$+$JJQ49$N>uBVA+0\5,B'$rI=$9%D%j!<$N=i4|>uBV!#(B $B:G=i$K(B `skk-mode' $B$r5/F0$7$?$H$-$K(B `skk-rom-kana-base-rule-list' $B$H(B `skk-rom-kana-rule-list' $B$+$iLZ$N7A$K%3%s%Q%$%k$5$l$k!#(B \\[skk-restart] $B$K$h$C$F$b:F%3%s%Q%$%k$5$l$k!#(B") (defvar skk-insert-new-word-function nil "$B8uJd$rA^F~$7$?$H$-$K(B `funcall' $B$5$l$k4X?t$rJ]B8$9$kJQ?t!#(B") (defvar skk-mode-invoked nil "Non-nil $B$G$"$l$P!"(BEmacs $B$r5/F08e4{$K(B `skk-mode' $B$r5/F0$7$?$3$H$r<($9!#(B") (defvar skk-kakutei-count 0 "$BJQ498uJd$r3NDj$7$?%+%&%s%H$rJ];}$9$kJQ?t!#(B `skk-record-file' $B$N(B \"$B3NDj(B:\" $B9`L\$N%+%&%s%?!e$H$J$C$?$H$-$K8D?M<-=q$,(B $B%*!<%H%;!<%V$5$l$k!#(B $B8D?M<-=q$,%;!<%V$5$l$k$H%$%K%7%c%i%$%:$5$l$k!#(B") (defvar skk-kakutei-history nil "$BAw$j$J$7$G3NDj$5$l$?8+=P$78l!&8uJd$NMzNr!#(B (\"$B$_$@$7$4(B\" \"$B8+=P$78l(B\" buffer) $B$H$$$&7A<0$N%j%9%H!#(B") (defvar skk-minibuffer-origin-mode nil "$BF~NO%b!<%I$rI=$o$9%7%s%\%k!#(B $BM-8z$JCM$O!"(B`hiragana', `katakana', `abbrev', `latin', `jisx0208-latin' $B$b$7$/$O(B nil $B$N$$$:$l$+!#(B") (defvar skk-menu nil) (defvar skk-icon nil "SKK $B%"%$%3%s$N2hA|%U%!%$%k(B skk.xpm $B$N%Q%9!#(B") (put 'skk-icon 'risky-local-variable t) (skk-deflocalvar skk-modeline-input-mode nil) (put 'skk-modeline-input-mode 'risky-local-variable t) (defvar skk-indicator-alist nil) (defvar skk-buffer-undo-list nil) (defvar skk-inline-overlays nil) (defvar skk-latin-mode-map nil "*$B%"%9%-!<%b!<%I$N%-!<%^%C%W!#(B") (defvar skk-j-mode-map nil "*$B$+$J%b!<%I$N%-!<%^%C%W!#(B") (defvar skk-jisx0208-latin-mode-map nil "*$BA41Q%b!<%I$N%-!<%^%C%W!#(B") (defvar skk-abbrev-mode-map nil "*SKK abbrev $B%b!<%I$N%-!<%^%C%W!#(B") (defvar skk-henkan-in-minibuff-nest-level nil) (defvar skk-menu-items ;; SKK $B%a%K%e!<$NDj5A!#(B '("SKK" ("Convert Region and Echo" ("Gyakubiki" ["to Hiragana" skk-gyakubiki-message skk-use-kakasi] ["to Hiragana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-gyakubiki-message start end 'all-candidates))) skk-use-kakasi] ["to Katakana" skk-gyakubiki-katakana-message skk-use-kakasi] ["to Katakana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-gyakubiki-katakana-message start end 'all-candidates))) skk-use-kakasi]) ("Hurigana" ["to Hiragana" skk-hurigana-message skk-use-kakasi] ["to Hiragana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-hurigana-message start end 'all-candidates))) skk-use-kakasi] ["to Katakana" skk-hurigana-katakana-message skk-use-kakasi] ["to Katakana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-hurigana-katakana-message start end 'all-candidates))) skk-use-kakasi])) ("Convert Region and Replace" ("Gyakubiki" ["to Hiragana" skk-gyakubiki-region skk-use-kakasi] ["to Hiragana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-gyakubiki-region start end 'all-candidates))) skk-use-kakasi] ["to Katakana" skk-gyakubiki-katakana-region skk-use-kakasi] ["to Katakana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-gyakubiki-katakana-region start end 'all-candidates))) skk-use-kakasi]) ("Hurigana" ["to Hiragana" skk-hurigana-region skk-use-kakasi] ["to Hiragana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-hurigana-region start end 'all-candidates))) skk-use-kakasi] ["to Katakana" skk-hurigana-katakana-region skk-use-kakasi] ["to Katakana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-hurigana-katakana-region start end 'all-candidates))) skk-use-kakasi]) ["Hiragana to Katakana" skk-katakana-region t] ["Katakana to Hiragana" skk-hiragana-region t] ["Ascii to Zenkaku" skk-jisx0208-latin-region t] ["Zenkaku to Ascii" skk-latin-region t] ["Kana and Zenkaku to Romaji" skk-romaji-region skk-use-kakasi]) ["Count Jisyo Candidates" skk-count-jisyo-candidates t] ["Save Jisyo" skk-save-jisyo t] ["Undo Kakutei" skk-undo-kakutei t] ["Restart SKK" skk-restart t] ["Version" (message "%s" (skk-version)) t]) "Menu used in SKK mode.") (defvar skk-quit-commands '(keyboard-quit abort-recursive-edit skk-kanagaki-bs skk-kanagaki-esc)) ;; ---- buffer local variables ;; <$B%U%i%0N`(B> ;;(skk-deflocalvar skk-current-henkan-data ;; '(;; global variables ;; ;; $B%P%C%U%!%m!<%+%kJQ?t$N%G%U%)%k%HCM$r@_Dj$9$k$H!"$3$l$rD>@\=q49$($7$?(B ;; ;; $B$H$-$KB>$N%P%C%U%!$+$i8+$($kCM$bJQ$o$C$F$7$^$&!#(Bglobal $B$J%U%i%0$O$3$l(B ;; ;; $B$rMxMQ$7$F%G%U%)%k%HCM$rM?$($F$*$/!#(B ;; ;; Emacs $B$r5/F08e4{$K(B skk-mode $B$r5/F0$7$?$3$H$r<($9(B ;; (invoked . nil) ;; ;; skk-isearch $B4X?t$r%3!<%k$9$k$?$a$N%U%i%0(B ;; (isearch-message . nil) ;; ;; $BJQ498uJd$r3NDj$7$?%+%&%s%H$rJ];}$9$kJQ?t(B ;; (kakutei-count . 0) ;; ;;$BF~NO%b!<%I$rI=$o$9%7%s%\%k(B ;; (minibuffer-origin-mode . nil) ;; ;; $B<-=qEPO?$7$?%+%&%s%H$rJ];}$9$kJQ?t(B ;; (touroku-count . 0) ;; ;; $B<-=q$r99?7$7$?2s?t(B ;; (update-jisyo-count . 0) ;; ;; buffer-local variables. ;; ;; `skk-search-prog-list' $B$N8=:_$NCM$rJ]B8$9$k%j%9%H(B ;; ;; (current-search-prog-list . nil) ;; ;; $B%_%K%P%C%U%!$G8uJd$rL>ItJ,(B ;; ;; (henkan-okurigana . nil) ;; ;; $B"&%b!<%I(B ($BJQ49BP>]$NJ8;zNs7hDj$N$?$a$N%b!<%I(B) $B$G$"$k$3$H$r<($9(B ;; ;; (henkan-on . nil) ;; ;; $BJQ493+;O%]%$%s%H$r<($9%^!<%+!<(B ;; ;; (henkan-start-point . nil) ;; ;; $B3NDj$7$FNI$$8uJd$r8+$D$1$?>uBV$G$"$k$3$H$r;X$9(B ;; ;; (kakutei-flag . nil) ;; ;; $B$+$JJ8;z$N3+;O%]%$%s%H$r<($9%^!<%+!<(B ;; ;; (kana-start-point . nil) ;; ;; $BF~NO%b!<%I$,%+%J%b!<%I$G$"$k$3$H$r<($9(B ;; ;; (katakana . nil) ;; ;; $B<-=q$NAw$jM-$j%(%s%H%j$N=*N;E@$r<($9%P%C%U%!%]%$%s%H(B ;; ;; (okuri-ari-max . nil) ;; ;; $B<-=q$NAw$jM-$j%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H(B ;; ;; (okuri-ari-min . nil) ;; ;; $BJQ49$9$Y$-8l$NAw$j2>L>$NItJ,$N%W%l%U%#%C%/%9(B ;; ;; (okuri-char . nil) ;; ;; `skk-henkan-list' $B$N%$%s%G%/%9$G<+F0Aw$j=hM}!"$b$7$/$O%5JQ8!:w$G(B ;; ;; $B8!:w$7$?:G8e$N8uJd$r;X$9$b$N(B ;; ;; (okuri-index-max . -1) ;; ;; `skk-henkan-list' $B$N%$%s%G%/%9$G<+F0Aw$j=hM}!"$b$7$/$O%5JQ8!:w$G(B ;; ;; $B8!:w$7$?:G=i$N8uJd$r;X$9$b$N(B ;; ;; (okuri-index-min . -1) ;; ;; $B<-=q$NAw$j$J$7%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H(B ;; ;; (okuri-nasi-min . nil) ;; ;; $BAw$j2>L>ItJ,$,F~NOCf$G$"$k$3$H$r<($9(B ;; ;;(okurigana . nil) ;; ;; $BAw$j2>L>$N3+;O%]%$%s%H$r<($9%^!<%+!<(B ;; ;; (okurigana-start-point . nil) ;; ;; $BF~NO$9$k$+$J$r7hDj$9$k$?$a$N%W%l%U%#%C%/%9(B ;; ;; (prefix . "") ;; ;; $B$3$NJQ?t$KJ];}$5$l$k%]%$%s%H$,8=:_$N%]%$%s%H$H0[$J$k>l9g!"(B ;; ;; `skk-with-point-move' $B$,;H$o$l$F$$$J$$%3%^%s%I$rF0:n$5$;$k$H(B ;; ;; `skk-after-point-move' $B$,:nF0$9$k(B ;; ;; (previous-point . nil) ;; ;; `skk-insert' $B$b$7$/$O(B `skk-jisx0208-latin-insert' $B$GO"B3F~NO$7$?(B ;; ;; $BJ8;z?t$rI=$o$9%+%&%s%?!<(B ;; ;; (self-insert-non-undo-count . 1))) (skk-deflocalvar skk-mode nil "\ 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") (skk-deflocalvar skk-latin-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,%"%9%-!<%b!<%I$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-j-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,$+$J!&%+%J%b!<%I$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-katakana nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,%+%J%b!<%I$G$"$k$3$H$r<($9!#(B \"(and (not skk-katakana) skk-j-mode)\" $B$,(B t $B$G$"$l$P!"$+$J%b!<%I$G$"$k$3$H$r(B $B<($9!#(B") (skk-deflocalvar skk-jisx0208-latin-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,A41Q%b!<%I$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-abbrev-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,(B SKK abbrev $B%b!<%I$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-okurigana nil "Non-nil $B$G$"$l$P!"Aw$j2>L>ItJ,$,F~NOCf$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-henkan-mode nil "$BJQ49%b!<%I$r<($9!#(B `on' $B$G$"$l$P!""&%b!<%I!#(B `active' $B$G$"$l$P!""'%b!<%I!#(B `nil' $B$G$"$l$P!"3NDjF~NO%b!<%I!#(B") (skk-deflocalvar skk-kakutei-flag nil "Non-nil $B$J$i3NDj$7$FNI$$8uJd$r8+$D$1$?>uBV$G$"$k$3$H$r;X$9!#(B") (skk-deflocalvar skk-kakutei-henkan-flag nil "Non-nil $B$J$i3NDjJQ49$9$k;v$r;X$9!#(B `skk-search-kakutei-jisyo-file' $B$d!"%f!<%6<+:n$N3NDjJQ49MQ%W%m%0%i%`$O(B $B$3$NJQ?t$r%;%C%H$9$k!#(B $B$3$NJQ?t$,(B Non-nil $B$K%;%C%H$5$l$F$b!"JQ49$7$F:G=i$KF@$i$l$?8uJd$G$J$1$l$P(B $B3NDjJQ49$5$l$J$$$3$H$KCm0U!#(B") (skk-deflocalvar skk-exit-show-candidates nil "$B%_%K%P%C%U%!$G8uJd$rH$5$l$k!#(B") ;; <$B%-!<%^%C%W4XO"(B> (skk-deflocalvar skk-current-rule-tree nil "$B%m!<%^;z(B -> $B$+$JJQ49$N>uBVA+0\5,B'$rI=$o$9%D%j!<$N8=;~E@$N>uBV!#(B $B%m!<%^;zF~NO$N=i4|$G$O(B `skk-rule-tree' $B$HF10l$N>uBV$G!"J8;zF~NO$,?J$`$K(B $B$D$l!"LZ$r$?$I$C$F$f$/>uBV$NA+0\$rI=$9!#(B") ;; <$B<-=q4XO"$NJQ?t(B> (skk-deflocalvar skk-okuri-ari-min nil "SKK $B<-=q$NAw$jM-$j%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H!#(B") (skk-deflocalvar skk-okuri-ari-max nil "SKK $B<-=q$NAw$jM-$j%(%s%H%j$N=*N;E@$r<($9%P%C%U%!%]%$%s%H!#(B `skk-jisyo' $B$N%P%C%U%!$G$O<-=q$N99?7$NI,MW$,$"$k$?$a$K%^!<%+!<$,BeF~$5$l$k!#(B") (skk-deflocalvar skk-okuri-nasi-min nil "SKK $B<-=q$NAw$j$J$7%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H!#(B `skk-jisyo' $B$N%P%C%U%!$G$O<-=q$N99?7$NI,MW$,$"$k$?$a$K%^!<%+!<$,BeF~$5$l$k!#(B") ;; <$B$=$NB>(B> (skk-deflocalvar skk-mode-line nil "SKK $B$N%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs!#(B `skk-mode-string', `skk-hiragana-mode-string', `skk-katakana-mode-string', `skk-jisx0208-latin-mode-string' $B$N$$$:$l$+$,BeF~$5$l$k!#(B") (skk-deflocalvar skk-previous-point nil "`skk-with-point-move' $B4XO"JQ?t!#(B $B$3$NJQ?t$KJ];}$5$l$k%]%$%s%H$,8=:_$N%]%$%s%H$H0[$J$k>l9g!"(B`skk-with-point-move' $B$,;H$o$l$F$$$J$$%3%^%s%I$rF0:n$5$;$k$H!"(B`skk-after-point-move' $B$,:nF0$9$k!#(B") (skk-deflocalvar skk-prefix "" "$BF~NO$9$k$+$J$r7hDj$9$k$?$a$N%W%l%U%#%C%/%9!#(B") (defface skk-prefix-hiragana-face '((((class color) (type tty)) (:foreground "red")) (((class color) (background light)) (:foreground "coral4")) (((class color) (background dark)) (:foreground "pink")) (((class grayscale)) (:underline t))) "*$B$+$J%b!<%I$N%m!<%^;z%W%l%U%#%C%/%9$N(B face $BB0@-!#(B" :group 'skk-visual) (defface skk-prefix-katakana-face '((((class color) (type tty)) (:foreground "green")) (((class color) (background light)) (:foreground "forestgreen")) (((class color) (background dark)) (:foreground "green")) (((class grayscale)) (:underline t))) "*$B%+%J%b!<%I$N%m!<%^;z%W%l%U%#%C%/%9$N(B face $BB0@-!#(B" :group 'skk-visual) (defface skk-prefix-jisx0201-face '((((class color) (type tty)) (:foreground "blue")) (((class color) (background light)) (:foreground "blueviolet")) (((class color) (background dark)) (:foreground "thistle")) (((class grayscale)) (:underline t))) "*JISX0201 $B%b!<%I$N%m!<%^;z%W%l%U%#%C%/%9$N(B face $BB0@-!#(B" :group 'skk-visual) (skk-deflocalvar skk-prefix-overlay nil "`skk-prefix' $B$rI=<($9$k$?$a$K;HMQ$5$l$k(B overlay$B!#(B `skk-echo' $B$NCM$,(B non-nil $B$N$H$-$K;HMQ$5$l$k!#(B") (skk-deflocalvar skk-henkan-start-point nil "$BJQ493+;O%]%$%s%H$r<($9%^!<%+!L>$N3+;O%]%$%s%H$r<($9%^!<%+!l9g$K$O!"(B\"$B$o$i(Bu\" $B$N$h$&$K!"4A;zItJ,$N(B $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") (skk-deflocalvar skk-okuri-char nil "$BJQ49$9$Y$-8l$NAw$j2>L>$NItJ,$N%W%l%U%#%C%/%9!#(B $BNc$($P!"(B\"$B$*$/(B*$B$j(B\" $B$rJQ49$9$k$H$-$O!"(B`skk-okuri-char' $B$O(B \"r\"$B!#(B `skk-okuri-char' $B$,(B non-nil $B$G$"$l$P!"Aw$j$"$j$NJQ49$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-henkan-okurigana nil "$B8=:_$NJQ49$NAw$j2>L>ItJ,!#(B $BNc$($P!"(B\"$B"&$&$^$l(B*$B$k(B\" $B$rJQ49$9$l$P!"(B`skk-henkan-okurigana' $B$K$O(B \"$B$k(B\" $B$,BeF~(B $B$5$l$k!#(B") (skk-deflocalvar skk-last-kakutei-henkan-key nil "$B3NDj<-=q$K$h$j:G8e$K3NDj$7$?$H$-$N8+=P$78l!#(B $B3NDj<-=q$K$h$k3NDj$ND>8e$K(B x $B%-!<$r2!$9$H3NDj$,%"%s%I%%$5$l$F!"3NDjA0$N>uBV$G(B $B$3$N8+=P$78l$,%+%l%s%H%P%C%U%!$KA^F~$5$l$k!#(B") (skk-deflocalvar skk-henkan-list nil "$BJQ497k2L$N8uJd$N%j%9%H!#(B $BNc$($P!"(B\"$B"&$J(B*$B$/(B\" $B$H$$$&JQ49$9$l$P!"(B`skk-henkan-list' $B$O(B \(\"$BLD(B\" \"$B5c(B\" \"$BL5(B\" \"$BK4(B\") $B$N$h$&$K$J$k!#(B") (skk-deflocalvar skk-henkan-count -1 "`skk-henkan-list' $B$N%j%9%H$N%$%s%G%/%9$G8=:_$N8uJd$r:9$9$b$N!#(B") (skk-deflocalvar skk-self-insert-non-undo-count 1 "$BO"B3F~NO$7$?J8;z?t$rI=$o$9%+%&%s%?!]$H$J$k!#$3$NF0:n$r%(%_%e%l!<%H$9$k$?$a$N(B $B%+%&%s%?!uBV!#(B") (skk-deflocalvar skk-undo-kakutei-previous-point nil "$B3NDj%"%s%I%%D>A0$N%]%$%s%H$r<($9%^!<%+!]$NJQ497k2L$ND9$5!#(B") (skk-deflocalvar skk-henkan-overlay nil "$B8uJd$rI=<($9$k$H$-$K;HMQ$9$k(B Overlay$B!#(B") (skk-deflocalvar skk-henkan-in-minibuff-flag nil "$B%_%K%P%C%U%!$G<-=qEPO?$r9T$C$?$H$-$K$3$N%U%i%0$,N)$D!#(B `skk-remove-common' $B$G;2>H$5$l$k!#(B") (skk-deflocalvar skk-okuri-index-min -1 "`skk-henkan-list' $B$N%$%s%G%/%9$rA^$9%]%$%s%?$N$R$H$D!#(B $B<+F0Aw$j=hM}$G8!:w$7$?:G=i$N8uJd$r;X$9!#(B") (skk-deflocalvar skk-okuri-index-max -1 "`skk-henkan-list' $B$N%$%s%G%/%9$rA^$9%]%$%s%?$N$R$H$D!#(B $B<+F0Aw$j=hM}$G8!:w$7$?:G8e$N8uJd$r;X$9!#(B") (skk-deflocalvar skk-last-buffer-undo-list nil "$B"&%b!<%I$KF~$kD>A0$N(B `buffer-undo-list' $B$rB`Hr$7$F$*$/JQ?t!#(B") (skk-deflocalvar skk-after-prefix nil "t $B$G$"$l$P!"@\F,<-F~NO8e$N>uBV$K$"$k$3$H$rI=$9!#(B $B@\F,<-F~NO3+;O;~$K(B t $B$K%;%C%H$5$l!"B3$/8l$N3NDj8e$K(B nil $B$K%;%C%H$5$l$k!#(B") ;; skk-act.el related. (defcustom skk-use-act nil "*Non-nil $B$G$"$l$P3HD%%m!<%^;zF~NO(B ACT $B$rMxMQ$9$k!#(B" :type 'boolean :group 'skk-act) (defcustom skk-act-use-normal-y nil "*Non-nil $B$G$"$l$P(B \"y\" $B$r;H$C$?Y92;$NF~NO$rM-8z$K$9$k(B." :type 'boolean :group 'skk-act) (defcustom skk-act-load-hook nil "*skk-act $B$r(B load $B$7$?8e$Kl9g$O!"%-!<%\!<%I$N%?%$%W$N0c$$$r5[<}$9$k3dEv$F$r9T$$$^$;$s!#(B" :type '(radio (const :tag "$BF|K\8l(B 106 $B%-!<%\!<%I(B" jp106) (const :tag "NEC PC-98 $B%-!<%\!<%I(B" jp-pc98) (const :tag "$B1Q8l%-!<%\!<%I(B" us101) (const :tag "$B%-!<%\!<%I0MB8=hM}$rL58z$K$9$k(B" nil)) :group 'skk-azik) (defcustom skk-azik-load-hook nil "*skk-azik $B$r(B load $B$7$?8e$Ko$KI=<((B" t) (const :tag "$B8uJd0lMw$G$OHsI=<((B" (not list)) (const :tag "$B%_%K%P%C%U%!$G$OHsI=<((B" (not minibuf)) (const :tag "$B8uJd0lMw$H%_%K%P%C%U%!$G$OHsI=<((B" (not list minibuf)) (const :tag "$BHsI=<((B" nil)) :group 'skk-basic :group 'skk-annotation) (defcustom skk-annotation-delay 1.0 "*$B%"%N%F!<%7%g%s$rI=<($9$k$^$G$NCY1d!#C10L$OIC!#(B" :type 'number :group 'skk-annotation) (defcustom skk-annotation-loop-interval 0.1 "*$B%"%N%F!<%7%g%s$rI=<(Cf$N%W%m%;%9BT$A;~4V(B ($BIC(B)$B!#(B $B9bB.$J4D6-$G$O>.$5$a$K@_Dj$9$k$H%l%9%]%s%9$,2wE,$K$J$k!#(B $BDcB.$J4D6-$G$OBg$-$a$K@_Dj$9$k$HF0:n$,2~A1$5$l$&$k!#(B" :type 'number :group 'skk-annotation) (defcustom skk-annotation-toggle-display-char ?^ "*$B8uJd0lMw$rI=<(Cf$K%"%N%F!<%7%g%sI=<($r@Z$jBX$($k%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-annotation) (defcustom skk-annotation-copy-key "\C-w" "*$B%"%N%F!<%7%g%s$r%3%T!<$9$k%-!l9g$O(B $BJQ?t(B `interprogram-cut-function' $B$r@_Dj$9$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-annotation) (defcustom skk-annotation-browse-key "\C-o" "*$B%"%N%F!<%7%g%s$r(B URL $B$H8+Pv$7$F%V%i%&%:$9$k%-!]$H$9$kJ8;zNs$r0z?t$K$7$F(B `funcall' $B$5$l!"La$jCM(B $B$,(B non-nil $B$G$"$l$P%"%N%F!<%7%g%s$rI=<($9$k!#(B $B8uJd0lMw;~$K$O8F$P$l$J$$!#(B $B%"%N%F!<%7%g%sI=<($NH=CG$O(B `skk-treat-candidate-appearance-function' $B$G$b(B $Bl9g!"(Bpython $B$r(B inferior process $B$H$7$F5/F0$9$k!#(B $B$3$N@_Dj$O(B `skk-annotation-lookup-dict' $B$h$jM%@h$5$l$k!#(B Max OS X $B0J30$N4D6-$G$O5!G=$7$J$$!#(B $B8uJd0lMw$G$b$3$N5!G=$r;H$$$?$$>l9g$O(B `always' $B$K@_Dj$9$k$3$H$Ge=q$-$7$F$7(B $B$^$&$?$a!">e5io$NJQ49;~$K<-=q$r;2>H$9$k(B" t) (const :tag "$B>e5-$K2C$(8uJd0lMw$G$b;2>H$9$k(B" always) (const :tag "$BMxMQ$7$J$$(B" nil)) :group 'skk-annotation) (defcustom skk-annotation-python-program (or (executable-find "python2.6") (executable-find "python")) "*DictionaryServices $B$N$?$a$K5/F0$9$k(B python $B$N%U%!%$%kL>!#(B" :type '(radio (file) (const nil)) :group 'skk-annotation) (defcustom skk-annotation-lookup-lookup nil "*Non-nil $B$G$"$l$P(B elisp `lookup' $B$+$iJQ498uJd$N0UL#$rl9g$O(B `always' $B$K@_Dj$9$k$3$H$Ge=q$-$7(B $B$F$7$^$&$?$a!">e5io$NJQ49;~$K(B lookup $B$r;2>H$9$k(B" t) (const :tag "$B>e5-$K2C$(8uJd0lMw$G$b;2>H$9$k(B" always) (const :tag "$BMxMQ$7$J$$(B" nil)) :group 'skk-annotation :group 'skk-lookup) (defcustom skk-annotation-lookup-dict nil "*Non-nil $B$G$"$l$P!"30It%W%m%0%i%`$rFI$s$GJQ498uJd$N0UL#$rI=<($9$k!#(B $B30It%W%m%0%i%`$O(B `skk-annotation-dict-program' $B$G;XDj$9$k!#(B" :type 'boolean :group 'skk-annotation) (defcustom skk-annotation-dict-program (cond ((eq system-type 'darwin) skk-annotation-python-program) (t nil)) "*$BJQ498uJd$N0UL#$rI=<($9$k$?$a$N30It%W%m%0%i%`$N%U%!%$%kL>!#(B" :type '(radio (file) (const nil)) :group 'skk-annotation) (defcustom skk-annotation-dict-program-arguments (cond ((eq system-type 'darwin) '("-c" "import sys, DictionaryServices; word = sys.argv[1].decode(\"utf-8\"); print DictionaryServices.DCSCopyTextDefinition(None, word, (0, len(word))).encode(\"utf-8\")")) (t nil)) "*$BJQ498uJd$N0UL#$rI=<($9$k$?$a$N30It%W%m%0%i%`$N0z?t$N%j%9%H!#(B" :type '(radio (repeat string) (const nil)) :group 'skk-annotation) (defcustom skk-annotation-dict-coding-system 'utf-8 "*$B30It%W%m%0%i%`$+$i%"%N%F!<%7%g%spJs$N%=!<%9$r;XDj$9$k%*%W%7%g%s!#(B $BI8=`$G$O(B Wiktionary, Wikipedia ($BF|K\8lHG!"1Q8lHG(B) $B$r;2>H$9$k!#(B Apple OS X $B$G$OI8=`$N!V<-=q!W$rMxMQ$G$-$k!#(B" :type '(radio (repeat :tag "\ $BpJs$rMxMQ$7$J$$(B" nil)) :group 'skk-annotation) (make-obsolete-variable 'skk-annotation-wikipedia-sources 'skk-annotation-other-sources "DDSKK 14.4") (defcustom skk-annotation-wikipedia-key "\C-i" "*$B%"%N%F!<%7%g%s$H$7$F(B Wikipedia $B$NFbMF$rI=<($9$k%-!uBV$KLa$9!#(B") (defvar skk-annotation-target-data nil "annotation $B$rIU$1$i$l$k8uJd$K4X$9$k%G!<%?!#(B") (defvar skk-annotation-wikipedia-message nil "SKK Wikipedia $BMxMQJ}K!$r<($9%a%C%;!<%8(B ($B<+F0@_Dj(B)$B!#(B") (defvar skkannot-cached-srcs nil) (defvar skk-annotation-message nil "SKK Annotation $BMxMQJ}K!$r<($9%a%C%;!<%8(B ($B<+F0@_Dj(B)$B!#(B") (defvar skkannot-remaining-delay 0) (defvar skkannot-buffer-origin nil) (defvar skkannot-py-buffer nil) (defvar skkannot-url-installed-p (if (and (featurep 'emacs) (>= emacs-major-version 22)) t 'untested)) (defconst skkannot-py-none-regexp "^\\(Traceback\\|AttributeError\\|None\\)") (defconst skkannot-DictServ-cmd-format-str "word = u\"%s\"; \ print \" %s(word)s in DictionaryServices\" %s {'word': word}; \ print DictionaryServices.DCSCopyTextDefinition(None, word, (0, len(word)))") ;; XXX $B$^$@IT40A4(B (defconst skkannot-en-wiktionary-lang-regexp "\

          .*\ \\(\\)?\ \\(Aari\\|Abanyom\\|Abaza\\|Abenaki\\|Abkhaz\\|Acehnese\\|Acholi\\|Acholi\ \\|Achumawa\\|Adangme\\|Adele\\|Adnyamathanha\\|Adyghe\\|Adzera\\|Afar\ \\|Afrikaans\\|Aghul\\|Ainu\\|Akan\\|Akawaio\\|Akkadian\\|Aklanon\\|Alabama\ \\|Albanian\\|Aleut\\|Algonquin\\|Alsatian\\|Amaimon\\|Amanab\\|Ambai\ \\|Amharic\\|Amoy\\|Amuzgo\\|Ankave\\|Ansus\\|Apala.ANm\\|\\(Egyptian \\)?Arabic\ \\|Aragonese\\|Aramaic\\|Arapaho\\|Arawak\\|Armenian\\|Aromanian\\|Assamese\ \\|Asturian\\|'Auhelawa\\|Avar\\|Avestan\\|Awabakal\\|Aymara\\|Azeri\ \\|Balinese\\|Balti\\|Bambara\\|Bandjalang\\|Baruga\\|Bashkir\\|Basque\ \\|Baure\ \\|Belarusian\\|Bengali\\|Berbice Creole Dutch\\|Betawi\\|Bhojpuri\\|Biak\ \\|Bikol\\|Bislama\\|Blackfoot\\|BokmNel\\|Bosnian\\|Breton\ \\|Broome Pearling Lugger Pidgin\\|Bube\\|Bulgarian\\|Burmese\ \\|Cantonese\\|Capeverdean Crioulo\\|Catalan\\|Catawba\\|Cebuano\ \\|Central Tarahumara\\|Ch'orti'\\|Chamorro\\|Chechen\\|Cherokee\\|Cheyenne\ \\|Chichewa\\|Chickasaw\\|Chinese Pidgin English\\|Chinese\\|Chinook Jargon\ \\|Chiricahua\\|Choctaw\\|TumbalNa Chol\\|Chukchee\\|Chuvash\ \\|Classical Nahuatl\\|CoatlNan Mixe\\|Comorian\\|Coptic\\|Cornish\\|Corsican\ \\|Cree\\|Creek\\|Crimean Tatar\\|Croatian\\|Czech\ \\|Dacian\\|Dadibi\\|Northern Dagara\\\Dalmatian\\|Danish\\|Dargwa\ \\|Darkinjung\\|Darling\\|Dharuk\\|Dhivehi\\|Dhuwal\\|Dieri\\|Dusner\\|Dutch\ \\|Dyirbal\\|Dzongkha\ \\|Egyptian\\|English\\|Erzya\\|Esan\\|Esperanto\\|Estonian\\|Etruscan\\|Ewe\ \\|Fang\\|Faroese\\|Fijian\\|Filipino\\|Finnish\\|Fon\\|French\\|Frisian\ \\|Friulian\\|Fula\ \\|Ga\\|Gabi-Gabi\\|Gagauz\\|Galician\\|Gallo\\|Gamilaraay\\|Ge'ez\\|Georgian\ \\|\\(Middle High\\)?German\\|Gilbertese\\|Golin\\|Gooniyandi\\|Gothic\ \\|\\(Ancient \\|Mycenaean \\)?Greek\\|Greenlandic\\|GuaranNm\\|MbyNa GuaranNm\ \\|Gujarati\\|Guugu Yimidhirr\ \\|Hausa\\|Hawaiian\\|Hebrew\\|Hindi\\|Hittite\\|Hmong\\|Hopi\\|Hungarian\ \\|Icelandic\\|Ido\\|Igbo\\|Ilocano\\|Indoneian\\|Interlingua\\|Inuktitut\ \\|Irish\\|Italian\ \\|Japanese\\|Javanese\\|Jingpho\\|JNhrriais\ \\|Kabardian\\|Kabyle\\|KadiwNiu\\|Kannada\\|Kanuri\\|Kapingamarangi\\|Karelian\ \\|KaritiNbna\\|Kashmiri\\|Kashubian\\|Kaurna\\|Kazakh\\|Khmer\\|Kickapoo\ \\|Kinyarwanda\\|Kiput\\|Kirundi\\|Kokborok\\|Komi\\|Kongo\\|Korean\\|Kriol\ \\|Krisa\\|!Kung\\|Kurdish\\|Kurnai\\|Kwanyama\\|Kyrgyz\ \\|Ladino\\|Lak\\|Lakota\\|Laotian\\|Latin\\|Latvian\\|Lavukaleve\\|Lenape\ \\|Lezgi\\|Limburgish\\|Lingala\\|Lithuanian\\|Livonian\\|Lojban\ \\|Low Saxon\\|Lower Sorbian\\|Luganda\\|Luxembourgish\ \\|Maay\\|Macedonian\\|Makhuwa\\(-Meetto\\|-Shirima\\)?\\|Malagasy\\|Malay\ \\|Malayalam\\|Maliseet\\|Maltese\\|Manchu\\|Mandarin\\|Mandinka\\|Mangarevan\ \\|Mansi\\|Manx\\|Maori\\|Mapudungun\\|Marathi\\|Marau\\|Maroon\\|Marshallese\ \\|Martuthunira\\|Mati Ke\\|Mbabaram\\|Mende\\|Menominee\\|Meriam\\|Mesquakie\ \\|Mi'kmaq\\|Miami\ \\|Middle \\(Dutch\\|English\\|French\\|Korean\\|Norwegian\\|Scots\\)\ \\|Min Nan\\|Mirandese\\|Miskito\\|\\(Alcozauca \\|YosondNza \\)?Mixtec\ \\|Miyako\\|Mohegan\\|Mohican\\|Moldavian\\|Mongolian\\|Montauk\\|Munduapa\ \\|Munggui\\|Munsee\\|Murrinh-Patha\\|Mutsun\ \\|\\(Isthmus-Mecayapan \\)?Nahuatl\\|Nanticoke\\|Narragansett\\|Nauruan\ \\|Navajo\\|Ndonga\\|Neapolitan\\|Nepali\\|Nhanta\\|Niuean\\|Nootka\\|Norfuk\ \\|Norman\\|Norn\\|Northern Sami\\|Norwegian\\|Novial\\|Nynorsk\\|Nyunga\ \\|O'odham\\|Occitan\\|Ohlone\\|Ojibwe\ \\|Old \\(Church Slavonic\\|English\\|French\\|Frisian\\|High German\\|Irish\ \\|Norse\\|Prussian\\|Saxon\\|Slavonic\\)\\|Oriya\\|Oromo\ \\|Pali\\|Pangasinan\\|Panyjima\\|Papiamentu\\|Papuma\\|Pashto\ \\|Passamaquoddy\\|PaumarNm\\|Pennsylvania German\\|Penobscot\ \\|\\(Old \\)?Perian\\|Phoenician\ \\|PirahNc\\|Pitcairnese\\|Pitjantjatjara\\|Pitta-Pitta\\|Pochutec\\|Polish\ \\|Sayula Popoluca\\|Portuguese\\|Potawatomi\\|Powhatan\ \\|Proto-\\(Germanic\\|Indo-European\\|Uralic\\)\\|ProvenNga\\|Punjabi\ \\|Quechua\\|Quenya\ \\|Rarotongan\\|Reconstructed\\|Rohingya\\|Roman\\(i\\|ian\\|sch\\)\\|Rotokas\ \\|Rotuman\\|Russian\\|Rutul\ \\|Saanich\ \\|\\(Inari \\|Kildin \\|Lule \\|Northern \\|Pite \\|Skolt \\|Sourthern \ \\|Ter \\|Ume \\)?Sami\\|Samoan\\( Plantation Pidgin\\)?\\|Sanskrit\ \\|Sardinian\\|Scots\\|Scottish Gaelic\\|Serbian\\|Serbo-Croatian\\|Seri\ \\|Shabo\\|Shawnee\\|Shelta\\|Shona\\|Shoshoni\\|Shuar\\|Sicilian\\|Sindarin\ \\|Sindhi\\|Sinhalese\\|Slovak\\|Slovene\\|Somali\\|Upper Sorbian\\|Spanish\ \\|Sranan\\|Sumerian\\|Swahili\\|Swazi\\|Swedish\\|Syriac\ \\|Tabassaran\\|TAchelhit\\|Tagalog\\|Tahitian\\|Taimyr Pidgin Russian\\|Tajik\ \\|Tamasheq\\|Tamazight\\|Tamil\\|Tatar\\|Tausug\\|TaNmno\\|Telugu\\|Tetum\ \\|Thai\\|Tibetan\\|Tigrinya\\|Tiwi\\|Tocharian \\(A\\|B\\)\\|Tok Pisin\ \\|Tokelauan\\|Tongan\\|Torres Strait Creole\\|Translingual\\|Tsakhur\ \\|Tshiluba\\|Tswana\\|Tuamotuan\\|Tumbuka\\|Tupi\\|TupinambNa\\|Turkish\ \\|Turkmen\\|Tuvaluan\\|Tuvan\\|Twi\\|Tz'utujil\ \\|Ugaritic\\|Ukrainian\\|Umbundu\\|Unami\\|Unserdeutsch\\|Urdu\\|Uyghur\ \\|Uzbek\ \\|Vandalic\\|Venda\\|Veps\\|Vietnamese\\|VolapN|k\\|Votic\\|VNuro\ \\|Wageman\\|Walloon\\|Wampanoag\\|Wangaaybuwan-Ngiyambaa\\|Warlpiri\\|Welsh\ \\|Wembawemba\\|Western Apache\\|West Frisian\\|Wik-Mungkan\\|Wiradhuri\ \\|Woi\\|Woiwurrung\\|Wolof\\|Worimi\ \\|XavNante\\|Xhosa\\|!XNsNu\ \\|Yapese\\|Yiddish\\|Yidiny\\|Yindjibarndi\\|Yoruba\\|Yucatec\\|Yup'ik\ \\|\\(Yatzachi \\|Zoogocho \\|Isthmus \\)Zapotec\\|Zenga\\|Zhuang\ \\|Zulgo-Gemzek\\|Zulu\\|Zuni\\)\ \\(\\)?\

          " "en.wiktionary $B$K$*$$$F8@8l$rI=$9%X%C%@$N@55,I=8=(B") (defconst skkannot-en-wiktionary-part-of-speech-regexp "\ \ \\(\\)?\ \\(Article\\|Noun\\|Proper Noun\\|Adjective\\|Proper Adjective\ \\|Verb\\( form\\)?\\|Intransitive\\( verb\\)?\\|Transitive\\( verb\\)?\ \\|Adverb\ \\|Conjunction\\|Interjection\\|Numeral\\|Prefix\\|Suffix\\|Particle\ \\|Preposition\\|Contraction\\|Determiner\\|Demonstrative determiner\ \\|Interrogative determiner\\|Pronoun\\|Pronominal possessive adjective\ \\|Demonstrative pronoun\\|Demonstrative adjective\ \\|Quasi-Adjective\\|Proverb\\|Counter\\|Personal pronoun\ \\|Kanji\\|Hanja\\|Hanzi\ \\|Interrogative pronoun\\|Relative pronoun\\|Auxiliary verb\\( form\\)?\ \\|Indefinite article\\|Abbreviation\\|Initialism\\|Acronym\\|Symbol\ \\|\\(Han \\|Hiragana \\|Katakana \\)character\\|Phrase\\|Letter\\)\ \\(\\)?\ " "en.wiktionary $B$K$*$$$FIJ;l$rI=$9%X%C%@$N@55,I=8=(B") (defconst skkannot-ja-wiktionary-lang-regexp "\

          .*\ \\(\\)?\ \\(.+$B8l(B\\|$B%$%s%?!<%j%s%0%"(B\\|$B%(%9%Z%i%s%H(B\\|$B%5%s%9%/%j%C%H(B\\|$B%H%-%]%J(B\ \\|$B%H%/!&%T%8%s(B\\|$B5-9f(B\\|$B4A;z(B\\)\ \\(\\)?\ " "ja.wiktionary $B$K$*$$$F8@8l$rI=$9%X%C%@$N@55,I=8=(B") (defconst skkannot-ja-wiktionary-part-of-speech-regexp "\ \ \\(\\)?\ \\(\ \\(\\($B8GM-(B\\|\\($B?M>N(B\\|$B5?Ld(B\\)?$BBe(B\\)?$BL>(B\\|\\($B=u(B\\)?$BF0(B\\|$B7AMFF0(B?\\|\ $B@\B3(B\\|$BA0CV(B\\|$BI{(B\\|$B4'(B\\|$B4X78(B\\|$B4VEj(B\\|$B=u(B\\|$B?t(B\\|$BJ,(B\\|$BN`JL(B\\|$B46F0(B\\)\ $B;l(B.*\ \\|$B4A;z:.$8$jI=5-(B\\|$B0U5A(B\\|$BN@\<-(B\\|$BJ?2>L>(B\\|$BJR2>L>(B\\|$B0U5A(B\\|$B4A;z(B\\|$BOB8l$N4A;zI=5-(B\\)\ \\(\\)?\ " "ja.wiktionary $B$K$*$$$FIJ;l$rI=$9%X%C%@$N@55,I=8=(B") (skk-deflocalvar skk-annotation-mode nil "Non-nil $B$G$"$l$P!"(Bannotation $B%b!<%I$G$"$k$3$H$r<($9!#(B") ;;; skk-auto.el related. (defcustom skk-auto-okuri-process nil "*Non-nil $B$G$"$l$P!"Aw$j2>L>ItJ,$r<+F0G'<1$7$FJQ49$r9T$&!#(B $BNc$($P!"(B \"Uresii (\"UreSii\" $B$G$O$J$/(B) -> $B4r$7$$(B\" $B$N$h$&$KJQ49$5$l$k!#C"$7!"(B`skk-jisyo' ($B8D?M<-=q(B) $B$,!"(B \"$B$&$l(Bs /$B4r(B/[$B$7(B/$B4r(B/]/\" $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 $B$F$$$J$$$N$G!"(B`skk-jisyo' $B$K$3$N%(%s%H%j$,$J$1$l$P$J$i$J$$(B)$B!#(B $B$3$N%*%W%7%g%sMxMQ;~$O!"(B`skk-process-okuri-early' $B$NCM$O(B nil $B$G$J$1$l$P(B $B$J$i$J$$!#(B" :type 'boolean :group 'skk-okurigana :group 'skk-auto) (defcustom skk-okuri-search-function 'skk-okuri-search-subr-original "*`skk-okuri-search' $B$G;HMQ$9$k4X?t!#(B" :type 'function :group 'skk-auto) (defcustom skk-auto-load-hook nil "*skk-auto.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-auto) ;; skk-cdb.el related. (defcustom skk-cdb-large-jisyo nil "*$B8D?M<-=q$N8!:w$N8e$K8!:w$9$k(B CDB $B7A<0<-=q%U%!%$%kL>!#(B Non-nil $B$G$"$l$P!";XDj$5$l$?(B CDB $B7A<0<-=q$r(B Emacs $B$+$iD>@\MxMQ$7!"(B $B9bB.$J8!:w$r9T$&!#(B" :type `(radio (file :tag "$B<-=q%U%!%$%kL>(B" ,(cond ((featurep 'xemacs) (or (locate-data-file "SKK-JISYO.L.cdb") "")) ((fboundp 'locate-file) (or (locate-file "skk/SKK-JISYO.L.cdb" (list (expand-file-name "../../.." data-directory))) (locate-file "skk/SKK-JISYO.L.cdb" (list data-directory)) "")))) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-cdb :group 'skk-dictionary) (defcustom skk-cdb-coding-system 'euc-jp "*$B8D?M<-=q$N8!:w$N8e$K8!:w$9$k(B CDB $B7A<0<-=q$N%3!<%G%#%s%0!&%7%9%F%`!#(B" :type 'coding-system :group 'skk-cdb :group 'skk-dictionary) ;;; skk-comp.el related. (defcustom skk-try-completion-char ?\011 ; TAB "*$B8+=P$78l$NJd40F0:n$r9T$&%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-comp) (defcustom skk-next-completion-char ?. "*$B8+=P$78l$NJd40F0:n$G!"e8B!#(B" :type 'integer :group 'skk-comp) (defcustom skk-comp-circulate nil "*$B8+=P$78l$rJd40$9$k:]$N!"8uJd$NI=<(=g$r@)8f$9$k!#(Bnon-nil $B$G$"$l$P!"(B $B:G8e$N8+=P$78l$,I=<($5$l$?>uBV$G99$KJd40$r9T$&$HF~NOJ8;zNs$KLa$k!#(B nil $B$G$"$l$P!":G8e$N8+=P$78l$,I=<($5$l$?>uBV$GDd;_$9$k!#(B" :type 'boolean :group 'skk-comp) (defcustom skk-comp-use-prefix nil "*$B8+=P$78l$rJd40$9$k:]$K%W%l%U%#%C%/%9(B(`skk-prefix')$B$b;H$&$+!#(B $BNc$($P!"(B\"$B"&$"(Bk\" $B$H$"$k>uBV$GJd40$r$7$?;~$K!"(Bnon-nil $B$G$"$l$P(B \"$B$"$5(B\" $B$OBP>]$H$J$i$:!"(B\"$B$"$+(B\", \"$B$"$-(B\" $B$J$I$K9J$i$l$k!#(B $B$7$+$7l9g$K$OM=$aI,MW$J$b$N$@$1@_Dj$7$F$*$/$3$H!#(B" :type '(repeat (cons string regexp)) :group 'skk-comp) (defcustom skk-comp-kana-list-filter-function (lambda (kana-list prefix) ;; "t" $B0J30$G(B "$B$C(B" $B$rJd40$7$J$$(B (unless (string= prefix "t") (setq kana-list (delete "$B$C(B" kana-list))) ;; "m" $B$G(B "$B$s(B" $B$rJd40$7$J$$(B (when (string= prefix "m") (setq kana-list (delete "$B$s(B" kana-list))) ;; "w" $B$G(B "$B$&(B" $B$rJd40$7$J$$(B (when (string= prefix "w") (setq kana-list (delete "$B$&(B" kana-list))) ;; "x" $B$G(B "$B$+(B", "$B$1(B" $B$rJd40$7$J$$(B ;; in skk-rom-kana-base-rule-list, "xka"$B"*(B"$B$+(B", "xke"$B"*(B"$B$1(B" (when (string= prefix "x") (setq kana-list (delete "$B$+(B" kana-list)) (setq kana-list (delete "$B$1(B" kana-list))) ;; $B$$$A$*$&%+%J%b!<%I$r9M$($F(B (when (string= prefix "v") (add-to-list 'kana-list "$B%t(B")) ;; $BJ?2>L>!&JR2>L>$N$_(B ($B5-9fN`$OITMW(B) (save-match-data (delq nil (mapcar (lambda (kana) (when (string-match "\\(\\cH\\|\\cK\\)" kana) kana)) kana-list)))) "*`skk-comp-prefix-regexp-alist' $B$K<+F0$GMWAG$rDI2C$9$k:]$KMxMQ$5$l$k4X?t!#(B `skk-rule-tree' $B$+$i%W%l%U%#%C%/%9$KBP1~$9$k(B \"$B$+$J(B\" $B$r=8$a$?8e!"(B $B$3$N4X?t$K$h$C$FD4@0$r9T$&!#(B" :type '(radio (function :tag "$B4X?t(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-comp) (defcustom skk-completion-prog-list '((skk-comp-by-history) (skk-comp-from-jisyo skk-jisyo) (skk-look-completion)) "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-comp-first' $B$,(B t $B$G$"$k;~$K(B $B?75,Jd408uJd72$N@8@.$r3+;O$7!"(B1$B2s$NI>2A$K$D$-(B 1$B$D$N8uJd$rJV$9(B S $B<0!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-1 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-1 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-2 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-2 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-3 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-3 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-4 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-4 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-5 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-5 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-6 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-6 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-7 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-7 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-8 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-8 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-9 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-9 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-0 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-0 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-search-char ?~ "*`skk-completion-search' $B$rMxMQ$9$kJQ49$r;XDj$9$k%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-comp) (defcustom skk-smart-find-file-path load-path "*`smart-find' $B$K%U%!%$%kL>$rC5:w$5$;$k%Q%9!#(B $B$3$NCM$,;XDj$5$l$J$1$l$P!"(B`smart-find-file-path' $B$NCM$,Be$o$j$K;HMQ$5$l$k!#(B" :type '(repeat (directory)) :group 'skk-comp) (defcustom skk-smart-find-ignored-file-regexp "\ \\(\\.\\(elc\\|o\\(rig\\|ld\\)?\\|diff\\)\\|,v\\|~\\|/\\)$" "*`smart-find' $B$KL5;k$5$l$k%U%!%$%kL>$r;XDj$9$k@55,I=8=!#(B" :type 'regexp :group 'skk-comp) ;; ---- buffer local variables ;; $B6uJ8;zNs$KBP$7$F(B skk-comp-do $B$r8F$V$3$H$b$"$j$&$k$N$G!"(B"" $B$r(B nil $B$G$OBe(B ;; $BMQ$G$-$J$$!#(B (skk-deflocalvar skk-comp-key "" "$BJd40$9$Y$-8+=P$78l!#(B") ;; $B<-=qEPO?;~%_%K%P%C%U%!$GJd40$7$?>l9g!"85$N%P%C%U%!$KLa$C$?$H$-$K(B ;; skk-comp-key $B$NCM$,GK2u$5$l$F$$$J$$J}$,%Y%?!%j%9%H$r3JG<$9$k!#(B") (defvar skk-comp-lisp-symbols nil "$BJd40$5$l$?(B lisp symbol $B$N%j%9%H$r3JG<$9$k!#(B") ;;; skk-server-completion.el related. (defcustom skk-server-completion-search-char ?~ "*server completion $B$rMxMQ$7$?JQ49$r9T$&%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-server-completion) (defvar skk-server-completion-words nil "server completion $B$K$h$jF@$i$l$?8+=P$78l$N%j%9%H!#(B") (defvar skk-server-disable-completion nil "Non-nil $B$J$i(B server completion $B$N5!G=$rL58z$K$9$k!#(B server completion $B$,]$N%U%'%$%9!#(B" :group 'skk-dcomp) (defcustom skk-dcomp-activate nil "*Non-nil $B$G$"$l$P8+=P$78l$NF0E*Jd40$N5!G=$rM-8z$K$9$k!#(B $B$3$NJQ?t$NCM$,(B `eolp' $B$@$C$?>l9g!"%]%$%s%H$,9TKv$K$"$k;~$@$1Jd40$9$k!#(B" :type '(radio (const :tag "always on" t) (const :tag "only at the end of a line" eolp) (const :tag "off" nil) (sexp :tag "$BG$0U$N%k!<%k(B")) :group 'skk-dcomp) (defcustom skk-dcomp-face-priority 700 "*Overlay/extent priority of `skk-dcomp-face'." :type 'integer :group 'skk-dcomp) (defcustom skk-dcomp-keep-completion-keys nil ;; (delq ;; nil ;; (list ;; (car (rassoc (list nil 'skk-toggle-kana) ;; skk-rom-kana-rule-list)) ;; (car (rassoc (list nil 'skk-toggle-characters) ;; skk-rom-kana-rule-list)) ;; (car (rassoc (list nil 'skk-toggle-kana) ;; skk-rom-kana-base-rule-list)) ;; (car (rassoc (list nil 'skk-toggle-characters) ;; skk-rom-kana-base-rule-list)))) "*$BF0E*Jd40$5$l$?8+=P$78l$r>C$5$J$$%-!<$N%j%9%H!#(B $BDL>o$O8+=P$78l$NJd408e!"C$($F$7$^$&$,!"$3$N%j%9%H$K;XDj$5$l$?%-!<(B $BF~NO$,$"$C$?$H$-$OF0E*Jd40$5$l$?8+=P$78l$r>C$5$J$$!#(B" :type '(radio (repeat :tag "$B%j%9%H(B" (string :tag "$B%-!<(B($BJ8;z(B)")) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dcomp) (defcustom skk-dcomp-multiple-activate nil "*Non-nil $B$G$"$l$P!"F0E*Jd40$N8uJd$rJ#?tI=<($9$k!#(B $B4X?t$G$"$l$P!"$=$NI>2A7k2L$,(B non-nil $B$N;~$@$1F0E*Jd40$N8uJd$rJ#?tI=<($9$k!#(B $B$3$N5!G=$O(B XEmacs $B$G$OF0:n$7$J$$!#(B" :type '(radio (const :tag "always on" t) (const :tag "off" nil) (sexp :tag "$BG$0U$N%k!<%k(B")) :group 'skk-dcomp) (defcustom skk-dcomp-multiple-rows 7 "*$BF0E*Jd40$N8uJd$rJ#?tI=<($9$k>l9g$NI=<(?t!#(B" :type 'integer :group 'skk-dcomp) (defcustom skk-dcomp-multiple-keep-point-buffer-list (list (concat " *" (file-name-nondirectory skk-jisyo) "*")) "*$BJ#?tI=<($N0Y$KJd408uJd$r8!:w$9$k:]$K(B `point' $B$rJ];}$9$k%P%C%U%!$N%j%9%H!#(B $BF0E*Jd40$G8uJd$rJ#?tI=<($9$k:]$K8!:wBP>]%P%C%U%!(B $BFb$N(B `point' $B$rF0$+$7$F$7$^$&$HDL>o$NJd40$,@5>o$K5!G=$7$J$/$J$k!#(B $B$=$N$?$a!"J#?tI=<(MQ$N8!:w$,=*$o$C$?8e$G(B `point' $B$rLa$9$Y$-%P%C%U%!(B $B$r$3$N%j%9%H$K@_Dj$9$k!#(B $B6qBNE*$K$O(B `skk-comp-from-jisyo' $B$r;HMQ$7$F8uJd$r8!:w$9$k>l9g!"$=(B $B$NBP>]%P%C%U%!$O$3$N%j%9%H$K@_Dj$9$kI,MW$,$"$k!#(B" :type '(repeat string) :group 'skk-dcomp) (skk-deflocalvar skk-dcomp-start-point nil) (skk-deflocalvar skk-dcomp-end-point nil) (skk-deflocalvar skk-dcomp-extent nil) (skk-deflocalvar skk-dcomp-multiple-candidates nil) (skk-deflocalvar skk-dcomp-multiple-key "") (skk-deflocalvar skk-dcomp-multiple-prefix "") (skk-deflocalvar skk-dcomp-multiple-search-done nil) (skk-deflocalvar skk-dcomp-multiple-select-index -1) (skk-deflocalvar skk-dcomp-multiple-overlays nil) (defvar skk-dcomp-face 'skk-dcomp-face) ;;; skk-gadget.el related. (defcustom skk-gengo-alist '((heisei "$BJ?@.(B" "H") (showa "$B>$N1Q8lI=5-$H$=$NB>$NI=5-K!$NO"A[%j%9%H!#(B $B3F(B cons cell $B$N(B car $B$O(B Emacs $BI8=`4X?t(B `current-time-string' $B$,JV$97A<0!#(B cdr $B$OBP1~$9$kG$0U$N7A<0!#(B" :type '(repeat (list (string :tag "English") (string :tag "$BF|K\<0(B") (string :tag "Deutsch"))) :group 'skk-gadget) (defcustom skk-day-of-week-alist '(("Sun" "$BF|(B" "So") ("Mon" "$B7n(B" "Mo") ("Tue" "$B2P(B" "Di") ("Wed" "$B?e(B" "Mi") ("Thu" "$BLZ(B" "Do") ("Fri" "$B6b(B" "Fr") ("Sat" "$BEZ(B" "Sa")) "*$BMKF|$N1Q8lI=5-$H$=$NB>$NI=5-K!$NO"A[%j%9%H!#(B $B3F(B cons cell $B$N(B car $B$O(B Emacs $BI8=`4X?t(B `current-time-string' $B$,JV$97A<0!#(B cdr $B$OBP1~$9$kG$0U$N7A<0!#(B" :type '(repeat (list (string :tag "English") (string :tag "$BF|K\8l(B") (string :tag "Deutsch"))) :group 'skk-gadget) (defcustom skk-default-current-date-function (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil skk-number-style gengo 0 0 0 and-time)) "*`skk-current-date' $B$G%3!<%k$5$l$k%G%U%)%k%H$N4X?t!#(B $B;~4V>pJs$r0z?t$KNqI=<($9$k!#(B nil $B$G$"$l$P!"859fI=<($9$k!#(B" :type 'boolean :group 'skk-gadget) (defcustom skk-number-style 1 "*`skk-today', `skk-clock' $B$GI=<($9$k?t;z$N7A<0$rJQ2=$5$;$k!#(B 0 , nil : ASCII $B?t;z(B 1 , t : $BA43Q?t;z(B 2 : $B4A?t;z(B($B0LpJs$NO"A[%j%9%H!#(B $B3FMWAG$O(B ($B4p=`$H$J$kC10L(B ($BJQ49$9$kC10L(B . $BJQ49;~$NG\N((B)) $B$N7A<0$K$h$k!#(B `skk-gadget-units-conversion' $B$G;2>H$9$k!#(B" :type 'sexp :group 'skk-gadget) (defcustom skk-gadget-load-hook nil "*skk-gadget.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-gadget) ;;; skk-isearch.el related. (defcustom skk-isearch-mode-enable t "*Non-nil $B$G$"$l$P!"%$%s%/%j%a%s%?%k!&%5!<%A$G(B skk-isearch $B$rMxMQ$9$k!#(B $BDL>o$O(B SKK $B%b!<%I$,(B ON $B$N%P%C%U%!$G$N$_(B skk-isearch $B$,M-8z$K$J$k$,!"$3(B $B$NCM$,(B `always' $B$G$"$l$P(B SKK $B%b!<%I$,(B OFF $B$N%P%C%U%!$G$bM-8z$K$J$k!#(B $B$3$NCM$,(B nil $B$J$i$P(B skk-isearch $B$OL58z$K$J$k!#(Bmigemo $B$rMxMQ$7$?$$>l9g(B $B$J$I$K$O(B nil $B$K@_Dj$9$k$+!"$b$7$/$OJ;MQ$9$k$N$G$"$l$P(B `skk-isearch-start-mode' $B$r(B `latin' $B$K$9$k$N$,NI$$!#(B" :type '(radio (const :tag "SKK $B%b!<%I$,(B ON $B$N;~$@$1MxMQ$9$k(B" t) (const :tag "$B>o$KMxMQ$9$k(B" always) (const :tag "$BMxMQ$7$J$$(B" nil)) :group 'skk-isearch) (defcustom skk-isearch-mode-string-alist '((hiragana . "[$B$+(B] ") (katakana . "[$B%+(B] ") (jisx0208-latin . "[$B1Q(B] ") (latin . "[aa] ") (abbrev . "[a$B$"(B] ") (nil . "[--] ")) ;; "*Alist of (MODE-SYMBOL . PROMPT-STRING). ;;MODE-SYMBOL is a symbol indicates canonical mode of skk for skk-isearch. ;;Valid MODE-SYMBOL is one of `hiragana', `katakana', `jisx0208-latin', ;;`latin' or nil. ;;PROMPT-STRING is a string used in prompt to indicates current mode of ;;skk for skk-isearch. " "*$B%$%s%/%j%a%s%?%k!&%5!<%A;~$N%W%m%s%W%HI=<($N$?$a$NO"A[%j%9%H!#(B $B3FMWAG$O!"(B (MODE-SYMBOL . PROMPT-STRING) $B$H$$$&(B cons cell$B!#(B MODE-SYMBOL $B$OF~NO%b!<%I$rI=$o$9%7%s%\%k$G!"2<5-$N$$$:$l$+$r;XDj$9$k!#(B $B$+$J%b!<%I!'(B `hiragana' $B%+%J%b!<%I!'(B `katakana' $BA41Q%b!<%I!'(B `jisx0208-latin' $B%"%9%-!<%b!<%I!'(B `latin' Abbrev $B%b!<%I!'(B `abbrev' nil : SKK $B%b!<%I%*%U(B PROMPT-STRING $B$O!"F~NO%b!<%I$K1~$8$F%W%m%s%W%HI=<($9$kJ8;zNs!#(B" :type '(list (cons (const :tag "$B$+$J%b!<%I(B" hiragana) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "$B%+%J%b!<%I(B" katakana) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "$BA41Q%b!<%I(B" jisx0208-latin) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "$B%"%9%-!<%b!<%I(B" latin) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "Abbrev $B%b!<%I(B" abbrev) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "SKK$B%b!<%I%*%U(B" nil) (string :tag "$B%W%m%s%W%H(B"))) :group 'skk-isearch) (defcustom skk-isearch-start-mode nil ;; "*Specifies the search mode when isearch is called. ;;This variable is valid only when `skk-isearch-use-previous-mode' is nil. ;;If nil, it means that if skk-mode has been called in this buffer, same as ;;the mode of the buffer, otherwise perform ascii search. ;;If `latin' or `ascii' perfrom ascii search. ;;If `hiragana', `hirakana' or `kana' -> hira kana search. ;;If `jisx0208-latin' or `eiji', perform zenkaku eiji (i.e. JIS X0208 ;;alphabet) search." "*$B%+%l%s%H%P%C%U%!$G%$%s%/%j%a%s%?%k!&%5!<%A$r9T$&:]$NF~NO%b!<%I!#(B `skk-isearch-use-previous-mode' $B$,(B nil $B$N>l9g$N$_M-8z!#(B $B%$%s%/%j%a%s%?%k!&%5!<%A$r9T$&>l9g!">o$K$3$NJQ?t$G;XDj$7$?F~NO%b!<%I$,;HMQ$5$l$k(B ($B%f!<%6!<$,L@<(E*$KJQ99$9$k$3$H$O2D(B)$B!#(B $B2<5-$N$$$:$l$+$N%7%s%\%k$G;XDj$9$k!#(B nil: $B%+%l%s%H%P%C%U%!$G(B SKK $B%b!<%I$,5/F0$5$l$F$$$l$P$=$N%b!<%I!"(B $B5/F0$5$l$F$$$J$1$l$P(B $B%"%9%-!<%b!<%I!#(B `hiragana' (`hiragana' or `kana'): $B$+$J%b!<%I(B `jisx0208-latin' (`eiji') : $BA41Q%b!<%I(B `latin' (`ascii'): $B%"%9%-!<%b!<%I(B" :type '(radio (const :tag "$B8!:wCf%P%C%U%!$N%b!<%I$r7Q>5(B" nil) (const :tag "$B%"%9%-!<%b!<%I(B" latin) (const :tag "$B$+$J%b!<%I(B" hiragana) (const :tag "$BA41Q%b!<%I(B" jisx0208-latin)) :group 'skk-isearch) (defcustom skk-isearch-use-previous-mode nil ;; "*Non-nil means use the same search mode as that of the last search." "*Non-nil $B$G$"$l$P!"F1$8%P%C%U%!$G$N:G8e$N8!:w;~$N%b!<%I$r;HMQ$9$k!#(B" :type 'boolean :group 'skk-isearch) (defcustom skk-isearch-initial-mode-when-skk-mode-disabled 'latin ;; "*Symbol indicates the mode to use as initial mode for skk-isearch when ;;skk is turned off in the current buffer." "*SKK $B%b!<%I$,%*%U$N%P%C%U%!$G!":G=i$K%$%s%/%j%a%s%?%k!&%5!<%A$r9T$&:]$NF~NO%b!<%I!#(B" :type '(radio (const :tag "$B%"%9%-!<%b!<%I(B" latin) (const :tag "$B$+$J%b!<%I(B" hiragana) (const :tag "$BA41Q%b!<%I(B" jisx0208-latin)) :group 'skk-isearch) (defcustom skk-isearch-whitespace-regexp "\\(\\s \\|[ \t\n\r\f]\\)*" ;; "*Regular expression to match a sequence of whitespace chars. ;;This applies to regular expression incremental search." "$B6uGrJ8;z$NO"B3$H$7$F%^%C%A$5$;$k$Y$-@55,I=8=!#(B regexp isearch $B$N:]!"$3$N@55,I=8=$K%^%C%A$9$kJ8;z$,8!:wJ8;zNs$N4V$K4^$^$l$F$$$F(B $B$b%^%C%A$9$k!#(B" :type 'regexp :group 'skk-isearch) (defconst skk-isearch-mode-canonical-alist '((hiragana . 0) (katakana . 1) (jisx0208-latin . 2) (latin . 3)) "Alist of (SYMBOL . NUMBER). The SYMBOL is canonical skk mode, and NUMBER is its numerical representation.") (defconst skk-isearch-mode-alias-alist '((hirakana . hiragana) (kana . hiragana) (eiji . jisx0208-latin) (ascii . latin)) "Alist of (ALIAS . CANONICAL). The both ALIAS and CANONICAL should be symbol. ALIAS can be used as an alias of CANONICAL. CANONICAL should be found in `skk-isearch-mode-canonical-alist'. ") (defconst skk-isearch-breakable-character-p-function (cond ((eval-when-compile (featurep 'emacs)) (lambda (char) ;; see emacs/lisp/fill.el how the category `|' is ;; treated. (aref (char-category-set char) ?|))) (t (lambda (char) (string-match word-across-newline (char-to-string char))))) "Function to test if we can insert a newline around CHAR when filling.") (defconst skk-isearch-working-buffer " *skk-isearch*" "Work buffer for skk isearch.") (defvar skk-isearch-message nil "skk-isearch $B4X?t$r%3!<%k$9$k$?$a$N%U%i%0!#(B Non-nil $B$G$"$l$P!"(B`skk-isearch-message' $B4X?t$r%3!<%k$9$k!#(B") (defvar skk-isearch-mode nil "Current search mode. 0 means hira kana search. 1 means kana search. 2 means zenkaku eiji (i.e. JIS X0208 alphabet) search. 3 means ascii search.") (defvar skk-isearch-incomplete-message "" "Incomplete isearch message") (defvar skk-isearch-mode-map nil "Keymap for skk isearch mode. This map should be derived from `isearch-mode-map'.") (defvar skk-isearch-overriding-local-map (if (featurep 'xemacs) 'overriding-local-map 'overriding-terminal-local-map) "Variable holding overriding local map used in `isearch-mode'.") (defvar skk-isearch-last-mode-string "") (defvar skk-isearch-last-mode-regexp "") ;;;###autoload (defvar skk-isearch-switch nil) (defvar skk-isearch-state nil) (defvar skk-isearch-in-editing nil) (defvar skk-isearch-current-buffer nil) ;;; skk-hint.el related. (defcustom skk-hint-start-char ?\73 ; ; "*$B%R%s%HJQ49$r3+;O$9$k%-!<%-%c%i%/%?(B" :type 'character :group 'skk-hint) (skk-deflocalvar skk-hint-henkan-hint nil "$B%R%s%HIU$-JQ49;~$N%R%s%HItJ,!#(B `skk-henkan-key', `skk-henkan-okurigana', `skk-okuri-char' $B$N%j%9%H!#(B") (skk-deflocalvar skk-hint-start-point nil) (skk-deflocalvar skk-hint-end-point nil) (skk-deflocalvar skk-hint-okuri-char nil) (skk-deflocalvar skk-hint-state nil) (skk-deflocalvar skk-hint-inhibit-kakutei nil) (skk-deflocalvar skk-hint-inhibit-dcomp nil) ;;; skk-jisx0201.el related. (defcustom skk-use-jisx0201-input-method nil "\ *Non-nil $B$J$i(B $BH>3Q%+%J$H(B Japanese Roman $B$NF~NO5!G=$,MxMQ2DG=$K$J$k!#(B" :type 'boolean :group 'skk-jisx0201) (defcustom skk-jisx0201-mode-string "(I6@6E(B" "*SKK $B$,(B JISX0201 $B%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#(B" :type 'string :group 'skk-jisx0201) (defvar skk-jisx0201-base-rule-tree nil) (defvar skk-jisx0201-roman-rule-tree nil) (defvar skk-jisx0201-orig-rule-tree nil) (skk-deflocalvar skk-jisx0201-roman nil) (skk-deflocalvar skk-jisx0201-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,(B JISX0201 $B%b!<%I$G$"$k$3$H$r<($9!#(B") ;;; skk-jisx0213.el related. (defcustom skk-jisx0213-prohibit nil "*Non-nil $B$G$"$l$P(B JISX0213 $B$NJ8;zNs$r4^$`8uJd$N=PNO$r$7$J$$!#(B JISX0213 $B$r07$($J$$$H$-$O$3$NCM$OF0:n$K1F6A$7$J$$!#(B" :type 'boolean :group 'skk-jisx0213) ;;; skk-jisyo-edit-mode.el related (defcustom skk-jisyo-edit-user-accepts-editing nil "*Non-nil $B$G$"$l$P!"%f!<%6$,8D?M<-=q$NJT=8$r<+8J@UG$$K$F9T$&;]3NG':Q$G$"$k!#(B nil $B$G$"$l$P!"(B`skk-edit-private-jisyo' $B$N \"shi\" nil $B$G$"$l$P!"71Na<0(B \"($B!VF|K\<0!W$H$b8@$&$h$&$@(B)\" $B$rMQ$$$k!#(B $BNc$($P!"(B \"$B$7(B\" -> \"si\" $B>H$9$k5U0z$-%f!<%6<-=q$N%j%9%H!#(B" :type '(repeat file) :group 'skk-kakasi) ;;; skk-kanagaki.el related. (defcustom skk-use-kana-keyboard nil "\ *Non-nil $B$J$i2>L>F~NOMQ$N@_Dj$r%m!<%I$9$k!#(B SKK $B;HMQCf$K$3$NJQ?t$NCM$r@Z$jBX$($k$3$H$G(B $B%m!<%^;zF~NO(B $B"+"*(B $B2>L>F~NO(B $B$N(B $B@Z$jBX$($,$G$-$k!#(B" :type 'boolean :set (lambda (symbol value) (prog1 (if (fboundp 'custom-set-default) (custom-set-default symbol value) (set-default symbol value)) (when (and value (boundp 'skk-mode-invoked) skk-mode-invoked) (require 'skk-kanagaki) (skk-kanagaki-initialize)))) :group 'skk-kanagaki) ;;; skk-kcode.el related. (defcustom skk-kcode-method (if (featurep 'emacs) 'code-or-char-list 'code-or-menu) "*`skk-input-by-code-or-menu' $B$G;H$o$l$kJ8;zA^F~$N$?$a$N%$%s%?!<%U%'!<%9!#(B `char-list' $B$G$"$l$P!"J8;z0lMwI=(B (`skk-list-chars') $B$+$iA*Br$9$k!#(B `code-or-char-list' $B$G$"$l$P!"$^$:(B JIS $B%3!<%I(B/$B6hE@%3!<%IF~NO%W%m%s%W%H$rI=<((B $B$7!"M-8z$JF~NO$,F@$i$l$J$+$C$?>l9g$K(B `skk-list-chars' $B$r8F$S=P$9!#(B `code-or-menu' $B$G$"$l$P=>Mh$N$h$&$K!"$^$:(B JIS $B%3!<%I(B/$B6hE@%3!<%IF~NO%W%m%s%W%H(B $B$rI=<($7!"M-8z$JF~NO$,3NDj$7$J$+$C$?>l9g$K$O8uJdJ8;z0lMw$rI=<($9$k!#(B" :type '(radio (const :tag "$B>o$KJ8;z%3!<%II=$+$iA*$V(B" char-list) (const :tag "$B%3!<%IF~NO(B $B"*(B $BJ8;z%3!<%II=(B" code-or-char-list) (const :tag "$B%3!<%IF~NO(B $B"*(B $BJ8;z8uJd(B ($B5lMh$N%a%K%e!<(B)" code-or-menu) (const :tag "$BJ8;z%3!<%II=!?%3!<%IF~NO$OMxMQ$7$J$$(B" this-key)) :group 'skk-kcode) (defcustom skk-input-by-code-menu-keys1 '(?a ?s ?d ?f ?g ?h ?q ?w ?e ?r ?t ?y) "*$B%a%K%e!<7A<0$G(B JIS $BJ8;z$rF~NO$9$k$H$-$K;HMQ$9$kA*Br%-!<$N%j%9%H!#(B $BBh(B 1 $BCJ3,$N%a%K%e!<$G;HMQ$9$k!#(B 12 $B8D$N%-!<(B (char type) $B$r4^$`I,MW$,$"$k!#(B" :type '(repeat character) :group 'skk-kcode) (defcustom skk-input-by-code-menu-keys2 '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?t ?y ?u) "*$B%a%K%e!<7A<0$G(B JIS $BJ8;z$rF~NO$9$k$H$-$K;HMQ$9$kA*Br%-!<$N%j%9%H!#(B $BBh(B 2 $BCJ3,$N%a%K%e!<$G;HMQ$9$k!#(B 16 $B8D$N%-!<(B (char type) $B$r4^$`I,MW$,$"$k!#(B" :type '(repeat character) :group 'skk-kcode) (defcustom skk-kcode-charset (cond ((find-coding-system 'euc-jisx0213) 'japanese-jisx0213-1) (t 'japanese-jisx0208)) "*`skk-input-by-code-or-menu' $B$G;H$o$l$kJ8;z%;%C%H!#(B" :type (let ((list (if (find-coding-system 'euc-jisx0213) '((const japanese-jisx0213-1) (const japanese-jisx0208)) '((const japanese-jisx0208)))) (prompt (if (get 'charset 'widget-type) '(charset) '(symbol)))) (append '(radio) list prompt)) :group 'skk-jisx0213 :group 'skk-kcode) (defcustom skk-kcode-load-hook nil "*skk-kcode.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-kcode) (defconst skk-code-n1-min 161) (defconst skk-code-n1-max (if (find-coding-system 'euc-jisx0213) 254 244)) (defconst skk-code-n2-min 161) (defconst skk-code-n2-max 254) (defconst skk-code-null 128) (defconst skk-kcode-charset-list (mapcar (lambda (x) (list (symbol-name x))) (if (eval-when-compile (featurep 'emacs)) charset-list (charset-list)))) (defvar skk-display-code-method 'code "*Non-nil $B$G$"$l$P%]%$%s%H$K$"$kJ8;z$N%3!<%I$rI=<($9$k!#(B nil $B$G$"$l$P(B `this-command-keys' $B$rA^F~$9$k!#(B") (defvar skk-input-by-code-or-menu-jump-default skk-code-n1-min) (defface skk-display-code-prompt-face '((((class color) (type tty)) (:inherit default :foreground "cyan")) (((class color) (background light)) (:inherit default :foreground "cyan")) (((class color) (background dark)) (:inherit default :foreground "cyan")) (((class grayscale)) (:inherit default))) "*skk-display-code `$' $B$G%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8Cf$N(B KUTEN:$B!"(BJIS:$B!"(BEUC:$B!"(B SJIS: $B5Z$S(B UNICODE: $B$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) (defface skk-display-code-char-face '((((class color) (type tty)) (:inherit default :foreground "black" :background "yellow")) (((class color) (background light)) (:inherit default :foreground "black" :background "yellow")) (((class color) (background dark)) (:inherit default :foreground "black" :background "yellow")) (((class grayscale)) (:inherit default))) "*skk-display-code `$' $B$G%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8Cf$NEv3:J8;z$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) (defface skk-display-code-tankan-radical-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*skk-display-code `$' $B$G%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8Cf$NAm2h?t$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) (defface skk-display-code-tankan-annotation-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*skk-display-code `$' $B$G%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8Cf$NJ8;zL>$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) ;;; skk-list-chars (in skk-kcode.el) related. (defvar skk-list-chars-buffer-name "*skk-list-chars*" "Docstring.") (defvar skk-list-chars-original-window-configuration nil "skk-list-chars-mode $B$KF~$kA0$N(B window configuration$B!#(B `skk-list-chars-quit' $B$NuBV$KI|5"$9$k!#(B") (defvar skk-list-chars-destination-buffer nil "skk-list-chars-insert $B$NA^F~@h%P%C%U%!(B") (defvar skk-list-chars-point nil "C-x C-x (skk-list-chars-goto-point) $B$N%8%c%s%W@h(B") (defvar skk-list-chars-default-charstr nil) (defvar skk-list-chars-mode-map (let ((map (make-sparse-keymap))) (define-key map "$" 'skk-list-chars-display-code) (define-key map "w" 'skk-list-chars-copy) (define-key map "q" 'skk-list-chars-quit) (define-key map (kbd "C-x C-x") 'skk-list-chars-goto-point) (define-key map "c" 'skk-list-chars-code-input) ;; (define-key map (kbd "C-a") '$B6h$N@hF,$X(B) ;; (define-key map (kbd "C-e") '$B6h$NKvHx$X(B) ;; (define-key map "<" '$B%P%C%U%!@hF,$X(B) ;; (define-key map ">" '$B%P%C%U%!KvHx$X(B) (define-key map (kbd "C-f") 'next-completion) (define-key map "f" 'next-completion) (define-key map "l" 'next-completion) (define-key map [right] 'next-completion) (define-key map (kbd "C-b") 'previous-completion) (define-key map "b" 'previous-completion) (define-key map "h" 'previous-completion) (define-key map [left] 'previous-completion) (define-key map (kbd "C-n") 'skk-list-chars-next-line) (define-key map "n" 'skk-list-chars-next-line) (define-key map "j" 'skk-list-chars-next-line) (define-key map [down] 'skk-list-chars-next-line) (define-key map (kbd "C-p") 'skk-list-chars-previous-line) (define-key map "p" 'skk-list-chars-previous-line) (define-key map "k" 'skk-list-chars-previous-line) (define-key map [up] 'skk-list-chars-previous-line) (define-key map (kbd "RET") 'skk-list-chars-insert) (define-key map "i" 'skk-list-chars-insert) (define-key map "g" 'skk-list-chars-jump) (define-key map "o" 'skk-list-chars-other-charset) (define-key map "\\" 'skk-list-chars-other-charset) map) "Keymap used in skk-list-chars mode.") (defface skk-list-chars-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*skk-list-chars $B%P%C%U%!$K$*$1$k!"L\E*J8;z$r;X$7<($9MQES$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) (defface skk-list-chars-table-header-face '((((class color) (type tty)) (:inherit default :foreground "red")) (((class color) (background light)) (:inherit default :foreground "Firebrick")) (((class color) (background dark)) (:inherit default :foreground "chocolate1")) (((class grayscale)) (:inherit default :foreground "LightGray"))) "*skk-list-chars $B%P%C%U%!$K$*$1$k!"0lMw8+=P$7$dOH@~$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-visual) ;;; skk-look.el related. (defcustom skk-use-look nil "*UNIX look $B%3%^%s%I$rMxMQ$7$?Jd40!&JQ49$r9T$&$+$I$&$+$r;XDj$9$k!#(B t $B$J$i$P!"Jd40;~$H1Q?t;zJQ49;~$K(B look $B$r;HMQ$9$k!#(B `completion' $B$J$i$P!"Jd40;~$@$1(B look $B$r;HMQ$9$k!#(B `conversion' $B$J$i$P!"1Q?t;zJQ49;~$@$1(B look $B$r;HMQ$9$k!#(B nil $B$J$i$P!"(Blook $B$r;HMQ$7$J$$!#(B SKK abbrev $B%b!<%I$GJd40$9$k$H!"8D?M<-=q$r8!:w$7?T$7$?8e$G!"(BUNIX look $B%3%^%s(B $B%I$K$h$k1QC18lJd40$r9T$&!#Nc$($P!"(B $B"&(Babstr (TAB) ---> $B"&(Babstract SKK abbrev $B%b!<%I$G!"!V1QJ8;z(B + $B%"%9%?%j%9%/!W$K$FJQ49$9$k$H!"(Blook $B%3%^%s%I(B $B$K$h$k[#Kf8!:w$r9T$&$3$H$,$G$-$k!#Nc$($P!"(B $B"&(Babstra* (SPC) ---> $B"'(Babstract $B$3$N>uBV$G3NDj$9$k$H!"(B`abstra*' $B$r8+=P$78l!"(B`abstract' $B$r8uJd$H$9$k%(%s%H%j(B $B$,8D?M<-=q$KDI2C$5$l$k!#(B`skk-search-excluding-word-pattern-function' $B$K$h(B $B$j!"3NDj$7$F$b$3$N$h$&$J%(%s%H%j$rDI2C$7$J$$$h$&$K@_Dj$9$k$3$H$,$G$-$k!#(B" :type '(radio (const :tag "$BJd40;~$H1Q?t;zJQ49;~$KM-8z(B" t) (const :tag "$BJd40;~$@$1M-8z(B" completion) (const :tag "$B1Q?t;zJQ49;~$@$1M-8z(B" conversion) (const :tag "$BL58z(B" nil)) :group 'skk-basic :group 'skk-look) (defcustom skk-look-command (executable-find "look") "*UNIX look $B%3%^%s%I$NL>A0!#(B" :type `(file :tag "$B%U%!%$%kL>(B" ,(or (executable-find "look") "")) :group 'skk-look) (defcustom skk-look-conversion-arguments (concat "-df %s " (cond ((file-exists-p "/usr/share/dict/words") "/usr/share/dict/words") ((file-exists-p "/usr/share/lib/dict/words") "/usr/share/lib/dict/words") ((file-exists-p "/usr/dict/words") "/usr/dict/words") (t ""))) "*look $B%3%^%s%I$,1Q?t!VJQ49!W;~$K8F$S=P$5$l$k:]$KEO$90z?t$r;XDj$9$kJQ?t!#(B $B0lHL$K(B look $B%3%^%s%I$O0J2<$N7A<0$G8F$S=P$5$l$k!#(B look [-df] [-t termchar] string [file] $B$=$l$>$l$N0UL#$K$D$$$F$O(B \\[man] look $B$r;2>H$5$l$?$$!#(B $B$3$NJQ?t$K$O!">e5-$N$h$&$JA40z?t$N$&$A(B string $B$r(B %s $B$KCV49$7$?$b$N$r;XDj$9$k!#(B $BCm0U;v9`$H$7$F!"(Blook $B%3%^%s%I$KEO$90z?t(B -d $B$H(B -f $B$K4X$7$F$O!"(B file $B$,(B $BF1$8(B $B0z?t$G(B sort $B$5$l$F$$$kI,MW$,$"$k!#Nc$($P(B look -df $B$G8!:w$9$k$H$-$O(B sort -df $B$G!"(B look -d $B$G8!:w$9$k$H$-$O(B sort -d $B$G(B sort $B$5$l$F$$$kI,MW$,$"$k!#$3$N$3$H(B $B$K4X$7$F$O(B \\[man] sort $B$b;2>H$5$l$?$$!#(B $B$b$&$R$H$D$NCm0UE@$H$7$F!"(B look $B$N:G8e$N0z?t$H$7$F(B file $B$rEO$5$J$$$H(B ($B>JN,$9$k(B $B$H(B) $B6/@)E*$K0z?t(B -d $B$H(B -f $B$N5!G=$,M-8z$K$J$k!#$b$7(B look $B$r;W$$DL$j@)8f$7$?$1$l(B $B$PE,@Z$J(B file $B$r;XDj$9$k$Y$-$G$"$k!#(B ($B@_DjNc(B) (setq skk-look-conversion-arguments \"-df %s /usr/share/dict/words\") " :type 'string :group 'skk-look) (defcustom skk-look-completion-arguments (concat "%s " (cond ((file-exists-p "/usr/share/dict/words") "/usr/share/dict/words") ((file-exists-p "/usr/share/lib/dict/words") "/usr/share/lib/dict/words") ((file-exists-p "/usr/dict/words") "/usr/dict/words") (t ""))) "*look $B%3%^%s%I$,1Q?t!VJd40!W;~$K8F$S=P$5$l$k:]$KEO$90z?t$r;XDj$9$kJQ?t!#(B look $B%3%^%s%I$K4X$7$F$OJQ?t(B `skk-look-conversion-arguments' $B$N%I%-%e%a%s%H!"(B $B5Z$S(B \\[man] look $B$r;2>H$5$l$?$$!#(B ($B@_DjNc(B) (setq skk-look-completion-arguments \"-d %s /usr/share/dict/words.case\") " :type 'string :group 'skk-look) (defcustom skk-look-recursive-search nil "*Non-nil $B$J$i$P!"(B look $B%3%^%s%I$,8+$D$1$?1QC18l$rJQ49%-!<$K$7$F:F8!:w$r9T$&!#(B $B:F8!:w$N7k2L!"8uJd$,8+$D$+$i$J$1$l$P!"85$N1QC18l<+?H$r8uJd$H$7$F=PNO$9$k!#(B" :type 'boolean :group 'skk-look) (defcustom skk-look-expanded-word-only t "*Non-nil $B$J$i$P!"(B look $B$N=PNO$KBP$9$k:F8!:w$,@.8y$7$?8uJd$N$_$rI=<($9$k!#(B `skk-look-recursive-search' $B$,(B non-nil $B$G$"$k$H$-$N$_M-8z!#(B" :type 'boolean :group 'skk-look) (defcustom skk-look-use-ispell nil "*look $B$K$h$k8!:w$N:]!"(Bispell $B$rJ;MQ$9$k$+$I$&$+$r;XDj$9$k!#(B t $B$J$i$P!"Jd40;~$H1Q?t;zJQ49;~$K(B ispell $B$rJ;MQ$9$k!#(B `completion' $B$J$i$P!"Jd40;~$@$1(B ispell $B$rJ;MQ$9$k!#(B `conversion' $B$J$i$P!"1Q?t;zJQ49;~$@$1(B ispell $B$rJ;MQ$9$k!#(B nil $B$J$i$P!"(Bispell $B$r;HMQ$7$J$$!#(B" :type '(radio (const :tag "$BJd40;~$H1Q?t;zJQ49;~$KM-8z(B" t) (const :tag "$BJd40;~$@$1M-8z(B" completion) (const :tag "$B1Q?t;zJQ49;~$@$1M-8z(B" conversion) (const :tag "$BL58z(B" nil)) :group 'skk-look) (defvar skk-look-completion-words nil) ;;;; skk-lookup.el related. (defcustom skk-lookup-search-agents nil "*$B8!:w%(!<%8%'%s%H$N@_Dj$N%j%9%H!#(B $B%j%9%H$N3FMWAG$OJN,2DG=$G!"%(!<%8%'%s%H$KBP$9$k%*%W%7%g%s$r;XDj$9$k!#(B $BNc(B: (setq skk-lookup-search-agents '((ndtp \"dserver\" :port 2010) (ndeb \"/cdrom\" :enable (\"EIWA\"))))" :type '(repeat (sexp :tag "Agent")) ; type $B$O$A$g$C$H$d$d$3$7$9$.!&!&(B :group 'skk-lookup) (defcustom skk-lookup-option-alist '(;; "[spla -> splat]" ("ispell" exact nil nil (not skk-okuri-char) ("-> \\([^ ]+\\)]$" . 1) nil nil) ;; what's this? ("jedict" exact nil nil (not skk-okuri-char) nil nil nil) ;; $BCN7CB"(B ;; `$B"'#I#M#F!N(BInternational Monetary Fund$B!?(BInternational ;; Metalworkers Federation$B!O(B' ;; `$B#I#M#F!J9q:]DL2_4p6b!K!Z(BInternational Monetary Fund$B![(B' ("CHIEZO" exact exact prefix t ("$B!J(B\\(.+\\)$B!K(B\\|$B!Z(B\\(.+\\)$B![(B$\\|$B!N(B\\(.+\\)$B!O(B$\\|^\\([^$B!J!Z!N!O![!K(B]+\\)$" . (cond ((match-beginning 1) 1) ((match-beginning 2) 2) ((match-beginning 3) 3) ((match-beginning 4) 4))) "$B!?(B\\|$B!"(B\\|, " nil) ;; $B!V<-!&E5!&HW!W(B ;; `$B$"$+#3(B $B^@(B", "ethanol' ("CHUJITEN" exact exact prefix t ("[$B#0(B-$B#9(B]* *\\([^ ]+\\)$" . 1) nil nil) ;; `($BHiIf$J$I$N(B)$B$"$+(B ", "$B!T1Q!U(B ($B%Q%$%W$J$I$N(B)$B$"$+(B ' ("COLLOC" exact exact prefix t ("\\([^ $B!T!U(B]+\\) <[a-z]+>$" . 1) nil nil) ;; $B%8!<%K%"%91QOB(B, $B%8!<%K%"%91QOB!&OB1Q<-E5(B ;; `$B$"$+(B[$B^@(B]' ;; `$B$$$l$+$((B[$BF~$lBX$((B,$BF~$l49$((B]' ("GENIUS" exact exact prefix t ;;("\\[\\(.+\\)\\]$" . 1) ;;can I use `$' for GENIUS? ("\\[\\(.+\\)\\]" . 1) "," nil) ;; Super$BE}9g<-=q(B99 Disk1, 2/$B8=BeMQ8l$N4pACCN<1(B ;; `$B"!$B0%(B' ;; `$B$@$7!Z=P$7![!Z=P$7!&!R=P=A!S![!Z!P;3$7$e$.!Z!=(B[$B!<$!(B-$B$s(B]+$B!Z!=(B\\([^$B!Z![(B]+\\)$B![(B$\\|\ \$B!Z(B\\([a-zA-Z]+\\) [$B!<%!(B-$B%s(B]+$B![(B$\\|$B!Z(B\\([^$B!Z![(B]+\\)$B![(B\\|\ ^$B!{(B\\(.+\\)$" . (cond ((match-beginning 2) '(1 2)) ((match-beginning 3) 3) ((match-beginning 4) 4) ((match-beginning 5) 5))) "$B!&(B" ;;"$B!>(B[$B!<$!(B-$B$s(B]+$B!Z!=(B\\|$B![(B$" nil) ;; KOJIEN: $B9-<-1qBh(B5$BHG(B($B4dGH(B,EPWING) ;; `$B$G$s$7!>%V%C%/!ZEE;R!=![(B' ("KOJIEN" exact exact prefix t ("^\\([^$B!Z![(B]+\\)$B!>(B[$B!<$!(B-$B$s(B]+$B!Z!=(B\\([^$B!Z![(B]+\\)$B![(B$\\|\ \$B!Z(B\\([a-zA-Z]+\\) [$B!<%!(B-$B%s(B]+$B![(B$\\|\ \$B!Z(B\\([^$B!Z![(B]+\\)$B![(B\\|\ ^[$B!<$!(B-$B$s(B]+$B!>(B\\([$B!<%!(B-$B%s(B]+\\)$B!Z(B\\([^$B!Z![(B]+\\)$B!=![(B$\\|\ ^$B!{(B\\(.+\\)$" . (cond ((match-beginning 2) '(1 2)) ((match-beginning 3) 3) ((match-beginning 4) 4) ((match-beginning 5) '(6 5)) ((match-beginning 7) 7))) "$B!&(B" ;;"$B!>(B[$B!<$!(B-$B$s(B]+$B!Z!=(B\\|$B![(B$" nil) ;; KOKUGO: $B;0>JF2(B $BF|K\8l<-E5!J8=Be9q8l!"30Mh8l!K(B ;; `$B!R(B' $B$O!"EvMQ4A;zI=$K$J$$4A;z$G!"(B`$B!T(B' $B$O!"EvMQ4A;zI=$K$O$"$k$,!"$=$N2;!"(B ;; $B71$,EvMQ4A;zI=$N2;71I=$K$J$$4A;z!#(B ("KOKUGO" exact exact prefix t ("$B!Z(B\\([^$B!Z![(B]+\\)$B![(B" . 1) "$B!&(B" "[$B!T!R(B]") ;; $B!V<-!&E5!&HW!WImB0$N%^%$%Z%G%#%"(B ;;`$BBgOB74;3(B($B;T(B)' ;;`$B%o%7%s%H%s(B(George Washington)' ;;`$B%o%7%s%H%s(B($B=#(B)' ;;`$B%o%7%s%H%s(B Washington' ;;`$B%"%$%s%7%e%?%$%s(B(Albert Einstein)' ;;`$B9aNI='(B($BD.(B)' ;;`$B%+%i%9(B ($B1((B)' ;;`$B%+%i%9(B(Maria Callas)' ("MYPAEDIA" exact exact prefix t ("\\([^ ]+\\)(.+)$\\|.+ (\\([^ ]+\\))$\\|^\\([^ ()]+\\)$" . (cond ((match-beginning 1) 1) ((match-beginning 2) 2) ((match-beginning 3) 3))) nil nil) ;; mypaedia-fpw $B$+$i@8@.$7$?(B PC Success $BHG%^%$%Z%G%#%"(B (FreePWING $B<-=q(B) ;; `$BBgOB74;3(B [$B$d$^$H$3$*$j$d$^(B] ($B;T(B)' ;; `$B%"%$%s%7%e%?%$%s(B (Albert Einstein)' ;; `$B%o%7%s%H%s(B (Washington) ($B=#(B)' ;; `$B%o%7%s%H%s(B (Washington)' ;; `$B%o%7%s%H%s(B (George Washington)' ;; `$B9aNI='(B [$B$+$i$9(B] ($BD.(B)' ;; `$B%+%i%9(B ($B1((B) [$B%+%i%9(B]' ;; `$B%+%i%9(B (Maria Callas)' ;;("MYPAEDIA" exact exact prefix t ;; ("^\\([^ ]+\\) \\[.+\\] (.+)$\\|^[^ ]+ (\\(.+\\)) \\[.+\\]$\\|\ ;; ^\\([^][() ]+\\)\\( .+\\)?$" . ;; (cond ((match-beginning 1) 1) ;; ((match-beginning 2) 2) ;; ((match-beginning 3) 3))) ;; nil nil) ;; ;; $B%K%e!<%"%s%+!<1QOB(B ;; "$B$"$+#2(B $B9$(B" ("NEWANC" exact exact prefix t ("[$B#0(B-$B#9(B]* *\\([^ ]+\\)$" . 1) nil nil) ;; what's this? ;; `$B!!$"$+(B ', ;; `$B!!!V$"$+!W(B ' ("PLUS" exact exact prefix t ("^$B!!(B\\(.+\\) <[a-z$B#0(B-$B#9(B]+>$" . 1) nil nil) ("lsd" exact exact prefix t ("^\\([^$B!L!M(B]+\\)$B!L(B.+$B!M(B$" . 1) nil nil)) "*$B<-=qKh$N8!:w!"J8;z@Z$j=P$7%*%W%7%g%s!#(B $B%j%9%H$N3FMWAG$O2<5-$NDL$j!#(B 0th: `lookup-dictionary-name' $B$,JV$9J8;zNs(B ($B<-=qL>7hDj$N8e$K8!:w$r3+;O$9$k$N$G!"Aw$j2>L>$,FCDj$G$-$k(B) $B$N(B search method $B$r<($9%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(Bnil $B$r;XDj$9$k$H!"(B $BAw$j$"$jJQ49$N:]$O$=$N<-=q$r8!:w$7$J$$!#(B 3th: $BAw$j$"$jJQ49$G!"$+$D(B `skk-process-okuri-early' $B$G$"$k$H$-(B ($BAw$j2>L>(B $B7hDj$NA0$K8!:w$r3+;O$7$F$*$j!"Aw$j2>L>$,FCDj$G$-$J$$$N$G!"Aw$j2>L>$N$+$J(B prefix $B$r=|$$$?ItJ,$r8!:w%-!<$H$7$F(B lookup $B$KEO$7$F$$$k(B) $B$N(B search method $B$r<($9(B $B%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(Bnil $B$r;XDj$9$k$HAw$j$"$jJQ49(B $B$N:]$O$=$N<-=q$r8!:w$7$J$$!#(B 4th: S $B<0!#$3$N(B S $B<0$rI>2A$7$F(B nil $B$K$J$k$H$-$O8!:w$7$J$$!#$"$k0lDj$N>r7o$rK~(B $B$7$?>l9g$K8!:w$7$J$$$h$&$K;XDj$G$-$k!#(B 5th: `lookup-entry-heading' $B$,JV$9(B heading $B$+$i8uJd$H$7$F=PNO$9$kJ8;zNs$r@Z$j(B $B=P$9$?$a$N(B regexp $B;XDj5Z$S@Z$j=P$7%*%W%7%g%s!#(B car $B$K(B regexp $B$r<($9J8;zNs!"(Bcdr $B$K(B `match-string' $B$KEO$9(B count $B$r;XDj(B $B$9$k(B (5th $B$KJ8;zNs$@$1$r;XDj$7$?>l9g$O(B `match-string' $B$K$O(B 1 $B$,(B $BEO$5$l$k(B)$B!#(B cdr $BIt$K(B S $B<0$r;XDj$9$k$3$H$b2DG=!#2<5-$N$h$&$K(B cond $B<0$G>r7oH=Dj$9$l$P(B $BJ#?t$N(B regexp $B$r(B or $B;XDj$9$k$3$H$,2DG=!#(B (cond ((match-beginning 1) 1) ((match-beginning 2) 2) ((match-beginning 3) 3) ((match-beginning 4) 4)) cdr $BIt$NI>2A7k2L$,?t;z$N%j%9%H$K$J$k$H$-$O!"$=$N?t;z$r=g$K(B match-string $B$KEO$7$FJ8;zNs$r@Z$j=P$7!"$=$l$iO"7k$7$?J8;zNs$r8uJd$H$7$FJV$9!#Nc$($P!"(B (cond ((match-beginning 5) '(6 5))) $B$H;XDj$9$k$H!"(B(match-beginning 5) $B$,(B non-nil $B$K$J$C$?>l9g!"(B (match-string 6) $B$H(B (match-string 5) $B$r$=$N=g$KO"7k$7$?J8;zNs$r8uJd$H$7(B $B$F=PNO$9$k!#(B $B@Z$j=P$5$:$KJ8;zNsA4BN$rBP>]$K$9$k$H$-$O!"(B5th $B$K(B nil $B$r;XDj$9$k!#(B 6th: $B@Z$j=P$5$l$?J8;zNs$NCf$K99$KJ#?t$N8uJd$r4^$`>l9g$N6h@Z$j$rI=$o$9(B regexp$B!#(B $BJ#?t$N8uJd$,F10l(B heading $B$NCf$K=PNO$5$l$J$$$H$-$O!"(Bnil $B$r;XDj$9$k!#(B 7th: $B@Z$j=P$5$l$?J8;zNs$+$iFCDj$NJ8;zNs$rl9g$K;XDj$9$k(B regexp$B!#(B $B<-=q$N=PNO$,<-=qFCM-$N5-9fJ8;z$r4^$`>l9g$K;XDj$9$k!#(B $B8=:_BP1~$7$F$$$k<-=qL>$O(B \"ispell\", \"jedict\", \"CHIEZO\", \"CHUJITEN\", \"COLLOC\", \"GENIUS\", \"GN99EP01\", \"GN99EP02\", \"IWAKOKU\", \"KANWA\", \"KOUJIEN\", \"KOJIEN\", \"KOKUGO\", \"MYPAEDIA\", \"NEWANC\", \"PLUS\" $B5Z$S(B \"lsd\"$B!#(B `lookup-entry-heading' $B$,<+J,$N;HMQ$9$k<-=q$+$i$I$N$h$&$JJ8;zNs$rJF2(B $B%K%e!<%;%s%A%e%j!<1QOB!&?7%/%i%&%sOB1Q<-E5(B ;; KANJIGEN: Super$BE}9g<-=q(B99 Disk2/$B4A;z8;(B : EPWING ;; RIKAGAKU: $BM}2=3X<-E5(B ;; WAEI: what's this? "*$B%G%U%)%k%H$N<-=q8!:w!"J8;z@Z$j=P$7%*%W%7%g%s!#(B $B$^$:<-=qL>$r%-!<$K$7$F(B `skk-lookup-option-alist' $B$r0z$-!"$=$3$K<-=q8!:w!"J8;z@Z(B $B$j=P$7$N%*%W%7%g%s$,8+$D$+$l$P$=$l$r;HMQ$7!"8+$D$+$i$J$+$C$?>l9g$K$3$NJQ?t$G(B $B;XDj$5$l$k<-=q8!:w!"J8;z@Z$j=P$7$N%*%W%7%g%s$r;HMQ$9$k!#(B $B%j%9%H$N3FMWAG$O2<5-$NDL$j!#(B 0th: $BAw$j$J$7JQ49$N:]$N(B search method $B$r<($9%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(B 1th: $BAw$j$"$jJQ49$G!"$+$D(B `skk-process-okuri-early' $B%*%W%7%g%s$r;XDj$7$F$$$J(B $B$$$H$-(B ($BAw$j2>L>7hDj$N8e$K8!:w$r3+;O$9$k$N$G!"Aw$j2>L>$,FCDj$G$-$k(B) $B$N(B search method $B$r<($9%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(Bnil $B$r;XDj$9$k$H!"Aw$j(B $B$"$jJQ49$N:]$O$=$N<-=q$r8!:w$7$J$$!#(B 2th: $BAw$j$"$jJQ49$G!"$+$D(B `skk-process-okuri-early' $B$G$"$k(B ($BAw$j2>L>7hDj$NA0(B $B$K8!:w$r3+;O$7$F$*$j!"Aw$j2>L>$,FCDj$G$-$J$$$N$G!"Aw$j2>L>$N$+$J(B prefix $B$r=|$$$?ItJ,$r8!:w%-!<$H$7$F(B lookup $B$KEO$7$F$$$k(B) $B$H$-$N(B search method $B$r<($9%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(Bnil $B$r;XDj$9$k$HAw$j$"$jJQ49$N:]$O$=(B $B$N<-=q$r8!:w$7$J$$!#(B 3th: S $B<0!#$3$N(B S $B<0$rI>2A$7$F(B nil $B$K$J$k$H$-$O8!:w$7$J$$!#$"$k0lDj$N>r7o$rK~(B $B$7$?>l9g$K8!:w$7$J$$$h$&$K;XDj$G$-$k!#(B 4th: `lookup-entry-heading' $B$,JV$9(B heading $B$+$i8uJd$H$7$F=PNO$9$kJ8;zNs$r@Z$j(B $B=P$9$?$a$N(B regexp $B;XDj5Z$S@Z$j=P$7%*%W%7%g%s!#(B car $B$K(B regexp $B$r<($9J8;zNs!"(Bcdr $B$K(B `match-string' $B$KEO$9(B count $B$r;XDj$9(B $B$k(B (4th $B$KJ8;zNs$@$1$r;XDj$7$?>l9g$O(B `match-string' $B$K$O(B 1 $B$,EO$5$l$k(B)$B!#(B cdr $BIt$K(B S $B<0$r;XDj$9$k$3$H$b2DG=!#2<5-$N$h$&$K(B cond $B<0$G>r7oH=Dj$9$l$P(B $BJ#?t$N(B regexp $B$r(B or $B;XDj$9$k$3$H$,2DG=!#(B (cond ((match-beginning 1) 1) ((match-beginning 2) 2) ((match-beginning 3) 3) ((match-beginning 4) 4)) cdr $BIt$NI>2A7k2L$,?t;z$N%j%9%H$K$J$k$H$-$O!"$=$N?t;z$r=g$K(B `match-string' $B$KEO$7$FJ8;zNs$r@Z$j=P$7!"$=$l$iO"7k$7$?J8;zNs$r8uJd$H$7$FJV$9!#Nc$($P!"(B (cond ((match-beginning 5) '(6 5))) $B$H;XDj$9$k$H!"(B(match-beginning 5) $B$,(B non-nil $B$K$J$C$?>l9g!"(B (match-string 6) $B$H(B (match-string 5) $B$r$=$N=g$KO"7k$7$?J8;zNs$r8uJd$H$7(B $B$F=PNO$9$k!#(B $B@Z$j=P$5$:$KJ8;zNsA4BN$rBP>]$K$9$k$H$-$O!"(B4th $B$K(B nil $B$r;XDj$9$k!#(B 5th: $B@Z$j=P$5$l$?J8;zNs$NCf$K99$KJ#?t$N8uJd$r4^$`>l9g$N6h@Z$j$rI=$o$9(B regexp$B!#(B $BJ#?t$N8uJd$,F10l(B heading $B$NCf$K=PNO$5$l$J$$$H$-$O!"(Bnil $B$r;XDj$9$k!#(B 6th: $B@Z$j=P$5$l$?J8;zNs$+$iFCDj$NJ8;zNs$rl9g$K;XDj$9$k(B regexp$B!#(B $B<-=q$N=PNO$,<-=qFCM-$N5-9fJ8;z$r4^$`>l9g$K;XDj$9$k!#(B $B$3$N%*%W%7%g%s$GBP1~$7$F$$$k<-=qL>$O!"(B\"CRCEN\", \"KANJIGEN\", \"RIKAGAKU\" $B5Z$S(B \"WAEI\". `lookup-entry-heading' $B$G$+!Z0!2J![!E%/%o(B\" \"$B$"$+!Zod2@![(B\" \"$B$3!>$7$g$&!Z>.@+!&>.@-![!E%7%d%&(B\" `lookup-entry-heading' $B$,<+J,$N;HMQ$9$k<-=q$+$i$I$N$h$&$JJ8;zNs$rL>$N2C9)J}K!$r<($9%^%8%C%/%J%s%P!<(B $B$rF~$l$?(B cons cell$B!#(B $B%^%8%C%/%J%s%P!<$O!"(B0 $B$,Aw$j$J$7$rI=$o$9(B ($BK\(B function $B$G$O;HMQ$9$k$3$H$O$J$$(B)$B!#(B 1 $B$OAw$j$"$jJQ49$G(B `skk-process-okuri-early' $B$,(B nil $B$N>l9g!#(B 2 $B$OAw$j$"$jJQ49$G(B `skk-process-okuri-early' $B$,(B non-nil $B$N>l9g$rI=$o$9!#(B $B6a$$>-Mh!"(Bskk-lookup.el $BA4BN$rDL$8$F$3$N$h$&$J%^%8%C%/%J%s%P!<$r;H$o$J$$$h$&$K(B $B2~NI$5$l$k2DG=@-$,$"$k!#(B" :type '(radio (function :tag "$B4X?t(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-lookup) (defcustom skk-lookup-kana-vector ["$B$!(B" "$B$"(B" "$B$#(B" "$B$$(B" "$B$%(B" "$B$&(B" "$B$'(B" "$B$((B" "$B$)(B" "$B$*(B" "$B$+(B" "$B$,(B" "$B$-(B" "$B$.(B" "$B$/(B" "$B$0(B" "$B$1(B" "$B$2(B" "$B$3(B" "$B$4(B" "$B$5(B" "$B$6(B" "$B$7(B" "$B$8(B" "$B$9(B" "$B$:(B" "$B$;(B" "$B$<(B" "$B$=(B" "$B$>(B" "$B$?(B" "$B$@(B" "$B$A(B" "$B$B(B" "$B$C(B" "$B$D(B" "$B$E(B" "$B$F(B" "$B$G(B" "$B$H(B" "$B$I(B" "$B$J(B" "$B$K(B" "$B$L(B" "$B$M(B" "$B$N(B" "$B$O(B" "$B$P(B" "$B$Q(B" "$B$R(B" "$B$S(B" "$B$T(B" "$B$U(B" "$B$V(B" "$B$W(B" "$B$X(B" "$B$Y(B" "$B$Z(B" "$B$[(B" "$B$\(B" "$B$](B" "$B$^(B" "$B$_(B" "$B$`(B" "$B$a(B" "$B$b(B" "$B$c(B" "$B$d(B" "$B$e(B" "$B$f(B" "$B$g(B" "$B$h(B" "$B$i(B" "$B$j(B" "$B$k(B" "$B$l(B" "$B$m(B" "$B$n(B" "$B$o(B" "$B$p(B" "$B$q(B" "$B$r(B" "$B$s(B"] "*`skk-kana-rom-vector' $B$N(B prefix $B$KBP1~$9$k$+$JJ8;z$N%Y%/%H%k!#(B $B$"$k(B prefix $B$,$I$N$+$JJ8;z$KBP1~$9$k$+$N%^%C%W$r:n$k$?$a$K;2>H$9$k!#(B" :type 'sexp :group 'skk-lookup) (defvar skk-lookup-agent-list nil) (defvar skk-lookup-default-module nil) (defvar skk-lookup-module-list nil) (defvar skk-lookup-prefix-and-kana-map nil) (defvar skk-lookup-get-content-nth-dic 0 "*$B4X?t(B `skk-lookup-get-content' $B$N=hM}BP>]$r?tCM$G;XDj$9$k(B. $B?tCM$O!V4X?t(B `skk-lookup-default-module' $B$NI>2A7k2L$N$&$A2?HVL\$N(B agent $B$r(B $B;HMQ$9$k$+!W$r!"%<%m$r5/E@$K?t$($k(B. *scratch* $B%P%C%U%!$G2A$7$F$_$k$H$h$$(B. \(let ((n 0)) (dolist (i (lookup-module-dictionaries (skk-lookup-default-module))) (insert (format \"%d %s\" n (lookup-dictionary-name i)) 10) ;10$B$O2~9T(B (setq n (1+ n)))) $B$J$*!"(BDDSKK $B$N5/F08e$KJQ?t$NCM$rJQ99$7$?>l9g$O!"(B*scratch* $B%P%C%U%!$G(B $B4X?t(B `skk-lookup-get-content-setup-dic' $B$rI>2A$9$k$3$H(B.") (defvar skk-lookup-get-content-default-dic nil) (defvar skk-lookup-get-content-default-dic-name nil) ;;; skk-num.el related. (defcustom skk-use-numeric-conversion t "*Non-nil $B$G$"$l$P!"?tCMJQ49$r9T$&!#(B" :type 'boolean :group 'skk-num) (defcustom skk-non-numeric-prog-list nil "*$B?tCMJQ49$K;H$o$J$$<-=q8!:w%W%m%0%i%`$N%j%9%H!#(B `skk-use-numeric-conversion' $B$,(B non-nil $B$N>l9g$N$_M-8z!#%j%9%H$NMWAG$H$7$F$O!"(B 1. $B%W%m%0%i%`$N4X?tL>$rI=$9%7%s%\%k(B 2. $B%W%m%0%i%`$r0z?t$NCM$^$G;XDj$7$?7A$N%j%9%H(B $B$N$$$:$l$G$b;XDj$G$-$k!#(B $BA0$N0lCW$7$?A4%W%m%0%i%`$,0lCW$HH=CG$5$l$k!#8e5Z$S(B $B$9$Y$F$N0z?t$,0lCW$7$?>l9g$N$_0lCW$HH=CG$5$l$k!#(B $B0lCW$NI>2A$O!"(B 1 $B$O4X?t(B `eq' $B$K$h$C$F!"(B 2 $B$O%j%9%H$KBP$7$F(B `equal' $B$K$h$C$F(B $B9T$o$l$k!#(B ($B@_DjNc(B) (setq skk-non-numeric-prog-list '(skk-look skk-tankan-search (skk-search-jisyo-file \"/usr/share/skk/SKK-JISYO.jinmei\" 10000))) " :type '(repeat (radio (symbol :tag "$B4X?tL>$N$_$G;XDj(B") (list :tag "$B4X?tL>$H0z?t$N%j%9%H(B"))) :group 'skk-num) (defcustom skk-show-num-type-info t "*Non-nil $B$J$i$P!"?tCMJQ49%(%s%H%j$N<-=qEPO?;~$KJQ49%?%$%W$N0FFb$rI=<($9$k!#(B" :type 'boolean :group 'skk-num) (defcustom skk-num-type-alist '((0 . identity) (1 . skk-num-jisx0208-latin) (2 . skk-num-type2-kanji) (3 . skk-num-type3-kanji) (4 . skk-num-recompute) (5 . skk-num-type5-kanji) (8 . skk-num-grouping) (9 . skk-num-shogi)) "*$B?tCM$NJQ49$N$?$a$N!"%$%s%G%/%9$HJQ49$K;HMQ$9$k4X?t$H$NO"A[%j%9%H!#(B $B4X?t(B `skk-num-exp' $B$,;2>H$7$F$$$k!#(B $B3FMWAG$O!"(B`($B%$%s%G%/%9(B . $B4X?tL>(B)' $B$H$$$&9=@.$K$J$C$F$$$k!#(B $B%$%s%G%/%9$K$O!"Nc$($P8+=P$78l$,(B \"$BJ?@.(B#1$BG/(B\" $B$N$H$-!"(B`#' $B5-9f$ND>8e$KI=<((B $B$5$l$k(B integer `1' $B$rBeF~$9$k!#(B $B%$%s%G%/%9$H4X?t$N4X78(B ($B%G%U%)%k%HCM(B) $B$O2<5-$NDL$j!#(B 0 -> $BL5JQ49(B 1 -> $BA43Q?t;z$XJQ49(B 2 -> $B4A?t;z(B ($B0L $B4A?t;z(B ($B0L $B$=$N?t;z$=$N$b$N$r%-!<$K$7$F<-=q$r:F8!:w(B 5 -> $B4A?t;z(B ($B $B7e6h@Z$j$XJQ49(B (1,234,567) 9 -> $B>-4}$G;HMQ$9$k?t;z(B (\"$B#3;M(B\" $B$J$I(B) $B$KJQ49(B" :type '(repeat (cons (radio :tag "$B%$%s%G%/%9(B" (const 0) (const 1) (const 2) (const 3) (const 4) (const 5) (const 8) (const 9)) (function :tag "$B4X?t(B"))) :group 'skk-num) (defcustom skk-num-convert-float nil "*Non-nil $B$G$"$l$P!"IbF0>.?tE@?t$r;H$C$?8+=P$78l$KBP1~$7$FJQ49$r9T$&!#(B $B$3$NCM$r(B non-nil $B$K$9$k$3$H$G!"(B\"#.# /#1$B!%(B#1/#0$B7n(B#0$BF|(B/\" $B$J$I$N<-=q8+=P$7$,;HMQ(B $B$G$-$J$/$J$k$N$G!"Cm0U!#(B" :type 'boolean :group 'skk-num) (defcustom skk-num-uniq (or (assq 4 skk-num-type-alist) (and (assq 2 skk-num-type-alist) (or (assq 3 skk-num-type-alist) (assq 5 skk-num-type-alist)))) "\ *Non-nil $B$G$"$l$P!"0[$J$k?tCMI=8=$G$bJQ497k2L$,F1$8?tCM$r=EJ#$7$F=PNO$7$J$$!#(B" :type 'boolean :group 'skk-num) (defcustom skk-num-load-hook nil "*skk-num.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-num) (defconst skk-num-alist-type1 '((?0 . "$B#0(B") (?1 . "$B#1(B") (?2 . "$B#2(B") (?3 . "$B#3(B") (?4 . "$B#4(B") (?5 . "$B#5(B") (?6 . "$B#6(B") (?7 . "$B#7(B") (?8 . "$B#8(B") (?9 . "$B#9(B") (?. . "$B!%(B") ; $B>.?tE@!#(B(?. . ".") $B$NJ}$,NI$$?M$b$$$k$+$b(B...$B!#(B (? . "")) "ascii $B?t;z$N(B char type $B$HA43Q?t;z$N(B string type $B$NO"A[%j%9%H!#(B \"1995\" -> \"$B#1#9#9#5(B\" $B$N$h$&$JJ8;zNs$XJQ49$9$k:]$KMxMQ$9$k!#(B") (defconst skk-num-alist-type2 '((?0 . "$B!;(B") (?1 . "$B0l(B") (?2 . "$BFs(B") (?3 . "$B;0(B") (?4 . "$B;M(B") (?5 . "$B8^(B") (?6 . "$BO;(B") (?7 . "$B<7(B") (?8 . "$BH,(B") (?9 . "$B6e(B") (?\ . "")) "ascii $B?t;z$N(B char type $B$H4A?t;z$N(B string type $B$NO"A[%j%9%H!#(B \"1995\" -> \"$B0l6e6e8^(B\" $B$N$h$&$JJ8;zNs$XJQ49$9$k:]$KMxMQ$9$k!#(B") (defconst skk-num-alist-type3 (append '((ju . "$B==(B") (hyaku . "$BI4(B") (sen . "$B@i(B") (man . "$BK|(B") (oku . "$B2/(B") (cho . "$BC{(B") (kei . "$B5~(B")) skk-num-alist-type2) "$B?t;z$N4A;zI=5-$rI=$9O"A[%j%9%H!#(B \"1995\" -> \"$B@i6eI46e==8^(B\" $B$N$h$&$JJ8;zNs$XJQ49$9$k:]$KMxMQ$9$k!#(B") (defconst skk-num-alist-type5 '((ju . "$B=&(B") (hyaku . "$BI4(B") (sen . "$Bot(B") (man . "$Bh_(B") (oku . "$B2/(B") (cho . "$BC{(B") (kei . "$B5~(B") (?0 . "$BNm(B") (?1 . "$B0m(B") (?2 . "$BFu(B") (?3 . "$B;2(B") (?4 . "$B;M(B") (?5 . "$B8`(B") (?6 . "$BO;(B") (?7 . "$B<7(B") (?8 . "$BH,(B") (?9 . "$B6e(B") (?\ . "")) "$B?t;z$N4A;zI=5-$rI=$9O"A[%j%9%H!#(B \"1995\" -> \"$B0mot6eI46e=&8`(B\" $B$N$h$&$JJ8;zNs$XJQ49$9$k:]$KMxMQ$9$k!#(B") (skk-deflocalvar skk-num-list nil "`skk-henkan-key' $B$NCf$K4^$^$l$k?t;z$rI=$9J8;zNs$N%j%9%H!#(B $BNc$($P!"(B\"$B"&$X$$$;$$(B7$B$M$s(B10$B$,$D(B\" $B$rJQ49$9$k$H$-!"(B`skk-henkan-key' $B$O(B \"$B$X$$$;$$(B7$B$M$s(B10$B$,$D(B\" $B$G$"$j!"(B`skk-num-list' $B$O(B (\"7\" \"10\") $B$H$J$k!#(B \(buffer local)") (defvar skk-num-recompute-key nil "#4 $B%?%$%W$N%-!<$K$h$j?tCM$N:F7W;;$r9T$C$?$H$-$N8!:w%-!Kt$O(B IP $B%"%I%l%9!#(B" :type `(radio (string :tag "$B%[%9%HL>(B" ,(or (getenv "SKKSERVER") "localhost")) (const nil)) :group 'skk-server) (defcustom skk-server-prog (getenv "SKKSERV") "*$B<-=q%5!<%P%W%m%0%i%`L>!#(B $B%U%k%Q%9$G=q$/!#(B `skk-server-inhibit-startup-server' $B$,(B nil $B$N;~$K;2>H$5$l!"(B $B$3$N%W%m%0%i%`$,(B SKK $B$h$j5/F0$5$l$k!#(B" :type '(radio (file :tag "$B<-=q%5!<%PL>(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-file :group 'skk-server) (defcustom skk-server-jisyo (getenv "SKK_JISYO") "*$B<-=q%5!<%P%W%m%0%i%`$KEO$9<-=q%U%!%$%kL>!#(B $B%U%k%Q%9$G=q$/!#(B `skk-server-inhibit-startup-server' $B$,(B nil $B$N;~$K;2>H$5$l$k!#(B $B<-=q%U%!%$%k$N;XDjK!$O<-=q%5!<%P$K$h$j0[$J$k$N$GCm0U!#(B % skkserv jisyo $B$N7A<0$N;~$N$_MxMQ$G$-$k%*%W%7%g%s$G$"$k!#(B" :type `(radio (file :tag "$B<-=q%U%!%$%kL>(B" ,(or skk-aux-large-jisyo "")) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-file :group 'skk-server) (defcustom skk-server-portnum (if (eq system-type 'windows-nt) 1178 nil) "*Non-nil $B$G$"$l$P!"$=$NCM$r(B port number $B$H$7$F(B skkserv $B$H(B TCP $B@\B3$9$k!#(B /etc/services $B$rD>@\=q$-49$($k8"8B$,$J$$%f!<%6!<$N$?$a$NJQ?t!#(B Microsoft Windows $B$G$O%G%U%)%k%HCM$H$7$F(B 1178 $B$,@_Dj$5$l$k!#(B" :type '(radio (integer :tag "$B%]!<%HHV9f(B" 1178) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-server) (defcustom skk-servers-list nil "*$B<-=q%5!<%PKh$N>pJs%j%9%H!#(B $BJ#?t$N%[%9%H$GF0$$$F$$$k<-=q%5!<%P$K%"%/%;%9$G$-$k>l9g$K$O!"0J2<$N$h$&$K%j%9%H$N(B $B3FMWAG$K=g$K%[%9%HL>!"%U%k%Q%9$G$N<-=q%5!<%PL>!"<-=q%5!<%P$KEO$9<-=q%U%!%$%kL>!"(B $B<-=q%5!<%P$,;HMQ$9$k%]!<%HHV9f$r=q$-!"@_Dj$r$9$k$3$H$,$G$-$k!#(B (setq skk-servers-list '((\"host1\" \"/path/to/skkserv\" \"/path/to/SKK-JISYO.L\" 1178) (\"host2\" \"/path/to/skkserv\"))) $B$3$N>l9g!":G=i$K;XDj$7$?<-=q%5!<%P$K%"%/%;%9$G$-$J$/$J$k$H!"<+F0E*$K=gl9g$O(B nil $B$r;XDj$9$k$+!"(B $B2?$b=q$+$J$$$GNI$$!#(B $B$J$*!"%f!<%6!<<+?H$Kl9g$O!"(B (setq skk-servers-list '((\"host1\") (\"host2\"))) $B$N$h$&$K!"%[%9%HL>$@$1$r=q$/$3$H$,$G$-$k!#>e5-$N@_DjNc$G$O!"(Bhost1, host2 $B$K$*(B $B$1$k(B skkserv $B%5!<%S%9$N(B TCP $B@\B3$N3+;O$N$_;n$_!"<-=q%5!<%P$N5/F0$O;n$_$J$$!#(B" :type '(repeat (list (string :tag "$B%[%9%HL>(B") (radio :tag "$B<-=q%5!<%PL>(B" file (const :tag "$B;XDj$7$J$$(B" nil)) (radio :tag "$B<-=q%U%!%$%k(B" file (const :tag "$B;XDj$7$J$$(B" nil)) (radio :tag "$B%]!<%HHV9f(B" integer (const :tag "$B;XDj$7$J$$(B" nil)))) :group 'skk-server) (defcustom skk-server-report-response nil "*Non-nil $B$G$"$l$P!"<-=q%5!<%P$N1~Ez>u67$rJs9p$9$k!#(B $B6qBNE*$K$O!"JQ49;~$K<-=q%5!<%P$NAw=P$9$kJ8;z$r!#(B" :type 'file :group 'skk-server) (defcustom skk-server-inhibit-startup-server t "*Non-nil $B$G$"$l$P(B `call-process' $B$G$N<-=q%5!<%P5/F0$r6X;_$9$k!#(B" :type 'boolean :group 'skk-server) (defcustom skk-server-load-hook nil "*skk-server.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-server) ;;(defvar skk-server-debug nil ;; "*Non-nil $B$G$"$l$P!"<-=q%5!<%P%W%m%0%i%`$r%G%#%P%C%0%b!<%I$G5/F0$9$k!#(B ;;$B%G%#%P%C%0!&%b!<%I$G(B skkserv $B$rAv$i$;$k$H!"$=$N$^$^(B foreground $B$GAv$j!"(B ;;$B%a%C%;!<%8$r=PNO$9$k!#%-!<%\!<%I$+$i3d$j$3$_$r$+$1$k$3$H$b$G$-$k!#(B") (defconst skkserv-working-buffer " *skkserv*") (defvar skkserv-process nil) ;;; skk-sticky related. (defcustom skk-sticky-key nil "*$BJQ493+;O0LCV$b$7$/$OAw$j3+;O0LCV$N;XDj$r$9$k%-!l9g$O(B (setq skk-sticky-key \";\") $B$N$h$&$K(B string $B$r@_Dj$7$F2<$5$$!#(B`skk-sticky-key' $B$K@_Dj$7$?J8(B $B;z$=$N$b$N$rF~NO$7$?$$>l9g$O(B2$B2sB3$1$FBG$D$HF~NO$G$-$^$9!#(B 2. $BI=<($5$l$J$$%-!<(B \"$BL5JQ49(B\" $B$N$h$&$JI=<($rH<$o$J$$%-!<$N>l9g$O(B (setq skk-sticky-key [muhenkan]) ; Windows $B4D6-$@$H(B [noconvert] $B$N$h$&$K$=$N%-!<$rI=$o$9(B vector $B$r@_Dj$7$F2<$5$$!#(B 3. $BF1;~BG80(B 2$B$D$N%-!<$rF1;~$KBG80$9$k$3$H$G$bJQ490LCV$r;XDj$G$-$^$9!#Nc$($P(B \"f\" $B$H(B \"j\" $B$NF1;~BG80$G;XDj$9$k>l9g$O(B (setq skk-sticky-key '(?f ?j)) $B$N$h$&$K(B character $B$N%j%9%H$r@_Dj$7$F2<$5$$!#(B" :type '(radio (string :tag "$BI=<(2DG=$J%-!<(B") (vector :tag "$BI=<($5$l$J$$%-!<(B" symbol) (list :tag "$BF1;~BG80(B" character character) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-sticky) (defcustom skk-sticky-double-interval 0.1 "*$B$3$N;~4V0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B $BC10L$OIC!#%G%U%)%k%H$O(B 0.1 $BIC!#(B" :type 'number :group 'skk-sticky) ;;; skk-study.el related. (defcustom skk-study-file (if skk-user-directory (expand-file-name "study" skk-user-directory) (convert-standard-filename "~/.skk-study")) "*$B3X=,7k2L$rJ]B8$9$k%U%!%$%k!#(B" :type 'file :group 'skk-study) (defcustom skk-study-backup-file (if skk-user-directory (expand-file-name "study.bak" skk-user-directory) (convert-standard-filename "~/.skk-study.BAK")) "*$B3X=,7k2L$rJ]B8$9$k%U%!%$%k$N%P%C%/%"%C%W!#(B" :type 'file :group 'skk-study) (defcustom skk-study-associates-number 5 "*$BJ]B8$9$k4XO"8l$N?t!#(B" :type 'integer :group 'skk-study) (defcustom skk-study-sort-saving nil "*Non-nil $B$G$"$l$P3X=,7k2L$r%=!<%H$7$F%;!<%V$9$k!#(B" :type 'boolean :group 'skk-study) (defcustom skk-study-check-alist-format nil "*Non-nil $B$G$"$l$P!"3X=,7k2L$NFI$_9~$_;~$KO"A[%j%9%H$N%U%)!<%^%C%H$r%A%'%C%/$9$k!#(B" :type 'boolean :group 'skk-study) (defcustom skk-study-search-times 5 "*$B8=:_$NJQ49%-!<$KBP$9$k4XO"JQ49%-!<$r$$$/$D$^$GAL$C$F8!:w$9$k$+!#(B" :type 'integer :group 'skk-study) (defcustom skk-study-first-candidate t "*Non-nil $B$G$"$l$P!"Bh0l8uJd$G3NDj$7$?:]$b3X=,$9$k!#(B" :type 'boolean :group 'skk-study) (defcustom skk-study-max-distance 30 "*$BD>A0$K3NDj$7$?%]%$%s%H$H:#2s$NJQ49%]%$%s%H$,$3$N5wN%0J>eN%$l$F$$$k$H3X=,$7$J$$!#(B nil $B$N>l9g$OD>A0$K3NDj$7$?%]%$%s%H$H$N5wN%$r9MN8$;$:$K3X=,$9$k!#(B" :type '(radio integer (const nil)) :group 'skk-study) ;;; system internal variables and constants. ;; global variable (defconst skk-study-file-format-version "0.2") (defvar skk-kakutei-end-function nil) (defvar skk-study-alist nil) (defvar skk-study-data-ring nil "$BD>A0$N(B `skk-study-search-times' $B8DJ,$NJQ49%-!<$H3NDj8l%G!<%?!#(B ring.el $B$rMxMQ$7$F$*$j!"6qBNE*$K$O!"2<5-$N$h$&$J9=B$$K$J$C$F$$$k!#(B \(2 3 . [\(\"$B$3$&$>$&(B\" . \"$B9=B$(B\"\)\ \(\"$B$0$?$$$F$-(B\" . \"$B6qBNE*(B\"\) \(\"$B$+$-(B\" . \"$B2<5-(B\"\)]\)") (defvar skk-study-last-save nil) (defvar skk-study-last-read nil) ;;; skk-tankan.el related. (defcustom skk-tankan-search-key ?@ "*$BC14A;zJQ49$r9T$&%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-jisx0213 :group 'skk-tankan) ;;; $BJ8;z=89g$NJ8;z$KBP$7$F(B ($BIte$H(B XEmacs 21.5 $B0J>e$GF0:n$9$k!#(B XEmacs 21.4 $B$G$O%(%i!<$K$J$i$J$$$+$b$7$l$J$$$,!"6K$a$FIT40A4$JF0:n$7$+$7$J$$!#(B" :type 'boolean :group 'skk-basic :group 'skk-tooltip) (defcustom skk-tooltip-hide-delay 1000 "*tooltip $B$r;H$C$F8uJd$J$II=<($9$k>l9g$K!"I=<($9$k;~4V(B ($BIC(B)$B!#(B $B$3$N;~4V$,7P2a$9$k$H<+F0E*$K(B tooltip $B$O>C$($k!#(B" :type 'integer :group 'skk-tooltip) (defcustom skk-tooltip-face nil "*$B%D!<%k%F%#%C%W$KI=<($9$kJ8;zNs$KE,MQ$9$k%U%'%$%9$r;XDj$9$kJQ?t!#(B $B8uJdJ8;zNs$N%U%'%$%9B0@-!J(B`skk-treat-candidate-appearance-function' $B$K$h$k(B $B2C9)$J$I!K$r$=$N$^$^;H$$$?$$>l9g$O(B nil $B$K@_Dj$9$k!#(B ($B@_DjNc(B) (setq skk-tooltip-face 'font-lock-doc-face)" :type '(radio (face :tag "$B%U%'%$%9$r;XDj(B" tooltip) (const :tag "$B8uJdJ8;zNs$N%U%'%$%9B0@-$r$=$N$^$^;HMQ(B" nil)) :group 'skk-henkan :group 'skk-tooltip) (defcustom skk-tooltip-parameters nil "*tooltip $B$r;H$&>l9g$N(B SKK $BFH<+$N(B tooltip $B%U%l!<%`%Q%i%a!<%?@_Dj!#(B ($B@_DjNc(B) (setq skk-tooltip-parameters '((foreground-color . \"navy blue\") (background-color . \"alice blue\") (border-color . \"royal blue\") (border-width . 1))) " :type '(radio (const :tag "$B@_DjNc$r;n$9(B" ((foreground-color . "navy blue") (background-color . "alice blue") (border-color . "royal blue") (border-width . 1))) (repeat :tag "$BG$0U$N@_Dj(B" (cons (symbol :tag "$B%Q%i%a!<%?L>(B") (sexp :tag "$BCM(B (S$B<0(B)")))) :group 'skk-tooltip) (defcustom skk-tooltip-mouse-behavior (cond ((featurep 'xemacs) 'banish) (t 'banish)) "*Tooltip $B$rI=<($9$k>l9g$N!"%^%&%9%]%$%s%?$N5sF0!#(B `follow' $B$J$i$P!"(B tip $B$N0LCV$K0\F0$9$k!#(B `avoid' $B$J$i$P!"%&%#%s%I%&$NC<$KB`Hr$9$k!#(B `avoid-maybe' $B$J$i$P!"%&%#%s%I%&>e$K$"$k%^%&%9%]%$%s%?$N$_B`Hr$9$k!#(B `banish' $B$J$i$P!"%&%#%s%I%&$NC<$KB`Hr$7$?$^$^5"$C$F$3$J$$!#(B `nil' $B$J$i$P!"B`Hr$7$J$$!#$3$N>l9g!"(Btip $B$N%F%-%9%H$H%^%&%9%]%$%s%?$,(B $B=E$J$C$?$j!"$&$^$/(B tip $B$,I=<($G$-$J$+$C$?$j$9$k$N$GCm0U!#(B $B$3$N5!G=$O(B GNU Emacs 22 $B0J>e$+(B XEmacs 21.5 $B0J>e$GF0:n$9$k!#(B" :type '(radio (const :tag "Tip $B$K=>$&(B" follow) (const :tag "$B%&%#%s%I%&$NC<$KF($2$k(B" avoid) (const :tag "$BF($2$?$[$&$,$h$5$=$&$J$H$-$@$1F($2$k(B" avoid-maybe) (const :tag "$BF($2$?$^$^5"$i$J$$(B" banish) (const :tag "$B5o:B$k(B" nil)) :group 'skk-tooltip) (defcustom skk-tooltip-x-offset (if (featurep 'xemacs) 0 (/ (1+ (frame-char-height)) 2)) "*Tooltip $B$NI=<(0LCV$r1&$K$:$i$9%T%/%;%k?t!#(B $BIi$N@0?t$r;XDj$9$k$H:8$K$:$l$k!#(B" :type 'integer :group 'skk-tooltip) (defcustom skk-tooltip-y-offset 0 "*Tooltip $B$NI=<(0LCV$r2<$K$:$i$9%T%/%;%k?t!#(B $BIi$N@0?t$r;XDj$9$k$H>e$K$:$l$k!#(B" :type 'integer :group 'skk-tooltip) (defcustom skk-tooltip-function (lambda (tooltip-str) (skk-tooltip-show-at-point tooltip-str 'listing)) "*Tip $BIA2h5!9=$N4X?t$r;XDj$9$k!#(B $B%G%U%)%k%H$G$O(B Emacs $BI8=`$N(B Tooltip $B$r;HMQ$9$k!#(B $BB>$N(B Tip $BIA2h5!9=(B $B$G$"$k(B pos-tip $B$d(B popup-tip $B$b;XDj$G$-$k!#(B" :type 'function :group 'skk-tooltip) ;;; skk-tut.el related. (defcustom skk-tut-file (cond ((featurep 'xemacs) (or (locate-data-file "SKK.tut") "/usr/local/share/skk/SKK.tut")) ((fboundp 'locate-file) (or (locate-file "skk/SKK.tut" (list (expand-file-name "../../.." data-directory))) (locate-file "skk/SKK.tut" (list data-directory)) "/usr/local/share/skk/SKK.tut")) (t "/usr/local/share/skk/SKK.tut")) "*SKK $BF|K\8l%A%e!<%H%j%"%k$N%U%!%$%kL>(B ($B%Q%9$r4^$`(B)$B!#(B" :type 'file :group 'skk-tut) (defcustom skk-tut-lang "Japanese" "*SKK $B%A%e!<%H%j%"%k$GMQ$$$k8@8l!#(B \\[universal-argument] \\[skk-tutorial] $B$K$h$k8@8l;XDj$O!"$3$NJQ?t$h$j$bM%@h(B $B$9$k!#(B" :type '(radio (string "Japanese") (string "English")) :set (lambda (symbol value) (prog1 (if (fboundp 'custom-set-default) (custom-set-default symbol value) (set-default symbol value)) (setq skk-tut-current-lang nil))) :group 'skk-tut) (defvar skk-tut-file-suffix-alist `(("Japanese" . "") ("English" . ".E")) "Alist of (LANGUAGE . suffix) pairs. For example, if filename of the Japanese version is \"SKK.tut\", then filename of the English version will be \"SKK.tut.E\".") (defvar skk-tut-current-lang nil) (defcustom skk-tut-use-face skk-use-face "*Non-nil $B$G$"$l$P!"%A%e!<%H%j%"%k$G(B face $B$rMxMQ$7$FI=<($9$k!#(B" :type 'boolean :group 'skk-tut) (defface skk-tut-section-face '((((class color) (background light)) (:foreground "yellow" :background "dodgerblue")) (((class color) (background dark)) (:foreground "yellow" :background "slateblue")) (((class grayscale)) (:bold t) (:italic t))) "*$B%A%e!<%H%j%"%kCf$N%;%/%7%g%s$NI=<(ItJ,$N(B face$B!#(B" :group 'skk-tut) (defface skk-tut-do-it-face '((((class color) (background light)) (:foreground "DarkGoldenrod")) (((class color) (background dark)) (:foreground "LightGoldenrod")) (((class grayscale)) (:bold t))) "*$B%A%e!<%H%j%"%kCf$N;X<(9`L\$NI=<(ItJ,$N(B face$B!#(B" :group 'skk-tut) (defface skk-tut-question-face '((((class color) (background light)) (:foreground "Blue")) (((class color) (background dark)) (:foreground "LightSkyBlue")) (((class grayscale)) (:underline t))) "*$B%A%e!<%H%j%"%kCf$NLdBj$NI=<(ItJ,$N(B face$B!#(B" :group 'skk-tut) (defface skk-tut-key-bind-face '((((class color) (background light)) (:foreground "Firebrick")) (((class color) (background dark)) (:foreground "OrangeRed")) (((class grayscale)) (:bold t))) "*$B%A%e!<%H%j%"%kCf$N%-!<%P%$%s%I$NI=<(ItJ,$N(B face$B!#(B" :group 'skk-tut) (defface skk-tut-hint-face '((((class color) (background light)) (:foreground "CadetBlue")) (((class color) (background dark)) (:foreground "Aquamarine")) (((class grayscale)) (:italic t))) "*$B%A%e!<%H%j%"%kCf$N%R%s%H$NI=<(ItJ,$N(B face$B!#(B $B8=:_$N$H$3$m!"(BSKK.tut.E $B$G$7$+;HMQ$5$l$F$$$J$$!#(B" :group 'skk-tut) ;;; skk-show-mode.el related. (defvar skk-show-mode-invoked nil) (defvar skk-show-mode-functions '((inline . skk-show-mode-inline) (tooltip . skk-show-mode-tooltip))) (defcustom skk-show-mode-show nil "*Non-nil $B$G$"$l$P!"$+$J%b!<%I$d%"%9%-!<%b!<%I$X@Z$jBX$o$C$?$H$-$K%+!<%=%kIU6a$K(B skk-*-mode-string $B$rI=<($9$k!#(B $BI=<(%9%?%$%k$O(B `skk-show-mode-style' $B$G;XDj$9$k!#(B" :type 'boolean :group 'skk-visual) (defvar skk-show-mode-enable t "$BFbItMQ!#%A%e!<%H%j%"%ku67$GH?1G$5$l$J$$$3$H$KBP=h(B (when (and (not noninteractive) window-system) (dolist (f '(skk-tut-section-face skk-tut-section-face skk-tut-do-it-face skk-tut-question-face skk-tut-key-bind-face skk-tut-hint-face)) (set-face-foreground f (face-foreground f)))) ;;; skk-viper.el related. (defcustom skk-use-viper nil "*Non-nil $B$G$"$l$P!"(BVIPER $B$KBP1~$9$k!#(B" :type 'boolean :group 'skk-viper) (defvar skk-viper-saved-cursor-color (when (and (featurep 'viper) (boundp 'viper-insert-state-cursor-color)) (symbol-value 'viper-insert-state-cursor-color))) (make-variable-buffer-local 'viper-insert-state-cursor-color) (defconst skk-viper-use-vip-prefix (not (fboundp 'viper-normalize-minor-mode-map-alist))) (defconst skk-viper-normalize-map-function (if skk-viper-use-vip-prefix 'vip-normalize-minor-mode-map-alist 'viper-normalize-minor-mode-map-alist) "Viper $B$,(B `minor-mode-map-alist' $B$rD4@0$9$k$?$a$N4X?t!#(B") (provide 'skk-vars) ;;; skk-vars.el ends here ddskk-15.2/skk-version.el0000644000570400056700000000416312434434535015412 0ustar kitamotoopenlab;;; skk-version.el --- version information for SKK -*- coding:iso-2022-jp -*- ;; Copyright (C) 2000, 2001, 2003 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-version.el,v 1.79 2014/11/23 19:45:33 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2014/11/23 19:45:33 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-and-compile (require 'skk-macs)) (put 'skk-version 'product-name "Daredevil SKK") (put 'skk-version 'version-string "15.2") (put 'skk-version 'codename "Oshamambe") ; See also `READMEs/CODENAME.ja' (put 'skk-version 'codename-ja "$BD9K|It(B") ;;;###autoload (defun skk-version (&optional without-codename) "Return SKK version with its codename. If WITHOUT-CODENAME is non-nil, simply return SKK version without the codename." (interactive "P") (if (skk-called-interactively-p 'interactive) (message "%s" (skk-version without-codename)) (if without-codename (format "%s/%s" (get 'skk-version 'product-name) (get 'skk-version 'version-string)) (format "%s/%s (%s)" (get 'skk-version 'product-name) (get 'skk-version 'version-string) (if skk-version-codename-ja (get 'skk-version 'codename-ja) (get 'skk-version 'codename)) )))) (provide 'skk-version) ;;; skk-version.el ends here ddskk-15.2/skk-viper.el0000644000570400056700000002742111704474442015054 0ustar kitamotoopenlab;; skk-viper.el --- SKK related code for Viper -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 ;; Masahiko Sato ;; Murata Shuuichirou ;; Author: Masahiko Sato , ;; Murata Shuuichirou ;; Maintainer: SKK Development Team ;; Version: $Id: skk-viper.el,v 1.47 2012/01/15 06:58:42 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2012/01/15 06:58:42 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (require 'viper) (eval-when-compile (defvar viper-insert-state-cursor-color)) ;;; macros and inline functions. (defmacro skk-viper-advice-select (viper vip arg body) `(if skk-viper-use-vip-prefix (defadvice ,vip ,arg ,@body) (defadvice ,viper ,arg ,@body))) (setq skk-kana-cleanup-command-list (cons (if skk-viper-use-vip-prefix 'vip-delete-backward-char 'viper-del-backward-char-in-insert) skk-kana-cleanup-command-list)) (setq skk-use-viper t) (save-match-data (unless (string-match (if (eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 22))) (sentence-end) sentence-end) "$B!#!)!*!%(B") (setq sentence-end (concat "[$B!#!)!*!%(B]\\|" sentence-end)))) ;;; cursor color support. ;; what should we do if older Viper that doesn't have ;; `viper-insert-state-cursor-color'? (when (boundp 'viper-insert-state-cursor-color) (defadvice skk-cursor-current-color (around skk-viper-cursor-ad activate) "vi-state $B0J30$G3n$D(B SKK $B%b!<%I$N$H$-$N$_(B SKK $BM3Mh$N%+!<%=%k?'$rJV$9!#(B" (cond ((not skk-use-color-cursor) ad-do-it) ((or (and (boundp 'viper-current-state) (eq viper-current-state 'vi-state)) (and (boundp 'vip-current-mode) (eq vip-current-mode 'vi-mode))) (setq ad-return-value skk-cursor-default-color)) ((not skk-mode) (setq viper-insert-state-cursor-color skk-viper-saved-cursor-color) (setq ad-return-value (cond ((eq viper-current-state 'insert-state) viper-insert-state-cursor-color) ((eq viper-current-state 'replace-state) viper-replace-overlay-cursor-color) ((eq viper-current-state 'emacs-state) viper-emacs-state-cursor-color)))) (t ad-do-it (setq viper-insert-state-cursor-color ad-return-value)))) (let ((funcs ;; cover to VIP/Viper functions. (if skk-viper-use-vip-prefix '(vip-Append vip-Insert vip-insert vip-escape-to-emacs vip-open-line) '(viper-change-state-to-insert viper-change-state-to-replace viper-change-state-to-vi viper-change-state-to-emacs viper-insert-state-post-command-sentinel)))) (dolist (func funcs) (eval `(defadvice ,(intern (symbol-name func)) (after skk-viper-cursor-ad activate) "Set cursor color which represents skk mode." (when skk-use-color-cursor (skk-cursor-set)))))) (let ((funcs '(skk-abbrev-mode skk-jisx0208-latin-mode skk-latin-mode skk-toggle-kana))) (dolist (func funcs) (eval `(defadvice ,(intern (symbol-name func)) (after skk-viper-cursor-ad activate) "\ `viper-insert-state-cursor-color' $B$r(B SKK $B$NF~NO%b!<%I$N%+!<%=%k?'$H9g$o$;$k!#(B" (when skk-use-color-cursor (setq viper-insert-state-cursor-color (skk-cursor-current-color))))))) (defadvice skk-mode (after skk-viper-cursor-ad activate) "Set cursor color which represents skk mode." (when skk-use-color-cursor (skk-cursor-set))) (defadvice skk-kakutei (after skk-viper-cursor-ad activate) (setq viper-insert-state-cursor-color skk-cursor-hiragana-color))) (when (boundp 'viper-insert-state-cursor-color) (cond ((eval-when-compile (featurep 'xemacs)) (skk-defadvice read-from-minibuffer (before skk-viper-ad activate) (when skk-use-color-cursor (add-hook 'minibuffer-setup-hook 'skk-cursor-set 'append)))) (t (skk-defadvice read-from-minibuffer (before skk-viper-ad activate) "`minibuffer-setup-hook' $B$K(B `update-buffer-local-frame-params' $B$r%U%C%/$9$k!#(B `viper-read-string-with-history' $B$O(B `minibuffer-setup-hook' $B$r4X?t%m!<%+%k(B $B$K$7$F$7$^$&$N$G!"M=$a(B `minibuffer-setup-hook' $B$K$+$1$F$*$$$?%U%C%/$,L58z(B $B$H$J$k!#(B" (when skk-use-color-cursor ;; non-command subr. (add-hook 'minibuffer-setup-hook 'update-buffer-local-frame-params 'append)))))) ;;; advices. ;; vip-4 $B$NF1$O(B vip-read-string-with-history$B!)(B (defadvice viper-read-string-with-history (after skk-viper-ad activate) "$B8e$NJ8;z$,(B JISX0208/JISX0213 $B$@$C$?$i(B\ `forward-word' $B$9$k!#(B" (if (and skk-mode (or (skk-jisx0208-p (following-char)) (skk-jisx0213-p (following-char)))) (forward-word (ad-get-arg 0)) ad-do-it))) (skk-viper-advice-select viper-backward-word-kernel vip-backward-word (around skk-ad activate) ("SKK $B%b!<%I$,%*%s$G!"%]%$%s%H$ND>A0$NJ8;z$,(B JISX0208/JISX0213 $B$@$C$?$i(B\ `backward-word' $B$9$k!#(B" (if (and skk-mode (or (skk-jisx0208-p (preceding-char)) (skk-jisx0213-p (preceding-char)))) (backward-word (ad-get-arg 0)) ad-do-it))) ;; please sync with `skk-delete-backward-char' (skk-viper-advice-select viper-del-backward-char-in-insert vip-delete-backward-char (around skk-ad activate) ("$B"'%b!<%I$G(B `skk-delete-implies-kakutei' $B$J$iD>A0$NJ8;z$r>C$7$F3NDj$9$k!#(B $B"'%b!<%I$G(B `skk-delete-implies-kakutei' $B$,(B nil $B$@$C$?$iA08uJd$rI=<($9$k!#(B $B"&%b!<%I$G(B`$B"&(B'$B$h$j$bA0$N%]%$%s%H$GC$9!#(B" (skk-with-point-move (let ((count (or (prefix-numeric-value (ad-get-arg 0)) 1))) (cond ((eq skk-henkan-mode 'active) (if (and (not skk-delete-implies-kakutei) (= (+ skk-henkan-end-point (length skk-henkan-okurigana)) (point))) (skk-previous-candidate) ;; overwrite-mode $B$G!"%]%$%s%H$,A43QJ8;z$K0O$^$l$F$$$k$H(B ;; $B$-$K(B delete-backward-char $B$r;H$&$H!"A43QJ8;z$O>C$9$,H>(B ;; $B3QJ8;zJ,$7$+(B backward $BJ}8~$K%]%$%s%H$,La$i$J$$(B (Emacs ;; 19.31 $B$K$F3NG'(B)$B!#JQ49Cf$N8uJd$KBP$7$F$O(B ;; delete-backward-char $B$GI,$:A43QJ8;z(B 1 $BJ8;zJ,(B backward ;; $BJ}8~$KLa$C$?J}$,NI$$!#(B (if overwrite-mode (progn (backward-char count) (delete-char count)) ad-do-it) ;; XXX assume skk-prefix has no multibyte chars. (if (> (length skk-prefix) count) (setq skk-prefix (substring skk-prefix 0 (- (length skk-prefix) count))) (setq skk-prefix "")) (when (>= skk-henkan-end-point (point)) (if (eq skk-delete-implies-kakutei 'dont-update) (let ((skk-update-jisyo-function #'ignore)) (skk-kakutei)) (skk-kakutei))))) ((and skk-henkan-mode (>= skk-henkan-start-point (point)) (not (skk-get-prefix skk-current-rule-tree))) (skk-set-henkan-count 0) (skk-kakutei)) ;; $BF~NOCf$N8+=P$78l$KBP$7$F$O(B delete-backward-char $B$G(B ;; $BI,$:A43QJ8;z(B 1$BJ8;zJ,(B backward $BJ}8~$KLa$C$?J}$,NI$$!#(B ((and skk-henkan-mode overwrite-mode) (backward-char count) (delete-char count)) (t (skk-delete-okuri-mark) (if (skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean) (skk-set-marker skk-kana-start-point nil) ad-do-it))))))) (skk-viper-advice-select viper-intercept-ESC-key vip-escape-to-emacs (before skk-add activate) ("$B"&%b!<%I!""'%b!<%I$@$C$?$i3NDj$9$k!#(B" (when (and skk-mode skk-henkan-mode) (skk-kakutei)))) (skk-viper-advice-select viper-intercept-ESC-key vip-escape-to-emacs (after skk-kana-cleanup-ad activate) ("vi-state $B0\9T$N:]$K3NDjF~NO%b!<%I$GF~NO$5$l$?%m!<%^;z%W%l%U%#%C%/%9$r>C$9!#(B" (skk-kana-cleanup t))) (skk-viper-advice-select viper-join-lines vip-join-lines (after skk-ad activate) ("$B%9%Z!<%9$NN>B&$NJ8;z%;%C%H$,(B JISX0208/JISX0213 $B$@$C$?$i%9%Z!<%9$r val 0) (setq c (following-char)) (delete-char 1 nil) (cond ((skk-ascii-char-p c) (if (eq c (upcase c)) (insert-char (downcase c) 1) (insert-char (upcase c) 1))) ((and (<= ?$B$!(B c) (>= ?$B$s(B c)) (insert (skk-hiragana-to-katakana (char-to-string c)))) ((and (<= ?$B%!(B c) (>= ?$B%s(B c)) (insert (skk-katakana-to-hiragana (char-to-string c)))) (t (insert-char c 1))) (when (eolp) (backward-char 1)) (setq val (1- val)))))) (defun skk-viper-init-function () (when (and (boundp 'viper-insert-state-cursor-color) (featurep 'skk-cursor)) (setq viper-insert-state-cursor-color (skk-cursor-current-color))) ;; viper-toggle-key-action $B$HO"F0$5$;$k!)(B (skk-viper-normalize-map) (remove-hook 'skk-mode-hook 'skk-viper-init-function)) (add-hook 'skk-mode-hook 'skk-viper-init-function) (provide 'skk-viper) ;;; skk-viper.el ends here ddskk-15.2/skk-xemacs.el0000644000570400056700000004125512125124200015166 0ustar kitamotoopenlab;;; skk-xemacs.el --- XEmacs support for SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000-2010 SKK Development Team ;; Author: Tetsuo Tsukamoto ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'avoid)) (require 'balloon-help) (require 'overlay) (require 'poe) (require 'skk-macs) (eval-and-compile (autoload 'display-pixel-height "frame") (autoload 'display-pixel-width "frame")) ;;;###autoload (unless noninteractive (require 'skk-setup)) ;; Variables. (defvar skk-xemacs-extent-alist (list (cons 'default (make-extent nil nil)) (cons 'hiragana (make-extent nil nil)) (cons 'katakana (make-extent nil nil)) (cons 'jisx0208-latin (make-extent nil nil)) (cons 'latin (make-extent nil nil)) (cons 'jisx0201 (make-extent nil nil)) (cons 'abbrev (make-extent nil nil)))) (defvar skk-xemacs-modeline-menu-items '("Daredevil SKK Menu" ["Hiragana" (cond (skk-mode (skk-j-mode-on)) (t (skk-mode t))) :selected (and skk-j-mode (not skk-katakana)) :style radio :keys nil] ["Katakana" (cond (skk-mode (skk-j-mode-on t)) (t (skk-mode t) (skk-j-mode-on t))) :selected (and skk-j-mode skk-katakana) :style radio :keys nil] ["Hankaku alphabet" skk-latin-mode :selected skk-latin-mode :style radio :keys nil] ["Zenkaku alphabet" skk-jisx0208-latin-mode :selected skk-jisx0208-latin-mode :style radio :keys nil] "--" ["Read Manual" skk-xemacs-info t] ["Start Tutorial" skk-tutorial t] ["Customize SKK" skk-customize-group-skk t] ["Customize SKK (simple)" skk-customize t] ["Send a Bug Report" (let (skk-japanese-message-and-error) (skk-submit-bug-report)) t] "--" ["About Daredevil SKK..." skk-version t] ["Visit Daredevil SKK Web Site" skk-xemacs-visit-openlab t])) (defvar skk-tooltip-default-font-pixel-size 12) (defvar skk-xemacs-need-redraw-tooltip nil "*Compiz $B2TF0;~$J$I%D!<%k%F%#%C%W$N2#I}$,$*$+$7$$$H$-$K@_Dj!#(B Non-nil $B$J$i$P%D!<%k%F%#%C%W$r:FIA2h$9$k!#(B") (defvar skk-xemacs-redraw-interval 0.01 "*$B%D!<%k%F%#%C%W:FIA2h$N:]$KCV$/;~4V!#(B") ;; Functions. (defun skk-xemacs-modeline-menu () (interactive) ;; Find keys (aset (nth 1 skk-xemacs-modeline-menu-items) 7 (cond (skk-katakana (skk-xemacs-find-func-keys 'skk-toggle-kana)) ((not skk-mode) (skk-xemacs-find-func-keys 'skk-mode)) ((not skk-j-mode) (skk-xemacs-find-func-keys 'skk-kakutei)) (t nil))) (aset (nth 2 skk-xemacs-modeline-menu-items) 7 (if (and skk-j-mode (not skk-katakana)) (skk-xemacs-find-func-keys 'skk-toggle-kana) nil)) (aset (nth 3 skk-xemacs-modeline-menu-items) 7 (if skk-j-mode (skk-xemacs-find-func-keys 'skk-latin-mode) nil)) (aset (nth 4 skk-xemacs-modeline-menu-items) 7 (if skk-j-mode (skk-xemacs-find-func-keys 'skk-jisx0208-latin-mode) nil)) ;; (popup-menu skk-xemacs-modeline-menu-items)) (defun skk-xemacs-info () (interactive) (Info-goto-node "(skk)")) (defun skk-xemacs-customize () (interactive) (customize-group "skk")) (defun skk-xemacs-visit-openlab () (interactive) (browse-url "http://openlab.jp/skk/index-j.html")) ;;;###autoload (defun skk-xemacs-prepare-modeline-properties () (setq skk-icon (if (and skk-show-icon (locate-data-file "skk.xpm") (featurep 'xpm)) (let ((glyph (make-glyph))) (set-glyph-image glyph (vector 'xpm :file (locate-data-file "skk.xpm"))) (cons (cdr (assq 'hiragana skk-xemacs-extent-alist)) glyph)) nil)) ;; (unless skk-use-color-cursor (setq skk-indicator-use-cursor-color nil)) ;; (let (extent face) (when window-system (defvar skk-xemacs-modeline-map (let ((map (make-sparse-keymap))) (define-key map [button3] (eval '(make-modeline-command-wrapper 'skk-xemacs-modeline-menu))) (define-key map [button1] (eval '(make-modeline-command-wrapper 'skk-xemacs-modeline-menu))) map))) (dolist (mode '(hiragana katakana jisx0208-latin latin jisx0201 abbrev)) ;; (setq extent (cdr (assq mode skk-xemacs-extent-alist))) (when window-system (set-extent-keymap extent skk-xemacs-modeline-map) (set-extent-property extent 'help-echo "button1 or button3 shows SKK menu")) ;; (setq face (intern (format "skk-xemacs-%s-face" mode))) (unless (find-face face) (make-face face) (set-face-parent face 'modeline nil '(default)) (when (and window-system skk-indicator-use-cursor-color) (set-face-foreground face (symbol-value (intern (format "skk-cursor-%s-color" mode))) nil '(default color win)))) (set-extent-face extent face)))) (defun skk-xemacs-find-func-keys (func) (let ((keys (or (do ((spec (nth 4 skk-rule-tree) (cdr spec)) (list nil (car spec)) (str nil (if (eq (nth 3 list) func) (nth 1 list) nil))) ((or str (null spec)) (cond ((not (stringp str)) nil) ((string= str "\C-j") [(control j)]) (t str)))) (let ((k (where-is-internal func skk-j-mode-map))) (dolist (key k) (when (and (= (length key) 2) (eq (aref key 1) 'linefeed)) (aset key 1 '(control j)))) k)))) (if keys (sorted-key-descriptions (if (listp keys) (skk-remove-duplicates keys) keys)) nil))) (defun skk-xemacs-mouse-position (pos) "Returns (WINDOW X . Y) of current point - analogous to mouse-position" (let* ((beg (window-start)) (col (save-excursion (goto-char pos) (current-column))) (row)) (setq row (count-lines beg pos)) (cons (selected-window) (cons col row)))) (unless (fboundp 'multibyte-string-p) (defalias 'multibyte-string-p 'stringp)) ;; XEmacs 21.4 (unless (fboundp 'current-column) (defalias 'current-pixel-row 'ignore)) (defalias 'skk-tooltip-hide 'balloon-help-undisplay-help) (defun skk-tooltip-resize-text (text) (let ((lines 0) (max-lines ;; $B2hLL$NH>J,$N9b$5$r4p=`$K:GBg9b$r7h$a$k(B (- (/ (/ (display-pixel-height) 2) (or (cdr (assq 'PIXEL_SIZE (font-properties (face-font 'default)))) skk-tooltip-default-font-pixel-size)) 2)) (columns 0) (current-column nil)) (with-temp-buffer (set-buffer-multibyte t) (insert text) (goto-char (point-min)) (while (not (eobp)) (setq lines (1+ lines)) (cond ((= lines max-lines) ;; $BD9$9$.$k(B (beginning-of-line) (insert "($BD9$9$.$k$N$G>JN,$5$l$^$7$?(B)") (delete-region (point) (point-max)) (goto-char (point-max)) (setq text (buffer-string))) (t (end-of-line) (setq current-column (current-column)) (when (> current-column columns) (setq columns current-column)) (forward-line 1))))) ;; (text . (x . y)) (cons text (cons columns lines)))) (defun skk-tooltip-show-at-point (text &optional situation) (require 'avoid) (let* ((pos (if skk-isearch-switch (with-current-buffer (window-buffer (minibuffer-window)) (point-min)) (or (and (eq skk-henkan-mode 'active) (ignore-errors (marker-position skk-henkan-start-point))) (point)))) (P (cdr (skk-xemacs-mouse-position pos))) (oP (cdr (mouse-position))) (avoid-destination (if (memq skk-tooltip-mouse-behavior '(avoid avoid-maybe banish)) (mouse-avoidance-banish-destination) nil)) (window (if skk-isearch-switch (minibuffer-window) (selected-window))) (fontsize (or (cdr (assq 'PIXEL_SIZE (font-properties (face-font 'default)))) 0)) (edges (window-pixel-edges window)) (left (+ (car edges) (* 0 (/ (1+ fontsize) 2)) (or (current-pixel-column window pos) (+ (car P) (/ (1+ fontsize) 2))) (frame-parameter (selected-frame) 'left))) (top (+ (cadr edges) (* 7 (/ (1+ fontsize) 2)) (or (current-pixel-row window pos) (+ (cdr P) fontsize)) (frame-parameter (selected-frame) 'top))) (tooltip-info (skk-tooltip-resize-text text)) (text (car tooltip-info)) (tooltip-size (cdr tooltip-info)) (text-width (* (/ (1+ fontsize) 2) (+ 2 (car tooltip-size)))) (text-height (* fontsize (+ 1 (cdr tooltip-size)))) (screen-width (display-pixel-width)) (screen-height (display-pixel-height)) (inhibit-quit t) event) ;; (when (null (car P)) (unless (memq skk-tooltip-mouse-behavior '(avoid-maybe banish nil)) (setq oP (cdr (mouse-avoidance-point-position))))) ;; (when (> (+ left text-width (* 4 fontsize)) screen-width) ;; $B1&$K4s$j$9$.$F7g$1$F$7$^$o$J$$$h$&$K(B (setq left (- left (- (+ left text-width ;; $B>/$7M>7W$K:8$K4s$;$J$$$H(B avoid ;; $B$7$?%^%&%9%]%$%s%?$H43>D$9$k(B (* 10 (/ (1+ fontsize) 2))) screen-width)))) (when (> (+ top text-height (* 3 fontsize)) screen-height) ;; $B2<$K4s$j$9$.$F7g$1$F$7$^$o$J$$$h$&$K(B (setq top (- top (- (+ top text-height) screen-height) ;; $B==J,>e$2$J$$$H%F%-%9%H$H=E$J$k$N$G!"(B ;; $B$$$C$=%F%-%9%H$N>e$K$7$F$_$k(B (- screen-height top) (* 4 fontsize))) ;; $B$5$i$K(B X $B:BI8$r(B... (let ((right (+ left text-width skk-tooltip-x-offset)) (mouse-x (+ (frame-parameter (selected-frame) 'left) (* (frame-pixel-width))))) (when (and (<= left mouse-x) (<= mouse-x right)) ;; $B%^%&%9%]%$%s%?$HHo$j$=$&$J$H$-(B (setq left (- left (- right mouse-x) (* 4 fontsize)))))) ;; (setq balloon-help-help-object-x (+ left skk-tooltip-x-offset) balloon-help-help-object-y (+ top skk-tooltip-y-offset)) ;; (when (eq skk-tooltip-mouse-behavior 'follow) (mouse-avoidance-set-mouse-position P)) ;; (when (or (and (memq skk-tooltip-mouse-behavior '(avoid banish)) (not (equal (mouse-position) avoid-destination))) (and (eq skk-tooltip-mouse-behavior 'avoid-maybe) (cadr (mouse-position)) (not (equal (mouse-position) avoid-destination)))) (save-window-excursion (select-window (frame-rightmost-window (selected-frame) 0)) (mouse-avoidance-banish-mouse))) ;; (skk-tooltip-show-1 text (eq situation 'listing)) ;; (when (eq situation 'annotation) (skk-annotation-message situation)) ;; (setq event (next-command-event)) (cond ((skk-key-binding-member (skk-event-key event) '(keyboard-quit skk-kanagaki-bs skk-kanagaki-esc) skk-j-mode-map) (skk-tooltip-hide) (when (and (not (memq skk-tooltip-mouse-behavior '(banish nil))) (car oP)) (mouse-avoidance-set-mouse-position oP)) (skk-set-henkan-count 0) (cond ((eq skk-henkan-mode 'active) (skk-unread-event (character-to-event (aref (car (where-is-internal 'skk-previous-candidate skk-j-mode-map)) 0))) (when (eq situation 'listing) ;; skk-henkan $B$^$G0l5$$K(B throw $B$9$k!#(B (throw 'unread nil))) (t (skk-unread-event event)))) (t (skk-tooltip-hide) (when (and (not (memq skk-tooltip-mouse-behavior '(banish nil))) (car oP)) (mouse-avoidance-set-mouse-position oP)) ;; I don't know what magic it is... (sit-for 0.01) ;; (skk-unread-event event))))) (defun skk-tooltip-show-1 (help &optional listing) (let ((balloon-help-frame-name (or (cdr (assq 'name skk-tooltip-parameters)) balloon-help-frame-name)) (balloon-help-foreground (or (cdr (assq 'foreground-color skk-tooltip-parameters)) balloon-help-foreground)) (balloon-help-background (or (cdr (assq 'background-color skk-tooltip-parameters)) balloon-help-background)) (balloon-help-border-color (or (cdr (assq 'border-color skk-tooltip-parameters)) balloon-help-border-color)) (balloon-help-border-width (or (cdr (assq 'border-with skk-tooltip-parameters)) balloon-help-border-width)) (balloon-help-timeout skk-tooltip-hide-delay) (balloon-help-font (face-font 'default))) (setq balloon-help-timeout-id nil) (when (and (device-on-window-system-p) (stringp help)) (save-excursion (when (find-face skk-tooltip-face) (setq help (propertize help 'face skk-tooltip-face))) (when (or (not (frame-live-p balloon-help-frame)) (not (eq (selected-device) (frame-device balloon-help-frame)))) (setq balloon-help-frame (balloon-help-make-help-frame))) (set-buffer balloon-help-buffer) (erase-buffer) (insert help) (if (not (bolp)) (insert ?\n)) (indent-rigidly (point-min) (point-max) 1) (balloon-help-set-frame-properties) (skk-xemacs-balloon-help-resize-help-frame listing) (balloon-help-move-help-frame) (balloon-help-expose-help-frame) (when skk-xemacs-need-redraw-tooltip ;; Compiz $B2TF0;~$K:FIA2h$7$J$$$H2#I}$,$*$+$7$/$J$k$3$H$"$j(B (sleep-for skk-xemacs-redraw-interval) (skk-tooltip-hide) (sleep-for skk-xemacs-redraw-interval) (balloon-help-expose-help-frame)))) ;; Is this right? (setq balloon-help-timeout-id (add-timeout (/ balloon-help-timeout 1000.0) #'balloon-help-display-help nil)))) (defun skk-xemacs-balloon-help-resize-help-frame (&optional listing) ;; GNU Emacs $B$H0c$$(B XEmacs $B$N(B balloon help $B$O%5%$%:$N<+F0D4@0$,(B ;; $B$&$^$/8z$+$:!"J8;z$,7g$1$k$3$H$b$"$k$?$a!"$3$3$G=PMh$k$@$1(B ;; $BD4@0$9$k!#(B (save-excursion (set-buffer balloon-help-buffer) (let* ((longest 0) (lines 0) (done nil) (inst (vector 'string ':data nil)) (window (frame-selected-window balloon-help-frame)) (font-width (min (font-width (face-font 'default) balloon-help-frame) (glyph-width (make-glyph "a") window) (/ (glyph-width (make-glyph "$B$"(B") window) 2))) start width (window-min-height 1) (window-min-width 1)) (goto-char (point-min)) (while (not done) (setq start (point)) (end-of-line) (aset inst 2 (buffer-substring start (point))) (setq longest (max longest (glyph-width (make-glyph inst) window)) done (not (zerop (forward-line)))) (and (not done) (setq lines (1+ lines)))) (setq width (round (/ (float longest) (float font-width)))) ;; Increase width and lines... (when (<= width 10) (setq width (+ (round (log (float width) 2)) width))) (setq lines (cond ((= lines 1) lines) ((or listing (= lines 2)) (+ 1 lines)) (t (+ (max 1 (round (/ (float lines) 10.0))) ; 1+ per 10 lines lines)))) ;; (set-frame-size balloon-help-frame width lines)))) ;; Hooks. ;;; Not necessary, but... ;;;###autoload (add-hook 'before-init-hook ;;;###autoload #'(lambda () ;;;###autoload (define-key ctl-x-map "\C-j" 'skk-mode))) ;; Advice. (skk-defadvice minibuffer-keyboard-quit (around skk-xemacs-ad activate) ;; XEmacs has `minibuffer-keyboard-quit' ;; that has nothing to do with delsel. (skk-remove-minibuffer-setup-hook 'skk-j-mode-on 'skk-setup-minibuffer 'skk-add-skk-pre-command) (skk-exit-henkan-in-minibuff) (cond ((not skk-mode) ad-do-it) ((not skk-henkan-mode) (cond ((skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean)) (t ad-do-it))) ((eq skk-henkan-mode 'active) (setq skk-henkan-count 0) (if (and skk-delete-okuri-when-quit skk-henkan-okurigana) (let ((count (length skk-henkan-okurigana))) (skk-previous-candidate) ;; $B$3$3$G$O(B `delete-backward-char' $B$K(B ;; $BBhFs0z?t$rEO$5$J$$J}$,%Y%?! (point) skk-henkan-start-point) (delete-region (point) skk-henkan-start-point)) (skk-kakutei)))) ;; XEmacs 21.4 workarounds. (when (and (= emacs-major-version 21) (<= emacs-minor-version 4)) (defalias 'skk-tooltip-show-at-point 'ignore) (defalias 'skk-tooltip-hide 'ignore)) (provide 'skk-xemacs) ;;; skk-xemacs.el ends here ddskk-15.2/skk.el0000644000570400056700000062071312420375532013730 0ustar kitamotoopenlab;; skk.el --- Daredevil SKK (Simple Kana to Kanji conversion program) -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988-1997 Masahiko Sato ;; Copyright (C) 1999-2010 SKK Development Team ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk.el,v 1.637 2014/10/18 05:32:10 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2014/10/18 05:32:10 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; SKK-MODE is a mode for inputting Japanese to a current buffer which is ;; composed of four minor modes described below. ;; ;; +---------------+-------- skk-mode -----+--------------------+ ;; | | | | ;; | | | | ;; skk-j-mode skk-latin-mode skk-jisx0208-latin-mode skk-abbrev-mode ;; ASCII JISX0208 LATIN ABBREVIATION ;; (C-j wakes up skk-j-mode) (ZEN'KAKU EIMOJI) ;; ;; skk-j-mode-map skk-jisx0208-latin-mode-map ;; skk-latin-mode-map skk-abbrev-mode-map ;; ;; skk-katakana: nil ;; HIRAKANA ;; ;; skk-katakana: t ;; KATAKANA ;;; Code: (eval-when-compile ; shut up compiler warning. (defvar enable-character-translation) (defvar epoch::version) (defvar jka-compr-compression-info-list) (defvar message-log-max) (defvar migemo-isearch-enable-p) (defvar minibuffer-local-ns-map) (defvar self-insert-after-hook) (defvar skk-rdbms-private-jisyo-table) (defvar this-command-char)) ;; Daredevil SKK 13.1 $B$O(B APEL 10.7 $B$rMW5a$9$k!#(B ;; APEL 10.7 $B$Oe$N=EBg$J7g4Y$KBP1~$7$F$$$k$?$a!"I,?\$G$"$k!#(B ;; make-temp-file() $B$N7g4Y$K$D$$$F$O4X?t(B skk-save-jisyo-original() $B$N%3%a(B ;; $B%s%H$r;2>H!#(B (eval-when-compile (require 'cl)) ;; Elib 1.0 is required. (require 'queue-m) ;; Emacs standard library. (require 'advice) (require 'easymenu) (eval-and-compile ;; SKK common. (require 'skk-autoloads) (require 'skk-vars) (require 'skk-macs) ;; SKK version dependent. (cond ((featurep 'xemacs) (require 'skk-xemacs)) (t (require 'skk-emacs))) ;; Shut up, compiler. (autoload 'skk-jisx0213-henkan-list-filter "skk-jisx0213") (autoload 'skk-kanagaki-initialize "skk-kanagaki") (autoload 'skk-rdbms-count-jisyo-candidates "skk-rdbms")) ;; aliases. (defalias 'skk-toggle-kana 'skk-toggle-characters) ;;;###autoload (defun skk-mode (&optional arg) "$BF|K\8lF~NO%b!<%I!#(B $B%^%$%J!<%b!<%I$N0l \"$B"&$Y$s$j(B\", and pressing space produces \"$B"'JXMx(B\" \(the solid triangle indicates that conversion is in progress\). Backspace steps through the candidate list in reverse. A candidate can be accepted by pressing `\C-j', or by entering a self-inserting character. \(Unlike other common Japanese input methods, RET not only accepts the current candidate, but also inserts a line break.\) Inflected words \(verbs and adjectives\), like non-inflected words, begin input with a capital letter. However, for these words the end of the kanji string is signaled by capitalizing the next mora. Eg, \"TuyoI\" => \"$B"'6/$$(B\". If no candidate is available at that point, the inflection point will be indicated with an asterisk \"*\", and trailing characters will be displayed until a candidate is recognized. It will be immediately displayed \(pressing space is not necessary\). Space and backspace are used to step forward and backward through the list of candidates. For more information, see the `skk' topic in Info. \(Japanese only.\) A tutorial is available in Japanese or English via \\[skk-tutorial]. Use a prefix argument to choose the language. The default is system- dependent." (interactive "P") (setq skk-mode (cond ((null arg) (not skk-mode)) ;; - $B$O(B -1 $B$KJQ49$5$l$k!#(B ((> (prefix-numeric-value arg) 0) t) (t nil))) (if (not skk-mode) ;; exit skk-mode (skk-mode-exit) ;; enter into skk-mode. (unless skk-mode-invoked ;; enter `skk-mode' for the first time in this session. (skk-mode-invoke)) ;; $B0J2<$O(B skk-mode $B$KF~$k$?$S$KKh2s%3!<%k$5$l$k%3!<%I!#(B (skk-create-file skk-jisyo "$B6u$N(B SKK $B8D?M<-=q$r:n$j$^$7$?(B" "I have created an empty SKK Jisyo file for you") (when (eval-when-compile (featurep 'xemacs)) (easy-menu-add skk-menu)) (skk-require-module) ;; To terminate kana input. (when (eval-when-compile (featurep 'xemacs)) (make-local-hook 'pre-command-hook)) (skk-add-skk-pre-command) (when (eval-when-compile (featurep 'xemacs)) (make-local-hook 'post-command-hook)) (add-hook 'post-command-hook 'skk-after-point-move nil 'local) (skk-j-mode-on) (run-hooks 'skk-mode-hook))) ;;;###autoload (defun skk-auto-fill-mode (&optional arg) "$BF|K\8lF~NO%b!<%I!#<+F0@^$jJV$75!G=IU$-!#(B $B%^%$%J!<%b!<%I$N0l (prefix-numeric-value arg) 0) t)))) (auto-fill-mode (if auto-fill 1 -1)) (skk-mode arg) (run-hooks 'skk-auto-fill-mode-hook))) (defun skk-kill-emacs-without-saving-jisyo (&optional query) "$B8D?M<-=q$rJ]B8$;$:$K(B Emacs $B$r=*N;$9$k!#(B" (interactive "P") ;; format $B$r0z?t$K;}$?$;$?>l9g$O!"(Bskk-yes-or-no-p $B$r;H$&$H$+$($C$F>iD9$K$J(B ;; $B$k!#(B (when (yes-or-no-p (format (if skk-japanese-message-and-error "$B8D?M<-=q$rJ]B8$;$:$K(B %s $B$r=*N;$7$^$9!#NI$$$G$9$+!)(B " "Do you really wish to kill %s without saving Jisyo? ") (if (featurep 'xemacs) "XEmacs" "Emacs"))) (let ((buff (skk-get-jisyo-buffer skk-jisyo 'nomsg))) (remove-hook 'kill-emacs-hook 'skk-save-jisyo) (when buff (set-buffer buff) (set-buffer-modified-p nil) (kill-buffer buff)) (save-buffers-kill-emacs query)))) (defun skk-restart () "`skk-init-file' $B$N:F%m!<%I5Z$S3Fl9g$O(B $B;H$&$Y$-$G$J$$!#(B `skk-kakutei-key' $B$NJQ99$K$OBP1~$G$-$F$$$J$$!#(B" (interactive) (skk-save-jisyo) (setq skk-jisyo-update-vector nil) (when (featurep 'skk-server) (skk-disconnect-server)) (setq skk-server-disable-completion nil) (kill-local-variable 'skk-rule-tree) (setq skk-rule-tree nil) ;; $B$$$C$=(B unload-feature $B$H$+$7$?$[$&$,$$$$$N$+$b$7$l$J$$!#(B ;; skk-kakutei-key $B$K4X$7$F$O(B minibuffer-local-map $B$J$I$N=hM}$b!#(B (mapatoms (lambda (sym) ;; skk-user-directory, skk-init-file $B0J30$N(B defcustom $B$G@k8@(B ;; $B$5$l$?JQ?t$N$&$A!"(Bsaved-value $B$r;}$?$J$$$b$N$r:F=i4|2=!#(B ;; $BB>$K$b=|30$9$Y$-JQ?t$,$J$$$+MW8!F$!#(B (when (and (string-match "^skk-" (symbol-name sym)) (not (memq sym '(skk-user-directory skk-init-file))) (not (plist-member (symbol-plist sym) 'saved-value)) (plist-member (symbol-plist sym) 'standard-value)) (set-default sym (eval (car (get sym 'standard-value))))))) (dolist (feature '(skk-act skk-azik)) (when (featurep feature) (unload-feature feature))) (let (skk-mode-invoked) (skk-mode 1))) (defun skk-require-module () ;; skk-mode $B$KF~$k$?$S$KpJsMQ%U%!%$%k$r:n$j$^$7$?(B" "I have created an SKK record file for you")) (skk-setup-auto-paren) ; necessary to call before compiling skk-rule-tree. ;; SKK $B3HD%F~NO5!G=$N@_Dj(B (cond (skk-use-act ;; $B3HD%%m!<%^;zF~NO(B ACT (require 'skk-act)) (skk-use-azik ;; $B3HD%%m!<%^;zF~NO(B AZIK (require 'skk-azik)) ((featurep 'skk-tutcdef) ;; TUT-code (require 'skk-tutcode)) (skk-use-kana-keyboard ;; $B2>L>F~NO(B ($BF|K\8l5l(B JIS $B$^$?$O?F;X%7%U%H(B) (skk-kanagaki-initialize))) (when (eval-when-compile (featurep 'emacs)) (skk-emacs-prepare-menu)) (when (eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) (skk-setup-charset-list)) (skk-setup-delete-selection-mode) (when skk-annotation-lookup-DictionaryServices (skk-annotation-start-python)) (setq skk-mode-invoked t)) ;;; setup (defun skk-setup-shared-private-jisyo () ;; vector $B$ND9$5$O!"(B`skk-save-jisyo' $B$,<:GT$7$J$$A0Ds$J$i$P(B ;; skk-jisyo-save-count $B$HF1$8$G$h$$!#%(%i!<$=$NB>$G<:GT$9$k2DG=@-$r(B ;; $B9MN8$9$k$H!"$=$l$h$j>/$7D9$$J}$,LdBj$,5/$3$j$K$/$$!#(B ;; ($B0J2<$N6qBNE*$J?t;z$K$O:,5r$O$J$$(B) (setq skk-jisyo-update-vector (make-vector (max (* 2 skk-jisyo-save-count) (+ 20 skk-jisyo-save-count)) nil)) (setq skk-emacs-id (concat (system-name) ":" (number-to-string (emacs-pid)) ":" (mapconcat 'int-to-string (current-time) "") ":")) (skk-create-file skk-emacs-id-file nil nil 384) ; 0600 (with-temp-buffer (insert-file-contents skk-emacs-id-file) (insert skk-emacs-id "\n") (write-region 1 (point-max) skk-emacs-id-file nil 'nomsg))) (defun skk-setup-charset-list () (setq skk-charset-list (delq nil (mapcar (lambda (c) (when (skk-charsetp c) c)) '(ascii japanese-jisx0208 japanese-jisx0213-1 japanese-jisx0213-2 japanese-jisx0213.2004-1 katakana-jisx0201 latin-jisx0201 japanese-jisx0212 japanese-jisx0208-1978))))) (defun skk-setup-keymap () "SKK $B$N%-!<$r@_Dj$9$k!#(B" (cond (skk-j-mode (skk-define-j-mode-map) (skk-setup-j-mode-map-options)) (skk-latin-mode (skk-define-latin-mode-map) (skk-setup-latin-mode-map-options)) (skk-jisx0208-latin-mode (skk-define-jisx0208-latin-mode-map) (skk-setup-jisx0208-latin-mode-map-options)) (skk-abbrev-mode (skk-define-abbrev-mode-map) (skk-setup-abbrev-mode-map-options))) (skk-define-minibuffer-maps) ;; (unless skk-rule-tree (setq skk-rule-tree (skk-compile-rule-list skk-rom-kana-base-rule-list skk-rom-kana-rule-list)))) (defun skk-define-menu (map) "SKK $B$N%W%k%@%&%s%a%K%e!<$rDj5A$9$k!#(B" (easy-menu-define skk-menu map "Menu used in SKK mode." skk-menu-items)) (defun skk-define-j-mode-map () "$B%-!<%^%C%W(B `skk-j-mode-map' $B$rDj5A$9$k!#(B" (unless (keymapp skk-j-mode-map) (setq skk-j-mode-map (make-sparse-keymap)) (skk-update-minor-mode-map-alist 'skk-j-mode skk-j-mode-map) (skk-update-minor-mode-map-alist 'skk-jisx0201-mode skk-j-mode-map)) (unless (eq (lookup-key skk-j-mode-map "a") 'skk-insert) (dotimes (i 95) ;from " " to "~". (define-key skk-j-mode-map (skk-char-to-unibyte-string (+ 32 i)) 'skk-insert)) (skk-define-menu skk-j-mode-map))) (defun skk-define-latin-mode-map () "$B%-!<%^%C%W(B `skk-latin-mode-map' $B$rDj5A$9$k!#(B" (unless (keymapp skk-latin-mode-map) (setq skk-latin-mode-map (make-sparse-keymap)) (skk-update-minor-mode-map-alist 'skk-latin-mode skk-latin-mode-map) (skk-define-menu skk-latin-mode-map))) (defun skk-define-jisx0208-latin-mode-map () "$B%-!<%^%C%W(B `skk-jisx0208-latin-mode-map' $B$rDj5A$9$k!#(B" (unless (keymapp skk-jisx0208-latin-mode-map) (setq skk-jisx0208-latin-mode-map (make-sparse-keymap)) (skk-update-minor-mode-map-alist 'skk-jisx0208-latin-mode skk-jisx0208-latin-mode-map)) (unless (eq (lookup-key skk-jisx0208-latin-mode-map "a") 'skk-jisx0208-latin-insert) (dotimes (i 128) (when (aref skk-jisx0208-latin-vector i) (define-key skk-jisx0208-latin-mode-map (skk-char-to-unibyte-string i) 'skk-jisx0208-latin-insert))) (define-key skk-jisx0208-latin-mode-map "\C-q" 'skk-toggle-characters) (skk-define-menu skk-jisx0208-latin-mode-map))) (defun skk-define-abbrev-mode-map () "$B%-!<%^%C%W(B `skk-abbrev-mode-map' $B$rDj5A$9$k!#(B" (unless (keymapp skk-abbrev-mode-map) (setq skk-abbrev-mode-map (make-sparse-keymap)) (skk-update-minor-mode-map-alist 'skk-abbrev-mode skk-abbrev-mode-map) (dotimes (i 95) (define-key skk-abbrev-mode-map (skk-char-to-unibyte-string (+ 32 i)) 'skk-abbrev-insert)) (define-key skk-abbrev-mode-map "," 'skk-abbrev-comma) (define-key skk-abbrev-mode-map "." 'skk-abbrev-period) (define-key skk-abbrev-mode-map "\C-q" 'skk-toggle-characters) (skk-define-menu skk-abbrev-mode-map))) (defun skk-define-minibuffer-maps () (unless (eq (lookup-key minibuffer-local-map skk-kakutei-key) 'skk-kakutei) (define-key minibuffer-local-map skk-kakutei-key #'skk-kakutei) (define-key minibuffer-local-completion-map skk-kakutei-key #'skk-kakutei) ;; XEmacs doesn't have minibuffer-local-ns-map (when (and (boundp 'minibuffer-local-ns-map) (keymapp (symbol-value 'minibuffer-local-ns-map))) (define-key minibuffer-local-ns-map skk-kakutei-key #'skk-kakutei)))) (skk-define-abbrev-mode-map) (skk-define-latin-mode-map) (skk-define-jisx0208-latin-mode-map) (skk-define-j-mode-map) (defun skk-setup-j-mode-map-options () (unless (eq (lookup-key skk-j-mode-map (skk-char-to-unibyte-string skk-try-completion-char)) 'skk-insert) (when (vectorp skk-kakutei-key) (define-key skk-j-mode-map skk-kakutei-key #'skk-kakutei)) (define-key skk-j-mode-map (skk-char-to-unibyte-string skk-try-completion-char) #'skk-insert) ;; Workaround for key translation. (when (eval-when-compile (featurep 'emacs)) (when (eq skk-try-completion-char 9) ;; tab $B%-!<$O(B $B$NDj5A$,L5$1$l$P(B TAB $B$NDj5A$,3d$jEv$F$i$l$k!#(B ;; Org-mode $B$J$I$O(B $B$rDj5A$9$k$N$G!$(BSKK $B$NJ}$G$b(B $B$rDj5A(B ;; $B$9$kI,MW$,$"$k!#(B (define-key skk-j-mode-map [(tab)] #'skk-comp-wrapper))) ;; comp $B$H(B dcomp $B$G$NA08uJd$XLa$kF0:n$r(B Shift TAB $B$G$b2DG=$H$9$k!#(B (when skk-previous-completion-use-backtab (define-key skk-j-mode-map skk-previous-completion-backtab-key #'skk-previous-comp-maybe)) ;; (when (characterp (symbol-value 'skk-previous-candidate-char)) (add-to-list 'skk-previous-candidate-keys (skk-char-to-unibyte-string (symbol-value 'skk-previous-candidate-char)))) (unless (featurep 'skk-kanagaki) (dolist (key skk-previous-candidate-keys) (define-key skk-j-mode-map key #'skk-previous-candidate))) ;; (when skk-use-jisx0201-input-method ;; This command is autoloaded. (define-key skk-j-mode-map "\C-q" #'skk-toggle-katakana)) (unless skk-use-viper (define-key skk-j-mode-map (skk-char-to-unibyte-string skk-start-henkan-with-completion-char) #'skk-comp-start-henkan) (define-key skk-j-mode-map (skk-char-to-unibyte-string skk-backward-and-set-henkan-point-char) #'skk-backward-and-set-henkan-point)) (skk-setup-delete-backward-char) (skk-setup-undo) ;; (when (eq skk-j-mode-function-key-usage 'conversion) (define-key skk-j-mode-map [f1] #'skk-start-henkan-prog-1) (define-key skk-j-mode-map [f2] #'skk-start-henkan-prog-2) (define-key skk-j-mode-map [f3] #'skk-start-henkan-prog-3) (define-key skk-j-mode-map [f4] #'skk-start-henkan-prog-4) (define-key skk-j-mode-map [f5] #'skk-start-henkan-prog-5) (define-key skk-j-mode-map [f6] #'skk-start-henkan-prog-6) (define-key skk-j-mode-map [f7] #'skk-start-henkan-prog-7) (define-key skk-j-mode-map [f8] #'skk-start-henkan-prog-8) (define-key skk-j-mode-map [f9] #'skk-start-henkan-prog-9) (define-key skk-j-mode-map [f10] #'skk-start-henkan-prog-0)))) (defun skk-setup-latin-mode-map-options () (unless (eq (lookup-key skk-latin-mode-map skk-kakutei-key) 'skk-kakutei) (define-key skk-latin-mode-map skk-kakutei-key #'skk-kakutei))) (defun skk-setup-jisx0208-latin-mode-map-options () (unless (eq (lookup-key skk-jisx0208-latin-mode-map skk-kakutei-key) 'skk-kakutei) (define-key skk-jisx0208-latin-mode-map skk-kakutei-key #'skk-kakutei) (unless skk-use-viper (define-key skk-jisx0208-latin-mode-map (skk-char-to-unibyte-string skk-backward-and-set-henkan-point-char) #'skk-backward-and-set-henkan-point)))) (declare-function skk-start-henkan-with-completion "skk-comp") (defun skk-setup-abbrev-mode-map-options () (unless (eq (lookup-key skk-abbrev-mode-map skk-kakutei-key) 'skk-kakutei) (define-key skk-abbrev-mode-map skk-kakutei-key #'skk-kakutei) (define-key skk-abbrev-mode-map (skk-char-to-unibyte-string skk-start-henkan-char) #'skk-start-henkan) (define-key skk-abbrev-mode-map (skk-char-to-unibyte-string skk-try-completion-char) #'skk-try-completion) (unless skk-use-viper (define-key skk-abbrev-mode-map (skk-char-to-unibyte-string skk-start-henkan-with-completion-char) #'skk-start-henkan-with-completion)))) (defun skk-make-indicator-alist () "SKK $B%$%s%8%1!<%?7?%*%V%8%'%/%H$rMQ0U$7!"O"A[%j%9%H$K$^$H$a$k!#(B" (cond ((eval-when-compile (featurep 'xemacs)) (skk-xemacs-prepare-modeline-properties)) (t (skk-emacs-prepare-modeline-properties))) ;; (let ((mode-string-list '(skk-latin-mode-string skk-hiragana-mode-string skk-katakana-mode-string skk-jisx0208-latin-mode-string skk-abbrev-mode-string skk-jisx0201-mode-string)) mode string base) (save-match-data (cons (cons 'default (cons "" (skk-mode-string-to-indicator 'default ""))) (mapcar (lambda (symbol) (setq mode (prin1-to-string symbol)) (string-match "skk-\\([-a-z0-9]+\\)-mode-string" mode) (setq mode (intern (match-string-no-properties 1 mode))) (setq string (symbol-value symbol)) ;; $BK\Mh$J$i$3$N$h$&$K%f!<%6JQ?t$r2C9)$9$k$N$O$*$+$7$$$,!"(B ;; $B0\9T4|$N=hCV$H$7$F;CDjE*$K9T$J$&!#(B (cond ((string-match "^ +" string) ;; minor-mode setting (setq base (substring string (match-end 0)))) ((string-match "^--" string) ;; mode-line left setting (setq base (substring string (match-end 0))) (when (string-match "::*$" base) (setq base (substring base 0 (match-beginning 0))))) (t (setq base string))) (cons mode (cons (concat " " base) (skk-make-indicator-alist-1 mode base)))) mode-string-list))))) (defun skk-make-indicator-alist-1 (mode base) ;; faces.el (Emacs 24.2) ;; Make `modeline' an alias for `mode-line', for compatibility. ;; (put 'modeline 'face-alias 'mode-line) ;; * Incompatible Lisp Changes in Emacs 24.3 ;; ** Some obsolete functions, variables, and faces have been removed: ;; *** `modeline' (let* ((ml (if (skk-facep 'mode-line) 'mode-line ;GNU Emacs (2012-10-02 Remove obsolete face `modeline') 'modeline)) ;XEmacs (string (concat "--" base (cond ((skk-face-proportional-p ml) ":") ((memq mode '(latin abbrev)) "::") (t ":"))))) (skk-mode-string-to-indicator mode string))) (defun skk-setup-modeline () "$B%b!<%I%i%$%s$X$N%9%F!<%?%9I=<($r=`Hw$9$k!#(B" (setq skk-indicator-alist (skk-make-indicator-alist)) (case skk-status-indicator (left (unless (and mode-line-format (memq 'skk-modeline-input-mode (default-value 'mode-line-format))) (setq-default mode-line-format (append '("" skk-modeline-input-mode) (default-value 'mode-line-format)))) (skk-loop-for-buffers (buffer-list) (when (and (consp mode-line-format) (skk-local-variable-p 'mode-line-format) (null (memq 'skk-modeline-input-mode mode-line-format))) (setq mode-line-format (append '("" skk-modeline-input-mode) mode-line-format)))) (when skk-icon (unless (memq 'skk-icon (default-value 'mode-line-format)) (setq-default mode-line-format (append '("" skk-icon) (default-value 'mode-line-format)))) (skk-loop-for-buffers (buffer-list) (when (and (consp mode-line-format) (skk-local-variable-p 'mode-line-format) (null (memq 'skk-icon mode-line-format))) (setq mode-line-format (append '("" skk-icon) mode-line-format))))) (force-mode-line-update t)) ;; (t (when (and (consp mode-line-format) (equal (car mode-line-format) "") (eq 'skk-modeline-input-mode (nth 1 mode-line-format))) ;; for skk-restart. (setq-default mode-line-format (nthcdr 2 mode-line-format))) (skk-loop-for-buffers (buffer-list) (when (and (consp mode-line-format) (equal (car mode-line-format) "") (eq 'skk-modeline-input-mode (nth 1 mode-line-format))) ;; for skk-restart. (setq mode-line-format (nthcdr 2 mode-line-format)))) (setq-default skk-modeline-input-mode "") (add-minor-mode 'skk-mode 'skk-modeline-input-mode)))) (defun skk-setup-emulation-commands (commands emulation) (let ((map (if (and (boundp 'overriding-local-map) (keymapp 'overriding-local-map)) overriding-local-map (current-global-map)))) (dolist (command commands) (dolist (key (where-is-internal command map)) (define-key skk-abbrev-mode-map key emulation) (define-key skk-j-mode-map key emulation))))) (defun skk-setup-delete-backward-char () "$B!V8eB`!W7O$N%-!<$K%3%^%s%I(B `skk-delete-backward-char' $B$r3dEv$F$k!#(B" (skk-setup-emulation-commands skk-delete-backward-char-commands 'skk-delete-backward-char)) (defun skk-setup-undo () "$B!V$d$jD>$7!W7O$N%-!<$K%3%^%s%I(B `skk-undo' $B$r3dEv$F$k!#(B" (skk-setup-emulation-commands skk-undo-commands 'skk-undo)) (defun skk-setup-verbose-messages () (unless skk-henkan-on-message (let ((list (split-string (apply 'format ;; fotmat#STRING (case skk-j-mode-function-key-usage (conversion "\ \[F5]%s [F6]%s [F7]%s [F8]%s [F9]%s [F10]%s") (t "\ \[C-5 SPC]%s [C-6 SPC]%s [C-7 SPC]%s [C-8 SPC]%s [C-9 SPC]%s [C-0 SPC]%s")) ;; format#OBJECTS (mapcar (lambda (x) (cdr (assoc (caar (symbol-value (intern-soft (format "skk-search-prog-list-%d" x)))) '((skk-search-tankanji . "$BC14A;z(B") (skk-search-identity . "$BL5JQ49(B") (skk-search-katakana . "$B%+%?%+%J(B") (skk-search-hankaku-katakana . "$BH>3Q%+%J(B") (skk-search-jisx0208-romaji . "$BA43Q%m!<%^(B") (skk-search-romaji . "$B%m!<%^(B") (nil . "$BL$Dj5A(B")) ))) '(5 6 7 8 9 0))) " ")) new) ; END varlist ;; BODY (dolist (x list) (let* ((y (split-string x "]")) (s1 (car y)) (s2 (nth 1 y))) (setq new (concat new (propertize (concat s1 "]") 'face 'skk-verbose-kbd-face) s2 " ")))) (setq skk-henkan-on-message new)) )) (defun skk-compile-init-file-maybe () "$BI,MW$J$i(B `skk-init-file' $B$r%P%$%H%3%s%Q%$%k$9$k!#(B `skk-byte-compile-init-file' $B$,(B non-nil $B$N>l9g$G!"(B`skk-init-file' $B$r%P%$%H%3(B $B%s%Q%$%k$7$?%U%!%$%k$,B8:_$7$J$$$+!"$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$h$j(B `skk-init-file' $B$NJ}$,?7$7$$$H$-$O!"(B`skk-init-file' $B$r%P%$%H%3%s%Q%$%k$9$k!#(B `skk-byte-compile-init-file' $B$,(B nil $B$N>l9g$G!"(B`skk-init-file' $B$r%P%$%H%3%s%Q(B $B%$%k$7$?%U%!%$%k$h$j(B `skk-init-file' $B$NJ}$,?7$7$$$H$-$O!"$=$N%P%$%H%3%s%Q%$(B $B%k:Q%U%!%$%k$r>C$9!#(B" (save-match-data (let* ((file (expand-file-name skk-init-file)) (init-file (if (file-exists-p (concat file ".el")) (concat file ".el") file)) (elc (concat init-file (if (string-match "\\.el$" init-file) "c" ".elc")))) (if skk-byte-compile-init-file (when (and (file-exists-p init-file) (or (not (file-exists-p elc)) (file-newer-than-file-p init-file elc))) (save-window-excursion ; for keep window configuration. (skk-message "%s $B$r%P%$%H%3%s%Q%$%k$7$^$9(B" "Byte-compile %s" skk-init-file) (sit-for 2) (byte-compile-file init-file))) (when (and (file-exists-p init-file) (file-exists-p elc) (file-newer-than-file-p init-file elc)) (delete-file elc)))))) (defun skk-setup-delete-selection-mode () "Delete Selection $B%b!<%I$N$?$a$N@_Dj$r$9$k!#(B 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 $B%;%C%H%"%C%W$9$k!#(B" (let ((property (cond ((featurep 'xemacs) 'pending-delete) (t 'delete-selection))) (funcs '(skk-current-kuten skk-current-touten skk-input-by-code-or-menu skk-insert skk-today)) (supersede-funcs '(skk-delete-backward-char))) (unless (get 'skk-insert property) (dolist (func funcs) (put func property t)) (dolist (func supersede-funcs) (put func property 'supersede))))) (defun skk-setup-auto-paren () (when (and skk-auto-insert-paren skk-auto-paren-string-alist) ;; skk-auto-paren-string-alist $B$NCf$+$i!"(B ;; skk-special-midashi-char-list $B$NMWAG$K4XO"$9$k$b$N$r$N=PNOJ8;z$K(B ;; $B%P%$%s%I$5$l$F$$$J$$$+$I$&$+$r3NG'$9$k!#(B (null (assoc str skk-rom-kana-base-rule-list)) (null (assoc str skk-rom-kana-rule-list))) ;; skk-auto-paren-string-alist $B$N3FMWAG$N(B car $B$NJ8;z$,(B ;; ascii char $B$G$"$k>l9g$O!"(Bskk-rom-kana-rule-list, ;; skk-rom-kana-base-rule-list $B$K$=$NJ8;z$r=q$-9~$`!#(B ;; $BK\Mh$O(B ascii char $B$O(B skk-rom-kana-rule-list, ;; skk-rom-kana-base-rule-list $B$K=q$/I,MW$,$J$$(B ;; --- skk-emulate-original-map$B$K$h$kF~NO$,9T$J$o$l$k(B --- ;; $B$,!"(Bskk-auto-paren-string-alist $B$K;XDj$5$l$?BP$K$J$k(B ;; $BJ8;z$NA^F~$N$?$a$K$O!"%-!<$H$J$kJ8;z$r=q$$$F$*$/I,MW$,(B ;; $B$"$k!#(B (setq skk-rom-kana-rule-list (cons (list str nil str) skk-rom-kana-rule-list)))))))) (defun skk-setup-minibuffer () "$B%+%l%s%H%P%C%U%!$NF~NO%b!<%I$K=>$C$F%_%K%P%C%U%!$NF~NO%b!<%I$r@_Dj$9$k!#(B" (case skk-minibuffer-origin-mode (hiragana (skk-j-mode-on)) (katakana (skk-j-mode-on t)) (abbrev (skk-abbrev-mode-on)) (latin (skk-latin-mode-on)) (jisx0208-latin (skk-jisx0208-latin-mode-on)))) (defun skk-setup-jisyo-buffer () "SKK $B$N<-=q%P%C%U%!$rMQ0U$9$k!#(B `skk-jisyo' $B$N<-=q%P%C%U%!$G!"(B (1)$B6u%P%C%U%!$G$"$l$P!"?7$7$/%X%C%@!<$r:n$j!"(B (2)$B<-=q%(%s%H%j$,$"$k4{B8$N<-=q%P%C%U%!$J$i$P!"%X%C%@!<$,@5$7$$$+$I$&$+$r(B $B%A%'%C%/$9$k!#(B" ;; skk-okuri-ari-min $B$H(B skk-okuri-nasi-min $B$N0LCV$rJQ99$7$?!#(B ;; $B"-(B $B?7$7$$(B skk-okuri-ari-min ;; ;; okuri-ari entries. ;; $B"+(B $B0JA0$N(B skk-okuri-ari-min ;; ;; $B"-(B skk-okuri-ari-max $B"-(B $B?7$7$$(B skk-okuri-nasi-min ;; ;; okuri-nasi entries. ;; $B"+(B $B0JA0$N(B skk-okuri-nasi-min ;; ;; ;; $BJQ99A0$N0LCV$G$"$l$P!"2<5-$N$h$&$J6u<-=q$N>l9g!"(B ;; ;; ;; okuri-ari entries. ;; ;; okuri-nasi entries. ;; ;; skk-okuri-ari-min $B$H(B skk-okuri-ari-max $B$N%^!<%+!<$,=E$J$C$F$7$^$$!"(B ;; skk-okuri-ari-min $B$N0LCV$KA^F~$7$?8uJd$,(B skk-okuri-ari-max $B$N%^!<%+!<(B ;; $B$r8eJ}$K2!$7$d$i$J$$!#(B ;; ;; case-fold-search $B$O!"<-=q%P%C%U%!$G$O>o$K(B nil$B!#(B (save-match-data (when (zerop (buffer-size)) ;; $B6u%P%C%U%!$@$C$?$i!"%X%C%@!<$N$_A^F~!#(B (insert ";; okuri-ari entries.\n" ";; okuri-nasi entries.\n")) (goto-char (point-min)) (unless (re-search-forward "^;; okuri-ari entries.$" nil 'noerror) (skk-error "$BAw$j$"$j%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*(B" "Header line for okuri-ari entries is missing!")) ;; $B8GDj%]%$%s%H$J$N$G!"(B(point) $B$G==J,!#(B (setq skk-okuri-ari-min (point)) (unless (re-search-forward "^;; okuri-nasi entries.$" nil 'noerror) (skk-error "$BAw$j$J$7%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*(B" "Header line for okuri-nasi entries is missing!")) (beginning-of-line) ;; $B6&M-<-=q$J$i8GDj%]%$%s%H$G$bNI$$$N$@$,!"<-=q%P%C%U%!$GJT=8$r9T(B ;; $B$J$C$?$H$-$N$3$H$rG[N8$7$F%^!<%+!<$K$7$F$*$/!#(B (setq skk-okuri-ari-max (point-marker)) (forward-line 1) (backward-char 1) (setq skk-okuri-nasi-min (point-marker)))) (defun skk-emulate-original-map (arg) "$B%-!l9g$O!"(Bnil $B$rJV$9!#(B" (while (not (or (zerop (length key)) (eq command (key-binding key)))) (setq key (vconcat (cdr (append key nil))))) (unless (zerop (length key)) key)) (defun skk-adjust-user-option () "$B%f!<%6%*%W%7%g%s$NIT@09g$rD4@0$9$k!#(B" (unless (skk-color-cursor-display-p) (setq skk-use-color-cursor nil)) ;; $BN>N)$G$-$J$$%*%W%7%g%s$rD4@0$9$k!#(B (when skk-process-okuri-early ;; skk-process-okuri-early $B$NCM$,(B non-nil $B$G$"$k$H$-$K2<5-$NCM$,(B non-nil ;; $B$G$"$l$P@5>o$KF0$+$J$$$N$G$3$NJQ?t$NM%@h=g0L$r9b$/$7$?!#(B (setq skk-kakutei-early nil skk-auto-okuri-process nil skk-henkan-okuri-strictly nil skk-henkan-strict-okuri-precedence nil)) (unless skk-jisyo-save-count ;; $B8=:_$N8e(B) $B$H%+!<%=%k$N4V$NJ8;zNs$K$D$$(B $B$F!"$R$i$,$J$H%+%?%+%J$rF~$lBX$($k!#(B" (interactive "P") (let ((show skk-show-mode-enable)) ;$B%A%e!<%H%j%"%k= skk-save-point (point)) ;; (not (eobp)) (or ;; "$B!<(B" $B$G$OJ8;zuBV$KLa$9!#(B `edit-picture-hook' $B$K(B `add-hook' $B$7$F;HMQ$9$k!#(B" ;; $B4{B8$N%P%C%U%!$r(B picture mode $B$K$7$?$H$-!"(Bpicture-mode $B4X?t$O(B ;; kill-all-local-variables $B4X?t$r8F$P$J$$$N$G!"(BSKK $B4XO"$N%P%C%U%!%m!<%+%k(B ;; $BJQ?t$,85$N%P%C%U%!$NCM$N$^$^$K$J$C$F$7$^$&!#$=$3$G!"(Bpicture mode $B$KF~$C$?(B ;; $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 ;; RMS $B$O(B picture-mode $B$G(B kill-all-local-variables $B4X?t$r8F$P$J$$$N$O!"%P%0(B ;; $B$G$O$J$$!"$H8@$C$F$$$?!#(B ;; ;; picture-mode $B$G(B SKK $B$r;HMQ$74A;zF~NO$r$7$?>l9g$K!"(BBS $B$GA43QJ8;z$,>C$;$J$$(B ;; $B$N$O!"(BSKK $B$NIT6q9g$G$O$J$/!"(Bpicture.el $B$NLdBj(B (move-to-column-force $B4X?t(B ;; $B$NCf$G;HMQ$7$F$$$k(B move-to-column $B$GA43QJ8;z$rL5;k$7$?%+%i%`?t$,M?$($i$l(B ;; $B$?$H$-$K%+!<%=%k0\F0$,$G$-$J$$$+$i(B) $B$G$"$k!#>C$7$?$$J8;z$K%]%$%s%H$r9g$o(B ;; $B$;!"(BC-c C-d $B$G0lJ8;z$:$D>C$9$7$+J}K!$O$J$$!#(B (when skk-mode (skk-kill-local-variables))) (defun skk-kill-local-variables () "SKK $B4XO"$N%P%C%U%!%m!<%+%kJQ?t$rL58z$K$9$k!#(B" (skk-mode -1) (let (v vstr) (dolist (lv (buffer-local-variables)) (setq v (car lv) vstr (prin1-to-string v)) (when (and (> (length vstr) 3) (string= "skk-" (substring vstr 0 4))) (kill-local-variable v))))) ;;;; kana inputting functions (defun skk-insert (&optional arg prog-list-number) "SKK $B$NJ8;zF~NO$r9T$J$&!#(B" (interactive "p") (unless prog-list-number (setq prog-list-number current-prefix-arg)) (barf-if-buffer-read-only) (skk-with-point-move (let ((ch (skk-last-command-char))) (cond ((and skk-henkan-mode (memq ch skk-special-midashi-char-list)) (if (= skk-henkan-start-point (point)) ;; `$B"&(B' $B$KB3$/(B `>' $B$G$OJQ49=hM}$r3+;O$7$J$$(B (progn (skk-set-last-command-char ?>) (skk-kana-input arg)) ;; $B@\F,<-!&@\Hx<-$N=hM}!#(B (skk-process-prefix-or-suffix arg))) ;; start writing a midasi key. ((and (memq ch skk-set-henkan-point-key) (or skk-okurigana (not (skk-get-prefix skk-current-rule-tree)) (not (skk-select-branch skk-current-rule-tree ch)))) ;; normal pattern ;; skk-set-henkan-point -> skk-kana-input. (skk-set-henkan-point arg)) ;; start conversion. ((and skk-henkan-mode ; $B"&%b!<%I(B or $B"'%b!<%I(B (eq ch skk-start-henkan-char)) ; SPC (skk-start-henkan arg prog-list-number)) ;; just input kana. ((not (eq skk-henkan-mode 'on)) ; not $B"&%b!<%I(B (skk-kana-input arg)) ;; for completion. ;; $B%3%s%W%j!<%7%g%s4XO"$N4X?t$O(B skk-rom-kana-base-rule-list $B$NCf$K2!(B ;; $B$79~$a!"(Bskk-kana-input $B$NCf$+$i@)8f$9$Y$-!#(B ;; $BC"$7!"(BTAB $B$O(B self-insert-command $B$G$O$J$$$N$G!"(Bskk-j-mode-map $B$N(B ;; $B%-!<%^%C%W$G(B substitute-key-definition $B$7$F$b(B skk-insert $B$K%P%$%s(B ;; $B%I$G$-$J$$!#(Bskk-j-mode-map $B$G(B $BD>@\(B "\t" $B$r(B skk-insert $B$K%P%$%s%I(B ;; $B$7$F!"(Bcompletion $B$H(B skk-current-kuten/skk-current-touten $B$r%3%s%H(B ;; $B%m!<%k$9$k%3%^%s%IL>$r(B skk-rom-kana-base-rule-list $B$K=q$1$PNI$$$+(B ;; $B$b!#(B ;; $B$G$b!"(Bskk-comp $B$H(B skk-current-kuten/skk-current-touten $B$N%3%s%H%m(B ;; $B!<%k$,%O!<%I%3!<%G%#%s%0$5$l$k$N$O$^$:$$$+$b(B (skk-comp $B$O;H$C$F$b(B ;; skk-current-kuten/skk-current-touten $B$O;H$o$J$$!"$H$$$&?M$,$$$k$+(B ;; $B$b(B)$B!#(B ((and (eq skk-henkan-mode 'on) ; $B"&%b!<%I(B (eq ch skk-try-completion-char)) (skk-comp (or prog-list-number ; C-u TAB $B$GJd40%-!<$r=i4|2=(B (not (eq last-command 'skk-comp-do))))) ;; ((and (eq skk-henkan-mode 'on) ; $B"&%b!<%I(B (memq ch (list skk-next-completion-char skk-previous-completion-char)) (eq last-command 'skk-comp-do)) (skk-comp-previous/next ch)) ;; just input Kana. (t (skk-kana-input arg))) ;; verbose message (skk-henkan-on-message)))) (defun skk-process-prefix-or-suffix (&optional arg) "$B@\F,<-$^$?$O@\Hx<-$NF~NO$r3+;O$9$k!#(B $B$3$l$O!"IaDL(B `skk-special-midashi-char-list' $B$K;XDj$5$l$?J8;z$NF~NO$,$"$C$?>l(B $B9g$KHsBPOCE*$K8F$S=P$5$l$k$,!"BPOCE*$K8F=P$9$3$H$b2DG=$G$"$k!#(B" ;; SKK 10 $B$^$G$O!"(B> < ? $B$N(B 3 $B$D$K$D$$$F07$$$,J?Ey$G$J$+$C$?!#(BDaredevil SKK ;; 11 $B0J9_$G$O!"<-=q$K$*$1$kI=8=$r(B > $B$GE}0l$9$k$3$H$K$h$j!"(B3 $B)) (on ;; $B@\F,<-$N=hM}(B (skk-kana-cleanup 'force) (insert-and-inherit ?>) (skk-set-marker skk-henkan-end-point (point)) (skk-set-henkan-count 0) (setq skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point (point)) skk-prefix "") (setq skk-after-prefix t) (skk-henkan)) (t (if (skk-last-command-char) ;; `skk-insert' $B$+$i8F$P$l$k>l9g$K$O!"$3$N%1!<%9$O$J$$!#(B (let ((i (prefix-numeric-value arg)) (str (skk-char-to-unibyte-string (skk-last-command-char)))) (while (> i 0) (skk-insert-str str) (setq i (1- i)))) nil)))) (defun skk-kana-input (&optional arg) "$B$+$JJ8;z$NF~NO$r9T$&%k!<%A%s!#(B" ;; Message-Id: <19980610190611B.sakurada@kuis.kyoto-u.ac.jp> ;; From: Hideki Sakurada ;; Date: Wed, 10 Jun 1998 19:06:11 +0900 (JST) ;; ;; $B?7$7$$(B skk-kana-input $B$O(B, $B4JC1$K@bL@$9$k$H(B, ;; $B$"$i$+$8$a%k!<%k$rLZ$N7A$KI=8=$7$F$*$$$F(B, $BF~NO$r8+(B ;; $B$FLZ$rC)$j(B, $B$=$l0J>eC)$l$J$/$J$C$?$i$=$N@a$KEPO?$5(B ;; $B$l$F$$$k2>L>$rF~NO$9$k(B. $B$H$$$&$7$/$_$G$9(B. ;; ;; $BNc$($P(B, n a t $B$N$_$+$i$J$k0J2<$N%k!<%k(B ;; ;; a $B"*(B $B$"(B ;; n $B"*(B $B$s(B ;; nn $B"*(B $B$s(B ;; na $B"*(B $B$J(B ;; ta $B"*(B $B$?(B ;; tt $B"*(B $B$C(B ($BuBV(B t) ;; ;; $B$r%k!<%kLZ$KJQ49$9$k$H(B, ;; ;; $B!?(B/$B!@(B ;; $B!?(B / $B!@(B ;; a $B!?(B / t $B!@(B n ;; $B!?(B / $B!@(B ;; $B$"(B $B!&(B $B$s(B ;; $B!?(B| / $B!@(B ;; a $B!?(B | t a / $B!@(B n ;; $B!?(B | / $B!@(B ;; $B$?(B $B$C(B $B$J(B $B$s(B ;; ($BuBV(B "t") ;; ;; $B$H$$$&7A$K$J$j$^$9(B. ;; ;; $B=i4|>uBV(B($BLZ$N:,(B)$B$G(B `a' $B$rF~NO$9$k$H(B, $BLZ$N:,$+$i(B ;; $B!V$"!W$K0\F0$7$^$9(B. $BuBV$,@_Dj$5$l$F$$$k>l9g$O(B, $B@_Dj$5$l$F$$(B ;; $B$kJ8;zNs$r%-%e!<$KLa$7$F$+$i:,$KLa$j$^$9(B. ;; ;; $B=i4|>uBV$G(B `n' $B$rF~NO$9$k$H(B, $B!V$s!W$K0\F0$7$^$9(B. ;; $Bl9g$O(B, `t' $B$G$O2<$KC)$l$J$$$N$G(B, ;; $B!V$s!W$r=PNO$7$F(B `t' $B$r%-%e!<$KLa$7$^$9(B. ;; ;; $B$3$3$G(B, $B=i4|>uBV(B, $B8=>uBV$r$=$l$>$l(B skk-rule-tree, ;; skk-current-rule-tree $B$GI=$7(B. ;; $BLZ$r2<$KC)$k(B, $B$H$$$&A`:n$O(B, skk-select-branch $B$r(B ;; $BMQ$$$F(B, ;; ;; (skk-select-branch rule-tree ?a) ;; ;; $B$N$h$&$K$7$^$9(B. $B8=>uBV$K@_Dj$5$l$F$$$k$+$J(B(("$B%"(B". "$B$"(B")$B$J$I(B), ;; $BuBV(B("t" $B$J$I(B)$B$O(B, $B$=$l$>$l(B skk-get-kana, ;; skk-get-nextstate $B$Gkana rule (setq data d queue (nconc (string-to-list (skk-get-nextstate skk-current-rule-tree)) queue) skk-current-rule-tree nil)) (t ;; SKK-CURRENT-RULE-TREE does not have any roma->kana rule (let ((dd (when skk-kana-input-search-function (funcall skk-kana-input-search-function)))) (cond (dd (setq data (car dd) queue (nconc (string-to-list (cdr dd)) (cdr queue)) skk-current-rule-tree nil)) ((eq skk-current-rule-tree skk-rule-tree) ;; typo on the root of tree (setq queue nil skk-current-rule-tree nil)) (t ;; otherwise move to root of the tree, and redo (setq skk-current-rule-tree nil))))))))) (cond ((not data) (if skk-current-rule-tree (progn ;;(digit-argument arg) ;; $B$&!A$s!"$h$&J,$+$i$s!#$H$j$"$($:!#(B (unless skk-isearch-message (setq prefix-arg arg)) (setq skk-prefix (skk-get-prefix skk-current-rule-tree)) (skk-insert-prefix skk-prefix)) ;;(skk-kana-cleanup 'force) (when (eq skk-henkan-mode 'active) (skk-kakutei)) (setq skk-prefix "") (unless (or queue (and (not (eq this-command 'skk-insert)) skk-henkan-mode)) (skk-emulate-original-map (skk-make-raw-arg arg))))) (t ;;(skk-cancel-undo-boundary) (setq skk-prefix "") (when (functionp data) (setq data (funcall data (skk-make-raw-arg arg)))) (when (stringp (if (consp data) (car data) data)) (let* ((str (if (consp data) (if skk-katakana (car data) (cdr data)) data)) (pair (when skk-auto-insert-paren (cdr (assoc str skk-auto-paren-string-alist)))) (count0 arg) (count1 arg) (inserted 0) region-str) (when (and (eq skk-henkan-mode 'active) ;$B"'%b!<%I(B skk-kakutei-early (not skk-process-okuri-early)) (skk-kakutei)) ;; arg $B$OJ]B8$7$F$*$+$J$$$H!"(B0 $B$K$J$C$F$7$^$$!"(Bqueue $B$,(B ;; $B$?$^$C$F$$$F:FEY$3$3$X$d$C$FMh$?$H$-$K!"J8;zF~NO$,(B ;; $B$G$-$J$/$J$k!#(B (skk-cancel-undo-boundary) (when (and (skk-region-active-p) skk-use-auto-enclose-pair-of-region pair) (setq region-str (buffer-substring (region-beginning) (region-end))) (delete-region (region-beginning) (region-end))) (while (> count0 0) (skk-insert-str str) (setq count0 (1- count0))) (when pair (when region-str (insert region-str)) (while (> count1 0) (unless (string= pair (skk-char-to-unibyte-string (following-char))) (setq inserted (1+ inserted)) (skk-insert-str pair)) (setq count1 (1- count1))) (unless (zerop inserted) (backward-char inserted)) (when region-str (skip-chars-forward pair))) (when (and skk-okurigana (null queue)) (skk-set-okurigana))))))) ;; XXX I don't know how skk-isearch-message works.... (when skk-isearch-message (skk-isearch-message))))) ;;; tree procedure ($B%D%j!<$K%"%/%;%9$9$k$?$a$N%$%s%?!<%U%'!<%9(B) (defun skk-search-tree (tree char-list) "TREE $B$N:,$+$i@hC<$X(B CHAR-LIST $B$K=>$C$FC)$k!#(B $B@.8y$7$?>l9g$O(B nil $B$H(B $B7k2L$NLZ$NAH$rJV$7!"<:GT$7$?>l9g$OC)$l$J$+$C$?(B CHAR-LIST $B$N;D$j$HC)$l$J$/$J$C$?@aE@$NLZ$NAH$rJV$9!#(B" (catch 'return (let (next char rest) (while char-list (setq char (car char-list) rest (cdr char-list) next (skk-select-branch tree char)) (if next (setq tree next char-list rest) (throw 'return (cons char-list tree)))) (cons nil tree)))) (defun skk-add-rule (tree rule) (let* ((prefix (nth 0 rule)) (l (length prefix)) (result (skk-search-tree tree (string-to-list prefix))) (rest (car result)) (addpoint (cdr result))) (while rest (let ((addtree (skk-make-rule-tree (car rest) (if (vectorp prefix) prefix (substring prefix 0 (1+ (- l (length rest))))) nil nil nil))) (skk-add-branch addpoint addtree) (setq addpoint addtree rest (cdr rest)))) (skk-set-nextstate addpoint (nth 1 rule)) (skk-set-kana addpoint (nth 2 rule)))) (defun skk-delete-rule (tree string) "$BF~NO(B STRING $B$KBP$9$k%k!<%k$r%k!<%kLZ(B TREE $B$+$i:o=|$9$k!#(B" (catch 'return (let ((char-list (string-to-list string)) (cutpoint tree) ;; TREE $B$N:,$+$i=P$k;^$,(B1$BK\$7$+$J$$>l9g(B ;; $B$N$?$a$K0l1~=i4|2=$7$F$*$/(B (cuttree (car (skk-get-branch-list tree))) next) (while char-list (setq next (skk-select-branch tree (car char-list)) char-list (cdr char-list)) (if next (if (> (length (skk-get-branch-list tree)) 1) (setq cutpoint tree ; $B;^$,(B2$BK\0J>e$N;~(B cutpoint cuttree cuttree next ; $B$r(B update tree next) (setq tree next)) (throw 'return nil))) (skk-set-branch-list cutpoint (delq cuttree (skk-get-branch-list cutpoint)))))) ;; convert skk-rom-kana-rule-list to skk-rule-tree. ;; The rule tree follows the following syntax: ;; := nil | ( . ) ;; := ( ) ;; := (<$B$R$i$,$JJ8;zNs(B> . <$B%+%?%+%JJ8;zNs(B>) | nil ;; := <$B1Q>.J8;z(B> ;; := <$B1Q>.J8;zJ8;zNs(B> | nil ;;;###autoload (defun skk-compile-rule-list (&rest rule-lists) "rule list $B$rLZ$N7A$K%3%s%Q%$%k$9$k!#(B" (let ((tree (skk-make-rule-tree nil "" nil nil nil)) key) (dolist (rule-list rule-lists) (dolist (rule rule-list) (setq key (car rule)) (ignore-errors (when (symbolp key) (setq key (eval key)) (when (stringp key) (setq rule (cons key (cdr rule))))) (unless (or (not (stringp key)) (string-match "\\w" key) (eq (key-binding key) 'self-insert-command)) (define-key skk-j-mode-map key 'skk-insert))) (when (stringp key) (skk-add-rule tree rule)))) tree)) (defun skk-insert-str (str) "$B%P%C%U%!$K(B STR $B$rA^F~$9$k!#(B $BI,MW$G$"$l$P(B `skk-auto-start-henkan' $B$r%3!<%k$9$k!#(B $BI,MW$G$"$l$P(B `self-insert-after-hook' $B$r%3!<%k$9$k!#(B `overwrite-mode' $B$G$"$l$P!"E,@Z$K>e=q$-$9$k!#(B" (insert-and-inherit str) (if (eq skk-henkan-mode 'on) ;; $B"&%b!<%I(B (when (and skk-auto-start-henkan (not skk-okurigana)) (skk-auto-start-henkan str)) ;; $B"&%b!<%I0J30(B (when (and (boundp 'self-insert-after-hook) self-insert-after-hook) (funcall self-insert-after-hook (- (point) (length str)) (point))) (when overwrite-mode (skk-del-char-with-pad (skk-ovwrt-len str)))) ;; SKK 9.6 $B$G$O$3$N%?%$%_%s%0$G(B fill $B$,9T$o$l$F$$$?$,!"(BSKK 10 $B$G$O9T$o$l$F$$(B ;; $B$J$+$C$?!#(B (when (and skk-j-mode (not skk-henkan-mode)) (skk-do-auto-fill))) (defun skk-ovwrt-len (str) "$B>e=q$-$7$FNI$$D9$5$rJV$9!#(B" (min (string-width (buffer-substring-no-properties (point) (line-end-position))) (string-width str))) (defun skk-del-char-with-pad (length) "$BD9$5(B LENGTH $B$NJ8;z$r>C5n$9$k!#(B $BD4@0$N$?$a!"I,MW$G$"$l$P!"KvHx$K%9%Z!<%9$rA^F~$9$k!#(B" (let ((p (point)) (len 0)) (while (< len length) (forward-char 1) (setq len (string-width (buffer-substring-no-properties (point) p)))) (delete-region p (point)) (unless (= length len) (insert-and-inherit " ") (backward-char 1)))) (defun skk-cancel-undo-boundary () ;; skk-insert, skk-jisx0208-latin-insert $B$GO"B3$7$FF~NO$5(B ;; $B$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$l$?%^%8%C%/%J%s%P!JN,7A$H$7$F$N(B ;; $B8+=P$78l$rA^F~$9$k$?$a$N%b!<%I$G$"$k$N$G!"D9$$8+=P$78l$r(B ;; $BA^F~$9$k$3$H$O$"$^$j$J$/!"LdBj$b>.$5$$$H9M$($i$l$k!#(B ;;skk-abbrev-comma ;;skk-abbrev-period self-insert-command))) (cancel-undo-boundary) (when (null skk-current-rule-tree) ;; $B$^$@$+$JJ8;z$,40@.$7$F$$$J$$$H$-$O!"(Bundo count $B$r%$%s%/%j%a%s%H(B ;; $B$7$J$$!#(B (setq skk-self-insert-non-undo-count (1+ skk-self-insert-non-undo-count)))) (t (setq skk-self-insert-non-undo-count 1)))) (defun skk-set-okurigana () "$B8+=P$78l$+$i(B `skk-henkan-okurigana', `skk-henkan-key' $B$N3FCM$r%;%C%H$9$k!#(B" (cancel-undo-boundary) ;;(and skk-katakana (skk-hiragana-region skk-henkan-start-point (point))) (skk-set-marker skk-henkan-end-point skk-okurigana-start-point) ;; just in case (skk-save-point (goto-char skk-okurigana-start-point) (unless (eq (following-char) ?*) (insert-and-inherit "*"))) (setq skk-henkan-okurigana (buffer-substring-no-properties (1+ skk-okurigana-start-point) (point))) (setq skk-henkan-key (concat (buffer-substring-no-properties skk-henkan-start-point skk-henkan-end-point) (or (skk-okurigana-prefix (if skk-katakana (skk-katakana-to-hiragana skk-henkan-okurigana) skk-henkan-okurigana)) skk-okuri-char)) skk-prefix "") (when skk-katakana (setq skk-henkan-key (skk-katakana-to-hiragana skk-henkan-key) skk-henkan-okurigana (skk-katakana-to-hiragana skk-henkan-okurigana))) (delete-region skk-okurigana-start-point (1+ skk-okurigana-start-point)) (skk-set-henkan-count 0) (skk-henkan) (setq skk-okurigana nil)) (defun skk-set-char-before-as-okurigana (&optional no-sokuon) "$B%]%$%s%H$ND>A0$NJ8;z$rAw$j2>L>$H8+Jo$7$F!"JQ49$r3+;O$9$k!#(B $B$?$@$7!"(B $B$b$&$R$H$DA0$NJ8;z$,B%2;$@$C$?>l9g$K$O!"(B $B$=$l0J9_$rAw$j2>L>$H8+Jo$9!#(B" (interactive) (let ((pt1 (point)) pt2 okuri sokuon) (setq okuri (skk-save-point (backward-char 1) (buffer-substring-no-properties (setq pt2 (point)) pt1))) (when okuri (unless no-sokuon (setq sokuon (skk-save-point (backward-char 2) (buffer-substring-no-properties (point) pt2))) (unless (member sokuon '("$B$C(B" "$B%C(B")) (setq sokuon nil))) ;; (skk-save-point (backward-char (if sokuon 2 1)) (skk-set-marker skk-okurigana-start-point (point))) (setq skk-okuri-char (skk-okurigana-prefix okuri)) (unless skk-current-search-prog-list (setq skk-current-search-prog-list skk-search-prog-list)) (skk-set-okurigana)))) ;;; other inputting functions (defun skk-toggle-kutouten () "$B6gFIE@$N= ?9 chr) skk-use-auto-kutouten) (nth 0 output)) ((and (<= ?$B#0(B chr) (>= ?$B#9(B chr) skk-use-auto-kutouten) (nth 1 output)) (t (nth 2 output))))) (defun skk-abbrev-insert (arg) (interactive "*p") (self-insert-command arg)) (defun skk-abbrev-period (arg) "SKK abbrev $B%b!<%I$G8+=P$78l$NJd40Cf$G$"$l$P!"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" (interactive "*P") (skk-with-point-move (if (eq last-command 'skk-comp-do) (progn (setq this-command 'skk-comp-do) (skk-comp-do nil)) (skk-emulate-original-map arg)))) (defun skk-abbrev-comma (arg) "SKK abbrev $B%b!<%I$G8+=P$78l$NJd40Cf$G$"$l$P!"D>A0$N8uJd$rI=<($9$k!#(B $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" (interactive "*P") (skk-with-point-move (if (eq last-command 'skk-comp-do) (progn (setq this-command 'skk-comp-do) (skk-comp-previous)) (skk-emulate-original-map arg)))) (defun skk-jisx0208-latin-insert (arg) "$BA41QJ8;z$r%+%l%s%H%P%C%U%!$KA^F~$9$k!#(B `skk-jisx0208-latin-vector' $B$r%F!<%V%k$H$7$F!":G8e$KF~NO$5$l$?%-!<$KBP1~$9$k(B $BJ8;z$rA^F~$9$k!#(B `skk-auto-insert-paren' $B$NCM$,(B non-nil $B$N>l9g$G!"(B`skk-auto-paren-string-alist' $B$KBP1~$9$kJ8;zNs$,$"$k$H$-$O!"$=$NBP1~$9$kJ8;zNs(B ($B$+$C$3N`(B) $B$r<+F0E*$KA^F~$9(B $B$k!#(B" (interactive "p") (barf-if-buffer-read-only) (skk-with-point-move (let* ((str (aref skk-jisx0208-latin-vector (skk-last-command-char))) (arg2 arg) (pair-str (if skk-auto-insert-paren (cdr (assoc str skk-auto-paren-string-alist)) nil)) (pair-str-inserted 0) region-str) (if (not str) (skk-emulate-original-map arg) (skk-cancel-undo-boundary) (when (and (skk-region-active-p) skk-use-auto-enclose-pair-of-region pair-str) (setq region-str (buffer-substring (region-beginning) (region-end))) (delete-region (region-beginning) (region-end))) (while (> arg 0) (skk-insert-str str) (setq arg (1- arg))) (when pair-str (when region-str (insert region-str)) (while (> arg2 0) (unless (string= pair-str (char-to-string (following-char))) (setq pair-str-inserted (1+ pair-str-inserted)) (skk-insert-str pair-str)) (setq arg2 (1- arg2))) (unless (zerop pair-str-inserted) (backward-char pair-str-inserted)) (when region-str (skip-chars-forward pair-str))))))) (defun skk-delete-backward-char (arg) "$B"'%b!<%I$G(B `skk-delete-implies-kakutei' $B$J$iD>A0$NJ8;z$r>C$7$F3NDj$9$k!#(B $B"'%b!<%I$G(B `skk-delete-implies-kakutei' $B$,(B nil $B$@$C$?$iA08uJd$rI=<($9$k!#(B $B"&%b!<%I$G(B`$B"&(B'$B$h$j$bA0$N%]%$%s%H$GC$9!#(B" (interactive "*P") (skk-with-point-move (let ((count (prefix-numeric-value arg))) (cond ((eq skk-henkan-mode 'active) (if (and (not skk-delete-implies-kakutei) (= (+ skk-henkan-end-point (length skk-henkan-okurigana)) (point))) (skk-previous-candidate) ;; overwrite-mode $B$G!"%]%$%s%H$,A43QJ8;z$K0O$^$l$F$$$k$H(B ;; $B$-$K(B delete-backward-char $B$r;H$&$H!"A43QJ8;z$O>C$9$,H>(B ;; $B3QJ8;zJ,$7$+(B backward $BJ}8~$K%]%$%s%H$,La$i$J$$(B (Emacs ;; 19.31 $B$K$F3NG'(B)$B!#JQ49Cf$N8uJd$KBP$7$F$O(B ;; delete-backward-char $B$GI,$:A43QJ8;z(B 1 $BJ8;zJ,(B backward ;; $BJ}8~$KLa$C$?J}$,NI$$!#(B (if overwrite-mode (progn (backward-char count) (delete-char count arg)) (skk-emulate-original-map arg)) ;; XXX assume skk-prefix has no multibyte chars. (if (> (length skk-prefix) count) (setq skk-prefix (substring skk-prefix 0 (- (length skk-prefix) count))) (setq skk-prefix "")) (when (>= skk-henkan-end-point (point)) (if (eq skk-delete-implies-kakutei 'dont-update) (let ((skk-update-jisyo-function #'ignore)) (skk-kakutei)) (skk-kakutei))))) ((and skk-henkan-mode (>= skk-henkan-start-point (point)) (not (skk-get-prefix skk-current-rule-tree))) (skk-set-henkan-count 0) (skk-kakutei)) ;; $BF~NOCf$N8+=P$78l$KBP$7$F$O(B delete-backward-char $B$G(B ;; $BI,$:A43QJ8;z(B 1$BJ8;zJ,(B backward $BJ}8~$KLa$C$?J}$,NI$$!#(B ((and skk-henkan-mode overwrite-mode) (backward-char count) (delete-char count arg)) (t (skk-delete-okuri-mark) (if (skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean) (skk-set-marker skk-kana-start-point nil) (skk-emulate-original-map arg))))))) ;;; henkan routines (defun skk-henkan (&optional prog-list-number) "$B%+%J$r4A;zJQ49$9$k%a%$%s%k!<%A%s!#(B" (let (mark prototype new-word pair kakutei-henkan) (if (string= skk-henkan-key "") (skk-kakutei) ;; we use mark to go back to the correct position after henkan (unless (eobp) (setq mark (skk-save-point (forward-char 1) (point-marker)))) (unless (eq skk-henkan-mode 'active) (skk-change-marker) (setq skk-current-search-prog-list (cond ((and (integerp prog-list-number) (<= 0 prog-list-number) (<= prog-list-number 9)) (let ((list (symbol-value (intern (format "skk-search-prog-list-%d" prog-list-number))))) (or list skk-search-prog-list))) (t skk-search-prog-list)))) ;; skk-henkan-1 $B$NCf$+$i%3!<%k$5$l$k(B skk-henkan-show-candidates ;; $B$+$i(B throw $B$5$l$k!#$3$3$G%-%c%C%A$7$?>l9g$O!"(B?x $B$,%9%H%j!<%`$K(B ;; $BLa$5$l$F$$$k$N$G!"$3$N4X?t$r=P$F!"(Bskk-previous-candidate $B$X$f$/!#(B (catch 'unread (cond ((setq prototype (skk-henkan-1)) (setq new-word prototype)) ((setq prototype (skk-henkan-in-minibuff)) (setq new-word (skk-quote-semicolon prototype)))) (setq kakutei-henkan skk-kakutei-flag) (when new-word (setq pair (skk-insert-new-word new-word)))) (skk-delete-overlay skk-inline-overlays) ;; (if mark (progn (goto-char mark) ;; $B;2>H$5$l$F$$$J$$%^!<%+!<$O!"(BGarbage Collection $B$,%3!<%k$5$l$?$H(B ;; $B$-$K2s<}$5$l$k$,!"$=$l$^$G$N4V!"%F%-%9%H$N$I$3$+$r;X$7$F$$$k$H!"(B ;; $B%F%-%9%H$N%"%C%W%G!<%H$N:]$K$=$N%^!<%+!e$N$H$-!#(B (setq new-word (skk-get-current-candidate)) (unless new-word ;; $B?7$7$$8uJd$r8+$D$1$k$+!"(Bskk-current-search-prog-list $B$,6u$K$J(B ;; $B$k$^$G(B skk-search $B$rO"B3$7$F%3!<%k$9$k!#(B (while (and skk-current-search-prog-list (not new-word)) (setq skk-henkan-list (skk-nunion skk-henkan-list (skk-search))) (skk-henkan-list-filter) (setq new-word (skk-get-current-candidate)))) (when (and new-word (> (skk-henkan-count) 3)) ;; show candidates in minibuffer (setq new-word (skk-henkan-show-candidates))))) new-word)) (defun skk-get-current-candidate (&optional noconv) (let ((candidate (skk-get-current-candidate-1))) (cond ((not (and (skk-numeric-p) (consp candidate))) candidate) (noconv (car candidate)) (t (cdr candidate))))) (defun skk-henkan-list-filter () (when (skk-numeric-p) (skk-num-uniq) (skk-num-multiple-convert)) (when (and (featurep 'jisx0213) ;Mule-UCS skk-jisx0213-prohibit) (skk-jisx0213-henkan-list-filter))) (defun skk-multiple-line-message-clear () (skk-multiple-line-message nil) (remove-hook 'pre-command-hook 'skk-multiple-line-message-clear)) (defun skk-multiple-line-message (fmt &rest args) (if (featurep 'emacs) (apply #'message fmt args) ;; XEmacs (save-selected-window (select-window (minibuffer-window)) (let* ((str (if fmt (apply #'format fmt args) "")) (lines 1) (last-minibuffer-height (window-height)) (tmp str)) ;; (setq lines (count ?\n tmp)) (while (string-match "\n" tmp) (setq lines (1+ lines) tmp (substring tmp (match-end 0)))) (condition-case nil (progn (enlarge-window (- lines last-minibuffer-height)) (apply #'message fmt args) ;; We also need to clear `current-message' in case ;; running under XEmacs so that the height of ;; `minibuffer-window' is left unchanged. (unless (equal str "") ;; (make-local-hook 'pre-command-hook) ;; (add-hook 'pre-command-hook ;; (function skk-multiple-line-message-clear)))) (add-hook 'pre-command-hook #'skk-multiple-line-message-clear))) (quit (shrink-window (- (window-height) last-minibuffer-height)))) str)))) (defun skk-henkan-show-candidates () "$BJQ49$7$?8uJd72$r%(%3!<%(%j%"$KI=<($9$k!#(B" (skk-save-point (let* ((max-candidates (* 7 skk-henkan-show-candidates-rows)) (candidate-keys ; $BI=<(MQ$N%-!<%j%9%H(B (mapcar (lambda (c) (when (or (memq c '(?\C-g skk-start-henkan-char)) (skk-key-binding-member (skk-char-to-unibyte-string c) '(skk-previous-candidate))) (skk-error "`%s' $B$KL58z$J%-!<$,;XDj$5$l$F$$$^$9(B" "Illegal key in `%s'" "skk-henkan-show-candidates-keys")) (skk-char-to-unibyte-string (upcase c))) skk-henkan-show-candidates-keys)) key-num-alist ; $B8uJdA*BrMQ$NO"A[%j%9%H(B (key-num-alist1 ; key-num-alist $B$rAH$_N)$F$k$?$a$N:n6HMQO"A[%j%9%H!#(B ;; $B5U$5$^$K$7$F$*$$$F!"I=<($9$k8uJd$N?t$,>/$J$+$C$?$i@h(B ;; $BF,$+$i4v$D$+:o$k!#(B (let (alist) (dotimes (i max-candidates alist) (push (cons (nth i skk-henkan-show-candidates-keys) i) alist)))) (loop 0) inhibit-quit (echo-keystrokes 0) henkan-list new-one reverse n) ;; Emacs 19.28 $B$@$H(B Overlay $B$r>C$7$F$*$+$J$$$H!" ;; skk-henkan-in-minibuff -> skk-henkan ;; -> skk-henkan-show-candidates $B$N=g$G!":F$S$3$N4X?t$,8F$P$l(B ;; $B$?$H$-$O!"$3$3$G(B henkan-list $B$H(B loop $B$r7W;;$9$k!#(B (setq henkan-list (nthcdr (skk-henkan-count) skk-henkan-list) loop (car (skk-exit-show-candidates))) (skk-set-exit-show-candidates nil)) (t ;; skk-henkan-show-candidates-keys $B$N:G=*$N%-!<$KBP1~$9$k8uJd(B ;; $B$,=P$F$/$k$^$G%5!<%A$rB3$1$k!#(B (while (and skk-current-search-prog-list (null (nthcdr (+ 4 max-candidates (* loop max-candidates)) skk-henkan-list))) ;; $B?75,$K8uJd$,F@$i$l$?;~$N$_(B skk-henkan-list-filter $B$r8F$V!#(B ;; skk-look $B$d(B skk-server-completion-search $B$rMxMQ$7$?M9JXHV9f$+$i$N(B ;; $BJQ49;~$J$I$N$h$&$K!"?tCM$r4^$_3n$DBgNL$N8uJd$,$"$k;~$NB.EY2~A1!#(B (let ((cands (skk-search))) (when cands (setq skk-henkan-list (skk-nunion skk-henkan-list cands)) (skk-henkan-list-filter)))) (setq henkan-list (nthcdr (+ 4 (* loop max-candidates)) skk-henkan-list)))) (save-window-excursion (setq n (skk-henkan-show-candidate-subr candidate-keys henkan-list)) (when (> n 0) (condition-case nil (let* ((event (next-command-event)) (char (event-to-character event)) (key (skk-event-key event)) num) ;; clear out candidates in echo area (skk-multiple-line-message "") (if (and (null char) (null key)) (skk-unread-event event) (setq key-num-alist (nthcdr (- max-candidates n) key-num-alist1)) (when (and key-num-alist char) (setq num (cdr (or (assq char key-num-alist) (assq (if (skk-lower-case-p char) (upcase char) (downcase char)) key-num-alist))))) (cond (num (skk-set-henkan-count (+ 4 (* loop max-candidates) num)) (setq new-one (nth num henkan-list) skk-kakutei-flag t loop nil)) ((or (eq char skk-start-henkan-char) ; SPC (skk-key-binding-member key '(skk-nicola-self-insert-rshift) skk-j-mode-map)) ;; (if (or skk-current-search-prog-list (nthcdr max-candidates henkan-list)) (setq loop (1+ loop)) ;; $B8uJd$,?T$-$?!#$3$N4X?t$+$iH4$1$k!#(B (let ((last-showed-index (+ 4 (* loop max-candidates)))) (skk-set-exit-show-candidates ;; cdr $BIt$O!"<-=qEPO?$KF~$kA0$K:G8e$KI=<($7(B ;; $B$?8uJd72$NCf$G:G=i$N8uJd$r;X$9%$%s%G%/%9(B (cons loop last-showed-index)) ;; $B<-=qEPO?$KF~$k!#(Bskk-henkan-count $B$O(B ;; skk-henkan-list $B$N:G8e$N8uJd$NuBV$KLa$9!#(B (skk-escape-from-show-candidates 4)) (t ;; $B0l$DA0$N8uJd72$r%(%3!<%(%j%"$KI=<($9$k!#(B (setq reverse t)))) ((eq char skk-annotation-toggle-display-char) (skk-annotation-toggle-display-p)) ((skk-key-binding-member key skk-quit-commands skk-j-mode-map) ;; (signal 'quit nil)) (t (skk-message "`%s' $B$OL58z$J%-!<$G$9!*(B" "`%s' is not valid here!" (or (key-description key) (key-description char))) (sit-for 1))))) (quit ;; skk-previous-candidate $B$X(B (skk-escape-from-show-candidates 0)))))) ; end of while loop ;; (or (cdr-safe new-one) new-one)))) (defun skk-henkan-show-candidate-subr (keys candidates) "$B8uJd72$rI=<($9$k4X?t!#(B KEYS $B$H(B CANDIDATES $B$rAH$_9g$o$;$F#7$NG\?t8D$N8uJd72(B ($B8uJd?t$,(B $BK~$?$J$+$C$?$i$=$3$GBG$A@Z$k(B) $B$NJ8;zNs$r:n$j!"%$%s%i%$%s!"%D!<%k%F%#%C%W!"(B $B%(%3!<%(%j%"Kt$O8uJd%P%C%U%!$KI=<($9$k!#(B" (let* ((max-candidates (* 7 skk-henkan-show-candidates-rows)) (workinglst (skk-henkan-candidate-list candidates max-candidates)) str tooltip-str message-log-max) (when workinglst (dotimes (i (length workinglst)) (let ((cand (if (consp (nth i workinglst)) (cdr (nth i workinglst)) (nth i workinglst))) (key (concat (propertize (nth i keys) 'face 'skk-henkan-show-candidates-keys-face) ":"))) (when (and (zerop (% i 7)) ; $B3FNs$N:G=i$N8uJd(B (not (zerop i))) (setq str (concat str "\n"))) (setq str (concat str (if (zerop (% i 7)) "" " ") key cand) tooltip-str (concat tooltip-str key cand "\n")))) (setq str (concat str (propertize (format " [$B;D$j(B %d%s]" (- (length candidates) (length workinglst)) (make-string (length skk-current-search-prog-list) ?+)) 'face 'skk-henkan-rest-indicator-face)) tooltip-str (concat tooltip-str (format "[$B;D$j(B %d%s]" (- (length candidates) (length workinglst)) (make-string (length skk-current-search-prog-list) ?+)))) (cond ;; (1) $B8=:_$N%P%C%U%!$NCf$KI=<($9$k(B ($B%$%s%i%$%sI=<((B) ((and (featurep 'emacs) skk-show-inline (not skk-isearch-switch) (not (skk-in-minibuffer-p))) (skk-inline-show str skk-inline-show-face tooltip-str max-candidates)) ;; (2) tooptip $B$GI=<($9$k(B ((and window-system skk-show-tooltip (not (eq (symbol-function 'skk-tooltip-show-at-point) 'ignore))) (when (and (not (eval-when-compile (featurep 'xemacs))) skk-henkan-rest-indicator) (let* ((body (substring tooltip-str 0 (string-match "\\[$B;D$j(B" tooltip-str))) (rest (substring tooltip-str (- (length body) (length tooltip-str))))) (setq tooltip-str (concat body (make-string (- (car (skk-tooltip-max-tooltip-size)) (string-width rest) 3) ? ) rest)))) (funcall skk-tooltip-function tooltip-str)) ;; (3) $B%(%3!<%(%j%"$r;H$&(B ((and (not skk-show-candidates-always-pop-to-buffer) (> (frame-width) (skk-max-string-width (split-string str "\n")))) (when skk-henkan-rest-indicator (let* ((body (substring str 0 (string-match " \\[$B;D$j(B" str))) (rest (substring str (- (length body) (length str))))) (setq str (concat body (make-string (- (frame-width) (string-width str) 1) ? ) rest)))) (skk-multiple-line-message "%s" str)) ;; (4) $B0l;~%P%C%U%!$r(B pop up $B$7$F;H$&(B (t (skk-henkan-show-candidates-buffer str keys)))) ;; $BI=<($9$k8uJd?t$rJV$9!#(B (length workinglst))) (defun skk-check-treat-candidate-appearance-function () (when (or (eq skk-annotation-lookup-lookup 'always) (eq skk-annotation-lookup-DictionaryServices 'always)) ;; Apple OS X $B$N<-=q%5!<%S%9$r8uJd0lMw$G$b;H$&>l9g$O!"(B ;; `skk-treat-candidate-appearance-function' $B$rD4@a$9$kI,MW$"$j(B (setq skk-treat-candidate-appearance-function 'skk-treat-candidate-sample2)) ;; (functionp skk-treat-candidate-appearance-function)) (defun skk-treat-candidate-appearance (candidate listing-p) (funcall skk-treat-candidate-appearance-function candidate listing-p)) (defun skk-henkan-candidate-list (candidates max) ;; CANDIDATES $B$N@hF,$N(B max $B8D$N$_$N%j%9%H$rJV$9!#(B (let ((count 0) e sep note v) (while (> max count) (setq e (nth count candidates)) (setq sep nil note nil) (when (and (skk-numeric-p) (consp e)) (setq e (cdr e))) (cond (e ;; $B$^$@8uJd$,;D$C$F$$$k>l9g(B (when (skk-check-treat-candidate-appearance-function) ;; skk-treat-candidate-appearance-function $B$K$h$C$F%f!<%6$O(B ;; $BG$0U$K8uJdJ8;zNs$HCm~$9$k$3$H$,$G$-$k!#(B ;; $B%f!<%6$,JV$9CM$O(B cons cell $B$^$?$OJ8;zNs$H$J$k!#(B (let ((value (save-match-data ;; $B8uJd0lMwI=<($N:]$O(B ;; skk-treat-candidate-appearance-function $B$N(B ;; $BBh(B 2 $B0z?t$r(B non-nil $B$H$9$k!#(B (skk-treat-candidate-appearance e 'list)))) (cond ((consp value) ;; $BJV$jCM$,(B cons cell $B$@$C$?>l9g(B (setq e (car value)) (cond ((consp (cdr value)) ;; ($B8uJd(B . ($B%;%Q%l!<%?(B . $BCml9g(B (setq e value note nil))))) ;; $B%f!<%6$,Cml9g$O$b$&Cm$`Cml9g(B (setq count max)))) ;; $B8uJd$r=P8==g$K%=!<%H$7D>$7$FJV$9!#(B (nreverse v))) (defun skk-henkan-show-candidates-buffer (str keys) ;; $B%(%3!<%(%j%"$NBe$o$j$K0l;~%P%C%U%!$r(B pop up $B$7$F8uJd0lMw$rI=<($9$k!#(B (let ((buff (get-buffer-create "*$B8uJd(B*")) (case-fold-search t)) (with-current-buffer buff (erase-buffer) (insert str) (goto-char (point-min)) ;; 1 $B8uJd$K(B 1 $B9T$r3d$jEv$F$k!#(B (forward-char 2) (while (re-search-forward (concat " " (mapconcat 'identity keys ":\\| ") ":\\|" " \\[$B;D$j(B [0-9]+\\(\\++\\)?\\]") nil t) (goto-char (match-beginning 0)) (delete-char 2) (insert "\n")) (goto-char (point-min)) ;; $B1&C<$KM>Gr$r@_$1$k(B (while (and (move-to-column (- (frame-width) 2)) (not (eobp)) (>= (frame-width) (current-column))) (unless (eolp) ;; $B6XB'=hM}(B (unless (member (char-to-string (char-before)) skk-auto-start-henkan-keyword-list) (backward-char 1)) (insert "\n ") (forward-line -1)) (forward-line 1)) ;; [$B;D$j(B 99++] $B$r1&C<$X(B (when skk-henkan-rest-indicator (let ((col (progn (goto-char (point-max)) (skk-screen-column)))) (beginning-of-line) (insert-char 32 (- (frame-width) col 1)))) ;;$B8uJd%P%C%U%!$NGX7J?'(B (when skk-candidate-buffer-background-color (unless skk-candidate-buffer-background-color-odd (setq skk-candidate-buffer-background-color-odd skk-candidate-buffer-background-color)) (goto-char (point-min)) (let ((background-color skk-candidate-buffer-background-color)) (while (null (eobp)) (let* ((eol (save-excursion (end-of-line) (unless (eobp) (forward-char)) (point))) (bol (progn (beginning-of-line) (point))) (ovl (make-overlay bol eol))) (when (or (string-match "[ASDFJKL]:" (buffer-substring bol (+ 2 bol))) (string-match "\\[$B;D$j(B [0-9]+\\(\\++\\)?\\]" (buffer-substring bol eol))) (setq background-color (if (string= background-color skk-candidate-buffer-background-color) skk-candidate-buffer-background-color-odd skk-candidate-buffer-background-color))) (overlay-put ovl 'face `(:background ,background-color))) (forward-line)))) (goto-char (point-min))) (let ((minibuf-p (skk-in-minibuffer-p)) (window (get-buffer-window (skk-minibuffer-origin)))) (when minibuf-p (if window (select-window window) (other-window 1))) (unless (eq (next-window) (selected-window)) ;; *$B8uJd(B* $B%P%C%U%!$r8+0W$/$9$k!#(B ;; `save-window-excursion' $B$NCf$J$N$GBg>fIW$J$O$:!#(B (delete-other-windows)) (save-selected-window (pop-to-buffer buff) (let ((lines (count-lines (point-min) (point-max)))) ;; window-height() includes mode-line (when (> lines (1- (window-height))) (enlarge-window (- lines (1- (window-height)))))) (unless (pos-visible-in-window-p) (recenter '(1))) (skk-fit-window) (apply 'set-window-fringes (if skk-candidate-buffer-display-fringes skk-candidate-buffer-fringe-width '(nil 0 0)))) (when minibuf-p (select-window (minibuffer-window)))))) (defun skk-henkan-in-minibuff () "$B<-=qEPO?%b!<%I$KF~$j!"EPO?$7$?C18l$NJ8;zNs$rJV$9!#(B" (unless (numberp skk-henkan-in-minibuff-nest-level) (setq skk-henkan-in-minibuff-nest-level (minibuffer-depth))) (when (and window-system skk-show-tooltip) (skk-tooltip-hide)) (when skk-show-inline (skk-inline-show "$B"-<-=qEPO?Cf"-(B" 'skk-jisyo-registration-badge-face)) (save-match-data (let ((enable-recursive-minibuffers t) (depth (- (1+ (minibuffer-depth)) skk-henkan-in-minibuff-nest-level)) ;; XEmacs $B$G$Ol9g!#:G8e$K%(%3!<%(%j%"$KI=<($7$?8uJd72$r:FI=(B ;; $B<($9$k!#(B (progn (skk-set-henkan-count (cdr (skk-exit-show-candidates))) (skk-henkan)) ;; skk-henkan-show-candidates $B$KF~$kA0$K8uJd$,?T$-$?>l9g(B (skk-set-henkan-count (1- (skk-henkan-count))) (if (= (skk-henkan-count) -1) ;; $BAw$j$"$j$NJQ49$G<-=qEPO?$KF~$j!"6uJ8;z$rEPO?$7$?8e!"$=$N(B ;; $B$^$^:FEYAw$j$J$7$H$7$FJQ49$7$?>l9g$O(B ;; skk-henkan-okurigana, skk-okuri-char $B$NCM$r(B nil $B$K$7$J$1(B ;; $B$l$P!"$=$l$>$l$NCM$K8E$$Aw$j2>L>$,F~$C$?$^$^$G8!:w$K<:GT(B ;; $B$9$k!#(B (progn (setq skk-henkan-okurigana nil skk-okurigana nil skk-okuri-char nil) (skk-change-marker-to-white)) ;; $B<-=qEPO?$KF~$kD>A0$N8uJd$KCmH(B new-one)))) (defun skk-compute-henkan-key2 () ;; skk-henkan-okurigana $B$,(B non-nil $B$J$i(B skk-henkan-key $B$+$i!"$+$D$F(B ;; skk-henkan-key2 $B$H8F$P$l$F$$$?$b$N$r:n$k!#(B ;; skk-henkan-key2 $B$H$O!"!V4A;zItJ,$NFI$_(B + "*" + $BAw$j2>L>!W$N7A<0$NJ8;zNs$r(B ;; $B8@$&!#(B (when skk-henkan-okurigana (save-match-data (string-match "[a-z]+$" skk-henkan-key) (concat (substring skk-henkan-key 0 (match-beginning 0)) "*" skk-henkan-okurigana)))) (defun skk-remove-redundant-okurigana (word) "$B<-=q$KEPO?$5$l$k8uJd$N;}$DM>7W$JAw$j2>L>$rL>$r>C$7$F$+$i(B [RET] $B$r2!$5$J$1$l$P@5$7$/EPO?(B $B$G$-$J$$!#(B $B$=$3$G!"%f!<%6$,4V0c$($FAw$j2>L>$r>C$7K:$l$F$$$J$$$+$I$&$+!"(B SKK $B$NB&$G%A%'%C%/$G$-$kHO0O$K$D$$$F$O%f!<%6$N3NG'$rl9g$N$_M-8z!#(B auto $B$K@_Dj$9$k$H%f!<%6$K3NG'$7$J$$!#(B $BJQ49$,9T$o$l$?%P%C%U%!$G$$Aw$j2>L>$r-4}4}IhMQ(B")) ;; skk-henkan-show-candidates-buffer $B$+$i$R$C$Q$C$F$-$?%3!<%I(B (let ((minibuf-p (skk-in-minibuffer-p)) (window (get-buffer-window (skk-minibuffer-origin)))) (when minibuf-p (if window (select-window window) (other-window 1))) (unless (eq (next-window) (selected-window)) (delete-other-windows)) (save-selected-window (pop-to-buffer buff) (skk-fit-window) (unless (pos-visible-in-window-p) (recenter '(1)))) (when minibuf-p (select-window (minibuffer-window))))))) (defun skk-previous-candidate (&optional arg) "$B"'%b!<%I$G$"$l$P!"0l$DA0$N8uJd$rI=<($9$k!#(B $B"'%b!<%I0J30$G$O%+%l%s%H%P%C%U%!$K%?%$%W$7$?J8;z$rA^F~$9$k!#(B $B3NDj<-=q$K$h$k3NDj$ND>8e$K8F$V$H3NDj$r%"%s%I%%$7!"8+=P$7$KBP$9$kC$7$F$*$+$J$$$H!"C$7!"$=$N>l=j$XJQ497k2L$NJ8;zNs$rA^F~$9$k!#(B" (save-match-data (let (retval note face) (while (and (setq retval (skk-treat-new-word (or retval word))) (stringp retval)) ;; nextword-or-retval $B$KJ8;zNs$,BeF~$5$l$?>l9g(B (`skk-ignore-dic-word' ;; $B$K$h$C$FA0$N8uJd$,%9%-%C%W$5$l$?>l9g(B) $B$O$=$NJ8;zNs$r?7$7$$8uJd$H$7$F(B ;; $B=hM}$r7+$jJV$9!#J8;zNs0J30$,BeF~$5$l$?$i%k!<%W$r=*N;$9$k!#(B ()) (when (consp retval) (setq word (car retval) note (cdr retval))) (unless (eq retval 'none) ;; $BA^F~$9$Y$-8uJd$,$"$k!#(B (when skk-use-face (skk-henkan-face-off)) (delete-region skk-henkan-start-point skk-henkan-end-point) (goto-char skk-henkan-start-point) ;; word $B$rA^F~$9$kA0$K$=$N(B face $BB0@-$r=|5n$9$k!#$?$@$7!$=|5n$9$kA0$K(B ;; face $BB0@-$rJQ?t$KB`Hr$9$k!#$3$N(B face $BB0@-$Ol9g!#(B (skk-kakutei)) (cons word note))))) (defun skk-treat-new-word (word) "`skk-insert-new-word' $B$N%5%V%k!<%A%s!#A^F~$9$Y$-C18l$rAu>~$9$k!#(B $B%k!<%WFb$G$h$P$l$k!#=hM}Cf$K(B `skk-ignore-dic-word' $B$,8F$P$l$?>l9g$O$=$3$+$i(B catch $B$9$k!#(Bcatch $B$7$?CM$,J8;zNs$J$i$P!"$=$l$rJV$9(B (word $B$r$=$l$KCV$-49$($F(B $B:FEY8F$S=P$5$l$k(B)$B!#(B catch $B$7$J$+$C$?>l9g$OA^F~$9$Y$-J8;zNs$,F@$i$l$k!#$3$N>l9g(B $B$OCml9g!"(Bnext-word $B$KJ8;zNs$,%;%C%H$5$l$F$$$k!#(B ;; $B$3$N>l9g(B word $B$r(B next-word $B$KCV$-49$($F=hM}$r$d$jD>$9!#(B ;; $B8uJd0lMw$GA*Br$5$l$?8uJd$rA^F~$9$k:]$O!"(B ;; skk-kakutei-flag $B$,(B t $B$K$J$C$F$$$k!#$3$N>l9g$OAu>~(B ;; $B$7$F$b$7$+$?$J$$!#(B (when (and (not skk-kakutei-flag) (skk-check-treat-candidate-appearance-function)) ;; skk-treat-candidate-appearance-function $B$K$h$C$F(B ;; $B%f!<%6$OG$0U$K8uJdJ8;zNs$HCm~(B ;; $B$9$k$3$H$,$G$-$k!#(B ;; $B%f!<%6$,JV$9CM$O(B cons cell $B$^$?$OJ8;zNs$H$J$k!#(B (save-match-data (let ((value (skk-treat-candidate-appearance word nil))) (if (consp value) ;; $BJV$jCM$,(B cons cell $B$@$C$?>l9g(B (setq word (car value) note (cond ((consp (cdr value)) ;; ($B8uJd(B . ($B%;%Q%l!<%?(B . $BCml9g(B (setq word value))))) ;; $B%f!<%6$N0U?^$K$h$C$FCml9g$O(BSKK $B$NJ}$G$OBP=h$7$J$$!#(B (when (and (not (stringp note)) (string-match ";" word)) (setq note (substring word (match-end 0)) word (substring word 0 (match-beginning 0)))) ;; word $B$NJ}$,(B S $B<0$NJ8;zNs$@$C$?$i!"$=$l$rI>2A$7$?(B ;; $BJ8;zNs$rJV$9!#(B ;; note $B$NJ}$b(B S $B<0$N>l9g$,$"$j$&$k$,!"$=$l$NI>2A$O(B ;; skk-annotation $B$,$d$C$F$/$l$k!#(B (setq word (skk-eval-string word)) (cons word note)))) (defun skk-treat-strip-note-from-word (word) "$BJQ498uJd$NJ8;zNs(B WORD $B$r!"8uJd$=$N$b$N$HCm (\"word\" . nil) \"word;\" --> (\"word\" . \"\") \"word;note\" --> (\"word\" . \"note\") " (save-match-data (let (cand note) (if (string-match ";" word) (setq cand (substring word 0 (match-beginning 0)) note (substring word (match-end 0))) (setq cand word)) (cons cand note)))) (defun skk-kakutei (&optional arg word) "$B8=:_I=<($5$l$F$$$k8l$G3NDj$7!"<-=q$r99?7$9$k!#(B $B%+%l%s%H%P%C%U%!$G(B SKK $B%b!<%I$K$J$C$F$$$J$+$C$?$i(B SKK $B%b!<%I$KF~$k!#(B $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$G3NDj$9$k!#(B" ;; 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 ;; $B$J$/$J$k!#(B (interactive "P") (let ((inhibit-quit t) converted kakutei-word) (when skk-henkan-mode ;'on or 'active (case skk-henkan-mode (active ;$B"'%b!<%I(B (setq kakutei-word ;; $B3NDj<-=q$N8l$G3NDj$7$?$H$-$O!"<-=q$K$=$N8l$r=q$-9~$`I,MW$b$J(B ;; $B$$$7!"99?7$9$kI,MW$b$J$$$H;W$C$F$$$?$,!"Jd40$r9T$&$H$-$O!"(B ;; $B8D?M<-=q$r;2>H$9$k(B ($B3NDj<-=q$O;2>H$7$J$$(B) $B$N$G!"B?>/;q8;$H;~(B ;; $B4V$rL5BL$K$7$F$b!"8D?M<-=q$K3NDj<-=q$N%(%s%H%j$r=q$-9~$s$G99(B ;; $B?7$b$7$F$*$/!#(B (or word (skk-get-current-candidate 'noconv))) (when (and kakutei-word (skk-update-jisyo-p kakutei-word)) (skk-update-jisyo kakutei-word) ;; $B@\Hx<-!&@\F,<-$K4X$9$k=hM}(B (cond ((not skk-learn-combined-word) ;; $B%f!<%6$,4uK>$7$J$$8B$j2?$N=hM}$b$7$J$$!#(B (setq skk-after-prefix nil)) ((and skk-after-prefix (not (string-match "^[^\000-\177]+>$" skk-henkan-key))) ;; $B$3$N%P%C%U%!$K$*$$$F!"@\F,<-$KB3$/F~NO$,?J9TCf!#(B (let* ((history (cdr skk-kakutei-history)) (list1 (car skk-kakutei-history)) ; ($B$j$h$&(B $BMxMQ(B) (list2 (catch 'list ; ($B$5$$(B> $B:F(B) (while history (if (eq (nth 2 list1) (nth 2 (car history))) ;; $BF1$8%P%C%U%!$@$C$?$i(B (throw 'list (car history)) (setq history (cdr history)))))) (list1-word (car (skk-treat-strip-note-from-word (nth 1 list1)))) (list2-word (car (skk-treat-strip-note-from-word (nth 1 list2)))) skk-henkan-key comb-word) (when (and (stringp list2-word) (string-match "^[^\000-\177]+>$" (car list2)) (skk-save-point (ignore-errors (goto-char (- skk-henkan-start-point (length list1-word))) (looking-at list2-word)))) (setq skk-henkan-key (concat (substring (car list2) 0 (1- (length (car list2)))) (car list1)) ; $B$5$$$j$h$&(B comb-word (concat list2-word list1-word)) ; $B:FMxMQ(B (skk-update-jisyo comb-word)) (setq skk-after-prefix nil))) ((and (stringp (caar skk-kakutei-history)) (string-match "^>[^\000-\177]+$" (caar skk-kakutei-history))) ;; $B:#2s$N3NDj$,@\Hx<-$@$C$?>l9g!"A02s$N3NDj$H:#2s$N@\Hx<-$r(B ;; $B9g$o$;$?8l$r<-=qEPO?$9$k!#(B (let* ((history (cdr skk-kakutei-history)) (list1 (car skk-kakutei-history)) ; (>$B$F$-(B $BE*(B) (list2 (catch 'list ; ($B$+$s$I$&(B $B46F0(B) (while history (if (eq (nth 2 list1) (nth 2 (car history))) ;; $BF1$8%P%C%U%!$@$C$?$i(B (throw 'list (car history)) (setq history (cdr history)))))) (list1-word (car (skk-treat-strip-note-from-word (nth 1 list1)))) (list2-word (car (skk-treat-strip-note-from-word (nth 1 list2)))) skk-henkan-key comb-word) (when (stringp list2-word) (setq skk-henkan-key (concat (car list2) (substring (car list1) 1)) ; $B$+$s$I$&$F$-(B comb-word (concat list2-word list1-word)) ; $B46F0E*(B (skk-update-jisyo comb-word))))) ;; (when (skk-numeric-p) (setq converted (skk-get-current-candidate)) (skk-num-update-jisyo kakutei-word converted)))) (t ;; $B"&%b!<%I$G3NDj$7$?>l9g!#JX59E*$K8=:_$N%]%$%s%H$^$G$r8+=P$78l$r07$$(B ;; $B$7$FMzNr$r99?7$9$k!#(B (when (and (> skk-kakutei-history-limit 0) (< skk-henkan-start-point (point)) (skk-save-point (goto-char skk-henkan-start-point) (eq (skk-what-char-type) 'hiragana))) (skk-update-kakutei-history (buffer-substring-no-properties skk-henkan-start-point (point)))))) (when (and window-system skk-show-tooltip) (skk-tooltip-hide)) (when skk-mode (skk-kakutei-cleanup-buffer) (when (and skk-undo-kakutei-word-only (consp buffer-undo-list)) ;; $B"&%b!<%I$K0\$C$F$+$i8=:_$^$G$N(B undo $B>pJs$+$i@hF,0J30$N(B ;; nil $B$r:o=|$9$k(B (setq buffer-undo-list (cons (car buffer-undo-list) (nconc (delq nil (cdr (butlast buffer-undo-list (length skk-last-buffer-undo-list)))) skk-last-buffer-undo-list)))) ;; KAKUTEI-WORD $B$J$I$N>pJs$,I,MW$G$"$l$P!"(Bskk-last-henkan-data ;; $B$+$iF@$i$l$k!#I,MW$J%G!<%?$,$=$l$i$NJQ?t$K8BDj$5$l$J$$$N$G!"(B ;; $B0z?t$K$7$J$$!#(B (when skk-kakutei-end-function (funcall skk-kakutei-end-function)) (skk-kakutei-initialize (if (skk-numeric-p) (cons kakutei-word converted) kakutei-word)))) (skk-do-auto-fill) (when (and skk-undo-kakutei-return-previous-point (numberp skk-undo-kakutei-previous-point) (numberp skk-undo-kakutei-previous-length) (markerp skk-henkan-end-point) (markerp skk-henkan-start-point)) (goto-char (+ skk-undo-kakutei-previous-point (if (>= skk-undo-kakutei-previous-point (1- (+ skk-henkan-start-point skk-undo-kakutei-previous-length))) (- skk-henkan-end-point skk-henkan-start-point skk-undo-kakutei-previous-length) 0)))) (setq skk-undo-kakutei-previous-point nil skk-undo-kakutei-previous-length nil) (cond ((not skk-mode) (skk-mode 1)) (skk-undo-kakutei-prev-state (cond ((cdr (assq 'skk-latin-mode skk-undo-kakutei-prev-state)) (skk-latin-mode-on)) ((cdr (assq 'skk-jisx0208-latin-mode skk-undo-kakutei-prev-state)) (skk-jisx0208-latin-mode-on)) ;; skk-mode $B$,%*%U$N>uBV$KLa$=$&$H$9$k$H(B ;; `skk-mode-exit' $BFb$G:FEY(B `skk-kakutei' $B$r8F$V$?(B ;; $B$aL58B%k!<%W$K$J$C$F$7$^$&(B ;; ((not (cdr (assq 'skk-mode skk-undo-kakutei-prev-state))) ;; (skk-mode -1)) ((cdr (assq 'skk-j-mode skk-undo-kakutei-prev-state)) ;; M-x skk-undo-kakutei $B$G(B skk-abbrev-mode $B$KLa$C$?:]!"(B ;; $B3NDj8e$K(B skk-j-mode $B$KLa$k$?$a$K$O0J2<$,I,MW!#(B (skk-j-mode-on skk-katakana))) (setq skk-undo-kakutei-prev-state nil)) ((not (or skk-j-mode skk-jisx0201-mode)) (skk-j-mode-on skk-katakana)))) nil) (defun skk-update-jisyo-p (word) "WORD $B$,8D?M<-=q$KEPO?$5$l$k$Y$-$+H]$+$rH=Dj$9$k!#(B $BJQ?t(B `skk-search-excluding-word-pattern-function' $B$,4X?t$G$"$l$P!"(BWORD $B$r(B $B0z?t$K$7$F$=$N4X?t$r$l$N4X?t$rH$N$3$H!#(B" (save-match-data (not (run-hook-with-args-until-success 'skk-search-excluding-word-pattern-function word)))) (defun skk-kakutei-cleanup-buffer () "$B3NDjD>8e$N%P%C%U%!$r@07A$9$k!#(B" (when skk-okurigana ;; $B3NDjJQ49$N$H$-$K$3$3$K$/$k!#(B ;; $B:FJQ49$N:]$KAw$j2>L>4XO"%U%i%0$,(B clear $B$5$l$F$$$k$H$h$m$7$/$J$$$N$G(B ;; `skk-delete-okuri-mark' $B$N(B NOCLEAR $B$r%;%C%H$7$F8F$V!#(B (skk-delete-okuri-mark t)) (skk-delete-henkan-markers) (when (and (boundp 'self-insert-after-hook) self-insert-after-hook) (funcall self-insert-after-hook skk-henkan-start-point (point))) (when overwrite-mode (skk-del-char-with-pad (skk-ovwrt-len (buffer-substring-no-properties skk-henkan-start-point (point)))))) (defun skk-kakutei-initialize (&optional kakutei-word) "$B3NDj;~$KJQ?t$N=i4|2=$H%"%s%I%%$N$?$a$NJQ?t$NJ]B8$r9T$&!#(B" (when (and kakutei-word (or (consp kakutei-word) (not (string= kakutei-word "")))) (setq skk-kakutei-count (1+ skk-kakutei-count)) ;; skk-undo-kakutei $B$N$?$a$K:G8e$NJQ49$N%G!<%?$rJ]B8$9$k!#(B (skk-put-last-henkan-data (list (cons 'henkan-key skk-henkan-key) (cons 'okuri-char skk-okuri-char) (cons 'henkan-okurigana skk-henkan-okurigana) (cons 'henkan-list ;; $B3NDj$7$?8l$r@hF,$K$9$k!#(B (cons kakutei-word (delete kakutei-word skk-henkan-list))) (cons 'henkan-buffer (current-buffer)) (cons 'henkan-point (let ((hpoint (skk-get-last-henkan-datum 'henkan-point))) (if hpoint (set-marker hpoint (point)) (point-marker)))) (cons 'abbrev-mode skk-abbrev-mode) ;; (eq last-command 'skk-kakutei-henkan) $B$G%]!<%?%V%k$K3NG'$G$-(B ;; $B$k$N$G$"$($F$$$i$J$$$+!#(B ;; (cons 'kakutei-henkan (eq this-command 'skk-kakutei-henkan)) ;; $B>e5-0J30$N(B henkan data $B$r(B skk-last-henkan-data $B$K;D$7$?$+$C$?$i!"(B ;; skk-kakutei-end-function $B$rMxMQ$9$k!#(B ))) (skk-set-henkan-count -1) (skk-set-exit-show-candidates nil) (setq skk-abbrev-mode nil skk-henkan-in-minibuff-flag nil skk-henkan-key nil skk-henkan-list nil skk-henkan-okurigana nil skk-henkan-mode nil skk-kakutei-flag nil skk-kakutei-henkan-flag nil skk-undo-kakutei-flag nil skk-okuri-char nil skk-okuri-index-min -1 skk-okuri-index-max -1 ;; skk-prefix "" )) (defun skk-undo-kakutei () "$B0lHV:G8e$N3NDj$r%"%s%I%%$7!"8+=P$78l$KBP$9$k8uJd$rI=<($9$k!#(B $B:G8e$K3NDj$7$?$H$-$N8uJd$O%9%-%C%W$5$l$k!#(B $BB>$K8uJd$,$J$$$H$-$O!"%(%3!<%(%j%"$G$N<-=qEPO?$KF~$k!#(B" (interactive) (let (jmsg emsg) (cond ((eq last-command 'skk-undo-kakutei) (setq jmsg "$B3NDj%"%s%I%%$OO"B3;HMQ$G$-$^$;$s(B" emsg "Cannot undo kakutei repeatedly")) ((eq skk-henkan-mode 'active) (setq jmsg "$B"'%b!<%I$G$O3NDj%"%s%I%%$G$-$^$;$s(B" emsg "Cannot undo kakutei in $B"'(B mode")) ((or (not (skk-get-last-henkan-datum 'henkan-key)) (string= (skk-get-last-henkan-datum 'henkan-key) "") (null skk-henkan-end-point)) ;; skk-henkan-key may be nil or "". (setq jmsg "$B%"%s%I%%%G!<%?$,$"$j$^$;$s(B" emsg "Lost undo data"))) (if jmsg (skk-message jmsg emsg) (skk-with-point-move (condition-case nil (skk-undo-kakutei-subr) ;; skk-undo-kakutei $B$+$iESCf$GH4$1$?>l9g$O!"3F= (point-max) end) ;; $B:G8e$NJQ49ItJ,$N%F%-%9%H$r>C$9!#Aw$j2>L>$rGD0.$7$F$$$k$N$J$i(B ;; (skk-process-okuri-early $B$,(B non-nil $B$J$iAw$j2>L>$rGD0.$G$-$J$$(B)$B!"(B ;; $BAw$j2>L>$r4^$a$?ItJ,$^$G$r>C$9!#(B (delete-region skk-henkan-start-point end)) (when skk-undo-kakutei-word-only (setq skk-last-buffer-undo-list buffer-undo-list)) (goto-char skk-henkan-start-point) (insert-and-inherit "$B"'(B") (skk-set-marker skk-henkan-start-point (point)) (cond (skk-okuri-char ;; $BAw$j$"$j(B (insert-and-inherit (substring skk-henkan-key 0 (1- (length skk-henkan-key)))) (skk-set-marker skk-henkan-end-point (point)) (when skk-henkan-okurigana (insert-and-inherit skk-henkan-okurigana))) (t (insert-and-inherit skk-henkan-key) (skk-set-marker skk-henkan-end-point (point)))) (skk-message "$B3NDj%"%s%I%%!*(B" "Undo kakutei!") (skk-set-henkan-count 1) (skk-henkan))) (defun skk-set-henkan-point (&optional arg) "$BJQ49$r3+;O$9$k%]%$%s%H$r%^!<%/$7!"BP1~$9$k(B `skk-prefix' $B$+Jl2;$rF~NO$9$k!#(B" (let* ((last-char (skk-downcase (skk-last-command-char))) (normal (not (eq last-char (skk-last-command-char)))) (sokuon (if (string= skk-prefix (skk-char-to-unibyte-string last-char)) (/= last-char ?o) nil)) (henkan-active (eq skk-henkan-mode 'active))) (cond ((not (eq skk-henkan-mode 'on)) (if normal (skk-set-henkan-point-subr) (when skk-henkan-mode (skk-set-henkan-point-subr)) (if henkan-active (skk-emulate-original-map arg) ;; What's to be here? ;;(skk-insert arg) ))) ((not normal) ;; special char (insert-and-inherit last-char) (skk-set-marker skk-henkan-end-point (point)) (skk-set-henkan-count 0) (setq skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point (point)) skk-prefix "") (skk-henkan)) ;; prepare for the processing of okurigana if not skk-okurigana ;; and the preceding character is not a numeric character. ;; if the previous char is a special midashi char or a ;; numeric character, we assume that the user intended to type the ;; last-command-char in lower case. ((and (or ;; for KAnji, KanJIru (not (skk-get-prefix skk-current-rule-tree)) (if (/= skk-kana-start-point skk-henkan-start-point) (prog1 t (unless sokuon ; for TaSSi or TasSi (skk-kana-cleanup))) ; for NEko nil)) (not skk-okurigana) (or (= skk-henkan-start-point (point)) (let ((p (char-before))) (not (or ;; previous char is a special midashi char (memq p skk-special-midashi-char-list) ;; previous char is an ascii numeric char (and (<= ?0 p) (<= p ?9)) ;; previous char is a JIS X 0208 numeric char (and (skk-jisx0208-p p) (= (skk-char-octet p 0) 35) ;?# (<= 48 (skk-char-octet p 1)) ; ?0 (<= (skk-char-octet p 1) 57)) ; ?9 ))))) (cond (skk-process-okuri-early (skk-set-marker skk-henkan-end-point (point)) (let ((char (skk-char-to-unibyte-string last-char))) (setq skk-okuri-char (or (cdr (assoc char skk-okuri-char-alist)) char))) (cond (sokuon (setq skk-henkan-key (concat (buffer-substring-no-properties skk-henkan-start-point skk-kana-start-point) (if skk-katakana "$B%C(B" "$B$C(B") skk-henkan-okurigana)) (skk-erase-prefix) (insert-and-inherit (if skk-katakana "$B%C(B " "$B$C(B ")) (setq skk-prefix "") (skk-set-henkan-count 0) (skk-henkan) (delete-char -2)) (t (setq skk-henkan-key (concat (buffer-substring-no-properties skk-henkan-start-point (point)) skk-okuri-char)) (insert-and-inherit " ") (setq skk-prefix "") (skk-set-henkan-count 0) (skk-henkan) (delete-char -1))) ;; we set skk-kana-start-point here, since the marker may no ;; longer point at the correct position after skk-henkan. (skk-set-marker skk-kana-start-point (point))) ((/= skk-henkan-start-point (point)) (when sokuon (skk-erase-prefix 'clean) (insert-and-inherit (if skk-katakana "$B%C(B" "$B$C(B"))) (cond ((and (not sokuon) (skk-get-prefix skk-current-rule-tree) normal (eq (char-before) (string-to-char skk-prefix))) ;; SKK $B$N;EMM$K$J$$Nc30$N=hM}!#(B ;; $BNc$($P!$%f!<%6$,(B $B!VJb$/!W$rA^F~$7$?$/$F(B "AruKu" $B$HBG$D$Y$-(B ;; $B$H$3$m$r(B "ArukU" $B$HBG$C$F$7$^$C$?>l9g!#$3$N>l9g(B SKK $BB&$G(B ;; $B$I$&=hM}$9$k$Y$-$+!"7h$^$C$F$$$J$$!#$3$3$G$O2>$N=hCV$H$7$F!"(B ;; "AruKu" $B$HF1MM$NJQ49$r$9$k$h$&$K$7$F$*$/!#(B (setq skk-okuri-char nil skk-okurigana nil normal nil) (skk-set-last-command-char last-char) (let ((skk-dcomp-activate nil)) (skk-kana-input arg)) (skk-set-char-before-as-okurigana)) (t (when (and skk-dcomp-activate (skk-dcomp-marked-p)) ;; $B?7$7$$(B marker $B$r(B set $B$9$kA0$K(B skk-dcomp $B$N(B marker $B$r%/%j%"(B ;; $B$7$F$*$/!#(B (skk-dcomp-before-kakutei)) (skk-set-marker skk-okurigana-start-point (point)) (insert-and-inherit "*") (skk-set-marker skk-kana-start-point (point)) (setq skk-okuri-char (skk-char-to-unibyte-string last-char) skk-okurigana t))))))) (when normal (skk-set-last-command-char last-char) (skk-kana-input arg)))) ;;;###autoload (defun skk-henkan-on-message () (condition-case nil (when (and skk-verbose (not (or skk-isearch-switch (skk-in-minibuffer-p))) (eq skk-henkan-mode 'on) (< (marker-position skk-henkan-start-point) (point)) (sit-for skk-verbose-wait)) (skk-setup-verbose-messages) (message "%s" skk-henkan-on-message)) (quit (keyboard-quit))) nil) (defun skk-start-henkan (arg &optional prog-list-number) "$B"&%b!<%I$G$O4A;zJQ49$r3+;O$9$k!#"'%b!<%I$G$Ol9g$O!"8+=P$78l$rJ?2>L>$K(B $BJQ49$7$F$+$i4A;zJQ49$r3+;O$9$k!#(B $B8+=P$78l$rJQ49$;$:$K$=$N$^$^4A;zJQ49$r9T$$$?$1$l$P!"(B\\[universal-argument] SPC (arg $B$,(B 4 $B$K$J$k(B) $B$H%?%$%W$9$k!#(B" (interactive "*p") (unless prog-list-number (setq prog-list-number current-prefix-arg)) (skk-with-point-move (cancel-undo-boundary) (if (eq skk-henkan-mode 'active) ;$B"'%b!<%I(B (progn (skk-set-henkan-count (1+ (skk-henkan-count))) (skk-henkan)) ;; $B"&%b!<%I(B (save-match-data (let (pos) (skk-kana-cleanup 'force) (when (skk-get-prefix skk-current-rule-tree) ;; Never. `skk-erase-prefix' called by `skk-kana-cleanup' ;; initializes `skk-prefix'. (skk-error "$B%U%#%C%/%9$5$l$F$$$J$$(B skk-prefix $B$,$"$j$^$9(B" "Have unfixed skk-prefix")) (setq pos (point)) (when (< pos skk-henkan-start-point) (skk-error "$B%+!<%=%k$,JQ493+;OCOE@$h$jA0$K$"$j$^$9(B" "Henkan end point must be after henkan start point")) (setq skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point pos)) (when (and skk-katakana ;; C-u $B$r;H$C$F$$$J$$>l9g(B ;; prog-list-number $B$O(B skk-insert() $B$K$*$1$k(B current-prefix-arg (not (and prog-list-number (listp prog-list-number)))) (setq skk-henkan-key (skk-katakana-to-hiragana skk-henkan-key))) (when (and skk-okurigana (string-match "\\* *$" skk-henkan-key)) (skk-error "$B6u$NAw$j2>L>$G4A;z$rEPO?$7$h$&$H$7$F$$$^$9(B" "No okurigana!")) (if skk-allow-spaces-newlines-and-tabs ;; skk-henkan-key $B$NCf$N(B "[ \n\t]+" $B$r40A4$K (point) skk-henkan-start-point) (skk-error "$BJQ49%-!<$K2~9T$,4^$^$l$F$$$^$9(B" "Henkan key may not contain a new line character"))) ;; $B:G=i$N%9%Z!<%9$G(B skk-henkan-key $B$r%+%C%H$9$k$@$1!#(B (setq skk-henkan-key (substring skk-henkan-key 0 (string-match " " skk-henkan-key)))) (skk-set-marker skk-henkan-end-point pos) (skk-set-henkan-count 0) (setq skk-annotation-first-candidate t) (skk-henkan prog-list-number) (when (and skk-abbrev-mode (eq skk-henkan-mode 'active)) ;; $B$3$&$7$F$*$+$J$$$HJQ498e!"l9g$KJQ49$r3+;O$9$k!#(B $B4X?t(B `skk-insert-str' $B$N (point) skk-henkan-start-point) (let ((skk-prefix "")) (skk-start-henkan (prefix-numeric-value current-prefix-arg))))))) (defun skk-backward-and-set-henkan-point (arg) "$B%]%$%s%H$ND>A0$K$"$kJ8;zNs$N@hF,$KJQ493+;O%]%$%s%H$r<($9(B \"$B"&(B\" $B$rIU$1$k!#(B $B%+!<%=%k$ND>A0$K$"$kJ8;z(B ($B%9%Z!<%9J8;z!"%?%VJ8;z!"D92;$rI=$o$9!V!r7o(B $B$K%9%-%C%W$5$l$k(B) $B$r(B `skk-what-char-type' $B$K$FH=JL$7!"F1l9g$O!V$r!W$ND>A0$G!"%+%?%+%J$N>l9g$O!V%r!W$ND>A0$G;_$^$k!#(B \\[universal-argument] ARG $B$G(B ARG $B$rM?$($k$H!"$=$NJ8;zJ,$@$1La$C$FF1$8F0:n$r9T$&!#(B" (interactive "*P") (if (not skk-mode) (skk-emulate-original-map arg) (catch 'exit1 (skk-save-point ;; $B$H$j$"$($::G=i$N(B SPC, TAB, $BA43Q(B SPC $B$@$1%8%c%s%W$9$k!#(B (skip-chars-backward " \t$B!!(B") ;; $B0z?t$"$j!#(B (cond (arg (if (not skk-allow-spaces-newlines-and-tabs) (backward-char (prefix-numeric-value arg)) (setq arg (prefix-numeric-value arg)) (while (> arg 0) (skip-chars-backward " \t$B!!(B") (if (bolp) ;; $B9TF,$@$C$?$i0l9TA0$N9TKv$^$GLa$k$,!"(Barg $B$O8:$i$5$J$$!#(B (backward-char 1) (backward-char 1) (setq arg (1- arg)))))) (t ;; $B0z?t$J$7!#(B (let ((limit (if (not skk-allow-spaces-newlines-and-tabs) (skk-save-point (beginning-of-line) (point)) (point-min))) ;; $B!2!1!0!/!.!-!,!+!*!)!(!'!&!%!$!#(B (unknown-chars-regexp (if skk-allow-spaces-newlines-and-tabs "[ $B!!(B\n\t$B! (point) limit) ;; unknown-chars-regexp $B$G$OJ8;z (point) limit) (bolp)) ;; 1 $B9T>e$N9TKv$X!#(B (backward-char 1) ;; $B%]%$%s%H$,H=JL$G$-$J$$J8;ze$K$"$k4V$O(B ;; backward $BJ}8~$X%]%$%s%H$rLa$9!#(B ;;(while (and (> (point) limit) ;; (looking-at unknown-chars-regexp)) ;; (backward-char 1)) (when ;;(or (> 0 (skk-backward-and-set-henkan-point-1 type)) ;;(eq (skk-what-char-type) type)) (setq p (point))))))) (goto-char p) (skip-chars-forward unknown-chars-regexp)))) (skk-set-henkan-point-subr))))) (defun skk-backward-and-set-henkan-point-1 (type) "`skk-backward-and-set-henkan-point' $B$N%5%V%k!<%A%s!#(B TYPE ($BJ8;z$NC$9!#(B" (when (marker-position skk-henkan-start-point) (save-match-data (skk-save-point (goto-char (1- skk-henkan-start-point)) (cond ((eq skk-henkan-mode 'active) (when skk-use-face (skk-henkan-face-off)) (if (looking-at "$B"'(B") (delete-char 1) (unless nomesg (skk-message "$B"'$,$"$j$^$;$s(B" "It seems that you have deleted $B"'(B")))) ((looking-at "$B"&(B") (delete-char 1)) ((not nomesg) (skk-message "$B"&$,$"$j$^$;$s(B" "It seems that you have deleted $B"&(B"))))))) (defun skk-delete-okuri-mark (&optional noclear) "$BAw$j2>L>4XO"%U%i%0$r>C$9!#(B $BAw$j2>L>F~NOCf$K%+%l%s%H%P%C%U%!$KI=$o$l$k(B `*' $B%^!<%/$r>C$7!"(B NOCLEAR $B$,(B nil $B$G$"$l$PAw$j2>L>4XO"%U%i%0$r(B nil $B$K%;%C%H$9$k!#(B" (when (and skk-okurigana skk-okurigana-start-point (markerp skk-okurigana-start-point) (marker-position skk-okurigana-start-point)) (skk-save-point (when (eq ?* (char-after skk-okurigana-start-point)) (delete-region skk-okurigana-start-point (1+ skk-okurigana-start-point)))) (setq skk-okurigana nil) (unless noclear (setq skk-okuri-char nil skk-henkan-okurigana nil)))) ;; "[F7] $B%+%?%+%J(B" $B$N$h$&$J4JC1$JJQ495!G=$r3d$jEv$F$k$?$a$N%3%^%s%IDj5A(B (defun skk-start-henkan-prog-null-handler (arg) (condition-case nil (skk-emulate-original-map arg) (error (let ((key (this-command-keys))) (when (keymapp (let (skk-j-mode) (key-binding key))) (define-key skk-j-mode-map key nil) (skk-unread-event (if (vectorp key) (aref key 0) (string-to-char key)))))))) (defun skk-start-henkan-prog-i (i arg) (cond ((and skk-henkan-mode (symbol-value (intern (format "skk-search-prog-list-%d" i)))) (when (eq skk-henkan-mode 'active) (let ((skk-verbose-wait 0)) (skk-henkan-inactivate))) (skk-start-henkan arg i)) (t (skk-start-henkan-prog-null-handler arg)))) (eval-when-compile (defmacro skk-define-start-henkan-progs () (let (list) (dotimes (i 10) (setq list (nconc list `((defun ,(intern (format "skk-start-henkan-prog-%d" i)) (arg) (interactive "*p") (skk-start-henkan-prog-i ,i arg)))))) (cons 'progn list)))) (skk-define-start-henkan-progs) ;;; jisyo related functions (defun skk-purge-from-jisyo (&optional arg) "$B"'%b!<%I$G8=:_$N8uJd$r<-=q%P%C%U%!$+$i>C5n$9$k!#(B" (interactive "*P") (skk-with-point-move (cond ((not (eq skk-henkan-mode 'active)) (skk-emulate-original-map arg)) ((and (eq skk-henkan-mode 'active) (not (string= skk-henkan-key "")) (yes-or-no-p (format (if skk-japanese-message-and-error "%s /%s/%s$B$r<-=q$+$i:o=|$7$^$9!#NI$$$G$9$+!)(B " "Really purge \"%s /%s/%s\"? ") skk-henkan-key (skk-get-current-candidate) (cond ((not (and skk-henkan-okurigana (or skk-henkan-okuri-strictly skk-henkan-strict-okuri-precedence))) " ") (skk-japanese-message-and-error (format " ($BAw$j2>L>(B: %s) " skk-henkan-okurigana)) (t (format " (okurigana: %s) " skk-henkan-okurigana)))))) ;; skk-henkan-start-point $B$+$i(B point $B$^$G:o=|$7$F$7$^$C$F$b!"JQ49D>8e(B ;; $B$K(B ($B%+!<%=%k$rF0$+$9$3$H$J$/(B) skk-purge-from-jisyo $B$r8F$Y$PLdBj$J$$(B ;; $B$,!"%+!<%=%k$,0c$&>l=j$X0\F0$7$F$$$?>l9g$O!":o=|$9$Y$-$G$J$$$b$N$^(B ;; $B$G:o=|$7$F$7$^$&2DG=@-$,$"$k!#$=$3$G!"Aw$j2>L>$,$"$l$P$=$ND9$5$r4^(B ;; $B$a$?(B end $B$r5a$a!":#2s$NJQ49$K4XO"$7$?8D=j$@$1$r@53N$K@Z$jC$7$F$*$+$J$$$H!"uBV$G(B emacs $B$r=*N;$7$h$&$H$9$k$H(B ;; skk-save-jisyo-original (skk-get-jisyo-buffer) $BFb$N%(%i!<$G(B emacs $B$r=*N;$G$-$J$$;vBV$H$J$k!#(B (when (file-exists-p skk-jisyo) (funcall skk-save-jisyo-function quiet)))) (defun skk-save-jisyo-original (&optional quiet) "SKK $B$N<-=q%P%C%U%!$r%;!<%V$9$k!#(B $B%*%W%7%g%J%k0z?t(B QUIET $B$,(B non-nil $B$G$"$l$P!"<-=q%;!<%V;~$N%a%C%;!<%8$r=P$5$J$$!#(B" (let ((jisyo-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg))) (if (not (and jisyo-buffer (buffer-modified-p jisyo-buffer))) (unless quiet (skk-message "SKK $B<-=q$rJ]B8$9$kI,MW$O$"$j$^$;$s(B" "No need to save SKK jisyo") (sit-for 1)) ;; (with-current-buffer jisyo-buffer (when (skk-share-private-jisyo-p) (lock-buffer skk-jisyo) (when (skk-jisyo-is-shared-p) (skk-update-shared-jisyo))) (let ((inhibit-quit t) (tempo-file (make-temp-file "skk"))) (unless quiet (skk-message "SKK $B<-=q$rJ]B8$7$F$$$^$9(B..." "Saving SKK jisyo...")) (skk-save-jisyo-as tempo-file) (skk-check-size-and-do-save-jisyo tempo-file) ;; $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 (cond ((skk-share-private-jisyo-p) (skk-init-shared-jisyo) ;; `set-buffer-modified-p' $B$OITMW$J(B lock $B$r2r=|$9$k!#$?$@$7!"(B ;; $B%P%C%U%!$H%U%!%$%kL>$,4XO"IU$1$i$l$F$$$kI,MW$,$"$k!#(B (let ((buffer-file-name (expand-file-name skk-jisyo)) (buffer-file-truename (file-truename skk-jisyo))) (set-buffer-modified-p nil))) (t (set-buffer-modified-p nil))) (unless quiet (skk-message "SKK $B<-=q$rJ]B8$7$F$$$^$9(B...$B40N;!*(B" "Saving SKK jisyo...done") (sit-for 1)))))) (setq skk-update-jisyo-count 0)) (defun skk-init-shared-jisyo () (fillarray skk-jisyo-update-vector nil) (with-temp-buffer (insert skk-emacs-id "\n") (write-region 1 (point-max) skk-emacs-id-file nil 'nomsg))) (defun skk-jisyo-is-shared-p () (and (file-exists-p skk-emacs-id-file) (with-temp-buffer (insert-file-contents skk-emacs-id-file) (goto-char (point-min)) ;; $B8D?M<-=q$,B>$N(B emacs $B>e$N(B skk $B$K$h$j99?7$5$l$?$+$r%A%'%C%/(B (not (search-forward skk-emacs-id nil t))))) (defun skk-update-shared-jisyo () "$B8D?M<-=q$,6&M-$5$l$F$$$k>l9g$K!"?7$7$$>pJs$K99?7$9$k!#(B $B8=:_$N<-=q%P%C%U%!$NFbMF$r>C5n$7$F!"B>$N(B Emacs $B>e$N(B SKK $B$,99?7$7$?(B `skk-jisyo' $B$rFI$_9~$`!#(B" (erase-buffer) (insert-file-contents skk-jisyo) (skk-setup-jisyo-buffer) ;; skk-jisyo-update-vector $B$K$7$?$,$C$F%P%C%U%!$r99?7$9$k!#(B (let ((index 0) (len (length skk-jisyo-update-vector)) list skk-henkan-key) (while (and (< index len) (setq list (aref skk-jisyo-update-vector index))) ;; skk-update-jisyo-1, skk-search-jisyo ;; $B$G;2>H$5$l$k(B skk-henkan-key $B$r%;%C%H$9$k(B (when (setq skk-henkan-key (car list)) (skk-update-jisyo-1 ;; okurigana word (nth 1 list) (nth 2 list) (skk-search-jisyo (nth 1 list) 0 'delete) ;; purge (nth 3 list))) (setq index (1+ index))))) (defun skk-save-jisyo-as (file) (save-match-data (let (buffer-read-only) (goto-char (point-min)) (unless (re-search-forward "^;; okuri-ari entries.$" nil 'noerror) (skk-error "\ $BAw$j$"$j%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*(B SKK $B<-=q$N%;!<%V$rCf;_$7$^$9(B" "\ Header line for okuri-ari entries is missing! Stop saving SKK jisyo")) (unless (re-search-forward "^;; okuri-nasi entries.$" nil 'noerror) (skk-error "\ $BAw$j$J$7%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s(B $B!*(B SKK $B<-=q$N%;!<%V$rCf;_$7$^$9(B" "\ Header line for okuri-nasi entries is missing! Stop saving SKK jisyo"))) (let ((coding-system-for-write (skk-find-coding-system skk-jisyo-code)) jka-compr-compression-info-list) (write-region 1 (point-max) file nil 'nomsg)))) (defun skk-check-size-and-do-save-jisyo (new-file) (skk-bind-last-command-char nil (let ((new-size (nth 7 (file-attributes new-file))) old-size ;; yes-or-no-p $B$K2sEz$7!"(Bnewline $B$9$k$H!"(Bthis-command $B$,JQ$C$F$7$^$&!#(B this-command this-command-char last-command) (when (zerop new-size) (delete-file new-file) (skk-error "SKK $B<-=q$,6u$K$J$C$F$$$^$9!*(B $B<-=q$N%;!<%V$rCf;_$7$^$9(B" "Null SKK jisyo! Stop saving jisyo")) (cond ((or (not skk-compare-jisyo-size-when-saving) ;; $B5l<-=q$H$N%5%$%:$rHf3S$7$J$$!#(B (progn ;; (1)skk-jisyo $B$,$J$$$+!"(B ;; (2)new-file $B$H(B skk-jisyo $B$,F10l$N%5%$%:$+(B ;; (skk-(aux-)large-jisyo $B$+$i?75,$NC18l$rFI$_9~$^$J$+$C$?$j!"(B ;; $B?75,C18l$NEPO?$r9T$o$J$+$C$?>l9g$O%5%$%:$,F1$8(B)$B!"(B ;; (3)new-file $B$NJ}$,Bg$-$$(B ;; $B>l9g(B ($B>e5-$N(B 3 $BDL$j$G$"$l$P$$$:$l$b@5>o(B)$B!#(B (setq old-size (nth 7 (file-attributes skk-jisyo))) (or (not old-size) (>= new-size old-size)))) (skk-make-new-jisyo new-file)) ((skk-yes-or-no-p (format "%s $B$,(B %dbytes $B>.$5$/$J$j$^$9$,!"%;!<%V$7$FNI$$$G$9$+!)(B" skk-jisyo (- old-size new-size)) (format "New %s will be %dbytes smaller. Save anyway?" skk-jisyo (- old-size new-size))) ;; $B$H$K$+$/%;!<%V!#(B (skk-make-new-jisyo new-file)) (t ;; $B%;!<%V$H$j;_$a!#(B (delete-file new-file) (with-output-to-temp-buffer "*SKK warning*" (if skk-japanese-message-and-error (princ "\ $B%;!<%V$7$h$&$H$9$k<-=q$N%5%$%:$,85$N%5%$%:$h$j$b>.$5$/$J$C$F$7$^$&$?$a!"(B $B%;!<%V$rCf;_$7$^$7$?!#<-=q$N%5%$%:$,>.$5$/$J$C$?860x$K$O!"Nc$($P!"(B (a) M-x skk-purge-from-jisyo $B$rl9g$O0[>o$G$O$"$j$^$;$s!#(B \(c) $B$N>l9g$OJT=8$NFbMF$K$h$j$^$9!#860x$r?5=E$K3NG'$7$F$+$i<-=q$rJ]B8$9$k$3(B $B$H$r$*4+$a$7$^$9!#(B $B85$N<-=q$r:F$SFI$_9~$`$K$O!"(B M-x skk-reread-private-jisyo $B$rpJs$r(B `skk-record-file' $B$KJ]B8$9$k!#(B" (unless (or (not skk-keep-record) (> 1 skk-kakutei-count)) (with-temp-file skk-record-file (insert-file-contents skk-record-file) (goto-char (point-min)) (insert (format "%s $BEPO?(B: %3d $B3NDj(B: %4d $B3NDjN((B: %3d%% $B8l?t(B:%6d\n" (current-time-string) skk-touroku-count skk-kakutei-count (/ (* 100 (- skk-kakutei-count skk-touroku-count)) skk-kakutei-count) (cond ((featurep 'skk-rdbms) ;; RDBMS $B$r;H$($P$b$C$H6=L#?<$$E}7W$,@\%U%!%$%kL>$G;XDj$G$-$k(B ;; permission $B$,$J$$>l9g$,B?$$$h$M(B...$B!#(B ;;(read-file-name ;; (format "Jisyo table: (default: %s) " ;; skk-rdbms-private-jisyo-table)) skk-rdbms-private-jisyo-table)))) ;; mule@emacs19.31 $B$@$H2<5-$N$h$&$K$9$k$H(B (`$B%!(B' $B$,860x$N$h$&(B) $B2?8N$+(B ;; default-directory $B$NKvHx$K2~9T$,IU$/!#(B ;; $BDL>o$O5$$,IU$+$J$$$,!"(Brsz-mini.el $B$r;H$C$F(B resize-minibuffer-mode $B$r(B ;; non-nil $B$K$7$F$$$k$HITMW$J(B 2 $B9TL\$,=P8=$9$k!#(B ;; (interactive "f$B<-=q%U%!%$%k(B: ") (let ((count (funcall skk-count-jisyo-candidates-function file-or-table))) (if (skk-called-interactively-p 'interactive) (message (if (= count 1) "%d candidate" "%d candidates") count) count))) (defun skk-count-jisyo-candidates-original (file) "SKK $B<-=q$N8uJd?t$r?t$($k!#(B `[' $B$H(B `]' $B$K0O$^$l$?Aw$j2>L>Kh$N%V%m%C%/Fb$O?t$($J$$!#(B" (let ((orig-buffer (find-buffer-visiting file))) (with-current-buffer (let ((find-file-visit-truename t)) (or orig-buffer (find-file-noselect file))) (save-match-data (let ((count 0) (min (point-min)) (max (and (skk-called-interactively-p 'interactive) (point-max))) (interactive-p (skk-called-interactively-p 'interactive))) (goto-char min) (unless (and ;; $B$3$A$i$O(B skk-save-point $B$r;H$o$:!"%]%$%s%H$r0\F0$5$;$k!#(B (re-search-forward "^;; okuri-ari entries.$" nil t nil) (skk-save-point (re-search-forward "^;; okuri-nasi entries.$" nil t nil))) (skk-error "$B$3$N%U%!%$%k$O(B SKK $B<-=q$G$O$"$j$^$;$s(B" "This file is not an SKK dictionary")) (beginning-of-line) (while (looking-at ";") (forward-line 1) (beginning-of-line)) (search-forward " " nil t) (while (search-forward "/" nil t) (cond ((or (eolp) (looking-at "\\[")) (forward-line 1) (beginning-of-line) (while (looking-at ";") (forward-line 1) (beginning-of-line)) (search-forward " " nil t)) (t (setq count (1+ count)))) (when interactive-p (message "Counting jisyo candidates...%3d%% done" (/ (* 100 (- (point) min)) max)))) (prog1 count (unless orig-buffer (kill-buffer (current-buffer))))))))) (defun skk-create-file (file &optional japanese english modes) "FILE $B$,$J$1$l$P!"(BFILE $B$H$$$&L>A0$N6u%U%!%$%k$r:n$k!#(B $B%*%W%7%g%J%k0z?t$N(B JAPANESE/ENGLISH $B$r;XDj$9$k$H!"%U%!%$%k:n@.8e$=$N%a%C%;!<%8(B $B$r%(%3!<%(%j%"$KI=<($9$k!#(B" (let ((file (expand-file-name file))) (if (file-exists-p file) (when modes (set-file-modes file modes)) (write-region 1 1 file nil 0) (when modes (set-file-modes file modes)) (when (or japanese english) (message "%s" (if skk-japanese-message-and-error japanese english)) (sit-for 3))))) (defun skk-get-jisyo-buffer (file &optional nomsg) "FILE $B$r3+$$$F(B SKK $B<-=q%P%C%U%!$r:n$j!"%P%C%U%!$rJV$9!#(B $B%*%W%7%g%J%k0z?t$N(B NOMSG $B$r;XDj$9$k$H%U%!%$%kFI$_9~$_$N:]$N%a%C%;!<%8$rI=<($7$J(B $B$$!#(B" (when file (let* ((inhibit-quit t) (code (skk-find-coding-system (if (consp file) (cdr file) skk-jisyo-code))) (file (or (car-safe file) file)) (enable-character-translation (not (memq code '(euc-japan shift_jis junet)))) (buf-name (concat " *" (file-name-nondirectory file) "*")) (buf (get-buffer buf-name))) ;; $B<-=q%P%C%U%!$H$7$F%*!<%W%s$5$l$F$$$k$J$i!"2?$b$7$J$$!#(B (unless (buffer-live-p buf) (setq buf (get-buffer-create buf-name)) (setq file (expand-file-name file)) (with-current-buffer buf (buffer-disable-undo) (auto-save-mode -1) ;; $B%o!<%-%s%0%P%C%U%!$N%b!<%I%i%$%s$O%"%C%W%G!<%H$5$l$J$$!)(B ;;(make-local-variable 'line-number-mode) ;;(make-local-variable 'column-number-mode) ;;(setq column-number-mode nil ;; line-number-mode nil) (setq buffer-read-only nil case-fold-search nil ;; buffer-file-name $B$r(B nil $B$K$7$F$*$/$H(B M-x compile $B$J$I(B ;; $BFbIt$G(B save-some-buffers $B$r%3!<%k$7$F$$$k%3%^%s%I$r(B ;; $B;H$C$?$H$-$G$b%;!<%V$9$k$+$I$&$+$r?R$M$F$3$J$/$J$k!#(B ;; buffer-file-name file ;; cache-long-line-scans nil ;; dabbrev $B$N%5!<%A$H$J$k%P%C%U%!$K$J$i$J$$$h$&$KB8:_$7(B ;; $B$J$$%b!<%IL>$K$7$F$*$/!#2A$9$k!#(B" (let (l prog) (while (and (null l) skk-current-search-prog-list) (setq prog (car skk-current-search-prog-list)) (setq l (if (and skk-use-numeric-conversion (string-match "[0-9]" skk-henkan-key) (skk-numeric-program-p prog)) ;; -- 12.2.1 $B$+$i$NJQ99(B -- ;; $B?tCMJQ49;~$K!"Hs?tCMJQ49$bF1;~$K8!:w$7$F8uJd$K(B ;; $B4^$a$k!#(B (skk-nunion (let (skk-use-numeric-conversion) (eval prog)) (eval prog)) (let (skk-use-numeric-conversion) (eval prog)))) (setq skk-current-search-prog-list (cdr skk-current-search-prog-list))) (setq skk-search-state (list skk-henkan-key prog l)) l)) (defun skk-search-state () (interactive) (with-output-to-temp-buffer "*skk search state*" (with-current-buffer standard-output (insert (format "skk-henkan-key: %s\n" (nth 0 skk-search-state)) (format "skk-search-prog: %s\n" (nth 1 skk-search-state)) (format "skk-search() result: %s\n\n" (nth 2 skk-search-state))) (when (equal (nth 1 skk-search-state) '(skk-search-extra-jisyo-files)) (mapconcat #'(lambda (x) (insert (format "%s\n" x))) skk-search-ex-state ""))))) (defun skk-numeric-program-p (program) "$B<-=q8!:w%W%m%0%i%`(B PROGRAM $B$,?tCMJQ49M-8z$+$I$&$+H=Dj$9$k!#(B $B$b$7%W%m%0%i%`$,(B `skk-non-numeric-prog-list' $B$K;XDj$5$l$F$$$?$i(B nil $B$rJV$9!#(B $B$5$b$J$1$l$P(B non-nil $B$rJV$9!#(B" (not (or (memq (car program) skk-non-numeric-prog-list) (member program skk-non-numeric-prog-list)))) (defun skk-search-jisyo-file (file limit &optional nomsg) "SKK $B<-=q%U%)!<%^%C%H$N(B FILE $B$G(B `skk-henkan-key' $B$r%-!<$K$7$F8!:w$9$k!#(B $B8!:wNN0h$,(B LIMIT $B0J2<$K$J$k$^$G%P%$%J%j%5!<%A$r9T$$!"$=$N8e%j%K%"%5!<%A$r9T$&!#(B LIMIT $B$,(B 0 $B$G$"$l$P!"%j%K%"%5!<%A$N$_$r9T$&!#(B $B<-=q$,%=!<%H$5$l$F$$$J$$>l9g$O(B LIMIT $B$r(B 0 $B$H$9$kI,MW$,$"$k!#(B $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(B $B%a%C%;!<%8$r=PNO$7$J$$!#(B FILE $B$K$O<-=q%U%!%$%k$@$1$G$J$/!"(B ($B<-=q%U%!%$%k(B . $B%3!<%G%#%s%0%7%9%F%`(B) $B$N%Z%"$bH$N$3$H!#(B" (if (or skk-server-host skk-servers-list) (skk-search-server-1 file limit) ;; $B<-=q%5!<%P$,MxMQ2DG=$G$J$1$l$P(B file $B$r8!:w$9$k!#(B ;; $B0z?t(B file $B$ODL>o(B `skk-aux-large-jisyo' $B$,;XDj$5$l$k!#(B (when (and (stringp file) (file-readable-p file)) (skk-search-jisyo-file file limit nomsg)))) (defun skk-okuri-search () "$B8+=P$78l$rAw$j2>L>$r4^$`$b$N$H$7$F8!:w$9$k!#(B $BNc$($P!"(B`skk-auto-okuri-process' $B$,(B non-nil $B$J$i$P(B \"Uresii\" $B$N$h$&$KAw$j2>(B $BL>$b4^$a$F%?%$%W$7$F$bAw$j$"$j$N(B \"$B4r$7$$(B\" $B$rC5$7=P$9!#(B" (when skk-auto-okuri-process (skk-okuri-search-1))) (defun skk-search-jisyo-buf (buf limit) "$B%P%C%U%!$r(B BUF $B$K0\F0$7$F!"$=$3$r<-=q$H$7$F8!:w$9$k!#(B" (when (buffer-live-p buf) ;; skk-henkan-key $B$H(B skk-henkan-okurigana $B$O%+%l%s%H%P%C%U%!$N(B ;; $B%m!<%+%kCM$J$N$G!"$"$i$+$8$apJs$rJV$9!#(B DELETE $B$,(B non-nil $B$G$"$l$P(B `skk-henkan-key' $B$K%^%C%A$9$k%(%s%H%j$r:o=|$9$k!#(B" (let ((key (concat "\n" skk-henkan-key " /")) min max size p) (save-match-data ;; skk-okuri-ari-min $B$H(B skk-okuri-ari-max $B$O<-=q%P%C%U%!$N%m!<%+%kCM!#(B (if okurigana (setq min skk-okuri-ari-min max skk-okuri-ari-max) (setq min skk-okuri-nasi-min max (point-max))) (when (> limit 0) ;; $BFsJ,C5:w(B (while (> (setq size (- max min)) limit) (goto-char (+ min (/ size 2))) (beginning-of-line) (setq p (point)) (if (= p min) (setq max min) ; return (let ((p-is-further ;; $BAw$j$"$j$J$i5U=g$KHf3S$9$k!#(B (if okurigana (skk-string< (buffer-substring-no-properties p (1- (search-forward " "))) skk-henkan-key) (skk-string< skk-henkan-key (buffer-substring-no-properties p (1- (search-forward " "))))))) (if p-is-further (setq max p) (setq min p)))))) (goto-char min) ;; key $B$,8!:w3+;OCOE@$K$"$C$?>l9g$G$b8!:w2DG=$J$h$&$K0lJ8;zLa$k!#(Bkey $B$,(B ;; $B$=$N@hF,ItJ,$K(B "\n" $B$r4^$s$G$$$k$3$H$KCm0U!#(B (unless (bobp) (backward-char 1)) ;; case-fold-search $B$O!"<-=q%P%C%U%!$G$O>o$K(B nil$B!#(B (when (search-forward key max 'noerror) (prog1 (skk-compute-henkan-lists okurigana) (when delete (beginning-of-line) (delete-region (point) (progn (forward-line 1) (point))))))))) (defun skk-select-words-from-list (list buffer midasi okurigana) "`skk-search-jisyo' $B$,JV$7$?8uJd%j%9%H$+$i8=:_MW5a$5$l$F$$$k8uJd$rA*$S$@$9!#(B" (when list (let ((words (cond ((and okurigana skk-henkan-okuri-strictly) ;; $BAw$j2>L>$,F10l$N8uJd$N$_$rJV$9!#(B (nth 2 list)) ((and okurigana skk-henkan-strict-okuri-precedence) ;; $BAw$j2>L>$,F10l$N8uJd$N$&$7$m$K!"(B ;; $B$=$NB>$N8uJd$r$D$1$F$+$($9!#(B (skk-nunion (nth 2 list) (car list))) (t (car list))))) (dolist (function skk-search-end-function) (setq words (funcall function buffer midasi okurigana words))) words))) (defun skk-compute-henkan-lists (okurigana) "$B<-=q8uJd72$r(B 4 $B$D$N%j%9%H$KJ,2r$9$k!#(B $B>\$7$/$O!"$3$N4X?t$N%3%a%s%H$r;2>H!#(B" ;; $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) ;; words1 := ("$BE>:\(B" "$BE7:R(B" "$BE7:M(B") == $BA48uJd72(B ;; words2 := nil ;; words3 := nil ;; words4 := nil ;; ;; $BAw$j$"$j(B ($BNc$($P!"!V5c$/!W$NJQ49$r9T$C$?>l9g$N!"<-=q%(%s%H%j(B ;; "$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) ;; words1 := ("$BK4(B" "$BL5(B" "$BLD(B" "$B5c(B") == $B4A;zItJ,$NA48uJd72(B ;; words2 := ("[$B$/(B") == $BB>$NAw$j2>L>$r;H$&4A;z8uJd72(B ($B$"$l(B ;; $B$P(B) + $B:#2s$NJQ49$NAw$j2>L>ItJ,(B ;; words3 := ("$BL5(B" "$BLD(B" "$B5c(B") == $B:#2s$NJQ49$NAw$j2>L>$r;H$&2DG=@-$N(B ;; $B$"$kA44A;z8uJd72(B ;; words4 := ("]" "[$B$-(B" "$BK4(B" "]") == $BB>$NAw$j2>L>$r;H$&4A;z8uJd72(B ($B;D(B ;; $B$j!#$"$l$P(B) ;; ;; * "[" $B$OD>8e$KB3$/$R$i$,$J$rAw$j2>L>$K;}$D4A;z$N8uJd72$N=i$^$j$rI=$7!"(B ;; "]" $B$O!"3:Ev$NAw$j2>L>%0%k!<%W$N=*$j$r<($9!#(B ;; ;; $B$3$N4X?t$O!"JQ49;~$H!"3NDjD>8e$N<-=q$N%"%C%W%G!<%H;~$N(B 2 $BEY8F$P$l$k(B ;; ($BJQ49;~$K8!:w$r9T$C$?<-=q$,!"(Bskk-jisyo $B$H$O8B$i$J$$$N$G!"(B2 $BEY7W;;$;$6$k(B ;; $B$rF@$J$$(B)$B!#(B ;; ;; $BJQ49;~$O!"(Bskk-henkan-okuri-strictly $B$,(B non-nil $B$G$"$l$P!"(B ;; $B7W;;7k2L$N(B words3$B$r!"(Bskk-henkan-okuri-strictly $B$,(B nil $B$G$"$C$F(B ;; $B$+$D(B skk-henkan-strict-okuri-precedence $B$,(B non-nil $B$"$l$P(B ;; (skk-nunion words3 words1) $B$rl9g$O(B words1 $B$rl9g$O!"Bg0hJQ?t(B `skk-kakutei-henkan-flag' $B$K(B non-nil $B$rBeF~$9$k!#(B $B0z?t$K$D$$$F$O(B `skk-search-jisyo-file' $B$r;2>H!#(B $BMxMQ$9$k>l9g$O(B `skk-search-prog-list' $B$N@hF,$KG[$9$k;v!#(B" (setq skk-kakutei-henkan-flag (skk-search-jisyo-file file limit nomsg))) (defun skk-update-jisyo (word &optional purge) (funcall skk-update-jisyo-function word purge) (when (and skk-save-jisyo-instantly (or skk-jisyo-updated ; skk-henkan-in-minibuff $B$G(B setq purge)) (skk-save-jisyo 'quiet) (setq skk-jisyo-updated nil))) (defun skk-update-jisyo-original (word &optional purge) "$BuBV(B/ ;; $B49>:(B $B$=$&$K$e$&(B /$BA^F~(B/ ;; $B=g=g(B $B$+$J(B /$B2>L>(B/ ;; $B"-(B ... ;; ... ;; ;; $B!ZJQ998e![(B ;; ;; okuri-ari entries. ;; $BJQ$G(B $B$G(Bt /$B=P(B/[$B$F(B/$B=P(B/]/[$B$?(B/$B=P(B/]/ ;; $B49>:(B $B$D(Bi /$BIU(B/[$B$$(B/$BIU(B/]/ ;; $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/]/ ;; $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/]/ ;; ... ;; ... ;; $B$J$,(Bs /$BD9(B/$BN.(B/[$B$7(B/$BN.(B/]/[$B$5(B/$BD9(B/]/[$B$=(B/$BN.(B/]/ ;; ;; okuri-nasi entries. ;; $BJQ$G(B $B$8$g$&$?$$(B /$B>uBV(B/ ;; $B49>:(B $B$=$&$K$e$&(B /$BA^F~(B/ ;; $B=g=g(B $B$+$J(B /$B2>L>(B/ ;; $B"-(B ... ;; ... ;; ;; skk-auto-okuri-process $B$,(B non-nil $B$N$H$-$K!"(B(j-okuri-search $B2~$a(B) ;; skk-okuri-search $B$O8+=P$78l$ND9$$=g$K8uJd$rJV$9I,MW$,$"$k!#(B ;; SKK 8.6 $B$^$G$O!"(Bskk-okuri-search $B$,(B j-okuri-ari-min $B$+$i(B j-okuri-ari-max ;; $B$^$G$r=g$KC5$7!"8+$D$1$?$b$N=g$K8uJd$rJV$9$?$a$K8D?M<-=q$,8+=P$7(B ;; $B8l$r%-!<$H$7$F9_=g$K%=!<%H$5$l$F$$$kI,MW$,$"$C$?!#(B ;; SKK 9.x $B$G$O!"(Bskk-okuri-search $B$,!"8+IU$1$?8uJd$r8+=P$78l$r%-!<$H$7$F>:=g(B ;; $B$K%=!<%H$7$FJV$9$?$a!"8D?M<-=q$N%=!<%H$OI,MW$G$J$$!#$h$C$F!":G8e(B ;; $B$KJQ49$7$?$b$N$r(B (j-okuri-ari-min $B2~$a(B) skk-okuri-ari-min $B$N0LCV$KA^F~$9(B ;; $B$k!#(B ;; (let* ((jisyo-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg)) (cand (car (skk-treat-strip-note-from-word word))) (midasi (if (and (skk-numeric-p) (or (string-match "#[0-9]" cand) (skk-lisp-prog-p cand))) (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (henkan-buffer (and skk-update-end-function (current-buffer)))) ;; $BF~NOMzNr$r99?7$9$k!#(B ;; $BAw$j$"$jF~NO$O>JN,$7!"Aw$j$J$7F~NO$N$_MzNr$r$H$k!#(B (unless skk-henkan-okurigana (skk-update-kakutei-history midasi word)) (when jisyo-buffer (let ((inhibit-quit t) buffer-read-only old-words-list okurigana) (when (> skk-okuri-index-min -1) (setq word (skk-remove-common word) ;; skk-henkan-key $B$O(B skk-remove-common $B$K$h$C$F(B ;; $BJQ99$5$l$F$$$k2DG=@-$,$"$k!#(B midasi skk-henkan-key)) (setq okurigana (or skk-henkan-okurigana skk-okuri-char)) (with-current-buffer jisyo-buffer ;; $B4{B8%(%s%H%j$r8!:w8e>C5n$9$k!#A^F~$9$Y$-8uJd$,(B words1 $B$K(B 1 $B$D(B ;; $B$7$+$J$/!"(Bword $B$HF1$8J8;z$G$"$C$F$b!"$$$C$?$s>C$7$F$=$N%(%s%H(B ;; $B%j$r(B min $B%]%$%s%H$K0\F0$5$;$J$1$l$P$J$i$J$$!#$3$l$O!"FI$_$NJd(B ;; $B40$r9T$&$H$-$K!"(B min $B%]%$%s%H$+$i8+=P$7$rC5$9$?$a!"?7$7$$8+=P(B ;; $B$7$[$I!"(Bmin $B%]%$%s%H$K6a$$$H$3$m$K$J$1$l$P$J$i$J$$$+$i$G$"$k!#(B (setq skk-henkan-key midasi old-words-list (skk-search-jisyo okurigana 0 'delete)) (skk-update-jisyo-1 okurigana word old-words-list purge) ;; $BJ#?t$N(B emacs $B$G(B SKK $B$,5/F0$5$l$F$$$k$H$-$K8D?M<-=q$r@09gE*$K(B ;; $B99?7$9$k$?$a$K3NDj$NF0:n$r5-O?$9$k!#(B (when (and (skk-share-private-jisyo-p) (< skk-jisyo-save-count (length skk-jisyo-update-vector))) (aset skk-jisyo-update-vector skk-update-jisyo-count (list midasi okurigana word purge))) (dolist (function skk-update-end-function) (funcall function henkan-buffer midasi okurigana word purge)) (setq skk-update-jisyo-count (1+ skk-update-jisyo-count)) ;; skk-share-private-jisyo $B$,(B non-nil $B$N$H$-$O(B skk-jisyo-save-count ;; $B$b(B non-nil $B$G$"$k$3$H$rA0Ds$H$9$k(B (when (and skk-jisyo-save-count (<= skk-jisyo-save-count skk-update-jisyo-count)) ;; auto save. (skk-save-jisyo 'quiet))))))) (defun skk-update-jisyo-1 (okurigana word old-words-list purge) "$B8D?M<-=q$K?7$7$$%(%s%H%j$rA^F~$9$k!#(B $B4{B8%(%s%H%j$+$i7W;;$7$?(B words[1-4] $B$NCM$H!":#2s$NJQ49$N7k2L(B word $B$H$r(B $B7k9g$7$F!"?7$?$J%(%s%H%j$r7W;;$7!"A^F~$9$k!#(B" (let ((words1 (car old-words-list)) (words2 (nth 1 old-words-list)) (words3 (nth 2 old-words-list)) (words4 (nth 3 old-words-list))) (cond ((not purge) ;; words1 $B$r99?7(B (if skk-jisyo-fix-order (if (consp words1) ;; $B?75,$N;~$O!"B>$NF12;8l$N8e$KDI2C(B (unless (member word words1) (setcdr (last words1) (cons word nil))) ;; $B:#2s$NFI$_$N8l!"$=$N$b$N$,?75,(B (setq words1 (cons word nil))) ;; words1 $B$N@hF,$N8uJd$r(B word $B$K$9$k!#(B (setq words1 (cons word (delete word words1))))) ;; $BAw$j$J$7!"$b$7$/$O(B skk-henkan-okuri-strictly $B$H(B ;; skk-henkan-strict-okuri-precedence $B$,(B nil $B$N>l9g!#(B (t ;; words1 $B$r(B purge$B!#6&MQ<-=q$K$"$k8uJd$@$C$?$i!"(B ;; skk-ignore-dic-word $B$G%/%)!<%H$7$FC$9!#(B (setq words1 (if (skk-public-jisyo-has-word-p okurigana word) (skk-compose-ignore-word words1 word) (delete word words1))))) (when words1 ;; words1 $B$,(B null $B$G$"$l$P!"$b$&2?$b$9$k$3$H$O$J$$!#(B (goto-char (if okurigana skk-okuri-ari-min skk-okuri-nasi-min)) (insert "\n" skk-henkan-key " /") ;; words1 -- $BA48uJd72(B ($BAw$j$J$7$N>l9g(B) $B!"$^$?$O(B ;; $BA48uJd72$N4A;zItJ,(B ($BAw$j$"$j$N>l9g(B) (insert (mapconcat 'skk-quote-char words1 "/") "/") (when okurigana ;; words2 $B0J9_$N8uJd72$r=hM}$9$k$N$O!"Aw$j$"$j$N>l9g$N$_!#(B ;; $B@h$KA^F~$9$Y$-8uJd72$r7W;;!"D4@0$9$k!#(B (cond (words3 (cond ((not purge) (if skk-jisyo-fix-order (unless (member word words3) (setcdr (last words3) (cons word nil))) (setq words3 (cons word (delete word words3))))) (t (setq words3 (delete word words3)) (when (null words3) ;; words3 $B$H$7$FA^F~$9$k$b$N$,A4$/$J$1$l$P!"(B"/[$B$/(B/]/" $B$N$h(B ;; $B$&$JAw$j2>L>$N$_$N8uJd$r:n$i$J$$$h$&$K$9$k(B ($BI,MW$G(B ;; $B$"$l$P!"(Bwords2 $B$N:G8eJ}$H(B) words4 $B$N@hF,$N(B "]" $B$r:o=|!#(B (let* ((len (length words2)) (last2 (case len (0 nil) (1 (list nil (car words2))) (t (nthcdr (- (length words2) 2) words2))))) ;; words2 $B$N:G8eJ}$O>o$K(B "[$BAw$j2>L>(B" $B$H$O8B$i$J$$!#(B (when (and last2 (string= (nth 1 last2) (concat "[" okurigana))) (case len (1 (setq words2 nil)) (t (setcdr last2 nil)))) ;; words4 $B$N@hF,$O>o$K(B "]"$B!#(B (setq words4 (cdr words4))))))) (t ;; words3 $B$,(B null $B$G$"$l$P(B (unless (or skk-process-okuri-early purge) ;; skk-process-okuri-early $B$,(B non-nil $B$J$iAw$j2>L>$,J,$i$J$$$N$G(B ;; $B2?$b$7$J$$!#(B-- $B:#2s;HMQ$7$?Aw$j2>L>$,$o$+$i$J$$$^$^JQ49$7$F$$(B ;; $B$k$N$G!"A4$F$N8uJd$,(B words2 $B$KF~$C$F$$$k(B -- words3, words4 $B$O(B ;; null$B!#(B ;; words3 $B$H$7$FA^F~$9$k$b$N$,A4$/$J$1$l$P!"2?$b$7$J$$(B -- words3 ;; $B$,(B purge $BA0$+$i(B null $B$J$i!"(Bwords2 $B$NKvHx$O(B "[" $B$G$J$$$7!"(B ;; words4 $B$O(B null $B$@$+$i(B words[234] $B$NA`:n$OITMW!#(B (setq words2 (nconc words2 (list (concat "[" okurigana))) words3 (list word) ;; purge $BA0$+$i(B words3 $B$,(B null $B$@$C$?$N$@$+$i(B ;; words4 $B$b(B null$B!#(B words4 (list "]")))))) (when words2 ;; words2 -- $B:#2s;HMQ$7$J$+$C$?Aw$j2>L>$r;H$&4A;z$N8uJd72(B ;; + "[" ;; + $B:#2s;HMQ$7$?Aw$j2>L>(B ($BAw$j2>L>$N$_!#$=$NAw$j(B ;; $B2>L>$r;HMQ$9$k4A;z$N8uJd72$O!"(Bwords3 $B$K4^$^$l$k(B) (insert (mapconcat #'skk-quote-char words2 "/") "/") ;; words2 $B$,(B null $B$J$i(B words3 $B$b(B null$B!#(B (when words3 ;; words3 -- $B:#2s;HMQ$7$?Aw$j2>L>$r;H$&A44A;z8uJd(B (insert (mapconcat #'skk-quote-char words3 "/") "/")) ;; purge $B$G(B words3 $B$,(B null $B$K$J$C$?>l9g$O(B words4 $B$,;D$C$F$$$k(B ;; $B$H$-$,$"$k!#(B (when words4 ;; words4 -- "]" + $BB>$NAw$j2>L>$r;H$&A44A;z8uJd(B ;; (words2 $B$N;D$j(B)$B!#(B (insert (mapconcat #'skk-quote-char words4 "/") "/")))))) (defun skk-quote-char (word) "WORD $B$r<-=q%(%s%H%j$H$7$F@5$7$$7A$K@07A$9$k!#(B $B<-=q7A<0$N@)8B$+$i!"<-=q%(%s%H%jFb$K4^$a$F$O$J$i$J$$J8;z$,(B WORD $B$NCf$K$"$l$P!"(B $BI>2A$7$?$H$-$K$=$NJ8;z$H$J$k$h$&$J(B Lisp $B%3!<%I$rJV$9!#(B" (save-match-data (cond ((and word (string-match "[/\n\r\"]" word) ;; we should not quote WORD if it is a symbolic expression (not (skk-lisp-prog-p word)) ;; has an annotation (not (string-match ";" word))) (format "(concat \"%s\")" (skk-quote-char-1 word (cdr skk-quote-char-alist)))) (t word)))) (defun skk-quote-semicolon (word) "WORD $B$r<-=q%(%s%H%j$H$7$F@5$7$$7A$K@07A$9$k!#(B `skk-quote-char' $B$H;w$F$$$k$,!"Cpl9g$K$O$3$N4X?t$rMQ$$$k$H$h$$!#(B" (unless (or skk-henkan-okurigana (string-match ">$" skk-henkan-key) ; $B@\F,<-(B (string-match "^>" skk-henkan-key)) ; $B@\Hx<-(B (let ((key skk-henkan-key) char words) (with-temp-buffer (insert key) ;; $B@\F,<-!&@\Hx<-$NF~NO$@$C$?$i(B ">" $B$r>C$7$F$*$/!#(B (goto-char (1- (point))) ; (when (looking-at ">") ;(looking-back ">") (delete-char 1)) (goto-char (point-min)) (when (looking-at ">") (delete-char 1)) ;; (while (and (not (eobp)) ;; "$B!<(B" $B$G$OJ8;z3Q%+%J$K$7$F!"%j%9%H$K$7$FJV$9!#(B" (cdr (skk-search-katakana t))) (defun skk-search-romaji (&optional jisx0208) "$BJQ49%-!<$r%m!<%^;z$KJQ49$7$?8uJd$rJV$9!#(B" (when (executable-find "kakasi") (unless (or skk-henkan-okurigana (string-match ">$" skk-henkan-key) ; $B@\F,<-(B (string-match "^>" skk-henkan-key)) ; $B@\Hx<-(B (let ((key skk-henkan-key) words chars) (with-temp-buffer (insert key) ;; $B@\F,<-!&@\Hx<-$NF~NO$@$C$?$i(B ">" $B$r>C$7$F$*$/!#(B (goto-char (1- (point))) (when (looking-at ">") (delete-char 1)) (goto-char (point-min)) (when (looking-at ">") (delete-char 1)) ;; (while (not (eobp)) (add-to-list 'chars (skk-what-char-type)) (forward-char 1)) (when (memq 'hiragana chars) (skk-romaji-region (point-min) (point-max)) (setq words (list (buffer-string)))) (when (and jisx0208 words) (skk-jisx0208-latin-region (point-min) (point-max)) (setq words (nconc words (list (buffer-string)))))) words)))) (defun skk-search-jisx0208-romaji () "$B8+=P$78l$rA43Q%m!<%^;z$KJQ49$7$F!"%j%9%H$K$7$FJV$9!#(B" (cdr (skk-search-romaji t))) (defun skk-search-upcase (&optional initial) "$BJQ49%-!<$N(B ascii $B>.J8;z$rBgJ8;z$KJQ49$7$?8uJd$rJV$9!#(B $B$3$N4X?t$O(B `skk-abbrev-mode' $B@lMQ!#(B" (if skk-abbrev-mode (list (if initial (upcase-initials skk-henkan-key) (upcase skk-henkan-key))) nil)) (defun skk-search-identity (&rest args) "$BJQ49%-!<$r$=$N$^$^8uJd$H$7$FJV$9!#(B $B$3$N4X?t$OAw$j$J$7JQ49@lMQ!#(B" (if skk-henkan-okurigana nil (list (identity skk-henkan-key)))) (defun skk-search-function-usage () "Emacs Lisp $B4X?t$N(B usage $B$rJV$9!#(B" (when (eval-when-compile (featurep 'emacs)) (unless skk-henkan-okurigana (let* ((symbol (intern (format "%s" skk-henkan-key))) def doc usage arglist result) (when (fboundp symbol) (setq def (symbol-function symbol) doc (documentation symbol) usage (help-split-fundoc doc symbol) arglist (help-function-arglist symbol)) (cond (usage (setq result (car usage))) ((listp arglist) (setq result (format "%S" (help-make-usage symbol arglist)))) ((stringp arglist) (setq result arglist)) ((let ((fun symbol)) (while (and (symbolp fun) (setq fun (symbol-function fun)) (not (setq usage (help-split-fundoc (documentation fun) symbol))))) usage) (setq result (car usage))) ((or (stringp def) (vectorp def)) (setq result (format "\nMacro: %s" (format-kbd-macro def))))) (when result (list (format "(quote %s)" result)))))))) (defun skk-search-progs (key &optional prog-list remove-note) ;; prog-list $B$,>JN,$5$l$?;~$O(B skk-search-prog-list $B$NA4$F$,BP>](B ;; $B$b$70z?t$r$5$i$KDI2C$9$k$h$&$J;v$,$"$l$P(B ;; okuri-nasi $BAw$jM-$j$N%A%'%C%/$r%Q%9(B ;; allow-duplicate skk-nunion $B$G$J$/(B nconc $B$r;H$&(B ;; $B$"$?$j$+(B (save-match-data (let ((skk-henkan-key key) skk-henkan-okurigana skk-okuri-char skk-auto-okuri-process words) ;; $B:.$<=q$-$J?M$C$FAw$jM-$jJQ49$9$k$N$+$J(B \cj $B$N$[$&$,$$$$(B? (when (string-match "[$B$!(B-$B$s(B][a-z]$" key) (setq skk-henkan-okurigana "" skk-okuri-char (substring key (1- (length key))))) (ignore-errors (dolist (form (or prog-list skk-search-prog-list)) (dolist (word (eval form)) (when (and remove-note (string-match ";" word)) (setq word (substring word 0 (match-beginning 0)))) (setq words (skk-nunion words (list word)))))) words))) (defun skk-search-sagyo-henkaku-maybe () (when skk-search-sagyo-henkaku (skk-search-sagyo-henkaku nil (eq skk-search-sagyo-henkaku 'anything)))) (defun skk-search-sagyo-henkaku (&optional okuri-list anything) "$B8+=P$78l$r%59TJQ3J3hMQ$NF0;l$H$_$J$7$F!"Aw$j$"$j8uJd$r8!:w$9$k!#(B" (unless okuri-list (setq okuri-list '("$B$5(B" "$B$7(B" "$B$9(B" "$B$;(B"))) (when (and skk-henkan-okurigana (or (member skk-henkan-okurigana okuri-list) anything)) (skk-search-progs (substring skk-henkan-key 0 (1- (length skk-henkan-key)))))) (defun skk-search-ja-dic-maybe () (when (eval-when-compile (featurep 'emacs)) (unless (or (and (stringp skk-large-jisyo) (file-readable-p skk-large-jisyo)) (and (stringp skk-aux-large-jisyo) (file-readable-p skk-aux-large-jisyo)) (and (stringp skk-cdb-large-jisyo) (file-readable-p skk-cdb-large-jisyo)) skk-server-host skk-inhibit-ja-dic-search) (skk-search-ja-dic)))) (defun skk-search-with-suffix () (unless (or skk-henkan-okurigana (get 'skk-search-with-suffix 'active)) (let ((i 1) (len (length skk-henkan-key)) key suf-key words suffixes list) (put 'skk-search-with-suffix 'active t) (while (< i len) (setq key (substring skk-henkan-key 0 i) suf-key (substring skk-henkan-key i)) (setq words (skk-search-progs key nil 'remove) suffixes (skk-search-progs (concat ">" suf-key) nil 'remove)) (when (and words suffixes) (dolist (word words) (dolist (suffix suffixes) (setq list (nconc list (list (concat word suffix))))))) (setq i (1+ i))) (put 'skk-search-with-suffix 'active nil) list))) (defun skk-katakana-region (start end &optional vcontract) "$BNN0h$N$R$i$,$J$r%+%?%+%J$KJQ49$9$k!#(B $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 $B$k!#(B $B0z?t$N(B START $B$H(B END $B$O?t;z$G$b%^!<%+!<$G$bNI$$!#(B" (interactive "*r\nP") (when vcontract (skk-search-and-replace start end "$B$&!+(B" (lambda (matched) nil "$B%t(B"))) (skk-search-and-replace start end "[$B$!(B-$B$s(B]+" (lambda (matched) (skk-hiragana-to-katakana matched)))) (defun skk-hiragana-region (start end &optional vexpand) "$BNN0h$N%+%?%+%J$r$R$i$,$J$KJQ49$9$k!#(B $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 $B0z?t$N(B START $B$H(B END $B$O?t;z$G$b%^!<%+!<$G$bNI$$!#(B \"$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 $B%+%?%+%J$H$7$F$O07$o$l$J$$!#(B" (interactive "*r\nP") (when vexpand (skk-search-and-replace start end "$B%t(B" (lambda (matched) nil "$B$&!+(B"))) (skk-search-and-replace start end "[$B%!(B-$B%s(B]+" (lambda (matched) (skk-katakana-to-hiragana matched)))) (defun skk-jisx0208-latin-region (start end) "$BNN0h$N(B ascii $BJ8;z$rBP1~$9$kA43Q1QJ8;z$KJQ49$9$k!#(B" (interactive "*r") (skk-search-and-replace start end "[ -~]" (lambda (matched) (aref skk-default-jisx0208-latin-vector (string-to-char matched))))) (defun skk-latin-region (start end) "$BNN0h$NA43Q1QJ8;z$rBP1~$9$k(B ascii $BJ8;z$KJQ49$9$k!#(B" (interactive "*r") (skk-search-and-replace start end "\\cj" (lambda (matched) (or (skk-jisx0208-to-ascii matched) matched)))) (defun skk-search-and-replace (start end regexp func) (let (matched replace) (save-match-data (skk-save-point ;; END may be changed when length of MATCHED and one of REPLACE ;; are different. (setq end (set-marker (make-marker) end)) (goto-char start) (while (re-search-forward regexp end 'noerror) (setq matched (buffer-substring-no-properties (match-beginning 0) (match-end 0)) replace (funcall func matched)) (goto-char (match-beginning 0)) ;; firstly insert a new string, secondly delete an old string to save ;; the cursor position. (insert-and-inherit replace) (delete-region (+ (match-beginning 0) (length replace)) (+ (match-end 0) (length replace)))) (set-marker end nil))))) (defun skk-jisx0208-to-ascii (string) (require 'japan-util) (let ((char (get-char-code-property (string-to-char string) 'ascii))) (if char (char-to-string char) nil))) (defun skk-henkan-skk-region-by-func (func &optional arg) "`skk-henkan-start-point' $B$H(B `skk-henkan-end-point' $B$N4V$NJ8;zNs$rJQ49$9$k!#(B $BJQ492DG=$+$I$&$+$N%A%'%C%/$r$7$?8e$K(B ARG $B$r0z?t$H$7$F(B FUNC $B$rE,MQ$7!"(B `skk-henkan-start-point' $B$H(B `skk-henkan-end-point' $B$N4V$NJ8;zNs$rJQ49$9$k!#(B" (skk-with-point-move (case skk-henkan-mode (active ;$B"'%b!<%I(B nil) (on ;$B"&%b!<%I(B (skk-set-marker skk-henkan-end-point (point)) (when (and (> skk-kakutei-history-limit 0) (< skk-henkan-start-point (point)) (skk-save-point (goto-char skk-henkan-start-point) (eq (skk-what-char-type) 'hiragana))) (skk-update-kakutei-history (buffer-substring-no-properties skk-henkan-start-point (point)))) ;; $BJQ492DG=$+$I$&$+$N:G=*%A%'%C%/(B (when (skk-get-prefix skk-current-rule-tree) (skk-error "$BF~NOESCf$N2>L>%W%l%U%#%C%/%9$,$"$j$^$9(B" "There remains a kana prefix")) (when (< (point) skk-henkan-start-point) (skk-error "$B%+!<%=%k$,JQ493+;OCOE@$h$jA0$K$"$j$^$9(B" "Henkan end point must be after henkan start point")) (when (and (not skk-allow-spaces-newlines-and-tabs) (skk-save-point (beginning-of-line) (> (point) skk-henkan-start-point))) (skk-error "$BJQ49%-!<$K2~9T$,4^$^$l$F$$$^$9(B" "Henkan key may not contain a line feed")) ;; (apply func skk-henkan-start-point skk-henkan-end-point (if arg (list arg) nil)) (skk-kakutei)) (t (skk-emulate-original-map arg))))) (defun skk-hiragana-to-katakana (hiragana) (let ((diff (- ?$B%"(B ?$B$"(B))) (mapconcat (lambda (e) (if (and (<= ?$B$!(B e) (>= ?$B$s(B e)) (char-to-string (+ e diff)) (char-to-string e))) (string-to-int-list hiragana) ""))) (defun skk-katakana-to-hiragana (katakana) (let ((diff (- ?$B%"(B ?$B$"(B))) (mapconcat (lambda (e) (if (and (<= ?$B%!(B e) (>= ?$B%s(B e)) (char-to-string (- e diff)) (char-to-string e))) (string-to-int-list katakana) ""))) (defun skk-splice-in (org offset spliced) ;; ORG := '(A B C), SPLICED := '(X Y), OFFSET := 1 ;; -> '(A B X Y C) (let (tmp tail) (unless (> offset 0) (error "%s" "Cannot splice in!")) (setq tmp (nthcdr (1- offset) org) tail (cdr tmp)) (setcdr tmp nil) ;cut off (setcdr tmp (if tail (nconc spliced tail) spliced)) org)) ;; (defun skk-chomp (nth list) ;; ;; LIST := '(A B C D), NTH := 1 ;; ;; -> '(A B) ;; (and (> nth -1) (setcdr (nthcdr nth list) nil)) ;; list) (defun skk-henkan-face-on (&optional face) "SKK $B$N(B face $BB0@-$r(B ON $B$K$9$k!#(B `skk-use-face' $B$,(B non-nil $B$N>l9g!"(B`skk-henkan-start-point' $B$H(B `skk-henkan-end-point' $B$N4V$N(B face $BB0@-$r(B `skk-henkan-face' $B$NCM$KJQ99$9$k!#(B" ;; 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 ;; $B$&$K$7$?(B (egg.el, canna.el, wnn-egg.el $B$r;29M$K$7$?(B)$B!#(B ;; 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 ;; $B%T!<$NBP>]$K$J$i$J$$$7!"%"%s%I%%;~$bL5;k$5$l$k$N$G!"JQ49$5$l$?8uJd$NI=<((B ;; $B$r0l;~E*$KJQ99$9$k$K$O(B Text Properties $B$h$j$b9%ET9g$G$"$k!#(B (unless face (setq face skk-henkan-face)) (when (and face (marker-position skk-henkan-start-point) (marker-position skk-henkan-end-point)) (setq skk-henkan-overlay nil) (skk-face-on skk-henkan-overlay skk-henkan-start-point skk-henkan-end-point face skk-henkan-overlay-priority))) (defun skk-henkan-face-off () "SKK $B$N(B face $BB0@-$r(B OFF $B$K$9$k!#(B `skk-henkan-start-point' $B$H(B `skk-henkan-end-point' $B$N4V$NI=<($rJQ99$7$F$$$k(B `skk-henkan-overlay' $B$r>C$9!#(B" (when skk-henkan-face (skk-detach-extent skk-henkan-overlay))) (defun skk-detach-extent (object) (cond ((eval-when-compile (featurep 'xemacs)) (when (extentp object) (detach-extent object))) (t (when (overlayp object) (delete-overlay object))))) (defun skk-make-face (face) "$B?7$7$$(B FACE $B$r:n@.$9$k!#(B FACE $B$O!VA07J?'!WKt$O!VA07J?'(B + $B%9%i%C%7%e(B + $BGX7J?'!W$N7A<0$G;XDj$9$k!#(B" ;; hilit-lookup-face-create $B$N%5%V%;%C%H!#(Btutorial $B$G?'IU$1$r9T$&>l9g$G$b(B ;; hilit19 $B$K0MB8$;$:$H$j$"$($:(B face $B$r<+A0$G:n$k$3$H$,$G$-$k$h$&$K!"$H$$$&(B ;; $BL\E*$G:n$C$?$b$N$G!"4JC1$J?'IU$1$7$+$G$-$J$$!#$"$^$j8-$/$O$J$$!#J#;($J(B ;; face $B$r:n$j$?$$?M$O(B hilit-lookup-face-create $BEy$r;H$C$F2<$5$$!#(B (unless (car (memq face (face-list))) (save-match-data (let* ((list (split-string (symbol-name face) "/")) (bg (nth 1 list))) (setq face (make-face face)) (set-face-foreground face (car list)) (when bg (set-face-background face bg))))) face) ;; skk-auto.el, skk-rdbms.el $B$NN>J}$G;H$&$N$G!"(Bskk-auto.el $B$h$j0\F0$7$?!#(B (defun skk-remove-common (word) "WORD $B$NAw$j2>L>0J30$NItJ,$rJV$9!#(B `skk-henkan-key' $B$H(B WORD $B$N4V$K6&DL$NAw$j2>L>$rL>0J30$NItJ,(B $B$NJ8;zNs$rJV$9!#(B`skk-henkan-key' $B$H(B `skk-henkan-okurigana' $B$NCM$r%;%C%H$9$k!#(B $BNc$($P!"(BWORD == $B;}$C$F$-$?(B $B$G$"$l$P!"(B`skk-henkan-key' := $B$b(Bt , `skk-henkan-okurigana' := $B$C$F(B , WORD := $B;}(B $B$N$h$&$KJ,2r$7!"(BWORD $B$rJV$9!#(B `skk-auto-okuri-process' $B$NCM$,(B non-nil $B$G$"$k$H$-$K$3$N4X?t$r;HMQ$9$k!#(B $BJQ49$,9T$o$l$?%P%C%U%!$G%3!<%k$5$l$k(B ($B<-=q%P%C%U%!$G$O$J$$(B)$B!#(B" (when (and (not (skk-numeric-p)) (not skk-abbrev-mode) (or skk-henkan-in-minibuff-flag (and (<= skk-okuri-index-min (skk-henkan-count)) (<= (skk-henkan-count) skk-okuri-index-max)))) (let ((midasi skk-henkan-key) (midasi-len (length skk-henkan-key)) (word-len (length word)) (cont t) char pos pos2 midasi-tail word-tail new-word okuri-first new-skk-okuri-char new-skk-henkan-key) (when (and (>= midasi-len 2) (>= word-len 2)) ;; check if both midasi and word end with the same ascii char. (when (and (skk-ascii-char-p (aref midasi (1- midasi-len))) (eq (aref midasi (1- midasi-len)) (aref word (1- word-len)))) ;; if so chop off the char from midasi and word. ;; assume size of an ASCII char is always 1. (setq midasi (substring midasi 0 -1) midasi-len (1- midasi-len) word (substring word 0 -1) word-len (1- word-len))) (setq midasi-tail (substring midasi (1- midasi-len) midasi-len) word-tail (substring word (1- word-len) word-len)) (when (and (string= midasi-tail word-tail) (or (and (skk-string<= "$B$!(B" midasi-tail) (skk-string<= midasi-tail "$B$s(B")) (member midasi-tail '("$B!"(B" "$B!#(B" "$B!$(B" "$B!%(B")))) ;; $B8+=P$78l$HC18l$H$NKvHx$,F10l$N$+$JJ8;z$N>l9g!#(B ;; $BAw$j$J$7$rAw$j$"$j$X(B (setq pos (1- word-len) new-word new-skk-henkan-key) (while (and cont (> pos 0)) (setq char (substring word (1- pos) pos)) (if (and (skk-string<= "$B0!(B" char) (skk-string<= char "$Bt$(B")) ;; char is the right-most Kanji (setq cont nil) (setq pos (1- pos)))) (setq pos2 (- midasi-len (- word-len pos))) ;; check if midasi and word has the same tail of length (when (string= (substring midasi pos2 midasi-len) (substring word pos word-len)) (setq okuri-first (substring word pos (1+ pos))) (setq skk-henkan-okurigana (if (and (string= okuri-first "$B$C(B") (<= (+ pos 2) word-len)) ;; in this case okuriga consits of two ;; characters, e.g., $B!V;D$C$?!W(B (substring word pos (+ pos 2)) okuri-first)) (setq new-word (substring word 0 pos) new-skk-okuri-char (skk-okurigana-prefix skk-henkan-okurigana) new-skk-henkan-key (concat (substring midasi 0 pos2) new-skk-okuri-char)) (let (inhibit-quit) ; allow keyboard quit (cond ((not skk-henkan-in-minibuff-flag) (setq word new-word skk-henkan-key new-skk-henkan-key)) ;; $B<-=qEPO?%b!<%I$GEPO?$5$l$?>l9g!#(B ;; ask if register as okuri-ari word. ((y-or-n-p (format (if skk-japanese-message-and-error "%s /%s/ $B$rAw$j$"$j8uJd$H$7$FEPO?$7$^$9$+!)(B " "Shall I register this as okuri-ari word: %s /%s/ ? ") new-skk-henkan-key new-word)) (setq word new-word skk-okuri-char new-skk-okuri-char skk-henkan-key new-skk-henkan-key)) (t (setq skk-henkan-okurigana nil skk-okuri-char nil) (message ""))))))))) ;; $BJ,2r$7$?(B word ($BAw$j2>L>ItJ,$r=|$$$?$b$N(B) $B$rJV$9!#(B word) (defun skk-okurigana-prefix (okurigana) (let ((headchar (substring okurigana 0 1))) (cond ((string= headchar "$B$s(B") "n") ((not (and (skk-string<= "$B$!(B" headchar) (skk-string<= headchar "$B$s(B"))) nil) ((and (string= headchar "$B$C(B") (not (string= okurigana "$B$C(B"))) (aref skk-kana-rom-vector ;; assume the character is hiragana of JIS X 0208. (- (skk-char-octet (string-to-char (substring okurigana 1 2)) 1) 33))) (t (aref skk-kana-rom-vector (- (skk-char-octet (string-to-char headchar) 1) 33)))))) (defun skk-time-difference (a b) ;; from type-break.el. Welcome! ;; Compute the difference, in seconds, between a and b, two structures ;; similar to those returned by `current-time'. ;; Use addition rather than logand since that is more robust; the low 16 ;; bits of the seconds might have been incremented, making it more than 16 ;; bits wide. (+ (lsh (- (car b) (car a)) 16) (- (nth 1 b) (nth 1 a)))) (defun skk-update-kakutei-history (midasi &optional word) "$BJQ?t(B `skk-kakutei-history' $B$r99?7$9$k!#(B $B$3$NMzNr$O(B skk-comp.el $B$K$*$$$FMxMQ$5$l$k!#(B" (cond ((<= skk-kakutei-history-limit 0) (setq skk-kakutei-history nil)) (t (setq skk-kakutei-history (cons (list midasi word (current-buffer)) skk-kakutei-history)) (when (> (length skk-kakutei-history) skk-kakutei-history-limit) (setcdr (nthcdr (1- skk-kakutei-history-limit) skk-kakutei-history) nil))))) ;; ??? Workaround for XEmacs isearch. (defun skk-henkan-count () (cond ((eval-when-compile (featurep 'xemacs)) (if skk-isearch-switch (with-current-buffer skk-isearch-working-buffer skk-henkan-count) skk-henkan-count)) (t skk-henkan-count))) ;; ??? Workaround for XEmacs isearch. (defun skk-set-henkan-count (i) (cond ((eval-when-compile (featurep 'xemacs)) (if skk-isearch-switch (with-current-buffer skk-isearch-working-buffer (setq skk-henkan-count i)) (setq skk-henkan-count i))) (t (setq skk-henkan-count i)))) ;; ??? Workaround for XEmacs isearch. (defun skk-exit-show-candidates () (cond ((eval-when-compile (featurep 'xemacs)) (if skk-isearch-switch (with-current-buffer skk-isearch-working-buffer skk-exit-show-candidates) skk-exit-show-candidates)) (t skk-exit-show-candidates))) ;; ??? Workaround for XEmacs isearch. (defun skk-set-exit-show-candidates (list) (cond ((eval-when-compile (featurep 'xemacs)) (if skk-isearch-switch (with-current-buffer skk-isearch-working-buffer (setq skk-exit-show-candidates list)) (setq skk-exit-show-candidates list))) (t (setq skk-exit-show-candidates list)))) ;;; functions for hooks. (defun skk-after-point-move () (when (and (not (and skk-previous-point (= skk-previous-point (point)))) (skk-get-prefix skk-current-rule-tree)) (skk-with-point-move (skk-erase-prefix 'clean)))) (defun skk-pre-command () (when (and (memq last-command '(skk-insert skk-previous-candidate)) (null (memq this-command skk-kana-cleanup-command-list))) (skk-kana-cleanup t))) (defun skk-remove-minibuffer-setup-hook (&rest args) ;; Remove all args from minibuffer-setup-hook. (dolist (hook args) (remove-hook 'minibuffer-setup-hook hook))) (defun skk-add-skk-pre-command () (add-hook 'pre-command-hook 'skk-pre-command nil 'local)) (defun skk-remove-skk-pre-command () (remove-hook 'pre-command-hook 'skk-pre-command 'local)) (add-hook 'edit-picture-hook #'skk-misc-for-picture 'append) (add-hook 'kill-emacs-hook #'skk-record-jisyo-data) ;; add 'skk-save-jisyo only to remove easily. (add-hook 'kill-emacs-hook #'skk-save-jisyo) (add-hook 'minibuffer-exit-hook (lambda () (skk-remove-skk-pre-command) (skk-remove-minibuffer-setup-hook 'skk-j-mode-on 'skk-setup-minibuffer 'skk-add-skk-pre-command) (skk-exit-henkan-in-minibuff))) ;;;###autoload (defun skk-preload () "Emacs $B5/F0;~$K$"$i$+$8$a(B SKK $B$r8F$V$3$H$G(B SKK $B$N1~Ez$rB.$/$9$k!#(B $B@hFI$_$NBP>]$K$J$k$N$O0J2 (prefix-numeric-value arg) 0) t))) (when (boundp 'migemo-isearch-enable-p) (if skk-isearch-mode-enable (setq migemo-isearch-enable-p nil) (setq migemo-isearch-enable-p t))) (message "SKK isearch is %s" (if skk-isearch-mode-enable "enabled" "disabled"))) (defun skk-henkan-inactivate () "$B"'%b!<%I$r%-%c%s%;%k$7$F"&%b!<%I$KLa$k!#J8;zNs$O0];}$9$k!#(B" (skk-set-henkan-count 0) (if (and skk-delete-okuri-when-quit skk-henkan-okurigana) (let ((count (length skk-henkan-okurigana))) (skk-previous-candidate nil) ;; $B$3$3$G$O(B delete-backward-char $B$KBhFs0z?t$rEO$5$J$$J}$,%Y%?! (point) skk-henkan-start-point) (point) skk-previous-point)) (skk-kakutei))) ;;; cover to original functions. (skk-defadvice keyboard-quit (around skk-ad activate preactivate) "$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 $B"&%b!<%I$G$"$l$P!"8+=P$78l$r:o=|$9$k!#(B $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" (if (not skk-mode) ad-do-it (cond ((eq skk-henkan-mode 'active) (skk-henkan-inactivate)) ((eq skk-henkan-mode 'on) (skk-henkan-off-by-quit)) (t (if (skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean) ad-do-it))))) (skk-defadvice abort-recursive-edit (around skk-ad activate preactivate) "$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 $B"&%b!<%I$G$"$l$P!"8+=P$78l$r:o=|$9$k!#(B $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" ;; subr command but no arg. (skk-remove-minibuffer-setup-hook 'skk-j-mode-on 'skk-setup-minibuffer 'skk-add-skk-pre-command) (if (not skk-mode) ad-do-it (cond ((eq skk-henkan-mode 'active) (skk-henkan-inactivate)) ((eq skk-henkan-mode 'on) (skk-henkan-off-by-quit)) (t (if (skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean) ad-do-it))))) (defadvice newline (around skk-ad activate) "`skk-egg-like-newline' $B$,(B non-nil $B$G$"$l$P!"3NDj$N$_9T$$!"2~9T$7$J$$!#(B" (if (not (or skk-j-mode skk-jisx0201-mode skk-abbrev-mode)) ad-do-it (let (;;(arg (ad-get-arg 0)) ;; `skk-kakutei' $B$rr7o$K(B nil $B$K$J$k$N$G!"J]B8$7$F$*$/I,MW$,$"$k!#(B (no-newline (and skk-egg-like-newline skk-henkan-mode)) (auto-fill-function (if (skk-called-interactively-p 'interactive) auto-fill-function nil))) ;; fill $B$5$l$F$b(B nil $B$,5"$C$F$/$k(B :-< ;;(if (skk-kakutei) ;; (setq arg (1- arg))) ;;(if skk-mode ;; (let ((opos (point))) ;; ;; skk-kakutei (skk-do-auto-fill) $B$K$h$C$F9T$,@^$jJV$5$l$?$i(B ;; ;; arg $B$r(B 1 $B$D8:$i$9!#(B ;; (skk-kakutei) ;; (if (and (not (= opos (point))) (integerp arg)) ;; (ad-set-arg 0 (1- arg))))) (when skk-mode (skk-kakutei)) (undo-boundary) (unless no-newline ad-do-it)))) (defadvice newline-and-indent (around skk-ad activate) "`skk-egg-like-newline' $B$,(B non-nil $B$G$"$l$P!"3NDj$N$_9T$$!"2~9T$7$J$$!#(B" (if (not (or skk-j-mode skk-jisx0201-mode skk-abbrev-mode)) ad-do-it (let ((no-newline (and skk-egg-like-newline skk-henkan-mode)) (auto-fill-function (if (skk-called-interactively-p 'interactive) auto-fill-function nil))) (when skk-mode (skk-kakutei)) (undo-boundary) (unless no-newline ad-do-it)))) (skk-defadvice exit-minibuffer (around skk-ad activate) ;; subr command but no arg. "`skk-egg-like-newline' $B$,(B non-nil $B$G$"$l$P!"3NDj$N$_9T$$!"2~9T$7$J$$!#(B" (skk-remove-minibuffer-setup-hook 'skk-j-mode-on 'skk-setup-minibuffer 'skk-add-skk-pre-command) (if (not (or skk-j-mode skk-jisx0201-mode skk-abbrev-mode)) ad-do-it (let ((no-newline (and skk-egg-like-newline skk-henkan-mode))) (when skk-mode (skk-kakutei)) (unless no-newline ad-do-it)))) (defadvice picture-mode-exit (before skk-ad activate) "SKK $B$N%P%C%U%!%m!<%+%kJQ?t$rL58z$K$7!"(B`picture-mode-exit' $B$r%3!<%k$9$k!#(B `picture-mode' $B$+$i=P$?$H$-$K$=$N%P%C%U%!$G(B SKK $B$r@5>o$KF0$+$9$?$a$N=hM}!#(B" (when skk-mode (skk-kill-local-variables))) (defadvice undo (before skk-ad activate) "SKK $B%b!<%I$,(B on $B$J$i(B `skk-self-insert-non-undo-count' $B$r=i4|2=$9$k!#(B" (when skk-mode (setq skk-self-insert-non-undo-count 0))) (defadvice next-line (before skk-ad activate) (when (eq skk-henkan-mode 'active) (skk-kakutei))) (defadvice previous-line (before skk-ad activate) (when (eq skk-henkan-mode 'active) (skk-kakutei))) (defadvice backward-kill-sentence (before skk-ad activate) ;; C-x DEL ;; $B$I$N$h$&$JF0:n$r$9$k$Y$-$+L$7hDj(B (when skk-mode (skk-kakutei))) (defmacro skk-wrap-newline-command (cmd) "[return]$B%-!<$K3d$jEv$F$i$l$F$$$k$G$"$m$&%3%^%s%I(B (CMD) $B$r%i%C%W$7$F!"(B skk $B$NF0:n$H@09g$5$;$k!#(B [return]$B%-!<$K%3%^%s%I$r3d$jEv$F$F$$$k%a%8%c!<%b!<%I$G(B skk $B$r;H$&$H!"(Bskk $B$,(B `skk-kakutei' $B$r8F$S=P$95!2q$,$J$$$?$a$KJQ49$r3NDj$G$-$:(B `$B"'(B' $B$,%P%C%U%!$K(B $B;D$C$F$7$^$&$H$$$&LdBj$,$"$k!#(B $BK\%^%/%m$rMQ$$$k$H!"JQ49$r3NDj$7$F$+$i(B (`skk-kakutei' $B$r ;; Maintainer: SKK Development Team ;; Version: 3.7 ;; Keywords: emulations ;; Last Modified: $Date: 2007/04/22 02:38:27 $ ;; Previous versions: ;; Version 3.5: September 15, 1987 ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; A full-featured vi(1) emulator. ;; ;; Send suggestions and bug reports to one of the above addresses. ;; When you report a bug, be sure to include the version number of VIP and ;; Emacs you are using. ;; Execute info command by typing "M-x info" to get information on VIP. ;;; Code: ;; APEL 9.22 required. (require 'poe) ;; external variables ;; Not so easy to work on XEmacs... ;;(defconst vip-xemacs-p (string-match "XEmacs" emacs-version)) (defvar vip-insert-point nil "Remember insert point as a marker. (Buffer-specific.)") (set-default 'vip-insert-point nil) (make-variable-buffer-local 'vip-insert-point) (defvar vip-com-point nil "Remember com point as a marker. (Buffer-specific.)") (set-default 'vip-com-point nil) (make-variable-buffer-local 'vip-com-point) (defvar vip-current-mode nil "Current mode. One of `emacs-mode', `vi-mode', `insert-mode'.") (make-variable-buffer-local 'vip-current-mode) (setq-default vip-current-mode 'emacs-mode) (defvar vip-emacs-mode-line-buffer-identification nil "Value of mode-line-buffer-identification in Emacs mode within vip.") (make-variable-buffer-local 'vip-emacs-mode-line-buffer-identification) (setq-default vip-emacs-mode-line-buffer-identification '("Emacs: %17b")) (defvar vip-current-major-mode nil "vip-current-major-mode is the major-mode vi considers it is now. \(buffer specific\)") (make-variable-buffer-local 'vip-current-major-mode) (defvar vip-last-shell-com nil "Last shell command executed by ! command.") (defvar vip-use-register nil "Name of register to store deleted or yanked strings.") (defvar vip-d-com nil "How to reexecute last destructive command. Value is list (M-COM VAL COM).") (defconst vip-shift-width 8 "*The number of columns shifted by > and < command.") (defconst vip-re-replace nil "*If t then do regexp replace, if nil then do string replace.") (defvar vip-d-char nil "The character remembered by the vi \"r\" command.") (defvar vip-f-char nil "For use by \";\" command.") (defvar vip-F-char nil "For use by \".\" command.") (defvar vip-f-forward nil "For use by \";\" command.") (defvar vip-f-offset nil "For use by \";\" command.") (defconst vip-search-wrap-around t "*if t, search wraps around.") (defconst vip-re-search nil "*if t, search is reg-exp search, otherwise vanilla search.") (defvar vip-s-string nil "Last vip search string.") (defvar vip-s-forward nil "If t, search is forward.") (defconst vip-case-fold-search nil "*If t, search ignores cases.") (defconst vip-re-query-replace nil "*If t then do regexp replace, if nil then do string replace.") (defconst vip-open-with-indent nil "*If t, indent when open a new line.") (defconst vip-help-in-insert-mode nil "*If t then C-h is bound to help-command in insert mode. If nil then it is bound to `delete-backward-char'.") (defvar vip-quote-string "> " "String inserted at the beginning of region.") (defvar vip-tags-file-name "TAGS") (defvar vip-inhibit-startup-message nil) (defvar vip-startup-file (convert-standard-filename "~/.vip") "Filename used as startup file for vip.") ;; SKK related variables (defvar vip-skk-latin-mode nil) (make-variable-buffer-local 'vip-skk-latin-mode) (defvar vip-skk-j-mode nil) (make-variable-buffer-local 'vip-skk-j-mode) (defvar vip-skk-jisx0208-latin-mode nil) (make-variable-buffer-local 'vip-skk-jisx0208-mode) (defvar vip-skk-katakana nil) (make-variable-buffer-local 'vip-skk-katakana) (defvar vip-vi-mode nil) (make-variable-buffer-local 'vip-vi-mode) (defvar vip-insert-mode nil) (make-variable-buffer-local 'vip-insert-mode) ;; basic set up (defmacro vip-move-marker-locally (marker position &optional buffer) (list 'progn (list 'if (list 'not marker) (list 'setq marker (list 'make-marker))) (list 'set-marker marker position buffer))) (global-set-key "\C-z" 'vip-change-mode-to-vi) (defmacro vip-loop (count body) "(COUNT BODY) Execute BODY COUNT times." (list 'let (list (list 'count count)) (list 'while (list '> 'count 0) body (list 'setq 'count (list '1- 'count))))) (defun vip-push-mark-silent (&optional location) "Set mark at LOCATION (point, by default) and push old mark on mark ring. No message." (if (null (mark t)) nil (setq mark-ring (cons (copy-marker (mark-marker)) mark-ring)) (if (> (length mark-ring) mark-ring-max) (progn (move-marker (car (nthcdr mark-ring-max mark-ring)) nil) (setcdr (nthcdr (1- mark-ring-max) mark-ring) nil)))) (set-mark (or location (point)))) (defun vip-goto-col (arg) "Go to ARG's column." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (save-excursion (end-of-line) (if (> val (1+ (current-column))) (error ""))) (if com (vip-move-marker-locally vip-com-point (point))) (beginning-of-line) (forward-char (1- val)) (if com (vip-execute-com 'vip-goto-col val com)))) (defun vip-copy-keymap (map) (if (null map) (make-sparse-keymap) (copy-keymap map))) ;; changing mode ;; the two useule functions below are taken from viper and ;; modified. (defun vip-normalize-minor-mode-map-alist () (setq minor-mode-map-alist (vip-append-filter-alist (list (cons 'vip-vi-mode vip-vi-mode-map) (cons 'vip-insert-mode vip-insert-mode-map) ) minor-mode-map-alist))) ;; Append LIS2 to LIS1, both alists, by side-effect and returns LIS1 ;; LIS2 is modified by filtering it: deleting its members of the form ;; \(car elt\) such that (car elt') is in LIS1. (defun vip-append-filter-alist (lis1 lis2) (let ((temp lis1) elt) ;;filter-append the second list (while temp ;; delete all occurrences (while (setq elt (assoc (car (car temp)) lis2)) (setq lis2 (delq elt lis2))) (setq temp (cdr temp))) (nconc lis1 lis2))) (defun vip-change-mode (new-mode) "change mode to NEW-MODE. NEW-MODE will be either emacs-mode, vi-mode or insert-mode." (let ((skk-mode (if (boundp 'skk-mode) skk-mode nil))) (cond ((eq new-mode 'vi-mode) (if (eq vip-current-mode 'insert-mode) (progn (if skk-mode (vip-skk-mode-off)) (vip-copy-region-as-kill (point) vip-insert-point) (vip-repeat-insert-command)) (if (eq vip-current-mode 'emacs-mode) (setq vip-emacs-mode-line-buffer-identification mode-line-buffer-identification))) (vip-change-mode-line "Vi: ") (setq vip-vi-mode t vip-insert-mode nil) ) ((eq new-mode 'insert-mode) (vip-move-marker-locally vip-insert-point (point)) (if (eq vip-current-mode 'emacs-mode) (setq vip-emacs-mode-line-buffer-identification mode-line-buffer-identification)) (vip-change-mode-line "Insrt") (if skk-mode (vip-skk-mode-on)) (setq vip-vi-mode nil vip-insert-mode t)) ((eq new-mode 'emacs-mode) (vip-change-mode-line "Emacs:") ;;(vip-skk-mode-off) (setq vip-vi-mode nil vip-insert-mode nil))) (setq vip-current-mode new-mode) (vip-normalize-minor-mode-map-alist) (force-mode-line-update) )) ;; SKK related functions ;;;###autoload (defun vip-skk-mode (arg) "Turn on both VIP-MODE and SKK-MODE. if ARG is nil, then toggle SKK-MODE. Then, change mode to insert mode." (interactive "P") (or vip-current-mode (vip-mode)) (cond ((eq vip-current-mode 'vi-mode) (skk-mode arg) (setq vip-skk-latin-mode skk-latin-mode vip-skk-j-mode skk-j-mode vip-skk-jisx0208-latin-mode skk-jisx0208-latin-mode vip-skk-katakana skk-katakana) (vip-change-mode-to-insert)) ((eq vip-current-mode 'emacs-mode) ;; in this case, alwasy enter skk mode (skk-mode 1) (vip-change-mode-to-insert)) ((eq vip-current-mode 'insert-mode) (skk-mode arg) (vip-change-mode-to-insert)))) (defun vip-skk-mode-off () (if skk-abbrev-mode (skk-j-mode-on)) (let ((str (substring (skk-indicator-to-string skk-modeline-input-mode t) 1))) (setq vip-skk-latin-mode skk-latin-mode vip-skk-j-mode skk-j-mode vip-skk-jisx0208-latin-mode skk-jisx0208-latin-mode vip-skk-katakana skk-katakana vip-skk-input-mode-string) (skk-kakutei) (skk-mode-off) (setq skk-modeline-input-mode ;; There was no MODE argument...? ;;(skk-mode-string-to-indicator (concat " [" str "]")) (concat " [" str "]")))) (defun vip-skk-mode-on () (add-hook 'pre-command-hook 'skk-pre-command nil 'local) ;; we need to go back to the mode stored in VIP-SKK-*-MODE. (cond (vip-skk-latin-mode (skk-latin-mode-on)) (vip-skk-j-mode (skk-j-mode-on vip-skk-katakana)) (vip-skk-jisx0208-latin-mode (skk-jisx0208-latin-mode-on)))) (require 'advice) (defadvice skk-pre-command (around vip-ad activate) (if (eq this-command 'vip-delete-backward-char) ;; do nothing nil ad-do-it)) ;; end SKK related functions (defun vip-copy-region-as-kill (beg end) "If BEG and END do not belong to the same buffer, it copies empty region." (condition-case nil (copy-region-as-kill beg end) (error (copy-region-as-kill beg beg)))) (defun vip-change-mode-line (string) "Assuming that the mode line format contains the string \"Emacs:\", this function replaces the string by \"Vi: \" etc." (setq mode-line-buffer-identification (if (string= string "Emacs:") vip-emacs-mode-line-buffer-identification (list (concat string " %12b"))))) ;;;###autoload (defun Vip-mode () "Turn on VIP emulation of VI." (interactive) (if (not vip-inhibit-startup-message) (progn (switch-to-buffer "VIP Startup Message") (erase-buffer) (insert "VIP is a Vi emulation package for GNU Emacs. VIP provides most Vi commands including Ex commands. VIP is however different from Vi in several points. You can get more information on VIP by: 1. Typing `M-x info' and selecting menu item \"vip\". 2. Typing `C-h k' followed by a key whose description you want. 3. Printing VIP manual which can be found as GNU/man/vip.texinfo 4. Printing VIP Reference Card which can be found as GNU/etc/vipcard.tex This startup message appears whenever you load VIP unless you type `y' now. Type `n' to quit this window for now.\n") (goto-char (point-min)) (if (y-or-n-p "Inhibit VIP startup message? ") (progn (save-excursion (set-buffer (find-file-noselect (substitute-in-file-name vip-startup-file))) (goto-char (point-max)) (insert "\n(setq vip-inhibit-startup-message t)\n") (save-buffer) (kill-buffer (current-buffer))) (message "VIP startup message inhibited.") (sit-for 2))) (kill-buffer (current-buffer)) (message "") (setq vip-inhibit-startup-message t))) (vip-change-mode-to-vi)) (defalias 'vip-mode 'Vip-mode) (defun vip-change-mode-to-vi () "Change mode to vi mode." (interactive) (vip-change-mode 'vi-mode)) (defun vip-change-mode-to-insert () "Change mode to insert mode." (interactive) (vip-change-mode 'insert-mode)) (defun vip-change-mode-to-emacs () "Change mode to emacs mode." (interactive) (vip-change-mode 'emacs-mode)) ;; escape to emacs mode temporarily (defun vip-escape-to-emacs (arg &optional events) "Escape to Emacs mode for one Emacs command. ARG is used as the prefix value for the executed command. If EVENTS is a list of events, which become the beginning of the command." (interactive "P") (let ((change-mode-to-vi nil) (change-mode-to-insert nil) (change-mode-to-emacs nil) (save-vi-mode vip-vi-mode) (save-insert-mode vip-insert-mode) (old-buff (current-buffer)) ) (let (com key (vip-vi-mode nil) (vip-insert-mode nil)) (if events (setq unread-command-events events)) (setq prefix-arg arg) ;;(use-local-map vip-emacs-local-map) (unwind-protect (setq com (key-binding (setq key ;;(if vip-xemacs-p ;; (read-key-sequence nil) ;; (read-key-sequence nil t))))) (read-key-sequence nil t)))) nil) (command-execute com prefix-arg) (setq prefix-arg nil);; reset prefix arg ) ;; we must check if the current buffer is the same after executing ;; the command. if not, we have to restore the values of ;; VIP-VI-MODE and VIP-INSERT-MODE (if (eq (current-buffer) old-buff) ;; in case one of the values of CHANGE-MODE-TO-VI/INSERT/EMACS was ;; changed dynamically in executing the command COM, then ;; change mode to the specified mode. otherwise keep the mode. (progn (cond (change-mode-to-vi (vip-change-mode-to-vi)) (change-mode-to-insert (vip-change-mode-to-insert) ) (change-mode-to-emacs (vip-change-mode-to-emacs)) (t (vip-change-mode vip-current-mode)))) ;; since OLD-BUFF may not exist anymore, we have to first ;; check if it still exists. we can check this by the function ;; BUFFER-NAME which return nil for a killed buffer. (if (buffer-name old-buff) (save-excursion (set-buffer old-buff) (setq vip-vi-mode save-vi-mode vip-insert-mode save-insert-mode))) ;; in the new buffer we enter the mode spcified by ;; the local value of VIP-CURRNT-MODE, unless CHANGE-MODE-TO-* ;; is set (cond (change-mode-to-vi (vip-change-mode-to-vi)) (change-mode-to-insert (vip-change-mode-to-insert)) (change-mode-to-emacs (vip-change-mode-to-emacs)) (t (vip-change-mode vip-current-mode))) ) )) (defun vip-message-conditions (conditions) "Print CONDITIONS as a message." (let ((case (car conditions)) (msg (cdr conditions))) (if (null msg) (message "%s" case) (message "%s %s" case (prin1-to-string msg))) (ding))) (defun vip-ESC (arg) "Emulate ESC key in Emacs mode." (interactive "P") (vip-escape-to-emacs arg '(?\e))) (defun vip-ctl-c (arg) "Emulate C-c key in Emacs mode." (interactive "P") (vip-escape-to-emacs arg '(?\C-c))) (defun vip-ctl-x (arg) "Emulate C-x key in Emacs mode." (interactive "P") (vip-escape-to-emacs arg '(?\C-x))) (defun vip-ctl-h (arg) "Emulate C-h key in Emacs mode." (interactive "P") (vip-escape-to-emacs arg '(?\C-h))) ;; prefix argument for vi mode ;; In vi mode, prefix argument is a dotted pair (NUM . COM) where NUM ;; represents the numeric value of the prefix argument and COM represents ;; command prefix such as "c", "d", "m" and "y". (defun vip-prefix-arg-value (char value com) "Compute numeric prefix arg value. Invoked by CHAR. VALUE is the value obtained so far, and COM is the command part obtained so far." (while (and (>= char ?0) (<= char ?9)) (setq value (+ (* (if (numberp value) value 0) 10) (- char ?0))) (setq char (read-char))) (setq prefix-arg value) (if com (setq prefix-arg (cons prefix-arg com))) (while (eq char ?U) (vip-describe-arg prefix-arg) (setq char (read-char))) (setq unread-command-events (list char))) (defun vip-prefix-arg-com (char value com) "Vi operator as prefix argument." (let ((cont t)) (while (and cont (memq char '(?c ?d ?y ?! ?< ?> ?= ?# ?r ?R ?\"))) (if com ;; this means that we already have a command character, so we ;; construct a com list and exit while. however, if char is " ;; it is an error. (progn ;; new com is (CHAR . OLDCOM) (if (memq char '(?# ?\")) (error "")) (setq com (cons char com)) (setq cont nil)) ;; if com is nil we set com as char, and read more. again, if char ;; is ", we read the name of register and store it in vip-use-register. ;; if char is !, =, or #, a complete com is formed so we exit while. (cond ((memq char '(?! ?=)) (setq com char) (setq char (read-char)) (setq cont nil)) ((eq char ?#) ;; read a char and encode it as com (setq com (+ 128 (read-char))) (setq char (read-char)) (setq cont nil)) ((memq char '(?< ?>)) (setq com char) (setq char (read-char)) (if (eq com char) (setq com (cons char com))) (setq cont nil)) ((eq char ?\") (let ((reg (read-char))) (if (or (and (<= ?A reg) (<= reg ?z)) (and (<= ?1 reg) (<= reg ?9))) (setq vip-use-register reg) (error "")) (setq char (read-char)))) (t (setq com char) (setq char (read-char))))))) (if (atom com) ;; com is a single char, so we construct prefix-arg ;; and if char is ?, describe prefix arg, otherwise exit by ;; pushing the char back (progn (setq prefix-arg (cons value com)) (while (eq char ?U) (vip-describe-arg prefix-arg) (setq char (read-char))) (setq unread-command-events (list char))) ;; as com is non-nil, this means that we have a command to execute (if (memq (car com) '(?r ?R)) ;; execute appropriate region command. (let ((char (car com)) (com (cdr com))) (setq prefix-arg (cons value com)) (if (eq char ?r) (vip-region prefix-arg) (vip-Region prefix-arg)) ;; reset prefix-arg (setq prefix-arg nil)) ;; otherwise, reset prefix arg and call appropriate command (setq value (if (null value) 1 value)) (setq prefix-arg nil) (cond ((equal com '(?c . ?c)) (vip-line (cons value ?C))) ((equal com '(?d . ?d)) (vip-line (cons value ?D))) ((equal com '(?d . ?y)) (vip-yank-defun)) ((equal com '(?y . ?y)) (vip-line (cons value ?Y))) ((equal com '(?< . ?<)) (vip-line (cons value ?<))) ((equal com '(?> . ?>)) (vip-line (cons value ?>))) ((equal com '(?! . ?!)) (vip-line (cons value ?!))) ((equal com '(?= . ?=)) (vip-line (cons value ?=))) (t (error "")))))) (defun vip-describe-arg (arg) (let (val com) (setq val (vip-P-val arg) com (vip-getcom arg)) (if (null val) (if (null com) (message "Value is nil, and command is nil.") (message "Value is nil, and command is %c." com)) (if (null com) (message "Value is %d, and command is nil." val) (message "Value is %d, and command is %c." val com))))) (defun vip-digit-argument (arg) "Begin numeric argument for the next command." (interactive "P") (vip-prefix-arg-value last-command-char nil (if (consp arg) (cdr arg) nil))) (defun vip-command-argument (arg) "Accept a motion command as an argument." (interactive "P") (condition-case conditions (vip-prefix-arg-com last-command-char (cond ((null arg) nil) ((consp arg) (car arg)) ((numberp arg) arg) (t (error "strange arg"))) (cond ((null arg) nil) ((consp arg) (cdr arg)) ((numberp arg) nil) (t (error "strange arg")))) (quit (setq vip-use-register nil) (signal 'quit nil)))) (defun vip-p-val (arg) "Get value part of prefix-argument ARG." (cond ((null arg) 1) ((consp arg) (if (null (car arg)) 1 (car arg))) (t arg))) (defun vip-P-val (arg) "Get value part of prefix-argument ARG." (cond ((consp arg) (car arg)) (t arg))) (defun vip-getcom (arg) "Get com part of prefix-argument ARG." (cond ((null arg) nil) ((consp arg) (cdr arg)) (t nil))) (defun vip-getCom (arg) "Get com part of prefix-argument ARG and modify it." (let ((com (vip-getcom arg))) (cond ((eq com ?c) ?C) ((eq com ?d) ?D) ((eq com ?y) ?Y) (t com)))) ;; repeat last destructive command (defun vip-append-to-register (reg start end) "Append region to text in register REG. START and END are buffer positions indicating what to append." (set-register reg (concat (or (get-register reg) "") (buffer-substring start end)))) (defun vip-execute-com (m-com val com) "(M-COM VAL COM) Execute command COM. The list (M-COM VAL COM) is set to vip-d-com for later use by vip-repeat" (let ((reg vip-use-register)) (if com (cond ((eq com ?c) (vip-change vip-com-point (point))) ((eq com (- ?c)) (vip-change-subr vip-com-point (point))) ((eq (abs com) ?C) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register (mark 'force) (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (mark 'force) (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (delete-region (mark 'force) (point))) (open-line 1) (if (eq com ?C) (vip-change-mode-to-insert) (yank))) ((eq com ?d) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register vip-com-point (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) vip-com-point (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (setq last-command (if (eq last-command 'd-command) 'kill-region nil)) (kill-region vip-com-point (point)) (setq this-command 'd-command)) ((eq com ?D) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register (mark 'force) (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (mark 'force) (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (setq last-command (if (eq last-command 'D-command) 'kill-region nil)) (kill-region (mark 'force) (point)) (if (eq m-com 'vip-line) (setq this-command 'D-command))) (back-to-indentation)) ((eq com ?y) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register vip-com-point (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) vip-com-point (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (setq last-command nil) (copy-region-as-kill vip-com-point (point)) (goto-char vip-com-point)) ((eq com ?Y) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register (mark 'force) (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (mark 'force) (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (setq last-command nil) (copy-region-as-kill (mark 'force) (point))) (goto-char vip-com-point)) ((eq (abs com) ?!) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (shell-command-on-region (mark 'force) (point) (if (eq com ?!) (setq vip-last-shell-com (vip-read-string "!")) vip-last-shell-com) t))) ((eq com ?=) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (if (> (mark 'force) (point)) (exchange-point-and-mark)) (indent-region (mark 'force) (point) nil))) ((eq com ?<) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (indent-rigidly (mark 'force) (point) (- vip-shift-width))) (goto-char vip-com-point)) ((eq com ?>) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (indent-rigidly (mark 'force) (point) vip-shift-width)) (goto-char vip-com-point)) ((>= com 128) ;; this is special command # (vip-special-prefix-com (- com 128))))) (setq vip-d-com (list m-com val (if (memq com '(?c ?C ?!)) (- com) com) reg)))) (defun vip-repeat (arg) "(ARG) Re-execute last destructive command. vip-d-com has the form \(COM ARG CH REG), where COM is the command to be re-executed, ARG is the argument for COM, CH is a flag for repeat, and REG is optional and if exists is the name of the register for COM." (interactive "P") (if (eq last-command 'vip-undo) ;; if the last command was vip-undo, then undo-more (vip-undo-more) ;; otherwise execute the command stored in vip-d-com. if arg is non-nil ;; its prefix value is used as new prefix value for the command. (let ((m-com (car vip-d-com)) (val (vip-P-val arg)) (com (car (cdr (cdr vip-d-com)))) (reg (nth 3 vip-d-com))) (if (null val) (setq val (car (cdr vip-d-com)))) (if (null m-com) (error "No previous command to repeat.")) (setq vip-use-register reg) (funcall m-com (cons val com))))) (defun vip-special-prefix-com (char) "This command is invoked interactively by the key sequence #" (cond ((eq char ?c) (downcase-region (min vip-com-point (point)) (max vip-com-point (point)))) ((eq char ?C) (upcase-region (min vip-com-point (point)) (max vip-com-point (point)))) ((eq char ?g) (set-mark vip-com-point) (vip-global-execute)) ((eq char ?q) (set-mark vip-com-point) (vip-quote-region)) ((eq char ?s) (spell-region vip-com-point (point))))) ;; undoing (defun vip-undo () "Undo previous change." (interactive) (message "undo!") (undo-start) (undo-more 2) (setq this-command 'vip-undo)) (defun vip-undo-more () "Continue undoing previous changes." (message "undo more!") (undo-more 1) (setq this-command 'vip-undo)) ;; utilities (defun vip-string-tail (str) (if (or (null str) (string= str "")) nil (substring str 1))) (defun vip-yank-defun () (mark-defun) (copy-region-as-kill (point) (mark 'force))) (defun vip-enlarge-region (beg end) "Enlarge region between BEG and END." (if (< beg end) (progn (goto-char beg) (set-mark end)) (goto-char end) (set-mark beg)) (beginning-of-line) (exchange-point-and-mark) (if (or (not (eobp)) (not (bolp))) (next-line 1)) (beginning-of-line) (if (> beg end) (exchange-point-and-mark))) (defun vip-global-execute () "Call last keyboad macro for each line in the region." (if (> (point) (mark 'force)) (exchange-point-and-mark)) (beginning-of-line) (call-last-kbd-macro) (while (< (point) (mark 'force)) (forward-line 1) (beginning-of-line) (call-last-kbd-macro))) (defun vip-quote-region () "Quote region by inserting the user supplied string at the beginning of each line in the region." (setq vip-quote-string (let ((str (vip-read-string (format "quote string \(default \"%s\"\): " vip-quote-string)))) (if (string= str "") vip-quote-string str))) (vip-enlarge-region (point) (mark 'force)) (if (> (point) (mark 'force)) (exchange-point-and-mark)) (insert vip-quote-string) (beginning-of-line) (forward-line 1) (while (and (< (point) (mark 'force)) (bolp)) (insert vip-quote-string) (beginning-of-line) (forward-line 1))) (defun vip-end-with-a-newline-p (string) "Check if the string ends with a newline." (or (string= string "") (eq (aref string (1- (length string))) ?\n))) (defun vip-read-string (prompt &optional init skk) "Setup MINIBUFFER-LOCAL-MAP appropriately and call READ-STRING. If SKK is on, then read string with SKK-J-MODE on." (setq save-minibuffer-local-map (copy-keymap minibuffer-local-map)) (let (str (input-mode-str (and (boundp 'skk-modeline-input-mode) (skk-indicator-to-string skk-modeline-input-mode t)))) (if (and skk (boundp 'skk-mode) skk-mode) (add-hook 'minibuffer-setup-hook 'skk-j-mode-on)) (define-key minibuffer-local-map "\C-h" 'backward-char) (define-key minibuffer-local-map "\C-w" 'backward-word) (define-key minibuffer-local-map "\e" 'exit-minibuffer) (condition-case conditions (setq str (read-string prompt init)) (quit (setq minibuffer-local-map save-minibuffer-local-map) (if input-mode-str (setq skk-modeline-input-mode (skk-mode-string-to-indicator input-mode-str))) (signal 'quit nil))) (setq minibuffer-local-map save-minibuffer-local-map) (if input-mode-str (setq skk-modeline-input-mode (skk-mode-string-to-indicator input-mode-str))) str)) ;; insertion commands (defun vip-repeat-insert-command () "This function is called when mode changes from insertion mode to vi command mode. It will repeat the insertion command if original insertion command was invoked with argument > 1." (let ((i-com (car vip-d-com)) (val (car (cdr vip-d-com)))) (if (and val (> val 1)) ;; first check that val is non-nil (progn (setq vip-d-com (list i-com (1- val) ?r)) (vip-repeat nil) (setq vip-d-com (list i-com val ?r)))))) (defun vip-insert (arg) "" (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-insert val ?r)) (if com (vip-loop val (yank)) (vip-change-mode-to-insert)))) (defun vip-append (arg) "Append after point." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-append val ?r)) (if (not (eolp)) (forward-char)) (if (eq com ?r) (vip-loop val (yank)) (vip-change-mode-to-insert)))) (defun vip-Append (arg) "Append at end of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-Append val ?r)) (end-of-line) (if (eq com ?r) (vip-loop val (yank)) (vip-change-mode-to-insert)))) (defun vip-Insert (arg) "Insert before first non-white." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-Insert val ?r)) (back-to-indentation) (if (eq com ?r) (vip-loop val (yank)) (vip-change-mode-to-insert)))) (defun vip-open-line (arg) "Open line below." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-open-line val ?r)) (let ((col (current-indentation))) (if (eq com ?r) (vip-loop val (progn (end-of-line) (newline 1) (if vip-open-with-indent (indent-to col)) (yank))) (end-of-line) (newline 1) (if vip-open-with-indent (indent-to col)) (vip-change-mode-to-insert))))) (defun vip-Open-line (arg) "Open line above." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-Open-line val ?r)) (let ((col (current-indentation))) (if (eq com ?r) (vip-loop val (progn (beginning-of-line) (open-line 1) (if vip-open-with-indent (indent-to col)) (yank))) (beginning-of-line) (open-line 1) (if vip-open-with-indent (indent-to col)) (vip-change-mode-to-insert))))) (defun vip-open-line-at-point (arg) "Open line at point." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-open-line-at-point val ?r)) (if (eq com ?r) (vip-loop val (progn (open-line 1) (yank))) (open-line 1) (vip-change-mode-to-insert)))) (defun vip-substitute (arg) "Substitute characters." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (save-excursion (set-mark (point)) (forward-char val) (if (eq com ?r) (vip-change-subr (mark 'force) (point)) (vip-change (mark 'force) (point)))) (setq vip-d-com (list 'vip-substitute val ?r)))) (defun vip-substitute-line (arg) "Substitute lines." (interactive "p") (vip-line (cons arg ?C))) ;; line command (defun vip-line (arg) (let ((val (car arg)) (com (cdr arg))) (vip-move-marker-locally vip-com-point (point)) (next-line (1- val)) (vip-execute-com 'vip-line val com))) (defun vip-yank-line (arg) "Yank ARG lines (in vi's sense)" (interactive "P") (let ((val (vip-p-val arg))) (vip-line (cons val ?Y)))) ;; region command (defun vip-region (arg) (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getcom arg))) (vip-move-marker-locally vip-com-point (point)) (exchange-point-and-mark) (vip-execute-com 'vip-region val com))) (defun vip-Region (arg) (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getCom arg))) (vip-move-marker-locally vip-com-point (point)) (exchange-point-and-mark) (vip-execute-com 'vip-Region val com))) (defun vip-replace-char (arg) "Replace the following ARG chars by the character read." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-replace-char val ?r)) (vip-replace-char-subr (if (eq com ?r) vip-d-char (read-char)) val))) (defun vip-replace-char-subr (char arg) (delete-char arg t) (setq vip-d-char char) (vip-loop (if (> arg 0) arg (- arg)) (insert char)) (backward-char arg)) (defun vip-replace-string () "Replace string. If you supply null string as the string to be replaced, the query replace mode will toggle between string replace and regexp replace." (interactive) (let (str) (setq str (vip-read-string (if vip-re-replace "Replace regexp: " "Replace string: "))) (if (string= str "") (progn (setq vip-re-replace (not vip-re-replace)) (message "Replace mode changed to %s." (if vip-re-replace "regexp replace" "string replace"))) (if vip-re-replace ;; (replace-regexp ;; str ;; (vip-read-string (format "Replace regexp \"%s\" with: " str))) (while (re-search-forward str nil t) (replace-match (vip-read-string (format "Replace regexp \"%s\" with: " str)) nil nil)) (replace-string str (vip-read-string (format "Replace \"%s\" with: " str))))))) ;; basic cursor movement. j, k, l, m commands. (defun vip-forward-char (arg) "Move point right ARG characters (left if ARG negative).On reaching end of buffer, stop and signal error." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-char val) (if com (vip-execute-com 'vip-forward-char val com)))) (defun vip-backward-char (arg) "Move point left ARG characters (right if ARG negative). On reaching beginning of buffer, stop and signal error." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (backward-char val) (if com (vip-execute-com 'vip-backward-char val com)))) ;; word command (defun vip-forward-word (arg) "Forward word." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-word val) (skip-chars-forward " \t\n") (if com (progn (if (eq (abs com) ?c) (progn (backward-word 1) (forward-word 1))) (if (memq com '(?d ?y)) (progn (backward-word 1) (forward-word 1) (skip-chars-forward " \t"))) (vip-execute-com 'vip-forward-word val com))))) (defun vip-end-of-word (arg) "Move point to end of current word." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-char) (forward-word val) (backward-char) (if com (progn (forward-char) (vip-execute-com 'vip-end-of-word val com))))) (defun vip-backward-word (arg) "Backward word." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (backward-word val) (if com (vip-execute-com 'vip-backward-word val com)))) (defun vip-forward-Word (arg) "Forward word delimited by white character." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (re-search-forward "[^ \t\n]*[ \t\n]+" nil t val) (if com (progn (if (eq (abs com) ?c) (progn (backward-word 1) (forward-word 1))) (if (memq com '(?d ?y)) (progn (backward-word 1) (forward-word 1) (skip-chars-forward " \t"))) (vip-execute-com 'vip-forward-Word val com))))) (defun vip-end-of-Word (arg) "Move forward to end of word delimited by white character." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-char) (if (re-search-forward "[^ \t\n]+" nil t val) (backward-char)) (if com (progn (forward-char) (vip-execute-com 'vip-end-of-Word val com))))) (defun vip-backward-Word (arg) "Backward word delimited by white character." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (if (re-search-backward "[ \t\n]+[^ \t\n]+" nil t val) (forward-char) (goto-char (point-min))) (if com (vip-execute-com 'vip-backward-Word val com)))) (defun vip-beginning-of-line (arg) "Go to beginning of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (beginning-of-line val) (if com (vip-execute-com 'vip-beginning-of-line val com)))) (defun vip-bol-and-skip-white (arg) "Beginning of line at first non-white character." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (back-to-indentation) (if com (vip-execute-com 'vip-bol-and-skip-white val com)))) (defun vip-goto-eol (arg) "Go to end of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (end-of-line val) (if com (vip-execute-com 'vip-goto-eol val com)))) (defun vip-next-line (arg) "Go to next line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (line-move val) (setq this-command 'next-line) (if com (vip-execute-com 'vip-next-line val com)))) (defun vip-next-line-at-bol (arg) "Next line at beginning of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (next-line val) (back-to-indentation) (if com (vip-execute-com 'vip-next-line-at-bol val com)))) (defun vip-previous-line (arg) "Go to previous line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (next-line (- val)) (setq this-command 'previous-line) (if com (vip-execute-com 'vip-previous-line val com)))) (defun vip-previous-line-at-bol (arg) "Previous line at beginning of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (next-line (- val)) (back-to-indentation) (if com (vip-execute-com 'vip-previous-line val com)))) (defun vip-change-to-eol (arg) "Change to end of line." (interactive "P") (vip-goto-eol (cons arg ?c))) (defun vip-kill-line (arg) "Delete line." (interactive "P") (vip-goto-eol (cons arg ?d))) ;; moving around (defun vip-goto-line (arg) "Go to ARG's line. Without ARG go to end of buffer." (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getCom arg))) (vip-move-marker-locally vip-com-point (point)) (set-mark (point)) (if (null val) (goto-char (point-max)) (goto-char (point-min)) (forward-line (1- val))) (back-to-indentation) (if com (vip-execute-com 'vip-goto-line val com)))) (defun vip-find-char (arg char forward offset) "Find ARG's occurrence of CHAR on the current line. If FORWARD then search is forward, otherwise backward. OFFSET is used to adjust point after search." (let ((arg (if forward arg (- arg))) point) (save-excursion (save-restriction (if (> arg 0) (narrow-to-region ;; forward search begins here (if (eolp) (error "") (point)) ;; forward search ends here (progn (next-line 1) (beginning-of-line) (point))) (narrow-to-region ;; backward search begins from here (if (bolp) (error "") (point)) ;; backward search ends here (progn (beginning-of-line) (point)))) ;; if arg > 0, point is forwarded before search. (if (> arg 0) (goto-char (1+ (point-min))) (goto-char (point-max))) (let ((case-fold-search nil)) (search-forward (char-to-string char) nil 0 arg)) (setq point (point)) (if (or (and (> arg 0) (eq point (point-max))) (and (< arg 0) (eq point (point-min)))) (error "")))) (goto-char (+ point (if (> arg 0) (if offset -2 -1) (if offset 1 0)))))) (defun vip-find-char-forward (arg) "Find char on the line. If called interactively read the char to find from the terminal, and if called from vip-repeat, the char last used is used. This behaviour is controlled by the sign of prefix numeric value." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (> val 0) ;; this means that the function was called interactively (setq vip-f-char (read-char) vip-f-forward t vip-f-offset nil) (setq val (- val))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val (if (> (vip-p-val arg) 0) vip-f-char vip-F-char) t nil) (setq val (- val)) (if com (progn (setq vip-F-char vip-f-char);; set new vip-F-char (forward-char) (vip-execute-com 'vip-find-char-forward val com))))) (defun vip-goto-char-forward (arg) "Go up to char ARG forward on line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (> val 0) ;; this means that the function was called interactively (setq vip-f-char (read-char) vip-f-forward t vip-f-offset t) (setq val (- val))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val (if (> (vip-p-val arg) 0) vip-f-char vip-F-char) t t) (setq val (- val)) (if com (progn (setq vip-F-char vip-f-char);; set new vip-F-char (forward-char) (vip-execute-com 'vip-goto-char-forward val com))))) (defun vip-find-char-backward (arg) "Find char ARG on line backward." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (> val 0) ;; this means that the function was called interactively (setq vip-f-char (read-char) vip-f-forward nil vip-f-offset nil) (setq val (- val))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val (if (> (vip-p-val arg) 0) vip-f-char vip-F-char) nil nil) (setq val (- val)) (if com (progn (setq vip-F-char vip-f-char);; set new vip-F-char (vip-execute-com 'vip-find-char-backward val com))))) (defun vip-goto-char-backward (arg) "Go up to char ARG backward on line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (> val 0) ;; this means that the function was called interactively (setq vip-f-char (read-char) vip-f-forward nil vip-f-offset t) (setq val (- val))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val (if (> (vip-p-val arg) 0) vip-f-char vip-F-char) nil t) (setq val (- val)) (if com (progn (setq vip-F-char vip-f-char);; set new vip-F-char (vip-execute-com 'vip-goto-char-backward val com))))) (defun vip-repeat-find (arg) "Repeat previous find command." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val vip-f-char vip-f-forward vip-f-offset) (if com (progn (if vip-f-forward (forward-char)) (vip-execute-com 'vip-repeat-find val com))))) (defun vip-repeat-find-opposite (arg) "Repeat previous find command in the opposite direction." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val vip-f-char (not vip-f-forward) vip-f-offset) (if com (progn (if vip-f-forward (forward-char)) (vip-execute-com 'vip-repeat-find-opposite val com))))) ;; window scrolling etc. (defun vip-other-window (arg) "Switch to other window." (interactive "p") (other-window arg) (or (not (eq vip-current-mode 'emacs-mode)) (string= (buffer-name (current-buffer)) " *Minibuf-1*") (vip-change-mode-to-vi))) (defun vip-window-top (arg) "Go to home window line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (move-to-window-line (1- val)) (if com (vip-execute-com 'vip-window-top val com)))) (defun vip-window-middle (arg) "Go to middle window line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (move-to-window-line (+ (/ (1- (window-height)) 2) (1- val))) (if com (vip-execute-com 'vip-window-middle val com)))) (defun vip-window-bottom (arg) "Go to last window line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (move-to-window-line (- val)) (if com (vip-execute-com 'vip-window-bottom val com)))) (defun vip-line-to-top (arg) "Put current line on the home line." (interactive "p") (recenter (1- arg))) (defun vip-line-to-middle (arg) "Put current line on the middle line." (interactive "p") (recenter (+ (1- arg) (/ (1- (window-height)) 2)))) (defun vip-line-to-bottom (arg) "Put current line on the last line." (interactive "p") (recenter (- (window-height) (1+ arg)))) ;; paren match (defun vip-paren-match (arg) "Go to the matching parenthesis." (interactive "P") (let ((com (vip-getcom arg))) (if (numberp arg) (if (or (> arg 99) (< arg 1)) (error "Prefix must be between 1 and 99.") (goto-char (if (> (point-max) 80000) (* (/ (point-max) 100) arg) (/ (* (point-max) arg) 100))) (back-to-indentation)) (cond ((looking-at "[\(\[{]") (if com (vip-move-marker-locally vip-com-point (point))) (forward-sexp 1) (if com (vip-execute-com 'vip-paren-match nil com) (backward-char))) ((looking-at "[])}]") (forward-char) (if com (vip-move-marker-locally vip-com-point (point))) (backward-sexp 1) (if com (vip-execute-com 'vip-paren-match nil com))) (t (error "")))))) ;; sentence and paragraph (defun vip-forward-sentence (arg) "Forward sentence." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-sentence val) (if com (vip-execute-com 'vip-forward-sentence nil com)))) (defun vip-backward-sentence (arg) "Backward sentence." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (backward-sentence val) (if com (vip-execute-com 'vip-backward-sentence nil com)))) (defun vip-forward-paragraph (arg) "Forward paragraph." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-paragraph val) (if com (vip-execute-com 'vip-forward-paragraph nil com)))) (defun vip-backward-paragraph (arg) "Backward paragraph." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (backward-paragraph val) (if com (vip-execute-com 'vip-backward-paragraph nil com)))) ;; scrolling (defun vip-scroll (arg) "Scroll to next screen." (interactive "p") (if (> arg 0) (while (> arg 0) (scroll-up) (setq arg (1- arg))) (while (> 0 arg) (scroll-down) (setq arg (1+ arg))))) (defun vip-scroll-back (arg) "Scroll to previous screen." (interactive "p") (vip-scroll (- arg))) (defun vip-scroll-down (arg) "Scroll up half screen." (interactive "P") (if (null arg) (scroll-down (/ (window-height) 2)) (scroll-down arg))) (defun vip-scroll-down-one (arg) "Scroll up one line." (interactive "p") (scroll-down arg)) (defun vip-scroll-up (arg) "Scroll down half screen." (interactive "P") (if (null arg) (scroll-up (/ (window-height) 2)) (scroll-up arg))) (defun vip-scroll-up-one (arg) "Scroll down one line." (interactive "p") (scroll-up arg)) ;; splitting window (defun vip-buffer-in-two-windows () "Show current buffer in two windows." (interactive) (delete-other-windows) (split-window-vertically nil)) ;; searching (defun vip-search-forward (arg) "Search a string forward. ARG is used to find the ARG's occurrence of the string. Default is vanilla search. Search mode can be toggled by giving null search string." (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getcom arg))) (setq vip-s-forward t vip-s-string (if vip-re-search (vip-read-string "RE-/") (vip-read-string "/" nil t))) (if (string= vip-s-string "") (progn (setq vip-re-search (not vip-re-search)) (message "Search mode changed to %s search." (if vip-re-search "regular expression" "vanilla"))) (vip-search vip-s-string t val) (if com (progn (vip-move-marker-locally vip-com-point (mark 'force)) (vip-execute-com 'vip-search-next val com)))))) (defun vip-search-backward (arg) "Search a string backward. ARG is used to find the ARG's occurrence of the string. Default is vanilla search. Search mode can be toggled by giving null search string." (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getcom arg))) (setq vip-s-forward nil vip-s-string (vip-read-string (if vip-re-search "RE-?" "?") nil t)) (if (string= vip-s-string "") (progn (setq vip-re-search (not vip-re-search)) (message "Search mode changed to %s search." (if vip-re-search "regular expression" "vanilla"))) (vip-search vip-s-string nil val) (if com (progn (vip-move-marker-locally vip-com-point (mark 'force)) (vip-execute-com 'vip-search-next val com)))))) (defun vip-search (string forward arg &optional no-offset init-point) "(STRING FORWARD COUNT &optional NO-OFFSET) Search COUNT's occurrence of STRING. Search will be forward if FORWARD, otherwise backward." (let ((val (vip-p-val arg)) (com (vip-getcom arg)) (null-arg (null (vip-P-val arg))) (offset (not no-offset)) (case-fold-search vip-case-fold-search) (start-point (or init-point (point)))) (if forward (condition-case conditions (progn (if (and offset (not (eobp))) (forward-char)) (if vip-re-search (progn (re-search-forward string nil nil val) (re-search-backward string)) (search-forward string nil nil val) (search-backward string)) (push-mark start-point)) (search-failed (if (and null-arg vip-search-wrap-around) (progn (goto-char (point-min)) (vip-search string forward (cons 1 com) t start-point)) (goto-char start-point) (signal 'search-failed (cdr conditions))))) (condition-case conditions (progn (if vip-re-search (re-search-backward string nil nil val) (search-backward string nil nil val)) (push-mark start-point)) (search-failed (if (and null-arg vip-search-wrap-around) (progn (goto-char (point-max)) (vip-search string forward (cons 1 com) t start-point)) (goto-char start-point) (signal 'search-failed (cdr conditions)))))))) (defun vip-search-next (arg) "Repeat previous search." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (null vip-s-string) (error "No previous search string.")) (vip-search vip-s-string vip-s-forward arg) (if com (vip-execute-com 'vip-search-next val com)))) (defun vip-search-Next (arg) "Repeat previous search in the reverse direction." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (null vip-s-string) (error "No previous search string.")) (vip-search vip-s-string (not vip-s-forward) arg) (if com (vip-execute-com 'vip-search-Next val com)))) ;; visiting and killing files, buffers (defun vip-switch-to-buffer () "Switch to buffer in the current window." (interactive) (let (buffer) (setq buffer (vip-read-buffer (format "switch to buffer \(%s\): " (buffer-name (other-buffer (current-buffer)))))) (switch-to-buffer buffer) (vip-change-mode-to-vi))) (defun vip-switch-to-buffer-other-window () "Switch to buffer in another window." (interactive) (let (buffer) (setq buffer (vip-read-buffer (format "Switch to buffer \(%s\): " (buffer-name (other-buffer (current-buffer)))))) (switch-to-buffer-other-window buffer) (vip-change-mode-to-vi))) (defun vip-kill-buffer () "Kill a buffer." (interactive) (let (buffer buffer-name) (setq buffer-name (vip-read-buffer (format "Kill buffer \(%s\): " (buffer-name (current-buffer))))) (setq buffer (if (null buffer-name) (current-buffer) (get-buffer buffer-name))) (if (null buffer) (error "Buffer %s nonexistent." buffer-name)) (if (or (not (buffer-modified-p buffer)) (y-or-n-p "Buffer is modified, are you sure? ")) (kill-buffer buffer) (error "Buffer not killed.")))) (defun vip-read-file-name (prompt) (let ((vip-vi-mode nil) (vip-insert-mode nil)) (read-file-name prompt))) (defun vip-read-buffer (buffer) (let ((vip-vi-mode nil) (vip-insert-mode nil)) (read-buffer buffer))) (defun vip-find-file () "Visit file in the current window." (interactive) (let (file) (setq file (vip-read-file-name "visit file: ")) (switch-to-buffer (find-file-noselect file)) (vip-change-mode-to-vi))) (defun vip-find-file-other-window () "Visit file in another window." (interactive) (let (file) (setq file (vip-read-file-name "Visit file: ")) (switch-to-buffer-other-window (find-file-noselect file)) (vip-change-mode-to-vi))) (defun vip-info-on-file () "Give information of the file associated to the current buffer." (interactive) (message "\"%s\" line %d of %d" (if (buffer-file-name) (buffer-file-name) "") (1+ (count-lines (point-min) (save-excursion (beginning-of-line) (point)))) (1+ (count-lines (point-min) (point-max))))) ;; yank and pop (defun vip-yank (text) "yank TEXT silently." (save-excursion (vip-push-mark-silent (point)) (insert text) (exchange-point-and-mark)) (skip-chars-forward " \t")) (defun vip-put-back (arg) "Put back after point/below line." (interactive "P") (let ((val (vip-p-val arg)) (text (if vip-use-register (if (and (<= ?1 vip-use-register) (<= vip-use-register ?9)) (current-kill (- vip-use-register ?1) 'do-not-rotate) (get-register vip-use-register)) (current-kill 0)))) (if (null text) (if vip-use-register (let ((reg vip-use-register)) (setq vip-use-register nil) (error "Nothing in register %c" reg)) (error ""))) (setq vip-use-register nil) (if (vip-end-with-a-newline-p text) (progn (next-line 1) (beginning-of-line)) (if (and (not (eolp)) (not (eobp))) (forward-char))) (setq vip-d-com (list 'vip-put-back val nil vip-use-register)) (vip-loop val (vip-yank text)))) (defun vip-Put-back (arg) "Put back at point/above line." (interactive "P") (let ((val (vip-p-val arg)) (text (if vip-use-register (if (and (<= ?1 vip-use-register) (<= vip-use-register ?9)) (current-kill (- vip-use-register ?1) 'do-not-rotate) (get-register vip-use-register)) (current-kill 0)))) (if (null text) (if vip-use-register (let ((reg vip-use-register)) (setq vip-use-register nil) (error "Nothing in register %c" reg)) (error ""))) (setq vip-use-register nil) (if (vip-end-with-a-newline-p text) (beginning-of-line)) (setq vip-d-com (list 'vip-Put-back val nil vip-use-register)) (vip-loop val (vip-yank text)))) (defun vip-delete-char (arg) "Delete character." (interactive "P") (let ((val (vip-p-val arg))) (setq vip-d-com (list 'vip-delete-char val nil)) (if vip-use-register (progn (if (and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (point) (- (point) val)) (copy-to-register vip-use-register (point) (- (point) val) nil)) (setq vip-use-register nil))) (delete-char val t))) (defun vip-delete-backward-char (arg) "Delete previous character." (interactive "P") (let ((val (vip-p-val arg)) (skk-mode (if (boundp 'skk-mode) skk-mode nil))) (setq vip-d-com (list 'vip-delete-backward-char val nil)) (if vip-use-register (progn (if (and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (point) (+ (point) val)) (copy-to-register vip-use-register (point) (+ (point) val) nil)) (setq vip-use-register nil))) (if skk-mode (cond ((skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean)) ((eq skk-henkan-mode 'active) (delete-backward-char val t) (skk-kakutei)) ((and (eq skk-henkan-mode 'on) (>= skk-henkan-start-point (point))) (skk-kakutei)) (t (delete-backward-char val t))) (delete-backward-char val t)))) ;; join lines. (defun vip-join-lines (arg) "Join this line to next, if ARG is nil. Otherwise, join ARG lines" (interactive "*P") (let ((val (vip-P-val arg))) (setq vip-d-com (list 'vip-join-lines val nil)) (vip-loop (if (null val) 1 (1- val)) (progn (end-of-line) (if (not (eobp)) (progn (forward-line 1) (delete-region (point) (1- (point))) (fixup-whitespace))))))) ;; making small changes (defun vip-change (beg end) (setq c-string (vip-read-string (format "%s => " (buffer-substring beg end)) nil t)) (vip-change-subr beg end)) (defun vip-change-subr (beg end) (if vip-use-register (progn (copy-to-register vip-use-register beg end nil) (setq vip-use-register nil))) (kill-region beg end) (setq this-command 'vip-change) (insert c-string)) ;; query replace (defun vip-query-replace () "Query replace. If you supply null string as the string to be replaced, the query replace mode will toggle between string replace and regexp replace." (interactive) (let (str) (setq str (if vip-re-query-replace (vip-read-string "Query replace regexp: ") (vip-read-string "Query replace: " nil t))) (if (string= str "") (progn (setq vip-re-query-replace (not vip-re-query-replace)) (message "Query replace mode changed to %s." (if vip-re-query-replace "regexp replace" "string replace"))) (if vip-re-query-replace (query-replace-regexp str (vip-read-string (format "Query replace regexp \"%s\" with: " str))) (query-replace str (vip-read-string (format "Query replace \"%s\" with: " str) nil t)))))) ;; marking (defun vip-mark-beginning-of-buffer () (interactive) (set-mark (point)) (goto-char (point-min)) (exchange-point-and-mark) (message "mark set at the beginning of buffer")) (defun vip-mark-end-of-buffer () (interactive) (set-mark (point)) (goto-char (point-max)) (exchange-point-and-mark) (message "mark set at the end of buffer")) (defun vip-mark-point (char) (interactive "c") (cond ((and (<= ?a char) (<= char ?z)) (point-to-register (- char (- ?a ?\C-a)) nil)) ((eq char ?<) (vip-mark-beginning-of-buffer)) ((eq char ?>) (vip-mark-end-of-buffer)) ((eq char ?.) (push-mark)) ((eq char ?,) (set-mark-command 1)) ((eq char ?D) (mark-defun)) (t (error "")))) (defun vip-goto-mark (arg) "Go to mark." (interactive "P") (let ((char (read-char)) (com (vip-getcom arg))) (vip-goto-mark-subr char com nil))) (defun vip-goto-mark-and-skip-white (arg) "Go to mark and skip to first non-white on line." (interactive "P") (let ((char (read-char)) (com (vip-getCom arg))) (vip-goto-mark-subr char com t))) (defun vip-goto-mark-subr (char com skip-white) (cond ((and (<= ?a char) (<= char ?z)) (let ((buff (current-buffer))) (if com (vip-move-marker-locally vip-com-point (point))) (goto-char (register-to-point (- char (- ?a ?\C-a)))) (if skip-white (back-to-indentation)) (vip-change-mode-to-vi) (if com (if (eq buff (current-buffer)) (vip-execute-com (if skip-white 'vip-goto-mark-and-skip-white 'vip-goto-mark) nil com) (switch-to-buffer buff) (goto-char vip-com-point) (vip-change-mode-to-vi) (error ""))))) ((and (not skip-white) (eq char ?`)) (if com (vip-move-marker-locally vip-com-point (point))) (exchange-point-and-mark) (if com (vip-execute-com 'vip-goto-mark nil com))) ((and skip-white (eq char ?')) (if com (vip-move-marker-locally vip-com-point (point))) (exchange-point-and-mark) (back-to-indentation) (if com (vip-execute-com 'vip-goto-mark-and-skip-white nil com))) (t (error "")))) (defun vip-exchange-point-and-mark () (interactive) (exchange-point-and-mark) (back-to-indentation)) (defun vip-keyboard-quit () "Abort partially formed or running command." (interactive) (setq vip-use-register nil) (keyboard-quit)) (defun vip-ctl-c-equivalent (arg) "Emulate C-c in Emacs mode." (interactive "P") (vip-ctl-key-equivalent "\C-c" arg)) (defun vip-ctl-x-equivalent (arg) "Emulate C-x in Emacs mode." (interactive "P") (vip-ctl-key-equivalent "\C-x" arg)) (defun vip-ctl-key-equivalent (key arg) (let ((char (read-char))) (if (and (<= ?A char) (<= char ?Z)) (setq char (- char (- ?A ?\C-a)))) (vip-escape-to-emacs arg (list (aref key 0) char)))) ;; commands in insertion mode (defun vip-delete-backward-word (arg) "Delete previous word." (interactive "p") (save-excursion (set-mark (point)) (backward-word arg) (delete-region (point) (mark 'force)))) ;; key bindings (set 'vip-vi-mode-map (make-sparse-keymap)) (define-key vip-vi-mode-map "\C-a" 'beginning-of-line) (define-key vip-vi-mode-map "\C-b" 'vip-scroll-back) (define-key vip-vi-mode-map "\C-c" 'vip-ctl-c) (define-key vip-vi-mode-map "\C-d" 'vip-scroll-up) (define-key vip-vi-mode-map "\C-e" 'vip-scroll-up-one) (define-key vip-vi-mode-map "\C-f" 'vip-scroll) (define-key vip-vi-mode-map "\C-g" 'vip-keyboard-quit) (define-key vip-vi-mode-map "\C-h" 'help-command) (define-key vip-vi-mode-map "\C-m" 'vip-scroll-back) (define-key vip-vi-mode-map "\C-n" 'vip-other-window) (define-key vip-vi-mode-map "\C-o" 'vip-open-line-at-point) (define-key vip-vi-mode-map "\C-u" 'vip-scroll-down) (define-key vip-vi-mode-map "\C-x" 'vip-ctl-x) (define-key vip-vi-mode-map "\C-y" 'vip-scroll-down-one) (define-key vip-vi-mode-map "\C-z" 'vip-change-mode-to-emacs) (define-key vip-vi-mode-map "\e" 'vip-ESC) (define-key vip-vi-mode-map " " 'vip-scroll) (define-key vip-vi-mode-map "!" 'vip-command-argument) (define-key vip-vi-mode-map "\"" 'vip-command-argument) (define-key vip-vi-mode-map "#" 'vip-command-argument) (define-key vip-vi-mode-map "$" 'vip-goto-eol) (define-key vip-vi-mode-map "%" 'vip-paren-match) (define-key vip-vi-mode-map "&" 'vip-nil) (define-key vip-vi-mode-map "'" 'vip-goto-mark-and-skip-white) (define-key vip-vi-mode-map "(" 'vip-backward-sentence) (define-key vip-vi-mode-map ")" 'vip-forward-sentence) (define-key vip-vi-mode-map "*" 'call-last-kbd-macro) (define-key vip-vi-mode-map "+" 'vip-next-line-at-bol) (define-key vip-vi-mode-map "," 'vip-repeat-find-opposite) (define-key vip-vi-mode-map "-" 'vip-previous-line-at-bol) (define-key vip-vi-mode-map "." 'vip-repeat) (define-key vip-vi-mode-map "/" 'vip-search-forward) (define-key vip-vi-mode-map "0" 'vip-beginning-of-line) (define-key vip-vi-mode-map "1" 'vip-digit-argument) (define-key vip-vi-mode-map "2" 'vip-digit-argument) (define-key vip-vi-mode-map "3" 'vip-digit-argument) (define-key vip-vi-mode-map "4" 'vip-digit-argument) (define-key vip-vi-mode-map "5" 'vip-digit-argument) (define-key vip-vi-mode-map "6" 'vip-digit-argument) (define-key vip-vi-mode-map "7" 'vip-digit-argument) (define-key vip-vi-mode-map "8" 'vip-digit-argument) (define-key vip-vi-mode-map "9" 'vip-digit-argument) (define-key vip-vi-mode-map ":" 'vip-ex) (define-key vip-vi-mode-map ";" 'vip-repeat-find) (define-key vip-vi-mode-map "<" 'vip-command-argument) (define-key vip-vi-mode-map "=" 'vip-command-argument) (define-key vip-vi-mode-map ">" 'vip-command-argument) (define-key vip-vi-mode-map "?" 'vip-search-backward) (define-key vip-vi-mode-map "@" 'vip-nil) (define-key vip-vi-mode-map "A" 'vip-Append) (define-key vip-vi-mode-map "B" 'vip-backward-Word) (define-key vip-vi-mode-map "C" 'vip-ctl-c-equivalent) (define-key vip-vi-mode-map "D" 'vip-kill-line) (define-key vip-vi-mode-map "E" 'vip-end-of-Word) (define-key vip-vi-mode-map "F" 'vip-find-char-backward) (define-key vip-vi-mode-map "G" 'vip-goto-line) (define-key vip-vi-mode-map "H" 'vip-window-top) (define-key vip-vi-mode-map "I" 'vip-Insert) (define-key vip-vi-mode-map "J" 'vip-join-lines) (define-key vip-vi-mode-map "K" 'vip-kill-buffer) (define-key vip-vi-mode-map "L" 'vip-window-bottom) (define-key vip-vi-mode-map "M" 'vip-window-middle) (define-key vip-vi-mode-map "N" 'vip-search-Next) (define-key vip-vi-mode-map "O" 'vip-Open-line) (define-key vip-vi-mode-map "P" 'vip-Put-back) (define-key vip-vi-mode-map "Q" 'vip-query-replace) (define-key vip-vi-mode-map "R" 'vip-replace-string) (define-key vip-vi-mode-map "S" 'vip-switch-to-buffer-other-window) (define-key vip-vi-mode-map "T" 'vip-goto-char-backward) (define-key vip-vi-mode-map "U" 'vip-nil) (define-key vip-vi-mode-map "V" 'vip-find-file-other-window) (define-key vip-vi-mode-map "W" 'vip-forward-Word) (define-key vip-vi-mode-map "X" 'vip-ctl-x-equivalent) (define-key vip-vi-mode-map "Y" 'vip-yank-line) (define-key vip-vi-mode-map "ZZ" 'save-buffers-kill-emacs) (define-key vip-vi-mode-map "[" 'vip-nil) (define-key vip-vi-mode-map "\\" 'vip-escape-to-emacs) (define-key vip-vi-mode-map "]" 'vip-nil) (define-key vip-vi-mode-map "^" 'vip-bol-and-skip-white) (define-key vip-vi-mode-map "_" 'vip-nil) (define-key vip-vi-mode-map "`" 'vip-goto-mark) (define-key vip-vi-mode-map "a" 'vip-append) (define-key vip-vi-mode-map "b" 'vip-backward-word) (define-key vip-vi-mode-map "c" 'vip-command-argument) (define-key vip-vi-mode-map "d" 'vip-command-argument) (define-key vip-vi-mode-map "e" 'vip-end-of-word) (define-key vip-vi-mode-map "f" 'vip-find-char-forward) (define-key vip-vi-mode-map "g" 'vip-info-on-file) (define-key vip-vi-mode-map "h" 'vip-backward-char) (define-key vip-vi-mode-map "i" 'vip-insert) (define-key vip-vi-mode-map "j" 'vip-next-line) (define-key vip-vi-mode-map "k" 'vip-previous-line) (define-key vip-vi-mode-map "l" 'vip-forward-char) (define-key vip-vi-mode-map "m" 'vip-mark-point) (define-key vip-vi-mode-map "n" 'vip-search-next) (define-key vip-vi-mode-map "o" 'vip-open-line) (define-key vip-vi-mode-map "p" 'vip-put-back) (define-key vip-vi-mode-map "q" 'vip-nil) (define-key vip-vi-mode-map "r" 'vip-replace-char) (define-key vip-vi-mode-map "s" 'vip-switch-to-buffer) (define-key vip-vi-mode-map "t" 'vip-goto-char-forward) (define-key vip-vi-mode-map "u" 'vip-undo) (define-key vip-vi-mode-map "v" 'vip-find-file) (define-key vip-vi-mode-map "w" 'vip-forward-word) (define-key vip-vi-mode-map "x" 'vip-delete-char) (define-key vip-vi-mode-map "y" 'vip-command-argument) (define-key vip-vi-mode-map "zH" 'vip-line-to-top) (define-key vip-vi-mode-map "zM" 'vip-line-to-middle) (define-key vip-vi-mode-map "zL" 'vip-line-to-bottom) (define-key vip-vi-mode-map "z\C-m" 'vip-line-to-top) (define-key vip-vi-mode-map "z." 'vip-line-to-middle) (define-key vip-vi-mode-map "z-" 'vip-line-to-bottom) (define-key vip-vi-mode-map "{" 'vip-backward-paragraph) (define-key vip-vi-mode-map "|" 'vip-goto-col) (define-key vip-vi-mode-map "}" 'vip-forward-paragraph) (define-key vip-vi-mode-map "~" 'vip-nil) (define-key vip-vi-mode-map "\177" 'vip-delete-backward-char) (set 'vip-insert-mode-map (make-sparse-keymap)) (define-key vip-insert-mode-map "\e" 'vip-change-mode-to-vi) (define-key vip-insert-mode-map "\C-z" 'vip-ESC) (define-key vip-insert-mode-map "\C-h" (if vip-help-in-insert-mode 'help-command 'vip-delete-backward-char)) (define-key vip-insert-mode-map "\C-w" 'vip-delete-backward-word) (define-key ctl-x-map "3" 'vip-buffer-in-two-windows) (define-key ctl-x-map "\C-i" 'insert-file) (defun vip-version () (interactive) (message "VIP version 3.7 of August 22, 1999")) ;; implement ex commands (defvar ex-token-type nil "type of token. if non-nil, gives type of address. if nil, it is a command.") (defvar ex-token nil "value of token.") (defvar ex-addresses nil "list of ex addresses") (defvar ex-flag nil "flag for ex flag") (defvar ex-buffer nil "name of ex buffer") (defvar ex-count nil "value of ex count") (defvar ex-g-flag nil "flag for global command") (defvar ex-g-variant nil "if t global command is executed on lines not matching ex-g-pat") (defvar ex-reg-exp nil "save reg-exp used in substitute") (defvar ex-repl nil "replace pattern for substitute") (defvar ex-g-pat nil "pattern for global command") (defvar ex-map (make-sparse-keymap) "save commands for mapped keys") (defvar ex-tag nil "save ex tag") (defvar ex-file nil) (defvar ex-variant nil) (defvar ex-offset nil) (defvar ex-append nil) (defun vip-nil () (interactive) (error "")) (defun vip-looking-back (str) "returns t if looking back reg-exp STR before point." (and (save-excursion (re-search-backward str nil t)) (eq (point) (match-end 0)))) (defun vip-check-sub (str) "check if ex-token is an initial segment of STR" (let ((length (length ex-token))) (if (and (<= length (length str)) (string= ex-token (substring str 0 length))) (setq ex-token str) (setq ex-token-type "non-command")))) (defun vip-get-ex-com-subr () "get a complete ex command" (set-mark (point)) (re-search-forward "[a-z][a-z]*") (setq ex-token-type "command") (setq ex-token (buffer-substring (point) (mark 'force))) (exchange-point-and-mark) (cond ((looking-at "a") (cond ((looking-at "ab") (vip-check-sub "abbreviate")) ((looking-at "ar") (vip-check-sub "args")) (t (vip-check-sub "append")))) ((looking-at "[bh]") (setq ex-token-type "non-command")) ((looking-at "c") (if (looking-at "co") (vip-check-sub "copy") (vip-check-sub "change"))) ((looking-at "d") (vip-check-sub "delete")) ((looking-at "e") (if (looking-at "ex") (vip-check-sub "ex") (vip-check-sub "edit"))) ((looking-at "f") (vip-check-sub "file")) ((looking-at "g") (vip-check-sub "global")) ((looking-at "i") (vip-check-sub "insert")) ((looking-at "j") (vip-check-sub "join")) ((looking-at "l") (vip-check-sub "list")) ((looking-at "m") (cond ((looking-at "map") (vip-check-sub "map")) ((looking-at "mar") (vip-check-sub "mark")) (t (vip-check-sub "move")))) ((looking-at "n") (if (looking-at "nu") (vip-check-sub "number") (vip-check-sub "next"))) ((looking-at "o") (vip-check-sub "open")) ((looking-at "p") (cond ((looking-at "pre") (vip-check-sub "preserve")) ((looking-at "pu") (vip-check-sub "put")) (t (vip-check-sub "print")))) ((looking-at "q") (vip-check-sub "quit")) ((looking-at "r") (cond ((looking-at "rec") (vip-check-sub "recover")) ((looking-at "rew") (vip-check-sub "rewind")) (t (vip-check-sub "read")))) ((looking-at "s") (cond ((looking-at "se") (vip-check-sub "set")) ((looking-at "sh") (vip-check-sub "shell")) ((looking-at "so") (vip-check-sub "source")) ((looking-at "st") (vip-check-sub "stop")) (t (vip-check-sub "substitute")))) ((looking-at "t") (if (looking-at "ta") (vip-check-sub "tag") (vip-check-sub "t"))) ((looking-at "u") (cond ((looking-at "una") (vip-check-sub "unabbreviate")) ((looking-at "unm") (vip-check-sub "unmap")) (t (vip-check-sub "undo")))) ((looking-at "v") (cond ((looking-at "ve") (vip-check-sub "version")) ((looking-at "vi") (vip-check-sub "visual")) (t (vip-check-sub "v")))) ((looking-at "w") (if (looking-at "wq") (vip-check-sub "wq") (vip-check-sub "write"))) ((looking-at "x") (vip-check-sub "xit")) ((looking-at "y") (vip-check-sub "yank")) ((looking-at "z") (vip-check-sub "z"))) (exchange-point-and-mark)) (defun vip-get-ex-token () "get an ex-token which is either an address or a command. a token has type \(command, address, end-mark\) and value." (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (cond ((looking-at "[k#]") (setq ex-token-type "command") (setq ex-token (char-to-string (following-char))) (forward-char 1)) ((looking-at "[a-z]") (vip-get-ex-com-subr)) ((looking-at "\\.") (forward-char 1) (setq ex-token-type "dot")) ((looking-at "[0-9]") (set-mark (point)) (re-search-forward "[0-9]*") (setq ex-token-type (cond ((string= ex-token-type "plus") "add-number") ((string= ex-token-type "minus") "sub-number") (t "abs-number"))) (setq ex-token (string-to-number (buffer-substring (point) (mark 'force))))) ((looking-at "\\$") (forward-char 1) (setq ex-token-type "end")) ((looking-at "%") (forward-char 1) (setq ex-token-type "whole")) ((looking-at "+") (cond ((or (looking-at "+[-+]") (looking-at "+[\n|]")) (forward-char 1) (insert "1") (backward-char 1) (setq ex-token-type "plus")) ((looking-at "+[0-9]") (forward-char 1) (setq ex-token-type "plus")) (t (error "Badly formed address")))) ((looking-at "-") (cond ((or (looking-at "-[-+]") (looking-at "-[\n|]")) (forward-char 1) (insert "1") (backward-char 1) (setq ex-token-type "minus")) ((looking-at "-[0-9]") (forward-char 1) (setq ex-token-type "minus")) (t (error "Badly formed address")))) ((looking-at "/") (forward-char 1) (set-mark (point)) (let ((cont t)) (while (and (not (eolp)) cont) ;;(re-search-forward "[^/]*/") (re-search-forward "[^/]*\\(/\\|\n\\)") (if (not (vip-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\/")) (setq cont nil)))) (backward-char 1) (setq ex-token (buffer-substring (point) (mark 'force))) (if (looking-at "/") (forward-char 1)) (setq ex-token-type "search-forward")) ((looking-at "\\?") (forward-char 1) (set-mark (point)) (let ((cont t)) (while (and (not (eolp)) cont) ;;(re-search-forward "[^\\?]*\\?") (re-search-forward "[^\\?]*\\(\\?\\|\n\\)") (if (not (vip-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\\\?")) (setq cont nil)) (backward-char 1) (if (not (looking-at "\n")) (forward-char 1)))) (setq ex-token-type "search-backward") (setq ex-token (buffer-substring (1- (point)) (mark 'force)))) ((looking-at ",") (forward-char 1) (setq ex-token-type "comma")) ((looking-at ";") (forward-char 1) (setq ex-token-type "semi-colon")) ((looking-at "[!=><&~]") (setq ex-token-type "command") (setq ex-token (char-to-string (following-char))) (forward-char 1)) ((looking-at "'") (setq ex-token-type "goto-mark") (forward-char 1) (cond ((looking-at "'") (setq ex-token nil)) ((looking-at "[a-z]") (setq ex-token (following-char))) (t (error "Marks are ' and a-z"))) (forward-char 1)) ((looking-at "\n") (setq ex-token-type "end-mark") (setq ex-token "goto")) (t (error "illegal token"))))) (defun vip-ex (&optional string) "ex commands within VIP." (interactive) (or string (setq ex-g-flag nil ex-g-variant nil)) (let ((com-str (or string (vip-read-string ":"))) (address nil) (cont t) (dot (point))) (save-window-excursion (set-buffer (get-buffer-create " *ex-working-space*")) (delete-region (point-min) (point-max)) (insert com-str "\n") (goto-char (point-min))) (setq ex-token-type "") (setq ex-addresses nil) (while cont (vip-get-ex-token) (cond ((or (string= ex-token-type "command") (string= ex-token-type "end-mark")) (if address (setq ex-addresses (cons address ex-addresses))) (cond ((string= ex-token "global") (ex-global nil) (setq cont nil)) ((string= ex-token "v") (ex-global t) (setq cont nil)) (t (vip-execute-ex-command) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (cond ((looking-at "|") (forward-char 1)) ((looking-at "\n") (setq cont nil)) (t (error "Extra character at end of a command"))))))) ((string= ex-token-type "non-command") (error (format "%s: Not an editor command" ex-token))) ((string= ex-token-type "whole") (setq ex-addresses (cons (point-max) (cons (point-min) ex-addresses)))) ((string= ex-token-type "comma") (setq ex-addresses (cons (if (null address) (point) address) ex-addresses))) ((string= ex-token-type "semi-colon") (if address (setq dot address)) (setq ex-addresses (cons (if (null address) (point) address) ex-addresses))) (t (let ((ans (vip-get-ex-address-subr address dot))) (if ans (setq address ans)))))))) (defun vip-get-ex-pat () "get a regular expression and set ex-variant if found" (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "!") (progn (setq ex-g-variant (not ex-g-variant) ex-g-flag (not ex-g-flag)) (forward-char 1) (skip-chars-forward " \t"))) (if (looking-at "/") (progn (forward-char 1) (set-mark (point)) (let ((cont t)) (while (and (not (eolp)) cont) (re-search-forward "[^/]*\\(/\\|\n\\)") ;;(re-search-forward "[^/]*/") (if (not (vip-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\/")) (setq cont nil)))) (setq ex-token (if (= (mark 'force) (point)) "" (buffer-substring (1- (point)) (mark 'force)))) (backward-char 1)) (setq ex-token nil)))) (defun vip-get-ex-command () "get an ex command" (save-window-excursion (set-buffer " *ex-working-space*") (if (looking-at "/") (forward-char 1)) (skip-chars-forward " \t") (cond ((looking-at "[a-z]") (vip-get-ex-com-subr) (if (string= ex-token-type "non-command") (error "%s: not an editor command" ex-token))) ((looking-at "[!=><&~]") (setq ex-token (char-to-string (following-char))) (forward-char 1)) (t (error "Could not find an ex command"))))) (defun vip-get-ex-opt-gc () "get an ex option g or c" (save-window-excursion (set-buffer " *ex-working-space*") (if (looking-at "/") (forward-char 1)) (skip-chars-forward " \t") (cond ((looking-at "g") (setq ex-token "g") (forward-char 1) t) ((looking-at "c") (setq ex-token "c") (forward-char 1) t) (t nil)))) (defun vip-default-ex-addresses (&optional whole-flag) "compute default addresses. whole-flag means whole buffer." (cond ((null ex-addresses) (setq ex-addresses (if whole-flag (cons (point-max) (cons (point-min) nil)) (cons (point) (cons (point) nil))))) ((null (cdr ex-addresses)) (setq ex-addresses (cons (car ex-addresses) ex-addresses))))) (defun vip-get-ex-address () "get an ex-address as a marker and set ex-flag if a flag is found" (let ((address (point-marker)) (cont t)) (setq ex-token "") (setq ex-flag nil) (while cont (vip-get-ex-token) (cond ((string= ex-token-type "command") (if (or (string= ex-token "print") (string= ex-token "list") (string= ex-token "#")) (progn (setq ex-flag t) (setq cont nil)) (error "address expected"))) ((string= ex-token-type "end-mark") (setq cont nil)) ((string= ex-token-type "whole") (error "a trailing address is expected")) ((string= ex-token-type "comma") (error "Extra characters after an address")) (t (let ((ans (vip-get-ex-address-subr address (point-marker)))) (if ans (setq address ans)))))) address)) (defun vip-get-ex-address-subr (old-address dot) "returns an address as a point" (let ((address nil)) (if (null old-address) (setq old-address dot)) (cond ((string= ex-token-type "dot") (setq address dot)) ((string= ex-token-type "add-number") (save-excursion (goto-char old-address) (forward-line (if (= old-address 0) (1- ex-token) ex-token)) (setq address (point-marker)))) ((string= ex-token-type "sub-number") (save-excursion (goto-char old-address) (forward-line (- ex-token)) (setq address (point-marker)))) ((string= ex-token-type "abs-number") (save-excursion (goto-char (point-min)) (if (= ex-token 0) (setq address 0) (forward-line (1- ex-token)) (setq address (point-marker))))) ((string= ex-token-type "end") (setq address (point-max-marker))) ((string= ex-token-type "plus") t);; do nothing ((string= ex-token-type "minus") t);; do nothing ((string= ex-token-type "search-forward") (save-excursion (ex-search-address t) (setq address (point-marker)))) ((string= ex-token-type "search-backward") (save-excursion (ex-search-address nil) (setq address (point-marker)))) ((string= ex-token-type "goto-mark") (save-excursion (if (null ex-token) (exchange-point-and-mark) (goto-char (register-to-point (- ex-token (- ?a ?\C-a))))) (setq address (point-marker))))) address)) (defun ex-search-address (forward) "search pattern and set address" (if (string= ex-token "") (if (null vip-s-string) (error "No previous search string") (setq ex-token vip-s-string)) (setq vip-s-string ex-token)) (if forward (progn (forward-line 1) (re-search-forward ex-token)) (forward-line -1) (re-search-backward ex-token))) (defun vip-get-ex-buffer () "get a buffer name and set ex-count and ex-flag if found" (setq ex-buffer nil) (setq ex-count nil) (setq ex-flag nil) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "[a-zA-Z]") (progn (setq ex-buffer (following-char)) (forward-char 1) (skip-chars-forward " \t"))) (if (looking-at "[0-9]") (progn (set-mark (point)) (re-search-forward "[0-9][0-9]*") (setq ex-count (string-to-number (buffer-substring (point) (mark 'force)))) (skip-chars-forward " \t"))) (if (looking-at "[pl#]") (progn (setq ex-flag t) (forward-char 1))) (if (not (looking-at "[\n|]")) (error "Illegal extra characters")))) (defun vip-get-ex-count () (setq ex-variant nil ex-count nil ex-flag nil) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "!") (progn (setq ex-variant t) (forward-char 1))) (skip-chars-forward " \t") (if (looking-at "[0-9]") (progn (set-mark (point)) (re-search-forward "[0-9][0-9]*") (setq ex-count (string-to-number (buffer-substring (point) (mark 'force)))) (skip-chars-forward " \t"))) (if (looking-at "[pl#]") (progn (setq ex-flag t) (forward-char 1))) (if (not (looking-at "[\n|]")) (error "Illegal extra characters")))) (defun vip-get-ex-file () "get a file name and set ex-variant, ex-append and ex-offset if found" (setq ex-file nil ex-variant nil ex-append nil ex-offset nil) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "!") (progn (setq ex-variant t) (forward-char 1) (skip-chars-forward " \t"))) (if (looking-at ">>") (progn (setq ex-append t ex-variant t) (forward-char 2) (skip-chars-forward " \t"))) (if (looking-at "+") (progn (forward-char 1) (set-mark (point)) (re-search-forward "[ \t\n]") (backward-char 1) (setq ex-offset (buffer-substring (point) (mark 'force))) (forward-char 1) (skip-chars-forward " \t"))) (set-mark (point)) (re-search-forward "[ \t\n]") (backward-char 1) (setq ex-file (buffer-substring (point) (mark 'force))))) (defun vip-execute-ex-command () "execute ex command using the value of addresses." (cond ((string= ex-token "goto") (ex-goto)) ((string= ex-token "copy") (ex-copy nil)) ((string= ex-token "delete") (ex-delete)) ((string= ex-token "edit") (ex-edit)) ((string= ex-token "file") (vip-info-on-file)) ;((string= ex-token "global") (ex-global nil)) ((string= ex-token "join") (ex-line "join")) ((string= ex-token "k") (ex-mark)) ((string= ex-token "mark") (ex-mark)) ((string= ex-token "map") (ex-map)) ((string= ex-token "move") (ex-copy t)) ((string= ex-token "put") (ex-put)) ((string= ex-token "quit") (ex-quit)) ((string= ex-token "read") (ex-read)) ((string= ex-token "set") (ex-set)) ((string= ex-token "shell") (ex-shell)) ((string= ex-token "substitute") (ex-substitute)) ((string= ex-token "stop") (suspend-emacs)) ((string= ex-token "t") (ex-copy nil)) ((string= ex-token "tag") (ex-tag)) ((string= ex-token "undo") (vip-undo)) ((string= ex-token "unmap") (ex-unmap)) ;((string= ex-token "v") (ex-global t)) ((string= ex-token "version") (vip-version)) ((string= ex-token "visual") (ex-edit)) ((string= ex-token "write") (ex-write nil)) ((string= ex-token "wq") (ex-write t)) ((string= ex-token "yank") (ex-yank)) ((string= ex-token "!") (ex-command)) ((string= ex-token "=") (ex-line-no)) ((string= ex-token ">") (ex-line "right")) ((string= ex-token "<") (ex-line "left")) ((string= ex-token "&") (ex-substitute t)) ((string= ex-token "~") (ex-substitute t t)) ((or (string= ex-token "append") (string= ex-token "args") (string= ex-token "change") (string= ex-token "insert") (string= ex-token "open") ) (error "%s: no such command from VIP" ex-token)) ((or (string= ex-token "abbreviate") (string= ex-token "list") (string= ex-token "next") (string= ex-token "print") (string= ex-token "preserve") (string= ex-token "recover") (string= ex-token "rewind") (string= ex-token "source") (string= ex-token "unabbreviate") (string= ex-token "xit") (string= ex-token "z") ) (error "%s: not implemented in VIP" ex-token)) (t (error "%s: Not an editor command" ex-token)))) (defun ex-goto () "ex goto command" (if (null ex-addresses) (setq ex-addresses (cons (point) nil))) (push-mark (point)) (goto-char (car ex-addresses)) (beginning-of-line)) (defun ex-copy (del-flag) "ex copy and move command. DEL-FLAG means delete." (vip-default-ex-addresses) (let ((address (vip-get-ex-address)) (end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (goto-char end) (save-excursion (set-mark beg) (vip-enlarge-region (mark 'force) (point)) (if del-flag (kill-region (point) (mark 'force)) (copy-region-as-kill (point) (mark 'force))) (if ex-flag (progn (with-output-to-temp-buffer "*copy text*" (princ (if (or del-flag ex-g-flag ex-g-variant) (current-kill 0) (buffer-substring (point) (mark 'force))))) (condition-case nil (progn (vip-read-string "[Hit return to continue] ") (save-excursion (kill-buffer "*copy text*"))) (quit (save-excursion (kill-buffer "*copy text*")) (signal 'quit nil)))))) (if (= address 0) (goto-char (point-min)) (goto-char address) (forward-line 1)) (insert (current-kill 0)))) (defun ex-delete () "ex delete" (vip-default-ex-addresses) (vip-get-ex-buffer) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (exchange-point-and-mark) (if ex-count (progn (set-mark (point)) (forward-line (1- ex-count))) (set-mark end)) (vip-enlarge-region (point) (mark 'force)) (if ex-flag ;; show text to be deleted and ask for confirmation (progn (with-output-to-temp-buffer " *delete text*" (princ (buffer-substring (point) (mark 'force)))) (condition-case conditions (vip-read-string "[Hit return to continue] ") (quit (save-excursion (kill-buffer " *delete text*")) (error ""))) (save-excursion (kill-buffer " *delete text*"))) (if ex-buffer (if (and (<= ?A ex-buffer) (<= ex-buffer ?Z)) (vip-append-to-register (+ ex-buffer 32) (point) (mark 'force)) (copy-to-register ex-buffer (point) (mark 'force) nil))) (delete-region (point) (mark 'force)))))) (defun ex-edit () "ex-edit" (vip-get-ex-file) (if (and (not ex-variant) (buffer-modified-p) buffer-file-name) (error "No write since last change \(:e! overrides\)")) (vip-change-mode-to-emacs) (set-buffer (find-file-noselect (concat default-directory ex-file))) (vip-change-mode-to-vi) (goto-char (point-min)) (if ex-offset (progn (save-window-excursion (set-buffer " *ex-working-space*") (delete-region (point-min) (point-max)) (insert ex-offset "\n") (goto-char (point-min))) (goto-char (vip-get-ex-address)) (beginning-of-line)))) (defun ex-global (variant) "ex global command" (if (or ex-g-flag ex-g-variant) (error "Global within global not allowed") (if variant (setq ex-g-flag nil ex-g-variant t) (setq ex-g-flag t ex-g-variant nil))) (vip-get-ex-pat) (if (null ex-token) (error "Missing regular expression for global command")) (if (string= ex-token "") (if (null vip-s-string) (error "No previous search string") (setq ex-g-pat vip-s-string)) (setq ex-g-pat ex-token vip-s-string ex-token)) (if (null ex-addresses) (setq ex-addresses (list (point-max) (point-min)))) (let ((marks nil) (mark-count 0) com-str (end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (exchange-point-and-mark) (let ((cont t) (limit (point-marker))) (exchange-point-and-mark) ;; skip the last line if empty (beginning-of-line) (if (and (eobp) (not (bobp))) (backward-char 1)) (while (and cont (not (bobp)) (>= (point) limit)) (beginning-of-line) (set-mark (point)) (end-of-line) (let ((found (re-search-backward ex-g-pat (mark 'force) t))) (if (or (and ex-g-flag found) (and ex-g-variant (not found))) (progn (end-of-line) (setq mark-count (1+ mark-count)) (setq marks (cons (point-marker) marks))))) (beginning-of-line) (if (bobp) (setq cont nil) (forward-line -1) (end-of-line))))) (save-window-excursion (set-buffer " *ex-working-space*") (setq com-str (buffer-substring (1+ (point)) (1- (point-max))))) (while marks (goto-char (car marks)) ; report progress of execution on a slow machine. ;(message "Executing global command...") ;(if (zerop (% mark-count 10)) ;(message "Executing global command...%d" mark-count)) (vip-ex com-str) (setq mark-count (1- mark-count)) (setq marks (cdr marks))))) ;(message "Executing global command...done"))) (defun ex-line (com) "ex line commands. COM is join, shift-right or shift-left." (vip-default-ex-addresses) (vip-get-ex-count) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses))) point) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (exchange-point-and-mark) (if ex-count (progn (set-mark (point)) (forward-line ex-count))) (if ex-flag ;; show text to be joined and ask for confirmation (progn (with-output-to-temp-buffer " *text*" (princ (buffer-substring (point) (mark 'force)))) (condition-case conditions (progn (vip-read-string "[Hit return to continue] ") (ex-line-subr com (point) (mark 'force))) (quit (ding))) (save-excursion (kill-buffer " *text*"))) (ex-line-subr com (point) (mark 'force))) (setq point (point))) (goto-char (1- point)) (beginning-of-line))) (defun ex-line-subr (com beg end) (cond ((string= com "join") (goto-char (min beg end)) (while (and (not (eobp)) (< (point) (max beg end))) (end-of-line) (if (and (<= (point) (max beg end)) (not (eobp))) (progn (forward-line 1) (delete-region (point) (1- (point))) (if (not ex-variant) (fixup-whitespace)))))) ((or (string= com "right") (string= com "left")) (indent-rigidly (min beg end) (max beg end) (if (string= com "right") vip-shift-width (- vip-shift-width))) (goto-char (max beg end)) (end-of-line) (forward-char 1)))) (defun ex-mark () "ex mark" (let (char) (if (null ex-addresses) (setq ex-addresses (cons (point) nil))) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "[a-z]") (progn (setq char (following-char)) (forward-char 1) (skip-chars-forward " \t") (if (not (looking-at "[\n|]")) (error "Extra characters at end of \"k\" command"))) (if (looking-at "[\n|]") (error "\"k\" requires a following letter") (error "Mark must specify a letter")))) (save-excursion (goto-char (car ex-addresses)) (point-to-register (- char (- ?a ?\C-a)) nil)))) (defun ex-map () "ex map" (let (char string) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (setq char (char-to-string (following-char))) (forward-char 1) (skip-chars-forward " \t") (if (looking-at "[\n|]") (error "Missing rhs")) (set-mark (point)) (end-of-buffer) (backward-char 1) (setq string (buffer-substring (mark 'force) (point)))) (if (not (lookup-key ex-map char)) (define-key ex-map char (or (lookup-key vip-vi-mode-map char) 'vip-nil))) (define-key vip-vi-mode-map char (eval (list 'quote (cons 'lambda (list '(count) '(interactive "p") (list 'execute-kbd-macro string 'count)))))))) (defun ex-unmap () "ex unmap" (let (char) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (setq char (char-to-string (following-char))) (forward-char 1) (skip-chars-forward " \t") (if (not (looking-at "[\n|]")) (error "Macro must be a character"))) (if (not (lookup-key ex-map char)) (error "That macro wasn't mapped")) (define-key vip-vi-mode-map char (lookup-key ex-map char)) (define-key ex-map char nil))) (defun ex-put () "ex put" (let ((point (if (null ex-addresses) (point) (car ex-addresses)))) (vip-get-ex-buffer) (setq vip-use-register ex-buffer) (goto-char point) (if (= point 0) (vip-Put-back 1) (vip-put-back 1)))) (defun ex-quit () "ex quit" (let (char) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (setq char (following-char))) (if (eq char ?!) (kill-emacs t) (save-buffers-kill-emacs)))) (defun ex-read () "ex read" (let ((point (if (null ex-addresses) (point) (car ex-addresses))) (variant nil) command file) (goto-char point) (if (not (= point 0)) (next-line 1)) (beginning-of-line) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "!") (progn (setq variant t) (forward-char 1) (skip-chars-forward " \t") (set-mark (point)) (end-of-line) (setq command (buffer-substring (mark 'force) (point)))) (set-mark (point)) (re-search-forward "[ \t\n]") (backward-char 1) (setq file (buffer-substring (point) (mark 'force))))) (if variant (shell-command command t) (insert-file file)))) (defun ex-set () (eval (list 'setq (read-variable "Variable: ") (eval (read-minibuffer "Value: "))))) (defun ex-shell () "ex shell" (vip-change-mode-to-emacs) (shell)) (defun ex-substitute (&optional repeat r-flag) "ex substitute. If REPEAT use previous reg-exp which is ex-reg-exp or vip-s-string" (let (pat repl (opt-g nil) (opt-c nil) (matched-pos nil)) (if repeat (setq ex-token nil) (vip-get-ex-pat)) (if (null ex-token) (setq pat (if r-flag vip-s-string ex-reg-exp) repl ex-repl) (setq pat (if (string= ex-token "") vip-s-string ex-token)) (setq vip-s-string pat ex-reg-exp pat) (vip-get-ex-pat) (if (null ex-token) (setq ex-token "" ex-repl "") (setq repl ex-token ex-repl ex-token))) (while (vip-get-ex-opt-gc) (if (string= ex-token "g") (setq opt-g t) (setq opt-c t))) (vip-get-ex-count) (if ex-count (save-excursion (if ex-addresses (goto-char (car ex-addresses))) (set-mark (point)) (forward-line (1- ex-count)) (setq ex-addresses (cons (point) (cons (mark 'force) nil)))) (if (null ex-addresses) (setq ex-addresses (cons (point) (cons (point) nil))) (if (null (cdr ex-addresses)) (setq ex-addresses (cons (car ex-addresses) ex-addresses))))) ;(setq G opt-g) (let ((beg (car ex-addresses)) (end (car (cdr ex-addresses))) (cont t) eol-mark) (save-excursion (vip-enlarge-region beg end) (let ((limit (save-excursion (goto-char (max (point) (mark 'force))) (point-marker)))) (goto-char (min (point) (mark 'force))) (while (< (point) limit) (end-of-line) (setq eol-mark (point-marker)) (beginning-of-line) (if opt-g (progn (while (and (not (eolp)) (re-search-forward pat eol-mark t)) (if (or (not opt-c) (y-or-n-p "Replace? ")) (progn (setq matched-pos (point)) (replace-match repl)))) (end-of-line) (forward-char)) (if (and (re-search-forward pat eol-mark t) (or (not opt-c) (y-or-n-p "Replace? "))) (progn (setq matched-pos (point)) (replace-match repl))) (end-of-line) (forward-char)))))) (if matched-pos (goto-char matched-pos)) (beginning-of-line) (if opt-c (message "done")))) (defun ex-tag () "ex tag" (let (tag) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (set-mark (point)) (skip-chars-forward "^ |\t\n") (setq tag (buffer-substring (mark 'force) (point)))) (if (not (string= tag "")) (setq ex-tag tag)) (vip-change-mode-to-emacs) (condition-case conditions (progn (if (string= tag "") (find-tag ex-tag t) (find-tag-other-window ex-tag)) (vip-change-mode-to-vi)) (error (vip-change-mode-to-vi) (vip-message-conditions conditions))))) (defun ex-write (q-flag) "ex write" (vip-default-ex-addresses t) (vip-get-ex-file) (if (string= ex-file "") (progn (if (null buffer-file-name) (error "No file associated with this buffer")) (setq ex-file buffer-file-name)) (setq ex-file (expand-file-name ex-file))) (if (and (not (string= ex-file (buffer-file-name))) (file-exists-p ex-file) (not ex-variant)) (error "\"%s\" File exists - use w! to override" ex-file)) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (write-region (point) (mark 'force) ex-file ex-append t))) (if (null buffer-file-name) (setq buffer-file-name ex-file)) (if q-flag (save-buffers-kill-emacs))) (defun ex-yank () "ex yank" (vip-default-ex-addresses) (vip-get-ex-buffer) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (exchange-point-and-mark) (if (or ex-g-flag ex-g-variant) (error "Can't yank within global")) (if ex-count (progn (set-mark (point)) (forward-line (1- ex-count))) (set-mark end)) (vip-enlarge-region (point) (mark 'force)) (if ex-flag (error "Extra characters at end of command")) (if ex-buffer (copy-to-register ex-buffer (point) (mark 'force) nil)) (copy-region-as-kill (point) (mark 'force))))) (defun ex-command () "execute shell command" (let (command) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (set-mark (point)) (end-of-line) (setq command (buffer-substring (mark 'force) (point)))) (if (null ex-addresses) (shell-command command) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (null beg) (setq beg end)) (save-excursion (goto-char beg) (set-mark end) (vip-enlarge-region (point) (mark 'force)) (shell-command-on-region (point) (mark 'force) command t)) (goto-char beg))))) (defun ex-line-no () "print line number" (message "%d" (1+ (count-lines (point-min) (if (null ex-addresses) (point-max) (car ex-addresses)))))) (if (file-exists-p vip-startup-file) (load vip-startup-file)) (provide 'vip) ;;; vip.el ends here ddskk-15.2/READMEs/0000755000570400056700000000000012434434721013726 5ustar kitamotoopenlabddskk-15.2/READMEs/AUTHORS.ja0000644000570400056700000002772512322754120015376 0ustar kitamotoopenlabSKK $B$OHs>o$KB?$/$N?M!9$N9W8%$K$h$j8=:_$N7A$K$^$GH/E8$7$F$-$^$7$?!#$3$N(B $B%U%!%$%k$G$O!"8=:_(B SKK Openlab $B$K$F3+H/$7$F$$$k%W%m%0%i%`!&<-=q$NCx\:Y$OJ,$+$i$J$$$N$GIT@53N(B $B$G$9!#86:nL><+F0=hM}(B) *** skk-comp.el (from skk.el, $BJd405!G=(B) *** skk-gadget.el (from skk.el, elisp $BC18lF~NO%U%)!<%`$N3+H/(B *** $B?7$7$$(B SKK $B<-=q$NDI2C(B **** SKK-JISYO.assoc ($B8+=P$78l$H8uJd$H$N4V$K0lDj$NO"A[4X78$,$"$k%(%s%H%j=8(B) **** SKK-JISYO.mazegaki ($B$+$J4A;z:.$8$j$N8+=P$78l$r8!:w$9$k<-=q(B) *** $B3F<-=q(B) **** SKK-JISYO.law ($BK!N'MQ8l<-=q(B) **** SKK-JISYO.okinawa ($B2-Fl<-=q%W%m%8%'%/%H$N@.2L$r4p$K$7$?<-=q(B) **** SKK-JISYO.pubdic (pubdic $B$r(B SKK $B7A<0$KJQ49$7$?<-=q(B) ** elisp $BCx:n!&%"%$%G%"(B *** APEL $B$NF3F~$H(B APEL $BK\BN$X$N9W8%(B *** SKK-MK ($B%$%s%9%H!<%k%9%/%j%W%H(B) *** skk-abbrev.el (Emacs $B$N(B abbrev $B$rMxMQ$7$?Jd40$HJQ49(B) *** skk-annotation.el ($BCmA0JQ99JQ?t4X?t$N%A%'%C%/(B) *** skk-rdbms.el (PostgreSQL $B$N%G!<%?%Y!<%95!G=$rMxMQ$7$?JQ49(B) *** skk-setup.el.in (SKK $B$N<+F0@_Dj(B) *** skk-study.el ($B3X=,5!9=(B) *** skk-version.el (SKK $B%P!<%8%g%s>pJs(B) *** skk-w3m.el (w3m $B$rMxMQ$7$?(B web $B8!:w%(%s%8%s$K$h$k8!:w(B) *** XEmacs $B%5%]!<%H(B *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk.el, skk-bayesian.el, skk-macs.el, skk-vars.el, skk-hint.el, skk-dic.el.in, skk-num.el, skk-viper.el, skk-auto.el, skk-tut.el, skk-jisx0201.el, skk-gadget.el, skk-tutcode.el, skk-cursor.el, skk-server.el, skk-kcode.el, ccc.el ** $B%I%-%e%a%s%H<9I.!&@0Hw(B * Hideki Sakurada ** $B<-=q(B) *** SKK-JISYO.S $B$N3+H/$H0];}(B ** elisp $B%a%s%F%J%s%9(B *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk-tut.el, skk-kcode.el ** $B%I%-%e%a%s%H@0Hw(B * MITA Yuusuke ** SKK $B<-=q$N3HD%!"0];}(B *** SKK $B<-=q(B Wiki $B$NpJs$N$?$a$N<-=q(B) **** SKK-JISYO.propernoun ($B8GM-L>;l$N<-=q(B) **** SKK-JISYO.station ($BE4F;$N1XL>$*$h$SO)@~L>$N<-=q(B) *** $B3FO?<-=q(B) *** SKK $B<-=q%D!<%k$N3+H/$H0];}(B **** ruby $B$K$h$k(B SKK $B<-=q$N2C9)!&JT;<%D!<%k(B ** elisp $BCx:n!&%"%$%G%"(B *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk.el, skk-annotation.el *** SKK $B%U%m%s%H%(%s%I$+$i$N(B SKK $B<-=qMxMQK!$K4X$9$kDs8@(B (see ML archives) * Tsuyoshi AKIHO ** $B%I%-%e%a%s%H<9I.!&@0Hw!"$H$/$K(B skk.texi $B$rCf?4$H$7$F(B ** elisp $BCx:n!&%"%$%G%"(B *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk.el, skk-exsearch.el, skk-vars.el, skk-annotation.el, skk-tut.el, skk-vars.el, skk-leim.el, skk-kakasi.el, skk-rdms.el, skk-jisx0201.el * Yuh Ohmura ** $B%$%s%9%H!<%k4D6-$N@0Hw(B *** make1.bat *** makeit.bat ** $B%I%-%e%a%s%H@0Hw(B ** elisp $B%a%s%F%J%s%9(B *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk.el * Eiji Obata ** SKK $B<-=q$N3HD%!"0];}(B *** $BB??t$N?75,%(%s%H%jDI2C(B ** elisp $BCx:n!&%"%$%G%"(B *** skk-dinsert.el ($BF0E*F~NO(B) *** $B8D?M<-=qJT=85!G=$N3HD%(B (skk-edit-private-jisyo) *** $BJd405!G=$N3HD%(B **** $B%W%m%0%i%`2DG=$JJd40(B (skk-completion-prog-list) **** $B%m!<%^;z(B prefix $B$+$i$NJd40(B *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk.el, skk-annotation.el, skk-server-completion.el, skk-vars.el, skk-macs.el, skk-tut.el, skk-look.el, skk-num.el, skk-azik.el, skk-comp.el, skk-look.el, skk-vars.el, skk-rdbms.el, skk-kcode.el, skk-isearch.el, skk-viper.el, skk-bayesian.el, skk-annotation.el, skk-jisyo-edit-mode.el, ** $B%I%-%e%a%s%H@0Hw(B * Itsushi Minoura ** elisp $BCx:n!&%"%$%G%"(B *** skk-nicola.el (NICOLA-SKK, SKK $B$KBP$9$k?F;X%7%U%HF~NO%$%s%?!<%U%'!<%9(B) * Tetsuo Tsukamoto ** SKK $B<-=q$N3HD%!"0];}(B *** $B3F3Q%+%JF~NO(B) *** skk-jisyo-edit-mode.el ($B<-=qJT=8MQ%a%8%c!<%b!<%I(B) *** skk-kanagaki.el ($B$+$JG[Ns%-!<%\!<%I%5%]!<%H(B) *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk.el, ccc.el, skk-annotation.el, skk-comp.el, skk-cursor.el, skk-dcomp.el, skk-develop.el, skk-e21.el, skk-gadget.el, skk-isearch.el, skk-kcode.el, skk-leim.el, skk-look.el, skk-macs.el, skk-num.el, skk-server.el, skk-tut.el, skk-vars.el, skk-xemacs.el, skk-nicola.el ** $B%I%-%e%a%s%H<9I.!&@0Hw(B * FURUE Hideyuki ** elisp $BCx:n!&%"%$%G%"(B *** $B3NDj>pJs$N$_$N%"%s%I%%5!G=(B *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk.el, skk-vars.el, skk-macs.el, skk-comp.el, skk-kakasi.el, skk-num.el, skk-kcode.el, skk-isearch.el, skk-cursor.el, * GUNJI Takao ** elisp $BCx:n!&%"%$%G%"(B *** skk-tutcode.el (TUT-code $BF~NO$X$NBP1~(B) * Yoshiki Hayashi ** elisp $BCx:n!&%"%$%G%"(B *** skk-hint.el ($B%R%s%H$NF~NO$K$h$k8uJd9J$j9~$_(B) *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk-vars.el * ONODA Arata ** elisp $BCx:n!&%"%$%G%"(B *** skk-azik.el ($B3HD%%m!<%^;zF~NO(B "AZIK" $BBP1~(B) * YAGI Tatsuya ** elisp $BCx:n!&%"%$%G%"(B *** skk-tankan.el ($BC14A;zJQ49(B) * Kimura Fuyuki ** SKK $B<-=q$N3HD%!"0];}(B *** $BB??t$N?75,%(%s%H%jDI2C(B ** SKK $B<-=q%D!<%k$X$N9W8%(B *** skkdic-diff.scm ($B<-=q4V$N:9J,$r??s,F;7A<0$G=PNO(B) * Kenichi Kurihara ** elisp $BCx:n!&%"%$%G%"(B *** skk-bayesian.el, bskk ($B?J2=$7$?3X=,5!G=(B) *** $B0J2<$N%W%m%0%i%`$X$N2~JQ(B **** skk-kakasi.el, skk-viper.el * Tsuyoshi Kitamoto ** elisp $BCx:n!&%"%$%G%"(B *** $BC14A;z$NAm2h?t$K$h$k8!:w(B *** $BC14A;z$NIt!W$GO"B3$7$F$f$/M=Dj$G$9!#@P661X$G:e5^JuDM@~$K>h49$($FBg:eG_ED(B $B=*E@$^$G$H$j$"$($:9T$/M=Dj$G$9!#$=$3$+$i:e5^?@8M@~$K>h$j7Q$0$bNI$7!"(BJR $B$K>h(B $B49$($k$bNI$7!"CzEY$=$N$H$-$K(B TAG $B$rIU$1$??M$,7h$a$F2<$5$$!#(B ** $BJQ998D=j(B skk-version.el $B$NCf$N(B (put 'skk-version 'codename "Syounai") "Syounai" $B$N$h$&$K$J$C$F$$$k$H$3$m$G$9!#(B"$B1XL>(B" $B$r%m!<%^;zI85-$7$F2<$5(B $B$$!#$3$3$rJQ99$9$k$3$H$G(B M-x skk-version $B$G(B Codename $B$r4^$a$?I=<($,$5(B $B$l$k$h$&$K$J$j$^$9!#(B M-x skk-version => Daredevil SKK/14.1 (Syounai) *** 2013-03-17 skk-version.el $B$K4A;z1XL>$rDI2C$7$^$7$?!#(B (put 'skk-version 'codename-ja "$BD9K|It(B") $BF1;~$K!"?7$?$JJQ?t(B skk-version-codename-ja $B$bDI2C$7$^$7$?!#$3$NJQ?t$,(B non-nil $B$G$"$l$P(B M-x skk-version $B$G(B Codename $B$O4A;z1XL>$,I=<($5$l$^$9!#(B (let ((skk-version-codename-ja t)) (skk-version)) => Daredevil SKK/15.1.51 ($BD9K|It(B) ** $B$=$NB>(B o $B%?%/%7!<$O1X$,$J$$$N$GBLL\$G$9!#(B o $B8x6&$N8rDL5!4X$G$"$l$P$I$3$N2qh$j7Q$.$N$H$-$O!"J*M}E*$K(B $B>h$j7Q$.$,$G$-$k$b$N$K>h$k$3$H$K$7$^$7$g$&(B ($BELJb$G;3$r1[$($?$i>h$l$k(B... $B$J$I$O86B'$J$7(B)$B!#(B o $B=*E@$^$G9T$+$:$H$b!"ESCf$GB>h$j7Q$0$3$H$b<+M3$G$9!#(B o $B5^9T!"FC5^$J$I$K>h$C$F%m!<%+%k1X$r%Q%9$9$k$J$I$NN"5;$O$"$j!#(B o $B0[$J$kO)@~$GF1$81X$rFsEYDL2a$7$F$bF1$8(B Codename $B$O(B 2 $BEY=P$5$J$$$3$H$K$7$^(B $B$9!#(B ** $Bh49$($?$H$-$K!"$3$N%U%!%$%k(B $B$K@Z$j$NNI$$$H$3$m$^$G$N1XL>$r=q$$$F2<$5$$!#(B $BFC$K(B JR $B0J30$N1XL>$rD4$Y$k$N$O!"0[$J$kCO0h$N?M4V$K$H$C$F$O7k9=Fq$7$$$N$G!"I,(B $B$:=q$$$F2<$5$$!#(B * $B:e5^L'LL@~!"JuDM@~(B $BL'LL(B Mino-o --- $B:e5^L'LL@~(B --- $BBg:eI\(B $BKRMn(B Makiochi $B:y0f(B Sakurai $B@P66(B Ishibashi --- $B:e5^JuDM@~(B $B7VCS(B($BBg:e6u9AA0(B) Hotarugaike $BK-Cf(B Toyonaka 11.6.0 $B2,D.(B Okamachi 12.1.0 $BA>:,(B Sone 12.2.0 $BI~It(B Hattori 13.1 $B>1Fb(B Syounai 14.1 $B;09q(B Mikuni 14.2 $B==;0(B Juso 14.3 $BCfDE(B Nakatsu 14.4 $BG_ED(B Umeda 15.1 * $BO)@~$NJQ99(B 2013-3-17 (Sun) $BKLK\9d(B $BG_ED(B (15.1) $B$+$i@h$OL$5-:\$G$7$?!#Ev%U%!%$%k@hF,ItJ,$K(B $B!V=*E@(B ($BBg:eG_ED(B) $B$+$i@h$O:e5^?@8M@~$K>h$j7Q$0$bNI$7!"(BJR $B$K>h49$($k$bNI$7!W(B $B$HJ}?K$,=R$Y$i$l$F$$$^$9$,!"F1$8$/!"(B $B!VCzEY$=$N$H$-$K(B TAG $B$rIU$1$??M$,7h$a$F2<$5$$!#!W(B $B$H$b5-:\$,$"$j$7$?$N$G!"$3$l$r3HBg2r>Fb(B Kuromatsunai $BG.n>(B Neppu $BL\L>(B Mena $BMv1[(B Rankoshi $B:+I[(B Kombu $B%K%;%3(B Niseko $BHfMeIW(B Hirafu $B6fCN0B(B Kutchan $B>.Bt(B Kozawa $B6d;3(B Ginzan $BA3JL(B Shikaribetsu $B?NLZ(B Niki $BM>;T(B Yoichi $BMvEg(B Ranshima $B1vC+(B Shioya $B>.C.(B Otaru http://www.jrhokkaido.co.jp/network/img/routemap_j.pdf http://www2.jrhokkaido.co.jp/global/english/rmap/route_map.pdf * Next, where shall we go? Local variables: mode: outline end: ddskk-15.2/READMEs/COPYING0000644000570400056700000004310310612545243014760 0ustar kitamotoopenlab GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. ddskk-15.2/READMEs/CVS_digest.ja0000644000570400056700000001724111331566246016244 0ustar kitamotoopenlab[CVS $B%@%$%8%'%9%H(B] * cvs repository tree $CVSROOT(openlab.jp:/circus/cvsroot) | | +-- skk --+-- main (Main distribution -- Emacs Lisp, tutorials, etc) | | +-- dic (Dictionaries) | | +-- tools (Dictionary maintenance tools) | | +-- pySKK (SKK related libraries using python) | | +-- web (Web page html files) * cvs main trunk/branch history map +---------+ +---------+ legacy branch | 10.62.2 |----| 10.62.x | / +---------+ +---------+ / / +----------------+ +------------------+ +---------------+ +-----+ +-----+ |10.62 (skk10_62)|----|10.62a (skk10_62a)|----| 11.3 (Sakurai)|----|11.4 |----|11.x | <- The main trunk +----------------+ +------------------+ +---------------+ +-----+ +-----+ (daredevil skk) / / / +-----+ +-----+ +-----+ daredevil branch |11.1 |----|11.2 |----|11.x | +-----+ +-----+ +-----+ * cvs $B$NF~\:Y$K$D$$$F$O(B CVS_on_Windows $B$r$4Mw2<$5$$!#(B cvs $B$K4X$9$k>pJs$O(B http://www.nongnu.org/cvs/ $B$+$iF~pJs$H$7$F!"0J2<$N$h$&$J%Z!<%8$,$"$j$^$9!#(B http://radiofly.to/nishi/cvs/ http://www.itojun.org/hack/cvs/tut-kernel.html $B$J$*!"(BEmacs 21.x $B$G$O(B pcvs (pcl-cvs) $B$H$$$&%U%m%s%H%(%s%I$,IUB0$7$F$$(B $B$^$9!#(B * cvs $B%5!<%P$+$i$N(B SKK $B%=!<%9$NF~(B ($BC"$7JT=87k2L$r(B server $B$N%=!<%9$KH?1G$9$k$K$O$4<+J,@lMQ$N(B account $B$,I,MW$G$9!#(Bcvs account $B$NH/9T$r;2>H(B)$B!#(B ** Update $B%o!<%-%s%0%3%T!<$O;D$7$F$*$/$H!"(Bcvs server $B>e$N%=!<%9$KJQ99$,2C$($i$l(B $B$?$H$-$K:9J,$@$1uBV$K$9$k$3$H$,$G$-(B $B$^$9!#(B $B%o!<%-%s%0%3%T!<$O!"(Bopenlab.jp:/circus/cvsroot $B$r;X$7$F$$$k$3(B $B$H$r5-21$7$F$$$k(B (*$BCm(B3) $B$N$G!"(Bupdate $B$+$i;O$a$k$H!"<+F0E*$K%m%0%$%s$G(B $B$-$^$9!#(B $ cvs update -dP update $B$N(B -d $B%*%W%7%g%s$O(B repoitory $B>e$KB8:_$7$F$$$k$N$K!"e$K$J$$%G%#%l%/%H%j$,$"$l$PDI2C$7!"(B-P $B%*%W%7%g%s$O5U$K(B repositry $B>e$KB8:_$7$J$$%G%#%l%/%H%j$r(B working copy $B$+$i>C$75n$j$^$9!#(B .cvsrc $B%U%!%$%k$K(B update -dP $B$H=q$$$F$*$-!">o$K$3$l$i$N%*%W%7%g%s$rIU$1$k$3$H$r$*4+$a$7$^$9!#(B * $BIU$-$,K>$^$7$$(B)$B!#EPO?40N;$NDLCN$r$*Aw$j$7$^$9!#(B OpenSSH $B$G$J$$!"K\2H>&MQ$N(B SSH2 $B$K$D$$$F$O!"F0:n3NG'$O&MQ(B SSH2 client$B"*(Bopenlab.jp $B$N(B OpenSSH $B%5!<%P$H$$$&%"%/%;%9$,2DG=$J$h$&$G$9$N$G!"$4AjCL2<$5$$!#(B ** Login SSH $B7PM3$N%"%/%;%9$K$*$$$F$O(B login $B$OI,MW$"$j$^$;$s!#(Bskk-cvs $B$H$$$&%"(B $B%+%&%s%H$r(B committer $BA40w6&DL$G;HMQ$7$^$9!#(B ** Checkout/Update % cvs -d:ext:skk-cvs@openlab.jp:/circus/cvsroot co skk/main $B$G(B checkout $B$G$-$^$9!#(Bupdate $B$J$I$bF1MM$G$9!#(B ** Commit $B2<5-$N/$J$/$H$b0lEY!"(B SKK $B$r5/F0(B & $B=*N;$7$FLdBj$,$J$$$3$H$r3NG'$7$F$M(B)$B!#(B (c)ML skk@ring.gr.jp $B$KEj9F$9$k$?$a$N%j%j!<%9%N!<%H$r=q$$$F2<$5$$(B ($Be5-$G%$%s(B $B%9%H!<%k$7$??7$?$J%o!<%-%s%0%3%T!<$+$i%3%s%Q%$%k$7$?(B SKK $B$r;HMQ$7$F(B $B=q$$$F2<$5$$!#(B (d)$B%j%j!<%9%N!<%H$N5-;v$r=q$$$F$$$k4VCf$b(B SKK $B$KLdBj$,$J$1$l$P!"%o!<%-(B $B%0%3%T!<$r(B commit $B$7$F>e5-%j%j!<%9%N!<%H$r(B ML skk@ring.gr.jp $B$KEj9F(B $B$7$F2<$5$$!#(B (e)ChangeLog $B$N99?7$r$*K:$l$J$/(B ($B1Q8l$G=q$$$F$$$^$9$,!"1Q8l$,6lDK$J$i(B $BF|K\8l$G=q$$$F$bA4A3LdBj$"$j$^$;$s(B) (*$BCm(B4) $B!#(B $ cd skk/main $ cvs commit -m "$B$"$J$?$N%3%a%s%H$r$3$3$K!#(B" ChangeLog $ cvs commit -m "$B$"$J$?$N%3%a%s%H$r$3$3$K!#(B" skk.el ** Tag Daredevil SKK, legacy branch $B$H$b$K(B Openlab $B$G%P!<%8%g%s$,?6$i$l$?%"!<(B $B%+%$%V$,8x3+$5$l$kEY$K(B tag $BIU$1$7$^$9!#(Bdaredevil $B$N(B tag $BIU$1%k!<%k$O!"(B Codename $B$H$$$&%U%!%$%k$NCf?H$r;2>H$7$F2<$5$$(B ($BC"$7!"(Btag $B$K$O6uGrJ8;z(B $B$r4^$a$k$3$H$,$G$-$J$$$h$&$J$N$G!"(Btag $BIU$1$9$k$N$O!"(BCodename $B$N$&$A!"(B $B1XL>$NItJ,$@$1$G$9(B)$B!#(B $ cvs tag (Codename) . legacy branch $B$O(Btag $B$O(B skk10_62, skk10_63, skk10_64... $B$H$$$&$U$&$KIU$1$^$9!#(B * $B5SCm(B ** $BCm(B1 $B%o!<%-%s%0%3%T!<$O!"(Bopenlab.jp:/circus/cvsroot $B$r;X$7$F$$$k$3(B $B$H$r5-21$7$F$$$k(B (*$BCm(B3) $B$N$G!"%o!<%-%s%0%3%T!<$rCV$$$F$$$k%G%#%l%/%H%j(B $B$G(B checkout, update, commit, tag $B$J$I$N(B cvs $B%3%^%s%I$r$l$N%3%^%s%I$rpJs$,J]B8$5$l$F$$$^$9!#(B ** $BCm(B4 Emacs $B$N(B cvs front end$B!"(Bpcl-cvs $B$r;H$&$H!"(Bcommit $B$N$?$a$K(B C $B%-!<(B (`cvs-mode-changelog-commit') $B$r2!$9$H(B ChangeLog $B$+$i!"EvF|(B commiter $B<+?H$,=q$$$?ItJ,$rH4$-=P$7$F!"(Blog $B$r=q$/e$G(B cvs $B$rMxMQ$7$F3+H/$K;22C$9$k:]$NCm0U(B Windows $B>e$G(B CVS $B$rMxMQ$7$F(B SKK Openlab $B$N3+H/$K;22C$9$k$H$-$O!"(B Windows $B%M%$%F%#%V$N(B cvs.exe $B$rMxMQ$7$F$O$$$1$^$;$s!#M}M3$r0J2<$K=R$Y(B $B$^$9!#(B cvs $B$G$O%j%]%8%H%j$N9TKv%3!<%I$O@55,2=$5$l$k$N$G!"(BWindows $B%M%$%F%#%V$N(B cvs.exe $B$G(B checkout $B$9$k$H(B LF $B$J%U%!%$%k$,(B CRLF $B$K$J$j$^$9!#(B Daredevil SKK $B$Oe$G3+H/$5$l$F$$$k$N$G!"H2<$5$$!#(B * cygwin $B$rMxMQ$9$k:]$NCm0UE@(B cygwin $B$N(B setup $B$G(B Default Text FileType $B$r(B Unix $B$K;XDj$7$F%$%s%9%H!<(B $B%k$7$^$7$g$&(B LF $B$r(B LF $B$N$^$^(B checkout $B$9$k$?$a$K$O(B cygwin $B$N(B cvs.exe $B$r%P%$%J%j%^%&(B $B%s%H$7$?(B filesystem $B>e$G;H$&I,MW$,$"$j$^$9!#(B cygwin root ($B@5$7$$8F$SJ}$+$I$&$+J,$+$j$^$;$s$,!"(Bcygwin $B$r%$%s%9%H!<%k(B $B$9$k:]$N(B root directory $B$G$9!#%G%#%U%)%k%HCM$O(B c:/cygwin $B$G$9(B) $B$O%P%$(B $B%J%j%^%&%s%H$5$l$F$$$^$9$N$G!"(Bc:/cygwin $B0J2<$N%G%#%l%/%H%j$K(B checkout $B$9$l$P(B OK $B$G$9!#(B $B%P%$%J%j%^%&%s%H$5$l$F$$$k$+$I$&$+$O(B cygwin $B$N(B mount $B%3%^%s%I$r$N%I%i%$%V$K%^%&%s%H$5$l$F$$$k$H$-$O(B $TEMP $B$r%P%$%J%j%^(B $B%&%s%H$7$F2<$5$$!#Nc$($P(B $TEMP=d:\tmp $B$@$H$7$?>l9g!"2<5-$N$h$&$K(B $B$7$^$9!#(B % umount /tmp ; mount -b d:\tmp /tmp Local variables: mode: outline end: ddskk-15.2/READMEs/ChangeLog0000644000570400056700000003376612421445063015514 0ustar kitamotoopenlab2014-10-21 Tsuyoshi Kitamoto * NEWS.ja: Update. 2014-10-20 Tsuyoshi Kitamoto * NEWS.ja: Update. 2014-10-19 Tsuyoshi Kitamoto * NEWS.ja: Update. 2014-09-18 Tsuyoshi Kitamoto * README.w32.ja: Emacs 24.4 $B$K$D$$$FJdB-(B. 2014-06-12 Tsuyoshi Kitamoto * INSTALL, NEWS.ja: Replace from `Mac OS X' to `Apple OS X' in comments. 2014-04-19 Tsuyoshi Kitamoto * INSTALL: Update. 2014-04-14 Tsuyoshi Kitamoto * AUTHORS.ja, NEWS.ja: Update. 2014-03-31 Tsuyoshi Kitamoto * NEWS.ja: Update. 2014-03-30 Tsuyoshi Kitamoto * Contributors: Update. 2014-03-28 Tsuyoshi Kitamoto * NEWS.ja: Update. 2014-03-09 Tsuyoshi Kitamoto * NEWS.ja: Update. 2013-08-24 Tsuyoshi Kitamoto * NEWS.ja: Update. 2013-08-18 Tsuyoshi Kitamoto * NEWS.ja, README.w32.ja: Update. 2013-07-15 Tsuyoshi Kitamoto * CODENAME.ja: Typo fixed. 2013-06-24 Tsuyoshi Kitamoto * NEWS.ja: Update. 2013-05-27 Tsuyoshi Kitamoto * AUTHORS.ja, NEWS.ja: Update. 2013-04-13 Tsuyoshi Kitamoto * CODENAME.ja: Update. 2013-03-18 Tsuyoshi Kitamoto * NEWS.ja: Update for New variable skk-version-codename-ja. 2013-03-17 Tsuyoshi Kitamoto * CODENAME.ja: Update. 2013-03-14 Tsuyoshi Kitamoto * INSTALL, NEWS.ja, README.w32.ja: Update. 2013-03-12 Tsuyoshi Kitamoto * INSTALL, NEWS.ja, PROPOSAL.ja: Update. 2013-02-05 Tsuyoshi Kitamoto * NEWS.ja, AUTHORS.ja: Update. 2013-01-20 Tsuyoshi Kitamoto * NEWS.ja, AUTHORS.ja: Update. 2013-01-14 Tsuyoshi Kitamoto * README.MacOSX.ja, PROPOSAL.ja, NEWS.ja: Update. 2012-12-23 Tsuyoshi Kitamoto * INSTALL: Update. * Contributors (Contributors): Update. 2012-12-16 Tsuyoshi Kitamoto * NEWS.ja: Update. * INSTALL: Update. 2012-10-21 Tsuyoshi Kitamoto * Contributors (Contributors): Add Yuhei Maeda. * AUTHORS.ja: Update. * NEWS.ja: Update. 2012-08-21 Tsuyoshi Kitamoto * NEWS.ja: Update. 2012-08-18 Tetsuo Tsukamoto * TODO.ja: Update. 2012-08-05 Tsuyoshi Kitamoto * NEWS.ja: Update. 2012-06-26 Tsuyoshi Kitamoto * README.w32.ja: $B!V(BSKK$BF|K\8lF~NO(BFEP$B!W$N5-=R$rDI2C(B. 2012-06-12 Tsuyoshi Kitamoto * NEWS.ja: Update. 2012-03-15 Tsuyoshi Kitamoto Suggested by $B6LLn7r0l(B . * README.MacOSX.ja: Update. 2012-01-19 Tsuyoshi Kitamoto * NEWS.ja: revision 1.97 is broken. 1.98 and 1.96 is the same content. 2012-01-08 Tsuyoshi Kitamoto * NEWS.ja: Update. 2012-01-07 Tsuyoshi Kitamoto * README.w32.ja, PROPOSAL.ja: Update. 2012-01-04 Tsuyoshi Kitamoto * CODENAME.ja: Update. 2011-12-23 Tetsuo Tsukamoto * NEWS.ja: Update for skk-isearch. 2011-12-18 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-12-17 Tetsuo Tsukamoto Suggested by Tsuyoshi Kitamoto . * NEWS.ja: Set coding to iso-2022-jp-3. 2011-12-14 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-12-07 Tsuyoshi Kitamoto * AUTHORS.ja: Update. * NEWS.ja: Update. 2011-12-06 Tetsuo Tsukamoto * AUTHORS.ja: Update. 2011-12-06 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-11-24 Tsuyoshi Kitamoto * README.w32.ja: Update. * INSTALL: Update. 2011-11-23 Tsuyoshi Kitamoto * NEWS.ja: experimental/skk-search-web.el $B$N5-=R$rDI2C(B. 2011-11-21 Tsuyoshi Kitamoto * NEWS.ja: $B!V%+!<%=%kIU6a$KF~NO%b!<%I$rI=<($9$k!W$rDI2C(B. 2011-11-14 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-11-13 Tetsuo Tsukamoto * NEWS.ja: Update. 2011-11-12 Tetsuo Tsukamoto * NEWS.ja: Update. 2011-11-07 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-10-22 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-10-21 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-07-11 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-07-08 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-07-02 Tsuyoshi Kitamoto * NEWS.ja: Update. * CODENAME.ja: Update. 2011-07-01 Tsuyoshi Kitamoto * INSTALL: Update. 2011-06-29 Tsuyoshi Kitamoto * README.w32.ja: Update. 2011-06-22 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-06-11 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-06-09 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-06-08 Tsuyoshi Kitamoto * TODO.ja: Update. 2011-06-04 Tsuyoshi Kitamoto * PROPOSAL.ja: Update. 2011-05-29 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-05-25 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-05-21 Tsuyoshi Kitamoto * TODO.ja: Update. 2011-05-18 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-04-24 Tsuyoshi Kitamoto * NEWS.ja: Update for skk-called-interactively-p. 2011-04-12 Tsuyoshi Kitamoto * NEWS.ja: Update for skk-study.el. 2011-01-07 Tsuyoshi Kitamoto * NEWS.ja: Update. 2011-01-01 Tsuyoshi Kitamoto * CODENAME.ja: Update. 2010-12-31 Tsuyoshi Kitamoto * NEWS.ja: Update. 2010-12-29 Tsuyoshi Kitamoto * INSTALL : Update. 2010-12-25 Tsuyoshi Kitamoto * NEWS.ja: Update. 2010-12-17 Tsuyoshi Kitamoto * Contributors (Contributors): Add Yu-ji Hosokawa. * NEWS.ja: Update for skk-save-jisyo-instantly. 2010-12-12 Tsuyoshi Kitamoto * TODO.ja: Update. 2010-12-11 Tsuyoshi Kitamoto * NEWS.ja: Update. 2010-12-05 Tetsuo Tsukamoto * News.ja: Update for ja-dic. 2010-12-03 Tetsuo Tsukamoto * TODO.ja: Update for a problem in skk-isearch.el. 2010-12-02 Tetsuo Tsukamoto * INSTALL: Update. 2010-11-26 Tetsuo Tsukamoto * Contributors: Add Kiyoka Nishiyama. 2010-11-22 Tetsuo Tsukamoto * NEWS.ja: Update for skk-inline.el. 2010-11-17 Tetsuo Tsukamoto * NEWS.ja: Update for skk-obsolete.el. 2010-11-15 Tetsuo Tsukamoto * README.MacOSX.ja: Update for APEL. 2010-11-14 Tetsuo Tsukamoto * NEWS.ja: Update. 2010-11-14 Tsuyoshi Kitamoto * NEWS.ja: Update. 2010-11-13 Tsuyoshi Kitamoto * NEWS.ja: Update. 2010-11-02 Tetsuo Tsukamoto * CODENAME.ja, README.w32.ja: Update. 2010-09-18 Tsuyoshi Kitamoto * NEWS.ja: Modify. 2010-09-16 Tsuyoshi Kitamoto * NEWS.ja: Update. 2010-09-01 Tetsuo Tsukamoto * INSTALL: Update. 2010-08-29 Tsuyoshi Kitamoto * NEWS.ja: Update. 2010-08-27 Tetsuo Tsukamoto * AUTHORS.ja, TODO.ja: Update. 2010-08-26 Tetsuo Tsukamoto * TODO.ja: Update. 2010-08-25 Tetsuo Tsukamoto * TODO.ja: Update. 2010-08-22 Tetsuo Tsukamoto * Contributors: Fix order. 2010-08-18 Tsuyoshi Kitamoto * INSTALL: remove README.Mac.ja related. 2010-08-17 Tetsuo Tsukamoto * AUTHORS.ja, Contributors: Add Yusuke Shinyama. * NEWS.ja: Add description for cdb.el and skk-cdb.el. * README.Mac.ja: No longer in the repository. * README.MacOSX.ja, README.w32.ja: Update for APEL. 2010-08-12 $B6LLn7r0l(B * README.MacOSX.ja: Update. 2010-08-08 $B6LLn7r0l(B * README.MacOSX.ja: Update. 2010-08-06 Tsuyoshi Kitamoto * README.w32.ja: Update. * NEWS.ja: Update. 2010-07-18 Tetsuo Tsukamoto * AUTHORS.ja, Contributors, NEWS.ja: Update. 2010-02-01 Tetsuo Tsukamoto Suggested by Kitamoto Tsuyoshi . * CVS_digest.ja: * FAQ.ja: * PROPOSAL.ja: * README.MacOSX.ja: * README.w32.ja: Always use "openlab.jp" for Open Laboratory URLs. 2010-01-30 Kitamoto Tsuyoshi * INSTALL: Always use "openlab.jp" for Open Laboratory URLs. * README: Ditto. 2010-01-30 Tetsuo Tsukamoto * News.ja: Update. 2010-01-28 Tetsuo Tsukamoto * TODO.ja: Update. 2009-11-27 Tetsuo Tsukamoto * Contributors: Update. 2009-11-14 Teika Kazura * News.ja: Add description for skk-jisyo-fix-order. 2009-11-02 Tetsuo Tsukamoto * Contributors: Update. * News.ja: Update. 2009-07-04 Kitamoto Tsuyoshi * INSTALL: Fix typo. 2009-01-04 IRIE Tetsuya * NEWS.ja: Update. 2008-09-15 IRIE Tetsuya * NEWS.ja: Update. 2008-09-14 IRIE Tetsuya * NEWS.ja: Update. 2008-04-28 IRIE Tetsuya * TODO.ja: Update known bugs. * CODENAME.ja: Update. 2008-04-13 IRIE Tetsuya * TODO.ja: Update. * NEWS.ja: Update. 2008-02-03 Yoichi NAKAYAMA * NEWS.ja: Typo. 2008-02-02 IRIE Tetsuya * NEWS.ja: Update. 2007-08-31 Tetsuo Tsukamoto * TODO.ja: Update. 2007-08-26 Tetsuo Tsukamoto * *: Remove ugly headers. 2007-08-18 Tetsuo Tsukamoto * AUTHORS.ja: Undo the change just below. 2007-08-18 Kitamoto Tsuyoshi * AUTHORS.ja: Typo. 2007-08-12 Tetsuo Tsukamoto * AUTHORS.ja: Update. 2007-08-11 Tetsuo Tsukamoto * NEWS.ja: * TODO.ja: Update. 2007-07-19 Eiji Obata * NEWS.ja: Modify description about `skk-previous-candidate' behavior after `skk-kakutei-henkan', especially in okuri-ari situation. 2007-07-17 Tetsuo Tsukamoto * NEWS.ja: Update for skk-verbose. 2007-07-17 Tetsuo Tsukamoto * NEWS.ja: Update for "Kakutei Undo" and "Kakutei Henkan". * TODO.ja: Update. 2007-07-14 Kitamoto Tsuyoshi * README.w32.ja: Modify URL for skkime. 2007-06-12 Tetsuo Tsukamoto * NEWS.ja: Update. 2007-06-10 Tetsuo Tsukamoto * NEWS.ja: Update. 2007-04-22 Tetsuo Tsukamoto * COPYING: Update. 2007-04-21 Tetsuo Tsukamoto * INSTALL: * NEWS.ja: * README.MacOSX.ja: Update. 2007-03-31 Tetsuo Tsukamoto * INSTALL: * README.MacOSX.ja: * README.w32.ja: Update for APEL requirement (10.7 or later) and other glitches. 2006-01-05 Tetsuo Tsukamoto * AUTHORS.ja: Rewrite. 2005-11-18 Tetsuo Tsukamoto * TODO.ja: Add ideas described in skk.texi. 2005-11-14 Tetsuo Tsukamoto * FAQ.ja: * INSTALL: * README: Update. 2005-10-11 Tetsuo Tsukamoto * TODO.ja: Update. 2005-10-07 Tetsuo Tsukamoto * TODO.ja: Update. 2005-10-02 Tetsuo Tsukamoto * NEWS.ja: Update. 2005-10-01 Tetsuo Tsukamoto * COPYING: Install the latest one. * CVS_digest.ja: Update. * TODO.ja: Add description about candidate display method, especially within the current window. 2005-09-01 Tetsuo Tsukamoto * Contributors: Update. 2005-08-25 Tetsuo Tsukamoto * TODO.ja: Description of the `undo failure bug' under skk-undo-kakutei-word-only. 2004-01-19 Tetsuo Tsukamoto * CVS_on_Windows.ja: Modify the cygwin site URL. * FAQ.ja: * PROPOSAL.ja: DDSKK 11.x -> 12.x. 2002-02-09 Tetsuo Tsukamoto * ChangeLog: New file. * AUTHORS.ja: * CODENAME.ja: * CVS_digest.ja: * CVS_on_Windows.ja: * FAQ.ja: * NEWS.ja: * PROPOSAL.ja: * README.Mac.ja: * README.VIP.ja: * README.w32.ja: * TODO.ja: Rename files according to the languages. * COPYING: Update. This may be the latest revision. * INSTALL: * PROPOSAL.ja: * README.w32.ja: Delete description for old Emacsen. ;; Local Variables: ;; coding: iso-2022-7bit-ss2 ;; End: ddskk-15.2/READMEs/Contributors0000644000570400056700000001147712315771464016366 0ustar kitamotoopenlab Following people contributed to SKK (Alphabetical order). If you find someone has been missed, or their e-mail addresses have been changed, please let us know. SKK Development Team Contributors: $BCfDE;3(B $B91(B $B>.4X(B $B5HB'(B $B>.Ln(B $B9'CK(B $B>>0f9'M:(B/MATUI Takao $B?JF#M5;V(B $BD@;VM&(B $BDS?"(B $B@5Bg(B Akihiro Motoki Chikanobu Toyofuku co Daiki Ueno EGUCHI Satoshi Eiji Obata FUKANO Masaaki Fukaya Shigeru Fumihiko MACHIDA FURUE Hideyuki GUNJI Takao G. Yoshida Haru Mizuno Haru'yasu Ueda Hideki Sakurada Hiroya Murata Hiroyuki KUROSAKI Hisao Kuroda IIDA Yosiaki IRIE Tetsuya ISHIKAWA Naoya Jun-ichi Nakamura Katuya Tomioka Kazuo Hirokawa Kazushi Marukawa Keisuke Nishida Kenichi OKADA Kenji Rikitake Kenji Yamashita Kentaro Fukuchi KIHARA Hideto Kimura Chikahiro Kimura Fuyuki Kitamoto Tsuyoshi Kiyoka Nishiyama Koichi MORI KOIE Hidetaka ($B8q9>1QN4(B) Koji Uchida KURIHARA Kenichi Makoto MATSUSHITA Manabu Kawashima Martin Buchholz Masahiko Suzuki Masahiro Doteguchi Masakazu Takahashi Masatake YAMATO NAKAJIMA Mikio MINOURA Itsushi MITA Yuusuke MIYOSHI Tsutomu Motohiko Mouri Murata Shuuichirou Naoki HAMADA Naoki Wakamatsu NEMOTO Takashi NISHIDA Keisuke Norio Maeda ONODA Arata Rei FURUKAWA Ryoichi Hashimoto SAKAI Kiyotaka Satoshi Harauchi Seiichi NAMBA Sekita Daigo Shigeru OKUMURA Shuhei KOBAYASHI Shuji Ashizawa SIMOYAMA Takasi SL Baur sphere Stephen Turnbull SUZUKI Hitoshi TAKAHASHI Kaoru Takao KAWAMURA Takeshi OHTANI Tatsuya Kinoshita Teika Kazura Thierry Emery TOKUYA Junichi Tomotaka SUWA Tomoyuki Hiro Toru YANO Toyonobu Yoshida Tsugutomo Enami Tsukamoto Tetsuo TSUMURA Tomoaki Tsuyoshi AKIHO Wataru Matsui Wataru Matsui YAGI Tatsuya YAMASHITA Junji Yano Keisuke Yoshida Toyonobu Yukihiro Nakai Yoshiki Hayashi YOSHIZAWA Masahiro Yuh Ohmura Yuhei Maeda Yuichi Higashi Yu-ji Hosokawa Yukiyoshi Kameyama Yusuke Shinyama ;; end of contributors. ddskk-15.2/READMEs/FAQ.ja0000644000570400056700000000023611331566246014655 0ustar kitamotoopenlabSKK $B$N(B info $B$J$$$7$O0J2<$N(B html $BHG(B SKK $B%^%K%e%"%k$r;2>H$7$F$/$@$5$$!#(B http://openlab.jp/skk/skk-manual/skk-manual-ja_toc_frame.html ddskk-15.2/READMEs/INSTALL0000644000570400056700000001225312346326532014764 0ustar kitamotoopenlab* System-dependent configurations For system-dependent configurations, see SKK-CFG in the top source directory. It describes installation howto as well as system-dependent setting examples. If you are a user of Emacs on Apple OS X or Microsoft Windows, also see one of the following files, which may be found in this directory. ** README.MacOSX.ja Describes how to install SKK for Emacs on Apple OS X (10.x). ** README.w32.ja Describes how to install SKK for Emacs on Microsoft Windows. * Pre-installation ** APEL In DDSKK 15.2, installation of APEL (A Portable Emacs Library) is no longer required under GNU Emacs 22 or later. For XEmacs, make sure you have APEL 10.7 or later installed. It is highly recommended that you install the latest release. APEL is available at: http://git.chise.org/elisp/apel/ or ftp://ftp.jpl.org/pub/elisp/apel/ ** Get SKK dictionaries and copy them to ./dic subdirectory. In DDSKK 15.2, installation of an SKK dictionary is no longer mandatory under GNU Emacs 22 or later. Emacs 22 contains a japanese kana-kanji dictionary called ja-dic as a part of the LEIM input method. Indeed ja-dic is derived from SKK-JISYO.L and we wrote a code to use ja-dic for DDSKK. Although ja-dic may be of some use, it lacks entries for English-Japanese conversion and numeric conversion, making it inferior to SKK-JISYO.L. In this way we recommend installing SKK dictionaries including SKK-JISYO.L. If you do not have SKK dictionaries, get one or more from http://openlab.jp/skk/wiki/wiki.cgi?page=SKK%BC%AD%BD%F1 You should get at least one of "$B4pK\<-=q(B" (i.e. basic dictionaries). If unsure, we recommend SKK-JISYO.L. All other dictionaries are optional. Unpack and copy the downloaded dictionaries to ./dic subdirectory. They will be installed with `make install' or `make install-package', which is described below. If you want to install the SKK L dictionary converted in the CDB format, follow these steps. 1. Obtain SKK-JISYO.L and copy it to ./dic. 2. Type `make cdb'. This will call a python script ./etc/skk2cdb.py and convert SKK-JISYO.L into SKK-JISYO.L.cdb. Note that you need python installed before this step. 3. After you read the following installation instructions, do `make install'. This will copy both SKK-JISYO.L and SKK-JISYO.L.cdb to the same place as SKK.tut, e.g. /usr/share/skk or c:/emacs-24.2/etc/skk. 4. Set skk-cdb-large-jisyo in your ~/.skk as the following. (setq skk-cdb-large-jisyo "/usr/share/skk/SKK-JISYO.L.cdb") In this case you may not want Emacs to read SKK-JISYO.L. If so, set skk-large-jisyo and skk-aux-large-jisyo in your ~/.skk as the following. (setq skk-large-jisyo nil skk-aux-large-jisyo nil) ** Edit SKK-CFG. Edit SKK-CFG for your installation. Examples are found in SKK-CFG but commented out. If you need to set some or all of these variables, uncomment them and specify the values. Maybe you need not to edit Makefile at all. All customizations can be done in SKK-CFG except for Emacs or XEmacs command name. The way how to specify Emacs or XEmacs command name is described below. * Installation ** Installation for GNU Emacs Before actual installation, you can find out installation paths with % make what-where If your editor is not just named emacs, you can specify the name as the following. % make what-where EMACS=/usr/bin/emacs-24.3 If installation paths seem all right, proceed to installation with % make install or % make install EMACS=/usr/bin/emacs-24.3 ** Installation for XEmacs You can find out installation paths before actual installation with % make what-where-package If your editor is not just named xemacs, you can specify the name as the following. % make what-where-package XEMACS=/usr/bin/xemacs-21.5-b33 If installation paths seem all right, proceed to installation with % make install-package or % make install-package XEMACS=/usr/bin/xemacs-21.5-b33 * Post-installation ** Easy setup If you just intend to test the program, no prior setting is required. Just call SKK with typing C-x C-j or M-x skk-mode. If you are a novice SKK user, you can learn SKK basics with M-x skk-tutorial. Follow the instructions. If you prefer the English tutorial, type C-u M-x skk-tutorial and select "English". As you learn the usage of SKK, you might want to know more about its customization. As a start point we recommend the SKK manual. You can find the SKK manual with M-x info and looking for the following line. * SKK: (skk). Simple Kana to Kanji conversion program. You can also read the SKK manual on the web. http://openlab.jp/skk/skk-manual/skk-manual-ja.html Since the web manual is for the latest Daredevil SKK, it might not be compatible with the version you installed. Old manuals are http://openlab.jp/skk/skk-manual/skk-15.2.pdf http://openlab.jp/skk/skk-manual/skk-15.1.pdf http://openlab.jp/skk/skk-manual/skk-14.4.pdf http://openlab.jp/skk/skk-manual/skk-14.3.pdf http://openlab.jp/skk/skk-manual/skk-14.2.pdf If you are looking for example elisp codes for customization, see files etc/dot.emacs and etc/dot.skk, which are included in this distribution. Local variables: mode: outline end: ddskk-15.2/READMEs/NEWS.ja0000644000570400056700000017071112434434535015030 0ustar kitamotoopenlab* 15.2 ** $B%$%s%9%H!<%k(B make what-where $B$N cmdproxy.exe and hexl.exe (auxiliary programs) /share /applications /emacs /VERSION /etc ;; data files | SKK.tut, skk.xpm /lisp ;; version-specific Lisp files /site-lisp ;; version-specific Lisp files | skk*.el /site-lisp ;; version-independent site-lisp /icons /info ;; Info docs | skk.info /man /var *** isearch-other-control-char $B5Z$S(B isearch-other-meta-char $B$NGQ;_(B $B$3$l$i4X?t$O(B GNU Emacs 24.3 $B$^$G(B (GNU Emacs 24.4 $B$+$i$OGQ;_$5$l$F$$$k(B) *** $B%"%N%F!<%7%g%s$r(B eww $B$GI=<($9$k$3$H$,2DG=$K(B $BJQ?t(B skk-annotation-browser-function $B$K%7%s%\%k(B 'eww-browse-url $B$r;XDj$9(B $B$k$3$H$G!"%"%N%F!<%7%g%s$r(B eww $B$GI=<($9$k$3$H$,2DG=$G$9!#(B $B$b$A$m$s!"=>A0$I$*$j%7%s%\%k(B 'browse-url $B$b2DG=$G$9!#(B ** cdb $B7A<0<-=q$N~(B *** $B8uJd%P%C%U%!(B $B?7$?$K(B skk-candidate-buffer-background-color-odd $B$rDj5A$7$^$7$?!#(B $B?7$?$K(B skk-candidate-buffer-display-fringes $B$rDj5A$7$^$7$?!#(B *** $B%$%s%i%$%s(B $B?7$?$K(B skk-inline-show-background-color-odd $B$rDj5A$7$^$7$?!#(B ** $BF0:n(B *** $BH>3Q?t;z(B(ASCII) $BKt$OA43Q?t;z(B(JISX0208)$B$ND>8e$N6gFIE@(B $BJQ?t(B skk-use-auto-kutouten $B$r(B non-nil $B$H@_Dj$9$k$H!"%]%$%s%HD>A0$NJ8;zA0!"(B`$' $B$r%?%$%W$9$k$H!"4X?t(B skk-display-code-for-char-at-point $B$r2A$7$?$H$-$N%3!<%I%M!<%`$rF|K\8l$GI=<($7$^$9!#(B ** Ruby 1.9 $BBP1~(B bayesian/bskk $B$N(B Ruby 1.9 $BBP1~$r?J$a$^$7$?!#(B ** show-mode *** skk-dcomp.el $B0MB8$NGQ;_(B $B$3$l$^$G(B skk-dcomp-multiple-show() $B$r;HMQ$7$F$$$?$,!"=`MQ$9$k7A$G(B skk-show-mode-inline-1() $B$r\:Y$O(B ML (NICOLA-DDSKK $B$N@\F,8l@\Hx8l$H(Babbrev-mode) http://mail.ring.gr.jp/skk/201403/msg00000.html $B$r;2>H$N$3$H!#(B ** Colemak $BG[Ns(B nicola-colemak $B$rDI2C$7$^$7$?!#(B ** $B$=$NB>%P%0=$@5$J$I(B *** XEmacs $B$K$*$1$k(B modeline GNU Emacs 24.3 $B$+$i%U%'%$%9(B modeline $B$,GQ;_$5$l$?$?$a(B DDSKK 15.1 $B$G(B $B$O(B mode-line $B$XE}0l$7$?$H$3$m!#$7$+$7(B XEmacs $B$O(B modeline $B$N$^$^$G$"(B $B$k$3$H$+$i!"$3$l$i$NBP:v$H$7$F(B $B%^%/%m(B skk-facep $B$rF3F~$7$?!#(B *** mode-line-format $B$r(B nil $B$H$7$?>l9g$NBP:v(B *** $B%A%e!<%H%j%"%k(B 'modeline $B$+$i(B 'mode-line $B$XJQ99(B [skk 7681] *** tooltip-use-echo-area $B$N;HMQ$r$d$a$^$7$?!#(B[skk 7669] ** multi-tty $BBP1~$r?J$a$^$7$?(B multi-tty $B$KBP1~$9$k$h$&(B ccc.el $B$r=$@5$7$^$7$?!#(B[skk 7641] ** $ $B%?%$%W;~$N5sF0(B `$' $B$N%?%$%W$G5/F0$9$k(B skk-display-code-for-char-at-point $B$K$D$$$F!"(B jisx0213, jisx0208, ascii $B0J30$NJ8;z=89g$G$"$l$P!VH=JL$G$-$J$$J8;z$G$9!W$H(B $BI=<($7$F$$$?$H$3$m!"(Bskk-char-charset() $B$GF@$?J8;z=89g$rI=<($9$k$h$&$K$7$^(B $B$7$?!#(B ** $B%?%$%W(B #8 ($B7e6h@Z$j(B) $B$rDI2C$7$^$7$?!#(B $B<-=q%(%s%H%j!<$K(B `#8' $B$,$"$l$P!"!V(BQ 1 2 3 4 5 6 7 $B!W$NA`:n$G(B $B8uJd!V"'(B1,234,567$B!W$,I=<($5$l$^$9!#(B *** skk-num.el $B4X?t(B add-number-grouping() $B$H4X?t(B skk-num-grouping() $B$rDI2C$7$^$7$?!#(B *** skk-vars.el $B6h@Z$k5-9f$r(B $BJQ?t(B skk-num-grouping-separator $B$G!"2?7eKh$K6h@Z$k$+$r(B $BJQ?t(B skk-num-grouping-places $B$G;XDj$7$^$9!#(B ** $B?7$?$JF|IUJQ49$rDI2C$7$^$7$?!#(B $B?7$?$J4X?t(B skk-relative-date() $B$rDI2C$7$^$7$?!#(Bskk-current-date() $B$N5!G=(B $B3HD%HG$G$9!#(Bskk-gadget.el $B$N%3%a%s%H$r;29M$K<-=q%(%s%H%j$rDI2C$9$k$3$H$K(B $B$h$C$F!"8+=P$78l!V"&$-$N$&!W$d!V"&$"$5$C$F!W$J$I$+$i6qBNE*$JF|IU$r5a$a$k(B $B$3$H$,$G$-$^$9!#(B ** $B$=$NB>%P%0=$@5$J$I(B *** ccc.el $B$N%P%0=$@5(B (M-x load-theme $BBP1~(B) [skk 7683] *** context-skk.el $B$N%P%0=$@5(B [skk 7655] *** undo $B$N5sF0$r=$@5(B [skk 7661] *** $BGQ;_$5$l$?JQ?t(B skk-emacs-type $B$NE1GQ(B [skk 7638] *** experimental/skk-search-web.el json $B%l%9%]%s%9$+$i(B xml $B%l%9%]%s%9$r;HMQ$9$k$h$&$KJQ99(B. * 14.4 ** skk-isearch $B@_Dj$NC1=c2=(B skk-isearch $B$rM-8z$K$9$k$?$a$N@_DjJ}K!$N8+D>$7$r9T$$$^$7$?!#6qBNE*$K$O(B skk-isearch-mode-enable $B$NCM$,(B always $B$J$i>o$K(B skk-isearch $B$,M-8z$K$J(B $B$j!"$=$l0J30$N(B non-nil $B$J$i$P(B SKK $B$,(B ON $B$N%P%C%U%!$G$N$_(B skk-isearch $B$,M-8z$K$J$j$^$9!#(B $B=>Mh$N$h$&$K!"%f!<%6$,D>@\(B isearch-mode-hook, isearch-mode-end-hook $B$r(B $B@_Dj$9$k$3$H$b2DG=$G$9$,!"$3$NJ}K!$O:#8e$O%f!<%6$K>R2p$5$l$^$;$s!#(B ** $B%a%K%e!<$NDI2C(B $B%$%s%8%1!<%?Kt$O(B SKK $B%"%$%3%s$r:8%/%j%C%/(B (mouse-3) $B$9$k$HI=<($5$l$k%a%K(B $B%e!<$K!V4A;z$rItu$G$O<-=q$N8!:w=g$O(B Dictionary.app $B$N4D6-@_Dj$G@_Dj$9$kI,MW$,$"(B $B$j$^$9!#(B $B$3$N5!G=$rMxMQ$9$k>l9g$O0J2<$NJQ?t$r@_Dj$7$F$/$@$5$$!#(B *** skk-annotation-lookup-DictionaryServices non-nil $B$K@_Dj$9$k$H%P%C%/%0%i%s%I$G(B python $B$rl9g$O(B python $B$N(B DictionaryServices $B$r(B Emacs $B5/F0;~$KFI$_$3$`$3$H$,$G$-$^$9!#(B skk-preload $B$N@_Dj$O(B ~/.skk $B$G$O$J$/(B ~/.emacs (~/.emacs.d/init.el) $B$G(B $B9T$$$^$9!#(B $B$5$i$K0J2<$NNc$h$&$J@_Dj$r$9$k$H!"(BSKK $B$H$O4X78$J$/>o;~<-=q0z$-%3%^%s%I(B $B$H$7$FMxMQ$G$-$^$9!#(B *** (global-set-key "\M-i" 'skk-annotation-lookup-region-or-at-point) M-i $B$H$$$&%-!<$O0lNc$K$9$.$^$;$s!#NN0h$rA*Br$7$F%?%$%W$9$k$H<-=q$,;2>H(B $B$G$-$^$9!#B?$/$N1QC18l$K$D$$$F$ONN0h$rA*Br$;$:$KC18l$,H=JL$5$l$^$9!#(B *** $BCm0U;v9`(B $B$3$N5!G=$rMxMQ$9$k$K$O!"(Bpython $B$K(B readline $B$H(B pyobject-framework-DictionaryServices $B$,I,MW$G$9!#8el9g$O(B % easy_install readline $B$J$I$NJ}K!$G%$%s%9%H!<%k$7$^$9!#(B ** $B30It%3%^%s%I$+$i$N%"%N%F!<%7%g%sl9g$O0J2<$NJQ?t$r@_Dj$7$^$9!#(B *** skk-annotation-lookup-dict *** skk-annotation-dict-program *** skk-annotation-dict-program-arguments *** skk-annotation-dict-coding-system ** EPWING $B<-=q$+$i$N%"%N%F!<%7%g%s $B$5$s$H!"(B Teika Kazura $B$5$s$+$i$NDs0F$G$7$?(B [skk 7485]$B!#(B ** $BC14A;zJQ49(B *** window $B$N>uBV$rJ]B8(B M-x skk-tankan $BuBV$KLa$j$^$9!#(B *** $BIt%P%0=$@5$J$I(B *** M-x skk-list-chars skk-list-chars() $B$NFbIt$GJQ?t(B skk-kcode-charset $B$NCM$rJQ99$7$J$$$h$&$K(B $B=$@5$7$^$7$?!#(B[skk 7606] *** skk-server-version() $B4X?t(B skk-server-version $BFb$N(B skk-error() $B$N0z?t$N=g$,5U$G$"$C$?$N$r=$@5$7(B $B$?!#(B *** NTEmacs $B4XO"(B $B%U%l!<%`$r:GBg2=$K$7$?(B NTEmacs $B$G(B Tooltip $B$rI=<($7$?>l9g$N%(%i!<$rBP=h$7(B $B$?!#(B *** SKK-MK-what-where() $B4X?t(B interactive-p $B$,(B obsolete $B$5$l$?$?$a(B Emacs 23.2 $B$G(B make what-where $B$r)$5$l$F$$$^$9!#3F\:Y$O(B docstring $B$d(B info $B$r$4Mw$/$@$5$$!#(B ** $B$=$NB>%P%0=$@5$J$I(B *** $B%A%e!<%H%j%"%k5/F0;~$NIT6q9g$r=$@5(B [skk 7398] *** skk-list-chars $B$r=*N;$7$?:]$N2hLLI|5"(B $BJQ?t(B skk-list-chars-original-window-configuration $B$K>uBV$rJ];}!#(B * 14.2 ** GNU Emacs 20 $B$N%5%]!<%H$r=*N;$7$^$7$?!#(B GNU Emacs 20 $B$r$*;H$$$NJ}$O(B DDSKK 14.1 $B$rMxMQ$7$F$/$@$5$$!#(B ** GNU Emacs 22 $B5Z$S(B GNU Emacs 23 $BMxMQ;~$N(B APEL $B$N8+D>$7(B $B$3$l$i$N(B Emacsen $B$G(B DDSKK 14.2 $B$r;H$&$H$-$O!"(BAPEL $B$OITMW$G$9!#(B $BI,MW$J%3!<%I$,0JA0$h$j>.$5$/$J$C$?$?$a(B skk-macs.el $B$J$I$K4^$a$F$"$j$^$9!#(B GNU Emacs 21 $B5Z$S(B XEmacs $B$G$O$3$l$^$G$I$*$j(B APEL $B$r;vA0$K%$%s%9%H!<%k(B $B$7$F$/$@$5$$!#(BAPEL 10.8 $B0J>e$r?d>)$7$^$9!#(B ** $BJ#?t$N<-=q%U%!%$%k$rMQ0U$K$rNs5-$9$k$@$1$G$9!#(B $B>\$7$/$O(B etc/dot.skk $B$r$4Mw$/$@$5$$!#(B ** skk-obsolete.el $B$NGQ;_(B $B$3$N5!G=$Oe$K(B (LEIM $B$r%$%s%9%H!<%k$9$l$P(B 21 $B$K$b(B) $B$KBP1~$7$^$9!#$b$H(B $B$b$H(B ja-dic $B$O(B SKK-JISYO.L $B$rJQ49$7$F:n$i$l$F$*$j!"Aw$j$J$7!"Aw$j$"$j!"(B $B@\F,<-!"@\Hx<-$NJQ49$KBP1~$7$F$$$^$9!#$3$l$rMxMQ$9$k$3$H$G!"(BSKK $B<-=q$N(B $B%$%s%9%H!<%k$J$7$G(B SKK $B$,MxMQ2DG=$G$9!#$?$@$71Q?tJQ49!"?tCMJQ49$J$I$K(B $B$OBP1~$7$^$;$s!#(B $B$3$N5!G=$O(B skk-large-jisyo, skk-aux-large-jisyo, skk-cdb-large-jisyo, skk-server-host $B$,A4$FL58z$H$$$&>r7o$rA4$FK~$?$7$?$H$-$N$_!"<+F0E*$K8F(B $B$S=P$5$l$^$9!#(B ** $B8D?M<-=q$rB(;~J]B8(B $B?7$?$JJQ?t(B skk-save-jisyo-instantly $B$r(B non-nil $B$H$7$F$*$/$H!"(B $BC18lEPO?!JC18l:o=|!K$N$?$S$K8D?M<-=q$rJ]B8$7$^$9!#(B ** $B$=$NB>%P%0=$@5$J$I(B *** emacsclient -nw $B;~$K$*$1$k%+!<%=%k?'@)8f$N=$@5(B Emacs 23 $B$G$O(B window-system $BJQ?t$,(B frame local variable $B$H$J$j!"$^$?(B emacsclient $B$G(B -nw $B%*%W%7%g%s$,DI2C$5$l$^$7$?!#(Btty $B$J(B frame $B$H(B x $B$J(B frame $B$N6&B8$,2DG=$K$J$C$?$?$a%+!<%=%k?'@)8f$,Mp$l$k$3$H$,$"$j$^$7$?$,!"(B $B4X?t(B skk-find-window-system $B$K$h$C$F(B windw-system $B$J(B frame $B$r8!=P$9$k(B $B$3$H$GBP=h$5$l$^$7$?!#(B *** Cocoa Emacs $BMQ$K%$%s%9%H!<%k@h@_Dj(B *** $B%D!<%k%F%#%C%W$K$*$1$k2~9T0LCV$N2~A1(B *** $B"&%b!<%I$K$*$1$k(B @ $B$N5sF0$r2~A1(B *** $B%a%K%e!<$K(B skk-restart $B$rDI2C(B *** skk-azik $B$NJQ49%F!<%V%k$r=$@5(B * 14.1 ** $BBP1~$9$k(B Emacs $B$N%P!<%8%g%s(B *** Emacs 22.1 $B0J9_!"(BEmacs 23.1, 23.2 Emacs 21 $B$G$O=]$H$7$F5s$2$F$*$-$^$9$,!"$[$H$s$I%F%9%H$5$l$F$$$^$;$s!#(B ** Emacs 23 $BBP1~$r?J$a$^$7$?!#(B Emacs 23 $B$O(B Unicode $B$KBP1~$7!"$J$*$+$DFbIt%3!<%I$,=>Mh$N(B emacs-mule $B$+(B $B$i(B unicode $B%Y!<%9$N$b$N$KJQ99$5$l$^$7$?!#$3$N4X78$G!"=>Mh$N(B SKK $B$K$*$1(B $B$kJ8;z$N=xNs$r2>Dj$7$?%3!<%I$J$I$,@5$7$/F0:n$7$J$+$C$?LdBj$,$"$j$^$7$?(B $B$,!"=gl9g(B $B$,$"$j$^$9!#$=$3$G!"(Bunibyte $BJ8;zNs$,I,MW$J>l9g$K$OL@<(E*$K(B unibyte $BJ8(B $B;zNs$rMW5a$9$k$h$&$K$7!"(Bchar $B$,%-!l9g$HJ8;z$=$N$b$N$r(B $B0UL#$9$k>l9g$H$r6hJL$7$^$7$?!#(B *** Emacs 23 $B$N$?$a$N(B split-char $B$N:Fl9g$,$"$j!"(BEmacs 22 $B0JA0$H=PNO$,0[$J$j$^$9!#$3$N$?$a!"(B Emacs 22 $B0JA0$N(B split-char $B$HF1Ey$N(B skk-split-char $B4X?t$rMQ0U$7$^$7$?!#(B *** Emacs 23 $B$K$*$1$k(B last-command-char $B;HMQ$NCf;_(B Emacs 23 $B$G$OJQ?t(B last-command-char $B$,(B obsolete $B$H$J$j!"(B last-command-event $B$NMxMQ$,?d>)$5$l$F$$$^$9!#$7$+$7!"(BGNU Emacs $B$H(B XEmacs $B$H$N4V$G(B last-command-event $B$K8_49@-$,$J$$$?$a!"(BSKK $BB&$G(B workaround $B$7$F$$$^$9!#(B ** $B?7$7$/0J2<$N%W%m%0%i%`$,DI2C$5$l$^$7$?!#(B *** cdb.el, skk-cdb.el CDB $B7A<0$N(B SKK $B<-=q$K(B Emacs $B$+$iD>@\%"%/%;%9$G$-$k$h$&$K$J$j$^$9!#(B $B$3$l$rMQ$$$l$P!"(BCDB $BBP1~(B SKK $B%5!<%P$rMQ0U$9$kI,MW$O$"$j$^$;$s!#(B *** skk-sticky.el $BDL>o!"BgJ8;z$G;XDj$9$kJQ493+;O$*$h$SAw$j3+;O$N0LCV$rG$0U$N%-!<$G;XDj$G(B $B$-$k$h$&$K$9$k3HD%5!G=$G$9!#(B ** $B8D?M<-=q$N!"8uJd$N=g=x$N8GDj$,$G$-$k?75!G=(B $B=i4|@_Dj$G$O!"JQ49!"A*Br$5$l$?8uJd$O!"uBV$+$i(B C-g $B$GLa$C$?;~$d!""'%b!<%I$+$i(B x $B$G"&%b!<%I$KLa$C$?;~(B $B$bJd408uJd$,I=<($5$l$k$h$&$K$J$j$^$7$?!#(B ** skk-j-mode-function-key-usage $B%-!<%\!<%I>e$N(B F1 $B!A(B F10 $B%-!<$N;H$$J}$r;XDj$9$k(B skk-j-mode-function-key-usage $B$,?7@_$5$l$^$7$?!#(B (setq skk-j-mode-function-key-usage 'conversion) $B$H@_Dj$9$k$H!"(BC-7 SPC $B$J$I$NBe$o$j$K(B [F7] $B$J$I$GJQ49$G$-$k$h$&$K$J(B $B$j$^$9!#(B $B>\$7$/$O(B skk-j-mode-function-key-usage $B$N(B docstring $B$r;2>H2<$5$$!#(B ** $B3Fl=j$N;XDj(B SKK $B$N@_Dj%U%!%$%k$J$I$rCV$/%G%#%l%/%H%jL>!"(Bskk-user-directory $B$,?7@_$5(B $B$l$^$7$?!#(B $B3Fl9g$KMxMQ$G$-$^$9!#(B $B>\$7$/$O(B (info "(skk)$B@_Dj%U%!%$%k(B") $B$r;2>H2<$5$$!#(B ** tooltip $B%U%'%$%9$N;XDj(B skk-tooltip-face $B$H$$$&JQ?t$,?7@_$5$l$^$7$?!#(B $B$3$NJQ?t$K$O(B face $BL>$^$?$O(B nil $B$,@_Dj$5$l$^$9!#I8=`$O(B nil $B$G$9!#(B skk-tooltip-face $B$NCM$,(B face $BL>$@$C$?>l9g$K$O(B tooltip $B$N%F%-%9%H$,(B face $B$GAu>~$5$l$^$9!#(Bnil $B$J$i$P!"$b$H$N%F%-%9%H$NB0@-$r0];}$7$^$9!#(B ** $B@Q6KE*$J3NDjJQ49$N5!G=DI2C(B *** $B8!:wBP>]<-=q$N@)8B(B $B?75,%f!<%6!<%*%W%7%g%s(B skk-kakutei-search-prog-limit $B$r@_Dj$9$k$3$H$K(B $B$h$j!"3NDjJQ49$N8!:wBP>]$H$9$k<-=q$r@)8B$G$-$k$h$&$K$J$j$^$7$?!#(B *** $B5!G=$rM-8z$K$9$kJQ49%b!<%I$N;XDjJ}K!(B $B%f!<%6!<%*%W%7%g%s(B skk-kakutei-when-unique-candidate $B$NCM$,(B t/nil $B$NB>(B $B$K(B okuri-ari, okuri-nasi, abbrev $B$N$$$:$l$+$rMWAG$H$9$k%j%9%H$b@_Dj$G$-(B $B$k$h$&$K$J$j$^$7$?!#$=$l$>$lJQ49%b!<%I$,$=$N>r7o$K9gCW$7$?>l9g$N$_3NDj(B $BJQ495!G=$,M-8z$K$J$j$^$9!#(B $B$3$l$K$h$j%P!<%8%g%s(B 13.1 $B$GM-8z$@$C$?(B okuri-nasi $B$H$$$&@_Dj$O?d>)$5$l(B $B$J$/$J$j$^$9!#(B ** $BC14A;zJQ49$N3HD%(B $BFI$_$H$7$F?tCM$rM?$($FJQ49$9$k$H!"$=$N?tCM$rAm2h?t$H$9$k4A;z$rC14A;zJQ(B $B49$N8uJd$K5s$2$^$9!#(B $BFI$_$H$7$F(B @ $B$rM?$($FJQ49$9$k$H!"It3Q%+%JBP1~(B skk-jisx0201 $B$rFI$_9~$s$@$H$-$K(B ACT (or AZIK) $B$NJQ495,B'$,H?1G$5$lH>3Q(B $B%+%J$b$=$l$>$l$NJQ49%k!<%k$GF~NO$G$-$k$h$&$K$J$j$^$7$?!#(B ** skk-undo-kakutei $B$7$?;~$NF~NO%b!<%I(B skk-undo-kakutei $B$7$?;~$NBP>]$,(B abbrev $BJQ49$@$C$?>l9g!"0l;~E*$K(B abbrev $B%b!<%I$K0\9T$9$k$h$&$K$J$j$^$7$?!#(B $B$^$?!"(Bskk-undo-kakutei $B$7$?;~$N%b!<%I$,%"%9%-!<%b!<%I$b$7$/$O1Q?t%b!<(B $B%I$@$C$?>l9g$O0l;~E*$K$+$J%b!<%I$K0\9T$9$k$h$&$K$J$j$^$7$?!#(B ** $B%a%K%e!l9g$O%a%K%e!$9$k$h$&$K$J$j$^$7$?!#(B ** $BJ8;z$N%3!<%II=<((B $B%3%^%s%I(B skk-display-code-for-char-at-point ($B%G%U%)%k%H$G$O(B $ $B$K3dEv$F(B) $B$KpJs$NAS<:(B READMEs/TODO.ja $B$K5-:\$5$l$F$$$?(B | http://mail.ring.gr.jp/skk/200503/msg00011.html | | $B3^86!w6eBg$5$s$+$i$N$4Js9p(B | | > $B$^$?JL$N!"(BSKK $B$K%P%C%U%!$NFbMF$r6t$o$l$F(B undo $B$GLa$;$J$$8=>]$KEv$?$C$?(B | > $B$N$GJs9p$7$^$9!#(B | > | > 1) $B$"$k9T$G(B($B$&$C$+$j(B)$B"&%b!<%I$KF~$C$F$7$^$&(B | > 2) $B$=$N$^$^(B($B5$$E$+$:(B)$B%+!<%=%k$r2<$K?t9T0\F0(B | > 3) $B$=$3$G5$IU$$$F(B($B$$$D$b$NJJ$G(B) C-g $B$r2!$9$H!"4V$N9T$,A4It>C$($F$7$^$&(B | > | > 1) | > 1$B9TL\(B | > 2$B9TL\"&$""#"+%+!<%=%k(B | > 3$B9TL\(B | > 4$B9TL\(B | > 5$B9TL\(B | > | > 2) | > 1$B9TL\(B | > 2$B9TL\"&$"(B | > 3$B9TL\(B | > 4$B9TL\"#"+%+!<%=%k(B | > 5$B9TL\(B | > | > 3) | > 1$B9TL\(B | > 2$B9TL\"#"+%+!<%=%k(B | > 5$B9TL\(B | > | > $B>eJ}8~$X$N0\F0$G$O5/$3$j$^$;$s!#(B $B>e5-$NLdBj$,=$@5$5$l$^$7$?!#(B *** undo $B$N5sF0$N2~A1(B `skk-undo-kakutei-word-only' $B$,%G%U%)%k%H$N(B nil $B$N>l9g!"(B $B$"$"$"(B ;; `a a a' ;; `C-a C-k' $B4A;z(B ;; `K a n j i SPC C-j' $B"'4A;z(B ;; `C-/' $B$3$l$O(B word-only $B$,(B nil $B$J$N$G;EMM$I$*$j$N$O$:(B $B$"$"$"(B ;; `C-/' $B$$$-$J$j!V$"$"$"!W$,I|3h(B $B$H$$$&5sF0$,=$@5$5$l$^$7$?!#(B $B$3$l$KH<$J$$!"(B $B$"$"$"4A;z(B ;; $B$"$"$""'4A;z(B ;; `C-/' ;; `C-/' $B>e5-$N$h$&$J>l9g$N%"%s%I%%;~$NF0:n$,:#Kx$H$A$g$C$HJQ$o$j$^$7$?!#(B (2$B2sL\$N(B undo $B$G(B "$B"'4A;z(B" $B$@$1$,>C$($k(B) ** $BIT6q9g$N=$@5(B *** $B<-=qEPO?Cf;_;~$N%$%s%i%$%sI=<((B 1) (setq skk-show-annotation t ; $B%G%U%)%k%H(B skk-show-inline t) $B$N@_Dj$G(B 2) $BJQ498uJd$,>/$J$=$&$J8@MU$rJQ49$9$k(B ($BAw$j$"$j(B/$B$J$7$I$A$i$G$b!#8uJd$,(B0$B8D$8$cBLL\(B) 3) SPC $B$rO"BG$7$F!"JQ498uJd$,0lMwI=<($K$J$kA0$K<-=qEPO?$KF~$k(B 4) C-g or RET $B$G<-=qEPO?$rH4$1$k(B $B$H!V"-<-=qEPO?Cf"-!W$H$$$&%$%s%i%$%sI=<($,;D$C$?$^$^$K$J$C$F$7$^$&8=>](B $B$,=$@5$5$l$^$7$?!#(B *** $B@_Dj%U%!%$%k$N%P%$%H%3%s%Q%$%k(B skk-init-file $B$O!V(B.el$B!W$J$7$G@_Dj$7$F$$$F$K$O!V(B.el$B!W$,(B $BIU$$$F$$$k$H(B skk-byte-compile-init-file $B$r(B non-nil $B$K$7$F$b!"(B $B@_Dj%U%!%$%k$,%P%$%H%3%s%Q%$%k$5$l$J$+$C$?LdBj$,=$@5$5$l$^$7$?!#(B *** skk-large-jisyo $B$N%(%i!<=hM}(B skk-large-jisyo $B$KB8:_$7$J$$%U%!%$%k$,@_Dj$5$l$F$$$?>l9g!"6u$N(B *SKK-JISYO.L* $B%P%C%U%!$,$G$-$F$7$^$$!"JQ49;~$K(B skk-okuri-*-{min|max} $B$,(B nil $B$K$J$C$F(B error $B$H$J$C$F$$$?LdBj$,=$@5$5$l$^$7$?!#(B *** prefix $B$N$_$N>uBV$+$iJd40$7$?8e$N(B C-g skk-comp-use-prefix $B$,(B non-nil $B$@$HF~NO$,%W%l%U%#%C%/%9$@$1$N>uBV$+$i$G(B $B$bJd40$G$-$^$9$,!"$=$3$+$i(B C-g $B$rC!$/$H!D(B $B"&(Bk ;; K $B"&$+$s$8(B ;; TAB $B"&(B ;; C-g $B"&(B ;; C-g 2$B2sL\$N(B C-g $B$G(B "Args out of range: ?, ?" $B$H%(%i!<$rEG$$$F$7$^$&LdBj$,=$(B $B@5$5$l$^$7$?!#(B *** $BAw$j2>L>F~NOESCf$G$N(B C-g 1. $B"&$+(B*k $B$N$h$&$KESCf$^$GAw$j2>L>$rF~NO$9$k(B 2. C-g $B$GCf;_$9$k(B 3. $B:FEY!"(B"K a" $B$J$I$HF~NO$9$k(B 4. $B$$$-$J$jJQ49=hM}$,Av$C$FJQ$K$J$k(B $B$H$$$&8=>]$,=$@5$5$l$^$7$?!#(B *** ACT (or AZIK) $B$G$N%+%J%b!<%I$G$NB%2;$NAw$j2>L>(B o ACT $B$d(B AZIK $B$J$IB%2;$r0lBG80$GF~NO$9$kF~NOJ}<0$K$*$$$F(B o $B%+%J%b!<%I$G(B o $B!V9T%C%?!W$J$IB%2;$GAw$kJQ49(B $B$,@5>o$KF0:n$7$J$+$C$?LdBj$,=$@5$5$l$^$7$?!#(B * 13.1 ** $BMW5a$5$l$k(B APEL $B$N%P!<%8%g%s$,(B 10.7 $B0J>e$K$J$j$^$7$?!#(B APEL 10.7 $B$N5!G=$N$&$A%$%s%9%H!<%k4XO"$N5!G=!"$H$/$K(B XEmacs 21.5 $B$G$N(B $B%$%s%9%H!<%k5!G=$K0MB8$7$^$9!#(B $B$^$?!"$3$l$KH<$C$F(B tinyinstall.el $B$O%l%]%8%H%j$+$i:o=|$7$^$7$?!#F1%U%!(B $B%$%k$NFbMF$N$&$AI,MW$JItJ,$O(B SKK-MK $B$K0\F0$7$^$7$?!#(B APEL 10.6 $B$K4X$9$kFC5-;v9`$O(B DDSKK 12.2.0 $B$N(B NEWS $B$r;2>H$7$F$/$@$5$$!#(B ** $B%5%]!<%H$9$k(B Emacs $B$N%P!<%8%g%s$,JQ99$5$l$^$7$?!#(B *** Emacs 20.7 $B0J9_!"(BEmacs 21.1 $B0J9_!"(BEmacs 22.1 $B:#2s$H$/$K!"(BEmacs 22 $B$N?75!G=$KBP1~$9$Y$/B?$/$N3HD%$,9T$o$l$^$7$?!#(B *** XEmacs 21.4.18 $B0J9_(B, XEmacs 21.5 beta28 $B0lIt(B XEmacs 21.5 $B$N?75!G=$K$bBP1~$7$F$$$^$9!#(B XEmacs $BK\BN$HJLG[I[$N%Q%C%1!<%872$O$J$k$Y$/?7$7$$$b$N$r%$%s%9%H!<%k$7(B $B$^$9!#$^$?!"(BDDSKK $Be$NET9g$G8=CJ3,$G$O(B fsf-compat $B%Q%C%1!<%8$,F0(B $B:n$N$?$a$KI,?\$G$9!#(B($B>-Mh$I$&$J$k$+$OJ,$+$j$^$;$s(B) $B>e5-$O$"$/$^$G%5%]!<%H$9$k%P!<%8%g%s$G$"$j!"/$7$@$19b$a$K@_Dj$5$l$F$$$k>l9g$,$"$j$($^$9!#(B $BCm0UE@$H$7$F!"$3$l$i$N3F(B Emacsen $B$=$l$>$l$N%5%]!<%H>u67$,0[$J$k$3$H$,$"(B $B$j$^$9!#(BDDSKK 13 $B$N$[$\A45!G=$,F0:n$9$k$H;W$o$l$k$N$O(B Emacs 22.1 $B$G$9!#(B $B$=$l0J30$N(B Emacsen $B$G$O0lIt5!G=$,F0:n$7$J$$$+!$$"$k$$$OF0:n%F%9%H$,40N;(B $B$7$F$$$^$;$s!#%f!<%6$,>/$J$$%P!<%8%g%s$N(B Emacs $B$[$IF0:n%F%9%H$OIT40A4$J(B $B798~$,$"$j!"$h$jB?$/$N%F%9%H$,K>$^$l$^$9!#(B $B$J$*!"K\%P!<%8%g%s$O$7(B NTEmacs, Meadow $B$O(B Emacs 18 $B$N$3$m$N$h$&$JC10l%G%#%l%/%H%j9=@.$r$H$j$^(B $B$9!#$3$N>u67$K(B APEL $B$N(B install.el $B$,8=>u$G$OBP1~$7$F$$$J$$$N$G!"(BSKK-MK $B$NJ}$G%$%s%9%H!<%k@h%G%#%l%/%H%j$r$9$Y$F3F(B Emacsen $B$N%H%C%W%G%#%l%/%H(B $B%j2<$KG[CV$9$k$h$&$K$7$^$7$?!#(B $B$^$?!"(BDDSKK 13.1 $B$h$j(B Mac OS X $B4D6-$G$N%$%s%9%H!<%k$K$D$$$F$b>/$7$@$1(B $B9MN8$7!"(BCarbon Emacs Package (Emacs 22 $B%Y!<%9(B) $B$N8B$i$l$?4D6-$N$_%F%9(B $B%H$7$F$$$^$9!#(BAquamacs $B$d(B Cocoa $BBP1~$N(B Emacs $B$K$D$$$F$OL$$@%F%9%H$7$F(B $B$$$^$;$s!#(B Carbon Emacs Package (http://homepage.mac.com/zenitani/emacs-j.html) $B$O%*%j%8%J%k$N(B Carbon Emacs $B$H0[$J$kFH<+$N%U%!%$%k9=@.$r$H$C$F$$$k$?$a!"(B SKK $B$N%$%s%9%H!<%k@h$,E,@Z$K$J$k$h$&8DJL$NBP:v$r$7$^$7$?!#(B *** $B8BDjE*$J(B locale $BBP1~(B GNU Emacs 22 $B0J9_$H8B$i$l$?4D6-$H$NAH$_9g$;$K$*$$$F!"%a%K%e!<$NI=<($,(B $B%G%U%)%k%H$GF|K\8l$K$J$j$^$9!#6qBNE*$K$O!"(BMeadow $B$r4^$`(B Windows $B4D6-!"(B Carbon Emacs $B4D6-!"$*$h$S(B X Window System $B$G(B Emacs $B$,(B GTK+ $B$rMxMQ$7$+(B $B$DF|K\8l(B locale $B$N4D6-$,BP>]$H$J$j$^$9!#(B ** $B%$%s%9%H!<%k$N:]$N4D6-JQ?t%5%]!<%H$N0l;~Dd;_(B SKK-CFG $B$,$[$\40A4$J%$%s%9%H!<%k@_Dj$r%5%]!<%H$9$k$?$a!"4D6-JQ?t(B EMACS $B$H(B XEMACS $B0J30$O;2>H$7$J$$$h$&$K$7$F$$$^$9!#4D6-JQ?t%5%]!<%H$O0lItI|3h(B $B$9$k2DG=@-$O$"$j$^$9$,!"0JA0$N$h$&$KB??t$NJQ?t$r%5%]!<%H$9$k$3$H$O$J$$(B $B$G$7$g$&!#(B ** $B?7$7$/0J2<$N%W%m%0%i%`$,@5<0%5%]!<%H$5$l$^$7$?!#(B *** context-skk.el *** skk-act.el *** skk-azik.el *** skk-hint.el *** skk-server-completion.el $BJd40$KBP1~$7$?%5!<%P$HDL?.$9$k$3$H$GJd40$rl9g$O(B skk-look $B$N$h$&$J;H$$>!]$,3NG'$5$l$^$7$?!#$3$N%P!<%8%g%s$N(B SKK $B$G(B $B$O(B `accept-process-output' $B$NA0$K(B `sit-for' $B$r8F$s$G(B 10 $B%_%jICBT5!$9$k(B $B$3$H$G$3$NLdBj$KBP=h$5$l$^$7$?!#(B ** $B3NDj%"%s%I%%$N3HD%$H2~NI(B *** $B3NDj%"%s%I%%$N:]$N%+!<%=%k0LCV$N=$@5(B $BNc$($P!VK~$?!W$r!V8+$?!W$K:FJQ49$7$?$$>l9g!"(B $BK~$?(B-!- $B$G(B M-x skk-undo-kakutei $B$9$k$H(B $B"'8+(B-!-$B$?(B $B$H$J$j%+!<%=%k0LCV(B (-!-) $B$,Aw$j2>L>$NA0$K%:%l$k8=>]$,=$@5$5$l$^$7$?!#(B *** $B3NDj%"%s%I%%$7$F:FJQ493NDj8e$N%+!<%=%k0LCV$N@)8f(B $B%f!<%6%*%W%7%g%s(B skk-undo-kakutei-return-previous-point $B$,?7@_$5$l$^$7(B $B$?!#Nc$($P!V=k$+$C$?!W$H$7$?$$$H$3$m$r!VG.$+!W$G3NDj$7$F$7$^$C$F!"99$K(B $BG.$+$C$?(B-!- $B$^$GBG$C$F$7$^$C$F$+$i:FJQ49"*3NDj$9$k$H!"=>Mh$O(B $B=k$+(B-!-$B$C$?(B $B$G=*$o$j$^$7$?$,!"$3$N%*%W%7%g%s$r(B non-nil $B$K@_Dj$9$k$H(B $B=k$+$C$?(B-!- $B$G=*$o$j$^$9!#$3$l$K$h$jB3$/F~NO$K%9%`!<%:$K0\9T$G$-$^$9!#(B *** $BAw$j$"$j3NDjJQ49$KBP$9$k3NDj%"%s%I%%$N5sF0$N@)8f(B **** M-x skk-undo-kakutei $B$7$?>l9g$N%+!<%=%k0LCV(B $B!VK~$?!W$r!V8+$?!W$K:FJQ49$7$?$$>l9g!"(B $BK~$?(B-!- $B$G(B M-x skk-undo-kakutei $B$9$k$H(B $B"'8+(B-!-$B$?(B $B$H$J$j%+!<%=%k0LCV(B (-!-) $B$,Aw$j2>L>$NA0$K%:%l$k8=>]$,$"$j!"=$@5$5$l$^(B $B$7$?!#(B($BAw$jL5$7$HF1MM$N5sF0(B) **** `x' $B$G3NDj%"%s%I%%$7$?$H$-$N5sF0(B $B=>Mh$O!"Aw$j$"$j3NDjJQ49D>8e(B `x' $B$r%?%$%W$9$k$H"&%b!<%I$K$J$C$F$$$^$7(B $B$?$,!"$3$l$OAw$jM-$jJQ49$H$NAj@-$,NI$/$"$j$^$;$s$G$7$?!#(B $B$^$?(B M-x skk-undo-kakutei $B$H$N5!G=$NN`;w@-$r9MN8$7!"(B`x' $B$r%?%$%W$7$?$H(B $B$-$b"'%b!<%I$K0\9T$9$k$h$&$KJQ99$5$l$^$7$?!#(B ** $B3NDjJQ49$N3HD%$H2~NI(B *** $B@Q6KE*$J3NDjJQ49%b!<%I(B $B%f!<%6%*%W%7%g%s(B skk-kakutei-when-unique-candidate $B$,?7@_$5$l$^$7(B $B$?!#(BNon-nil $B$G$"$l$P!"JQ498uJd$,0l$D$7$+$J$$$H$-JQ498e<+F0E*$K3NDj$7$^(B $B$9!#(B $B$3$N5!G=$r>o$KM-8z$K$7$?$$>l9g$O(B t $B$K!"Aw$jL5$7JQ49;~$@$1M-8z$K$7$?$$(B $B>l9g$O(B okuri-nasi $B$K@_Dj$7$^$9!#(B ** $BJd405!G=$N3HD%$H2~NI(B *** skk-completion-prog-list $B%f!<%6$O(B skk-search-prog-list $B$GJQ495!G=$r<+M3$KA*$Y$^$9$,!"$=$l$HF1MM(B $B$KJd405!G=$r<+M3$KA*$V$3$H$,$G$-$k$h$&$K$J$j$^$7$?!#$=$l$r;XDj$9$kJQ?t(B $B$,(B skk-completion-prog-list $B$G$9!#(B *** skk-comp-use-prefix $B$^$@$+$J$K3NDj$7$F$$$J$$%m!<%^;z(B prefix $B$r$_$FJd40$9$k5!G=$,$7(B **** $B%f!<%6%*%W%7%g%s$NJQ99(B $B5lMh$N%3%^%s%I%i%$%s%*%W%7%g%s$r;XDj$9$k%f!<%6%*%W%7%g%s$rA4$FGQ;_$7(B $B0J2<$r?7@_(B skk-look-conversion-arguments skk-look-completion-arguments *** $BJd405!G=$N4JC1$J@Z$jBX$((B skk-completion-prog-list-1, skk-completion-prog-list-2, ... skk-completion-prog-list-9, skk-completion-prog-list-0 $B$H$$$&JQ?t$r?7@_$7$^$7$?!#$3$l$i$O(B skk-completion-prog-list $B$HA4$/F1$8(B $B7A<0(B ($BJd40%W%m%0%i%`$N(B list) $B$G@_Dj$G$-$^$9!#(B $BNc$($P"&%b!<%I$G(B TAB $B$NBe$o$j$K(B C-6 TAB $B$HF~NO$9$k$H!"(B skk-completion-prog-list $B$NBe$o$j$K(B skk-completion-prog-list-6 $B$r;H$C(B $B$FJd40$7$^$9!#(B $BJQ49$K$bN`;w$N5!G=$,;H$($k$h$&$K$J$j$^$7$?$N$G!"$=$N9`L\$bFI$s$G2<$5$$!#(B ** $B%"%T%"%i%s%9$N3HD%(B *** $BJQ498uJd!&Cm~!&2C9)5!G=(B $BJQ?t(B skk-treat-candidate-appearance-function $B$r@_Dj$9$k$3$H$K$h$j!"Cm(B $BR2p$7$F$$$/M=Dj$G$9!#(B $B$3$N5!G=$O8uJd$dCm~$7$FI=<($9$k$3$H$b$G$-$^$9!#$3$N5!G=(B $B$ODL>o$N8uJdJQ49;~$HCm~5!G=$,40A4$K%5%]!<%H$5$l$k$N$O(B GNU Emacs 21 $B0J9_$H$J$j$^$9!#$=$l0J30(B $B$N%P!<%8%g%s$O%$%s%i%$%sI=<($H%(%3!<%(%j%"I=<(;~$N%a%C%;!<%8$O(B text property $BHsBP1~$G$9!#$3$l$i$N%P!<%8%g%s$G(B text property $B$rM-8z$K$9$k$K(B $B$O%P%C%U%!$r%]%C%W%"%C%W$9$kI,MW$,$"$j$^$9!#$=$N$?$a$N@_Dj$O0J2<$N$h$&(B $B$K$J$j$^$9!#(B (setq skk-annotation-show-as-message t) (setq skk-show-candidates-always-pop-to-buffer t) *** $B%$%s%i%$%s$N8uJd0lMwI=<((B $BJQ?t(B `skk-show-inline' $B$r(B non-nil $B$K@_Dj$9$k$3$H$G!"8uJd0lMw$rJQ490LCV(B $B$N6aK5$KI=<($G$-$^$9!#$3$N5!G=$O(B window system $B$K0MB8$7$J$$$?$a(B terminal $B$G$bMxMQ$G$-$^$9!#$3$N5!G=$O(B Emacs 20, XEmacs $B$G$bMxMQ$G$-$^(B $B$9$,!"(Bface $BI=<($KBP1~$7$F$$$k$N$O(B GNU Emacs 21 $B0J9_$N$_$G$9!#(B *** $B%D!<%k%F%#%C%W$rMxMQ$7$?8uJd0lMw!&CmiD9$J(B) $B0FFb%a%C%;!<%8$rI=<($9$k5!G=$NDI2C(B $B%f!<%6%*%W%7%g%s(B skk-verbose $B$,?7@_$5$l$^$7$?!#$3$l$r(B non-nil $B$K@_Dj$9(B $B$k$H!"(BSKK $B$,=>MhI=<($7$J$+$C$?$h$&$JF~NO!&JQ49Cf$N=u8@E*%a%C%;!<%8$,I=(B $B<($5$l$^$9!#6qBNE*$K$O!"(B o $B"&%b!<%I$G0lDj;~4V%-!R2p$5$l$F$$$J$$?75!G=$K$D$$$F(B $B%f!<%6$K0FFb$9$k$h$&$J3HD%$,4|BT$5$l$^$9!#(B ** $BJQ495!G=$N3HD%(B *** $B?tCMJQ49M-8z;~$KHs?tCMJQ49$bF1;~$K9T$&$h$&$KJQ99(B $B:#$^$G!"(Bskk-use-numeric-conversion $B$,(B non-nil $B$@$H?tCMJQ49$N$_9T$$!"Hs(B $B?tCMJQ49$OL58z$K$9$k$h$&$K$J$C$F$$$^$7$?$,!"GSB>E*$G$"$kI,MW$O$J$$$H9M(B $B$($i$l$?$N$G!$>o$KHs?tCMJQ49$O9T$&$h$&$K$7$^$7$?!#$3$l$K$h$j!"(B skk-use-numeric-conversion $B$rM-8z$K$7$F$$$k>l9g$G$b(B 10^-1 /deci;SI$B@\F,8l(B/d/$B%G%7(B/ 10^-2 /centi;SI$B@\F,8l(B/c/$B%;%s%A(B/ 10^-3 /milli;SI$B@\F,8l(B/m/$B%_%j(B/ $B$J$I$NJQ49$b$G$-$^$9!#(B $B$?$@$7!"C18lEPO?%b!<%I$KF~$k$H?tCMJQ49$N8uJd$H$7$F07$o$l$^$9!#(B *** $BJQ495!G=$N4JC1$J@Z$jBX$((B skk-search-prog-list-1, skk-search-prog-list-2, ... skk-search-prog-list-9, skk-search-prog-list-0 $B$H$$$&JQ?t$r?7@_$7$^$7$?!#$3$l$i$O(B skk-search-prog-list $B$HA4$/F1$87A<0(B ($BJQ49%W%m%0%i%`$N(B list) $B$G@_Dj$G$-$^$9!#(B $BNc$($P"&%b!<%I$G(B SPC $B$NBe$o$j$K(B C-6 SPC $B$HF~NO$9$k$H!"(B skk-search-prog-list $B$NBe$o$j$K(B skk-search-prog-list-6 $B$r;H$C$FJQ49$7(B $B$^$9!#(B $BJd40$K$bN`;w$N5!G=$,;H$($k$h$&$K$J$j$^$7$?$N$G!"$=$N9`L\$bFI$s$G2<$5$$!#(B ** $B%"%N%F!<%7%g%s$N$?$a$K(B Wikipedia/Wiktionary $B$r;2>H$9$k5!G=(B SKK $B<-=q$KD>@\CmH$7(B $B$FCmr7o$G$b;HMQ$G$-$^(B $B$9!#$=$N>l9g$O(B region $B$r@_Dj$7$F(B M-x skk-annotation-wikipedia-region $B$rl(B $B9g$O(B point $B$N0LCV$K$"$kC18l$r?dB,$7$F8!:w$7$^$9!#$?$@$72$JF8l0J30$GC1(B $B8l$,@5$7$/\$7$/$O(B skk-annotation.el $B$NKAF,%3(B $B%a%s%H$r;2>H$7$F$/$@$5$$!#(B $BK\5!G=$N;EMM$O$^$@40A4$K$O3NDj$7$F$*$i$:!"$^$?l9g$,$"$j$^$9!#(B * 12.2.0 ** $B8D?M<-=q$NJ]B8$K4X$9$k@H$N(B version $B$N(B Emacs, XEmacs $B$K$*$1$k(B `make-temp-file' $B4X?t$N%5%]!<%H(B $B$O(B APEL 10.6 $B$G9T$o$l$^$9!#(B APEL 10.6 $B$K$D$$$F$O!"(Bhttp://emacs-w3m.namazu.org/ml/msg05365.html $B$r(B $B$4;2>H2<$5$$!#(B $B$J$*!"(BEmacs 20 $B$G$O!"$3$NLdBj$K4XO"$7!"0l;~%U%!%$%k$,0BA4$K@8@.$G$-$J(B $B$$LdBj$,$"$j$^$9!#$3$NLdBj$r2sHr$9$k$?$a$K!"4D6-JQ?t(B TMPDIR $B$r3F%f!<%6(B $B$N$_$,=q$-9~$_2DG=$J%G%#%l%/%H%j(B ($BNc$($P(B file mode $B$r(B 0700 $B$K@_Dj$7$?(B ~/tmp) $B$K;XDj$9$k$3$H$,6/$/?d>)$5$l$^$9!#$3$N4D6-JQ?t$r@_Dj$9$k$3$H$G(B `temp-file-name-pattern' $B$d(B `temporary-file-directory' $B$J$I$NJQ?t$N@_(B $BDj$,1F6A$r\$7$/$O!"(B http://bugs.debian.org/cgi-bin/bugreport.cgi?archive=no&bug=192732 http://bugs.debian.org/cgi-bin/bugreport.cgi?archive=no&bug=198567 $B$r$4;2>H2<$5$$!#(BEmacs 21 $B$G$O$3$N@HuBV$G$5$i$KJd40$r9T$&$HF~NOJ8;zNs$KLa$k$3$H$,2DG=$K(B $B$J$j$^$7$?!#(B ** $B?7$7$$%f!<%6JQ?t(B skk-isearch-mode-enable $B$3$NJQ?t$r(B `nil' $B$K@_Dj$9$k$3$H$K$h$j!"%$%s%/%j%a%s%?%k%5!<%A$G(B skk-isearch $B$rMxMQ$7$J$$$h$&$K$9$k$3$H$,2DG=$K$J$j$^$7$?!#(Bmigemo $B$rMx(B $BMQ$7$?$$>l9g$J$I$K$O(B `nil' $B$K@_Dj$9$k$HNI$$$G$7$g$&!#(B ** skk-study.el $B$,@5<0%5%]!<%H$NBP>]$K$J$j$^$7$?!#(B $B$3$l$KH<$$!"%W%m%0%i%`$,(B skk/main/experimental/skk-study.el $B$+$i(B skk/main/skk-study.el $B$K0\F0$5$l$^$7$?!#(B`skk-study-first-candidate', `skk-study-max-distance' $B$N(B 2 $B$D$N?7$7$$%f!<%6JQ?t$,A}$($F$$$^$9(B ($B>\:Y(B $B$O(B C-h v skk-study-first-candidate $B$J$I$H$7$FI=<($5$l$k%I%-%e%a%s%H$r(B $B$4;2>H2<$5$$(B)$B!#(B ** $B99$K$N%P%C%U%!$K0\$C$?$H$-$K!"$=$N%P%C%U%!$G$b2J3X$NOCBj$r=q$/$N$G$"$l$P!"(B M-x skk-study-switch-current-theme $B$7$F(B science $B$HF~$l$^$7$g$&!#@hDx3X(B $B=,$7$?(B science $BHG3X=,%G!<%?$r;HMQ$7$^$9!#$=$N%P%C%U%!$G$OK!N'$K$D$$$F(B $B=q$-$?$$$N$G$"$l$P!"%F!<%^$r(B law $B$J$I$H$9$k$H(B science $B$J3X=,%G!<%?$O;2(B $B>H$7$^$;$s!#3X=,%F!<%^$O(B Emacs $B$G07$($kJ8;zNs$J$i$P!"(Bmultibyte $BJ8;zNs(B $B$G$b9=$$$^$;$s!#(B $B$^$@==J,8!>Z$5$l$F$*$i$:!"(B~/.skk-study $B$N%U%)!<%^%C%H$r2u$7$F$7$^$&62(B $B$l$,$"$k$?$a!"%P%C%/%"%C%W$re$N%G%#%l%/%H%j(B $B$N(B skk-study.el $B$K>e=q$-$7$F(B make $B$7$F2<$5$$!#(B $B$J$*!"(BM-x skk-study-remove-theme $B$GITMW$J%F!<%^$r>C$9$3$H$,$G$-(B ($B%F!<(B $B%^(B general $B$O>C$;$^$;$s(B) M-x skk-study-copy-theme $B$G$"$k%F!<%^$N3X=,%G!<(B $B%?$rB>$N%F!<%^$K%3%T!<$9$k$3$H$,$G$-$^$9!#(B ** $BJT=8$NJ8L.$K1~$8$?<+F0E*$J(B latin $B%b!<%I$X$N@Z$jBX$(%5%]!<%H(B `major-mode' $B$,%W%m%0%i%`8@8l$N%b!<%I$G$"$k>l9g$K!"J8L.$K1~$8$F<+F0E*(B $B$K(B latin$B%b!<%I$X@Z$jBX$($r9T$&5!G=$r;n83E*$K%5%]!<%H$7$F$$$^$9!#>\:Y$O!"(B experimental/context-skk.el $B$NCf$N%I%-%e%a%s%H$r;2>H$7$F2<$5$$!#(B ** $BC14A;zJQ49$N%5%]!<%H(B $BFI$_$N:G8e$K!"FI$_$N0lIt$H$7$F(B @ $B$rF~NO$7$F$+$iJQ49$9$k$H!"0lJ8;z$N$_(B $B$+$i$J$k8uJd$K9J$j9~$s$@>e$G!"8uJd$rAm2h?t=g$G%=!<%H$7$F$+$iJQ49$9$kC1(B $B4A;zJQ495!G=$r;n83E*$K%5%]!<%H$7$F$$$^$9!#>\:Y$O!"(B experimental/skk-tankan.el $B$NCf$N%I%-%e%a%s%H$r;2>H$7$F2<$5$$!#(B * 12.1 ** $B8E$$(B Emacsen $B$N%5%]!<%H=*N;(B $B0J2<$N%P!<%8%g%s$N%5%]!<%H$OBG$A$-$j$^$7$?!#(B Mule 2.3 (based on Emacs 19.28 or 19.34) $B0JA0(B Emacs 20.2 $B0JA0(B XEmacs 20.4 $B0JA0(B $B$3$l0J30$O%5%]!<%HBP>]$G$O$"$j$^$9$,!"?d>)$5$l$k$N$O0J2<$N(B Emacsen $B$G(B $B$9!#(B Emacs 20.7 $B0J>e(B XEmacs 21.4.6 $B0J>e(B ** $BF0E*F~NOBP1~(B $B%-!H2<$5$$!#(B http://hp.vector.co.jp/authors/VA002116/azik/azikindx.htm ** $B%"%$%3%s(B Emacs 21 $B$H(B XEmacs $B$K$*$$$F!"%b!<%I9T$K%"%$%3%s$r@_CV$7$^$7$?!#(B * 11.6 ** Minor bug fixed. * 11.5 ** GNU Emacs 21 $BBP1~(B GNU Emacs 21 $B$KBP1~$7$^$7$?!#(B ** $BG[I[J*$K(B S $B<-=q$,4^$^$l$^$9!#(B $B=>Mh$OJL$K<-=q$rF~Mh$N(B make.bat $B$O4D6-JQ?t$NDj5A$r=|$$$?>e$G!"(Bmake1.bat $B$K2~L>$5$l$^$7(B $B$?!#(B $B$^$?!"$h$jHFMQ@-$N9b$$%$%s%9%H!<%i$H$7$F(B makeit.bat $B$,DI2C$5$l$^$7$?!#(B $B;HMQK!$O(B $B$3$N%G%#%l%/%H%j$K$"$k(B README.win $B$r;2>H$7$F$/$@$5$$!#(B ** Web $B8!:w%(%s%8%s$K$h$k8!:w(B experimental/skk-w3m.el $B$H$$$&?7$?$J%W%m%0%i%`$,DI2C$5$l$^$7$?!#(B $BDL>o$NJQ49$N$[$+!"DL2_$NC10L49;;$J$I!"$+$J$j%$%1$F$k$h$&$G$9!#(B $BNc$($P!"%I%k$r1_$K49;;$9$k$K$O(B $# /(skk-w3m-query-quote-yahoo "USD" "JPY" 'postfix "$B1_(B")/ $#.# /(skk-w3m-query-quote-yahoo "USD" "JPY" 'postfix "$B1_(B")/ $B$H$$$&%(%s%H%j$r8D?M<-=q$KDI2C$7$^$9!#(B skk-w3m.el $B$r;H$&$K$O(B w3m $B$r%$%s%9%H!<%k$9$kI,MW$,$"$j$^$9!#(B http://w3m.sourceforge.net ** SKK $B$K%R%s%H$rM?$($FJQ49(B experimental/skk-hint.el $B$H$$$&?7$?$J%W%m%0%i%`$,DI2C$5$l$^$7$?!#(B $B$3$l$r;H$&$H!"DL>o$NJQ49A`:n$N$J$+$G!"(BSKK $B$K%R%s%H$rM?$($k$3$H$,$G$-$^(B $B$9!#(BSKK $B$OM?$($i$l$?FI$_$r4^$s$@4A;z$r;}$D$b$N$K8uJd$r9J$j$^$9!#(B ** $BC10L49;;$K(B yard, feet, inch $B$rB>$NC10L$K49;;$G$-$^(B $B$9!#(B`skk-units-alist' $B$H$$$&JQ?t$r;2>H$7$F$/$@$5$$!#(B ** $BF|IUA^F~5!G=$N6/2=(B $BDL>o(B @ $B$r2!$9$3$H$K$h$C$FF|IU$,A^F~$5$l$^$9$,!"$3$N5!G=$,3HD%$5$l$^$7(B $B$?!#<-=q$N@_Dj$HJQ?t$N@_DjH$7$F$/$@$5$$!#(B `skk-gengo-alist' `skk-month-alist' `skk-day-of-week-alist' `skk-default-current-date-function' $B$^$?!"<-=q$X$N5-F~Nc$O!":G?7$N(B SKK-JISYO.L $B$rH$7$F$/$@$5$$!#(B ** $B:.$<=q$-<-=q(B tut-code/skk-mkmgk.el $B$O:.$<=q$-(B SKK $B<-=q$r:n@.$9$k%D!<%k$G$9!#(B $B$^$?!":n@.$5$l$?:.$<=q$-<-=q$,(B SKK-JISYO.mazegaki $B$H$$$&L>A0$G(B SKK $B3+(B $BH/%i%\$+$iG[I[$5$l$F$$$^$9!#(B ** $B$A$g$C$H%*%7%c%l(B (?) $B$J%$%s%8%1!<%?(B $B$3$N5!G=$O(B FSF Emacs 21 $B$H(B XEmacs $B$N$_M-8z$G$9!#%$%s%8%1!<%?$r%b!<%I9T(B $B$N:8$KI=<($9$k>l9g!"%+!<%=%k$N?'$HF1$8?'$,IU$/$h$&$K$7$^$7$?!#$^$?!"$3(B $B$N%$%s%8%1!<%?$N$H$3$m$G%^%&%9$NBh(B 2 $B%\%?%s$r%/%j%C%/$9$k$H!"%]%C%W%"%C(B $B%W%a%K%e!<$,I=<($5$l$^$9!#%a%K%e!<$N9`L\$O!"=i?4l9g$O(B ~/.skk $B$K(B (setq skk-search-prog-list (skk-nunion skk-search-prog-list '((skk-search-katakana)))) $B$H=q$-$^$9!#$3$NJ}K!$G$O!"(Bq $B$G%+%?%+%J$rF~NO$9$k$N$KHf$Y$F!"<-=qEPO?$G(B $B$-$k$H$$$&%a%j%C%H$,$"$j$^$9!#(B ** $B5<;w%5JQF~NO(B $B%59TJQ3J3hMQ$NF0;l$rAw$j$"$jJQ49$G$-$k$h$&$K$9$k$K$O(B ~/.skk $B$K(B (setq skk-search-prog-list (skk-nunion skk-search-prog-list '((skk-search-sagyo-henkaku)))) $B$H=q$-$^$9!#(B * 11.4 ** $B!V0UL#!W$r4^$`<-=q$Nl9g!"(B /usr/local/info/dir $B$H$$$&%U%!%$%k$K(B skk.info $B$r;2>H$9$k$?$a$N%(%s%H%j(B $B$r<+F0E*$K=q$-9~$`5!G=$,DI2C$5$l$^$7$?!#(B ** $B<+F0%U%#%k5!G=$NI|3h!#(B $B<+F0%U%#%k5!G=$,M-8z$K$J$C$F$$$k%P%C%U%!$K$*$1$k!"<+F0%U%#%k$N5sF0$r(B SKK 9.6 $B0JA0$N$=$l$KLa$7$^$7$?!#(B ** NICOLA-DDSKK NICOLA-DDSKK $B$O$b$O$de0L$K$"$k(B leim-list.el $B$r%m!<(B $B%I$9$k$@$1$J$N$G!"(Bskk $B$N%$%s%9%H!<%k$5$l$?%G%#%l%/%H%j$h$j>e0L$N%G%#%l(B $B%/%H%j$K(B leim-list.el $B$,$"$l$P$3$N5!G=$OL58z$K$J$k!#(B(*) (*) $B$?$@$7!"(Begg/leim-list.el $B$O(B load-path $B>e$N$9$Y$F$N(B leim-list.el $B$r%m!<%I$9$k$N$G$3$N8B$j$G$O$J$$!#F15!G=$O(B skk/leim-list.el $B$K$b(B $Be0L$K(B $B$/$k$?$a!"(Bleim/leim-list.el $B$,%m!<%I$5$l$F$7$^$$!"(Bskk/leim-list.el $B$,(B $B%m!<%I$5$l$J$$!#$=$N$?$a!"(BXEmacs $B$G$O(B skk/leim-list.el $B$OMQ$$$J$$$3$H(B $B$K$7$F$$$k!#$=$NBe$o$j!"(BXEmacs $B$N%Q%C%1!<%8$G$O(B auto-autoloads.el $B$,<+(B $BF0E*$K%m!<%I$5$l$k$N$G$3$l$rMxMQ$7$F$$$k!#(B $B$J$*!"(Bleim-list.el $B$r%m!<%I$7$J$$$b$N(B (Emacs 19) $B$K$*$$$F$b(B (require 'skk-setup) $B$G4pK\@_Dj$,$G$-$k!#(B ** skk-isearch $B$N(B input method $BBP1~!#(B ** Emacs 18 $BBP1~!#(B Nemacs 3.3.2 $B$*$h$S(B Mule 1.1 $B>e$G4pK\E*$J5!G=$,F0$/$h$&$K$J$C$?!#$?$@(B $B$7K0$/$^$GHs8x<0BP1~!#$3$N5!G=$O(B experimental/skk-e18.el $B$K$h$jDs6!$5(B $B$l$k!#(B $B$^$?!"(BEmacs 18 $B$N$?$a$KI,MW$H$5$l$k$b$N!"$*$h$S$"$k$HJXMx$J$b$N$r(B patch/e18 $B%G%#%l%/%H%j$K<}O?$7$?!#(B ** $B8uJdI=<($,D9$$>l9g$KBP1~$9$k5!G=(B ($B@lMQ$N(B window $B$r;H$&(B)$B!#(B $B8uJd0lMw$,0l9T$G$OI=<($7$-$l$J$$>l9g$K!"%&%#%s%I%&$rJ,3d$7$F$=$3$K8uJd(B $B0lMw$,I=<($5$l$k$h$&$K$J$C$?!#A`:n@-$KJQ99$O$J$$!#(B ** JIS X 0213 $B%5%]!<%H!#(B skk-jisx0213.el $B$K$h$j$3$N5!G=$,Ds6!$5$l$k!#(B ** $B2>L>F~NOBP1~(B (experimental/nicola)$B!#(B experimental/nicola $B%G%#%l%/%H%j$K!"(BSKK $B$r2>L>F~NOBP1~$5$;$k$?$a$N%W%m(B $B%0%i%`$,DI2C$5$l$?!#(B ** skk-look $B$K$h$k(B ispell $B$r;HMQ$7$?=$@5!#(B skk-look $B$G1QC18l$J$I8!:w$9$k:]$K!"(Bispell $B$GDV$j$r=$@5$9$k5!G=$,DI2C$5(B $B$l$?!#(B ** APEL $B$N%P!<%8%g%s%A%'%C%/!#(B APEL $B$N%P!<%8%g%s$r%A%'%C%/$9$k$?$a!"(Bproduct.el $B$rMxMQ$9$k$h$&$K$J$j$^$7$?!#(B $B8=:_!"(BAPEL $B$O(B 10.6 $B0J9_$,I,MW$H$J$j$^$9!#(B ** $B?7$7$$%+!<%=%k@)8f5!9=$r:NMQ!#(B GNU Emacs $B$K$*$$$F$O!"(Bccc.el $B$K$h$j?7$7$$%+!<%=%k@)8f5!9=$,Ds6!$5$l$k!#(B XEmacs $B$K$D$$$F$OK\BN$,$h$jNI$$@)8f5!9=$r;}$C$F$$$k$3$H$,J,$+$C$?$N$G!"(B $B$+$J$j4J7i$J5-=R$G%+!<%=%k@)8f$,$G$-$k$h$&$K$J$C$?!#(B ** $B4X?t(B skk-set-cursor-properly $B$OGQ;_$5$l$^$7$?!#(B isearch $B$N@_Dj$G(B add-hook $B$7$F$$$k>l9g$J$I!"(B skk-set-cursor-properly $B$N@_Dj$r:o=|$7$F2<$5$$!#(B ** custom group $B$N8+D>$7!#(B $B%+%9%?%^%$%:$70W$$$h$&$K!"(Bcustom group $B$N8+D>$7$,9T$o$l$?!#(B ** Input Method $B$H$7$F$N5!G=$N2~A1!#(B Emacs 20 $B$N0Y$N=$@5!#(BSKK $B$r(B Emacs $B$N(B Input Method $B$H$7$F;HMQ$7$F$$$k$H(B $B$-!"4X?t(B `read-from-minibuffer' $B$N(B $BBh(B 7 $B0z?t(B INHERIT-INPUT-METHOD $B$r(B $BHs(B nil $B$K$7$F$b@5$7$/F0:n$7$J$$%P%0$,=$@5$5$l$?!#(B ** Canna $B$H$NAj@-$N2~A1!#(B SKK $B$r5/F0$9$kA0$K(B Canna $B$N@_Dj$r$7$F$$$k$H!"%9%Z!<%9$r2!$7$F$bJQ49$G(B $B$-$J$$LdBj$,=$@5$5$l$?!#(B ** $B$$$/$D$+$N%P%0$N=$@5!#(B $B0J2<$N4X?t$N%P%0$,=$@5$5$l$?(B ($B1L$l$,$"$C$?$iDI2C$7$F$/$@$5$$(B)$B!#(B o skk-count-jisyo-candidates-original o skk-clock o skk-num-type3-kanji-1 * Daredevil branch 11.1 ** skk.el $B$N99$J$k%7%'%$%W%"%C%W$r8!F$!#(B $BJL%U%!%$%k$K$FDs6!$G$-$kFC.$5$$$N$G!"$H$j$"$($:8+Aw$j!#B>$K$J$s$+$"$k$+$J!)(B $B$R$i$,$J(B -> $B%+(B $B%?%+%J0J30$N(B region $BJQ495!G=!"$H$+!#(B $B$H$j$"$($:2a5nJL$@$C$?%+!<%=%kJQ2=5!G=$r(B skk-cursor.el $B$H$7$FJ,N%!#(B $BJ,N%$7$?JQ?t!&4X?t$N%W%l%U%#%C%/%9$r(B skk-cursor- $B$KE}0l!#(B ** $B%_%K%^%`$N9=@.$r(B skk.el $B$N$_$K$9$k!"$H$$$&$N$r8!F$!#(B *** skk-foreword.el $B$r(B skk.el $B$HE}9g!#(B skk-foreword.el $B$O%f!<%6!J}$G;H$&%^%/%m!"%$%s%i%$%s4X?t$Nu$O(B...$B!#(B $B%_%K%^%`$N5!G=$7$+;H$o$J$/$H$b(B skk.el, skk-macs.el, skk-vars.el $B$N(B 3 $B$D$rMW(B $B$9$k$3$H$H$J$j!"%U%!%$%k$N?t$O(B main trunk $B$h$j$bA}$($F$$$k$,!"3F%U%!%$%k$NLr(B $B3d$r:F3NG'$7$?$N$G!"$3$l$rEZBf$K99$J$k8!F$$r2C$($k!#(B $B$A$J$_$K(B APEL $B$K$D$$$F$O2?$b8!F$$7$F$$$^$;$s!#(BAPEL $B$+$iI,MW$J$b$N$@$1$r5!3#(B $BE*$K$l(B `static-cond' $B$HAH$_9g$o(B $B$;$F;HMQ!#8z2L$OF1$8!#%P%$%H%3%s%Q%$%k%U%!%$%k$O!"(BMule2, Mule3, Mule4, XEmacs $B4V$G6&M-$G$-$J$$!#(B ** skk.el $B$+$i%+!<%=%k$NJQ2=5!G=$N$_$r. Now you can imput Japanese by TUT-code with SKK. Local variables: coding: iso-2022-jp-3 mode: outline end: ddskk-15.2/READMEs/PROPOSAL.ja0000644000570400056700000005461612117623637015521 0ustar kitamotoopenlab$B$3$N%U%!%$%k$K$O!"(BSKK $B%3!<%G%#%s%0$K4X$7!"Cm0U$9$Y$-E@!"E}0l$7$?J}$,NI$$(B $B$H;W$o$l$kE@$rNs5s$7$F$*$j$^$9!#(B $B3F9`L\$K4X$7$3$l$r$4;29M$K$7$F$$$?$@$$$F!"%3!<%G%#%s%0$9$k:]$O!"FC$K$40U(B $B8+$,$J$1$l$P$3$NJ}?K$K=>$C$F$$$?$@$-!"$40U8+$,$"$l$P!"(Bskk@ring.gr.jp $B$^$G$*4s$;2<$5$l$P9,$$$G$9!#(B * $B%"%&%H%i%$%s%b!<%I$N35N,(B $B$3$N%U%!%$%k$O%"%&%H%i%$%s%b!<%I$K$h$C$F5-=R$5$l$F$$$^$9!#(B C-c C-t (M-x hide-body) $B$9$l$P!"8+=P$7$@$1$,$4Mw$K$J$l$^$9!#$46=L#$N$"$k9`L\$K%+!<%=%k$r9g$o$;!"(B C-c C-e (M-x show-entry) $B$9$k$H!"$=$N9`L\$NFbMF$,$4Mw$K$J$l$^$9!#(B C-c C-c (M-x hide-entry) $B$G:FEY$=$N9`L\$r1#$9$3$H$,$G$-$^$9!#(B C-c C-a (M-x show-all) $B$GA4$F$N%F%-%9%H$rI=<($9$k$3$H$,$G$-$^$9!#%+!<%=%k0\F0$K$D$$$F$O!"2<5-$N(B $BDL$j$G$9!#(B C-c C-n ($B]$G$9!#(B $B$?$@$7!"8=u67$r9M$((B $B$k$H(B Emacs 20.7 $B0J9_!"$"$k$$$O(B XEmacs 21.4 $B0J9_$,?d>)$5$l$^$9!#(B ** Emacs $B$N%P!<%8%g%s4V:90[$N5[<}$O(B? DDSKK 14.2 $B$+$i$O!"(BGNU Emacs 22 $B0J>e$G$"$l$P(B APEL $B$OITMW$G$9!#(B Emacs $B$N%P!<%8%g%s4V:90[$O(B APEL (A Portable Emacs Library$B!#0JA0(B $B$O(B emu $B$H$7$FCN$i$l$F$$$?(B) $B$K$h$C$F5[<}$5$l$^$9!#(BAPEL $B$O(B http://git.chise.org/elisp/apel/ $B$+$i(B get $B$G$-$^$9!#(B $B$3$N(B Emacs $B$N4X?t$O!":G?7$N(B Emacs $B$K$7$+AuHw$5$l$F$*$i$:(B ($B$"$k$$$O;EMM(B $B$,0[$J$j(B)$B!";d$N(B Emacs $B$G$OF0$+$J$$!"$H$$$&$b$N$rH/8+$5$l$?>l9g$O!"(BAPEL $B$Ko(B SKK $B$r;H$&HO0O$GI,?\$N4X?t!&JQ?t!"(B (b)$BJ,3d$9$k$K;j$i$J$$$h$&$J>.$5$J4X?t!&JQ?t$"$k$$$O!"FC8e$K(B (eval-when-compile (require 'skk-macs) (require 'skk-vars)) $B$H=q$$$F2<$5$$!#(BSKK $B6&DL$N%^%/%m$d%$%s%i%$%s4X?t!"(Bprimary variables/constants $B$,(B skk-macs.el $B$K!"A4$F$NJQ?t$,(B skk-vars.el $B$K4^$^(B $B$l$F$$$^$9!#(B $B$^$?!"%*!<%H%m!<%I$7$?$$4X?t$N@k8@$ND>A0$N9T$K!"(B `;;;###autoload' $B$H=q$$$F2<$5$$!#$3$s$J46$8$G$9!#(B ;;;###autoload (defun skk-completion (first) ...) $B$3$l$G(B autoload $B$,<+F0E*$K@_Dj$5$l$^$9!#(B $B$^$?!"%U%!%$%k$NKvHx$O!"Nc$($P(B skk-abbrev.el $B$N>l9g$O2<5-$N$h$&$K5-=R(B $B$7$^$9!#(B (require 'product) (product-provide (provide 'skk-abbrev) (require 'skk-version)) ;;; skk-abbrev.el ends here * $B4X?tL>!&JQ?tL>$K$D$$$F(B ** $B%W%l%U%#%C%/%9(B skk-hoge.el $B$H$$$&%U%!%$%k$r?75,$K:n@.$7$?$i!"$=$NCf$K=q$/4X?t!&JQ?t$N(B $B%W%l%U%#%C%/%9$O!"2DG=$J8B$j(B `skk-hoge-' $B$H$7$F2<$5$$!#%U%!%$%k4V$NL>(B $BA0$N=EJ#$rHr$1$k$?$a$G$9!#(B $BC"$7!"(B (a)$B%3%^%s%I(B completion $B$N:]$KM>7W$J%3%^%s%IL>$r=PNO$7$J$$$?$a$K!"$"$k(B $B$$$O!"%f!<%6!!&JQ?tL>(B $B$N%W%l%U%#%C%/%9$r6hJL$9$k$3$H$rK8$2$^$;$s!#Nc$($P!"(B`skk-tut-' $B$H(B `skktut-' $B$J$I!#(B (b)skk-gadget.el $B$O/!9>iD9$J5$$,$7$^(B $B$9$N$G!":#$N$H$3$m$$!"$3$N;~E@$G4{$KB8:_$7$?4X?tL>!&JQ?tL>$K$D$$$F$O!">e5-$N(B $B4p=`$K=>$C$?%M!<%_%s%0$K$J$C$F$$$^$;$s!#(B ** $B%M!<%_%s%0$NE}0l(B $BJQ?tL>$d4X?tL>$rIU$1$k:]$KE}0l$7$FM_$7$$L>>N$r5s$2$F$*$-$^$9!#35G0E*$K(B $B$h$j%/%j%"$K$J$k$b$N!"$I$A$i$G$bNI$$$,E}0l$K$h$j%f!<%6!<$,%a%j%C%H$rl9g$O!"Nc$($P!"2<5-$N$h$&$K(B ~/.emacs $B$K=q$/$3$H$,$G$-$^$9!#(B $B$3$l$G!"(Bhode-mode $B$K$*$1$k3g8L$N%Z%"A^F~J8;zNs$rJQ99$9$k$3$H$,$G$-$^$9!#(B (add-hook 'hoge-mode-hook #'(lambda () (make-local-variable 'skk-auto-paren-string-alist) (setq skk-auto-paren-string-alist ...))) ** $B%P%C%U%!%m!<%+%kJQ?t$N@k8@(B $B%P%C%U%!%m!<%+%kJQ?t$N@k8@$K$O!"(B`defvar' $B$NBe$j$K(B `skk-deflocalvar' $B$r(B $B;H$C$F2<$5$$!#@k8@$@$1$G<+F0E*$K%P%C%U%!%m!<%+%k$K$5$l!"%I%-%e%a%s%H$K(B `(buffer local)' $B$NJ8;zNs$,A^F~$5$l$^$9!#(B ** $B%P%C%U%!%m!<%+%kJQ?t$N=i4|CM(B $B%P%C%U%!%m!<%+%kJQ?t$KBP$7GK2uE*A`:n$r9T$&>l9g!"$=$N=i4|CM$O(B nil $B$G$J(B $B$1$l$P$J$j$^$;$s!#$=$NM}M3$r0J2<$K=R$Y$^$9!#GK2uE*A`:n$H$O!"(Bdelete, delq, nconc, nreverse, setcar, setcdr $B$J$I!"(BLisp $B$N0lHLE*$JGK2uE*4X?t(B (setcar $B$d(B setcdr $B$O0lHLE*$G$J$$(B? $B0lHLE*$J$N$O(B rplaca, rplacd $B$+(B) $B$r;H(B $BMQ$9$k>l9g$NB>!"(Bset-marker $B$J$I$N%^!<%+!l9g$b4^$^$l$^$9!#(B $BNc$($P!"$"$k%P%C%U%!(B Buffer A $B$G2<5-$N$h$&$J%U%)!<%`$r=g2A$7$?$H$7$^$9!#(B ---------- Buffer A ---------------+--------------- Buffer B ---------- (setq test '(A B C)) | -> (A B C) | | (make-variable-buffer-local 'test) | | test | test -> (A B C) | -> (A B C) | (setcar test 'X) | | test | test -> (X B C) | -> (X B C) $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 $BCM$rD>@\=q$-JQ$($k$h$&$J%U%)!<%`$rI>2A$9$k$H(B Buffer B $B$+$i8+$($k%G%#%U%)%k(B $B%HCM$^$G=q$-JQ$C$F$7$^$$$^$9!#>e5-$NNc$O%j%9%H$G$9$,!"2<5-$N$h$&$K%^!<%+!<(B $B$r(B set-marker $B4X?t$GA`:n$7$?$H$-$bF1MM$N7k2L$H$J$j$^$9!#(B ---------- Buffer A ---------------+--------------- Buffer B ---------- (setq test (make-marker)) | -> # | | (make-variable-buffer-local 'test) | | test | test -> # | -> # | (set-marker test (point)) | | test | test -> # | -> # $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 non-nil $BCM$rBeF~$9$l$P!"0J8e$=$N%P%C%U%!%m!<%+%kCM$KGK2uE*A`:n$r$7$F$b$=$N(B $B%P%C%U%!$K8GM-$NCM$7$+JQ2=$7$^$;$s!#(B ---------- Buffer A ---------------+--------------- Buffer B ---------- (setq test nil) | | (make-variable-buffer-local 'test) | | test | test -> nil | -> nil | (setq test (make-marker)) | -> # | | (set-marker test (point)) | | test | test -> # | -> nil $B$3$N8=>]$KBP1~$7$?H2<$5$$!#$3$l$O!"=i4|CM$,(B nil $B$N%P%C%U%!%m!<%+%k$N%^!<%+!57$J$/$5$l$^$9!#%P%C%U%!%m!<%+%kJQ?t$r;H$&>l9g$O!"$3(B $B$N$3$H$r==J,G0F,$KCV$$$F2<$5$$!#(B ** $B%P%C%U%!%m!<%+%kJQ?t$H(B let $B%P%C%U%!%m!<%+%kJQ?t$HF1L>$NJQ?t$r(B let $B$K$F@k8@$9$k$3$H$K4X$7$F!"(BEmacs Lisp Reference Manual $B$N5-=R$r0J2<$K0lIt0zMQ$7$^$9!#(B *Warning:* When a variable has buffer-local values in one or more buffers, you can get Emacs very confused by binding the variable with `let', changing to a different current buffer in which a different binding is in effect, and then exiting the `let'. This can scramble the values of the buffer-local and default bindings. To preserve your sanity, avoid using a variable in that way. If you use `save-excursion' around each piece of code that changes to a different current buffer, you will not have this problem (*note Excursions::.). Here is an example of what to avoid: (setq foo 'b) (set-buffer "a") (make-local-variable 'foo) (setq foo 'a) (let ((foo 'temp)) (set-buffer "b") BODY...) foo => 'a ; The old buffer-local value from buffer `a' ; is now the default value. (set-buffer "a") foo => 'temp ; The local `let' value that should be gone ; is now the buffer-local value in buffer `a'. But `save-excursion' as shown here avoids the problem: (let ((foo 'temp)) (save-excursion (set-buffer "b") BODY...)) Note that references to `foo' in BODY access the buffer-local binding of buffer `b'. * $B%(%i!<$d%a%C%;!<%8$J$I$NI=<((B ($BF|1QI=<((B) $B$K$D$$$F(B SKK $B$O(B `skk-japanese-message-and-error' $BJQ?t$,(B nil $B$N>l9g$O%(%i!<$d%a%C(B $B%;!<%8$J$I$r1Q8l$GI=<($7!"$=$&$G$J$1$l$PF|K\8l$GI=<($7$^$9!#$3$NL\E*$N(B $B$?$a$K!"(B`skk-message', `skk-error', `skk-yes-or-no-p', `skk-y-or-n-p' $B$H$$$&%^%/%m$rDs6!$7$F$$$^$9!#(B (skk-error "$B4{$K"&%b!<%I$KF~$C$F$$$^$9(B" "Already in $B"&(B mode") (skk-message "\"%c\" $B$OM-8z$J%-!<$G$O$"$j$^$;$s!*(B" "\"%c\" is not valid here!" char ) $B$N$h$&$K;H$$$^$9!#C"$7!"(B`%c' $B$J$I$GI=<($9$kJ8;zNs$,!"F|K\8l$H1Q8l$G=g(B $B=x$,0[$J$k2DG=@-$,$"$j$^$9!#$3$N$h$&$J>l9g$O!"DL>o$N(B `error' $B$d(B `message' $B4X?t$H(B `skk-japanese-message-and-error' $BJQ?t$rAH$_9g$o$;$F;H$C(B $B$F2<$5$$!#$3$s$J46$8$G$9!#(B (if skk-japanese-message-and-error (error "\"%s\" $B$GJd40$9$Y$-8+=P$78l$O(B%s$B$"$j$^$;$s(B" skk-completion-word (if first "" "$BB>$K(B")) (error "No %scompletions for \"%s\"" (if first "" "more ") skk-completion-word)) $B$^$?!"(B`skk-y-or-n-p' $B$d(B `skk-yes-or-no-p' $B$N0z?t$K$O(B `%c', `%s' $B$J$I$r(B $BD>@\=q$/$3$H$,$G$-$:!"(B`format' $B4X?t$r;H$o$J$1$l$P$J$j$^$;$s!#$3$N$h$&(B $B$J>l9g$O!"DL>o$N(B `y-or-n-p', `yes-or-no-p' $B$r(B `skk-japanese-message-and-error' $B$HAH$_9g$o$;$FD>@\=q$$$?J}$,>iD9$K$J(B $B$j$^$;$s!#$3$s$J46$8$G$9!#(B (if (yes-or-no-p (format (if skk-japanese-message-and-error "$B<-=q$NJ]B8$r$;$:$K(B %s $B$r=*N;$7$^$9!#NI$$$G$9$+(B? " "Do you really wish to kill %s without saving Jisyo? ") (cond ((eq skk-emacs-type 'xemacs) "XEmacs") (t "Emacs"))))) * $B?75,$N%f!<%6!$H%A%e!<%H%j%"%k$G$NCM$H$N%I%C%H(B $B%Z%"$rDI2C$7$F2<$5$$!#(B $BDI2C$9$kJQ?t$N@-3J$K$h$j!"(Bskk.el $B$G$N%G%#%U%)%k%HCM$G$O$J$/!"JL$NCM$r(B $B;XDj$9$kI,MW$,$"$k>l9g$,$"$k$N$G!"$4Cm0U2<$5$$!#Nc$($P!"(B `skk-keep-record' $B$O(B non-nil $B$G$"$l$PJQ49>pJs$r(B ~/.skk-record $B$KJ]B8$9(B $B$k%*%W%7%g%s$G!"$=$N%G%#%U%)%k%HCM$O(B t $B$G$9$,!"%A%e!<%H%j%"%kCf$N<-=q(B $B$N%G!<%?!<$r$$!"(Bcdr $B$N%j%9%H$N8e$K?7$7$$MWAG$rDI2C$9$k$3$H$G!"(Bcar $B$G(B $BI=$o$5$l$k%-%e!<$NKvHx$K?7$7$$MWAG$rDI2C$9$k$3$H$,$G$-$^$9!#(B $B0lJ}!"(Bnconc $B$d(B append $B$G%j%9%H$r$D$J$0$K$O!"$=$l$i$N4X?t$NBh(B 1 $B0z?t$N(B $B%j%9%H$NA4$F$NMWAG$rAv::$;$M$P$J$i$:!"(BO(n) $B$N;~4V$,$+$+$k$N$G!"D9$$%j(B $B%9%H$r$D$J$0$H$-$OHf3SE*%3%9%H$,$+$+$j$^$9!#(B $B$5$F!"6u$N(B queue == (cons nil nil) $B$KBP$7!"?7$7$$MWAG(B A $B$rDI2C$9$kJ}K!(B $B$r@bL@$7$^$9!#$^$:!"?7$7$$MWAG(B A $B$N$_$r4^$s$@D9$5(B 1 $B$N%j%9%H(B (A) $B$r:n(B $B$j$^$9(B ($B2>$K(B new-pair $B$H$$$&JQ?t$KJ}$N%]%$%s%?$,(B (A) $B$r;X$9(B $B$h$&$K$7$^$9(B ($B%-%e!<$NMWAG$,(B A $B$7$+$J$$$N$G!"(Bfront, rear $B%]%$%s%?$H$b(B $B$KF1$8$b$N$r;X$7$F$$$k(B)$B!#(B queue +-------+-------+ | Front | Rear | +---|---+---|---+ | +---> +---------------+ +------------>| o | nil | +---|---+-------+ | +-------+ +----> | A | +-------+ $B>e5-$N(B queue, ((A) A) $B$KBP$7!"99$K?7$7$$MWAG(B B $B$rDI2C$7$^$9!#Nc$K$h$j(B B $B$N$_$r4^$`D9$5(B 1 $B$N(B $B%j%9%H(B (B) $B$r:n$j!"JQ?t(B new-pair $B$K2A$9$k$H(B ($BCm(B1)$B!"(B* $B$N8D=j$N%]%$%s%?A`:n$,9T$o$l!"%-%e!<$N:G8eJ}$K(B $B?7$7$$MWAG$G$"$k(B B $B$,DI2C$5$l$k$3$H$K$J$j$^$9!#(Bqueue $B$O(B ((A B) A B) $B$H$J$j$^$9!#(B queue +-------+-------+ | Front | Rear | +---|---+---|---+ | +---> +---------------+ * +---------------+ +------------>| o | o --|------->| o | nil | +---|---+-------+ +-------+-------+ | +-------+ | +-------+ +----> | A | +----> | B | +-------+ +-------+ $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 $B$F$$$k$N$G(B (setcdr (car queue) new-pair) $B$G$bEy2A$@$,!"%-%e!<$NMWAG(B $B$,(B 2 $B$D0J>e$N$H$-$O(B (setcdr (cdr queue) new-pair) $B$G$J$$$H$^$:$$!#(B $B:G8e$K(B (setcdr queue new-pair) $B$rI>2A$9$k$3$H$K$h$j!"(Brear $B%]%$%s%?$rD%$jJQ$($^$9(B (* $B$N8D=j$N%]%$%s%?(B $BA`:n$,9T$o$l$k(B)$B!#(Brear $B%]%$%s%?$,%-%e!<$N:G8eJ}$NMWAG$r;X$9$h$&$K$7$^(B $B$9!#(Bfront $B%]%$%s%?$,;X$9%j%9%H$O%-%e!<$NA4$F$NMWAG$rI=$o$7$^$9!#(B queue +-------+-------+ * | Front | Rear |---------------------+ +---|---+-------+ | | +---------------+ +--> +---------------+ +------------>| o | o --|------->| o | nil | +---|---+-------+ +-------+-------+ | +-------+ | +-------+ +----> | A | +----> | B | +-------+ +-------+ $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 $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 $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$9!#(B $B$J$*!"8=>u$G$O!"J?6Q$7$F0B2A$K%j%9%H$N:G8eJ}$KMWAG$r$D$J$2$k!"$H$$$&L\(B $BE*$K$@$1%-%e!<$r;H$C$F$*$j!"%-%e! From: Hideki Sakurada Date: Fri, 18 Dec 1998 22:49:36 +0900 (JST) $B;32<$5$s(B: > $B$d$O$j!"%+!<%=%k0\F0$r$7$?>l9g$O(B skk-prefix $B$r%/%j%"$7$F$l(B > $BJ}$,$&$l$7$$$h$&$J5$$,$7$^$9!#(B $B$3$N$"$?$j$O$J$s$H$+$7$?$$$H$3$m$N0l$D$G$9$M(B. $B%3!<%G%#%s%0$9$k2K$b$J$$$N$GC1$J$k;W$$$D$-$G$9$,(B... (1) pre-command-hook $B$h$j$b(B post-command-hook $B$H(B last-command $B$NAH$_$"$o$;$N$[$&$,$$$$5$$,$9$k(B. (2) $B!V%+!<%=%k(B($B%]%$%s%H(B)$B$N0\F0!W$rCj>]2=$7$?$[$&$,(B $B$$$$5$$,$9$k(B. $B$?$H$($P$3$s$J$+$s$8(B. # 10$BJ,$G=q$$$?$N$G$"$C$5$jGKC>$9$k$+$b(B... -- $B]/ED(B $B2>Dj(B: with-point-move $B$G$O%P%C%U%!$r$^$?$,$k0\F0$O$7$J$$(B TODO: hook/$BJQ?t$r%P%C%U%!%m!<%+%k$K$9$kI,MW$,$"$k(B with-point-move $B$G$N%(%i!<$,$*$-$?$i(B? (unwinding) SKK$BB&$NJQ99(B: skk-kana-input $BEy$O$[$H$s$I(B (with-point-move ...) $B$G0O$`(B point $B$,0\F0$7$?$H$-$KAv$k(B hook (defvar point-move-hook) $B%]%$%s%H$rJ]B8$9$kJQ?t(B (defvar previous-point nil) $B%]%$%s%H$r0\F0$9$k$,%U%C%/$rl9g$K;H$&(B (defmacro with-point-move (&rest form) `(progn ,@form (setq previous-point (point)))) ; $B%]%$%s%H$,0\F0$7$?$i(B point-move-hook $B$rA0$O%+%C%3$$$$$7!"$=$N$^$^;H$$$?$+$C$?$s$@$1$I!"(B $BB>$N%Q%C%1!<%8$HL>A0$N>WFM$,5/$3$C$F$O$$$1$J$$$N$G!"(B`skk-' prefix $B$rIU$1$?!#(B o with-point-move $B$G$O%P%C%U%!$r$^$?$,$k0\F0$O$7$J$$!"$H$$$&2>Dj$r$=$N(B $B$^$^A0Ds$H$7$?!#(B o skk-previous-point $BJQ?t!"(Bpost-command-hook $B$r$=$l$>$l%P%C%U%!%m!<%+(B $B%kJQ?t!&%U%C%/$K$7$?(B (skk-mode $B$r5/F0$7$?%P%C%U%!$@$1$GF0:n$5$;$k$?$a(B)$B!#(B o $B%P%C%U%!$r$^$?$,$J$$!"$H$$$&2>Dj$r$7$?$N$G!"(Bunwinding $B$K$D$$$F$O(B skk-previous-point $B$N%$%K%7%c%i%$%:0J30$O9MN8$7$F$$$J$$!#(B o post-command-hook $B$H$$$&$0$i$$$@$+$i!"(Binteractive command $B$@$1$KE*$r(B ^^^^^^^ $B$7$\$C$F(B skk-with-point-move $B$r;H$C$?!#(B o $BJ#?t$N4X?t$r%U%C%/$KF~$l$?$j$7$J$$$N$G!"(Bpoint-move-hook $B$O To: skk-subscribe@ring.gr.jp Mail body or subject: empty And follow en ezmlm's instruction automatically responded. To: skk-unsubscribe@ring.gr.jp Mail body or subject: empty And follow en ezmlm's instruction automatically responded. To: skk@ring.gr.jp Local variables: mode: text fill-column: 72 end: ddskk-15.2/READMEs/README.MacOSX.ja0000644000570400056700000001212412074660033016265 0ustar kitamotoopenlabMac OS X ‚Å SKK ‚ðŽg‚¤•û–@‚ɂ‚¢‚Äà–¾‚µ‚Ü‚·B “¯«‚Ì INSTALL ‚¨‚æ‚Ñ README ‚É‚à–Ú‚ð’Ê‚µ‚Ä‚¨‚¢‚ĉº‚³‚¢B * Ž–‘O€”õ ** Developer Tools (Xcode) ‚̃Cƒ“ƒXƒg[ƒ‹ Mac OS X ‚ɂ͉Šúó‘Ô‚Å‚Í make ƒRƒ}ƒ“ƒh‚ªƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚Ü‚¹‚ñBˆÈ ~‚Ìì‹Æ‚ð‚·‚é‚½‚ß‚É‚Í Developer Tools (Xcode) ‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é•K—v‚ª ‚ ‚è‚Ü‚·B Developer Tools ‚Í OS ‚ðƒpƒbƒP[ƒW‚Åw“ü‚µ‚½ê‡‚Í“¯«‚³‚ê‚Ä‚¢‚Ü‚·B‚à ‚µÅV‚Ì Developer Tools ‚ª•K—v‚Èê‡‚Í Apple Developer Connection https://connect.apple.com/ ‚ɂ˳—¿‚̉ïˆõ“o˜^‚ð‚·‚éŽ–‚Ń_ƒEƒ“ƒ[ƒh‚É‚©‚©‚éƒRƒXƒg‚݂̂œüŽè‚·‚鎖‚ª ‚Å‚«‚Ü‚·B‚Ü‚½AApp Store ‚Å‚àÅV‚Ì Developer Tools ‚ð“üŽè‚·‚邱‚Æ‚ª‚Å ‚«‚Ü‚·B‚È‚¨ Developer Tools ‚ÍAŒ»Ý‚Í Xcode ‚Æ‚¢‚¤’Pˆê‚̃AƒvƒŠƒP[ƒVƒ‡ ƒ“‚ɂȂÁ‚Ä‚¢‚Ü‚·B Xcode 4.3 ˆÈ~‚Å‚Í make ‚Ȃǂ̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“ƒc[ƒ‹‚Í Xcode ‹N“®Œã‚É Preferences ¨ Downloads ¨ Command Line Tools ‚ŕʓrƒCƒ“ƒXƒg[ƒ‹‚·‚é•K—v ‚ª‚ ‚è‚Ü‚·B ** ƒRƒ“ƒpƒCƒ‹‚É—˜—p‚·‚é Emacs ‚ÌŠm”F Terminal ‚æ‚è Emacs ‚̈ʒu‚ðŠm”F‚µ‚Ü‚·B $ which emacs Mac OS X •W€‚Ì Emacs ‚Í /usr/bin/emacs ‚É‘¶Ý‚µ‚Ü‚·BOS X 10.7.3 ‚Ì’iŠK ‚ŃCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚é‚à‚Ì‚ÍAGNU Emacs 22.1 ƒx[ƒX‚Å‚·B ˆê•ûAMac OS X ‚̃EƒBƒ“ƒhƒEƒVƒXƒeƒ€‚Å“®ì‚·‚é Emacs ‚É‚Í Carbon ‚ðŽg‚Á‚½ ‚à‚Ì‚Æ Cocoa ‚ðŽg‚Á‚½‚à‚Ì‚ª‚ ‚è‚Ü‚·BCarbon Emacs ‚É‚à‰½Ží—Þ‚©‚ ‚邿‚¤‚Å ‚·‚ªA‘K’J½Ži‚³‚ñì‚Ì Carbon Emacs Package ( http://homepage.mac.com/zenitani/emacs-j.html ) http://th.nao.ac.jp/MEMBER/zenitani/emacs-j.html ‚ªÅ‚à‚æ‚­XV‚³‚ê‚Ä‚¨‚èA‚Ü‚½“ú–{ŒêŠÂ‹«‚ª—\‚ß®”õ‚³‚ê‚Ä‚¢‚é‚Ì‚ÅAŽg‚¢ˆÕ ‚¢‚Å‚µ‚傤B‚±‚̃pƒbƒP[ƒW‚ÍA—lX‚ȃpƒX‚ɃCƒ“ƒXƒg[ƒ‹‚·‚邱‚Æ‚ª‰Â”\‚Å‚· ‚ªA•W€“I‚É‚Í /Applications (ƒn[ƒhƒfƒBƒXƒN‚ÌuƒAƒvƒŠƒP[ƒVƒ‡ƒ“vƒtƒHƒ‹ ƒ_)‚ɃCƒ“ƒXƒg[ƒ‹‚µ‚Ü‚·B‚»‚Ìꇂ̎ÀsŒ`Ž®ƒtƒ@ƒCƒ‹‚Í /Applications/Emacs.app/Contents/MacOS/Emacs ‚Å‚·BÅV‚Ì2010”N”Å‚Í GNU Emacs 22.3 ƒx[ƒX‚Å‚·B ‚Ü‚½AGNU Emacs 23 ‚©‚ç ƒ\[ƒX‚ÌC®‚È‚µ‚É Cocoa ”ł̃Rƒ“ƒpƒCƒ‹‚ª‰Â”\‚É ‚È‚è‚Ü‚µ‚½BCocoa ”Å ‚à Carbon Emacs ‚Æ“¯—l‚É Self contained ‚ȃAƒvƒŠƒP[ ƒVƒ‡ƒ“ƒoƒ“ƒhƒ‹‚ɂȂè‚Ü‚·B‚±‚¿‚ç‚à•W€“I‚É‚Í /Applications ‚ɃCƒ“ƒXƒg[ ƒ‹‚µAŽÀsŒ`Ž®ƒtƒ@ƒCƒ‹‚Í /Applications/Emacs.app/Contents/MacOS/Emacs ‚Å ‚·B * Emacs ‚ւ̃Cƒ“ƒXƒg[ƒ‹ ** APEL ‚̃Cƒ“ƒXƒg[ƒ‹ (DDSKK 14.1 ‚ðŽg‚¤ê‡) *** ’ˆÓ DDSKK 14.2 ‚æ‚è Carbon Emacs, Cocoa Emacs ‚Æ‚à APEL ‚̕ʓrƒCƒ“ƒXƒg[ƒ‹‚Í •s—v‚ɂȂè‚Ü‚µ‚½B–{€‚Í DDSKK 14.1 ‚̃†[ƒU‚Ì‚½‚ß‚Ìà–¾‚Å‚·B *** APEL ‚Ì Žæ“¾ DDSKK 14.1 ‚Å‚ÍA‚Ü‚¸ APEL ‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚邵‚Ü‚·BDaredevil SKK ‚Å‚ÍA APEL10.7 ˆÈ~‚ł̓®ì‚ªŠm”F‚³‚ê‚Ä‚¢‚Ü‚·‚ªA‚Å‚«‚邾‚¯ÅVƒo[ƒWƒ‡ƒ“‚ð ƒCƒ“ƒXƒg[ƒ‹‚·‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B APEL ‚ÍA http://git.chise.org/elisp/apel/ ‚©‚ç“üŽè‚Å‚«‚Ü‚·B *** APEL ‚Ì“WŠJ(‰ð“€) APEL ‚̃A[ƒJƒCƒu‚ðƒ_ƒuƒ‹ƒNƒŠƒbƒN‚·‚ê‚Î StuffIt Expander ‚É‚æ‚è‰ð“€‚³‚ê ‚Ü‚·B‚Ü‚½ATerminal ‚Ì‘€ì‚ÉŠµ‚ê‚Ä‚¢‚éꇂ͈ȉº‚̃Rƒ}ƒ“ƒh‚ðŽÀs‚·‚é Ž–‚Å‚à‰ð“€‚Å‚«‚Ü‚·B $ tar xvfz apel-10.8.tar.gz *** APEL ‚Ì byte-compile ‚ƃCƒ“ƒXƒg[ƒ‹ Carbon Emacs ‚â Cocoa Emacs ‚̂悤‚ÈA /Applications ‚̉º‚Ì Emacs.app ‚ð Žg‚¤ê‡‚ÍA Makefile ‚Ì EMACS ‚Ìs‚ðŽŸ‚Ì‚æ‚¤‚É•ÒW‚µ‚Ü‚·B EMACS = /Applications/Emacs.app/Contents/MacOS/Emacs ‚±‚̃pƒX‚Í Emacs.app ‚̃Cƒ“ƒXƒg[ƒ‹ƒpƒX‚ɇ‚킹‚Ä“K‹X•ÏX‚µ‚Ä‚­‚¾‚³‚¢B which ƒRƒ}ƒ“ƒh‚ŕԂÁ‚Ä—ˆ‚½ Emacs ‚ð—˜—p‚·‚éꇂÍÝ’è‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñB APEL ‚Ì“WŠJƒfƒBƒŒƒNƒgƒŠ‚Å Terminal ‚æ‚èˆÈ‰º‚̃Rƒ}ƒ“ƒh‚ðŽÀs‚µ‚Ü‚·B $ make $ sudo make install $ password: (Password‚ð•·‚¢‚Ä‚­‚é‚̂ŊǗƒpƒXƒ[ƒh‚ð“ü—Í) *** load-path ‚ւ̒ljÁ which ƒRƒ}ƒ“ƒh‚ŕԂÁ‚Ä—ˆ‚½ Emacs ‚ð—˜—p‚·‚éꇂÍÝ’è‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñB ‚Ü‚½ACarbon Emacs ‚â Cocoa Emacs ‚Å‚àÝ’è‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñB ** SKK ‚̃Cƒ“ƒXƒg[ƒ‹ *** SKK ‚Ì“WŠJ(‰ð“€) APEL ‚Æ“¯—l‚Ì•û–@‚ʼn𓀂ł«‚Ü‚·B *** SKK ‚̃Cƒ“ƒXƒg[ƒ‹ SKK ‚ð“WŠJ‚µ‚½ƒgƒbƒvƒfƒBƒŒƒNƒgƒŠ‚É SKK-CFG ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ª‚ ‚è‚Ü‚·B ‚±‚̃tƒ@ƒCƒ‹‚̓VƒXƒeƒ€ˆË‘¶‚̃Cƒ“ƒXƒg[ƒ‹Ý’è‚ðƒ†[ƒU‚ªs‚¤‚½‚߂ɂ ‚è‚Ü ‚·B‚±‚Ì’†‚̃hƒLƒ…ƒƒ“ƒg‚ÆÝ’è—á‚ðŽQl‚É‚µ‚Ä‚­‚¾‚³‚¢B Šî–{“I‚É‚Í APEL ‚Æ“¯—lA Carbon Emacs ‚â Cocoa Emacs ‚ð—˜—p‚·‚éê‡‚Í Makefile ‚Ì EMACS ‚Ìs‚ð APEL ‚ÌꇂƓ¯—l‚É•ÒW‚µ‚½Œã‚ÉA‚Ü‚½ which ƒRƒ} ƒ“ƒh‚ŕԂÁ‚Ä—ˆ‚½ Emacs ‚ð —˜—p‚·‚éꇂ͂»‚̂܂ÜA `sudo make install' ‚ŃCƒ“ƒXƒg[ƒ‹‚Å‚«‚é‚Í‚¸‚Å‚·B *** load-path ‚ւ̒ljÁ which ƒRƒ}ƒ“ƒh‚ŕԂÁ‚Ä—ˆ‚½ Emacs ‚ð—˜—p‚·‚éꇂÍÝ’è‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñB ‚Ü‚½ACarbon Emacs ‚â Cocoa Emacs ‚Å‚àÝ’è‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñB *** .emacs ‚ւ̒ljÁ which ƒRƒ}ƒ“ƒh‚ŕԂÁ‚Ä—ˆ‚½ Emacs ‚ð—˜—p‚·‚éꇂÍÝ’è‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñB ‚Ü‚½ACarbon Emacs ‚â Cocoa Emacs ‚Å‚àÝ’è‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñB * Mac OS X ã‚Å“®‚­Ž«‘ƒT[ƒo‚ɂ‚¢‚Ä Mac OS X ‚Å—˜—p‚Å‚«‚é SKK Ž«‘ƒT[ƒo‚ɂ͎Ÿ‚̂悤‚È‚à‚Ì‚ª‚ ‚è‚Ü‚·B ** skkserv skkserv ‚Í http://openlab.jp/skk/skk/skkserv/ ‚©‚ç“üŽè‚Å‚«‚Ü‚·B ** dbskkd dbskkd ‚Í http://www.ne.jp/asahi/bdx/info/software/jp-dbskkd.html ‚©‚ç“üŽè‚Å‚«‚Ü‚·B ** ƒXƒNƒŠƒvƒgŒ¾Œê‚ÅŽÀ‘•‚³‚ꂽƒT[ƒo ruby ‚ªŽg—p‚Å‚«‚é‚È‚ç‚ÎA rskkserv ‚ªŽg—p‚Å‚«‚Ü‚·B rskkserv ‚Í http://sourceforge.jp/projects/rskkserv/ ‚©‚ç“üŽè‚Å‚«‚Ü‚·B * Mac OS X ‚Å—˜—p‚Å‚«‚é SKK ŽÀ‘• Mac OS X ã‚Å“®ì‚·‚é SKK ƒ‰ƒCƒN‚Ì IME ‚ª‚ ‚è‚Ü‚·B ** AquaSKK Cocoa ‚É‚æ‚èŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·BSKK ‚Æ‹¤’ʂ̎«‘‚ªŽg—p‚Å‚«‚Ü‚·B http://aquaskk.sourceforge.jp/ * ‘¼‚Ìî•ñŒ¹ –{ƒhƒLƒ…ƒƒ“ƒg‚Ƈ‚킹‚Ĉȉº‚Ìî•ñ‚ðŠm”F‚·‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B http://sakito.s2.xrea.com/detail/emacs/emacs21.html Local variables: mode: outline end: ddskk-15.2/READMEs/README.VIP.ja0000644000570400056700000000164610664327612015646 0ustar kitamotoopenlabo VIP 3.7 does not work on XEmacs (nor Emacs 20, maybe). As to vip.el 3.7... To: skk@sato.kuis.kyoto-u.ac.jp, skk-develop@kuis.kyoto-u.ac.jp Subject: $B8D?M<-=q%5%]!<%H(B $B$H(B vip.el $B$N2~NI(B From: Masahiko Sato Message-Id: <19990825181018Y.masahiko@kuis.kyoto-u.ac.jp> Date: Wed, 25 Aug 1999 18:10:18 +0900 o emacs 19.34 $B$G$O(B vip-mode $B$G(B viper $B%m!<%I$5$l$k!#$3$l$KBP93$9$k$?$a(B $B$K$O!"0J2<$N$h$&$K(B .emacs $B$G@_Dj$9$l$P$h$$!#(B (defalias 'vip-mode 'Vip-mode) (autoload 'vip-mode "vip" nil t) (global-set-key "\C-z" 'vip-mode) o vip $B$H(B skk $B$NN>J}$r;H$&%f!<%6$O!"$5$i$K!"0J2<$rDI2C$9$k!#(B (autoload 'vip-skk-mode "vip" nil t) (global-set-key "\C-x\C-j" 'vip-skk-mode) o vip, skk $B$NN>J}$K4X78$9$k%3!<%I$O$9$Y$F!"(Bvip.el $B$K5[<}$7$?$N$G!"(Bskk $B$G$N8D?M@_Dj$O2?$b$7$J$/$F$h$$!#(B Local variables: mode: text end: ddskk-15.2/READMEs/README.w32.ja0000644000570400056700000001703412406270114015607 0ustar kitamotoopenlab`MAKEIT.BAT' ‚Ì•ÒW‚ƃCƒ“ƒXƒg[ƒ‹ [README.w32.ja] Windows 95, Windows 98, Windows Me, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7 ‚ÌŠeƒIƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€‚Ìã‚Å“®‚­ Emacs ‚É DDSKK ‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é•û–@‚ð‰ðà‚µ‚Ü‚·B Yuh Ohmura NAKAJIMA Mikio/’†“‡Š²•v “¯«‚Ì INSTALL ‹y‚Ñ README ‚à•K‚¸‚²——‰º‚³‚¢B * ‘O’u‚« ** Emacs 20 / Meadow 1.15 APEL ‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚½ã‚Å DDSKK 14.1 ‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚­‚¾‚³‚¢B ** Emacs 21 / Meadow 2.11 APEL ‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚½ã‚Å DDSKK 14.4 ‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚­‚¾‚³‚¢B ** Emacs 22 ˆÈ~ / Meadow 2.20 / Meadow 3.00 APEL ‚̃Cƒ“ƒXƒg[ƒ‹‚Í•s—v‚Å‚·B DDSKK ÅV”Å‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚­‚¾‚³‚¢B ** Emacs 24.3 ˆÈ~ DDSKK 14.4 ‚Å‚Í isearch ‚Ì•s‹ï‡‚ª‚ ‚è‚Ü‚·BDDSKK 15.1 ‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚­‚¾‚³‚¢B ** Emacs 24.4 ˆÈ~ NTEmacs 24.4 ‚ÍA“¯ 24.3 ‚Æ”ä‚ׂăfƒBƒŒƒNƒgƒŠ\¬‚ªˆÙ‚È‚è‚Ü‚·BDDSKK 15.2 ‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚­‚¾‚³‚¢B * Meadow/NTEmacs ˆÈ‰º‚Í Meadow 2.10 ‚ð—á‚ɉðà‚µ‚Ü‚·B‘¼‚̊‹«‚ɂ‚¢‚Ä‚à\•ªŽQl‚É‚È‚é ‚æ‚¤‚É‹Lq‚µ‚Ü‚·BMeadow ‚Í c:/meadow ‚ɃCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚邯‰¼’肵‚Ü‚·B ** gzip, make, tar ‚Ȃǂ̀”õ SKK ‚̃Cƒ“ƒXƒg[ƒ‹‚É‚Í gzip, make, tar ‚ÌŠeƒvƒƒOƒ‰ƒ€‚ðŽg‚¢‚Ü‚·B ‚±‚ê‚ç‚ð“üŽè‚·‚éŽè’i‚ÍA—Ⴆ‚Î http://sourceforge.net/projects/unxutils ‚Ȃǂª‚ ‚è‚Ü‚·B UnxUtils.zip ‚ðƒ_ƒEƒ“ƒ[ƒhE“WŠJ‚µ‚ÄA—Ⴆ‚Î c:/UnxUtils ‚É’u‚¢‚½‚Ɖ¼’肵A ~/.emacs ‚Ɉȉº‚̂悤‚Éݒ肵‚Ü‚·B (setenv "PATH" (format "%s;%s;%s" "c:\\UnxUtils\\bin" "c:\\UnxUtils\\usr\\local\\wbin" (or (getenv "$PATH") ""))) (setenv "SHELL" "sh.exe") ‚±‚ê‚Å shell ƒ‚[ƒh (M-x shell) ‚ªŽg‚¦‚邿‚¤‚ɂȂè‚Ü‚·B ƒRƒ}ƒ“ƒh‚ւ̃pƒX‚ðŠm”F‚·‚éꇂÍAshell ƒ‚[ƒh‚Å % type make ‚ȂǂðŽÀs‚µ‚Ü‚·B ‚È‚¨Acygwin ‚𓱓ü‚µ‚Ä‚¢‚éŠÂ‹«‚Å‚ÍAã‹LÝ’è‚ł͂Ȃ­ cygwin ‚ÌÝ’è‚ð‚µ ‚ĉº‚³‚¢B ** SKK ‚̃Cƒ“ƒXƒg[ƒ‹ *** gzip, make, tar ƒRƒ}ƒ“ƒh‚ðŽg‚¤ê‡ **** SKK ‚Ì“WŠJ(‰ð“€) SKK ƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚ðã‹L‚Ì tar.exe ‚ð—p‚¢‚Ä“WŠJ‚µ‚Ü‚·B % cd c:/tmp % gunzip ddskk-14.3.tar.gz % tar xvf ddskk-14.3.tar % cd ddskk-14.3 **** SKK Ž«‘‚̎擾 ˆÈ‰º‚ðƒ_ƒEƒ“ƒ[ƒh‚µ‚Ü‚·B http://openlab.jp/skk/dic/SKK-JISYO.L.gz ‚±‚ê‚ð gunzip ‚Å“WŠJ‚µ‚Ä ddskk ‚̃\[ƒX‚Ì dic ‚Æ‚¢‚¤ƒfƒBƒŒƒNƒgƒŠ‚É’u‚« ‚Ü‚·B **** SKK ‚Ì ƒCƒ“ƒXƒg[ƒ‹Ý’è ‚Ü‚¸Ashell ƒ‚[ƒh‚ňȉº‚ðŽÀs‚µ‚Ü‚·B % make what-where EMACS=c:/meadow/bin/Meadow.exe ŠeŽíƒtƒ@ƒCƒ‹‚̃Cƒ“ƒXƒg[ƒ‹æ‚ªo—Í‚³‚ê‚Ü‚·B‚±‚ê‚ðŒ©‚Ä–â‘è‚È‚¯‚ê‚ÎA‚» ‚̂܂܃Cƒ“ƒXƒg[ƒ‹‚Éi‚݂܂·B‚à‚µ–â‘肪‚ ‚ê‚ÎASKK-CFG ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹ ‚ð•ÒW‚µ‚Äݒ肵‚Ü‚·B‚±‚̃tƒ@ƒCƒ‹‚É‚Í ;;; Meadow 2.10 ‚Ü‚½‚Í 3.00-dev ‚ÌÝ’è—á: ‚Æ‚¢‚¤‚Ì‚ð“Á‚ÉÝ‚¯‚Ä‚¢‚Ü‚·‚Ì‚ÅA‚±‚ê‚ð—Œ`‚É•ÒW‚µ‚Ä‚­‚¾‚³‚¢B **** SKK ‚Ì ƒCƒ“ƒXƒg[ƒ‹ shell ƒ‚[ƒh‚ňȉº‚ðŽÀs‚µ‚Ü‚·B % make install EMACS=c:/meadow/bin/Meadow.exe *** makeit.bat ‚ðŽg‚¤ê‡ Daredevil SKK ‚É‚Í make ƒRƒ}ƒ“ƒh‚Ì‘ã‚í‚è‚ÉŽg‚¦‚é makeit.bat ‚Æ‚¢‚¤ƒtƒ@ƒC ƒ‹‚ðŽû˜^‚µ‚Ä‚¢‚Ü‚·B **** SKK –{‘ÌAŽ«‘‚̎擾‚Æ“WŠJ “K“–‚È•û–@‚Å“WŠJ‚µ‚Ü‚·BSKK-JISYO.L ‚ðA–{‘Ì‚ð“WŠJ‚µ‚½ dic ‚Æ‚¢‚¤ƒTƒuƒfƒB ƒŒƒNƒgƒŠ‚É’u‚«‚Ü‚·B **** makeit.bat ‚Ì•ÒW makeit.bat ‚ðŽ©•ª‚̊‹«‚ɇ‚킹‚Ä•ÒW‚µ‚Ü‚·B EMACS ‚͌䎩•ª‚Ì Emacs ‚̃tƒ‹ƒpƒX‚ðŽw’肵‚Ü‚·Bã‚Ì—á‚Å‚ÍA EMACS=c:\meadow\bin\Meadow.exe ‚»‚Ì‘¼‚ÌÝ’è‚ÍASKK-CFG ‚Ås‚¢‚Ü‚·B‚±‚Ì“_‚Í make ƒRƒ}ƒ“ƒh‚ðŽg‚¤ê‡‚Æ “¯—l‚Å‚·B **** makeit.bat ‚ÌŽÀs makeit.bat ‚ðŽg‚¤Žž‚Ì’ˆÓ“_‚ÍADOSPROMPT ‚̃vƒƒpƒeƒB‚ÅAŠÂ‹«•Ï”‚̃ƒ‚ ƒŠŠ„‚è“–‚Ä‚ªŽ©“®‚É‚È‚é‚ÆAŠÂ‹«•Ï”‚ªÝ’è‚Å‚«‚È‚¢‚Ì‚ÅA“K“–‚È’l (2048‚Æ ‚©) ‚ð“ü‚ê‚Ä‚¨‚­•K—v‚ª‚ ‚è‚Ü‚·B Windows ‚̃Rƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚Å makeit.bat ‚Ì‚ ‚éƒfƒBƒŒƒNƒgƒŠ‚Ɉړ®‚µ‚Ü ‚·B c:\>cd tmp c:\tmp>cd ddskk-14.3 `what-where' ‚ðˆø”‚Æ‚µ‚Ä makeit.bat ‚ðŽÀs‚·‚邯 C:\tmp\ddskk-14.3>makeit what-where ƒCƒ“ƒXƒg[ƒ‹æ‚ªŠm”F‚Å‚«‚Ü‚·B `install' ‚ðˆø”‚Æ‚µ‚Ä makeit.bat ‚ðŽÀs‚·‚邯 C:\tmp\ddskk-14.3>makeit install ƒoƒCƒgƒRƒ“ƒpƒCƒ‹‚ƃCƒ“ƒXƒg[ƒ‹‚ªŽÀs‚³‚ê‚Ü‚·B ‚È‚¨ADEFAULT_MAKE_ARG ‚É install ‚Æ‹Lq‚µ‚Ä‚¨‚­‚±‚Æ‚ÅAŽŸ‰ñ‚©‚ç‚Í MAKEIT.BAT ‚ðƒ_ƒuƒ‹ƒNƒŠƒbƒN‚·‚邾‚¯‚ŃCƒ“ƒXƒg[ƒ‹‚ª‰Â”\‚ƂȂè‚Ü‚·B “K‹XŽw’肪I‚Á‚½ makeit.bat ‚ÍA‰º‹L‚Ì‚¢‚¸‚ê‚©‚̃tƒ@ƒCƒ‹‚Æ‚µ‚ăRƒs[‚µ‚Ä‚¨ ‚­ŽŸ‰ñ‚Í‚»‚¿‚ç‚ð—D悵‚ÄŽÀs‚³‚ê‚Ü‚·B(ƒAƒbƒvƒOƒŒ[ƒh‚ÌÛ‚É makeit.bat ‚ð Ä•ÒW‚·‚é•K—v‚ª‚È‚­‚È‚è‚Ü‚·) —D懂É: 1-1. %HOME%\.elispmk.skk.bat 1-2. %HOME%\elisp\elispmk.skk.bat 1-3. %HOME%\config\elispmk.skk.bat 1-4. c:\Program Files\Meadow\elispmk.skk.bat 1-5. c:\Meadow\elispmk.skk.bat 1-6. d:\Meadow\elispmk.skk.bat 2-1. %HOME%\.elispmk.bat 2-2. %HOME%\elisp\elispmk.bat 2-3. %HOME%\config\elispmk.bat 2-4. c:\Program Files\Meadow\elispmk.bat 2-5. c:\Meadow\elispmk.bat 2-6. d:\Meadow\elispmk.bat *** ‘Θb“IƒCƒ“ƒXƒg[ƒ‰‚ðŽg‚¤ê‡ DDSKK 14.3 ‚ł͑Θb“IƒCƒ“ƒXƒg[ƒ‰‚ð’ljÁ‚µ‚Ü‚µ‚½B 1. M-x dired ‚ƃ^ƒCƒv‚µ‚Ä dired ‚ð‹N“®‚µ‚Ü‚·B‚±‚̂Ƃ«ƒfƒBƒŒƒNƒgƒŠ‚ð –â‚í‚ê‚Ü‚·‚Ì‚ÅA—Ⴆ‚Î /tmp/ddskk-14.3 ‚ÆŽw’肵‚Ü‚·B 2. ƒfƒBƒŒƒNƒgƒŠˆê——‚ª•\ަ‚³‚ê‚Ü‚·‚̂ŠSKK-MK ‚ɃJ[ƒ\ƒ‹‚ð‚ ‚í‚¹‚Ü‚·B 3. `L' (‘å•¶Žš‚̃Gƒ‹) ‚ðƒ^ƒCƒv‚µ‚Ä dired-do-load ‚ðŽÀs‚µ‚Ü‚·B ƒvƒƒ“ƒvƒg `Load SKK-MK?' ‚É‚Í y ‚𓚂¦‚Ü‚·B 4. ‚±‚êˆÈ~‚̓Cƒ“ƒXƒg[ƒ‰‚©‚ç‚ÌŽ¿–â‚É“š‚¦‚Ä‚­‚¾‚³‚¢B 5. Emacs ‚ðÄ‹N“®‚·‚邯 DDSKK ‚ªŽg‚¦‚Ü‚·B *** load-path ‚ւ̒ljÁ APEL ‚ÌŽž‚Æ“¯—lA‚ӂ‚¤‚Í load-path ‚ÌÝ’è‚ÍŽ©“®‚ÅAƒ†[ƒU‚ª‚·‚é•K—v‚Í ‚ ‚è‚Ü‚¹‚ñB *** .emacs ‚ւ̒ljÁ ʼn‚É‹N“®‚ðƒeƒXƒg‚·‚éÛ‚ÍA~/.emacs ‚Ö‚ÌÝ’è‚͂Ȃɂà•K—v‚ ‚è‚Ü‚¹‚ñB C-x C-j ‚Ü‚½‚Í M-x skk-mode ‚Å‹N“®‚µA“ü—͂ł«‚邱‚Æ‚ðŠm”F‚µ‚Ü‚·B * Windows ã‚Å“®‚­ SKK ƒT[ƒo Windows ‚Å—˜—p‚Å‚«‚é SKK Ž«‘ƒT[ƒo‚ɂ͎Ÿ‚̂悤‚È‚à‚Ì‚ª‚ ‚è‚Ü‚·B ** wskkserv Windows ã‚Å“®ì‚·‚é skkserv ‚Å‚·B (http://www.tatari-sakamoto.jp/wskkserv.jis.html) http://homepage3.nifty.com/monjya/wskkserv.jis.html ‚©‚ç“üŽè‚Å‚«‚Ü‚·B ** wceSKKSERV •¡”Ž«‘ŒŸõ‚ª‰Â”\‚È Windows Œn OS —p‚Ì skk ƒT[ƒo‚Å‚·B (http://ms.megadriver.yi.org/~fumi/wceskkserv/) http://www.megadriver.info/~fumi/wceskkserv/ ‚©‚ç“üŽè‚Å‚«‚Ü‚·B ** cygwin ‚ð—˜—p‚µ‚ă\[ƒX‚©‚çƒRƒ“ƒpƒCƒ‹‚µ‚Ä—˜—p‚·‚é cygwin ‚ªŽg—p‚Å‚«‚éŠÂ‹«‚Å‚Í skkserv ‚ð’¼ÚƒRƒ“ƒpƒCƒ‹‚µ‚ÄŽg—p‚·‚邱‚Æ ‚ª‚Å‚«‚Ü‚·Bskkserv ‚Í http://openlab.jp/skk/skk/skkserv/ ‚©‚ç“üŽè‚Å‚«‚Ü‚·B ‚Ü‚½Acygwin ‚Å GNU inetutils ‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚éê‡ dbskkd ‚ð—˜—p‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B http://www.cygwin.com ‚©‚ç“üŽè‚Å‚«‚é setup.exe ‚ð—˜—p‚·‚邯ƒCƒ“ƒXƒg[ƒ‹‚Å‚«‚Ü‚·B ‚È‚¨Ainetutils ‚ÌÝ’è‚ɂ‚¢‚Ä‚ÍA /usr/doc/Cygwin/inetutils-1.3.2.README ‚ðŽQÆ‚µ‚ĉº‚³‚¢B‚Ü‚½Adbskkd ‚Í http://www.ne.jp/asahi/bdx/info/software/jp-dbskkd.html ‚©‚ç“üŽè‚Å‚«‚Ü‚·B ** ƒXƒNƒŠƒvƒgŒ¾Œê‚ÅŽÀ‘•‚³‚ꂽƒT[ƒo ruby ‚ªŽg—p‚Å‚«‚é‚È‚ç‚ÎA rskkserv ‚ªŽg—p‚Å‚«‚Ü‚·B rskkserv ‚Í http://sourceforge.jp/projects/rskkserv/ ‚©‚ç“üŽè‚Å‚«‚Ü‚·B * Windows ã‚Å“®‚­ SKK ŽÀ‘• Windows ã‚Å“®ì‚·‚é SKK ƒ‰ƒCƒN‚Ì IME ‚ª‚ ‚è‚Ü‚·B ** skkime ݒ肪‚ ‚é’ö“x elisp ‚łł«‚邿‚¤‚ɂȂÁ‚Ä‚¢‚邱‚Æ‚ÆASKK ‚Æ‹¤’ʂ̎«‘ ‚ªŽg—p‚Å‚«‚Ü‚·B (http://www.tatari-sakamoto.jp/skkime.jis.html) http://homepage3.nifty.com/monjya/skkime.jis.html ** SKK“ú–{Œê“ü—ÍFEP ‚»‚̂܂܈ø—p‚³‚¹‚Ä‚¢‚½‚¾‚«‚Ü‚·B uSKK“ú–{Œê“ü—ÍFEP‚ÍWindows—p‚Ì“ú–{Œê“ü—̓\ƒtƒg‚Å‚·B ƒCƒ“ƒXƒg[ƒ‹‚·‚邯Windows‚Ì‚·‚ׂẴAƒvƒŠƒP[ƒVƒ‡ƒ“‚Éì—p‚µA SKK•ûŽ®‚É‚æ‚é“ú–{Œê‚Ì‚©‚ÈŠ¿Žš•ÏŠ·“ü—Í‚ª‰Â”\‚ɂȂè‚Ü‚·Bv http://coexe.web.fc2.com/programs.html ** corvus-skk CorvusSKK works as Text Input Processor (TIP) on Text Services Framework (TSF). http://code.google.com/p/corvus-skk/ Windows ‚͕đ Microsoft Corporation ‚̕đ‚¨‚æ‚Ñ‚»‚Ì‘¼‚Ì‘‚É‚¨‚¯‚é“o˜^¤•W‚Å‚·B Local variables: mode: outline end: ddskk-15.2/READMEs/TODO.ja0000644000570400056700000002671712306741346015026 0ustar kitamotoopenlab$B0J2<$O(B TODO $B$P$+$j$G$O$J$/!"7W$JJ8;zNs$r%P%C%U%!$K(B $BA^F~$9$k$3$H$KH<$&(B undo $B>pJs$NMp$l$rKI$0$3$H$b$G$-$k!#$?$@$7!"I=<($5$l(B $B$k(B column $B$N%:%l$J$I$r5$$K$9$k>l9g$b$"$j$&$k$N$G!"$^$@8=:_$Ne5-!VG$0U$N30It%3%^%s%I8!:w5!G=!W$rMxMQ$9$k$3$H$G$b2DG=!#(B ** skk-search-prog-list $B$N3HD%(B skk-search-prog-list $B$NMWAG$O8=:_!"(B (skk-search-jisyo-file '("/usr/share/skk/SKK-JISYO.L" . euc-jp) 10000) (skk-search-server "/usr/share/skk/SKK-JISYO.L" 10000) $B$N$h$&$K5-=R$7!"$=$N$^$^(B eval $B$G$-$k;EMM$K$J$C$F$$$k!#$b$7$3$N@_Dj$r(B plist $B$r$b5vMF$7$F(B (file :file "/usr/share/skk/SKK-JISYO.L" :coding euc-jp :limit 10000) (server :host "localhost" :port 1178) $B$H$$$&;XDj$r2DG=$K$G$-$J$$$+!#$3$NJ}K!$@$H!"J#?t%5!<%P$X$NBP1~$b<+A3$J(B $B7A$Ge(B $B;0ED$5$s$K$h$j:n@.$5$l$?!"C18l(B ($B8uJd(B) $B$NB0@-$r%"%N%F!<%7%g%s$H$7$F$b$D(B $B<-=q$,$"$k!#(B http://openlab.ring.gr.jp/skk/skk/dic/SKK-JISYO.notes SKK-JISYO.notes $B$NB0@->pJs$rMxMQ$7!"r7o$r;XDj$G$-$k$h$&(B $B$K$9$k!#$=$N:]!"9J$j9~$_>r7o$O%f!<%6!<$NG$0U$KJQ99$G$-$k$h$&$K$9$k!#(B ($B3hMQ7A$NMxMQ$K4X$7$F$O8e=R(B) 2. $B8uJd$K:G=*$NJQ49;~9o$J$I$rB0@-$H$7$F;}$?$;!"<-=q$N%a%s%F%J%s%9$KMx(B $BMQ$9$k(B($B0lDj4|4V%"%/%;%9$N$J$$8uJd$r8D?M<-=q$+$i:o=|$9$k$J$I(B)$B!#(B *** $B!V3hMQ!W$N>pJs$rMxMQ$7$?Aw$j$"$jJQ49(B [http://mail.ring.gr.jp/skk/200511/msg00006.html] $B%f!<%6$,!V5c$/!W$J$I$NJQ49$r$7$?>l9g!"(B skk-henkan-okuri-strictly $B$J$$(B $B$7$O(B skk-henkan-strict-okuri-precedence $B$N4D6-2<$G$OAw$j2>L>!V$/!W$,$N3hMQ7A(B ($B!V5c$+!W!V5c$-!W!V5c$$!W!V5c$1!W!V5c$3!W(B) $B$NM%@hEY$b>e$2$i$l$?$iJXMx(B $B$G$"$k!"$H$$$&Ds0F$,$"$k!#(B $B$3$l$rpJs$r<-=q$J$I$KKd$a$3$s$G$*$/(B o $B%f!<%6$NF~NO;~$KF0E*$K!"$=$NC18l$N$9$Y$F$N3hMQ7A$r?dB,$9$k5!G=$rpJs$rMQ$$$l$P!"A0l9g$K$=$l$J$j$NI{:nMQ$,$"$k$3$H$,$"(B $B$2$i$l$k!#$H$/$Kl9g$,$"$j!"$=(B $B$l$O%f!<%6$N9%$_$H9g$o$J$$2DG=@-$,$"$k!#(B ($BNc(B) $B!V5c$/!W$r3NDj(B $B"*(B $B!VL5$-!W!VL5$$!W$J$I$NM%@hEY$,2<$,$k(B $B8=:_$N5!G=$H$3$N?75!G=$H$N8xLs?tE*5!G=$,e5-%5%$%H$K$*$$$F(B annotation $B$N5,3J2=$,?^$i$l$F$$$k!#(B ($B$?$@$7!"$3$l$r(B L $B<-=q$KE,MQ$9$k2aDx$O62$i$/5!3#2=$G$-$J$$$N$G!"$=$N$?(B $B$a$KI,MW$JO+NO$,LdBj$H$J$k!#(B) * $B%3!<%G%#%s%0(B ** $B%(%i!<=hM}(B error $B$G$O$J$/(B message $B$G=$I$3$m$G$O!"(BWanderlust $B$d(B Emacs-w3m $B$N(B Shimbun $B%i%$%V%i%j$,(B luna $B$rMxMQ$7$F$$$k!#(B DDSKK $B$O(B Emacs $B$N%P%C%U%!$KD>@\FI$_9~$`<-=q!"%5!<%P7PM3$N<-=q!"(BLookup $B$H$N%2!<%H%&%'%$$K$h$k<-=q$J$IBt;3$N<-=q$,$"$j!"$^$?!"%-!<%\!<%IF~NO$K(B $B$b(B TUT-Code $B$d(B NICOLA $B$J$I?'!9$J$l$N5!G=$N$?$a$K!"$=$l$>$l8D(B $BJL$K=q$+$l$?=hM}$r0l854IM}$9$k$3$H$,$G$-$k$h$&$K$J$k$N$G$O$J$$$+$H9M$((B $B$i$l$k!#(B ** $BJQ49%b!<%IKh$K0[$J$kF0:n$r$9$k%3%^%s%I$NE}0lE*$J5-=R(B * $B%I%-%e%a%s%H(B ** skk.texi $B$N8=9T%3!<%I$X$NDI=>$r$J$k$Y$/(B $B$3$NE@$O(B SKK ML $B%a%s%P!<$N6(NO$K$h$j2~A1$7$D$D$"$k!#(B DDSKK 14 $B$K$*$$$F$OFC$KF~9>$5$s!"KLK\$5$s!"Dj2H$5$s!#(B ** $B1Q8lHG%I%-%e%a%s%H$N@0Hw(B $B%A%e!<%H%j%"%k$O$"$k!#$=$l0J30$NItJ,$G$b!"(B SKK $B$NB8:_2ACM$r@$3&$K%"%T!<(B $B%k$7$F$$$1$k$h$&$K!#(B * Emacs $B$NOH$rD6$($?(B SKK $BA4BN$N5DO@(B ** $B%5!<%P$K$G$-$k$3$H$H!"%/%i%$%"%s%H$K$7$+$G$-$J$$$3$H$rL@3N$K$9$k(B SKK $BA4BN$N>-Mh$K$D$$$F8+?x$($?Ds8@!#(B [skk 5754] http://mail.ring.gr.jp/skk/200504/msg00026.html $BMWE@$N$_>e5-$+$iE>:\$9$k$H!"$^$:%5!<%P$N$"$jJ}$K$D$$$F$O(B $B!&J#?t<-=q$N8!:w(B $B!&<-=q$N:FFI9~(B $B!&EE;R<-=q(B(EB)$B$N8!:w(B $B!&30It%W%m%0%i%`(B(MeCab$B!&(BPRIME$B$J$I(B)$B$N8F=P(B $B!&[#Kf8!:w(B $B!&9bB.2=(B(CDB$B$d(Bcache$B$J$I$K$h$k(B) $B!&@\F,<-!&@\Hx<-<+F0JQ49(B $B!&$+$J8+=P$7$K$h$k?tCMJQ49(B $B!&%f!<%6<-=q$N4IM}(B $B$J$I$N5!G=$N$&$A0l$D$+Fs$D$r;}$C$?%5!<%P$,B??t$"$k$h$j$b!"$=$l$i$r0lDL(B $B$jA4$F;}$C$?%5!<%P(B ($B%9!<%Q!/?t$N%5!<%P$K=8Ls$9$k!"$^$?$O(B $B!&J#?t$N(BSKK$B%5!<%P$KLd$$9g$o$;$k5!G=$r;}$D%a%?%5!<%P$r:n$k(B $B!&%5!<%P$H%/%i%$%"%s%H$N$I$A$i$K$G$b$^$7$$$+!#(B ** $B%W%m%0%i%`JQ495!G=$r$I$N(B SKK $B$+$i$bMxMQ$G$-$k$h$&$K$9$k(B SKK $B$O8uJd$,(B S $B<0$N>l9g$K$=$l$rI>2A$7$?$b$N$rA^F~$G$-$k!#$7$+$78=:_!"(B SKK $B$O(B elisp $B$@$1$G$O$J$$$N$G!"(Belisp $B0J30$N6&DL8l$rMQ0U$9$k$+!"$I$N(B SKK $B$+$i$b8F$S=P$;$k%W%m%0%i%`$rMQ0U$9$k$+$7$F%W%m%0%i%`JQ495!G=$r6&M-(B $B$G$-$k$h$&$K$9$l$P(B... * $BJs9p$5$l$?!"$^$?$O3NG'$5$l$F$$$k%P%0(B ($BL$=$@5(B) ** ccc.el $B$H(B multi-tty $BBP1~(B [skk 7641] $B3^86$5$s$+$i$N$4Js9p(B [...] > $B6qBNE*$K$O!"(BX $B$G(B emacs -q -f server-start $BEy$G(B emacs server $B$r>e$2$F!"(B > $BJL$N%?!<%_%J%k$+$i(B emacsclient -t $B$7!"%+!<%=%k$r(B1$B$DF0$+$9$J$I$9$k$HGX7J(B > $B$,Gr$GEI$jDY$5$l$k$H;W$$$^$9(B($B%?!<%_%J%k$,GrCO$@$H$o$+$j$K$/$$$G$9$,(B)$B!#(B [...] > $B5U$K(B emacs -f server-start -nw $B$d(B emacs --daemon $B$G(B X $BL5$7$G5/F0$7$F$+(B > $B$i(B emacsclient -c $B$G(B X $B$K(B frame $B$rE=$k$H!"(Bccc-setup $B$,8F$P$l$J$$$N$G(B > SKK $B$r5/F0$7$F$b%+!<%=%k$K?'$,$D$+$J$$!"$H$$$&;v$K$J$j$^$7$?!#;d$OIaCJ(B > $B$=$&$$$&;H$$J}$O$7$F$$$J$$$G$9$,!D!#(B $BA0H>$NLdBj$O(B tty $B$J(B frame $B$G?'$r@_Dj$7$J$$$h$&$K$9$k$3$H$G2sHr$7$&$k(B (bug fix $B3NG'Cf(B) $B8eoNN0h$r0];}$7$FB3$1$i$l(B $B$k$,!"(Bskk-isearch $B$KF~$k$H(B 1 $BJ8;z0J>eF~NO$7$?;~E@$GNN0h$,L58z$K$J$k!#(B $B860x$OD4::Cf!#(B ** skk-henkan-show-candidates $B$N?tCMJQ49M-8z;~$N%P%0(B http://mail.ring.gr.jp/skk/200602/msg00030.html $B>.H*$5$s$+$i$N$4Js9p(B > $B$9$C$-$j$7$?BP=hK!$,J,$+$i$J$+$C$?$N$G(B ML $B$KEj$2$^$9!#(B > > $BuBV$G%k!<%W$K$J$C$F(B > $B$7$^$$$^$7$?!#(B > skk-search() $B$d(B skk-henkan-list-filter() $B$7$?7k2L$H$7$F!"$=$N2s$G$N(B > $BI=<(BP>](B henkan-list $B$,(B nil $B$K$J$k$HLdBj$,$"$k$h$&$G$9!#(B > > $B0l1~:F8=MQ$N%3!<%I$r$D$1$F$*$-$^$9!#(B > > ;; emacs -q $B$H$7$F(B > > (progn > > (setq skk-init-file "") > > ;(setq skk-show-annotation t) > (setq skk-update-jisyo-function #'ignore) > > (defun from-private () > (skk-num-compute-henkan-key skk-henkan-key) > (if skk-use-numeric-conversion > (list "#4" "#2" "#5" "#1") > (list "$B0l(B"))) > > (defun from-server () > (if skk-use-numeric-conversion > (list "#1" "#3" "#2" "$B!t(B;number" "#0" "#4" "#5" "#9") > (list "$B#1(B" "$B0l(B" "$B0m(B;$B!V0l!W$NBg;z(B" "$BP!(B;$B!V0l!W$N0[BN;z(B" "$BTe(B;$B!V0m!W$N5l;z(B" "$B%o%s(B" "one"))) > > (defun from-eb () > (unless skk-use-numeric-conversion > ;; from $B$+$J$j8E$$DL?.MQ8l$N4pACCN<1(B > (list "$B#Q(B"))) > > (setq skk-search-prog-list > '((from-private) > (from-server) > (from-eb))) > > ) > > ;; skk-search-server $B$,DI2C$5$l$k$N$G!"(B > ;; SKK $B5/F08e$K:FEY(B skk-search-prog-list $B$r@_Dj$7$J$*$9(B $B$b$N$N8+;v$KL58B%k!<%W$7$F$$$k!#3N$+$K4JC1$K2r7h$9$k$N$OFq$7$$$+!#(B henkan-list $B$,(B nil $B$N$H$-(B skk-henkan-list-filter() $B$r8F$P$J$$$h$&$K$7(B $B$?$@$1$@$H!"8uJd?t$,(B 7 $B%v$h$j>/$J$/$J$C$F$7$^$&!#(B ** dcomp $B8uJdJ#?tI=<(;~$N(B face skk-dcomp-multiple-activate $B$r(B t $B$H@_Dj$7!"-MhE*$K$O$b$C$H%9%^!<%H$J2r7hK!$,5a$a$i$l$k!#(B ** Cocoa Emacs $B$K8GM-$NLdBj(B *** $B%D!<%k%F%#%C%W$K$*$1$k%U%)%s%H!&%U%'%$%9$N;XDj(B $B8=>u(B Cocoa Emacs $B$G%D!<%k%F%#%C%WI=<($9$k$H2DJQI}%U%)%s%H$N$^$^JQ99$G(B $B$-$J$$(B (Carbon Emacs $B$G$O(B X $B$N>l9g$N$h$&$K(B Emacs $B$N%U%)%s%H@_Dj$,$G$-(B $B$?(B)$B!#(B Local variables: mode: outline end: ddskk-15.2/bayesian/0000755000570400056700000000000012434434721014401 5ustar kitamotoopenlabddskk-15.2/bayesian/README.ja0000644000570400056700000000577411620472166015670 0ustar kitamotoopenlabskk-bayesian.el $B$O!"D>A0$NMzNr$N$_;HMQ$9$k(B skk-study.el $B$KHf$Y$F!"$h$j(B $B3HD%$5$l$?3X=,5!G=$G$9!#J8L.$+$iJQ498uJd$,A*Br$5$l$k3NN($r7W;;$7$F8uJd(B $B=g$r%=!<%H$7$^$9!#(B <$B;H$$J}(B> 1. bskk $B$N%$%s%9%H!<%k(B bskk $B$O(B ruby $B%9%/%j%W%H$G$9!#;vA0$K(B ruby (http://www.ruby-lang.org/ja/) $B$r%$%s%9%H!<%k$7$F$/$@$5$$!#(B bskk $B$O%5%V%W%m%;%9!"$^$?$O%5!<%P$H$7$F;HMQ$7$^$9!#(B (a) $B%5%V%W%m%;%9$H$7$F;HMQ$9$k>l9g(B bskk $B$r(B $B4D6-JQ?t(B PATH $B$NDL$C$?>l=j$KCV$$$F$/$@$5$$!#(B (b) $B%5!<%P$H$7$F;HMQ$9$k>l9g(B Emacs $B$,(B skk-bayesian.el $B$rFI$_9~$`A0$K!"0J2<$N$h$&$K(B bskk $B$r$"$i$+$8$a5/F0$7$F$*$$$F$/$@$5$$!#(B % bskk -f ~/.skk-bayesian -s $B%5!<%P$r=*N;$5$;$k$H$-$O0J2<$N$h$&$K$7$^$9!#(B % kill -TERM {bskk $B$N(B PID} $BJQ?t(B skk-bayesian-prefer-server $B$r(B Non-nil $B$H;XDj$7$^$9!#(B ~/.skk $B$X$N5-=RJ}K!$O8e=R$7$^$9!#(B 2. skk-bayesian.el $B$N%$%s%9%H!<%k(B $B0J2<$N$$$:$l$+$NJ}K!$G(B skk-bayesian.el $B$r%$%s%9%H!<%k$7$F$/$@$5$$!#(B (a) SKK $B%=!<%9$N%H%C%W%G%#%l%/%H%j(B ($B$3$N%G%#%l%/%H%j$N$R$H$D>e(B) $B$K(B skk-bayesian.el $B$r%3%T!<$7$F$+$i(B SKK $B$r%$%s%9%H!<%k$7$F$/$@$5$$!#(B % make install (b) skk-bayesian.el $B$N$_$rl=j$K%3%T!<(B $B$7$FMxMQ$9$k$3$H$b$G$-$^$9!#(B % cp skk-bayesian.el ~/site-lisp 3. ~/.skk $B$N@_Dj(B $B0J2<$r<+J,$N(B ~/.skk $B$KDI2C$7$F$/$@$5$$!#(B (require 'skk-bayesian) $B$J$*!"(Bbskk $B$r%5!<%P$H$7$F;H$&>l9g$O0J2<$bDI2C$7$F$/$@$5$$!#(B (setq skk-bayesian-prefer-server t) 4. $B$=$NB>(B skk-bayesian.el $B$NF0:n$N;EAH$_!";EMM$K$D$$$F$O(B skk-bayesian.el $BFb$N%3(B $B%a%s%H$r;2>H$7$F$/$@$5$$!#(B 5. ruby $B$N%j%S%8%g%s$K$h$kIT6q9g$K$D$$$F(B ruby $B$OMM!9$J%j%S%8%g%s$N$b$N$,MxMQ$5$l$F$$$^$9$,!">l9g$K$h$C$F$O=PNO(B $B$,@5>o$G$J$/!"(Bskk-bayesian $B$GJ8;z2=$1$H$7$F8=$l$k$3$H$,$"$j$^$9!#(B $BNc$($P(B ruby 1.8.7 (2009-12-24 patchlevel 248) $B$G$OLdBj$,$"$k$3$H$,J,$+(B $B$C$F$$$^$9!#$3$l$K$D$$$F$O(B ruby 1.8.8 $B$N%j%S%8%g%s(B 26103 $B$G=$@5$5$l$F(B $B$$$^$9!#$^$?$O:G8e$N%Q%C%A$rEv$F$k$3$H$G=$@5$5$l$^$9!#;29M$K$J$k(B URL $B$O0J2<$G$9!#(B http://redmine.ruby-lang.org/issues/show/2569 (Ruby1.8.7p248 String#inspect broken on multibyte string.) http://redmine.ruby-lang.org/repositories/revision/ruby-18?rev=26103 (Ruby 1.8 - $B%j%S%8%g%s(B 26103) *** string.c.org 2010-01-22 01:54:05.000000000 +0900 --- string.c 2010-01-22 01:54:23.000000000 +0900 *************** *** 2642,2648 **** while (p < pend) { char c = *p++; int len; ! if (ismbchar(c) && p + (len = mbclen(c)) <= pend) { rb_str_buf_cat(result, p - 1, len); p += len - 1; } --- 2642,2648 ---- while (p < pend) { char c = *p++; int len; ! if (ismbchar(c) && p - 1 + (len = mbclen(c)) <= pend) { rb_str_buf_cat(result, p - 1, len); p += len - 1; } ddskk-15.2/bayesian/bskk0000755000570400056700000003535612150660755015300 0ustar kitamotoopenlab#!/usr/bin/env ruby # -*- coding: euc-jp; mode: ruby; -*- ## bskk -- Bayesian estimation for SKK ## Copyright (C) 2004 Kenichi Kurihara ## Author: Kenichi Kurihara ## Maintainer: SKK Development Team ## Version: $Id: bskk,v 1.3 2013/05/27 13:38:53 skk-cvs Exp $ ## Keywords: japanese ## Last Modified: $Date: 2013/05/27 13:38:53 $ ## This file is part of Daredevil SKK. ## Daredevil SKK is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2, or ## (at your option) any later version. ## Daredevil SKK is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## You should have received a copy of the GNU General Public License ## along with Daredevil SKK, see the file COPYING. If not, write to ## the Free Software Foundation Inc., 59 Temple Place - Suite 330, ## Boston, MA 02111-1307, USA. ### Commentary: ## »È¤¤Êý¤Ï¡¢skk-bayesian.el ¤Î Commentary ¤ò»²¾È ### Specifications: ## bskk ¤ò½ªÎ»¤µ¤»¤ëÊýË¡¤Ï -s ¥ª¥×¥·¥ç¥ó¤¬¤¢¤ë¤«¤Ë¤è¤é¤º¡¢TERM ¥·¥°¥Ê¥ë ## ¤òÁ÷¤ë¤³¤È¡£ ## TERM ¥·¥°¥Ê¥ë¤ò¼õ¤±¼è¤ë¤Èľ¤Á¤Ë½ªÎ»¤¹¤ë¡£ÍúÎò¤ÎÊݸ¤Ï¹Ô¤ï¤Ê¤¤¡£ ## emacs ¤Ï½ªÎ»¤ÎÁ°¤Ë bskk ¤ËÂФ·¤Æ COMMAND_SAVE ¤òÁ÷¤êÍúÎò¤ÎÊݸ¤ò¤µ¤» ## ¤Ê¤¯¤Æ¤Ï¤¤¤±¤Ê¤¤¡£ ## Code: require 'fileutils' if RUBY_VERSION.to_f < 1.9 require 'jcode' $KCODE = "EUC" else Encoding.default_external = "EUC-JP" Encoding.default_internal = "EUC-JP" end COMMAND_SORT = "#sort" COMMAND_ADD = "#add" COMMAND_SAVE = "#save" def check_type( variable, *types ) types.each{ |type| if variable.is_a?( type ) return end } raise TypeError.new("need #{type.to_s} but #{variable.class.to_s}") end class Distribution public # obj.class == String -> e.g. obj="Ãå#1/Ãå#2/" # ²þ¹Ô¥³¡¼¥É¤ò´Þ¤ó¤Ç¤Ï¤¤¤±¤Ê¤¤ def initialize( obj ) @word2count = Hash.new(0) @total_count = 0 word_count_regexp = /^(.+)#(\d+)$/ if obj != nil check_type( obj, String ) line = obj line.split("/").each{ |word_count| if word_count =~ word_count_regexp word = $1 count = $2.to_i @word2count[word] = count @total_count += count else STDERR.puts(";; invalid line=#{line}.") end } end decrement end def to_s decrement line = "" @word2count.each{ |word, count| line += "#{word.to_s}##{count}/" } return line end def get_prob( word ) check_type( word, String ) return @word2count[word].to_f / @total_count.to_f end def increment( word ) check_type( word, String ) @word2count[word] += 1 @total_count += 1 end private ## @total_count ¤¬ Bignum ¤Ê¤é¡¢Fixnum ¤Ë¼ý¤Þ¤ë¤è¤¦¤Ë¤¹¤ë def decrement while @total_count.is_a?( Bignum ) temp = Hash.new total = 0 @word2count.each{ |word, count| new_count = (count / 10).to_i if new_count > 0 temp[word] = new_count total += new_count end } @word2count = temp @total_count = total end end end class DBHistoryFileSyntaxException < Exception end class DB attr_reader :dirty public def initialize( io=nil ) check_type( io, IO, NilClass ) @i2prefix2dst = Array.new @dirty = false if( io == nil ) return end regexp_index = /^&index=(\d+)/ regexp_prefix = /^#prefix=(.+)$/ regexp_counts = /^%(.+)$/ index = nil prefix_char = nil begin while not io.eof? line = io.readline.chomp! if line =~ regexp_counts if index == nil or prefix_char == nil STDERR.puts(";; couldn't find index and prefix. ignore #{line}.") next end if @i2prefix2dst.size <= index @i2prefix2dst.fill( nil, @i2prefix2dst.size..index ) end if @i2prefix2dst[index] == nil @i2prefix2dst[index] = Hash.new end dst = Distribution.new( $1 ) @i2prefix2dst[index][prefix_char] = dst elsif line =~ regexp_index index = $1.to_i elsif line =~ regexp_prefix prefix_char = $1 else STDERR.puts(";; ignore invlid line=#{line}.") next end end rescue Exception => e raise DBHistoryFileSyntaxException.new( e.message ) end end ## °ú¿ô¤ÎÎã ## word_str : "Ãå" ## prefix_list : ["¡¢", "¤ò", "Éþ", "¤Î", "¤½"] def add_history( word_str, prefix_list ) check_type( word_str, String ) check_type( prefix_list, Array ) @dirty = true word = word_str if prefix_list.size > @i2prefix2dst.size @i2prefix2dst.fill(nil, @i2prefix2dst.size..prefix_list.size ) end prefix_list.each_with_index{ |prefix_str, i| prefix2dst = @i2prefix2dst[i] if prefix2dst == nil prefix2dst = Hash.new @i2prefix2dst[i] = prefix2dst end prefix_char = prefix_str dst = prefix2dst[prefix_char] if dst == nil dst = Distribution.new( nil ) @i2prefix2dst[i][prefix_char] = dst end dst.increment( word ) } end ## °ú¿ô¤ÎÎã ## entries : ["»Â", "ÀÚ", "Ãå"] ## prefix_list : ["¡¢", "¤ò", "Éþ", "¤Î", "¤½"] ## return : [["Ãå", "»Â", "ÀÚ"], [0.4, 0.2, 0.1]] def sort( entries, prefix_list ) check_type( entries, Array ) check_type( prefix_list, Array ) size = entries.size sorted_entries = Array.new( size ) entries.each_with_index{ |entry, i| sorted_entries[i] = [entry, 0.0, entry] } weights = weights( prefix_list.size ) prefix_list.each_with_index{ |prefix, p_i| prefix2dst = @i2prefix2dst[p_i] if prefix2dst == nil; next; end dst = prefix2dst[prefix] if dst == nil; next; end sorted_entries.each_with_index{ |entry, e_i| prob = dst.get_prob( entry[2] ) entry[1] += prob * weights[p_i] } } ## ¹ß½ç¤Ë¥½¡¼¥È sorted_entries.sort!{ |e1, e2| e2[1] <=> e1[1] } probs = Array.new( size ) sorted_entries.each_with_index{ |e,i| sorted_entries[i] = e[0] probs[i] = e[1] } return [sorted_entries, probs] end # return # true success of save # false otherwise def save( path_to_file, path_to_bak ) debug_log( "save... ;" + Time.now.to_s ) if not @dirty debug_log( "save...done; not dirty; " + Time.now.to_s ) return true end if File.exist?( path_to_file ) FileUtils.copy(path_to_file, path_to_bak) end path_to_lock = path_to_file + ".lock" lock = open( path_to_lock, "w" ) if try_lock( lock ) f = open( path_to_file, "w" ) marshal( f ) f.close lock.close debug_log( "save...done; " + Time.now.to_s ) @dirty = false return true else lock.close debug_log( "save...failed; " + Time.now.to_s ) return false end end private def marshal( io ) check_type( io, IO ) time = Time.now @i2prefix2dst.each_with_index{ |prefix2dst, index| if prefix2dst == nil next end io.puts( "&index=#{index}" ) prefix2dst.each{ |prefix, dst| io.puts( "#prefix=#{prefix}" ) io.puts( "%" + dst.to_s ) } } debug_log( "marchasl() took " + (Time.now-time).to_f.to_s + "(sec)." ) end ## º®¹çʬÉۤνŤߤòÊÖ¤¹ ## ÊÖ¤êÃͤϡ¢Array: [w_1, w_2, .., w_n] ## p( word | p_1, .., p_n ) ## = \sum_{i=1}^n p( word | p_i ) * w_i ## "p_n p_{n-1} .. p_1 word" def weights( n ) if n == @weights_last_n return @weights_last_weights end weights = Array.new( n ) t = n * (n+1) / 2 for i in 0..(n-1) weights[i] = (n-i).to_f / t.to_f end @weights_last_n = n @weights_last_weights = weights return weights end end ## ensuring-bind tcp server ## TCPServer ¤Ï¡¢bind ¤ò¤¦¤Þ¤¯¤·¤Æ¤¤¤Ê¤¤¤è¤¦¤À¡£ruby 1.8.1 ## TCPServer.open ¤Ç¡¢bind ¤µ¤ì¤ë¤è¤¦¤À¤¬¡¢bskk ¤ò2¤Äư¤«¤»¤¿¡£ ## ¤Ê¤¼¤«¡¢3¤Ä¤Ï̵Íý¤À¤Ã¤¿¡£ ## ¾Ü¤·¤¯¤ÏÄɤäƤ¤¤Ê¤¤¡£ class EBTCPServer require "socket" include Socket::Constants def initialize( port, backlog=5 ) @soc_waiting = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0) @soc_waiting.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) @soc_waiting.bind( [Socket::AF_INET,port,127,0,0,1].pack("s n C4 x8") ) @soc_waiting.listen( backlog ) end ## Socket ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÊÖ¤¹ def accept if @soc_waiting soc, adr = @soc_waiting.accept return soc else raise Exception.new("already closed") end end def close @soc_waiting.close @soc_waiting = nil end end ## verbose puts def v_err_puts( message ) STDERR.puts message if @verbose end def debug_log( message ) if $debug and File.directory?( ENV["HOME"] + "/tmp" ) f = open( ENV["HOME"] + "/tmp/bskk.log", "a" ) f.puts message f.close end end def try_lock( file, lock_mode=File::LOCK_EX, timeout=2, try_interval=0.1 ) check_type( file, File ) check_type( timeout, Numeric ) check_type( try_interval, Numeric ) for i in 0..(timeout.to_f/try_interval.to_f).to_i if file.flock( lock_mode | File::LOCK_NB ) return true end sleep try_interval end return false end def split_line( line ) array = [] line.chomp.each_char{ |char| array.push( char ) } return array end # out ¤Ï¡¢emacs ¤Î buffer ¤Ë½ÐÎϤµ¤ì¤ë def serve( db, input, out, history_file, history_file_bak ) # emacs ¤Ï¡¢ºÇ½é¤Î²þ¹Ô¤ò¼õ¤±¤È¤Ã¤¿»þÅÀ¤Ç buffer ¤òɾ²Á¤¹¤ë¡£ # 2 ¹ÔÌܰʹߤËɾ²Á¤ÎɬÍפʾðÊó¤ò½ÐÎϤ·¤Æ¤Ï¤¤¤±¤Ê¤¤¡£ # ¤Þ¤¿¡¢2 ¹ÔÌܰʹߤϥ³¥á¥ó¥È¥¢¥¦¥È¤¹¤ëɬÍפ¬¤¢¤ë¡£ begin # mail loop while true line = input.readline.chomp case line when COMMAND_SORT entries = input.readline.chomp.split("/") prefix_list = split_line(input.readline).reverse sorted_entries, probs = db.sort( entries, prefix_list ) out.puts "(" + sorted_entries.map!{|entry| entry.inspect }.join(" ") + ")" # out.puts ";;(\"#{probs.join("\" \"")}\")" # ruby 1.6.8 ¤Ç¡¢ÉÔ¶ñ¹ç out.puts ";;(\""+ probs.join("\" \"") + "\")" out.puts ";;OK." when COMMAND_ADD kakutei_word = input.readline.chomp prefix_list = split_line(input.readline).reverse if prefix_list != nil db.add_history( kakutei_word, prefix_list ) end out.puts "t" out.puts ";;OK." when COMMAND_SAVE if db.save( history_file, history_file_bak ) out.puts "t" out.puts ";;Succeeded." else out.puts "nil" out.puts ";;Failed." debug_log( "failed in saving; " + Time.now.to_s ) end else out.puts( ";;unknown command: #{line}", err ) end out.flush end rescue IOError => e debug_log( "#{e.to_s}" + Time.now.to_s ) rescue => e debug_log( "#{e.to_s}" + Time.now.to_s ) end debug_log( "finish (server); " + Time.now.to_s ) end DEFAULT_PORT = 51178 def mode_serve( history_file, server, port ) check_type( history_file, String ) check_type( server, TrueClass, FalseClass ) history_file_bak = history_file + ".BAK" ## create DB db = nil if File.exist?( history_file ) # read history f = open( history_file ) begin if try_lock( f, File::LOCK_SH ) db = DB.new( f ) end rescue DBHistoryFileSyntaxException => e STDERR.puts(e.message) STDERR.puts("#{history_file} is invalid.") if File.exist?( history_file_bak ) STDERR.puts("use #{history_file_bak} instead of #{history_file}.") f2 = open( history_file_bak ) begin if try_lock( f2, File::LOCK_SH ) db = DB.new( f2 ) end rescue DBHistoryFileSyntaxException => e2 STDERR.puts(e2.message) STDERR.puts("#{history_file_bak} is also invalid.") ensure f2.close end end ensure f.close end end if db == nil db = DB.new end ## handle SIGTERM begin proc = Proc.new{ debug_log( "SIGTERM; " + Time.now.to_s ) STDERR.puts "Signal SIGTERM" STDERR.puts "halt bskk" exit } if defined?( Signal ) # Signal is a ruby 1.7 feature Signal.trap( :TERM, proc ) else trap( :TERM, proc ) end end ## main routine begin if server socket = nil begin socket = EBTCPServer.new( port ) rescue => e STDERR.puts "Error: #{e.to_s}" exit(1) end v_err_puts( "bind to #{DEFAULT_PORT.to_s}." ) pid = fork if pid ## parent socket.close exit else ## child STDERR.puts( "fork to be a deamon. PID=#{Process.pid}." ) while true s = socket.accept v_err_puts( "accept a new client." ) Thread.start( s ){ |io| serve( db, io, io, history_file, history_file_bak ) io.close v_err_puts( "close an session." ) } v_err_puts( "#{(Thread.list.size-1).to_s} session(s) remain(s)." ) end socket.close end else serve( db, STDIN, STDOUT, history_file, history_file_bak ) end rescue SignalException => e # TERM °Ê³° debug_log( "SIG #{e.to_s}; " + Time.now.to_s ) STDERR.puts "Signal #{e.to_s}" STDERR.puts "use TERM signal to halt bskk." exit end end def print_help STDOUT.puts <<"----------" usage: bskk (options) options: -f history_file use history_file as a history_file. -s run as a server. -p port use port (default=#{DEFAULT_PORT}). -v verbose. -d debug mode. -h show a help and exit. ---------- end def main ## read arguments history_file = nil server = false @verbose = false port = DEFAULT_PORT begin i = 0 while i < ARGV.size case ARGV[i] when "-f" history_file = File.expand_path( ARGV[i+1] ) i += 1 when "-s" server = true when "-h" print_help exit when "-p" p = ARGV[i+1].to_i if p port = p else STDERR.puts( "-p needs an integer. #{ARGV[i+1]} is invalid." ) print_help exit end i += 1 when "-v" @verbose = true when "-d" $debug = true else STDERR.puts( "an unknown option: #{ARGV[i]}" ) print_help exit end i += 1 end if history_file == nil STDERR.puts( "specify a history file by '-f'" ) print_help exit end end mode_serve( history_file, server, port ) end # ¤³¤Î¥Õ¥¡¥¤¥ë¤¬¼Â¹Ô¥Õ¥¡¥¤¥ë¤È¤·¤Æ¼Â¹Ô¤µ¤ì¤¿»þ if $0 == __FILE__ main end ddskk-15.2/bayesian/skk-bayesian.el0000644000570400056700000005567712025565316017331 0ustar kitamotoopenlab;; skk-bayesian.el -- Bayesian estimation for SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 2004 Kenichi Kurihara ;; Author: Kenichi Kurihara ;; Maintainer: SKK Development Team ;; Version: $Id: skk-bayesian.el,v 1.6 2012/09/17 09:18:06 skk-cvs Exp $ ;; Keywords: japanese, mule, input method, bayesian estimation ;; Last Modified: $Date: 2012/09/17 09:18:06 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; ;; skk-study $B$,D>A0$NMzNr$N$_$r;HMQ$9$k$N$G!"$3$l$r3HD%$7$?$$$H;W$C$?$N(B ;; $B$,A4$F$NF05!$G$9!#(BSKK $B$H$=$N%3%_%e%K%F%#$K46 ;; $BNc(B: (skk-bayesian-context-len = 5 $B$N;~(B) ;; $B!V$=$NI~$r!"!W$N8e$K!"$-(Br $B$rJQ49$9$k>u67$K$*$$$F!"(B ;; entry $B$,!"(B("$B@Z(B" "$BCe(B" "$B;B(B") $B$G$"$k>u67$r9M$($k!#(B ;; $B$3$N(B enrty $B$r0J2<$N3NN($r7W;;$9$k$3$H$G!"%=!<%H$9$k!#(B ;; ;; Prob( word="$B@Z(B" | p_1="$B!"(B", p_2="$B$r(B", p_3="$BI~(B", p_4="$B$N(B", p_5="$B$=(B" ) ;; Prob( word="$BCe(B" | p_1="$B!"(B", p_2="$B$r(B", p_3="$BI~(B", p_4="$B$N(B", p_5="$B$=(B" ) ;; Prob( word="$B;B(B" | p_1="$B!"(B", p_2="$B$r(B", p_3="$BI~(B", p_4="$B$N(B", p_5="$B$=(B" ) ;; ;; $B3X=,$9$Y$-%Q%i%a!<%?$N?t$r8:$i$9$?$a!"$3$N3NN(%b%G%k$r0J2<$N$h$&$J(B ;; $B:.9gJ,I[$G$"$k$H2>Dj$9$k!#(B ;; ;; Prob( word="$B@Z(B" | p_1="$B!"(B", p_2="$B$r(B", p_3="$BI~(B", p_4="$B$N(B", p_5="$B$=(B" ) ;; ~= \sum_{i=1}^5 w_i * Prob( word="$B@Z(B" | p_i ) ;; ;; $B$?$@$7!"(Bw_i $B$O:.9gJ,I[$N=E$_$G$"$k!#(B ;; ;; ;; <$B2]Bj(B> ;; 1. bskk $B$,C1=c$K:n$i$l$F$$$k$N$G!"JQ49$NMzNr$,Bg$-$/$J$C$?;~$K!"F0:n(B ;; $BB.EY$HI,MW$J%a%b%j$NNL$,?4G[!#(B ;; 2. $B:.9gJ,I[$N=E$_(B w_i $B$O8=:_!"(Bw_1, w_2, ..., w_n $B$KBP$7$F!"(B ;; w_i : w_j = (n-i) : (n-j) ;; $B$H$J$k$h$&$KCM$r7h$a$F$$$k!#K\Mh!"$$$:$l$b1#$lJQ?t$H$7$F!"(BEM$B%"%k(B ;; $B%4%j%:%`(B, VBA $BEy$K$h$j3X=,$9$Y$-$+$b$7$l$J$$!#(B ;; 3. skk-bayesian-context-len $B$OJQ?t$K$7$F$$$k$N$G!"%f!<%6$,7hDj$G$-$k(B ;; $B$,!"M}A[E*$K$O%b%G%k$N?dDjLdBj$H$H$i$($F!"3X=,%G!<%?$+$i7hDj$9$Y(B ;; $B$-$@$m$&!#$^$?!"$"$kDxEY!"3X=,$7$?8e$K(B skk-bayesian-context-len$B$r(B ;; $BBg$-$$CM$KJQ99$9$k$N$O!"?dDj$K0-1F6A$rM?$($=$&!#(B ;; 4. 2$B$H(B3$B$K=E$J$k$,!"Cx:n8"$N?4G[$r$7$J$/$F$b$h$$%3!<%Q%9$+$i!"3X=,$r9T$$(B ;; skk-bayesian-context-len $B$H(B $B:.9gJ,I[$N=E$_$r7hDj$7$?$$!#(B ;; 5. bskk $B$H$N%W%m%H%3%k$,AG?M=-$$!#(B ;; ;; ;; <$B;H$$J}(B> ;; ~/.skk $B$K!"(B(require 'skk-bayesian) $B$H=q$$$F2<$5$$!#(B ;; skk-study $B$H$NJ;MQ$O5!G=$,=E$J$k$N$G!"$*4+$a$G$-$^$;$s!#(B ;; ;; $B$^$?!"(Bbskk $B$O!"%5%V%W%m%;%9$+%5!<%P$H$7$F;HMQ$7$^$9!#(B ;; *$B%5%V%W%m%;%9(B ;; $B%5%V%W%m%;%9$H$7$F;HMQ$9$k$K$O!"(Bbskk $B$r4D6-JQ?t(B PATH $B$NDL$C$?>l=j$K(B ;; $BCV$/$@$1$G$9!#(B ;; $BLdBj$O!"$$$/$D$b(B emacs $B$r5/F0$9$k$H(B ~/.skk-bayesian $B$O:G8e$K99?7$7$?(B ;; emacs $B$K0M$k$N$G!"B>$N(B emacs $B$G$N3X=,%G!<%?$OJ]B8$5$l$^$;$s!#(B ;; *$B%5!<%P(B ;; bskk $B$r%5!<%P$H$7$F;HMQ$9$k$K$O!"(Bemacs $B$,(B skk-bayesian.el $B$rFI$_9~(B ;; $B$`A0$K!"(B ;; % bskk -f ~/.skk-bayesian -s ;; $B$H ;; $B3F4X?t$H!"(Bbskk $B$N%3%a%s%HFb$N(B Specifications $B$K=q$+$l$F$$$k!#(B ;; ;;; Code: (require 'skk-vars) (require 'skk-macs) (defgroup skk-bayesian nil "SKK Bayesian estimation group" :prefix "skk-bayesian-" :group 'skk) ;;; ;;; variables for skk-bayesian ;;; (defcustom skk-bayesian-prefer-server nil "*non-nil $B$J$i$P!"(B`skk-bayesian-host'$B$N(B`skk-bayesian-port'$B$K@\B3$9$k!#(B $B$=$&$G$J$1$l$P!"(Bbskk $B$r%5%V%W%m%;%9$H$7$FN)$A>e$2$k!#(B" :type 'boolean :group 'skk-bayesian) (defcustom skk-bayesian-port 51178 "*`skk-bayesian-host'$B$K@\B3$9$k%]!<%HHV9f!#(B $B%5!<%P$K@\B3$9$k$K$O(B`skk-bayesian-prefer-server'$B$,(B non-nil $B$G$"$kI,MW$,$"$k!#(B" :type 'integer :group 'skk-bayesian) (defcustom skk-bayesian-host "localhost" "*`skk-bayesian-prefer-server'$B$,(B non-nil $B$N;~$K@\B3$9$k%[%9%HL>!#(B" :type 'string :group 'skk-bayesian) (defcustom skk-bayesian-context-len 20 "*$B3X=,$dM=B,$K;HMQ$9$k!"JQ498l$ND>A0$NJ8;z?t!#(B" :type 'integer :group 'skk-bayesian) (defcustom skk-bayesian-history-file (if skk-user-directory (expand-file-name "bayesian" skk-user-directory) (convert-standard-filename "~/.skk-bayesian")) "*$BMzNr$r5-O?$9$k%U%!%$%kL>!#(B `skk-bayesian-prefer-server'$B$,(B non-nil $B$N;~$K$N$_;HMQ$5$l$k!#(B" :type 'file :group 'skk-bayesian) (defcustom skk-bayesian-debug nil "*non-nil $B$J$i$P%G%P%C%0MQ$N%a%C%;!<%8$rI=<($9$k!#(B" :type 'boolean :group 'skk-bayesian) (defcustom skk-bayesian-max-commands-to-wait-for 15 "*$B3NDj8l$r3X=,$9$k$^$G$KBT$D%3%^%s%I$N?t!#(B $B3NDj$N8e$K(B`skk-bayesian-max-commands-to-wait-for'$B2s$N%3%^%s%I(B $B$N$&$A$K3NDj8l(B($BAw$j2>L>$r4^$`(B)$B$,JQ99$5$l$J$1$l$P!"$=$N3NDj8l$rJ]B8(B $B$9$k!#(B`skk-bayesian-max-commands-to-wait-for'$B$,(B0$B0J2<$J$i$P!"3NDj8e!"(B $BD>$A$KMzNr$KJ]B8$9$k!#(B" :type 'integer :group 'skk-bayesian) (defcustom skk-bayesian-corpus-make nil "*nin-nil $B$J$i$P!"(Bcorpus $B$r(B `skk-bayesian-corpus-file' $B$K:n@.$9$k!#(B" :type 'boolean :group 'skk-bayesian) (defcustom skk-bayesian-corpus-file (if skk-user-directory (expand-file-name "corpus" skk-user-directory) (convert-standard-filename "~/.skk-corpus")) "*corpus $B$rJ]B8$9$k%U%!%$%k!#(B" :type 'file :group 'skk-bayesian) ;; internal variables (defvar skk-bayesian-last-context nil "*$B3NDj8l$ND>A0$NJ8;zNs!#(B") (defvar skk-bayesian-number-of-command-after-kakutei 0 "*$BA02s$N3NDj$+$i8=:_$^$G$N%3%^%s%I$N2s?t!#(B") (defvar skk-bayesian-pending-data-alist nil "*non-nil $B$J$i$P(B pending $BCf!#(B") (defvar skk-bayesian-process nil) (defvar skk-bayesian-corpus-buffer nil) (defvar skk-bayesian-corpus-last-sorted-entry nil "*$BA02s(B skk-bayesian-search $B$GJV$7$?(B entry") ;; constants (defconst skk-bayesian-command-sort "#sort\n") (defconst skk-bayesian-command-add "#add\n") (defconst skk-bayesian-command-save "#save\n") (defconst skk-bayesian-coding-system 'euc-jp) (defconst skk-bayesian-corpus-buffer-name " *skk-corpus*") ;;; ;;; functions ;;; (defmacro skk-bayesian-debug-message (STRING &rest ARGS) `(if skk-bayesian-debug (message ,STRING ,@ARGS))) (defsubst skk-bayesian-process-live-p () "`skk-bayesian-process' $B$,(B non-nil $B$+$D$=$N%W%m%;%9$,o$N%5%V%W%m%;%9$J$i!"(Brun$B!#(B ;; $B$3$l$i$O!"GSB>E*!#(B (memq (process-status skk-bayesian-process) '(open run)))) (defsubst skk-bayesian-make-pending-data-alist ;; henkan-point $B$O3NDj8l$N:G=i$NJ8;z$N0LCV$N(B marker (word okurigana midasi buffer henkan-point context) (setq skk-bayesian-pending-data-alist (if (and word midasi buffer henkan-point context) ;; $BFC$K(B henkan-point $B$,(B nil $B$K$J$j0W$$$h$&$@!#(B ;; okurigana $B$O!"(Bnil $B$G$b$h$$!#(B (list (cons 'word word) (cons 'okurigana okurigana) (cons 'midasi midasi) (cons 'buffer buffer) (cons 'henkan-point henkan-point) (cons 'context context))))) (defsubst skk-bayesian-get-pending-data-alist (key) (if (memq key (list 'word 'okurigana 'midasi 'buffer 'henkan-point 'context)) (cdr (assq key skk-bayesian-pending-data-alist)) (error (concat "Error; invalid key=" (prin1-to-string 'key))))) (defsubst skk-bayesian-read-process-output (input) "input $B$r(B`skk-bayesian-process'$B$KAw$k!#$=$N8e!"(B\\n$B$,(B `skk-bayesian-process'$B$N%P%C%U%!$K=PNO$5$l$k$^$GBT$A!"(B\\n$B$,=PNO$5$l$?;~E@$G!"%P%C%U%!$rI>2A$7JV$9!#(B" (when input (skk-bayesian-init) (with-current-buffer (process-buffer skk-bayesian-process) (delete-region (point-min) (point-max)) (process-send-string skk-bayesian-process input) (while (not (and (> (point-max) 1) (eq (char-after (1- (point-max))) ?\n))) (accept-process-output skk-bayesian-process 0 5)) (goto-char (point-min)) (condition-case err (read (current-buffer)) (error (skk-message "Error while reading the out put of bskk; %s" "bskk $B$N=PNO$NFI$_9~$_Cf$K%(%i!<(B; %s" (error-message-string err)) nil))))) (defun skk-bayesian-make-context (henkan-buffer) ;; $B$b$7(B"$B"'(B"$B$,$"$l$P!"(B`skk-bayesian-context-len'$B$ND9$5$NJ8;zNs$rJV$9!#(B ;; $B$J$1$l$P!"(Bnil$B!#(B (let ((raw-text (with-current-buffer henkan-buffer (let ((kakutei-symbol-point (save-excursion ;; 100 $BJ8;zA0$^$G$7$+"'$r8!:w$7$J$$(B (search-backward "$B"'(B" (max (point-min) (- (point) 100)) t)))) (if kakutei-symbol-point (buffer-substring-no-properties (max (- kakutei-symbol-point skk-bayesian-context-len) (point-min)) kakutei-symbol-point)))))) (if raw-text (with-temp-buffer (let ((min (point-min))) (insert raw-text) ;; $BJ8;zNs$+$i2~9T$r(B join-line $B$G=|$/!#(B ;; $BC"$7!"F|K\8l$NCf$N2~9T$O6uGr$,F~$k$N$G!"$=$l$r=|$/!#(B (while (not (eq min (point))) (goto-char (point-max)) (join-line) ;; from skk-viper.el (let ((char-after (char-after (progn (skip-chars-forward " ") (point)))) (char-before (char-before (progn (skip-chars-backward " ") (point))))) (when (and char-after char-before (or (skk-jisx0208-p char-after) (skk-jisx0213-p char-after)) (or (skk-jisx0208-p char-before) (skk-jisx0213-p char-before))) (while (looking-at " ") (delete-char 1)))))) (buffer-string)) nil))) (defun skk-bayesian-search (henkan-buffer midasi okurigana entry) ;; $B%=!<%H$7$?!"(Bentry $B$rJV$9(B ;; $B0z?t$NNc(B ;; entry : ("$B;B(B" "$B@Z(B" "$BCe(B") ;; midasi: $B$-(Br ;; okurigana: $B$k(B (setq skk-bayesian-last-context nil) (if (= 1 (length entry)) entry (let ((context (skk-bayesian-make-context henkan-buffer)) ;; $BKvHx$N(B "/" $B$OB?J,ITMW$@$,(B (entry-str (concat (mapconcat #'identity entry "/") "/")) sorted-entry) ;; send context to skk-bayesian-process (setq sorted-entry (skk-bayesian-read-process-output (concat skk-bayesian-command-sort entry-str "\n" context "\n"))) ;; send debugging messages (skk-bayesian-debug-message "Search: entry-str=%s" entry-str) (skk-bayesian-debug-message "Search: context=%s" context) (skk-bayesian-debug-message "Search: sorted-entry=%s" sorted-entry) ;; return sorted-entry or entry (if (and sorted-entry (listp sorted-entry)) (progn (setq skk-bayesian-last-context context skk-bayesian-corpus-last-sorted-entry sorted-entry) sorted-entry) entry)))) (defun skk-bayesian-update (henkan-buffer midasi okurigana word purge) (when skk-bayesian-last-context ;; entry $B$NMWAG$,(B 1 $B$N;~$O!"(Bnil (if (and skk-bayesian-corpus-make skk-bayesian-corpus-last-sorted-entry (not (string= word (car skk-bayesian-corpus-last-sorted-entry)))) ;; $BBh0l8uJd$,4V0c$$$@$C$?;~(B (skk-bayesian-corpus-append 'bad-inference skk-bayesian-last-context midasi okurigana (car skk-bayesian-corpus-last-sorted-entry))) (add-hook 'post-command-hook 'skk-bayesian-check-modification-after-kakutei) (if skk-bayesian-pending-data-alist ;; pending $B$7$F$$$?$N$rJ]B8(B (skk-bayesian-add-to-history)) ;; pending $B3+;O(B (skk-bayesian-debug-message "Update: pending... word=%s" word) (setq skk-bayesian-number-of-command-after-kakutei -1);; $B3NDj$K(B1$B2s$+$+$k$N$G(B-1 (skk-bayesian-make-pending-data-alist word okurigana midasi henkan-buffer (with-current-buffer henkan-buffer ;; skk-get-last-henkan-datum $B$O!"(Bbuffer-local $B$JJQ?t$rMQ$$$F$$$k!#(B ;; skk-get-last-henkan-datum $B$O!"(Bskk-update-end-function $B$rFI$s(B ;; $B$@8e$K99?7$5$l$k!#$3$3$G$O;H$($J$$!#(B (if skk-undo-kakutei-word-only (point-marker) (save-excursion (skk-bayesian-debug-message (prin1-to-string (point-marker))) (forward-char (- 0 (length okurigana) ;; word $B$,Cml9g(B $B$ODI2C$7$J$$!#;29M(B:`skk-bayesian-max-commands-to-wait-for'$B!#(B" ;; $B0MB8$7$F$$$kJQ?t(B ;; skk-bayesian-pending-data-alist ;; $BCm0U(B ;; skk-get-last-henkan-datum $B$O!"?7$7$$3NDj$,(B pending $BCf$K5/$3$k$N$G!";H$($J$$!#(B (if (not (skk-bayesian-process-live-p)) (setq skk-bayesian-pending-data-alist nil)) (when (and skk-bayesian-pending-data-alist (buffer-live-p (skk-bayesian-get-pending-data-alist 'buffer))) (with-current-buffer (skk-bayesian-get-pending-data-alist 'buffer) (let* ((kakutei-word (skk-bayesian-get-pending-data-alist 'word)) (okurigana (skk-bayesian-get-pending-data-alist 'okurigana)) (kakutei-with-okuri (concat kakutei-word okurigana)) (word-len (length kakutei-with-okuri)) (midasi (skk-bayesian-get-pending-data-alist 'midasi)) ;; henkan-point $B$O!"Aw$j2>L>$,$"$k>l9g$O!"Aw$j2>L>$N(B point (start (marker-position (skk-bayesian-get-pending-data-alist 'henkan-point))) (end (+ start word-len)) (current-word (if (and (<= (point-min) start) (<= end (point-max))) (buffer-substring-no-properties start end))) (context (skk-bayesian-get-pending-data-alist 'context))) ;; kakutei-word $B$,JQ99$5$l$F$$$k$+(B (if (not (string= current-word kakutei-with-okuri)) (progn (skk-bayesian-debug-message "Add: kakutei-word has been modified") (if skk-bayesian-corpus-make (skk-bayesian-corpus-append 'modified context midasi okurigana kakutei-word))) (skk-bayesian-debug-message "Add: context=%s" context) (skk-bayesian-debug-message "Add: kakutei-word=%s" kakutei-word) (if (skk-bayesian-read-process-output (concat skk-bayesian-command-add kakutei-word "\n" context "\n")) (skk-bayesian-debug-message "Add: done") (skk-bayesian-debug-message "Add: failed")) (if skk-bayesian-corpus-make (skk-bayesian-corpus-append 'positive context midasi okurigana kakutei-word))))) (setq skk-bayesian-pending-data-alist nil))) (defun skk-bayesian-save-history () "Save skk-bayesian history to `skk-bayesian-history-file'." (interactive) (if skk-bayesian-pending-data-alist ;; pending $B$7$F$$$?$N$rJ]B8(B (skk-bayesian-add-to-history)) (when (skk-bayesian-process-live-p) (skk-message "skk-bayesian $B$NMzNr$rJ]B8$7$F$$$^$9(B..." "saving skk-bayesian history...") (if (skk-bayesian-read-process-output skk-bayesian-command-save) (skk-message "skk-bayesian $B$NMzNr$rJ]B8$7$F$$$^$9(B...$B40N;(B" "saving skk-bayesian history...done") (skk-message "skk-bayesian $B$NMzNr$rJ]B8$7$F$$$^$9(B...$B<:GT(B" "saving skk-bayesian history...failed")))) (defun skk-bayesian-restart-process () (if (skk-bayesian-process-live-p) (skk-bayesian-kill-process)) (let ((proc-buf (get-buffer-create (if skk-bayesian-debug "*skk-bayesian*" " *skk-bayesian*"))) (proc-name "skk-bayesian")) (skk-message "$B%W%m%;%9(B bskk $B$r5/F0$7$F$$$^$9(B..." "Launching a process, bskk...") (setq skk-bayesian-process (or (and skk-bayesian-prefer-server (condition-case err (open-network-stream proc-name proc-buf skk-bayesian-host skk-bayesian-port) (error (skk-bayesian-debug-message "Error: %s\n%s" (error-message-string err) "Running bskk as a sub process") nil))) (if skk-bayesian-debug (start-process proc-name proc-buf "ruby" "-S" "bskk" "-f" skk-bayesian-history-file "-v" "-d") (start-process proc-name proc-buf "ruby" "-S" "bskk" "-f" skk-bayesian-history-file)))) (if skk-bayesian-process (skk-message "$B%W%m%;%9(B bskk $B$r5/F0$7$F$$$^$9(B...$B40N;(B" "Launching a process, bskk...done") (skk-message "$B%W%m%;%9(B bskk $B$r5/F0$7$F$$$^$9(B...$B<:GT(B" "Launching a process, bskk...failed"))) (set-process-coding-system skk-bayesian-process skk-bayesian-coding-system skk-bayesian-coding-system) (if (eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 22))) (set-process-query-on-exit-flag skk-bayesian-process nil) (process-kill-without-query skk-bayesian-process))) (defun skk-bayesian-kill-process () "Kill skk-bayesian process." (interactive) (when skk-bayesian-process (let ((status (process-status skk-bayesian-process))) (cond ((memq status '(open connect)) ;; close connection (delete-process skk-bayesian-process)) ((eq status 'run) ;; send SIGTERM=15 (signal-process (process-id skk-bayesian-process) 15))) (setq skk-bayesian-process nil)))) (defun skk-bayesian-init () "Set up skk-bayesian process." (interactive) (when (not (skk-bayesian-process-live-p)) (skk-bayesian-restart-process))) (provide 'skk-bayesian) (add-to-list 'skk-search-end-function 'skk-bayesian-search) (add-to-list 'skk-update-end-function 'skk-bayesian-update) (add-hook 'kill-emacs-hook (function (lambda () (skk-bayesian-save-history) (skk-bayesian-corpus-save) (skk-bayesian-kill-process)))) (skk-bayesian-init) ;;; ;;; functions for skk-bayesian-corpus ;;; (defun skk-bayesian-corpus-init () (unless (buffer-live-p skk-bayesian-corpus-buffer) (setq skk-bayesian-corpus-buffer (get-buffer-create skk-bayesian-corpus-buffer-name)) )) (defun skk-bayesian-corpus-append (flag context midasi okurigana word) ;; called by `skk-bayesian-add-to-history' ;; if flag is non-nil then append data as positive data ;; otherwise append data as negative data (when (and context midasi word) ;; okurigana can be nil (skk-bayesian-corpus-init) (with-current-buffer skk-bayesian-corpus-buffer (goto-char (point-max)) (insert (concat (cond ((eq flag 'positive) "+") ((eq flag 'modified) "m") ((eq flag 'bad-inference) "-") (t (error (concat "Error; invalid flag=" (prin1-to-string flag))))) midasi " [" okurigana "/" word "/]" context "\n"))))) (defun skk-bayesian-corpus-save () "Save corpus to `skk-bayesian-corpus-file'." (interactive) (if (let ((attrs (file-attributes skk-bayesian-corpus-file))) (or (not attrs) ;; $B%U%!%$%k$,B8:_$7$J$1$l$P!"(Battrs $B$O!"(Bnil (eq (nth 8 attrs) 0))) ;; $B%U%!%$%k%5%$%:$,(B 0 (with-temp-buffer (insert ";; + means positive ;; m means modified after henkan ;; - menas wrong inference ;; m and - are usually negative. ;; However, in some cases, m data would be correct henkan ;; because we might delete correct henkan.") (write-file skk-bayesian-corpus-file))) (when skk-bayesian-corpus-buffer (with-current-buffer skk-bayesian-corpus-buffer (write-region (point-min) (point-max) skk-bayesian-corpus-file 'append) (delete-region (point-min) (point-max))))) ;;; skk-bayesian.el ends here ddskk-15.2/doc/0000755000570400056700000000000012434434721013353 5ustar kitamotoopenlabddskk-15.2/doc/.cvsignore0000644000570400056700000000001107350725056015350 0ustar kitamotoopenlabskk.info*ddskk-15.2/doc/skk.texi0000644000570400056700000130276512434434535015057 0ustar kitamotoopenlab\input texinfo @c -*- mode: texinfo; coding: iso-2022-jp-3 -*- @setfilename skk.info @settitle SKK Manual @documentlanguage ja @paragraphindent 1 @c $B%a%b(B @c 1 makeinfo $B$G%3%s%Q%$%k$9$k$3$H$b$G$-$^$9!#0l=V$G=*$o$j!"%j%s%/@Z$l$r4^$`(B @c $B%(%i!<$N8!=P$KJXMx$G$9!#(B(make info $B$O%j%s%/@Z$l$r8!=P$7$^$;$s(B) @c $BJ}K!$O!"$3$N%U%!%$%k$r(B utf-8 $B$GJ]B8$7!"(Bmakeinfo skk.texi $B$H$7$^$9!#(B @c $B@8@.$5$l$k(B info $B$O!"(Bmake info $B$N$=$l$H$O0[$J$j$^$9!#FC$K2~9T$O(B @c $BJQ$K$J$j$^$9!#(B @c 2 @ref $B$J$I$N%3%^%s%I$O!"2~9T$5$l$k$H@5>o$KF/$-$^$;$s!#(B @w $B$NCf$KF~$l$F2<$5$$!#(B @c $B$"$k$$$O!"(B3 $B$D0z?t$rEO$9$N$bNI$$$G$7$g$&!#(B @c 3 @footnote $B$O!"$=$N%Z!<%8$N0l$DL\$G$O!"(Btexi $B$N2~9T(B/$BHs2~9T$,$=$N$^$^(B @c info $B$N2~9T(B/$BHs2~9T$K$J$j!"Fs$DL\0J9_$OB>$NJ8$HF1MM!"<+F0E*$K2~9T$5$l$^$9!#(B @c $B$?$@$7!"Nc30$b$"$k$h$&$G$9!#(B @c $B$^$?!"(B@footnote $B0J30$K$b!"2~9T$,JT=8$5$l$J$$%1!<%9$,$"$k$h$&$G$9!#(B @c @c Author: Masahiko Sato @c Yukiyoshi Kameyama @c NAKAJIMA Mikio @c IRIE Tetsuya @c Kitamoto Tsuyoshi @c Teika Kazura @c Tsukamoto Tetsuo @c Tsuyoshi AKIHO @c SAKAI Kiyotaka @c Satoshi Harauchi @c Maintainer: SKK Development Team @c Keywords: japanese @c @set SKK-VERSION 15.2 @set UPDATED $Date: 2014/11/23 19:45:33 $ @dircategory Emacs @dircategory GNU Emacs Lisp @direntry * SKK: (skk). Simple Kana to Kanji conversion program. @end direntry @c Texinfo $B$KDI2C$G$-$?$iNI$$$J$!$H;W$&E@$r=R$Y$^$9!#CfEg$OC1$J$k(B LaTeX @c $B%f!<%6$G!"(BPlain TeX $B%^%/%m$NAH$_J}$J$s$FA4A3CN$j$^$;$s$N$G!"%f!<(B @c $B%6!<$NN)>l$G$d$j$?$$$3$H$rB4D>$K!"$^$?L5@UG$$K=R$Y$k$KN1$a$^$9!#$"$7(B @c $B$+$i$:!#/$78+$K$/$$5$$,$9$k!#(Binfo $B$G$O%"%9%-!3Q%9%Z!<%9$rA^F~$7$F$O$I$&$+(B? @c @c (3)LaTeX $B$NI=$r=q$/%3%^%s%I$r!K(B, @w{Kitamoto Tsuyoshi}$B!JKLK\9d!K(B, @w{Teika Kazura}$B!JDj2H!K(B, @w{Tsukamoto Tetsuo}$B!JDMK\E0M:!K(B and @w{Tsuyoshi AKIHO}$B!J=)J]6/!K(B. Revised by @w{Kiyotaka Sakai}$B!JpJs(B:: * $B$h$/$"$kO$N9`L\$G$9!#(B --- $B$O$8$a$K(B * $B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B:: * SKK$B$H$O$J$K$+(B:: $B%$%s%9%H!<%k(B * APEL $B$N%$%s%9%H!<%k(B:: * DDSKK $B$N%$%s%9%H!<%k(B:: * $B<-=q$K$D$$$F(B:: * $B<-=q$NF~uBVKh$N%b!<%I(B * $B%$%s%/%j%a%s%?%k!&%5!<%A(B:: * $B%A%e!<%H%j%"%k(B:: $BJXMx$J1~MQ5!G=(B -- $BM=HwCN<1(B * $B%U%!%$%k9=@.(B:: $B1~MQ5!G=$r;H$$$3$J$9$?$a$NM=HwCN<1!#(B * $B%f!<%6%*%W%7%g%s$N@_DjJ}K!(B:: $BJXMx$J1~MQ5!G=(B -- $BF~NO4X78(B * $B%+%?%+%J!"1Q;zF~NO$NJXK!(B:: $B$3$l$H $B!V$+$7$?$s$]$;$-$K$s!W(B * $BJXMx$JJQ49!"$=$NB>$NJQ49(B:: $BC14A;z!"@\F,<-!"4A?t;z!"Ey!9!#(B $BJXMx$J1~MQ5!G=(B -- $BMM!9$J@_Dj(B * $B%-!<@_Dj(B:: $B%m!<%^;z$N%k!<%k$J$I$bJQ99$G$-$^$9!#(B * $BJQ49!"3NDj$NA08e(B:: $B8mJQ49$ND{@5!"0lH/3NDj!"3NDj$N%?%$%_%s%0$J$I(B * $BAw$j2>L>4XO"(B:: $BAw$j2>L>$N=hM}$K$D$$$F!#(B * $B8uJd$N=g=x(B:: $B4XO"$N$"$k8l$O>e0L$KI=<($J$I!"8zN($r5a$a$F(B * $B<-=q4XO"(B:: $B<-=q$K$^$D$o$k@_Dj5Z$S5!G=!#(B $BJXMx$J1~MQ5!G=(B -- $BB>(B * $BCm~$j$D$1(B:: $BMM!9$JI=<($N@_Dj!#(B * $B%f!<%6%,%$%@%s%94XO"(B:: * I-search$B4XO"(B:: $B%$%s%/%j%a%s%?%k!&%5!<%A$K$^$D$o$k5!G=!#(B * VIP/VIPER$B$H$NJ;MQ(B:: * picture-mode$B$H$NJ;MQ(B:: picture-mode $B$H$NJ;MQ$N:]$NLdBjE@!#(B * Org-mode$B$H$NJ;MQ(B:: Org-mode $B$H$NJ;MQ$N:]$NLdBjE@!#(B $B%m!<%^;zF~NO0J30$NF~NOJ}<0(B * AZIK:: * ACT:: * TUT-code:: * $B$+$JF~NO$H?F;X%7%U%H(B:: SKK$B$K4X$9$k>pJs(B * $B:G?7>pJs(B:: * SKK$B%a!<%j%s%0%j%9%H(B:: * SKK$B4XO"%=%U%H%&%'%"(B:: * SKK$B<-=q$K$D$$$F(B:: * $B<-=q%D!<%k(B:: * SKK$B$N:n!#(B @end detailmenu @end menu @end ifinfo @node $B$O$8$a$K(B @chapter $B$O$8$a$K(B @cindex $B$O$8$a$K(B @menu * $B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B:: * SKK$B$H$O$J$K$+(B:: @end menu @node $B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B @section $B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B Daredevil SKK $B!J0J2)(B) @item GNU Emacs 23.1 $B0J9_(B ($B?d>)(B) @item GNU Emacs 24.1 $B0J9_(B ($B?d>)(B) @item Mule $B5!G=IU$-$G%3%s%Q%$%k$5$l$?(B XEmacs 21.4 $B$N:G?7HG(B @item Mule $B5!G=IU$-$G%3%s%Q%$%k$5$l$?(B XEmacs 21.5 $B$N:G?7HG(B @end itemize XEmacs $B$K4X$7$F$O!"(BXEmacs $BK\BN$H$OJL$KG[I[$5$l$F$$$k%Q%C%1!<%872$O:G?7HG$,MW(B $B5a$5$l$^$9!#>/$J$/$H$b(B xemacs-base $B%Q%C%1!<%8$,:G?7$G$"$k$3$H$K2C$($F!"(Bfsf-compat $B%Q(B $B%C%1!<%8$,I,?\$G$9!#(B $BAmO@$H$7$F!"8=:_$O(B XEmacs $B$h$j$b(B GNU Emacs $B$G$NF0:n$,$h$/%F%9%H$5$l$F$*(B $B$j!":G6a$G$O(B XEmacs $B$G$N%F%9%H$O=e$G$NMxMQ$,:G$b?d>)$5$l$^$9!#(B $B8=;~E@$G(B Emacs $B$N%P!<%8%g%s$4$H$K>/$J$/$H$b0J2<$N@)8B$,$"$j$^$9!#(B @table @b @item GNU Emacs 20.x DDSKK 14.2 $B0J9_$O(B GNU Emacs 20 $B$O%5%]!<%HBP>]30$G$9!#(B GNU Emacs 20 $B$N%f!<%6!<$O(B DDSKK 14.1 $B$r$*;H$$$/$@$5$$!#(B @item GNU Emacs 21.4 DDSKK 15.1 $B0J9_$O(B GNU Emacs 21 $B$O%5%]!<%HBP>]30$G$9!#(B GNU Emacs 21 $B$N%f!<%6!<$O(B DDSKK 14.4 $B$r$*;H$$$/$@$5$$!#(B @item GNU Emacs 22.3 @itemize @bullet @item JIS X 0213 $BBP1~$K$O(B Mule-UCS $B$NF3F~$,I,MW$G$9!#(B @item X Window System $B>e$G$N%a%K%e!<%P!<$NF|K\8lI=<($O(B GTK $BBP1~HG$N$_$G$9!#(B @end itemize @item GNU Emacs 23.3 @itemize @bullet @item X Window System $B>e$G$N%a%K%e!<%P!<$NF|K\8lI=<($O(B GTK $BBP1~HG$N$_$G$9!#(B @end itemize @item GNU Emacs 24.3 GNU Emacs 24.3 $B$H(B DDSKK 14 $B$NAH$_9g$o$;$G(B isearch $B;HMQ;~$NIT6q9g$,H/8+$5$l$F$$$^$9!#(B GNU Emacs 24.3 $B$N%f!<%6!<$O(B DDSKK 15 $B$r$*;H$$$/$@$5$$!#(B @url{http://mail.ring.gr.jp/skk/201211/msg00000.html} @url{http://mail.ring.gr.jp/skk/201212/msg00000.html} @item GNU Emacs 24.4 @itemize @bullet @item coding tag $B$rL@<($7$F$$$J$$%U%!%$%k$O(B utf-8 $B$HIU$1$i$l!"$=$NL>(B $B$O(B Combinatory Logic $B$G$NM-L>$JEy<0(B @samp{SKK = I} $B$K$bM3Mh$7$F$$$^(B $B$9(B @footnote{@samp{SKK = I} $B$K$D$$$F>\$7$/$O(B @url{http://openlab.jp/skk/SKK.html} $B$r(B $B$4;2>H2<$5$$!#(B}$B!#(B Daredevil SKK (DDSKK) $B$O!"(B SKK $B$N99$J$k3HD%HG$G$9(B @footnote{@samp{Daredevil} $B$NL>$NM3Mh$K$D$$$F$O(B @ref{Q1-1 Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B?} $B$r;2>H$7$F2<$5$$!#(B}$B!#(B $B$?$@$7!"(B@samp{SKK $B%b!<%I(B}$B!"(B@samp{SKK $B<-=q(B}$B!"(B@samp{SKK $B%5!<%P(B} $B$H$$$C$?Nr(B $B;KE*$JMQ8l$O0z$-B3$-;HMQ$7$F$*$j!"(BDDSKK $B$H8F$P$J$$>l9g$b$"$j$^$9!#$^$?!"(B SKK $BJ}<0$NF~NOJ}K!$r:NMQ$7$?%W%m%0%i%`$J$I!"9-$/(B SKK family $B$r0UL#$9$k>l(B $B9g$bF1MM$G$9!#(B DDSKK $B$NBP1~$N$+$JF~NO$N$[$+!"(BAZIK$B!"(BACT$B!"(BTUT-code $B$N3FJ}<0$K$h$kF~NO$b2DG=!#(B @item $BJ8K!E*CN<1$rMQ$$$J$$9bB.$J!V$+$J(B $B"*(B $B4A;z!WJQ49!#(B @item $B%7!<%`%l%9$+$D:F5"E*$JC18lEPO?%b!<%I!#(B @item $B3NDj8l$r8D?M<-=q$X<+F0EPO?$9$k$3$H$K$h$C$F!"JQ498uJd$r8zN(E*$KI=<($9$k!#(B @item $B%^%$%J!<%b!<%I$H$7$Fe$rMxMQ$9$k>l9g(B $B$K$*$$$F$O(B APEL $B$rJLES%$%s%9%H!<%k$9$kI,MW$,$J$/$J$j$^$7$?!#(BAPEL $B$K0MB8$7(B $B$F$$$kB>$N(B elisp $B%W%m%0%i%`$r;HMQ$7$F$$$J$1$l$P!"%$%s%9%H!<%k:Q$N(B APEL $B$O(B $B:o=|$9$k$3$H$,2DG=$G$9!#(B XEmacs $B$r$*;H$$$N>l9g$O!"(B DDSKK $B$r%$%s%9%H!<%k$9$kA0$K(B APEL (APEL 10.8 $B0J>e$r?d>)(B) $B$r%$%s%9%H!<%k$7$F2<$5$$!#(B APEL $B$Oe$G(B @command{make} $B%3%^%s%I$,MxMQ$G$-$k4D6-$rA[Dj$7$^$9(B @footnote{Microsoft Windows $B4D6-$G$O!"(B@command{makeit.bat} $B$r;HMQ$9$k$3$H$G(B $BF1MM$NA`:n$G%$%s%9%H!<%k$G$-$^$9!#(B@url{http://openlab.jp/skk/skk/main/READMEs/README.w32.ja} cygwin $B4D6-$r%$%s%9%H!<%k$5$l$F$$$kJ}$O(B @command{make} $B%3%^%s%I$,;HMQ$G$-$k(B $B$N$G!"K\J8$N2r@b$,$=$N$^$^Ev$F$O$^$j$^$9!#(B Apple OS X $B4D6-$NJ}$O(B @url{http://openlab.jp/skk/skk/main/READMEs/README.MacOSX.ja} $B$r;2>H$7$F$/$@$5$$!#(B }$B!#(B $B$^$:!"(BDDSKK $B$N%"!<%+%$%V(B @file{ddskk-VERSION.tar.gz} $B$r(B @command{tar} $B%3(B $B%^%s%I$H(B @command{gzip} $B%3%^%s%I$r;HMQ$7$FE83+$7$^$9!#(B @example % gzip -cd ddskk-@value{SKK-VERSION}.tar.gz | tar xvf - @end example $B /usr/local/share/emacs/24.3.50/site-lisp/skk @print{}SKK infos: @print{} skk.info @print{} -> /usr/local/share/info @print{}SKK tutorials: @print{} SKK.tut, SKK.tut.E, NICOLA-SKK.tut, skk.xpm @print{} -> /usr/local/share/skk @end group @end example emacs $B$Nl9g(B $B$O(B @file{SKK-CFG} $B%U%!%$%k$rJT=8$7$F$/$@$5$$!#JT=88e$OI,$:(B @command{make what-where} $B$r(B $Bl9g$O!"(B @example % make install EMACS=mule @end example @noindent $B$H;XDj$7$^$9!#(B @node XEmacs $B$X$N%$%s%9%H!<%k(B @subsection XEmacs $B$X$N%$%s%9%H!<%k(B XEmacs $B$G%Q%C%1!<%8$H$7$F%$%s%9%H!<%k$9$k>l9g$O!"(B $B$^$:!"(B@option{what-where-package} $B$r0z?t$K(B @command{make} $B%3%^%s%I$r /usr/share/xemacs/site-packages/lisp/skk @print{}SKK infos: @print{} skk.info @print{} -> /usr/share/xemacs/site-packages/info @print{}SKK tutorials: @print{} SKK.tut, SKK.tut.E, NICOLA-SKK.tut, skk.xpm @print{} -> /usr/share/xemacs/site-packages/etc/skk @end group @end example $B$D$.$K!"%9!<%Q!<%f!<%6$K$J$C$F(B @option{install-package} $B$r0z?t(B $B$K(B @command{make} $B$rfIW!W$J$IJ#9g8l$H$_$J$7F@$k8l$,BgI}$K:o=|$5$l$F$$$^$9!#(B $B$=$N$?$a!"(B@file{SKK-JISYO.L} $B$rMxMQ$7$?$+$J4A;zJQ49$HF1Ey$N7k2L$OF@$i$l$^(B $B$;$s!#(B $BM-;V$NCN7C$r7k=8$7$F:n$i$l$F$$$k3F.8BI,MW$J8l$r<}O?!K(B @item SKK-JISYO.M M $B<-=q!JIaDL$K;H$&J,$K$OB-$j$kDxEY!K(B @item SKK-JISYO.ML M $B<-=q$H(B L $B<-=q$NCf4V$N%5%$%:$N<-=q!#(BL $B<-=q<}O?8l$NFb!"(BEPWING $B<-=q$d%*%s(B $B%i%$%s<-=q$G@5$7$$$HH=JL$5$l$?8l$r%Y!<%9$K$7$F2C=|!#(B @item SKK-JISYO.L L $B<-=q!J$"$i$f$kC18l$r<}O?!K(B @item zipcode $BM9JXHV9f<-=q(B @item SKK-JISYO.JIS2 JIS X 0208 $B$GDj$a$i$l$F$$$kBh#2?e=`$NJ8;z$r!"It\:Y$O!"H$7$F2<$5$$!#(B @url{http://openlab.jp/skk/skk/dic/READMEs/committers.txt} @node $B<-=q$r(B DDSKK $B$HF1;~$K%$%s%9%H!<%k$9$k(B @section $B<-=q$r(B DDSKK $B$HF1;~$K%$%s%9%H!<%k$9$k(B DDSKK $B$N%=!<%9$rE83+$9$k$H!"Cf$K(B @file{dic} $B$H$$$&%G%#%l%/%H%j$,B8:_$7$^(B $B$9!#(B@file{SKK-JISYO.L} $B$J$I$r$3$N%G%#%l%/%H%j$K%3%T!<$7$F$+$i(B @command{make install} $B$r(B $BuBV$G(B @command{make install} $B$rl9g$O(B $B<-=q%5!<%P$rMxMQ$9$k$3$H$G>J%a%b%j8z2L$rF@$i$l$^$9!#$^$?!"<-=q%5!<%P$K$h(B $B$C$F$OJ#?t<-=q$N8!:w!"(BEPWING $B<-=q$N8!:w$,$G$-$?$j$9$k$b$N$b$"$j$^$9!#(B DDSKK $B$OFCDj$N<-=q%5!<%P$N$l$N%&%'%V%5%$%H$r$4;2>H2<$5$$!#(B @table @b @item $B<-=q%5!<%P$N@bL@$H%j%s%/(B @url{http://openlab.jp/skk/skkserv-ja.html} @end table @node $B$O$8$a$N@_Dj(B @chapter $B$O$8$a$N@_Dj(B @cindex @file{leim-list.el} $BI8=`E*$K%$%s%9%H!<%k$7$?>l9g$O!"FCCJ$N@_Dj$J$7$K(B Emacs $B$r5/F0$9$k$@$1(B $B$G(B DDSKK $B$,;H$($k>uBV$K$J$j$^$9!#(B $B<+F0E*$K(B @file{skk-setup.el} $B$H$$$&%U%!%$%k$,FI$_9~$^$l!"@_Dj$5$l$^$9(B @footnote{Emacs $B$,5/F0$9$k2aDx!J4X?t(B@code{normal-top-level}$B!K$G(B @file{SKK_LISPDIR/leim-list.el} $B$,FI$_9~$^$l$^$9!#(B @file{leim-list.el} $B$O(B @file{skk-autoloads.el} $B$H(B @file{skk-setup.el} $B$r(B @code{require} $B$7$^$9!#(B @findex register-input-method @file{skk-autoloads.el} $B$O(B DDSKK $B$N(B @command{make} $B;~$K<+F0E*$K@8@.$5$l$k%U%!%$%k(B $B$G$"$j!"3F4X?t$r<+F0%m!<%I(B(autoload)$B$9$k$h$&Dj5A$9$k$[$+(B @code{register-input-method} $B$b(B $B9T$$$^$9!#(B @file{skk-setup.el} $B$O%-!<%P%$%s%I!J(B@kbd{C-x C-j} @result{} @code{'skk-mode}$B!K!"JQ?t(B @code{skk-tut-file} $B$NDj5A5Z$S%$%s%/%j%a%s%?%k!&%5!<%A$NDj5A$r9T$C$F$$$^$9!#(B}$B!#(B $B$3$N<+F0@_Dj$K$h$i$:$Kl9g$O!"0J2<$N@bL@$r;2>H$7$F$/$@$5$$!#(B @menu * $B:G$b4pK\E*$J@_Dj(B:: * $B%$%s%/%j%a%s%H8!:w$N@_Dj(B:: * $B<-=q%5!<%P$r;H$$$?$$$H$-$N@_Dj(B:: * DDSKK $B$r(B Emacs $B$N(B Input Method $B$H$9$k(B:: @end menu @node $B:G$b4pK\E*$J@_Dj(B @section $B:G$b4pK\E*$J@_Dj(B @vindex skk-cdb-large-jisyo $B<+F0@_Dj$K$h$i$:l9g$O!"l9g$OITMW(B} (global-set-key "\C-x\C-j" 'skk-mode) (global-set-key "\C-xj" 'skk-auto-fill-mode) (global-set-key "\C-xt" 'skk-tutorial) @end group @end lisp $B<-=q%5!<%P$r;H$o$J$$>l9g$O!"<-=q%U%!%$%k$r;XDj$9$kI,MW$,$"$j$^$9!#(B @lisp (setq skk-large-jisyo "/your/path/to/SKK-JISYO.L") @end lisp @noindent $B<-=q%5!<%P$r;H$o$J$$>l9g$O(B Emacs $B$N%P%C%U%!$K(B @code{skk-large-jisyo} $B$,;X(B $B$9%U%!%$%k$rc$H(B $B$J$k>l9g$O!">e5-$N(B @file{SKK-JISYO.L} $B$r(B @file{SKK-JISYO.M}$B!"(B@file{SKK-JISYO.ML} $BKt(B $B$O(B @file{SKK-JISYO.S} $B$KJQ99$7$F$/$@$5$$!#(B @cindex CDB $B7A<0<-=q%U%!%$%k(B DDSKK 14.1 $B0J9_$O<-=q%5!<%P$r7PM3$;$:$H$b(B CDB $B7A<0(B@footnote{constant database $B$N(B $B$3$H!#>\$7$/$O(B @url{http://cr.yp.to/cdb.html} $BKt$O(B @url{http://ja.wikipedia.org/wiki/Cdb} $B$r;2>H$N$3$H!#(B} $B$N<-=q%U%!%$%k$rD>@\MxMQ$G$-$k$h$&$K$J$j$^$7$?!#(BCDB $B7A<0<-=q%U%!%$%k(B@footnote{ SKK $B<-=q(B $B$N(B @file{Makefile} $BCf$N(B cdb $B%?!<%2%C%H$rl9g$O!"0J2<$N$h$&$K;XDj$7$F$/$@$5$$!#(B @lisp (setq skk-cdb-large-jisyo "/your/path/to/SKK-JISYO.L.cdb") @end lisp @noindent $BJQ?t(B @code{skk-large-jisyo} $B$H(B $BJQ?t(B @code{skk-cdb-large-jisyo} $B$rF1;~$K;X(B $BDj$7$?>l9g$O!"I8=`$G$O(B CDB $B7A<0<-=q%U%!%$%k$NJ}$,@h$K8!:w$5$l$^$9!#$3$l$K4X$7$F(B $B$O(B @w{@ref{$B<-=q8!:w$N@_Dj$N6qBNNc(B}} $B$b;2>H$7$F$/$@$5$$!#(B @node $B%$%s%/%j%a%s%H8!:w$N@_Dj(B @section $B%$%s%/%j%a%s%H8!:w$N@_Dj(B @vindex isearch-mode-hook @vindex isearch-mode-end-hook $B4pK\E*$J@_Dj$O(B @file{skk-setup.el} $B$,FI$_9~$^$l$?;~E@$G40N;$7$F$$$^$9(B @footnote{@file{skk-setup.el} $B$G$O!"4X?t(B @code{isearch-mode-hook} $B$K(B @code{skk-isearch-setup-maybe} $B$r!"(B $B4X?t(B @code{isearch-mode-end-hook} $B$K(B @code{skk-isearch-cleanup-maybe} $B$r(B $B!"$=$l$>$l(B hook $B$KDI2C$7$F$$$^$9!#(B @code{skk-isearch-@{setup|cleanup@}-maybe} $B$H$b(B @file{skk-setup.el} $B$GDj5A$5$l$F$*$j!"(B $BKt$O(B IP $B%"%I%l%9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-server-portnum $B<-=q%5!<%P$,;H$&%]!<%HHV9f!#(B@file{/etc/services} $B$K(B skkserv $B$N%(%s%H%j$,(B $B5-=R$5$l$F$$$l$P(B @code{skk-server-portnum} $B$r;XDj$9$kI,MW$OL5$$!#(B @end defvr @vindex skk-server-inhibit-startup-server $B<-=q%5!<%P$,5/F0$7$F$$$J$+$C$?$H$-$K(B Emacs $B$+$i(B skkserv $B%W%m%;%9$rN)$A>e$2$k(B $B;v$b$G$-$^$9!#(B@code{skk-server-inhibit-startup-server} $B$r(B @code{nil} $B$K(B $B$9$k;v$G$3$N5!G=$,M-8z$K$J$j$^$9!#(B@ref{$B%5!<%P4XO"(B} $B$b;2>H$7$F$/$@$5$$!#(B Emacs $B$+$iN)$A>e$2$FMxMQ$9$k;v$,$G$-$k<-=q%5!<%P$O!"(B @example skkserv [-p port] [jisyo] @end example @noindent $B$N$h$&$J%*%W%7%g%s$r@\5/F0$9$k$b$N$K8B$i(B $B$l$^$9!#(B $B<-=q%5!<%P%W%m%0%i%`$H<-=q%U%!%$%k$O!"\$7$/$O3F<-=q%5!<%P$N@bL@=q$rFI$s$G2<$5$$!#(B @end defvr @noindent $B$3$l$i$N@_Dj$O!"4D6-JQ?t$rMxMQ$7$F2<5-$N$h$&$K$9$k$3$H$b$G$-$^$9!#(B @cindex @code{SKKSERVER} @cindex @code{SKKSERV} @cindex @code{SKK_JISYO} @table @b @item B $B%7%'%k$N>l9g(B (sh, bash, ksh, zsh $B$J$I(B) @example export SKKSERVER=example.org export SKKSERV=/your/path/to/skkserv export SKK_JISYO=/your/path/to/SKK-JISYO.L @end example @item C $B%7%'%k$N>l9g(B (csh, tcsh $B$J$I(B) @example setenv SKKSERVER example.org setenv SKKSERV /your/path/to/skkserv setenv SKK_JISYO /your/path/to/SKK-JISYO.L @end example @end table $B4XO"9`L\(B: @w{@ref{$B<-=q%5!<%P$NF~O$G$O!"(BDDSKK $B$N4pK\E*$J;HMQJ}K!$r@bL@$7$^$9!#$3$l$rFI$a$P!"$H$j$"$($:(B DDSKK $B$r;H$C$F$_$k$K$O=O$N!VJXMx$J1~MQ5!G=!W$O!"6=L#$N$"$k8D=j$N$_$r%T%C%/%"%C%W$7$F(B $B$*FI$_$K$J$k$N$,$$$$$G$7$g$&!#(B @menu * $B5/F0$H=*N;(B:: * $BF~NO%b!<%I(B:: $BJ8;zuBVKh$N%b!<%I(B * $B%$%s%/%j%a%s%?%k!&%5!<%A(B:: * $B%A%e!<%H%j%"%k(B:: @end menu @node $B5/F0$H=*N;(B @section $B5/F0$H=*N;(B @kindex C-x C-j @kindex C-x j SKK $B%b!<%I$KF~$k$K$O(B @kbd{C-x C-j}$B!"$b$7$/$O(B @kbd{C-x j} $B$H%?%$%W$7$^$9!#(B $B%b!<%I%i%$%s$N:8C<$K$O!"2<5-$N$h$&$K(B @w{@samp{--$B$+$J(B:}} $B$,DI2C$5$l$^$9(B @footnote{@file{skk.el} $B$N(B @code{skk-setup-modeline} $B$K$F!"(B@code{mode-line-format} $B$K(B @code{skk-icon} $B$H(B @code{skk-modeline-input-mode} $B$rDI2C$7$F$$$^$9(B}$B!#(B @example --$B$+$J(B:MULE/7bit----- Buffer-name (Major-mode)--- @end example $B$^$?!"%+!<%=%k$N?'$,JQ2=$7$^$9(B @footnote{$B%+%i!<%G%#%9%W%l%$$r;HMQ$7!"%+%i!l9g!#(B @w{@xref{$BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B}.}}$B!#(B @kbd{C-x C-j}$B!"$b$7$/$O(B @kbd{C-x j} $B$r:FEY%?%$%W$9$k$3$H$G!"(BSKK $B%b!<%I$K(B $BF~$kA0$N%b!<%I$KLa$j!"%+!<%=%k?'$b85$KLa$j$^$9(B @footnote{$B$?$@$7!"(B@b{$B!V%"%9%-!<%b!<%I!W(B}$B$rMxMQ$9$l$P(B SKK $B%b!<%I$+$iH4$1$k(B $BI,MW$O$[$H$s$I$"$j$^$;$s!#(B @xref{$BF~NO%b!<%I(B, , $B%"%9%-!<%b!<%I(B}.}$B!#(B @defvr {$B%f!<%6JQ?t(B} skk-status-indicator $B%G%U%)%k%H$O%7%s%\%k(B @code{'left} $B$G$9!#$3$NJQ?t$r%7%s%\%k(B @code{'minor-mode} $B$H(B $B@_Dj$9$l$P!"%$%s%8%1!<%?$O%b!<%I%i%$%s$N%^%$%J!<%b!<%I$N0LCV$KI=<($5$l$^$9!#(B @example -MULE/7bit----- Buffer-name (Major-mode $B$+$J(B)--- @end example @end defvr @defvr {$B%f!<%6JQ?t(B} skk-preload @file{~/.emacs} $B$K$FJQ?t(B @code{skk-preload} $B$r(B @code{non-nil} $B$H@_Dj$9$k$3(B $B$H$K$h$j!"(BDDSKK $B$N=i2s5/F0$rB.$/$9$k$3$H$,$G$-$^$9!#(B @lisp (setq skk-preload t) @end lisp $B$3$l$O!"(BSKK $BK\BN%W%m%0%i%`$NFI$_9~$_$HJQ?t(B @code{skk-search-prog-list} $B$K(B $B;XDj$5$l$?<-=q$NFI$_9~$_$r(B Emacs $B$N5/F0;~$K:Q$^$;$F$7$^$&$3$H$K$h$juBV$K$+$+$o$i$:6/@)E*$K%*!<%H%U%#%k%b!<%IIU$G(B SKK $B%b!<%I$KF~(B $B$j$?$$>l9g$O!"(B@kbd{M-1 C-x j} $B$d(B @kbd{C-u C-x j} $B$J$I$H%?%$%W$7!"$3$N%3(B $B%^%s%I$K@5$N0z?t$rEO$7$^$9(B @footnote{$B!V0z?t!W$K$D$$$F$O!"(B @display @ref{Arguments, , Arguments, emacs, GNU Emacs Manual}. @end display @noindent $B$r;2>H$N$3$H!#(B}$B!#(B @kindex C-u -1 C-x j @kindex M-- C-x j $B%*!<%H%U%#%k%b!<%I$r%*%U$K$7!"$+$D(B SKK $B%b!<%I$b=*N;$7$?$$>l9g$K$O(B @w{@kbd{M-- C-x j}} $B$d(B @w{@kbd{C-u -1 C-x j}} $B$J$I$H%?%$%W$7!"$3$N%3%^%s(B $B%I$KIi$N0z?t$rEO$7$^$9!#(B @node $B<-=q$NJ]B8(B @subsection $B<-=q$NJ]B8(B @vindex skk-backup-jisyo @vindex skk-jisyo Emacs $B$r=*N;$9$k$H$-$O!"J]B8A0$N8D?M<-=q$r(B @file{~/.skk-jisyo.BAK} $B$KB`Hr(B $B$7$F$+$i!"8D?M<-=q(B (@pxref{$B<-=q$N$rJQ99$7$?$1(B $B$l$P!"$=$l$>$l(B @code{skk-jisyo} $B$d(B @code{skk-backup-jisyo} $B$NCM$rJQ99$7$F(B $B2<$5$$!#(B @findex skk-kill-emacs-without-saving-jisyo @kindex M-x skk-kill-emacs-without-saving-jisyo $B8D?M<-=q$rJ]B8$;$:$K(B Emacs $B$r=*N;$5$;$?$$>l9g$K$O!"(B @example @kbd{M-x skk-kill-emacs-without-saving-jisyo} @end example @noindent $B$H%?%$%W$7$^$9!#(B $B8D?M<-=q$NJ]B8F0:n$K$D$$$F99$K>\$7$/$O!"(B@ref{$B8D?M<-=q$NJ]B8F0:n(B} $B$r;2>H(B $B$7$F$/$@$5$$!#(B @node $BF~NO%b!<%I(B @section $BF~NO%b!<%I(B SKK $B%b!<%I$O!"J8;zuBV$K$h$j#3$D$N(B@b{$B!VJQ49%b!<%I!W(B}$B$r;}$A$^$9!#(B @menu * $BF~NO%b!<%I$N@bL@(B:: * $BF~NO%b!<%I$r@Z$jBX$($k%-!<(B:: @end menu @node $BF~NO%b!<%I$N@bL@(B @subsection $BF~NO%b!<%I$N@bL@(B @table @b @cindex $B$+$J%b!<%I(B @item $B!V$+$J%b!<%I!W(B $B%"%9%-!<>.J8;z$r$R$i$,$J$KJQ49$9$k%b!<%I!#(B $B%^%$%J!<%b!<%I$NI=<((B: @samp{$B$+$J(B} $B%+!<%=%k?'(B: $B@V7O(B @cindex $B%+%J%b!<%I(B @item $B!V%+%J%b!<%I!W(B $B%"%9%-!<>.J8;z$r%+%?%+%J$KJQ49$9$k%b!<%I!#(B $B%^%$%J!<%b!<%I$NI=<((B: @samp{$B%+%J(B} $B%+!<%=%k?'(B: $BNP7O(B @cindex $BA41Q%b!<%I(B @item $B!VA41Q%b!<%I!W(B $B%"%9%-!<>.J8;z!?BgJ8;z$rA43Q%"%k%U%!%Y%C%H(B@footnote{JIS X 0208 $B1Q;z$N$3$H!#(B $B$3$N%^%K%e%"%k$G$O!VA43Q%"%k%U%!%Y%C%H!W$HI=5-$9$k!#(B}$B$KJQ49$9$k%b!<%I!#(B $B%^%$%J!<%b!<%I$NI=<((B: @samp{$BA41Q(B} $B%+!<%=%k?'(B: $B2+7O(B @cindex $B%"%9%-!<%b!<%I(B @item $B!V%"%9%-!<%b!<%I!W(B $BJ8;z$rJQ49$7$J$$%b!<%I!#F~NO$5$l$?%-!<$O(B @kbd{C-j} $B$r=|$$$FDL>o$N(B Emacs $B$N(B $B%3%^%s%I$H$7$F2rH$7$F$/$@$5$$!#(B @node $BF~NO%b!<%I$r@Z$jBX$($k%-!<(B @subsection $BF~NO%b!<%I$r@Z$jBX$($k%-!<(B @table @kbd @item q $B!V$+$J%b!<%I!W!"!V%+%J%b!<%I!W4V$r%H%0%k$9$k!#(B @item l $B!V$+$J%b!<%I!WKt$O!V%+%J%b!<%I!W$+$i!V%"%9%-!<%b!<%I!W$X!#(B @item L $B!V$+$J%b!<%I!WKt$O!V%+%J%b!<%I!W$+$i!VA41Q%b!<%I!W$X!#(B @item C-j $B!V%"%9%-!<%b!<%I!WKt$O!VA41Q%b!<%I!W$+$i!V$+$J%b!<%I!W$X!#(B @end table $B@\%P%C(B $B%U%!$XF~NO$9$k%b!<%I!#F~NO%b!<%I$K1~$8$F%m!<%^;z$+$i$R$i$,$J!"%m!<%^;z$+(B $B$i%+%?%+%J!"$"$k$$$O%"%9%-!]$H$J$kJ8;zNs!V8+=P$78l!W$rF~NO$9$k%b!<%I!#(B @item $B!V"'%b!<%I!W(B $B8+=P$78l$K$D$$$F!"<-=qJQ49$r9T$&%b!<%I!#(B @end table $B$^$?!""&%b!<%I$NJQl9g!"%G%U%)%k%H$NF~NOJ}K!(B $B$O$$$o$f$k%m!<%^;zF~NO$G$9!#71Na<0!"%X%\%s<0$N$I$A$i$K$h$C$F$bF~NO$9$k$3(B $B$H$,$G$-$^$9!#8e$K(B @samp{n}$B!"(B @samp{y} $B0J30$N;R2;$,B3$/$H$-$O(B @kbd{n} $B$@$1$GF~NO$G$-$k!#(B @item $BB%2;$O!"(B@kbd{c h o t t o} @result{} @samp{$B$A$g$C$H(B}$B!"(B@kbd{m o p p a r a} @result{} @samp{$B$b$C$Q$i(B} $B$N$h$&$K.J8;z(B)$B$rC1FH$GF~NO$9$k$H$-$O!"(B@kbd{x a} @result{} @samp{$B$!(B}$B!"(B@kbd{x y a} @result{} @samp{$B$c(B} $B$J$I$N$h$&$K(B @kbd{x} $B$rMQ$$$k!#(B @item $BD92;$O!"(B@kbd{-} $B$GF~NO$9$k!#(B@kbd{-} @result{} @samp{$B!<(B}$B!#(B @end itemize @node $B"&%b!<%I(B @subsection $B"&%b!<%I(B @cindex $B<-=qJQ49BP>]$NJ8;zNs$N7hDj(B @cindex $B"&%b!<%I(B @b{$B!V"&%b!<%I!W(B}$B$G$O!"<-=qJQ49$NBP>]$H$J$kJ8;zNs$rF~NO$7$^$9!#$+$J%b!<%I!"(B $B$b$7$/$O%+%J%b!<%I(B@footnote{@xref{$BF~NO%b!<%I(B, , $B$+$J%b!<%I!"%+%J%b!<%I(B}.} $B$G!"$+$D!""#%b!<%I$G$"$k$H$-$K!"%-!]$H$J$kJ8;z(B $BNs!V8+=P$78l!W$rF~NO$7$^$9!#(B@samp{$B"&(B}$B%^!<%/$O!V"&%b!<%I$G$"$k!W(B $B$H$$$&I=<($G$9$,!"8+=P$78l$N3+;OE@$r<($9I=<($G$b$"$j$^$9!#(B @menu * $B8e$+$i"&%b!<%I$KF~$kJ}K!(B:: * $B"&%b!<%I$rH4$1$kJ}K!(B:: @end menu @node $B8e$+$i"&%b!<%I$KF~$kJ}K!(B @subsubsection $B8e$+$i"&%b!<%I$KF~$kJ}K!(B @cindex $B8e$+$i"&%b!<%I$KF~$kJ}K!(B @kindex Q $B<-=qJQ49$NBP>]$H$7$?$$J8;zNs$G$"$C$?$K$b4X$o$i$:!"@hF,$NJ8;z$rBgJ8;z$GF~NO$7K:$l$?>l(B $B9g$O!"$=$N0LCV$^$G%]%$%s%H(B@footnote{@xref{Point, ,$B%]%$%s%H(B, emacs, GNU Emacs Manual}.} $B$rLa$7$F$+$i(B @kbd{Q} $B$r%?%$%W$9$k$3$H$G!""&%b!<%I$KF~$k$3$H$,$G$-$^$9!#Nc$($P!"(B $B2<5-$N$h$&$KA`:n$7$^$9(B (@point{} $B$NCOE@$K%+!<%=%k$,$"$j$^$9(B)$B!#(B @example @kbd{k a n j i} @group ------ Buffer: foo ------ $B$+$s$8(B@point{} ------ Buffer: foo ------ @end group @kbd{C-u 3 C-b} @group ------ Buffer: foo ------ @point{}$B$+$s$8(B ------ Buffer: foo ------ @end group @kbd{Q} @group ------ Buffer: foo ------ $B"&(B@point{}$B$+$s$8(B ------ Buffer: foo ------ @end group @kbd{C-e} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @end example @cindex $B?t;z$+$i;O$^$k8+=P$78l$NF~NO(B @samp{7$B$,$D(B24$B$K$A(B} $B$N$h$&$KBgJ8;z$+$i;O$a$k$3$H$,$G$-$J$$J8;zNs$r8+=P$78l(B $B$H$7$?$$>l9g$O!"(B @kbd{Q} $B$r%?%$%W$7$F"&%b!<%I$K$7$F$+$i(B @samp{7$B$,$D(B24$B$K$A(B} $B$N(B $BJ8;zNs$rF~NO$7$^$9!#(B $B$J$*!""&%b!<%I$G$O!"J8;zNs$N4V$K6uGr$r4^$a$k$3$H$O$G$-$^$;$s!#(B $B$3$l$O!"<-=q%(%s%H%j$N8+=P$78l$K6uGr$r4^$a$k$3$H$,$G$-$J$$@)8B$+$i$-$F$$$^$9!#(B @node $B"&%b!<%I$rH4$1$kJ}K!(B @subsubsection $B"&%b!<%I$rH4$1$kJ}K!(B @kindex C-g @kindex C-j $B8m$C$F"&%b!<%I$KF~$C$F$7$^$C$?$H$-$O!"(B @kbd{C-j} $B$H%?%$%W$7$F"#%b!<%I$KLa(B $B$k$+!"(B @kbd{C-g} $B$H%?%$%W$7$F8+=P$78l$r>C5n$9$k$+!"$I$A$i$+$NJ}K!$,$"$j$^$9!#(B $B6qBNNc$r2<5-$K<($7$^$9!#(B @example @kbd{K a n j i} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @kbd{C-j} @group ------ Buffer: foo ------ $B$+$s$8(B@point{} ------ Buffer: foo ------ @end group @end example @noindent $B$"$k$$$O!"(B @example @kbd{K a n j i} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @kbd{C-g} @group ------ Buffer: foo ------ @point{} ------ Buffer: foo ------ @end group @end example @node $B"'%b!<%I(B @subsection $B"'%b!<%I(B @cindex Overlays @cindex $B%O%$%i%$%H(B @cindex $B0EL[$N3NDj(B @cindex $BJQ493+;O(B @b{$B!V"'%b!<%I!W(B} $B$G$O!""&%b!<%I$GF~NO$7$?8+=P$78l$r!"<-=q$K=>$C$FJQ49$9$k:n(B $B6H$r9T$$$^$9!#"&%b!<%I$G8+=P$78l$rF~NO$7$?8e$K(B @key{SPC} $B$r%?%$%W$9$k$3(B $B$H$G"'%b!<%I$KF~$j$^$9!#(B@samp{$B"&(B} $B%^!<%/$+$i(B @key{SPC} $B$r%?%$%W$7$?$H$-(B $B$N%]%$%s%H$^$G$NJ8;zNs$,8+=P$78l$H$7$F3NDj$5$l!"(B @samp{$B"&(B} $B%^!<%/$O(B @samp{$B"'(B} $B%^!<%/$GCV$-49$($i$l!"$3$N8+=P$78l$,<-=q$NCf$G8!:w$5$l$^$9!#(B @menu * $BAw$j2>L>$,L5$$>l9g(B:: * $BL>$,M-$k>l9g(B:: @end menu @node $BAw$j2>L>$,L5$$>l9g(B @subsubsection $BAw$j2>L>$,L5$$>l9g(B $B2>$K!"<-=q$K(B @example $B$+$s$8(B /$B4A;z(B/$B44;v(B/ @end example @noindent $B$H$$$&%(%s%H%j(B @footnote{$BK\%^%K%e%"%k$G$O!"8+=P$78l$H8uJd72$r9g$o$;$?0l9T$r!V%(%s%H%j!W(B $B$H8F$S$^$9!#>\:Y$O!"(B@ref{$BAw$j$"$j%(%s%H%j$HAw$j$J$7%(%s%H%j(B}$B$r;2>H$7$F$/(B $B$@$5$$!#(B}$B$r4^$`$H$7$F!"Nc$r<($7$^$9!#(B @example @kbd{K a n j i} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'4A;z(B@point{} ------ Buffer: foo ------ @end group @end example @noindent $B$3$NNc$G$O!""&%b!<%I$K$*$1$k(B @samp{$B"&(B} $B%^!<%/$+$i%]%$%s%H$^$G$N4V$NJ8;zNs(B @samp{$B$+$s$8(B} $B$r<-=qJQ49$NBP>]J8;zNs$H$7$F3NDj$7!"$=$l$K$D$$$F<-=qFb$G$N(B $B8!:w$r9T$C$F$$$^$9!#C$($^$9!#(B $B$^$?!"(B @kbd{C-j} $B$r%?%$%W$;$:$K?7$?$J3NDjF~NO$rB3$1$k$+Kt$O?7$?$JJQ49(B $B$r3+;O$9$k$H!"D>A0$NJQ49$O<+F0E*$K3NDj$5$l$^$9!#$3$l$r(B @b{$B!V0EL[$N3NDj!W(B} $B$H(B $B8F$s$G$$$^$9!#I{:nMQ$H$7$F3NDj$rH<$&%-!<$O!"0u;z2DG=$JJ8;z(B $BA4$F$H(B @key{RET} $B$G$9!#>\:Y$O(B @ref{$B0EL[$N3NDj$N%?%$%_%s%0(B} $B$r;2>H$7$F$/(B $B$@$5$$!#(B @node $Be$"$k$H$-$O!"#5HVL\0J9_$N8uJd$O#7$D$:$D$^$H$a$F%(%3!<%(%j(B $B%"$KI=<($5$l$^$9!#Nc$($P!"<-=q$,(B @example @group $B$-$g(B /$B5w(B/$B5p(B/$B5o(B/$B?~(B/$B13(B/$B5q(B/$B5r(B/$B5u(B/$B5s(B/$B5v(B/$B5t(B/$B?x(B/$B5n(B/ @end group @end example @noindent $B$H$$$&%(%s%H%j$r4^$`$H$-$K(B @kbd{K y o} $B$N8e$K(B @key{SPC} $B$r#52sB3$1$F(B $B%?%$%W$9$l$P(B @example @group -------------------- Echo Area -------------------- A:$B13(B S:$B5q(B D:$B5r(B F:$B5u(B J:$B5s(B K:$B5v(B L:$B5t(B [$B;D$j(B 2] -------------------- Echo Area -------------------- @end group @end example @noindent $B$,%(%3!<%(%j%"(B @footnote{$B%(%3!<%(%j%"$H%_%K%P%C%U%!$O;k3PE*$K$OF10l$N>l=j$K$"$j$^$9$,!"(B $B%(%3!<%(%j%"$,C1$K%f!<%6$X$N%a%C%;!<%8$rI=<($9$k$N$_$G$"$k$N$KBP$7!"%_(B $B%K%P%C%U%!$OFHN)$7$?%P%C%U%!$H$7$F5!G=$9$kE@$,0[$J$j$^$9!#(B}$B$KI=<($5$l$^$9!#(B $B$3$3$G2>$K(B @samp{$B5v(B} $B$rA*Br$7$?$1$l$P(B @kbd{k} $B$rF~NO$7$^$9!#(B @samp{A}, @samp{S}, @samp{D}, @samp{F}, @samp{J}, @samp{K}, @samp{L} $B$N(B $B3FJ8;z$O!"2!$70W$5$r9MN8$7$F%-!<%\!<%I$N%[!<%`%]%8%7%g%s$+$i2#J}8~$K0lD>(B $B@~$KG[CV$5$l$F$$$k%-!<$,A*$P$l$F$$$^$9!#$^$?!"8uJd$NA*Br$N$?$a$K2!$9%-!<(B $B$O!"BgJ8;z!">.J8;z$N$$$:$l$G$b9=$$$^$;$s!#8uJd$NA*Br$KMQ$$$k%-!<$NJQ99$K(B $B$D$$$F$O!"(B@w{@ref{$B8uJd$NA*Br$KMQ$$$k%-!<(B}} $B$r;2>H$7$F$/$@$5$$!#(B @key{SPC} $B$rO"BG$7$F$7$^$$5a$a$k8uJd$r8m$C$FDL2a$7$F$7$^$C$?$H$-$O(B @kbd{x} $B$r%?%$%W$9$l$PA08uJd!?A08uJd72$KLa$k$3$H$,$G$-$^$9(B @footnote{@samp{x} $B$O>.J8;z$GF~NO$9$kI,MW$,$"$j$^$9(B}$B!#(B $B8uJd$r\$7$/$O(B docstring $B$r;2>H$N$3$H!#(B @end defvr @node $BAw$j2>L>$,M-$k>l9g(B @subsubsection $BAw$j2>L>$,M-$k>l9g(B $BL>$N$"$kC18l$K$D$$$F@bL@$7$^$9!#(B @samp{$BF0$/(B} $B$rJQ49$K$h$j5a$a$?$$$H$-$O(B @kbd{U g o K u} $B$N$h$&$K!"$^$:(B $B"&(B $B%b!<%I(B $B$KF~$k$?$a$K(B @kbd{U} $B$rBgJ8;z$GF~NO$7!"L>$N3+;O$r(B DDSKK $B$K65$($k$?$a$K(B @kbd{K} $B$rBgJ8;z$GF~NO$7$^$9!#Aw$j2>L>$N(B @kbd{K} $B$r%?%$%W(B $B$7$?;~E@$G(B @key{SPC} $B$r%?%$%W$9$k$3$H$J$/!""'%b!<%I(B $B$KF~$j<-=qJQ49$,9T$o(B $B$l$^$9!#(B $BAw$j2>L>$NF~NO;~!J%m!<%^;z%W%l%U%#%C%/%9$,A^F~$5$l$?=V4V!K!"%W%l%U%#%C%/(B $B%9$ND>A0$K(B @samp{*} $B$r0l=VA^F~$7!"Aw$j2>L>$N3+;O;~E@$rL@<($7$^$9!#%W%l(B $B%U%#%C%/%9$KB3$/%-!C$($^$9!#(B $B%-!/$7>\$7$/@bL@$7$^$9!#(B @example @kbd{U g o} @group ------ Buffer: foo ------ $B"&$&$4(B@point{} ------ Buffer: foo ------ @end group @kbd{K} @group ------ Buffer: foo ------ $B"&$&$4(B*k@point{} ------ Buffer: foo ------ @end group @kbd{u} @group ------ Buffer: foo ------ $B"'F0$/(B@point{} ------ Buffer: foo ------ @end group @end example $B$3$N$h$&$K!"(BDDSKK $B$G$OAw$j2>L>$N3+;OCOE@$r%f!<%6$,L@<(E*$KF~NO$9$k$N$G!"(B $B%7%9%F%`B&$GAw$j2>L>$rJ,2r$9$kI,MW$,$"$j$^$;$s!#$3$l$K$h$j!"9bB.$G%R%C%H(B $B8zN($,9b$$JQ49$,2DG=$K$J$j$^$9!#(B@xref{$BAw$j2>L>$N<+F0=hM}(B}. $B$?$@$7!"%5JQF0;l$NJQ49$G$O!"%5JQF0;l$N8l44$H$J$kL>;l$r(B @b{$B!VAw$j$J$7JQ49!W(B} @footnote{$B>\:Y$O!"(B@ref{$BAw$j2>L>$,L5$$>l9g(B}$B$r;2>H$7$F$/$@$5$$!#(B} $B$H$7$FJQ49$7!"$=$N8e(B @samp{$B$9$k(B} $B$r"#%b!<%I$GF~NO$7$?J}$,8zN($,NI$/$J$j(B $B$^$9!#(B@xref{$B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B, , $B%5JQF0;l$NF~NO(B}. @node $B<-=qEPO?%b!<%I(B @subsection $B<-=qEPO?%b!<%I(B @cindex $B<-=qEPO?(B DDSKK $B$K$OFHN)$7$?<-=qEPO?%b!<%I$O$"$j$^$;$s!#$=$NBe$o$j!"<-=q$K$J$$C18l$K(B $B4X$7$FJQ49$r9T$C$?>l9g$K!"<+F0E*$K<-=qEPO?%b!<%I$KF~$j$^$9!#Nc$($P<-=q$K(B @example $B$X$s$+$s$A$e$&(B /$BJQ49Cf(B/ @end example @noindent $B$N%(%s%H%j$,$J$$>l9g$K!"(B@samp{$BJQ49Cf(B} $B$rF~NO$7$h$&$H$7$F!"(B@w{@kbd{H e n k a n t y u u @key{SPC}}} $B$H%?%$%W$9$k$H!"2<5-$N$h$&$K!"%+%l%s%H%P%C%U%!(B $B$O(B $B"'%b!<%I(B $B$N$^$^(B @samp{$B$X$s$+$s$A$e$&(B} $B$KBP$7$FJQ49$,$G$-$J$$>uBV$G5Y(B $B;_$7!"F1;~$K%_%K%P%C%U%!$K(B @samp{$B$X$s$+$s$A$e$&(B} $B$H$$$&%W%m%s%W%H$,I=<((B $B$5$l$^$9!#(B @example @group ------ Buffer: foo ------ $B"'$X$s$+$s$A$e$&(B ------ Buffer: foo ------ ------ Minibuffer ------- [$B<-=qEPO?(B] $B$X$s$+$s$A$e$&(B: @point{} ------ Minibuffer ------- @end group @end example @menu * $BAw$j2>L>$,L5$$>l9g$N<-=qEPO?(B:: * $BAw$j2>L>$,M-$k>l9g$N<-=qEPO?(B:: * $B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B:: * $B:F5"E*<-=qEPO?(B:: * $B2~9TJ8;z$r4^$`<-=qEPO?(B:: @end menu $B$b$A$m$s!"8m$C$FEPO?$7$?C18l$O:o=|$G$-$^$9!#(B (@w{@pxref{$B8m$C$?EPO?$N:o=|(B}}, @w{@pxref{$B8D?M<-=q%U%!%$%k$NJT=8(B}}) @defvr {$B%f!<%6JQ?t(B} skk-read-from-minibuffer-function $B$3$NJQ?t$K!VJ8;zNs$rJV$94X?t!W$r<}$a$k$H!"$=$NJ8;zNs$r<-=qEPO?%b!<%I$KF~(B $B$C$?$H$-$N%W%m%s%W%H$K=i4|I=<($7$^$9!#4X?t(B @code{read-from-minibuffer} $B$N(B $B0z?t(B INITIAL-CONTENTS $B$KAjEv$7$^$9!#(B @lisp @group (setq skk-read-from-minibuffer-function (lambda () skk-henkan-key)) @end group @end lisp @end defvr @defvr {$B%f!<%6JQ?t(B} skk-jisyo-registration-badge-face $BJQ?t(B @code{skk-show-inline} $B$,(B @code{non-nil} $B$G$"$l$P!"<-=qEPO?%b!<%I$K(B $B0\$C$?$3$H$rL@<($9$k$?$a$K%+%l%s%H%P%C%U%!$K!V(B@b{$B"-<-=qEPO?Cf"-(B}$B!W$H%$%s(B $B%i%$%sI=<($7$^$9!#$3$N!V"-<-=qEPO?Cf"-!W$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @node $BAw$j2>L>$,L5$$>l9g$N<-=qEPO?(B @subsubsection $BAw$j2>L>$,L5$$>l9g$N<-=qEPO?(B @noindent $B<-=qEPO?%b!<%I$G$O!"%-!$K<-=q$K(B @example @group $B$X$s$+$s(B /$BJQ49(B/ $B$A$e$&(B /$BCf(B/ @end group @end example @noindent $B$N$h$&$J%(%s%H%j$,$"$k$H$7$F!"%_%K%P%C%U%!$G(B @samp{$BJQ49Cf(B} $B$NJ8;zNs$r(B @samp{$BJQ49(B} $B$H(B @samp{$BCf(B} $B$H$KJ,$1$F:n$j$^$9!#(B @example @group @kbd{H e n k a n @key{SPC} T y u u @key{SPC}} ----------- Minibuffer ------------ [$B<-=qEPO?(B] $B$X$s$+$s$A$e$&(B: $BJQ49"'Cf(B@point{} ----------- Minibuffer ------------ @end group @end example @cindex $B0EL[$N3NDj(B @noindent $B$3$3$G(B @key{RET} $B$r%?%$%W$9$l$P(B @samp{$BJQ49Cf(B} $B$,8D?M<-=q$KEPO?$5$l!"<-=q(B $BEPO?%b!<%I$O=*N;$7$^$9(B @footnote{$B$3$3$G$O!V0EL[$N3NDj!W$,9T$o$l$k$N$G(B @kbd{C-j} $B$r%?%$%W$9$kI,MW(B $B$O$"$j$^$;$s!#$?$@$7!"(B@ref{$B"'%b!<%I$G$N(BRET} $B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B $BF1;~$K!"JQ49$r9T$C$F$$$k%+%l%s%H%P%C%U%!$K$O(B @samp{$BJQ49Cf(B} $B$,A^F~$5$l3NDj(B $B$5$l$^$9!#(B@xref{$B<-=q$NL>$,M-$k>l9g$N<-=qEPO?(B @subsubsection $BAw$j2>L>$,M-$k>l9g$N<-=qEPO?(B $BAw$j2>L>$N$"$kC18l$NEPO?$G$O!"%_%K%P%C%U%!$G:n$k8uJd$KAw$j2>L>$=$N$b$N$r(B $BEPO?$7$J$$$h$&$KCm0U$7$J$1$l$P$$$1$^$;$s!#2>$K<-=q$K(B @example $B$&$4(Bk /$BF0(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$J$$$H$7$F!"Nc$r5s$2$F@bL@$7$^$9!#(B @example @group @kbd{U g o K u} @end group @group ------ Buffer: foo ------ $B"'$&$4$/(B ------ Buffer: foo ------ ------ Minibuffer ------- [$B<-=qEPO?(B] $B$&$4(B*$B$/(B: @point{} ------ Minibuffer ------- @end group @end example @noindent $B%_%K%P%C%U%!$G<-=qEPO?$9$Y$-J8;zNs$O(B @samp{$BF0(B} $B$@$1$G$"$j!"Aw$j2>L>$N(B @samp{$B$/(B} $B$O4^$a$F$O$$$1$^$;$s!#(B @samp{$BF0$/(B} $B$HEPO?$7$F$7$^$&$H!"(B $BL>$N%A%'%C%/$r9T$$$^$9!#(B $B%7%s%\%k(B @code{ask} $B$r@_Dj$9$l$P!"%f!<%6$K3NG'$r5a$a!"Aw$j2>L>$HG'$a$i$l(B $B$l$PAw$j2>L>$r!L>$r(B $BH=CG$7$F:o=|$7$F$+$iEPO?$7$^$9!#(B @end defvr @node $B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B @subsubsection $B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B @cindex $B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B $B%5JQF0;l!JL>;l$N8e$K(B @samp{$B$9$k(B} $B$rIU$1$?7A$G9=@.$5$l$kF0;l!K$K$D$$$F$O(B @samp{$B$9$k(B} $B$rAw$j2>L>$H$7$?Aw$j$"$jJQ49(B (@w{@pxref{$BAw$j2>L>$,M-$k>l9g(B}}) $B$r$7$J$$$G!"(B@samp{$B1?F0(B} $B$H(B @samp{$B$9$k(B} $B$H$KJ,$1$FF~NO$9$k$3$H$rA0Ds$H$7$F(B $B$$$^$9!#(B@footnote{@file{SKK-JISYO.L} $B$J$I6&M-<-=q$N%a%s%F%J%s%9>e!"86B'$H(B $B$7$F%5JQF0;l$rAw$j$"$j%(%s%H%j$KDI2C$7$F$$$^$;$s!#$=$N$?$a!"(B@samp{$B$9$k(B} $B$r(B $BAw$j2>L>$H$7$?Aw$j$"$jJQ49$G$O!"<-=q$K8uJd$,$J$/<-=qEPO?%b!<%I$KF~$C$F$7(B $B$^$&$N$G!"L>;l$H$7$FJ,2r$7$FF~NO$9$k$3$H$,0lHLE*$G$9!#$?$@$7!"(BDDSKK 13 $B0J(B $B9_$G$O;CDjE*$K%5JQF0;l$NAw$j$"$jJQ49$r2DG=$K$9$k5!G=$rMQ0U$7$^$7$?!#(B (@w{@pxref{$B%5JQF0;lJQ49(B}})} $BNc$($P(B @samp{$B1?F0$9$k(B} $B$O(B @kbd{U n d o u @key{SPC} s u r u} $B$H%?%$%W$9$k(B $B$3$H$K$h$jF~NO$G$-$^$9!#L>;l$+$i:n$i$l$k7AMF;lEy$bF1MM$G$9!#(B @node $B:F5"E*<-=qEPO?(B @subsubsection $B:F5"E*<-=qEPO?(B @cindex $B:F5"E*<-=qEPO?(B $B%_%K%P%C%U%!$r:F5"E*$K;H$C$F<-=qEPO?$r:F5"E*$K9T$&$3$H$,$G$-$^$9!#(B $B2>$K<-=q$K(B @example @group $B$5$$$-$F$-(B /$B:F5"E*(B/ $B$5$$$-(B /$B:F5"(B/ @end group @end example @noindent $B$N$h$&$J%(%s%H%j$,$J$/!"$+$D(B @example @group $B$5$$(B /$B:F(B/ $B$-(B /$B5"(B/ $B$F$-(B /$BE*(B/ @end group @end example @noindent $B$N$h$&$J%(%s%H%j$,$"$k$H$7$^$9!#(B $B$3$3$G(B @kbd{S a i k i t e k i @key{SPC}} $B$H%?%$%W$9$k$H!"8+=P$78l(B @samp{$B$5(B $B$$$-$F$-(B} $B$KBP$9$k8uJd$r8+$D$1$i$l$J$$$N$G!"%_%K%P%C%U%!$K(B @samp{$B$5$$$-(B $B$F$-(B} $B$H$$$&%W%m%s%W%H$rI=<($7$F<-=qEPO?%b!<%I$KF~$j$^$9!#(B @samp{$B$5$$$-$F$-(B} $B$KBP$9$k<-=q%(%s%H%j$r:n$k$?$a(B @kbd{S a i k i @key{SPC}} $B$H%?%$%W$9$k$H!"99$K$3$N8uJd$b8+$D$1$i$l$J$$$N$G!"%_%K%P%C%U%!$K(B @samp{$B$5$$$-(B} $B$H$$$&%W%m%s%W%H$rI=<($7$F!":F5"E*$K(B @samp{$B$5$$$-(B} $B$N<-=q(B $BEPO?%b!<%I$KF~$j$^$9!#(B @kbd{S a i @key{SPC} K i @key{SPC}} $B$H%?%$%W$9$k$H!"%_%K%P%C%U%!$O!"(B @example ------ Minibuffer ------- [[$B<-=qEPO?(B]] $B$5$$$-(B: $B:F"'5"(B ------ Minibuffer ------- @end example @noindent $B$H$J$j$^$9!#%W%m%s%W%H$,(B @samp{[[$B<-=qEPO?(B]]} $B$H$J$j!"(B@samp{[]} $B$,$R$H$DA}(B $B$($F$$$^$9$,!"$3$N(B @samp{[]} $B$N?t$,:F5"E*$J<-=qEPO?%b!<%I$N?<$5$rI=$o$7$F(B $B$$$^$9!#$3$3$G(B @key{RET} $B$r%?%$%W$9$k$H!"8D?M<-=q$K$O(B @example $B$5$$$-(B /$B:F5"(B/ @end example @noindent $B$H$$$&%(%s%H%j$,EPO?$5$l!"%_%K%P%C%U%!$O(B @samp{$B$5$$$-$F$-(B} $B$N<-=qEPO?%b!<(B $B%I$KLa$j!"%W%m%s%W%H$O(B @samp{$B$5$$$-$F$-(B} $B$H$J$j$^$9!#(B $B:#EY$O(B @samp{$B:F5"(B} $B$,JQ492DG=$J$N$G(B @kbd{S a i k i @key{SPC} T e k i @key{SPC}} $B$H%?%$%W$9$k$H!"(B @example ------ Minibuffer ------- [$B<-=qEPO?(B] $B$5$$$-$F$-(B: $B:F5""'E*(B ------ Minibuffer ------- @end example @noindent $B$H$J$j$^$9!#$3$3$G(B @key{RET} $B$r%?%$%W$9$k$3$H$G!"(B@samp{$B$5$$$-$F$-(B} $B$N<-(B $B=qEPO?%b!<%I$+$iH4$1!"8D?M<-=q$K(B @example $B$5$$$-$F$-(B /$B:F5"E*(B/ @end example @noindent $B$H$$$&%(%s%H%j$,EPO?$5$l$^$9!#%+%l%s%H%P%C%U%!$N%]%$%s%H$K$O!"(B@samp{$B:F5"(B $BE*(B} $B$,A^F~$5$l$^$9!#(B @node $B2~9TJ8;z$r4^$`<-=qEPO?(B @subsubsection $B2~9TJ8;z$r4^$`<-=qEPO?(B @kindex C-q C-j @cindex $B2~9TJ8;z$r4^$`J8;zNs$N<-=qEPO?(B $B2~9TJ8;z$r4^$`J8;zNs$r<-=q$KEPO?$9$k$K$O!"<-=qEPO?%b!<%I$G2~9TJ8;z$r(B @kbd{C-q C-j} $B$K$h$jF~NO$7$^$9!#Nc$($P!"(B @example @group $B")(B980 $B@gBf;T@DMU6hJRJ?(B2-1-1 $BElKLBg3XEE5$DL?.8&5f=j(B @end group @end example @noindent $B$r<-=q$KEPO?$9$k$K$O!"<-=qEPO?%b!<%I$G!"(B @example @group @samp{$B")(B980} @kbd{C-q C-j} @samp{$B@gBf;T@DMU6hJRJ?(B2-1-1} @kbd{C-q C-j} @samp{$BElKLBg3XEE5$DL?.8&5f=j(B} @key{RET} @end group @end example @noindent $B$HF~NO$7$^$9!#(B @node $B%$%s%/%j%a%s%?%k!&%5!<%A(B @section $B%$%s%/%j%a%s%?%k!&%5!<%A(B @cindex @file{isearch.el} @cindex I-search @cindex Incremental search DDSKK $B$G$O!"@lMQ$N%$%s%/%j%a%s%?%k!&%5!<%A%W%m%0%i%`$r(B Emacs $BE:IU$N(B @file{isearch.el} $B$N%i%C%Q!<$H$7$Fo$N%P%C%U%!$K$*$1$k3FF~NO%b!<(B $B%I!"JQ49%b!<%I$G$NF~NOJ}K!$HF10l$G$9!#(B @kindex C-r @kindex C-s @kindex M-C-s @kindex M-C-r @kbd{C-s} $B$d(B @kbd{C-r}$B!"$"$k$$$O(B @kbd{M-C-s} $B$d(B @kbd{M-C-r} $B$G%$%s%/%j%a(B $B%s%?%k!&%5!<%A$r5/F0$9$k$H!"%$%s%/%j%a%s%?%k!&%5!<%A$r5/F0$7$?%P%C%U%!$N(B $BF~NO%b!<%I$HF10l$NF~NO%b!<%I$G!"%-!<$H$J$kJ8;z$NF~NO$,2DG=$H$J$j$^$9!#(B @node skk-isearch$B$HF~NO%b!<%I(B @subsection skk-isearch$B$HF~NO%b!<%I(B @vindex skk-isearch-mode-string-alist $BF~NO%b!<%I$K9g$o$;$F!"%$%s%/%j%a%s%?%k!&%5!<%A$N%W%m%s%W%H$,I=<($5$l$^$9!#(B $B%W%m%s%W%H$Nl9g$O!"$3$N%W%m%s%W%H$,I=<($5$l$^$9!#(B @end table @node $B%A%e!<%H%j%"%k(B @section $B%A%e!<%H%j%"%k(B @cindex $B%A%e!<%H%j%"%k(B @vindex skk-tut-file @findex skk-tutorial @kindex M-x skk-tutorial DDSKK $B$K$O!"4pK\E*$JA`:nJ}K!$r3X=,$G$-$k%A%e!<%H%j%"%k$,ImB0$7$F$$$^$9!#(B $BF|K\8lHG%A%e!<%H%j%"%k$O(B @kbd{M-x skk-tutorial} $B$G!"1Q8lHG%A%e!<%H%j%"%k$O(B @kbd{C-u M-x skk-tutorial @key{RET} English @key{RET}} $B$Gl=j$KCV$+$l$F$$$J$$>l9g$O!"(B @file{~/.emacs} $B$G(B @lisp (setq skk-tut-file "/usr/local/share/skk/SKK.tut") @end lisp @noindent $B$H=q$/$3$H$K$h$j!";XDj$7$?%A%e!<%H%j%"%k%U%!%$%k$r;HMQ$5$;$k$3$H$,(B $B$G$-$^$9!#1Q8lHG$N%A%e!<%H%j%"%k%U%!%$%k$O!"(B @samp{skk-tut-file} $B$K(B @file{.E} $B$,IU$$$?%U%!%$%kL>$G$9!#$3$N>l9g$G$"$l$P!"(B @file{/usr/local/share/skk/SKK.tut.E} $B$K$J$j$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tut-lang $B%A%e!<%H%j%"%k$GMQ$$$k8@8l$rJ8;zNs!J(B@code{"Japanese"} $BKt(B $B$O(B @code{"English"}$B!K$G;XDj$7$^$9!#(B $B$3$NJQ?t$h$j$b(B @kbd{C-u M-x skk-tutorial} $B$K$h$k8@8l;XDj$,M%@h$5$l$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tut-use-face @code{Non-nil} $B$G$"$l$P!"%A%e!<%H%j%"%k$G(B face $B$rMxMQ$7$FI=<($9$k!#(B @end defvr @node $BJXMx$J1~MQ5!G=(B @chapter $BJXMx$J1~MQ5!G=(B @menu $BM=HwCN<1(B * $B%U%!%$%k9=@.(B:: $B1~MQ5!G=$r;H$$$3$J$9$?$a$NM=HwCN<1!#(B * $B%f!<%6%*%W%7%g%s$N@_DjJ}K!(B:: @noindent $BF~NO4X78(B * $B%+%?%+%J!"1Q;zF~NO$NJXK!(B:: $B$3$l$H $B!V$+$7$?$s$]$;$-$K$s!W(B * $BJXMx$JJQ49!"$=$NB>$NJQ49(B:: $BC14A;z!"@\F,<-!"4A?t;z!"Ey!9!#(B @noindent $BMM!9$J@_Dj(B * $B%-!<@_Dj(B:: $B%m!<%^;z$N%k!<%k$J$I$bJQ99$G$-$^$9!#(B * $BJQ49!"3NDj$NA08e(B:: $B8mJQ49$ND{@5!"0lH/3NDj!"3NDj$N%?%$%_%s%0$J$I(B * $BAw$j2>L>4XO"(B:: $BAw$j2>L>$N=hM}$K$D$$$F!#(B * $B8uJd$N=g=x(B:: $B4XO"$N$"$k8l$O>e0L$KI=<($J$I!"8zN($r5a$a$F(B * $B<-=q4XO"(B:: $B<-=q$K$^$D$o$k@_Dj5Z$S5!G=!#(B @noindent $BB>(B * $BCm~$j$D$1(B:: $BMM!9$JI=<($N@_Dj!#(B * $B%f!<%6%,%$%@%s%94XO"(B:: * I-search$B4XO"(B:: $B%$%s%/%j%a%s%?%k!&%5!<%A$K$^$D$o$k5!G=!#(B * VIP/VIPER$B$H$NJ;MQ(B:: * picture-mode$B$H$NJ;MQ(B:: picture-mode $B$H$NJ;MQ$N:]$NLdBjE@!#(B * Org-mode$B$H$NJ;MQ(B:: Org-mode $B$H$NJ;MQ$N:]$NLdBjE@!#(B @end menu @node $B%U%!%$%k9=@.(B @section $B%U%!%$%k9=@.(B @cindex @file{ccc.el} @cindex @file{leim-list.el} @cindex @file{skk.el} SKK $B$N4pK\E*$J5!G=$O!"(B@file{skk.el} $B$K<}$a$i$l$F$$$^$9!#0lJ}!"(B DDSKK $B$G1~MQ5!G=$rDs6!$9$k%W%m%0%i%`$N$[$H$s$I$O(B @file{skk.el} $B$H(B $B$OJL$N%U%!%$%k$K<}$a$F$$$^$9!#$3$l$i$O!"I,MW$K1~$8$F%*!<%H%m!<%I$9$k$h$&(B $B$K@_7W$5$l$F$$$^$9!#3F1~MQ5!G=$N35N,$H3:Ev$N%U%!%$%kL>$K$D$$$F@bL@$7$^$9!#(B @cindex @file{skk-vars.el} $B$^$?!"(BDDSKK $B$NJQ?t$O(B @file{skk-vars.el} $B$K=8Ls$5$l$F$$$^$9$N$G!"%+%9%?%^(B $B%$%:$7$?$$>l9g$J$I$K$O!"$3$N%U%!%$%k$r8+$k$H;29M$K$J$k$+$b$7$l$^$;$s!#(B @table @file @item context-skk.el @cindex @file{context-skk.el} $BJT=8$NJ8L.$K1~$8$F<+F0E*$K(B skk $B$N%b!<%I$r@Z$jBX$($?$j!"(BSKK $B$N3FL>$N<+F0=hM}$r9T$&%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BAw$j2>L>$N<+F0=hM}(B}. @item skk-autoloads.el @cindex @file{skk-autoloads.el} $B%*!<%H%m!<%I$N@_Dj$r5-=R$7$?%U%!%$%k!#(B@code{register-input-method} $B$b9T$&!#(B @xref{$B$O$8$a$N@_Dj(B}. XEmacs $B$G(B DDSKK $B$r%Q%C%1!<%8$H$7$F%$%s%9%H!<%k$7$?>l9g(B $B$O(B @file{auto-autoloads.el} $B$H$$$&%U%!%$%k$,$3$l$KAjEv$7$^$9!#(B @item skk-azik.el @cindex @file{skk-azik.el} $B3HD%%m!<%^;zF~NO(B "AZIK" $B$N@_Dj$rDs6!$7$^$9!#(B @xref{AZIK}. @item skk-bayesian.el @cindex @file{bayesian/skk-bayesian.el} SKK $B$N3X=,5!G=$N$R$H$D$G!"%f!<%6$N2a5n$NF~NO$+$iJQ498uJd$rM=B,$7$^$9!#(B @url{http://openlab.jp/skk/skk/main/bayesian/README.ja} @item skk-cdb.el @cindex @file{skk-cdb.el} CDB $B7A<0<-=q%U%!%$%k$r<-=q%5!<%P$J$7$KD>@\MxMQ$G$-$k%W%m%0%i%`!#(B @xref{$B:G$b4pK\E*$J@_Dj(B}. @item skk-comp.el @cindex @file{skk-comp.el} $B8+=P$78l$NJd40$r9T$&%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BJd40(B}. @item skk-cursor.el @cindex @file{skk-cursor.el} $B%+!<%=%k$N?'$r@)8f$9$k%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B}. @item skk-cus.el @cindex @file{skk-cus.el} @kbd{M-x customize-group} $B$K$h$kBPOCE*$J@_DjJQ995!G=$N4J0WHG$rDs6!$7$^$9!#(B @xref{Customize $B$K$h$k@_DjJQ99(B}. @item skk-dcomp.el @cindex @file{skk-dcomp.el} skk-comp $B$K$h$kJd40$r<+F0E*$K(B: @file{skk-e21.el}$B!K(B GNU Emacs 21 $B0J9_$N3HD%5!G=$rMxMQ$9$k%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B $B%$%s%8%1!<%?$N%+%i!<2=$d2hA|I=<(!"%D!<%k%F%#%C%WMxMQ$J$I!#(B @item skk-gadget.el @cindex @file{skk-gadget.el} $B%W%m%0%i%`3Q%+%J!#0J23Q(B $B%+%J!W$H5-=R$7$^$9!#(B}$B$rMxMQ$9$k5!G=$rDs6!$7$^$9!#(B @item skk-jisx0213.el @cindex @file{skk-jisx0213.el} JIS X 0213 $BJ8;z=89g$r07$&%W%m%0%i%`$G$9!#$3$N5!G=$O(B Emacs 23 $B$G$OI8=`$G(B $BMxMQ$G$-$^$9!#$=$lL$K~$N%P!<%8%g%s$N(B Emacs $B$K$*$$$F$O!"(BMule-UCS $B$rF3F~$9(B $B$k$J$I$NBP:v$,I,MW$G$9!#(BMule-UCS $B$K$D$$$F$O(B @uref{http://tats.haun.org/mule-ucs/, Mule-UCS Unofficial Site} $B$r;2>H(B $B$7$F$/$@$5$$!#(B @item skk-jisyo-edit-mode.el @cindex @file{skk-jisyo-edit-mode.el} SKK $B<-=q$rJT=8$9$k$?$a$N%a%8%c!<%b!<%I$rDs6!$7$^$9!#(B @item skk-kakasi.el @cindex @file{skk-kakasi.el} KAKASI $B%$%s%?!<%U%'%$%9%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BNN0h$NA`:n(B}. @item skk-kanagaki.el @cindex @file{skk-kanagaki.el} $B%-!<%\!<%I$N$+$JG[Ns$J$I$KBP1~$9$kOHAH$_$rDs6!$7$^$9!#(B $B8=CJ3,$G$O5l(B JIS $BG[Ns$N$+$J%-!<%\!<%I5Z$S(B NICOLA $B5,3J$N?F;X%7%U%HG[(B $BNs$KBP1~$7$F$$$^$9!#(B @xref{$B$+$JF~NO$H?F;X%7%U%H(B}. @item skk-kcode.el @cindex @file{skk-kcode.el} $BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO$r9T$&%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO(B}. @item skk-leim.el @cindex @file{skk-leim.el} LEIM $B4XO"%W%m%0%i%`%U%!%$%k!#(BDDSKK $B$r(B Emacs $B$N(B input method $B$H$7$FMxMQ$G(B $B$-$k$h$&$K$7$^$9!#(B @xref{DDSKK $B$r(B Emacs $B$N(B Input Method $B$H$9$k(B}. @item skk-look.el @cindex @file{skk-look.el} @command{look} $B%3%^%s%I$H$N%$%s%?!<%U%'%$%9%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{skk-look}. @item skk-lookup.el @cindex @file{skk-lookup.el} Lookup $B$G8!:w$G$-$k<-=q$r;H$C$FC18l$N8uJd$r=PNO$9$k%W%m%0%i%`!#(B @xref{skk-lookup}. @item skk-macs.el @cindex @file{skk-macs.el} $BB>$N%U%!%$%k$G6&DL$7$F;HMQ$9$k%^%/%m$J$I$rCf?4$K$^$H$a$?%U%!%$%k!#(B @item skk-num.el @cindex @file{skk-num.el} $B?tCMJQ49$r9T$&%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$B?tCMJQ49(B}. @item skk-server-completion.el @cindex @file{skk-server-completion.el} $B3HD%$5$l$?<-=q%5!<%P$K$h$k8+=P$78lJd405!G=$rMxMQ$G$-$^$9!#(B @xref{$B%5!<%P%3%s%W%j!<%8%g%s(B}. @item skk-server.el @cindex @file{skk-server.el} $B<-=q%5!<%P$HDL?.$7$FJQ49$9$k5!G=$rDs6!$7$^$9!#(B @xref{$B%5!<%P4XO"(B}. @item skk-setup.el @cindex @file{skk-setup.el} $B<+F0E*$K8D?M@_Dj$r9T$&$?$a$N%U%!%$%k!#(B @xref{$B$O$8$a$N@_Dj(B}. @item skk-show-mode.el @cindex @file{skk-show-mode.el} $B%+!<%=%kIU6a$KF~NO%b!<%I$rI=<($9$k5!G=$rDs6!$7$^$9!#(B @xref{$BF~NO%b!<%I$r@Z$jBX$($k%-!<(B}. @item skk-sticky.el @cindex @file{skk-sticky.el} $BJQ493+;O0LCV5Z$SAw$j3+;O0LCV$N;XDjJ}K!$rJQ992DG=$K$9$k!#(B @xref{$BJQ490LCV$N;XDjJ}K!(B}. @item skk-study.el @cindex @file{skk-study.el} $BD>A0$K3NDj$7$?$$$/$D$+$N8l$H$N4XO"@-$r3NG'$7!"8uJd=g$rA`:n$9$k3X=,8z2L(B $B$rDs6!$9$k%W%m%0%i%`!#(B @xref{$BJQ49$N3X=,(B}. @item skk-tankan.el @cindex @file{skk-tankan.el} SKK $B$r;H$C$FC14A;zJQ49$r9T$&%W%m%0%i%`$G$9!#(B @xref{$BC14A;zJQ49(B}. @item skk-tut.el @cindex @file{skk-tut.el} SKK $B%A%e!<%H%j%"%k%W%m%0%i%`!#(B @xref{$B%A%e!<%H%j%"%k(B}. @item skk-tutcode.el @cindex @file{skk-tutcode.el} SKK $B$G(B TUT-code $BF~NO$rpJs$rDs6!$9$k%W%m%0%i%`%U%!%$%k!#(B @item skk-viper.el @cindex @file{skk-viper.el} VIPER $B%$%s%?!<%U%'%$%9%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{VIP/VIPER$B$H$NJ;MQ(B}. @item skk-xemacs.el @cindex @file{skk-xemacs.el} XEmacs $B$N3HD%5!G=$rMxMQ$9$k%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B $B%$%s%8%1!<%?$N%+%i!<2=$d2hA|I=<(!"%D!<%k%F%#%C%WMxMQ$J$I!#(B @end table $B$J$*!"(BElib $B$h$j(B @file{queue-m.el} $B%U%!%$%k$r<}O?$7$F$$$^$9!#(B @cindex @file{queue-m.el} @node $B%f!<%6%*%W%7%g%s$N@_DjJ}K!(B @section $B%f!<%6%*%W%7%g%s$N@_DjJ}K!(B @cindex @file{~/.emacs} @cindex @file{~/.emacs.d/init.el} @cindex @file{~/.xemacs/init.el} @cindex @file{~/.skk} DDSKK $B$N%+%9%?%^%$%:$O!"(B@file{~/.emacs} $B$"$k$$$O(B @file{~/.skk} $B$K5-=R$7(B $B$^$9!#$^$?!"3F%U%!%$%k$NDs6!$9$k%U%C%/$bMxMQ$7$^$9!#>e5-$N%U%!%$%k$d%U%C(B $B%/$rMxMQ$7$?@_Dj$,$$$DM-8z$K$J$k$N$+!"$H$$$&E@$K$D$$$F$3$3$G@bL@$7$^$9(B @footnote{$B0JA0$N%P!<%8%g%s$G$O!"$I$N$h$&$J%+%9%?%^%$%:$,9T$o$l$F$$$k>l9g(B $B$G$b%A%e!<%H%j%"%k;HMQ;~$KI8=`@_Dj$KLa$9L\E*$G!"JQ?t$N@k8@$K(B @code{defconst} $B$r;HMQ$7$F$$$?$N$G!"A4$F$N%+%9%?%^%$%:$O(B @file{~/.skk} $B$G9T$&I,MW$,$"$j$^$7$?$,!"(BDDSKK 11 $B0J9_$G$O!"(B@code{defcustom} $B$r;HMQ$7$?(B $B@k8@$r9T$C$F$$$k$N$G!"$3$N@)8B$O$J$/$J$j$^$7$?!#(B}$B!#(B @menu * $B@_Dj%U%!%$%k(B:: * $B%U%C%/(B:: * Customize $B$K$h$k@_DjJQ99(B:: $B$3$N%^%K%e%"%k$G2r@b$5$l$F$$$J$$JQ?t$b@_Dj$G$-$^$9!#(B * skk-customize $B$K$h$k@_DjJQ99(B:: @end menu @node $B@_Dj%U%!%$%k(B @subsection $B@_Dj%U%!%$%k(B @table @file @item ~/.emacs @itemx ~/.emacs.d/init.el @itemx ~/.xemacs/init.el Emacs $B$r5/F0$7$?$H$-$K0lEY$@$1FI$_9~$^$l$^$9!#(B $B$3$N%^%K%e%"%k$O(B @file{~/.emacs} $B$H$$$&5-=R$GE}0l$7$F$$$^$9!#(B @xref{Init File, ,.emacs, emacs, GNU Emacs Manual}. @item ~/.skk DDSKK $B$r5/F0$7$?:G=i$N0lEY$@$1FI$_9~$^$l$^$9!#%U%!%$%kL>$N%G%U%)%k%H$O!"(BOS $B$N$OJQ?t(B @code{skk-init-file} $B$GJQ99$9$k$3$H$,$G(B $B$-$^$9!#$^$?!"(BDDSKK $B$K$O$3$N%U%!%$%k$r<+F0E*$K%P%$%H%3%s%Q%$%k$9$k5!G=$,(B $B$"$j$^$9!#(B @xref{skk-init-file$B$N<+F0%3%s%Q%$%k(B}. @end table @defvr {$B%f!<%6JQ?t(B} skk-user-directory DDSKK $B$O!"(B@file{~/.skk} $B$d(B @file{~/.skk-jisyo} $B$H$$$C$?J#?t$N%U%!%$%k$r(B $B;HMQ$7$^$9!#$3$l$i$N%U%!%$%k$r$R$H$D$N%G%#%l%/%H%j$K$^$H$a$FCV$-$?$$>l9g(B $B$O!"JQ?t(B @code{skk-user-directory} $B$K$=$N%G%#%l%/%H%jL>$r@_Dj$7$^$9!#(B $B$3$NJQ?t$N%G%U%)%k%H$O(B @code{nil} $B$G$9!#$3$NJQ?t$O(B @file{~/.emacs} $B$G@_Dj(B $B$7$F$/$@$5$$!#(BDDSKK $B5/F0;~$K(B @code{skk-user-directory} $B$,;X$9%G%#%l%/%H%j(B $B$,B8:_$7$J$$>l9g$O!"<+F0E*$K:n$i$l$^$9!#(B @lisp (setq skk-user-directory "~/.ddskk") @end lisp $B$3$NJQ?t$r@_Dj$7$?>l9g!JNc$($P>e5-(B @code{~/.ddskk}$B!K!"0J2<$K5s$2$k3FJQ(B $B?t$N%G%U%)%k%HCM$,JQ99$5$l$^$9!#(B @example @group $B1F6A$rl9g$G$b!"3FJQ?t$r8DJL$K@_Dj$7(B $B$F$$$k>l9g$O$=$N8DJL$N@_Dj$,M%@h$5$l$^$9!#(B @end defvr @menu * skk-init-file$B$N<+F0%3%s%Q%$%k(B:: @end menu @node skk-init-file$B$N<+F0%3%s%Q%$%k(B @subsubsection skk-init-file$B$N<+F0%3%s%Q%$%k(B @defvr {$B%f!<%6JQ?t(B} skk-byte-compile-init-file @cartouche @smallformat $B$3$3$G$O(B @itemize @minus @item $B!V(BDDSKK $B$N@_Dj%U%!%$%k!W$r(B @code{el} $B$H!"(B @item $B!V(BDDSKK $B$N@_Dj%U%!%$%k$r%P%$%H%3%s%Q%$%k$7$?%U%!%$%k!W$r(B @code{elc} $B$H(B @end itemize $B$=$l$>$l8F$V$3$H$H$7$^$9!#(B @end smallformat @end cartouche DDSKK $B$N5/F0;~$K!"(B @itemize @bullet @item $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"(B @itemize @minus @item @code{elc} $B$,B8:_$7$J$$$+!"Kt$O(B @item @code{elc} $B$h$j$b(B @code{el} $B$,?7$7$$$H$-(B @end itemize $B$O!"(B@code{el} $B$r%P%$%H%3%s%Q%$%k$7$?(B @code{elc} $B$r@8@.$7$^$9!#(B @item $B$3$NJQ?t$NCM$,(B @code{nil} $B$G$"$l$P!"(B @code{elc} $B$h$j$b(B @code{el} $B$,?7$7$$$H$-$O!"(B@code{elc} $B$r>C5n$7$^$9!#(B @end itemize $B0J>e$N5!G=$rM-8z$K$7$?$$>l9g$O!"(B@file{~/.emacs} $B$K(B @lisp (setq skk-byte-compile-init-file t) @end lisp @noindent $B$H5-=R$7$^$9!#$3$NJQ?t$O(B @file{~/.skk} $B$,FI$_9~$^$l$kA0$KD4$Y$i$l$k$?(B $B$a!"(B@file{~/.skk} $B$K>e5-$N@_Dj$r5-=R$7$F$b$3$N5!G=$OM-8z$K$J$j$^$;$s!#(B @end defvr @node $B%U%C%/(B @subsection $B%U%C%/(B @table @code @item skk-mode-hook @vindex skk-mode-hook @kbd{C-x C-j} $B$HF~NO$7$F(B SKK $B%b!<%I$KF~$kEY$K8F$P$l$^$9!#8e$K8F$P$l$k%U%C%/!#(B @end table @findex eval-after-load @code{load-hook} $B$,Ds6!$5$l$F$$$J$$%W%m%0%i%`$G$"$C$F$b!"%m!<%I40N;8e$K2?$i$+(B $B$N@_Dj$r9T$$$?$$>l9g$O!"4X?t(B @code{eval-after-load} $B$r;HMQ$7$^$9!#Nc$((B $B$P!"(B @lisp @group (eval-after-load "skk-look" '( @dots{} )) @end group @end lisp @noindent $B$N$h$&$K5-=R$7$^$9!#(B @node Customize $B$K$h$k@_DjJQ99(B @subsection Customize $B$K$h$k@_DjJQ99(B @cindex Customize Emacs $BI8=`$N(B Customize $B5!G=$r;H$C$F(B SKK $B$r@_Dj$9$k$3$H$b$G$-$^$9!#(B $B$?$@$7!"(B Customize $B$G$N@_Dj$O(B @file{~/.emacs} $B$G$N@_Dj$HF1MM!"(B @file{~/.skk} $B$K$h$k@_Dj$G>e=q$-$5$l$F$7$^$$$^$9$N$GCm0U$7$F$/$@$5$$!#(B @kindex M-x customize-group @kindex M-x skk-emacs-customize @kbd{M-x customize-group} $B$rH$7$F$/$@$5$$!#(B @display @xref{Easy Customization, , Easy Customization, emacs, GNU Emacs Manual}. @end display skk $B$G@_Dj$G$-$kJQ?t$NCf$K$O!"$^$@$3$N%^%K%e%"%k$G2r@b$5$l$F$$$J$$$b$N$b(B $B$"$j$^$9!#(B Customize $B$r;H$&$H!"$=$l$i$K$D$$$F$bCN$k$3$H$,$G$-$^$9!#(B @node skk-customize $B$K$h$k@_DjJQ99(B @subsection skk-customize $B$K$h$k@_DjJQ99(B @kindex M-x skk-customize $BA0=R$N!V(BEmacs $BI8=`$N(B Customize $B5!G=(B (@kbd{M-x customize-group}) $B!W$K$h$k(B $B@_Dj$,J#;($9$.$k$H46$8$k%f!<%6$N$?$a$K!"4J0WHG$H$7$F(B @kbd{M-x skk-customize} $B$r(B $BMQ0U$7$F$$$^$9!#$3$l$O(B SKK $B%0%k!<%W$N%f!<%6%*%W%7%g%s$N$&$A!"$h$/;H$&$b$N(B $B$@$1H4?h$7$F@_Dj$G$-$k$h$&$K$7$?$b$N$G$9!#(B $B$3$l$O!"%b!<%I%i%$%s$N(B SKK $B%$%s%8%1!<%?$r%^%&%9$N1&%\%?%s!JBh#3%\%?%s!K$G(B $B%/%j%C%/$7$FI=<($5$l$k%a%K%e!<$+$i(B ``SKK $B$r%+%9%?%^%$%:(B ($B4J0WHG(B)'' $B$rA*$s(B $B$G8F$S=P$9$3$H$b$G$-$^$9!#(B @node $B%+%?%+%J!"1Q;zF~NO$NJXK!(B @section $B%+%?%+%J!"1Q;zF~NO$NJXK!(B $B$3$N@a$G$O!"%+%?%+%J$dA41QJ8;z$rF~NO$9$k$?$a$N!"JXMx$JJ}K!$r@bL@$7$^$9!#(B $BC1=c$K3F%b!<%I$rMQ$$$kJ}K!$K$D$$$F$OA0=R$7$^$7$?!#(B (@w{@pxref{$BF~NO%b!<%I(B, , $B%+%J%b!<%I!"A41Q%b!<%I(B}}) @menu * $B$+$J%b!<%I$+$i%+%?%+%J$rF~NO(B:: * $BA41QJ8;z$NF~NO(B:: * $BNN0h$NA`:n(B:: $BNN0h$NCf$NJ8;zeO$r=q$/$H$-$K!"$=$NETEY(B @kbd{q} $B%-!<$r2!$7$FF~NO(B $B%b!<%I$r@Z$j49$($kI,MW$,$"$j$^$;$s(B @footnote{$BA41QJ8;z$H%"%9%-!$NBgJ8;z$K$h$j"&(B $B%b!<%I$KF~$k$3$H$,$G$-$J$$$N$G!"$+$J(B $B"N(B $B%+%J(B $B$N$H$-$HF1MM$K%H%0%kJQ49$G(B $B$-$k$o$1$G$O$"$j$^$;$s!#$+$J%b!<%I(B/$B%+%J%b!<%I$K$*$$$F!"4{$KF~NO$5(B $B$l$?A41QJ8;z!"%"%9%-!]$H$7$?%3%^%s%I$G$b!V$+$J"+"*%+%J!W$N%H%0%kJQ49$r9T$&$3$H$,$G$-(B $B$^$9!#(B(@w{@pxref{$BNN0h$NA`:n(B}}) @node $BA41QJ8;z$NF~NO(B @subsection $BA41QJ8;z$NF~NO(B @kindex / @kindex C-q $B$^$:!"$+$J%b!<%I$KF~$j$^$9!#$NJQ49$HF1MM!"(B @key{SPC} $B$r2!$9$HJQ49%b!<%I$KF~$C$F$7$^$$$^$9$N$G!"(B SKK abbrev $B%b!<%I$+(B $B$i%"%9%-!l9g0J30$OITJX$G$9!#(B (@w{@pxref{$B%"%9%-!H$;$:$K%"(B $B%9%-!l9g$O(B @command{kakasi} $B$rMxMQ$9$k5!G=$,3%?'$K$J$j;HMQ$G$-$^$;$s!#(B @w{@xref{Menu Bars, ,$B%a%K%e!<%P!<(B, emacs, GNU Emacs Manual}.}}$B!#(B @table @kbd @item M-x skk-hiragana-region @kindex M-x skk-hiragana-region @findex skk-hiragana-region $B%+%?%+%J$r$R$i$,$J$XJQ49!#(B @item M-x skk-katakana-region @kindex M-x skk-katakana-region @findex skk-katakana-region $B$R$i$,$J$r%+%?%+%J$XJQ49!#(B @item M-x skk-latin-region @kindex M-x skk-latin-region @findex skk-latin-region $BA41QJ8;z$r%"%9%-!R2p$9$k!V4A;z$+$iFI$_$r5a$a$k%3%^%s%I!W$O!"30It%W%m%0%i%`(B @command{KAKASI} @footnote{@uref{http://kakasi.namazu.org/, KAKASI - $B4A;z"*$+$J(B($B%m!<%^;z(B)$BJQ49%W%m%0%i%`(B}} $B$,I,MW$G$9!#(B @command{KAKASI} $B$,%$%s%9%H!<%k$5$l$F$$$J$1$l$P;HMQ$9$k$3$H$,$G$-$^$;$s!#(B @table @kbd @item M-x skk-gyakubiki-region @kindex M-x skk-gyakubiki-region @findex skk-gyakubiki-region $B4A;z$r$R$i$,$J$XJQ49!#6qBNE*$JJQ49Nc$r$"$2$k$H!"(B @example ``$B4A;z$r$R$i$,$J$XJQ49!#(B''@expansion{}``$B$+$s$8$r$R$i$,$J$X$X$s$+$s!#(B'' @end example @noindent $B$N$h$&$K$J$j$^$9!#0z?t$rEO$7$F!"(B @kbd{C-u M-x skk-gyakubiki-region} $B$N$h$&$K$9$k$H!"J#?t$N8uJd$,$"$k>l9g$K!"(B`@{@}' $B$G0O$C$FI=<($7$^$9!#Nc$((B $B$P(B @example ``$BCfEg(B''@expansion{}``@{$B$J$+$7$^(B|$B$J$+$8$^(B@}'' @end example @noindent $B$N$h$&$K$J$j$^$9!#(B $BAw$j2>L>$,$"$k8l$O!"Aw$j2>L>$^$G4^$a$FNN0h$K;XDj$7$^$9(B ($B$5$b$J$$$H8mJQ49(B $B$N860x$H$J$j$^$9(B)$B!#(B $BNc$($P!"(B@samp{$B8^7nGh$$(B} $B$K$D$$$F!"Aw$j2>L>(B @samp{$B$$(B} $B$r4^$a$:$K$3$N%3%^%s%I$rl9g$K!"(B`@{@}' $B$G0O$C$FI=<($7$^$9!#(B @item M-x skk-hurigana-region @kindex M-x skk-hurigana-region @findex skk-hurigana-region $B4A;z$K$U$j$,$J$rIU$1$k!#Nc$($P!"(B @example ``$B4A;z$NOF$K(B''@expansion{}``$B4A;z(B[$B$+$s$8(B]$B$NOF(B[$B$o$-(B]$B$K(B'' @end example @noindent $B$N$h$&$K$J$j$^$9!#0z?t$rEO$7$F(B @kbd{C-u M-x skk-hurigana-region} $B$N$h$&(B $B$K$9$k$H!"J#?t$N8uJd$,$"$k>l9g$K!"(B`@{@}' $B$G0O$C$FI=<($7$^$9!#(B @item M-x skk-hurigana-katakana-region @kindex M-x skk-hurigana-katakana-region @findex skk-hurigana-katakana-region $B4A;z$K%+%?%+%J$N$U$j$,$J$rIU$1$k!#(B $B0z?t$rEO$7$F!"(B@kbd{C-u M-x skk-hurigana-katakana-region} $B$N$h$&$K$9$k$H!"(B $BJ#?t$N8uJd$,$"$k>l9g$K!"(B`@{@}' $B$G0O$C$FI=<($7$^$9!#(B @item M-x skk-romaji-region @kindex M-x skk-hurigana-region @findex skk-romaji-region $B4A;z!"$R$i$,$J!"%+%?%+%J$r%m!<%^;z$X!"A41QJ8;z$r%"%9%-!]$H$9$k$3$H$,$G$-$^$9!#(B @lisp (setq skk-gyakubiki-jisyo-list (list skk-jisyo)) @end lisp @end defvr @defvr {$B%f!<%6JQ?t(B} skk-romaji-*-by-hepburn $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!"(B $B%3%^%s%I(B @code{skk-romaji-@{region|message@}} $B$K$h$k%m!<%^;z$X$NJQ49MM<0(B $B$K71Na<0$rMQ$$$^$9!#%G%U%)%k%H$O(B @code{t} $B$G$9!#(B $BNc$($P!"(B @example ``$B$7(B'' @expansion{} ``si'' @end example @noindent $B$N$h$&$K$J$j$^$9(B @footnote{$B>l9g$O!"$^$:8+=P$78l$r$R$i$,$J$KJQ49$7$F$+$i<-(B $B=q$N8!:w$KF~$k$h$&@_7W$5$l$F$$$^$9!#$J$*!"$3$N>l9g$NAw$j$"$jJQ49$G$NAw(B $B$j2>L>$O!"%+%?%+%J$K$J$j$^$9!#(B @node $BJ8L.$K1~$8$?<+F0%b!<%I@Z$jBX$((B @subsection $BJ8L.$K1~$8$?<+F0%b!<%I@Z$jBX$((B @cindex $BJ8L.$K1~$8$?<+F0%b!<%I@Z$jBX$((B @cindex @file{context-skk.el} @kindex M-x context-skk-mode @file{context-skk.el} $B$O!"JT=8Cf$NJ8L.$K1~$8$F(B SKK $B$NF~NO%b!<%I$r<+F0E*$K(B $B%"%9%-!<%b!<%I$K@Z$jBX$($kEy$N5!G=$rDs6!$7$^$9!#(B @file{context-skk.el} $B$r%m!<%I$9$k$K$O!"(B@file{~/.emacs} $B$K(B @lisp @group (add-hook 'skk-load-hook (lambda () (require 'context-skk))) @end group @end lisp $B$H=q$$$F$/$@$5$$!#(B $B$"$k%W%m%0%i%_%s%08@8l$N%W%m%0%i%`$r=q$$$F$$$k$H$-!"F|K\8lF~NO$NI,MW$,$"(B $B$k$N$O0lHL$K!"$=$N%W%m%0%i%_%s%08@8l$NJ8;zNsCf$+%3%a%s%HCf$K8B$i$l$^$9!#(B $B$?$H$($P(B Emacs Lisp $B$GF|K\8lF~NO$NI,MW$,$"$k$N$O(B @lisp @group "$BJ8;zNs(B" ;; $B%3%a%s%H(B @end group @end lisp $B$H$$$C$?8D=j$@$1$G$7$g$&!#(B $BJ8;zNs!&%3%a%s%H$N!V30!W$rJT=8$9$k$H$-$O!"B?$/$N>l9g$OF|K\8lF~NO$OI,MW$"(B $B$j$^$;$s!#(B $B8=:_$NJ8;zNs!&%3%a%s%H$N!V30!W$GJT=83+;O$HF1;~$K!J(Bskk $B$,%*%s$G$"$l$P!K(B skk $B$NF~NO%b!<%I$r%"%9%-!<%b!<%I$K@Z$jBX$($^$9!#(B $B%(%3!<%(%j%"$K(B @example @group -------------------- Echo Area -------------------- [context-skk] $BF|K\8lF~NO(B off -------------------- Echo Area -------------------- @end group @end example $B$HI=<($5$l!"%"%9%-!<%b!<%I$K@Z$jBX$o$C$?$3$H$,J,$+$j$^$9!#(B $B$3$l$K$h$j!"J8;zNs!&%3%a%s%H$N!V30!W$G$NJT=8$r3+;O$9$k$K$"$?$C$F!"F|K\8l(B $BF~NO$,(B on $B$K$J$C$F$$$?$?$a$KH/@8$9$kF~NO8m$j$H$=$N=$@5A`:n$r2sHr$9$k$3$H(B $B$,$G$-$^$9!#(B $B>e5-$N5!G=$O(B context-skk-mode $B$H$$$&%^%$%J!<%b!<%I$H$7$Fl9g!"%b!<%I%i%$%s$N%a%8%c!<%b!<%IL>$NNY$K!V(B;$B"&!W$HI=<($5$l$^$9!#(B @defvr {$B%f!<%6JQ?t(B} context-skk-programming-mode context-skk $B$,!V%W%m%0%i%_%s%0%b!<%I!W$H8+Pv$9%a%8%c!<%b!<%I!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} context-skk-mode-off-message $B%"%9%-!<%b!<%I$K@Z$jBX$o$C$?=V4V$K%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8!#(B @end defvr @node $BJd40(B @section $BJd40(B @cindex $B8+=P$78l$NJd40(B @cindex $BFI$_$NJd40(B @cindex $BJd40(B $BFI$_$NA0H>$@$1$rF~NO$7$F(B @key{TAB} $B$r2!$;$P;D$j$r<+F0E*$KJd$C$F$/$l$k!"(B $B$3$l$,Jd40$G$9!#(B Emacs $B%f!<%6$K$O$*$J$8$_$N5!G=$,(B DDSKK $B$G$b;H$($^$9!#(B @menu * $BFI$_$NJd40(B:: $B!V$+$+!W(B + Tab -> $B!V$+$+$_$,$O$i$7!W(B ! * $BJd40$7$J$,$iJQ49(B:: $B!V$+$7$?$s!W(B + M-SPC -> $B!V`laSC4J]@UG$!W(B !! * $BF0E*Jd40(B:: $BF~NO$7$J$,$i8uJd$rI=<((B @end menu $B$h$/;H$&D9$$8l$r8zN(NI$/F~NO$9$k$K$O!"%"%k%U%!%Y%C%H$NN,8l$rEPO?$9$kJ}K!$b$"$j$^$9!#(B (@w{@pxref{$B%"%9%-!(B $BA0$K"&%b!<%I$GF~NO$5$l$?J8;zNs$r(B X $B$H8F$V$3$H$K$7$^$9!#$3$N$H$-!"8D?M<-=q(B $B$NAw$j$J$7%(%s%H%j$NCf$+$i!V@hF,$,(B X $B$H0lCW$7!W$+$D!VD9$5$,(B X $B$h$j$bD9$$(B $B8+=P$78l!W$r8!:w$7$F!"$=$N$h$&$J8l$,3:Ev$9$l$P(B X $B$NBe$o$j$KI=<($7$^$9!#(B}$B!#(B $B8+=P$78lJd40$O!"8D?M<-=q$NFb!"Aw$j$J$7%(%s%H%j$KBP$7$F9T$o$l$^$9!#(B $B8D?M<-=q$K8B$C$F$$$k$N$O!"6&M-<-=q$G$O@hF,$NJ8;z$r6&DL$K$9$k8+=P$78l$,B?$9$.$F!"(B $BK>$_$NJd40$,9T$($k3NN($,Dc$$$?$a$G$9!#(B @kindex , @kindex . $Be0L$KMh$k$h$&$K$J$C$F$$$k$?$a$G$9!#(B@footnote{@ref{$B<-=q$N=q<0(B}} $B$$$C$?$s(B @key{SPC} $B$rF~NO$7$F"'%b!<%I$KF~$k$H!"0J8e$O8+=P$78lJd40$O9T$o$l$^$;$s!#(B @kindex @kbd{C-u @key{TAB}} $B$^$?!"(B@kbd{.} $B$NBe$o$j$K(B @kbd{C-u @key{TAB}} $B$rF~NO(B $B$9$k$H!"8=:_$N8uJd$KBP$7$FJd40$r$7$^$9!#>e$NNc$G$O(B @samp{$B$5(B} $B$KBP$7!"(B @samp{$B$5$H$&(B} $B$,Jd40$5$l$?;~$K(B @kbd{C-u @key{TAB}} $B$r2!$9$H!"(B $B0J8e$NJd40$O!"(B@samp{$B$5$H$&(B} $B$r4^$`8l(B ($BNc$($P!"(B@samp{$B$5$H$&$;$s$;$$(B}$B$J$I(B) $B$K$D$$$F9T$o$l$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-comp-circulate @kbd{.} $B!J%T%j%*%I!K$G$K$"$j$^$;$s!W$H%(%3!<%(%j%"$KI=<($7$FF0:n$,;_(B $B$^$j$^$9!#$3$NJQ?t$,(B @code{non-nil} $B$G$"$l$PEv=i$N8+=P$78l$r:F$SI=<($7$F(B $B8+=P$78lJd40$r:F3+$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-try-completion-char $B8+=P$78lJd40$r3+;O$9$k%-!<%-%c%i%/%?$G$9!#%G%U%)%k%H$O(B @key{TAB} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-next-completion-char $B(B $B$NJd40$r9T$$$^$9!#(B @lisp @group (add-to-list 'skk-completion-prog-list '(skk-comp-lisp-symbol) t) @end group @end lisp @end defun @node $BJd40$7$J$,$iJQ49(B @subsection $BJd40$7$J$,$iJQ49(B @kindex M-@key{SPC} $BA0@a$G8+=P$78l$NJd40$K$D$$$F=R$Y$^$7$?!#K\@a$G$O!"8+=P$78l$NJd40F0:n$r9T(B $B$C$?8e!"(B@key{SPC} $B$rF~NO$7!""'%b!<%I$KF~$k$^$G$NF0:n$r0l2s$NA`:n$G9T(B $B$&J}K!$K$D$$$F@bL@$7$^$9!#(B $B$d$jJ}$O4JC1!#(B@key{TAB}$B!&(B@key{SPC} $B$HBG80$7$F$$$?$H$3$m$r(B @kbd{M-@key{SPC}} $B$K(B $B49$($k$H!"8+=P$78l$rJd40$7$?>e$GJQ49$r3+;O$7$^$9!#(B $B$3$NJ}K!$K$h$k$H!"Jd40$5$l$k8+=P$78l$,$"$i$+$8$aJ,$+$C$F$$$k>u67$G$O!"%-!<(B $BF~NO$r0l2sJ,>JN,$G$-$k$N$G!"FI$_$,D9$$8+=P$78l$NC18l$rO"B3$7$FF~NO$9$k>l9g(B $B$J$I$K0RNO$rH/4x$7$^$9!#(B @example @group @kbd{K a s i t a n n p o s e k i n i n n} ------ Buffer: foo ------ $B"&$+$7$?$s$]$;$-$K$s(B@point{} ------ Buffer: foo ------ @end group @group @key{SPC}, @key{RET} ------ Buffer: foo ------ $B`laSC4J]@UG$(B@point{} ------ Buffer: foo ------ @end group @group @kbd{K a} ------ Buffer: foo ------ $B"&$+(B@point{} ------ Buffer: foo ------ @end group @group @kbd{M-@key{SPC}} ------ Buffer: foo ------ $B"'`laSC4J]@UG$(B@point{} ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-start-henkan-with-completion-char $B%G%U%)%k%H$O(B @kbd{M-@key{SPC}} $B$G$9!#(B @end defvr @node $BF0E*Jd40(B @subsection $BF0E*Jd40(B @cindex @file{skk-dcomp.el} $B"&%b!<%I$G$O!"(B@key{TAB} $B$r2!$5$J$/$H$b!"J8;z$rF~NO$9$kETEY!"<+F0E*$K8+(B $B=P$78lJd40$NFI$_$rI=<($5$;$k;v$,$G$-$^$9!#$3$N5!G=$r0J2H$7$FJd40$7$h$&$H$9$k5!G=(B}$B$r%$%a!<%8$9$k$HJ,$+$j$d$9$$$+$bCN$l(B $B$^$;$s!#F0E*Jd40$b!"8D?M<-=q$NAw$j$J$7%(%s%H%j$KBP$7$F$N$_9T$J$o$l$^$9!#(B $BF0E*Jd40$rMxMQ$9$k$K$O(B @file{~/.skk} $B$KuBV$+$i(B @key{SPC} $B$r2!$7$FJQ49$9$k$J$j!"(B@kbd{q} $B$r2!$7$F%+%?%+%J$K(B $B$9$k$J$j!"(BDDSKK $BK\Mh$NF0:n$r2?$G$b9T$&$3$H$,$G$-$^$9!#(B $BJd40$5$l$?8+=P$78l$,<+J,$N0U?^$7$?$b$N$G$J$$>l9g$O!"$+$^$o$:uBV$,<+J,$N0U?^$7$?$b$N$G$"$k>l9g$b!"Jd40$5$l$?ItJ,$rC1$KL5(B $B;k$9$k$@$1$G(B OK $B$G$9!#2<5-$NNc$G$O!"(B@samp{$B$[(B} $B$r8+=P$78l$H$7$?JQ49$r9T$C(B $B$F$$$^$9!#(B @example @group @kbd{H o} ---------------- Buffer: foo ------------------ $B"&$[(B@point{}$B$s$H$&(B ---------------- Buffer: foo ------------------ @key{SPC} ---------------- Buffer: foo ------------------ $B"'J](B ---------------- Buffer: foo ------------------ @end group @end example $BJd40$5$l$?>uBV$+$i(B @key{BS} $B$r2!$9$H!">C$5$l$?Jd40A0$N8+=P$78l$+$i:FEYJd(B $B40F0:n$r9T$$$^$9!#(B @example @group @kbd{H o} ---------------- Buffer: foo ------------------ $B"&$[(B@point{}$B$s$H$&(B ---------------- Buffer: foo ------------------ @kbd{k a} ---------------- Buffer: foo ------------------ $B"&$[$+(B@point{}$B$s(B ---------------- Buffer: foo ------------------ @key{BS} ---------------- Buffer: foo ------------------ $B"&$[(B@point{}$B$s$H$&(B ---------------- Buffer: foo ------------------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-dcomp-activate $B$3$NJQ?t$NCM$,(B @code{Non-nil} $B$G$"$l$P!"%+!<%=%k0LCV$K4X$o$i$:>o$KF0E*Jd40$,M-8z$H$J$j$^$9!#(B $BCM$,%7%s%\%k(B @code{eolp} $B$G$"$l$P!"%+!<%=%k$,9TKv$K$"$k$H$-$K8B$C$FF0E*Jd40$,M-8z$H$J$j$^$9!#(B $BCM$,(B @code{nil} $B$G$"$l$P!"F0E*Jd405!G=$OL58z$H$J$j$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-face $B$3$NJQ?t$NCM$O%U%'%$%9$G$"$j!"$3$N%U%'%$%9$K$h$C$FF0E*$KJd40$5$l$?ItJ,$,(B $BAu>~$5$l$^$9!#I8=`$O(B ``DarkKhaki'' $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-activate @b{XEmacs $B$G$OF0:n$7$^$;$s!#(B} @code{Non-nil} $B$G$"$l$P!"F0E*Jd40$N8uJd$r%$%s%i%$%s$KJ#?tI=<($7$^$9(B @footnote{$B8=:_$O8uJd72$N1&B&(B1$B%+%i%`$N%U%'%$%9$,%G%U%)%k%H$KLa$k!"$H$$$&@)Ls$,$"$j$^$9!#(B}$B!#(B @example @group ---------------- Buffer: foo ------------------ $B"&$[(B@point{}$B$s$H$&(B $B!!$[$s$H$&(B $B!!$[$+$s(B $B!!$[$C$+$$$I$&(B $B!!$[$&$[$&(B $B!!(B@dots{} ---------------- Buffer: foo ------------------ @end group @end example @kindex @key{TAB} @kindex , @kindex . @kindex SHIFT TAB $B8uJd$NA*Br$K$O(B @key{TAB} $BKt$O(B @kbd{@key{SHIFT}+@key{TAB}} $B$r2!$7$^$9!#$^$?!"(B $BIaDL$NJd40$HF1MM$K(B @kbd{.} ($B%T%j%*%I(B) $B$H(B @kbd{,} ($B%3%s%^(B) $B$bMxMQ$G$-$^(B $B$9!#(B@w{@ref{$BFI$_$NJd40(B}} @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-rows $BF0E*Jd40$N8uJd$rJ#?tI=<($9$k>l9g$NI=<(9T?t!#I8=`$O(B 7$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-face $BF0E*Jd40$NJ#?tI=<(72$N%U%'%$%9!#>e5-Nc$G$O!V$[!W$N%U%'%$%9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-trailing-face $BF0E*Jd40$NJ#?tI=<(74$NJd40ItJ,$N%U%'%$%9!#>e5-Nc$G$O!V$s$H$&!W!"!V$+$s!W(B $B!V$C$+$$$I$&!W!"!V$&$[$&!W$N%U%'%$%9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-selected-face $BF0E*Jd40$NJ#?tI=<(74$NA*BrBP>]$N%U%'%$%9!#>e5-Nc$G$O(B @key{TAB} $B$r2!$9$?$S(B $B$K!V$[$s$H$&!W!"!V$[$+$s!W!"!V$[$C$+$$$I$&!W$HA*Br0LCV$,0\$j$^$9!#$=$N8=:_(B $BA*Br0LCV$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @node $BJXMx$JJQ49!"$=$NB>$NJQ49(B @section $BJXMx$JJQ49!"$=$NB>$NJQ49(B @menu * $BC14A;zJQ49(B:: $B0lJ8;z$@$14A;z$KJQ49(B * $B8uJd$N9J$j9~$_(B:: $B!V$o!W$@$1$I!Vr2;VOA?MEA!W$N!VOA!W$,M_$7$$(B * $B@\F,<-!&@\Hx<-(B:: $B@\F,<-!&@\Hx<-$@$1$rJQ49(B * $B?tCMJQ49(B:: $B?t$r4^$`J8;zNs$NJQ49!#(B * $B%"%9%-! $B!V%o!<%-%s%0%0%k!<%W!W(B * $B:#F|$NF|IU$NF~NO(B:: $B:#F|$NF|IU$r0lH/F~NO!#(B * $B%W%m%0%i%`:=g$G%=!<%H$7$FI=<($7$^$9!#(B @menu * $B8!:w%-!<$N@_Dj(B:: * $B<-=q$N@_Dj(B:: * $BAm2h?t$K$h$kC14A;zJQ49(B:: * $BIt(B;9$B2h(B($BL\It(B4$B2h(B) L:$BC@(B;9$B2h(B($BFyIt(B5$B2h(B) [$B;D$j(B 50+++++] ----- Buffer: *$B8uJd(B* ----- @end group @end example $B0J>e$N$H$*$j!"Am2h?t$N>:=g$G%=!<%H$5$l$?8uJd$,l9g$O!"(B@code{skk-search-prog-list} $B$N(B $B@hF,$NMWAG$O(B @code{skk-search-kakutei-jisyo-file} $B$G$J$1$l$P$$$1$^$;$s$N$G!"(B @code{skk-search-prog-list} $B$N#2HVL\$NMWAG$K(B @code{skk-tankan-search} $B$rDI2C$7$^$9!#(B @lisp @group ;; skk-search-prog-list $B$N#2HVL\$NMWAG$K(B skk-tankan-search $B$rDI2C$9$k(B (setq skk-search-prog-list (cons (car skk-search-prog-list) (cons '(skk-tankan-search 'skk-search-jisyo-file skk-large-jisyo 10000) (cdr skk-search-prog-list)))) @end group @end lisp $B$J$*!"3NDjJQ49$r;HMQ$7$J$$>l9g$O!"(B @code{skk-search-prog-list} $B$NMWAG(B $B$N@hF,$,(B @code{skk-tankan-search} $B$G$bBg>fIW$G$9!#(B @lisp @group (add-to-list 'skk-search-prog-list '(skk-tankan-search 'skk-search-jisyo-file skk-large-jisyo 10000)) @end group @end lisp @xref{$B<-=q$N8!:wJ}K!$N@_Dj(B}. @node $BAm2h?t$K$h$kC14A;zJQ49(B @subsubsection $BAm2h?t$K$h$kC14A;zJQ49(B @cindex $B2h?tJQ49(B @kindex C-u $BAm2h?t(B M-x skk-tankan $B"&%b!<%I$GAm2h?t$rF~NO$7$F:G8e$K(B @kbd{@@} $B$rIU2C$7$F$+$iJQ49$r3+;O$7$^$9(B @footnote{@kbd{C-u $BAm2h?t(B M-x skk-tankan} $B$G$b2D!#(B}$B!#(B @example Q 1 0 @@ @group ----- Buffer: foo ----- $B"&(B10@@@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: *$B8uJd(B* ----- A:$B7p(B;10$B2h(B($B?MIt(B8$B2h(B) S:$B7q(B;10$B2h(B($B?MIt(B8$B2h(B) D:$B8D(B;10$B2h(B($B?MIt(B8$B2h(B) F:$B8u(B;10$B2h(B($B?MIt(B8$B2h(B) J:$B8v(B;10$B2h(B($B?MIt(B8$B2h(B) K:$B on a completion to select it. In this buffer, type RET to select the completion near point. Possible completions are: 001 $B0l(B ($B$$$A(B) 002 $B!C(B ($B$\$&!"$?$F$\$&(B) 003 $BP&(B ($B$F$s(B) 004 $BP((B ($B$N(B) 005 $B25(B ($B$*$D(B) 006 $BP-(B ($B$O$M$\$&(B) $B!'(B $B!'(B ------ *Completions* ------- @end group @kindex M-v @kbd{0 1 8 @key{RET}} @footnote{@kbd{M-v} $B$NBG80$G!"%+!<%=%k$r(B *Completions* $B%P%C%U%!$X0\$9$3$H$b$G$-$^$9!#(B} @group ----- Buffer: *$B8uJd(B* ----- A:$B@Z(B;4$B2h(B($BEaIt(B2$B2h(B) S:$B4"(B;4$B2h(B($BEaIt(B2$B2h(B) D:$B4)(B;5$B2h(B($BEaIt(B3$B2h(B) F:$BQd(B;5$B2h(B($BEaIt(B3$B2h(B) J:$BQf(B;6$B2h(B($BEaIt(B4$B2h(B) K:$B7:(B;6$B2h(B($BEaIt(B4$B2h(B) L:$BQe(B;6$B2h(B($BEaIt(B4$B2h(B) [$B;D$j(B 51+++++++] ----- Buffer: *$B8uJd(B* ----- @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-tankan-face @kbd{M-x skk-tankan} $B$rA0$N>.!9@a!VIt$NFI$_!W(B($B%R%s%H(B)$B$rM?$($k$H8uJd$O(B ``$B4VF;(B'' $B$K0l0U$K7h$^$j$^$9!#(B $B%R%s%H$O(B @kbd{;} $B$KB3$1$FF~NO$7$^$9!#(B @example @kbd{K a n d o u ; a i d a} $B"((B @samp{;} $B<+BN$OI=<($5$l$^$;$s!#(B ----- Buffer: foo ----- $B"&$+$s$I$&$"$$$@(B ----- Buffer: foo ----- @key{SPC} ----- Buffer: foo ----- $B"'4VF;(B ----- Buffer: foo ----- @end example @file{skk-hint.el} $B$O!"#2$D$NFI$_$N87L)$J@Q=89g$ro$NJQ498uJd$N$J$+$G%R%s%H$H$7$FM?$($i$l$?FI$_$r4^$s$@4A;z$r;}$D$b$N$K(B $B8uJd$r9J$j$^$9!#$3$Nl9g$K!"$=$3$+$i8uJd$r9J(B $B$j$3$`o$KM-8z$G$9!#Nc$($P(B @example $B"&$o(B @end example $B$rJQ49$9$k$H!"NX!"4D!"OC!"OB!"1)!"(B@dots{}$B$HBgNL$K8uJd$,=P$F$-$^$9!#(B $B$3$NCf$+$i(B ``$BOB(B'' $B$rA*$S$?$$$H$7$^$9!#IaDL$KJQ49$7$F$$$F$b(B $B$=$N$&$A(B ``$BOB(B'' $B$,I=<($5$l$^$9$,!"$3$l$r(B @kbd{W a ; h e i w a} $B$HF~NO$7(B $BJQ49$9$k$H!"!V"'$X$$$o!W$N8uJd$G$"$k!VJ?OB!W$K4^$^$l$k(B @example $B"'OB(B @end example $B$,M#0l$N8uJd$H$J$j$^$9!#(B @example @kbd{W a ; h e i w a} ----- Buffer: foo ----- $B"&$o$X$$$o(B ----- Buffer: foo ----- @key{SPC} ----- Buffer: foo ----- $B"'OB(B ----- Buffer: foo ----- @end example @defvr {$B%f!<%6JQ?t(B} skk-hint-start-char $B%R%s%HJQ49$r3+;O$9$k%-!<$r(B character $B$G;XDj$7$^$9!#(B @end defvr @node $B@\F,<-!&@\Hx<-(B @subsection $B@\F,<-!&@\Hx<-(B @cindex $B@\F,<-(B @cindex $B@\Hx<-(B $B@\F,<-(B (prefix)$B!"@\Hx<-(B (suffix)$B$NF~NO$N$?$a$KFCJL$JJ}K!$,MQ0U$5$l$F$$$^(B $B$9!#$?$H$($P!"!V$7!W$N8uJd$OBt;3$"$j!"!V$7!W$+$i!V;a!W$rJQ49$9$k$N$O!"$=$N$^$^$G$O(B $B8zN($,0-$$$G$9!#@\Hx<-$N!V$7!W$J$i$P!"!V;a!W$d!V;T!W$,M%@h$5$l$k$G$7$g$&!#(B $B@\F,<-!&@\Hx<-$O<-=q$NCf$G$O!"(B@samp{>} $B$J$I$G<($5$l$^$9!#(B @example >$B$7(B /$B;a(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-!"(B@samp{$B>.NS;a(B}$B$r@\Hx<-F~NO$rMQ$$$F!"0J2<$N$h$&(B $B$KF~NO$9$k$3$H$,$G$-$^$9!#(B @example @kbd{K o b a y a s h i} @group ------ Buffer: foo ------ $B"&$3$P$d$7(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'>.NS(B@point{} ------ Buffer: foo ------ @end group @kbd{>} @group ------ Buffer: foo ------ $B>.NS"&(B>@point{} ------ Buffer: foo ------ @end group @kbd{s i} @group ------ Buffer: foo ------ $B>.NS"&(B>$B$7(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B>.NS"';a(B@point{} ------ Buffer: foo ------ @end group @kbd{C-j} @group ------ Buffer: foo ------ $B>.NS;a(B@point{} ------ Buffer: foo ------ @end group @end example $B@\F,<-$bF1MM$G$9!#<-=q$K(B @example $B$A$g$&(B> /$BD6(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-!"(B@samp{$BD6Bg7?(B} $B$r@\F,<-F~NO$rMQ$$$F!"0J2<$N$h$&(B $B$KF~NO$9$k$3$H$,$G$-$^$9!#(B @example @kbd{T y o u} @group ------ Buffer: foo ------ $B"&$A$g$&(B@point{} ------ Buffer: foo ------ @end group @kbd{>} @group ------ Buffer: foo ------ $B"'D6(B@point{} ------ Buffer: foo ------ @end group @kbd{O o g a t a} @group ------ Buffer: foo ------ $BD6"&$*$*$,$?(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $BD6"'Bg7?(B@point{} ------ Buffer: foo ------ @end group @kbd{C-j} @group ------ Buffer: foo ------ $BD6Bg7?(B@point{} ------ Buffer: foo ------ @end group @end example $B%-!<(B @kbd{>} $B$r2!$7$?$@$1$G!"(B@key{SPC} $B$,2!$5$l$?$+$N$h$&$KJQ49$5$l$^$9!#(B $BB>$N@\F,<-$rA*$S$?$$$H$-$O!"(B@key{SPC} $B$r2!$7$F2<$5$$!#(B @defvr {$B%f!<%6JQ?t(B} skk-special-midashi-char-list $B"&%b!<%I$^$?$O"'%b!<%I$K$*$$$F!"$3$NJQ?t$NCM$K4^$^$l$kJ8;z$NF~NO$,$"$C$?(B $B>l9g!"@\F,<-!&@\Hx<-$NF~NO$r3+;O$7$^$9!#$3$NJQ?t$N%G%U%)%k%H$O!"(B @lisp (?> ?< ??) @end lisp @noindent $B$G$9!#$D$^$j!"(B@samp{>} $B$H(B @samp{<} $B$H(B @samp{?} $B$rF~NO$7$?;~$K@\F,<-!&@\Hx<-F~(B $BNO$r9T$$$^$9!#(B@samp{?} $B$rF~NO$7$?$H$-$K@\F,<-!&@\Hx<-F~NO$r9T$o$J$$>l9g$O(B @samp{?} $B$r30$7$F(B @lisp (setq skk-special-midashi-char-list '(?> ?<)) @end lisp @noindent $B$H$7$^$9!#(B L $B<-=q$N@\F,!&@\Hx<-$O!"@N$O(B @samp{<}, @samp{?} $B$b;H$o$l$F$$$^$7$?$,!"(B $B8=:_$O(B @samp{>} $B$KE}0l$5$l$F$$$^$9!#(B @end defvr @node $B?tCMJQ49(B @subsection $B?tCMJQ49(B @cindex #0 @cindex #1 @cindex #2 @cindex #3 @cindex #4 @cindex #5 @cindex #8 @cindex #9 @cindex $B?t$r%Q%i%a!<%?$H$9$k8l$NJQ49(B @cindex $B?tCM:FJQ49(B @cindex $BBg;z(B @cindex $B4A?t;z(B @cindex $B6b3[(B DDSKK $B$O!"(B@b{$B?t;z$r4^$`8+=P$78l(B}$B$rMM!9$J8uJd$KJQ49$9$k$3$H$,$G$-$^$9!#(B $BNc$($P!"8+=P$78l(B @samp{$B$@$$(B12$B$+$$(B} $B$rJQ49$9$k$H(B @samp{$BBh#1#22s(B}$B!"(B @samp{$BBh0lFs2s(B}$B!"(B@samp{$BBh==Fs2s(B} $B$H$$$C$?8uJd$r5s$2$^$9!#(B $B$3$N@a$G$O!"$3$N$h$&$J8uJd$r<-=q$KEPO?$9$kJ}K!$r@bL@$7$^$9!#4pK\$O!"(B $B?t;z$NItJ,$r(B @samp{#} $B$GCV$-BX$($k$3$H$G$9!#<-=q(B @file{SKK-JISYO.L} $B$N%((B $B%s%H%j!<$+$i6qBNNc$r8+$F$_$^$7$g$&!#(B @example $B$@$$(B#$B$+$$(B /$BBh(B#1$B2s(B/$BBh(B#0$B2s(B/$BBh(B#2$B2s(B/$BBh(B#3$B2s(B/$BBh(B #0 $B2s(B/ @end example @noindent @samp{$B$@$$(B12$B$+$$(B} $B$N$h$&$J(B@b{$B?t;z$r4^$`8+=P$78l(B}$B$rJQ49$7$?>l9g!"8+=P$7(B $B8l$NCf$N?t;z$NItJ,$O<+F0E*$K(B @samp{#} $B$KCV$-49$($i$l$^$9$N(B $B$G!"<-=q%(%s%H%j!<$N:8JU!J$D$^$j8+=P$78l!K(B @samp{$B$@$$(B#$B$+$$(B} $B$K%^%C%A$7$^$9!#(B $B<-=q%(%s%H%j!<$N1&JU$N(B @samp{#1}$B!"(B@samp{#2} $B$J$I$O!V$I$N$h$&$K?t;z$r2C9)(B $B$9$k$+!W$N%?%$%W$rI=$7$^$9!#0J2.@Z-4}$N4}Ih$NF~NOMQ!#(B@samp{$BA43Q?t;z(B + $B4A?t;z(B} $B$KJQ49$7$^$9!#$3(B $B$l$K$D$$$F$O8e$GNc$r5s$2$F@bL@$7$^$9!#(B @end table $B0J2<$K$$$/$D$+Nc$r<($7$^$9!#<-=q$K(B @example # /#3/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-$K!"(B @example @group @kbd{Q 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 @key{SPC}} @end group @end example @noindent $B$HF~NO(B@footnote{$B$^$?$O(B @kbd{/ 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 @key{SPC}}} $B$9$l$P!"(B@samp{$BI4C{Fs@i;02/;M==K|8^I4(B} $B$HJQ49$5$l$^$9(B @footnote{SHIFT $B%-!<$rH<$C$F?t;z$rF~NO$7;O$a$k$3$H$O$G$-$J$$$N$G!"(B@kbd{Q} $B$^$?$O(B @kbd{/} $B$G"&%b!<%I$KF~$kI,MW$,$"$j$^$9!#(B}$B!#(B $B<-=q$K(B @example #m#d /#0$B7n(B#0$BF|(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-$K!"(B@kbd{/ 2 m 2 5 d @key{SPC}} $B$HF~NO$9$l$P!"(B @samp{2$B7n(B25$BF|(B}$B$HJQ49$5$l$^$9(B @footnote{@samp{m} $B$d(B @samp{d} $B$J$I%"%9%-!l9g$O(B @kbd{/} $B%-!<$r:G=i$KF~NO$7$F(B SKK abbrev $B%b!<%I$KF~$C$F$+$i(B $BF~NO$9$kI,MW$,$"$j$^$9!#(B @w{@xref{$B%"%9%-!~6h(B/ @end group @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-$K!"(B@kbd{/ p 1 2 5 @key{SPC}} $B$HF~NO$9$l$P!"8+=P(B $B$78l(B @samp{p125} $B$N8uJd$,(B @samp{#4} $B$J$N$G!"8+=P$78l$N?t;zItJ,$N(B @samp{125} $B$KBP$7<-=q$,:F8!:w$5$l!"(B@samp{$BEl5~ET3k>~6h(B} $B$HJQ49$5$l$^$9!#(B $B:G8e$K!".?tE@?t$r;H$C$?8+=P$78l(B $B$KBP1~$7$F?tCMJQ49$r9T$$$^$9!#$?$@$7!"<-=q$K$*$$$F(B @example #.# /#1$B!%(B#1/#0$B7n(B#0$BF|(B/ @end example $B$J$I$N8+=P$78l$,;HMQ$G$-$J$/$J$j$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-show-num-type-info @code{Non-nil} $B$G$"$l$P!"<-=qEPO?%b!<%I$KF~$k$N$HF1;~$KJQ49%?%$%W$N0FFb$r(B $BI=<($9$k!#%G%U%)%k%H$O(B @code{t} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-num-grouping-separator $B%?%$%W(B 8 (@samp{#8}) $B$G;HMQ$9$k5-9f!#%G%U%)%k%H$O(B @samp{,}$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-num-grouping-places $B%?%$%W(B 8 (@samp{#8}) $B$K$D$$$F!"2?7eKh$K6h@Z$k$N$+$r?tCM$G;XDj$9$k!#%G%U%)%k%H$O(B 3$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-use-numeric-conversion $B$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9$k$H!"K\@a$G@bL@$7$??tCMJQ49$N5!G=$rA4$F(B $BL58z$K$7$^$9!#(B @end defvr @node $B%"%9%-!$K!"<-=q$K(B @example is /$B%$%s%/%j%a%s%?%k!&%5!<%A(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$7$F!"0J2<$KNc$r<($7$^$9!#(B @example @kbd{/} @group ------ Buffer: foo ------ $B"&(B@point{} ------ Buffer: foo ------ @end group @kbd{i s} @group ------ Buffer: foo ------ $B"&(Bis@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'%$%s%/%j%a%s%?%k!&%5!<%A(B@point{} ------ Buffer: foo ------ @end group @kbd{C-j} @group ------ Buffer: foo ------ $B%$%s%/%j%a%s%?%k!&%5!<%A(B@point{} ------ Buffer: foo ------ @end group @end example $B8uJd$r3NDj$9$k$H(B SKK abbrev $B%b!<%I$rH4$1$F$+$J%b!<%I$KLa$j$^$9!#(B SKK abbrve $B%b!<%I$G;H$o$l$k<-=q$O!"IaDL$N$+$J4A;zJQ49$HF1$8$G$9!#8+=P$78l(B $B$,%"%9%-!e5-$NNc$K$*$$$F(B @key{SPC} $B$NBe$o$j$K(B @kbd{C-q} $B$r%?%$%W$9$k$3$H$G!"F~NO(B $B$7$?%"%9%-!Nq$G!"(B@code{nil} $B$G$"$l$P859f$G(B $BI=<($7$^$9!#%G%U%)%k%H$O(B @code{nil} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-number-style $B$3$NJQ?t$NCM$O0J2<$N$h$&$K2re5-$N(B @samp{1996$BG/(B}$B!"(B@samp{$B#1#9#9#6G/(B}$B!"(B@samp{$B0l6e6eO;G/(B} $B$NItJ,$O!"JQ(B $B?t(B @code{skk-date-ad} $B$NCM$,(B @code{nil} $B$G$"$l$P(B @samp{$BJ?@.(B8$BG/(B} $B$N$h$&(B $B$K859f$GI=<($5$l$^$9!#(B @end defvr L $B<-=q(B @footnote{@ref{$B<-=q$N$C$F!"(B@kbd{/ t o d a y @key{SPC}} $B$HF~NO$9$k$H!":#F|$NF|IU(B $B$,>e5-$N7A<0$G=g\:Y$O(B @file{skk-gadget.el} $B$N%3%a%s%H$r;2(B $B>H$7$F$/$@$5$$!#(B $B$J$*!"(B@kbd{@@} $B$N%?%$%W$GF|IU$rA^F~$9$k$N$G$O$J$/!"J8;z$I$*$j(B @samp{@@} $B$r(B $BA^F~$7$?$$>l9g$Ol9g$Oo$NC18l$HF1MM$K9T$&$3$H$,$G$-$^$9$,!"$=$NCf$K2~(B $B9T$r4^$^$J$$$h$&$K=q$/I,MW$,$"$j$^$9(B @footnote{$BDL>o$NC18l$G$O!"2~9T$r4^$`$3$H$,2DG=$G$9!#$=$l$O!"I>2A$9$k$H$=$N0LCV$K(B $B2~9T$rA^F~$9$k$h$&$JNq!?859fJQ49$d4JC1$J7W;;$J$I%W%m%0%i%`e$G!"(B @code{skk-calc} $B$KM?$($i$l$?0z?t(B ($B$3$N>l9g$O(B @samp{*}) $B$r1i;;;R$H$7$F1i(B $B;;$r9T$$$^$9!#(B @end defun @defun skk-gadget-units-conversion $B4p=`C10L(B $B?tCM(B $BJQ49C10L(B $B?tCM$K$D$$$F!"4p=`C10L$+$iJQ49C10L$X$NJQ49$r9T$$$^$9!#(B @example @kbd{/ 1 3 m i l e} @group ------ Buffer: foo ------ $B"&(B13mile@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'(B20.9209km@point{} ------ Buffer: foo ------ @end group @key{RET} @group ------ Buffer: foo ------ 20.9209km@point{} ------ Buffer: foo ------ @end group @end example $BC10LJQ49$N>pJs$O!"JQ?t(B @code{skk-units-alist} $B$GDj5A$5$l$F$$$^$9!#(B @end defun @defvr {$B%f!<%6JQ?t(B} skk-units-alist $B$3$NJQ?t$O0J2<$N7A<0$NO"A[%j%9%H$G$9!#(B @example ($B4p=`$H$J$kC10L(B ($BJQ49$9$kC10L(B . $BJQ49;~$NG\N((B) ($B!D(B . $B!D(B)) @end example $B4X?t(B @code{skk-gadget-units-conversion} $B$GMxMQ$5$l$F$$$^$9!#%G%U%)%k%H$G(B $B$O!"0J2<$NC10LJQ49$N>pJs$rDj5A$7$F$$$^$9!#(B @lisp @group ("mile" ("km" . 1.6093) ("yard" . 1760)) ("yard" ("feet" . 3) ("cm" . 91.44)) ("feet" ("inch" . 12) ("cm" . 30.48)) ("inch" ("feet" . 0.5) ("cm" . 2.54)) @end group @end lisp @end defvr @defun skk-relative-date pp-function format and-time &key (yy 0) (mm 0) (dd 0) @code{skk-current-date} $B$N3HD%HG!#(B@code{PP-FUNCTION}, @code{FORMAT}, @code{AND-TIME} $B$N(B $B0UL#$O(B @code{skk-current-date} $B$N(B docstring $B$r;2>H$N$3$H!#(B $B%-!<%o!<%IJQ?t(B @code{:yy}, @code{:mm}, @code{:dd} $B$K@5$^$?$OIi$N?tCM$r;XDj$9$k$3$H$G(B $BL@F|!"L@8eF|!"0l:rF|$J$I$NF|IU$r5a$a$k$3$H$,$G$-$k!#(B $B>\:Y$O(B @file{skk-gadget.el} $B$N%3%a%s%H$r;2>H$N$3$H!#(B @end defun @node $B6uGr!&2~9T!&%?%V$r4^$s$@8+=P$78l$NJQ49(B @subsection $B6uGr!&2~9T!&%?%V$r4^$s$@8+=P$78l$NJQ49(B $BJQ49$N:]!"8+=P$78l$NCf$N6uGr!"2~9T!"%?%V$OL5;k$5$l$^$9!#(B @example @group ---------------- Buffer: foo ------------------ $B"&$8$s$8$g$&$7$g(B $B$&$,$C$3$&(B@point{} ---------------- Buffer: foo ------------------ @end group @key{SPC} @group ---------------- Buffer: foo ------------------ $B"'?R>o>.3X9;(B@point{} ---------------- Buffer: foo ------------------ @end group @end example $B%*!<%H%U%#%k%b!<%I$G@^$jJV$5$l$?J8;zNs$KBP$7!"@^$jJV$5$l$?>u(B $BBV$N$^$^JQ49$9$k$3$H$b$G$-$^$9!#(B @example @group ---------------- Buffer: foo ------------------ $B2>L>4A;zJQ49%W%m%0%i%`$r$5(B $B$/$;$$$7$^$7$?!#(B@point{} ---------------- Buffer: foo ------------------ @end group @kbd{C-u 10 C-b Q} @group ---------------- Buffer: foo ------------------ $B2>L>4A;zJQ49%W%m%0%i%`$r"&(B@point{}$B$5(B $B$/$;$$$7$^$7$?!#(B ---------------- Buffer: foo ------------------ @end group @kbd{C-u 5 C-f} @group ---------------- Buffer: foo ------------------ $B2>L>4A;zJQ49%W%m%0%i%`$r"&$5(B $B$/$;$$(B@point{}$B$7$^$7$?!#(B ---------------- Buffer: foo ------------------ @end group @key{SPC} @group ---------------- Buffer: foo ------------------ $B2>L>4A;zJQ49%W%m%0%i%`$r"':n@.(B@point{}$B$7$^$7$?!#(B ---------------- Buffer: foo ------------------ @end group @end example $B$3$3$G$O2~9T$r1[$($F8+=P$78l$rC5$7!"JQ49$9$kNc$r<($7$^$7$?!#F1MM$K!"6uGr!"(B $B%?%VJ8;z$rCf4V$K4^$`J8;zNs$KBP$7$F$bJQ49$r9T$&$3$H$,$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-allow-spaces-newlines-and-tabs $B$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9$k$H!"K\@a$G@bL@$7$?$h$&$J#29T0J>e$K$^$?$,(B $B$kJ8;zNs$KBP$9$kJQ49$r6X;_$7$^$9!#(B @end defvr @node $B%+%?%+%JJQ49(B @subsection $B%+%?%+%JJQ49(B @defvr {$B%f!<%6JQ?t(B} skk-search-katakana $BDL>o!"(BSKK $B$G%+%?%+%J8l$rF~NO$9$k$K$O!"(B @itemize @bullet @item @kbd{q} $B$G%+%J%b!<%I$K0\$C$F$+$i%+%?%+%J$rF~NO$9$k(B @item $B"&%b!<%I$G(B @kbd{q} $B$K$h$j%+%?%+%J$XJQ49$9$k(B@footnote{@ref{$B$+$J%b!<%I$+$i%+%?%+%J$rF~NO(B}} @end itemize $B$N$I$A$i$+$G$9!#$3$l$i$NJ}K!$OR2p$9$kJ}K!$G$O%+%?%+%J8l$,IaDL$NJQ498uJd$H$7$F8=$l!"8D?M(B $B<-=q$K$bEPO?$5$l$^$9!#@_Dj$9$k$K$O0J2<$r(B @file{~/.skk} $B$K5-=R$7$^$9(B @footnote{@code{skk-search-prog-list} $B$N@_Dj$r%f!<%6$,JQ99$7$F$$$k>l9g$O(B $B4|BT$I$*$j$KF0:n$7$J$$>l9g$,$"$j$^$9!#$=$N>l9g$O(B@code{skk-search-prog-list} $B$N(B $B@_Dj$K4X?t(B @code{skk-search-katakana} $B$N8F$S=P$7$,$"$k$3$H$r3NG'$7$F$/$@(B $B$5$$!#$^$?$3$N5!G=$N@_Dj$O(B DDSKK 14.1 $B0JA0$G$O0[$J$j$^$9!#>\$7$/$O%=!<%9(B $B$KIUB0$N%I%-%e%a%s%H!"@_DjNc$r$4Mw$/$@$5$$!#(B}$B!#(B @lisp (setq skk-search-katakana t) @end lisp $B$^$?!"CM$r%7%s%\%k(B@code{'jisx0201-kana} $B$H$9$k$H!"%+%?%+%J8uJd$K2C$(H>3Q(B $B%+%?%+%J8uJd$bJQ498uJd$K8=$l$^$9!#(B @lisp (setq skk-search-katakana 'jisx0201-kana) @end lisp @end defvr @node $B%5JQF0;lJQ49(B @subsection $B%5JQF0;lJQ49(B @defvr {$B%f!<%6JQ?t(B} skk-search-sagyo-henkaku $BDL>o!"(BSKK $B$G$O=tHL$N;v>p$K$h$j%59TJQ3J3hMQ$NF0;l$OAw$j$J$7JQ49$r$9$kA0Ds(B $B$K$J$C$F$$$^$9!#$3$N$3$H$O6&M-<-=q$N%a%s%F%J%s%9$K$*$1$kJX59>e$d$`$r$($J(B $B$$$N$G$9$,!"8D?M<-=q$,0i$?$J$$(B ($B%5JQF0;l$HL>;l$N6hJL$,$G$-$J$$(B) $B$H$$$&R2p$9$kJ}K!$G$OG$0U$NAw$j$J$78uJd$rMxMQ$7$F%59T$NAw$j%W%l(B $B%U%#%C%/%9$K8BDj$7$FAw$j$"$jJQ49$,2DG=$K$J$j!"8D?M<-=q$r0i$F$k$3$H$,2DG=(B $B$K$J$j$^$9!#@_Dj$9$k$K$O0J2<$r(B @file{~/.skk} $B$K5-=R$7$^$9!#(B @footnote{@code{skk-search-prog-list} $B$N@_Dj$r%f!<%6$,JQ99$7$F$$$k>l9g$O(B $B4|BT$I$*$j$KF0:n$7$J$$>l9g$,$"$j$^$9!#$=$N>l9g$O(B @code{skk-search-prog-list} $B$N@_Dj$K4X?t(B @code{skk-search-sagyo-henkaku} $B$N8F$S=P$7$,$"$k$3$H$r3NG'(B $B$7$F$/$@$5$$!#$^$?$3$N5!G=$N@_Dj$O(B DDSKK 14.1 $B0JA0$G$O0[$J$j$^$9!#>\$7$/(B $B$O%=!<%9$KIUB0$N%I%-%e%a%s%H!"@_DjNc$r$4Mw$/$@$5$$!#(B} @lisp (setq skk-search-sagyo-henkaku t) @end lisp $BNc$($P(B @samp{$B$*Cc$9$k(B} $B$NJQ49$O0J2<$N$h$&$KJQ2=$7$^$9!#(B @itemize @bullet @item $B=>Mh(B $B!D(B @kbd{O c h a @key{SPC} s u r u} @item $B%5JQ(B $B!D(B @kbd{O c h a S u r u} @end itemize $BJQ?t$NCM$r(B @code{anything} $B$K@_Dj$9$k$H!"%59T$K8B$i$:G$0U$NAw$j2>L>$r5v(B $B2D$7!"Aw$j$"$jJQ49$r$7$^$9!#$3$l$K$h$j!"Aw$j$"$jJQ49$NMxMQHO0O$r7AMF;l!&(B $BF0;l$NJQ49$N$_$J$i$:!"$"$i$f$k$R$i$,$J3+;OE@$N;XDj$K3HD%$9$k$3$H$,$G$-$^(B $B$9!#(B $B$3$N%5JQF0;lAw$j$"$jJQ495!G=$O!"%+%?%+%JJQ495!G=$HAH$_9g$o$;$k$H$5$i$KM-(B $B8z$G$9!#(B(@w{@pxref{$B%+%?%+%JJQ49(B}}) @end defvr @node $B0[BN;z$XJQ49$9$k(B @subsection $B0[BN;z$XJQ49$9$k(B @samp{$BJU(B} (42$B6h(B53$BE@(B) $B$N0[BN;z$G$"$k(B @samp{$Bn4(B} (78$B6h(B20$BE@(B) $B$d(B @samp{$Bn5(B} (78 $B6h(B21$BE@(B) $B$rF~NO$7$?$$$H$-$,$"$j$^$9(B@footnote{$B<-=q$,=<@\A^F~$9(B $B$k$3$H$b$G$-$^$9!#(B}$B!#(B @example @point{}$BJU(B @kbd{Q} $B"&(B@point{}$BJU(B @kbd{C-f} $B"&JU(B@point{} @key{SPC} $B"'n4(B@point{} @key{SPC} $B"'n5(B@point{} @end example @defvr {$B%f!<%6JQ?t(B} skk-itaiji-jisyo $B<-=q%U%!%$%k(B @file{SKK-JISYO.itaiji} $BKt$O(B @file{SKK-JISYO.itaiji.JIS3_4} $B$X(B $B$N%Q%9$r;XDj$9$k!#(B $BB>$N<-=q%U%!%$%k$H0[$J$j!"$3$N(B 2 $B$D$N<-=q%U%!%$%k$O8+=P$78l$,4A;z$G$9!#(B @end defvr @defun skk-search-itaiji not documented @url{http://mail.ring.gr.jp/skk/200303/msg00071.html} @end defun @node $B%U%!%s%/%7%g%s%-!<$N;H$$J}(B @subsection $B%U%!%s%/%7%g%s%-!<$N;H$$J}(B @defvr {$B%f!<%6JQ?t(B} skk-j-mode-function-key-usage $B%7%s%\%k(B @code{conversion} $B$J$i$P!"(B@code{skk-search-prog-list-1} $B!A(B @code{skk-search-prog-list-9} $B$*$h$S(B @code{skk-search-prog-list-0} $B$r(B $BiD9$J0FFb%a%C%;!<%8$NI=<((B}}) @itemize @bullet @item @key{[F5]} $B!D(B $BC14A;z(B @item @key{[F6]} $B!D(B $BL5JQ49(B @item @key{[F7]} $B!D(B $B%+%?%+%J(B @item @key{[F8]} $B!D(B $BH>3Q%+%J(B @item @key{[F9]} $B!D(B $BA43Q%m!<%^(B @item @key{[F10]} $B!D(B $B%m!<%^(B @end itemize $B%7%s%\%k(B @code{kanagaki} $B$J$i$P!"$+$J%-!<%\!<%IF~NOMQ$K<+F0@_Dj$7$^$9!#(B @code{nil} $B$J$i$P!"<+F0@_Dj$7$^$;$s!#(B @end defvr @node $B%-!<@_Dj(B @section $B%-!<@_Dj(B @cindex $B%-!<@_Dj(B @menu $BJ8;z$NF~NO(B * $B$+$J%b!<%I(B/$B%+%J%b!<%I$N%-!<@_Dj(B:: * $BA41Q%b!<%I$N%-!<@_Dj(B:: * $BJD$83g8L$N<+F0F~NO(B:: * $B%j!<%8%g%s$r3g8L$G0O$`(B:: @noindent $BJQ49!"3NDj$J$I(B * $B3NDj$9$k%-!<(B:: RET $B0J30$G3NDj$5$l$k$K$O(B * $B8uJd$NA*Br$KMQ$$$k%-!<(B:: asdfjkl $B0J30(B * $B"'%b!<%I$G$N(BRET:: $B2~9T$bF1;~$K$9$k(B? $B$7$J$$(B? * $B"'%b!<%I$G$N(BBS:: $B:o=|(B vs $BA08uJd(B * $BAw$j$"$jJQ49Cf$N(BC-g:: * $BJQ490LCV$N;XDjJ}K!(B:: $BBgJ8;z0J30$G$bJQ490LCV$r;XDj2DG=$K!#(B @noindent $BB>(B * 1$B2s$NC$7A`:n(B(undo)$B$NBP>](B:: @end menu $B4XO"9`L\(B: @w{@ref{$B%m!<%^;zF~NO0J30$NF~NOJ}<0(B}} @node $B$+$J%b!<%I(B/$B%+%J%b!<%I$N%-!<@_Dj(B @subsection $B$+$J%b!<%I(B/$B%+%J%b!<%I$N%-!<@_Dj(B @menu * $B%m!<%^;z$N%k!<%k$N@_Dj(B:: * $B%m!<%^;z%k!<%k$NJQ99Nc(B:: $BN,9f$J$I$b@_Dj$G$-$^$9!#(B * $B"#%b!<%I$K4XO"$9$k$=$NB>$NJQ?t(B:: * $B?t;z$d5-9fJ8;z$NF~NO(B:: @end menu @node $B%m!<%^;z$N%k!<%k$N@_Dj(B @subsubsection $B%m!<%^;z$N%k!<%k$N@_Dj(B @table @code @item skk-rom-kana-base-rule-list @vindex skk-rom-kana-base-rule-list @item skk-rom-kana-rule-list @vindex skk-rom-kana-rule-list @end table DDSKK $B$N"#%b!<%I$K$*$1$kJ8;zJQ49$O!"$3$l$i#2$D$NJQ?t$rMQ$$$F9T$o$l$^$9!#(B @code{skk-rom-kana-base-rule-list} $B$K$O4pK\E*$J%m!<%^;z$+$JJQ49$N%k!<%k$,(B $BDj$a$i$l$F$$$^$9!#0lJ}!"(B@code{skk-rom-kana-rule-list} $B$O%f!<%6$,FH<+$N%k!<%k$r(B $BDj$a$k$?$a$KMQ0U$5$l$F$*$j!"(B@code{skk-rom-kana-base-rule-list} $B$h$j$bM%@h$5$l$^$9!#(B $B$3$l$i$O!VF~=PNO$N>uBV$,$$$+$K0\$jJQ$o$k$Y$-$+!W$r7hDj$7$^$9!#$=$NFbMF$O!"(B @lisp @example ($BF~NO$5$l$kJ8;zNs(B $B=PNO8e$K<+F0E*$KF~NO$KDI2C$5$l$kJ8;zNs(B $B=PNO(B) @end example @end lisp @noindent $B$H$$$&7A$N%j%9%H$rNs5s$7$?$b$N$G$9!#(B @itemize @bullet @item $BF~NO$5$l$kJ8;zNs!DJQ49$5$l$kA0$N%"%9%-!uBV$K0\$k$H$-$K%P%C%U%!$KA^F~$5$l$kJ8;zNs$NAH$_9g(B $B$o$;$G$"$j!"(B @w{@code{("$B%"(B" . "$B$"(B")}} $B$N$h$&$J%3%s%9%;%k$G$9!#(B @end itemize @code{skk-rom-kana-base-rule-list} $B$N0lIt$r8+$F$_$^$7$g$&!#(B @lisp @example ("a" nil ("$B%"(B" . "$B$"(B")) ("ki" nil ("$B%-(B" . "$B$-(B")) ("tt" "t" ("$B%C(B" . "$B$C(B")) ("nn" nil ("$B%s(B" . "$B$s(B")) ("n'" nil ("$B%s(B" . "$B$s(B")) @end example @end lisp @noindent $B$N$h$&$J5,B'$,$"$j$^$9!#$3$l$K$h$k$H(B @example a @expansion{}$B$"(B ki @expansion{}$B$-(B tt @expansion{}$B$C(Bt nn @expansion{}$B$s(B n' @expansion{}$B$s(B @end example @noindent $B$N$h$&$K$J$j$^$9!#(B @code{skk-rom-kana-base-rule-list} $B$K$O!"$&$H(B @example hannou @expansion{}$B$O$s$*$&(B han'ou @expansion{}$B$O$s$*$&(B hannnou @expansion{}$B$O$s$N$&(B @end example @noindent $B$N$h$&$K$J$j$^$9!#$3$3$G(B @lisp @group (setq skk-rom-kana-rule-list (append skk-rom-kana-rule-list '(("nn" "n" ("$B%s(B" . "$B$s(B"))))) @end group @end lisp @noindent $B$N$h$&$J@_Dj$K$9$k$3$H$G(B @example hannou @expansion{}$B$O$s$N$&(B @end example @noindent $B$N$h$&$K%m!<%^;z$+$JJQ49$,9T$o$l$k$h$&$K$J$j$^$9!#(B $BB>$NNc$H$7$F!"N,9f$r@_Dj$9$k$3$H$b$G$-$^$9!#(B @example tp @expansion{}$BElKLBg3X(B skk @expansion{}skk skK @expansion{}SKK @end example @noindent $B$H$$$C$?JQ49$O!"(B @lisp @group ("tp" nil ("$BElKLBg3X(B" . "$BElKLBg3X(B")) ("sk" nil ("" . "")) ("skk" nil ("skk" . "skk")) ("skK" nil ("SKK" . "SKK")) @end group @end lisp @noindent $B$N$h$&$J5,B'$rDI2C$9$k$3$H$GA0$rF~NO$9$k$3$H$O$h$/(B $B$"$k$N$G!"E,Ev$J>JN,7A$rMQ$$$F!"$3$N%j%9%H$KDI2C$7$F$*$/!"$H$$$C$?MxMQ$r(B $B$*4+$a$7$^$9!#(B $B99$K(B @code{skk-rom-kana-rule-list} $B$rMQ$$$l$P(B TUT-code $B$K$h$kF|K\8lF~NO$r(B $BH$7$F$/$@$5(B $B$$!#(B@w{(@pxref{$B%m!<%^;zF~NO0J30$NF~NOJ}<0(B})} @node $B"#%b!<%I$K4XO"$9$k$=$NB>$NJQ?t(B @subsubsection $B"#%b!<%I$K4XO"$9$k$=$NB>$NJQ?t(B @defvr {$B%f!<%6JQ?t(B} skk-kana-input-search-function $B%k!<%k%j%9%H$NCf$K5-$;$J$$JQ49%k!<%k$r=hM}$9$k4X?t!#(B $B$3$l$O(B @code{skk-rom-kana-base-rule-list} $B$H(B @code{skk-rom-kana-rule-list} $B$N(B $BMWAG$rA4$F8!:w$7$?8e$K%3!<%k$5$l$^$9!#0z?t$O$"$j$^$;$s!#%P%C%U%!$NJ8;z$r!"(B $BD>@\(B @code{preceding-char} $B$J$I$GD4$Y$F2<$5$$!#(B $B=i4|@_Dj$G$O(B @kbd{h} $B$G!"D92;$rI=$9$?$a$K;H$o$l$F$$$^$9!#l9g$O!"(B @example ($B6gE@$r<($9J8;zNs(B . $BFIE@$r<($9J8;zNs(B) @end example $B$N$h$&$K;XDj$7$^$9!#Nc$H$7$F!"l9g$O!"(B @lisp (setq-default skk-kutouten-type 'en) @end lisp $B$N$h$&$K4X?t(B @code{setq-default} $B$rMQ$$$F$/$@$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-use-auto-kutouten $B%G%U%)%k%H$O(B @code{nil}$B!#(B@code{Non-nil} $B$G$"$l$P!"%+!<%=%kD>A0$NJ8;z ? " ( ) [ ] @{ @} ^ _ ` | ~ @end group @end example $B$3$l$i$N?t;z$d5-9fJ8;z$N%-!<$KBP1~$7A^F~$5$l$kJ8;z$r%+%9%?%^%$%:$9$k$?$a(B $B$K$O!"JQ?t(B @code{skk-rom-kana-rule-list} $B$rMxMQ$7$^$9!#(B @lisp @group (setq skk-rom-kana-rule-list (append skk-rom-kana-rule-list '(("!" nil "!") ("," nil ",") ("." nil ".") (":" nil ":") (";" nil ";") ("?" nil "?")))) @end group @end lisp @code{skk-insert} $B$O!"(BEmacs $B$N%*%j%8%J%k4X?t(B @code{self-insert-command} $B$r%(%_%e%l!<%H$7$F$$$^$9!#6qBNE*$K$O!"0z?t$rEO$9$3$H$K$h$C$FF1$8J8;z$rJ#(B $B?t!"0lEY$KA^F~$9$k$3$H$,2DG=$G$9!#(B @example @group @kbd{C-u 2 !} ------ Buffer: foo ------ $B!*!*(B ------ Buffer: foo ------ @end group @end example @node $BA41Q%b!<%I$N%-!<@_Dj(B @subsection $BA41Q%b!<%I$N%-!<@_Dj(B $BA41Q%b!<%I$K$*$1$k0u;z2DG=$JA4$F$N%-!<$O%3%^%s%I(B @code{skk-jisx0208-latin-insert} $B$K3d$jIU$1$i$l$F$$$^$9!#$^$?!"JQ?t(B @code{skk-jisx0208-latin-vector} $B$NCM$K$h$jA^F~$5$l$kJ8;z$,7hDj$5$l!"(B $B$=$N%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9!#(B @lisp @group [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil "$B!!(B" "$B!*(B" "$B!I(B" "$B!t(B" "$B!p(B" "$B!s(B" "$B!u(B" "$B!G(B" "$B!J(B" "$B!K(B" "$B!v(B" "$B!\(B" "$B!$(B" "$B!](B" "$B!%(B" "$B!?(B" "$B#0(B" "$B#1(B" "$B#2(B" "$B#3(B" "$B#4(B" "$B#5(B" "$B#6(B" "$B#7(B" "$B#8(B" "$B#9(B" "$B!'(B" "$B!((B" "$B!c(B" "$B!a(B" "$B!d(B" "$B!)(B" "$B!w(B" "$B#A(B" "$B#B(B" "$B#C(B" "$B#D(B" "$B#E(B" "$B#F(B" "$B#G(B" "$B#H(B" "$B#I(B" "$B#J(B" "$B#K(B" "$B#L(B" "$B#M(B" "$B#N(B" "$B#O(B" "$B#P(B" "$B#Q(B" "$B#R(B" "$B#S(B" "$B#T(B" "$B#U(B" "$B#V(B" "$B#W(B" "$B#X(B" "$B#Y(B" "$B#Z(B" "$B!N(B" "$B!@(B" "$B!O(B" "$B!0(B" "$B!2(B" "$B!F(B" "$B#a(B" "$B#b(B" "$B#c(B" "$B#d(B" "$B#e(B" "$B#f(B" "$B#g(B" "$B#h(B" "$B#i(B" "$B#j(B" "$B#k(B" "$B#l(B" "$B#m(B" "$B#n(B" "$B#o(B" "$B#p(B" "$B#q(B" "$B#r(B" "$B#s(B" "$B#t(B" "$B#u(B" "$B#v(B" "$B#w(B" "$B#x(B" "$B#y(B" "$B#z(B" "$B!P(B" "$B!C(B" "$B!Q(B" "$B!A(B" nil] @end group @end lisp $BA^F~$5$l$kJ8;z$rJQ99$7$?$$>l9g$O!"(B@w{@ref{$B?t;z$d5-9fJ8;z$NF~NO(B}} $B$r;2>H$7(B $B$F$/$@$5$$!#(B @code{skk-jisx0208-latin-insert} $B$b(B Emacs $B%*%j%8%J%k$N4X?t(B @code{self-insert-command} $B$r%(%_%e%l!<%H$7$F$$$^$9!#$D$^$j!"0z?t$rEO$9(B $B$3$H$K$h$jF1$8J8;z$rJ#?t!"0lEY$KA^F~$9$k$3$H$,$G$-$^$9!#(B @code{skk-insert} $B$K$*$1$kF0:n$HF1$8$G$9$+$i!"(B @w{@ref{$B?t;z$d5-9fJ8;z$NF~NO(B}} $B$NNc$r;29M$K$7$F$/$@$5$$!#(B @node $BJD$83g8L$N<+F0F~NO(B @subsection $BJD$83g8L$N<+F0F~NO(B @c $Beo!"(B`$B!V(B' $B$rF~NO$7$?$i!"(B`$B!W(B' $B$r8e$GF~NO$9$kI,MW$,$"$j$^$9!#(B`$B!V(B' $B$NF~(B $BNO;~E@$G!"BP$K$J$kJ8;z$r<+F0A^F~$7$F$/$l$k$HBG80?t$r8:$i$9$3$H$,$G$-$^$9(B $B$7!"F1;~$KF~NOK:$l$NKI;_$K$b$J$k$G$7$g$&!#(B @vindex skk-auto-insert-paren $B$=$N$?$a$KJQ?t(B @code{skk-auto-insert-paren} $B$,MQ0U$5$l$F$$$^$9!#$3$NCM$r(B @code{non-nil} $B$K$9$k$H!">e5-$N<+F0A^F~$r9T$$$^$9!#(B @example @group ------ Buffer: foo ------ $BH`$O$3$&8@$C$?(B@point{} ------ Buffer: foo ------ @kbd{[} ------ Buffer: foo ------ $BH`$O$3$&8@$C$?!V(B@point{}$B!W(B ------ Buffer: foo ------ @end group @end example @noindent @c @samp{$B!V(B}$B$d(B@samp{$B!W(B}$B$,>ee5-$N$h$&$K(B `$B!V(B' $B$NF~NO;~E@$GBP$H$J$k(B`$B!W(B'$B$r<+F0A^F~$7!"(B`$B!V(B'$B$H(B`$B!W(B'$B$N4V$K(B $B%]%$%s%H$r:FG[CV$9$k$N$G!"$=$N0LCV$+$i$+$.$+$C$3$K0O$^$l$?J8;zNs$rB(;O$a(B $B$k$3$H$,$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-auto-paren-string-alist $B<+F0A^F~$9$Y$-%Z%"$NJ8;zNs$r;XDj$7$^$9!#%G%U%)%k%H$O2<5-$N$H$*$j!#(B @lisp @group (("$B!V(B" . "$B!W(B") ("$B!X(B" . "$B!Y(B") ("(" . ")") ("$B!J(B" . "$B!K(B") ("@{" . "@}") ("$B!P(B" . "$B!Q(B") ("$B!R(B" . "$B!S(B") ("$B!T(B" . "$B!U(B") ("[" . "]") ("$B!N(B" . "$B!O(B") ("$B!L(B" . "$B!M(B") ("$B!Z(B" . "$B![(B") ("\"" . "\"") ("$B!H(B" . "$B!I(B") ("`" . "'")) @end group @end lisp $B$3$l$O!"$R$H8@$G$^$H$a$k$H!"!V3+$-3g8L$HJD$83g8L$H$N%3%s%9%;%k$r=8$a$?%j(B $B%9%H!W$G$9!#3F%3%s%9%;%k$N(B @code{car} $B$K$"$kJ8;zNs$rA^F~$7$?$H$-$K!"(B @code{cdr} $B$K$"$kJ8;zNs$,<+F0A^F~$5$l$^$9!#(B @vindex skk-rom-kana-rule-list @footnote{$B$3$N%j%9%H$N3FMWAG$N(B @code{car} $B$NJ8;zNs$O!"I,$:JQ?t(B @code{skk-rom-kana-rule-list} $B$N5,B'$K$h$C$FF~NO$5$l$J$1$l$P$J$j$^$;$s!#(B $BNc$($P!"(B@samp{(} $B$KBP$9$k(B @samp{)} $B$r<+F0A^F~$9$k$K$O(B @lisp @group (setq skk-rom-kana-rule-list (append skk-rom-kana-rule-list '(("(" nil "(")))) @end group @end lisp @noindent $B$N$h$&$K@_Dj$9$kI,MW$,$"$j$^$9!#(B} @footnote{$B4{$K(B SKK $B%b!<%I$K$J$C$F$$$k%P%C%U%!$GJQ?t(B @code{skk-auto-paren-string-alist} $B$rJQ99$7$?>l9g$O!"(B@kbd{C-x C-j} $B$b$7(B $B$/$O(B @kbd{C-x j} $B$r(B 2 $BEY%?%$%W$7$F(B @code{skk-mode} $B$b$7$/$O(B @code{skk-auto-fill-mode} $B$r5/F0$7D>$9I,MW$,$"$j$^$9!#(B} @end defvr $B%-!<$H$J$kJ8;z$,A^F~$5$l$F$b!"$=$NA^F~8e$N%]%$%s%H$K<+F0A^F~$9$Y$-J8;z$,(B $B4{$KB8:_$7$F$$$k>l9g$K$O!"<+F0A^F~$5$l$J$$$h$&$K@_7W$5$l$F$$$^$9!#(B @example @group ------ Buffer: foo ------ @point{}$B!W(B ------ Buffer: foo ------ @kbd{[} ------ Buffer: foo ------ $B!V(B@point{}$B!W(B ------ Buffer: foo ------ @end group @end example $BBP$K$J$kJ8;z$rJ#?tA^F~$7$?$$>l9g$O!"0z?t$rEO$7$FJ8;z$r;XDj$7$^$9!#(B @example @group @kbd{C-u 2 [} ------ Buffer: foo ------ $B!V!V(B@point{}$B!W!W(B ------ Buffer: foo ------ @end group @end example @vindex yatex-mode @code{yatex-mode} $B$J$I!"4{$KF1MM$N5!G=$,IU$$$F$$$k%b!<%I$,$"$j$^$9!#$=$N(B $B$h$&$J%b!<%I$K$*$$$F$b$3$N<+F0A^F~$N5!G=$,l9g$O!"Ev3:%b!<%I$KF~$C$?(B $B$H$-$K%3!<%k$5$l$k%U%C%/JQ?t$rMxMQ$7$F@_Dj$9$k$3$H$,$G$-$^$9!#(B @lisp @group (add-hook 'yatex-mode-hook (lambda () (when skk-auto-insert-paren (make-local-variable 'skk-auto-insert-paren) (setq skk-auto-insert-paren nil)))) @end group @end lisp $BFCDj$N%b!<%I$K$*$$$F!"<+F0A^F~$9$Y$-J8;z$rJQ99$7$?$$>l9g$K$bF1MM$K%U%C%/(B $BJQ?t$rMQ$$$FA`:n$G$-$^$9!#(B @vindex tex-mode-hook @lisp @group (add-hook 'tex-mode-hook (lambda () (when skk-auto-insert-paren (make-local-variable 'skk-auto-paren-string-alist) (setq skk-auto-paren-string-alist (cons '("$" . "$") skk-auto-paren-string-alist))))) @end group @end lisp @noindent $BF1MM$K!"FCDj$N%Z%"$r:o=|$7$?$$>l9g$O!"Nc$($P2<5-$N$h$&$K@_Dj$7$^$9!#(B @c @footnote{$B2?8N4X?t(B @code{copy-sequence} $B$r;HMQ$9$k$N$+$K$D$$$F$O!"(B @c @w{@ref{$B?t;z$d5-9fJ8;z$NF~NO(B}} $B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B @lisp @group (add-hook 'tex-mode-hook (lambda () (when skk-auto-insert-paren (make-local-variable 'skk-auto-paren-string-alist) (setq skk-auto-paren-string-alist (delete '("$" . "$") (copy-sequence skk-auto-paren-string-alist)))))) @end group @end lisp @node $B%j!<%8%g%s$r3g8L$G0O$`(B @subsection $B%j!<%8%g%s$r3g8L$G0O$`(B $B!VJD$83g8L$N<+F0F~NO!W$N1~MQ$H$7$F!"%j!<%8%g%s$r3g8L$G0O$`$3$H$,$G$-$^$9!#(B @example @group ------ Buffer: foo ------ $B$3$N%^%K%e%"%k$K$*$$$F(B@point{}DDSKK@point{}$B$H8F$S$^$9(B ------ Buffer: foo ------ @kbd{`} ------ Buffer: foo ------ $B$3$N%^%K%e%"%k$K$*$$$F(B`DDSKK'$B$H8F$S$^$9(B ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-use-auto-enclose-pair-of-region @code{non-nil} $B$G$"$l$P!">e5-$N5!G=$,M-8z$K$J$j$^$9!#(B $BEvA3$K(B @code{skk-auto-insert-paren} $B$b(B @code{non-nil} $B$G$"$kI,MW$,$"$j$^$9!#(B $B$J$*!"(B@code{delete-selection-mode} $B$NJ}$,M%@h$5$l$^$9!#(B @end defvr @node $B3NDj$9$k%-!<(B @subsection $B3NDj$9$k%-!<(B @kindex C-j @defvr {$B%f!<%6JQ?t(B} skk-kakutei-key $B$3$NJQ?t$NCM$O!"L@<(E*$J3NDjF0:n$r9T$&%-!<$r;XDj$7$^$9!#(B $BI8=`@_Dj$G$O(B @kbd{C-j} $B$H$J$C$F$$$^$9!#(B @end defvr $B4XO";v9`(B: @w{@ref{$B0EL[$N3NDj$N%?%$%_%s%0(B}} @node $B8uJd$NA*Br$KMQ$$$k%-!<(B @subsection $B8uJd$NA*Br$KMQ$$$k%-!<(B $BJQ49$K$*$$$F!"8uJd$,#5$D0J>e$"$k$H$-$O!"#5HVL\0J9_$N8uJd$O#7$D$:$D(B $B$^$H$a$F%(%3!<%(%j%"$K2<5-$N$h$&$KI=<($5$l$^$9(B @footnote{@ref{$B"'%b!<%I(B}.}$B!#(B @example @group -------------------- Echo Area -------------------- A:$B13(B S:$B5q(B D:$B5r(B F:$B5u(B J:$B5s(B K:$B5v(B L:$B5t(B [$B;D$j(B 2] -------------------- Echo Area -------------------- @end group @end example $B$3$N:]!"8uJd$NA*Br$KMQ$$$k%-!<$O!".J8;z$H$9$k(B @footnote{@kbd{x}, @key{SPC} $B5Z$S(B @kbd{C-g} $B$O!"$=$l$>$l8uJdA*BrCf$K(B $B$*$1$kA08uJd72$NI=<(!"e5-$N#2$D$NJQ?t$NMWAG$O(B@b{$BA4$F>.J8;z$G;XDj$9$k$3$H(B}$B$r6/$/$*4+$a$7$^$9(B @c @footnote{$B>.J8;z$,;XDj$5$l$?>l9g$O!"8uJd$NA*Br$N:]$KBP1~$9$kBgJ8;z%-!<$,(B @c $BF~NO$5$l$F$b8uJd$NA*Br$,2DG=$H$J$k$h$&$K@_7W$5$l$F$$$^$9!#$=$N0lJ}$G!"Bg(B @c $BJ8;z$,;XDj$5$l$?>l9g!"8uJd$NA*Br$N:]$KBP1~$9$k>.J8;z%-!<$,F~NO$5$l$F$b8u(B @c $BJd$NA*Br$,$G$-$^$;$s!#$3$l$O8=:_$N;EMM$G$9!#(B}$B!#(B @c @defvr {$B%f!<%6JQ?t(B} skk-henkan-show-candidates-keys-face $BA*Br%-!<$rI=<($9$k:]$N%U%'%$%9$r;XDj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-henkan-rest-indicator $B%G%U%)%k%H$O(B @code{nil}$B!#(B@code{Non-nil} $B$G$"$l$P(B @samp{[$B;D$j(B 99++]} $B$NI=<($r1&4s$;G[CV$9$k!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-henkan-rest-indicator-face @samp{[$B;D$j(B 99++]} $B$N(B face $BB0@-!#%G%U%)%k%H$O(B @code{default}$B!#(B @end defvr @node $B"'%b!<%I$G$N(BRET @subsection $B"'%b!<%I$G$N(BRET $BI8=`@_Dj$G$O!"(B @example @kbd{K a k u t e i @key{SPC}} @group ------ Buffer: foo ------ $B"'3NDj(B@point{} ------ Buffer: foo ------ @end group @key{RET} @group ------ Buffer: foo ------ $B3NDj(B @point{} ------ Buffer: foo ------ @end group @end example @noindent $B$N$h$&$K!""'%b!<%I$G(B @key{RET} $B$rF~NO$9$k$H!"3NDj$7!"$+$D2~9T$r9T$$$^$9!#(B $B$3$N5sF0$rJQ$($k$?$a$N%f!<%6%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-egg-like-newline $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K$9$k$H!""'%b!<%I$G(B @key{RET} $B$rF~NO$7$?(B $B$H$-$K3NDj$N$_9T$$!"2~9T$O$7$^$;$s(B@footnote{$B=>$C$F!"<-=qEPO?%b!<%I$K$*$$$F"'%b!<%I$G$"$k$H$-$N(B @key{RET} $BF~NO;~$N5sF0$bJQ2=$7$^$9!#I8=`$N3NDj!"EPO?$NF0:n$K$D$$$F$O!"(B @w{@ref{$B<-=qEPO?%b!<%I(B}} $B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B @end defvr @example @kbd{K a k u t e i @key{SPC}} @group ------ Buffer: foo ------ $B"'3NDj(B@point{} ------ Buffer: foo ------ @end group @key{RET} @group ------ Buffer: foo ------ $B3NDj(B@point{} ------ Buffer: foo ------ @end group @end example @node $B"'%b!<%I$G$N(BBS @subsection $B"'%b!<%I$G$N(BBS @kindex @key{BS} $BI8=`@_Dj$G$O!""'%b!<%I$G(B @key{BS} $B$r2!$9$H!"A0$N0lJ8;z$r:o=|$7$?>e$G3NDj(B $B$7$^$9!#(B @example @kbd{D e n k i y a @key{SPC}} @group ------ Buffer: foo ------ $B"'EE5$20(B@point{} ------ Buffer: foo ------ @end group @key{BS} @group ------ Buffer: foo ------ $BEE5$(B@point{} ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-delete-implies-kakutei $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!""'%b!<%I$G(B @key{BS} $B$r2!$7$?;~(B $B$K0l$DA0$N8uJd$rI=<($7$^$9!#Nc$($P!"(B @example $B$G$s$-(B /$BEE5$(B/$BEA5-(B/ @end example @noindent $B$H$$$&<-=q%(%s%H%j$,$"$k$H$-!"0J2<$N$h$&$K$J$j$^$9!#(B @example @kbd{D e n k i} @group ------ Buffer: foo ------ $B"&$G$s$-(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'EE5$(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'EA5-(B@point{} ------ Buffer: foo ------ @end group @key{BS} @group ------ Buffer: foo ------ $B"'EE5$(B@point{} ------ Buffer: foo ------ @end group @key{BS} @group ------ Buffer: foo ------ $B"&$G$s$-(B@point{} ------ Buffer: foo ------ @end group @end example @end defvr $BJQ?t(B @code{skk-delete-implies-kakutei} $B$,%7%s%\%k(B @code{dont-update} $B$G(B $B$"$l$P!"(B@code{non-nil} $B;~$HF1$8F0:n$N$&$($G8D?M<-=q$r99?7$7$^$;$s!#(B $B$J$*!"JQ?t(B @code{skk-delete-implies-kakutei} $B$NCM$K$+$+$o$i$:!"(B*$B8uJd(B*$B%P%C%U%!(B $B$rI=<($7$F$$$k>l9g$O0l$DA0$N8uJdI=<($KLa$kF0:n$H$J$j$^$9!#(B @node $BAw$j$"$jJQ49Cf$N(BC-g @subsection $BAw$j$"$jJQ49Cf$N(BC-g @kindex C-g $BAw$j$"$j$NJQ49Cf$K(B @kbd{C-g} $B$rF~NO$9$k$H!""'%b!<%I$rH4$1!"$=$N8+=P$78l(B $B$HAw$j2>L>$r8=:_$N%P%C%U%!$KA^F~$7!""&%b!<%I$KF~$j$^$9!#(B @example @kbd{N a K u} @group ------ Buffer: foo ------ $B"'5c$/(B@point{} ------ Buffer: foo ------ @end group @kbd{C-g} @group ------ Buffer: foo ------ $B"&$J$/(B@point{} ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-delete-okuri-when-quit $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"Aw$j$"$j$NJQ49Cf$K(B @kbd{C-g} $B$r(B $BF~NO$7$?$H$-$N5sF0$,JQ2=$7$^$9!#"&%b!<%I$KF~$k$N$OF1$8$G$9$,!"F1;~$K(B $BAw$j2>L>$r>C$7$^$9!#Aw$j2>L>$NF~NO4V0c$$$r=$@5$9$k$N$K$OJXMx$G$9!#(B $BNc$($P!"0J2<$N$h$&$K$J$j$^$9!#(B @end defvr @example @kbd{N a K u} @group ------ Buffer: foo ------ $B"'5c$/(B@point{} ------ Buffer: foo ------ @end group @kbd{C-g} @group ------ Buffer: foo ------ $B"&$J(B@point{} ------ Buffer: foo ------ @end group @end example @node $BJQ490LCV$N;XDjJ}K!(B @subsection $BJQ490LCV$N;XDjJ}K!(B @cindex @file{skk-sticky.el} @kindex ; SKK $B$G$ODL>o!"!V4A;zJQ49$N3+;O0LCV!W$H!VAw$j2>L>$N3+;O0LCV!W$rBgJ8;z$G;XDj$7$^$9(B $B$,!"$3$l$i$rG$0U$N%-!<$G;XDj$9$k$3$H$G(B sticky-shift $B%i%$%/$JA`:n(B @footnote{$B$"$/$^$G$b!VG$0U$N%-!<$GJQ493+;O0LCV$r;XDj$9$k!W$b$N$G$"$j!"(B sticky-shift $B$=$N$b$N$G$O$"$j$^$;$s!#$7$?$,$C$F!"%"%9%-!<%b!<%I$d(B abbrev $B%b!<%I!"$^$?(B SKK $B0J30$G$b(B sticky-shift $B$r;H$$$?$$>l9g$OA0=R$N$h$&$J(B $B@_Dj$rJ;MQ$9$kI,MW$,$"$j$^$9!#(B}$B$b2DG=$G$9!#(B @lisp (setq skk-sticky-key ";") @end lisp @noindent $B$H@_Dj$9$k$H(B @kbd{;} $B%-!<$G(B @footnote{@file{skk-hint.el} $B$rJ;MQ$9$k>l9g$O(B @code{skk-hint-start-char} $B$N%G%U%)%k%H$b(B @kbd{;} $B$G$"$k$?$a!"$I$A$i$+$rJL$N%-!<$K3d$jEv$F$kI,MW$,(B $B$"$j$^$9!#(B@w{@pxref{$B8uJd$N9J$j9~$_(B}}} $B4A;zJQ490LCV$,;XDj$G$-$k$h$&$K$J$j(B $B$^$9!#(B $BNc$($P(B @samp{$BM-$k(B} $B$H$$$&C18l$rF~NO$9$k$K$O(B @example @kbd{; a ; r u} @end example $B$H$$$&%-!e$O(B @w{@pxref{Q3-4 $B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B}} $B$J$I$K$"$kDL(B $B>o$N(B sticky-shift $B$HJQ$o$j$^$;$s$,!"2hLLI=<($O(B @display @group @multitable {$BBG80(B } {$BDL>o$N(B@tie{}sticky} {skk-sticky} @item $BBG80(B @tab $BDL>o$N(B@tie{}sticky @tab skk-sticky @item @kbd{;} @tab $BJQ2=$J$7(B @tab $B"&(B @item @kbd{a} @tab $B"&$"(B @tab $B"&$"(B @item @kbd{;} @tab $B"&$"(B @tab $B"&$"(B* @item @kbd{r} @tab $B"&$"(B*r @tab $B"&$"(B*r @end multitable @end group @end display @noindent $B$HA+0\$7$^$9!#DL>o$N(B sticky $B$HHf$Y$F(B skk-sticky $B$O(B @kbd{;} $B$r2!$7$?;~E@$G(B $B2hLLI=<($,JQ2=$9$k$N$Gl9g$O(B @lisp (setq skk-sticky-key ";") @end lisp $B$N$h$&$K(B @code{string} $B$r@_Dj$7$F2<$5$$!#(B@code{skk-sticky-key} $B$K@_Dj$7$?(B $BJ8;z$=$N$b$N$rF~NO$7$?$$>l9g$O(B2$B2sB3$1$FBG$D$HF~NO$G$-$^$9!#(B @item $BI=<($rH<$o$J$$%-!<(B $B!Z(B@key{$BL5JQ49(B}$B![$N$h$&$JI=<($rH<$o$J$$%-!<$N>l9g$O(B @lisp (setq skk-sticky-key [muhenkan]) ;Microsoft Windows $B$G$O(B [noconvert] @end lisp $B$N$h$&$K$=$N%-!<$rI=$o$9(B @code{vector} $B$r@_Dj$7$F2<$5$$!#(B @item $BF1;~BG80(B $B#2$D$N%-!<$rF1;~$KBG80$9$k$3$H$G$b4A;zJQ490LCV$r;XDj$G$-$^$9!#Nc$($P(B @kbd{f} $B$H(B @kbd{j} $B$NF1;~BG80$G;XDj$9$k>l9g$O(B @lisp (setq skk-sticky-key '(?f ?j)) @end lisp $B$N$h$&$K(B @code{character} $B$N%j%9%H$r@_Dj$7$F2<$5$$!#(B Dvorak $BG[Ns$N$h$&$J!"2!$7$d$9$$>l=j$KE,Ev$J%-!<$,$J$$4D6-$G$b$3$N5!G=$r;H(B $B$$$?$$>l9g$KJXMx$+$b$7$l$^$;$s!#(B @end enumerate @defvr {$B%f!<%6JQ?t(B} skk-sticky-double-interval $B$3$NJQ?t$,;XDj$9$kIC?t0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B $B%G%U%)%k%H$O(B 0.1 $BIC!#(B @end defvr @node 1$B2s$NC$7A`:n(B(undo)$B$NBP>](B @subsection 1$B2s$NC$7A`:n(B(undo)$B$NBP>](B @cindex @file{keyboard.c} @findex self-insert-command @findex skk-abbrev-comma @findex skk-abbrev-period @findex skk-kana-input @findex skk-insert @findex skk-set-henkan-point @findex skk-jisx0208-latin-insert @vindex skk-self-insert-non-undo-count Emacs $B$G$OK\Mh!"O"B3$9$k(B 20 $BJ8;z$NA^F~$,0l2s$NC$7A`:n(B ($B%"%s%I%%(B) $B$N(B $BBP>]$H$J$C$F$$$^$9!#$=$3$G(B DDSKK $B$N$+$J!&%+%J!&A41Q%b!<%I$K$*$1$kF~NO$b!"(B $B$3$l$HF1MM$NF0:n$r$9$k$h$&$K@_7W$5$l$F$$$^$9(B @footnote{@code{buffer-undo-list} $B$K(B Emacs $B$,A^F~$7$?%"%s%I%%$N6-L\$NL\0u$r(B $BJN,7A(B $B$H$7$F$N8+=P$78l$rA^F~$9$k$?$a$N%b!<%I$G$9$+$i!"D9$$8+=P$78l$rA^F~$9$k$3(B $B$H$O$"$^$j$J$$$H9M$($i$l$^$9!#(B}$B$N3F4X?t$K%P%$%s%I$5$l$?%-!]$H$7$F$$$^$9(B @footnote{`20' $B$O(B Emacs $B$N%=!<%9%U%!%$%k$N0lIt$G$"$k(B @file{keyboard.c} $B$KDj$a$i$l$?%^%8%C%/%J%s%P!<$H0lCW$7$^$9!#(B}$B!#(B $B$?$@$7!"$3$l$i$N(B DDSKK $B$N%3%^%s%I$H(B Emacs $BK\Mh$N(B @code{self-insert-command} $B$r?%$j:.$<$F%-!l9g(B @footnote{$B$+$J%b!<%I$G$NF~NOCf!"%"%9%-!<%b!<%I$K0\9T$7$FF~NO$7$?>l9g$J$I(B $B$,$3$l$K$"$?$j$^$9!#(B}$B$O!"$3$N%(%_%e%l!<%7%g%s$O@5>o$KF0:n$7$^$;$s$,!"$3(B $B$l$O8=:_$N;EMM$G$9!#(B @example @group @kbd{a i u e o k a k i k u k e k o s a s i s u s e s o t a t i t u t e t o} ------------------------- Buffer: foo ------------------------- $B$"$$$&$($*$+$-$/$1$3$5$7$9$;$=$?$A$D$F$H(B@point{} ;@r{$BO"B3$9$k(B20$BJ8;z!#(B} ------------------------- Buffer: foo ------------------------- @end group @group @kbd{C-_} ------------------------- Buffer: foo ------------------------- @point{} ;@r{20$BJ8;zA4$F$,%"%s%I%%$NBP>]$H$J$k!#(B} ------------------------- Buffer: foo ------------------------- @end group @group @kbd{a i u e o k a k i k u k e k o s a s i s u s e s o t a t i t u t e t o n a} -------------------------- Buffer: foo -------------------------- $B$"$$$&$($*$+$-$/$1$3$5$7$9$;$=$?$A$D$F$H$J(B@point{} ;@r{$BO"B3$9$k(B21$BJ8;z!#(B} -------------------------- Buffer: foo -------------------------- @end group @group @kbd{C-_} -------------------------- Buffer: foo -------------------------- $B$"$$$&$($*$+$-$/$1$3$5$7$9$;$=$?$A$D$F$H(B@point{} ;@r{$B:G8e$N(B1$BJ8;z$N$_$,%"%s%I%%$NBP>]$H$J$k!#(B} -------------------------- Buffer: foo -------------------------- @end group @end example @node $BJQ49!"3NDj$NA08e(B @section $BJQ49!"3NDj$NA08e(B @menu * $B%]%$%s%H$rLa$7$F"&%b!<%I$X(B:: $B"&%b!<%I$KF~$jK:$l$?(B! * $BD>A0$N3NDj$r:FJQ49(B:: $B4V0c$C$F3NDj$7$?$i!":FJQ49(B * $B<+F0JQ493+;O(B:: @key{SPC} $B$r2!$5$J$/$F$b!V$r!W!V!#!W$GJQ493+;O!#(B * $B0EL[$N3NDj$N%?%$%_%s%0(B:: $BJQ49$N8e!"$$$D3NDj$9$k$+!#(B * $B@Q6KE*$J3NDj(B:: $B8uJd$,0l$D(B? $B$8$c3NDj$G$7$g!#(B * $B3NDj<-=q(B:: $BFCDj$N8l$O0lH/3NDj(B @end menu $B4XO";v9`(B: @itemize @bullet @item @w{@ref{$BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B}} @item @w{@ref{$BJQ490LCV$N;XDjJ}K!(B}} ($BBgJ8;z0J30$GJQ490LCV$r;XDj$9$kJ}K!$r@bL@(B) @end itemize @node $B%]%$%s%H$rLa$7$F"&%b!<%I$X(B @subsection $B%]%$%s%H$rLa$7$F"&%b!<%I$X(B @cindex $B8e$+$i"&%b!<%I$KF~$kJ}K!(B @findex skk-backward-and-set-henkan-point @vindex skk-allow-spaces-newlines-and-tabs $B"&%b!<%I$KF~$jK:$l$?>l9g$K!"A0$NJ8;zNs$K$D$$$FAv::$7!"(B $BF1r7o$KL5;k$5$l$^$9!#$?$@$7!"$R$i$,$J$N>l9g$O(B @samp{$B$r(B} $B$,!"%+%?%+%J(B $B$N>l9g$O(B @samp{$B%r(B} $B$,8+$D$+$C$?;~E@$GJQ493+;O0LCV$NAv::$r;_$a!""&%b!<%I$K(B $BF~$j$^$9!#JQ493+;O%]%$%s%H$r(B @samp{$B$r(B}$B!"(B@samp{$B%r(B} $B$ND>A0$G;_$a$k$N$O!"$?$$(B $B$F$$$=$ND>8e$+$iC18l$,;O$^$k$+$i$G$9!#(B $B0J>e$O(B @kbd{M-Q} $B$r0z?t$rM?$($J$$$Gl9g$G$9!#0lJ}$G!"(B@kbd{C-u 5 M-Q} $B$N$h$&$K0z?t$rEO$7$Fl9g$OJ8;zr7o$K%]%$%s%H$rLa$7$^$9!#(B @vindex skk-allow-spaces-newlines-and-tabs $B8eJ}$K%]%$%s%H$rLa$9ESCf$G9TF,$KE~C#$7$?>l9g$O!"99$K>e$N9T$K$D$$$F!"9TKv(B $B$NJ8;zNs$+$iF1MM$NAv::$r9T$$!"I,MW$,$"$l$P99$K%]%$%s%H$rLa$7$^$9!#$3$&$7(B $B$?!V9T$rD6$($F$NAv::!W$r$d$a$k$?$a$K$O!"JQ?t(B @code{skk-allow-spaces-newlines-and-tabs} $B$NCM$r(B @code{nil} $B$K@_Dj$7$^$9!#(B @node $BD>A0$N3NDj$r:FJQ49(B @subsection $BD>A0$N3NDj$r:FJQ49(B @cindex $B3NDj%"%s%I%%(B @cindex $B:FJQ49(B @kindex M-x skk-undo-kakutei $B0lHV:G8e!JD>6a!K$N3NDj$rC$7$F!":FJQ49$9$k$3$H$,$G$-$^$9!#(B $B$3$l$r(B@b{$B!V3NDj%"%s%I%%!W(B}$B$H8F$S$^$9!#(B $BNc$($P!"<-=q%(%s%H%j$,(B @example $B$3$&$3$&(B /$B9b9;(B/$B9'9T(B/$B9R9T(B/ @end example @noindent $B$N$h$&$K$J$C$F$$$k$H$7$^$9!#(B @example @kbd{K o u k o u @key{SPC}} @group ------ Buffer: foo ------ $B"'9b9;(B@point{} ------ Buffer: foo ------ @end group @kbd{s u r u} @group ------ Buffer: foo ------ $B9b9;$9$k(B@point{} ------ Buffer: foo ------ @end group @kbd{M-x skk-undo-kakutei} @group ------ Buffer: foo ------ $B"'9'9T(B@point{}$B$9$k(B ------ Buffer: foo ------ @end group @end example @noindent $B$3$NNc$G$O!"(B@samp{$B9b9;(B} $B$N3NDj$rC$7$F$$$^$9!#$9$k$H!"<-=q$NBh(B $B0l8uJd$G$"$k(B @samp{$B9b9;(B} $B$r$H$P$7$F!"8e$G$J$/$H$bM-8z$G$9!#(B $B$h$j@53N$K$O!"l9g$OL^O@!"!V0EL[$N3NDj(B $B!W$r9T$C$?>l9g$bF1MM$G$9!#(B}$B$r9T$&$^$G$O3NDj$K4X$9$k>pJs$,J];}$5$l$F$$$k(B $B$N$G!"3NDj%"%s%I%%$9$k$3$H$,$G$-$^$9!#(B $B$^$?!"JQ49!"3NDj$K4XO"$7$J$$J8;zNs$O!"3NDj%"%s%I%%$r9T$C$F$b:o=|$5$l$J(B $B$$$h$&$K@_7W$5$l$F$$$^$9!#>e5-$NNc$G$O!"(B@samp{$B$9$k(B} $B$,$=$N$^$^%+%l%s%H%P(B $B%C%U%!$K;D$C$F$$$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-undo-kakutei-return-previous-point $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"3NDj%"%s%I%%=hM}$,40N;$7$?8e$K!"(B $B3NDj%"%s%I%%=hM}$ND>A0$N0LCV$K%+!<%=%k$,La$j$^$9!#(B $B>e$NNc$N>l9g!"3NDj%"%s%I%%=hM}$,40N;$7$?8e$N%+!<%=%k0LCV$O!"%G%U%)%k(B $B%H(B @code{nil} $B$G$O(B @samp{$B9'9T(B} $B$ND>8e$N$^$^$G$9$,!"(B@code{non-nil} $B$G$"$l(B $B$P(B @samp{$B$9$k(B} $B$ND>8e$KI|5"$7$^$9!#(B @end defvr @node $B<+F0JQ493+;O(B @subsection $B<+F0JQ493+;O(B $B"&%b!<%I$G8+=P$78l$rF~NO$7$F$$$k$H$-$K!V$r!W$d!V!#!W$J$I$NJ8;z$rBG80$9$k(B $B$H!"(B@key{SPC} $B$r2!$7$?$+$N$h$&$KJQ49$r3+;O(B@footnote{$B"&%^!<%/$+$i%]%$%s%H(B $B$ND>A0$NJ8;z$^$G$r8+=P$78l$H$7$^$9!#:G8e$KF~NO$5$l$?J8;z!J!V$r!W$d!V!#!W(B $B!K$O8+=P$78l$K$O4^$^$l$^$;$s!#(B}$B$7!""'%b!<%I$KF~$k$h$&$K$J$C$F$$$^$9!#(B @example @kbd{K a n j i} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @group @kbd{w o} ------ Buffer: foo ------ $B"'4A;z$r(B@point{} ------ Buffer: foo ------ @end group @end example @vindex skk-auto-okuri-process $BJQ?t(B @code{skk-auto-okuri-process} $B$NCM$r(B @code{non-nil} $B$K@_Dj$7$F(B $BAw$j(B $B2>L>$N<+F0=hM}(B @w{(@pxref{$BAw$j2>L>$N<+F0=hM}(B})} $B$r9T$C$F$$$k>l9g$O!"0J2<(B $B$N$h$&$JJQ49$b2DG=$G$9!#$?$@$7!"8D?M<-=q$K(B @samp{$B$G$-(Br /$B=PMh(B/[$B$k(B/$B=PMh(B/]/} $B$H$$$&$h$&$J%(%s%H%j$,$"$k$H2>Dj$7$^$9!#(B @example @kbd{D e k i r u n n d e s u} @group ------ Buffer: foo ------ $B"&$G$-$k$s$G$9(B ------ Buffer: foo ------ @end group @group @kbd{.} ------ Buffer: foo ------ $B"'=PMh$k$s$G$9!#(B ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-auto-start-henkan-keyword-list $B$3$NJQ?t$NCM$O!"C18l$dJ8@a$N6h@Z$j$H$J$k$h$&$JJ8;zNs$N%j%9%H$G$9!#(B $B%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9!#(B @end defvr @lisp @group ("$B$r(B" "$B!"(B" "$B!#(B" "$B!%(B" "$B!$(B" "$B!)(B" "$B!W(B" "$B!*(B" "$B!((B" "$B!'(B" ")" ";" ":" "$B!K(B" "$B!I(B" "$B![(B" "$B!Y(B" "$B!U(B" "$B!S(B" "$B!Q(B" "$B!O(B" "$B!M(B" "@}" "]" "?" "." "," "!" ) @end group @end lisp @defvr {$B%f!<%6JQ?t(B} skk-auto-start-henkan $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!"K\@a$G@bL@$7$?<+F0JQ493+;O5!G=(B $B$rL58z$K$7$^$9!#%G%U%)%k%H$O(B @code{t} $B$G$9!#(B @end defvr @node $B0EL[$N3NDj$N%?%$%_%s%0(B @subsection $B0EL[$N3NDj$N%?%$%_%s%0(B @cindex $B0EL[$N3NDj(B @vindex skk-process-okuri-early $BI8=`$N@_Dj$G$O!"3NDj$,:Q$`A0$K$A$K3NDj$5$l$^$9(B @footnote{$B@53N$K$O!"0u;z2DG=$JJ8;z$^$?$O(B @key{RET} $B$,F~NO$5$l$?$H$-$G$9!#(B}$B!#(B $B$3$l$r!V0EL[$N3NDj!W$H8F$s$G$$$^$9!#6qBNE*$K$O0J2<$N$h$&$K$J$j$^$9!#(B @example @kbd{K a k u t e i} @group ------ Buffer: foo ------ $B"&$+$/$F$$(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'3NDj(B@point{} ------ Buffer: foo ------ @end group @kbd{s} @group ------ Buffer: foo ------ $B3NDj(Bs@point{} ; $B0EL[$N3NDj(B ------ Buffer: foo ------ @end group @kbd{u} @group ------ Buffer: foo ------ $B3NDj$9(B@point{} ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-kakutei-early $B$3$NJQ?t$NCM$r(B @code{nil} $B$K$9$k$H!"!V0EL[$N3NDj!W$rCY$i$;$^$9!#(B $B6qBNE*$K$O!"(B @itemize @bullet @item $B3g8L(B @kbd{(} @kbd{)} @kbd{[} @kbd{]} $B$NF~NO;~(B @item $B6gFIE@(B @kbd{,} @kbd{.} $B$NF~NO;~(B @item $Bl9g$O(B @code{skk-process-okuri-early} $B$NCM$r(B @code{nil} $B$K$9$kI,MW$,$"$j$^(B $B$9!#(B}$B!#(B @end defvr @example @kbd{K a k u t e i} @group ------ Buffer: foo ------ $B"&$+$/$F$$(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'3NDj(B@point{} ------ Buffer: foo ------ @end group @kbd{s} @group ------ Buffer: foo ------ $B"'3NDj(Bs@point{} ------ Buffer: foo ------ @end group @kbd{u r u} @group ------ Buffer: foo ------ $B"'3NDj$9$k(B@point{} ------ Buffer: foo ------ @end group @kbd{.} @group ------ Buffer: foo ------ $B3NDj$9$k!#(B@point{} ; $B0EL[$N3NDj(B ------ Buffer: foo ------ @end group @end example @node $B@Q6KE*$J3NDj(B @subsection $B@Q6KE*$J3NDj(B $BJQ498uJd$,0l$D$7$+8+$D$+$i$J$$>l9g$O<+F0E*$K3NDj$9$k!"$H$$$&@_Dj$,$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-kakutei-when-unique-candidate $B$3$NCM$,(B @code{non-nil} $B$N>l9g!"$3$N5!G=$,M-8z$K$J$j$^$9!#(B @code{t} $B$G$"$l$PAw$j$"$jJQ49!"Aw$j$J$7JQ49!"(Babbrev $B%b!<%I$G$NJQ49!"A4$F(B $B$G$3$N5!G=$,M-8z$K$J$j$^$9!#(B $B$^$?!"(B@samp{okuri-ari}, @samp{okuri-nasi}, @samp{abbrev} $B$rMWAG$H$9$k%j%9(B $B%H$G$"$k$3$H$b$G$-$^$9!#$=$N>l9g$OJQ49BP>]$,$=$N>r7o$K9gCW$7$?>l9g$N$_3N(B $BDjJQ49$,5!G=$7$^$9!#(B $BNc(B: @samp{'(okuri-nasi abbrev)} $B$3$N5!G=$O!"A4$F$N<-=q$r8!:w$7$?>e$GJQ498uJd$,M#0l$+H]$+$rD4$Y$^$9!#$=$N(B $B$?$a!"(B@code{skk-search-prog-list} $B$NFbMF$K$h$C$F$O%l%9%]%s%9$,0-$/$J$k2D(B $BG=@-$,$"$j$^$9!#(B(@w{@pxref{$B<-=q$N8!:wJ}K!$N@_Dj(B}} @end defvr @defvr {$B%f!<%6JQ?t(B} skk-kakutei-search-prog-limit $B$3$NCM$,?tCM$G$"$C$?>l9g!"@Q6KE*$J3NDj(B(@code{skk-kakutei-when-unique-candidate}) $B$K(B $B$*$1$k!VJQ498uJd$,M#0l$+H]$+!W$NH=Dj$r(B @code{skk-search-prog-list} $B$N@hF,$+(B $B$i?t$($F$3$N8D?t$^$G$N<-=q$K@)8B$7$^$9!#(B $B?tCM0J30$G$"$l$P!"L5@)8B$KA4$F$N<-=q$r8!:wBP>]$H$7$^$9!#(B @end defvr @node $B3NDj<-=q(B @subsection $B3NDj<-=q(B @cindex $B3NDjJQ49(B @cindex $B3NDj<-=q(B @findex skk-search-kakutei-jisyo-file @vindex skk-kakutei-jisyo $BFCDj$N8l$O!"JQ49$7$?$iB(:B$K3NDj$5$;$k;v$,$G$-$^$9!#$3$l$r(B@b{$B3NDjJQ49(B}$B$H(B $B8F$S!"MxMQ$9$k$K$O!V3NDj<-=q!W$rMQ0U$7$^$9!#Nc$($P!"(B @example $B$8$7$g(B /$B<-=q(B/ @end example @noindent $B$H$$$&%(%s%H%j$,3NDj<-=q$K$"$C$?$H$7$^$9!#$3$N$H$-!"(B @example @group @kbd{Z i s h o} @group ------ Buffer: foo ------ $B"&$8$7$g(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B<-=q(B@point{} ------ Buffer: foo ------ @end group @end group @end example @cindex $B0EL[$N3NDj(B @noindent $B$N$h$&$K!"(B@key{SPC} $B$r2!$7$?$@$1$G$$$-$J$j3NDj$7$^$9!#%(%s%H%j$N8uJd$,$R(B $B$H$D$@$1$@$+$i$G$9!#(B $B3NDj<-=q0J30$N<-=q$KEPO?$5$l$F$$$k$G$"$m$&F12;0[5A8l$rF@$k$K$O!"3NDjJQ49(B $B$ND>8e$K(B @kbd{x} $B$r%?%$%W$7$^$9!#$9$k$H!""'%b!<%I$KLa$C$Fl9g$O(B $B!"6&M-<-=q$HF1MM!"%=!<%H$7$FFsJ,8!:w$r9T$$!"%5%$%:$,>.$5$1$l$PE,Ev$JG[CV(B $B$GD>@~E*8!:w$r9T$&$3$H$r$*4+$a$7$^$9!#H$7$F$/$@$5$$!#(B@* @w{@ref{$B<-=q8!:w$N$?$a$N4X?t(B}}@* @w{@ref{$B%(%s%H%j$NG[Ns(B}} }$B!#(B $B$3$N<-=q$O!"I8=`$NG[I[%Q%C%1!<%8$K$O4^$^$l$F$$$J$$$N$G!";HMQ$9$k$N$G$"$l(B $B$P%f!<%6B&$GMQ0U$9$kI,MW$,$"$j$^$9!#(B@* (@w{@pxref{$B<-=q$N=q<0(B}}) @code{nil} $B$G$"$l$P!"3NDjJQ49$O9T$o$l$^$;$s!#(B @end defvr @node $BAw$j2>L>4XO"(B @section $BAw$j2>L>4XO"(B SKK $B$NAw$j2>L>$N=hM}$O!"9%$_$,J,$+$l$k$H$3$m$G$9!#?'!9$J(B $BBP:v$,MQ0U$5$l$F$$$^$9$N$G!";n$7$F$_$F2<$5$$!#(B @menu * $BAw$j2>L>$N87L)$J%^%C%A(B:: $B!VB?$-$$!WBP:v!"$=$N(B 1 * $BAw$j2>L>$NM%@hE*$J%^%C%A(B:: $B!VB?$-$$!WBP:v!"$=$N(B 2 * $BAw$j2>L>$N<+F0=hM}(B:: $BAw$j2>L>$,$"$C$F$b!"8e$+$i(B SPC * $BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B:: @end menu @node $BAw$j2>L>$N87L)$J%^%C%A(B @subsection $BAw$j2>L>$N87L)$J%^%C%A(B @vindex minibuffer-exit-hook @vindex minibuffer-setup-hook $B:#!"8D?M<-=q$K(B @example $B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/ @end example @noindent $B$H$$$&Aw$j$"$j%(%s%H%j$,$"$k$H2>Dj$7$^$9!#(B $B$3$3$G(B @kbd{O o K i i @key{SPC}} $B$HF~NO$7$?>l9g!"IaDL$O(B @samp{$BBg$-$$(B} $B$H(B @samp{$BB?$-$$(B} $B$H$$$&(B 2 $BDL$j$N8uJd$,=PNO$5$l$^$9$,!"$3$N$&$A(B @samp{$BB?$-$$(B} $B$O8=Be$NF|K\8l$H$7$F@5$7$/$"$j$^$;$s!#$3$N$h$&$J>l9g$K!"=PNO$5$l$k8uJd$r(B $B@5$7$$I=8=$N$_$K9J$j$3$`J}K!$K$D$$$F!"@bL@$7$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-henkan-okuri-strictly @vindex skk-process-okuri-early $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"8+=P$78l$,%^%C%A$9$k$+$I$&(B $B$+$N%A%'%C%/$N>e$K!"Aw$j2>L>$,%^%C%A$9$k$+$I$&$+$N%A%'%C%/$,9T$o$l$^(B $B$9!#7k2L$H$7$FAw$j2>L>$,%^%C%A$7$J$$8uJd$O=PNO$5$l$^$;$s!#>e5-$NNc$G$O!"(B $BAw$j2>L>(B @samp{$B$-(B} $B$,%^%C%A$9$k(B @samp{$BBg$-$$(B} $B$O=PNO$5$l$^$9$,!"(B @samp{$BB?$-$$(B} $B$O=PNO$5$l$^$;$s(B @footnote{$B$3$N5!G=$O!"JQ?t(B @code{skk-process-okuri-early} $B$NCM$r(B @code{non-nil} $B$K@_Dj$7$?>uBV$H6&B8$G$-$^$;$s!#$3$NM}M3$rCN$j$?$$>l9g$O(B @ref{$BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B}$B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B $B8D?M<-=q$NAw$j$"$j%(%s%H%j$,=<L>$N%^%C%A$,87L)$K9T$o$l$^$9!#$3$l$O<-(B $B=qEPO?$N:]4uK>$9$k8uJd$rF@$k$?$a$K$O>c32$H$J$j$^$9!#$=$N$h$&$J>c32$rHr(B $B$1$k$?$a$K$O!"2<5-$N$h$&$K%U%C%/JQ?t$r@_Dj$7$^$9!#$3$l$K$h$j!"<-=qEPO?(B $B;~$@$1$O!"0l;~E*$KAw$j2>L>$N87L)$J%^%C%A$r$7$J$$$h$&$K$J$j$^$9(B @footnote{$BH$5$l$k$N$G!"%_%K%P%C%U%!$N%P%C%U%!%m!<%+%kCM$rJQ99$7$F$b$&$^$/$$$-$^(B $B$;$s!#>-Mh$N%P!<%8%g%s$G$O!"$3$l$r2~NI$7!"<-=q%P%C%U%!$G$NF0:n$K1F6A$9$k(B $B%f!<%6JQ?t$r%P%C%U%!%m!<%+%k2=$G$-$k$h$&$K$9$kM=Dj$G$9!#(B @w{@xref{$B:G?7>pJs(B}.}}$B!#(B @lisp @group (add-hook 'minibuffer-setup-hook (lambda () (when (and (boundp 'skk-henkan-okuri-strictly) skk-henkan-okuri-strictly (not (eq last-command 'skk-purge-jisyo))) (setq skk-henkan-okuri-strictly nil) (put 'skk-henkan-okuri-strictly 'temporary-nil t)))) @end group @group (add-hook 'minibuffer-exit-hook (lambda () (when (and (get 'skk-henkan-okuri-strictly 'temporary-nil) (<= (minibuffer-depth) 1)) (put 'skk-henkan-okuri-strictly 'temporary-nil nil) (setq skk-henkan-okuri-strictly t)))) @end group @end lisp @node $BAw$j2>L>$NM%@hE*$J%^%C%A(B @subsection $BAw$j2>L>$NM%@hE*$J%^%C%A(B @ref{$BAw$j2>L>$N87L)$J%^%C%A(B} $B$G$O!"8+=P$78l$HAw$j2>L>$,0lCW$7$?>l9g$N$_(B $B8uJd$rI=<($7$^$9!#$3$3$G$O!"$=$N>r7o$r4K$a$FM%@hE*$KI=<($9$kJ}K!$r>R2p$7(B $B$^$9(B@footnote{@samp{$BBg$/(B}$B$J$I$N8uJd$O]5F+$7$$$,!"$9$0$KC18lEPO?$KF~$C$F(B $B$7$^$&$N$b7y$J?M$K$*$9$9$a$G$9!#(B}$B!#(B $B:#!"8D?M<-=q$K(B @example $B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/ @end example @noindent $B$H$$$&Aw$j$"$j%(%s%H%j$,$"$k$H2>Dj$7$^$9!#(B $B$3$3$G(B @kbd{O o K i i @key{SPC}} $B$HF~NO$7$?>l9g!"IaDL$O(B @samp{$BBg$-$$(B} $B$H(B @samp{$BB?$-$$(B} $B$H$$$&(B 2 $BDL$j$N8uJd$,=PNO$5$l$^$9$,!"$3$N$&$A(B @samp{$BB?$-$$(B} $B$O8=Be$NF|K\8l$H$7$F@5$7$/$"$j$^$;$s!#$3$N$h$&$J>l9g$K!"=PNO$5$l$k8uJd$r(B $B@5$7$$I=8=$,M%@hE*$K$9$k@_Dj$r>R2p$7$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-henkan-strict-okuri-precedence @vindex skk-henkan-okuri-strictly @vindex skk-process-okuri-early $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"8+=P$78l$HAw$j2>L>$,%^%C%A(B $B$7$?8uJd$rM%@h$7$FI=<($7$^$9!#(B $B>e5-$NNc$G$O(B @samp{$B"&$*$*(B*$B$/(B} $B$rJQ49$7$?$H$-!"$^$:(B @samp{$BB?$/(B} $B$r=PNO$7!"(B $Bl9g$O!"(B@ref{$BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B} $B$r;2>H$7$F$/$@$5$$!#(B}$B!#$^$?JQ?t(B @code{skk-henkan-okuri-strictly} $B$,(B @code{non-nil} $B$N$H$-$O!"$3$NJQ?t$OL5;k$5$l$^$9!#(B @end defvr @node $BAw$j2>L>$N<+F0=hM}(B @subsection $BAw$j2>L>$N<+F0=hM}(B $B$3$N@a$G$O!"!V$"$2$k!W$HF~NO$7$F$+$i(B @key{SPC} $B$r2!$7$F$b!V>e$2$k!W$HJQ49(B $B$9$k5!G=$r>R2p$7$^$9!#(B @menu * $B$I$N$h$&$KJQ49$5$l$k$+(B:: * $B<-=qEPO?$N:]$KCm0U$9$Y$-$3$H(B:: @end menu @node $B$I$N$h$&$KJQ49$5$l$k$+(B @subsubsection $B$I$N$h$&$KJQ49$5$l$k$+(B @defvr {$B%f!<%6JQ?t(B} skk-auto-okuri-process $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"Aw$j2>L>$N<+F0=hM}$,9T$o(B $B$l$^$9!#(B @end defvr $BNc$($P!"(B@kbd{T a t i a g e r u @key{SPC}} $B$HF~NO$7$?>l9g$r9M$($^$9!#(B $B$3$N$H$-!"8!:w$5$l$k8+=P$78l$NJQ2=$rDI$&$H!"(B @example @samp{$B$?$A$"$2$k(B} @result{} @samp{$B$?$A$"$2(Br} @result{} @samp{$B$?$A$"(Bg} @result{} @samp{$B$?$A(Ba} @result{} @samp{$B$?(Bt} @end example @noindent $B$N$h$&$K$J$j$^$9!#2>$K8D?M<-=q%(%s%H%j$,!"(B @example @group $B$?$A$"(Bg /$BN)$A>e(B/[$B$2(B/$BN)$A>e(B/]/[$B$,(B/$BN)$A>e(B/]/ $B$?(Bt /$B7z(B/$BCG(B/$B7P(B/$BN)(B/[$B$D(B/$B7z(B/$BCG(B/$B7P(B/$BN)(B/]/[$B$A(B/$B7z(B/$BCG(B/$B7P(B/$BN)(B/]/[$B$F(B/$B7P(B/$BN)(B/$B7z(B/]/ @end group @end example @noindent $B$N(B 2 $B$D$N%(%s%H%j$r4^$`$H$9$k$H!"8+=P$78l$r8eJ}$+$i=g$K@Z$j5M$a$k2aDx$G(B @samp{$B$?$A$"(Bg} $B$H(B @samp{$B$?(Bt} $B$N(B 2 $B$D$N8+=P$78l$N8!:w;~$K$3$l$i$N<-=q%(%s(B $B%H%j$,%^%C%A$7$^$9!#(B @noindent $B$D$^$j!"(B@samp{$B$?$A$"$2$k(B} $B$H$$$&8+=P$78l$KBP$7!"8+=P$78l$r:G8eHx$+$i(B1$BJ8(B $B;z$:$D@Z$j5M$a!"!V@Z$j5M$a$N7k2L;D$C$?J8;zNs!W$H!"!V@Z$jL>$N<+F0=hM}$N8!:w$K(B $B0\$j$^$9!#(B} @noindent $B(B $BL>$H$7$FL>%V%m%C(B $B%/ItJ,(B @footnote{@ref{$BAw$j$"$j%(%s%H%j$N%V%m%C%/7A<0(B}.}$B$rMxMQ$7$^$9!#(B @samp{$B$?$A$"(Bg} $B$N>l9g$NAw$j2>L>%A%'%C%/$NBP>]$O!"@Z$je(B/] @end example @noindent $B$NItJ,$,$"$k$3$H$+$i!"Aw$j2>L>$H$7$Fl9g$NAw$j2>L>%A%'%C%/$NBP>]$O!"(B@samp{$B$A(B} $B$G$9!#8D?M<-=q$K(B @example [$B$A(B/$B7z(B/$BCG(B/$B7P(B/$BN)(B/] @end example @noindent $B$NItJ,$,$"$k$3$H$+$i!"Aw$j2>L>$H$7$FL>$,%^%C%A$9$k8uJd$,(B @samp{$BN)$A>e(B}$B!"(B@samp{$B7z(B}$B!"(B@samp{$BCG(B}$B!"(B @samp{$B7P(B}$B!"(B@samp{$BN)(B} $B$N(B 5 $B$D$K9J$i$l$^$9!#$3$l$i$OJ8;zNs$ND9$5=g$K>:=g$K(B $B%=!<%H$5$l(B @footnote{$BD9$5=g$K%=!<%H$9$k$N$O!"JQ49$5$l$?ItJ,$,$h$jD9$$8uJd$r@h=g0L(B $B$H$7$F=PNO$9$k$?$a$G$9!#(B}$B!"$=$l$>$l$N8uJd$H3:Ev$N8+=P$78l$+$i@Z$jL>$H$_$J(B $B$7$F=hM}$7$F$$$^$9!#(B}$B$r!"Aw$j2>L>$N<+F0=hM}$N:G=*8uJd$H$7$FJV$7$^$9!#>e(B $B5-$NNc$O!"(B@samp{$BN)$A>e$2$k(B}$B!"(B@samp{$B7z$A$"$2$k(B}$B!"(B@samp{$BCG$A$"$2$k(B}$B!"(B @samp{$B7P$A$"$2$k(B}$B!"(B@samp{$BN)$A$"$2$k(B} $B$N(B 5 $B$D$,:G=*8uJd$K$J$j$^$9!#(B $B<+F0Aw$j5!G=$O!"8D?M<-=q$N$_$r8!:w$7$^$9!#(B $B$3$3$G!"<+F0Aw$j5!G=$ND9=j$r9M$($F$_$k$H!"(B @itemize @bullet @item $BAw$j2>L>$N:G=i$N%m!<%^;zI=8=$rBgJ8;z$G;O$a$kI,MW$,$J$$!#(B @item $BAw$j2>L>$r@53N$K;W$$=P$;$J$$>l9g$KAw$j2>L>$r;XDj$7$J$/$H$bJQ49$G$-(B $B$k!#(B @end itemize $B$J$I$,$"$j$^$9!#0lJ}C;=j$H$7$F$O!"(B @itemize @bullet @item $B0U?^$7$J$$JQ49$r$5$l$k3d9g$,A}$($k!#(B @item $B8D?M<-=q$NAw$j$"$j%(%s%H%j$,IOl9g$O!"<+F0=hM}$,$G$-$J$$2DG=@-(B $B$,9b$$!#(B @end itemize $B$J$I$,9M$($i$l$^$9!#JQ?t(B @code{skk-auto-okuri-process} $B$NCM$r(B @code{non-nil} $B$K@_Dj$7$F$b!"=>MhDL$j$NAw$j$"$jJQ49$bF1;~$K$G$-$^$9$+$i!"(B $B0lEY$3$N5!G=$r;n$7$F$_$k$3$H$r$*4+$a$7$^$9(B @footnote{$B@l$iJd40E*$K<+F0Aw$j=hM}$rMxMQ$9$k$N$G$"$l$P!"(B @code{(skk-okuri-search)} $B$r(B @code{skk-search-prog-list} $B$N:G8e$K$b$C$F$/(B $B$k$H$$$&L>$N<+F0=hM}$r9T$C$F$$$k>l9g(B@footnote{$BJQ?t(B @code{skk-auto-okuri-process} $B$NCM$r(B @code{non-nil} $B$K@_Dj$7$F$$$k!#(B}$B$K(B $B$O!"<-=qEPO?$N:]$KCm0U$9$Y$-$3$H$,$"$j$^$9!#(B $B8D?M<-=q$K8+=P$78l(B @samp{$B$o$?(Bs} $B$K$D$$$F$N%(%s%H%j$,A4$/$J$$>l9g!"$"$k$$(B $B$O8D?M<-=q$N%(%s%H%j$,(B @example $B$o$?(Bs /$BEO(B/[$B$7(B/$BEO(B/]/ @end example @noindent $B$N$h$&$JAw$j2>L>$N%V%m%C%/$r;}$?$J$$>l9g$r9M$($F$_$^$9!#$3$3$G!"(B@kbd{W a t a s i t a @key{SPC}}$B$HF~NO$9$k$H!"Aw$j2>L>$N<+F0=hM}$K$*$$$F$OAw$j2>L>(B $B$,%^%C%A$7$J$$$N$G!"8uJd$,8+$D$+$i$:$K<-=qEPO?%b!<%I$KF~$j$^$9!#(B @example @group @kbd{W a t a s i t a @key{SPC}} ------ Buffer: foo ------ $B"'$o$?$7$?(B ------ Buffer: foo ------ ------ Minibuffer ------- [$B<-=qEPO?(B] $B$o$?$7$?(B@point{} ------ Minibuffer ------- @end group @end example @noindent $B<-=qEPO?%b!<%I$G(B @kbd{W a t a S i t a @key{RET}} $B$HAw$j2>L>$rL@<(E*$KF~(B $BNO$7!"(B@samp{$BEO$7$?(B} $B$HJQ49$7$FEPO?$7$?$H$7$^$9!#$3$N>l9g!"EPO?$9$k8l$N:G(B $B8e$,J?2>L>$G=*$o$k$N$G!"$=$N:G8e$NJ?2>L>$NJ8;zNs(B ($B>e5-$NNc$G$O!"(B@samp{$B$7(B $B$?(B}) $B$,8+=P$78l$N:G8e$H0lCW$9$k$+$rD4$Y$^$9!#0lCW$9$k>l9g$K$O!"<-=q$NEP(B $BO?$rAw$j$"$j%(%s%H%j$H$7$F9T$&$N$+$I$&$+$N3NG'$r5a$a$^$9!#(B @example @group @kbd{W a t a S i t a} ------ Minibuffer ------- [$B<-=qEPO?(B] $B$o$?$7$?(B $BEO$7$?(B@point{} ------ Minibuffer ------- @end group @group @key{RET} -------------------------- Echo Area -------------------------- Shall I register this as okuri-ari word: $B$o$?(Bs /$BEO(B/ ? (y or n) -------------------------- Echo Area -------------------------- @end group @end example @noindent $B$3$N3NG'$KBP$7!"(B@samp{y} $B$H2sEz$7$?>l9g$O!"(B @example $B$o$?(Bs /$BEO(B/[$B$7(B/$BEO(B/]/ @end example @noindent $B$H$$$&<-=q%(%s%H%j$,8D?M<-=q$NAw$j$"$j%(%s%H%j$K=q$-9~$^$l$^$9!#0lJ}(B @samp{n} $B$H2sEz$7$?>l9g$O!"8D?M<-=q$NAw$j$J$7%(%s%H%j$K(B @example $B$o$?$7$?(B /$BEO$7$?(B/ @end example @noindent $B$H$$$&%(%s%H%j$,=q$-9~$^$l$^$9!#K\Nc$N>l9g$O!"(B@samp{y} $B$H2sEz$9$k$N$,@5(B $B2r$G$9!#(B @table @code @item skk-kana-rom-vector @vindex skk-kana-rom-vector @c XXX $B$3$NJQ?t$ODj?t$K$J$C$?!#(B $B$3$NJQ?t$O!"Aw$j2>L>ItJ,$r%m!<%^;z%W%l%U%#%C%/%9$KJ,2r$9$k:]$K!";2>H$5$l(B $B$^$9!#(B @end table $BJQ?t(B @code{skk-kana-rom-vector} $B$N%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9!#(B @example @group ["x" "a" "x" "i" "x" "u" "x" "e" "x" "o" "k" "g" "k" "g" "k" "g" "k" "g" "k" "g" "s" "z" "s" "j" "s" "z" "s" "z" "s" "z" "t" "d" "t" "d" "x" "t" "d" "t" "d" "t" "d" "n" "n" "n" "n" "n" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "m" "m" "m" "m" "m" "x" "y" "x" "y" "x" "y" "r" "r" "r" "r" "r" "x" "w" "x" "x" "w" "n"] @end group @end example $B$3$N%Y%/%H%k$O!"$=$l$>$l2<5-$N$+$JJ8;z$r$=$N%m!<%^;z%W%l%U%#%C%/%9$G8=$7(B $B$?$b$N$G$9!#(B @example @group $B$!(B $B$"(B $B$#(B $B$$(B $B$%(B $B$&(B $B$'(B $B$((B $B$)(B $B$*(B $B$+(B $B$,(B $B$-(B $B$.(B $B$/(B $B$0(B $B$1(B $B$2(B $B$3(B $B$4(B $B$5(B $B$6(B $B$7(B $B$8(B $B$9(B $B$:(B $B$;(B $B$<(B $B$=(B $B$>(B $B$?(B $B$@(B $B$A(B $B$B(B $B$C(B $B$D(B $B$E(B $B$F(B $B$G(B $B$H(B $B$I(B $B$J(B $B$K(B $B$L(B $B$M(B $B$N(B $B$O(B $B$P(B $B$Q(B $B$R(B $B$S(B $B$T(B $B$U(B $B$V(B $B$W(B $B$X(B $B$Y(B $B$Z(B $B$[(B $B$\(B $B$](B $B$^(B $B$_(B $B$`(B $B$a(B $B$b(B $B$c(B $B$d(B $B$e(B $B$f(B $B$g(B $B$h(B $B$i(B $B$j(B $B$k(B $B$l(B $B$m(B $B$n(B $B$o(B $B$p(B $B$q(B $B$r(B $B$s(B @end group @end example @noindent $B$3$l$K=>$&$H!"8+=P$78lCf$NAw$j2>L>$,%m!<%^;z%W%l%U%#%C%/%9$KJ,2r$5$l$k:]!"(B $BNc$($P(B @samp{$B$8(B} $B$O(B @samp{j} $B$K!"(B@samp{$B$A(B} $B$O(B @samp{t} $B$K!"(B@samp{$B$U(B} $B$O(B @samp{h} $B$K!"$=$l$>$lJ,2r$5$l$^$9!#$3$l$i$r$=$l$>$l(B @samp{z}$B!"(B@samp{c}$B!"(B @samp{f} $B$KJQ99$9$k$3$H$b$G$-$^$9!#$=$l$K$OJQ?t(B @code{skk-kana-rom-vector} $B$N3:EvItJ,$r(B "z"$B!"(B"c"$B!"(B"f" $B$KJQ99$7$^$9!#(B @lisp @group (setq skk-rom-kana-vector ["x" "a" "x" "i" "x" "u" "x" "e" "x" "o" "k" "g" "k" "g" "k" "g" "k" "g" "k" "g" "s" "z" "s" "z" "s" "z" "s" "z" "s" "z" "t" "d" "c" "d" "x" "t" "d" "t" "d" "t" "d" "n" "n" "n" "n" "n" "h" "b" "p" "h" "b" "p" "f" "b" "p" "h" "b" "p" "h" "b" "p" "m" "m" "m" "m" "m" "x" "y" "x" "y" "x" "y" "r" "r" "r" "r" "r" "x" "w" "x" "x" "w" "n"]) @end group @end lisp $Bl9g$O!">e5-$HF1MM$K<-=qEPO?$r$7!"(B @example @group Shall I register this as okuri-ari entry: $B$"$j$,(Bs /$BM-2l(B/ ? (y or n) @end group @end example @noindent $B$N3NG'$KBP$7(B @samp{n} $B$H2sEz$7$^$9!#$3$N7k2L!"8D?M<-=q$NAw$j$J$7%(%s%H%j(B $B$K$O!"(B @example $B$"$j$,$5$D$-(B /$BM-2l$5$D$-(B/ @end example @noindent $B$H$$$&%(%s%H%j$,=q$-9~$^$l$^$9!#(B @node $BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B @subsection $BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B @kindex C-x C-j @kindex C-x j @defvr {$B%f!<%6JQ?t(B} skk-process-okuri-early @vindex skk-auto-okuri-process @vindex skk-henkan-okuri-strictly @vindex skk-kakutei-early $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"Aw$j$"$jJQ49$NJQ493+;O$N%?(B $B%$%_%s%0$,Aa$a$i$l$^$9!#$D$^$j!"Aw$j2>L>$N%m!<%^;z%W%l%U%#%C%/%9$NF~NO(B $B;~E@$GJQ49$r3+;O$7$^$9!#(B @example @group @kbd{U g o K} ------ Buffer: foo ------ $B"'F0(Bk ------ Buffer: foo ------ @end group @end example $BAw$j2>L>$,J,$+$i$J$$$^$^JQ49$7$F$$$k$?$a!"8D?M<-=q$,Aw$j2>L>$KBP1~$7$?7A$K(B $B@.D9$7$^$;$s!#$D$^$j(B @samp{$B$&$4(Bk /$BF0(B/} $B$N$h$&$J7ABV$N$^$^$H$J$j$^$9!#$?(B $B$@$7!"(B @example @group $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/]/ @end group @end example @noindent $B$N$h$&$J%(%s%H%j$,4{$K8D?M<-=q$K$"$k>l9g!"$=$l$rGK2u$9$k$3$H$O$"$j$^$;$s(B @footnote{@ref{$B<-=q$N=q<0(B}$B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B $B$3$N%f!<%6%*%W%7%g%s$r(B @code{non-nil} $B$K@_Dj$7$F(B SKK $B%b!<%I$r5/F0$9$k(B $B$H!"N>N)$G$-$J$$%*%W%7%g%s$G$"$k2<5-%*%W%7%g%s$O<+F0E*$K(B @code{nil} $B$K(B $B@_Dj$5$l$^$9!#(B @itemize @bullet @item @code{skk-kakutei-early} @item @code{skk-auto-okuri-process} @item @code{skk-henkan-okuri-strictly} @end itemize $B4{$K(B SKK $B%b!<%I$KF~$C$?8e$G$3$NJQ?t$N@_Dj$rJQ99$7$?>l9g$O!"%+%l%s%H%P%C(B $B%U%!$G(B @kbd{C-x C-j} $B$b$7$/$O(B @kbd{C-x j} $B$r(B 2 $B2s%?%$%W$7$F(B SKK $B%b!<%I$r(B $B5/F0$7D>$9$3$H$G!"$3$l$i$NJQ?t4V$N>WFM$rD4@0$7$^$9!#(B @display @xref{$B0EL[$N3NDj$N%?%$%_%s%0(B, , skk-kakutei-early}. @xref{$BAw$j2>L>$N<+F0=hM}(B, , skk-auto-okuri-process}. @xref{$BAw$j2>L>$N87L)$J%^%C%A(B, , skk-henkan-okuri-strictly}. @end display @end defvr @node $B8uJd$N=g=x(B @section $B8uJd$N=g=x(B skk $B$N=i4|@_Dj$G$O!"JQ49$G3NDj$5$l$?C18l$O!"e0L$KI=<((B * $B8uJd$N=g=x$N8GDj(B:: $B$$$D$bF1$8=g=x$G8uJd$rI=<((B * $B%Y%$%:E}7W$rMQ$$$?3X=,(B:: @end menu $B$3$3$G2r@b$9$k$[$+!"3NDj<-=q(B (@w{@pxref{$B3NDj<-=q(B}}) $B$rMQ$$$?JQ49$b!"8uJd$N=g=x$K1F6A$rM?$($^$9!#(B @node $BJQ49$N3X=,(B @subsection $BJQ49$N3X=,(B @cindex @file{skk-study.el} @vindex skk-study-associates-number @vindex skk-study-search-times @file{skk-study.el} $B$O!"$"$k8l(B A $B$r3NDj$7$?>l9g$K!"(BA $B5Z$S$=$N8+=P$7(B $B8l(B A' $B$KBP$7$F!"D>A0$KJQ49$7$?8l(B B $B$H$=$N8+=P$78l(B B' $B$r4XO"8l$H$7$FEP(B $BO?$7$F$*$-!":FEY8+=P$78l(B A' $B$NJQ49$r9T$C$?$H$-$K!"(BB $B5Z$S(B B' $B$N%Z%"$,D>(B $BA0$N2?2s$+$K3NDj$7$?8l$NCf$K8+$D$+$l$P!"(BA $B$rM%@h$7$F=PNO$9$kC1=c$J3X=,(B $B8z2L$rDs6!$9$k%W%m%0%i%`$G$9!#(B @file{~/.skk} $B$K(B @code{(require 'skk-study)} $B$H=q$$$F(B DDSKK $B$r5/F0$7$F2<(B $B$5$$!#0J9_!"$+$J4A;zJQ49$N3X=,$r;O$a$^$9!#(B $BNc$($P!"(B@samp{$BG_1+$K$O1+$,9_$k(B} $B$HJQ49$7$?>l9g!"(B @itemize @bullet @item @samp{$B1+(B} (@samp{$B$"$a(B}) $B$N4XO"8l(B @expansion{} @samp{$BG_1+(B} (@samp{$B$D$f(B})$B!"(B @item @samp{$B9_$k(B} (@samp{$B$U(Br}) $B$N4XO"8l(B @expansion{} @samp{$B1+(B} (@samp{$B$"$a(B})$B!"(B @end itemize @noindent $B$H$$$&Iw$K!VD>A0$K3NDj$7$?8l!W$r4XO"8l$H$7$F!"8l$H8l$N4XO"@-$r3X=,$7$^$9!#(B $B$3$3$GB3$1$F!"(B@samp{$B;1$r?6$k(B} $B$HJQ49$9$k$H!"8D?M<-=q$,%"%C%W%G!<%H$5$l(B $B$F$7$^$$!"8+=P$78l(B @samp{$B$U(Br} $B$NBh0l8uJd$O(B @samp{$B?6$k(B} $B$K$J$C$F$7$^$$(B $B$^$9!#(B $B$7$+$7!"99$KB3$1$F(B @kbd{A m e @key{SPC} g a H u R u} $B$H(B type $B$9$k$H!"(B @kbd{H u R u} (@samp{$B$U(Br}) $B$KBP$7$F(B @samp{$B1+(B} (@samp{$B$"$a(B}) $B$,4X(B $BO"8l$K$J$C$F$$$k$?$a!"(B@samp{$B$U(Br} $B$HBP$G5-21$5$l$F$$$k(B @samp{$B9_$k(B} $B$KJQ(B $B49$5$l$k$H$$$&$o$1$G$9!#(B $B$G$O!"$^$?$3$3$G(B @samp{$B;1$r?6$k(B} $B$HJQ49$7!"8D?M<-=q$NBh0l8uJd$,(B @samp{$B?6$k(B} $B$K$J$C$?>uBV$G!"(B @display @kbd{A m e @key{SPC} g a T a i r y o u @key{SPC} n i H u R u} @end display @noindent $B$HJQ49$9$l$P(B @kbd{$B$U(Br} $B$O$I$&JQ49$5$l$k$G$7$g$&$+!)(B $B!!:#EY$O(B @samp{$B1+(B} @w{(@samp{$B$"$a(B})} $B$H(B @kbd{$B$U(Br} $B$N4V$K(B @samp{$BBgNL(B} @w{(@samp{$B$?$$$j$g$&(B})} $B$,F~$C$F$$$^$9(B@footnote{@samp{$B$U(Br} $B$KBP$7$F(B @samp{$BBgNL(B} @w{(@samp{$B$?$$$j$g$&(B})} $B$,(B $B4XO"8l$H$7$FJ]B8$5$l$^$9!#L^O@(B @w{(@samp{$B$U(Br})} $B$KBP$9$k(B @samp{$B1+(B} @w{(@samp{$B$"$a(B})} $B$N3X=,$b(B $B$^$@@8$-$F$$$^$9!#(B}$B!#(B $B$C$F!"$3$N>l9g$@$H!"(B2 $B$DA0$N3NDj>pJs$rC5$7$?:]$K(B @samp{$B1+(B} @w{(@samp{$B$"$a(B})} $B8+$D$1!"$3$l$r4XO"8l$H$7$F!"(B@w{@samp{$B$U(Br}} $B$NCM$r(B $B7h$a$h$&$H$9$k$N$G$9!#(B @file{skk-study.el} $B$K4X$9$k$=$NB>$N%*%W%7%g%s$r@bL@$7$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-study-max-distance $B$3$NJQ?t$K$O(B integer $B$r;XDj$7$^$9!#D>A0$K3NDj$7$?%]%$%s%H$H:#2s$NJQ49%](B $B%$%s%H$,$3$N5wN%0J>eN%$l$F$$$k$H3X=,%G!<%?$rC_@Q$7$J$$$h$&$K$7$^$9!#(B $B$3$NJQ?t$O!"I,$:$7$bJ8>O$,%P%C%U%!$N(B @code{point-min} $B$+(B $B$i(B @code{point-max} $B$XN.$l$k$h$&$K=q$+$l$k$b$N$G$O$J$/!"%]%$%s%H$rA0$KLa(B $B$7$?$j8e$X0\F0$7$?$j$7$F=q$+$l$k$3$H$rA[Dj$7$F$$$^$9!#(B $B$3$NJQ?t$K(B integer $B$r@_Dj$9$k$H!"D>A0$NJQ49$h$j$bA0$N%]%$%s%H$GJQ49$7$?(B $B>l9g$K3X=,%G!<%?$rC_@Q$7$J$$$h$&$K$7$^$9!#$3$NJQ?t$K(B @code{nil} $B$r;XDj$9(B $B$k$HD>A0$K3NDj$7$?%]%$%s%H$H$N5wN%$r9MN8$;$:$K3X=,$7$^$9!#$3$NJQ?t$N%G%U(B $B%)%k%HCM$O(B 30 $B$G$9!#(B $B$J$*!"$3$NJQ?t$NCM$K$+$+$o$i$:!"D>A0$NJQ49%P%C%U%!$H8=:_JQ49$r9T$C$F$$$k(B $B%P%C%U%!$,0[$J$k>l9g$O3X=,%G!<%?$rC_@Q$7$^$;$s!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-first-candidate $B$3$NJQ?t$,(B @code{non-nil} $B$G$"$l$P!"Bh0l8uJd(B $B$G3NDj$7$?:]$b3X=,$7$^$9!#(B@code{nil} $B$G$"$l$P!"Bh0l8uJd$G3NDj$7$?$H$-(B $B$N$_3X=,%G!<%?$rC_@Q$7$^$;$s!#3X=,%G!<%?$r$G$-$k$@$1>.$5$/$7$?$$>l9g!"(B $B$3$NJQ?t$r(B @code{nil} $B$K$9$k$H8z2L$,$"$k$+$b$7$l$^$;$s!#(B $B$3$NJQ?t$N%G%U%)%k%HCM$O(B @code{t} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-file $B3X=,7k2L$rJ]B8$9$k%U%!%$%kL>$G$9!#(B $B$3$NJQ?t$N%G%U%)%k%HCM$O(B @file{~/.skk-study} $B$G$9!#(B $BJQ?t(B @code{skk-user-directory} $B$+$i$b@_Dj$,$G$-$^$9!#(B (@w{@pxref{$B@_Dj%U%!%$%k(B}}) @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-backup-file @file{~/.skk-study} $B$N%P%C%/%"%C%W%U%!%$%k$G$9!#(B $B$3$NJQ?t$N%G%U%)%k%HCM$O(B @file{~/.skk-study.BAK} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-sort-saving $B3X=,%G!<%?$N%G!<%?9=B$$K4X$9$k$b$N$G$9!#$3$NJQ?t$NCM$,(B @code{non-nil} $B$G(B $B$"$l$P3X=,7k2L$r%=!<%H$7$F%;!<%V$7$^$9!#$3$NJQ?t$,1F6A$r5Z$\$9$N$O3X=,%G(B $B!<%?$NC1$J$k8+1G$($NLdBj$@$1$G$9!#(B $B$3$NJQ?t$N%G%U%)%k%HCM$O(B @code{nil} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-check-alist-format $B3X=,%G!<%?$N%G!<%?9=B$$K4X$9$k$b$N$G$9!#$3$NJQ?t$NCM$,(B @code{non-nil} $B$G(B $B$"$l$P!"3X=,7k2L$NFI$_9~$_;~$KO"A[%j%9%H$N%U%)!<%^%C%H$r%A%'%C%/$7$^$9!#(B $B$3$l$O$rF~NO$7(B $B$F$/$@$5$$!#Nc$($P!"2J3X$NOCBj$r=q$/%P%C%U%!$G$O(B science $B$H!"K!N'$NOCBj(B $B$r=q$/%P%C%U%!$G$O(B law $B$J$I$HF~NO$7$F$/$@$5$$!#(B @kindex M-x skk-study-remove-theme @item M-x skk-study-remove-theme $BITMW$J3X=,%F!<%^$r>C5n$7$^$9!#(B @kindex M-x skk-study-copy-theme @item M-x skk-study-copy-theme $B3X=,%F!<%^$rJ#@=$7$^$9!#(B @end table @node $B8uJd$N=g=x$N8GDj(B @subsection $B8uJd$N=g=x$N8GDj(B skk $B$N=i4|@_Dj$G$O!"JQ49!"A*Br$5$l$?8uJd$O!"@\JT=8$9$k$+!"(B $B%3%^%s%I(B @kbd{M-x skk-edit-private-jisyo} $B$rA0$KJQ49$7$?$P$+$j$NC18l$O!"8D?M<-=q$NAw$j$"$j!?$J$7%(%s%H%j$N0lHV>e$K(B $B$"$j$^$9$N$G!"$9$0$K8+$D$1$k$3$H$,$G$-$^$9!#(B @node $B%Y%$%:E}7W$rMQ$$$?3X=,(B @subsection $B%Y%$%:E}7W$rMQ$$$?3X=,(B @c $B5-:\FbMF$r=<<-=q$K$^$D$o$kF0:n$d@_Dj$r@bL@$7$^(B $B$9!#(B @menu $B<-=q$N@_Dj(B * $B<-=q$N]$H8!:w=g=x$N@_Dj!#(B * Emacs $BIUB0$N<-=q(B:: * $B%5!<%P4XO"(B:: * $B%5!<%P%3%s%W%j!<%8%g%s(B:: @noindent $B<-=q$N4IM}(B * $B<-=q$N=q<0(B:: * $B6/@)E*$K<-=qEPO?%b!<%I$XF~$k(B:: * $B8m$C$?EPO?$N:o=|(B:: $B:o=|$bEPO?$_$?$$$K$G$-$^$9!#(B * $B8D?M<-=q%U%!%$%k$NJT=8(B:: $B8D?M<-=q$rJT=8$9$k%3%^%s%I$,$"$j$^$9!#(B * $B8D?M<-=q$NJ]B8F0:n(B:: $B$$$D8D?M<-=q$,99?7!"J]B8$5$l$k$+!#(B * $BJQ495Z$S8D?M<-=q$K4X$9$kE}7W(B:: @noindent $BB>(B * $B<-=q%P%C%U%!(B:: * $B<-=q%P%C%U%!$NJ8;z%3!<%I$N@_Dj(B:: * $B<-=q%P%C%U%!$N(Bbuffer-file-name:: @end menu @node $B<-=q$No!"8D?M<-=q$h$j$b%5%$%:$,Bg$-$/!">J;q8;$NLL$+$i%f!<%64V$G6&M-$7$F(B $B;2>H$5$l$^$9!#(B $B%f!<%6$NJQ49A`:n$K$h$C$FFbMF$,=q$-BX$($i$l$k$3$H$O$"$j$^$;$s!#(B $B$3$l$i0J30$K$b!"6&M-<-=q$H$7$F;H$($k%U%!%$%k$,G[I[$5$l$F$$$^$9!#(B $B$=$l$>$l$N<-=q$N>\:Y$K$D$$$F$O(B @url{http://openlab.jp/skk/dic.html} $B$r(B $B$4;2>H2<$5$$!#(B @item $B8D?M<-=q(B @cindex $B8D?M<-=q(B @vindex skk-jisyo $BJQ?t(B @code{skk-jisyo} $B$G;XDj$5$l$k%U%!%$%k!#(BDDSKK $B$r0lHV:G=i$K;H$$;O$a$?(B $B$H$-$K%[!<%`%G%#%l%/%H%j$K<+F0E*$K:n$i$l$^$9!#$=$N8e$N;HMQ$K$h$jF|!99o!9(B $B$H%(%s%H%j$,DI2C$5$l!"99?7$5$l$F$$$-$^$9!#(B $B$J$*!":G=i$N8D?M<-=q$H$7$F(B S $B<-=q$r%j%M!<%`$7$F;HMQ$9$k$N$bNI$$$+$b$7$l(B $B$^$;$s!#(B @item @code{skk-initial-search-jisyo} @itemx @code{skk-kakutei-jisyo} @vindex skk-initial-search-jisyo @vindex skk-kakutei-jisyo $B$3$l$i$O6&M-<-=q!"8D?M<-=q$H$$$&6hJ,$N$$$:$l$K$bB0$7$^$;$s!#$3$l$i$O8D?M(B $BKh$K;}$D$b$N$r;HMQ$9$k$+!"%f!<%64V$G6&M-$7$F$$$k$b$N$r;HMQ$7$^$9!#$=$N@-(B $B3J$+$i!"<-=qFbMF$N99?7$O9T$o$l$:!";2>H$N$_9T$o$l$^$9!#$^$?;HMQL\E*$+$i!"(B $BDL>o$O>.$5$$<-=q$r;HMQ$7$^$9!#(B @end table $B8D?M<-=q!"(B@code{skk-initial-search-jisyo}, @code{skk-kakutei-jisyo} $B$O(B Emacs $B$N%P%C%U%!$KFI$_9~$s$G8!:w$r9T$$$^$9!#(B $B6&M-<-=q$O@_Dj$K$h$j(B Emacs $B$N%P%C%U%!$KFI$_9~$s$G;HMQ$9$k$+!"$^$?$O<-=q(B $B%5!<%P7PM3$G;HMQ$7$^$9!#(B @node $B<-=q%U%!%$%k$N;XDj(B @subsection $B<-=q%U%!%$%k$N;XDj(B $B$3$N@a$G$O!"<-=q%U%!%$%k$r;XDj$9$kJQ?t$r@bL@$7$^$9!#(B $B8D?M<-=q$H%P%C%/%"%C%W$N%G%#%l%/%H%j$O!"JQ?t(B @code{skk-user-directory} $B$G(B $B$bJQ99$G$-$^$9!#(B(@w{@pxref{$B@_Dj%U%!%$%k(B}}) @defvr {$B%f!<%6JQ?t(B} skk-kakutei-jisyo $B3NDjJQ49(B(@w{@pxref{$B3NDj<-=q(B}})$B$N$?$a$N<-=q$G$9!#0lHV:G=i$K;2>H$5$l$^$9!#(B $B3NDjJQ49$r$7$J$$;~$O!"=i4|@_Dj$N(B @code{nil} $B$N$^$^$GNI$$$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-initial-search-jisyo $B3NDj<-=q$N8e!"$+$D!"8D?M<-=q$NA0$K8!:w$r9T$&<-=q$G$9!#(B $B$3$N<-=q$rE,Ev$K;XDj$9$k$3$H$K$h$j!":G=i$K=P$F$/$k8uJd$rA`:n$9$k$3$H$,$G(B $B$-$^$9!#Nc$($P!"J#?t$N@lLgMQ8lKh$N<-=q$rMQ0U$7$F$*$$(B $B$F(B @code{skk-initial-search-jisyo} $B$NCM$r@Z$jBX$($k$3$H$K$h$j!"@lLgJ,Ln(B $BKh$N@lLgMQ8l$r@Z$jBX$($FF~NO$9$k$3$H$,$G$-$^$9!#(B $B$3$N<-=q$O!"I8=`$NG[I[%Q%C%1!<%8$K$O4^$^$l$F$$$J$$$N$G!";HMQ$9$k$N$G$"$l(B $B$P%f!<%6B&$GMQ0U$9$kI,MW$,$"$j$^$9!#(B $BITMW$J$i$P!"=i4|@_Dj$N(B @code{nil} $B$N$^$^$GNI$$$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-jisyo $B8D?M<-=q!#(BDDSKK $B$r0lHV:G=i$K5/F0$7$?$H$-!"JQ?t(B @code{skk-jisyo} $B$,;X$9%U(B $B%!%$%k$,B8:_$7$J$1$l$P<+F0E*$K:n$i$l$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-backup-jisyo $B8D?M<-=q$NM=Hw(B ($B%P%C%/%"%C%W(B) $B$G$9!#8!:w$NBP>]$G$O$J$/!"$"$/$^$G8D?M<-=q(B $B$N%P%C%/%"%C%W$H$7$F;XDj$7$F$/$@$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cdb-large-jisyo $B6&M-<-=q$N$&$A(B CDB $B7A<0$KJQ49$7$?<-=q$G$9!#;XDj$7$?>l9g$O(B @code{skk-large-jisyo} $B$h(B $B$j$b@h$K8!:w$5$l$^$9!#(BDDSKK 14.1 $B$+$i$O<-=q%5!<%P$r7PM3$;$:$H$b(B CDB $B7A<0(B $B<-=q%U%!%$%k$rD>@\8!:w$G$-$k$h$&$K$J$j$^$7$?!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-large-jisyo $B6&M-<-=q$N$R$H$D!#%P%C%U%!$KFI$_9~$s$G8!:w$r9T$$$^$9!#(B $BNc$($P(B @code{skk-large-jisyo} $B$K(B S $B<-=q$+(B M $B<-=q$r;XDj$7!"(B @code{skk-aux-large-jisyo} $B$K(B L $B<-=q$r;XDj$9$k!"$H$$$&A*Br;h$b$"$j$^$9!#(B $B$^$?!"<-=q%5!<%P7PM3$N%"%/%;%9$b7h$7$FCY$/$O$J$$$N$G!V6&M-<-=q$O%P%C%U%!$K$O(B $BFI$_9~$^$J$$!W$H$$$&@_Dj$b<+A3$G$"$j!"$3$l$K$O(B @code{skk-large-jisyo} $B$r(B @code{nil} $B$K@_Dj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-aux-large-jisyo $B6&M-<-=q$N$R$H$D!#<-=q%5!<%P$K@\B3$G$-$J$$;~$K%P%C%U%!$KFI$_9~$s$G8!:w$r9T$&(B $B<-=q$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-extra-jisyo-file-list SKK $B$G$O8D?M<-=q$NB>$K!"6&M-<-=q(B (@code{skk-large-jisyo}$B!"(B @code{skk-cdb-large-jisyo}) $B$^$?$O<-=q%5!<%P$r@_Dj$7$FMxMQ$9$k$N$,0lHLE*(B $B$G$9$,!"M9JXHV9f<-=q(B @file{SKK-JISYO.zipcode} $B$r$O$8$a$H$7$?B?:L$J<-=q$b(B $B%a%s%F%J%s%9$5$l$F$$$^$9!#(B $B$3$l$i$N<-=q$rMxMQ$9$k$?$a$KJQ?t(B @code{skk-search-prog-list} $B$r$N%j%9%H$r;XDj$7$^$9(B @footnote{@code{skk-search-prog-list} $B$KEPO?$5$l$F$$$k4X(B $B?t(B @code{skk-search-extra-jisyo-files} $B$,!"(B@code{skk-extra-jisyo-file-list} $B$N(B $B3FMWAG$rC`e5-$NNcCf$N(B @file{SKK-JISYO.JIS3_4} $B$N(B $B$h$&$K!V%U%!%$%kL>$HJ8;z%3!<%I$N%Z%"!W$r5-=R$7$^$9!#(B @end defvr $B$3$l$i$NJQ?t$N0UL#$9$k$H$3$m$O=i4|@_Dj$G$N$b$N$G$9$,!"(B @code{skk-search-prog-list} $B$N@_Dj$GJQ99$9$k$3$H$b$G$-$^$9!#(B (@w{@pxref{$B<-=q8!:w$N$?$a$N4X?t(B}}) @node $B<-=q$N8!:wJ}K!$N@_Dj(B @subsection $B<-=q$N8!:wJ}K!$N@_Dj(B $B<-=q$N8!:wJ}K!$N;XDj$O!"JQ?t(B @code{skk-search-prog-list} $B$G9T$o$l$^$9!#(B $BFC$KI,MW$,L5$1$l$P!"FI$_Ht$P$7$F2<$5$$!#(B @menu * $B<-=q8!:w$N@_Dj$N6qBNNc(B:: * $B<-=q8!:w$N$?$a$N4X?t(B:: @end menu @node $B<-=q8!:w$N@_Dj$N6qBNNc(B @subsubsection $B<-=q8!:w$N@_Dj$N6qBNNc(B @vindex skk-search-prog-list $B$3$N@a$G$O!"(B@code{skk-search-prog-list} $B$N=i4|@_Dj$r<($7!"BgBN(B $B$NN.$l$r@bL@$7$^$9!#(B DDSKK $B$G$O!"J#?t$N<-=q$r07$&$3$H$,2DG=$G$9!#J#?t$N<-=q$,F1;~$K(B $B8!:w$5$l$k$N$G$O$J$/!";XDj$7$?=gHV$K8!:w$7$^$9!#(B @code{skk-search-prog-list} $B$O%j%9%H$G$"$j!"Bg;(GD$K8@$($P!"(B $B3NDj$5$l$k$^$G!"@hF,$NMWAG$+$i=g$K(B lisp $B$H$7$FI>2A$5$l$^$9!#(B @lisp @group ((skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t) (skk-search-jisyo-file skk-initial-search-jisyo 10000 t) (skk-search-jisyo-file skk-jisyo 0 t) (skk-okuri-search) (skk-search-cdb-jisyo skk-cdb-large-jisyo) (skk-search-jisyo-file skk-large-jisyo 10000) (skk-search-server skk-aux-large-jisyo 10000) (skk-search-ja-dic-maybe) (skk-search-extra-jisyo-files) (skk-search-katakana-maybe) (skk-search-sagyo-henkaku-maybe))) @end group @end lisp $B$3$NNc$G$O!"(B @enumerate @item @code{skk-kakutei-jisyo} (@w{@pxref{$B3NDj<-=q(B}}), @code{skk-initial-search-jisyo}, @code{skk-jisyo} ($B8D?M<-=q(B) $B$N=g$K8!:w$r(B $B9T$$!"(B @item $BL>$N<+F0=hM}$r9T$$!"(B(@w{@pxref{$BAw$j2>L>$N<+F0=hM}(B}}) @item $B$=$N8e!"(B@code{skk-cdb-large-jisyo} $B$H(B @code{skk-large-jisyo} $B$N8!:w$r=g(B $B$K9T$$!"(B @item $B:G8e$K(B @code{skk-aux-large-jisyo} $B$K<-=q%5!<%P7PM3$G%"%/%;%9$7$F$$$^$9!#(B @end enumerate $B$3$l$i$N<-=q$N0UL#$K$D$$$F$O!"(B@w{@pxref{$B<-=q%U%!%$%k$N;XDj(B}} $B;2>H!#(B $B$b$73NDj<-=q$G8uJd$,8+$D$+$C$?$i$=$N$^$^<+F0E*$K3NDj$5$l$^$9!#(B1 $B2s(B @key{SPC} $B$r2!$9F0:n$KBP$7!"%W%m%0%i%`B&$G$O?7$?$J8uJd$r8+$D$1$k$^$G>e5-(B $B$NF0:n$r?J$a$^$9!#Nc$($P!"(B @enumerate @item $B3NDj<-=q$G$O8uJd$O8+$D$1$i$l$J$+$C$?$,(B @code{skk-initial-search-jisyo} $B$K8uJd$,$"$k>l9g!"$=$3$G$$$C$?$s;_$^$j%f!<%6$K$=$N8uJd$rI=<($7$^$9!#(B @item $B99$K(B @key{SPC} $B$,2!$5$l$k$H!"o$N8!:w$r9T$&%W%m%0%i%`!#JQ?t(B @code{skk-henkan-key} $B$r8+=P$78l!J8!:wJ8(B $B;zNs!K$H$7$F!"(B FILE $B$rHo8!:wBP>]$H$7$FJQ498!:w$rl9g$O$3$N4X?t$r;HMQ$7$^$9!#(B $BBh#10z?t(B @code{FILE} $B$O!"Ho8!:wBP>]$H$J$k<-=q%U%!%$%k$r;XDj$7$^$9!#(B @code{nil} $B$r;XDj$7$?$H$-$O!"8!:w$r9T$$$^$;$s!#(B @code{FILE} $B$G;XDj$7$?<-=q%U%!%$%k$O(B Emacs $B$N%P%C%U%!$KFI$_9~$^$l$^$9!#(B @cindex $BFsJ,8!:w(B @cindex $BD>@~E*8!:w(B $BBh#20z?t(B @code{LIMIT} $B$OFsJ,8!:w!J%P%$%J%j!&%5!<%A!K$,9T$J$o$l$kNN0h$NBg(B $B$-$5$r;XDj$7$^$9!#0l$D$N8+=P$78l$KBP$9$kJQ49F0:n$KBP$7!"8!:wBP>]$NNN0h$N(B $BBg$-$5(B@footnote{$B!V8!:wNN0h$N@hF,%]%$%s%H!W$H!VF1KvHx%]%$%s%H!W$N:9(B}$B$,Bh#2(B $B0z?t$K;XDj$5$l$??tCM$h$j>.$5$/$J$k$^$G$OFsJ,8!:w$,9T$o$l!":G8e$KD>@~E*8!(B $B:w!J%j%K%"!&%5!<%A(B, search-forward$B!K$,#12s9T$o$l$^$9!#(B $BBh#20z?t$K(B 0 $B$r;XDj$9$k$H!">o$KD>@~E*8!:w$N$_$,9T$o$l$^$9!#(B $B8D?M<-=q(B @code{skk-jisyo} $B$O%=!<%H$5$l$F$*$i$:FsJ,8!:w$,IT2DG=$G$"$k$?$a(B @code{LIMIT} $B$r(B 0 $B$K$7$F2<$5$$!#(B $BBh#30z?t(B @code{NOMSG} $B$,(B @code{nil} $B$J$i$P!"<-=q%U%!%$%k$r%P%C%U%!$K(B $BFI$_9~$`4X?t(B @code{skk-get-jisyo-buffer} $B$N%a%C%;!<%8$r%_%K%P%C%U%!$K=PNO$7(B $B$^$9!#(B@code{non-nil} $B$rM?$($k$H=PNO$7$^$;$s!#(B @end defun @defun skk-search-cdb-jisyo CDB-PATH not documented @end defun @defun skk-search-kakutei-jisyo-file FILE LIMIT &optional NOMSG @cindex $B3NDjJQ49(B @vindex skk-kakutei-henkan-flag @b{$B!V3NDjJQ49!W(B}$B$r9T$&8!:w%W%m%0%i%`!#8!:wBP>]$N<-=q%U%!%$%k$O(B Emacs $B$N(B $B%P%C%U%!$KFI$_9~$^$l$^$9!#8!:wBP>]$N%U%!%$%k$+$i8uJd$r8+$D$1$k$H!"FbIt(B $BJQ?t(B @code{skk-kakutei-henkan-flag} $B$rN)$F$F!"$$$-$J$j3NDj$7$^$9!#$3$N$?$a(B $B%f!<%6!<$,3NDjA`:n$r9T$&I,MW$O$"$j$^$;$s!#(B $B0z?t$N0UL#$O$$$:$l$b(B @code{skk-search-jisyo-file} $B$N>l9g$HF1MM$G$9!#(B @end defun @w{@xref{$B3NDj<-=q(B}.} @defun skk-okuri-search $B7A<0(B: (skk-okuri-search) $B<+F0Aw$j=hM}$r9T$&%W%m%0%i%`!#JQ?t(B @code{skk-auto-okuri-process} $B$NCM(B $B$,(B @code{non-nil} $B$N$H$-$@$15!G=$7$^$9!#(B $B8D?M<-=q$NAw$j$"$j%(%s%H%j$r8!:wBP>]$H$7$F$$$k$N$G!"8D?M<-=q$N%P%C%U%!$r(B $BN.MQ$7$^$9!#$=$N$?$a!"@lMQ$N<-=q%P%C%U%!$O:n$j$^$;$s!#(B @w{@xref{$BAw$j2>L>$N<+F0=hM}(B}.} @end defun @defun skk-search-server FILE LIMIT &optional NOMSG $B<-=q%5!<%P7PM3$G8!:w$9$k%W%m%0%i%`!#(B $B<-=q%5!<%P$,;HMQITG=$K$J$k$H<-=q%U%!%$%k$r(B Emacs $B$N%P%C%U%!$KFI$_9~$s$G(B $B8!:w$r9T$$$^$9!#0z?t$N0UL#$O$$$:$l$b(B @code{skk-search-jisyo-file} $B$H(B $BF1$8$G$9$,!"$3$l$i$O<-=q$r(B Emacs $B$N%P%C%U%!$KFI$_9~$s$@$H$-$N$_MxMQ$5$l$^$9!#(B $B<-=q%5!<%P$,;H$&<-=q%U%!%$%k$N@_Dj$K$D$$$F$O!"(B @itemize @bullet @item @w{@pxref{$B<-=q%5!<%P$r;H$$$?$$$H$-$N@_Dj(B}} @item @w{@pxref{$B%5!<%P4XO"(B}} @end itemize $B$r$4Mw2<$5$$!#(B @end defun @node Emacs $BIUB0$N<-=q(B @subsection Emacs $BIUB0$N<-=q(B GNU Emacs $B$K$O!"(B @file{SKK-JISYO.L} $B$r85$KJQ49$5$l$?(B @file{leim/ja-dic/ja-dic.el} $B$H$$(B $B$&<-=q$,IUB0$7$F$$$^$9!#(B DDSKK 14.2 $B$+$i$O!"$3$N(B @file{ja-dic.el} $B$rMxMQ$7$?$+$J4A;zJQ49(B ($BAw$j$"$j!"(B $BAw$j$J$7!"@\F,<-!"@\Hx<-(B) $B$,2DG=$H$J$j$^$7$?!#(B $B$D$^$j!"(B@file{SKK-JISYO.L} $B$J$I$N<-=q%U%!%$%k$rJLES=`Hw$7$J$/$F$b0l1~(B $B$O(B DDSKK $B$N;HMQ$,2DG=!"$H$$$&$3$H$G$9!#(B DDSKK 14.2 $B$+$iDI2C$5$l$?!V(Bja-dic.el $B8!:w5!G=!W(B(@code{skk-search-ja-dic}) $B$O!"(B @itemize @bullet @item @code{skk-large-jisyo} @item @code{skk-aux-large-jisyo} @item @code{skk-cdb-large-jisyo} @item @code{skk-server-host} @end itemize $B$NA4$F$,L58z$J>l9g$KM-8z$H$J$j$^$9!#(B $B$?$@$7!"(B@file{SKK-JISYO.L} $B$rMxMQ$9$k>l9g$HHf$Y$F1Q?tJQ49$d?tCMJQ49$J$I$,(B $B$G$-$^$;$s!#2DG=$J8B$j(B @file{SKK-JISYO.L} $B$J$I$N<-=q$rMxMQ$9$k$3$H$r?d>)(B $B$7$^$9!#(B $B4XO"9`L\(B: @w{@ref{$B<-=q$NF~lLL$G(B @code{skk-search-ja-dic} $B$rL58z$H$7$^$9!#(B @end defvr @defun skk-search-ja-dic GNU Emacs $B$KIUB0$9$k$+$J4A;zJQ49<-=q(B @file{ja-dic.el} $B$rMQ$$$F8!:w$9$k!#(B $B8=:_$N(B Emacs $B$K$O(B @file{SKK-JISYO.L} $B$r4p$KJQ49$5$l$?(B @file{ja-dic.el} $B$,IUB0$7$F$$$k!#(B $B$3$N<-=q%G!<%?$rMQ$$$FAw$j$"$j!"Aw$j$J$7!"@\F,<-!"@\Hx<-$NJQ49$r9T$&!#(B $B$?$@$7!"(B@file{SKK-JISYO.L} $B$N$h$&$J1Q?tJQ49!"?tCMJQ49$J$I$O$G$-$:!"$^$?!VBg>fIW!W(B $B$N$h$&$KJ#9g8l$H$_$J$7$&$k8lWC$,BgI}$K:o=|$5$l$F$$$k!#(B @end defun @node $B%5!<%P4XO"(B @subsection $B%5!<%P4XO"(B $B<-=q%5!<%P$N4pK\E*$J@_Dj$O!"(B@w{@pxref{$B<-=q%5!<%P$r;H$$$?$$$H$-$N@_Dj(B}} $B$r(B $B$4Mw2<$5$$!#(B @defvr {$B%f!<%6JQ?t(B} skk-servers-list $B$3$NJQ?t$r;H$&$H!"J#?t$N%[%9%H>e$N<-=q%5!<%P$r;H$$J,$1$k$3$H$,$G$-$^$9!#(B $B$3$NJQ?t$NCM$O!"<-=q%5!<%PKh$N>pJs%j%9%H$G$9!#3F%j%9%H$O(B @item $B<-=q%5!<%PL>(B ($B%U%k%Q%9(B) @item $B<-=q%5!<%P$,FI$_9~$`<-=q%U%!%$%kL>(B @item $B<-=q%5!<%P$,;HMQ$9$k%]!<%HHV9f(B @end itemize $B$?$@$7!"<-=q%U%!%$%kL>5Z$S%]!<%HHV9f$O!"<-=q%5!<%P<+?H$,7hDj$9$k$3$H$b$"$k$?$a!"$=$N$h$&$J>l9g$O(B @code{nil} $B$H$7$F9=$$$^$;$s!#(B $BNc$($P!"0J2<$N$h$&$K@_Dj$7$^$9!#(B @lisp @group (setq skk-servers-list '(("host1" "/your/path/to/skkserv" nil nil) ("host2" "/your/path/to/skkserv" nil nil))) @end group @end lisp $B>e5-$N@_Dj$N>l9g!"$^$:(B host1 $B>e$N<-=q%5!<%P$H@\B3$7$^$9!#@\B3$G$-$J$/$J$k$H!"(B $Be$N<-=q%5!<%P$H@\B3$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-server-report-response $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"JQ49;~$K!"<-=q%5!<%P$NAw=P$9$kJ8;z$r(B $Bl9g$K(B @code{call-process} $B$G<-=q%5!<%P%W%m%0%i%`$N5/F0(B $B$r;n$_$^$9!#(B inetd $B7PM3$G5/F0$9$kB?$/$N<-=q%5!<%P$O(B @code{call-process} $B$G5/F0$9$k$3(B $B$H$,$G$-$^$;$s$,!"(B@file{skkserv} $B$N$h$&$K(B @code{call-process} $B$G5/F0$9$k(B $B$3$H$,$G$-$k<-=q%5!<%P$rMxMQ$7$F$$$k>l9g$K$O!"$3$NJQ?t$r(B @code{nil} $B$K@_(B $BDj$9$k$N$,NI$$$+$b$7$l$^$;$s!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-server-remote-shell-program $B$3$NJQ?t$K$O!"%j%b!<%H%7%'%k$N%W%m%0%i%`L>$r;XDj$7$^$9!#%G%U%)%k%H$O!"%7%9%F(B $B%`0MB8@-$r9MN8$9$kI,MW$,$"$k$?$a!"0J2<$N(B Emacs Lisp $B%3!<%I$rI>2A$9$k$3$H(B $B$K$h$j7hDj$5$l$F$$$^$9!#(B @lisp @group (or (getenv "REMOTESHELL") (and (boundp 'remote-shell-program) remote-shell-program) (cond ((eq system-type 'berkeley-unix) (if (file-exists-p "/usr/ucb/rsh") "/usr/ucb/rsh" "/usr/bin/rsh")) ((eq system-type 'usg-unix-v) (if (file-exists-p "/usr/ucb/remsh") "/usr/ucb/remsh" "/bin/rsh")) ((eq system-type 'hpux) "/usr/bin/remsh") ((eq system-type 'EWS-UX/V) "/usr/ucb/remsh") ((eq system-type 'pcux) "/usr/bin/rcmd") (t "rsh"))) @end group @end lisp @end defvr @defun {$B%3%^%s%I(B} skk-server-version $B<-=q%5!<%P$+$iF@$?%P!<%8%g%sJ8;zNs$H%[%9%HL>J8;zNs$rI=<($9$k!#(B @example (skk-server-version) @print{} SKK SERVER version (wceSKKSERV) 0.2.0.0 ($B%[%9%HL>(B foo:192.168.0.999: ) @end example @end defun @node $B%5!<%P%3%s%W%j!<%8%g%s(B @subsection $B%5!<%P%3%s%W%j!<%8%g%s(B Server completion $B$KBP1~$7$?<-=q%5!<%P$G$"$l$P!"8+=P$78l$+$i;O$^$kA4$F$N8l6g(B $B$N8!:w$,2DG=$G$9!#(B @defun skk-comp-by-server-completion $B$3$N4X?t$r(B @code{skk-completion-prog-list} $B$NMWAG$KDI2C$9$k$H!""&%b!<%I$K$*(B $B$$$F8+=P$78lJd40$r(B $B$l!"(B@samp{/} $B$K$h$C$F6h@Z$i$l$F$$$^$9!#(BSKK $B$G$O!"8+=P$78l$H8uJd72$r9g$o(B $B$;$?(B @w{@samp{$B$F$s(B /$BE@(B/$B!&(B/$BE7(B/}} $B$N0l9T$r(B@b{$B!V%(%s%H%j!W(B}$B$H8F$S$^$9!#(B @cindex $B%(%s%H%j(B $B<-=q$OC1=c$J%F%-%9%H%U%!%$%k$G!"I,$:2<5-$N(B 2 $B$D$N9T$r;}$C$F$$$^$9!#(B @example @group ;; okuri-ari entries. ;; okuri-nasi entries. @end group @end example @noindent $B$3$N(B 2 $B$D$N9T$O!"$=$l$>$lAw$j2>L>$"$j!"Aw$j2>L>$J$7$N%(%s%H%j$N3+;OCOE@(B $B$r<($9%^!<%/$G$9!#(B @samp{;; okuri-ari entries.} $B$^$G$N9T$G(B @samp{;} $B$r9T(B $BF,$K;}$D9T$O%3%a%s%H9T$H$7$FL5;k$5$l$^$9!#(B@samp{;; okuri-ari entries.} $B0J9_$K%3%a%s%H9T$r4^$`$3$H$O$G$-$^$;$s!#(B @w{@samp{;; okuri-ari entries.}} $B$H(B @w{@samp{;; okuri-nasi entries.}} $B$N(B $B4V$K0O$^$l$?>eH>J,$NItJ,$,Aw$j2>L>$"$j$N%(%s%H%j$G$9!#$3$l$r(B@b{$B!VAw$j$"(B $B$j%(%s%H%j!W(B}$B$H8F$S$^$9!#(B @cindex $BAw$j$"$j%(%s%H%j(B @w{@samp{;; okuri-nasi entries.}}$B0J2<$N2J,ItJ,$,Aw$j2>L>$J$7$N%(%s%H(B $B%j$G$9!#$3$l$r(B@b{$B!VAw$j$J$7%(%s%H%j!W(B}$B$H8F$S$^$9!#(B @cindex $BAw$j$J$7%(%s%H%j(B @cindex $BAw$j$"$jJQ49(B @cindex $BAw$j$J$7JQ49(B $BAw$j$"$j%(%s%H%j$r8!:w$9$kJQ49$r(B@b{$B!VAw$j$"$jJQ49!W(B}$B!"Aw$j$J$7%(%s%H%j$r(B $B8!:w$9$kJQ49$r(B@b{$B!VAw$j$J$7JQ49!W(B}$B$H8F$S$^$9!#(BSKK $B$G$OAw$j2>L>$NM-L5$,JQ(B $B49J}K!$N(B 1 $B$D$NL>$,$"$kJQ49$G$OAw$j$"$j%(%s%H(B $B%j$N$_$,8!:w$5$l!"Aw$j2>L>$,$J$$JQ49$G$OAw$j$J$7%(%s%H%j$N$_$,8!:w$5$l$^(B $B$9!#(B 1 $B$D$N8+=P$78l$K$D$$$F$N%(%s%H%j$O(B 1 $B9TFb$K=q$+$l$^$9!#(B2 $B9T0J>e$K$^$?$,(B $B$k$3$H$O$G$-$^$;$s!#2~9T$r4^$`8uJd$K$D$$$F$O!"(B@code{(concat "$B2~(B\n$B9T(B")} $B$N$h$&$K!"I>2A$9$k$H2~9T$r3:Ev8D=j$KA^F~$9$k$h$&$J(B Lisp $B%W%m%0%i%`(B (@w{@pxref{$B%W%m%0%i%`L>ItJ,$O!"Aw$j2>L>$r%m!<%^;zI=8=$7$?$H$-$N(B 1 $BJ8;zL\(B @footnote{$B$"$k$+$JJ8;z$r%m!<%^;zI=8=$7$?$H$-$N(B 1 $BJ8;zL\$r(B@b{$B!V%m!<%^;z%W(B $B%l%U%#%C%/%9!W(B}$B$H8F$S$^$9!#(B}$B$GI=8=$5$l$F$$$^$9!#(B $B$3$N(B 1 $B%(%s%H%j$G(B @samp{$B;}$?(B}$B!"(B@samp{$B;}$A(B}$B!"(B@samp{$B;}$D(B}$B!"(B@samp{$B;}$F(B}$B!"(B @samp{$B;}$H(B} $B$N(B 5 $B$D$N8uJd$KBP1~$7$^$9!#$=$N(B 5 $B$D$N8uJd$NAw$j2>L>$r%m!<%^(B $B;z%W%l%U%#%C%/%9$GI=8=$9$l$P!"$$$:$l$b(B @samp{t} $B$K$J$j$^$9!#(B @node $BAw$j$"$j%(%s%H%j$N%V%m%C%/7A<0(B @subsubsection $BAw$j$"$j%(%s%H%j$N%V%m%C%/7A<0(B $B8D?M<-=q$NAw$j$"$j%(%s%H%j$K$O(B @samp{[} $B$H(B @samp{]} $B$K0O$^$l$?%V%m%C%/$,(B $B$"$j$^$9!#$3$l$O!"$=$N%V%m%C%/$N@hF,$K$"$kJ?2>L>$rAw$j2>L>$Kl9g$O(B @samp{$B$((B} $B$rAw$j2>L>$H$9(B $B$k(B 1 $B$D$N%V%m%C%/$+$i9=@.$5$l$F$$$^$9!#8+=P$78l(B @samp{$B$U$/(Bm} $B$N>l9g$O!"(B @samp{$B$^(B}$B!"(B@samp{$B$_(B}$B!"(B@samp{$B$`(B}$B!"(B@samp{$B$a(B}$B!"(B@samp{$B$b(B} $B$rAw$j2>L>$H$9$k(B 5 $B%V%m%C%/$KJ,$1$i$l$F$$$^$9!#(B @vindex skk-auto-okuri-process @vindex skk-henkan-okuri-strictly $B$3$NAw$j2>L>Kh$N%V%m%C%/ItJ,$O!"(B@code{skk-henkan-okuri-strictly} $B$"$k$$(B $B$O(B @code{skk-auto-okuri-process} $B$N$$$:$l$+$NJQ?t$,(B @code{non-nil} $B$G(B $B$"$k>l9g$K;HMQ$5$l$^$9!#$=$N>l9g!"8!:w$K$*$$$F!"8+=P$78l$N0lCW$K2C$($F!"(B $B99$KAw$j2>L>$b%^%C%A$9$k$+$I$&$+$r%F%9%H$7$^$9!#Nc$($P!"(B @example $B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$7$^$9!#F1$88+=P$78l(B @samp{$B$*$*(Bk} $B$G$"$C$F$b!"Aw$j(B $B2>L>$,(B @samp{$B$-(B} $B$G$"$l$P!"8uJd$O(B @samp{$BBg(B} $B$N$_$G(B @samp{$BB?(B} $B$OL5;k$5$l$^(B $B$9!#(B @footnote{@xref{$BAw$j2>L>$N<+F0=hM}(B, , skk-henkan-okuri-strictly}. @xref{$BAw$j2>L>$N87L)$J%^%C%A(B, , skk-auto-okuri-process}. @xref{$BAw$j2>L>$NM%@hE*$J%^%C%A(B, , skk-henkan-strict-okuri-precedence}. } @vindex skk-process-okuri-early $B8=:_(B @url{http://openlab.jp/skk/dic.html} $B$GG[I[$5$l$F$$$k6&M-<-=q$G$O!"(B @samp{[} $B$H(B @samp{]} $B$r;HMQ$7$?Aw$j2>L>Kh$N%V%m%C%/$N7A<0$KBP1~$7$F$$$^$;$s!#(B $B8D?M<-=q$N$_$,$3$N7A<0$G=q$-9~$^$l$F$$$-$^$9!#(B @code{skk-henkan-okuri-strictly} $B$,(B @code{nil} $B$G$"$C$F$bAw$j2>L>$N%V%m%C(B $B%/7A<0$G=q$-9~$^$l$^$9!#(B@footnote{$B$?$@$7(B @code{skk-process-okuri-early} $B$NCM$,(B @code{non-nil} $B$G$"$l$P!"Aw$j2>L>$r7hDj$9$kA0$KJQ49$r3+;O$9$k$3$H(B $B$K$J$k$N$G!"Aw$j2>L>$rL@<(E*$KF~NO$7$F$$$F$b8D?M<-=q$K$O%V%m%C%/7A<0$O:n(B $B$i$l$^$;$s!#(B} @node $B%(%s%H%j$NG[Ns(B @subsubsection $B%(%s%H%j$NG[Ns(B @cindex $B<-=q$N%=!<%HJ}K!(B $B6&M-<-=q$O!"Aw$j$"$j%(%s%H%j$O(B @w{@samp{;; okuri-ari entries.}} $B$+$i=g(B $B$K2:=g(B}$B$KG[CV$5$l$^$9!#(B $B9_=g!?>:=g$KG[CV$5$l$k$N$O!"<-=q%5%$%:$,Bg$-$$$3$H$KG[N8$7$FFsJ,8!:w(B $B$r9T$&$?$a$G$9(B @footnote{$B%=!<%H$9$k:]$K$O!"8+=P$78l$r(B unsigned-char $B$H8+$J$7$^$9!#(B $B$3$N=g=x$O(B Emacs $B$,(B $B4X?t(B @code{string<} $B$GJ8;zNs$rHf3S$9$k$H$-$N=g=x$G$"(B $B$j!"(BUNIX $B$N(B @command{sort} $B%3%^%s%I$G$NI8=`$N=g=x$H$O0[$J$j$^$9!#(B Emacs $B$N%3%^%s%I(B @code{sort-lines}$B$rMQ$$$l$P%U%!%$%k$r$3$N=g=x$G%=!<%H$9(B $B$k$3$H$,$G$-$^$9!#(BEmacs $B$N%3%^%s%I(B @code{sort-columns} $B$OFbItE*$K(B UNIX $B%3(B $B%^%s%I$N(B @command{sort} $B$r;H$C$F$$$k$N$G!"<-=q$N%=!<%H$K$O;H$($^$;$s!#(B}$B!#(B $B0lJ}!"8D?M<-=q$O!"0lHV:G8e$KJQ49$5$l$?8l$,:G$b$l$N%(%s%H%j$,(B @w{@samp{;; okuri-ari entries.}}, @w{@samp{;; okuri-nasi entries.}} $B$r(B $B4pE@$H$7$F:G>.%]%$%s%H$KA^F~$5$l$F<-=q$,(B $B99?7$5$l$^$9(B @footnote{$B@53N$K8@$($P!"Aw$j$"$jJQ49$G$O(B @w{@code{skk-okuri-ari-min}+ 1} $B$N0LCV!"Aw$j$J$7JQ49$G$O(B @w{@code{skk-okuri-nasi-min}+ 1} $B$N0LCV!#(B}$B!#(B $B8D?M<-=q$O!"DL>o$O6&M-<-=q$[$I$O%5%$%:$,Bg$-$/$J$$$N$G!"8!:w;~$K$O$=$l$>(B $B$l$N4pE@$+$iD>@~E*$K8!:w$,9T$o$l$^$9!#(B $B:G8e$K3NDj$5$l$?8l$O!"0l$D$N%(%s%H%j$NCf$N:G=i$N0LCV$KCV$+$l$^$9!#(B @node $B6/@)E*$K<-=qEPO?%b!<%I$XF~$k(B @subsection $B6/@)E*$K<-=qEPO?%b!<%I$XF~$k(B @kindex . $B"'%b!<%I$K$F!"%(%3!<%(%j%"$KJQ498uJd$,I=<($5$l$F$$$k$H$-$K(B @kbd{.} $B$r%?%$(B $B%W$9$k$H!"6/@)E*$K<-=qEPO?%b!<%I$XF~$j$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-force-registration-mode-char $B6/@)E*$K<-=qEPO?%b!<%I$XF~$k$?$a$N%-!<%-%c%i%/%?$r$3$NJQ?t$GDj5A$7$^$9!#(B $BI8=`@_Dj$O(B @kbd{.} $B$G$9!#(B @end defvr @node $B8m$C$?EPO?$N:o=|(B @subsection $B8m$C$?EPO?$N:o=|(B @cindex $B8D?M<-=q%(%s%H%j$N:o=|(B @cindex $B8mEPO?(B @kindex X $B8m$C$F8D?M<-=q$KEPO?$7$?C18l$O:o=|$G$-$^$9!#(B $B:o=|$7$?$$C18l$rJQ49$K$h$j5a$a!"$=$NC18l$,I=<($5$l$?;~E@$G(B @kbd{X} $B$rF~NO(B $B$7$^$9!#%_%K%P%C%U%!$K3NG'%W%m%s%W%H$,=P$k$N$G(B @kbd{y e s} $B$HEz$($k$H!"8D(B $B?M<-=q$NBP1~$9$k%(%s%H%j$,:o=|$5$l$^$9!#8=:_$N%P%C%U%!$K@hDxF~NO$7$?!V8m(B $B$j$NJQ497k2L!W$b:o=|$5$l$^$9!#(B $BNc$($P!"(B @example $B$5$$$-$F$-(B /$B:F5/E*(B/ @end example @noindent $B$H$$$&%(%s%H%j$r8m$C$FEPO?$7$F$7$^$C$?$H$$$&2>Dj$G!"$3$N8mEPO?$r:o=|$9$k(B $B>l9g$r@bL@$7$^$9!#(B @example @kbd{S a i k i t e k i @key{SPC}} @group ------ Buffer: foo ------ $B"':F5/E*(B@point{} ------ Buffer: foo ------ @end group @kbd{X} @group ------------------ MiniBuffer ------------------ Really purge ``$B$5$$$-$F$-(B /$B:F5/E*(B/''?(yes or no) @point{} ------------------ MiniBuffer ------------------ @end group @kbd{y e s @key{RET}} @group ------ Buffer: foo ------ @point{} ------ Buffer: foo ------ @end group @end example @node $B8D?M<-=q%U%!%$%k$NJT=8(B @subsection $B8D?M<-=q%U%!%$%k$NJT=8(B @kindex M-x skk-edit-private-jisyo @b{$B9=J8%A%'%C%/$,==J,$G$O$"$j$^$;$s!#8D?M<-=q%U%!%$%k$NJT=8$O!"<+8J@UG$(B $B$N$b$H9T$C$F$/$@$5$$!#(B} $B%3%^%s%I(B @kbd{M-x skk-edit-private-jisyo} $B$r;H$&$H!"8D?M<-=q%U%!%$%k$,(B $B3+$+$l$^$9(B@footnote{$BA0CV0z?t$rH<$C$F$K$b>/$7@)8B$,$"$j$^$9$,!"(B $B5$$K$J$i$J$$$G$7$g$&!#(B) $BJT=8$,=*$o$C$?$i!"(B@kbd{C-c C-c} $B$H2!$9$H8D?M<-=q%U%!%$%k$r%;!<%V$7$F%P%C(B $B%U%!$rJD$8$^$9!#(B @node $B8D?M<-=q$NJ]B8F0:n(B @subsection $B8D?M<-=q$NJ]B8F0:n(B @cindex $B8D?M<-=q(B @cindex $B8D?M<-=q$N%*!<%H%;!<%V(B @kindex C-x C-c @vindex skk-save-jisyo-instantly $B8D?M<-=q$NJ]B8F0:n$K$D$$$F@bL@$7$^$9!#(B $B8D?M<-=q$NJ]B8$,9T$o$l$k>l9g$H$7$F!"l9g!#(B @item @kbd{M-x skk-save-jisyo} $B$HF~NO$7$?$+!"%a%K%e!<%P!<$N(B @samp{Save Jisyo} $B$r(B $BA*Br$7$?>l9g!#(B @item $B8D?M<-=q$,!VJQ?t(B @code{skk-jisyo-save-count} $B$G;XDj$5$l$?2s?t!W$N99?7$,9T(B $B$o$l$?7k2L$H$7$F!"<+F0J]B8(B ($B%*!<%H%;!<%V(B) $B5!G=$,F/$/$H$-!#(B @item $BJQ?t(B @code{skk-save-jisyo-instantly} $B$,(B @code{non-nil} $B$G$"$l$P!"(B $BC18lEPO?!JC18l:o=|!K$N$?$S$K8D?M<-=q$rJ]B8$9$k!#(B @end enumerate $BJ]B8F0:n$rJ,@O$7$F9M$($^$9!#$^$:!"(B Emacs $B$KFI$_9~$s$@8D?M<-=q$,99?7$5$l(B $B$F$$$k$+$I$&$+$rD4$Y$^$9!#99?7$5$l$F$$$?$iJ]B8F0:n$KF~$j$^$9!#(BEmacs $B$N8D(B $B?M<-=q%P%C%U%!$r0l;~%U%!%$%k$KJ]B8$7$F!"$=$N%U%!%$%k%5%$%:$,8=B8$N(B ($B%;!<(B $B%VA0$N(B) $B8D?M<-=q$h$j>.$5$/$J$$$+$I$&$+$r%A%'%C%/$7$^$9!#8D?M<-=q$h$j>.$5(B $B$$$H$-$O!"J]B8F0:n$r7QB3$9$k$+$I$&$+!"3NG'$N$?$a$No$N;HMQ$NHO0O$G$O(B @kbd{M-x skk-purge-from-jisyo} $B$7$?>l9g!"$"(B $B$k$$$O8D?M<-=q$r%f!<%6$,0U?^E*$KJT=8$7$?>l9g!"J#?t$N(B Emacs $B$G(B DDSKK $B$r(B $B;HMQ$7$?>l9g$J$I$K!"8D?M<-=q$,>.$5$/$J$k$3$H$,$"$j$^$9!#B>$N>l9g$O%P%0$N(B $B2DG=@-$,$"$j$^$9!#(B}$B!#(B @example @group --------------------------- Minibuffer ----------------------------- New ~/.skk-jisyo will be 11bytes smaller. Save anyway?(yes or no) --------------------------- Minibuffer ----------------------------- @end group @end example @noindent $B$3$3$G(B @kbd{n o @key{RET}} $B$HEz$($?>l9g$O!"$=$3$GJ]B8F0:n$,Cf;_$5$l!"8D(B $B?M<-=q$O0JA0$N>uBV$N$^$^$K$J$j$^$9!#(B@kbd{y e s @key{RET}} $B$HEz$($?>l9g$O(B $B85$N8D?M<-=q$rB`HrMQ$N<-=q(B @file{~/.skk-jisyo.BAK} $B$KB`Hr$7!"0l;~%U%!%$(B $B%k$KJ]B8$7$??7$7$$8D?M<-=q$r(B @code{skk-jisyo} $B$KJ]B8$7$^$9!#(B $B$b$7!"0l;~%U%!%$%k$N%5%$%:$,(B 0 $B$G$"$k>l9g$O!"$J$s$i$+$N0[>o$H9M$($i$l$k(B $B$?$aJ]B8F0:n$OD>$A$KCf;_$5$l$^$9!#$=$N>l9g$O(B @kindex M-x skk-kill-emacs-without-saving-jisyo @kbd{M-x skk-kill-emacs-without-saving-jisyo} @noindent $B$G(B Emacs $B$r=*N;$5$;!"8D?M<-=q(B (@code{skk-jisyo}) $B5Z$S8D?M<-=q$NB`HrMQ<-(B $B=q(B (@code{skk-backup-jisyo}) $B$r%A%'%C%/$9$k$h$&6/$/$*4+$a$7$^$9(B @footnote{@code{skk-jisyo} $B$,4{$K2u$l$F$$$F$b!"JQ?t(B @code{skk-backup-jisyo} $B$,(B $B;X$7<($9%U%!%$%k$K$=$l0JA0$N8D?M<-=q$,;D$C$F$$$k2DG=@-$,$"$j$^$9!#(B}$B!#(B @defvr {$B%f!<%6JQ?t(B} skk-compare-jisyo-size-when-saving $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!"J]B8A0$N8D?M<-=q$H$N%5%$%:$rHf3S(B $B$7$^$;$s!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-jisyo-save-count $B$3$NJQ?t$G;XDj$5$l$?2s?t!"8D?M<-=q$,99?7$5$l$?>l9g$K8D?M<-=q$,<+F0J]B8$5(B $B$l$^$9!#%G%U%)%k%H$O(B 50 $B$G$9!#$^$?!"$3$NCM$r(B @code{nil} $B$K$9$k$H!"8D?M<-(B $B=q$N<+F0J]B85!G=$,L58z$K$J$j$^$9!#(B $B$3$3$G!"8D?M<-=q$N99?72s?t$O3NDj2s?t$H0lCW$7$^$9!#$^$?!"F1$88uJd$K$D$$$F(B $B3NDj$7$?>l9g$G$b$=$l$>$l(B 1 $B2s$H?t$($i$l$^$9(B @footnote{$B$3$l$O!"8D?M<-=q$N:G>.%]%$%s%H$K!">o$K:G8e$KJQ49$r9T$C$?%(%s(B $B%H%j$r0\F0$5$;$k$?$a$K!"%(%s%H%j?t!"8uJd?t$,A4$/A}$($F$$$J$/$H$b!"3NDj$K(B $B$h$j8D?M<-=q$,99?7$5$l$F$$$k$+$i$G$9!#(B}$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-save-jisyo-instantly $B$3$NJQ?t$,(B @code{non-nil} $B$G$"$l$P!"C18l$rEPO?$9$k$?$S!J:o=|$9$k$?$S!K$K(B $B8D?M<-=q$rJ]B8$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-share-private-jisyo @code{Non-nil} $B$G$"$l$P!"J#?t$N(B SKK $B$K$h$k8D?M<-=q$N6&M-$r9MN8$7$F<-=q$r(B $B99?7$9$k!#(B SKK $B5/F08e$K$3$NJQ?t$rJQ99$7$?>l9g$O(B @kbd{M-x skk-restart} $B$G(B $BH?1G$5$;$k$3$H!#(B @end defvr @node $BJQ495Z$S8D?M<-=q$K4X$9$kE}7W(B @subsection $BJQ495Z$S8D?M<-=q$K4X$9$kE}7W(B DDSKK $B$O!"$+$J4A;zJQ495Z$S8D?M<-=q$K4X$9$kE}7W$re5-$N!V8l?t(B:$B!W$N?t$O8D?M<-=q(B @file{skk-jisyo} $B$KEPO?$5$l$F$$$k8uJd?t$G$9(B $B$,!"$3$3$G$O(B 1 $B9T$r(B 1 $B8l$H$7$F?t$($F$$$^$9!#$=$N$?$a!"(B1 $B$D$N8+=P$78l$KBP(B $B$7$FJ#?t$N8uJd$r;}$C$F$$$k>l9g$O!"(B2 $B$DL\0J9_$N8uJd$rL5;k$7$F$$$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-record-file $BE}7W>pJs$rJ]B8$9$k%U%!%$%kL>$r;XDj$7$^$9!#(B (@w{@pxref{$B@_Dj%U%!%$%k(B}}) @end defvr @defvr {$B%f!<%6JQ?t(B} skk-keep-record $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!"K\@a$G@bL@$7$?E}7W5!G=$rL58z$K(B $B$7$^$9!#?tCM$r@_Dj$9$k$H!"(B@code{skk-record-file} $B$r;XDj?tCM$N9T?t$h(B $B$jBg$-$/$7$^$;$s!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-count-private-jisyo-candidates-exactly $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"!V8l?t!W$N?t$(J}$rJQ99$7$^$9!#(B $B6qBNE*$K$O!"(B 1 $B9T$r(B 1 $B8l$H$7$F?t$($k$N$G$O$J$/!"@53N$K8l?t$r?t$($^$9!#(B $B$J$*!"$=$NJ,;~4V$,$+$+$j$^$9!#$^$?!"$3$N>l9g$G$b(B @samp{[} $B$H(B @samp{]} $B$K0O$^$l$?Aw$j2>L>Kh$N%V%m%C%/7A<0Fb$O?t$($^$;$s!#(B @end defvr @cindex Menu Bars @cindex $B%a%K%e!<%P!<(B @findex skk-count-jisyo-candidates @kindex M-x skk-count-jisyo-candidates @noindent @kbd{M-x skk-count-jisyo-candidates} $B$3$N%3%^%s%I$r;H$&$H!"<-=q$N8uJd?t$r?t$($k$3$H$,$G$-$^$9!#(B @example @group @kbd{M-x skk-count-jisyo-candidates} --------------- MiniBuffer -------------- Jisyo file: (default: /your/home/.skk-jisyo) ~/@point{} --------------- MiniBuffer -------------- @end group @group @kbd{. s k k - j i s y o @key{RET}} -------------- Echo Area -------------- Counting jisyo candidates@dots{} 100% done -------------- Echo Area -------------- @end group @group ------ Echo Area ------ 3530 candidates ------ Echo Area ------ @end group @end example $B$?$@$7!"(B@samp{[} $B$H(B @samp{]} $B$K0O$^$l$?Aw$j2>L>Kh$N%V%m%C%/7A<0Fb$O?t$($^$;(B $B$s!#(B $B$^$?!"%a%K%e!<%P!<$,;HMQ$G$-$k4D6-$G$O!"%a%K%e!<%P!<$r;H$C$F$3$N%3%^%s%I(B $B$r8F$S=P$9$3$H$,$G$-$^$9!#(B@w{@xref{Menu Bars, ,$B%a%K%e!<%P!<(B, emacs, GNU Emacs Manual}.} @node $B<-=q%P%C%U%!(B @subsection $B<-=q%P%C%U%!(B @cindex @file{dabbrev.el} @cindex @samp{ *SKK-JISYO.L*} @findex fundamental-mode @vindex major-mode @vindex mode-name @vindex skk-large-jisyo @cindex $B<-=q%P%C%U%!$NL>IU$15,B'(B $B<-=q8!:w%W%m%0%i%`$rA0$O!"(B $B!V6uGr(B+@samp{*}+$B<-=q%U%!%$%kL>(B($B%G%#%l%/%H%jH4$-(B)+@samp{*}$B!W(B @noindent $B$H$$$&5,B'$K4p$E$$$FIU$1$i$l$^$9!#Nc$($P!"JQ?t(B @code{skk-large-jisyo} $B$N(B $BCM$,(B @file{/usr/local/share/skk/SKK-JISYO.L} @noindent $B$G$"$k$H$-!"$3$l$KBP$9$k<-=q%P%C%U%!L>$O!"(B @samp{ *SKK-JISYO.L*} @noindent $B$H$J$j$^$9!#(B $B$3$N%P%C%U%!$N%a%8%c!<%b!<%I$O(B @code{fundamental-mode} $B$G$9!#$7$+$7!"=t(B $BHL$N;v>p$K$h$j!"JQ?t(B @code{major-mode} $B$NCM$r%7%s%\%k(B @code{skk-jisyo-mode} $B$H!"(B $BJQ?t(B @code{mode-name} $B$NCM$rJ8;zNs(B @samp{SKK dic} $B$H$7$F$$$^$9(B @footnote{$B$3$l$O!"(BEmacs $B$N(B @file{dabbrev.el} $B$N5!G=$H$ND4OB$r9M$($F$NA<(B $BCV$G$9!#(B Dabbrev $B$K$*$$$F$O!"8=:_$N%P%C%U%!$HF1$8%b!<%I$NB>$N%P%C%U%!$r8!:w$7$F(B abbreviation $B$NE83+$r9T$&$h$&$K@_Dj$9$k$3$H$,$G$-$k$N$G$9$,!"2>$K<-=q(B $B%P%C%U%!$K$*$1$kJQ?t(B @code{major-mode} $B$NCM$,(B @code{fundamental-mode} $B$N$^(B $B$^$@$H$9$k$H!"(B Dabbrev $B$,<-=q%P%C%U%!$r8!:w$7$F$7$^$&2DG=@-$,$"$j$^$9!#(B $B$3$NAl9g(B @code{euc-jp}, @code{shift_jis}, @code{junet} $B$J$I$N(B symbol $B$GI=$5$l!"(B@kbd{M-x describe-coding-system} $B$G(B $BD4$Y$k$3$H$,$G$-$^$9!#(BXEmacs $B$N>l9g(B symbol $B$O(B coding system $B$=$N$b$N$G$O(B $B$J$/(B coding system object $B$r;X<($9$k$?$a$N(B symbol $B$H$7$F07$o$l$^$9!#(B $B6qBNE*$K$O(B GNU Emacs $B$G$O(B @code{(coding-system-p 'euc-jp)} $B$,(B @code{t} $B$r(B $BJV$9$N$KBP$7!"(B XEmacs $B$G$O(B @code{nil} $B$rJV$7$^$9$,!"Be$o$j$K(B symbol $B$,<((B $B$9(B coding system object $B$rJV$9(B @code{find-coding-system} $B4X?t$,B8:_$7$^$9!#(B} @item @code{nil} @end itemize $B%G%U%)%k%H$O(B @code{nil} $B$G$9!#$3$N>l9g!"(BDDSKK $BB&$G<-=q$NJ8;z%3!<%I$r@_Dj$9$k(B $B$3$H$O$;$:!"(BEmacs $B$KG$$;$^$9!#(B @end defvr @node $B<-=q%P%C%U%!$N(Bbuffer-file-name @subsection $B<-=q%P%C%U%!$N(Bbuffer-file-name @vindex buffer-file-name @findex save-some-buffers Emacs $B$K$O(B @code{save-some-buffers} $B$H$$$&4X?t$,$"$j$^$9!#$3$N4X?t$O!"%U%!(B $B%$%k$K4XO"IU$1$i$l$F$$$k3F%P%C%U%!$K$D$$$F!"JQ99$,$"$l$P%U%!%$%k$KJ]B8$7(B $B$^$9$,!"$H4XO"IU$1$i$l$F$$$?$H$7$?$i!"$3$&$7$?%3%^%s%I$r(B $BpJs8;$+$ie5-$N$H$*$j!"(B@code{;} $B$ND>8e$K(B @code{*} $B$,<+F0E*$K?6$i$l$k(B @footnote{@code{*} $B$NJ8;z$OJQ49;~$K$OI=<($5$l$^$;$s(B}$B$3$H$K$h$C$F%f!<%6$,(B $BFH<+$KEPO?$7$?%"%N%F!<%7%g%s$G$"$k$3$H$,J,$+$j$^$9!#(B $B0lJ}!"6&M-<-=q$K85!9EPO?$5$l$F$$$k%"%N%F!<%7%g%s$r!V%7%9%F%`%"%N%F!<(B $B%7%g%s!W$H8F$S!"$3$l$O(B @code{;} $B$ND>8e$K(B @code{*} $B$NJ8;z$rH<$$$^$;$s!#(B $B%7%9%F%`%"%N%F!<%7%g%s$O!"e5-$N$$$:$l$G$b$J$/!"30It$N<-E5$=$NB>$N>pJs8;$+$iF@$i$l$k$b$N$r!V30It%"(B $B%N%F!<%7%g%s!W$H$$$$$^$9!#30It%"%N%F!<%7%g%s$O(B Emacs Lisp $B%Q%C%1!<%8$G$"(B $B$k(B lookup.el$B!"(B Apple OS X $BIUB0$N<-=q!"(BWiktionary/Wikipedia $B$J$I$+$io$KI=<($7$^$9!#(B @item (setq skk-show-annotation '(not list)) *$B8uJd(B*$B%P%C%U%!(B@footnote{@code{skk-show-candidates-always-pop-to-buffer}}$B$G$O!"%"%N%F!<%7%g%s$rI=<($7$^$;$s!#(B @item (setq skk-show-annotation '(not minibuf)) $B%_%K%P%C%U%!$K$*$1$k$+$J4A;zJQ49!JC18lEPO?;~!K$G$O!"%"%N%F!<%7%g%s$rI=<($7$^$;$s!#(B @item (setq skk-show-annotation '(not list minibuf)) *$B8uJd(B*$B%P%C%U%!5Z$S%_%K%P%C%U%!$G$O!"%"%N%F!<%7%g%s$rI=<($7$^$;$s!#(B @item (setq skk-show-annotation nil) $B$$$+$J$k>l9g$b%"%N%F!<%7%g%s$rI=<($7$^$;$s!#(B @end table @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-delay $B%"%N%F!<%7%g%s$rI=<($9$k$^$G$NCY1d$rIC$G;XDj$9$k!#%G%U%)%k%H$O(B 1.0 $BIC!#(B @end defvr @kindex C-w @defvr {$B%f!<%6JQ?t(B} skk-annotation-copy-key @kbd{C-w} $B$r%?%$%W$9$k$H!"8=:_I=<($5$l$F$$$k%"%N%F!<%7%g%s$r(B kill ring $B$K(B $BJ]B8$7$^$9!#J]B8$7$?FbMF$r(B Emacs $B0J30$N%"%W%j%1!<%7%g%s$GMxMQ$7$?$$>l9g$O(B $BJQ?t(B @code{interprogram-cut-function} $B$r@_Dj$7$F$/$@$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-show-as-message @code{Non-nil} ($B%G%U%)%k%H(B) $B$G$"$l$P!"%"%N%F!<%7%g%s$r%(%3!<%(%j%"$KI=<($7$^$9!#(B @code{nil} $B$G$"$l$P!"(Bother-window $B$r0l;~E*$K3+$$$F%"%N%F!<%7%g%s$rI=<($7$^$9!#(B other-window $B$O!"$=$N8uJd$r3NDj$9$k$+!"$=$N8uJd$NA*Br$r;_$a$k(B ($Bl9g$O%"%N%F!<%7%g%s$r%D!<%k%F%#%C%W$GI=<($7$^$9!#(B @end defvr @kindex ^ @defvr {$B%f!<%6JQ?t(B} skk-annotation-toggle-display-char $B!V(B*$B8uJd(B*$B%P%C%U%!!W$GJQ498uJd$r0lMwI=<($7$F$$$k$H$-$K%"%N%F!<%7%g%s$N(B $BI=<(!?HsI=<($rF0E*$K@Z$jBX$($k%-!<$r@_Dj$7$^$9!#(B $B%G%U%)%k%H$O(B @kbd{^} $B$G$9!#(B @example @group ----- Buffer: *$B8uJd(B* ----- A:$Bl9g$K(B $B8B$C$F%"%N%F!<%7%g%s$,I=<($5$l$^$9!#(B @lisp @group (setq skk-annotation-function (lambda (annotation) (eq (aref annotation 0) ?*))) @end group @end lisp @noindent $B>e5-$NNc$G$O!"%"%N%F!<%7%g%s$N@hF,$,(B @code{*} $B$G;O$^$k!V%f!<%6%"%N%F!<(B $B%7%g%s!W$N>l9g$K(B @code{t} $B$rJV$9&K<0$r(B @code{skk-annotation-function} $B$K(B $BDj5A$7$^$7$?!#$3$l$K$h$C$F%f!<%6%"%N%F!<%7%g%s$@$1$,I=<($5$l$^$9!#(B @end defvr @node $B%"%N%F!<%7%g%s$NEPO?(B @subsection $B%"%N%F!<%7%g%s$NEPO?(B @findex skk-annotation-add @findex skk-annotation-kill @findex skk-annotation-remove @kindex M-x skk-annotation-add @kindex M-x skk-annotation-kill @kindex M-x skk-annotation-remove @defun {$B%3%^%s%I(B} skk-annotation-add &optional NO-PREVIOUS-ANNOTATION $B%"%N%F!<%7%g%s$rEPO?!?=$@5$9$k$K$O!"%"%N%F!<%7%g%s$rIU$1$?$$C18l$r3NDj$7(B $B$?D>8e$KF1$8%P%C%U%!$G(B @kbd{M-x skk-annotation-add} $B$HO$rJT=8$7$F$/$@$5$$!#(B $BJT=8$,=*$o$C$?$i(B @kbd{C-c C-c} $B$H%?%$%W$7$^$9!#(B $B$=$NC18l$K4{$K%"%N%F!<%7%g%s$,IU$$$F$$$k>l9g$O!"$"$i$+$8$aEv3:%"%N%F!<%7%g(B $B%s$rA^F~$7$F(B *SKK annotation* $B$r3+$-$^$9!#(B @end defun @defun {$B%3%^%s%I(B} skk-annotation-kill $B>e5-(B @kbd{M-x skk-annotation-add} $B$ro$K(B $B%$%s%9%H!<%k$5$l$F$$$k$3$H$,A0Ds$G$9!#(BLookup $B$r?75,$K%$%s%9%H!<%k$7$?>l(B $B9g$O!"(BSKK $B$r%$%s%9%H!<%k$7D>$9I,MW$,$"$j$^$9!#(B EPWING $B<-=q$NFbMF$r%"%N%F!<%7%g%sI=<($9$k$K$O!"#2$D$NJ}K!$,$"$j$^$9!#(B @enumerate @item @code{skk-treat-candidate-appearance-function} $B$r@_Dj$9$kJ}K!(B $B8uJd$NI=<($rAu>~$9$k4X?t$r;XDj$9$kJQ?t(B @code{skk-treat-candidate-appearance-function} $B$r@_Dj$9$k>l9g$O!"(B @file{etc/dot.skk} $B$K<($5$l$F$$$k@_DjNc$r0J2<$N$h$&$KJQ99$7$F$/$@$5$$!#(B @lisp @group + (require 'skk-lookup) (setq skk-treat-candidate-appearance-function #'(lambda (candidate listing-p) (let* ((value (skk-treat-strip-note-from-word candidate)) (cand (car value)) ;$B8uJd(B - (note (cdr value)) ;$BCm2A$7$F$_$F$/$@$5$$!#(B @end defvr @noindent @kbd{M-x skk-lookup-get-content-setup-dic} @kindex M-x skk-lookup-get-content-setup-dic @b{DDSKK $B$N5/F08e$KJQ?t(B @code{skk-lookup-get-content-nth-dic} $B$N?tCM$rJQ(B $B99$7$?>l9g$O!"$3$N%3%^%s%I$rI,$:e=q$-$7$^$9!#(B@code{skk-treat-candidate-appearance-function} $B$r(B $B<+J,$G@_Dj$9$k>l9g$O(B @code{skk-annotation-lookup-lookup} $B$K$O(B @code{t} $B$^$?$O(B @code{nil} $B$rI,MW$K1~$8$F@_Dj$7$^$9!#(B} @lisp (setq skk-annotation-lookup-lookup 'always) @end lisp @end defvr @end enumerate @node Apple OS X $B!V<-=q!W%5!<%S%9$+$i%"%N%F!<%7%g%s$rl9g$O(B @example % easy_install readline @end example @noindent $B$J$I$NJ}K!$G%$%s%9%H!<%k$7$^$9!#(B} @defvr {$B%f!<%6JQ?t(B} skk-annotation-lookup-DictionaryServices @code{Non-nil} $B$J$i$P(B OS X $B$N<-=q%5!<%S%9$rMxMQ$7$F%"%N%F!<%7%g%s$re=q$-$7$^$9!#(B@code{skk-treat-candidate-appearance-function} $B$r(B $B<+J,$G@_Dj$7$?$$>l9g$O(B @code{skk-annotation-lookup-DictionaryServices} $B$K$O(B @code{t} $B$^$?$O(B @code{nil} $B$rI,MW$K1~$8$F@_Dj$7$^$9!#(B} @lisp (setq skk-annotation-lookup-DictionaryServices 'always) @end lisp @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-python-program $B%"%N%F!<%7%g%s!#(B @lisp (setq skk-annotation-python-program "/usr/bin/python") @end lisp @end defvr $B:#$N$H$3$m!"%"%N%F!<%7%g%s$re0L$K;XDj$9$l$P;H$$$d$9$/$J$j$^$9!#(B @node Wikipedia/Wiktionary $B$+$i%"%N%F!<%7%g%s$rl9g!"%"%N%F!<%7%g%s$KBe$($F(B @uref{http://ja.wiktionay.org/, Wiktionary}, @uref{http://ja.wikipedia.org/, Wikipedia} $B$K$h$k2r@b$rI=<($9$k$3$H$,$G$-$^$9!#B>$N%"%N%F!<%7%g%s$,JQ49;~$K<+F0E*$K(B $BI=<($5$l$k$N$KBP$7!"(B Wikipedia/Wiktionary $B%"%N%F!<%7%g%s$O4pK\E*$K%f!<%6(B $B$N;X<($K$h$C$Fl9g!"%D!<%k%F%#%C%W$GI=<($7$^$9!#(B} $B$7$^$9!#(B @example B o k u j o u @group ----- Buffer: foo ----- $B"&$\$/$8$g$&(B@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"'KR>l(B@point{} ----- Buffer: foo ----- @end group @kbd{C-i} @group ----------------------------- Echo Area ------------------------------ $BKR>l!J$\$/$8$g$&!K$H$O!"%&%7!"%&%^$J$I$N2HC\$r;tM\$9$k;\@_!#71FI$_$5$l(B $B$F$^$-$P$H8F$P$l$k$3$H$b$"$k!#(B ----------------------------- Echo Area ------------------------------ @end group @end example $B%(%3!<%(%j%"$K2r@b$,I=<($5$l$F$$$k:GCf$K(B @kbd{C-o} $B$r2!$9$H!"(B $B4X?t(B @code{skk-annotation-browser-function} $B$G;XDj$5$l$?4X?t$rMQ$$$F!"(B $B$=$N2r@b$N85$H$J$C$?(B URL $B$r%V%i%&%:$7$^$9!#(B @kindex C-i @defvr {$B%f!<%6JQ?t(B} skk-annotation-wikipedia-key $B%G%U%)%k%H$O(B @kbd{C-i} $B$G$9!#(B @end defvr @kindex C-o @defvr {$B%f!<%6JQ?t(B} skk-annotation-browse-key $B%G%U%)%k%H$O(B @kbd{C-o} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-browser-function @code{browse-url} $BKt$O(B @code{eww-browse-url} $B$r%7%s%\%k$G;XDj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-other-sources $B%"%N%F!<%7%g%s$r$r;XDj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-dict-program-arguments $B%"%N%F!<%7%g%s$ru(B $B67$G<-=q0z$-5!G=$H$7$F;H$&$3$H$,$G$-$^$9!#$=$N$?$a$K$O!"%3%^%s%I(B @code{skk-annotation-lookup-region-or-at-point} $B$rG$0U$K%-!R2p$7$^$9!#(B @lisp (global-set-key "\M-i" 'skk-annotation-lookup-region-or-at-point) @end lisp @noindent $B$3$N$h$&$K$7$F$*$/$H!"2?$+$N0UL#$,D4$Y$?$/$J$C$?$H$-!"NN0hA*Br$7$F(B @kbd{M-i} $B$H%?%$%W$9$l$P$=$N>l$G<-=q$r0z$/$3$H$,$G$-$^$9!#(B @noindent $B$5$i$K!"%f!<%6%*%W%7%g%s(B @code{skk-annotation-other-sources} $B$N(B 3 $BHV(B $BL\(B (Apple OS X $B$G$O(B 4 $BHVL\(B) $B$OI8=`$G(B @code{en.wiktionary} $B$K$J$C$F$$$^$9!#(B $BNc$($P!"1QJ8$rFI$s$G$$$F(B buffer $B$H$$$&8l$N@53N$J0UL#$r;2>H$7$?$/$J$C$?$H(B $B$7$^$9!#$=$N$H$-$O(B $BC18l(B buffer $B$K%]%$%s%H$r9g$o$;!"(B@kbd{M-3 M-i} (Max OS X $B$G$O(B @kbd{M-4 M-i}) $B$H%W%l%U%#%C%/%9IU$G%3%^%s%I$rl9g$O(B @code{en.wiktionary} $B$O(B 4 $BHVL\(B (Apple OS X $B$G$O(B 5 $BHV(B $BL\(B) $B$K$J$j$^$9!#(B} @example @group ----- Buffer: *scratch* ----- ;; This buffer@point{} is for notes you don't want to save, and for @dots{} ----- Buffer: *scratch* ----- @end group @kbd{M-3 M-i} (Max OS X $B$G$O(B @kbd{M-4 M-i}) @end example @noindent $B$9$k$H(B SKK $B%b!<%I$G$N%"%N%F!<%7%g%s$HF1MM!"0J2<$N$h$&$J@bL@$,I=<($5$l$^(B $B$9!#(B @example @group -------------------- Echo Area -------------------- English, Noun buffer (plural buffers) 1: Someone or something that buffs. 2: (chemistry) A solution used to stabilize the pH (acidity) of a liquid. 3: (computing) A portion of memory set aside to store data, often before it is sent to an external device or as it is received from an external device. [@dots{}] -------------------- Echo Area -------------------- @end group @end example @node $BJ8;z%3!<%I4XO"(B @section $BJ8;z%3!<%I4XO"(B @menu * $BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO(B:: * $B%a%K%e!<$K$h$kJ8;zF~NO(B:: * $BJ8;z%3!<%I0lMw(B:: * $BJ8;z%3!<%I$rCN$kJ}K!(B:: @end menu $B4XO"9`L\(B @w{@xref{$B<-=q%P%C%U%!$NJ8;z%3!<%I$N@_Dj(B}.} @node $BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO(B @subsection $BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO(B @cindex JIS$B%3!<%I(B @cindex EUC$B%3!<%I(B @kindex \ @kindex C-u \ @vindex skk-kcode-charset $B$+$J%b!<%I$G(B @kbd{\} $B%-!<$rF~NO$9$k$H!"%_%K%P%C%U%!$K(B @example @group ---------------------------- Minibuffer ----------------------------- $B!{!{$NJ8;z$r;XDj$7$^$9!#(B7/8 $B%S%C%H(B JIS $B%3!<%I(B (00nn), $B6hE@%3!<%I(B (00-00), UNICODE (U+00nn), $B$^$?$O(B [RET] ($BJ8;z0lMw(B): @point{} ---------------------------- Minibuffer ----------------------------- @end group @end example @noindent $B$H$$$&%W%m%s%W%H$,I=<($5$l!"J8;z%3!<%I!J(BJIS $B%3!<%I!"(BEUC $B%3!<%I$^$?$O6hE@HV9f!K(B $B$^$?$O%a%K%e!<$K$h$kJ8;zF~NO$,B%$5$l$^$9!#(B $B>e5-Nc<($N!{!{ItJ,$O(B $BJQ?t(B @code{skk-kcode-charset} $B$NCM$G$"$j!"(B $B$=$N=i4|CM$O(B @code{japanese-jisx0208} $BKt$O(B @code{japanese-jisx0213-1} $B$G$9!#(B $B=i4|CM$O4D6-$K$h$C$F<+F0E*$K@_Dj$5$l$^$9!#(B $B%-!<(B @kbd{\} $B$NBe$o$j$K(B @kbd{C-u \} $B$HF~NO$9$k$H!"0[$J$kJ8;z=89g(B (charset) $B$r;XDj$9(B $B$k;v$,$G$-$^$9!#(B $B$3$3$G!"J8;z%3!<%I$,$"$i$+$8$aJ,$+$C$F$$$k>l9g$K$O!"$=$NJ8;z%3!<%I$rF~NO(B $B$7$^$9!#Nc$($P(B @samp{$B!n(B} $B$NJ8;z%3!<%I$O!"(BJIS $B%3!<%I$G$O(B @samp{216e}$B!"(BEUC $B%3!<%I$G$O(B @samp{a1ee} $B$J$N$G!"$$$:$l$+$NJ8;z%3!<%I$rF~NO$9$l$P(B @samp{$B!n(B} $B$,8=:_$N%P%C%U%!$KA^F~$5$l$^$9!#(B $B6hE@HV9f$GF~NO$9$k$K$O(B @samp{01-78} $B$N$h$&$K6h$HE@$N4V$K%O%$%U%s(B @samp{-} $B$r(B $BF~$l$kI,MW$,$"$j$^$9!#%O%$%U%s(B @samp{-} $B$G6h@Z$C$?#3AH$N?t;z$O(B JIS X 0213 $B$N(B $B#2LL$r;XDj$7$?$H$_$J$7$^$9!#Nc$($P(B @samp{2-93-44} $B$G!V5{2V!W!J$[$C$1!K$,F~NO(B $B$G$-$^$9!#(B @node $B%a%K%e!<$K$h$kJ8;zF~NO(B @subsection $B%a%K%e!<$K$h$kJ8;zF~NO(B $BJ8;z%3!<%I$,ITL@$NJ8;z$rF~NO$9$k$K$O!"J8;z%3!<%I$rF~NO$;$:$K$=$N$^$^(B @key{RET} $B%-!<$rF~NO$7$^$9!#$9$k$H%_%K%P%C%U%!$K0J2<$N$h$&$JI=<($,8=$l$^(B $B$9!#(B @c $Bu$G$O$3$N%U%!%$%k$r(B utf-8 $B$GJ]B8$G$-$:!"$^$?(B emacs-23 $B$G$O(B @c $B$3$l$i$,GrH4$-$NOH(B ($B$$$o$f$kF&Ie(B) $B$GI=<($5$l$k!#$7$+$7>e=R$N$b$N$KCV$-49$($k$H!"(B @c $B:#EY$O(B iso-2022-jp $B$GJ]B8$G$-$J$$!#$7$P$i$/$O$3$N%U%!%$%k$O(B utf-8 $B$h$j$b(B @c iso-2022-jp $B$N$[$&$,NI$$$@$m$&!#(B (2010 $BG/(B 2 $B7n(B) @example @group ---------------------------- Minibuffer ----------------------------- A:$B!!(B S:$B!1(B D:$B!A(B F:$B!Q(B G:$B!a(B H:$B!q(B Q:$B"!(B W:$(Q"1(B E:$B"A(B R:$(Q"Q(B T:$B"a(B Y:$(Q"q(B ---------------------------- Minibuffer ----------------------------- @end group @end example @kindex x $B$3$l$r(B@b{$B!VBh#1CJ3,$N%a%K%e!e5-$NNc$G$O!"(BJIS $B%3!<%I(B 2121 ($BA43Q%9%Z!<%9(B)$B!"(B2131$B!"(B2141$B!"(B2151$B!"(B @dots{} $B$NJ8;z$,$=$l$>$lI=<($5$l$F$$$^$9!#(B}$B!#$3$3$G(B @key{SPC} $B$rF~NO$9$k(B $B$H.J8;z$G$b9=$$$^$;$s!#$J$*!"Bh#1CJ3,!&Bh#2CJ3,$H$b(B $B$K!"%a%K%e!<$N%-!<$rJQ99$9$k$3$H$,$G$-$^$9!#(B @w{@ref{$B8uJd$NA*Br$KMQ$$$k%-!<(B}} $B$r;2>H$7$F$/$@$5$$!#(B} $B!"$=$N%-!<$KBP1~$9$kJ8;z$+$i;O$^$k(B 16 $B8D$NJ8;z$,J8;z%3!<%I=g$KI=<($5$l$^(B $B$9!#$3$l$r(B@b{$B!VBh#2CJ3,$N%a%K%e!e5-$N>uBV$N$H$-$K(B @kbd{d} $B$rF~NO$9$k$H(B $BBh#2CJ3,$N%a%K%e!<$O0J2<$N$h(B $B$&$K$J$j$^$9!#(B @smallexample @group --------------------------------- Minibuffer ---------------------------------- A:$B!A(B S:$B!B(B D:$B!C(B F:$B!D(B G:$B!E(B H:$B!F(B J:$B!G(B K:$B!H(B L:$B!I(B Q:$B!J(B W:$B!K(B E:$B!L(B R:$B!M(B T:$B!N(B Y:$B!O(B U:$B!P(B --------------------------------- Minibuffer ---------------------------------- @end group @end smallexample $B$3$3$G!"%-!<(B @kbd{a}, @kbd{s}, @kbd{d}, @kbd{f}, @kbd{g}, @kbd{h}, @kbd{j}, @kbd{k}, @kbd{l}, @kbd{q}, @kbd{w}, @kbd{e}, @kbd{r}, @kbd{t}, @kbd{y}, @kbd{u}, $B$N$$$:$l$+$r(B $BF~NO$9$k$H!"BP1~$9$kJ8;z$,%+%l%s%H%P%C%U%!$KA^F~$5$l$F%a%K%e!<$K$h$kF~NO(B $B$,=*N;$7$^$9!#(B $BBh#2CJ3,$N%a%K%e!<$,I=<($5$l$F$$$k$H$-$b(B @key{SPC} $B$H(B @kbd{x} $B%-!<$K$h(B $B$jBh#2CJ3,$N%a%K%e!<$,A0?J!"8eB`$7$^$9!#(B @kindex < @kindex > @kindex ? $B$^$?(B @kbd{<}$B!"(B@kbd{>} $B$K$h$j%a%K%e!<$r#1J8;zJ,$@$10\F0$7$^$9!#Nc$($P!"(B $BBh#2CJ3,$N%a%K%e!<$,>e5-$N>uBV$N$H$-$K(B @kbd{<} $B$rF~NO$9$k$H!"%a%K%e!<$O(B $B0J2<$N$h$&$K$J$j$^$9!#(B @smallexample @group --------------------------------- Minibuffer ---------------------------------- A:$B!@(B S:$B!A(B D:$B!B(B F:$B!C(B G:$B!D(B H:$B!E(B J:$B!F(B K:$B!G(B L:$B!H(B Q:$B!I(B W:$B!J(B E:$B!K(B R:$B!L(B T:$B!M(B Y:$B!N(B U:$B!O(B --------------------------------- Minibuffer ---------------------------------- @end group @end smallexample $BBh#1CJ3,$"$k$$$OBh#2CJ3,$N%a%K%e!<$,I=<($5$l$F$$$k$H$-$K(B @kbd{?} $B$rF~(B $BNO$9$k$H!"$=$N$H$-$N%-!<(B @kbd{A} $B$KBP1~$9$kJ8;z(B ($B>e5-$NNc$G$O!"(B@samp{$B!@(B}) $B$NJ8;z%3!<%I$,I=<($5$l$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-kcode-method @kbd{\} $B$NBG80$G5/F0$9$k(B @code{skk-input-by-code-or-menu} $B$N5sF0$rD4@a$7$^$9!#(B @table @code @item 'char-list @kbd{\} $B$NBG80$G!VJ8;z%3!<%I0lMw!W!J(Bskk-list-chars$B!K$r5/F0$7$^$9!#(B @item 'code-or-char-list @kbd{\} $B$NBG80$G!VJ8;z%3!<%I!W!J(Bskk-input-by-code$B!K$r5/F0$7$^$9!#(B JIS $B%3!<%I(B/$B6hE@%3!<%IF~NO%W%m%s%W%H$NI=<($KBP$7$FC1$K(B @key{RET} $B$r%?%$%W$7$?>l9g!"(B $B!VJ8;z%3!<%I0lMw!W!J(Bskk-list-chars$B!K$r5/F0$7$^$9!#(B @item 'this-key @kbd{\} $B$NBG80$G(B @samp{\} $B$rA^F~$7$^$9!#(B @item $B>e5-%7%s%\%k0J30(B @kbd{\} $B$NBG80$G!VJ8;z%3!<%I!W!J(Bskk-input-by-code$B!K$r5/F0$7$^$9!#(B JIS $B%3!<%I(B/$B6hE@%3!<%IF~NO%W%m%s%W%H$NI=<($KBP$7$FC1$K(B @key{RET} $B$r%?%$%W$7$?>l9g!"(B $B!V%a%K%e!$C$F%P%C%U%!(B @code{*skk-list-chars*} $B$KJ8;z$N(B JIS $B%3!<%I0l(B $BMw$,I=<($5$l$^$9!#(B $B%W%l%U%#%C%/%9IU$-$G!"$D$^$j(B @kbd{C-u M-x skk-list-chars} $B$HH=`$r$"$o$9$h$&%3!<%I0lMw$rI=<($7$^$9!#(B @example @group -------------------- *skk-list-chars* -------------------- variable skk-kcode-charset's value is `japanese-jisx0208'. 01-#x--- 0-- 1-- 2-- 3-- 4-- 5-- 6-- 7-- 8-- 9-- A-- B-- C-- D-- E-- F $B!!(B 2120 $B!!!!!!!!!"!!!#!!!$!!!%!!!&!!!'!!!(!!!)!!!*!!!+!!!,!!!-!!!.!!!/(B $B!!(B 2130 $B!0!!!1!!!2!!!3!!!4!!!5!!!6!!!7!!!8!!!9!!!:!!!;!!!!!!?(B $B!!(B 2140 $B!@!!!A!!!B!!!C!!!D!!!E!!!F!!!G!!!H!!!I!!!J!!!K!!!L!!!M!!!N!!!O(B $B!!(B 2150 $B!P!!!Q!!!R!!!S!!!T!!!U!!!V!!!W!!!X!!!Y!!!Z!!![!!!\!!!]!!!^!!!_(B $B!!(B 2160 $B!`!!!a!!!b!!!c!!!d!!!e!!!f!!!g!!!h!!!i!!!j!!!k!!!l!!!m!!!n!!!o(B $B!!(B 2170 $B!p!!!q!!!r!!!s!!!t!!!u!!!v!!!w!!!x!!!y!!!z!!!{!!!|!!!}!!!~(B -------------------- *skk-list-chars* -------------------- @end group @end example @table @kbd @item f @itemx C-f @itemx l $B%+!<%=%k0\F0(B @item b @itemx C-b @itemx h $B%+!<%=%k0\F0(B @item n @itemx C-n @itemx j $B%+!<%=%k0\F0(B @item p @itemx C-p @itemx k $B%+!<%=%k0\F0(B @item C-x C-x $B%+!<%=%k0\F0(B @item \ @itemx o $BJ8;z=89g$N@Z$jBX$((B @item c $BJ8;z%3!<%IF~NO(B @item i @itemx RET $BJ8=q%P%C%U%!$XJ8;z$rA^F~(B @item q skk-list-chars $B$rH4$1$k!#(B @item $ $B%+!<%=%k0LCV$NJ8;z$NJ8;z%3!<%I$rI=<((B @end table $B$[$+!"(BEmacs $B$N%3%^%s%I(B @kbd{M-x list-charset-chars} $B$bM-MQ$G$7$g$&!#(B @defvr {$B%f!<%6JQ?t(B} skk-list-chars-table-header-face $B%3!<%I0lMw$NOH@~$J$I$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-list-chars-face $B%W%l%U%#%C%/%9IU$-$GH=`$N%U%'%$%9$G$9!#(B @end defvr @node $BJ8;z%3!<%I$rCN$kJ}K!(B @subsection $BJ8;z%3!<%I$rCN$kJ}K!(B @kindex $ @cindex JIS$B%3!<%I(B @cindex EUC$B%3!<%I(B @kindex M-x skk-display-code-for-char-at-point $B$+$J(B/$B%+%J%b!<%I$G(B @kbd{$} $B$rF~NO$9$k(B @footnote{$B%j!<%I%*%s%j!<$J%P%C%U%!$G$O(B @kbd{M-x skk-display-code-for-char-at-point} $B$r8e$K$"$k(B $BJ8;z$NJ8;z%3!<%I$r%(%3!<%(%j%"(B@footnote{$BJQ?t(B @code{skk-show-tooltip} $B$,(B @code{non-nil} $B$G$"$l$P%D!<%k%F%#%C%W$GI=<($7$^$9!#(B $BJQ?t(B @code{skk-show-candidates-always-pop-to-buffer} $B$,(B @code{non-nil} $B$G(B $B$"$l$P(B other-window $B$KI=<($7$^$9!#(B@code{skk-show-tooltip} $B$,M%@h$7$^$9!#(B} $B$KI=<($7$^$9!#(B $BNc$($P!"%+!<%=%k$rJ8;z(B @samp{$B'!(B} $B$N>e$KCV$$$F(B @kbd{$} $B$rF~NO$9$k$H!"(B @example @group -------------------- Echo Area -------------------- `$B'!(B',KUTEN:07-01, JIS:#x2721, EUC:#xa7a1, SJIS:#x8440, UNICODE:U+0410, $B%-%j!<%kBgJ8;z(BA,CYRILLIC CAPITAL LETTER A -------------------- Echo Area -------------------- @end group @end example @noindent $B$H%(%3!<%(%j%"$KI=<($5$l!"$3$NJ8;z$,%-%j%kJ8;z$G$"$k$3$H$,$o$+$j$^$9!#(B @c $B%W%l%U%#%C%/%9IU$-$G(B @kbd{\}$B!J$D$^$j(B @kbd{C-u \}$B!K$H%?%$%W$9$k$H!"(B @c $B%]%$%s%HD>8e$NJ8;z$K$D$$$FJ8;z%3!<%I0lMw$,I=<($5$l$^$9!#(B @c @c @example @c @group @c -------------------- *skk-list-chars* -------------------- @c 07-#x--- 0-- 1-- 2-- 3-- 4-- 5-- 6-- 7-- 8-- 9-- A-- B-- C-- D-- E-- F @c $B!!(B 2720 $B!!!!'!!!'"!!'#!!'$!!'%!!'&!!''!!'(!!')!!'*!!'+!!',!!'-!!'.!!'/(B @c $B!!(B 2730 $B'0!!'1!!'2!!'3!!'4!!'5!!'6!!'7!!'8!!'9!!':!!';!!'!!'?(B @c -------------------- *skk-list-chars* -------------------- @c @end group @c @end example @c $B$[$+!"(B Emacs $B$N%3%^%s%I(B @kbd{M-x describe-char} $B$b(B@footnote{Emacs 21 $B$G$O(B @kbd{M-x describe-char-after} $B$G$9!#(B}$BM-MQ$G$7$g$&!#(B @defvr {$B%f!<%6JQ?t(B} skk-display-code-prompt-face $B%(%3!<%(%j%"$KI=<($5$l$k%a%C%;!<%8Cf(B @samp{KUTEN:}$B!"(B@samp{JIS:}@samp{EUC:}$B!"(B@samp{SJIS:} $B5Z$S(B @samp{UNICODE:} $B$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-display-code-char-face $B%(%3!<%(%j%"$KI=<($5$l$k%a%C%;!<%8Cf$NEv3:J8;z$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-display-code-tankan-radical-face $B%(%3!<%(%j%"$KI=<($5$l$k%a%C%;!<%8Cf$NAm2h?tI=<($KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-display-code-tankan-annotation-face $B%(%3!<%(%j%"$KI=<($5$l$k%a%C%;!<%8Cf$NJ8;zL>I=<($KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @node DDSKK $B0J30$N%D!<%k$rMQ$$$?<-=qJQ49(B @section DDSKK $B0J30$N%D!<%k$rMQ$$$?<-=qJQ49(B @menu * skk-lookup:: Lookup $B$rMQ$$$?<-=qJQ49(B * skk-look:: look $B%3%^%s%I$rMQ$$$?<-=qJQ49(B * Lisp $B%7%s%\%kL>$NJd408!:wJQ49(B:: @end menu @node skk-lookup @subsection skk-lookup @cindex @file{skk-lookup.el} @cindex Lookup @vindex skk-lookup-search-agents @findex skk-lookup-search @file{skk-lookup.el} $B$r;HMQ$9$k$H!"<-=q8!:w%D!<%k$N(B Lookup (@url{http://openlab.jp/edict/lookup/}) $B$G8!:w$G$-$k<-=q$rMQ$$$FC18l(B $B$N8uJd$r=P$9$3$H$,$G$-$k$h$&$K$J$j$^$9(B @footnote{@file{skk-lookup.el} $B$O(B @file{skk-look.el} $B$H$OJL$b$N$G$9!#(B}$B!#(B DDSKK $B$N%$%s%9%H!<%k2aDx$G(B @code{(require 'lookup)} $B$,@.8y$9$k>l9g$O(B @file{skk-lookup.el} $B$b<+F0E*$K%$%s%9%H!<%k$5$l$^$9!#(B $B$^$:$O(B @samp{make what-where} $B$rl9g$O!"(B@file{SKK-CFG} $B$rJT=8$7$F(B @file{lookup.el} $B$,CV$+$l$F$$$k%Q%9$r(B @code{ADDITIONAL_LISPDIR} $B$K@_Dj$7!":FEY(B DDSKK $B$r%$(B $B%s%9%H!<%k$7$F2<$5$$(B @footnote{$B4X?t(B @code{skk-lookup-search} $B$,(B @file{skk-autoloads.el} $B$K(B $BDI2C$5$l$^$9(B (@pxref{$B<-=q8!:w$N$?$a$N4X?t(B}).}$B!#(B @file{~/.skk} $B$K0J2<$N$h$&$K@_Dj$7$^$9!#(B @lisp @group (setq skk-search-prog-list (append skk-search-prog-list (list '(skk-lookup-search)))) @end group @end lisp @noindent @code{skk-lookup-search} $B$O!"(B DDSKK $B$,MQ0U$7$F$$$k8!:w%W%m%0%i%`$NCf$G:G(B $B$bCY$$$b$N$G$9!#$7$?$,$C$F!"(B@code{skk-search-prog-list} $B$N@_Dj$K$"$C$F$O(B $B<-=q%5!<%P$N8!:w(B (@code{skk-search-server}) $B$h$j$b8eJ}$KCV$/$h$&@_Dj$7$^$9!#(B Lookup $B$N(B agent $B$GMxMQ$9$k$N$O!"(B @code{lookup-search-agents} $B$+$i(B @code{ndkks}, @code{ndcookie} $B5Z$S(B @code{ndnmz} $B$rl9g!"$3$NJQ?t$N@_Dj$rJQ99$9$l$P(B $B2DG=$G$9(B}$B!#(B @node skk-look @subsection skk-look @cindex @file{skk-look.el} @file{skk-look.el} $B$O!"(B @command{look} $B%3%^%s%I$r;H$C$FA0$,;w$F$$(B $B$^$9$,A4$/$NJL$b$N$G$9(B}$B!#(B @menu * $B1QC18l$NJd40(B:: * $B1QC18l$r$"$$$^$$$KJQ49$7$Fo$NJd40$HF1MM$K(B @kbd{.} $B$Gl9g!"(B $B%f!<%6JQ?t(B @code{skk-search-excluding-word-pattern-function} $B$rE,@Z$K(B $B@_Dj$7$^$9!#(B $BNc$($P](B/ abstraction /$B%"%V%9%H%i%/%7%g%s(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$7$F2r@b$7$^$9(B @footnote{edict $B<-=q(B @file{SKK-JISYO.edict} $B$,$"$l$P!"Nc$($P!"(B @lisp @group (setq skk-search-prog-list (append skk-search-prog-list (list '(skk-search-jisyo-file "/your-path/SKK-JISYO.edict" 0 t)))) @end group @end lisp @noindent $B$N$h$&$K@_Dj$9$k$3$H$K$h$j!"(B edict $B<-=q$r;HMQ$G$-$^$9!#(B}$B!#(B $BJQ?t(B @code{skk-look-recursive-search} $B$NCM$r(B @code{non-nil} $B$K%;%C%H$7$F(B $B2<$5$$!#(B @example $B"&(Babstr* @key{SPC} $B"'(Babstract @key{SPC} $B"'%"%V%9%H%i%/%H(B @key{SPC} $B"'Cj>](B @key{SPC} $B"'(Babstraction @key{SPC} $B"'%"%V%9%H%i%/%7%g%s(B @end example @noindent $B$3$N$h$&$K1QC18l(B + $B$=$N1QC18l$r8+=P$78l$K$7$?8uJd$N!V%;%C%H!W$rJQ49(B $B7k2L$H$7$F=PNO$9$k$3$H$,$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-look-expanded-word-only $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!":F5"8!:w$K@.8y$7$?1QC18l$N!V%;%C(B $B%H!W$@$1$r=PNO$9$k$3$H$,$G$-$^$9!#:F5"8!:w$G8!=P$5$l$J$+$C$?1QC18l$OL5;k(B $B$7$F=PNO$7$^$;$s!#(B @end defvr @node Lisp $B%7%s%\%kL>$NJd408!:wJQ49(B @subsection Lisp $B%7%s%\%kL>$NJd408!:wJQ49(B SKK abbrev $B%b!<%I$K$F!"(BLisp $B%7%s%\%kL>$rJd40$7$F8!:w$7!"8!:w7k2L$r8uJd$H(B $B$7$FJV$9$3$H$,$G$-$^$9!#1QJ8;z$N8e$m$K(B @samp{~} $B$rIU2C$7$F$+$iJQ49$r3+;O(B $B$7$F$/$@$5$$!#(B $B$^$:$OF0:nNc$r<($7$^$9!#(B @example / d e f i ~ @group ----- Buffer: foo ----- $B"&(Bdefi~@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"&(Bdefimage@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"&(Bdefine-abbrev@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"&(Bdefine-abbrev-table@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"&(Bdefine-abbrevs@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: *$B8uJd(B* ----- A:define-auto-insert S:define-category D:define-ccl-codepoint-translation-table F:define-ccl-constant-translation-table J:define-ccl-identity-translation-table K:define-ccl-program L:define-ccl-slide-translation-table ----- Buffer: *$B8uJd(B* ----- @end group @end example $B$3$N5!G=$rM-8z$H$9$k$K$O!"%j%9%H(B @code{skk-search-prog-list} $B$NMWAG$K(B $B4X?t(B @code{skk-search-lisp-symbol} $B$r2C$($F$/$@$5$$!#(B @lisp @group (add-to-list 'skk-search-prog-list '(skk-search-lisp-symbol) t) @end group @end lisp $B$J$*!"8+=P$78l$K(B @samp{~} $B$r4^$`<-=q$b$"$j$^$9!#Nc$($P(B @file{SKK-JISYO.JIS3_4} $B$K$O(B @lisp A~ /$B%A%k%IIU$-(BA(LATIN CAPITAL LETTER A WITH TILDE)/ @end lisp $B$HEPO?(B@footnote{$B@\5-:\$9$k$N$OHr$1$^$7$?!#(B}$B$5$l$F$$$^$9!#(B $B$7$?$,$C$F!""&(BA~ @key{SPC} $B$HJQ49$7$?$H$-$K!V%A%k%IIU$-(BA$B!W$,I=<($5$l$k$+!"(BLisp $B%7%s%\%kL>$,Jd40$5$l$k$+$O!"%j%9%H(B @code{skk-search-prog-list} $BFb$NMWAG$N=g$K$h$j$^$9!#(B @defun skk-search-lisp-symbol &optional PREDICATE NOT-ABBREV-ONLY WITHOUT-CHAR-MAYBE $B%*%W%7%g%s(B @code{PREDICATE} $B$GJd408!:w$9$kHO0O!J4X?tL>!"JQ?tL>!"%3%^%s%IL>!K$r8BDj$9$k$3$H$,$G$-$^$9!#(B $B>\:Y$O(B docstring $B$r;2>H$7$F$/$@$5$$!#(B @end defun @defvr {$B%f!<%6JQ?t(B} skk-completion-search-char @code{skk-completion-search} $B$K$h$kJQ495!G=$r;X<($9$k%-!<%-%c%i%/%?!#(B $B%G%U%)%k%H$O(B @kbd{~} $B$G$9!#(B @end defvr @node $B>~$j$D$1(B @section $B>~$j$D$1(B @menu * $B2>L>J8;z$N%m!<%^;z%W%l%U%#%C%/%9$N%(%3!<(B:: * $BF~NO%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs$NJQ99(B:: * $BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B:: * $BJQ498uJd0lMw$NI=<(J}K!(B:: * $B"'%b!<%I$K$*$1$kJQ498uJd$N%O%$%i%$%HI=<((B:: * $BJQ498uJd$N99$J$kAu>~(B:: * $B%b!<%I%i%$%s$NAu>~(B:: @end menu @node $B2>L>J8;z$N%m!<%^;z%W%l%U%#%C%/%9$N%(%3!<(B @subsection $B2>L>J8;z$N%m!<%^;z%W%l%U%#%C%/%9$N%(%3!<(B @defvr {$B%f!<%6JQ?t(B} skk-echo $B$3$NJQ?t$NCM$O!"2>L>J8;z$N%m!<%^;z%W%l%U%#%C%/%9(B @footnote{@xref{$BAw$j$"$j%(%s%H%j$HAw$j$J$7%(%s%H%j(B, $B%m!<%^;z%W%l%U%#%C%/%9(B}.} $B$N%(%3!<$NM-L5$r@)8f$7$^$9!#(B @end defvr $BJQ?t(B @code{skk-echo} $B$NCM$,(B @code{non-nil} $B$G$"$l$P!"2>L>J8;z$N%m!<%^;z(B $B%W%l%U%#%C%/%9$,!"F~NO;~E@$G$$$C$?$s8=:_$N%P%C%U%!$KA^F~$5$l!"B3$/Jl2;$NF~(B $BNO$N:]$K!"$+$JJ8;z$KJQ49$5$l$?;~E@$G8=:_$N%P%C%U%!$+$i>C5n$5$l$^$9!#(B @example @group @kbd{t} ------ Buffer: foo ------ t@point{} ------ Buffer: foo ------ @end group @group @kbd{a} ------ Buffer: foo ------ $B$?(B@point{} ------ Buffer: foo ------ @end group @end example $BJQ?t(B @code{skk-echo} $B$NCM$,(B @code{nil} $B$G$"$l$P!"2>L>J8;z$N%m!<%^;z%W%l(B $B%U%#%C%/%9$N%(%3!<$O9T$o$l$^$;$s!#$3$l$r>e5-$NNc$G9M$($k$H!"(B@samp{t} $B$,8=(B $B:_$N%P%C%U%!$KA^F~$5$l$:!"B3$/Jl2;(B (@kbd{a}) $B$,F~NO$5$l$?$H$-(B @samp{$B$?(B} $B$NJ8;z$,A^F~$5$l$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-prefix-hiragana-face $B$+$J%b!<%I$K$*$1$k%m!<%^;z%W%l%U%#%C%/%9$N%U%'%$%9$r;XDj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-prefix-katakana-face $B%+%J%b!<%I$K$*$1$k%m!<%^;z%W%l%U%#%C%/%9$N%U%'%$%9$r;XDj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-prefix-jisx0201-face JIS X 0201 $B%b!<%I$K$*$1$k%m!<%^;z%W%l%U%#%C%/%9$N%U%'%$%9$r;XDj$7$^$9!#(B @end defvr @node $BF~NO%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs$NJQ99(B @subsection $BF~NO%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs$NJQ99(B $B2<5-$NJQ?t$NCM$rJQ99$9$k$3$H$K$h$C$F!"%b!<%I%i%$%s>e$N!VF~NO%b!<%I$r<($9J8;z(B $BNs!W$rJQ99$9$k$3$H$,$G$-$^$9(B@footnote{skk-show-mode $B$NI=<($bO"F0$7$^$9!#(B}$B!#(B @defvr {$B%f!<%6JQ?t(B} skk-latin-mode-string $B%"%9%-!<%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``SKK''$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-hiragana-mode-string $B$+$J%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``$B$+$J(B''$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-katakana-mode-string $B%+%J%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``$B%+%J(B''$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-jisx0208-latin-mode-string $BA41Q%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``$BA41Q(B''$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-abbrev-mode-string SKK abbrev $B%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``a$B$"(B''$B!#(B @end defvr @node $BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B @subsection $BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B @defvr {$B%f!<%6JQ?t(B} skk-use-color-cursor $B$3$NJQ?t$,(B @code{non-nil} $B$J$i$P!"%+!<%=%k$r?'IU$1$7$^$9!#(B@code{nil} $B$J$i$P!"$3$N5!G=$rL58z$K$7$^$9!#(B $BI8=`$G$O!"%&%#%s%I%&%7%9%F%`$r;HMQ$7$F!"$+$D!"?'I=<($,2DG=$J>l9g$K8B(B $B$C$F!"$3$N5!G=$,M-8z$K$J$j$^$9!#(B @end defvr $B$3$N5!G=$,M-8z$K$J$C$F$$$k$H$-!"0J2<$NJQ?t$NCM$rJQ99$9$k$3$H$G!"3F%b!<%I(B $B$K$*$1$k%+!<%=%k$N?'$rJQ99$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-cursor-default-color SKK $B%b!<%I$,%*%U$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$G$O!"%+!<%=%k$N$"$k3:Ev(B $B%U%l!<%`$K$*$1$kI8=`$N%+!<%=%k?'$r;H$$$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-hiragana-color $B$+$J%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"GX7J$NL@0E$K$h$j(B coral4 $B$^$?(B $B$O(B pink $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-katakana-color $B%+%J%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"GX7J$NL@0E$K$h$j(B forestgreen $B$^$?(B $B$O(B green $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-jisx0201-color JIS X 0201 $B%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"GX7J$NL@0E$K$h$j(B blueviolet $B$^$?(B $B$O(B thistle $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-jisx0208-latin-color $BA41Q%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"(Bgold $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-latin-color $B%"%9%-!<%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"GX7J$NL@0E$K$h$j(B ivory4 $B$^$?(B $B$O(B gray $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-abbrev-color skk abbrev $B%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"(Broyalblue $B$G$9!#(B @end defvr @page @node $BJQ498uJd0lMw$NI=<(J}K!(B @subsection $BJQ498uJd0lMw$NI=<(J}K!(B $BJQ498uJd0lMw$NI=<(J}K!$O!"~$9$k%U%'%$%9$r;XDj$7$^$9!#%G%U%)%k%H(B $B$O(B @code{'underline} $B$G$9!#(B @lisp (setq skk-inline-show-face 'font-lock-doc-face) @end lisp @code{skk-treat-candidate-appearance-function} $B$K$h$kAu>~$rM%@h$9$k$K$O(B @code{nil} $B$K@_Dj$7$F2<$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-inline-show-background-color $B%$%s%i%$%sI=<($9$kJQ498uJd$NGX7J?'$r;XDj$7$^$9!#(B @code{skk-inline-show-face} $B$^$?$O(B @code{skk-treat-candidate-appearance-function} $B$K$F!"GX7J?'$,;XDj$5$l$F$$(B $B$J$$J8;z$KBP$7$F$N$_:nMQ$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-inline-show-background-color-odd $B%$%s%i%$%sI=<($9$kJQ498uJd$NGX7J?'!J4q?t%i%$%s!K$r;XDj$7$^$9!#(B @end defvr @end cartouche @end defvr @page @defvr {$B%f!<%6JQ?t(B} skk-show-tooltip $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"8uJd0lMw$r%D!<%k%F%#%C%W$GI=<($7(B $B$^$9!#F1;~$K!"!VCml9g$O(B @code{nil} $B$K@_Dj$7$F2<$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tooltip-mouse-behavior $B%D!<%k%F%#%C%W$rI=<($9$k0LCV5Z$S%^%&%9%]%$%s%?$N5sF0$r;XDj$7$^$9!#(B $B2<5-$K7G$2$k%7%s%\%k0J30$N%7%s%\%k$r;XDj$7$?>l9g$O(B @code{nil} $B$H$J$j$^$9!#(B @table @code @item 'follow $B%^%&%9%]%$%s%?$r%+!<%=%k0LCV$X0\F0$5$;$F%D!<%k%F%#%C%W$rI=<($7$^$9!#(B $B%D!<%k%F%#%C%W$NI=<($r=*$($k$H%^%&%9%]%$%s%?$O85$N0LCV$XLa$j$^$9!#$?$@$7!"85$N%^%&%9%]%$%s%?$,(B Emacs $B%U%l!<%`30$G$"$C$?$J$i$P%D!<%k%F%#%C%W$NI=<($r=*$($F$b%^%&%9%]%$%s%?$O%+!<%=%k0LCV$N$^$^$G$9!#(B @item 'banish $B%^%&%9%]%$%s%?$r(B Emacs $B%U%l!<%`1&>e6y$X0\F0$5$;$F%D!<%k%F%#%C%W$rI=<($7$^$9!#(B $B%D!<%k%F%#%C%W$NI=<($r=*$($b$F%^%&%9%]%$%s%?$O(B Emacs $B%U%l!<%`1&>e6y$N$^$^$G$9!#(B @item 'avoid $B%^%&%9%]%$%s%?$r(B Emacs $B%U%l!<%`1&>e6y$X0\F0$5$;$F%D!<%k%F%#%C%W$rI=<($7$^$9!#(B $B%D!<%k%F%#%C%W$NI=<($r=*$($k$H%^%&%9%]%$%s%?$O85$N0LCV$XLa$j$^$9!#$?$@$7!"85$N%^%&%9%]%$%s%?$,(B Emacs $B%U%l!<%`30$G$"$C$?$J$i$P%D!<%k%F%#%C%W$NI=<($r=*$($F$b%^%&%9%]%$%s%?$O(B Emacs $B%U%l!<%`1&>e6y$N$^$^$G$9!#(B @item 'avoid-maybe $B%^%&%9%]%$%s%?$,(B Emacs $B%U%l!<%`Fb$G$"$l$P(B @code{'avoid} $B$HF1$8F0:n$G$9!#(B $B%^%&%9%]%$%s%?$,(B Emacs $B%U%l!<%`30$G$"$l$P%^%&%9%]%$%s%?0LCV$rJQ99$;$:!"$=$N0LCV$K%D!<%k%F%#%C%W$rI=<($7$^$9!#(B @item nil $B%^%&%9%]%$%s%?$r0l@Z0\F0$;$:!"$=$N0LCV$K%D!<%k%F%#%C%W$rI=<($7$^$9!#(B $B%D!<%k%F%#%C%W$N%F%-%9%H$H%^%&%9%]%$%s%?$,=E$J$C$?$j!"$&$^$/%D!<%k%F%#%C%W$,I=<($G$-$J$+$C$?$j$9$k>l9g$,$"$j$^$9!#(B @end table @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tooltip-hide-delay $B%D!<%k%F%#%C%W$rI=<($9$kIC?t!#%G%U%)%k%H$O(B 1,000$BIC!#$3$N;~4V$,7P2a$9$k$H!"(B $B%D!<%k%F%#%C%W$O<+F0E*$K>C$($k!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tooltip-parameters $B%G%U%)%k%H$O(B @code{nil}$B!#(BSKK $BFH<+$N%U%l!<%`%Q%i%a!<%?$r@_Dj$9$k!#(B @code{nil} $B$N>l9g!"(B@code{tooltip-frame-parameters} $B$,E,MQ$5$l$k!#(B @end defvr @end cartouche @end defvr @page @defvr {$B%f!<%6JQ?t(B} skk-show-candidates-always-pop-to-buffer $B$3$NCM$,(B @code{non-nil} $B$G$"$l$P!"2hLL$r>e2<$KJ,3d$7$?$&$($G!"JQ490lMw$r@lMQ(B $B$N!V(B*$B8uJd(B*$B%P%C%U%!!W$GI=<($7$^$9!#(B $B8uJd0lMwI=<(Cf$K!"$3$NCM$rF0E*$K@Z$j49$($kl9g$O(B @code{nil} $B$r;XDj$9$k$3$H!J%G%U%)%k%H!K!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-candidate-buffer-background-color-odd *$B8uJd(B*$B%P%C%U%!$NGX7J?'!J4q?t%i%$%s!K$r;XDj$7$^$9!#(B @end defvr @end cartouche @end defvr @noindent $B%G%U%)%k%H$G$O#3$D$NJQ?t(B @itemize @bullet @item @code{skk-show-inline} @item @code{skk-show-tooltip} @item @code{skk-show-candidates-always-pop-to-buffer} @end itemize $B$H$b(B @code{nil} $B$G$"$j!"$3$N>uBV$G$O8uJd0lMw$O%(%3!<%(%j%"$KI=<((B @footnote{@code{frame-width} $B$,ITB-$9$k>l9g$O(B *$B8uJd(B*$B%P%C%U%!$KI=<($7$^$9!#(B} $B$7$^$9!#(B $B$b$7$b!"$3$l$iJQ?t$N$&$A#2$D0J>e$,(B @code{non-nil} $B$N>l9g!"M%@h=g0L$O>e5-(B $B$N2r@b$N=g$G$9!#(B @page @node $B"'%b!<%I$K$*$1$kJQ498uJd$N%O%$%i%$%HI=<((B @subsection $B"'%b!<%I$K$*$1$kJQ498uJd$N%O%$%i%$%HI=<((B @cindex @file{canna.el} @cindex @file{rgb.txt} @defvr {$B%f!<%6JQ?t(B} skk-use-face $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"(BEmacs $B$N%U%'%$%95!G=$r;H$C$FJQ49(B $B8uJd$r%O%$%i%$%HI=<($7$^$9!#(B @cindex Overlays @cindex Extents @cindex Text Properties $B$3$N%O%$%i%$%HI=<($K$O(B Emacs $B$N%*!<%P!<%l%$(B (overlay) $B$N5!G=$r;H$$$^$9(B @footnote{$B0JA0$N%P!<%8%g%s$G$O%F%-%9%HB0@-(B (text property) $B$r;HMQ$7$F$$(B $B$^$7$?!#(B $B%*!<%P!<%l%$B0@-$O%F%-%9%HB0@-$H0[$J$j!"%F%-%9%H$N0lIt$H$O8+$J$5$l$^$;$s!#(B $B$=$N$?$a!"%F%-%9%H$N%3%T!<$N:]$K%*!<%P!<%l%$B0@-$OJ]B8$5$l$^$;$s!#$=$NB>(B $B$K$b!"%*!<%P!<%l%$$N0\F0$d$=$NB0@-$NJQ99$O%P%C%U%!$NJQ99$H$O8+$J$5$l$J$$(B $B$3$H!"%*!<%P!<%l%$$NJQ99$O%P%C%U%!$N%"%s%I%%%j%9%H$K5-O?$5$l$J$$$3$H!"$J(B $B$I$,FCD'$H$7$F5s$2$i$l$^$9!#(B $B$J$*!"(BXEmacs $B$K$O%*!<%P!<%l%$5!G=$O$"$j$^$;$s!#Be$o$j$K(B extent $B$H$$$&$b(B $B$N$,MQ0U$5$l$F$$$k$N$G$=$l$rMxMQ$7$^$9!#(B}$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-henkan-face $B$3$NJQ?t$NCM$O%U%'%$%9$G$"$j!"$3$N%U%'%$%9$K$h$C$FJQ498uJd$,%O%$%i%$%HI=(B $B<($5$l$^$9!#I8=`$G$O!"GX7J$NL@0E$K$h$j(B ``black/darkseagreen2'' $BKt$O(B ``white/darkolivegreen'' $B$rMQ$$$^$9!#(B $B$J$*!"$3$NJQ?t$h$j$b(B @code{skk-treat-candidate-appearance-function} $B$N@_(B $BDj$,M%@h$5$l$^$9!#(B @end defvr $BJQ?t(B @code{skk-henkan-face} $B$K$O!"4{B8$N%U%'%$%9(B @footnote{Emacs $BI8=`(B $B$G$O(B @code{default}, @code{modeline}, @code{region}, @code{secondary-selection}, @code{highlight}, @code{underline}, @code{bold}, @code{italic}, @code{bold-italic} $B$,$"$j$^$9!#(B}$B$r;XDj$G$-$^(B $B$9$,!"?7$?$K%U%'%$%9$r:n$k$3$H$b$G$-$^$9!#$=$N$?$a$K!"0J2<$N4X?t$,MQ0U$5(B $B$l$F$$$^$9!#(B @defun skk-make-face FACE $B7A<0(B: (skk-make-face FACE) $B$3$N4X?t$O!"0z?t(B FACE $B$HF1$8L>A0$N%U%'%$%9$r:n@.$7$F!"$=$N%U%'%$%9$rJV$7(B $B$^$9!#%U%'%$%9$NA07J?'!&GX7J?'$O!"0z?t(B FACE $B$K%9%i%C%7%e$r4^$a$k$3$H$h$C(B $B$F!"Nc$($P0J2<$NNc$N$h$&$K7hDj$5$l$^$9!#(B @lisp (setq skk-henkan-face (skk-make-face 'DimGray/PeachPuff1)) @end lisp $B$3$N>l9g!"A07J?'$O(B DimGray $B$K!"GX7J?'$O(B PeachPuff1 $B$K$J$j$^$9!#(B $B$b$&$R$H$DNc$r5s$2$^$9!#(B @lisp (setq skk-henkan-face (skk-make-face 'RosyBrown1)) @end lisp $B$3$N>l9g!"A07J?'$O(B RosyBrown1 $B$K$J$j$^$9!#GX7J?'$,L5;XDj$N>l9g$O%P%C%U%!(B $B$NGX7J?'$,$=$N$^$^8+$($^$9!#(B @end defun @node $BJQ498uJd$N99$J$kAu>~(B @subsection $BJQ498uJd$N99$J$kAu>~(B $BJQ498uJd$K$D$$$F%f!<%6$NG$0U$N2C9)$r;\$9$?$a$NJQ?t$rMQ0U$7$F$"$j$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-treat-candidate-appearance-function $B$3$NJQ?t$KE,@Z$J7A<0$G4X?t$r<}$a$k$3$H$K$h$C$F!"JQ498uJd$r%f!<%6$NG$0U$K(B $B2C9)$9$k$3$H$,$G$-$^$9!#!VE,@Z$J7A<0!W$H$O!"o$NJQ49;~!"(B@code{non-nil} $B$N;~$O8uJd0lMwI=(B $B<(;~$rI=$9$b$N$H$7$F07$&$3$H!#(B @item $BJV$jCM$Ol9g!"$3$NJ8;zNs$O8uJd$HCmJ}4^$_$&$k$b$N$H$7$F=hM}$5$l$k!#(B @item ($B8uJd(B . $BCml9g!"8uJd$O$b$&Cme$G=hM}$5$l$k!#(B @item ($B8uJd(B . ($B%;%Q%l!<%?(B . $BCml9g!"8uJd$O$b$&Cmo(B $B$N(B @samp{;} $B$NBe$o$j$KMxMQ$5$l$k!#Cm~$r;n$7$F(B $B$/$@$5$$!#(B @lisp (setq skk-treat-candidate-appearance-function 'skk-treat-candidate-sample1) @end lisp @lisp (setq skk-treat-candidate-appearance-function 'skk-treat-candidate-sample2) @end lisp @end defvr @node $B%b!<%I%i%$%s$NAu>~(B @subsection $B%b!<%I%i%$%s$NAu>~(B XEmacs $B5Z$S(B Emacs 21 $B0J9_$G$O!"0J2<$N5!G=$,;HMQ$G$-$^$9!#(B @menu * $B%$%s%8%1!<%?(B:: * $B%"%$%3%s(B:: @end menu @node $B%$%s%8%1!<%?(B @subsubsection $B%$%s%8%1!<%?(B @defvr {$B%f!<%6JQ?t(B} skk-indicator-use-cursor-color DDSKK $B$N%$%s%8%1!<%?$r%b!<%I%i%$%s$N:8$KI=<((B @footnote{$B%G%U%)%k%H$G$O!":8$G$9!#(B@w{@xref{$B5/F0$H=*N;(B}.}} $B$7$F$$$k>l9g!"%$%s%8%1!<%?$N?'$,%+!<%=%k$N?'$HF14|$7$^$9!#(B $B%$%s%8%1!<%?$K?'$rIU$1$?$/$J$$>l9g$O!"$3$NJQ?t$r(B @code{nil} $B$K$7$^$9!#(B @end defvr @xref{$BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B}. $B%$%s%8%1!<%?$KFH<+?'$r;H$$$?$$>l9g$O!"0J2<$N%U%'%$%9(B@footnote{ $BJQ?t(B @code{window-system} $B$,(B @code{nil} $B$N>l9g$O!"$3$l$i%U%'%$%9$OL$Dj5A$H(B $B$J$j$^$9!#(B} $B$r@_Dj$7$^$9!#$3$N>l9g%+!<%=%k$N?'$O;2>H$5$l$^$;$s!#(B Emacs 21 $B0J>e(B @footnote{$BJQ?t(B @code{mule-version} $B$NCM$,(B 5.0 $B0J>e$N(B Emacs} $B$N>l9g(B @vindex skk-emacs-hiragana-face @vindex skk-emacs-katakana-face @vindex skk-emacs-jisx0208-latin-face @vindex skk-emacs-jisx0201-face @vindex skk-emacs-abbrev-face @itemize @bullet @item @code{skk-emacs-hiragana-face} @item @code{skk-emacs-katakana-face} @item @code{skk-emacs-jisx0208-latin-face} @item @code{skk-emacs-jisx0201-face} @item @code{skk-emacs-abbrev-face} @end itemize XEmacs $B$N>l9g(B @vindex skk-xemacs-hiragana-face @vindex skk-xemacs-katakana-face @vindex skk-xemacs-jisx0208-latin-face @vindex skk-xemacs-latin-face @vindex skk-xemacs-jisx0201-face @vindex skk-xemacs-abbrev-face @itemize @bullet @item @code{skk-xemacs-hiragana-face} @item @code{skk-xemacs-katakana-face} @item @code{skk-xemacs-jisx0208-latin-face} @item @code{skk-xemacs-latin-face} @item @code{skk-xemacs-jisx0201-face} @item @code{skk-xemacs-abbrev-face} @end itemize $B$J$*!"%$%s%8%1!<%?$r1&%/%j%C%/$9$k$H%]%C%W%"%C%W%a%K%e!<$,I=<($5$l$^$9!#(B @node $B%"%$%3%s(B @subsubsection $B%"%$%3%s(B @cindex @file{skk-icon} @defvr {$B%f!<%6JQ?t(B} skk-show-icon $BJQ?t(B @code{skk-show-icon} $B$NCM$r(B @code{non-nil} $B$H@_Dj$9$k$3$H$K$h$j!"%b!<(B $B%I%i%$%s$K(B SKK $B$N%"%$%3%s$,I=<($5$l$^$9(B@footnote{@code{(image-type-available-p 'xpm)} $B$,(B @code{t} $B$rJV$9I,MW$,$"$k$?$a!"(BEmacsen $B$NiD9$J0FFb%a%C%;!<%8$NI=<((B:: @end menu @node $B%(%i!<$J$I$NF|K\8lI=<((B @subsection $B%(%i!<$J$I$NF|K\8lI=<((B $BI8=`$G$O!"%(%i!2A$7$?$H(B $B$-$N%3!<%I%M!<%`$rF|K\8l$GI=<($7$^$9!#(B @end defvr @node $B>iD9$J0FFb%a%C%;!<%8$NI=<((B @subsection $B>iD9$J0FFb%a%C%;!<%8$NI=<((B @c http://mail.ring.gr.jp/skk/200704/msg00036.html @defvr {$B%f!<%6JQ?t(B} skk-verbose $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"F~NOCf!?JQ49Cf$K>iD9$J%a%C%;(B $B!<%8$rI=<($7$^$9!#(B @lisp (setq skk-verbose t) @end lisp @end defvr @table @asis @item $B"&%b!<%I(B $B%U%!%s%/%7%g%s%-!<(B (@key{F1} $B!A(B @key{F10}) $B$K3d$jEv$F$i$l$F$$$k5!G=$rI=<((B $B$7$^$9!#JQ?t(B @code{skk-verbose} $B$N@_Dj$HF1;~$KJQ?t(B @code{skk-j-mode-function-key-usage} $B$r0J2<$N$h$&$K@_Dj$7$F$_$F$/$@$5$$!#(B @vindex skk-j-mode-function-key-usage @lisp (setq skk-j-mode-function-key-usage 'conversion) @end lisp @noindent $B"&%b!<%I$K$*$$$F%-!3Q%+%J(B [F9]$BA43Q%m!<%^(B [F10]$B%m!<%^(B -------------------- Echo Area -------------------- @end group @end smallexample @noindent $B$3$N0FFb$K=>$C$F%U%!%s%/%7%g%s%-!<$r2!$9$3$H$G!"0l;~E*$KC14A;zJQ49$d%+%?(B $B%+%JJQ49$r9T$&$3$H$,$G$-$^$9!#(B @item $B"'%b!<%I(B Wikipedia $B%"%N%F!<%7%g%s5!G=$N;H$$J}$r%a%C%;!<%8$G0FFb$7$^$9!#(B $BJQ?t(B @code{skk-verbose} $B$N@_Dj$HF1;~$KJQ?t(B @code{skk-show-annotation} $B$r(B @code{non-nil} $B$K@_Dj$7$F$_$F$/$@$5$$!#(B @vindex skk-show-annotation @lisp (setq skk-show-annotation t) @end lisp @noindent $B"'%b!<%I$K$*$$$F%-!H(B?@}}[C-1 C-i]ja.wikipedia [C-2 C-i]en.wiktionary [C-3 C-i]simple.wikipedia [C-4 C-i]en.wikipedia [C-5 C-i]ja.wiktionary -------------------- Echo Area -------------------- @end group @end smallexample @noindent $B$3$N0FFb$K=>$C$F!"Nc$($P(B @kbd{C-1 C-i} $B$r%?%$%W$9$k$HF|K\8l(B Wikipedia $B$N3:Ev5-(B $B;v$rD4$Y$F!"$"$l$P$=$N0lIt$r%"%N%F!<%7%g%s$H$7$FI=<($7$^$9!#(B $B0lJ}!"8=:_$NJQ498uJd$KBP$9$k%"%N%F!<%7%g%s$,4{$KI=<($5$l$F$$$k$H$-$O!"(B $B0J2<$N%a%C%;!<%8$,>e5-$N$b$N$H8r8_$KI=<($5$l$^$9!#(B @smallexample @group -------------------- Echo Area -------------------- @b{@{$B%"%N%F!<%7%g%s(B@}}[C-w]$B%3%T!<(B [C-o]URL$B%V%i%&%:(B [C-i]$B%G%U%)%k%H$N%=!<%9$r;2>H(B -------------------- Echo Area -------------------- @end group @end smallexample @noindent $B$3$N0FFb$K=>$C$F(B @kbd{C-w} $B$r%?%$%W$9$l$P%"%N%F!<%7%g%s$NA4J8$r(B kill ring $B$K(B $BJ]B8$7$FMxMQ$9$k$3$H$,$G$-$^$9!#$^$?(B @kbd{C-o} $B$r2!$7$?>l9g$K$O!"$b$78=(B $B:_$N%"%N%F!<%7%g%s$,(B Wikipedia $B%"%N%F!<%7%g%s$G$"$l$P$=$N=PE5$H$J$k(B Wikipedia/Wiktionary $B$N%Z!<%8$r%&%'%V%V%i%&%6$GI=<($7$^$9!#(B @end table @defvr {$B%f!<%6JQ?t(B} skk-verbose-wait $B>iD9$J%a%C%;!<%8$rI=<($9$k$^$G$NBT$A;~4V(B ($BIC(B)$B!#I8=`$O(B 1.5 $BIC$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-verbose-message-interval $B>iD9$J%a%C%;!<%8$,J#?t$"$k>l9g$N#1%a%C%;!<%8$"$?$jI=<(;~4V$rIC$G;XDj$9$k!#(B $BI8=`$O(B 5.0 $BIC$G$9!#(B $B$3$N;~4V$,7P2a$7$?$iI=<($riD9$J%a%C%;!<%8$K@Z$jBX$($^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-verbose-intention-face $B!V$I$l$r;2>H(B?$B!W$H!V%"%N%F!<%7%g%s!W$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-verbose-kbd-face @samp{[F5]} $B$d(B @samp{[C-1 C-i]} $B$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @node I-search$B4XO"(B @section I-search$B4XO"(B @cindex I-search @cindex Incremental search @cindex @file{~/.skk} @menu * $B5/F0;~$NF~NO%b!<%I$N;XDj(B:: * $B4V$K6uGrEy$r4^$`J8;zNs$N8!:w(B:: @end menu @node $B5/F0;~$NF~NO%b!<%I$N;XDj(B @subsection $B5/F0;~$NF~NO%b!<%I$N;XDj(B @defvr {$B%f!<%6JQ?t(B} skk-isearch-start-mode $B%$%s%/%j%a%s%?%k!&%5!<%A$r5/F0$7$?$H$-$NF~NO%b!<%I$r$3$NJQ?t$G;XDj$G$-$^$9!#(B $B0J2<$N$$$:$l$+$N%7%s%\%k$r;XDj$G$-$^$9$,!"JQ?t(B @code{skk-isearch-use-previous-mode} $B$N(B $B@_Dj$,M%@h$5$l$^$9!#(B @table @code @item nil $B%+%l%s%H%P%C%U%!$G(B SKK $B%b!<%I$,5/F0$5$l$F$$$l$P!"$=$N%b!<%I$r!#(B $B5/F0$5$l$F$$$J$1$l$P%"%9%-!<%b!<%I!#(B @item hiragana $B$+$J%b!<%I(B @item jisx0208-latin $BA41Q%b!<%I(B @item latin $B%"%9%-!<%b!<%I(B @end table @end defvr @defvr {$B%f!<%6JQ?t(B} skk-isearch-use-previous-mode $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"l9g$K!"(B $B%P%C%U%!$,0J2<$N$h$&$J>uBV$K$J$C$F$$$k$3$H$,$"$j$^$9!#(B @example @group -------- Buffer: foo -------- $B$3$N9TKv$+$i;O$^$kJ8;zNs$r8!(B $B:w$7$F2<$5$$!#(B -------- Buffer: foo -------- @end group @end example $B$3$N$h$&$J>l9g$N$?$a$K!"(BEmacs $B$O@55,I=8=$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A$r(B $BDs6!$7$F$$$^$9!#(BDDSKK $B$O$3$N@55,I=8=$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A$K$bBP(B $B1~$7$F$$$k$?$a!"6uGr$d2~9T$r4^$s$@8!:w$b2DG=$G$9!#(B @table @kbd @item M-x isearch-forward-regexp @findex isearch-forward-regexp @kindex M-x isearch-forward-regexp @kindex C-u C-s @kindex M-C-s $BA0J}$X$N@55,I=8=$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A!#(B @kbd{C-u C-s} $B$^$?$O(B @kbd{M-C-s} $B$G5/F0$7$^$9!#(B @item M-x isearch-backward-regexp @findex isearch-backward-regexp @kindex M-x isearch-backward-regexp @kindex C-u C-r @kindex M-C-r $B8eJ}$X$N@55,I=8=$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A!#(B @kbd{C-u C-r} $B$^$?$O(B @kbd{M-C-r} $B$G5/F0$7$^$9!#(B @end table @c $B0J2<$O6uGr$d2~9T$N=hM}$r@)8f$9$kJQ?t$G$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-isearch-whitespace-regexp $B$3$NJQ?t$NCM$O@55,I=8=$G$9!#$3$N@55,I=8=$K%^%C%A$9$kMWAG$O!V@55,I=8=$K$h(B $B$k%$%s%/%j%a%s%?%k!&%5!<%A$K$*$$$F$O!"C18l$r6h@Z$kMWAG$G$O$J$$!W$HH=CG$5(B $B$l$^$9!#$3$NJQ?t$N%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9!#(B @example "\\(\\s \\|[ \t\n\r\f]\\)*" @end example $B$3$NJQ?t$NCM$rJQ99$9$k$3$H$G!"@55,I=8=(B $B$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A$r3HD%$9$k$3$H$,$G$-$^$9!#Nc$($P!"EE;R%a!<(B $B%k$N0zMQItJ,$r8!:w$9$k>l9g$r9M$($^$9!#(B @example > $B0zMQItJ,$b8!(B > $B:w$G$-$k!#(B @end example $B>e5-$N$&$A!"!V8!:w!W$H$$$&8l$O(B 2 $B9T$KEO$C$F$$$k>e!"0zMQ%^!<%/$,A^F~$5(B $B$l$F$$$^$9!#$3$3$G(B @lisp (setq skk-isearch-whitespace-regexp "\\(\\s \\|[ \t\n\r\f<>|]\\)*") @end lisp $B$H@_Dj$9$k$3$H$K$h$j!"!V8!:w!W$r8!:w$G$-$k$h$&$K$J$j$^$9!#(B @end defvr @node VIP/VIPER$B$H$NJ;MQ(B @section VIP/VIPER$B$H$NJ;MQ(B @cindex VIP @cindex VIPER @cindex @file{vip.el} @cindex @file{viper.el} @defvr {$B%f!<%6JQ?t(B} skk-use-viper @c XXX VIP 3.7 $B$K$D$$$F8@5Z$9$k!#(B $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"(BVIPER $B$KBP1~$7$^$9!#(B @end defvr VIPER $B$K$D$$$F$O(B @ref{Top, , VIPER, viper, VIPER Manual}. $B$r;2>H$7$F$/$@$5$$!#(B $B$^$?!"(BVIPER $B$NA0?H$G$"$k(B VIP $B$K$bBP1~$7$^$9!#$?$@$7!"@5<0$KBP1~$7$F$$$k(B $B%P!<%8%g%s$O(B 3.5 $B$N$_$G$9!#$3$l$O(B Mule 2.3 $B$KI8=`E:IU$7$^$9(B @footnote{$B$A$J$_$K!"(BVIP 3.5 $B$N:nM@65l9g$O!"0J2<$N$h$&$JLd(B $BBjE@$,$"$j$^$9!#$?$@$7!"$3$l$i$O(B @code{picture-mode} $B$NLdBj$J$N$G!"8=:_(B $B$N$H$3$m(B DDSKK $BB&$G$OBP=h$7$F$$$^$;$s!#(B @enumerate @item SKK $B%b!<%I$GA43QJ8;z$rF~NO$7$?>l9g$K!"(B@key{BS} $B$GA43QJ8;z$r>C$9$3$H$,$G$-(B $B$^$;$s!#8=>u$G$O!"8eJ}$K$"$kJ8;z$r>C$7$?$$>l9g$O!"$=$NJ8;z$K%]%$%s%H$r9g(B $B$o$;!"(B@kbd{C-c C-d} $B$G0lJ8;z$:$D>C$9I,MW$,$"$j$^$9!#(B @item $B%3%^%s%I(B @code{picture-movement-up} $B$d(B @code{picture-movement-down} $B$K$h(B $B$j>e2<$KA43QJ8;z$rA^F~$7$?>l9g$K!"7e$,$:$l$k>l9g$,$"$j$^$9!#(B @end enumerate $B4X?t(B @code{move-to-column-force} $B$NCf$G;HMQ$5$l$F$$$k4X?t(B @code{move-to-column} $B$N0z?t$H$7$F!"A43QJ8;z$rL5;k$7$?7e?t$,M?$($i$l$k$3(B $B$H$,$"$j!"$=$N$H$-%+!<%=%k0\F0$,$G$-$J$$$?$a!"$3$l$i$NLdBj$,@8$8$^$9!#(B @node Org-mode$B$H$NJ;MQ(B @section Org-mode$B$H$NJ;MQ(B SKK $B%b!<%I$r(B @code{Org-mode} $B$K$*$$$F;HMQ$7$?>l9g$O!"0J2<$N$h$&$JLdBjE@$,(B $B$"$j$^$9!#(B @enumerate @item org-mode $B$NI=Cf$G(B Enter $B%-!<$r2!2<$7$?$H$-$NF0:n$,Js9p$5$l$F$$$^$9(B (@url{http://mail.ring.gr.jp/skk/201401/msg00001.html})$B!#(B $BBP=hJ}K!$O(B @file{dot.skk} $B$K5-:\$7$F$"$j$^$9$9!#(B @end enumerate @node $B%m!<%^;zF~NO0J30$NF~NOJ}<0(B @chapter $B%m!<%^;zF~NO0J30$NF~NOJ}<0(B DDSKK $B$O!"(BSKK $B5lMh$N%m!<%^;z<0$+$JF~NO(B ($B71Na<0!"%X%\%s<0(B) $BJ}<0$N$[$+!"3F(B $Be$G$N3HD%$G$"$k$3$H$,FCD'$G$9!#(B @uref{http://hp.vector.co.jp/authors/VA002116/azik/azikindx.htm, $B3HD%%m!<%^;zF~NO!X#A#Z#I#K!Y!&!X#A#C#T!Y$G2wE,$JF|K\8lF~NO$r!*(B} azik $B$H(B skk $B$G;EMM$,=E$J$kItJ,$,$"$k$?$a!"(B@file{skk-azik.el} $B$G$O0J2<$N$H(B $B$*$jBP1~$7$F$$$^$9!#(B @table @b @item @kbd{q} AZIK $B$G$OY{2;!V$s!W$rF~NO$9$k$K$O(B @kbd{q} $B$r;H$&$3$H$H$5$l$F$$$^$9$,!"(Bskk $B$G(B $B$O4{$K(B @kbd{q} $B$K(B @code{skk-toggle-kana} $B$r3d$jEv$F$F$$$^$9!#(B $B$=$N$?$a(B @file{skk-azik.el} $B$G$O(B @code{skk-toggle-kana} $B$N$l;HMQ$7$^$9!#(B @item @kbd{@@} $B>e5-$N$H$*$j!"(B@code{skk-toggle-kana} $B$N$l(B @kbd{x@@} $B$H!"(B @kbd{x[} $B$GBeMQ$G$-$k$h$&$K$7$F$"$j$^$9!#(B @item @kbd{l} @itemx @kbd{xx} AZIK $B$G$OC1FH$NY92;!V$c$e$g$!$#$%$'$)$n!W$rF~NO$9$k$K$O(B @kbd{l} $B$rA0CV$9(B $B$k$3$H$H$5$l$F$$$^$9$,!"(Bskk $B$G$O4{$K(B @kbd{l} $B$K!V%"%9%-!<%b!<%I$X$N@Z$j(B $BBX$(!W$r3d$jEv$F$F$$$^$9!#(B $B$=$N$?$a(B @file{skk-azik.el} $B$G$O!"Y92;$N$&$A!V$!$#$%$'$)!W$NF~NO$K$D$$$F(B $B$O(B @kbd{xx} $B$rA0CV$9$k$3$H$H$7$F$$$^$9!#(B @itemize @bullet @item @kbd{xxa} @expansion{} $B$!(B @item @kbd{xxi} @expansion{} $B$#(B @item @kbd{xxu} @expansion{} $B$%(B @item @kbd{xxe} @expansion{} $B$'(B @item @kbd{xxo} @expansion{} $B$)(B @end itemize $B$J$*!"Y92;$N$&$A!V$c$e$g$n!W$NC1FHF~NO$O!"(BAZIK $B3HD%(B @file{skk-azik.el} $B$G(B $B$O$J$/!"I8=`(B @file{skk-vars.el} $B$G$9!#(B @itemize @bullet @item @kbd{xya} @expansion{} $B$c(B @item @kbd{xyu} @expansion{} $B$e(B @item @kbd{xyo} @expansion{} $B$g(B @item @kbd{xwa} @expansion{} $B$n(B @end itemize @item @kbd{X} @itemx $B8m$C$?EPO?$N:o=|(B skk $B$G$O!""'%b!<%I$G$N(B @kbd{X} $B$O(B $B4X?t(B @code{skk-purge-from-jisyo} $B$r@\F~NOJ}<0$N0l$D$G$9!#(B @url{http://plone.crew.sfc.keio.ac.jp/groups/tut-code} $B;HMQ$9$k$K$O!"(BSKK $B$N%$%s%9%H!<%k;~$K$$$/$D$+$N%U%!%$%k$r%$%s%9%H!<%k$9$k(B $BI,MW$,$"$j$^$9!#(BSKK $B%=!<%9$N(B @file{tut-code} $B%G%#%l%/%H%j$K$"$k(B @file{skk-tutcdef.el} $B$H(B @file{skk-tutcode.el} $B$r!"(BSKK $B%=!<%9$N%H%C%W%G%#%l%/%H%j$K%3%T!<$7$F!"(BSKK $B$N%$%s%9%H!<%k$r:FEY9T$$$^$9!#(B @xref{DDSKK $B$N%$%s%9%H!<%k(B}. $B$=$N8e!"(B@file{~/.skk} $B$K(B @lisp (require 'skk-tutcdef) @end lisp @noindent $B$H=q$-$^$9!#(B @node $B$+$JF~NO$H?F;X%7%U%H(B @section $B$+$JF~NO$H?F;X%7%U%H(B @cindex $B$+$JF~NO(B @cindex $B?F;X%7%U%H(B @cindex NICOLA DDSKK $B$O%m!<%^;z<0$G$O$J$$!"$$$o$f$k$+$JF~NOJ}<0$r%5%]!<%H$7$^$9!#6qBNE*(B $B$K$O(B @itemize @bullet @item $B5l(B JIS $BG[Ns$G$N$+$JF~NO(B @item $B?F;X%7%U%HJ}<0$G$N$+$JF~NO(B @end itemize @noindent $B$KBP1~$7$F$$$^$9!#$3$l$r;H$&$K$O$^$:!"(Bnicola-ddskk $B3HD%%Q%C%1!<%8$r%$%s(B $B%9%H!<%k$9$kI,MW$,$"$j$^$9!#(BSKK $B%=!<%9%G%#%l%/%H%j$N(B @file{nicola} $B%G%#(B $B%l%/%H%j$K0\F0$7!"%I%-%e%a%s%H$K=>$C$F%$%s%9%H!<%k$7$F$/$@$5$$!#(B @url{http://openlab.jp/skk/skk/main/nicola/README.ja} $BB3$$$F@_Dj$r$7$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-use-kana-keyboard $B$3$NJQ?t$r(B @code{non-nil} $B$K@_Dj$9$k$H!"$+$JF~NO%5%]!<%H$,(B SKK $B5/F0;~$KM-8z$K(B $B$J$j$^$9!#(B @lisp (setq skk-use-kana-keyboard t) @end lisp @end defvr @defvr {$B%f!<%6JQ?t(B} skk-kanagaki-keyboard-type $B$3$NJQ?t$G!"$+$JF~NO%5%]!<%H$NR2p$7$^$9!#(B @menu * $B8r$<=q$-JQ49(B:: * Google CGI API for Japanese Input $B$rMxMQ$7$?$+$J4A;zJQ49(B:: @end menu @node $B8r$<=q$-JQ49(B @section $B8r$<=q$-JQ49(B @file{skk-mazegaki.el} $B$r%$%s%9%H!<%k$9$k$H!"8r$<=q$-JQ49$,2DG=$H$J$j$^$9!#(B @itemize @bullet @item $B$-H$7$F$/$@$5$$!#(B @url{http://www.google.co.jp/ime/cgiapi.html} @node SKK$B$K4X$9$k>pJs(B @chapter SKK$B$K4X$9$k>pJs(B @menu * $B:G?7>pJs(B:: * SKK$B%a!<%j%s%0%j%9%H(B:: * SKK$B4XO"%=%U%H%&%'%"(B:: * SKK$B<-=q$K$D$$$F(B:: * $B<-=q%D!<%k(B:: * SKK$B$N:npJs(B @section $B:G?7>pJs(B DDSKK $B$K$D$$$F$N:G?7>pJs$O!"(B @display @url{http://openlab.jp/skk/} @end display @noindent $B$+$iF@$k$3$H$,$G$-$^$9!#(B SKK $B$N3+H/$O!"(B CVS $B$K$h$C$F$J$5$l$F$$$^$9!#(BCVS $B$r;H$C$F:G?7$N(B SKK $B$rl9g!"(BCVS account $B$rl9g$O!"0J2<$r;2>H$7$F$/(B $B$@$5$$!#(B @display @url{http://openlab.jp/skk/cvs-ja.html} @end display $B:G?7HG(B DDSKK $B$NJQ99FbMF$H99$K2a5n$NJQ99E@$K$D$$$F$O0J2<$N%j%=!<%9$r;2>H(B $B$7$F$/$@$5$$!#(B @display @url{http://openlab.jp/skk/skk/main/READMEs/NEWS.ja} @end display $B$^$?!">-Mh$N%P!<%8%g%s$K$*$1$k3HD%%"%$%G%#%"$K$D$$$F$O!"(BTODO $B$H$7$F$^$H(B $B$a$i$l$F$$$^$9!#(B @display @url{http://openlab.jp/skk/skk/main/READMEs/TODO.ja} @end display SKK Openlab $B$G$O!"3+H/O$N@0Hw$K$46(NO$$$?$@$1$kJ}!"%F%9%?!o$KJg=8$7$F$$$^$9!#$^$?MWK>!"3HD%$N6qBNE*%"%$%G%#(B $B%"$,$"$l$P!"%a!<%j%s%0%j%9%H$KO"Mm$$$?$@$1$k$3$H$r4|BT$7$^$9!#(B @display @xref{SKK$B%a!<%j%s%0%j%9%H(B}. @end display @node SKK$B%a!<%j%s%0%j%9%H(B @section SKK$B%a!<%j%s%0%j%9%H(B SKK Openlab $B%a!<%j%s%0%j%9%H$O!"E}0l$5$l$?0l$D$N(B ML $B$G$9!#MxMQ!"(BSKK $B<-=q!"(BDDSKK $B$N3+H/5DO@$,Cf?4$G$9$,!"<-=q(B $B%5!<%P$d%U%m%s%H%(%s%I!"(B SKK $B<-=q%D!<%k$NOCBj$J$I$b5DO@$NHO0O$KF~$j$^$9!#(B @table @asis @item $B%a!<%j%s%0%j%9%H$K;22C$9$k(B $B%"%I%l%9(B @email{skk-subscribe@@ring.gr.jp} $B08$F$K6u$N%a!<%k$rAw$C$F2<$5$$!#(B $B3NG'$N0Y$N%a%C%;!<%8$,;XDj$5$l$?%"%I%l%908$KAw?.$5$l$^$9!#$=$N3NG'$N0Y$N(B $B%a%C%;!<%8$KBP$7$FJV?.$9$k$3$H$G2CF~H$7$F$/$@$5$$!#(B @uref{http://openlab.jp/skk/wiki/wiki.cgi?page=%A5%EA%A5%F3%A5%AF%BD%B8, SKK $B<-=q(B Wiki $B$K$*$1$k%j%s%/=8(B} @node SKK$B<-=q$K$D$$$F(B @section SKK$B<-=q$K$D$$$F(B SKK $B<-=q$OB?$/$N%f!<%6$NJ}!9$+$iDs6!$5$l$?<-=q$K$h$j%3%T!<%U%j!<$N<-=q$H(B $B$7$F$O:GBg5,LO$N<-=q$K$J$C$F$$$^$9!#:#8e$b$3$NJ}<0$K$h$j(B SKK $B<-=q$r$h$j(B $B=<%U%)!<%`$r1?MQ$7$F$$$^$9!#(B SKK $B<-=q$KDI2C$7$?$$C18l!"8mEPO?$H$7$F:o=|$7$?$$C18l$,$"$j$^$7$?$i!"(B $B@'Hs$4MxMQ2<$5$$!#(B @node $B<-=q%D!<%k(B @section $B<-=q%D!<%k(B SKK $B<-=q$K4X$9$k%D!<%k$K$O!"(BPerl, C, Ruby $B$N3F8@8l$K$h$j=q$+$l$?%D!<%k$,$"$j$^$9$,!"(BPerl $B$K$h$k%D!<%k$O8=:_==J,%a%s%F%J%s%9$5$l$F$$$^$;$s!#(B $B8=:_$O(B C, Ruby $B$N%D!<%k$,3+H/!&%a%s%F%J%s%9$5$l$F$$$^$9!#(B @uref{http://openlab.jp/skk/wiki/wiki.cgi?page=%BC%AD%BD%F1%A5%E1%A5%F3%A5%C6%A5%CA%A5%F3%A5%B9%A5%C4%A1%BC%A5%EB, $B<-=q%a%s%F%J%s%9%D!<%k(B} @node SKK$B$N:nM@65$G$9!#$3$3$KF~$C$F$$$J$$9W8%l9g!"(Bemail address $B$,JQ99$K$J$j(B credit $B$r$3$l$K9g$o$;$?$$>l9g$K$O!"DI2C!"=$@5$$$?$7(B $B$^$9$N$G!"$41sN8$J$/(B @email{skk-owner@@ring.gr.jp, SKK Openlab $B$N4IM}?M(B} $B$^(B $B$G$40lJs$/$@$5$$!#(B @itemize @minus @item @email{hisashi@@rst.fujixerox.co.jp, $BCfDE;3(B $B91(B} @item @email{kose@@emailizard.tamra.co.jp, $B>.4X(B $B5HB'(B} @item @email{takao@@hirata.nuee.nagoya-u.ac.jp, $B>.Ln(B $B9'CK(B} @item @email{mat@@nuis.ac.jp, $B>>0f9'M:(B/MATUI Takao} @item @email{shindo@@super.ees.saitama-u.ac.jp, $B?JF#M5;V(B} @item @email{jshen@@cas.org, $BD@;VM&(B} @item @email{ma-tsuge@@kdd.co.jp, $BDS?"(B $B@5Bg(B} @item @email{amotoki@@dd.iij4u.or.jp, Akihiro Motoki} @item @email{unbound@@papaya.juice.or.jp, Chikanobu Toyofuku} @item @email{ueno@@unixuser.org, Daiki Ueno} @item @email{eguchi@@kyoto-wu.ac.jp, EGUCHI Satoshi} @item @email{obata@@suzuki.kuee.kyoto-u.ac.jp, Eiji Obata} @item @email{fukano-m@@alp.cs.uec.ac.jp, FUKANO Masaaki} @item @email{SFUKAYA@@oracle.co.jp, Fukaya Shigeru} @item @email{machida@@users.sourceforge.jp, Fumihiko MACHIDA} @item @email{furue@@kke.co.jp, FURUE Hideyuki} @item @email{gunji@@sils.shoin.ac.jp, GUNJI Takao} @item @email{grothendieck@@max.hi-ho.ne.jp, G. Yoshida} @item @email{mizu@@cs3.cs.oki.co.jp, Haru Mizuno} @item @email{hal@@sics.se, Haru'yasu Ueda} @item @email{sakurada@@kuis.kyoto-u.ac.jp, Hideki Sakurada} @item @email{lapis-lazuli@@pop06.odn.ne.jp, Hiroya Murata} @item @email{noir@@st.rim.or.jp, Hiroyuki KUROSAKI } @item @email{kuroda@@msi.co.jp, Hisao Kuroda} @item @email{iida@@ring.gr.jp, IIDA Yosiaki} @item @email{irie@@t.email.ne.jp, IRIE Tetsuya} @item @email{ml@@be.to, ISHIKAWA Naoya} @item @email{nakamura@@pluto.ai.kyutech.ac.jp, Jun-ichi Nakamura} @item @email{tomioka@@culle.l.chiba-u.ac.jp, Katuya Tomioka} @item @email{hirokawa@@rics.co.jp, Kazuo Hirokawa} @item @email{kazushi@@kubota.co.jp, Kazushi Marukawa} @item @email{kxn30@@po.cwru.edu, Keisuke Nishida} @item @email{okada@@opaopa.org, Kenichi OKADA} @item @email{kenji@@reseau.toyonaka.osaka.jp, Kenji Rikitake} @item @email{kenji@@cs.titech.ac.jp, Kenji Yamashita} @item @email{fukuchi@@users.sourceforge.net, Kentaro Fukuchi} @item @email{deton@@m1.interq.or.jp, KIHARA Hideto} @item @email{kimura@@oa1.kb.nec.co.jp, Kimura Chikahiro} @item @email{fuyuki@@hadaly.org, Kimura Fuyuki} @item @email{tsuyoshi.kitamoto@@gmail.com, Kitamoto Tsuyoshi} @item @email{kmori@@onsei2.rilp.m.u-tokyo.ac.jp, Koichi MORI} @item @email{hide@@koie.org, KOIE Hidetaka ($B8q9>1QN4(B)} @item @email{uchida@@cfd.tytlabs.co.jp, Koji Uchida} @item @email{kenichi_kurihara@@nifty.com, KURIHARA Kenichi} @item @email{matusita@@ics.es.osaka-u.ac.jp, Makoto MATSUSHITA} @item @email{kaw@@lp.nm.fujitsu.co.jp, Manabu Kawashima} @item @email{martin@@xemacs.org, Martin Buchholz} @item @email{suzmasa@@sm.sony.co.jp, Masahiko Suzuki} @item @email{xdote@@rp.open.cs.fujitsu.co.jp, Masahiro Doteguchi} @item @email{masaka-t@@ascii.co.jp, Masakazu Takahashi} @item @email{masata-y@@is.aist-nara.ac.jp, Masatake YAMATO} @item @email{minakaji@@osaka.email.ne.jp, NAKAJIMA Mikio} @item @email{minoura@@uni.zool.s.u-tokyo.ac.jp, MINOURA Itsushi} @item @email{clefs@@mail.goo.ne.jp, MITA Yuusuke} @item @email{minkov@@fuzzy.or.jp, MIYOSHI Tsutomu} @item @email{mouri@@jaist.ac.jp, Motohiko Mouri} @item @email{mrt@@notwork.org, Murata Shuuichirou} @item @email{nao@@mimo.jaist-east.ac.jp, Naoki HAMADA} @item @email{naoki-w@@ht-net21.ne.jp, Naoki Wakamatsu} @item @email{tnemoto@@mvi.biglobe.ne.jp, NEMOTO Takashi} @item @email{knishida@@nn.iij4u.or.jp, NISHIDA Keisuke} @item @email{nmaeda@@dd.iij4u.or.jp, Norio Maeda } @item @email{onoto@@ma.nma.ne.jp, ONODA Arata } @item @email{furukawa@@tcp-ip.or.jp, Rei FURUKAWA} @item @email{gnu@@ipri.go.jp, Ryoichi Hashimoto} @item @email{ksakai@@kso.netwk.ntt-at.co.jp, SAKAI Kiyotaka} @item @email{satoshi@@sys.sdl.melco.co.jp, Satoshi Harauchi} @item @email{sn@@asahi-net.email.ne.jp, Seiichi NAMBA} @item @email{sekita@@mri.co.jp, Sekita Daigo} @item @email{shigeru@@okunet.gr.jp, Shigeru OKUMURA} @item @email{shuhei@@aqua.ocn.ne.jp, Shuhei KOBAYASHI} @item @email{ashizawa@@zuken.co.jp, Shuji Ashizawa} @item @email{simo@@festa.or.jp, SIMOYAMA Takasi} @item @email{steve@@altair.xemacs.org, SL Baur} @item @email{sphere@@pop12.odn.ne.jp, sphere} @item @email{turnbull@@sk.tsukuba.ac.jp, Stephen Turnbull} @item @email{sigh@@kuzirabekon.econ.nagasaki-u.ac.jp, SUZUKI Hitoshi} @item @email{kaoru@@kaisei.org, TAKAHASHI Kaoru} @item @email{kawamura@@ike.tottori-u.ac.jp, Takao KAWAMURA} @item @email{ohtani@@iias.flab.fujitsu.co.jp, Takeshi OHTANI} @item @email{tats@@vega.ocn.ne.jp, Tatsuya Kinoshita} @item @email{teika@@lavabit.com, Teika Kazura } @item @email{Thierry.Emery@@nmu.alcatel.fr, Thierry Emery} @item @email{tokuya@@crab.fuji-ric.co.jp, TOKUYA Junichi} @item @email{cooper@@saitama.fujimic.fujisankei-g.co.jp, Tomotaka SUWA} @item @email{hiro@@momo.it.okayama-u.ac.jp, Tomoyuki Hiro} @item @email{toru@@maid.ne.jp, Toru YANO} @item @email{toyono-y@@is.aist-nara.ac.jp, Toyonobu Yoshida} @item @email{enami@@ptgd.sony.co.jp, Tsugutomo Enami} @item @email{czkmt@@remus.dti.ne.jp, Tsukamoto Tetsuo} @item @email{tsumura@@kuis.kyoto-u.ac.jp, TSUMURA Tomoaki} @item @email{akiho@@sky.email.ne.jp, Tsuyoshi AKIHO} @item @email{matsui@@atr-rd.atr.co.jp, Wataru Matsui} @item @email{matsui@@gf.hm.rd.sanyo.co.jp, Wataru Matsui} @item @email{ynyaaa@@ybb.ne.jp, YAGI Tatsuya} @item @email{ysjj@@unixuser.org, YAMASHITA Junji} @item @email{yano@@moon.email.ne.jp, Yano Keisuke} @item @email{toyono-y@@is.aist-nara.ac.jp, Yoshida Toyonobu} @item @email{ynakai@@redhat.com, Yukihiro Nakai} @item @email{yoshiki@@xemacs.org, Yoshiki Hayashi} @item @email{manbou@@ceres.dti.ne.jp, YOSHIZAWA Masahiro} @item @email{yutopia@@giga.ocn.ne.jp, Yuh Ohmura} @item @email{yu-ji@@hoso.net, Yu-ji Hosokawa} @item @email{kameyama@@kuis.kyoto-u.ac.jp, Yukiyoshi Kameyama} @item @email{yusuke@@example.com, Yusuke Shinyama} @item @email{kiyoka@@sumibi.org, Kiyoka Nishiyama.} @item @email{aaa707b@@gmail.com, Yuichi Higashi} @end itemize @node SKK$B$NNr;K(B @section SKK$B$NNr;K(B SKK $B$N@.$jN)$A$HNr;K$K4X$7$F$O0J2<$N(B URL $B$r;2>H$7$F$/$@$5$$!#(B @uref{http://openlab.jp/skk/born-ja.html, SKK $B$NCB@8HkOC(B} @uref{http://openlab.jp/skk/SKK.html, ``SKK = I''} @uref{http://openlab.jp/skk/history-ja.html, SKK $B$NNr;K(B ($BIU(B Emacs $B$NNr;K$N0lIt(B)} @uref{http://mail.ring.gr.jp/skk/201212/msg00007.html, SKK $B$N(B 25$BG/(B} @node $B$3$N%^%K%e%"%k$K$D$$$F(B @section $B$3$N%^%K%e%"%k$K$D$$$F(B $BK\%^%K%e%"%k$O!"(BSKK $B%*!<%W%s%i%\$NM-;V$N9W8%$K$h$j!"=>Mh$N%^%K%e%"%k$K2C(B $BI.=$@5$7$?$b$N$G$9!#(B @node $Be$NF|K\8lF~NO%7%9%F%`(B Kanzen $B$N1F6A$r!#(B @end menu @node Introduction @section SKK $B$N$J$<$J$K(B @menu * Q1-1 Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B?:: * Q1-2 SKK $B$O%7%s%W%k$J$N$,D9=j$@$C$?$N$G$O(B?:: * Q1-3 DDSKK $B$O$I$N(B Emacs $B$G;H$($^$9$+(B?:: * Q1-4 DDSKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+(B?:: * Q1-5 APEL $B$C$F2?(B? $BI,MW$G$9$+(B?:: @end menu @node Q1-1 Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B? @unnumberedsubsec Q1-1 Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B? SKK Openlab $B$G3+H/!"%j%j!<%9$5$l$k(B SKK $B$O!"5~Bg$N:4F#@h@8$,Cf?4$K$J$C(B $B$F3+H/$7$F$$$?(B SKK $B$H6hJL$9$k$?$a$K!"(B@samp{Daredevil SKK} $B$H8F$V$3$H$K(B $B$7$^$7$?!#$=$NN,>N$O(B @samp{DDSKK} $B$G!"(BSKK Openlab $B$G:G=i$K(B @samp{Daredevil SKK} $B$H$7$F%j%j!<%9$5$l$?(B version $B$O(B 11.1 $B$G$9(B ($B%*%j%8(B $B%J%k$N(B version $B$r7Q>5$7$^$7$?(B)$B!#(B $B$J$*!"(B@samp{Daredevil} $B$NL>A0$N:NBr$O!"3+H/?X$N0l?M$,9VFI$7$F$$$kK?%i(B $B%8%*1Q2qOC9V:B$N!"$"$kF|$N%9%-%C%HL>$,!V(BDaredevil $B$J$s$H$+!W$G!"$=$NFb(B $BMF$O!V$H$K$+$/$d$C$F$_$h$&!#$&$.$c$!$!$!!"$d$i$l$?$!!W$H$$$&$b$N$G$7$?!#(B $B$3$l$,$"$^$j$K<+J,$N3+H/%]%j%7!<$K9gCW$7$F$$$?!"$H$$$&$3$H$KM3Mh$7$^$9!#(B @node Q1-2 SKK $B$O%7%s%W%k$J$N$,D9=j$@$C$?$N$G$O(B? @unnumberedsubsec Q1-2 SKK $B$O%7%s%W%k$J$N$,D9=j$@$C$?$N$G$O(B? $B$+$h$&$J5DO@$O(B 10 $BG/Mh9T$o$l$F$-$F$*$j!"7kO@$O=P$F$$$^$;$s$,!";vN)$G$-$k!W(B @end display @noindent $B$H$$$&$N$,8=:_$N3+H/?X$N9M$($G$"$k$h$&$G$9!#(B SKK $B$,(B Simple Kana to Kanji conversion program $B$NN,$G$"$k$H$*$j!"$+$J$r4A(B $B;z$KJQ49$9$k%k!<%A%s$N4JC1$5$,(B SKK $B$rDj5AIU$1$F$$$^$9!#$=$N<~JU$N3HD%$K(B $B4X$9$k@)Ls$O4pK\E*$K$O$"$j$^$;$s!#(B $BB?5!G=2=$H8@$C$F$bB?$/$O%f!<%6%*%W%7%g%s$K$h$C$FL58z$K$9$k$3$H$,$G$-$^(B $B$9$7!"(B@file{skk.el} $BK\BN$,J#;(2=$7$J$$$h$&$K%b%8%e!<%k2=$5$l$F$$$^$9!#(B @node Q1-3 DDSKK $B$O$I$N(B Emacs $B$G;H$($^$9$+(B? @unnumberedsubsec Q1-3 DDSKK $B$O$I$N(B Emacs $B$G;H$($^$9$+(B? $B4pK\E*$K$O!"(BGNU Emacs $B$H(B Mule $B5!G=IU$-$N(B XEmacs $B$G;H$($^$9!#(B $BBP1~$9$k(B Emacs $B$N%P!<%8%g%s$K$D$$$F$O0J2<$r$4Mw$/$@$5$$!#(B @display @xref{$B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B}. @end display @node Q1-4 DDSKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+(B? @unnumberedsubsec Q1-4 DDSKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+(B? SKK $B$,%5%]!<%H$7$F$$$k(B Emacs $B$,$=$N(B OS $B$GF0$$$F$$$k$J$i!"(BSKK $B$N4pK\E*(B $B$J5!G=$OF0$/$O$:$G$9!#(B Microsoft Windows $B$G$b(B Apple OS X $B$G$b;H$($^$9!#(B $B3HD%5!G=$K$D$$$F$O!"(BUNIX $B$N3FpJs$K$D$$$F$O!"0J2<$N%U%!%$%k$r;2>H$7$F$/$@$5$$!#(B @display @url{http://openlab.jp/skk/skk/main/READMEs/README.MacOSX.ja} @end display @node Q1-5 APEL $B$C$F2?(B? $BI,MW$G$9$+(B? @unnumberedsubsec Q1-5 APEL $B$C$F2?(B? $BI,MW$G$9$+(B? APEL $B$O(B A Portable Emacs Library $B$NN,$G$9!#(BAPEL $B$Ne$G$O(B APEL $B$OITMW$H$J$j$^$7$?!#$3$NJQ99$O(B 2010 $BG/(B 9 $B7n$K(B CVS $B$K(B commit $B$5$l!"(B2011 $BG/(B 1 $B7n$K(B DDSKK 14.2 $B$H$7$F%j%j!<%9$5$l$^$7$?!#(B @node Installation @section SKK $B$NF~H$7$F$/$@$5$$!#(B @display @xref{SKK$B<-=q$K$D$$$F(B}. @end display @node Q2-3 SKK $B%5!<%P$O$I$3$K$"$j$^$9$+(B? @unnumberedsubsec Q2-3 SKK $B%5!<%P$O$I$3$K$"$j$^$9$+(B? DDSKK 15 $B$O<-=q%5!<%P$N.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B:: * Q3-5 $BA4$/4A;z$,=P$F$-$^$;$s!#(B:: * Q3-6 $B%A%e!<%H%j%"%k$,5/F0$G$-$^$;$s!#(B:: * Q3-7 C-x C-j $B$G(B dired $B$,5/F0$7$F$7$^$$$^$9!#(B:: @end menu @node Q3-1 $B!V!%!W!"!V!$!W(B $B$,F~NO$G$-$k$h$&$K%+%9%?%^%$%:$7$?$$$N$G$9$,!#(B @unnumberedsubsec Q3-1 $B!V!%!W!"!V!$!W(B $B$,F~NO$G$-$k$h$&$K%+%9%?%^%$%:$7$?$$$N$G$9$,!#(B 3$BDL$j$NJ}K!$r>R2p$7$^$9!#(B @enumerate @item $BDL>o(B @samp{.} $B$G!V!%!W!"(B@samp{,} $B$G!V!$!W$rF~NO$7$?$$>l9g(B @file{~/.skk} $B$K0J2<$r@_Dj$7$^$9!#(B @lisp (setq skk-kutouten-type 'en) @end lisp @item $B0l;~E*$K(B @samp{.} $B$G!V!%!W!"(B@samp{,} $B$G!V!$!W$rF~NO$7$?$$>l9g(B @kbd{M-x skk-toggle-kutouten} $B$rl$G!V!$!W!V!%!W$K@Z$jBX$($k(B $B$3$H$,$G$-$^$9!#!V!"!W!V!#!W$KLa$9$K$O!"$b$&0lEY(B @kbd{M-x skk-toggle-kutouten} $B$rl9g$O!"(B File Variables (@pxref{File Variables, , File Variables, emacs, GNU Emacs Manual}) $B$r;2>H2<$5$$!#(B $BNc$($P!"(B tex $B%b!<%I$G$N$_!V!$!W!V!%!W$K@Z$jBX$($?$$>l9g$O!"$D$.$N@_Dj$r(B tex $B%U%!%$%k$N:G8e$KDI2C$7$^$9!#(B @example % Local Variables: % skk-kutouten-type: en % end: @end example @item $B>o$K(B @samp{.} $B$G!V!%!W!"(B@samp{,} $B$G!V!$!W$rF~NO$7$?$$>l9g(B @code{skk-rom-kana-rule-list} $B$rD>@\JQ99$7$^$9!#(B $B$J$*!"$3$N@_Dj$r$9$k$H!"(B@kbd{M-x skk-toggle-kutouten} $B$G$N@Z$jBX$($,(B $B8z$+$J$/$J$k$N$G!"Cm0U$7$F2<$5$$!#(B @file{~/.skk} $B$K0J2<$rDI2C$7$^$9!#(B @lisp @group (setq skk-rom-kana-rule-list (append '(("." nil "$B!%(B") ("," nil "$B!$(B")) skk-rom-kana-rule-list)) @end group @end lisp $B$3$N@_DjJ}K!$O1~MQ$,8z$-!":Y$+$/@)8f$9$k$3$H$,2DG=$G$9!#(B @samp{$B!%(B} $B$H(B @samp{$B!$(B} $B$N$H$3$m$r$=$l$>$l!"(B@samp{.} $B$H(B @samp{,} $B$H$9$k$3$H$G!"(B $B!V$+$J%b!<%I!W!V%+%J%b!<%I!W$G$b!"(B@samp{.} $B$H(B@samp{,} $B$rD>@\F~NO$9$k$3$H$,(B $B$G$-$^$9!#(B @end enumerate @node Q3-2 $B!V$p!W$d!V%p!W(B $B$,F~NO$G$-$k$h$&$K%+%9%?%^%$%:$7$?$$$N$G$9$,!#(B @unnumberedsubsec Q3-2 $B!V$p!W$d!V%p!W(B $B$,F~NO$G$-$k$h$&$K%+%9%?%^%$%:$7$?$$$N$G$9$,!#(B $B0l$DA0$N(B Q $B$NJQ7ALdBj$G$9$M!#$+$J(B/$B%+%J%b!<%I$G$=$l$>$l=PNO$9$kJ8;z(B $B$rJQ$($k$d$jJ}$G$9!#(B @file{~/.skk} $B$K(B @lisp @group (setq skk-rom-kana-rule-list (append '(("wi" nil ("$B%p(B" . "$B$p(B"))) skk-rom-kana-rule-list)) @end group @end lisp @noindent $B$H=q$$$F$_$^$7$g$&!#(B $B0lHVFbB&$N(B cons cell $B$O(B car $B$,%+%J%b!<%I!"(Bcdr $B$,$+$J%b!<(B $B%I$G$NF~NOJ8;z$rI=$7$F$$$^$9!#(B $B0l$DA0$N(B Q $B$KBP$9$kEz$($N$h$&$K!"%+%J%b!<%I!"$+$J%b!<%I$H$b$KF~NO$9(B $B$kJ8;z$,JQ$o$i$J$1$l$P!"(Bcons cell $B$NBe$j$KJ8;zNs$r=q$/$3$H$,$G$-$^$9!#(B @node Q3-3 $B8!:w$9$k<-=q$rA}$d$7$?$$$N$G$9$,!#(B @unnumberedsubsec Q3-3 $B8!:w$9$k<-=q$rA}$d$7$?$$$N$G$9$,!#(B @code{skk-search-prog-list} $B$G@_Dj$r$7$^$7$g$&!#(B @vindex skk-search-prog-list $B$^$:!"8=:_$N@_Dj$r3NG'$7$^$7$g$&$M!#(B*scratch* $B%P%C%U%!$K(B @code{skk-search-prog-list} $B$H=q$$$F$=$N%7%s%\%k$NKvHx$K%]%$%s%H$rCV$$$F(B @kbd{C-j} $B$7$F$_$^$7$g$&!#Nc$($Pe5-$NNc$O(B 2 $B$D$NMWAG$r;}$C$?%j%9%H$K$J$C$F$$$^$9!#@_Dj$K$h$j$b$C$HB?(B $B$/$NMWAG$,$"$k$+$b$7$l$^$;$s!#(B $B3FMWAG$O8!:w$9$k4X?t$H<-=q$r;XDj$7$?%j%9%H$G$9!#MWAG$N=gHV$K8!:w$,$J$5(B $B$l$^$9!#>e5-$NNc$@$H$^$::G=i$K(B @code{skk-jisyo} ($B8D?M<-=q(B) $B$r(B @code{skk-search-jisyo} $B$H$$$&4X?t$r;H$C$F%j%K%"%5!<%A!"l9g$O$I$&$9$l$PNI$$$G$7$g$&(B? $B$b$&J,(B $B$+$j$^$9$h$M(B? $B<-=q%5!<%P$r;H$C$?8!:w<0$Nl9g$J$I$O!"(B @lisp (skk-search-jisyo-file "~/dic/SKK-JISYO.L" 10000) @end lisp @noindent $B$N$h$&$K$9$k$HNI$$$G$7$g$&!#(BSKK $B$O(B Emacs $B$N%P%C%U%!$KFI$_9~$^$l$?(B @file{~/dic/SKK-JISYO.L} $B$N8!:w%j!<%8%g%s$N%]%$%s%H:9$,(B 10,000 $BL$K~$K$J(B $B$k$^$G$O%P%$%J%j%5!<%A$r9T$$!"$=$N8e%j%K%"%5!<%A$r9T$$$^$9!#Bg$-$J<-(B $B=q$G$O%P%$%J%j%5!<%A$r9T$&J}$,$O$k$+$K8zN($,NI$$$G$9!#13$@$H;W$&$J$i!"(B @file{SKK-JISYO.L} $B$rFI$_9~$s$G%j%K%"%5!<%A$9$k$h$&$J@_Dj$K$7$F;n$7$F$_(B $B$F2<$5$$!#(B $B$A$J$_$K!"(B@file{SKK-JISYO.JIS2} $B$O!":GBg$G$b%j!<%8%g%s4V$N%]%$%s%H:9$,(B 8,500 $BDxEY$G$9!#(B @node Q3-4 $B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B @unnumberedsubsec Q3-4 $B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B SKK $B$rI8=`$N>uBV$G;H$C$F$$$k>l9g!"JQ49$N$?$a$K%7%U%H%-!<$rB?MQ$7$^$9$N(B $B$G>.;X$X$NIiC4$,Bg$-$/$J$j$^$9!#(B @footnote{$B$3$N$?$a!"$"$k?M!9$O(B SKK $B$r>.;X%-%i!<$H8F$S$^$9!#(B} $B$3$N6l$7$_$r2sHr$9$k$?$a$K$3$3$G$O(B 4 $B$D$NJ}K!$r>R2p$7$^$9!#(B @enumerate @item $B?F;X$N6a$/$K$"$k%-!<$rMxMQ$7$F%7%U%H%-!<$NBeMQ$H$9$k!#(B $BF|K\8l(B 106 $B%-!<%\!<%I$N$h$&$KL5JQ49!"JQ49$J$I$N%-!<$,$"$k>l9g$O!"$3$l(B $B$i$r%7%U%H%-!<$NBeMQ$H$9$k$3$H$,2DG=$G$9!#$3$&$9$k$H!"Nc$($P(B @display @key{SHIFT} $B$r2!$7$J$,$i(B @kbd{a} $B$r2!$9(B @end display @noindent $B$H$$$&%-!A0$GG'<1$7$F$$$k$+D4$Y$^$9!#$=$l$K$O(B @example @kbd{M-x describe-key} @end example @noindent $B$H$$$&%3%^%s%I$re$G(B $B$J$i!"$*$=$i$/(B @example muhenkan is undefined @end example @noindent $B$H$$$&Ez$($,JV$C$F$/$k$G$7$g$&!#A0$r;H$C$F(B @file{~/.emacs} $B$K@_Dj$r=q$-$3$_$^$9!#0J2<$O(B @key{$BL5JQ49(B} = @key{muhenkan} $B$N>l9g$NNc$G(B $B$9!#(B @lisp @group (unless (keymapp key-translation-map) (setq key-translation-map (make-sparse-keymap))) (let ((i ?a)) (while (<= i ?z) (define-key key-translation-map (vector 'muhenkan i) (vector (- i 32))) (setq i (1+ i)))) @end group @end lisp @vindex key-translation-map $B$3$N@_Dj$r=*$($k$H!"(B@kbd{@key{muhenkan}-a} $B$G(B @kbd{A} $B$,F~NO$G$-$k$h$&$K(B $B$J$j$^$9!#B3$$$F(B SKK $B$r5/F0$7$F$_$^$7$g$&!#(B@kbd{@key{muhenkan}-a} $B$G(B @samp{$B"&$"(B} $B$H$J$j$^$9!#Aw$j$N3+;OE@$b!"$b$A$m$sF1MM$NA`:n$G;XDj$G$-$^$9!#(B @footnote{$BJQ?t(B @code{key-translation-map} $B$N0UL#$rD4$Y$F$_$F$/$@$5$$!#(B @kbd{M-x describe-variable} @key{RET} key-translation-map} @item xmodmap $B$r;H$&!#(B X Window System $B>e$G$O!"(B@command{xmodmap} $B$H$$$&%W%m%0%i%`$r;H$C$F%-!o$N%7%U%H%-!<$HF1$8$h$&$J46$8$G;H$($k$h(B $B$&$K$J$j$^$9!#(B @item @file{skk-sticky.el} $B$r;H$&!#(B @w{@xref{$BJQ490LCV$N;XDjJ}K!(B}.} @item $B?F;X%7%U%HF~NO$N%(%_%e%l!<%7%g%s5!G=$rMxMQ$9$k!#(B @cindex $B?F;X%7%U%HF~NO(B $B$3$l$O(B 1, 2 $B$H$O$+$J$j0c$C$?%"%W%m!<%A$G$9!#(BSKK $BK\Mh$N%m!<%^;zE*F~NO$r\:Y$K$D$$$F$O!"$3$3$G$O=R$Y$^$;$s!#6=L#$,$"$k(B $B>l9g$O!"F|K\8lF~NO%3%s%=!<%7%"%`$N(B Web $B%5%$%H(B @display @url{http://nicola.sunicom.co.jp/} @end display @noindent $B$rK,$l$F$/$@$5$$!#(B} @cindex OASYS @cindex NICOLA @cindex $BF|K\8lF~NO%3%s%=!<%7%"%`(B DDSKK $B$K$O(B NICOLA-DDSKK $B$H$$$&%W%m%0%i%`$,IUB0$7$F$*$j!"$3$l$r%$%s%9%H!<(B $B%k$9$k$H?F;X%7%U%HF~NO$,2DG=$K$J$j$^$9!#%$%s%9%H!<%k<+BN$O4JC1$G!"(B @example % cd nicola % make install @end example @noindent $B$H$7$?8e$K!"(B@file{~/.skk} $B$K(B @lisp @group (setq skk-use-kana-keyboard t) (setq skk-kanagaki-keyboard-type 'omelet-jis) @end group @end lisp @noindent $B$H=q$/$@$1$G$9!#>\$7$$$3$H$O!"(BNICOLA-DDSKK $BIUB0$N%I%-%e%a%s%H$r;2>H$7(B $B$F$/$@$5$$!#(B NICOLA $BG[Ns$O!"FCJL$KF|K\8lF~NO$N$?$a$K9M$($i$l$?G[Ns$J$N$G!"47$l$l$P(B $BHs>o$K8zN(E*$JF|K\8lF~NO$,$G$-$k$h$&$K$J$k$H4|BT$5$l$^$9!#0lJ}$G!"%m!<(B $B%^;zE*F~NOJ}<0$K47$l$F$7$^$C$F$$$k?M$K$H$C$F$O!"(BNICOLA $BG[Ns$K47$l$k$^(B $B$G$+$J$jN}=,$rMW$9$k$3$H$O3N$+$G$9!#(B @end enumerate @node Q3-5 $BA4$/4A;z$,=P$F$-$^$;$s!#(B @unnumberedsubsec Q3-5 $BA4$/4A;z$,=P$F$-$^$;$s!#(B $B62$i$/<-=q$N@_Dj$,$G$-$F$$$J$$$N$G$7$g$&!#(B @file{SKK-JISYO.L} $B$H$$$&%U%!%$%k$,%$%s%9%H!<%k$5$l$F$$$k>l=j$r3NG'$7$F(B $B$/$@$5$$!#IaDL$O(B @display @file{/usr/local/share/skk} @file{/usr/share/skk} @end display @noindent $B$H$$$C$?>l=j$K%$%s%9%H!<%k$5$l$F$$$^$9!#(BXEmacs $B$N%Q%C%1!<%8$J$i$P(B @display @file{/usr/local/lib/xemacs/mule-packages/etc/skk} @end display @noindent $B$J$I$r3NG'$7$^$9!#$=$N8e$G(B @file{~/.skk} $B$K(B @lisp (setq skk-large-jisyo "/usr/local/share/skk/SKK-JISYO.L") @end lisp @noindent $B$N$h$&$K@_Dj$7$^$9!#(B $B$J$*!"<-=q%5!<%P$r;H$C$F$$$k>l9g$O$3$N@_Dj$OI,MW$"$j$^$;$s!#$=$N>l9g$O!"(B $B<-=q%5!<%P$N@_Dj$d!"$=$l$,$A$c$s$H5/F0$7$F$$$k$+$I$&$+$r3NG'$7$F$/$@$5(B $B$$!#(B $B$^$?!"$I$3$K$b<-=q$,%$%s%9%H!<%k$5$l$F$$$J$$>l9g$O(B @display @url{http://openlab.jp/skk/dic/} @end display @noindent $B$+$il=j$r3NG'$7$F$/$@(B $B$5$$!#IaDL$O(B @display @file{/usr/local/share/skk} @file{/usr/share/skk} @end display @noindent $B$H$$$C$?>l=j$K%$%s%9%H!<%k$5$l$F$$$^$9!#(BXEmacs $B$N%Q%C%1!<%8$J$i$P(B @cindex $B%Q%C%1!<%8(B @display @file{/usr/local/lib/xemacs/mule-packages/etc/skk} @end display @noindent $B$J$I$r3NG'$7$^$9!#$=$N8e$G(B @file{~/.emacs} $B$K(B @lisp (setq skk-tut-file "/usr/local/share/skk/SKK.tut") @end lisp @vindex skk-tut-file @noindent $B$N$h$&$K@_Dj$7$^$9!#(B @node Q3-7 C-x C-j $B$G(B dired $B$,5/F0$7$F$7$^$$$^$9!#(B @unnumberedsubsec Q3-7 C-x C-j $B$G(B dired $B$,5/F0$7$F$7$^$$$^$9!#(B @code{dired-x} $B$rFI$_9~$`$H(B @kbd{C-x C-j} $B$,(B @code{dired-jump} $B$K%P%$%s%I$5$l$^$9!#(B $B$3$N>uBV$G$b(B SKK $B$r(B @kbd{C-x C-j} $B$G5/F0$7$?$$$H$-$O!"JQ?t(B @code{dired-bind-jump} $B$K(B @code{nil} $B$r@_Dj$7$^$9!#(B @lisp (setq dired-bind-jump nil) @end lisp $B$J$*!"$3$N@_Dj$O(B @code{dired-x} $B$rFI$_9~$`A0$G$"$kI,MW$,$"$j$^$9!#(B @node Dictionaries @section SKK $B<-=q4XO"(B @menu * Q4-1 SKK $B$K$OM9JXHV9f<-=q$,$"$j$^$9$+(B?:: * Q4-2 SKK $B$N<-=q$K$O!"IJ;l>pJs$,$J$$$s$G$9$M!#(B:: * Q4-3 $BJ#?t$N(B SKK $B<-=q$r7k9g$G$-$^$9$+(B?:: * Q4-4 SKK $B7A<0$N1QOB<-=q$,$"$k$HJ9$$$?$N$G$9$,!#(B:: @end menu @node Q4-1 SKK $B$K$OM9JXHV9f<-=q$,$"$j$^$9$+(B? @unnumberedsubsec Q4-1 SKK $B$K$OM9JXHV9f<-=q$,$"$j$^$9$+(B? CVS $B$+$i<-=q$rl9g$O!"(B@file{zipcode} $B$H$$$&%G%#%l%/%H%j$KF~$C$F(B $B$$$^$9!#(BWWW $B$G$O!"(B @display @url{http://openlab.jp/skk/dic/} @end display @noindent $B$h$jF~pJs$,$J$$$s$G$9$M!#(B @unnumberedsubsec Q4-2 SKK $B$N<-=q$K$O!"IJ;l>pJs$,$J$$$s$G$9$M!#(B @cindex $BIJ;l>pJs(B SKK $B$O4A;z$H$+$J$H$N6h@Z$j$r%f!<%6$,;XDj$9$kJ}<0$K$h$j!"IJ;l>pJs$r;H$C(B $B$?2r@O$rMQ$$$k$3$H$J$/8zN(E*F~NO$,$G$-$^$9!#(B TODO $B$H$7$F$O!"<-=q$KIJ;l>pJs$r;}$?$;$k$3$H$G99$J$kF~NO$N8zN(2=$,$G$-(B $B$k$H$$$&Ds0F$,$J$5$l$F$*$j!"$=$N$h$&$J<-=q$N:n@.$,4{$K;n$_$i$l$F$$$^$9!#(B $B6=L#$N$"$kJ}$O(B @display @url{http://openlab.jp/skk/wiki/wiki.cgi?page=SKK%BC%AD%BD%F1} @end display $B$K$*$1$k(B @file{SKK-JISYO.notes} $B$N9`L\$r$4Mw$/$@$5$$!#(B @node Q4-3 $BJ#?t$N(B SKK $B<-=q$r7k9g$G$-$^$9$+(B? @unnumberedsubsec Q4-3 $BJ#?t$N(B SKK $B<-=q$r7k9g$G$-$^$9$+(B? @cindex $B<-=q$N%^!<%8(B SKK $BK\BN$N%Q%C%1!<%8$K$OF1Iu$5$l$F$$$^$;$s$,!"(Bskk-tools $B$H$$$&JL%Q%C%1!<(B $B%8$,$"$j$^$9!#0J2<$r$4Mw$/$@$5$$!#(B @display @xref{$B<-=q%D!<%k(B}. @end display @node Q4-4 SKK $B7A<0$N1QOB<-=q$,$"$k$HJ9$$$?$N$G$9$,!#(B @unnumberedsubsec Q4-4 SKK $B7A<0$N1QOB<-=q$,$"$k$HJ9$$$?$N$G$9$,!#(B @cindex @file{edict2skk.awk} @cindex @code{skkdic-expr} @cindex @code{skkdic-sort} @cindex edict @cindex $B1QOB<-=q(B edict $B$OOB1Q<-=q$G$9$,!"$3$l$r(B SKK $B<-=q7A<0$N1QOB<-=q$KJQ49$7$?$b$N$r(B @display @url{http://openlab.jp/skk/dic/SKK-JISYO.edict} @end display @noindent $B$H$7$FCV$$$F$$$^$9!#$3$l$O(B edict $B$rC1=c$K5!3#E*$KJQ49$7$?8e!"%P%0$N=$@5(B $B$d!"%(%s%H%j!&8uJd$NDI2C$,(B SKK Openlab $B$GFH<+$K9T$o$l$F$$$k$b$N$G$9!#(B edict $B$r<+J,$G2C9)$7$F>e5-$HF1Ey$N$b$N$r:n@.$9$k$3$H$b$G$-$^$9!#(Bedict $B$O(B @display @url{ftp://ftp.u-aizu.ac.jp:/pub/SciEng/nihongo/ftp.cc.monash.edu.au/} @end display @noindent $B$J$I$+$iF~ temp % skkdic-expr temp | skkdic-sort > SKK-JISYO.E2J % rm temp @end example $B$G$-$?(B @file{SKK-JISYO.E2J} $B$NMxMQJ}K!$O?'!9$"$j$^$9$,!"(B @example % skkdic-expr SKK-JISYO.E2J + /usr/local/share/skk/SKK-JISYO.L | \ skkdic-sort > SKK-JISYO.L @end example @noindent $B$J$I$H$7$F!"(B@file{SKK-JISYO.L} $B$H%^!<%8$7$F;H$&$N$,r7o$O(B GNU GPL (General Public License) $B$G$O$"$j$^$;$s!#(B @display @url{http://www.csse.monash.edu.au/groups/edrdg/newlic.html} @end display @noindent $B$r$4Mw2<$5$$!#(B@file{SKK-JISYO.edict} $B$N%X%C%@!(B @menu * Q5-1 SKK abbrev $B%b!<%I$G$b$C$H1QC18l$rMxMQ$7$?JQ49$,$G$-$^$;$s$+(B?:: * Q5-2 $B;THN$N(B CD-ROM $B<-=q$d%M%C%H%o!<%/$N<-=q%5!<%P$,MxMQ$G$-$^$9$+(B?:: * Q5-3 $BB>$N(B FEP $B$r;HMQCf$K$b(B SHIFT $B$r2!$7$F$7$^$$$^$9!#(B:: @end menu @node Q5-1 SKK abbrev $B%b!<%I$G$b$C$H1QC18l$rMxMQ$7$?JQ49$,$G$-$^$;$s$+(B? @unnumberedsubsec Q5-1 SKK abbrev $B%b!<%I$G$b$C$H1QC18l$rMxMQ$7$?JQ49$,$G$-$^$;$s$+(B? @cindex @code{look} @cindex @file{skk-look.el} @cindex edict @cindex $B1QC18l$N8!:w(B @cindex $BOB1QJQ49(B @kindex , @kindex . @vindex skk-look-expanded-word-only @vindex skk-look-recursive-search @vindex skk-look-use-ispell @vindex skk-use-look UNIX @command{look} $B%3%^%s%I$H(B @file{skk-look.el} $B$rMxMQ$9$k$H!"?'!9$G$-$^(B $B$9$h!#$^$:!"(B @file{~/.skk} $B$G(B @code{skk-use-look} $B$r(B @code{t} $B$K%;%C%H$7$F(B Emacs/SKK $B$rN)$A>e$2D>$7$F2<$5$$!#(B $B$5$!!"2<5-$N$h$&$J7]Ev$,2DG=$K$J$j$^$7$?!#(B @enumerate @item $B1QC18l$NJd40$,$G$-$^$9!#(B @example $B"&(Babstr(@key{TAB}) @expansion{} $B"&(Babstract @end example $BDL>o$NJd405!G=$HF1MM$K(B @kbd{.} $B$Ge5-F1MM!"(B @code{skk-look-use-ispell} $B$NCM$,(B @code{non-nil} $B$G$"$l$P!"(B@command{look} $B$G8!:w$9$kA0$K(B @command{ispell} $B$G%9%Z%k%A%'%C%/!&=$@5$r$7$^$9!#(B @example $B"&(Babstr* (@key{SPC}) @expansion{} $B"'(Babstract @end example $B8+=P$78l$K(B @samp{*} $B$rF~$l$k$N$r$*K:$l$J$/!#(B @item $B$"$$$^$$$KJQ49$7$?8e!"99$K:F5"E*$J1QOBJQ49$r9T$&$3$H$,$G$-$^$9!#(B $B$^$:!"(B@code{skk-look-recursive-search} $B$NCM$r(B @code{non-nil} $B$K%;%C%H(B $B$7$F2<$5$$!#(BEmacs/SKK $B$r:F5/F0$9$kI,MW$O$"$j$^$;$s!#$9$k$H!"Nc$($P!"(B @example $B"&(Babstr* (@key{SPC}) @expansion{} $B"'(Babstract (@key{SPC}) @expansion{} $B"'%"%V%9%H%i%/%H(B (@key{SPC}) @expansion{} $B"'Cj>](B (@key{SPC}) @expansion{} $B"'(Babstraction (@key{SPC}) @expansion{} $B"'%"%V%9%H%i%/%7%g%s(B @end example $B$3$N$h$&$K1QC18l(B + $B$=$N1QC18l$r8+=P$78l$K$7$?8uJd$N!V%;%C%H!W$rJQ497k2L(B $B$H$7$F=PNO$9$k$3$H$,$G$-$^$9!#(B $B$3$N:]!"(B@code{skk-look-expanded-word-only} $B$NCM$,(B @code{non-nil} $B$G$"(B $B$l$P!":F5"8!:w$K@.8y$7$?1QC18l$N!V%;%C%H!W$@$1$r=PNO$9$k$3$H$,$G$-$^$9(B ($B:F5"8!:w$G8!=P$5$l$J$+$C$?1QC18l$OL5;k$7$F=PNO$7$^$;$s(B) $B!#(B $B$b$A$m$s!"(BSKK $B<-=q$K(B @example abstract /$B%"%V%9%H%i%/%H(B/$BCj>](B/ abstraction /$B%"%V%9%H%i%/%7%g%s(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$3$H$rA0Ds$H$7$F$$$^$9!#(Bedict $B$r(B SKK $B<-=q7A<0$KJQ49(B $B$9$k$HNI$$$G$9$M!#(B @end enumerate $B$J$*!"(B@file{skk-look.el} $B$r;H$C$?Jd40!&JQ49$,4|BT$9$k%9%T!<%I$h$j$bCY(B $B$$!"Jd40!&JQ49$GM>J,$J8uJd$,=P$k!"$H$*46$8$N5.J}$O!"(B @code{skk-look-use-ispell} $B$NCM$r(B @code{nil} $B$K$7$F(B @command{ispell} $B$K$h(B $B$k%9%Z%k%A%'%C%/!&=$@5$r%*%U$K$7$F$*;n$72<$5$$!#(B @node Q5-2 $B;THN$N(B CD-ROM $B<-=q$d%M%C%H%o!<%/$N<-=q%5!<%P$,MxMQ$G$-$^$9$+(B? @unnumberedsubsec Q5-2 $B;THN$N(B CD-ROM $B<-=q$d%M%C%H%o!<%/$N<-=q%5!<%P$,MxMQ$G$-$^$9$+(B? @cindex @file{skk-lookup.el} @cindex Lookup @vindex skk-search-prog-list @findex skk-lookup-search Lookup $B$,07$($k<-=q$O$[$H$s$I;H$($^$9!#(BLookup $B$,%$%s%9%H!<%k$5$l$F$$$k(B $B>uBV$G(B SKK $B$r%$%s%9%H!<%k$9$k$H!"(BSKK $B$H(B Lookup $B$N%2!<%H%&%'%$%W%m%0%i(B $B%`(B @file{skk-lookup.el} $B$,%$%s%9%H!<%k$5$l$^$9!#(B $B%$%s%9%H!<%k$GCm0U$9$Y$-$O!"(B@command{make} $B$G8F$S=P$5$l$k(B Emacs $B$O(B @option{-q -no-site-file} $B%U%i%0IU$-$G8F$P$l$k$N$G!"(B@file{~/.emacs} $B$d(B @file{site-start.el} $B$J$I$OFI$_9~$^$l$J$$$3$H$G$9!#%G%U%)%k%H$G(B @code{load-path} $B$NDL$C$F$$$k%G%#%l%/%H%j$K(B lookup $B$r%$%s%9%H!<%k$9$k$+!"(B @file{SKK-CFG} $B$NCf$G(B @var{VERSION_SPECIFIC_LISPDIR} $B$J$I$K%G%#%l%/%H%j(B $B$rL@<($9$k$3$H$G2r7h$G$-$^$9!#(B $B$5$!!"(B@file{~/.skk} $B$G(B @code{skk-search-prog-list} $B$N(B $BMWAG$K(B @code{(skk-lookup-search)} $B$rDI2C$7$^$7$g$&!#B>$N8!:w%(%s%8%s$h$j(B $B$b8!:w$OHf3SE*CY$$$N$G!":G8e$NJ}$,NI$$$H;W$$$^$9!#(B $B$3$s$J46$8$G$9!#(B @lisp @group (setq skk-search-prog-list '((skk-search-jisyo-file skk-jisyo 0 t) (skk-search-server skk-aux-large-jisyo 10000) (skk-lookup-search))) @end group @end lisp Lookup $B$K$D$$$F$O!"(B @display @url{http://openlab.jp/edict/lookup/} @end display @noindent $B$r$4;2>H2<$5$$!#(B @node Q5-3 $BB>$N(B FEP $B$r;HMQCf$K$b(B SHIFT $B$r2!$7$F$7$^$$$^$9!#(B @unnumberedsubsec Q5-3 $BB>$N(B FEP $B$r;HMQCf$K$b(B SHIFT $B$r2!$7$F$7$^$$$^$9!#(B $B<#$9$K$O(B SKK $B$r$d$a$k$7$+$"$j$^$;$s(B :-) Emacs $B>e0J30$G$b(B SKK $B$_$?$$$JA`:n@-$r * dot.skk (skk-use-auto-enclose-pair-of-region): Add. 2014-10-09 Tsuyoshi Kitamoto * dot.skk: Add "org-mode ã®è¡¨ä¸­ã§ã® return". 2014-09-18 Tsuyoshi Kitamoto * SKK.tut: 微修正. 2014-06-12 Tsuyoshi Kitamoto * dot.skk: Replace from `Mac OS X' to `Apple OS X' in comments. 2014-06-03 Tsuyoshi Kitamoto * dot.skk: Update. 2013-08-24 Tsuyoshi Kitamoto * dot.skk: Update. 2013-08-17 Tsuyoshi Kitamoto * dot.skk: Update. 2013-08-16 Tsuyoshi Kitamoto * dot.skk: Update. 2013-08-13 Tsuyoshi Kitamoto * dot.skk: Update. 2013-08-10 Tsuyoshi Kitamoto * dot.skk, dot.emacs: Update. 2013-07-18 Tsuyoshi Kitamoto * dot.skk: Update. 2013-07-15 Tsuyoshi Kitamoto * dot.skk, dot.emacs: Update. 2013-07-10 Tsuyoshi Kitamoto * skk2cdb.py: move to dic/ . 2013-03-17 Tsuyoshi Kitamoto * dot.skk: Update for skk-version-codename-ja. 2013-02-21 Tsuyoshi Kitamoto * dot.skk: Update for skk-itaiji-jisyo. 2013-01-13 Tsuyoshi Kitamoto * dot.skk: Update. 2013-01-02 Tsuyoshi Kitamoto * dot.skk: skk-show-annotation ã®è¨˜è¿°ã‚’æ›´æ–°. 2012-09-17 Tsuyoshi Kitamoto * dot.skk: コメントを微修正. 2012-08-28 Tsuyoshi Kitamoto * SKK.tut: 微修正. * SKK.tut.E: SKK.tut ã«ã‚ã‚ã›ãŸä¿®æ­£. 2012-08-20 Tsuyoshi Kitamoto * dot.skk: Update. * dot.emacs: Update. 2012-08-18 Tsuyoshi Kitamoto * dot.skk: コメントを微修正. 2011-12-31 Tsuyoshi Kitamoto * dot.skk: コメントを微修正. 2011-12-18 Tsuyoshi Kitamoto * dot.skk: skk-show-mode-show ã®è¨˜è¿°ã‚’æ›´æ–°. 2011-12-13 Tetsuo Tsukamoto * dot.skk: Update for skk-isearch. 2011-12-06 Tsuyoshi Kitamoto * dot.skk: skk-tankan-radical-name-face を追加. 2011-12-03 Tsuyoshi Kitamoto * dot.skk: skk-annotation-delay を追加. 2011-11-26 Tetsuo Tsukamoto * dot.skk: Update for Wikipedia/Wikitionary lookup. 2011-11-20 Tsuyoshi Kitamoto * dot.skk: advice 例をファイル skk-show-mode.el ã¸ç§»å‹•. (skk-status-indicator): 設定例を追加. (skk-show-mode-style): 設定例を追加. 2011-11-19 Tsuyoshi Kitamoto * dot.skk (skk-cursor-set): æ–°ãŸãª advice 例 `skk-show-mode' を追加. 2011-11-17 Tsuyoshi Kitamoto * dot.skk: コメント中ã®å¤‰æ•°ã‚’ `...' ã§å›²ã‚“ã . 2011-10-28 Tsuyoshi Kitamoto * dot.skk: "助言的" ã‚’ "冗長ãª" ã¸. 2011-10-26 Tsuyoshi Kitamoto * SKK.tut: 文言を修正. 2011-10-21 Tsuyoshi Kitamoto * dot.skk: Add comment. 2011-10-15 Tsuyoshi Kitamoto * dot.skk: Add comment. 2011-07-12 Tsuyoshi Kitamoto * dot.skk: Update. 2011-06-26 Tsuyoshi Kitamoto * dot.skk: Update. 2011-06-23 Tsuyoshi Kitamoto * dot.skk: Update. 2011-06-22 Tsuyoshi Kitamoto * dot.skk: Update. 2011-06-11 Tsuyoshi Kitamoto * dot.skk (skk-show-tooltip): skk-show-tooltip ã«é–¢ã™ã‚‹ã‚³ãƒ¡ãƒ³ãƒˆã‚’修正. 2011-06-04 Tsuyoshi Kitamoto * SKK.tut: 文言を修正. 2011-05-24 Tsuyoshi Kitamoto * dot.skk: skk-toggle-kutouten ã®ã‚­ãƒ¼ãƒã‚¤ãƒ³ãƒ‰ä¾‹. 2010-12-31 Tsuyoshi Kitamoto * dot.skk: Update. 2010-12-19 Tsuyoshi Kitamoto * dot.skk: Add example for skk-tankan-face. Add example for skk-display-code-prompt-face and skk-display-code-char-face. 2010-12-17 Tsuyoshi Kitamoto * dot.skk: Update for skk-save-jisyo-instantly. Update for å˜æ¼¢å­—変æ›. 2010-12-01 Tetsuo Tsukamoto * dot.skk: Update for skk-search-katakana, skk-search-sagyo-henkaku and skk-extra-jisyo-file-list. * skk-dic.rb: No longer in the repository. 2010-11-30 Tsuyoshi Kitamoto * dot.skk: å˜æ¼¢å­—変æ›ã®è¨­å®šä¾‹ã‹ã‚‰ skk-rom-kana-rule-list ã®ä¾‹ã‚’削除。 2010-11-26 Tsuyoshi Kitamoto * dot.skk: å˜æ¼¢å­—変æ›ã®è¨­å®šä¾‹ã‚’記載。 2010-11-25 Tsuyoshi Kitamoto * dot.skk (skk-hyphen): コード見直ã—。 2010-11-24 Tsuyoshi Kitamoto * dot.skk (skk-hyphen): コード見直ã—。 2010-11-14 Tsuyoshi Kitamoto * dot.skk: Change default value skk-previous-completion-use-backtab. 2010-11-13 Tsuyoshi Kitamoto * dot.skk (skk-tooltip-parameters): Add options. foreground-color and internal-border-width. 2010-11-08 Tsuyoshi Kitamoto * dot.skk (skk-comp-circulate): New description. (skk-previous-completion-use-backtab): New description. 2010-10-12 Tsuyoshi Kitamoto * dot.skk: Modify comment. 2010-09-19 Tsuyoshi Kitamoto * dot.skk: Update. 2010-09-12 Tsuyoshi Kitamoto * dot.emacs: Remove skk-startup-screen. 2010-09-11 Tetsuo Tsukamoto * dot.skk: Rename skk-e21-*-face to skk-emacs-*-face. 2010-09-10 Tsuyoshi Kitamoto * dot.emacs: Add skk-startup-screen. 2010-09-07 å°æž—å¥ä¸€ * SKK.tut: Fix typo [skk 7269]. 2010-08-23 Tetsuo Tsukamoto * dot.skk: Add skk-tooltip-x-offset, skk-tooltip-y-offset and `skk-annotation-wikipedia-region-or-at-point'. 2010-08-17 Tetsuo Tsukamoto * dot.skk: Add skk-cdb-large-jisyo. * Emacs.ad: Modify according to the modification to skk-menu-items. 2010-08-07 Tsuyoshi Kitamoto * dot.skk (skk-candidate-buffer-background-color): Rename option name from `skk-kouho-window-background'. 2010-07-25 Tsuyoshi Kitamoto * dot.skk: fix doc. 2010-07-22 Tsuyoshi Kitamoto * dot.skk: fix doc. 2010-07-21 Tsuyoshi Kitamoto * dot.skk: Add examples for skk-henkan-rest-indicator-face and skk-henkan-show-candidates-keys-face. 2010-07-18 Tetsuo Tsukamoto * dot.skk: Add examples for skk-verbose and skk-j-mode-function-key-usage. 2010-07-17 Tsuyoshi Kitamoto * dot.skk: Add sample skk-tooltip-function. 2010-07-11 Tsuyoshi Kitamoto * dot.skk: Update. 2010-07-10 Tsuyoshi Kitamoto * dot.skk: Add skk-henkan-rest-indicator and skk-kouho-window-background. 2010-07-04 Tsuyoshi Kitamoto * dot.skk: Update. 2010-02-22 Tsuyoshi Kitamoto * dot.skk: s/(SKK)?(辞書)?サーãƒ/辞書サーãƒ/g 2009-01-06 Kitamoto Tsuyoshi * dot.skk: Update. 2008-10-31 Kazuhiro NISHIYAMA * dot.emacs: Fix typo. 2008-09-28 Kitamoto Tsuyoshi * dot.skk: Add skk-period and skk-comma. 2008-04-18 Kitamoto Tsuyoshi * dot.skk: Fix typo. 2008-04-13 Kitamoto Tsuyoshi * dot.skk: Fix typo. 2008-04-13 IRIE Tetsuya * dot.skk: Update. 2007-10-16 IRIE Tetsuya * dot.skk (skk-show-inline): Add about vertical. 2007-10-16 Kitamoto Tsuyoshi * dot.emacs: Update comment. 2007-10-08 Kitamoto Tsuyoshi * dot.skk (skk-treat-candidate-appearance-function): Use `skk-e21-jisx0208-latin-face' instead of `skk-e21-latin-face'. 2007-09-16 Kitamoto Tsuyoshi * dot.skk: Add sample code for skk-show-japanese-menu, skk-annotation-show-as-message, skk-cursor-latin-color and skk-show-candidates-always-pop-to-buffer. 2007-09-16 Tetsuo Tsukamoto * dot.emacs: Update for skk-user-directory. 2007-08-12 Tetsuo Tsukamoto * dot.skk: Update for `skk-search-kakutei-jisyo-file' in skk-search-prog-list. 2007-08-10 Tetsuo Tsukamoto Suggested by Eiji Obata . * dot.skk: Modify setting for skk-look-completion-arguments. 2007-07-29 Tetsuo Tsukamoto Suggested by Eiji Obata . * dot.skk: Modify setting for skk-dcomp-activate. 2007-07-16 Kitamoto Tsuyoshi * dot.emacs: * dot.skk: Add settings for skk-study.el. 2007-04-10 Tetsuo Tsukamoto * Emacs.ad: Update. 2005-12-23 Tetsuo Tsukamoto * dot.skk: New examples for skk-tooltip-parameters, skk-show-inline, skk-inline-show-face, skk-treat-candidate-appearance-function, skk-dcomp-activate, skk-use-numeric-conversion and skk-non-numeric-prog-list. * skk-dic.rb: Remove spaces before argument parentheses. 2005-12-10 Tetsuo Tsukamoto * dot.skk: Use `add-hook' to modify skk-search-excluding-word-pattern-function. 2005-10-05 Kenichi Kurihara * dot.skk: Add an example which determine `skk-kutouten-type' dynamically. 2005-10-01 Tetsuo Tsukamoto * dot.emacs (skk-preload): New description. 2005-09-24 Tetsuo Tsukamoto * dot.skk (skk-jisyo-code): New description. (skk-search-katakana): Describe how to get jisx0201 kana candidates. 2005-09-23 Tetsuo Tsukamoto * dot.skk: Describe how to thoroughly control `skk-search-prog-list'. 2005-09-23 KOIE Hidetaka * dot.skk: Describe how to auto-save private jisyo with timer. 2004-03-04 Tetsuo Tsukamoto * skk.xpm: Make the background transparent. 2002-08-15 Tetsuo Tsukamoto * dot.emacs: Show how to turn on `skk-latin-mode' automatically. * dot.skk: Show how to avoid "C-j" overriden by skk-latin-mode in lisp-interaction-mode. 2002-05-27 Eiji Obata * SKK.tut, SKK.tut.E: Don't call `delete-region' many times. 2002-03-01 IIDA Yosiaki * NICOLA-SKK.tut, SKK.tut, SKK.tut.E: Correct cursor to point. * SKK.tut.E: Correct display to buffer. 2002-02-28 IIDA Yosiaki * NICOLA-SKK.tut: Add RCS keyword. * NICOLA-SKK.tut, SKK.tut, SKK.tut.E: Remove non-standard characters. Correct window to buffer, JISYO buffer to JISYO and vice versa. * SKK.tut.E: Correct kEkutei to kAkutei. 2002-02-27 IIDA Yosiaki * NICOLA-SKK.tut, SKK.tut: Correct minibuffer to echo area. * SKK.tut.E: Ditto and vice versa. Correct minibuffer to JISYO buffer. 2002-02-26 IIDA Yosiaki * NICOLA-SKK.tut, SKK.tut: Fix lots of Japanese typos. * NICOLA-SKK.tut, SKK.tut, SKK.tut.E: s/Mule/Emacs/g. 2002-02-25 IIDA Yosiaki * SKK.tut.E: Remove a whole sentence which reads that SKK uses two buffers for a JISYO, which is now not correct (but might be so at the time). Fix lots of English typos. 2002-02-04 IIDA Yosiaki * NICOLA-SKK.tut, SKK.tut, SKK.tut.E: Append copyright notice of SKK Development Team. Add note for symbols not in S Jisyo. Replace Russia with Cyrillic. Typo fix for GIRISIA, EUC KO^DO, whose C stands for code. ddskk-15.2/etc/Emacs.ad0000644000570400056700000000421211432510342014705 0ustar kitamotoopenlab! -*- mode: xrdb; coding: euc-jp -*- ! ! XEmacs ¤Ç¤ÏÆüËܸì¥á¥Ë¥å¡¼¤òɽ¼¨²Äǽ¤Ç¤¹¤¬¡¢Emacs Lisp ¤Î¥³¡¼¥É¤ÇÆüËܸìʸ»úÎó¤ò ! »ØÄꤷ¤Æ¤âÀµ¤·¤¯É½¼¨¤Ç¤­¤Þ¤»¤ó¡£¤·¤«¤· X ¤Î¥ê¥½¡¼¥¹¤Ë°Ê²¼¤Î¤è¤¦¤Êµ­½Ò¤òÄɲä¹ ! ¤ë¤³¤È¤Ç¡¢SKK ¤Î¥á¥Ë¥å¡¼¤òÆüËܸ첽¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ! ¶ñÂÎŪ¤Ë¤Ï¡¢°Ê²¼¤ÎÆâÍÆ¤ò locale ¥Ñ¥Ã¥±¡¼¥¸¤ËÉÕ°¤Î¥ê¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ë½ñ¤­²Ã¤¨¤Þ ! ¤¹¡£XEmacs ¤òɸ½àŪ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ì¤Ð¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ï ! ! /usr/local/lib/xemacs/mule-packages/etc/app-defaults/ja/Emacs ! ! ¤Ë¤¢¤ë¤³¤È¤¬Í½ÁÛ¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢°Ê²¼¤Î³Æ¹Ô¤Ë "XEmacs" ¤È¤¤¤¦ prefix ¤òÉÕ¤±¤Æ¡¢ ! ~/.Xresources ¤Ë½ñ¤­¤³¤à¡¢¤È¤¤¤¦¼ê¤â¤¢¤ë¤Ç¤·¤ç¤¦¡£ *XlwMenu.convertRegionAndEcho.labelString: Îΰè¤òÊÑ´¹¤·¤Æ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ëɽ¼¨ *XlwMenu.gyakubiki.labelString: µÕ°ú¤­ *XlwMenu.toHiragana.labelString: ¤Ò¤é¤¬¤Ê¤ËÊÑ´¹ *XlwMenu.toHiraganaAllCandidates.labelString: ¤Ò¤é¤¬¤Ê¤ËÊÑ´¹¡¢Á´¤Æ¤Î¸õÊä¤òɽ¼¨ *XlwMenu.toKatakana.labelString: ¥«¥¿¥«¥Ê¤ËÊÑ´¹ *XlwMenu.toKatakanaAllCandidates.labelString: ¥«¥¿¥«¥Ê¤ËÊÑ´¹¡¢Á´¤Æ¤Î¸õÊä¤òɽ¼¨ *XlwMenu.hurigana.labelString: ¤Õ¤ê¤¬¤Ê *XlwMenu.convertRegionAndReplace.labelString: Îΰè¤òÊÑ´¹¤·¤ÆÃÖ¤­´¹¤¨¤ë *XlwMenu.ZenkakuToAscii.labelString: Á´³Ñ±Ñ¿ô¤ò ASCII ¤ËÊÑ´¹ *XlwMenu.katakanaToHiragana.labelString: ¤Ò¤é¤¬¤Ê¤ËÊÑ´¹ *XlwMenu.HiraganaToKatakana.labelString: ¥«¥¿¥«¥Ê¤ËÊÑ´¹ *XlwMenu.kanaAndZenkakuToRomaji.labelString: ¥í¡¼¥Þ»ú¤ËÊÑ´¹ *XlwMenu.asciiToZenkaku.labelString: ASCII ¤òÁ´³Ñ±Ñ¿ô¤ËÊÑ´¹ *XlwMenu.countJisyoCandidates.labelString: ¼­½ñÃæ¤Î¸õÊä¿ô¤ò¿ô¤¨¤ë *XlwMenu.saveJisyo.labelString: ¼­½ñ¤òÊݸ¤¹¤ë *XlwMenu.undoKakutei.labelString: ³ÎÄê¤ò¼è¤ê¾Ã¤¹ (¥¢¥ó¥É¥¥¡¼) *XlwMenu.version.labelString: SKK ¤Î¥Ð¡¼¥¸¥ç¥ó *XlwMenu.hiragana.labelString: ¤Ò¤é¤¬¤Ê *XlwMenu.katakana.labelString: ¥«¥¿¥«¥Ê *XlwMenu.hankakuAlphabet.labelString: Ⱦ³Ñ±Ñ¿ô *XlwMenu.zenkakuAlphabet.labelString: Á´³Ñ±Ñ¿ô *XlwMenu.readManual.labelString: ¥Þ¥Ë¥å¥¢¥ë¤òÆÉ¤à *XlwMenu.startTutorial.labelString: ¥Á¥å¡¼¥È¥ê¥¢¥ë *XlwMenu.customizeSKK.labelString: SKK ¤ò¥«¥¹¥¿¥Þ¥¤¥º *XlwMenu.customizeSKK__Simple_.labelString: SKK ¤ò¥«¥¹¥¿¥Þ¥¤¥º *XlwMenu.sendABugReport.labelString: ¥Ð¥°¤òÊó¹ð¤¹¤ë *XlwMenu.aboutDaredevilSKK__.labelString: Daredevil SKK ¤Ë¤Ä¤¤¤Æ.. *XlwMenu.visitDaredevilSKKWebSite.labelString: Daredevil SKK ¤Î¥µ¥¤¥È¤Ø ddskk-15.2/etc/NICOLA-SKK.tut0000644000570400056700000007044210612545244015520 0ustar kitamotoopenlab;; SKK Japanese tutorial text using NICOLA -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1992 Masahiko Sato ;; Copyright (C) 1996 - 1999 Itsushi Minoura ;; Copyright (C) 2000, 2001, 2002 SKK Development Team ;; Author: Masahiko Sato ;; Itsushi Minoura ;; Version: $Id: NICOLA-SKK.tut,v 1.12 2007/04/22 02:38:28 skk-cvs Exp $ ;; Maintainer: SKK Development Team ;; Keywords: japanese, help ;; Last Modified: $Date: 2007/04/22 02:38:28 $ ;; This is the tutorial text for Daredevil SKK version 11.1 and later ;; versions. ;; Permission is granted to make and distribute verbatim copies of this ;; tutorial text provided the copyright notice and this permission ;; notice are preserved on all copies. ;; ;; Permission is granted to copy and distribute modified versions of ;; this tutorial text under the conditions for verbatim copying, ;; provided that the entire resulting derived work is distributed under ;; the terms of a permission notice identical to this one. ;; ;; Permission is granted to copy and distribute translations of this ;; tutorial text into another language, under the above conditions for ;; modified versions, except that this permission notice may be stated ;; in a translation approved by Masahiko Sato. ---- == SKK $B%A%e!<%H%j%"%k$N;H$$J}(B == NICOLA SKK $B$O(B NICOLA $B$+$JF~NO(B ($B?F;X%7%U%H$+$JF~NO(B) $B$r;H$C$?F|K\8lF~NO(B $B%7%9%F%`$G$9!#$3$N%A%e!<%H%j%"%k$G$O!"(BEmacs $B$K4X$9$kCN<1$r2>Dj$7$F!"(BSKK $B$N2r@b$r9T$$$^$9!#(B $B%A%e!<%H%j%"%k$OLdBj$r2r$-$J$,$i?J$s$G$$$-$^$9!#!Z(B*$BLd(B*$B![%P%C%U%!$N:G8e$K!Z(B>>$B![(B $B$G;O$^$k9T$,$"$j$^$9!#$3$l$HF1$89T$r!Z(B*$BEz(B*$B![%P%C%U%!$K:n$k$3$H$,LdBj$K$J$j(B $B$^$9!#Ez$,$G$-$?$i!"!X(BC-x n$B!Y(B(Next) $B$rF~NO$7$F$/$@$5$$(B ($B!X(BC-x$B!Y$O!"(B $B!"$9$J$o$A!"(B $B%-!<$H!X(Bx$B!Y%-!<$rF1;~$K2!$9$3$H$r<((B $B$7$^$9(B)$B!#Ez$,@5$7$1$l$P!"%P%C%U%!$,99?7$5$l!"> (concat "My name is " (skktut-user-name) ".") ---- == SKK $B$N5/F0!"!V$+$J%b!<%I!W(B == $B0J2<$N@bL@$G!"@hF,$,!Z(B!!$B![$H$J$C$F$$$k9T$K$D$$$F$O!"$=$3$K=q$$$F$"$k$3$H(B $B$r$=$N$H$*$jL>$rF~NO$9$k$3$H$,$G$-$^$9!#(B $B??Cf$K=D@~$GJ,3d$7$?$H$3$m$h$j1&$,1&> $B$+$-$/$1$3(B ---- == $B$+$J$NF~NO(B 2$B!"!VF1;~BG80!W(B == $BB3$1$F$+$J$NF~NO$rN}=,$7$F$_$^$7$g$&!#%-!<%\!<%I$N:G>eCJ$r=|$$$?G[Ns$O(B $Bl9g$O(B $B%-!<(B $B$GBeMQ$7$^$9(B) $B$H:8%7%U%H%-!<(B ($B@lMQ$N(B $B%-!<$,$J$$>l9g$O(B $B%-!<$N:8$K$"$k!VL5JQ49!W$J$I$N%-!<$GBeMQ$7$^$9(B) $B$r3NG'$7$F$/$@$5$$!#$=$l$>$l1&> $B$"$$$7$F(B ---- == $B$+$J$NF~NO(B 3$B!"!VF1$8B&$NF1;~BG80!W(B == $B=DK@$h$j$b:8$N!":8> $B$H$F$b$"$$$7$F$$$k!#(B ---- == $BByE@$NF~NO!"!V0c$&B&$NF1;~BG80!W(B == $B@hDx$N!VF1$8B&$N%7%U%H$NF1;~BG80!W$G$O!"ByE@$dH>ByE@$,F~NO$G$-$^$;$s!#(B $B$3$l$i$N$D$$$?$+$J$O!V0c$&B&$NF1;~BG80!W$GF~NO$7$^$9!#Nc$($P!V$.!W$O!"(B $B1&e$N%7%U%H$7$J$$$H$-$N%-!> $B$,$.$0$2$4$6$8$:$<$>(B ---- == $BH>ByE@$NF~NO!"!V0c$&B&$NF1;~BG80(B2$B!W(B == $BH>ByE@$O!"0J2<$NI=$N$h$&$K!V0c$&B&$NF1;~BG80!W$r;H$C$FF~NO$7$^$9!#(B $BNc$($P!V$T!W$O!V!$!W$r:8%7%U%H$HF1;~$K2!$7$^$9!#(B [] $B$,(B $B$@(B $B$4(B $B$6(B | $B$Q(B $B$B(B $B$0(B $B$E(B $B$T(B $B%t(B $B$8(B $B$G(B $B$2(B $B$<(B | $B$P(B $B$I(B $B$.(B $B$](B [] [] $B$S(B $B$:(B $B$V(B $B$Y(B | $B$W(B $B$>(B $B$Z(B $B$\(B [] (*) [] $B$NItJ,$O!"F~NOJ}<0$K$h$C$F0[$J$j$^$9!#(B >> $B$Q$T$W$Z$](B ---- == $B$+$JF~NO$N$^$H$a(B == $B$5$F!"0J>e$NJ}K!$G$9$Y$F$N$+$J$,F~NO$G$-$k$O$:$G$9!#%-!(B $B$Z(B $B$\(B [] >> $B$R$i$,$J$r!"$3$s$T$e!<$?!<$K!"$K$e$&$j$g$/$9$k!#(B ---- == $B5-9f$NF~NO(B == $B5-9f$O:G>eCJ$N?t;z%-!<$d!"$=$NB>$N%-!<$Kl9g(B $B$O!"!X(BC-h 2$B!Y(B $B$G3N$+$a$k$3$H$,$G$-$^$9!#(B !! $B!X(BC-h 2$B!Y$H%?%$%W$7$F$_$F$/$@$5$$!#(B $B:#8+$??^$r0u:~$7$F$*$/$HJXMx$G$9!#$G$O$3$l$K4p$E$$$FF~NO$7$F$_$^$7$g$&!#(B >> $B!V(B2$B$D$N$+$.$+$C$3!*!W(B ---- == $B$+$JF~NO(B == $B:#8e$NLdBj$K$O!"%-!e$d2<$KE=$C$F$*$$$F!"B3$1$k$N$b$$$$$G$7$g$&!#(B !! $B%-!l9g$O!X(BC-h 2$B!Y$H%?%$%W$7$F$/$@$5$$!#(B >> $B$+$J$K$e$&$j$g$/$r$*$\$($^$7$?$+!)(B ---- == $B!V$+$J%b!<%I!W$+$i!V%"%9%-!<%b!<%I!W$X$N0\9T(B == $B!V$+$J%b!<%I!W$+$i!"!V%"%9%-!<%b!<%I!W$K$O!V:81&%7%U%H$NF1;~BG80!W(B($B0J2<(B [$B:81&(B] $B$HN,$7$^$9(B) $B$G0\$j$^$9!#%b!<%I9T$r8+$F%b!<%I$N?d0\$r3NG'$7$F$/$@$5$$!#(B $B!V%"%9%-!<%b!<%I!W$G$O!"F~NO$5$l$?%-!<$ODL>o$N(B Emacs $B$N%3%^%s%I$H$7$F2ruBV$H9M$($i$l$^$9!#%b!<%I9T$N!Z(BSKK$B![$O(B NICOLA SKK $B$,$3$N%P%C%U%!$G(B $B5/F0$5$l$F$$$k$3$H$r<($9$?$a$N$b$N$G$9!#(B >> Now we are in ASCII mode. ---- == $B!V%"%9%-!<%b!<%I!W$+$i!V$+$J%b!<%I!W$X$N0\9T(B == $B!V%"%9%-!<%b!<%I!W$+$i!V$+$J%b!<%I!W$X$O$b$&0lEY(B [$B:81&(B]$B!"$^$?$O(B $B!X(BC-j$B!Y(B $B$r;H$C$F0\$j$^$9!#$^$H$a$k$H!"(B [$B:81&(B] : $B$+$J(B <--> $B%"%9%-!<(B C-j : $B%"%9%-!<(B --> $B$+$J(B >> ASCII $B$+$i(B $B$+$J(B ---- == $B!V%+%J%b!<%I!W(B == $B%+%?%+%J$NF~NO$O!V%+%J%b!<%I!W$G9T$$$^$9!#!V$+$J%b!<%I!W$H!V%+%J%b!<%I!W(B $B$N?d0\$O(B [dk] (d $B$H(B k $B$NF1;~BG80(B) $B$G9T$$$^$9!#(B [dk] : $B$+$J(B --> $B%+%J(B [dk] : $B%+%J(B --> $B$+$J(B >> $B$R$i$,$J(B $B$+$i(B $B%+%?%+%J(B $B$=$7$F$^$?(B $B$R$i$,$J(B ---- == $B!VA41Q%b!<%I!W(B == $B!Z#S#K#K![$N$h$&$JA43Q1QJ8;zNs$NF~NO$O!VA41Q%b!<%I!W$G9T$$$^$9!#!VA41Q(B $B%b!<%I!W$G$O!"!X(Ba$B!Y(B-$B!X(Bz$B!Y$*$h$S!X(BA$B!Y(B-$B!X(BZ$B!Y$OA43Q$N%"%k%U%!%Y%C%H$H$7$FF~NO(B $B$5$l$^$9!#!VA41Q%b!<%I!W$X$O!V$+$J%b!<%I!W$^$?$O!V%+%J%b!<%I!W$+$i!X(BZ$B!Y%-!<(B $B$G0\9T$7$^$9(B ($B!X(BZ$B!Y$O!V(BZenei$B!W$NF,J8;z(B)$B!#!VA41Q%b!<%I!W$+$i!"!V$+$J%b!<%I!W(B $B$X$O!X(BC-j$B!Y$GLa$j$^$9!#(B Z : $B$+$J(B/$B%+%J(B --> $BA41Q(B C-j : $BA41Q(B --> $B$+$J(B >> $B#N#I#C#O#L#A!]#S#K#K$,$D$+$($k$N$O#E#m#a#c#s$@$1$G$9(B ---- == $B$3$l$^$G$N$^$H$a(B == SKK $B$O!X(BC-x C-j$B!Y$G5/F0$5$l$^$9!#(BSKK $B$K$O(B4$B$D$N%b!<%I$,$"$j$^$9!#(B $B!V%"%9%-!<%b!<%I!W!"!V$+$J%b!<%I!W!"!V%+%J%b!<%I!W!"!VA41Q%b!<%I!W(B $B%b!<%I4V$N?d0\$O $B$+$J(B == [$B:81&(B] ==> $B%"%9%-!<(B $B$+$J(B <== [dk] ==> $B%+%J(B $BA41Q(B == C-j ==> $B$+$J(B == Z ==> $BA41Q(B >> $B#S#K#K$K$O(B ASCII$B%b!<%I(B $B$H(B $B$+$J%b!<%I(B $B$H(B $B%+%J%b!<%I(B $B$H(B $B$<$s$($$%b!<%I(B $B$,$"$k(B ---- == $B!V$+$J%b!<%I!W(B == $B!V$+$J%b!<%I!W$G$O0J2<$N%-!<$,FCJL$N0UL#$r;}$A$^$9!#$3$l0J30$N%-!o$N(B Emacs $B$N%-!<$H$7$F$N0UL#$r;}$A$^$9!#!V%+%J%b!<(B $B%I!W$G$bF1MM$G$9!#(B [dk], [$B:81&(B] $B$9$G$K@bL@$7$?$H$*$j(B $B1Q>.J8;z(B $B2>L>F~NO(B [gh] $B1Q;zJQ49%b!<%I$X$N0\9T(B [fj] $BJQ493+;OE@$N;XDj(B @ $B!Z!"![$H$7$FF~NO$5$l$k(B q $B!Z!#![$H$7$FF~NO$5$l$k(B D $B:#F|$NF|IU$,F~NO$5$l$k(B $B?t;z%-!<$d$=$NB>$N5-9f%-!<(B $B$$$/$D$+$N5-9f(B ($B!X(BC-h 2$B!Y(B $B$G3N$+$a$F!*(B) !! $B$?$a$7$K!"6gFIE@$rF~NO$7$F$_$F$/$@$5$$!#(B >> $B$"!"$=$&$@$C$?$N$+!#(B ---- == $B2>L>4A;zJQ49(B == $B2>L>4A;zJQ49$O!V$+$J%b!<%I!W$G9T$o$l$^$9!#(B !! $B%b!<%I$r(B ($B$b$7:#!V$+$J%b!<%I!W$G$J$1$l$P(B)$B!V$+$J%b!<%I!W$K$7$F!"(B !! [fj] (f $B$H(B j $B$rF1;~$K2!$9(B) $B$H%?%$%W$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z"&![$H$J$C$?$O$:$G$9!#(B !! $B $B%-!<$r2!$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z"&$+$s$8![$H$J$j!"> $B4A;z(B ---- $B$b$&0lEY!"$d$C$F$_$^$7$g$&!#(B !! $B%b!<%I$r(B ($B$b$7:#!V$+$J%b!<%I!W$G$J$1$l$P(B)$B!V$+$J%b!<%I!W$K$7$F!"(B !! $B!X(B[fj]$B$+$s$8!Y$H%?%$%W$7$F!"$=$l$+$i!"(B $B%-!<$r(B2$B2s2!$7$F$/$@$5$$!#(B $B%P%C%U%!$O(B $B!Z"&$+$s$8![(B ==> $B!Z"'4A;z![(B ==> $B!Z"'44;v![(B $B$H$J$j$^$9!#(B !! $B> $B44;v(B ---- $B:#EY$O>/$7D9$$$N$G!"4V0c$o$J$$$h$&$K!"$f$C$/$j$H%?%$%W$7$F$/$@$5$$!#(B $B!X""!Y$O(B $B%-!<$rI=$o$7$^$9!#$7$?$,$C$F!"!X""""!Y$H$"$l$P!"(B $B%-!<$r(B2$B2sB3$1$F2!$7$F$/$@$5$$!#(B !! $B%b!<%I$r(B ($B$b$7:#!V$+$J%b!<%I!W$G$J$1$l$P(B)$B!V$+$J%b!<%I!W$K$7$F!"(B !! $B!X(B[fj]$B$+$s$8""""$N(B[fj]$B$K$e$&$j$g$/""$O(B[fj]$B$h$&$$""$G$9!#!Y$H(B !! $B%?%$%W$7$F$/$@$5$$!#(B >> $B4A;z$NF~NO$OMF0W$G$9!#(B ---- !! $B!V$+$J%b!<%I!W$G!"!X$+$s$8!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z$+$s$8![$H$J$j$^$9!#$7$+$7!"K\Ev$O!X(B[fj]$B$+$s$8!Y$H%?%$%W$7$?$+$C$?(B $B$H$7$^$9!#$3$N>l9g(B3$BJ8;z:o=|(B (delete) $B$7$F$+$i!"!X(B[fj]$B$+$s$8!Y$H%?%$%W$7$F$b(B $B$h$$$N$G$9$,!")$B!"!X(BC-j$B!Y$r%?%$(B !! $B%W$7$F$/$@$5$$!#(B >> $B4A;z(B ---- == $B!V$+$J%b!<%I!W$NItJ,%b!<%I(B == $B!V$+$J%b!<%I!W$O!"!VJ?2>L>3NDjF~NO%b!<%I!W$H!V4A;zJQ49%b!<%I!W$N(B2$B$D$NIt(B $BJ,%b!<%I$KJ,$+$l$^$9!#!VJ?2>L>3NDjF~NO%b!<%I!W$N$3$H$r!":#8e$O!"!V"#%b!<(B $B%I!W$H8@$$$^$9!#!V4A;zJQ49%b!<%I!W$O$5$i$K!"!V"&%b!<%I!W$H!V"'%b!<%I!W$K(B $BJ,$+$l$^$9!#$D$^$j!"!V$+$J%b!<%I!W$O!"(B $B!V"#%b!<%I!W!"!V"&%b!<%I!W!"!V"'%b!<%I!W(B $B$N(B3$B$D$NItJ,%b!<%I$KJ,3d$5$l$^$9!#(B $B!V"#%b!<%I!W$G$O!"J?2>L>$,$=$N$^$^3NDjF~NO$5$l$^$9!#!V"#%b!<%I!W(B($BJ?2>L>(B $B3NDjF~NO%b!<%I(B) $B$O$3$l$+$i2?EY$b=P$F$/$k$N$G!"$h$/3P$($F$*$$$F$/$@$5$$!#(B >> $B$R$i$+$J$+$/$F$$$K$e$&$j$g$/$O!"$J$s$I$b!"$l$s$7$e$&$7$F$-$^$7$?!#(B ---- == $B!V"&%b!<%I!W$H!V"'%b!<%I!W(B == SKK$B$G$N2>L>4A;zJQ49$O]$K$J$kJ8;zNs$r3NDj$9$k(B ($B!V"&%b!<%I!W(B)$B!#(B 2 $B3NDj$7$?J8;zNs$KBP$9$k8uJd$rNs5s$9$k(B ($B!V"'%b!<%I!W(B)$B!#(B 3 $B5a$a$k8uJd$rA*Br$7JQ49$r3NDj$9$k(B ($B!V"'%b!<%I!W(B)$B!#(B $B$9$G$K8+$?$h$&$K!"!Z4A;z![$rNc$K]$H$J$kJ8;zNs$O!Z$+$s$8![(B $B$G$9!#(B[fj] $B$rF~NO$9$k$H!V"&%b!<%I!W$K$J$j$^$9!#$3$3$G!X$+$s$8!Y$N$h$&$K$+$J(B $B$rF~NO$7$^$9!#!V"&%b!<%I!W$G(B $B$r%?%$%W$9$l$P!"!Z"&![$H%]%$%s%H(B $B$N4V$NJ8;zNs$,JQ49$NBP>]$H$7$F3NDj$7$^$9!#F1;~$K%b!<%I$O!V"'%b!<%I!W$K$J(B $B$j!"JQ49$N:G=i$N8uJd$,I=<($5$l$^$9!#!V"'%b!<%I!W$G(B $B$O> $B!V@vBu!W$rA*Br$9$k!#(B ---- $B%b!<%I$N?d0\$ODL>o $B"&(B == ==> $B"'(B == $B!X(BC-j$B!Y(B ==> $B"#(B $B$3$N$[$+!"(B $B"&(B == $B!X(BC-j$B!Y(B ==> $B"#(B $B$O8m$C$F(B [fj] $B$r%?%$%W$7$F!V"&%b!<%I!W$K$J$C$?$H$-$K;H$$$^$9!#$^$?!"(B $B"'(B == $B$H0u;z2DG=$J$9$Y$F$N%-!<(B ==> $B"#(B $B$O3NDj$rH<$J$&%-!<$r<($7$F$$$^$9!#;n$7$F$_$^$7$g$&!#(B !! $B!V"#%b!<%I!W$G!X(B[fj]$B$-$g$&$H""!"(B[fj]$B$*$*$5$+""!"(B[fj]$B$3$&$Y""!#!Y$H(B !! $B%?%$%W$7$F$/$@$5$$!#$?$@$7!"!X""!Y$O(B $B$rI=$o$7$^$9!#(B >> $B5~ET!"Bg:e!"?@8M!#(B ---- $B!V"'%b!<%I!W$G$O(B $B$H0u;z2DG=$J$9$Y$F$N%-!<$O3NDj$rH<$J$&$3$H$rCN(B $B$j$^$7$?!#(B $B$3$N$[$+!"!V"'%b!<%I!W$G$5$i$K(B [fj] $B$r%?%$%W$9$l$P!"8=:_$N8uJd$,$+$J(B $B3NDj$7!"$5$i$K!"%b!<%I$O!V"&%b!<%I!W$K$J$j$^$9!#(B $B"'(B == [fj] ==> $B"&(B !! $B!V"#%b!<%I!W$G!X(B[fj]$B$+$J""(B[fj]$B$+$s$8""(B[fj]$B$X$s$+$s""!#!Y$H%?%$%W$7$F(B !! $B$/$@$5$$!#$?$@$7!"!X""!Y$O(B $B$rI=$o$7$^$9!#(B >> $B2>L>4A;zJQ49!#(B ---- !! $B!V"#%b!<%I!W$G!X(B[fj]$B$+$J$+$s$8$X$s$+$s""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z"'$+$J$+$s$8$X$s$+$s![$H$J$j!"%_%K%P%C%U%!$K(B $B$+$J$+$s$8$X$s$+$s(B $B$H$$$&%W%m%s%W%H$,I=<($5$l$F$$$^$9!#(BSKK $B$G$O!"!V"'%b!<%I!W$G$O!"JQ49$N(B $BBP>]$H$J$kJ8;zNs$O3NDj$7$F$$$^$9!#:#$N>l9g!"!Z$+$J$+$s$8$X$s$+$s![$H$$$&(B $BJ8;zNs$r(B SKK $B$OJQ49$7$h$&$H$7$F!"<-=q$rC5$7$F!"8+$D$+$i$J$+$C$?(B $B$N$G$9!#$3$&$$$&;~!"(BSKK $B$O<+F0E*$K<-=qEPO?%b!<%I$K$J$j$^$9!#(B $B<-=qEPO?%b!<%I$G$O!"JQ49$K<:GT$7$?J8;zNs$,EPO?$NBP>]$K$J$k$N$G!"EPO?$9$k(B $B8l$NFI$_$r%f!<%6$,F~NO$9$kI,MW$O$"$j$^$;$s!#(B !! $B%+!<%=%k$,%_%K%P%C%U%!$K$"$k$3$H$r3NG'$7$?>e$G!"!X(B[fj]$B$+$J""(B[fj]$B$+$s(B !! $B$8""(B[fj]$B$X$s$+$s""!Y$H%?%$%W$7!"(B $B%-!<$r2!$7$F$/$@$5$$!#(B >> $B2>L>4A;zJQ49(B ---- $B:#$N<-=qEPO?$G!"<-=q%P%C%U%!$K$O!"(B $B$+$J$+$s$8$X$s$+$s(B /$B2>L>4A;zJQ49(B/ $B$H$$$&9T$,DI2C$5$l$^$7$?!#3NG'$7$F$_$^$7$g$&!#(B !! $B!V"#%b!<%I!W$G!X(B[fj]$B$+$J$+$s$8$X$s$+$s""!Y$H%?%$%W$7$F$/$@$5$$!#(B !! $B!X(BC-j$B!Y$G3NDj$7$F$/$@$5$$!#(B >> $B2>L>4A;zJQ49(B ---- == $B6uEPO?(B == $B%?%$%W%_%9Ey$G!"0U?^$7$J$$J8;zNs$KBP$7$F!"<-=qEPO?%b!<%I$K$J$C$?$H$-$O!"(B $B6u$NJ8;zNs$rEPO?$9$l$P!" $B%-!<$r2!$7$F$/$@$5$$!#(B $B!Z(B*$BEz(B*$B![%P%C%U%!$O!Z"&$+$J$+$s$8$X$s$?$s![$H$J$j$^$9!#(B !! $B!Z(B*$BEz(B*$B![$,%+%l%s%H!&%P%C%U%!$G$"$k$3$H$r3NG'$7!"(B !! $B%-!<$r(B2$B2s2!$7$F$+$i!"!X$+$s""!#!Y$H%?%$%W$7$F$/$@$5$$!#(B >> $B2>L>4A;zJQ49!#(B ---- $B<-=q$,(B $B$4(B /$B8^(B/$B8_(B/$B8`(B/$B8a(B/$B8b(B/$B8c(B/$B8d(B/$B8e(B/$B8f(B/$B8g(B/$B8h(B/$B8i(B/$B8j(B/$B8k(B/$B8l(B/$B8m(B/$B8n(B/$B8o(B/ $B$H$$$&9T$r4^$s$G$$$k$H$7$F!"!Z8k![$r:n$C$F$_$^$7$g$&!#(B !! $B!V"#%b!<%I!W$G!"!X(B[fj]$B$4""""""""""""!Y$H%?%$%W$7$F$/$@$5$$(B !! ( $B$O(B6$B2s$G$9(B)$B!#(B $B%(%3!e$"$k$H$-$O!":G=i$N(B4$B$D$O%P%C%U%!$K(B1 $B$D$:$DI=<($5$l$^$9$,!"(B5$B$DL\0J9_$O%(%3!.J8;z$N!X(Bd$B!Y$r%?%$%W$7$^$9!#(B >> $B8k(B ---- !! $B!V"#%b!<%I!W$G!"!Z(B[fj]$B$4""![$H%?%$%W$7$F$/$@$5$$!#(B $BA0Ld$G3NDj$7$?!Z8k![$,:#EY$O:G=i$N8uJd$H$7$FI=<($5$l$^$9!#$7$+$7!":#2s(B $B$O!Z8a![$r:n$C$F$_$^$9!#(B !! $B!X""""""""""""!Y$H%?%$%W$7$F$/$@$5$$(B ( $B$r(B6$B2s(B)$B!#(B $B8uJd$,?T$-$?$N$G<-=qEPO?%b!<%I$K$J$C$F$7$^$7$^$7$?!#8uJd$NCf$K!Z8a![$O$"$C(B $B$?$N$G$9$,!"9T$-2a$.$F$7$^$C$?$N$G$9!#(B !! $B%-!<$r2!$7$F$+$i!X(BC-p$B!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%-!<$K$h$j6uEPO?$,$5$l!"<-=qEPO?$ND>A0$N>uBV$KLa$j$^$9!#!Z"'%b!<(B $B%I![$G$O!X(BC-p$B!Y%-!<$K$h$jA08uJd(B ($B72(B) $B$rI=<($9$k$3$H$,$G$-$^$9!#(B !! $B%(%3!> $B8a(B ---- $B:#EY$O!Z8a8e![$r:n$C$F$_$^$9!#(B !! $B!V"#%b!<%I!W$G!"!X(B[fj]$B$4$4""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B<-=q$K$O!Z$4$4![$,$J$$$N$G!"<-=qEPO?%b!<%I$K$J$j$^$9!#(B !! $B%_%K%P%C%U%!$N%W%m%s%W%H$,!Z$4$4![$G$"$k$3$H$r3N$+$a$F!"(B !! $B!X(B[fj]$B$4""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%_%K%P%C%U%!$O!Z$4$4(B $B"'8a![$H$J$j$^$9!#(B !! $BB3$$$F!"!X(B[fj]$B$4""""""""""(Bj$B!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%_%K%P%C%U%!$K!Z$4$4(B $B8a8e![$,$G$-$^$7$?!#(B !! $B%-!<$r2!$7$F$/$@$5$$!#(B >> $B8a8e(B ---- $B<-=q%P%C%U%!$K!Z$4$4(B /$B8a8e(B/$B![$,EPO?$5$l$?$N$G!"> $B8a8e$N8k!#(B ---- == $B:F5"E*<-=qEPO?(B == !! $B!V"#%b!<%I!W$G!"!X(B[fj]$B$5$$$-$F$-""!Y$H%?%$%W$7$F$/$@$5$$!#(B !! $B%_%K%P%C%U%!$N%W%m%s%W%H$,!Z$5$$$-$F$-![$G$"$k$3$H$r3N$+$a$F!"(B !! $B!X(B[fj]$B$5$$$-""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B<-=q$K$O!Z$5$$$-![$b$J$$$N$G!":F$S<-=qEPO?%b!<%I$K$J$j$^$9!#(B !! $B%_%K%P%C%U%!$K!Z:F5"![$r:n$C$F$/$@$5$$!#(B !! $B%_%K%P%C%U%!$,!Z$5$$$-(B $B:F5"![$H$J$C$?$i!"(B $B%-!<$r2!$7$F$/$@$5$$!#(B $B$3$l$G!"!Z$5$$$-$F$-![$NEPO?%b!<%I$KLa$j$^$9!#(B !! $B%_%K%P%C%U%!$,!Z$5$$$-$F$-(B $B:F5"![$H$J$C$F$$$k$N$r3N$+$a$F!"!ZE*![$r:n$C(B !! $B$F$/$@$5$$!#(B >> $B:F5"E*<-=qEPO?$r3X=,$7$^$7$?!#(B ---- == $BAw$j2>L>$N$"$k8l$NF~NO(B == SKK$B$G$O!"!ZF0$/![$H$$$C$?!"Aw$j2>L>$N$"$k8l$O!"0J2<$N$h$&$K<-=q$KEPO?(B $B$5$l$F$$$^$9!#(B $B$&$4(Bk /$BF0(B/ $B$3$N$H$-!"F~NO$O;l$K!Z$9$k![$,IU2C$7$F$G$-$?F0;l$K$D$$$F$O!"L>;l$NItJ,$rC1FH$GJQ49$7$F(B $B$/$@$5$$!#L>;l$+$i:n$i$l$?7AMF;lEy$K$D$$$F$bF1MM$G$9!#(B >> $BF0$3$&$K$bF0$1$J$+$C$?!#(B ---- ;; (save-excursion (save-match-data (set-buffer " *skk-tut-jisyo*") (goto-char skk-okuri-ari-min) (search-forward "\n$B$&$4(Bk /$BF0(B/" skk-okuri-nasi-min) (delete-region (progn (beginning-of-line) (point)) (progn (forward-line 1) (point))))) == $BAw$j2>L>$N$"$kC18l$NEPO?(B == $B<-=q$K!V$&$4(Bk$B!W$H$$$&8+=P$78l$,$J$$$H$-$O$I$&$J$k$G$7$g$&!#(B !! $B!V"#%b!<%I!W$G!"!X(B[fj]$B$&$4(B[fj]$B$/!Y$H%?%$%W$7$F$/$@$5$$!#(B $B<-=q$K$J$$$N$G!"%_%K%P%C%U%!$GEPO?$9$k$3$H$K$J$j$^$9!#%_%K%P%C%U%!$O(B $B!Z$&$4(B*$B$/(B $B![$H$J$j$^$9(B ($B!Z(B*$B![$N$"$H$N!Z$/![$OAw$j2>L>(B)$B!#<-=q$K$O(B $B!Z$I$&(B /$BF0(B/$B![$H$$$&9`L\$,$"$k$N$G!"$3$l$rMQ$$$F!"%_%K%P%C%U%!$K!ZF0![$r(B $B:n$j$^$9!#(B $BCm0U(B: $B%_%K%P%C%U%!$K!ZF0$/![$r:n$C$F$7$^$&$H!"%P%C%U%!$O!ZF0$/$/![$H$J$C$F(B $B$7$^$$$^$9!#%_%K%P%C%U%!$K$OAw$j2>L>$r=|$$$?ItJ,$@$1$r:n$j$^$9!#(B !! $B%_%K%P%C%U%!$K!ZF0![$,$G$-$?$i!"(B $B%-!<$r2!$7$F$/$@$5$$!#(B >> $BF0$/(B ---- == $BB%2;$r4^$`C18l$NJQ49(B == $BB%2;$r4^$`C18l$NJQ49$O!"> $B?M8}$,0l2/$KC#$7$?$3$H$rCN$C$?!#(B ---- == $B1Q;zJQ49(B == $B30Mh8lEy$N%m!<%^;zF~NO$O!V%+%J%b!<%I!W$G$G$-$^$9$,!"!V1Q;zJQ49!W$r;H$&$3(B $B$H$b$G$-$^$9!#(B !! $B!V"#%b!<%I!W$G!"!X(B[gh]file$B""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B!V"#%b!<%I!W$G!X(B[gh]$B!Y$r%?%$%W$9$k$H!"!V"&%b!<%I!W$K$J$j$^$9!#$?$@$7!"DL>o$N(B $B!V"&%b!<%I!W$H0[$J$j!"0J2<$NF~NO$O1Q;zF~NO$K$J$j$^$9!#:#$N>l9g!"<-=q$K(B $B!Z(Bfile$B![$,$J$$$N$G!"<-=qEPO?%b!<%I$K$J$j$^$9!#(B !! $B%_%K%P%C%U%!$N%W%m%s%W%H$,!Z(Bfile$B![$G$"$k$3$H$r3N$+$a$F!"(B !! $B!X(B[dk] $B$U$!$$$k!Y$H%?%$%W$7$F$+$i(B $B%-!<$r2!$7$F$/$@$5$$!#(B >> $B!V%U%!%$%k!W$,EPO?$5$l$^$7$?!#(B ---- == $B5-9f(B == $B0J2<$N5-9f$O!"<-=q$K!Z$-$4$&![$H$7$FEPO?$5$l$F$$$^$9(B (S$B<-=q$K$O!"0lItL$EPO?$N5-9f$,$"$j$^$9(B)$B!#(B $B!!(B $B!"(B $B!#(B $B!$(B $B!%(B $B!&(B $B!'(B $B!((B $B!)(B $B!*(B $B!+(B $B!,(B $B!-(B $B!.(B $B!/(B $B!0(B $B!1(B $B!2(B $B!3(B $B!4(B $B!5(B $B!6(B $B!7(B $B!8(B $B!9(B $B!:(B $B!;(B $B!<(B $B!=(B $B!>(B $B!?(B $B!@(B $B!A(B $B!B(B $B!C(B $B!D(B $B!E(B $B!F(B $B!G(B $B!H(B $B!I(B $B!J(B $B!K(B $B!L(B $B!M(B $B!N(B $B!O(B $B!P(B $B!Q(B $B!R(B $B!S(B $B!T(B $B!U(B $B!V(B $B!W(B $B!X(B $B!Y(B $B!Z(B $B![(B $B!\(B $B!](B $B!^(B $B!_(B $B!`(B $B!a(B $B!b(B $B!c(B $B!d(B $B!e(B $B!f(B $B!g(B $B!h(B $B!i(B $B!j(B $B!k(B $B!l(B $B!m(B $B!n(B $B!o(B $B!p(B $B!q(B $B!r(B $B!s(B $B!t(B $B!u(B $B!v(B $B!w(B $B!x(B $B!y(B $B!z(B $B!{(B $B!|(B $B!}(B $B!~(B $B"!(B $B""(B $B"#(B $B"$(B $B"%(B $B"&(B $B"'(B $B"((B $B")(B $B"*(B $B"+(B $B",(B $B"-(B $B".(B >> $B")(B980 ---- == $B%.%j%7%"J8;z$H%-%j!<%kJ8;z(B == $B$3$l$i$O!"<-=q$G$O0J2<$N$h$&$KEPO?$5$l$F$$$^$9(B ($B0JA0$N<-=q$G$O!"!V(BCyrillic$B!W!V(Bcyrillic$B!W$NBe$o$j$K(B $B!V(BRussia$B!W!V(Brussia$B!W$GEPO?$5$l$F$$$^$7$?(B)$B!#(B Greek /$B&!(B/$B&"(B/$B&#(B/$B&$(B/$B&%(B/$B&&(B/$B&'(B/$B&((B/$B&)(B/$B&*(B/$B&+(B/$B&,(B/$B&-(B/$B&.(B/$B&/(B/$B&0(B/$B&1(B/$B&2(B/$B&3(B/$B&4(B/$B&5(B/$B&6(B/$B&7(B/$B&8(B/ greek /$B&A(B/$B&B(B/$B&C(B/$B&D(B/$B&E(B/$B&F(B/$B&G(B/$B&H(B/$B&I(B/$B&J(B/$B&K(B/$B&L(B/$B&M(B/$B&N(B/$B&O(B/$B&P(B/$B&Q(B/$B&R(B/$B&S(B/$B&T(B/$B&U(B/$B&V(B/$B&W(B/$B&X(B/ Cyrillic /$B'!(B/$B'"(B/$B'#(B/$B'$(B/$B'%(B/$B'&(B/$B''(B/$B'((B/$B')(B/$B'*(B/$B'+(B/$B',(B/$B'-(B/$B'.(B/$B'/(B/$B'0(B/$B'1(B/$B'2(B/$B'3(B/$B'4(B/$B'5(B/$B'6(B/$B'7(B/$B'8(B/$B'9(B/$B':(B/$B';(B/$B'<(B/$B'=(B/$B'>(B/$B'?(B/$B'@(B/$B'A(B/ cyrillic /$B'Q(B/$B'R(B/$B'S(B/$B'T(B/$B'U(B/$B'V(B/$B'W(B/$B'X(B/$B'Y(B/$B'Z(B/$B'[(B/$B'\(B/$B'](B/$B'^(B/$B'_(B/$B'`(B/$B'a(B/$B'b(B/$B'c(B/$B'd(B/$B'e(B/$B'f(B/$B'g(B/$B'h(B/$B'i(B/$B'j(B/$B'k(B/$B'l(B/$B'm(B/$B'n(B/$B'o(B/$B'p(B/$B'q(B/ $B$7$?$,$C$F!"!V1Q;zJQ49!W$GF~NO$7$^$9!#(B >> $B&E&D(B ---- == $B%3!<%IF~NO(B == $BBh(B2$B?e=`$N4A;zEy$N<-=q$K$J$$J8;z$K$D$$$F$O!"(BJIS$B%3!<%I$^$?$O(BEUC$B$K(B $B$h$kF~NO$,:G8e$N $B%-!<$r2!$7$F$/$@$5$$!#(B >> $BElKLBgU\(B ---- == $BFI$_$N%3%s%W%j!<%7%g%s(B == $B!V"&%b!<%I!W$G(B $B%-!<$r2!$9$H!"!VFI$_$N%3%s%W%j!<%7%g%s!W$,9T$o$l$^$9!#(B $B$r2!$9$^$G$K!V"&%b!<%I!W$GF~NO$5$l$?J8;zNs$r&R$H$9$k$H!"<-=q%P%C%U%!$N(B $BCf$G!"@hF,$,&R$H0lCW$7!"D9$5$,&R$h$j$bD9$$FI$_$rC5$7$F!"$=$N$h$&$J&S$,$b(B $B$7$"$l$P!"&R$NBe$o$j$K&S$rI=<($7$^$9!#(B !! $B!V"#%b!<%I!W$G!"!X$3$N(B[fj]$B$R$3$&$-""$h$j$"$N(B[fj]$B$R!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z$3$NHt9T5!$h$j$"$N"&$R![$H$J$j$^$9!#(B !! $B%-!<$r2!$7$F$/$@$5$$!#(B $B%3%s%W%j!<%7%g%s$,9T$o$l$F%P%C%U%!$O!Z$3$NHt9T5!$h$j$"$N"&$R$3$&$-![$H$J$j$^(B $B$9!#(B >> $B$3$NHt9T5!$h$j$"$NHt9T5!$K$7$h$&!#(B ---- $B%3%s%W%j!<%7%g%s$O<-=q%P%C%U%!$r:G=i$+$i=g$KD4$Y$F9T$o$l$k$N$G!"J8;zNs&R(B $B$H@hF,$,0lCW$9$kFI$_$,%P%C%U%!$KJ#?t8D$"$k$H$-$OA0$NJ}$K$"$kFI$_$K%3%s%W(B $B%j!<%7%g%s$5$l$^$9!#$3$l$,0U?^$7$?$b$N$G$J$+$C$?$H$-$K$O!"(B $B$ND>8e$K(B $B!X(B.$B!Y(B(period) $B$r%?%$%W$9$k$H(B2$BHVL\$NFI$_$,I=<($5$l$^$9!#0J2;z$@!#!W$H$$$&J8$NF~NO(B $B$r9M$($F$_$^$7$g$&!#(B !! $B!V"#%b!<%I!W$G!"!X(B[fj]$B$5$H$&""$H(B[fj]$B$5$$$H$&""$G$O(B[fj]$B$5!Y$H%?%$%W$7$F$+$i(B !! $B%-!<$r2!$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z:4F#$H:XF#$G$O"&$5$$$H$&![$H$J$j$^$9!#(B !! $B!X(B..,$B!Y$H%?%$%W$7$F$/$@$5$$!#(B >> $B:4F#$H:XF#$G$O:4F#$N$[$&$,$"$j$U$l$?L>;z$@!#(B ---- NICOLA SKK $B$N4pK\E*$J;HMQK!$N2r@b$O$3$l$G=*$j$G$9!#(B $B$J$*!"(BSKK $B$O5/F0;~$K%f!<%6<-=q%U%!%$%k$r<-=q%P%C%U%!$KFI$_9~$_!"!V"'%b!<(B $B%I!W$G3NDj$9$k$?$S$K<-=q%P%C%U%!$O99?7$5$l$^$9!#$=$7$F(B Emacs $B$r=*N;$9$k(B $B$H$-$K!"<-=q%P%C%U%!$O<-=q%U%!%$%k$K%;!<%V$5$l$^$9!#$7$?$,$C$F!"DL>o$O!"(B $B0U<1$7$F<-=q%P%C%U%!$r%;!<%V$9$kI,MW$O$"$j$^$;$s!#$^$?!"F1;~$K0l2sA0$K(B $B:n$i$l$?<-=q$O!"(B.skk-jisyo.BAK $B$K%P%C%/%"%C%W$5$l$k$N$G!";v8NEy$G!"(B .skk-jisyo $B$,2u$l$?$j$7$?$H$-$K$O!"$3$N%U%!%$%k$G$+$J$j2sI|$,2DG=$G$9!#(B SKK $B$O$3$3$G@bL@$G$-$J$+$C$?B?$/$N5!G=$r$b$C$F$$$^$9!#(BSKK $B$N$h$j>\$7$$(B $B;HMQK!$K$D$$$F$O!"%^%K%e%"%k$r;2>H$7$F$/$@$5$$!#(B $B$G$O!":G8e$NLdBj$G$9!#(B >> $B$3$l$G(B NICOLA SKK $B%A%e!<%H%j%"%k$r=*N;$7$^$9!#(B ---- ;; (skktut-end-tutorial) ;; Local Variables: ;; mode:skk-auto-fill ;; fill-column:72 ;; End: ddskk-15.2/etc/SKK.tut0000644000570400056700000005563412406273704014565 0ustar kitamotoopenlab;; SKK Japanese tutorial text -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1992, 1996, 1998 ;; Masahiko Sato ;; Copyright (C) 1999, 2000, 2001, 2002 ;; SKK Development Team ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: SKK.tut,v 1.18 2014/09/17 12:00:04 skk-cvs Exp $ ;; Keywords: japanese, help ;; Last Modified: $Date: 2014/09/17 12:00:04 $ ;; This is the tutorial text for Daredevil SKK version 11.1 and later ;; versions. ;; Permission is granted to make and distribute verbatim copies of this ;; tutorial text provided the copyright notice and this permission notice ;; are preserved on all copies. ;; ;; Permission is granted to copy and distribute modified versions of this ;; tutorial text under the conditions for verbatim copying, provided that ;; the entire resulting derived work is distributed under the terms of a ;; permission notice identical to this one. ;; ;; Permission is granted to copy and distribute translations of this ;; tutorial text into another language, under the above conditions for ;; modified versions, except that this permission notice may be stated in ;; a translation approved by Masahiko Sato. ---- == SKK $B%A%e!<%H%j%"%k$N;H$$J}(B == SKK $B$O(B Emacs $B$N$?$a$N9bB.$G8zN(E*$JF|K\8lF~NO%7%9%F%`$G$9!#C1=c$J4pK\86M}$N(B $B$b$H$G@_7W!":n@.$5$l$F$$$k$?$a$K!";H$$J}$rC;;~4V$G?H$K$D$1$k$3$H$,$G$-$^$9!#(B $B$3$N%A%e!<%H%j%"%k$G$O!"(BEmacs $B$K4X$9$k4pACCN<1$rM-$7$F$$$k$b$N$H2>Dj$7$F(B SKK $B$N2r@b$r9T$$$^$9!#(B $B%A%e!<%H%j%"%k$OLdBj$r2r$-$J$,$i?J$s$G$$$-$^$9!#!Z(B*$BLd(B*$B![%P%C%U%!$N:G8e$K!Z(B>>$B![(B $B$G;O$^$k9T$,$"$j$^$9!#$3$l$HF1$89T$r!Z(B*$BEz(B*$B![%P%C%U%!$K:n$k$3$H$,2sEz$K$J$j(B $B$^$9!#Ez$,$G$-$?$i!"!X(BC-x n$B!Y(B(Next) $B$r%?%$%W$7$F$/$@$5$$!#Ez$,@5$7$1$l$P(B $B%P%C%U%!$,99?7$5$l!"$B!"$9$J$o$A!"(B $B%-!<$H!X(Bx$B!Y%-!<$rF1;~$K2!$9(B $B$3$H$r<($7$^$9(B) $B%A%e!<%H%j%"%k$rESCf$G=*N;$7$?$1$l$P!"!X(BC-x q$B!Y(B(Quit) $B$r%?%$%W$7$F$/$@$5$$!#(B $BLdBj$r%9%-%C%W$7$?$$$H$-$O!"!X(BC-x s$B!Y(B(Skip) $B$r%?%$%W$7$F$/$@$5$$!#(B $B$G$O:G=i$NLdBj$G$9!#(B >> (concat "My name is " (skktut-user-name) ".") ---- == SKK $B$N5/F0!"!V$+$J%b!<%I!W(B == $B0J2<$N@bL@$G!"@hF,$,!Z(B!!$B![$H$J$C$F$$$k9T$K$D$$$F$O!"$=$3$K=q$$$F$"$kFbMF(B $B$r$=$N$H$*$j.J8;z$GF~NO$5$l$?%m!<%^;z$O$R$i$+$J$KJQ49$5(B $B$l$F$+$i%P%C%U%!$KA^F~$5$l$^$9!#Nc$($P!"!X(Baiueo$B!Y$H%?%$%W$9$l$P!Z$"$$$&$((B $B$*![$H$J$j$^$9!#(B $B"(!V$+$J%b!<%I!W$G$O!"@bL@$,$"$k$^$G$O1QBgJ8;z$r%?%$%W$7$J$$$G$/$@$5$$!#(B >> $B$+$-$/$1$3(B ---- == $B!V$+$J%b!<%I!W$+$i!V%"%9%-!<%b!<%I!W$X$N0\9T(B == $B!V$+$J%b!<%I!W$+$i!V%"%9%-!<%b!<%I!W$X0\$k$K$O!X(Bl$B!Y(B($B1Q>.J8;z$N%(%k!#!V(BLatin$B!W(B $B$NF,J8;z(B) $B$rF~NO$7$^$9!#(B !! $B!X(Bl$B!Y$r%?%$%W$7$F$/$@$5$$!#(B !! $B%b!<%I9T$KCmL\$7$F!"%b!<%I$N?d0\$r3NG'$7$F$/$@$5$$!#(B $B!V%"%9%-!<%b!<%I!W$G$O!"F~NO$5$l$?%-!<$ODL>o$N(B Emacs $B$N%3%^%s%I$H$7$F2ruBV$H9M$($i$l$^$9!#%b!<%I9T$N!Z(BSKK$B![$O(B SKK $B$,$3$N%P%C%U%!$G5/F0$5(B $B$l$F$$$k$3$H$r<($9$?$a$N$b$N$G$9!#(B >> Now we are in ASCII mode. ---- == $B!V%"%9%-!<%b!<%I!W$+$i!V$+$J%b!<%I!W$X$N0\9T(B == $B!V%"%9%-!<%b!<%I!W$+$i!V$+$J%b!<%I!W$X$O!X(BC-j$B!Y$r%?%$%W$7$F0\$j$^$9!#(B $B$^$H$a$k$H!"(B l : $B$+$J(B --> $B%"%9%-!<(B C-j : $B%"%9%-!<(B --> $B$+$J(B >> ASCII $B$+$i(B $B$+$J(B ---- == $B!V%+%J%b!<%I!W(B == $B%+%?%+%J$NF~NO$O!V%+%J%b!<%I!W$G9T$$$^$9!#!V$+$J%b!<%I!W$H!V%+%J%b!<%I!W(B $B$N?d0\$O!X(Bq$B!Y%-!<$G9T$$$^$9!#(B q : $B$+$J(B --> $B%+%J(B q : $B%+%J(B --> $B$+$J(B >> $B$R$i$+$J(B $B$+$i(B $B%+%?%+%J(B $B$=$7$F$^$?(B $B$R$i$+$J(B ---- == $B!Z$s![$NF~NOK!(B == $B!Z$s![$O!X(Bnn$B!Y$^$?$O!X(Bn'$B!Y$GF~NO$7$^$9!#D>8e$K(B ($B!X(Bn$B!Y!"!X(By$B!Y0J30$N(B) $B;R2;$,(B $BB3$/$H$-$O!X(Bn$B!Y$@$1$GF~NO$G$-$^$9!#(B >> $B$+$J$+$s$8$X$s$+$s(B ---- == $B$R$i$+$J$N>.J8;z$NF~NOK!(B == $B$R$i$+$J$N>.J8;z$rC1FH$GF~NO$9$k$H$-$O!"(B $B!X(Bxa$B!Y(B==>$B!Z$!![!"!X(Bxya$B!Y(B==>$B!Z$c![(B $B$J$I$N$h$&$K!X(Bx$B!Y$rMQ$$$^$9!#$7$+$7!"$?$$$F$$$O!"(B $B!X(Bchotto$B!Y(B==>$B!Z$A$g$C$H![!"!X(Btyotto$B!Y(B==>$B!Z$A$g$C$H![(B $B$N$h$&$K$7$FF~NO$G$-$^$9!#(B >> $B$"$C(B $B$=$&$@$C$?$N$+(B ---- == $B$N$P$92;(B ($BD92;(B) $B$NF~NOK!(B == $B$N$P$92;$O!"(B $B!X(B-$B!Y(B==>$B!Z!> $B$(!<$H(B ---- == $B!VA41Q%b!<%I!W(B == $B!Z#S#K#K![$N$h$&$JA43Q1QJ8;zNs$NF~NO$O!VA41Q%b!<%I!W$G9T$$$^$9!#!VA41Q(B $B%b!<%I!W$G$O!"!X(Ba$B!Y$+$i!X(Bz$B!Y$*$h$S!X(BA$B!Y$+$i!X(BZ$B!Y$OA43Q%"%k%U%!%Y%C%H$H$7(B $B$F%P%C%U%!$KA^F~$5$l$^$9!#!VA41Q%b!<%I!W$X$O!V$+$J%b!<%I!W$^$?$O!V%+%J%b(B $B!<%I!W$+$i!X(BL$B!Y%-!<$G0\9T$7$^$9(B ($B!X(BL$B!Y$O!V(BLatin$B!W$NF,J8;z(B)$B!#(B $B!VA41Q%b!<%I!W$+$i85$N!V$+$J%b!<%I!W$^$?$O!V%+%J%b!<%I!W$X$O!X(BC-j$B!Y$GLa$j(B $B$^$9!#(B L : $B$+$J(B/$B%+%J(B --> $BA41Q(B C-j : $BA41Q(B --> $B$+$J(B/$B%+%J(B >> $B#S#K#K$,$D$+$($k$N$O#E#m#a#c#s$@$1$G$9(B ---- == $B$3$l$^$G$N$^$H$a(B == SKK $B$O!X(BC-x C-j$B!Y$G5/F0$5$l$^$9!#(BSKK $B$K$O(B4$B$D$N%b!<%I$,$"$j$^$9!#(B $B!V%"%9%-!<%b!<%I!W!"!V$+$J%b!<%I!W!"!V%+%J%b!<%I!W!"!VA41Q%b!<%I!W(B $B%b!<%I4V$N?d0\$O $B$+$J(B/$B%+%J(B == l ==> $B%"%9%-!<(B $B$+$J(B <== q ==> $B%+%J(B $BA41Q(B == C-j ==> $B$+$J(B/$B%+%J(B == L ==> $BA41Q(B >> $B#S#K#K$K$O(B ASCII$B%b!<%I(B $B$H(B $B$+$J%b!<%I(B $B$H(B $B%+%J%b!<%I(B $B$H(B $B$<$s$($$%b!<%I(B $B$,$"$k(B ---- == $B!V$+$J%b!<%I!W(B == $B!V$+$J%b!<%I!W$H!V%+%J%b!<%I!W$G$O!"0J2<$N%-!<$,FCJL$N0UL#$r;}$A$^$9!#(B $B$3$l0J30$N%-!o$N(B Emacs $B$N%-!<$H$7$F(B $B5!G=$7$^$9!#(B l$B!"(Bq$B!"(Bx$B!"(BL $B$9$G$K@bL@$7$?$H$*$j(B $B>e5-0J30$N1Q>.J8;z(B $B%m!<%^;z$+$JJQ49$NBP>](B $B1QBgJ8;z(B $B4A;zJQ49%b!<%I$X$N0\9T(B / $B1Q;zJQ49%b!<%I$X$N0\9T(B , $B!Z!"![$H$7$FF~NO$5$l$k(B . $B!Z!#![$H$7$FF~NO$5$l$k(B [$B!"(B] $B!Z!V![!"!Z!W![$H$7$FF~NO$5$l$k(B !! $B$?$a$7$K!"6gFIE@$H%+%C%3$rF~NO$7$F$_$F$/$@$5$$!#(B >> $B!V$"!"$=$&$@$C$?$N$+!#!W(B ---- == $B2>L>4A;zJQ49(B == $B2>L>4A;zJQ49$O!V$+$J%b!<%I!W$G9T$o$l$^$9!#(B !! $B%b!<%I$r(B ($B$b$7:#!V$+$J%b!<%I!W$G$J$1$l$P(B)$B!V$+$J%b!<%I!W$K$7$F!"(B !! $B!X(BKanji$B!Y$H%?%$%W$7$F$/$@$5$$(B ($B:G=i$N!X(BK$B!Y$@$1$,1QBgJ8;z$G$9(B)$B!#(B $B%P%C%U%!$O!Z"&$+$s$8![$H$J$C$?$O$:$G$9!#(B !! $B $B%-!<$r2!$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z"'4A;z![$H$J$j$^$9!#(B !! $B> $B4A;z(B ---- $B$b$&0lEY!"$d$C$F$_$^$7$g$&!#(B !! $B%b!<%I$r(B ($B$b$7:#!V$+$J%b!<%I!W$G$J$1$l$P(B)$B!V$+$J%b!<%I!W$K$7$F!"(B !! $B!X(BKanji$B!Y$H%?%$%W$7$F!"$=$l$+$i!"(B $B%-!<$r(B2$B2s2!$7$F$/$@$5$$!#(B $B%P%C%U%!$O(B $B!Z"&$+$s$8![(B ==> $B!Z"'4A;z![(B ==> $B!Z"'44;v![(B $B$H$J$j$^$9!#(B !! $B> $B44;v(B ---- $B:#EY$O>/$7D9$$$N$G!"4V0c$o$J$$$h$&$K!"$f$C$/$j$H%?%$%W$7$F$/$@$5$$!#(B $B!X""!Y$O(B $B%-!<$rI=$o$7$^$9!#$7$?$,$C$F!"!X""""!Y$H$"$l$P!"(B $B%-!<$r(B2$B2sB3$1$F2!$7$F$/$@$5$$!#(B !! $B%b!<%I$r(B ($B$b$7:#!V$+$J%b!<%I!W$G$J$1$l$P(B)$B!V$+$J%b!<%I!W$K$7$F!"(B !! $B!X(BKanji$B""""(BnoNyuuryoku$B""(BhaYoui$B""(Bdesu.$B!Y$H%?%$%W$7$F$/$@$5$$!#(B >> $B4A;z$NF~NO$OMF0W$G$9!#(B ---- !! $B!V$+$J%b!<%I!W$G!"!X(Bkanji$B!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z$+$s$8![$H$J$j$^$9!#$7$+$7!"K\Ev$O!X(BKanji$B!Y$H%?%$%W$7$?$+$C$?$H(B $B$7$^$9!#$3$N>l9g!"(B3$BJ8;z:o=|(B (delete) $B$7$F$+$i!X(BKanji$B!Y$H%?%$%W$7D>$7$F$b$h$$(B $B$N$G$9$,!")$B!"!X(BC-j$B!Y$r%?%$(B !! $B%W$7$F$/$@$5$$!#(B >> $B4A;z(B ---- == $B!V$+$J%b!<%I!W$NItJ,%b!<%I(B == $B!V$+$J%b!<%I!W$O!"!VJ?2>L>3NDjF~NO%b!<%I!W$H!V4A;zJQ49%b!<%I!W$N(B2$B$D$NIt(B $BJ,%b!<%I$KJ,$+$l$^$9!#:#8e$O!VJ?2>L>3NDjF~NO%b!<%I!W$N$3$H$r!V"#%b!<%I!W(B $B$H8@$$$^$9!#!V4A;zJQ49%b!<%I!W$O99$K!V"&%b!<%I!W$H!V"'%b!<%I!W$KJ,$+$l$^(B $B$9!#$D$^$j!"!V$+$J%b!<%I!W$O!"(B $B!V"#%b!<%I!W!"!V"&%b!<%I!W!"!V"'%b!<%I!W(B $B$N(B3$B$D$NItJ,%b!<%I$KJ,3d$5$l$^$9!#(B $B!V"#%b!<%I!W$G$O!"1Q>.J8;z$K$h$k%m!<%^;z$,J?2>L>$KJQ49$5$l$F3NDjF~NO$5$l(B $B$^$9!#!V"#%b!<%I!W(B($BJ?2>L>3NDjF~NO%b!<%I(B) $B$O$3$l$+$i2?EY$b=P$F$/$k$N$G!"$h(B $B$/3P$($F$*$$$F$/$@$5$$!#(B >> $B$R$i$+$J$+$/$F$$$K$e$&$j$g$/$O!"$J$s$I$b!"$l$s$7$e$&$7$F$-$^$7$?!#(B ---- == $B!V"&%b!<%I!W$H!V"'%b!<%I!W(B == SKK $B$G$N2>L>4A;zJQ49$O]$K$J$kJ8;zNs$r3NDj$9$k(B ($B!V"&%b!<%I!W(B)$B!#(B 2 $B3NDj$7$?J8;zNs$KBP$9$k8uJd$rNs5s$9$k(B ($B!V"'%b!<%I!W(B)$B!#(B 3 $B5a$a$k8uJd$rA*Br$7JQ49$r3NDj$9$k(B ($B!V"'%b!<%I!W(B)$B!#(B $B$9$G$K8+$?$h$&$K!"!Z4A;z![$rNc$K5s$2$l$P!"JQ49$NBP>]$H$J$kJ8;zNs!J8+=P$7(B $B8l!K$O!Z$+$s$8![$G$9!#!X(BKanji$B!Y$H:G=i$r1QBgJ8;z$G;O$a$F%?%$%W$9$l$P!"(B $B!Z$+$s$8![$,!V"&%b!<%I!W$GF~NO$5$l$^$9!#!V"&%b!<%I!W$G(B $B$r%?%$%W$9(B $B$l$P!"!Z"&![$H%]%$%s%H$N4V$NJ8;zNs$,JQ49$NBP>]!J8+=P$78l!K$H$7$F3NDj$7$^(B $B$9!#F1;~$K%b!<%I$O!V"'%b!<%I!W$X0\$j!"JQ49$N:G=i$N8uJd$,I=<($5$l$^$9!#(B $B!V"'%b!<%I!W$G$O(B $B$r%?%$%W$9$k$?$S$K> $B!V@vBu!W$rA*Br$9$k!#(B ---- $B%b!<%I$N?d0\$O!"DL>o$O $B"&(B == ==> $B"'(B == $B!X(BC-j$B!Y(B ==> $B"#(B $B$3$N$[$+!"(B $B"&(B == $B!X(BC-j$B!Y(B ==> $B"#(B $B$O8m$C$F1QBgJ8;z$r%?%$%W$7$F!V"&%b!<%I!W$K$J$C$?$H$-$K;H$$$^$9!#$^$?!"(B $B"'(B == $B$H0u;z2DG=$J$9$Y$F$N%-!<(B ==> $B"#(B $B$O3NDj$rH<$J$&%-!<$r<($7$F$$$^$9!#;n$7$F$_$^$7$g$&!#(B !! $B!V"#%b!<%I!W$G!X(BKyouto$B""(B,Oosaka$B""(B,Koube$B""(B.$B!Y$H%?%$%W$7$F$/$@$5$$!#(B !! $B$?$@$7!"!X""!Y$O(B $B$rI=$o$7$^$9!#(B >> $B5~ET!"Bg:e!"?@8M!#(B ---- $B!V"'%b!<%I!W$G$O(B $B$H0u;z2DG=$J$9$Y$F$N%-!<$O3NDj$rH<$J$&$3$H$r3X(B $B$S$^$7$?!#(B $B$3$N$[$+!"!V"'%b!<%I!W$G(B ($B!X(BL$B!Y0J30$N(B) $B1QBgJ8;z$r%?%$%W$9$l$P!"8=:_$N8uJd(B $B$,3NDj$7!"99$K%b!<%I$O!V"&%b!<%I!W$K$J$j$^$9!#(B $B"'(B == $B1QBgJ8;z(B ==> $B"&(B !! $B!V"#%b!<%I!W$G!X(BKana$B""(BKanji$B""(BHenkan$B""(B.$B!Y$H%?%$%W$7$F$/$@$5$$!#(B !! $B$?$@$7!"!X""!Y$O(B $B$rI=$o$7$^$9!#(B >> $B2>L>4A;zJQ49!#(B ---- !! $B!V"#%b!<%I!W$G!X(BKanakanjihenkan$B""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z"'$+$J$+$s$8$X$s$+$s![$H$J$j!"%_%K%P%C%U%!$K(B [$B<-=qEPO?(B] $B$+$J$+$s$8$X$s$+$s(B: $B$H$$$&%W%m%s%W%H$,I=<($5$l$F$$$^$9!#(BSKK $B$G$O!"!V"'%b!<%I!W$G$O!"JQ49$NBP(B $B>]$H$J$kJ8;zNs$O3NDj$7$F$$$^$9!#:#$NNc$N>l9g!"(BSKK $B$O!Z$+$J$+$s$8$X$s$+$s![(B $B$H$$$&J8;zNs$r4A;z$KJQ49$7$h$&$H$7$F!"<-=q$rC5$7$F!"8+$D$+$i$J$+$C$?$N$G(B $B$9!#$3$&$$$&;~!"(BSKK $B$O<+F0E*$K<-=qEPO?%b!<%I$KF~$j$^$9!#(B $B<-=qEPO?%b!<%I$G$O!"JQ49$K<:GT$7$?J8;zNs$,EPO?$NBP>]$K$J$k$N$G!"EPO?$9$k(B $B8l$NFI$_$r%f!<%6$,:FF~NO$9$kI,MW$O$"$j$^$;$s!#(B !! $B%+!<%=%k$,%_%K%P%C%U%!$K$"$k$3$H$r3NG'$7$?>e$G!"(B !! $B!X(BKana$B""(BKanji$B""(BHenkan$B""!Y$H%?%$%W$7!"(B $B%-!<$r2!$7$F$/$@$5$$!#(B >> $B2>L>4A;zJQ49(B ---- $B:#$N<-=qEPO?$G!"<-=q%P%C%U%!!J8D?M<-=q!K$K$O!"(B $B$+$J$+$s$8$X$s$+$s(B /$B2>L>4A;zJQ49(B/ $B$H$$$&%(%s%H%j$,DI2C$5$l$^$7$?!#3NG'$7$F$_$^$7$g$&!#(B !! $B!V"#%b!<%I!W$G!X(BKanakanjihenkan$B""!Y$H%?%$%W$7$F$/$@$5$$!#(B !! $B!X(BC-j$B!Y$G3NDj$7$F$/$@$5$$!#(B >> $B2>L>4A;zJQ49(B ---- == $B6uEPO?(B == $B%?%$%W%_%9Ey$G!"0U?^$7$J$$J8;zNs$rH<$C$F<-=qEPO?%b!<%I$KF~$C$F$7$^$C$?$H(B $B$-$O!"6u$NJ8;zNs$rEPO?$9$l$P!" $B%-!<$r2!$7$F$/$@$5$$!#(B $B!Z(B*$BEz(B*$B![%P%C%U%!$O!Z"&$+$J$+$s$8$X$s$1$s![$H$J$j$^$9!#(B !! $B!Z(B*$BEz(B*$B![$,%+%l%s%H!&%P%C%U%!$G$"$k$3$H$r3NG'$7!"(B !! $B%-!<$r(B2$B2s2!$7$F$+$i!"!X(Bkan$B""(B.$B!Y$H%?%$%W$7$F$/$@$5$$!#(B >> $B2>L>4A;zJQ49!#(B ---- $B<-=q$,(B $B$4(B /$B8^(B/$B8_(B/$B8`(B/$B8a(B/$B8b(B/$B8c(B/$B8d(B/$B8e(B/$B8f(B/$B8g(B/$B8h(B/$B8i(B/$B8j(B/$B8k(B/$B8l(B/$B8m(B/$B8n(B/$B8o(B/ $B$H$$$&%(%s%H%j$r4^$s$G$$$k$H$7$F!"!Z8k![$r:n$C$F$_$^$7$g$&!#(B !! $B!V"#%b!<%I!W$G!"!X(BGo$B""""""""""""!Y$H%?%$%W$7$F$/$@$5$$(B ( $B$O(B6$B2s$G$9(B)$B!#(B $B%(%3!e$"$k$H$-$O!":G=i$N(B4$B$D$O%P%C%U%!$K(B 1$B$D$:$DI=<($5$l$^$9$,!"(B5$B$DL\0J9_$O%(%3!.J8;z$N!X(Bd$B!Y$r%?%$%W$7$^$9!#(B >> $B8k(B ---- !! $B!V"#%b!<%I!W$G!"!Z(BGo$B""![$H%?%$%W$7$F$/$@$5$$!#(B $BA0Ld$G3NDj$7$?!Z8k![$,:#EY$O:G=i$N8uJd$H$7$FI=<($5$l$^$9!#$7$+$7!":#2s(B $B$O!Z8a![$r:n$C$F$_$^$9!#(B !! $B!X""""""""""""!Y$H%?%$%W$7$F$/$@$5$$(B ( $B$r(B6$B2s(B)$B!#(B $B8uJd$,?T$-$?$N$G<-=qEPO?%b!<%I$K$J$C$F$7$^$$$^$7$?!#8uJd$NCf$K!Z8a![$O$"$C(B $B$?$N$G$9$,!"!J8+$92a$7$F!K9T$-2a$.$F$7$^$C$?$N$G$9!#(B !! $B%-!<$r2!$7$F$+$i!X(Bx$B!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%-!<$K$h$j6uEPO?$,$5$l!"<-=qEPO?$ND>A0$N>uBV$KLa$j$^$9!#!Z"'%b!<(B $B%I![$G$O!X(Bx$B!Y%-!<$K$h$jA08uJd(B ($B72(B) $B$rI=<($9$k$3$H$,$G$-$^$9!#(B !! $B%(%3!> $B8a(B ---- $B:#EY$O!Z8a8e![$r:n$C$F$_$^$9!#(B !! $B!V"#%b!<%I!W$G!"!X(BGogo$B""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B<-=q$K$O!Z$4$4![$,$J$$$N$G!"<-=qEPO?%b!<%I$K$J$j$^$9!#(B !! $B%_%K%P%C%U%!$N%W%m%s%W%H$,!Z$4$4![$G$"$k$3$H$r3N$+$a$F!"(B !! $B!X(BGo$B""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%_%K%P%C%U%!$O!Z$4$4(B $B"'8a![$H$J$j$^$9!#(B !! $BB3$$$F!"!X(BGo$B""""""""""(Bj$B!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%_%K%P%C%U%!$K!Z$4$4(B $B8a8e![$,$G$-$^$7$?!#(B !! $B%-!<$r2!$7$F$/$@$5$$!#(B >> $B8a8e(B ---- $B<-=q%P%C%U%!!J8D?M<-=q!K$K!Z$4$4(B /$B8a8e(B/$B![$,EPO?$5$l$?$N$G!"> $B8a8e$N8k!#(B ---- == $B:F5"E*<-=qEPO?(B == !! $B!V"#%b!<%I!W$G!"!X(BSaikiteki$B""!Y$H%?%$%W$7$F$/$@$5$$!#(B !! $B%_%K%P%C%U%!$N%W%m%s%W%H$,!Z(B[$B<-=qEPO?(B] $B$5$$$-$F$-(B:$B![$G$"$k$3$H$r3N$+$a$F!"(B !! $B!X(BSaiki$B""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B<-=q$K$O!Z$5$$$-![$bEPO?$5$l$F$$$J$$$N$G!":F$S<-=qEPO?%b!<%I$K$J$j$^$9!#(B !! $B%_%K%P%C%U%!$K!Z:F5"![$r:n$C$F$/$@$5$$!#(B !! $B%_%K%P%C%U%!$,!Z$5$$$-(B $B:F5"![$H$J$C$?$i!"(B $B%-!<$r2!$7$F$/$@$5$$!#(B $B$3$l$G!"!Z$5$$$-$F$-![$NEPO?%b!<%I$KLa$j$^$9!#(B !! $B%_%K%P%C%U%!$,!Z$5$$$-$F$-(B $B:F5"![$H$J$C$F$$$k$N$r3N$+$a$F!"!ZE*![$rDI(B !! $B2C$7$F(B $B%-!<$r2!$7$F$/$@$5$$!#(B >> $B:F5"E*<-=qEPO?$r3X=,$7$^$7$?!#(B ---- == $BAw$j2>L>$N$"$k8l$NF~NO(B == SKK$B$G$O!"!ZF0$/![$H$$$C$?!"Aw$j2>L>$N$"$k8l$O!"0J2<$N$h$&$K<-=q$KEPO?(B $B$5$l$F$$$^$9!#(B $B$&$4(Bk /$BF0(B/ $B$3$N$H$-!"F~NO$O;l$K!Z$9$k![$,IU2C$7$F$G$-$?F0;l$K$D$$$F$O!"L>;l$NItJ,$rC1FH$GJQ49$7$F(B $B$/$@$5$$!#L>;l$+$i:n$i$l$?7AMF;lEy$K$D$$$F$bF1MM$G$9!#(B >> $BF0$3$&$K$bF0$1$J$+$C$?!#(B ---- ;; (save-excursion (save-match-data (set-buffer " *skk-tut-jisyo*") (goto-char skk-okuri-ari-min) (when (search-forward "\n$B$&$4(Bk /$BF0(B/" skk-okuri-nasi-min t) (delete-region (progn (beginning-of-line) (point)) (progn (forward-line 1) (point)))))) == $BAw$j2>L>$N$"$kC18l$NEPO?(B == $B<-=q$K!V$&$4(Bk$B!W$H$$$&8+=P$78l$,$J$$$H$-$O$I$&$J$k$G$7$g$&!#(B !! $B!V"#%b!<%I!W$G!"!X(BUgoKu$B!Y$H%?%$%W$7$F$/$@$5$$!#(B $B<-=q$K$J$$$N$G!"%_%K%P%C%U%!$GEPO?$9$k$3$H$K$J$j$^$9!#%_%K%P%C%U%!$O(B $B!Z$&$4(B*$B$/(B $B![$H$J$j$^$9(B ($B!Z(B*$B![$N$"$H$N!Z$/![$OAw$j2>L>(B)$B!#<-=q$K$O(B $B!Z$I$&(B /$BF0(B/$B![$H$$$&9`L\$,$"$k$N$G!"$3$l$rMQ$$$F!"%_%K%P%C%U%!$K!ZF0![$r(B $B:n$j$^$9!#(B $BCm0U(B: $B%_%K%P%C%U%!$K!ZF0$/![$r:n$C$F$7$^$&$H!"%P%C%U%!$O!ZF0$/$/![$H$J$C$F(B $B$7$^$$$^$9!#%_%K%P%C%U%!$K$OAw$j2>L>$r=|$$$?ItJ,$@$1$r:n$j$^$9!#(B !! $B%_%K%P%C%U%!$K!ZF0![$,$G$-$?$i!"(B $B%-!<$r2!$7$F$/$@$5$$!#(B >> $BF0$/(B ---- == $BB%2;$r4^$`C18l$NJQ49(B == $BB%2;$r4^$`C18l$NJQ49$O!"> $B?M8}$,0l2/$KC#$7$?$3$H$rCN$C$?!#(B ---- == $B1Q;zJQ49(B == $B30Mh8lEy$N%m!<%^;zF~NO$O!V%+%J%b!<%I!W$G$G$-$^$9$,!"!V1Q;zJQ49!W$r;H$&$3(B $B$H$b$G$-$^$9!#(B !! $B!V"#%b!<%I!W$G!"!X(B/file$B""!Y$H%?%$%W$7$F$/$@$5$$!#(B $B!V"#%b!<%I!W$G!X(B/$B!Y$r%?%$%W$9$k$H!"!V"&%b!<%I!W$K$J$j$^$9!#$?$@$7!"DL>o$N(B $B!V"&%b!<%I!W$H0[$J$j!"0J2<$NF~NO$O1Q;zF~NO$K$J$j$^$9!#:#$N>l9g!"<-=q$K(B $B!Z(Bfile$B![$,$J$$$N$G!"<-=qEPO?%b!<%I$K$J$j$^$9!#(B !! $B%_%K%P%C%U%!$N%W%m%s%W%H$,!Z(Bfile$B![$G$"$k$3$H$r3N$+$a$F!"(B !! $B!X(Bqfairu$B!Y$H%?%$%W$7$F$+$i(B $B%-!<$r2!$7$F$/$@$5$$!#(B >> $B!V%U%!%$%k!W$,EPO?$5$l$^$7$?!#(B ---- == $B5-9f(B == $B0J2<$N5-9f$O!"!Z$-$4$&![$H$$$&FI$_$G<-=q$KEPO?$5$l$F$$$^$9(B (S$B<-=q$K$O!"0lItL$EPO?$N5-9f$,$"$j$^$9(B)$B!#(B $B!!(B $B!"(B $B!#(B $B!$(B $B!%(B $B!&(B $B!'(B $B!((B $B!)(B $B!*(B $B!+(B $B!,(B $B!-(B $B!.(B $B!/(B $B!0(B $B!1(B $B!2(B $B!3(B $B!4(B $B!5(B $B!6(B $B!7(B $B!8(B $B!9(B $B!:(B $B!;(B $B!<(B $B!=(B $B!>(B $B!?(B $B!@(B $B!A(B $B!B(B $B!C(B $B!D(B $B!E(B $B!F(B $B!G(B $B!H(B $B!I(B $B!J(B $B!K(B $B!L(B $B!M(B $B!N(B $B!O(B $B!P(B $B!Q(B $B!R(B $B!S(B $B!T(B $B!U(B $B!V(B $B!W(B $B!X(B $B!Y(B $B!Z(B $B![(B $B!\(B $B!](B $B!^(B $B!_(B $B!`(B $B!a(B $B!b(B $B!c(B $B!d(B $B!e(B $B!f(B $B!g(B $B!h(B $B!i(B $B!j(B $B!k(B $B!l(B $B!m(B $B!n(B $B!o(B $B!p(B $B!q(B $B!r(B $B!s(B $B!t(B $B!u(B $B!v(B $B!w(B $B!x(B $B!y(B $B!z(B $B!{(B $B!|(B $B!}(B $B!~(B $B"!(B $B""(B $B"#(B $B"$(B $B"%(B $B"&(B $B"'(B $B"((B $B")(B $B"*(B $B"+(B $B",(B $B"-(B $B".(B >> $B")(B980 ---- == $B%.%j%7%"J8;z$H%-%j!<%kJ8;z(B == $B$3$l$i$O!"<-=q$G$O0J2<$N$h$&$KEPO?$5$l$F$$$^$9!#(B Greek /$B&!(B/$B&"(B/$B&#(B/$B&$(B/$B&%(B/$B&&(B/$B&'(B/$B&((B/$B&)(B/$B&*(B/ ... greek /$B&A(B/$B&B(B/$B&C(B/$B&D(B/$B&E(B/$B&F(B/$B&G(B/$B&H(B/$B&I(B/$B&J(B/ ... Cyrillic /$B'!(B/$B'"(B/$B'#(B/$B'$(B/$B'%(B/$B'&(B/$B''(B/$B'((B/$B')(B/$B'*(B/ ... cyrillic /$B'Q(B/$B'R(B/$B'S(B/$B'T(B/$B'U(B/$B'V(B/$B'W(B/$B'X(B/$B'Y(B/$B'Z(B/ ... $B$7$?$,$C$F!"!V1Q;zJQ49!W$GF~NO$7$^$9!#(B >> $B&E&D(B ---- == $B%3!<%IF~NO(B == $BBh(B2$B?e=`$N4A;z$J$I<-=q$K$J$$J8;z$K$D$$$F$O!"(BJIS $B%3!<%I$^$?$O(B EUC $B$K$h$k(B $BF~NO$,2DG=$G$9!#(B $BNc$($P!"!ZU\![$N(B JIS $B%3!<%I(B (JIS X 0208) $B$O!V(B555C$B!W$J$N$G!" $B%-!<$r2!$7$F$/$@$5$$!#(B >> $BElKLBgU\(B ---- == $BFI$_$N%3%s%W%j!<%7%g%s(B == $B!V"&%b!<%I!W$G(B $B%-!<$r2!$9$H!"!VFI$_$N%3%s%W%j!<%7%g%s!W$,9T$o$l$^$9!#(B $B$r2!$9$^$G$K!V"&%b!<%I!W$GF~NO$5$l$?J8;zNs$r&R$H$9$k$H!"<-=q%P%C%U%!$N(B $BCf$G!"@hF,$,&R$H0lCW$7!"D9$5$,&R$h$j$bD9$$FI$_$rC5$7$F!"$=$N$h$&$J&S$,$b(B $B$7$"$l$P!"&R$NBe$o$j$K&S$rI=<($7$^$9!#(B !! $B!V"#%b!<%I!W$G!"!X(BkonoHikouki$B""(ByorianoHi$B!Y$H%?%$%W$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z$3$NHt9T5!$h$j$"$N"&$R![$H$J$j$^$9!#(B !! $B%-!<$r2!$7$F$/$@$5$$!#(B $B%3%s%W%j!<%7%g%s$,9T$o$l$F%P%C%U%!$O!Z$3$NHt9T5!$h$j$"$N"&$R$3$&$-![$H$J$j$^(B $B$9!#(B >> $B$3$NHt9T5!$h$j$"$NHt9T5!$K$7$h$&!#(B ---- $B%3%s%W%j!<%7%g%s$O<-=q%P%C%U%!$r:G=i$+$i=g$KD4$Y$F9T$o$l$k$N$G!"J8;zNs&R(B $B$H@hF,$,0lCW$9$kFI$_$,%P%C%U%!$KJ#?t8D$"$k$H$-$OA0$NJ}$K$"$kFI$_$K%3%s%W(B $B%j!<%7%g%s$5$l$^$9!#$3$l$,0U?^$7$?$b$N$G$J$+$C$?$H$-$K$O!"(B $B$ND>8e$K(B $B!X(B.$B!Y(B(period) $B$r%?%$%W$9$k$H(B2$BHVL\$NFI$_$,I=<($5$l$^$9!#0J2;z$@!#!W$H$$$&J8$NF~NO(B $B$r9M$($F$_$^$7$g$&!#(B !! $B!V"#%b!<%I!W$G!"!X(BSatou$B""(BtoSaitou$B""(BdehaSa$B!Y$H%?%$%W$7$F$+$i(B !! $B%-!<$r2!$7$F$/$@$5$$!#(B $B%P%C%U%!$O!Z:4F#$H:XF#$G$O"&$5$$$H$&![$H$J$j$^$9!#(B !! $B!X(B..,$B!Y$H%?%$%W$7$F$/$@$5$$!#(B >> $B:4F#$H:XF#$G$O:4F#$N$[$&$,$"$j$U$l$?L>;z$@!#(B ---- SKK $B$N4pK\E*$J;H$$J}$N2r@b$O$3$l$G=*$j$G$9!#(B $B$J$*!"(BSKK $B$O5/F0;~$K%f!<%6<-=q%U%!%$%k(B (~/.skk-jisyo) $B$r<-=q%P%C%U%!$KFI(B $B$_9~$_!"!V"'%b!<%I!W$G3NDj$9$k$?$S$K<-=q%P%C%U%!$O99?7$5$l$^$9!#$=$7$F(B Emacs $B$r=*N;$9$k$H$-$K!"<-=q%P%C%U%!$O%f!<%6<-=q%U%!%$%k$K%;!<%V$5$l$^$9!#(B $B$7$?$,$C$F!"DL>o$O!"0U<1$7$F<-=q%P%C%U%!$r%;!<%V$9$kI,MW$O$"$j$^$;$s!#(B $B$^$?!"F1;~$K0l2sA0$K:n$i$l$?%f!<%6<-=q%U%!%$%k$O!"(B~/.skk-jisyo.BAK $B$K%P%C(B $B%/%"%C%W$5$l$k$N$G!";v8NEy$G(B ~/.skk-jisyo $B$,2u$l$?$j$7$?$H$-$K$O!"(B $mv .skk-jisyo.BAK .skk-jisyo $B$HA`:n$9$k$3$H$K$h$C$FBgItJ,$N2sI|$,2DG=$G$9!#(B SKK $B$O$3$3$G@bL@$G$-$J$+$C$?B?$/$N5!G=$r;}$C$F$$$^$9!#$h$j>\$7$$(B SKK $B$N(B $B;H$$J}$O!"%^%K%e%"%k$r;2>H$7$F$/$@$5$$!#(B $B$G$O!":G8e$NLdBj$G$9!#(B >> $B$3$l$G(B SKK $B%A%e!<%H%j%"%k$r=*N;$7$^$9!#(B ---- ;; (skktut-end-tutorial) ;; Local Variables: ;; mode:skk-auto-fill ;; fill-column:74 ;; End: ddskk-15.2/etc/SKK.tut.E0000644000570400056700000005557512017140020014732 0ustar kitamotoopenlab;; SKK English tutorial text -*- coding: iso-2022-jp -*- ;; Copyright (C) 1992, 1996, 1998 ;; Masahiko Sato ;; Copyright (C) 1999, 2000, 2001, 2002 ;; SKK Development Team ;; ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: SKK.tut.E,v 1.14 2012/08/28 12:56:48 skk-cvs Exp $ ;; Keywords: japanese ;; Last Modified: $Date: 2012/08/28 12:56:48 $ ;; ;; This is the tutorial text for Daredevil SKK version 11.1 and and later ;; versions. ;; ;; Permission is granted to make and distribute verbatim copies of this ;; tutorial text provided the copyright notice and this permission notice ;; are preserved on all copies. ;; ;; Permission is granted to copy and distribute modified versions of this ;; tutorial text under the conditions for verbatim copying, provided that ;; the entire resulting derived work is distributed under the terms of a ;; permission notice identical to this one. ;; ;; Permission is granted to copy and distribute translations of this ;; tutorial text into another language, under the above conditions for ;; modified versions, except that this permission notice may be stated in ;; a translation approved by Masahiko Sato. ---- == How to use the SKK tutorial == SKK is a software system that provides a very fast and efficient Japanese input environment for Emacs. As it is implemented based on a very simple principle, you can master the usage of SKK quickly. This tutorial explains SKK assuming that you know enough about Emacs. You will learn the usage of SKK by solving problems. The last line of each Problem buffer will begin with $B!Z(B>>$B![(B. You have to make line in the Solution buffer as same as the last line of each Problem buffer. When you have done, type $B!X(BC-x n$B!Y(B(Next). ($B!X(BC-x$B!Y(B means , that is, typing $B!X(Bx$B!Y(B key holding the control key.) If your solution is correct, the buffers will be updated and you will proceed to the next problem. Type $B!X(BC-x q$B!Y(B(Quit) if you wish to quit the tutorial. Type $B!X(BC-x s$B!Y(B (Skip) if you wish to skip the problem. >> (concat "My name is " (skktut-user-name) ".") ---- == Invoking SKK, $B$+$J(B mode == In the following, if you encounter lines beginning with $B!Z(B!!$B![(B, follow the instructions there. You can invoke SKK by typing$B!X(BC-x C-j$B!Y(B. Let's try that. !! Type $B!X(BC-x C-j$B!Y(B. Note that a part of the mode line which shows minor modes of the Solution buffer is now $B!Z$+$J![(B. This mode is called $B$+$J(B mode. In this mode, lowercase Latin letters are interpreted as Romazi ($B%m!<%^;z(B) and will be converted to the corresponding hirakanas. For instance, if you type $B!X(Baiueo$B!Y(B, you will get $B!Z$"$$$&$($*![(B. (In $B$+$J(B mode, don't use uppercase Latin characters until we explain about them.) >> $B$+$-$/$1$3(B ---- == From $B$+$J(B mode to ASCII mode == You can move from $B$+$J(B mode to ASCII mode by typing $B!X(Bl$B!Y(B(for Latin). !! Type $B!X(Bl$B!Y(B now. Note also how the mode line changed. In ASCII mode, keys will be interpreted as ordinary Emacs commands. It is almost identical with the state you were in just before you invoked SKK, and we will explain the tiny difference soon. In ASCII mode, you will see $B!Z(BSKK$B![(B in the mode line, and this is to indicate that SKK has been invoked in this buffer. >> Now we are in ASCII mode. ---- == From ASCII mode to $B$+$J(B mode == You can move from ASCII mode to $B$+$J(B mode by typing $B!X(BC-j$B!Y(B. In summary: l : $B$+$J(B --> ASCII C-j : ASCII --> $B$+$J(B >> ASCII $B$+$i(B $B$+$J(B ---- == $B%+%J(B mode == Input of katakana ($B%+%?%+%J(B) is done in $B%+%J(B mode. You can move between $B$+$J(B mode and $B%+%J(B mode by typing $B!X(Bq$B!Y(B(for qana = $B$+$J(B/$B%+%J(B (^_^)). q : $B$+$J(B --> $B%+%J(B q : $B%+%J(B --> $B$+$J(B >> $B$R$i$+$J(B $B$+$i(B $B%+%?%+%J(B $B$=$7$F$^$?(B $B$R$i$+$J(B ---- == How to input $B!Z$s![(B == $B!Z$s![(B can be inputted by $B!X(Bnn$B!Y(B or $B!X(Bn'$B!Y(B. If it will be followed by a consonant except $B!X(Bn$B!Y(B and $B!X(By$B!Y(B, you may simply type $B!X(Bn$B!Y(B. >> $B$+$J$+$s$8$X$s$+$s(B ---- == How to imput small $B$R$i$+$J(B characters== You can enter each small hirakana character by prefixing $B!X(Bx$B!Y(B to its Romazi representation, e.g.: $B!X(Bxa$B!Y(B==>$B!Z$!![!"!X(Bxya$B!Y(B==>$B!Z$c![(B However, in most cases, you can enter them like this: $B!X(Bchotto$B!Y(B==>$B!Z$A$g$C$H![!"!X(Btyotto$B!Y(B==>$B!Z$A$g$C$H![(B >> $B$"$C(B $B$=$&$@$C$?$N$+(B ---- == Input of long vowel == A long vowel may be entered by using: $B!X(B-$B!Y(B==>$B!Z!> $B$(!<$H(B ---- == $BA41Q(B (zenei) mode == Zenkaku ($BA43Q(B, square shaped) character strings like $B!Z#S#K#K![(B may be entered in $BA41Q(B (zenei) mode. In $BA41Q(B mode, Latin characters $B!X(Ba$B!Y(B-$B!X(Bz$B!Y(B and $B!X(BA$B!Y(B-$B!X(BZ$B!Y(B are input as square shaped alphabets (normally occupying double horizontal space compared to ASCII characters). From either $B$+$J(B mode or $B%+%J(B mode, you can move to $BA41Q(B mode by typing $B!X(BL$B!Y(B(for Large sized Latin). From $BA41Q(B mode, you can return to $B$+$J(B/$B%+%J(B mode by $B!X(BC-j$B!Y(B. L : $B$+$J(B/$B%+%J(B --> $BA41Q(B C-j : $BA41Q(B --> $B$+$J(B/$B%+%J(B >> $B#S#K#K$,$D$+$($k$N$O#E#m#a#c#s$@$1$G$9(B ---- == Summary up to this point == You can invoke SKK by $B!X(BC-x C-j$B!Y(B. SKK has four modes: ASCII mode, $B$+$J(B mode, $B%+%J(B mode and $BA41Q(B mode You can change modes as follows: ASCII == C-j ==> $B$+$J(B/$B%+%J(B == l ==> ASCII $B$+$J(B <== q ==> $B%+%J(B $BA41Q(B == C-j ==> $B$+$J(B/$B%+%J(B == L ==> $BA41Q(B >> $B#S#K#K$K$O(B ASCII$B%b!<%I(B $B$H(B $B$+$J%b!<%I(B $B$H(B $B%+%J%b!<%I(B $B$H(B $B$<$s$($$%b!<%I(B $B$,$"$k(B ---- == $B$+$J(B mode == In $B$+$J(B mode, the following keys have special meanings. Other keys such as $B!X(BC-a$B!Y(B, $B!X(B%$B!Y(B are interpreted as ordinary Emacs keys. This is also the case for $B%+%J(B mode. l, q, x and L Already explained. Other lowercases Interpreted as Romazi, and entered as $B$+$J(B. Other uppercases Entering kana-to-kanji conversion mode. / Entering ASCII conversion mode. (To be explained later.) , Inserting $B!Z!"![(B. . Inserting $B!Z!#![(B. [ and ] Inserting $B!Z!V![(B and $B!Z!W![(B respectively. !! Try typing $B!X(B,$B!Y!X(B.$B!Y!X(B[$B!Y(B and $B!X(B]$B!Y(B. >> $B!V$"!"$=$&$@$C$?$N$+!#!W(B ---- == Kana-to-kanji conversion == Kana-to-kanji conversion is done in $B$+$J(B mode. !! If you are not in $B$+$J(B mode now, change mode to $B$+$J(B mode, and type !! $B!X(BKanji$B!Y(B. (Note that the first character is an uppercase character.) The buffer should become $B!Z"&$+$s$8![(B. You are in $B"&(B mode now. !! Now hit key. You have: $B!Z"'4A;z![(B. You are in $B"'(B mode now. !! Type $B!X(BC-j$B!Y(B. You have solved the following problem! >> $B4A;z(B ---- Let's try another one. !! If you are not in $B$+$J(B mode now, change mode to $B$+$J(B mode, type !! $B!X(BKanji$B!Y(B, and then hit key twice. The buffer should change as follows: $B!Z"&$+$s$8![(B ==> $B!Z"'4A;z![(B ==> $B!Z"'44;v![(B !! Type $B!X(BC-j$B!Y(B. You've got the solution! >> $B44;v(B ---- This one is slightly more complicated, so type carefully. $B!X""!Y(B will denote a key. If you see $B!X""""!Y(B, for instance, type key twice. !! Change mode to $B$+$J(B mode if necessary and type !! $B!X(BKanji$B""""(BnoNyuuryoku$B""(BhaYoui$B""(Bdesu.$B!Y(B. >> $B4A;z$NF~NO$OMF0W$G$9!#(B ---- !! In $B$+$J(B mode, type $B!X(Bkanji$B!Y(B. You get $B!Z$+$s$8![(B. Suppose, however, that you should have typed $B!X(BKanji$B!Y(B. You can delete three characters backwards and type $B!X(BKanji$B!Y(B in such a case. But, there is also the following alternative way to achieve the same effect. !! Type $B!X(BC-b$B!Y(B(backward-char) three times. The point is now on $B!Z$+![(B. !! Type $B!X(BQ$B!Y(B. $B!Z"&![(B is inserted before $B!Z$+![(B, and you are in $B"&(B mode. !! Type $B!X(BC-e$B!Y(B(end-of-line), $B!X""!Y(B() and $B!X(BC-j$B!Y(B. >> $B4A;z(B ---- == Sub modes of $B$+$J(B mode == $B$+$J(B mode is divided into two submodes: hirakana no-conversion mode and conversion to Kanji mode. Hirakana no-conversion mode will be referred to as $B"#(B mode. Conversion to kanji mode is further divided into two modes: $B"&(B mode and $B"'(B mode. Namely, $B$+$J(B mode is divided into three submodes: $B"#(B mode, $B"&(B mode, $B"'(B mode In $B"#(B mode, lowercase Romazi characters you type are converted to hirakanas and are inserted into the buffer. These hirakanas are not converted to Kanji anymore. $B"#(B mode is the basic mode of SKK and you should remember this point. >> $B$R$i$+$J$+$/$F$$$K$e$&$j$g$/$O!"$J$s$I$b!"$l$s$7$e$&$7$F$-$^$7$?!#(B ---- == $B"&(B mode and $B"'(B mode == Kana-to-kanji conversion in SKK is done as follows. 1 Determine the string which is the source of conversion. ($B"&(B mode) 2 Show candidates of conversion for the source. ($B"'(B mode) 3 Select the candidate you want and finish the conversion. ($B"'(B mode) As we have already seen, in the case of entering $B!Z4A;z![(B, the source string of the conversion is $B!Z$+$s$8![(B. If you type $B!X(BKanji$B!Y(B, $B!Z$+$s$8![(B will be entered in $B"&(B mode. If you hit in $B"&(B mode, the string between $B!Z"&![(B and the point becomes the source of the conversion. At the same time, the mode becomes $B"'(B mode and the first candidate will be shown. In $B"'(B mode, displays the next candidate. If you type $B!X(BC-j$B!Y(B in $B"'(B mode, the current candidate becomes the final result of the conversion, and the mode becomes $B"#(B mode. Hint: $B@vBu(B($B$;$s$?$/(B), $BA*Br(B($B$;$s$?$/(B) >> $B!V@vBu!W$rA*Br$9$k!#(B ---- Modes related to SKK usually change as follows. $B"#(B == Uppercase char. ==> $B"&(B == ==> $B"'(B == $B!X(BC-j$B!Y(B ==> $B"#(B $B"&(B == $B!X(BC-j$B!Y(B ==> $B"#(B is used to go back to $B"#(B mode when you enter $B"&(B mode by mistake. $B"'(B == and all the pritable keys ==> $B"#(B means that these keys automatically select the current candidate as the final result of conversion. This action is called $B3NDj(B (Kakutei). Let us try this. !! Type $B!X(BKyouto$B""(B,Oosaka$B""(B,Koube$B""(B.$B!Y(B in $B"#(B mode. Recall that !! $B!X""!Y(B denotes a key. >> $B5~ET!"Bg:e!"?@8M!#(B ---- We have learned that, in $B"'(B mode, and all the printable keys cause $B3NDj(B as side effects. Moreover, if you type any uppercase character except $B!X(BL$B!Y(B, the current candidate becomes the final result and enter $B"&(B mode. $B"'(B == uppercase except $B!X(BL$B!Y(B ==> $B"&(B !! Type $B!X(BKana$B""(BKanji$B""(BHenkan$B""(B.$B!Y(B in $B"#(B mode. >> $B2>L>4A;zJQ49!#(B ---- !! Type $B!X(BKanakanjihenkan$B""!Y(B in $B"#(B mode. Your buffer becomes $B!Z"'$+$J$+$s$8$X$s$+$s![(B and you should see the prompt: $B$+$J$+$s$8$X$s$+$s(B in the minibuffer. In $B"'(B mode, the source string to be converted is already fixed. In our case, SKK tried to convert the string $B!Z$+$J$+$s$8(B $B$X$s$+$s![(B, but could not find it in $B<-=q(B. (i.e., dictionary) In such a case, SKK automatically enters register-a-word-to-dictionary mode (this mode will be referred to as $B<-=qEPO?(B mode). In $B<-=qEPO?(B mode, the string for which the conversion failed becomes the key word ($B8+=P$78l(B, midashigo) for the new entry to be registered to $B<-=q(B. !! Verify that the cursor is in the minibuffer, and type !! $B!X(BKana$B""(BKanji$B""(BHenkan$B""!Y(B followed by key. >> $B2>L>4A;zJQ49(B ---- We have just added the line $B$+$J$+$s$8$X$s$+$s(B /$B2>L>4A;zJQ49(B/ to the $B<-=q(B buffer. We can verify this as follows. !! Type $B!X(BKanakanjihenkan$B""!Y(B in $B"#(B mode, and !! $B3NDj(B (Kakutei, finalize) it by $B!X(BC-j$B!Y(B. >> $B2>L>4A;zJQ49(B ---- == empty $BEPO?(B (registration) == If you enter $B<-=qEPO?(B mode by mistake, you can abort it by hitting $B!X(BC-g$B!Y(B or by registering an empty string. !! Type $B!X(BKanakanjihenken$B""!Y(B in $B"#(B mode. $B<-=q(B does not contain $B!Z$+$J$+$s$8$X$s$1$s![(B, so you get $B!Z$+$J$+$s$8$X$s(B $B$1$s![(B in the minibuffer. !! Verify that the cursor is in the minibuffer, and hit . The $B!Z(B*$BEz(B*$B![(B buffer now becomes $B!Z"&$+$J$+$s$8$X$s$1$s![(B. !! Verify that $B!Z(B*$BEz(B*$B![(B is the current buffer. Hit key !! twice, and then type $B!X(Bkan$B""(B.$B!Y(B. >> $B2>L>4A;zJQ49!#(B ---- We assume that $B<-=q(B contains the line: $B$4(B /$B8^(B/$B8_(B/$B8`(B/$B8a(B/$B8b(B/$B8c(B/$B8d(B/$B8e(B/$B8f(B/$B8g(B/$B8h(B/$B8i(B/$B8j(B/$B8k(B/$B8l(B/$B8m(B/$B8n(B/$B8o(B/ You can enter $B!Z8k![(B as follows. !! Type $B!X(BGo$B""""""""""""!Y(B in $B"#(B mode. (You have to hit six times.) You now see the line: A:$B8i(B S:$B8j(B D:$B8k(B F:$B8l(B J:$B8m(B K:$B8n(B L:$B8o(B [$B;D$j(B 0] in the echo area. As we have just seen, after the fifth candidate, seven of them are displayed together in the echo area. To select $B!Z8k![(B, type lowercase $B!X(Bd$B!Y(B. >> $B8k(B ---- !! Type $B!Z(BGo$B""![(B in $B"#(B mode. This time $B!Z8k![(B is displayed as the first candidate. This is because we have done $B3NDj(B by that character. But we want $B!Z8a![(B this time. !! Type $B!X""""""""""""!Y(B. (six 's.) We entered $B<-=qEPO?(B mode as we ran out of candidates. Actually $B!Z8a![(B was among the candidated but we had overrun. !! Hit key and type $B!X(Bx$B!Y(B. key registers an empty string (which actually makes no real registration) and we return to the state just before $B<-=qEPO?(B. In $B"'(B mode, we can return to previous candiate(s) by the $B!X(Bx$B!Y(B key. You should now be able to select $B!Z8a![(B from the candidates in the echo area. >> $B8a(B ---- We try $B!Z8a8e![(B this time. !! Type $B!X(BGogo$B""!Y(Bin $B"#(B mode. As there is no $B!Z$4$4![(B in $B<-=q(B, we enter $B<-=qEPO?(B mode. !! Verify that the minibuffer prompt is $B!Z$4$4![(B, and type $B!X(BGo$B""!Y(B. The minibuffer becomes $B!Z$4$4(B $B"'8a![(B. !! Then, type $B!X(BGo$B""""""""""(Bj$B!Y(B. We have $B!Z$4$4(B $B8a8e![(B in the minibuffer. !! Hit key. >> $B8a8e(B ---- We now have the entry $B!Z$4$4(B /$B8a8e(B/$B![(B in the $B<-=q(B buffer. So the following problem should be easy. >> $B8a8e$N8k!#(B ---- == Recursive $B<-=qEPO?(B == !! Type $B!X(BSaikiteki$B""!Y(B in $B"#(B mode. !! Verify the prompt $B!Z$5$$$-$F$-![(B in the minibuffer, and type $B!X(BSaiki$B""!Y(B. We don't have $B!Z$5$$$-![(B in $B<-=q(B either, so we recursively (i.e., $B:F5"E*$K(B) enter $B<-=qEPO?(B mode. !! Construct $B!Z:F5"![(B in the minibuffer. (Hint: $B:F(B($B$5$$(B), $B5"(B($B$-(B)) !! Hit key after you have $B!Z$5$$$-(B $B:F5"![(B in the minibuffer. Now we can continue the registration of $B!Z$5$$$-$F$-![(B. !! You should have $B!Z$5$$$-$F$-(B $B:F5"![(B in the minibuffer. Construct $B!ZE*![(B. Hint: $B<-=q(B($B$8$7$g(B), $BEPO?(B($B$H$&$m$/(B), $B3X=,(B($B$,$/$7$e$&(B) >> $B:F5"E*<-=qEPO?$r3X=,$7$^$7$?!#(B ---- == How to enter words with okurigana == Words like $B!VF0$/!W(B have okurigana parts, and SKK $B<-=q(B have entries like: $B$&$4(Bk /$BF0(B/ for these words. We make use of these entries to enter words with okuriganas. !! in $B"#(B mode, type $B!X(BUgoKounimoUgoKenakatta.$B!Y(B. Some nouns become verbs by affixing them with $B!V$9$k!W(B, but for such verbs it is recommened to enter the original noun and the okurigana part separately. >> $BF0$3$&$K$bF0$1$J$+$C$?!#(B ---- ;; (save-excursion (save-match-data (set-buffer " *skk-tut-jisyo*") (goto-char skk-okuri-ari-min) (when (search-forward "\n$B$&$4(Bk /$BF0(B/" skk-okuri-nasi-min t) (delete-region (progn (beginning-of-line) (point)) (progn (forward-line 1) (point)))))) == How to register words with okurigana == Let's see what happens if $B<-=q(B does not have $B!V$&$4(Bk$B!W(B as $B8+=P$78l(B. !! In $B"#(B mode, type$B!X(BUgoKu$B!Y(B. We enter $B<-=qEPO?(B mode in the minibuffer, and we have the prompt $B!Z$&$4(B*$B$/(B $B![(B. As $B<-=q(B has the entry $B!V$I$&(B /$BF0(B/$B!W(B, we can make $B!ZF0![(B in the minibuffer. Remark: You have only to construct the main part without the okurigana, in the minibuffer. !! Hit key after you have $B!ZF0![(B in the minibuffer. >> $BF0$/(B ---- == How to enter words containing double consonants == We do this like the following: $B!X(BTukaTta$B""!Y(B $B"*(B $B!Z;H$C$?![(B $B!X(BHosSuru$B""!Y(B $B"*(B $B!ZM_$9$k![(B where our $B<-=q(B is like: $B$D$+(Bt /$B;H(B/ $B$[$C(Bs /$BM_(B/ Hint: $B?M8}(B($B$8$s$3$&(B), $B0l2/(B($B$$$A$*$/(B), $BC#$7$?(B($B$?$C$7$?(B), $BCN$C$?(B($B$7$C$?(B) >> $B?M8}$,0l2/$KC#$7$?$3$H$rCN$C$?!#(B ---- == ASCII conversion == It is possible to enter $B8+=P$78l(B in ASCII characters, and transform them. This is called $B!V1Q;zJQ49!W(B(ASCII conversion). !! In $B"#(B mode, type $B!X(B/file$B""!Y(B. Typing $B!X(B/$B!Y(B in $B"#(B mode lets you enter $B"&(B mode. Unlike ordinary $B"&(B mode, however, the ASCII characters you type will be entered without any transformations. In this case, our $B<-=q(B does not have the $B8+=P$78l(B $B!V(Bfile$B!W(B, we enter $B<-=qEPO?(B mode. !! Verify that the prompt in the minibuffer is $B!Z(Bfile$B![(B, type !! $B!X(Bqfairu$B!Y(B, and then hit key. >> $B!V%U%!%$%k!W$,EPO?$5$l$^$7$?!#(B ---- == Symbols == The following symbols are registered in $B<-=q(B under the $B8+=P$78l(B $B!V$-$4$&!W(B. $B!!(B $B!"(B $B!#(B $B!$(B $B!%(B $B!&(B $B!'(B $B!((B $B!)(B $B!*(B $B!+(B $B!,(B $B!-(B $B!.(B $B!/(B $B!0(B $B!1(B $B!2(B $B!3(B $B!4(B $B!5(B $B!6(B $B!7(B $B!8(B $B!9(B $B!:(B $B!;(B $B!<(B $B!=(B $B!>(B $B!?(B $B!@(B $B!A(B $B!B(B $B!C(B $B!D(B $B!E(B $B!F(B $B!G(B $B!H(B $B!I(B $B!J(B $B!K(B $B!L(B $B!M(B $B!N(B $B!O(B $B!P(B $B!Q(B $B!R(B $B!S(B $B!T(B $B!U(B $B!V(B $B!W(B $B!X(B $B!Y(B $B!Z(B $B![(B $B!\(B $B!](B $B!^(B $B!_(B $B!`(B $B!a(B $B!b(B $B!c(B $B!d(B $B!e(B $B!f(B $B!g(B $B!h(B $B!i(B $B!j(B $B!k(B $B!l(B $B!m(B $B!n(B $B!o(B $B!p(B $B!q(B $B!r(B $B!s(B $B!t(B $B!u(B $B!v(B $B!w(B $B!x(B $B!y(B $B!z(B $B!{(B $B!|(B $B!}(B $B!~(B $B"!(B $B""(B $B"#(B $B"$(B $B"%(B $B"&(B $B"'(B $B"((B $B")(B $B"*(B $B"+(B $B",(B $B"-(B $B".(B >> $B")(B980 ---- == Greek and Cyrillic characters == They are registered in the Jisyoes as follows (in classical Jisyoes, Russia and russia were used instead of Cyrillic and cyrillic). Greek /$B&!(B/$B&"(B/$B&#(B/$B&$(B/$B&%(B/$B&&(B/$B&'(B/$B&((B/$B&)(B/$B&*(B/ ... greek /$B&A(B/$B&B(B/$B&C(B/$B&D(B/$B&E(B/$B&F(B/$B&G(B/$B&H(B/$B&I(B/$B&J(B/ ... Cyrillic /$B'!(B/$B'"(B/$B'#(B/$B'$(B/$B'%(B/$B'&(B/$B''(B/$B'((B/$B')(B/$B'*(B/ ... cyrillic /$B'Q(B/$B'R(B/$B'S(B/$B'T(B/$B'U(B/$B'V(B/$B'W(B/$B'X(B/$B'Y(B/$B'Z(B/ ... We can use $B1Q;zJQ49(B (ASCII conversion) to enter these characters. >> $B&E&D(B ---- == Input by code == You can enter any Kanji characters by their codes (either JIS or EUC). For example, the JIS code for $B!VU\!W(B is $B!V(B555C$B!W(B. So you can enter it as follows. !! In $B"#(B mode, type $B!X(B\$B!Y(B. You get the prompt $B!Z(B7/8 bits or KUTEN code for japanese-jisx0208 (00nn or CR for Jump Menu):$B![(B. !! Type $B!X(B555c$B!Y(B and hit key. Hint: $BElKL(B($B$H$&$[$/(B), $BBg(B($B$@$$(B) >> $BElKLBgU\(B ---- == Completion of $B8+=P$78l(B == Hitting key in $B"&(B mode invokes completion of $B8+=P$78l(B. Let $B&R(B be the string you entered in $B"&(B mode just before you type . Then the first occurrence (if any) of such a $B&S(B in the $B<-=q(B buffer that has $B&R(B as its initial segement and distinct from $B&R(B will be displayed. !! In $B"#(B mode, type $B!X(BkonoHikouki$B""(ByorianoHi$B!Y(B. The buffer becomes $B!Z$3$NHt9T5!$h$j$"$N"&$R![(B. !! Now, hit key. Completion is performed and the buffer becomes $B!Z$3$NHt9T5!$h$j$"$N"&$R$3$&$-![(B. >> $B$3$NHt9T5!$h$j$"$NHt9T5!$K$7$h$&!#(B ---- The $B8+=P$78l(B search for the completion is performed starting from the beginning of the $B<-=q(B buffer. Therefore, if there are several $B8+=P$78l(B in the $B<-=q(B buffer whose initial segment matches $B&R(B, then the first such string will be displayed. If that is not what you expected, you can type $B!X(B.$B!Y(B(period) to get the second candidate, and you can continue to type $B!X(B.$B!Y(B to get more candates. If you have overrun, you can back up by typing $B!X(B,$B!Y(B(comma) several times. Let us try to enter the sentence $B!V:4F#$H:XF#$G$O:4F#$N$[$&$,$"$j$U$l$?L>(B $B;z$@!#!W(B. !! In $B"#(B mode, type $B!X(BSatou$B""(BtoSaitou$B""(BdehaSa$B!Y(B and hit key. The buffer becomes $B!Z:4F#$H:XF#$G$O"&$5$$$H$&![(B. !! Type $B!X(B..,$B!Y(B. >> $B:4F#$H:XF#$G$O:4F#$N$[$&$,$"$j$U$l$?L>;z$@!#(B ---- When SKK is invoked for the first time in the current Emacs session, it reads in your personal $B<-=q(B file into the $B<-=q(B buffer. The $B<-=q(B buffer will be updated each time you make a $B3NDj(B. When you exit from Emacs, SKK saves the content of the $B<-=q(B buffer into your personal $B<-=q(B file. So, normally, you don't have to be aware of saving the $B<-=q(B buffer. When SKK updates your personal $B<-=q(B file (.skk-jisyo) it backups the content of the current .skk-jisyo to .skk-jisyo.BAK. This backup file may be useful if your .skk-jisyo is damaged accidentally. SKK has a lot more features we couldn't explain in this short tutorial. For further information about SKK refer to the SKK manual. Here is your last problem. Hint: $B=*N;(B($B$7$e$&$j$g$&(B) >> $B$3$l$G(B SKK $B%A%e!<%H%j%"%k$r=*N;$7$^$9!#(B ---- ;; (skktut-end-tutorial) ;; Local Variables: ;; mode:skk-auto-fill ;; fill-column:74 ;; End: ddskk-15.2/etc/dot.emacs0000644000570400056700000000564712201345034015163 0ustar kitamotoopenlab;;; dot.emacs --- SKK related customization in ~/.emacs -*- mode: emacs-lisp; coding: iso-2022-jp -*- ;;; Commentary: ;; ~/.emacs.d/init.el $B$KDI2C$9$k$?$a$N@_DjNc$G$9!#(B ;;; $BCm0U(B: ;; SKK $B$N@_Dj$O!"(B~/.skk $B$NJ}$,M%@h$5$l$^$9!#(B ;; $B2<5-$N@_Dj$O!"FCp$,$"$k$?$a(B ~/.skk $B$G$O$&$^$/5!G=$7$J$$@_Dj$r(B ;; $B=8$a$F$$$^$9$N$G!"2<5-0J30$O(B ~/.skk $B$G@_Dj$9$k$3$H$r$*4+$a$7$^$9!#(B ;;; Code: ;; @@ $B4pK\$N@_Dj(B ;; $B!V%+%?%+%J(B/$B$R$i$,$J!W%-!<$G(B SKK $B$r5/F0$9$k(B (global-set-key [hiragana-katakana] 'skk-mode) ;; ~/.skk $B$K$$$C$Q$$@_Dj$r=q$$$F$$$k$N$G%P%$%H%3%s%Q%$%k$7$?$$(B (setq skk-byte-compile-init-file t) ;; $BCm(B) $B0[$J$kl9g$O(B nil $B$K$7$^$9(B ;; SKK $B$r(B Emacs $B$N(B input method $B$H$7$F;HMQ$9$k(B ;; `toggle-input-method' (C-\) $B$G(B DDSKK $B$,5/F0$7$^$9(B (setq default-input-method "japanese-skk" ; (skk-mode 1) ;; "japanese-skk-auto-fill" ; (skk-auto-fill-mode 1) ) ;; SKK $B$r5/F0$7$F$$$J$/$F$b!"$$$D$G$b(B skk-isearch $B$r;H$&(B (setq skk-isearch-mode-enable 'always) ;; @@ $B1~MQE*$J@_Dj(B ;; ~/.skk* $B$J%U%!%$%k$,$?$/$5$s$"$k$N$G@0M}$7$?$$(B (setq skk-user-directory "~/.ddskk") ;; $BCm(B 1) $B>e5-$N@_Dj$r$7$?>l9g!"(B~/.skk $B$d(B ~/.skk-jisyo $B$NBe$o$j$K(B ;; ~/.ddskk/init $B$d(B ~/.ddskk/jisyo $B$,;H$o$l$^$9!#$?$@$7!"(B ;; $B$3$l$i$N%U%!%$%kL>$r8DJL$K@_Dj$7$F$$$k>l9g$O$=$N@_Dj$,M%@h(B ;; $B$5$l$k$N$GCm0U$7$F$/$@$5$$!#$^$?!"(B~/.skk $B$d(B ~/.skk-jisyo $B$r(B ;; $B4{$K$b$C$F$$$k>l9g$OH$7$^$9$+$i!"(B ;; $B>e5-$N@_Dj$r$7$?>l9g$O$=$l$i$N%W%m%0%i%`$N@_Dj%U%!%$%k$b=q$-(B ;; $B49$($kI,MW$,$"$j$^$9!#(B ;; migemo $B$r;H$&$+$i(B skk-isearch $B$K$O$*$H$J$7$/$7$F$$$FM_$7$$(B (setq skk-isearch-start-mode 'latin) ;; YaTeX $B$N$H$-$@$16gFIE@$rJQ99$7$?$$(B (add-hook 'yatex-mode-hook (lambda () (require 'skk) (setq skk-kutouten-type 'en))) ;; $BJ8>O7O$N%P%C%U%!$r3+$$$?;~$K$O<+F0E*$K1Q?t%b!<%I(B($B!V(BSKK$B!W%b!<%I(B)$B$KF~$k(B (let ((function #'(lambda () (require 'skk) (skk-latin-mode-on)))) (dolist (hook '(find-file-hooks ;; ... mail-setup-hook message-setup-hook)) (add-hook hook function))) ;; Emacs $B5/F0;~$K(B SKK $B$rA0$b$C$F%m!<%I$9$k(B (setq skk-preload t) ;; $BCm(B) skk.el $B$r%m!<%I$9$k$@$1$J$i(B (require 'skk) $B$G$b$h$$!#>e5-@_Dj$N(B ;; $B>l9g$O!"(Bskk-search-prog-list $B$K;XDj$5$l$?<-=q$b$3$N;~E@$GFI$_9~$s$G(B ;; $B=`Hw$9$k!#(BEmacs $B$N5/F0$OCY$/$J$k$,!$(BSKK $B$r;H$$;O$a$k$H$-$N%l%9%]%s%9(B ;; $B$,7Z2w$K$J$k!#(B ;;; dot.emacs ends here ddskk-15.2/etc/dot.skk0000644000570400056700000006445412420564546014702 0ustar kitamotoopenlab;;; dot.skk --- examples for SKK init file -*- mode: emacs-lisp; coding: iso-2022-jp -*- ;;; Commentary: ;; $B0J2<$O(B ~/.skk $B$N@_DjNc=8$G$9!#(B ;; ($BCm0U(B) ;; $B$3$N%U%!%$%k$O(B ~/.skk $B$KD>@\%3%T!<$7$F;HMQ$9$k$h$&$K0U?^$5$l$?$b$N$G$O(B ;; $B$"$j$^$;$s!#I,MW$J@_DjNc$N$_%3%T!<$7$F;HMQ$7$F$/$@$5$$!#(B ;;; Code: ;; @@ $B4pK\Cf$N4pK\$N@_Dj(B ;; $B<-=q%5!<%P$r;H$&$H$-(B ;; (setq skk-server-host "localhost" ;; skk-server-portnum 1178 ;; skk-server-report-response t) ;; $B<-=q%5!<%P$r;H$o$J$$$H$-(B ;; SKK $B$,8!:w$9$k(B CDB $B7A<0<-=q(B (DDSKK 14 $B0J9_(B) ;; (setq skk-cdb-large-jisyo "/usr/share/skk/SKK-JISYO.L.cdb") ;; SKK $B$,8!:w$9$k<-=q(B ;; (setq skk-large-jisyo "/usr/share/skk/SKK-JISYO.L") ;; ja-dic.el $B$rMxMQ$7$?$+$J4A;zJQ49(B(DDSKK 14.2$B!A(B)$B$rL58z$H$9$k(B ;; (setq skk-inhibit-ja-dic-search t) ;; SHIFT $B%-!<$r;H$&$3$H$J$/!"8+=P$78l!&Aw$j2>L>$N0LCV$r;XDj$9$k(B ;; (setq skk-sticky-key ";") ;; @@ $BI=<($N@_Dj(B ;; $B3F Daredevil SKK/15.1 (Umeda) ;; t => Daredevil SKK/15.1 ($BG_ED(B) (setq skk-version-codename-ja t) ;; $B%b!<%I%i%$%s>e$NI=<($rJQ99$9$k(B ;; 'left => $B%b!<%I%i%$%s$N:8C<$KI=<($9$k(B ;; $B0J30(B => $B%^%$%J!<%b!<%I$H$7$FI=<($9$k(B ;; (setq skk-status-indicator 'minor-mode) ;; $B%b!<%I%i%$%s$K(B SKK $B%"%$%3%s$rI=<($9$k!#(B (setq skk-show-icon t) ;; $B%+!<%=%kIU6a$K%b!<%I@Z$jBX$($rI=<($9$k(B ;; (setq skk-show-mode-show t) ; M-x skk-show-mode $B$G%H%0%k2D!#(B ;; (setq skk-show-mode-style 'tooltip) ;$B%G%U%)%k%H$O(B 'inline ;; (set-face-background 'skk-show-mode-inline-face "DodgerBlue") ;; $B%a%K%e!<%P!<$NI=<((B ;; Non-nil => $BF|K\8l(B ;; nil => $B1Q8l(B ;; (setq skk-show-japanese-menu nil) ;; $BJQ49;~$KCmo$KI=<((B ; '(not list) ; *$B8uJd(B*$B%P%C%U%!$G$OHsI=<((B ; '(not minibuf) ; $B%_%K%P%C%U%!$G$OHsI=<((B ; '(not list minibuf) ; $BN>J}$H$bHsI=<((B ) ;; $BCm $B%(%3!<%(%j%"$KI=<($9$k(B ($B%G%U%)%k%H(B) ;; nil => $BJL$J(B window $B$KI=<($9$k(B ;; (setq skk-annotation-show-as-message nil) ;`skk-show-tooltip' $B$,M%@h$5$l$k(B ;; $BJQ49A0(B/$BJQ49Cf$K%(%3!<%(%j%"$K>iD9$J%a%C%;!<%8$rI=<((B (setq skk-verbose t) ;; $B%+!<%=%k$K?'$rIU$1$J$$(B ;; (setq skk-use-color-cursor nil) ;; (when skk-use-color-cursor ;; ;; $B%+!<%=%k?'$rJQ$($F$_$k(B ;; (setq skk-cursor-hiragana-color "blue" ;; skk-cursor-katakana-color "green" ;; skk-cursor-abbrev-color "red" ;; skk-cursor-jisx0208-latin-color "red" ;; skk-cursor-jisx0201-color "purple" ;; skk-cursor-latin-color "cyan") ;; ;; ;; (set-face-foreground 'skk-prefix-hiragana-face skk-cursor-hiragana-color) ;; (set-face-foreground 'skk-prefix-katakana-face skk-cursor-katakana-color) ;; (set-face-foreground 'skk-prefix-jisx0201-face skk-cursor-jisx0201-color)) ;; $B%$%s%8%1!<%?$K?'$rIU$1$J$$(B ;; (setq skk-indicator-use-cursor-color nil) ;; ;; [$B;D$j(B 99++] ;; $BI=<($r1&C<$X4s$;$F$_$k(B ;; (setq skk-henkan-rest-indicator t) ;; $BE,MQ$9$k%U%'%$%9(B ;; (copy-face 'font-lock-keyword-face 'skk-henkan-rest-indicator-face) ;; `$' skk-display-code-for-char-at-point $B$G;HMQ$9$k%U%'%$%9(B (set-face-attribute 'skk-display-code-prompt-face nil :foreground "cyan" :bold t) (set-face-attribute 'skk-display-code-char-face nil :height 150 :foreground "white" :background "black") ;; @@ $B4pK\E*$J%f!<%6!&%$%s%?!<%U%'!<%9(B ;; $BA08uJd(B/$BA08uJd72$KLa$kA`:n(B ;; (setq skk-previous-candidate-keys (list "x" "\C-p")) ;; $B"'%b!<%I$G(B Enter $B%-!<$r2!$7$?$H$-(B ;; nil => $B3NDj$H2~9T!J%G%U%)%k%H!K(B ;; non-nil => $B3NDj$9$k$N$_!#2~9T$7$J$$!#(B (setq skk-egg-like-newline t) ;; $B"'%b!<%I$G(B BS $B$r2!$7$?$H$-$K$O3NDj$7$J$$$GA08uJd$rI=<($9$k(B ;; (setq skk-delete-implies-kakutei nil) ;; $BBP1~$9$kJD3g8L$r<+F0E*$KA^F~$9$k(B (setq skk-auto-insert-paren t) ;; $B%j!<%8%g%s$r3g8L$G0O$`(B (setq skk-use-auto-enclose-pair-of-region t) ;; $B3NDj%"%s%I%%(B (define-key skk-j-mode-map (kbd "C-M-j") 'skk-undo-kakutei) ;; $B"&%b!<%I$H"'%b!<%I;~$N%"%s%I%%>pJs$r5-O?$7$J$$(B ;; (setq skk-undo-kakutei-word-only t) ;; $B6gFIE@$K(B $B!%!$(B $B$r;H$&(B ;; (setq-default skk-kutouten-type 'en) ;; $B6gFIE@$rF0E*$K7hDj$9$k(B ;; (add-hook 'skk-mode-hook ;; (lambda () ;; (save-excursion ;; (goto-char 0) ;; (make-local-variable 'skk-kutouten-type) ;; (if (re-search-forward "$B!#(B" 10000 t) ;; (setq skk-kutouten-type 'en) ;; (setq skk-kutouten-type 'jp))))) (define-key skk-j-mode-map (kbd "M-,") 'skk-toggle-kutouten) ;; $B8+=P$78l$NJd40$r9T$&:]$N8uJd$NI=<(=g(B ;; (setq skk-comp-circulate t) ;; $B8+=P$78l$NJd40F0:n!JA08uJd$N=PNO!K(B Shift + TAB $B$rL58z2=$9$k(B ;; (setq skk-previous-completion-use-backtab nil) ;; $BF0E*$JJd40$r;H$&(B ;; (setq skk-dcomp-activate t) ;; $B"&$[(B-!-$B$s$H$&(B $B$N!V$s$H$&!W$N(B face ;; (set-face-foreground 'skk-dcomp-face "green") ;; $BF0E*Jd40$N2DH]$rH=Dj$9$k$h$j9bEY$J@_DjNc(B (setq skk-dcomp-activate #'(lambda () (and ;; -nw $B$G$OF0E*Jd40$r$7$J$$!#(B window-system ;; $B4pK\E*$K9TKv$N$H$-$N$_Jd40$9$k!#$?$@$79TKv$G$J$/$F$b8=:_$N(B ;; $B%]%$%s%H$+$i9TKv$^$G$NJ8;z$,6uGr$N$_$@$C$?$iJd40$9$k!#(B (or (eolp) (looking-at "[ \t]+$"))))) ;; $BF0E*Jd40$G8uJd$rJ#?tI=<($9$k(B $B!J(BXEmacs $B$G$O5!G=$7$^$;$s!K(B ;; (setq skk-dcomp-multiple-activate t ;; skk-dcomp-multiple-rows 10) ;;; $B"&$[(B*$B$s$H$&(B-!- ;;; $B$[(B $B$s$H$&(B ;;; $B$[(B $B$+$s(B ;;; $B$[(B $B$&$[$&(B ;; $B!V$[!W$N%U%'%$%9(B ;; (set-face-foreground 'skk-dcomp-multiple-face "COLOR") ;; $B!V$s$H$&!W!"!V$+$s!W!"!V$&$[$&!W$N%U%'%$%9(B ;; (set-face-foreground 'skk-dcomp-multiple-trailing-face "COLOR") ;; $BA*Br0LCV$N%U%'%$%9(B ;; (set-face-foreground 'skk-dcomp-multiple-selected-face "COLOR") ;; viper $B$HAH$_9g$o$;$F;H$&(B ;; (setq skk-use-viper t) ;; $B3NDj$K$O(B C-j $B$G$O$J$/!ZJQ49%-! ?< ??)) ;; $BNc(B 2) ? $B$OIaDL$KF~NO$7$?$$$+$i30$9(B ;; (setq skk-special-midashi-char-list '(?> ?<)) ;; $BNc(B 3) $BJ8;z%-!<$OIaDL$KF~NO$7$?$$$+$iB>$N%-!<$r;H$&(B ;; (setq skk-special-midashi-char-list nil) ;; (define-key skk-j-mode-map [muhenkan] 'skk-process-prefix-or-suffix) ;; @@ $B$+$JF~NO4XO"$N@_Dj(B ;; $BH>3Q%+%JF~NO%a%=%C%I$r;H$&(B ;; (setq skk-use-jisx0201-input-method t) ;; $B$+$JG[Ns%-!<%\!<%I$GF~NO$9$k(B ;; (setq skk-use-kana-keyboard t) ;; (when skk-use-kana-keyboard ;; ;; $B5l(B JIS $BG[Ns$r;H$&(B ;; ;; (setq skk-kanagaki-keyboard-type '106-jis) ;; ;; $B?F;X%7%U%H%(%_%e%l!<%7%g%s$r;H$&(B ;; (setq skk-kanagaki-keyboard-type 'omelet-jis) ;; ;; OASYS $BIw$N8eB`!&C%-!<$r;H$&(B ;; (setq skk-nicola-use-koyubi-functions t)) ;; Microsoft Windows $B$N(B IME $B$N$h$&$K%U%!%s%/%7%g%s%-!<$K$$$/$D$+$NJQ495!G=$r3d$jEv$F$k(B ;; conversion => skk-search-prog-list-{1-9,0} $B$r $B$+$J%-!<%\!<%IF~NOMQ$N@_Dj$K$J$k!#(B ;; nil => $B<+F0@_Dj$7$J$$!J<+J,$G9%$-$J@_Dj$,$G$-$k!K(B $B%G%U%)%k%H(B (setq skk-j-mode-function-key-usage 'conversion) ;; $BCm(B) $BI8=`$G$O0J2<$NJQ495!G=$,3d$jEv$F$i$l$^$9!#(B ;; [F5]$BC14A;z(B [F6]$BL5JQ49(B [F7]$B%+%?%+%J(B [F8]$BH>3Q%+%J(B [F9]$BA43Q%m!<%^(B [F10]$B%m!<%^(B ;; (setq skk-verbose t) $B$HJ;MQ$9$k$H>e5-$N3d$jEv$F>pJs$,%a%C%;!<%8$5$l$^$9!#(B ;; $B$+$J%b!<%I$K$*$$$F!"%b!<%IJQ99$rH<$o$J$/$H$b(B ;; ASCII $B?t;z$ND>8e$G$"$l$P!"D92;(B($B!<(B)$B$r(B `-' $B$K(B ;; $B6gE@(B($B!#(B)$B$r(B `.' $B$K(B ;; $BFIE@(B($B!"(B)$B$r(B `,' $B$K(B ;; JISX0208($BA43Q(B)$B?t;z$ND>8e$G$"$l$P!"D92;(B($B!<(B)$B$r(B `$B!](B' $B$K(B ;; $B6gE@(B($B!#(B)$B$r(B `$B!%(B' $B$K(B ;; $BFIE@(B($B!"(B)$B$r(B `$B!$(B' $B$K(B ;; (setq skk-use-auto-kutouten t) ;; @@ $BJQ49F0:n$ND4@0(B ;; $BAw$j2>L>$,87L)$K@5$7$$8uJd$rM%@h$7$FI=<($9$k(B ;; (setq skk-henkan-strict-okuri-precedence t) ;; $B<-=qEPO?$N$H$-!"M>7W$JAw$j2>L>$rAw$i$J$$$h$&$K$9$k(B ;; (setq skk-check-okurigana-on-touroku 'auto) ;; $BJQ49$N3X=,(B (require 'skk-study) ;;;; @@ $B8uJd$NI=<(J}K!(B ;; $BJQ49Cf$NJ8;zNs$r%O%$%i%$%H$7$J$$(B ;; (setq skk-use-face nil) (when skk-use-face ;; ;; $BJQ49J8;zNs$N?'$rJQ$($F$_$k(B ;; ;; $BCm(B) `skk-treat-candidate-appearance-function' $B$N@_Dj$,M%@h$5$l$^$9!#(B ;; (setq skk-henkan-face (skk-make-face 'DimGray/PeachPuff1)) ) ;; A S D F J K L $B$KE,MQ$9$k%U%'%$%9(B ;; (set-face-attribute 'skk-henkan-show-candidates-keys-face nil ;; :foreground "black" ;; :background white"") ;; $B4A;zJQ49$N8uJd$NI=<($O!"e$,(B non-nil $B$N>l9g$O!"5-:\$N=g$KM%@hE,MQ$5$l$^$9!#(B ;; 1. skk-show-inline ;; 2. skk-show-tooltip ;; 3. skk-show-candidates-always-pop-to-buffer ;; (4. echo area) ;; $BJQ498uJd$r%$%s%i%$%s$K(B $B!J(BXEmacs $B$G$O5!G=$7$^$;$s!K(B ;; nil => $BI=<($7$J$$(B ($B%G%U%)%k%H(B) ;; t => $BI=<($9$k(B ;; 'vertical => $B=D7?%$%s%i%$%s$KI=<($9$k(B ;; (setq skk-show-inline t) (when skk-show-inline ;; $BJQ498uJd$NAu>~$KJQ?t(B `skk-treat-candidate-appearance-function' $B$rMxMQ(B ;; $B$9$k$J$i$P!"(Bskk-inline-show-face $B$r(B nil $B$K@_Dj$9$k$3$H(B (setq skk-inline-show-face nil skk-inline-show-background-color "gray15" ;$B6v?t%i%$%s$NGX7J?'(B skk-inline-show-background-color-odd "gray20")) ;$B4q?t%i%$%s$NGX7J?'(B ;; $BJQ498uJd0lMw$HCme$H(B XEmacs 21.5 $B0J>e$G5!G=$7$^$9!#(B (setq skk-show-tooltip t) ;; ;; Tip $BIA2h$K(B pos-tip $B$rMxMQ$7$F$_$k(B ;; ;; http://www.emacswiki.org/emacs-en/PosTip ;; (require 'pos-tip) ;; (setq skk-tooltip-function ;; #'(lambda (tooltip-str) ;; (pos-tip-show tooltip-str nil nil nil 0))) ;; ;; Tip $BIA2h$K(B popup-tip $B$rMxMQ$7$F$_$k(B ;; ;; http://github.com/m2ym/auto-complete ;; (require 'popup) ;; (setq skk-tooltip-function ;; #'(lambda (tooltip-str) ;; (popup-tip tooltip-str))) (when skk-show-tooltip ;; tooltip $B$N%k%C%/%9$r;XDj$9$k!#(B ;; $BJ8;z$NA07J?'$HGX7J?'$NE,MQ$O!"2<5-$N=g$N>e0L$[$IM%@h$5$l$k!#(B ;; `skk-treat-candidate-appearance-function' ;; `skk-tooltip-face' ;; `skk-tooltip-parameters' ;; `tooltip-frame-parameters' ;; `tooltip' face (setq skk-tooltip-parameters '((background-color . "alice blue") (border-color . "royal blue") (foreground-color . "gray") ;`skk-tooltip-face' $B$,M%@h$5$l$k(B (internal-border-width . 3) ;$B6-3&@~$HJ8;z$H$N4V$NM>Gr(B )) ;; (setq skk-tooltip-face 'font-lock-doc-face) ; $BNc(B ;; Tooltip $BI=<(0LCV$ND4@0!#(BTooltip $B$NI=<(0LCV$O(B OS (Window System) $B$d(B ;; Emacs $B$N%P!<%8%g%s!"%U%)%s%H@_Dj$J$I=t!9$N1F6A$rl9g$N!"%^%&%9%]%$%s%?$N5sF0!#(B ;; follow => tip $B$N0LCV$K0\F0$9$k!#(B ;; avoid => $B%&%#%s%I%&$NC<$KB`Hr$9$k!#(B ;; avoid-maybe => $B%&%#%s%I%&>e$K$"$k%^%&%9%]%$%s%?$N$_B`Hr$9$k!#(B ;; banish => $B%&%#%s%I%&$NC<$KB`Hr$7$?$^$^5"$C$F$3$J$$!#(B ;; nil => $BB`Hr$7$J$$!#$3$N>l9g!"(Btip $B$N%F%-%9%H$H%^%&%9%]%$%s%?$,(B ;; $B=E$J$C$F$7$^$&$3$H$b$"$k!#(B (setq skk-tooltip-mouse-behavior 'avoid-maybe) ;; tooltip $BI=<($N:]$N%^%&%9%]%$%s%?$rJQ99$7$FM7$s$G$_$k(B ;; $BCm(B) $B$3$N@_Dj$O(B X Window System $B>e$N(B GNU Emacs $B$G$J$$$HMxMQ$G$-$^$;$s!#(B (defadvice skk-tooltip-show-at-point (around set-pointer activate) (let ((shape x-pointer-shape)) (require 'avoid) (mouse-avoidance-set-pointer-shape (if (ad-get-arg 1) x-pointer-pencil x-pointer-hand1)) (unwind-protect ad-do-it (mouse-avoidance-set-pointer-shape shape)))) ) ;; $BJQ498uJd$rJL%&%$%s%I%&$KI=<($9$k(B ;; nil => $BJQ498uJd$r%(%3!<%(%j%"$KI=<($9$k(B ($B%G%U%)%k%H(B) ;; Non-nil => *$B8uJd(B*$B%P%C%U%!(B $B$r(B pop-to-buffer $B$9$k!#(B ;; (setq skk-show-candidates-always-pop-to-buffer t) ;; *$B8uJd(B*$B%P%C%U%!(B $B$NGX7J?'(B ;; (setq skk-candidate-buffer-background-color "grey90" ;; skk-candidate-buffer-background-color-odd "grey80") ;; *$B8uJd(B*$B%P%C%U%!(B $B$N(B fringe $B$r>C$9(B ;; (setq skk-candidate-buffer-display-fringes nil) ;; @@ $B8uJdI=<($NAu>~!J%U%'%$%9!K$K4X$9$k9bEY$J@_Dj(B ;; $BCm(B1) skk-emacs-*-face $B$O(B GNU Emacs $B$K8B$C$FDj5A$5$l$k(B face $B$G$9!#(B ;; XEmacs $B$G$OJL$NB8:_$9$k(B face $B$KCV$-49$($F$/$@$5$$!#(B ;; ;; $BCm(B2) $B8uJd$N8D?M<-=q$X$NEPO?$K$*$$$F$b!"(B`skk-update-jisyo-function' $B$r(B ;; $B@_Dj$9$k$3$H$GF1MM$N%+%9%?%^%$%:$,$G$-$^$9!#!V8D?M<-=q$K4X$9$k@_Dj!W$N(B ;; $BNc$r$4Mw$/$@$5$$!#(B (setq skk-treat-candidate-appearance-function #'(lambda (candidate listing-p) (let* ((value (skk-treat-strip-note-from-word candidate)) (cand (car value)) ;$B8uJd(B (note (cdr value)) ;$BCm$N%j%9%H$r;XDj$7$^$9!#%U%!%$%k$N%3!<%I7O$,(B ;; `skk-jisyo-code' $B$H0[$J$k%U%!%$%k$N>l9g$O!"%U%!%$%kL>$NBe$o$j$K(B ;; ("$B%U%!%$%kL>(B" . $B%3!<%I7O(B) $B$N%Z%"$r;XDj$9$k$3$H$,?d>)$5$l$^$9!#(B ;; $B>e5-$N(B SKK-JISYO.JIS3_4 $B$NNc$r$4Mw$/$@$5$$!#(B ;; $BCm(B2) `skk-search-prog-list' $B$rl9g$O$3$N5!G=$N(B ;; $BF0:n$OJ]>Z$5$l$^$;$s!#(B ;; $B0[BN;z$N8uJd$rI=<($9$k(B ;; http://mail.ring.gr.jp/skk/200303/msg00071.html ;; (setq skk-itaiji-jisyo "/usr/share/skk/SKK-JISYO.itaiji") ;; look $B%3%^%s%I$r;H$C$?8!:w$r9T$&(B (setq skk-use-look t) (when skk-use-look ;; look $B$,8+$D$1$?8l$r8+=P$78l$H$7$F8!:w$9$k(B (setq skk-look-recursive-search t) ;; ispell $B$r(B look $B$H0l=o$K;H$&$N$O$d$a$k(B (setq skk-look-use-ispell nil) ;; look $B$KEO$9%3%^%s%I%i%$%s%*%W%7%g%s$N@_Dj!#Jd40;~$H8!:w;~$=$l$>$l$K(B ;; $B$D$$$F@_Dj$G$-$k!#(B ;; look $B$G(B case $B$r8+$k$H$-$O!"$=$l@lMQ$N<-=q$r(B sort $B%3%^%s%I$G:n$kI,MW(B ;; $B$,$"$k(B (look $B$N0z?t(B -d, -f $B$O(B sort $B$N0z?t(B -d, -f $B$H0lCW$5$;$F$*$/I,(B ;; $BMW$,$"$k(B)$B!#(B ;; (*) $BJd40;~$K$O0z?t(B -d $B$r;XDj$9$k$H(B dcomp $B$H$NJ;MQ;~$KLdBj$"$k$3$H$,(B ;; $BJs9p$5$l$F$$$k$?$a!"(B-d $B$r;XDj$7$J$$$3$H$r$*4+$a$7$^$9!#(B (setq skk-look-completion-arguments "%s /usr/share/dict/words") (setq skk-look-conversion-arguments "-df %s /usr/share/dict/words") ;; `skk-abbrev-mode' $B$G(B skk-look $B$r;H$C$?8!:w$r$7$?$H$-$K3NDj>pJs$r(B ;; $B8D?M<-=q$K5-O?$7$J$$$h$&$K$9$k(B (add-hook 'skk-search-excluding-word-pattern-function ;; KAKUTEI-WORD $B$r0z?t$K$7$F%3!<%k$5$l$k$N$G!"ITMW$G$b0z?t$r3Q%+%?%+%J$N8uJd$r6&$K2C$($k(B ;; (setq skk-search-katakana 'jisx0201-kana) ;; $BCm(B) `skk-search-prog-list' $B$rl9g$O$3$N5!G=$N(B ;; $BF0:n$OJ]>Z$5$l$^$;$s!#(B ;; $B%59TJQ3J3hMQ$NF0;l$bAw$j$"$jJQ49=PMh$k$h$&$K$9$k(B ;; (setq skk-search-sagyo-henkaku t) ;; $BCm(B) `skk-search-prog-list' $B$rl9g$O$3$N5!G=$N(B ;; $BF0:n$OJ]>Z$5$l$^$;$s!#(B ;; $B<-=q8!:w$K4X$9$k9bEY$J@_Dj(B -- ;; $B%f!<%6%*%W%7%g%s$KMj$i$:8!:wJ}K!$H8!:w=g$r<+J,$G@)8f$9$kJ}K!(B ;; (setq skk-search-prog-list ;; '(;; 0. $B3NDj<-=q(B ;; (skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t) ;; ;; $BCm(B) $B3NDjJQ495!G=$r;H$&$H$-$K$O>e5-@_Dj$7$^$9!#(B ;; ;; $B3NDjJQ495!G=$K$D$$$F$O(B info $B$r;2>H$7$F$/$@$5$$!#(B ;; ;; 1. $B8D?M<-=q(B ;; (skk-search-jisyo-file skk-jisyo 0 t) ;; ;; 2. list $B$NA0J}$KCV$/$Y$-5!G=(B ;; (skk-abbrev-search) ;; (skk-look) ;; (skk-okuri-search) ;; ;; 3. $B0J2<$KD>@\8!:w$7$?$$<-=q$r8!:w=g$KNs5s$9$k(B ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.L" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.JIS2" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.JIS3_4" . euc-jisx0213) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.assoc" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.edict" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.geo" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.hukugougo" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.jinmei" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.law" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.okinawa" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.propernoun" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.pubdic+" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.station" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.zipcode" . euc-jp) 10000) ;; (skk-search-jisyo-file ;; '("/usr/share/skk/SKK-JISYO.office.zipcode" . euc-jp) 10000) ;; ;; 4. $B$=$NB>$N8!:w@\@_Dj$9$k$3$H$O$*4+$a$7$^$;$s!#<+J,$,2?$r$7$h$&$H$7$F$$$k$+M}2r$7(B ;; $B$F$$$k>l9g$N$_@_Dj$7$F$/$@$5$$!#(B ;; $BC14A;zJQ49$r9T$&(B $B"&$h$_(B@ ;; DDSKK 14.2 $B$+$i$OFCCJ$N@_Dj$NI,MW$J$7$KI8=`$GC14A;zJQ49$,9T$($^$9!#(B (set-face-attribute 'skk-tankan-face nil :foreground "yellow" :height 150) (set-face-foreground 'skk-tankan-radical-name-face "gray40") ;; @@ $B8D?M<-=q$K4X$9$k@_Dj(B ;; $BJ#?t$N(B Emacsen $B$r5/F0$7$F8D?M<-=q$r6&M-$9$k(B (setq skk-share-private-jisyo t) ;; 10 $BJ,J|CV$9$k$H8D?M<-=q$,<+F0E*$KJ]B8$5$l$k@_Dj(B (defvar skk-auto-save-jisyo-interval 600) (defun skk-auto-save-jisyo () (skk-save-jisyo) ;; skk-bayesian.el $B$r;H$C$F$$$J$1$l$P0J2<$N(B 2 $B9T$O%3%a%s%H%"%&%H(B ;; (skk-bayesian-save-history) ;; (skk-bayesian-corpus-save) ) (run-with-idle-timer skk-auto-save-jisyo-interval skk-auto-save-jisyo-interval 'skk-auto-save-jisyo) ;; (cancel-function-timers 'skk-auto-save-jisyo) ;; $BC18lEPO?!?C18l:o=|$N$?$S$K8D?M<-=q$rJ]B8$9$k(B ;; (setq skk-save-jisyo-instantly t) ;; $B8D?M<-=q$NJ8;z%3!<%I$r;XDj$9$k(B ;; (setq skk-jisyo-code 'utf-8) ;; $BCm(B) $B$3$N@_Dj$O5$$r$D$1$J$$$H<-=q$N8!:w$,$G$-$J$/$J$j$^$9$N$G==J,M}(B ;; $B2r$7$F$+$i9T$C$F$/$@$5$$!#(B `skk-jisyo-code' $B$O8D?M<-=q$NFI$_=q$-$N(B ;; $BB>!"(BL $B<-=q$J$I$NFI$_9~$_%3!<%I$b7h$a$F$$$k1F6ANO$N6/$$JQ?t$G$9!#(B ;; $B$3$N@_Dj$r$7$?>l9g$O!"$^$:8D?M<-=q$r>e5-$N%3!<%I$KJQ49$7$J$1$l$P(B ;; $B$$$1$^$;$s!#$=$N>e$G!"$5$i$K0J2<$N$$$:$l$+$NBP=h$r$9$kI,MW$,$"$j(B ;; $B$^$9!#(B ;; ;; $BJ}?K(B 1) Emacs $B$N%P%C%U%!$KFI$_9~$`<-=q$rA4$F(B `skk-jisyo-code' $B$HF1$8(B ;; $BJ8;z%3!<%I$KJQ49$9$k(B ;; $BJ}?K(B 2) `skk-search-prog-list' $B$NMWAG$rA4$FJ8;z%3!<%I;XDj$K=q$-D>$9!#(B ;; $BNc$($P(B ;; ;; (setq skk-search-prog-list ;; '((skk-search-jisyo-file skk-jisyo 0 t) ;; [...] ;; (skk-search-jisyo-file (cons skk-large-jisyo 'euc-jp) 10000) ;; [...] ;; )) ;; ;; $B$J$*!"<-=q%5!<%P$H$NDL?.$N:]$NJ8;z%3!<%I$J$I$O5$$K$9$kI,MW$O$"$j$^$;$s!#(B ;; ;; $B$3$N$3$H$K4X$7$F$O>e5-!V<-=q8!:w$K4X$9$k9bEY$J@_Dj!W$NItJ,$b;2>H$9(B ;; $B$k$3$H$r$*4+$a$7$^$9!#(B ;; $B8D?M<-=q$N99?7J}K!$K4X$9$k@_Dj(B ;; ;; $B0J2<$OCml9g$K8D?M<-=q$+$iCm$K$b?'!9$J%+%9%?%^%$%:$,9M$($i$l$^$9!#(B (setq skk-update-jisyo-function #'(lambda (word &optional purge) (if purge (skk-update-jisyo-original word purge) (let* ((pair (skk-treat-strip-note-from-word word)) (cand (car pair)) (note (cdr pair))) (when (and (stringp note) (> (length note) 8)) ;; $BCmC$7$FEPO?$9$k(B (setq note nil)) (setq word (if (stringp note) (concat cand ";" note) cand)) (skk-update-jisyo-original word))))) ;; @@ $B<-=qEPO?$K4X$9$k@_Dj(B ;; $B6/@)E*$K<-=qEPO?%b!<%I$KF~$k%-!<%-%c%i%/%?(B ;; (setq skk-force-registration-mode-char ?.) ;; $B!V"-<-=qEPO?Cf"-!W$KE,MQ$9$k%U%'%$%9(B ;; skk-jisyo-registration-badge-face ;; experimental/skk-search-web.el $B$r%$%s%9%H!<%k$9$k$H!"(B ;; $B<-=qEPO?%b!<%I$K0\$C$?$H$-$N=i4|CM$K(B Google $B%5%8%'%9%H$rMxMQ$G$-$^$9(B ;; (setq skk-read-from-minibuffer-function ;; (lambda () ;; (car (skk-google-suggest skk-henkan-key)))) ;; @@ SKK abbrev mode ;; $B8+=P$78l$NJd40$K$*$$$F(B Lisp $B%7%s%\%k$bJd40$9$k(B ;; (add-to-list 'skk-completion-prog-list ;; '(skk-comp-lisp-symbol) t) ;; @@ server completion ;; (add-to-list 'skk-search-prog-list ;; '(skk-server-completion-search) t) ;; (add-to-list 'skk-completion-prog-list ;; '(skk-comp-by-server-completion) t) ;; @@ $B$=$NB>$$$m$$$m(B ;; $B$$$D$G$b$I$3$G$bNN0hA*Br$7$F(B Wikipedia/Wiktionary $B$rD4$Y$k!#(B ;; (global-set-key "\M-i" 'skk-annotation-lookup-region-or-at-point) ;; $BCm(B) $B4pK\7A$N(B ($B3hMQ7A(B/$BJ#?t7A$J$I$G$J$$(B) $B1QC18l$J$iNN0h$rA*Br$;$:$H$b(B M-i ;; $B$@$1$GD4$Y$k$3$H$,2DG=$G$9!#Nc$($P(B en.wiktionary $B$r;H$&$H!V$I$3$G$b(B ;; $B1Q1Q<-E5!W$N$h$&$K;H$($FJXMx$G$9!#(B skk-annotation-other-sources ;; $B$N@_Dj$,%G%U%)%k%HCM$G$"$l$P!"1QC18l$K%+!<%=%k$rCV$$$F(B M-3 M-i $B$G>o(B ;; $B$K(B en.wiktionary $B$rD4$Y$k$3$H$,$G$-$^$9(B (Apple OS X $B$G$O(B M-4 M-i)$B!#(B ;; Tips $B$H$$$($k$b$N$G$O$J$$$,!"(B`lisp-interaction-mode' $B$K$*$$$F(B "C-j" ;; (`eval-print-last-sexp') $B$rMxMQ$9$k?M$K$H$C$F$O!"1Q?t%b!<%I$K$*$$$F(B ;; "C-j" $B$K$h$C$F(B $B$+$J%b!<%I$KF~$k;EMM$O;H$$$E$i$$!#(B ;; (defadvice skk-latin-mode (after no-latin-mode-in-lisp-interaction activate) ;; "`lisp-interaction-mode' $B$K$*$$$F1Q?t%b!<%I$r2sHr$9$k!#(B" ;; (when (eq major-mode 'lisp-interaction-mode) ;; (skk-mode-off))) ;; $B"#%b!<%I$N$^$^(B C-j $B$rM-8z$H$9$k(B (defun skk-C-j-key (arg) (interactive "P") (let ((enable-modes '(lisp-interaction-mode ; eval-print-last-sexp emacs-lisp-mode ; newline-and-indent ;; and more. ))) (cond ((and (null (skk-in-minibuffer-p)) (null skk-henkan-mode) (member major-mode enable-modes)) (skk-emulate-original-map arg)) (t (skk-kakutei arg))))) (add-to-list 'skk-rom-kana-rule-list '(skk-kakutei-key nil skk-C-j-key)) ;; $B$h$/;H$&1QC18l$r"#%b!<%I$N$^$^$G$b(B (add-to-list 'skk-rom-kana-rule-list '("http" nil "http://")) ;; $BF|K\8l$H1Q8l$N4V$K6uGr$r<+F0A^F~$9$k(B ;; http://hins11.jugem.jp/?eid=47 ;; org-mode $B$NI=Cf$G$N(B return ;; http://mail.ring.gr.jp/skk/201401/msg00001.html (defadvice org-return (around skk-in-org-table activate) "org-mode $B$NI=$NCf$G$b(B skk $B$,;H$($k$h$&$K$9$k(B." (cond ((and (org-at-table-p) skk-henkan-mode) (skk-kakutei)) (t ad-do-it))) ;;; dot.skk ends here ddskk-15.2/etc/skk.xpm0000644000570400056700000000110010021605163014655 0ustar kitamotoopenlab/* XPM */ static char *ddskk[] = { /* width height num_colors chars_per_pixel */ " 14 14 12 1", /* colors */ ". c none", "# c #4040f8", "a c #0000f8", "b c #8080f8", "c c #b8bcf8", "d c #00fc00", "e c #008080", "f c #0040b8", "g c #00bc40", "h c #b8fcb8", "i c #80fc80", "j c #40fc40", /* pixels */ ".aaa..........", "a.............", ".aa..a..a.....", "...a.a.a......", "aaa..aa...a..a", "dddddadaddadad", ".ddddaddadaad.", "..ddddddddada.", "...ddddddda..a", "...dddddddd...", "....dddddd....", "....ddddd.....", ".....ddd......", "......d......." }; ddskk-15.2/experimental/0000755000570400056700000000000012434434722015304 5ustar kitamotoopenlabddskk-15.2/experimental/dbm/0000755000570400056700000000000012434434722016046 5ustar kitamotoopenlabddskk-15.2/experimental/dbm/README.dbm0000644000570400056700000000746307011166445017500 0ustar kitamotoopenlab-*- text -*- skk-dbm.el $B$K$D$$$F(B $Date: 1999/11/07 03:08:21 $ $BCfEg44IW(B $Id: README.dbm,v 1.1 1999/11/07 03:08:21 minakaji Exp $ o skk-dbm.el $B$H$O!"(Bskkserv $B$r2p$9$k%5!<%A$NBeBX$N<-=q%"%/%;%9J}K!$rDs6!(B $B$7$^$9!#%5!<%P!<$r2p$5$:$K(B XEmacs $B$N5!G=$r;HMQ$7!"D>@\(B dbm (berkeley-db, gdbm or ndbm) $B%G!<%?%Y!<%9%U%!%$%k$r%*!<%W%s$7$F8!:w$7$^(B $B$9!#(B o XEmacs-21.2-b8 $B$GF0:n3NG'$7$F$$$^$9!#(Bversion $B$N>\:Y$OCN$i$J$$$N$G$9$,!"(B database $B5!G=$r;}$C$F$$$k(B XEmacs $B$G$J$$$HF0$-$^$;$s!#(BOther Emacsen $B$r(B $B$4;HMQ$NJ}$O$"$-$i$a$F2<$5$$!#(B o --with-database $B%*%W%7%g%s$rIU$1$F(B configure $B$rE*$K%5%]!<%H$5$l$F$$(B $B$^$9!#(Bberkeley-db $B$H(B gnudbm ($B$b$7$/$O(B dbm) $B$OF1;~;XDj$,$G$-$^$9!#(B $B;d$O!"8e=R$N(B gdbm $BBP1~%Q%C%A$rEv$F$?8e!"(B ./configure --with-database=gnudbm,berkdb $B$N$h$&$K$7$F;XDj$7$F(B configure $B$rAv$i$;$F$$$^$9!#(B o $B%G!<%?%Y!<%9%i%$%V%i%j$H$7$F(B gdbm $B$r;H$&>l9g$G!"%G!<%?%Y!<%9$r(B gdbm $B7A(B $B<0$H$7$?$$$H$-$O!"(BXEmacs 21.2b8 $B$,(B gdbm $B%U%!%$%k$KD>@\%"%/%;%9$G$-$J$$(B (libgdbm $B$r%j%s%/$7$F$$$J$,$i(B libndbm $B8_494X?t$7$+;HMQ$7$J$$$N$G(B .dir, .pag $B$r3HD%;R$H$9$k%U%!%$%k$7$+3+$1$J$$(B) $B$3$H$+$i!"E:IU$N(B diff-to-xemacs-21.2.8 $B$rEv$F$F:F%3%s%Q%$%k$9$kI,MW$,$"$j$^$9(B ($B$^$!!"2?(B $B$HLLE]$J(B...$B$-$C$HC/$b;H$o$J$$(B...)$B!#(B ** berkeley-db $B%U%!%$%k$@$1$G$"$l$P%Q%C%A$rEv$F$kI,MW$O$"$j$^$;$s!#(B** o ndbm $B$G;H$($k$+$I$&$+$OL$3NG'$G$9!#(B o $B2?8N$+!"(Bmakedbmdic (pskkserv $BE:IU$N<-=q(B make tool) $B$G:n$C$?(B gdbm/db $B<-=q$OFI$a$^$;$s(B ($B62$i$/(B coding-system $B7O$NLdBj$G$7$g$&(B)$B!#(Bskk-dbm.el $BFb$K$"$k(B skk-dbm-make-jisyo $B4X?t$r;H$C$F<-=q$r:n$k$H0l1~@5>o$K8!:w$O$G(B $B$-$F$$$k$h$&$G$9!#(B $B>e5-$NMWNN$G:n$C$?(B XEmacs $B$G(B (skk-dbm-make-jisyo "/usr/local/share/skk/SKK-JISYO.L" "SKK-JISYO.L.db" 'berkeley-db 'hash ) $B$N$h$&$K$7$F!"(BSKK-JISYO.L.db ($B$"$k$$$O(B skk-dbm-make-jisyo $B$N%*%W%7%g%s(B $B$rJQ99$7$F(B SKK-JISYO.gdbm or SKK-JISYO.L.dir (& SKK-JISYO.L.pag) $B$r:n$C(B $B$F2<$5$$!#%^%7%s$NB.$5$H<-=q$NBg$-$5$K$b$h$j$^$9$,!"(BMMX Pentium 166MHz $B$N%^%7%s$G(B 3,200KB $B$[$I$N<-=q$r(B gdbm $B2C9)$9$k$N$KLs(B 1 $B;~4V(B (!) $B$+$+$j$^$7$?!#(Bberkeley-db $B$@$H@53N$K7W$C$F$$$^$;$s$,!"2?8N$+(B 20 $B?t(B $BJ,$G:n@.$G$-$?$h$&$K;W$$$^$9!#(B $B$A$J$_$K(B skk-dbm.el $B$O%P%$%H%3%s%Q%$%k$7$?$b$N$r%m!<%I$7$F(B skk-dbm-make-jisyo $B$r/$7$G$bM>7W$J;~4V$r?)$o$:$K:Q$_$^$9!#(B o $Bl9g$O!"(Bdir $B$d(B pag $B$H$$$C$?3HD%;R$O>J$$$F;XDj$9$l$PNI$$$O$:$G$9(B)$B!#(B $B$^$?!"2<5-$N$h$&$K@_Dj$9$k$H!"8D?M<-=q$b%G!<%?%Y!<%92=$7$F(B ($B8D?M<-=q$N(B $B%G!<%?%Y!<%92=$O<+F02=$5$l$F$$$^$9(B) $B8!:w$r9T$J$&$3$H$,$G$-$^$9!#(B (setq skk-search-prog-list '((skk-dbm-search-jisyo-database skk-dbm-jisyo) (skk-dbm-search-jisyo-database skk-dbm-large-jisyo 'nomsg) )) o diff-to-xemacs-21.2.8 $B$K$D$$$F$O!"(Bxemacs-beta@xemacs.org $B$G5DO@$5$l!"(B $B$^$?!"0l1~6cL#$5$l$?>e$G(B xemacs-patches@xemacs.org $B$KEj9F$7$F$"$j$^$9(B $B$,!"(BXEmacs $B$K http://www.asahi-net.or.jp/~gy2m-nkjm/ ddskk-15.2/experimental/dbm/diff-to-xemacs-21.2.80000644000570400056700000006577007011166451021340 0ustar kitamotoopenlab*** xemacs-21.2.8.orig/src/config.h.in Sun Dec 6 01:55:24 1998 --- xemacs-21.2.8/src/config.h.in Sat Jan 2 08:49:48 1999 *************** *** 340,345 **** --- 340,346 ---- /* Compile in support for DBM databases? May require libgdbm or libdbm. */ #undef HAVE_DBM + #undef HAVE_GDBM /* Compile in support for Berkeley DB style databases? May require libdb. */ #undef HAVE_BERKELEY_DB *** xemacs-21.2.8.orig/configure.in Sun Dec 27 13:13:14 1998 --- xemacs-21.2.8/configure.in Mon Jan 4 17:47:08 1999 *************** *** 3491,3517 **** test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \ != "no no no" && AC_CHECKING(for database support) dnl Check for ndbm.h, required for either kind of DBM support. ! if test "$with_database_gnudbm $with_database_dbm" != "no no"; then AC_CHECK_HEADER(ndbm.h, [:], [ ! test "$with_database_gnudbm" = "yes" -o \ ! "$with_database_dbm" = "yes" && \ XE_DIE("Required DBM support cannot be provided.") ! with_database_gnudbm=no with_database_dbm=no]) fi ! dnl Check for DBM support in libgdbm. if test "$with_database_gnudbm" != "no"; then ! AC_CHECK_LIB(gdbm, dbm_open, [ ! with_database_gnudbm=yes with_database_dbm=no libdbm=-lgdbm], [ ! if test "$with_database_gnudbm" = "yes"; then XE_DIE("Required GNU DBM support cannot be provided.") - fi with_database_gnudbm=no]) fi dnl Check for DBM support in libc and libdbm. ! if test "$with_database_dbm" != "no"; then AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [ AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [ test "$with_database_dbm" = "yes" && \ --- 3491,3526 ---- test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \ != "no no no" && AC_CHECKING(for database support) + dnl Check for gdbm.h, required for GDBM support. + if test "$with_database_gnudbm" != "no"; then + AC_CHECK_HEADER(gdbm.h, [:], [ + test "$with_database_gnudbm" = "yes" && \ + XE_DIE("Required GNU DBM support cannot be provided.") + with_database_gnudbm=no]) + fi + dnl Check for ndbm.h, required for either kind of DBM support. ! dnl if test "$with_database_dbm" != "no" -a "$with_database_gnudbm" != "yes" ; then ! if test "$with_database_dbm" != "no" ; then AC_CHECK_HEADER(ndbm.h, [:], [ ! test "$with_database_dbm" = "yes" && \ XE_DIE("Required DBM support cannot be provided.") ! with_database_dbm=no]) fi ! dnl Check for GDBM support in libgdbm. if test "$with_database_gnudbm" != "no"; then ! AC_CHECK_LIB(gdbm, dbm_open, [with_database_gnudbm=yes libdbm=-lgdbm], [ ! test "$with_database_gnudbm" = "yes" && \ XE_DIE("Required GNU DBM support cannot be provided.") with_database_gnudbm=no]) fi + + if test "$with_database_gnudbm" == "yes" -a "$with_database_dbm" != "no"; then + with_database_dbm=yes dnl Check for DBM support in libc and libdbm. ! elif test "$with_database_dbm" != "no"; then AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [ AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [ test "$with_database_dbm" = "yes" && \ *************** *** 3519,3528 **** with_database_dbm=no])]) fi ! dnl Tell make about the DBM support we detected. test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS) ! test "$with_database_gnudbm" = "yes" -o \ ! "$with_database_dbm" = "yes" && \ AC_DEFINE(HAVE_DBM) dnl Check for Berkeley DB. --- 3528,3543 ---- with_database_dbm=no])]) fi ! ! dnl Tell make about the GDBM support we detected. test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS) ! test "$with_database_gnudbm" = "yes" && \ ! AC_DEFINE(HAVE_GDBM) ! ! dnl Tell make about the DBM support we detected. ! test -n "$libdbm" && test "$with_database_gnudbm" != "yes" && \ ! XE_PREPEND("$libdbm", LIBS) ! test "$with_database_dbm" = "yes" && \ AC_DEFINE(HAVE_DBM) dnl Check for Berkeley DB. *** xemacs-21.2.8.orig/src/database.c Sun Dec 27 13:13:00 1998 --- xemacs-21.2.8/src/database.c Mon Jan 4 17:40:06 1999 *************** *** 61,66 **** --- 61,73 ---- Lisp_Object Qhash, Qbtree, Qrecno, Qunknown; #endif /* HAVE_BERKELEY_DB */ + #ifdef HAVE_GDBM + #include + Lisp_Object Qgdbm; + Lisp_Object Qcachesize; + Lisp_Object Qfastmode; + #endif /* HAVE_GDBM */ + #ifdef HAVE_DBM #include Lisp_Object Qdbm; *************** *** 98,103 **** --- 105,114 ---- int access_; int dberrno; int live_p; + #ifdef HAVE_GDBM + GDBM_FILE gdbm_handle; + int access_mark; + #endif #ifdef HAVE_DBM DBM *dbm_handle; #endif *************** *** 137,142 **** --- 148,157 ---- #endif #ifdef HAVE_DBM db->dbm_handle = NULL; + db->access_mark = 0; + #endif + #ifdef HAVE_GDBM + db->gdbm_handle = NULL; #endif db->access_ = 0; db->mode = 0; *************** *** 161,172 **** { char buf[64]; Lisp_Database *db = XDATABASE (obj); ! if (print_readably) error ("printing unreadable object #", db->header.uid); write_c_string ("#fname, printcharfun, 0); sprintf (buf, "\" (%s/%s/%s) 0x%x>", (char *) string_data (XSYMBOL (db->funcs->get_type (db))->name), (char *) string_data (XSYMBOL (db->funcs->get_subtype (db))->name), --- 176,214 ---- { char buf[64]; Lisp_Database *db = XDATABASE (obj); ! #ifdef HAVE_GDBM ! Lisp_Object type; ! #endif if (print_readably) error ("printing unreadable object #", db->header.uid); write_c_string ("#fname, printcharfun, 0); + #ifdef HAVE_GDBM + type = db->funcs->get_type (db); + if (NILP (type) ||EQ (type, Qgdbm)) + sprintf (buf, "\" (%s/%s/%s) 0x%x>", + (char *) string_data (XSYMBOL (db->funcs->get_type (db))->name), + (char *) string_data (XSYMBOL (db->funcs->get_subtype (db))->name), + (!DATABASE_LIVE_P (db) ? "closed" : + (db->access_ == GDBM_READER) ? "readonly" : + (db->access_ == (GDBM_WRITER|GDBM_FAST)) ? "readwrite(fastmode)" : + (db->access_ == GDBM_WRITER) ? "readwrite" : + (db->access_ == (GDBM_WRCREAT|GDBM_FAST)) ? "readwrite(create, fastmode)" : + (db->access_ == GDBM_WRCREAT) ? "readwrite(create)" : + (db->access_ == (GDBM_NEWDB|GDBM_FAST)) ? "create(force, fastmode)" : + /* (db->access_ == GDBM_NEWDB) ? "create(force)" ), */ + "create(force)" ), + db->header.uid); + else + sprintf (buf, "\" (%s/%s/%s) 0x%x>", + (char *) string_data (XSYMBOL (db->funcs->get_type (db))->name), + (char *) string_data (XSYMBOL (db->funcs->get_subtype (db))->name), + (!DATABASE_LIVE_P (db) ? "closed" : + (db->access_ & O_WRONLY) ? "writeonly" : + (db->access_ & O_RDWR) ? "readwrite" : "readonly"), + db->header.uid); + #else sprintf (buf, "\" (%s/%s/%s) 0x%x>", (char *) string_data (XSYMBOL (db->funcs->get_type (db))->name), (char *) string_data (XSYMBOL (db->funcs->get_subtype (db))->name), *************** *** 174,179 **** --- 216,224 ---- (db->access_ & O_WRONLY) ? "writeonly" : (db->access_ & O_RDWR) ? "readwrite" : "readonly"), db->header.uid); + + #endif /* HAVE_GDBM */ + write_c_string (buf, printcharfun); } *************** *** 354,361 **** --- 399,659 ---- dbm_closeit, dbm_lasterr }; + + static Lisp_Object + dbm_open_database (Lisp_Object file, Lisp_Object access_, Lisp_Object mode) + { + int modemask; + int accessmask = 0; + char *filename; + Lisp_Database *db = NULL; + Lisp_Object retval; + DBM *dbase; + + GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); + + if (NILP (access_)) + accessmask = O_RDWR | O_CREAT; + else + { + char *acc; + CHECK_STRING (access_); + acc = (char *) XSTRING_DATA (access_); + + if (strchr (acc, '+')) + accessmask |= O_CREAT; + + { + char *rp = strchr (acc, 'r'); + char *wp = strchr (acc, 'w'); + if (rp && wp) accessmask |= O_RDWR; + else if (wp) accessmask |= O_WRONLY; + else accessmask |= O_RDONLY; + } + } + + if (NILP (mode)) + modemask = 0755; /* rwxr-xr-x */ + else + { + CHECK_INT (mode); + modemask = XINT (mode); + } + + /* Should check directory is writeable or not in case O_RDWR or + O_WRONLY and/or O_CREAT is set. */ + + dbase = dbm_open (file, accessmask, modemask); + if (!dbase) + return Qnil; + + db = allocate_database (); + db->dbm_handle = dbase; + db->funcs = &ndbm_func_block; + db->live_p = 1; + db->fname = file; + db->mode = modemask; + db->access_ = accessmask; + + XSETDATABASE (retval, db); + return retval; + } + #endif /* HAVE_DBM */ + #ifdef HAVE_GDBM + static void + gdbm_map (Lisp_Database *db, Lisp_Object func) + { + datum keydatum, valdatum; + Lisp_Object key, val; + + for (keydatum = gdbm_firstkey (db->gdbm_handle); + keydatum.dptr != NULL; + keydatum = gdbm_nextkey (db->gdbm_handle, keydatum)) + { + valdatum = gdbm_fetch (db->gdbm_handle, keydatum); + key = make_string ((unsigned char *) keydatum.dptr, keydatum.dsize); + val = make_string ((unsigned char *) valdatum.dptr, valdatum.dsize); + call2 (func, key, val); + } + db->access_mark = 1; + } + + static Lisp_Object + gdbm_get (Lisp_Database *db, Lisp_Object key) + { + datum keydatum, valdatum; + + keydatum.dptr = (char *) XSTRING_DATA (key); + keydatum.dsize = XSTRING_LENGTH (key); + valdatum = gdbm_fetch (db->gdbm_handle, keydatum); + db->access_mark = 1; + + return (valdatum.dptr + ? make_string ((unsigned char *) valdatum.dptr, valdatum.dsize) + : Qnil); + } + + static int + gdbm_put (Lisp_Database *db, + Lisp_Object key, Lisp_Object val, Lisp_Object replace) + { + int ret = 0; + datum keydatum, valdatum; + + valdatum.dptr = (char *) XSTRING_DATA (val); + valdatum.dsize = XSTRING_LENGTH (val); + keydatum.dptr = (char *) XSTRING_DATA (key); + keydatum.dsize = XSTRING_LENGTH (key); + db->access_mark = 1; + ret = gdbm_store (db->gdbm_handle, keydatum, valdatum, + NILP (replace) ? GDBM_INSERT : GDBM_REPLACE); + return ((ret == -1) || (ret == 1)) ? 0 : 1; + } + + static int + gdbm_remove (Lisp_Database *db, Lisp_Object key) + { + datum keydatum; + + keydatum.dptr = (char *) XSTRING_DATA (key); + keydatum.dsize = XSTRING_LENGTH (key); + db->access_mark = 1; + return gdbm_delete (db->gdbm_handle, keydatum); + } + + static Lisp_Object + gdbm_type (Lisp_Database *db) + { + return Qgdbm; + } + + static Lisp_Object + gdbm_subtype (Lisp_Database *db) + { + return Qnil; + } + + static Lisp_Object + gdbm_lasterr (Lisp_Database *db) + { + return build_ext_string (gdbm_strerror(gdbm_errno), FORMAT_NATIVE); + } + + static void + gdbm_closeit (Lisp_Database *db) + { + if (db->gdbm_handle) + { + gdbm_close (db->gdbm_handle); + db->gdbm_handle = NULL; + } + } + + static DB_FUNCS gdbm_func_block = + { + gdbm_subtype, + gdbm_type, + gdbm_get, + gdbm_put, + gdbm_remove, + gdbm_map, + gdbm_closeit, + gdbm_lasterr + }; + + static Lisp_Object + gdbm_open_database (Lisp_Object file, Lisp_Object access_, Lisp_Object mode) + { + /* GDBM flags (from gdbm info), + if `flags' is set to; + + GDBM_READER, the user wants to just read the database and any + call to `gdbm_store' or `gdbm_delete' will fail. + Many readers can access the database at the same + time. + + GDBM_WRITER, the user wants both read and write access to the + database and requires exclusive access. + + GDBM_WRCREAT, the user wants both read and write access to the + database and if the database does not exist, + create a new one. + + GDBM_NEWDB, the user want a new database created, regardless + of whether one existed, and wants read and write + access to the new database. + + For all writers (GDBM_WRITER, GDBM_WRCREAT and GDBM_NEWDB) the + value GDBM_FAST can be added to the `flags' field using logical + or. This option causes `gdbm' to write the database without + any disk file synchronization. This allows faster writes, but + may produce an inconsistent database in the event of abnormal + termination of the writer. Any error detected will cause a + return value of NULL and an appropriate value will be in + `gdbm_errno' (see Variables). If no errors occur, a pointer to + the `gdbm' file descriptor will be returned. + */ + int modemask; + int accessmask = 0; + int block_size = 512; + char *filename; + char *acc; + char *rp; + char *wp; + Lisp_Database *db = NULL; + Lisp_Object retval; + GDBM_FILE dbase; + + GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); + + if (NILP (access_)) + accessmask = GDBM_WRCREAT; + else + { + CHECK_STRING (access_); + acc = (char *) XSTRING_DATA (access_); + + rp = strchr (acc, 'r'); + wp = strchr (acc, 'w'); + + if (rp && wp) { + if (strchr (acc, '+')) accessmask = GDBM_WRCREAT; + else accessmask = GDBM_WRITER; + } + else if (rp) accessmask = GDBM_READER; + else accessmask = GDBM_NEWDB; + } + + if (NILP (mode)) + modemask = 0755; /* rwxr-xr-x */ + else { + CHECK_INT (mode); + modemask = XINT (mode); + } + + /* Should check directory is writeable or not in case + GDBM_WRITER, GDBM_WRCREAT or GDBM_NEWDB flag is set. */ + + dbase = gdbm_open (filename, block_size, accessmask, modemask, NULL); + + if (!dbase) + return Qnil; + + db = allocate_database (); + db->gdbm_handle = dbase; + db->funcs = &gdbm_func_block; + db->live_p = 1; + db->fname = file; + db->mode = modemask; + db->access_ = accessmask; + + XSETDATABASE (retval, db); + return retval; + } + #endif /* HAVE_GDBM */ + #ifdef HAVE_BERKELEY_DB static Lisp_Object berkdb_type (Lisp_Database *db) *************** *** 543,591 **** berkdb_close, berkdb_lasterr }; - #endif /* HAVE_BERKELEY_DB */ - - DEFUN ("database-last-error", Fdatabase_last_error, 0, 1, 0, /* - Return the last error associated with DATABASE. - */ - (database)) - { - if (NILP (database)) - return lisp_strerror (errno); - - CHECK_DATABASE (database); ! return XDATABASE (database)->funcs->last_error (XDATABASE (database)); ! } ! ! DEFUN ("open-database", Fopen_database, 1, 5, 0, /* ! Return a new database object opened on FILE. ! Optional arguments TYPE and SUBTYPE specify the database type. ! Optional argument ACCESS specifies the access rights, which may be any ! combination of 'r' 'w' and '+', for read, write, and creation flags. ! Optional argument MODE gives the permissions to use when opening FILE, ! and defaults to 0755. ! */ ! (file, type, subtype, access_, mode)) { - /* This function can GC */ int modemask; int accessmask = 0; - Lisp_Database *db = NULL; char *filename; ! struct gcpro gcpro1, gcpro2; ! ! CHECK_STRING (file); ! GCPRO2 (file, access_); ! file = Fexpand_file_name (file, Qnil); ! UNGCPRO; GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); if (NILP (access_)) ! { ! accessmask = O_RDWR | O_CREAT; ! } else { char *acc; --- 841,861 ---- berkdb_close, berkdb_lasterr }; ! static Lisp_Object ! berkdb_open_database (Lisp_Object file, Lisp_Object type, Lisp_Object subtype, ! Lisp_Object access_, Lisp_Object mode ) { int modemask; int accessmask = 0; char *filename; ! Lisp_Database *db = NULL; ! Lisp_Object retval; GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); if (NILP (access_)) ! accessmask = O_RDWR | O_CREAT; else { char *acc; *************** *** 605,706 **** } if (NILP (mode)) ! { ! modemask = 0755; /* rwxr-xr-x */ ! } else { CHECK_INT (mode); modemask = XINT (mode); } ! #ifdef HAVE_DBM ! if (NILP (type) || EQ (type, Qdbm)) ! { ! DBM *dbase = dbm_open (filename, accessmask, modemask); ! if (!dbase) ! return Qnil; ! ! db = allocate_database (); ! db->dbm_handle = dbase; ! db->funcs = &ndbm_func_block; ! goto db_done; ! } ! #endif /* HAVE_DBM */ ! ! #ifdef HAVE_BERKELEY_DB ! if (NILP (type) || EQ (type, Qberkeley_db)) ! { ! DBTYPE real_subtype; ! DB *dbase; #if DB_VERSION_MAJOR != 1 ! int status; #endif ! if (EQ (subtype, Qhash) || NILP (subtype)) ! real_subtype = DB_HASH; ! else if (EQ (subtype, Qbtree)) ! real_subtype = DB_BTREE; ! else if (EQ (subtype, Qrecno)) ! real_subtype = DB_RECNO; ! else ! signal_simple_error ("Unsupported subtype", subtype); #if DB_VERSION_MAJOR == 1 ! dbase = dbopen (filename, accessmask, modemask, real_subtype, NULL); ! if (!dbase) ! return Qnil; #else ! /* Berkeley DB Version 2 has only the accessmask DB_CREATE and DB_RDONLY, ! other flags shouldn't be set */ ! if (NILP (access_)) ! accessmask = DB_CREATE; ! else ! { ! char *acc; ! CHECK_STRING (access_); ! acc = (char *) XSTRING_DATA (access_); ! accessmask = 0; ! ! if (strchr (acc, '+')) ! accessmask |= DB_CREATE; ! ! if (strchr (acc, 'r') && !strchr (acc, 'w')) ! accessmask |= DB_RDONLY; ! } ! status = db_open (filename, real_subtype, accessmask, ! modemask, NULL , NULL, &dbase); ! if (status) ! return Qnil; ! #endif /* DB_VERSION_MAJOR */ ! db = allocate_database (); ! db->db_handle = dbase; ! db->funcs = &berk_func_block; ! goto db_done; } - #endif /* HAVE_BERKELEY_DB */ ! signal_simple_error ("Unsupported database type", type); ! return Qnil; ! db_done: db->live_p = 1; db->fname = file; db->mode = modemask; db->access_ = accessmask; { ! Lisp_Object retval; ! XSETDATABASE (retval, db); ! return retval; } } DEFUN ("put-database", Fput_database, 3, 4, 0, /* Store KEY and VALUE in DATABASE. ! If optional fourth arg REPLACE is non-nil, ! replace any existing entry in the database. */ (key, value, database, replace)) { --- 875,1134 ---- } if (NILP (mode)) ! modemask = 0755; /* rwxr-xr-x */ else { CHECK_INT (mode); modemask = XINT (mode); } ! DBTYPE real_subtype; ! DB *dbase; #if DB_VERSION_MAJOR != 1 ! int status; #endif ! if (EQ (subtype, Qhash) || NILP (subtype)) ! real_subtype = DB_HASH; ! else if (EQ (subtype, Qbtree)) ! real_subtype = DB_BTREE; ! else if (EQ (subtype, Qrecno)) ! real_subtype = DB_RECNO; ! else ! signal_simple_error ("Unsupported subtype", subtype); #if DB_VERSION_MAJOR == 1 ! dbase = dbopen (filename, accessmask, modemask, real_subtype, NULL); ! if (!dbase) ! return Qnil; #else ! /* Berkeley DB Version 2 has only the accessmask DB_CREATE and DB_RDONLY, ! other flags shouldn't be set */ ! if (NILP (access_)) ! accessmask = DB_CREATE; ! else ! { ! char *acc; ! CHECK_STRING (access_); ! acc = (char *) XSTRING_DATA (access_); ! accessmask = 0; ! if (strchr (acc, '+')) ! accessmask |= DB_CREATE; ! ! if (strchr (acc, 'r') && !strchr (acc, 'w')) ! accessmask |= DB_RDONLY; } ! /* Should check directory is writeable or not in case O_RDWR or ! O_WRONLY and/or O_CREAT is set. */ ! status = db_open (filename, real_subtype, accessmask, ! modemask, NULL , NULL, &dbase); ! if (status) ! return Qnil; ! #endif /* DB_VERSION_MAJOR */ ! ! db = allocate_database (); ! db->db_handle = dbase; ! db->funcs = &berk_func_block; db->live_p = 1; db->fname = file; db->mode = modemask; db->access_ = accessmask; + XSETDATABASE (retval, db); + return retval; + } + #endif /* HAVE_BERKELEY_DB */ + + #ifdef HAVE_GDBM + DEFUN ("reorganize-database", Freorganize_database, 1, 1, 0, /* + Reorganize database DATABASE (gdbm specific function). + Shrink the space used by the `gdbm' file. + Always return nil. + */ + (database)) + { + if (!(EQ (Fdatabase_type(database), Qgdbm))) + signal_simple_error ("Can't reorganize a non-gdbm database", database); + CHECK_LIVE_DATABASE (database); + { + Lisp_Database *db = XDATABASE (database); + int ret = gdbm_reorganize(db->gdbm_handle); + db->access_mark = 1; + + if (0 > ret) + signal_simple_error (gdbm_strerror(gdbm_errno), database); + + return Qnil; + } + } + + DEFUN ("synchronize-database", Fsynchronize_database, 1, 1, 0, /* + Synchronize database DATABASE (gdbm specific function). + Always return nil. + + If you set GDBM_FAST flag to DATABASE, `gdbm' does not wait for writes + to the disk to complete before continuing. This allows faster writing + of DATABASE at the risk of having a corrupted DATABASE if the + application terminates in an abnormal fashion. This function allows + the programmer to make sure the disk version of DATABASE has been + completely updated with all changes to the current time. + + This would usually be called after a complete set of changes have been + made to DATABASE and before some long waiting time. + + `close-database' automatically calls the equivalent of + `synchronize-database' so no call is needed if DATABASE is to be + closed immediately after the set of changes have been made. + */ + (database)) + { + + if (!(EQ (Fdatabase_type(database), Qgdbm))) + signal_simple_error ("Can't synchronize a non-gdbm database", database); + CHECK_LIVE_DATABASE (database); { ! Lisp_Database *db = XDATABASE (database); ! gdbm_sync(db->gdbm_handle); ! db->access_mark = 1; ! return Qnil; } } + DEFUN ("set-database-property", Fset_database_property, 3, 3, 0, /* + Set property PROP to VALUE on DATABASE (gdbm specific function). + Always return nil. + + The valid properties are currently: + cachesize - Set the size of the internal bucket cache. + VALUE should be integer. + This property may only be set once on each DATABASE, and is set + automatically to 100 when DATABASE is opened. + + fastmode - Set fast mode to either on or off. + VALUE should be set to either nil or non-nil. + This allows fast mode to be toggled on an already open and active + DATABASE. + */ + (database, prop, value)) + { + int opt = 0; + int var = 0; + int ret = 0; + Lisp_Database *db; + + CHECK_LIVE_DATABASE (database); + + if (!(EQ (Fdatabase_type(database), Qgdbm))) + signal_simple_error ("Can't set property on a non-gdbm database", database); + + db = XDATABASE (database); + + CHECK_SYMBOL (prop); + if (EQ (prop, Qcachesize)){ + + if (db->access_mark == 1) + /* This option can set only once prior to accessing DATABASE */ + signal_simple_error ("Can't change cachesize of DATABASE already accessed", database); + + if (INTP(value)) + var = XINT(value); + else + signal_simple_error ("VALUE should be integer", value); + + opt = GDBM_CACHESIZE; /* initial value set automatically is 100 */ + + } + else if (EQ (prop, Qfastmode)) { + + if (SYMBOLP(value)) { + var = (EQ (value, Qnil)) ? 0 : 1; + opt = GDBM_FASTMODE; /* TRUE or FALSE */ + + } else + signal_simple_error ("VALUE should be symbol", value); + + } + + ret = gdbm_setopt(db->gdbm_handle, opt, &var, sizeof(int)); + + if (0 > ret) + signal_simple_error (gdbm_strerror(gdbm_errno), database); + + if (EQ (prop, Qfastmode)) + + if (var == 0) + db->access_ &= ~GDBM_FAST; + else + db->access_ |= GDBM_FAST; + + return Qnil; + } + #endif /* HAVE_GDBM */ + + DEFUN ("database-last-error", Fdatabase_last_error, 0, 1, 0, /* + Return the last error associated with DATABASE. + */ + (database)) + { + if (NILP (database)) + return lisp_strerror (errno); + + CHECK_DATABASE (database); + + return XDATABASE (database)->funcs->last_error (XDATABASE (database)); + } + + DEFUN ("open-database", Fopen_database, 1, 5, 0, /* + Return a new database object opened on FILE. + + Optional arguments TYPE and SUBTYPE specify the database type. + TYPE is one of `berkeley-db', `dbm' and `gdbm' symbol (which depends + on compile option of XEmacs). SUBTYPE is only valid for berkeley-db. + + Optional argument ACCESS specifies the access rights, which may be any + combination string of 'r' 'w' and '+', for read, write, and creation + flags. If nil, full access (and create if FILE does not exist) is + granted. + + Optional argument MODE gives the permissions to use when opening FILE, + and defaults to 0755. + */ + (file, type, subtype, access_, mode)) + { + /* This function can GC */ + struct gcpro gcpro1, gcpro2; + + CHECK_STRING (file); + GCPRO2 (file, access_); + file = Fexpand_file_name (file, Qnil); + UNGCPRO; + + #ifdef HAVE_GDBM + if (NILP (type) ||EQ (type, Qgdbm)) { + return gdbm_open_database (file, access_, mode); + } + #endif + #ifdef HAVE_DBM + if (NILP (type) ||EQ (type, Qdbm)) { + return dbm_open_database (file, access_, mode); + } + #endif + #ifdef HAVE_BERKELEY_DB + if (NILP (type) ||EQ (type, Qberkeley_db)) { + return berkdb_open_database (file, type, subtype, access_, mode); + } + #endif + signal_simple_error ("Unsupported database type", type); + } + DEFUN ("put-database", Fput_database, 3, 4, 0, /* Store KEY and VALUE in DATABASE. ! Return t if success, otherwise nil. ! If optional fourth arg REPLACE is non-nil, replace any existing ! entry in the database. */ (key, value, database, replace)) { *************** *** 716,721 **** --- 1144,1150 ---- DEFUN ("remove-database", Fremove_database, 2, 2, 0, /* Remove KEY from DATABASE. + Return t if success, otherwise nil. */ (key, database)) { *************** *** 746,751 **** --- 1175,1181 ---- DEFUN ("map-database", Fmapdatabase, 2, 2, 0, /* Map FUNCTION over entries in DATABASE, calling it with two args, each key and value in the database. + Always return nil. */ (function, database)) { *************** *** 763,768 **** --- 1193,1203 ---- #ifdef HAVE_DBM defsymbol (&Qdbm, "dbm"); #endif + #ifdef HAVE_GDBM + defsymbol (&Qgdbm, "gdbm"); + defsymbol (&Qcachesize, "cachesize"); + defsymbol (&Qfastmode, "fastmode"); + #endif #ifdef HAVE_BERKELEY_DB defsymbol (&Qberkeley_db, "berkeley-db"); defsymbol (&Qhash, "hash"); *************** *** 771,776 **** --- 1206,1216 ---- defsymbol (&Qunknown, "unknown"); #endif + #ifdef HAVE_GDBM + DEFSUBR (Freorganize_database); + DEFSUBR (Fsynchronize_database); + DEFSUBR (Fset_database_property); + #endif /* HAVE_GDBM */ DEFSUBR (Fopen_database); DEFSUBR (Fdatabasep); DEFSUBR (Fmapdatabase); *************** *** 791,796 **** --- 1231,1239 ---- #ifdef HAVE_DBM Fprovide (Qdbm); #endif + #ifdef HAVE_GDBM + Fprovide (Qgdbm); + #endif #ifdef HAVE_BERKELEY_DB Fprovide (Qberkeley_db); #endif *************** *** 804,806 **** --- 1247,1250 ---- #endif #endif /* 0 */ } + /* end of database.c */ ddskk-15.2/experimental/dbm/skk-dbm.el0000644000570400056700000003623011425561142017720 0ustar kitamotoopenlab;;; skk-dbm.el --- SKK dbm interfaces. -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: NAKAJIMA Mikio ;; Version: $Id: skk-dbm.el,v 1.9 2010/08/02 15:21:06 skk-cvs Exp $ ;; Keywords: japanese, dbm, gdbm ;; Created: Jan. 1, 1999 ;; Last Modified: $Date: 2010/08/02 15:21:06 $ ;; This file is not part of Daredevil SKK yet. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%W%m%0%i%`$O!"(Bskkserv $B$r2p$9$k%5!<%A$NBeBX$N<-=q%"%/%;%9J}K!$rDs6!$7$^$9!#(B ;; $B%5!<%P!<$r2p$5$:!"(BXEmacs $B$N5!G=$r;HMQ$7!"D>@\(B dbm $B%G!<%?%Y!<%9%U%!%$%k(B ($B0J2<(B ;; $BC1$K!V%G!<%?%Y!<%9!W$H8@$$$^$9(B) $B$r%*!<%W%s$7$F8!:w$7$^$9!#(B ;; --with-database $B%*%W%7%g%s$N;XDj$5$l$?(B XEmacs $B$G(B *$B$N$_(B* $B;HMQ$9$k$3$H$,$G$-$^(B ;; $B$9!#F0:n3NG'$O!"(BXEmacs 21.2b8 $B$G9T$J$$$^$7$?!#(B ;; ;; $B%G!<%?%Y!<%9%i%$%V%i%j$H$7$F(B gdbm $B$r;H$&>l9g$G!"%G!<%?%Y!<%9$r(B gdbm $B7A<0$H$7(B ;; $B$?$$$H$-$O!"(BXEmacs 21.2b8 $B$,(B gdbm $B%U%!%$%k$KD>@\%"%/%;%9$G$-$J$$(B (libgdbm $B$r(B ;; $B%j%s%/$7$F$$$J$,$i(B libndbm $B8_494X?t$7$+;HMQ$7$J$$$N$G(B .dir, .pag $B$r3HD%;R$H$9(B ;; $B$k%U%!%$%k$7$+3+$1$J$$(B) $B$3$H$+$i!"JLES:n6H$,I,MW$H$J$j$^$9!#(B ;; $BJLE:$N(B diff-to-xemacs-21.2.8 $B$r(B xemacs-21.2.8 $B$N%=!<%9$KEv$F!"(B ;; --with-database=gnudbm $B%*%W%7%g%s$r;XDj$7$F(B XEmacs $B$r:F(B configure $B$7!":F%3%s(B ;; $B%Q%$%k$9$kI,MW$,$"$j$^$9!#$3$N%Q%C%A$rEv$F$?(B XEmacs $B$G$O!"(Bgdbm $B%U%!%$%k$N(B ;; synchronize $B$d(B reorganize $B$,2DG=$H$J$kB>!"(Bcashsize $B$d(B fastmode $B$N%*%W%7%g%s$b(B ;; $B;XDj2DG=$H$J$j$^$9!#(B ;; ;; ** berkeley-db $B$b$7$/$O(B ndbm $B%U%!%$%k$@$1$G$"$l$P%Q%C%A$rEv$F$kI,MW$O$"$j$^$;$s!#(B*** ;; ;; skk-search-prog-list $B$rNc$($P!"2<5-$N$h$&$K@_Dj$9$k$3$H$G!"(Bautoload $B$5$l$^$9!#(B ;; ;; (setq skk-search-prog-list ;; '((skk-search-jisyo-file skk-jisyo 0 t) ;; (skk-dbm-search-jisyo-database skk-dbm-large-jisyo 'nomsg))) ;; ;; $B2<5-$N$h$&$K@_Dj$9$k$H!"8D?M<-=q$b%G!<%?%Y!<%92=$7$F8!:w$r9T$J$&$3$H$,$G$-$^$9!#(B ;; ;; (setq skk-search-prog-list ;; '((skk-dbm-search-jisyo-database skk-dbm-jisyo) ;; (skk-dbm-search-jisyo-database skk-dbm-large-jisyo 'nomsg))) ;; ;; pskkserv $BE:IU$N(B makedbmdic $B$G:n$C$?<-=q$G$O2?8N$+8!:w$G$-$^$;$s(B (XEmacs $B$N%G!<(B ;; $B%?%Y!<%95!G=$,%3!<%G%#%s%0%7%9%F%`$rL5;k$7$F$$$k$+$i!)(B)$B!#$3$N%U%!%$%k$N(B ;; skk-dbm-make-jisyo $B4X?t$r;H$C$F%G!<%?%Y!<%9$r:n$C$F2<$5$$!#(B ;; TODO ;; $BJd40!&<+F0Aw$j=hM}BP1~!#(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (unless (or (featurep 'gdbm) (featurep 'dbm) (featurep 'berkeley-db)) (error "%s" "You need XEmacs built with --with-database option")) (defgroup skk-dbm nil "SKK dbm related customization." :prefix "skk-dbm-" :group 'skk) ;; User variables. ;;;###autoload (defcustom skk-dbm-jisyo "~/.skk-jisyo.db" "*dbm $B%G!<%?%Y!<%92=$5$l$?8D?M<-=q$N%U%!%$%kL>!#(B" :type 'file :group 'skk-dbm) ;;;###autoload (defcustom skk-dbm-large-jisyo "/usr/local/share/skk/SKK-JISYO.L.db" "*dbm $B%G!<%?%Y!<%92=$5$l$?(B SKK-JISYO.L $B$N%U%!%$%kL>!#(B" :type 'file :group 'skk-dbm) ;;;###autoload (defcustom skk-dbm-subtype (save-match-data (and (or (string-match "\\.db$" skk-dbm-jisyo) (string-match "\\.db$" skk-dbm-large-jisyo)) 'hash)) "*database $B<-=q$N(B subtype$B!#(B hash, btree, recno $B$N$$$:$l$+!#(B berkeley-db $B$r;HMQ$9$k>l9g$N$_;XDj$9$k$3$H!#(B" :type '(choice (const hash) (const btree) (const recno) (const nil)) :group 'skk-dbm) (and (member '(skk-dbm-search-jisyo-database skk-dbm-jisyo) skk-search-prog-list) (setq skk-update-jisyo-function 'skk-dbm-update-jisyo) (setq skk-save-jisyo-function (function (lambda (quiet) (if (not quiet) (progn (skk-message "SKK $B%G!<%?%Y!<%9<-=q$rJD$8$F$$$^$9(B..." "Closing SKK database jisyo...") (sit-for 1))) (skk-dbm-close-all-database) (if (not quiet) (progn (skk-message "SKK $B%G!<%?%Y!<%9<-=q$rJD$8$F$$$^$9(B...$B40N;(B!" "Closing SKK database jisyo...done") (sit-for 1))))))) ;; System constants and variables. (defvar skk-dbm-alist nil) (defvar skk-dbm-type nil) (defconst skk-dbm-working-buffer " *skk-dbm*") (defconst skk-dbm-coding-system (cdr (assoc "euc" skk-coding-system-alist))) ;; Functions. ;;;###autoload (defun skk-dbm-search-jisyo-database (dbfile &optional nomsg) (setq dbfile (expand-file-name dbfile)) (let ( ;; I want `get-file-database'... (database (cdr (assoc dbfile skk-dbm-alist))) (okurigana (or skk-henkan-okurigana skk-okuri-char)) (midasi (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (henkan-buffer (current-buffer)) string entry-list entry) (or (and database (databasep database) (database-live-p database)) (setq database (skk-dbm-get-jisyo-database dbfile nomsg) ;; this should do in Emacs internal like Vbuffer_alist of ;; buffer.c. skk-dbm-alist (cons (cons dbfile database) skk-dbm-alist))) (skk-dbm-init-working-buffer) (with-current-buffer skk-dbm-working-buffer ;;(and okurigana ;; (setq okurigana (encode-coding-string ;; okurigana skk-dbm-coding-system))) ;;(setq midasi (encode-coding-string midasi skk-dbm-coding-system)) (setq string (get-database midasi database)) (if (not string) nil (erase-buffer) (insert string) ;; skip first character '/'. (goto-char (1+ (point-min))) (setq entry-list (skk-compute-henkan-lists okurigana)) (setq entry (cond ((and okurigana skk-henkan-okuri-strictly) (nth 2 entry-list)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 entry-list) (car entry-list))) (t (car entry-list)))) (and skk-search-end-function (setq entry (funcall skk-search-end-function henkan-buffer midasi okurigana entry))) entry)))) (defun skk-dbm-get-jisyo-database (dbfile &optional nomsg) ;; Return database object. (save-match-data (setq dbfile (expand-file-name dbfile)) (let (database access modes) (if (string= (expand-file-name skk-dbm-jisyo) dbfile) ;; $B8D?M<-=q(B (progn (setq modes 0600) (or (file-exists-p dbfile) ;; $B$J$1$l$P(B plain text $B$N<-=q$+$i%G!<%?%Y!<%9<-=q$r:n@.$9$k!#(B (skk-dbm-make-private-jisyo))) ;; $B6&M-<-=q(B (setq modes 0444) (or (file-exists-p dbfile) ;; $B$J$+$C$?$i%(%i!<$K$9$k!#:n@.$9$k$N$K;~4V$,$+$+$k$b$N$M!#(B (skk-error "$B%G!<%?%Y!<%9<-=q(B %s $B$,8+$D$+$j$^$;$s(B" "Cannot find out database jisyo %s" dbfile)) (or (file-readable-p dbfile) (skk-error "$B%G!<%?%Y!<%9<-=q(B %s $B$,FI$a$^$;$s(B" "Cannot read database jisyo %s" dbfile))) (or nomsg (skk-message "SKK $B<-=q%G!<%?%Y!<%9(B %s $B$r3+$$$F$$$^$9(B..." "Opening SKK dictionary database %s ..." (file-name-nondirectory dbfile))) (setq skk-dbm-type (cond ((and (featurep 'berkeley-db) (string-match "\\.db$" dbfile)) 'berkeley-db) ((and (featurep 'gdbm) (string-match "\\.gdbm$" dbfile)) 'gdbm) ((and (featurep 'dbm) (not (string-match "\\.db$" dbfile)) (not (string-match "\\.gdbm$" dbfile))) 'dbm) (t (skk-error "$B%G!<%?%Y!<%9<-=q$r3+$/$?$a$NE,Ev$J%?%$%W$r7h$a$k$3$H$,$G$-$^$;$s(B" "Cannot find out proper type for opening database jisyo"))) access (if (string= (file-name-nondirectory dbfile) (file-name-nondirectory skk-dbm-jisyo)) "+rw" "r")) (and skk-dbm-subtype (not (eq skk-dbm-type 'berkeley-db)) (skk-error "$B%G!<%?%Y!<%9%?%$%W$H%5%V%?%$%W$,L7=b$7$F$$$^$9(B" "Database type and subtype conflicts")) (and (string= access "+rw") (not (file-writable-p (file-name-directory dbfile))) (skk-error "%s $B$K=q$-9~$_8"8B$,$"$j$^$;$s(B" "You don't have write permission to %s" (file-name-directory dbfile))) (setq database (open-database dbfile skk-dbm-type skk-dbm-subtype access modes)) (or (databasep database) (skk-error "SKK $B<-=q%G!<%?%Y!<%9(B %s $B$r3+$/$3$H$,$G$-$^$;$s(B" "Cannot open SKK dictionary database %s" (file-name-nondirectory dbfile))) (or nomsg (skk-message "SKK $B<-=q%G!<%?%Y!<%9(B %s $B$r3+$$$F$$$^$9(B...$B40N;!*(B" "Opening SKK dictionary database %s ...done" (file-name-nondirectory dbfile))) database))) (defun skk-dbm-init-working-buffer () (or (get-buffer skk-dbm-working-buffer) (with-current-buffer (get-buffer-create skk-dbm-working-buffer) (set-buffer-file-coding-system skk-dbm-coding-system) (buffer-disable-undo) (auto-save-mode -1) (setq buffer-read-only nil case-fold-search nil major-mode 'skk-jisyo-mode mode-name "SKK dbmdic")))) (defun skk-dbm-update-jisyo (word &optional purge) (let* ((database (cdr (assoc (expand-file-name skk-dbm-jisyo) skk-dbm-alist))) (midasi (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (old-str (get-database midasi database)) (inhibit-quit t) (henkan-buffer (current-buffer)) old-entry okurigana) (if (> skk-okuri-index-min -1) (setq word (skk-remove-common word) midasi skk-henkan-key)) (setq okurigana (or skk-henkan-okurigana skk-okuri-char)) (with-current-buffer skk-dbm-working-buffer (let ((skk-okuri-ari-min (point-min)) ; dymmy (skk-okuri-nasi-min (point-min)) ; dymmy buffer-read-only) (setq skk-henkan-key midasi) (erase-buffer) (if (not old-str) nil (goto-char (point-min)) (insert old-str) (goto-char (1+ (point-min))) ;; skk-compute-henkan-lists $B$H(B skk-update-jisyo-1 $B$O!"%]%$%s%H$K0MB8$;(B ;; $B$:!"J8;zNs(B ($B$"$k$$$O%j%9%H(B) $B$r0z?t$K 1 (buffer-size)) nil (goto-char (point-min)) (search-forward " /" nil) (put-database skk-henkan-key (buffer-substring-no-properties (1- (point)) (point-max)) database 'replace)) (and skk-update-end-function (funcall skk-update-end-function henkan-buffer midasi okurigana word purge)))))) ;;;###autoload (defun skk-dbm-make-jisyo (file dbm &optional type subtype nomsg) (save-match-data (let ((start (current-time))) (or nomsg (skk-message "SKK $B%G!<%?%Y!<%9<-=q$r:n@.$7$F$$$^$9(B..." "Making SKK database jisyo...")) (or type (setq type (cond ((featurep 'berkeley-db) 'berkeley-db) ((featurep 'gdbm) 'gdbm) (t 'dbm)))) (and subtype (not (eq type 'berkeley-db)) (skk-error "berkeley-db $B$G$J$$%G!<%?%Y!<%9$K(B subtype $B$r;XDj$9$k$3$H$O$G$-$^$;$s(B" "Cannot specify subtype for a non berkeley-db database")) (save-excursion (set-buffer (get-buffer-create " *skk-work*")) (let ((dbase (or (open-database (expand-file-name dbm) type subtype "+") ;; $B%b!<%I$r;XDj$9$k$H2?8N$+(B database $B$r(B open $B$G$-$J$$!#(B ;;0600) (skk-error "$B%G!<%?%Y!<%9(B %s $B$r3+$/$3$H$,$G$-$^$;$s(B" "Cannot open database %s" dbm))) enable-character-translation enable-character-unification midasi cand) (and (eq type 'gdbm) (fboundp 'set-database-property) (set-database-property dbase 'fastmode t)) (buffer-disable-undo) (erase-buffer) ;; coding-system-for-read $B$,(B undecided $B$d(B automatic-conversion $B$8$cJ8;z%3!<(B ;; $B%I8mH=Dj$K$J$C$F$7$^$&(B... (on XEmacs 21.2b7)$B!#(B (insert-file-contents-as-coding-system (cond ((and skk-jisyo-code (coding-system-p skk-jisyo-code)) skk-jisyo-code) ((and skk-jisyo-code (stringp skk-jisyo-code)) (cdr (assoc skk-jisyo-code skk-coding-system-alist))) (t skk-dbm-coding-system)) (expand-file-name file)) (goto-char (point-min)) (while (= (forward-line 1) 0) (beginning-of-line) (if (or (looking-at ";") (eobp)) nil (setq midasi (buffer-substring-no-properties (point) (search-forward " "))) (and (string-match " $" midasi) (setq midasi (substring midasi 0 (match-beginning 0)))) (setq cand (buffer-substring-no-properties (point) (progn (end-of-line) (point)))) (put-database midasi cand dbase 'replace))) (close-database dbase) (or nomsg (skk-message "SKK $B%G!<%?%Y!<%9<-=q$r:n@.$7$F$$$^$9(B...$B40N;!*(B" "Making SKK database jisyo...done")) (sit-for 1) (or nomsg (skk-message "$B%G!<%?%Y!<%9<-=q$r:n@.$9$k$N$K(B %s $BIC$+$+$j$^$7$?(B" "It took %s minutes to make database jisyo" (skk-time-difference start (current-time)))) (sit-for 2)))))) (defun skk-dbm-make-private-jisyo () (save-match-data (let* ((type (cond ((and (featurep 'berkeley-db) (string-match "\\.db$" skk-dbm-jisyo)) 'berkeley-db) ((and (featurep 'gdbm) (string-match "\\.gdbm$" skk-dbm-jisyo)) 'gdbm) ((and (featurep 'dbm) (not (string-match "\\.db$" skk-dbm-jisyo)) (not (string-match "\\.gdbm$" skk-dbm-jisyo))) 'dbm) (t (skk-error "$B%G!<%?%Y!<%9<-=q$r:n@.$9$k$?$a$NE,Ev$J%?%$%W$r7h$a$k$3$H$,$G$-$^$;$s(B" "Cannot find out proper type for making database jisyo")))) (subtype (and (eq type 'berkeley-db) 'hash))) (skk-dbm-make-jisyo skk-jisyo skk-dbm-jisyo type subtype)))) (defun skk-dbm-close-all-database () (let ((alist skk-dbm-alist) e) (condition-case nil (progn (while alist (and (setq e (car alist)) (database-live-p (cdr e)) (close-database (cdr e))) (setq alist (cdr alist))) ;; set global alist to nil if successfully finished. (setq skk-dbm-alist nil)) (error ;; if error occurred, delete such element from skk-dbm-alist. (setq skk-dbm-alist (delq e skk-dbm-alist)))))) ;; advices. (defadvice close-database (around skk-ad activate) (let ((file (database-file-name (ad-get-arg 0)))) (prog1 ad-do-it ;; this should do in Emacs internal. (setq skk-dbm-alist (delq (assoc file skk-dbm-alist) skk-dbm-alist))))) ;;(add-hook 'kill-emacs-hook 'skk-dbm-close-all-database) (run-hooks 'skk-dbm-load-hook) (provide 'skk-dbm) ;; Local Variables: ;; mode: auto-fill ;; fill-column: 78 ;; End: ;;; skk-dbm.el ends here ddskk-15.2/experimental/.cvsignore0000644000570400056700000000001207062326152017273 0ustar kitamotoopenlabChangeLog ddskk-15.2/experimental/GUIDELINE0000644000570400056700000000053411543661601016534 0ustar kitamotoopenlab-*- text -*- $Date: 2011/03/27 16:19:13 $ $Id: GUIDELINE,v 1.5 2011/03/27 16:19:13 skk-cvs Exp $ o $BA4$/?7$7$$5!G=$rDs6!$9$k%W%m%0%i%`$G!":n ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-correct.el,v 1.8 2010/08/02 15:21:05 skk-cvs Exp $ ;; Keywords: japanese ;; Last Modified: $Date: 2010/08/02 15:21:05 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary ;; $B<-=qCf$K$J$$FI$_$N%V%l$?8+=P$78l$GJQ49$7$?:]$K!"FbIt$G(B skk-correct-table ;; $B$r;2>H$7$F@5$7$$8+=P$78l$KCV$-49$(8uJd$r8!:w$9$k%W%m%0%i%`$G$9!#(B ;; skk-correct-search $B$N0z?t$K!"%V%lJd@58e$K8!:w$7$?$$<-=q$r!"(B ;; skk-search-prog-list $B$HF1$8MWNN$G%j%9%H$GI=$7!"8!:w%W%m%0%i%`$H$H$b$K5-:\(B ;; $B$7$F2<$5$$!#Nc$($P$3$s$J46$8$G$9!#(B ;; ;; (skk-correct-search ;; '((skk-search-jisyo-file skk-jisyo 0 t) ;; (skk-search-server skk-aux-large-jisyo 10000) ;; (skk-okuri-search))) ;; ;; * $B>e5-$NNc$G$O!"Jd@5$7$?8+=P$78l$KBP$7!"8D?M<-=q!"%5!<%P!e$O8!:w$r9T$J$$$^$;$s!#(B ;; ;; $B$3$l$r99$K(B skk-search-prog-list $B$NCf$NE,Ev$J8D=j$KF~$l$^$7$g$&!#2<5-$N$h(B ;; $B$&$K8D?M<-=q8!:wD>8e$K!"0lEY8+=P$78l$rJd@5$7$F8D?M<-=q$r8!:w$7D>$7!"%5!<(B ;; $B%P!<8!:w8e$K8+$D$+$i$J$+$C$?$i:FEYJd@5$7$F%5!<%P!<$r8!:w$9$k!"$H$$$&$N$b(B ;; $B0l0F$G$9!#$"$k$$$O!"8D?M$NJJ$r$b$m$KH?1G$7$F$$$k8D?M<-=q$N%V%lJd@5$O;_$a(B ;; $B$F!"%5!<%P!<$N$_Jd@58e8!:w$r$9$k!"$H$$$&$N$bNI$$$G$7$g$&!#(B ;; ;; (setq skk-search-prog-list ;; '((skk-search-jisyo-file skk-jisyo 0 t) ;; (skk-correct-search '((skk-search-jisyo-file skk-jisyo 0 t))) ;; (skk-search-server skk-aux-large-jisyo 10000) ;; (skk-okuri-search) ;; (skk-correct-search ;; '((skk-search-server skk-aux-large-jisyo 10000) ;; (skk-okuri-search))) ;; )) ;; ;; $B8=:_$N$H$3$m!"(Bskk-correct-table $B$N3FMWAG$r:G=i$+$i=g$Ke(B skk-correct-table ;; $B$N8eH>ItJ,$O8+$J$$;EMM$K$J$C$F$$$^$9!#(B ;; $B$H$j$"$($:(B Naoki Wakamatsu $B$5$s$,(B Message-Id: ;; <200001260732.QAA00868@ring.etl.go.jp> $B$GNs5s$7$F$/$@$5$C$?FI$_$N%V%l$r(B ;; $BC1=c$K(B sort $B$7$F!"(B2 $BJ8;z$N$b$N(B, 1 $BJ8;z$N$b$N$H$$$&=g$G(B skk-correct-table ;; $B$K<}$a$F$$$^$9$,!">e5-$N$h$&$K2?$+0l$D%V%l$,8+$D$+$C$?$i$=$l0J>e$O%F!<%V%k(B ;; $B$r8+$F$$$J$$$N$G!"$3$N%F!<%V%k$N%V%l$NM%@h=g0L$O8!F$$7$?J}$,NI$$$G$7$g$&!#(B ;; ;; $B:#8e$N2~NI$N%"%$%G%#%"$N0l$D$H$7$F$O!"JQ49>r7o$K1~$8$F8+$k%V%l$H8+$J$$%V%l(B ;; $B$r:n$k$N$bNI$$$+$b$7$l$^$;$s!#Nc$($P!"$3$N%V%l$OAw$j$"$jJQ49$N$H$-$@$1$7$+(B ;; $B8!:w$7$J$$!"$J$I$H$$$&$b$N$G$9!#$3$NJU$j$O $B$h$&$d(Bk /$BA2(B/ ("$B$i$&(B" . "$B$m$&(B") ; $B$i$&(Bs /$BO+(B/ -> $B$m$&(Bs /$BO+(B/ ;; 1 char ("$B$$(B" . "$B$f(B") ; $B$$$-$I(Bm /$B9T$-;_(B/ -> $B$f$-$I(Bm /$B9T$-;_(B/ ("$B$$(B" . "$B$h(B") ; $B$$(Bi /$BNI(B/ -> $B$h(Bi /$BNI(B/ ("$B$*(B" . "$B$&(B") ; $B$[$*(Bt /$BJ|(B/ -> $B$[$&(Bt /$BJ|(B/ ("$B$*(B" . "$B$[(B") ; $B$h$=$*(Bu /$Bjf(B/ -> $B$h$=$[(Bu /$Bjf(B/ ("$B$*(B" . "$B$r(B") ; $B$/$A$*(Bs /$B8}@K(B/ -> $B$/$A$r(Bs /$B8}@K(B/ ("$B$+(B" . "$B$,(B") ; $B$^$L$+(Br /$BLH(B/ -> $B$^$L$,(Br /$BLH(B/ ("$B$6(B" . "$B$5(B") ; $B$O$@$6$`(Bk /$BH)4((B/ -> $B$O$@$5$`(Bi /$BH)4((B/ ("$B$8(B" . "$B$B(B") ; $B$_$8$+(Bn /$B?H6a(B/ -> $B$_$B$+(Bn /$B?H6a(B/ ("$B$=(B" . "$B$>(B") ; $B$_$.$=$m(Be /$B1&B7(B/ -> $B$_$.$>$m(Be /$B1&B7(B/ ("$B$?(B" . "$B$@(B") ; $B$d$/$?(Bt /$BLrN)(B/ -> $B$d$/$@(Bt /$BLrN)(B/ ("$B$E(B" . "$B$:(B") ; $B$o$E$i(Bw /$BHQ(B/ -> $B$o$:$i(Bw /$BHQ(B/ ; $B$`$E$+(Bs /$BFq(B/ -> $B$`$:$+(Bs /$BFq(B/ ("$B$H(B" . "$B$I(B") ; $B$b$H(Br /$BLa(B/ -> $B$b$I(Br /$BLa(B/ ("$B$O(B" . "$B$o(B") ; $B$a$6$O(Br /$BL\>c(B/ -> $B$a$6$o(Br /$BL\>c(B/ ("$B$P(B" . "$B$O(B") ; $B$O$i(Bi /$BJ'(B/ -> $B$P$i(Bi /$BJ'(B/ ("$B$Q(B" . "$B$O(B") ; $B$Q(Bt /$BD%(B/ -> $B$O(Bt /$BD%(B/ ("$B$R(B" . "$B$$(B") ; $B$U$,$R$J(Bi /$Bg%9CHeL5(B/ -> $B$U$,$$$J(Bi /$Bg%9CHeL5(B/ ("$B$R(B" . "$B$S(B") ; $B$j$g$&$R$i(Bk /$BN>3+(B/ -> $B$j$g$&$S$i(Bk /$BN>3+(B/ ("$B$U(B" . "$B$V(B") ; $B$U$+(Bk /$B?<(B/ -> $B$V$+(Bk /$B?<(B/ ("$B$V(B" . "$B$U(B") ; $B$1$V$+(Bi /$BLS?<(B/ -> $B$1$U$+(Bi /$BLS?<(B/ ("$B$`(B" . "$B$s(B") ; $B$d$`$4$H$J(Bs /$B;_;vL5(B/ -> $B$d$s$4$H$J(Bs /$B;_;vL5(B/ ("$B$f(B" . "$B$$(B") ; $B$f$-$I(Bm /$B9T$-;_(B/ -> $B$$$-$I(Bm /$B9T$-;_(B/ ("$B$h(B" . "$B$$(B") ; $B$h(Bi /$BNI(B/ -> $B$$(Bi /$BNI(B/ ("$B$p(B" . "$B$$(B") ; $B$p(Br /$B5o(B/ -> $B$$(Br /$B5o(B/ ) "*$B8+=P$78lJQ49$N$?$a$N%F!<%V%k!#(B $B3FMWAG$N%G!<%?9=B$$O!"(B\(\"$BFI$_$,$V$l$?8+=P$78l(B\" . \"$B@5$7$$8+=P$78l(B\"\)$B!#(B") ;; internal variable (defvar skk-correct-current-table nil) ;; functions. ;;;###autoload (defun skk-correct-search (search-method-list) (let ((henkan-key skk-henkan-key) search-list skk-henkan-key v) (setq skk-correct-current-table skk-correct-table) (while (and (not v) (setq search-list search-method-list skk-henkan-key (skk-correct henkan-key))) (while (and search-list (not (setq v (eval (car search-list))))) (setq search-list (cdr search-list)))) v)) (defun skk-correct (string) ;; STRING $BCf$K%V%l$,$"$C$?$i$=$NItJ,$r@5$7$$J8;zNs$KCV$-49$($FJV$9!#(B (let (v) (save-match-data (while (and (not v) skk-correct-current-table) (if (string-match (car (car skk-correct-current-table)) string) (setq v (concat (substring string 0 (match-beginning 0)) (cdr (car skk-correct-current-table)) (substring string (match-end 0))))) (setq skk-correct-current-table (cdr skk-correct-current-table))) v))) (provide 'skk-correct) ;;; Local Variables: ;;; End: ;;; skk-correct.el ends here ddskk-15.2/experimental/skk-dinsert.el0000644000570400056700000002532110612545244020065 0ustar kitamotoopenlab;;; skk-dinsert.el --- SKK dynamic insert -*- coding: iso-2022-jp -*- ;; Copyright (C) 2002 Eiji Obata ;; Author: Eiji Obata ;; Maintainer: SKK Development Team ;; Version: $Id: skk-dinsert.el,v 1.10 2007/04/22 02:38:28 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2007/04/22 02:38:28 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B%+!<%=%k$NA08e$NJ8;zNs$d!"G$0U$N(B elisp $B$NI>2ACM$K$h$C$F%P%C%U%!$KA^(B ;; $BF~$9$kJ8;z$rF0E*$K7hDj$9$k%W%m%0%i%`$G$9!#(B ;; ;; skk-dinsert-rule-list $B$K!"%-!r7o$N%j%9%H$r=q(B ;; $B$$$F$/$@$5$$!#?t;z$ND>8e$G$N$_(B [-,.]$B$r(B[$B!l9g$K$O8e$N(B $BF~NO$K8B$jL58z$K$J$k!#(B") (defvar skk-dinsert-ignore-lf t "*Non-nil $B$G$"$l$P!"%+!<%=%k0JA0$NJ8;zNs$K$h$k>r7oH=Dj$r9TF,$G9T$J$C$?>l9g!"2~9T$rL5;k$9$k!#(B `skk-dinsert-rule-list' $B$K$FBP1~$9$k%*%W%7%g%s$,;XDj$7$F$"$k$H!"$=$A$i$,M%@h$5$l$k!#(B") (defvar skk-dinsert-rule-list nil "*`skk-dinsert' $B$K$h$kF0E*$JF~NO$N>r7o%j%9%H!#(B $B%j%9%H$N3FMWAG$O!"$=$l$>$l$,0l$D$N5,B'$G$"$j!"2<5-$N7A<0$rK~$?$7$F$$$J$1$l$P(B $B$J$i$J$$!#(B (INPUT-STATE NEXT-STATE RULE-ALIST) INPUT-STATE, NEXT-STATE $B$N0UL#$O(B `skk-rom-kana-base-rule-list' $B$HF1$8$G$"$j!"(B SKK $B$O(B INPUT-STATE $B$r8!=P$9$k$H!"(BRULE-ALIST $B$K4p$E$$$F%P%C%U%!$KJ8;z$rA^F~$7!"(B $BB3$$$F(B NEXT-STATE $B$K>uBV$r0\$7$?$&$($G!"F~NOBT$A>uBV$H$J$k!#(B RULE-ALIST $B$O>r7o$H!"$=$l$,@.N)$7$?;~$K=PNO$5$l$kCM$NO"A[%j%9%H$G$"$k!#(B $B$=$l$>$l$N%k!<%k$O(B (REGEXP looking-at b-regexp/ignore-lf limit s-exp . VAL) $BKt$O(B (S-EXP . VAL) $B$N7A<0$r$H$k!#(B(REGEXP, S-EXP, VAL $B0J30$O>JN,2DG=(B) $B=i$a$K!":G=i$NMWAG$,J8;zNs$G$"$k>l9g$K$D$$$F@bL@$9$k!#(B $B%j%9%H$N3FMWAG$N0UL#$O2<5-$NDL$j!#(B 0th: $BJ8;zNs$r@55,I=8=$H$7$F07$$!"%+!<%=%k<~0O$NJ8;zNs$,$3$l$K%^%C%A$9$k$+H=Dj(B $B$9$k!#(B 1th: Non-nil $B$G$"$l$P(B `looking-at' $B$rMQ$$$F%+!<%=%k0J8e$NJ8;zNs$,(B REGEXP $B$K%^%C(B $B%A$9$k$+H=Dj$9$k!#(Bnil $B$G$"$l$P(B `re-search-backward' $B$K$h$j%+!<%=%kD>A0$N(B $BJ8;zNs$,(B REGEXP $B$K%^%C%A$9$k$+H=Dj$9$k!#>JN,$9$k$H(B nil $B$H$7$F07$&!#(B 2th: 1th $B$N(B looking-at $B$NCM$K$h$j0[$J$k0UL#$r;}$D!#(B looking-at $B$N;XDj$,(B Non-nil $B$N;~(B: nil $B$G$"$l$P!"%+!<%=%kD>8e$NJ8;zNs$,(B REGEXP $B$K%^%C%A$9$k$+H=Dj$9$k!#(B Non-nil $B$G$"$l$P!"$3$l$r@55,I=8=$H$7$F07$$!"(B`re-search-backward' $B$K$h$C(B $B$F%+!<%=%k0\F0$r$9$k!#$=$N8e(B `looking-at' $B$r9T$J$$(B REGEXP $B$,J8;zNs$K(B $B%^%C%A$9$k$+H=Dj$9$k!#$3$l$O%3%s%F%-%9%H$K1~$8$?F~NO$r$9$k>l9g$KM-8z(B $B$G$"$k(B($B$H;W$o$l$k(B)$B!#(B looking-at $B$N;XDj$,(B nil $B$N;~(B(`re-search-backward' $B$K$h$C$FH=Dj$9$k;~(B): Non-nil $B$G$"$l$P!"9TF,$G$NF~NO$K$*$$$F!"$=$ND>A0$NJ8;z(B($B$9$J$o$A2~9T%3!<(B $B%I(B)$B$rL5;k$7$F(B REGEXP $B$H%^%C%A$9$k$+H=Dj$9$k!#;XDj$,L5$1$l$P(B `skk-dinsert-ignore-lf' $B$NCM$rMQ$$$k!#(B 3th: `re-search-backward' $B$r9T$J$&:]$N8!:wHO0O$r;XDj$9$k!#$3$l$O%^%C%A%s%0$N>r(B $B7o$r9J$C$?$j!"%Q%U%)!<%^%s%9$NDc2<$rM^$($kL\E*$KMxMQ$5$l$k!#(B $B?tCM$,;XDj$5$l$k$H!"8=:_$N%+!<%=%k0LCV$h$j(B limit $BJ8;zA0$^$G$rHO0O$H$7$F8!(B $B:w$9$k!#6qBNE*$K$O(B (- (point) limit) $B$r(B `re-search-backward' $B$KEO$9!#(B $B$=$l0J30$G$"$k$H!"(BS $B<0$H$7$FI>2A$7$?CM$rMQ$$$k!#(B note: * $B?tCM$r$=$N$^$^EO$7$?$$>l9g$K$O(B (quote 1) $BEy$H$9$kI,MW$,$"$k!#(B * $BI>2A$7$?CM$,%+!<%=%k0LCV$N(B point $B$h$jBg$-$$$H%(%i!<$K$J$k!#(B 4th: REGEXP $B$K$h$k%^%C%A%s%0$,@.8y$7$?:]!"$3$N(B s-exp $B$rI>2A$9$k!#(B S $B<0$NCf$G$O(B arg $B$H(B m-d $B$rMxMQ$9$k;v$,$G$-!"(Barg $B$K$O(B `skk-dinsert' $B$N0z?t(B $B$,!"(Bm-d $B$K$O(B REGEXP $B$K$h$k%^%C%A%s%0$N:]$N(B (match-data) $B$NFbMF$,F~$C$F$$(B $B$k!#(Bs-exp $B$NI>2ACM$,(B nil $B$G$"$k$H!"$3$N%k!<%k$OE,MQ$5$l$J$$!#(B 5th: REGEXP $B$K$h$k%^%C%A%s%0$,@.N)$7!"$+$D(B s-exp($B;XDj$5$l$F$$$l$P(B)$B$N(B $BI>2ACM$,(B Non-nil $B$G$"$C$?;~!"$3$N(B VAL $B$,%P%C%U%!$KA^F~$5$l$k!#(B $Bl9g$G$"$k$,!"$3$l$O(B S $B<0$H$7$FI>2A$5$l$k!#(B $BI>2ACM$,(B Non-nil $B$G$"$l$P%k!<%k$,E,MQ$5$l!"BP1~$9$k(B VAL $B$,%P%C%U%!$KA^F~$5$l$k!#(B $B%k!<%k$O>e$+$i=g$K;n$5$l!":G=i$K@.N)$7$?$b$N$,E,MQ$5$l$k!#(B VAL $B$K$O!"0J2<$N(B 3$B$D$N7A<0$r;XDj$G$-$k!#(B $BJ8;zNs(B -- $B$3$l$,%P%C%U%!$KA^F~$5$l$k!#(B $B4X?tL>%7%s%\%k(B -- `skk-rom-kana-rule-list' $B$G;XDj$7$?>l9g$HF1MM!"0z?tIU$-$G8F$P$l$k!#(B $BJV$jCM$,J8;zNs$G$"$l$P$=$l$,%P%C%U%!$KA^F~$5$l$k!#(B $BJQ?tL>%7%s%\%k(B -- (`format' \"%S\" VAL) $B$7$?CM$,%P%C%U%!$KA^F~$5$l$k!#(B $BFCJL$J>l9g$H$7$F(B nil $B$r;XDj$9$k;v$,$G$-$k!#$3$N;~$K$O!"(BS-EXP $BKt$O(B s-exp $B$NI>2ACM(B $B$,MQ$$$i$l!"$3$l$O>e$N(B 3$B$D$N7A<0$N2?$l$+$G$"$kI,MW$,$"$k!#(B `skk-rom-kana-rule-list' $B$H$O0[$J$j!"%"%H%`$G$J$$MWAG$O;XDj$G$-$J$$!#$3$N$?$a(B \(\"$B%+%J(B\" . \"$B$+$J(B\") $B$H$O;XDj$G$-$J$$!#$+$J%b!<%I!"%+%J%b!<%I$K$h$C$F>r7oJ,$1(B $B$7$?$$>l9g$K$O!"JQ?t(B `skk-hiragana', `skk-katakana' $B$K$h$C$FD4$Y$k;v$,$G$-$k!#(B note: `skk-hiragana' $B$O(B `skk-dinsert' $B$NCf$K$*$$$F$N$_M-8z$J%m!<%+%kJQ?t$G$"$k!#(B") (defun skk-toggle-dinsert (&optional arg) "$BF0E*$JF~NO$NM-8z(B/$BL58z$r@Z$jBX$($k!#(B" (interactive "P") (setq skk-dinsert-mode (cond ((null arg) (not skk-dinsert-mode)) ((> (prefix-numeric-value arg) 0) t) (t nil)))) (defun skk-dinsert (arg idx) (let ((rule-alist (nth 2 (nth idx skk-dinsert-rule-list))) ;; VAL $B$K(B ("$B%+%J(B" . "$B$+$J(B") $B$N7A<0$,=q$1$J$$$N$G(B ;; $B$;$a$FJQ?t$rDs6!$7$F$_$k(B (skk-hiragana (and (not skk-katakana) skk-j-mode)) val cnd) (if (or (not skk-dinsert-mode) (and skk-henkan-mode (= skk-henkan-start-point skk-kana-start-point)) (and skk-isearch-switch (buffer-live-p skk-isearch-current-buffer))) ;; isearch $BKt$O(B $BF0E*$JF~NO$r$7$J$$$J$i(B t $B$KBP1~$9$kCM$r;H$&(B (setq val (cdr (assq t rule-alist))) (catch 'return (dolist (cur-rule rule-alist) (setq cnd (car cur-rule)) (cond ((stringp cnd) ; REGEXP (let (found s-exp m-d) (setq val (save-match-data (save-excursion (let* ((i 0) (regexp cnd) (r cur-rule) (v (progn (while (not (atom r)) (setq i (1+ i) r (cdr r))) r)) l-a i-lf b-regexp lim pos) ;; (0 1 2 3 4 . 5) $B$N7A<0$r:NMQ$7$F$$$k$N$G(B ;; (nth n LIST) $B$r$9$k$K$O(B i > n $B$G$"$k;v$,I,MW(B (ignore-errors (setq l-a (nth 1 cur-rule) i-lf (nth 2 cur-rule) b-regexp i-lf lim (nth 3 cur-rule) s-exp (nth 4 cur-rule))) ;; re-search-backward $B$N(B limit $BD4@0(B (when lim (setq lim (if (numberp lim) (- (point) lim) ; $BIi$K$J$C$F$b(B ok (eval lim)))) (cond (l-a ; looking-at (when b-regexp (re-search-backward b-regexp lim t)) (when (looking-at regexp) (setq found t m-d (match-data)) v)) (t ; re-search-backward (when (and (not (bobp)) (bolp) (if (> i 2) i-lf skk-dinsert-ignore-lf)) (backward-char)) (setq pos (point)) (when (and (re-search-backward regexp lim t) (= pos (match-end 0))) (setq found t m-d (match-data)) v))))))) ;; match-data $B$rMQ$$$F=PNO$r@8@.(B or $B>r7oH=Dj(B ;; skk-dinsert $B<+?H$N0z?t$O(B arg ;; match-data $B$NFbMF$O(B m-d (when (and found s-exp) (setq val (let ((retval (eval s-exp))) (when retval (or val retval)))))) (when val (throw 'return nil))) (t ; S-EXP (let ((retval (eval cnd)) (v (cdr cur-rule))) (setq val (when retval (or v retval)))) (when val (throw 'return nil))))))) (cond ((stringp val) val) ((functionp val) (funcall val arg)) (t (format "%S" val))))) (provide 'skk-dinsert) ddskk-15.2/experimental/skk-exsearch.el0000644000570400056700000002021111425561141020205 0ustar kitamotoopenlab;;; skk-exsearch.el --- $B30It8!:w%W%m%0%i%`6&MQ(B interface -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-exsearch.el,v 1.10 2010/08/02 15:21:05 skk-cvs Exp $ ;; Keywords: japanese ;; Last Modified: $Date: 2010/08/02 15:21:05 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; This file needs eieio package (which provides CLOS like OO ;; programming) that can be found at; ;; ;; ftp://ftp.ultranet.com/pub/zappo ;; ;; This program may be (or may not be) a core engine of external ;; searching program of Daredevil (or some other new branch) SKK. ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (require 'path-util) ; for exec-installed-p. (require 'eieio) (defvar skk-grep-dic "/usr/local/share/skk/SKK-JISYO.L" "*grep search dictionary.") (defclass search-engine () ((program :initarg :program :initform nil :documentation "Program file.") ;;(argument :initarg :argument :initform nil :documentation "") (dictionary :initarg :dictionary :initform nil :documentation "Dictionary file to be searched.")) "External search engine superclass.") (defclass synchronous-search-engine (search-engine) ((infile :initarg :infile :initform nil :documentation "This is where the program's input comes from. (nil means `/dev/null').") (stderr :initarg :stderr :initform t :documentation "What to do with standard error in the child.\ nil (discard standard error output), t (mix it with ordinary output),\ or a file name string.") (success-exit-code :initarg :success-exit-code :initform 0 :documentation "Numeric exit status of success.") (error-exit-code :initarg :error-exit-code :initform 2 :documentation "Numeric exit status of error.")) "External synchronous search engine class.") (defclass regular-engine (synchronous-search-engine) ((coding-system :initarg :coding-system :initform (lambda () (skk-find-coding-system skk-jisyo-code)))) "Regular search engine type. Call program synchronously in separate process. Output of this type is a line that contains candidates delimited by slash.") (defclass grep-engine (synchronous-search-engine) ((coding-system :initarg :coding-system :initform (lambda () (skk-find-coding-system skk-jisyo-code)))) "Regular search engine type for grep search. Call program synchronously in separate process. Output of this type is a line that contains candidates delimited by slash.") (defclass look-engine (synchronous-search-engine) (()) "look type. Call program synchronously in separate process. This type inserts multiple lines to the buffer. Each line contains a candidate.") (defmethod setup-synchronous-engine ((engine synchronous-search-engine)) (and (slot-exists-p engine 'coding-system) ;; return nil if cdbget executable binary does not installed. (slot-value engine 'program) (with-slots ((code coding-system)) engine (if (and code (fboundp 'modify-coding-system-alist)) (modify-coding-system-alist 'process (oref engine program) (cons code code)))))) (defvar cdbget (make-instance regular-engine :program (exec-installed-p "cdbget") :infile "/usr/local/share/skk/SKK-JISYO.L.cdb") "*cdbget search engine object.") (setup-synchronous-engine cdbget) (defvar grep (make-instance grep-engine :program (exec-installed-p "grep") :infile skk-grep-dic) "*grep search engine object.") (setup-synchronous-engine grep) (defvar look (make-instance look-engine :program (exec-installed-p "look")) "*look search engine object.") (defmethod core-engine ((engine synchronous-search-engine) argument) ;; core search engine (save-excursion (let ((exit-code (apply 'call-process (oref engine program) (oref engine infile) (list t ;output to current buffer. (oref engine stderr)) nil argument)) error) (cond ((and (= (oref engine success-exit-code) exit-code) (> (buffer-size) 0))) ((>= exit-code (oref engine error-exit-code)) (error (buffer-substring-no-properties (point-min) (point-max)))))))) (defmethod search-engine ((engine regular-engine) &rest argument) (let ((okurigana (or skk-henkan-okurigana skk-okuri-char)) l) (with-temp-buffer (if (core-engine engine argument) (progn (forward-char 1) (and (setq l (skk-compute-henkan-lists okurigana)) (cond ((and okurigana skk-henkan-okuri-strictly) (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l))))))))) (defmethod search-engine ((engine grep-engine) &rest argument) (let ((okurigana (or skk-henkan-okurigana skk-okuri-char)) (tmparg argument) l) (with-temp-buffer (setq argument (cons (concat "^" (car tmparg) " ") nil)) (if (core-engine engine argument) (progn (while (not (eq (char-after) ?/)) (forward-char 1)) (forward-char 1) (and (setq l (skk-compute-henkan-lists okurigana)) (cond ((and okurigana skk-henkan-okuri-strictly) (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l))))))))) (defmethod search-engine ((engine look-engine) &rest argument) (with-temp-buffer (let ((word argument) opt) (and (oref engine dictionary) (nconc argument (list (oref engine dictionary)))) (and skk-look-dictionary-order (setq opt "d")) (and skk-look-ignore-case (setq opt (concat "f" opt))) (and skk-look-use-alternate-dictionary (setq opt (concat "a" opt))) (and opt (setq argument (cons (concat "-" opt) argument))) (and skk-look-termination-character (setq argument (cons (list "-t" skk-look-termination-character) argument))) (and (core-engine engine argument) (delete word (split-string (buffer-substring-no-properties (point-min) (1- (point-max))) "\n")))))) ;;;###autoload (defun skk-cdbget-search () (search-engine cdbget (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key))) ;;;###autoload (defun skk-grep-search () (search-engine grep (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key))) ;;;###autoload (defun skk-look-search () (and skk-abbrev-mode (eq (aref skk-henkan-key (1- (length skk-henkan-key))) ?*) (let ((args (substring skk-henkan-key 0 (1- (length skk-henkan-key)))) v) (if (not skk-look-use-ispell) (setq v (search-engine look args)) (setq v (skk-look-ispell args))) (if (not skk-look-recursive-search) v (let (skk-henkan-key v2 v3) (while v (let ((skk-current-search-prog-list (copy-sequence skk-search-prog-list))) (setq skk-current-search-prog-list (delete '(skk-look) skk-current-search-prog-list)) (setq skk-current-search-prog-list (delete '(skk-look-search) skk-current-search-prog-list)) (setq skk-henkan-key (car v)) (while skk-current-search-prog-list (setq v3 (skk-search) v2 (if (not skk-look-expanded-word-only) (skk-nunion v2 (cons (car v) v3)) (if v3 (skk-nunion v2 (cons (car v) v3)) v2))))) (setq v (cdr v))) v2))))) (provide 'skk-exsearch) ;;; skk-exsearch.el ends here ddskk-15.2/experimental/skk-exserv.el0000644000570400056700000002041611701311061017715 0ustar kitamotoopenlab;;; skk-exserv.el --- SKK $B%5!<%P!<$N$?$a$N%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, ;; 1997, 1998, 1999, 2000 ;; Masahiko Sato ;; NAKAJIMA Mikio ;; ;; Author: Masahiko Sato ;; Maintainer: NAKAJIMA Mikio ;; Version: $Id: skk-exserv.el,v 1.10 2012/01/05 12:06:09 skk-cvs Exp $ ;; Keywords: japanese ;; Last Modified: $Date: 2012/01/05 12:06:09 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; This file needs eieio package (which provides CLOS like OO ;; programming) that can be found at; ;; ;; ftp://ftp.ultranet.com/pub/zappo ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars) (require 'static)) (require 'eieio) (require 'skk-exsearch) (defclass network-search-engine (search-engine) ((host :initarg :host :initform "localhost" :documentation "Host name.") (service :initarg :service :initform nil :documentation "Name of the service desired, or an integer specifying a port number to connect to.") (process-name :initarg :process-name :initform nil :documentation "Name of process. It is modified if necessary to make it unique.") (process initarg :process :initform nil :documentation "Process object that belongs to program.") (buffer :initarg :buffer :initform nil :documentation "The buffer (or buffer-name) to associate with the process.\ Process output goes at end of that buffer, unless you specify\ an output stream or filter function to handle the output.\ buffer may be also nil, meaning that this process is not associated\ with any buffer.")) "A class of Network search engine via TCP connection.") (defclass dbskkd-engine (network-search-engine) ((service :initarg :service :initform "skkserv") (process-name :initarg :process-name :initform "dbskkd") (buffer :initarg :buffer :initform (lambda () (get-buffer-create " *dbskkd*"))) (found :initform 1 :documentation "A magic number that indicates the server found a candidate.") (not-found :initform 4 :documentation "A magic number that indicates the server did not find a candidates.") (coding-system :initarg :coding-system :initform (lambda () (cdr (assoc "euc" skk-coding-system-alist))))) "A class of dbskkd type server search engine via TCP connection. Output of this type is a line that contains a magic number and candidates that are delimited by slash.") (defvar dbskkd (make-instance dbskkd-engine) "*dbskkd server object.") (defvar skk-exserv-list (list dbskkd) "*Add other SKK server objects if you like.") (defun skk-open-server () ;; return active server object. (while (and (car skk-exserv-list) (not (server-opened-p (car skk-exserv-list))) (not (open-server (car skk-exserv-list))) (setq skk-exserv-list (cdr skk-exserv-list)))) (car skk-exserv-list)) (defmethod server-opened-p ((engine network-search-engine)) (with-slots (process) engine (and process (eq (process-status process) 'open)))) (defmethod open-server ((engine network-search-engine)) ;; Return t if process is opened. (with-slots (process coding-system) engine (condition-case nil (progn (setq process (open-network-stream (oref engine process-name) (oref engine buffer) (oref engine host) (oref engine service))) (if (not process) nil (process-kill-without-query process) (static-cond ((featurep 'xemacs) (set-process-input-coding-system process coding-system) (set-process-output-coding-system process coding-system)) (t (set-process-coding-system process coding-system coding-system))) (oset engine process process) (eq (process-status process) 'open))) (error nil)))) (defmethod disconnect-server ((engine dbskkd-engine)) (with-slots (process-name) engine (if (eq (process-status process-name) 'open) (progn (process-send-string process-name "0") (accept-process-output (get-process process-name)))))) ;;;###autoload (defun skk-server-version () (interactive) (if (interactive-p) (message (skk-server-version)) (server-version (car skk-exserv-list)))) (defmethod server-version ((engine dbskkd-engine)) (or skk-exserv-list (skk-error "Lack of host information of SKK server" "SKK $B%5!<%P!<$N%[%9%H>pJs$,$"$j$^$;$s(B" )) (or (skk-open-server) (skk-error "Cannot open connection to SKK server" "SKK $B%5!<%P!<$H%3%M%/%7%g%s$rD%$k$3$H$,$G$-$^$;$s(B")) (save-excursion (unwind-protect (progn (set-buffer (oref engine buffer)) (let (v) (erase-buffer) ;; $B%5!<%P!<%P!<%8%g%s$rF@$k!#(B (process-send-string (oref engine process-name) "2") (while (and (server-opened-p engine) (eq (buffer-size) 0)) (accept-process-output)) (setq v (buffer-string)) (erase-buffer) ;; $B%[%9%HL>$rF@$k!#(B (process-send-string (oref engine process-name) "3") (while (and (server-opened-p engine) (eq (buffer-size) 0)) (accept-process-output)) (goto-char (point-min)) (format (concat "SKK SERVER version %s" (if skk-japanese-message-and-error "($B%[%9%HL>(B %s)" "running on HOST %s")) v (buffer-string) ))) (erase-buffer)))) ;;;###autoload (defun skk-exserv-search () (let ((server (skk-open-server))) (and server (search-server server)))) (defmethod search-server ((engine dbskkd-engine)) (let ((key (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (okurigana (or skk-henkan-okurigana skk-okuri-char))) (with-current-buffer (oref engine buffer) (let (l) (erase-buffer) (process-send-string (oref engine process-name) (concat "1" key " ")) (while (and (server-opened-p engine) (eq (buffer-size) 0)) (accept-process-output)) ;; found key successfully, so check if a whole line is received. (if (and (eq (char-after 1) ?1) (eq (char-after (1- (point-max))) ?\n)) (progn (goto-char (point-min)) (forward-char 2) (and (setq l (skk-compute-henkan-lists okurigana)) (cond ((and okurigana skk-henkan-okuri-strictly) ;; $BAw$j2>L>$,F10l$N%(%s%H%j$N$_$rJV$9!#(B (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l)))))))))) ;;;###autoload (defun skk-adjust-search-prog-list-for-server-search (&optional non-del) ;; skk-exserv-list $B$,(B nil $B$G$"$l$P!"(B ;; skk-search-prog-list $B$+$i(B skk-exserv-search $B$r(B car $B$K;}$D%j%9%H$r>C$9!#(B ;; non-nil $B$G$"$l$P!"2C$($k!#(B (if skk-exserv-list (if (null (assq 'skk-exserv-search skk-search-prog-list)) ;; skk-search-prog-list $B$,(B nil $B$H$$$&$3$H$O$^$:$J$$$@$m$&$,!"G0$N$?(B ;; $B$a!"(Bsetq $B$7$F$*$/!#(B (setq skk-search-prog-list ;; $BKvHx$KIU$1$k!#KvHx$K$O(B (skk-okuri-search) $B$r;}$C$F$-$?$$?M(B ;; $B$b$$$k$+$b!#%*%W%7%g%s$GIU$1$k>l=j$rJQ99$9$k$h$&$K$7$?J}$,(B ;; $BNI$$!)(B (nconc skk-search-prog-list (list '(skk-exserv-search))))) (if (not non-del) (remove-alist 'skk-search-prog-list 'skk-exserv-search)))) ;;(add-hook 'skk-mode-hook 'skk-adjust-search-prog-list-for-server-search) (add-hook 'kill-emacs-hook (function (lambda () (disconnect-server (car skk-exserv-list))))) (run-hooks 'skk-exserv-load-hook) (provide 'skk-exserv) ;;; Local Variables: ;;; eval: (require 'eieio) ;;; End: ;;; skk-exserv.el ends here ddskk-15.2/experimental/skk-ja-names.el0000644000570400056700000000645412161163443020114 0ustar kitamotoopenlab;; skk-ja-names.el --- localization $B$N2DG=@-$K4X$9$k>.$5$J;n$_(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2010 SKK Development Team ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; 21 $B@$5*$K$J$j!"%"%W%j%1!<%7%g%s$N(B localization $B$O(B $B0lHLE*$J$b$N$K$J$j(B ;; $B$^$7$?$,!"(BGNU Emacs $B$O4pK\E*$K1Q8lCN<1$,A0Ds$H$5$l$F$$$^$9(B ($B%I%-%e%a(B ;; $B%s%H$N0lIt$O?t3X1Q8l$NCN<1$rA0Ds$K$9$i$7$F$$$^$9(B)$B!#(B ;; $B$3$N%U%!%$%k$O(B SKK $B$N%3%^%s%IL>!&%*%W%7%g%sL>$r(B localize $B$9$k$3$H$G(B ;; $B%f!<%6!<$KMxE@$,$"$k$+$I$&$+$r3N$+$a$k$?$a$K@_CV$5$l$^$7$?!#$h$$L?L>(B ;; $BK!$K;j$k$^$G$O>/$J$/$H$b(B experimental $B$H$7$^$9!#(B ;; $B:#$N$H$3$m;W$$$D$/4pK\J}?K(B ;; 1. $B=i?4$NF~NO$OEvA3A0$NIU$1J}$,$h$$$HA[A|$5$l$k!#(B ;;; Code: (defalias 'SKK$B%b!<%I(B 'skk-mode) (defalias 'SKK$B$N%P!<%8%g%s(B 'skk-version) (defalias 'SKK$B$N%P%0$rJs9p$9$k(B 'skk-submit-bug-report) (defalias 'SKK$B$N%A%e!<%H%j%"%k(B 'skk-tutorial) (defvaralias 'SKK$B4pK\@_Dj(B-$B8D?M%U%!%$%k$rCV$/%G%#%l%/%H%jL>(B 'skk-user-directory) (defvaralias 'SKK$B%-!<@_Dj(B-$B%j%?!<%s%-!<$r3NDj$K;H$&(B? 'skk-egg-like-newline) (defvaralias 'SKK$B%-!<@_Dj(B-$BA08uJdI=<($9$k%-!<72(B 'skk-egg-like-newline) (defvaralias 'SKK$B%-!<@_Dj(B-$B3NDj$K;H$&%-!<(B 'skk-kakutei-key) (defvaralias 'SKK$B<-=q@_Dj(B-L$B<-=q$N%U%!%$%kL>(B 'skk-large-jisyo) (defvaralias 'SKK$B<-=q@_Dj(B-CDB$B<-=q$N%U%!%$%kL>(B 'skk-cdb-large-jisyo) (defvaralias 'SKK$B<-=q@_Dj(B-$B8D?M<-=q$r6&M-$9$k(B? 'skk-share-private-jisyo) (defvaralias 'SKK$BJQ49@_Dj(B-$BAw$j2>L>$,@5$7$$8uJd$rM%@h$9$k(B? 'skk-henkan-strict-okuri-precedence) (defvaralias 'SKK$BJQ49@_Dj(B-$BM>7W$JAw$j2>L>$N=hM}J}K!$rA*$V(B! 'skk-check-okurigana-on-touroku) (defvaralias 'SKK$BI=<(@_Dj(B-$B%$%s%i%$%sI=<($9$k(B? 'skk-show-inline) (defvaralias 'SKK$BI=<(@_Dj(B-$B%D!<%k%F%#%C%WI=<($9$k(B? 'skk-show-inline) (defvaralias 'SKK$BI=<(@_Dj(B-$BF|K\8l%a%K%e! ;; Copyright (C) 2011 Tsuyoshi Kitamoto ;; Author: HAMANO Kiyoto ;; Maintainer: Tsuyoshi Kitamoto ;; Version: $Id: skk-search-web.el,v 1.4 2012/09/07 05:58:06 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2012/09/07 05:58:06 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B;HMQJ}K!$r#2$D@bL@$7$^$9!#9%$_$NJ}$r;HMQ$7$F$/$@$5$$!#(B ;; (1) $B$+$J4A;zJQ49$N8uJd$K(B Google $B%5%8%'%9%H$rMxMQ$9$k(B ;; skk-search-prog-list $B$N:G8eJ}$K(B skk-search-web() $B$rCV$/$3$H$K$h$j!"(B ;; $B8D?M<-=q$d6&M-<-=q$KEPO?$5$l$F$$$J$$8+=P$78l$r(B Google $B%5%8%'%9%H(B ;; $B$7$^$9!#(B ;; (add-to-list 'skk-search-prog-list ;; '(skk-search-web 'skk-google-suggest) ;; t) ;; (2) $B<-=qEPO?%b!<%I$X$NFMF~;~$N=i4|CM$K(B Google $B%5%8%'%9%H$rMxMQ$9$k(B ;; (setq skk-read-from-minibuffer-function ;; (lambda () ;; (car (skk-google-suggest skk-henkan-key)))) ;; $B"(4X?t(B skk-google-suggest $B$O(B skk-google-cgi-api-for-japanese-input $B$d(B ;; skk-wikipedia-suggest $B$X(B ;; $BCV$-49$(2DG=$G$9!#(B ;;; $B $B$5$s$,(B ;; $B=q$$$?5-;v(B http://d.hatena.ne.jp/khiker/20100128/google_suggest $B$G$9!#(B ;; $B2~JQ!"8x3+$r2w$/>5Bz$7$F$$$?$@$$$?(B HAMANO Kiyoto $B$5$s$K46e]*\\)\"" nil t) (setq list (cons (buffer-substring (match-beginning 1) (match-end 1)) list))) (nreverse list)))) (defun skk-wikipedia-suggest (word) (let* ((jsonp (skk-url-retrieve (concat "http://ja.wikipedia.org/w/api.php" "?action=opensearch" "&format=json" "&search=" (url-hexify-string (encode-coding-string word 'utf-8))) 'utf-8)) (json (json-read-from-string jsonp)) ;; ["$B$_$@$7$4(B" ["$B8uJd(Ba" "$B8uJd(Bb" "$B8uJd(Bc"]] ;; $B"(!V$_$@$7$4!W$,4A;z$G$"$l$PMM!9$J8uJd$,F@$i$l$k$,!"(B ;; $BJ?2>L>$@$H$"$^$j%R%C%H$7$J$$!#$=$N$?$a!"$+$J4A;z(B ;; $BJQ49$NMQES$K$OIT8~$-$+$b!#(B (ary (aref json 1)) list) (dotimes (i (length ary)) (setq list (cons (aref ary i) list))) (nreverse list))) ;; (defun skk-search-amazon-suggest (word) ;; "" ;; (let* ((jsonp (skk-url-retrieve ;; (concat "http://completion.amazon.co.jp/search/complete" ;; "?method=completion" ;; "&search-alias=aps" ;; "&mkt=6" ;; "&q=" (url-hexify-string ;; (encode-coding-string word 'utf-8))) ;; 'utf-8)) ;; (json (json-read-from-string jsonp))) ;; json)) ;;;; for skk-search-prog-list ;; (add-to-list 'skk-search-prog-list ;; '(skk-search-web 'skk-google-cgi-api-for-japanese-input) ;; t) ;; (add-to-list 'skk-search-prog-list ;; '(skk-search-web 'skk-google-suggest ;; t) (defun skk-search-web (function) (funcall function skk-henkan-key)) ;;;; for $B<-=qEPO?%b!<%I(B (setq skk-read-from-minibuffer-function (lambda () (car (skk-google-cgi-api-for-japanese-input skk-henkan-key) ;; (skk-google-suggest skk-henkan-key) ))) (provide 'skk-search-web) ;;; skk-search-web.el ends here ddskk-15.2/experimental/skk-w3m.el0000644000570400056700000010254711701311063017117 0ustar kitamotoopenlab;;; skk-w3m.el --- SKK search using w3m-search -*- coding: euc-jp -*- ;; Copyright (C) 2001 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-w3m.el,v 1.35 2012/01/05 12:06:11 skk-cvs Exp $ ;; Keywords: japanese ;; Created: Apr. 12, 2001 (oh, its my brother's birthday!) ;; Last Modified: $Date: 2012/01/05 12:06:11 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; w3m (http://w3m.sourceforge.net/) ¤òÍøÍѤ·¡¢Emacs ¤ÎÃæ¤«¤é Web ¸¡ ;; º÷¥¨¥ó¥¸¥ó¤Ë¤è¤ë¸¡º÷¤ò¤·¡¢¸¡º÷·ë²Ì¤ÎÃæ¤«¤é SKK ¤Î¸õÊä¤È¤·¤Æ¼è¤ê½Ð ;; ¤·¤¿¤¤¤â¤Î¤òÀÚ¤ê½Ð¤·¤ÆÍøÍѤ¹¤ë¥×¥í¥°¥é¥à¤Ç¤¹¡£ ;; ;; skk-w3m-use-w3m-backend ¤¬ non-nil ¤Ç¤¢¤ì¤Ð¡¢w3m ¤ò backend ¥ª¥× ;; ¥·¥ç¥óÉÕ¤­¤Çµ¯Æ°¤·¤Æ w3m ¤ÈľÀܸò¿®¤·¤Þ¤¹¡£ ;; nil ¤Ç¤¢¤ì¤Ð emacs-w3m (http://emacs-w3m.namazu.org/) ¤ò·Ðͳ¤·¤Æ ;; w3m ¤òÍøÍѤ·¤Þ¤¹ (emacs-w3m ¤Ç¤Ï w3m ¤ò backend ¤Çư¤«¤·¤Æ¤¤¤Þ¤»¤ó)¡£ ;; w3m backend ¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢¸¡º÷¤ÎÅÙËè¤Ë w3m ¤òµ¯Æ°¤¹¤ëɬÍפ¬¤Ê¤¯ ;; ¤Ê¤ê¡¢¥×¥í¥»¥¹¤Îµ¯Æ°¡¢½ªÎ»¤Ëȼ¤Ê¤¦¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤ò¸º¤é¤¹¤³¤È¤¬¤Ç¤­¤Þ ;; ¤¹¡£ ;; w3m backend ¤Ï³«È¯Ãæ¤Ç¡¢º£¸åÂçÉý¤Ê»ÅÍÍÊѹ¹¤¬¹Ô¤Ê¤ï¤ì¤ë²ÄǽÀ­¤â¤¢¤ê ;; ͽÃǤòµö¤·¤Þ¤»¤ó¤¬¡¢°ìÊý¤Ç emacs-w3m ¤â³«È¯¤Î¥¹¥Ô¡¼¥É¤¬Áᤤ¥×¥í¥°¥é ;; ¥à¤Ç¤¹¡£ÊÑÆ°¤¹¤ëÍ×ÁǤϾ¯¤Ê¤¤Êý¤¬¡¢ÍÍ¡¹¤Ê´Ä¶­¤Ë¹ç¤¦²ÄǽÀ­¤¬¾¯¤·¤Ç¤â¾å ;; ¤¬¤ë¤Î¤Ç¡¢²Äǽ¤Ê¸Â¤ê skk-w3m-use-w3m-backend ¤ò non-nil ¤Ç»ÈÍѤ¹¤ë¤³ ;; ¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£ ;; ;; ;; ¤³¤Î¥Õ¥¡¥¤¥ë¤ò SKK-MK ¤¬¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥Ô¡¼¤· (¥ê¥ó¥¯ ;; ¤¬»È¤¨¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ç¤Ï SKK-MK ¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ç ;; ln -s ./experimental/skk-w3m.el . ;; ¤·¤¿Êý¤¬Îɤ¤¤«¤â¤·¤ì¤Þ¤»¤ó)¡¢¸å¤ÏÉáÄÌ¤Ë make install ¤¹¤ë¤À¤±¤Ç¤¹¡£ ;; ;; ;; skk-search-prog-list ¤Ë (skk-w3m-search "goo-daijirin") ¤Î¤è¤¦¤Ê ;; Í×ÁǤòÄɲä·¤Þ¤¹¡£Ä̾¾¤Î¤É¤Î skk search engine ¤è¤ê¤âºÇ¤âÃÙ¤¤ ;; ¤Î¤Ç¡¢ºÇ¤âºÇ¸å¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£¤³¤ó¤Ê´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£ ;; ;; (setq skk-search-prog-list ;; '((skk-search-jisyo-file skk-jisyo 0 t) ;; (skk-search-server skk-aux-large-jisyo 10000) ;; (skk-w3m-search "goo-daijirin") ;; (skk-w3m-search "goo-exceed-eiwa"))) ;; ;; skk-w3m-search ¤Î°ú¿ô¤Ï¸¡º÷¥¨¥ó¥¸¥ó¤Î¼ïÎà¤òʸ»úÎó¤Ç»ØÄꤷ¤Þ¤¹¡£ ;; ⤷¡¢skk-w3m-search-engine-alist ¤ËÂбþ¤¹¤ë¥¨¥ó¥È¥ê¤¬É¬ÍפǤ¹¡£ ;; ;; skk-w3m.el ¤Ç¤Ï search-engine Ëè¤Ë¸¡º÷·ë²Ì¤ò cache ¤·¤Þ¤¹¡£ ;; (skk-w3m-search "goo-daijirin" t) ¤Î¤è¤¦¤Ë `skk-w3m-search' ¤ÎÂè ;; Æó°ú¿ô¤Ë non-nil argument ¤ò»ØÄꤹ¤ë¤È cache ¤ò¹Ô¤Ê¤ï¤º¡¢Ëè²ó w3m ;; ¤Ë¸¡º÷¤ò¤µ¤»¤Þ¤¹¡£ ;; ;; ;; o ¤È¤ê¤¢¤¨¤º skk-w3m-get-candidates-from-goo-exceed-waei, ;; skk-w3m-get-candidates-from-goo-exceed-eiwa, ;; skk-w3m-get-candidates-from-goo-daily-shingo ¤ò´°À®¤µ¤»¤ë¡£ ;; o ¸¡º÷¥¨¥ó¥¸¥ó¤ÎÁý²Ã¡£ ;; o lookup ¤Ï w3m-search.el ¤ò»È¤Ã¤¿ Web search ¤òÅý¹ç¤·¤Ê¤¤¤Î¤À¤í¤¦ ;; ¤«...¡£Åý¹ç¤¹¤ì¤Ð skk-lookup.el ¤Ç°ì¸µ´ÉÍý¤Ç¤­¤ë¡© ;; o w3m backend ¤Î²þÎɤËÄɽ¾¡£ ;;; Code (eval-when-compile (require 'skk-macs) (require 'skk-vars) (condition-case nil (progn (require 'w3m) (require 'w3m-search)) (error))) (defgroup skk-w3m nil "SKK w3m related customization." :prefix "skk-w3m-" :group 'skk) ;;;; user variables. (defvar skk-w3m-search-engine-alist '(("goo-daijirin" "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%s&sw=2" euc-japan skk-w3m-get-candidates-from-goo-daijirin (or ;; cannot search a key which contains okuri prefix. skk-okuri-char ;; cannot search by Web engine a string which containing SKK special `#' character. skk-num-list skk-num-recompute-key ;; this engine does not contain English entries. skk-abbrev-mode)) ("goo-exceed-waei" "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%s&sw=1" euc-japan ;;skk-w3m-get-candidates-from-goo-exceed-waei ; not yet finished. nil (or skk-okuri-char skk-num-list skk-num-recompute-key skk-abbrev-mode)) ("goo-exceed-eiwa" "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%s&sw=0" euc-japan ;;skk-w3m-get-candidates-from-goo-exceed-eiwa ; not yet finished. nil (not skk-abbrev-mode)) ("goo-daily-shingo" "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%s&sw=3" euc-japan ;;skk-w3m-get-candidates-from-goo-daily-shingo ; not yet finished. nil (or skk-okuri-char skk-num-list skk-num-recompute-key)) ("quote-yahoo" "http://quote.yahoo.com/m5?a=%s&s=%s&t=%s&c=0" nil skk-w3m-get-candidates-from-quote-yahoo ; not yet finished. nil ;(not skk-abbrev-mode) nil skk-w3m-make-query-quote-yahoo)) "*¸¡º÷¥¨¥ó¥¸¥óËè¤Î¸¡º÷¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¥¨¡¼¥ê¥¹¥È¡£ car ¤Ï¸¡º÷¥¨¥ó¥¸¥ó¤òɽ¤ï¤¹Ê¸»úÎó¡¢ 1th ¤Ï URL \(¸¡º÷ʸ»úÎó¤ò %s ¤Çɽ¤ï¤¹\), 2th ¤Ï Web page ¤Î coding-system, 3th ¤Ï¸õÊäÀÚ¤ê½Ð¤·¤Ë»ÈÍѤ¹¤ë´Ø¿ô¤òɽ¤ï¤¹¥·¥ó¥Ü¥ë¡£ 4th \(optional\) ¤Ï S ¼°¤ò»ØÄꤷ¡¢É¾²Á¤·¤Æ non-nil ¤Ë¤Ê¤ë¾õÂ֤ΤȤ­¤Ï w3m ¤Ë¸¡º÷½èÍý¤ò¤µ¤»¤Ê¤¤¡£ 5th \(optional\) ¤Ï `skk-henkan-key' ¤ò²Ã¹©¤¹¤ë´Ø¿ô¡£ 6th \(optional\) ¤Ï 1th ¤Î¥Æ¥ó¥×¥ì¡¼¥È¤Ë¹ç¤ï¤»¤¿Ê¸»úÎó¤ò½ÐÎϤ¹¤ë´Ø¿ô̾¡£ »ØÄꤵ¤ì¤¿´Ø¿ô¤Ï¡¢¸«½Ð¤·¸ì\(string\) ¤ò°ú¿ô¤È¤·¤Æ `funcall' ¤µ¤ì¤ë¡£ »ØÄ꤬¤Ê¤¤¾ì¹ç¤Ï¡¢`w3m-search-escape-query-string' ¤¬ `funcall' ¤µ¤ì¤ë¡£") (defvar skk-w3m-use-w3m-backend t "*Non-nil ¤Ç¤¢¤ì¤Ð¡¢w3m ¤ò backend ¥ª¥×¥·¥ç¥óÉÕ¤­¤Çµ¯Æ°¤·¤Æ¸¡º÷¤ò¹Ô¤Ê¤¦¡£ `start-process' ¤¬»È¤¨¤Ê¤¤ Emacs ¤Ç¤ÏÍøÍÑÉԲġ£ nil ¤Ç¤¢¤ì¤Ð¡¢emacs-w3m ¤ò·Ðͳ¤·¤Æ w3m ¤òÍøÍѤ¹¤ë (¸½ºß¤Î emacs-w3m ¤Ç¤Ï w3m ¤ò backend ¤Çư¤«¤·¤Æ¤¤¤Ê¤¤)¡£") (defvar skk-w3m-command (or (and (boundp 'w3m-command) w3m-command) "w3m") "*w3m ¥³¥Þ¥ó¥É̾¡£") (defvar skk-w3m-command-args "-backend" "*w3m ¤Î backend ¥ª¥×¥·¥ç¥ó¡£") (defvar skk-w3m-backend-command-prompt "w3m>" "*w3m backend ¤Î¥³¥Þ¥ó¥É¥×¥í¥ó¥×¥È¡£") (defvar skk-w3m-default-process-coding-system 'euc-japan "*w3m backend ¥×¥í¥»¥¹¤Î¥Ç¥£¥Õ¥©¥ë¥È¤Î coding-system¡£") (defvar skk-w3m-kill-command "quit" "*w3m backend ¤Î½ªÎ»¥³¥Þ¥ó¥É¡£") (defvar skk-w3m-no-wait nil "*Non-nil ¤Ç¤¢¤ì¤Ð¡¢w3m backend ¥×¥í¥»¥¹¤¬²¿¤«½ÐÎϤ¹¤ë¤Þ¤ÇÂÔ¤¿¤Ê¤¤¡£") (defvar skk-w3m-quote-yahoo-currency-symbol-alist ;;http://quote.yahoo.com/m5?a=1&s=USD&t=JPY&c=0 ; U.S. Dollar, Japanese Yen ;;http://quote.yahoo.com/m5?a=1&s=DEM&t=JPY&c=0 ; German Mark ;;http://quote.yahoo.com/m5?a=1&s=FRF&t=JPY&c=0 ; French Franc ;;http://quote.yahoo.com/m5?a=1&s=EUR&t=JPY&c=0 ; Euro ;;http://quote.yahoo.com/m5?a=1&s=ITL&t=JPY&c=0 ; Italian Lira .L ;;http://quote.yahoo.com/m5?a=100&s=KRW&t=JPY&c=0 ; Korean Won ;;http://quote.yahoo.com/m5?a=100&s=MYR&t=JPY&c=0 ; Malaysian Ringgit ;;http://quote.yahoo.com/m5?a=100&s=THB&t=JPY&c=0 ; Thai Baht ;;http://quote.yahoo.com/m5?a=100&s=CHF&t=JPY&c=0 ; Swiss Franc '((ARS . "Argentine Peso") (CHF . "Swiss Franc") (DEM . "German Mark") (EUR . "Euro") (FRF . "French Franc") (ITL . "Italian Lira .L") (JP . "Japanese Yen") (KRW . "Korean Won") (MYR . "Malaysian Ringgit") (THB . "Thai Baht") (USD . "U.S. Dollar")) "*") ;;;; system internal variables and constants. ;;; constants. (defconst skk-w3m-working-buffer " *skk-w3m-work*") (defconst skk-w3m-w3m-w3m-retrieve-has-new-argument-spec (condition-case nil (with-temp-buffer (w3m-w3m-retrieve "http://openlab.ring.gr.jp") nil) (wrong-number-of-arguments t) (error))) ;;; global variables (defvar skk-w3m-process nil) (defvar skk-w3m-cache nil) (defvar skk-w3m-currency-from nil) (defvar skk-w3m-currency-to nil) ;;;; macros (defmacro skk-w3m-with-work-buffer (&rest body) "Execute the forms in BODY with working buffer as the current buffer." `(with-current-buffer (w3m-get-buffer-create skk-w3m-working-buffer) ,@body)) (put 'skk-w3m-with-work-buffer 'lisp-indent-function 0) (put 'skk-w3m-with-work-buffer 'edebug-form-spec '(body)) ;;;; inline functions (defsubst skk-w3m-process-alive () (and skk-w3m-process (memq (process-status skk-w3m-process) '(run stop)))) ;;;; functions ;;; common tools ;;;###autoload (defun skk-w3m-search (search-engine &optional no-cache) (let* ((dbase (assoc search-engine skk-w3m-search-engine-alist)) (sex (nth 4 dbase)) cache v) (if (and dbase (or (not sex) ; always search this engine, or (not (eval sex)))) ; search this time. (if (and (not no-cache) (setq cache (cdr (assoc search-engine skk-w3m-cache)) cache (cdr (assoc skk-henkan-key cache)))) cache (condition-case nil (prog1 (setq v (if skk-w3m-use-w3m-backend (skk-w3m-search-by-backend dbase skk-henkan-key) (skk-w3m-search-by-emcas-w3m dbase skk-henkan-key))) (or no-cache (skk-w3m-cache search-engine skk-henkan-key v))) (error)))))) ; catch network unreachable error or something like that. (defun skk-w3m-cache (search-engine key list) (let ((cache (assoc search-engine skk-w3m-cache)) l) (cond ((and cache (setq l (assoc key cache))) (setcdr l list)) (cache (setcdr cache (cons (cons key list) (cdr cache)))) (t (setq skk-w3m-cache (cons (cons search-engine (list (cons key list))) skk-w3m-cache)))))) (defun skk-w3m-filter-string (string filters) (while filters (while (string-match (car filters) string) (setq string (concat (substring string 0 (match-beginning 0)) (substring string (match-end 0))))) (setq filters (cdr filters))) string) ;;; emacs-w3m dependent (defun skk-w3m-search-by-emcas-w3m (dbase key) (require 'w3m) (require 'w3m-search) (let ((post-process (nth 3 dbase)) (process-key (nth 5 dbase)) (query-string-function (nth 6 dbase)) (w3m-async-exec nil)) (if process-key (setq key (funcall process-key key))) (if post-process (skk-w3m-with-work-buffer (or (skk-w3m-w3m-retrieve (if query-string-function (apply 'format (nth 1 dbase) (funcall query-string-function key)) (format (nth 1 dbase) (w3m-search-escape-query-string key (nth 2 dbase))))) (error "")) (decode-coding-region (point-min) (point-max) (nth 2 dbase)) (prog1 (funcall post-process key) ;; not to enlarge working buffer (erase-buffer)))))) (defun skk-w3m-w3m-retrieve (url) (if skk-w3m-w3m-w3m-retrieve-has-new-argument-spec ;;(w3m-w3m-retrieve url no-decode no-cache post-data referer handler) (w3m-w3m-retrieve url nil t nil nil nil) (w3m-w3m-retrieve url))) ;;; w3m backend dependent (defun skk-w3m-search-by-backend (dbase key) (let (pos) (skk-w3m-with-work-buffer (or (skk-w3m-process-alive) (skk-w3m-init-w3m-backend)) (let ((process-key (nth 5 dbase)) (post-process (nth 3 dbase)) (query-string-function (nth 6 dbase))) (if (not post-process) nil (if process-key (setq key (funcall process-key key))) (if (nth 2 dbase) (skk-w3m-set-process-coding-system (nth 2 dbase))) (message "Reading...") (setq pos (skk-w3m-run-command (concat "get " (if query-string-function (apply 'format (nth 1 dbase) (funcall query-string-function key)) (format (nth 1 dbase) (skk-w3m-search-escape-query-string key (nth 2 dbase))))))) (message "Reading...done") (if pos (progn (goto-char pos) ;; not to enlarge working buffer (delete-region (point-min) (progn (beginning-of-line) (point))) (setq key (funcall post-process key))))))))) (defun skk-w3m-set-process-coding-system (coding-system) (static-cond ((featurep 'xemacs) (set-process-input-coding-system skk-w3m-process coding-system) (set-process-output-coding-system skk-w3m-process coding-system)) (t (set-process-coding-system skk-w3m-process coding-system coding-system)))) (defun skk-w3m-init-w3m-backend () (let ((process-connection-type t)) (buffer-disable-undo) ;;(insert "\nStarting w3m backend...\n\n") (skk-message "skk ¤Î¤¿¤á¤Ë w3m backend ¤òµ¯Æ°¤·¤Æ¤¤¤Þ¤¹..." "Starting w3m backend for skk...") (condition-case nil (progn (setq skk-w3m-process (start-process "skk w3m" (current-buffer) skk-w3m-command skk-w3m-command-args)) (static-cond ((and (string-match "^GNU" (emacs-version)) (string-lessp "22.0" emacs-version)) (set-process-query-on-exit-flag skk-w3m-process nil)) (t (process-kill-without-query skk-w3m-process))) (skk-w3m-set-process-coding-system skk-w3m-default-process-coding-system)) (file-error (skk-error "¥·¥¹¥Æ¥à¾å¤Ë \"%s\" ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" "Sorry, can't find \"%s\" on your system" skk-w3m-command)) (error (skk-w3m-kill 'nomsg))) (if (eq (process-status skk-w3m-process) 'exit) (progn (skk-w3m-kill 'nomsg) (skk-error "%s ¥×¥í¥»¥¹¤¬°Û¾ï½ªÎ»¤·¤Þ¤·¤¿¡£" "Process %s exited abnormally with code 1" skk-w3m-process))) (while (and (memq (process-status skk-w3m-process) '(run stop)) (goto-char (point-min)) (not (re-search-forward skk-w3m-backend-command-prompt nil t))) (accept-process-output skk-w3m-process)) ;;(or (memq (process-status skk-w3m-process) '(run stop)) ;; (skk-error "w3m backend ¥×¥í¥»¥¹¤ò¥¹¥¿¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó" ;; "Unable to start w3m backend process")) (goto-char (process-mark skk-w3m-process)) (skk-message "skk ¤Î¤¿¤á¤Ë w3m backend ¤òµ¯Æ°¤·¤Æ¤¤¤Þ¤¹...´°Î»!" "Starting w3m backend for skk...done"))) (defun skk-w3m-kill (&optional nomsg) "w3m backend ¥×¥í¥»¥¹¤ò»¦¤¹¡£" (interactive "P") (if (not (skk-w3m-process-alive)) ;; ËÌÅÍ¿À·ý¤ÎÀ¤³¦¤Ç¤¹¤Ê...¡£ (or nomsg (skk-message "w3m backend ¥×¥í¥»¥¹¤Ï´û¤Ë»à¤ó¤Ç¤Þ¤¹" "w3m backend process has already died")) (with-current-buffer (get-buffer skk-w3m-working-buffer) (unwind-protect (let ((skk-w3m-no-wait t)) (skk-w3m-run-command skk-w3m-kill-command) ;;(sit-for 1) (and (process-status skk-w3m-process) (delete-process skk-w3m-process)) ;;(setq skk-w3m-process nil) (or nomsg (skk-message "w3m backend ¥×¥í¥»¥¹¤¬»à¤Ë¤Þ¤·¤¿" "w3m backend process died"))) (kill-buffer (current-buffer)))))) (defun skk-w3m-run-command (command) ;; return last point where last command issued. (save-match-data (setq command (concat command " \n")) (let ((pmark (process-mark skk-w3m-process)) origpoint) (accept-process-output) ;; ư¤¤¤¿¥Ý¥¤¥ó¥È¤òÊݸ¤¹¤ë¤¿¤á save-excursion ¤Ï»È¤ï¤Ê¤¤¡£ (goto-char pmark) (setq origpoint (point)) (insert command) (set-marker pmark (point)) (process-send-string skk-w3m-process command) (accept-process-output (and (not skk-w3m-no-wait) skk-w3m-process)) (goto-char origpoint) (while (and (not (re-search-forward skk-w3m-backend-command-prompt pmark t)) ;; quit ¥³¥Þ¥ó¥É¤òÁ÷¤Ã¤¿¤é¥×¥í¥ó¥×¥È¤Ïµ¢¤Ã¤Æ¤³¤Ê¤¤¡£ (not (eq (process-status skk-w3m-process) 'exit))) (accept-process-output)) ;;(skk-w3m-check-errors) origpoint))) ;; just a copy of w3m-url-encode-string of w3m.el (defun skk-w3m-url-encode-string (str &optional coding) (apply (function concat) (mapcar (lambda (ch) (cond ((string-match "[-a-zA-Z0-9_:/]" (char-to-string ch)) ; xxx? (char-to-string ch)) ; printable (t (format "%%%02X" ch)))) ; escape ;; Coerce a string to a list of chars. (append (encode-coding-string str (or coding 'iso-2022-jp)) nil)))) ;; just a copy of w3m-search-escape-query-string of w3m-search.el (defun skk-w3m-search-escape-query-string (str &optional coding) (mapconcat (lambda (s) (skk-w3m-url-encode-string s (or coding skk-w3m-default-process-coding-system))) (split-string str) "+")) ;;; process functions for each databases. (defun skk-w3m-get-candidates-from-goo-daijirin (key) (save-match-data (let ((startregexp (if skk-w3m-use-w3m-backend nil ;;(format ;;"¢£¡Î%s¡Ï¤ÎÂç¼­ÎÓÂèÆóÈǤ«¤é¤Î¸¡º÷·ë²Ì¡¡ [0-9]+·ï" key) "")) (endregexp (if skk-w3m-use-w3m-backend nil ;;(format ;;"¢£¡Î%s¡Ï¤ÎÂç¼­ÎÓÂèÆóÈǤ«¤é¤Î¸¡º÷·ë²Ì¡¡ [0-9]+·ï" key) "")) (start (if skk-w3m-use-w3m-backend (point-min))) (end (if skk-w3m-use-w3m-backend (process-mark skk-w3m-process))) temp v) (if startregexp (progn (re-search-forward startregexp nil t nil) (setq start (point)))) (if endregexp (progn (re-search-forward endregexp nil t nil) (setq end (point)))) (if (not (and start end)) nil (goto-char start) (setq key (mapconcat 'char-to-string key "-*")) (setq key (format "\\(%s\\|%s\\)" ;; 8 ¿·µ¬¤Ç³«¤¯ ¤«¤ó¤­¤ç¤¦¡Ú´Ï¶¶¡Û (format "%s *¡Ú\\([^<>¡Ú¡Û]+\\)¡Û" key) ;; ¤·¤³¤¦-¤µ¤¯¤´¡½¤«¤¦¡½¡Ú»î¹Ôºø¸í¡Û ;; ¤¬¤¤¤Ï¤ó¤Ü¤·¤°¤ï¤¤¤Ï¤ó¡½¡Ú³°È¿ÙÅìæ¡Û ;; ¤Ê¤«¤ß ¡ÚÃæ¿È¡¦ÃæÌ£¡Û ;; ¤·¤³¤¦-¤µ¤¯¤´ ¡½¤«¤¦¡½ ¡Ú»î¹Ôºø¸í¡Û ;; ¤¨¤¬¤ª¤ñ¤¬¤Û¡Ú¡Ô¾Ð´é¡Õ¡Û (format "\\(\\)*%s[^¡Ú]*¡Ú\\([^<>¡Ú¡Û]+\\)¡Û *" key))) (while (re-search-forward key end t nil) ;; KEY = "\\(¤·-*¤³-*¤¦-*¤µ-*¤¯-*¤´ *¡Ú\\([^<>¡Ú¡Û]+\\)¡Û\\|\\(\\)*¤·-*¤³-*¤¦-*¤µ-*¤¯-*¤´[^<¡Ú]*¡Ú\\([^<>¡Ú¡Û]+\\)¡Û *\\)" (setq temp (skk-w3m-filter-string ;; ¡Ò²¿»þ¡Ó ;; ¡Ô¾Ð´é¡Õ (or (match-string-no-properties 2) (match-string-no-properties 4)) '("¡Ò" "¡Ó" "¡Ô" "¡Õ"))) (dolist (elm (split-string temp "¡¦")) ;; do not add a redundant candidate. (unless (member elm v) (setq v (cons elm v))))) (nreverse v))))) (defun skk-w3m-get-candidates-from-goo-exceed-waei (key) ;; SORRY, NOT YET. ;; ;; 15:¢£¡Î¤Í¤Ã¤·¤ó¡Ï¤ÎEXCEEDϱѼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; ;; 16:* ;; ;; 17: ;; ;; 18:¤Í¤Ã¤·¤ó ;; ;; 19:[clear] Ç®¿´ ;; ;; 20:[clear] zeal¡¨¡¡ardor¡¨¡¡eagerness¡¨¡¡enthusiasm¡¥¡¡¡Á¤Ê ;; ;; 21: eager¡¨¡¡ardent¡¨¡¡keen¡¥¡¡¡Á¤Ë¡¡eagerly¡¨ ;; ;; 22: earnestly¡¨¡¡intently¡¥ ;; ;; 23: ;; ;; 24:* ;; ;; 25:¢£¡Î¤Í¤Ã¤·¤ó¡Ï¤ÎEXCEEDϱѼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; (let (temp v) ;; (save-match-data ;; (if (not (re-search-forward ;; (concat "¢£\\¡Î" (regexp-quote key) "\\¡Ï¤ÎEXCEEDϱѼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì") ;; nil t nil)) ;; nil ;; (while (re-search-forward "\\[clear\\] [a-z]+\\.¡¡\\([^ a-zA-Z][^¡¥]+\\)¡¥" nil t nil) ;; (setq temp (match-string-no-properties 1)) ;; (setq temp (skk-w3m-filter-string ;; ;; [[ÊÆÏÃ]] ;; temp '("\n" "[0-9]+: +" "[¡¡ ]+" "¡Ê[¤¡-¤ó]+¡Ë" "([, a-z]+)" ;; "\\[\\[[^a-zA-Z]+\\]\\]"))) ;; (while (string-match "\\([^¡¤¡¨]+\\)¡Î\\([^¡¤¡¨]+\\)¡Ï\\([^¡¤¡¨]+\\)*" temp) ;; (setq temp (concat (substring temp 0 (match-beginning 0)) ;; (match-string-no-properties 1 temp) ;; (match-string-no-properties 3 temp) ;; "¡¤" ;; (match-string-no-properties 2 temp) ;; (match-string-no-properties 3 temp) ;; (substring temp (match-end 0))))) ;; ;; (setq v (nconc v (split-string temp "[¡¤¡¨]")))) ;; v)))) ) (defun skk-w3m-get-candidates-from-goo-exceed-eiwa (key) ;; SORRY, NOT YET. ;; ;; ;;

          ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;;
          ;; ¢£¡Îcollaborate¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;;
          ;;
          ;; ;; ;; ;; ;;
          ;; ;; col¡¦lab¡¦o¡¦rate¡¡ ;; ;;
          ;; ;; ;; ;; ;; ;;
          ;; ;; ;; ;;
          ;; ;; ;; ;; ;; ;;
          ;; ;; vi.¡¡¶¦¤ËƯ¤¯¡¨¡¡¶¦Æ±¸¦µæ¤¹¤ë¡¡(with, on, in)¡¨¡¡Å¨Â¦¡ÎÀêÎη³¡Ï¤Ë¶¨ÎϤ¹¤ë¡¥ ;; ;;
          ;; ;; ;; ;; ;; ;;
          ;; ;; collaboration¡¡ ;; ;;
          ;; ;; ;; ;; ;; ;;
          ;; ;; n.¡¡collaborationism¡¡n.¡¡collaborationist¡¡n.¡¡¡ÊŨ¦¤Ø¤Î¡Ë¶¨Îϼԡ¥ ;; ;;
          ;; ;; ;; ;; ;; ;;
          ;; ;; collaborative ;; ;;
          ;; ;; ;; ;; ;; ;;
          ;; ;; ;; ;;
          ;; ;; ;; ;; ;; ;;
          ;; ;; a.¡¡¶¦Æ±À©ºî¤Î¡¥ ;; ;;
          ;; ;; ;; ;; ;; ;;
          ;; ;; collaborator¡¡ ;; ;;
          ;; ;; ;; ;; ;; ;;
          ;; ;; n. ;; ;;
          ;;
          ;;
          ;; ¢£¡Îcollaborate¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;;
          ;; ;;
          ;; ;; ;; con¡¦tem¡¦po¡¦ra¡¦ry ;; [clear] ¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü ;; [clear] a., n.¡¡Æ±»þÂå¤Î¡Ê¿Í¡¤»¨»ï¡Ë¡¡(with)¡¨¡¡Æ±Ç¯Îð¤Î¡Ê ;; ¿Í¡Ë¡¨¡¡¸½Âå¤Î¡Ê¿Í¡Ë¡¥ ;; ;; * ;; ¢£¡Îcontemporary¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; ;; 14:¢£¡Îcollaborate¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; 15:* ;; 16: ;; 17:col¡¦lab¡¦o¡¦rate ;; 18:[clear] ¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü ;; 19:[clear] vi.¡¡¶¦¤ËƯ¤¯¡¨¡¡¶¦Æ±¸¦µæ¤¹¤ë¡¡(with, on, in)¡¨ ;; 20: Ũ¦¡ÎÀêÎη³¡Ï¤Ë¶¨ÎϤ¹¤ë¡¥ ;; 21:[clear] collaboration ;; 22:[clear] n.¡¡collaborationism¡¡n.¡¡collaborationist¡¡n.¡¡¡Ê ;; 23: Ũ¦¤Ø¤Î¡Ë¶¨Îϼԡ¥ ;; 24:[clear] collaborative ;; 25:[clear] ¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü ;; 26:[clear] a.¡¡¶¦Æ±À©ºî¤Î¡¥ ;; 27:[clear] collaborator ;; 28:[clear] n. ;; 29: ;; 30:* ;; 31:¢£¡Îcollaborate¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; ;; ¢£¡Îvery¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì¡¡ 2·ï ;; * ;; ;; 1 ¿·µ¬¤Ç³«¤¯ very ;; ;; 2 ¿·µ¬¤Ç³«¤¯ Very light ;; ;; * ;; ¢£¡Îvery¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì¡¡ 2·ï ;; ;; ¢£¡Îcontemporary¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; * ;; (save-match-data ;; (let (temp v start end) ;; (if (not (search-forward "" nil t nil)) ;; nil ;; (setq start (point)) ;; (if (search-forward "" nil t nil) ;; (setq end (point))) ;; (goto-char start) ;; (setq key (concat "" (regexp-quote key) " +¡Ú\\([^¡Ú¡Û]+\\)¡Û")) ;; (while (re-search-forward key end t nil) ;; (setq temp (skk-w3m-filter-string ;; ;; ¡Ò²¿»þ¡Ó ;; (match-string-no-properties 1) '("¡Ò" "¡Ó"))) ;; (setq v (nconc (split-string temp "¡¦") v))) ;; (nreverse v))))) ;; (save-match-data ;; (let (v) ;; (if (not (re-search-forward "[0-9]+ ¿·µ¬¤Ç³«¤¯" nil t nil)) ;; (if (re-search-forward ;; (concat "¢£\\¡Î" (regexp-quote key) "\\¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì") ;; nil t nil) ;; (setq v (skk-w3m-get-candidates-from-goo-exceed-eiwa-1))) ;; (beginning-of-line) ;; (while (re-search-forward "[0-9]+ ¿·µ¬¤Ç³«¤¯" nil t nil) ;; (backward-char) ;; (w3m-view-this-url) ;; (goto-char (point-min)) ;; (if (re-search-forward ;; (concat "¢£\\¡Î" (regexp-quote key) "\\¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì") ;; nil t nil) ;; (setq v (nconc v (skk-w3m-get-candidates-from-goo-exceed-eiwa-1)))) ;; (w3m-view-previous-page))) ;; v)) ) ;; (defun skk-w3m-get-candidates-from-goo-exceed-eiwa-1 () ;; (save-match-data ;; (let (temp temp1 temp2 temp3 tail v) ;; (while (re-search-forward ;; "\\[clear\\] [a-z]+\\.\\(, [a-z]+\\.\\)*¡¡\\([^ a-zA-Z][^¡¥]+\\)¡¥" ;; nil t nil) ;; (setq temp (match-string-no-properties 2)) ;; (setq temp (skk-w3m-filter-string ;; ;; e.x. `ÆèÀ÷¡Ê¤Ê¤Ä¤»¤ó¡Ë¹©', `(on, in)', `¡Ú·Ð±Ä¡Û' ;; temp '("\n" "[0-9]+: +" "[¡¡ ]+" "¡Ê[¤¡-¤ó]+¡Ë" "([, a-z]+)" ;; "¡Ä¤Î" "¡Ú[^¡Ú¡Û]+¡Û" "(¶¯°Õ)"))) ;; (while (string-match ;; ;; ((...)) ¤Ï°ÕÌ£¤òɽ¤ï¤¹¤è¤¦¤À¡£ ;; ;; e.x. ¥¤¥ó¥¸¥±¡¼¥¿¡¡((µ¡´ï¤Îºîư¾õÂÖ¤òɽ¼¨¤¹¤ëµ¡Ç½)) ;; ;; ³ç¸ÌÆâ¤ò¤¢¤¨¤Æ¥Õ¥£¥ë¥¿¥ê¥ó¥°¤·¤Ê¤¤¤Ç½ÐÎϤ¹¤ë¡£ ;; "\\([^¡¤¡¨]+\\)\\(¡Î\\|((\\)\\([^¡¤¡¨]+\\)\\(¡Ï\\|))\\)\\([^¡¤¡¨]+\\)*" ;; temp) ;; (setq temp (concat (substring temp 0 (match-beginning 0)) ;; (match-string-no-properties 1 temp) ;; (match-string-no-properties 5 temp) ;; "¡¤" ;; (match-string-no-properties 3 temp) ;; (match-string-no-properties 5 temp) ;; (substring temp (match-end 0))))) ;; ;; ÅöÏǡʤθ¶°ø¡Ë ¢ª ÅöÏÇ¡¤ÅöÏǤθ¶°ø ;; ;; Ʊ»þÂå¤Î¡Ê¿Í¡¤»¨»ï¡Ë¢ª Ʊ»þÂå¤Î¡¤Æ±»þÂå¤Î¿Í¡¤Æ±»þÂå¤Î»¨»ï ;; (while (string-match "\\([^¡¤¡¨]+\\)¡Ê\\([^¡¨]+\\)¡Ë\\([^¡¤¡¨]+\\)*" temp) ;; (setq temp1 (match-string-no-properties 1 temp) ;; temp2 (match-string-no-properties 2 temp) ;; temp3 (match-string-no-properties 3 temp) ;; tail (substring temp (match-end 0))) ;; (setq temp (concat (substring temp 0 (match-beginning 0)) ;; temp1 "¡¤" ;; (mapconcat 'identity ;; (mapcar ;; (function (lambda (e) (concat temp1 e temp3))) ;; (split-string temp2 "¡¤")) ;; "¡¤") ;; tail))) ;; ;; ¡ÊÌäÂê¤ò¡Ëʶµê¤µ¤»¤ë ¢ª ʶµê¤µ¤»¤ë¡¤ÌäÂê¤òʶµê¤µ¤»¤ë ;; (while (string-match "¡Ê\\([^¡¨]+\\)¡Ë\\([^¡¤¡¨]+\\)" temp) ;; (setq temp1 (match-string-no-properties 1 temp) ;; temp2 (match-string-no-properties 2 temp) ;; tail (substring temp (match-end 0))) ;; (setq temp (concat (substring temp 0 (match-beginning 0)) ;; temp2 "¡¤" ;; (mapconcat 'identity ;; (mapcar ;; (function (lambda (e) (concat e temp2))) ;; (split-string temp1 "¡¤")) ;; "¡¤") ;; tail))) ;; (setq v (nconc v (split-string temp "[¡¤¡¨]"))) ;; ;; skip to next candidate. ;; (or (re-search-forward "\\[clear\\] ¡ü+" nil t nil) ;; (goto-char (point-max)))) ;; v))) (defun skk-w3m-get-candidates-from-goo-daily-shingo (key) ;; not yet. ;; 15:¢£¡ÎSPA¡Ï¤Î¥Ç¥¤¥ê¡¼¿·¸ì¼­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; 16:* ;; 17: ;; 18:SPA ;; 19: ;; 20: ¡Îspeciality store retailer of private label apparel¡Ï ;; 21: ¼«¼Ò¥Ö¥é¥ó¥É¤Î°áÎÁÉʤòÇä¤ëľ±ÄŹ¤Î¤³¤È¡£¤Þ¤¿¡¤¤½¤Î¤è¤¦¤Ê»ö¶È·ÁÂÖ¡£°áÎÁÉʤδë ;; 22: ²è¡¦³«È¯¤«¤éÀ½Â¤¡¦Î®ÄÌ¡¦ÈÎÇä¤Ë»ê¤ë¤Þ¤Ç¤ò°ì³ç¤·¤Æ¼è¤ê°·¤¤¡¤¸ÜµÒ¤Î¥Ë¡¼¥º¤Ë¸úΨ ;; 23: Ū¤ËÂбþ¤¹¤ë¡£ ;; 24: ¢ª¥×¥é¥¤¥Ù¡¼¥È-¥Ö¥é¥ó¥É ;; 25: ¡ÌÆÈ¼«¥Ö¥é¥ó¥É°áÎÁ¤ÎÀìÌçŹÈÎÇä¶È¼Ô¤Îά¡£¥¢¥á¥ê¥«¤Î°áÎÁ¾®Ç䏤ˤè¤ë¤¸ì¤¬µ¯¸» ;; 26: ¡Í ;; 27: ;; 28: ;; 29:* ;; 30:¢£¡ÎSPA¡Ï¤Î¥Ç¥¤¥ê¡¼¿·¸ì¼­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ) (defun skk-w3m-get-candidates-from-quote-yahoo (key) ;;(if (search-forward "U.S. Markets Closed." nil t nil) ;; 'closed (re-search-forward ;; USDJPY ;; SFRJPY=X (format "]+%s\\(=X\\)?[^>]+\">%s\\(=X?\\)?" (concat skk-w3m-currency-from skk-w3m-currency-to) (concat skk-w3m-currency-from skk-w3m-currency-to))) (re-search-forward "\\([,.0-9]+\\)") (match-string-no-properties 1)) (defun skk-w3m-make-query-quote-yahoo (key) ;; http://quote.yahoo.com/m5?a=%s&s=%s&t=%s&c=0" ;; http://quote.yahoo.com/m5?a=1&s=USD&t=JPY&c=0 ; U.S. Dollar, Japanese Yen (while (string-match "," key) (setq key (concat (substring key 0 (match-beginning 0)) (substring key (match-end 0))))) (if (string-match "[.0-9]+" key) (list (match-string-no-properties 0 key) skk-w3m-currency-from skk-w3m-currency-to))) ;;;###autoload (defun skk-w3m-query-quote-yahoo ;; $# /(skk-w3m-query-quote-yahoo "USD" "JPY" 'postfix "±ß")/(skk-w3m-query-quote-yahoo "USD" "DEM" 'prefix "DM")/ ;; sfr# /(skk-w3m-query-quote-yahoo "CHF" "JPY" 'postfix "±ß")/ ;; dm# /(skk-w3m-query-quote-yahoo "DEM" "JPY" 'postfix "±ß")/ (currency-from currency-to &optional position convert-currency-to) (let (v) (setq skk-w3m-currency-from currency-from skk-w3m-currency-to currency-to) (setq v (skk-w3m-search "quote-yahoo" 'no-cache)) ;;(if (eq v 'closed) ;; (message "U.S. markets closed, cannot get currency information!") (concat (if (not convert-currency-to) currency-to) (eval (if (eq 'prefix position) convert-currency-to)) v (eval (if (eq 'postfix position) convert-currency-to))))) (provide 'skk-w3m) ;;; Local Variables: ;;; End: ;;; skk-w3m.el ends here ddskk-15.2/experimental/rdbms/0000755000570400056700000000000012434434722016413 5ustar kitamotoopenlabddskk-15.2/experimental/rdbms/awk/0000755000570400056700000000000012434434722017175 5ustar kitamotoopenlabddskk-15.2/experimental/rdbms/awk/busyu_base.awk0000644000570400056700000000346407236647543022064 0ustar kitamotoopenlab# busyu_base.awk -- # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Sep 1, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: busyu_base.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # # This file is not part of SKK yet. # # SKK is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either versions 2, or (at your option) # any later version. # # SKK is distributed in the hope that it will be useful # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # The format of output file is (delimiter is TAB); # # busyuID kanji yomi1 yomi2 yomi3 yomin... # # and how to convert; # # % gawk -f busyu.awk kanjidic | sort -n > temp4.txt # # Code /^[^#]/{ if (match($0, /T2 [ ¤¡-¤ó]+/) != 0) { temp = substr($0, RSTART + 4, RLENGTH - 4); entries = split(temp, busyu, " "); if (match($0, /B[0-9]+/) != 0) { busyuID = substr($0, RSTART + 1, RLENGTH - 1); printf("%s\t", busyuID); # busyuID } else { printf("\t"); } if (match($0, /C[0-9]+/) != 0) { busyuID2 = substr($0, RSTART + 1, RLENGTH - 1); printf("%s\t", busyuID2); # classic busyuID } else { printf("\t"); } printf("%s", $1); # kanji for (i = 1; i <= entries; i++) printf("\t%s", busyu[i]); # yomi1, yomi2, yomiN... printf("\n"); } } # end of busyu_base.awk ddskk-15.2/experimental/rdbms/awk/busyu_data.awk0000644000570400056700000000312007236647543022050 0ustar kitamotoopenlab# busyu_data.awk -- # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Sep 1, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: busyu_data.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # # This file is not part of SKK yet. # # SKK is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either versions 2, or (at your option) # any later version. # # SKK is distributed in the hope that it will be useful # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # The format of output file is (delimiter is TAB); # # busyuID kanji yomi1 yomi2 yomi3 yomin... # # and how to convert; # # % gawk -f busyu.awk kanjidic | sort -n > temp4.txt # # Code /^[^#]/{ if (match($0, /B[0-9]+/) != 0) { busyuID = substr($0, RSTART + 1, RLENGTH - 1); printf("%s\t", busyuID); # busyuID } else { printf("\t"); } if (match($0, /C[0-9]+/) != 0) { busyuID2 = substr($0, RSTART + 1, RLENGTH - 1); printf("%s\t", busyuID2); # classic busyuID } else { printf("\t"); } printf("%s\n", $1); # kanji } # end of busyu_data.awk ddskk-15.2/experimental/rdbms/awk/dicconv.awk0000644000570400056700000000671607236647543021353 0ustar kitamotoopenlab# dicconv.awk -- SKK $B<-=q$r%j%l!<%7%g%J%k%G!<%?%Y!<%9$N%F!<%V%k$KEPO?$7$d$9$$7A$KJQ49$9$k(B awk $B%9%/%j%W%H!#(B # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Apr 18, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: dicconv.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # This file is not part of SKK yet. # SKK is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either versions 2, or (at your option) # any later version. # # SKK is distributed in the hope that it will be useful # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # SKK $B<-=q$r%j%l!<%7%g%J%k%G!<%?%Y!<%9$N%F!<%V%k$KEPO?$7$d$9$$7A$KJQ49$9$k(B awk $B%9%/%j%W%H!#(B # # yomi /kouho1/kouho2/.../kouhoN/ # -> # # yomi kouho1 okuriari # yomi kouho2 okuriari # ... # yomi kouhoN okuriari # # OKURIARI $B$O(B 0 $B$+(B 1$B!#(B # # Code BEGIN { okuriari = 1; ctime = myctime(0); private = 1; } { if (NR == 1) { if (((match(FILENAME, "SKK-JISYO.L") != 0) || (match(FILENAME, "SKK-JISYO.M") != 0) || (match(FILENAME, "SKK-JISYO.S") != 0) || (match(FILENAME, "SKK-JISYO.JIS2") != 0) ) || ((match($0, /^;; Kakutei dictionary for SKK system/) != 0) || (match($0, /^;; Initial search dictionary for SKK system/) != 0) || (match($0, /^;; JIS LEVEL 2 Kanji dictionary for SKK system/) != 0) || (match($0, /^;; Large size dictionary for SKK system/) != 0) || (match($0, /^;; Medium size dictionary for SKK system/) != 0) || (match($0, /^;; Small size dictionary for SKK system/) != 0) )) { private = 0; } } else if (match($0, /^;; okuri-ari entries\.$/) != 0) okuriari = 1; else if (match($0, /^;; okuri-nasi entries\.$/) != 0) okuriari = 0; else if (match($0, /^;;/) != 0) ; # Comment line. do nothing. else if (match($0, /^[^ ][^ ]* \//) != 0) { yomi = substr($0, 1, RLENGTH - 2); temp = substr($0, RLENGTH + 1); if (okuriari && match($0, /\/\[/) != 0) { # okuriari && okuri strictly temp = substr($0, RSTART, length($0) - 3); fn1 = split(temp, entry, "/]"); for (i = 1; i <= fn1; i++) { fn2 = split(substr(entry[i], 3), parts, "/"); for (j = 2; j <= fn2; j++) { # why "\\\\\\" instead of "\\\\"? gsub(/\\/, "\\\\\\", yomi); gsub(/\\/, "\\\\\\", parts[j]); printf("1\t%s\t%s\t%s", yomi, parts[j], parts[1]); if (private) printf("\t%s", ctime); printf("\n"); } } } else { kouhos = substr(temp, 1, length(temp) - 1); fn1 = split(kouhos, kouho, "/"); for (i = 1; i <= fn1; i++) { if (okuriari) printf("1"); else printf("0"); gsub(/\\/, "\\\\\\", yomi); gsub(/\\/, "\\\\\\", kouho[i]); printf("\t%s\t%s", yomi, kouho[i]); if (private) printf("\t\\N\t%s", ctime); #`\N' is null string representation. printf("\n"); } } } } function myctime(ts, format) { format = "%a %b %e %H:%M:%S %Y"; if (ts == 0) ts = systime(); # use current time as default return strftime(format, ts); } # end of dicconv.awk ddskk-15.2/experimental/rdbms/awk/hinsi_data.awk0000644000570400056700000000512207011166567022010 0ustar kitamotoopenlabBEGIN{ OFS = "\t"; } { if ($3 != "") { printf("%s\t%s\t", $1, $2); if ($3 == "¥«¹Ô(¹Ô¤¯)") print "0"; else if ($3 == "¥«¹Ô¸ÞÃÊ") print "1"; else if ($3 == "¥¬¹Ô¸ÞÃÊ") print "2"; else if ($3 == "¥µ¹Ô(¤¹¤ë)") print "3"; else if ($3 == "¥µ¹Ô(¤¹¤ë)&̾»ì") print "3", "44"; else if ($3 == "¥µ¹Ô(¤¹¤ë)&̾»ì²½ÀÜÈø¸ì") print "3", "36"; # "3" ¤¬ 3 ¤Ä¤Ë¤Ê¤Ã¤¿¤«¤é "4","5" ¤Ï·çÈÖ¡£Ä¾¤¹¤ÎÌÌÅݤÀ¤â¤ó¡£ else if ($3 == "¥µ¹Ô¸ÞÃÊ") print "6"; else if ($3 == "¥¶¹Ô(¤º¤ë)") print "7"; else if ($3 == "¥¿¹Ô¸ÞÃÊ") print "8"; else if ($3 == "¥Ê¹Ô¸ÞÃÊ") print "9"; else if ($3 == "¥Ð¹Ô¸ÞÃÊ") print "10"; else if ($3 == "¥Þ¹Ô¸ÞÃÊ") print "11"; else if ($3 == "¥é¹Ô(²¼¤µ¤¤)") print "12"; else if ($3 == "¥é¹Ô¸ÞÃÊ") print "13"; else if ($3 == "¥ï¹Ô¸ÞÃÊ") print "14"; else if ($3 == "°ìÃÊ") print "15"; else if ($3 == "°ìÃÊ&̾»ì") print "15", "44"; # "16" ¤Ï·çÈÖ¡£ else if ($3 == "°ìư´´") print "17"; else if ($3 == "µ­¹æ") print "18"; else if ($3 == "·ÁÍÆ»ì") print "19"; else if (match($3, /·ÁÍÆ»ì²½ÀÜÈø/) != 0) print "20"; else if ($3 == "·ÁÍÆÆ°»ì") print "21"; else if (($3 == "·ÁÍÆÆ°»ì&̾»ì") || ($3 == "·ÁÍÆÆ°»ì,̾»ì")) print "21", "44"; # sort ¤·¤Æ uniq ¤¹¤ë¤È²¿¸Î¤«¤³¤¤¤Ä¤¬½Ð¤Æ¤³¤Ê¤¤¡£ else if ($3 == "·ÁÍÆ»ì²½ÀÜÈøÆ°»ì") print "22"; else if ($3 == "·ÁÍÆÆ°»ì(¤¿¤ë)") print "23"; else if ($3 == "·ÁÍÆÆ°»ì²½ÀÜÈø¸ì") print "24"; else if ($3 == "¸Çͭ̾»ì") print "25"; else if ($3 == "½õ¿ô»ì") print "26"; else if ($3 == "¿Í̾") print "27"; else if ($3 == "¿Í̾&ÃÏ̾") print "27", "42"; # "28" ¤Ï·çÈÖ¡£ else if ($3 == "¿ô»ì") print "29"; else if ($3 == "Àܳ»ì,´¶Æ°»ì") print "30"; # "Àܳ»ì" ¤È "Àܳ¸ì" ¤Ï°ã¤¦¤Î¤«¡© else if ($3 == "ÀÜÆ¬¸ì") print "31"; else if ($3 == "ÀÜÆ¬¸ì(³Æ)") print "32"; # ¤È¤ê¤¢¤¨¤º else if (match($3, /ÀÜÆ¬¸ì\(¤ª/) != 0) print "31"; else if ($3 == "ÀÜÆ¬½õ¿ô»ì") print "33"; else if ($3 == "ÀÜÆ¬¿ô»ì") print "34"; else if ($3 == "ÀÜÆ¬ÃÏ̾") print "35"; else if ($3 == "ÀÜÈø¸ì") print "36"; else if ($3 == "ÀÜÈø½õ¿ô»ì") print "37"; else if ($3 == "ÀÜÈø¿Í̾") print "38"; else if ($3 == "ÀÜÈøÃÏ̾") print "39"; else if ($3 == "ÀÜÈøÆ°»ì") print "40"; else if ($3 == "ñ´Á»ú") print "41"; else if ($3 == "ÃÏ̾") print "42"; else if ($3 == "Éû»ì") print "43"; else if ($3 == "̾»ì") print "44"; else if ($3 == "Íè(¤­)") print "45"; else if ($3 == "Íè(¤¯)") print "46"; else if ($3 == "Íè(¤³)") print "47"; else if ($3 == "Ï¢Âλì") print "48"; # sort ¤·¤Æ uniq ¤¹¤ë¤È²¿¸Î¤«¤³¤¤¤Ä¤é 3 ¤Ä¤¬½Ð¤Æ¤³¤Ê¤¤¡£ else if ($3 == "°Ù(¤·)") print "49"; else if ($3 == "°Ù(¤¹)") print "50"; else if ($3 == "°Ù(¤»)") print "51"; } } ddskk-15.2/experimental/rdbms/awk/kcode.awk0000644000570400056700000000253307236647543021004 0ustar kitamotoopenlab# kcode.awk -- # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Sep 1, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: kcode.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # # This file is not part of SKK yet. # # SKK is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either versions 2, or (at your option) # any later version. # # SKK is distributed in the hope that it will be useful # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # The format of output file is (delimiter is TAB); # # kanji JIScode Unicode # # and how to convert; # # % gawk -f kcode.awk kanjidic > temp5.txt # # Code /^[^#]/{ if (match($0, /U[0-9a-z]+/) != 0) { unicode = substr($0, RSTART + 1, RLENGTH - 1); } else unicode = ""; printf("%s\t%s\t%s\n",$1, $2, unicode); } # end of kcode.awk ddskk-15.2/experimental/rdbms/awk/stroke.awk0000644000570400056700000000252307236647543021225 0ustar kitamotoopenlab# stroke.awk -- # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Sep 1, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: stroke.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # # This file is not part of SKK yet. # # SKK is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either versions 2, or (at your option) # any later version. # # SKK is distributed in the hope that it will be useful # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # The format of output file is (delimiter is TAB); # # kanji stroke # # and how to convert; # # % gawk -f stroke.awk kanjidic | sort -n > temp6.txt # # Code /^[^#]/{ if (match($0, /S[0-9]+/) != 0) { stroke = substr($0, RSTART + 1, RLENGTH - 1); } else stroke = ""; printf("%s\t%s\n", stroke, $1); } # end of stroke.awk ddskk-15.2/experimental/rdbms/Makefile0000644000570400056700000000376307011166531020057 0ustar kitamotoopenlab# # Makefile for rdbms # SHELL = /bin/sh #NKF = nkf -e GAWK = jgawk SQLSHELL = psql CREATEDB = createdb PJISYO = ~/.skk-jisyo #KAKUTEI_JISYO = ~/.skk-jisyo.kakutei #INITIAL_JISYO = ~/.skk-jisyo.initial LJISYO = /usr/local/share/skk/SKK-JISYO.L 2JISYO = /usr/local/share/skk/SKK-JISYO.JIS2 KANJIDIC = kanjidic/kanjidic PUBDIC = pubdic+/pubdic.p # do NOT edit the following. all: maintable busyu kcode stroke hinsi .PHONY: all maintable: $(GAWK) -f ./awk/dicconv.awk $(PJISYO) | sort | uniq - > ./tmp/private.txt $(GAWK) -f ./awk/dicconv.awk $(LJISYO) | sort | uniq - > ./tmp/large.txt # $(NKF) $(2JISYO) | $(GAWK) -f ./awk/dicconv.awk - | sort | uniq - > ./tmp/jis2.txt #-$(NKF) $(KAKUTEI_JISYO) | $(GAWK) -f ./awk/dicconv.awk - | sort | uniq - > ./tmp/kakutei.txt #-$(NKF) INITIAL_JISYO | $(GAWK) -f ./awk/dicconv.awk - | sort | uniq - > ./tmp/initial.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/createtbl.sql busyu: $(GAWK) -f ./awk/busyu_base.awk $(KANJIDIC) | sort -n > ./tmp/busyu_base.txt $(GAWK) -f ./awk/busyu_data.awk $(KANJIDIC) | sort -n > ./tmp/busyu_data.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/busyu.sql kcode: $(GAWK) -f ./awk/kcode.awk $(KANJIDIC) > ./tmp/kcode.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/kcode.sql stroke: $(GAWK) -f ./awk/stroke.awk $(KANJIDIC) | sort -n > ./tmp/stroke.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/stroke.sql hinsi: $(GAWK) 'BEGIN {OFS = "\t";}{split($$3, entry, "/"); print $$1, $$2, entry[1]}' $(PUBDIC) > ./tmp/temp.txt #$(GAWK) '{print $$3}' ./tmp/temp.txt | sort | uniq -d | \ # $(GAWK) '$$1 !~/^$$/{printf("%d\t%s\n", NR - 2, $$0)}' - > ./tmp/hinsi_base.txt $(GAWK) -f ./awk/hinsi_data.awk ./tmp/temp.txt > ./tmp/hinsi_data.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/hinsi.sql .PHONY: clean clean: -rm -f *~ ./tmp/private.txt ./tmp/large.txt ./tmp/jis2.txt ./tmp/busyu_base.txt \ ./tmp/busyu_data.txt ./tmp/kcode.txt ./tmp/stroke.txt ./tmp/kakutei.txt \ ./tmp/initial.txt ./tmp/temp*.txt /tmp/hinsi_data.txt ddskk-15.2/experimental/rdbms/README.rdbms0000644000570400056700000002027507011166534020405 0ustar kitamotoopenlab-*- text -*- skk-rdbms.el $B$K$D$$$F(B $Date: 1999/11/07 03:09:16 $ $BCfEg44IW(B $Id: README.rdbms,v 1.1 1999/11/07 03:09:16 minakaji Exp $ 1. What's this? Emacs $B$N%P%C%U%!$NCf$G(B PostgreSQL $B$N%7%'%k$G$"$k(B psql $B$rAv$i$;$k$3$H$K(B $B$h$j!"(BPostgreSQL $B$N%G!<%?%Y!<%95!G=$rMxMQ$7$?JQ49$re!"3HD%JQ49(B ($B0UL#$r=PNO$7$?$j(B) $B$r9T$J$&(B $B$3$H$G$9!#(B $B8=:_$N$H$3$m!"ItH!#(B) $B$J$I$,%5%]!<%H$5$l$F$$$^$9!#o$K/!98E$$%^%7%s$G3+H/!"u67$G$9!#(B $B8D?ME*$K$O!"(B (1)psql $B$H$N%W%m%;%9DL?.$N$?$a$K!"(Baccept-process-output $B$r2?EY$b;HMQ$9(B $B$k$J$I7k9=$b$?$b$?$7$F$$$k$N$r@0M}$7$?$$(B ($B8=>u$G$O$=$&$7$J$$$H$&$^(B $B$/F0$+$J$$$N$G!"$7$g$&$,$J$$$1$l$I(B)$B!#(B (2)$B%9%?%s%I%"%m%s$N%^%7!<%s$G!"%m!<%+%k%[%9%H$G(B postmaster $B$rF0$+$7$F(B $B$$$k!"$H$$$&Hf3SE*7C$^$l$?4D6-$G$NJQ49B.EY$O7h$C$7$F0-$/$O$J$$$b$N(B $B$N!"JL%[%9%H$G(B postmaster $B$,F0$$$F$$$k$N$G$"$l$P!"(B($B%M%C%H%o!<%/$N:.(B $B$_6q9g$K$b$h$k$N$G$"$m$&$,(B) $BB.EYE*$K$OITMx$K$J$k$G$"$m$&$3$H(B ($BBN46(B $B$7$?$3$H$,$J$$$N$G!"J,$jFq$$$,(B)$B!#(B (3)SKK + PostgreSQL $B$K$h$k8D?M<-=q%F!<%V%k$NJQ49$K$D$$$F!"$I$&$7$F$bB.(B $BEYE*$K%f!<%6!<$,%G%a%j%C%H$r46$8$k$N$G$"$l$P!"(B~/.skk-jisyo $B$H$NJ;(B $BMQ$,$G$-$k$h$&$K$9$k$+!#(B (4)$B99$J$kJQ498zN($N%"%C%W$r?^$C$F$f$/$?$a$K$O$I$&$7$?$iNI$$$+!#(B $B$J$I$,EvLL$NLdBj$G$"$k$H9M$($F$$$^$9!#(BEmacs Lisp $B$O$H$b$+$/!"(BSQL $B$O$+(B $B$J$j$N=i?4o$K:Q$s$G$$$F$b!"(B $B$H$-$I$-(B make $B$,%(%i!<$@$H4*0c$$$7$FA4$F$N%F!<%V%k$r:n$i$:$K%9%H%C(B $B%W$9$k>l9g$,$"$j$^$9$N$G!"(B-k $B%*%W%7%g%s$r;XDj$7$F$$$^$9!#(B (2)make $B$r$N%F!<%V%k$OI,MW(B $B$K1~$8!"(Bcron $B$J$I$G(B VACUUM $B$r$+$1$F2<$5$$(B ($B8D?M<-=q%F!<%V%k0J30$O99(B $B?7$7$J$$$s$@$1$I!"$=$NI,MW$,$"$k$N$+$7$i$s!)(B)$B!#(B (5)skk-auto.el $B$G%5%]!<%H$5$l$k<+F0Aw$j=hM}5!G=$b%G!<%?%Y!<%98!:w$KCV(B $B$-49$($F%5%]!<%H$5$l$F$$$^$9$,!"%*!<%P!<%X%C%I$,7k9=Bg$-$$$N$G!"(B skk-search-prog-list $BCf!"(B(skk-okuri-search) $B$rCV$/0LCV$O!"(B (setq skk-search-prog-list '((skk-rdbms-search-jisyo-table skk-rdbms-private-jisyo-table) (skk-rdbms-sahen-search) (skk-rdbms-search-jisyo-table skk-rdbms-public-jisyo-table) (skk-okuri-search) (skk-rdbms-search-jisyo-table skk-rdbms-jis2-jisyo-table) )) $B$N$h$&$K$9$k$N$,NI$$$+$b$7$l$^$;$s!#(B (6)skk-kakutei-jisyo, skk-initial-search-jisyo $B$N5!G=$r%5%]!<%H$7$F$$(B $B$^$9$,!"$3$l$i$N(B 2 $B$D$N<-=q%U%!%$%k$r%F!<%V%k$KJQ49$9$k:]!"(B dicconv.awk $B$,M>7W$JF|;~%G!<%?$rF~$l9~$^$J$$$h$&$K(B 2 $B$D$N<-=q%U%!%$(B $B%k$N@hF,$K!"$=$l$>$l(B ;; Kakutei dictionary for SKK system ;; Initial search dictionary for SKK system $B$H$$$&%3%a%s%H9T$rDI2C$7$F!"%F!<%V%k$r(B make $B$7$F2<$5$$!#$J$*!"%G%#(B $B%U%)%k%H$G$O$3$N(B 2 $B$D$N%F!<%V%k$O:n$i$J$$$h$&$K$J$C$F$$$k$N$G!"(B Makefile $B$H(B createtbl.sql $B$NJT=8$,I,MW$G$9!#(B (7)James William Breen $B$K$h$k(B KANJIDIC $B$rMxMQ$7$F!"$H$j$"$($:Ito$NJQ49$HF1$8$h$&$K$7$FIt$r=q$-!"$=$3$G!"(B M-x skk-rdbms-busyu-henkan $B$H$7$F2<$5$$!#(B $B2h?tJQ49$O!"(B $B"&(B15 ($B$3$N>uBV$r:n$k$K$O!"(B`/ 1 5' $B$H%?%$%W$9$k(B) $B$N$h$&$K2h?t$r;XDj$7!"(B M-x skk-rdbms-stroke-henkan $B$H$7$F2<$5$$(B ($BJQ49ESCf$K(B M-x $B$G%3%^%s%I$rF~NO$9$k$N$,LLE]$J$i$P!"2?(B $B$+E,Ev$J%-!<$K$3$l$i$N%3%^%s%I$r%P%$%s%I$9$l$PNI$$$G$7$g$&(B)$B!#(B $B$^$?!"4A;z$N2h?t$rCN$j$?$$>l9g$O!"(B M-x skk-rdbms-stroke $B$H$7$F%_%K%P%C%U%!$K3:Ev$N4A;z$rF~NO$9$l$P!"2h?t$,%(%3!<%(%j%"$KI=(B $B<($5$l$^$9!#(B $B$$$:$l$NJQ497k2L$b8D?M<-=q%F!<%V%k$K$Oe!"I85-IT2DG=$JIt/!9G:$s$G$$(B $B$^$9!#(B $B$^$?!"(Bkanjidic $BCf$K=P$F$/$k(B B[0-9]+ $B$NHV9f$O!"(Bkanjidic.doc $B$K$h$l$P!"(B the Nelson New Japanese-English Character Dictionary $B$K=P$F$/$k(B the radical (Bushu) number $B$@$=$&$G$9$,!"$H$-$I$-=EJ#$7$F$$$k$N$,5$$K$J$C(B $B$F$$$^$9(B (13, 34, 47, 66 $B$H(B 71$B!#K\Mh(B unique $B$JHV9f$N$O$:(B)$B!#$3$N?t;z(B $B$r(B busyuID $B$H$7$F(B busyu_base $B%F!<%V%k$Kl9g$G!"!V$3$&$3$&(Bs$B!W$N8+=P$78l$,8+$D$+(B $B$i$J$+$C$?$H$-$G$b!"(Bhinsi_data $B%F!<%V%k$+$i!V8e96!W!V9'9T!W!V9R9T!W(B $B$J$I!"%5JQF0;l$K$J$jF@$k$b$N$@$1$rJQ497k2L$H$7$F=PNO$7(B ($B!V8}9P!W!"(B $B!V9b9;!W$J$I$NL5BL$J4A;z$r=PNO$7$^$;$s!#$b$A$m$s(B skk-search-prog-list $B$G@h=g0L$K$"$kJQ49$G=PNO$5$l$?JQ497k2L$OM%@h$5(B $B$l$^$9$,(B)$B!#(B $B http://www.asahi-net.or.jp/~gy2m-nkjm/ ddskk-15.2/experimental/rdbms/skk-rdbms.el0000644000570400056700000010571511701311063020627 0ustar kitamotoopenlab;;; skk-rdbms.el --- SKK Relational Data Base Management System. -*- coding: iso-2022-jp -*- ;; Copyright (C) 1998, 2000, 2003 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: NAKAJIMA Mikio ;; Version: $Id: skk-rdbms.el,v 1.14 2012/01/05 12:06:11 skk-cvs Exp $ ;; Keywords: japanese, rdbms ;; Last Modified: $Date: 2012/01/05 12:06:11 $ ;; This file is not part of Daredevil SKK yet. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; Currently this program only supports PostgreSQL, but may work with ;; other rdbms (such as mSQL or mySQL) by slightly changes. ;; SQL $B$N%7%'%k$r(B Emacs $B$N%P%C%U%!$NCf$G5/F0$7$F!"(BSQL $B%7%'%k$K%3%^%s%I(B ;; $B$rAw$k!"$H$$$&ItJ,$O!"(BEmacs Calc $B$N(B Gnuplot $B%$%s%?!<%U%'%$%9ItJ,$G(B ;; $B$"$k(B calc-graph.el $B$r;29M$K$7$?!#(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) ;; User variables. (defvar skk-rdbms-shell "psql" "*$B%G!<%?%Y!<%9K\BN$H@\B3$9$k$?$a$N%7%'%k%W%m%0%i%`!#(B") (defvar skk-rdbms-shell-args "skk" "*skk-rdbms-shell $B$N0z?t!#(B $B%G%#%U%)%k%H$G$O!"(Bskk $B%G!<%?%Y!<%9$K@\B3$9$k$?$a$N0z?t$r;XDj$7$F$$$k!#(B") (defvar skk-rdbms-process-coding-system (cdr (assoc "euc" skk-coding-system-alist)) "*skk-rdbms-shell $B$H$N%W%m%;%9DL?.$K;H$&%3!<%G%#%s%0%7%9%F%`!#(B") (defvar skk-rdbms-shell-prompt-regexp "^skk=> " "*skk-rdbms-shell $B$N%W%m%s%W%H$r<($9@55,I=8=!#(B") (defvar skk-rdbms-shell-version-check-function nil "*skk-rdbms-shell $B$N%P!<%8%g%s$r%A%'%C%/$9$k4X?t!#(B skk-rdbms-shell $B$N%P!<%8%g%s$K$h$C$F0[$J$kF0$-$r$7$?$$>l9g$K;HMQ$9$k!#(B") ;; $B2?8N$+(B process-send-string $B$7$?%3%^%s%I$ND>8e$K5"$C$F$/$kJ8;zNs$N@h(B ;; $BF,$K(B ^M $B$,IU$/!#(B ;; SQL $BJ8$NESCf$K2~9T$rF~$l$k$H(B psql $B$NBh(B 2 $B%W%m%s%W%H$,=P$k!#$3$l$r@55,I=8=$G(B ;; $BI=8=$7$F8!:w$9$k$H%*!<%P!<%X%C%I$,Bg$-$/!"3NDj$7$F$+$i$N<-=q99?7$,CY$/$J$k!#(B (defvar skk-rdbms-error-regexp "^ *ERROR: +\\(.+\\)$" "*skk-rdbms-shell $B$,=P$9%(%i!<%a%C%;!<%8$N@55,I=8=!#(B \(match-string 1\)$B$G%(%i!<$NK\BN$r@Z$j=P$;$k$h$&$K@55,I=8=$r=q$/!#(B") (defvar skk-rdbms-update-fail-regexp "^ *UPDATE 0$" "*$B8D?M<-=q%F!<%V%k$N(B UPDATE $B$K<:GT$7$?$H$-$K(B skk-rdbms-shell $B$,=P$9%a%C%;!<%8$N@55,I=8=!#(B") (defvar skk-rdbms-shell-special-command-regexp "^\\\\[a-z?!]+$" "*skk-rdbms-shell $B$N%3%^%s%I$G(B SQL $B%3%^%s%I0J30$N%3%^%s%I$rI=$9@55,I=8=!#(B") (defvar skk-rdbms-kill-command "\\q" "*skk-rdbms-shell $B=*N;$N$?$a$K;HMQ$9$k%3%^%s%I!#(B") (defvar skk-rdbms-SQL-wildcard "%" "*LIKE $B1i;;;R$G%Q%?!<%s%^%C%A%s%0$K;H$o$l$k%o%$%k%I%+!<%I!#(B") (defvar skk-rdbms-private-jisyo-table (concat (user-login-name) "_private_jisyo") "*$B8D?M<-=q$N%F!<%V%kL>!#(B CREATE TABLE YOUR-LOGIN-NAME_private_jisyo \( okuriari int2 NOT NULL, yomi varchar\(50\) NOT NULL, -- longest entry of yomi in SKK-JISYO.L is -- '$B$[$/$j$/$;$s$?$s$+$,$/$.$8$e$D$@$$$,$/$$$s$@$$$,$/(B' kanji text NOT NULL, okurigana varchar\(4\), date abstime NOT NULL \); $B%F!<%V%kL>$N(B YOUR-LOGIN-NAME $B$N8D=j$O!"(BEmacs $B$N(B user-login-name $B$,JV$9CM$r=q$/!#(B") (defvar skk-rdbms-public-jisyo-table "large_jisyo" "*$B6&M-<-=q$N%F!<%V%kL>!#(B CREATE TABLE large_jisyo \( okuriari int2 NOT NULL, yomi varchar\(50\) NOT NULL, kanji text NOT NULL \);") (defvar skk-rdbms-jis2-jisyo-table "jis2_jisyo" "*JIS $BBh(B 2 $B?e=`$NJ8;z$r=8$a$?<-=q%F!<%V%kL>!#(B CREATE TABLE jis2_jisyo \( okuriari int2 NOT NULL, yomi varchar\(50\) NOT NULL, kanji text NOT NULL \);") (defvar skk-rdbms-kakutei-jisyo-table (concat (user-login-name) "_kakutei_jisyo") "*$B3NDj<-=q$N%F!<%V%kL>!#(B CREATE TABLE YOUR-LOGIN-NAME_kakutei_jisyo ( okuriari int2 NOT NULL, yomi varchar(50) NOT NULL, kanji text NOT NULL ); $B%F!<%V%kL>$N(B YOUR-LOGIN-NAME $B$N8D=j$O!"(BEmacs $B$N(B user-login-name $B$,JV$9CM$r=q$/!#(B") (defvar skk-rdbms-initial-jisyo-table (concat (user-login-name) "_initial_jisyo") "*initial $B%5!<%A<-=q$N%F!<%V%kL>!#(B CREATE TABLE YOUR-LOGIN-NAME_kakutei_jisyo ( okuriari int2 NOT NULL, yomi varchar(50) NOT NULL, kanji text NOT NULL ); $B%F!<%V%kL>$N(B YOUR-LOGIN-NAME $B$N8D=j$O!"(BEmacs $B$N(B user-login-name $B$,JV$9CM$r=q$/!#(B") (defvar skk-rdbms-kcode-table "kcode" "*$BJ8;z$N(B JIS $B%3!<%I5Z$S(B Unicode $B$r=8$a$?%F!<%V%kL>!#(B CREATE TABLE kcode \( kanji varchar\(2\) NOT NULL PRIMARY KEY, JIScode char\(4\) NOT NULL UNIQUE, Unicode char\(4\) NOT NULL UNIQUE \);") (defvar skk-rdbms-stroke-table "stroke" "*$B2h?t%G!<%?$r=8$a$?%F!<%V%kL>!#(B CREATE TABLE stroke \( stroke int2 NOT NULL, kanji varchar\(2\) NOT NULL PRIMARY KEY \);") (defvar skk-rdbms-busyu-base-table "busyu_base" "*$BIt!#(B CREATE TABLE busyu_base \( busyuID int2 NOT NULL, -- radical \(Busyu\) number in the Nelson New -- Japanese-English Character Dictionary. -- why aren't they unique? busyuID2 int2, -- classic radical number kanji varchar\(2\), -- $BItr7o$rIU$1$J$$!#(B yomi1 varchar\(16\) NOT NULL, yomi2 varchar\(16\), yomi3 varchar\(16\), yomi4 varchar\(16\) \);") (defvar skk-rdbms-busyu-data-table "busyu_data" "*$B3F4A;z$NIt!#(B CREATE TABLE busyu_data \( busyuID int2 NOT NULL, -- radical \(Busyu\) number. busyuID2 int2, -- classic radical number kanji varchar\(2\) NOT NULL UNIQUE \);") (defvar skk-rdbms-hinsi-base-table "hinsi_base" "*$BIJ;l$K4X$9$k%G!<%?$r=8$a$?%F!<%V%kL>!#(B CREATE TABLE hinsi_base \( hinsi varchar\(23\) NOT NULL, -- longest is `$B%59T(B($B$9$k(B)&$BL>;l2=@\Hx8l(B' hinsiID int2 NOT NULL, hinsiID2 int2 \);") (defvar skk-rdbms-hinsi-data-table "hinsi_data" "*$B3F4A;z$NIJ;l$K4X$9$k%G!<%?$r=8$a$?%F!<%V%kL>!#(B CREATE TABLE hinsi_data \( yomi varchar\(26\) NOT NULL, -- longest is `$B$P$C$/$W$m$Q$2!<$7$g$s$[$&(B' kanji varchar\(24\) NOT NULL, -- longest is `$B%*%Z%l!<%F%#%s%0%7%9%F%`(B' hinsiID int2 NOT NULL, hinsiID2 int2 \);") (defvar skk-rdbms-private-jisyo-dump "~/.skk-jisyo.dump" "*skk-rdbms-private-jisyo-table $B$r%@%s%W$7$FJ]B8$9$k%U%!%$%k!#(B") (defvar skk-rdbms-dump-error "~/.skk-dump.error" "*skk-rdbms-private-jisyo-dump $B$r%@%s%W$9$k:]$KH/@8$7$?%(%i!<%a%C%;!<(B $B%8$,J]B8$5$l$k%U%!%$%k!#(B") ;; $B%f!<%6!$$(B SQL $BJ8$OD9$/$F$bL5M}LpM}(B 1 $B9T$GI=8=$9$k$+!"7y$J$i:Y@Z$l$K@Z$C$F(B ;; concat $B$G$D$J$0!#(B "SELECT kanji FROM %s WHERE busyuID = (SELECT busyuID FROM %s WHERE yomi1 = '%s' OR yomi2 = '%s' OR yomi3 = '%s' OR yomi4 = '%s');" skk-rdbms-busyu-data-table skk-rdbms-busyu-base-table ,key ,key ,key ,key)) (defmacro skk-rdbms-SQL-search-stroke-command (stroke) `(format "SELECT kanji FROM %s WHERE stroke = %s;" skk-rdbms-stroke-table ,stroke)) (defmacro skk-rdbms-search-sahen-command (dakuten) `(format "SELECT kanji FROM %s WHERE yomi = '%s' AND hinsiID = (SELECT hinsiID FROM %s WHERE hinsi = '%s');" skk-rdbms-hinsi-data-table skk-henkan-key skk-rdbms-hinsi-base-table (if dakuten "$B%69T(B($B$:$k(B)" "$B%59T(B($B$9$k(B)"))) (defvar skk-rdbms-cutoff-output-function (function (lambda () (save-match-data (save-excursion (let (candidates pos) (if (not (re-search-backward "^(\\([0-9]+\\) rows*)$" skk-rdbms-last-process-point t)) (error "") (setq candidates (match-string 1) pos (point)) (if (string= candidates "0") nil (forward-line (- (string-to-number candidates))) (beginning-of-line) ; fail safe (split-string (buffer-substring-no-properties pos (point)) " *\n")))))))) "*skk-rdbms-shell $B$K$h$C$F8!:w$7$?%"%&%H%W%C%H$r@Z$j=P$7$F2C9)$9$k4X?t!#(B skk-rdbms-public-jisyo-table $B$d(B skk-rdbms-jis2-jisyo-table $B$J$I$KMxMQ$9$k!#(B $B8uJd$NJ8;zNs$r%j%9%H$K$7$FJV$9!#(B skk-rdbms-working-buffer $B$NCf$G%3!<%k$5$l$k!#(B") (defvar skk-rdbms-cutoff-output-function-2 (function (lambda () (save-match-data (save-excursion (let (candidates var) (if (not (re-search-backward "^(\\([0-9]+\\) rows*)$" skk-rdbms-last-process-point t)) (error "") (setq candidates (string-to-number (match-string 1))) (if (= candidates 0) nil (beginning-of-line) ; fail safe ;; $B$3$&$d$C$F0l$D$:$D@Z$j=P$9$s$8$c$J$/$F!"@55,I=8=$+$J$s$+(B ;; $B$G%Q%C$H=hM}$G$-$^$;$s$+$M!#(B (while (> candidates 0) (forward-line -1) (setq var (cons (buffer-substring-no-properties (point) ;; yomi $B$OESCf$K6uGrJ8;z$r5v$5$J$$$N$G!"(B ;; $BA0$+$i6uGrJ8;z0J30$r%9%-%C%W$7$F$b(B OK$B!#(B (progn (skip-chars-forward "^ ") (point))) var)) (beginning-of-line) (setq candidates (1- candidates))) var))))))) "*skk-rdbms-shell $B$K$h$C$F8!:w$7$?%"%&%H%W%C%H$r@Z$j=P$7$F2C9)$9$k4X?t!#(B $B@Z$j=P$9BP>]$N=PNO$O!"J#?t%+%i%`$N:G=i$N%+%i%`$G!"@Z$j=P$9J8;zNs$OESCf$K6uGrJ8;z(B $B$r5v$5$J$$!"$H$$$&>r7o2<$G;HMQ$9$k!#(B $B8uJd$NJ8;zNs$r%j%9%H$K$7$FJV$9!#(Bskk-rdbms-working-buffer $B$NCf$G%3!<%k$5$l$k!#(B") (defvar skk-rdbms-cutoff-output-function-3 (function (lambda () (save-match-data (save-excursion (let (candidates) (if (not (re-search-backward "^(\\([0-9]+\\) rows*)$" skk-rdbms-last-process-point t)) (error "") (setq candidates (match-string 1)) (if (not (string= candidates "1")) (skk-error "$B<-=q$N8uJd?t$r?t$($k$N$K<:GT$7$^$7$?(B" "Failed counting jisyo candidates") (forward-line -1) (skip-chars-forward " ") (string-to-number (buffer-substring-no-properties (point) (progn (end-of-line) (point))))))))))) "*skk-rdbms-shell $B$K$h$C$F8!:w$7$?%"%&%H%W%C%H$r@Z$j=P$7$F2C9)$7!"<-=q8uJd?t$rJV$94X?t!#(B skk-rdbms-working-buffer $B$NCf$G%3!<%k$5$l$k!#(B") (defvar skk-rdbms-save-jisyo-function (function (lambda (quiet) (if (not (skk-rdbms-process-alive)) (if (not quiet) (progn (skk-message "SKK $B%G!<%?%Y!<%9$rA]=|(B/$B%@%s%W$9$kI,MW$O$"$j$^$;$s(B" "No need to vacuum/dump SKK database") (sit-for 1))) (let ((wbuf (get-buffer-create " *SKK private jisyo dump*")) v) (unwind-protect (progn (if (not quiet) (skk-message "SKK $B%G!<%?%Y!<%9$rA]=|$7$F$$$^$9(B..." "Vacuuming SKK database...")) (if (eq this-command 'save-buffers-kill-emacs) (skk-record-jisyo-data)) ;; vacuum $B$,=*$o$i$J$$Fb$K(B skk-rdbms-kill $B$,%3!<%k$5$l$F$7$^$&$H$I(B ;; $B$&$J$k$s$@$m$&$+!)(B (skk-rdbms-run-SQL-command (format "VACUUM %s;" skk-rdbms-private-jisyo-table)) (if (not quiet) (progn (skk-message "SKK $B%G!<%?%Y!<%9$rA]=|$7$F$$$^$9(B...$B40N;!*(B" "Vacuuming SKK database...done") (sit-for 1))) (if (and (file-exists-p skk-rdbms-private-jisyo-dump) (> 86399 (skk-time-difference (nth 5 (file-attributes skk-rdbms-private-jisyo-dump)) (current-time)))) nil ;; $BA02s%@%s%W$7$?$N$,(B 1 $BF|0J>eA0$@$C$?$i!"%@%s%W$9$k!#(B (if (not quiet) (skk-message "SKK $B%G!<%?%Y!<%9$r%@%s%W$7$F$$$^$9(B..." "Dumping out SKK database...")) (setq v (= (call-process shell-file-name nil (list wbuf skk-rdbms-dump-error) t "-c" (format "pg_dump skk -t %s" skk-rdbms-private-jisyo-table)) 0)) (cond ((and (not quiet) v) (save-excursion (set-buffer wbuf) (write-region (point-min) (point-max) skk-rdbms-private-jisyo-dump nil 'nomsg)) (skk-message "SKK $B%G!<%?%Y!<%9$r%@%s%W$7$F$$$^$9(B...$B40N;!*(B" "Dumping out SKK database...done") (sit-for 1)) ((not v) (skk-error "SKK $B%G!<%?%Y!<%9$r%@%s%W$9$k$3$H$K<:GT$7$^$7$?(B" "Failed to dump out SKK database"))))) (kill-buffer wbuf)))))) "*$B%G!<%?%Y!<%9%W%m%;%9$N=*N;;~$K8D?M<-=q$K4X$9$k=hM}$r9T$J$&4X?t!#(B $B%G%#%U%)%k%H$O(B PostgreSQL $B@lMQ%3%^%s%I$H$J$C$F$$$k!#(B") (defvar skk-rdbms-load-hook nil "*skk-rdbms.el $B$r%m!<%I$7$?$H$-$N%U%C%/!#(B") ;; for test use. (setq skk-search-prog-list '(;;(skk-rdbms-search-kakutei-jisyo-table) (skk-rdbms-search-jisyo-table skk-rdbms-private-jisyo-table) (skk-rdbms-sahen-search) (skk-rdbms-search-jisyo-table skk-rdbms-public-jisyo-table) ;;(skk-okuri-search) (skk-rdbms-search-jisyo-table skk-rdbms-jis2-jisyo-table))) (setq skk-server-host nil skk-servers-list nil) ;; System constants and variables. (defvar skk-rdbms-last-process-point nil) (defvar skk-rdbms-process nil) (defvar skk-rdbms-working-buffer nil) (defvar skk-rdbms-no-wait nil) (defvar skk-rdbms-completion-index 1) (defvar skk-rdbms-completion-list nil) (defvar skk-rdbms-no-update-command nil) ;;(defvar skk-rdbms-kakutei-word nil) (setq skk-update-jisyo-function 'skk-rdbms-update-jisyo) (setq skk-save-jisyo-function 'skk-rdbms-save-jisyo) (setq skk-count-jisyo-candidates-function 'skk-rdbms-count-jisyo-candidates) (setq skk-completion-function 'skk-rdbms-completion) (setq skk-previous-completion-function 'skk-rdbms-previous-completion) (setq skk-okuri-search-function 'skk-rdbms-okuri-search) (setq skk-public-jisyo-to-be-searched-function 'skk-rdbms-public-jisyo-to-be-searched) (defun skk-rdbms-init () (or (skk-rdbms-process-alive) (let ((process-connection-type t) (cbuf (current-buffer)) origin) (if skk-rdbms-process (progn (delete-process skk-rdbms-process) (setq skk-rdbms-process nil))) (or (and skk-rdbms-working-buffer (buffer-name skk-rdbms-working-buffer)) (setq skk-rdbms-working-buffer (get-buffer-create " *SKK rdbms*"))) ;; $BF0$$$?%]%$%s%H$rJ]B8$9$k$?$a(B save-excursion $B$O;H$o$J$$!#(B (unwind-protect (progn (set-buffer skk-rdbms-working-buffer) (buffer-disable-undo) (setenv "PAGER" nil) (insert "\nStarting SKK rdbms...\n\n") (skk-message "SKK $B%G!<%?%Y!<%9$r5/F0$7$F$$$^$9(B..." "Starting SKK rdbms...") (setq origin (point)) (condition-case nil (progn (setq skk-rdbms-process (start-process "SKK rdbms" skk-rdbms-working-buffer skk-rdbms-shell skk-rdbms-shell-args)) (process-kill-without-query skk-rdbms-process) (cond ((featurep 'xemacs) (set-process-input-coding-system skk-rdbms-process skk-rdbms-process-coding-system) (set-process-output-coding-system skk-rdbms-process skk-rdbms-process-coding-system)) (t (set-process-coding-system skk-rdbms-process skk-rdbms-process-coding-system skk-rdbms-process-coding-system)))) (file-error (skk-error "$B%7%9%F%`>e$K(B \"%s\" $B$,8+$D$+$j$^$;$s(B" "Sorry, can't find \"%s\" on your system" skk-rdbms-shell))) (skk-save-point (while (and (not (progn (goto-char origin) (re-search-forward skk-rdbms-shell-prompt-regexp nil t))) (memq (process-status skk-rdbms-process) '(run stop))) (accept-process-output skk-rdbms-process))) (or (memq (process-status skk-rdbms-process) '(run stop)) (skk-error "SKK $B%G!<%?%Y!<%9%W%m%;%9$r%9%?!<%H$9$k$3$H$,$G$-$^$;$s(B" "Unable to start SKK database process")) (and skk-rdbms-shell-version-check-function (funcall skk-rdbms-shell-version-check-function)) (goto-char (process-mark skk-rdbms-process)) (setq skk-rdbms-last-process-point (point))) (skk-message "SKK $B%G!<%?%Y!<%9$r5/F0$7$F$$$^$9(B...$B40N;(B!" "Starting SKK rdbms...done") (set-buffer cbuf))))) (defun skk-rdbms-process-alive () (and skk-rdbms-process skk-rdbms-working-buffer (buffer-name skk-rdbms-working-buffer) (memq (process-status skk-rdbms-process) '(run stop)))) (defun skk-rdbms-kill () "SKK $B%G!<%?%Y!<%9$N%W%m%;%9$r;&$9!#(B" (interactive) (if (not (skk-rdbms-process-alive)) ;; $BKLEM?@7}$N@$3&$G$9$J(B...$B!#(B (skk-message "SKK $B%G!<%?%Y!<%9%W%m%;%9$O4{$K;`$s$G$^$9(B" "SKK database process has already died") (or (eq this-command 'save-buffers-kill-emacs) (skk-rdbms-save-jisyo)) (let ((skk-rdbms-no-wait t)) (skk-rdbms-run-SQL-command skk-rdbms-kill-command) (sit-for 1) (and (process-status skk-rdbms-process) (delete-process skk-rdbms-process)) (setq skk-rdbms-process nil) (skk-message "SKK $B%G!<%?%Y!<%9%W%m%;%9$,;`$K$^$7$?(B" "SKK database process died")))) (defun skk-rdbms-search-jisyo-table (table) (and skk-use-numeric-conversion (setq skk-henkan-key (skk-compute-numeric-henkan-key skk-henkan-key))) (let* ((private-table-p (string= table skk-rdbms-private-jisyo-table)) (command (cond (private-table-p (skk-rdbms-SQL-search-private-jisyo-command)) (t (skk-rdbms-SQL-search-jisyo-command table))))) (skk-rdbms-run-SQL-command command skk-rdbms-cutoff-output-function))) (defun skk-rdbms-search-kakutei-jisyo-table () (prog1 (setq skk-kakutei-henkan-flag (skk-rdbms-run-SQL-command (skk-rdbms-SQL-search-jisyo-command skk-rdbms-kakutei-jisyo-table) skk-rdbms-cutoff-output-function)) (and skk-kakutei-henkan-flag (setq skk-rdbms-no-update-command t)))) (defun skk-rdbms-run-SQL-command (command &optional cutoff-func) (combine-after-change-calls (save-match-data (if (and (not (string-match ";$" command)) skk-rdbms-shell-special-command-regexp (not (string-match skk-rdbms-shell-special-command-regexp command))) (skk-error "%s $B$N%3%^%s%I$KJ8K!%_%9$,$"$j$^$9(B" "A grammatical mistake of %s command exists" skk-rdbms-shell) (setq command (concat command " \n"))) (let ((cbuf (current-buffer)) (okuri-char skk-okuri-char) (henkan-okurigana skk-henkan-okurigana) (henkan-key skk-henkan-key) pmark var) (skk-rdbms-init) (accept-process-output) (setq pmark (process-mark skk-rdbms-process)) ;; $BF0$$$?%]%$%s%H$rJ]B8$9$k$?$a(B save-excursion $B$O;H$o$J$$!#(B (unwind-protect (catch 'exit (set-buffer skk-rdbms-working-buffer) ;; $B%P%C%U%!%m!<%+%kJQ?t$r0\$7$F$*$/!#(B (setq skk-okuri-char okuri-char skk-henkan-okurigana henkan-okurigana skk-henkan-key henkan-key) ;; $B%]%$%s%H$OJ]B8$5$l$F$$$k$N$GK\MhMW$i$J$$$O$:$@$,!#(B (goto-char pmark) (setq skk-rdbms-last-process-point (point)) (insert command) (set-marker pmark (point)) (process-send-string skk-rdbms-process command) (accept-process-output (and (not skk-rdbms-no-wait) skk-rdbms-process)) (goto-char skk-rdbms-last-process-point) ;; $B$3$&$7$J$$$H(B psql $B$,$b$?$b$?$7$F$$$k$H(B search $B$K<:GT$9$k>l(B ;; $B9g$,$"$k!#(B (while (not (re-search-forward skk-rdbms-shell-prompt-regexp pmark t)) ;; \q $B%3%^%s%I$rAw$C$?$i%W%m%s%W%H$O5"$C$F$3$J$$!#(B (if (eq (process-status skk-rdbms-process) 'exit) (throw 'exit nil)) (accept-process-output)) (skk-rdbms-check-for-errors) (goto-char pmark) (and cutoff-func (setq var (funcall cutoff-func)))) (set-buffer cbuf) var))))) (defun skk-rdbms-check-for-errors () ;; $B%(%i!<8e$N%]%$%s%H0LCV$rJ]8n$9$k$?$a$K(B if $B@a$r(B save-excursion $B$G$D$D$`!#(B (save-match-data (if (save-excursion (set-buffer skk-rdbms-working-buffer) (goto-char skk-rdbms-last-process-point) (re-search-forward skk-rdbms-error-regexp nil t)) (error "%s" (concat "SQL error: " (match-string 1)))))) (defun skk-rdbms-update-jisyo (word &optional purge) (if skk-rdbms-no-update-command (setq skk-rdbms-no-update-command nil) (and (> skk-okuri-index-min -1) (setq word (skk-remove-common word))) (and skk-use-numeric-conversion (setq skk-henkan-key (skk-compute-numeric-henkan-key skk-henkan-key))) (let ((command (cond (purge (skk-rdbms-SQL-delete-command word)) ;; $B%_%K%P%C%U%!$GEPO?$7$?>l9g(B (skk-henkan-in-minibuff-flag (skk-rdbms-SQL-insert-command word)) (t (skk-rdbms-SQL-update-command word)))) ignore) (skk-rdbms-run-SQL-command command) (cond (purge (cond ((skk-public-jisyo-has-entry-p skk-henkan-okurigana word) (skk-rdbms-run-SQL-command (skk-rdbms-SQL-regexp-delete-command "^\\\\(skk-ignore-dic-word .*\\\\)")) (setq ignore (car (skk-compose-ignore-entry skk-henkan-list word))) (skk-rdbms-run-SQL-command (skk-rdbms-SQL-insert-command ignore))))) ((and (not skk-henkan-in-minibuff-flag) ;; L $B<-=q$J$I$+$iF@$?%(%s%H%j$@$+$i8D?M<-=q$N(B UPDATE $B$K<:GT$7$?!#(B (skk-rdbms-update-jisyo-failp)) ;; $B:G=i$K(B SELECT $B$G%l%3!<%I$,$"$k$+$I$&$+%A%'%C%/$7$F$+$i(B ;; UPDATE $B$9$k$N$,K\Ev$@$m$&$1$I!"$=$&$9$k$H7k9=CY$$!#(B (skk-rdbms-run-SQL-command (skk-rdbms-SQL-insert-command word)))) (setq skk-henkan-in-minibuff-flag nil)))) (defun skk-rdbms-update-jisyo-failp () (save-match-data (save-excursion (set-buffer skk-rdbms-working-buffer) (goto-char (process-mark skk-rdbms-process)) (re-search-backward skk-rdbms-update-fail-regexp skk-rdbms-last-process-point t)))) (defun skk-rdbms-save-jisyo (&optional quiet) (let ((inhibit-quit t)) (funcall skk-rdbms-save-jisyo-function quiet) (skk-set-cursor-properly))) (defun skk-rdbms-restore-private-jisyo (force) "$B%@%s%W%U%!%$%k$+$i8D?M<-=q%G!<%?%Y!<%9$rI|85$9$k!#(B C-u M-x skk-rdbms-restore-private-jisyo $B$9$k$H3NG'$J$7$KI|85$9$k!#(B" (interactive "P") (if (and (not force) (not (skk-yes-or-no-p "$B%@%s%W%U%!%$%k$+$i8D?M<-=q%G!<%?%Y!<%9$rI|85$7$^$9!#$h$m$7$$$G$9$+!)(B " "Restore private jisyo database from dump file? "))) (progn (ding) (skk-message "$B%@%s%W%U%!%$%k$+$i$N8D?M<-=q%G!<%?%Y!<%9$NI|85$rCf;_$7$^$7$?(B" "Stop restoring private jisyo database from dump file")) (skk-message "$B%@%s%W%U%!%$%k$+$i8D?M<-=q%G!<%?%Y!<%9$rI|85$7$F$$$^$9(B..." "Restoring private jisyo database from dump file...") (condition-case nil (skk-rdbms-run-SQL-command (format "DROP TABLE %s;" skk-rdbms-private-jisyo-table)) ;; error will occur if the table does not exist. (error nil)) (if (= (call-process shell-file-name nil (list nil skk-rdbms-dump-error) t "-c" (format "%s %s < %s" skk-rdbms-shell ; PostgreSQL only command. skk-rdbms-shell-args (expand-file-name skk-rdbms-private-jisyo-dump))) 0) (skk-message "$B%@%s%W%U%!%$%k$+$i8D?M<-=q%G!<%?%Y!<%9$rI|85$7$F$$$^$9(B...$B40N;(B!" "Restoring private jisyo database from dump file...done!") (skk-error "$B%@%s%W%U%!%$%k$+$i$N8D?M<-=q%G!<%?%Y!<%9$NI|85$K<:GT$7$^$7$?(B" "Failed to restore private jisyo database from dump file")))) (defun skk-rdbms-count-jisyo-candidates (table) (if (interactive-p) (message "Counting jisyo candidates...")) (skk-rdbms-run-SQL-command (format "SELECT COUNT(*) FROM %s;" table) skk-rdbms-cutoff-output-function-3)) (defun skk-rdbms-public-jisyo-to-be-searched () (list 'skk-rdbms-search-jisyo-table 'skk-rdbms-public-jisyo-table)) (defun skk-rdbms-completion (first) (require 'skk-comp) (let (c-word) (skk-kana-cleanup 'force) (if (or first skk-dabbrev-like-completion) (setq skk-completion-word (buffer-substring-no-properties skk-henkan-start-point (point)) ;; 0th $B$K$OJd40$7$h$&$H$9$k85$N8l$rF~$l$k$N$G!"%9%-%C%W!#(B skk-rdbms-completion-index 1)) (if (string= skk-completion-word "") (skk-error "$B6uJ8;z$+$iJd40$9$k$3$H$O$G$-$^$;$s!*(B" "Cannot complete an empty string!")) (if (or first skk-dabbrev-like-completion) (setq skk-rdbms-completion-list (skk-rdbms-run-SQL-command (skk-rdbms-SQL-search-completion-word-command) skk-rdbms-cutoff-output-function))) (setq skk-rdbms-completion-list (cons skk-completion-word (delete skk-completion-word skk-rdbms-completion-list)) c-word (nth skk-rdbms-completion-index skk-rdbms-completion-list)) (if (null c-word) (if skk-japanese-message-and-error (error "\"%s\" $B$GJd40$9$Y$-8+=P$78l$O(B%s$B$"$j$^$;$s(B" skk-completion-word (if first "" "$BB>$K(B")) (error "No %scompletions for \"%s\"" (if first "" "more ") skk-completion-word)) (setq skk-rdbms-completion-index (1+ skk-rdbms-completion-index)) (delete-region skk-henkan-start-point (point)) (insert c-word)))) (defun skk-rdbms-previous-completion () (require 'skk-comp) (let ((inhibit-quit t) c-word) (catch 'exit (while (not c-word) (setq skk-rdbms-completion-index (1- skk-rdbms-completion-index)) ;; (nth -1 '(A B C D)) $B$O(B A $B$rJV$9(B...$B!#(B (if (> 0 skk-rdbms-completion-index) (throw 'exit nil) (setq c-word (nth skk-rdbms-completion-index skk-rdbms-completion-list))) (if (string= c-word (buffer-substring-no-properties skk-henkan-start-point (point))) ;; $B%]%C%W$7$?8l$,%P%C%U%!$N%]%$%s%HD>A0$K$"$kJ8;zNs$HF1$8(B ;; $B$@$C$?$i(B 1 $B$D$r=$@0$7$F$*$/!#(B (setq this-command 'skk-completion) (if (not c-word) (skk-error "\"%s\"$B$GJd40$9$Y$-8+=P$78l$OB>$K$"$j$^$;$s(B" "No more previous completions for \"%s\"" skk-completion-word) (delete-region skk-henkan-start-point (point)) (insert c-word)))) (defun skk-rdbms-okuri-search () (require 'skk-auto) (let* ((inhibit-quit t) ;; "$B$?$A$"$2$k(B" -> (53825 53794 53810 53867) == (?$B$A(B ?$B$"(B ?$B$2(B ?$B$k(B) (okurigana-list (cdr (append skk-henkan-key nil))) (henkan-key-length (length skk-henkan-key)) (length skk-kanji-len) (original-henkan-key skk-henkan-key) var full-okurigana kanji) (catch 'exit (while (> henkan-key-length length) (let ((skk-henkan-okurigana (char-to-string (car okurigana-list))) ; "$B$A(B" skk-okuri-char skk-henkan-key next-okurigana) (if (string= skk-henkan-okurigana "$B$C(B") (progn ;; $BB%2;!V$C!W$@$C$?$iL>$rC;$/$7$F!"(B (setq okurigana-list (cdr okurigana-list) ;; skk-henkan-key $B$rD9$/$9$k!#(B length (+ length skk-kanji-len)))))) ;; ("$BN)$A>e$2$k(B" "$B7P$A$"$2$k(B" "$B7z$A$"$2$k(B" "$BCG$A$"$2$k(B" "$BN)$A$"$2$k(B") var)) (defun skk-rdbms-sahen-search () (save-match-data (if (not (or (and skk-okuri-char (memq (string-to-char skk-okuri-char) '(?s ?z))) (and (not skk-okuri-char) (string-match "[$B$9$:(B]$B$k(B$" skk-henkan-key)))) nil (let (l) (setq skk-okuri-index-min (if (= skk-okuri-index-min -1) (length skk-henkan-list) (min (length skk-henkan-list) skk-okuri-index-min)) l (skk-rdbms-sahen-search-1) skk-okuri-index-max (max skk-okuri-index-min (+ skk-okuri-index-min (length l)))) l)))) (defun skk-rdbms-sahen-search-1 () (let* ((okurigana (and (not skk-okuri-char) (string-match "[$B$9$:(B]$B$k(B$" skk-henkan-key) (substring skk-henkan-key (match-beginning 0)))) (dakuten (cond ((and skk-okuri-char (eq ?z (car (memq (string-to-char skk-okuri-char) '(?s ?z)))))) ((and okurigana (string= "$B$:(B" (char-to-string (aref okurigana 0))))))) (skk-henkan-key (cond (skk-okuri-char (substring skk-henkan-key 0 (1- (length skk-henkan-key)))) (t (substring skk-henkan-key 0 (match-beginning 0))))) v) (setq v (skk-rdbms-run-SQL-command (skk-rdbms-search-sahen-command dakuten) skk-rdbms-cutoff-output-function)) (if (not okurigana) v (mapcar (function (lambda (x) (concat x okurigana))) v)))) (defun skk-rdbms-busyu-henkan (&optional busyu) "$BIt@\4X?t0z?t$H$7$F(B busyu $B$rM?$($i$l$?$iJ86g$r8@$o$J$$!#(B (and (not busyu) (not skk-henkan-on) (skk-error "$B"&%b!<%I$KF~$C$F$$$^$;$s(B" "Not in $B"&(B mode")) (or busyu (setq busyu (buffer-substring-no-properties (point) skk-henkan-start-point))) (and (string= busyu "") (skk-error "$B8!:w$9$Y$-It@\4X?t0z?t$H$7$F(B stroke $B$rM?$($i$l$?$iJ86g$r8@$o$J$$!#(B (if (and (not stroke) (not skk-henkan-on)) (skk-error "$B"&%b!<%I$KF~$C$F$$$^$;$s(B" "Not in $B"&(B mode")) (save-match-data (or stroke (setq stroke (buffer-substring-no-properties (point) skk-henkan-start-point))) (if (or (string= stroke "") (string-match "[^0-9]" stroke)) (skk-error "$B8!:w$9$Y$-2h?t$,$"$j$^$;$s(B" "No stroke to search")) (setq skk-henkan-key stroke) (let ((skk-search-prog-list '((skk-rdbms-run-SQL-command (skk-rdbms-SQL-search-stroke-command stroke) skk-rdbms-cutoff-output-function)))) ;; $B8D?M<-=q%F!<%V%k$K -- -- Author: NAKAJIMA Mikio -- Created: Sep 1, 1998 -- Last Modified: $Date: 2001/02/03 00:23:00 $ -- Version: $Id: busyu.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- This file is not part of SKK yet. -- -- SKK is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either versions 2, or (at your option) -- any later version. -- -- SKK is distributed in the hope that it will be useful -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with SKK, see the file COPYING. If not, write to the Free -- Software Foundation Inc., 59 Temple Place - Suite 330, Boston, -- MA 02111-1307, USA. -- -- Commentary: -- -- Code DROP TABLE busyu_base; CREATE TABLE busyu_base ( busyuID int2 NOT NULL, -- radical (Busyu) number. why aren't they unique? busyuID2 int2, -- classic radical number kanji varchar(2), -- Éô¼ó¤Î¤ß¤Îɸµ­¤¬ÉÔǽ¤Êʸ»ú¤â¤¢¤ë¤Î¤Ç¡¢NOT NULL, UNIQUE ¾ò·ï¤òÉÕ¤±¤Ê¤¤¡£ yomi1 varchar(16) NOT NULL, yomi2 varchar(16), yomi3 varchar(16), yomi4 varchar(16) ); COPY busyu_base FROM '/usr/local/share/emacs/site-lisp/skk/tmp/busyu_base.txt'; CREATE INDEX busyuID_index ON busyu_base USING BTREE (busyuID int2_ops); CREATE INDEX yomi1_index ON busyu_base USING BTREE (yomi1 varchar_ops); CREATE INDEX yomi2_index ON busyu_base USING BTREE (yomi2 varchar_ops); CREATE INDEX yomi3_index ON busyu_base USING BTREE (yomi3 varchar_ops); CREATE INDEX yomi4_index ON busyu_base USING BTREE (yomi4 varchar_ops); DROP TABLE busyu_data; CREATE TABLE busyu_data ( busyuID int2 NOT NULL, -- radical (Busyu) number. why aren't they unique? busyuID2 int2, -- classic radical number kanji varchar(2) NOT NULL UNIQUE ); COPY busyu_data FROM '/usr/local/share/emacs/site-lisp/skk/tmp/busyu_data.txt'; CREATE INDEX busyuID_index ON busyu USING BTREE (busyuID int2_ops); VACUUM busyu_base; VACUUM busyu_data; SELECT COUNT(*) FROM busyu_base; SELECT COUNT(*) FROM busyu_data; -- end of busyu.sql ddskk-15.2/experimental/rdbms/sql/createtbl.sql0000644000570400056700000001001407236647544021710 0ustar kitamotoopenlab-- createtbl.sql -- Create private_jisyo table from an expanded format of SKK private dictionary. -- -- NAKAJIMA Mikio -- $Date: 2001/02/03 00:23:00 $: -- Version: $Id: createtbl.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- -- % nkf -e ~/.skk-jisyo | gawk -f ./awk/dicconv.awk - > ./tmp/private.txt -- % nkf -e /usr/local/share/skk/SKK-JISYO.L | gawk -f ./awk/dicconv.awk - > ./tmp/large.txt -- % nkf -e /usr/local/share/skk/SKK-JISYO.JIS2 | gawk -f ./awk/dicconv.awk - > ./tmp/jis2.txt -- -- ¤È¤·¤Æ ~/.skk-jisyo ¤òŸ³«¤·¡¢*.txt ¥Õ¥¡¥¤¥ë¤òºî¤ê¤Þ¤¹¡£ -- -- gawk ¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ÆÈ¼«µ¡Ç½¤Î strftime() ¤ò»È¤Ã¤Æ¤¤¤ë¤¿¤á -- ¤Ç¡¢¤â¤·¤â gawk ¤¬¤Ê¤±¤ì¤Ð¡¢dicconv.awk ¤Î -- ctime = myctime(0); -- ¤È¤¤¤¦¸Ä½ê¤ò -- ctime = 'Sat Aug 15 17:23:45 1998'; -- ¤È¤¤¤¦¤è¤¦¤Ëľ½ñ¤­¤·¤ÆÂбþ¤·¤Æ²¼¤µ¤¤ (¤È¤ê¤¢¤¨¤ººî¶È¤ò¹Ô¤Ê¤Ã¤¿ -- Æü¤ÎŬÅö¤Ê»þ´Ö¤¬ Emacs ¤Î current-time-string ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç -- Æþ¤ì¤ÐÎɤ¤¤Ç¤¹¡£¾°¡¢myctime ¤ÎÄêµÁ¤â¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Ê¤±¤ì¤Ð¤Ê -- ¤é¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ -- -- PS. ¤³¤Î¥¹¥¯¥ê¥×¥ÈÃæ¤Ç gsub ¤ò»È¤¦¤è¤¦¤Ë¤Ê¤Ã¤¿¤Î¤Ç¡¢É¬¤º gawk ¤ò»È¤Ã -- ¤Æ²¼¤µ¤¤¡£ -- -- ¼¡¤Ë -- -- '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/private.txt' -- '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/large.txt' -- '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/jis2.txt' -- '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/kakutei.txt' -- -- ¤ÎÉôʬ¤òµ®Êý¤Î *.txt ¥Õ¥¡¥¤¥ë¤Î½êºß¤Ë¹ç¤ï¤»¤Æ¡¢¤Þ¤¿¡¢ -- -- minakaji_private_jisyo (minakaji_kakutei_jisyo), -- minakaji_private_yomi_index (minakaji_kakutei_yomi_index) -- -- ¤ÎÉôʬ¤ò -- -- YOUR-USER-LOGIN-NAME_private_jisyo (YOUR-USER-LOGIN-NAME_kakutei_jisyo) -- YOUR-USER-LOGIN-NAME_yomi_index (YOUR-USER-LOGIN-NAME_kakutei_yomi_index) -- -- ¤Î¤è¤¦¤Ë¤¢¤Ê¤¿¤Î¥í¥°¥¤¥ó¥Í¡¼¥à (Emacs ¤ÎÊÑ¿ô user-login-name ¤ËÆþ¤Ã -- ¤Æ¤¤¤ëÃÍ) ¤òÉÕ¤±²Ã¤¨¤Æ½ñ¤­Ä¾¤·¡¢ -- -- % psql skk -e < createtbl.sql -- -- ¤È¤·¤Æ¡¢skk ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºî¤Ã¤Æ²¼¤µ¤¤¡£ -- -- ¤Ê¤ª¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢postgreSQL ¤Ç»È¤¨¤ë¤è¤¦¤Ëɬ¤º euc-japan-unix -- ¤ÇÊݸ¤·¤Æ²¼¤µ¤¤¡£ -- DROP TABLE minakaji_skk_private_jisyo; -- old name DROP TABLE minakaji_private_jisyo; CREATE TABLE minakaji_private_jisyo ( okuriari int2 NOT NULL, yomi varchar(50) NOT NULL, -- longest entry of yomi in SKK-JISYO.L is -- '¤Û¤¯¤ê¤¯¤»¤ó¤¿¤ó¤«¤¬¤¯¤®¤¸¤å¤Ä¤À¤¤¤¬¤¯¤¤¤ó¤À¤¤¤¬¤¯' kanji text NOT NULL, okurigana varchar(4), date abstime NOT NULL ); COPY minakaji_private_jisyo FROM '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/private.txt'; -- CREATE INDEX minakaji_private_yomi_index ON minakaji_private_jisyo USING BTREE (yomi varchar_ops); VACUUM minakaji_private_jisyo; SELECT COUNT(*) FROM minakaji_private_jisyo; -- DROP TABLE skk_large_jisyo; -- old name DROP TABLE large_jisyo; CREATE TABLE large_jisyo ( okuriari int2 NOT NULL, yomi varchar(50) NOT NULL, kanji text NOT NULL ); COPY large_jisyo FROM '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/large.txt'; CREATE INDEX large_yomi_index ON large_jisyo USING BTREE (yomi varchar_ops); VACUUM large_jisyo; SELECT COUNT(*) FROM large_jisyo; -- DROP TABLE skk_jis2_jisyo; -- old name -- DROP TABLE jis2_jisyo; -- CREATE TABLE jis2_jisyo ( -- okuriari int2 NOT NULL, -- yomi varchar(50) NOT NULL, -- kanji text NOT NULL -- ); -- COPY jis2_jisyo FROM '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/jis2.txt'; -- CREATE INDEX jis2_yomi_index ON jis2_jisyo USING BTREE (yomi varchar_ops); -- VACUUM jis2_jisyo; -- SELECT COUNT(*) FROM jis2_jisyo; -- DROP TABLE minakaji_kakutei_jisyo; -- CREATE TABLE minakaji_kakutei_jisyo ( -- okuriari int2 NOT NULL, -- yomi varchar(50) NOT NULL, -- kanji text NOT NULL -- ); -- COPY minakaji_kakutei_jisyo FROM '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/kakutei.txt'; -- CREATE INDEX minakaji_kakutei_yomi_index ON minakaji_kakutei_jisyo USING BTREE (yomi varchar_ops); -- VACUUM minakaji_kakutei_jisyo; -- SELECT COUNT(*) FROM minakaji_kakutei_jisyo; -- end of createtbl.sql ddskk-15.2/experimental/rdbms/sql/hinsi.sql0000644000570400056700000000427607236647544021072 0ustar kitamotoopenlab-- hinsi.sql -- -- Copyright (C) 1998 NAKAJIMA Mikio -- -- Author: NAKAJIMA Mikio -- Created: Sep 6, 1998 -- Last Modified: $Date: 2001/02/03 00:23:00 $ -- Version: $Id: hinsi.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- This file is not part of SKK yet. -- -- SKK is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either versions 2, or (at your option) -- any later version. -- -- SKK is distributed in the hope that it will be useful -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with SKK, see the file COPYING. If not, write to the Free -- Software Foundation Inc., 59 Temple Place - Suite 330, Boston, -- MA 02111-1307, USA. -- -- Commentary: -- -- Code DROP TABLE hinsi; -- old name DROP TABLE hinsi_base; CREATE TABLE hinsi_base ( hinsi varchar(23) NOT NULL, -- longest is `¥µ¹Ô(¤¹¤ë)&̾»ì²½ÀÜÈø¸ì' hinsiID int2 NOT NULL, hinsiID2 int2 ); COPY hinsi_base FROM '/usr/local/share/emacs/site-lisp/skk/tmp/hinsi_base.txt'; CREATE INDEX hinsiB_hinsi_index ON hinsi_base USING BTREE (hinsi varchar_ops); CREATE INDEX hinsiB_hinsiID_index ON hinsi_base USING BTREE (hinsiID int2_ops); CREATE INDEX hinsiB_hinsiID2_index ON hinsi_base USING BTREE (hinsiID2 int2_ops); VACUUM hinsi_base; SELECT COUNT(*) FROM hinsi_base; DROP TABLE hinsi_data; CREATE TABLE hinsi_data ( yomi varchar(26) NOT NULL, -- longest is `¤Ð¤Ã¤¯¤×¤í¤Ñ¤²¡¼¤·¤ç¤ó¤Û¤¦' kanji varchar(24) NOT NULL, -- longest is `¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à' hinsiID int2 NOT NULL, hinsiID2 int2 ); COPY hinsi_data FROM '/usr/local/share/emacs/site-lisp/skk/tmp/hinsi_data.txt'; CREATE INDEX hinsiD_yomi_index ON hinsi_data USING BTREE (yomi varchar_ops); CREATE INDEX hinsiD_hinsiID_index ON hinsi_data USING BTREE (hinsiID int2_ops); CREATE INDEX hinsiD_hinsiID2_index ON hinsi_data USING BTREE (hinsiID2 int2_ops); VACUUM hinsi_data; SELECT COUNT(*) FROM hinsi_data; -- end of hinsi.sql ddskk-15.2/experimental/rdbms/sql/kcode.sql0000644000570400056700000000247307236647544021042 0ustar kitamotoopenlab-- kcode.sql -- -- Copyright (C) 1998 NAKAJIMA Mikio -- -- Author: NAKAJIMA Mikio -- Created: Sep 1, 1998 -- Last Modified: $Date: 2001/02/03 00:23:00 $ -- Version: $Id: kcode.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- This file is not part of SKK yet. -- -- SKK is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either versions 2, or (at your option) -- any later version. -- -- SKK is distributed in the hope that it will be useful -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with SKK, see the file COPYING. If not, write to the Free -- Software Foundation Inc., 59 Temple Place - Suite 330, Boston, -- MA 02111-1307, USA. -- -- Commentary: -- -- Code DROP TABLE kcode; CREATE TABLE kcode ( kanji varchar(2) NOT NULL PRIMARY KEY, JIScode char(4) NOT NULL UNIQUE, Unicode char(4) NOT NULL UNIQUE ); COPY kcode FROM '/usr/local/share/emacs/site-lisp/skk/tmp/kcode.txt'; VACUUM kcode; SELECT COUNT(*) FROM kcode; -- end of kcode.sql ddskk-15.2/experimental/rdbms/sql/stroke.sql0000644000570400056700000000252307236647544021260 0ustar kitamotoopenlab-- stroke.sql -- -- Copyright (C) 1998 NAKAJIMA Mikio -- -- Author: NAKAJIMA Mikio -- Created: Sep 1, 1998 -- Last Modified: $Date: 2001/02/03 00:23:00 $ -- Version: $Id: stroke.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- This file is not part of SKK yet. -- -- SKK is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either versions 2, or (at your option) -- any later version. -- -- SKK is distributed in the hope that it will be useful -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with SKK, see the file COPYING. If not, write to the Free -- Software Foundation Inc., 59 Temple Place - Suite 330, Boston, -- MA 02111-1307, USA. -- -- Commentary: -- -- Code DROP TABLE stroke; CREATE TABLE stroke ( stroke int2 NOT NULL, kanji varchar(2) NOT NULL PRIMARY KEY ); COPY stroke FROM '/usr/local/share/emacs/site-lisp/skk/tmp/stroke.txt'; CREATE INDEX stroke_index ON stroke USING BTREE (stroke int2_ops); VACUUM stroke; SELECT COUNT(*) FROM stroke; -- end of stroke.sql ddskk-15.2/nicola/0000755000570400056700000000000012434434722014054 5ustar kitamotoopenlabddskk-15.2/nicola/.cvsignore0000644000570400056700000000005607203135674016057 0ustar kitamotoopenlabnicola-ddskk-autoloads.el *.elc *.diff *.orig ddskk-15.2/nicola/ChangeLog0000644000570400056700000005367112322425013015627 0ustar kitamotoopenlab2014-03-31 Yuichi Higashi * NICOLA-DDSKK-ELS, skk-nicola-colemak.el, skk-omelet-colemak.el: Add Colemak 2014-03-26 Yuichi Higashi * skk-nicola.el: Separate skk-nicola-prefix-suffix-abbrev-chars into skk-nicola-prefix-suffix-chars and skk-nicola-abbrev-chars 2013-06-22 Tatsuya Kinoshita * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): Add coding tag. 2013-04-07 Tatsuya Kinoshita * skk-nicola.el: Do not use `skk-sit-for'. 2012-09-13 Tetsuo Tsukamoto * skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-nicola.el: Find feature `emacs' for GNU emacs. 2011-06-12 Tetsuo Tsukamoto * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): Indent fixes. 2011-05-31 Tetsuo Tsukamoto * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): Undo the previous change and set buffer-file-name instead. 2011-05-08 Tetsuo Tsukamoto * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): Set generated-autoload-file under Emacs 24 or later. 2010-11-17 Tetsuo Tsukamoto * skk-kanagaki.el, skk-nicola.el: Update custom types for user options. * *.el: Update docstrings. 2010-11-14 Tetsuo Tsukamoto * skk-kanagai.el (skk-setup-keymap@around@skk-kangaki-keys): No longer modify value of skk-previous-candidate-char. Change to after advice. 2010-10-24 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-format-time): Update comments. 2010-09-11 Tetsuo Tsukamoto * NICOLA-DDSKK-CFG, NICOLA-DDSKK-ELS: Do not use path-util.el. * NICOLA-DDSKK-MK: Do not requiqre pcustom and poem. * skk-kanagaki-menu.el: Do not use path-util.el and static.el. * skk-kanagaki-util.el, skk-nicola-dcomp.el: Do not require static. * skk-kanagaki.el: Do not use `defalias-maybe'. * skk-nicola.el: Do not use static.el. Require skk-emacs instead of skk-e21 for GNU Emacsen. 2010-09-09 Tetsuo Tsukamoto * NICOLA-DDSKK-CFG: Check if Emacs is self-contained. * NICOLA-DDSKK-MK: Show VERSION_SPECIFIC_LISPDIR. * skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-nicola.el: Use skk-running-gnu-emacs. 2010-08-27 Tetsuo Tsukamoto * skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-nicola.el: Do not use skk-emacs-type. 2010-08-21 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-rshift-keys): Use `append' instead of `nconc'. 2010-08-02 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-bs): Use `delete-char' instead of `delete-backward-char'. 2010-01-30 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-print-help-function): New constant variable. (skk-kanagaki-help-1): Use it. Use `with-current-buffer' instead of `save-excursion'. 2009-11-02 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-initialize): Use `skk-char-to-unibyte-string' instead of `char-to-string'. * skk-nicola.el (skk-insert@around@skk-nicola-workaround): Use `char-to-string' instead of `skk-char-to-string'. (skk-nicola-turn-on-j-mode, skk-nicola-treat-triple) (skk-nicola-insert-double, skk-nicola-maybe-double-p): Use `skk-char-to-unibyte-string' instead of `char-to-string'. 2009-08-14 Tetsuo Tsukamoto * skk-kanagaki-menu.el: * skk-nicola.el: Check for mule6. 2009-08-13 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-insert): Use `skk-bind-last-command-char'. * skk-nicola.el (skk-nicola-self-insert-lshift-1): (skk-nicola-insert-single, skk-nicola-insert-double): (skk-nicola-turn-on-j-mode, skk-nicola-space-function): (skk-nicola-maybe-double-p): (skk-insert@around@skk-nicola-workaround): Use `skk-last-command-char' and `skk-bind-last-command-char'. 2008-12-17 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-format-time): CAR of return value of `current-time' must be multiplied by 65536 (i.e. 2x10^6). Fix. 2007-09-02 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-setup-modeline): Name the toplevel anonymous function for skk-mode-hook. (skk-kanagaki-initialize): New advice. 2007-08-20 Tetsuo Tsukamoto * skk-kanagaki.el (skk-setup-keymap): Define function keys f1-f10 only when skk-j-mode-function-key-usage is `kanagaki'. 2007-08-14 Tetsuo Tsukamoto * skk-kanagaki-util.el: * skk-nicola.el: Put `skk-kanagaki-bs', skk-nicola-self-insert-lshift and skk-nicola-self-insert-rshift' property for pending-del or delsel. 2007-04-29 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-bs): Call `skk-dcomp-after-delete-backward-char'. * skk-nicola.el (skk-nicola-self-insert-lshift-1): New function. * skk-nicola-dcomp.el: Advise it instead of `skk-nicola-self-insert-lshift'. 2007-04-24 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-insert): * skk-nicola.el (skk-nicola-self-insert-lshift): (skk-nicola-insert-single): (skk-nicola-space-function): Rename optional argument. 2007-04-22 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-insert): * skk-nicola.el (skk-nicola-self-insert-lshift): (skk-nicola-insert-single): (skk-nicola-space-function): Accept optional argument PREFIX-ARG. 2007-04-22 Tetsuo Tsukamoto Suggested by Tatsuya Kinoshita . * *.el: Specify coding at the first line of each file containing non-ASCII characters. 2007-04-14 Tetsuo Tsukamoto * skk-kanagaki.el: * skk-nicola.el: Update custom types. 2007-04-08 Tetsuo Tsukamoto * skk-kanagaki.el: Define custom group skk-kanagaki in skk-vars.el. * skk-nicola.el: Define custom group skk-nicola in skk-vars.el. 2007-03-29 Tetsuo Tsukamoto * NICOLA-DDSKK-CFG: Modify default values for install-prefix, LISPDIR and VERSION_SPECIFIC_LISPDIR. 2007-03-25 Tetsuo Tsukamoto * NICOLA-DDSKK-CFG: Call `install-get-default-package-directory' for setting PACKAGEDIR. * NICOLA-DDSKK-MK (compile-nicola-ddskk-package): Call `install-update-package-files'. 2006-01-18 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-insert-kana): Call `skk-cancel-undo-boundary'. 2005-12-18 Tetsuo Tsukamoto * skk-nicola-dcomp.el (skk-nicola-self-insert-lshift): Call `skk-dcomp-do-completion'. 2005-12-15 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-dakuten): When Emacs is in skk-isearch and SKK enters minibuffer touroku mode, do not set buffer to skk-isearch-working-buffer. 2005-12-04 Tetsuo Tsukamoto * skk-nicola-dcomp.el (skk-nicola-self-insert-lshift): Do not do completion if skk-hint-inhibit-dcomp is non-nil. 2005-11-28 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-dakuten): * skk-nicola.el (skk-nicola-insert-double): Workaround for modification in Emacs 22.0.50 which uses a vector, instead of a list, for each element of `isearch-cmds'. 2005-02-25 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-insert): When skk-dcomp is used, call `skk-dcomp-cleanup-buffer' before calling `skk-set-okurigana-no-sokuon'. (skk-kanagaki-set-okurigana): Redefine function as an alias to `skk-set-char-before-as-okurigana'. 2004-08-29 Yoichi NAKAYAMA * skk-kanagaki.el: Fixed typo. 2004-04-04 Tetsuo Tsukamoto * skk-kanagaki-menu.el: Add Japanese menu support for Emacs 21. * skk-nicola-dcomp.el (skk-nicola-self-insert-lshift): Do not try to delete region when local variable pos is not set. 2004-03-13 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-jidou-keymap-kakikae-service): Abolish variable. * skk-kanagaki-util.el (skk-kanagaki-call-xmodmap): Abolish macro. (skk-kanagaki-help-1): Abolish old style backquote. * skk-106-jis.el: * skk-oasys.el: Don't call xmodmap. 2004-03-12 Tetsuo Tsukamoto * skk-106-jis.el: Modify keycode 123 -> 211. (skk-kanagaki-106-jis-base-rule-list): (skk-106-jis-plain-rule-list): Call `skk-nicola-insert' for chars \, |, _, Y, and Z. (skk-106-jis-lshift-rule-list): (skk-106-jis-rshift-rule-list): Default to the same as skk-106-jis-plain-rule-list. * skk-kanagaki-util.el (skk-kanagaki-dakuten): Don't call `caddr'. Call `nth' instead. Use `skk-unread-event'. * skk-nicola.el (skk-nicola-insert-double): Do not consider skk-106-jis explicitly. (skk-nicola-rshift-keys): Do not consider Emacs 20.2 or earlier. 2004-03-09 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-dakuten): Now works in isearch mode. This is Kanzen-like behavior. (isearch-repeat): Advise to go to isearch-barrier before search. 2004-03-04 Tetsuo Tsukamoto * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): No longer support Mule 2. 2003-07-09 Tetsuo Tsukamoto * skk-kanagaki-util.el: (skk-kanagaki-temp-dir): Abolish variable. (skk-kanagaki-call-xmodmap): Call `make-temp-file', not `make-temp-name'. 2002-07-25 Tetsuo Tsukamoto * skk-nicola.el: (isearch-text-char-description): Do not put advice to this function. 2002-07-20 Tetsuo Tsukamoto * skk-nicola.el: (skk-nicola-insert-double): Do not call `skk-nicola-set-okuri-flag' at the henkan start point. 2002-01-19 Tetsuo Tsukamoto * skk-kanagaki-menu.el: * skk-kanagaki-util.el: * skk-nicola-dcomp.el: * skk-nicola-jis.el: * skk-nicola-us.el: * skk-nicola.el: * skk-omelet-jis.el: * skk-omelet-us.el: Use #' for functions. 2002-01-18 Tetsuo Tsukamoto * skk-nicola.el: Remove workarounds for MULE 3. (isearch-char-to-string): No longer advise here. 2002-01-17 Tetsuo Tsukamoto * skk-nicola.el: Doc strings and comments update. 2001-12-09 Tetsuo Tsukamoto * skk-kangaki.el (skk-kanagaki-adjust-rule-tree): Set rules. 2001-12-02 Tetsuo Tsukamoto * skk-kangaki.el (skk-setup-keymap): Preactivate. 2001-11-17 Tetsuo Tsukamoto * skk-nicola-jis.el * skk-nicola-us.el * skk-omelet-jis.el * skk-omelet-us.el: Use `skk-mode-hook' when `skk-nicola-use-koyubi-functions' is non-nil. 2001-11-03 Tetsuo Tsukamoto * skk-kanagaki.el (skk-setup-keymap): New advice. 2001-11-03 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-midashi-henkan): Bind `skk-kakutei-history' nil. * skk-nicola.el (skk-nicola-insert-double): Bind `skk-kakutei-history' nil. 2001-10-31 Tetsuo Tsukamoto * skk-kanagaki-util.el * skk-kanagaki.el * skk-nicola-dcomp.el * skk-nicola.el: Refer to `skk-henkan-mode'. 2001-10-12 Tetsuo Tsukamoto * skk-kangaki-menu-oe.el: No longer in the repository. 2001-10-11 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-turn-on-j-mode): Don't check if color cursor is required. 2001-10-10 Tetsuo Tsukamoto * NICOLA-DDSKK-ELS * skk-kanagaki-util.el * skk-kanagaki.el * skk-nicola.el: Modification concerning specificity. 2001-10-07 Tetsuo Tsukamoto * skk-kanagaki.el (skk-compute-henkan-lists-sub-adjust-okuri): New advice. 2001-10-02 Tetsuo Tsukamoto * skk-nicola-dcomp.el: New file. 2001-09-23 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-turn-on-j-mode): Call `skk-cursor-set'. 2001-09-17 Tetsuo Tsukamoto * skk-omelet-us.el (skk-insert): Now advise in skk-nicola.el. * skk-kanagaki.el, skk-nicola.el: Rename each one of advice. * skk-nicola-us.el: Enable Koyubi functions. 2001-09-16 Tetsuo Tsukamoto * skk-omelet-us.el (skk-insert): Workaround. Enable Koyubi fnctions. * skk-nicola.el (skk-nicola-lshift-function): New variable. (skk-nicola-lshift-function): Refer to it. 2001-09-14 Tetsuo Tsukamoto * *: Re-indent. 2001-09-11 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Use `skk-dcomp-marked-p'. 2001-09-10 Tetsuo Tsukamoto * skk-kangaki.el (skk-kanagaki-adjust-rule-tree): Use `case'. (skk-kanagaki-insert): Use `skk-save-point'. (skk-insert): Don't bind `skk-henkan-point-key' in skk-jisx0201-mode. 2001-09-08 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Do not do dynamic completion when `skk-henkan-active'. Call `skk-insert' when `skk-kanagaki-state' is not kana. 2001-09-07 Tetsuo Tsukamoto * skk-kanagaki.el (skk-toggle-katakana): Make or kill local variable `skk-kanagaki-state'. (skk-mode, skk-latin-mode, skk-jisx0208-latin-mode, skk-abbrev-mode): New advice. * skk-nicola.el (skk-nicola-self-insert-lshift): Do not do dynamic completion if `this-command' is `skk-nicola-self-insert-rshift'. 2001-09-06 Tetsuo Tsukamoto * *: No real changes. Looks more esthetic. * skk-kanagaki.el (skk-toggle-katakana): New advice. * skk-kanagaki-menu*.el: Don't consider `skk-jisx0201-mode-map'. 2001-08-29 Tetsuo Tsukamoto * *: Update comments and doc strings. 2001-08-25 Tetsuo Tsukamoto * *: Farewell to Emacs 18. 2001-08-09 Tetsuo Tsukamoto * *: Clean up. 2001-08-08 Tetsuo Tsukamoto * skk-kanagaki.el, skk-nicola.el: Typo. 2001-07-28 Tetsuo Tsukamoto * skk-kanagaki.el (skk-compute-henkan-lists): I guess that is preferred, then had better let the function advised. (skk-kanagaki-rule-list): Add a rule for `skk-kakutei-key'. 2001-07-20 NAKAJIMA Mikio * skk-kanagaki.el (skk-compute-henkan-lists): The function that has skk-kanagaki specific transaction was moved from skk.el. 2001-03-19 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-treat-triple): New function. (skk-nicola-insert): Call it. 2001-03-16 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-temp-data): New variable. (skk-nicola-insert): Deal with triple typings. (skk-nicola-format-time, skk-nicola-event-to-key, skk-nicola-insert-single, skk-nicola-insert-double, skk-nicola-maybe-double-p): New functions. 2001-03-12 Tetsuo Tsukamoto * README.NICOLA.ja: Update. * skk-kanagaki.el (skk-kanagaki-previous-candidate-key): Change the default value to "\C-p". (skk-kanagaki-initialize): Set `skk-previous-candidate-char' properly if necessary. 2001-01-20 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Remove defvars for skk-dcomp. 2001-01-07 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-insert-kana): When RULE indicates a function, call it. 2000-12-16 Tetsuo Tsukamoto * skk-nicola.el: Remove defvars for skk-dcomp. 2000-12-13 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-toggle-rom-kana): Call `skk-modify-indicator-alist'. * skk-nicola.el (skk-mode-hook): Ditto. 2000-12-05 Tetsuo Tsukamoto * README.NICOLA.ja: New file. * skk-106-jis.el: Require `skk-nicola'. * skk-kanagaki.el (skk-insert@around@skk-kanagaki-ad): Set `skk-process-okuri-early' to nil. 2000-12-04 Tetsuo Tsukamoto * *: Modify Comments. 2000-12-03 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Don't advise to do completion when `skk-henkan-active' is t. 2000-12-02 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Modify for skk-dcomp. 2000-12-01 Tetsuo Tsukamoto * *: Modify comments. 2000-11-29 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift@arond@skk-nicola-ad-for-dcomp): New advice. 2000-11-28 Tetsuo Tsukamoto * skk-nicola.el: Integrate some pieces of advice into original functions. (skk-nicola-lshift-function): Simply call `skk-kakutei'. 2000-11-27 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-bs): Use `skk-isearch-current-buffer'. * skk-kanagaki.el (skk-kanagaki-initialize, skk-kanagaki-adjust-rule-tree): New functions. 2000-11-25 Tetsuo Tsukamoto * skk-nicola.el: Do nothing for tutorial under Emacs 18. (skk-nicola-lshift-keys): Rename from `skk-nicola-lshift-key'. (skk-nicola-rshift-keys): Rename from `skk-nicola-rshift-key'. (skk-nicola-turn-on-j-mode): Insert original characters. 2000-11-24 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-2nd-help): Add keys. 2000-11-20 Tetsuo Tsukamoto * skk-nicola.el: Eliminate warnings. Call `skk-mode-string-to-indicator'. 2000-11-19 Tetsuo Tsukamoto * skk-nicola.el (skk-mode-hook): Update modeline indicators under Emacs 21. Call `skk-update-modeline'. (skk-kanagaki-toggle-rom-kana): Ditto. 2000-11-15 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-state): This shouldn't be a local varaible. * skk-nicola.el (skk-kanagaki-toggle-rom-kana): Update all buffers. 2000-11-13 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-bs): Rename from `skk-kanagaki-delete-backward-char'. (skk-kanagaki-esc): New function. * skk-kanagaki.el (skk-kanagaki-isearch-buffer): New variable. (skk-isearch-wrapper): New advice. (skk-insert): Keep `skk-kanagaki-state' to rom in tutorial. * skk-nicola.el (skk-nicola-use-koyubi-functions): New variable. (skk-nicola-lshift-function): Call `exit-minibuffer' in minibuffer. * skk-nicola-jis.el, skk-oasys.el, skk-omelet-jis.el: Define keys when `skk-nicola-use-koyubi-functions' is non-nil. 2000-11-12 Tetsuo Tsukamoto * README.ja: Update. * *.el: Modify comments. 2000-11-09 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-sit-for): Abolish. * skk-nicola.el: Use `skk-sit-for'. 2000-11-08 Tetsuo Tsukamoto * skk-kanagaki.el: Modify comments. * skk-kanagaki-util.el (skk-kanagaki-sit-for, skk-kanagaki-make-string): Redefine as macros. 2000-11-07 Tetsuo Tsukamoto * *: From "experimental/nicola" to "nicola". 2000-11-04 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-state): New variable. (skk-kanagaki-toggle-rom-kana): Check it. 2000-11-02 Tetsuo Tsukamoto * skk-kanagaki.el (skk-okurigana-prefix): New advice. 2000-10-17 Tetsuo Tsukamoto * skk-106-jis.el, skk-kanagaki-menu-oe.el, skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-kanagaki.el, skk-nicola-dvorak.el, skk-nicola-jis.el, skk-nicola-us.el, skk-nicola.el, skk-oasys.el, skk-omelet-dvorak.el, skk-omelet-jis.el, skk-omelet-us.el: Call `product-provide'. 2000-10-12 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-turn-on-j-mode): Use `skk-cursor-hiragana-color' instead of the return value of `skk-cursor-current-color'. 2000-10-11 Tetsuo Tsukamoto * skk-kanagaki-util.el: Require "static" at compile time. 2000-10-10 Tetsuo Tsukamoto * README.ja: Update. 2000-10-09 Tetsuo Tsukamoto * README.ja: Update. * skk-nicola.el (skk-nicola-turn-on-j-mode): Check the value of `skk-use-color-cursor' as well as the return value of `skk-color-display-p'. (skk-previous-candidate): Fix the advice. * skk-106-jis.el, skk-nicola-dvorak.el, skk-nicola-jis.el, skk-nicola-us.el, skk-oasys.el, skk-omelet-dvorak.el, skk-omelet-jis.el, skk-omelet-us.el: Don't use `defconst'. 2000-10-07 Tetsuo Tsukamoto * skk-kanagaki.el (skk-adjust-user-option): Don't use `mapcar'. 2000-09-17 Tetsuo Tsukamoto * skk-nicola.el: Add comments. 2000-09-13 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-help-1): Move from skk-kanagaki.el. 2000-09-11 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kangaki-help): Use `dolist'. * skk-nicola.el (skk-nicola-2nd-help): Ditto. (skk-nicola-turn-on-j-mode): Use `set-buffer-local-cursor-color' instead of `update-buffer-local-frame-params'. 2000-09-10 Tetsuo Tsukamoto * NICOLA-DDSKK-MK: Use `dolist' or `do' instead of `mapcar' or `while' if possible. * README.URIs: Use overlays instead of text properties. * README.ja: Ditto. * skk-nicola.el (skk-nicola-setup): New function. 2000-09-08 Tetsuo Tsukamoto * Makefile (VERSION): Use version number of Darevil SKK. * README.URIs: Highlight URIs as if they are clickable. * README.ja: Ditto. 2000-09-06 Tetsuo Tsukamoto * skk-*.el: Add keywords. 2000-09-05 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-insert): Sync with new cursor-controlling functions. Fix the behaviour of right-shift-key simultaneous typing. 2000-09-04 Tetsuo Tsukamoto * Changelog, Changelog.1, Changelog.2, Makefile, NICOLA-DDSKK-CFG, NICOLA-DDSKK-ELS, NICOLA-DDSKK-MK, README.URIs, README.ja, skk-106-jis.el, skk-kanagaki-menu-oe.el, skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-kanagaki.el, skk-nicola-dvorak.el, skk-nicola-jis.el, skk-nicola-us.el, skk-nicola.el, skk-oasys.el, skk-omelet-dvorak.el, skk-omelet-jis.el, skk-omelet-us.el: New files. ddskk-15.2/nicola/ChangeLog.10000644000570400056700000000255007203135675015772 0ustar kitamotoopenlab;; -*-indented-text-*- NICOLA SKK ChangeLog Beta version based on SKK 8.6 version 0.39 (Dec., 1999) Makefile $B$N4V0c$$$rD{@5!#G[Ns$N4V0c$$$rD{@5!#(B($B!X!Y$J$I(B) version 0.38 (Dec., 1999) $B8E$/$J$C$F!"ITMW$K$J$C$?%U%!%$%k$r>C$7$?!#%I%-%e%a%s%H$N2~D{!#(B version 0.37 (Dec., 1999) Mule for Windows $B%f!<%6!<$N$?$a$K%I%-%e%a%s%H$r0lIt2~D{!#(B version 0.36 (Nov. 28, 1999) $B?F;X%7%U%H%-!<$N@_Dj$K$h$C$F$O$&$^$/;H$($J$$LdBj$r=$@5!#(B omelet $B$,(B nicola.el $B$r;H$o$J$$$h$&$K$7$?$3$H$r/$7JQ$($?!#(B $B$9$Y$F(B skk-nic-insert $B$K%P%$%s%I$9$l$P$$$$!#(B $B:8%7%U%H$rG$0U$N%-!<$K3d$j$"$F$k$3$H$,$G$-$k$h$&$K$7$?!#(B $B$+$J%b!<%I$N$_!"(B :" $B$J$I$K%P%C%/%9%Z!<%9$r3d$jEv$F$k$3$H$,$G$-$k$h$&(B $B$K$7$?!#(B Alpha version (0.1-0.2) based on SKK 8.6 - 9.2 $B4pK\E*$J%3!<%I$N:n@.(B ($BJQ49!"3NDj!"%+%?%+%JJQ49!"%b!<%I@Z$j49$(!"FI$_$NJd40!"%3!<%IF~NO(B) $BF1;~BG80$N%"%k%4%j%:%`$N8&5f(B $B:GE,$J%-!<%P%$%s%I$N8&5f(B SKK-ML $B$G$N;n838x3+(B Aug 31, 1996 Version 0.25 Mar 13, 1996 Version 0.24 Feb 27, 1996 Version 0.23 Feb 1996 Version 0.1 ddskk-15.2/nicola/ChangeLog.20000644000570400056700000000765007203135675016001 0ustar kitamotoopenlab2000-08-28 Tetsuo Tsukamoto * (nicola-ddskk-0_2): New branch. 2000-08-26 Tetsuo Tsukamoto * skk-nicola.el: $B%$%s%8%1!<%?$NJQ99!#(B (skk-nicola-insert-kana): Prefix Argument $B$KBP1~!#(B 2000-08-24 Tetsuo Tsukamoto * skk-*.el: $B%3!<%I$N@0M}!#(B 2000-08-21 Tetsuo Tsukamoto * NICOLA-DDSKK-MK: autoloads $B$r@8@.$9$k$h$&$K$7$?!#(B * skk-kanagaki-menu.el, skk-kanagaki-menu-oe.el: $B%a%K%e!<%5%]!<%H(B $BDI2C!#(B 2000-08-20 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-set-henkan-point-chars, skk-nicola-toggle-kana-chars, skk-nicola-prefix-suffix-abbrev-chars): $B$3$l$^$G(B f+j, d+k, g+h $B$K(B $B7h$aBG$A$5$l$F$$$?5!G=$K$D$$$F!"%-!<3dEv$F$r%+%9%?%^%$%:$G$-$k$h$&(B $B$K$7$?!#$3$l$G(B ANSI Dvorak $BG[Ns$N%-!<%\!<%I$J$I$K$bG[N8$G$-$k$H;W(B $B$&!#(B * skk-kanagaki.el (skk-kanagaki-start-henkan-okuriari): $B%*%j%8%J%k(B $B$r;29M$K$7$F!"%*%j%8%J%k$HF1$87A<0$NJQ49$,$G$-$k$h$&$K$7$?!#$3$l$K(B $BH<$C$F!"(Bskk-nicola.el $B$G$O(B NICOLA-SKK $B<0$NAw$j2>L>$+(B SKK $B<0$NAw$j(B $B2>L>$+$r%f!<%6%*%W%7%g%s$GA*$Y$k$h$&$K$7$?!#(B 2000-08-19 Tetsuo Tsukamoto * (nicola-ddskk-0_1): New branch. $B$3$l$^$G$N@.2L$O==J,$H$^$G$O8@$($J$$$+$bCN$l$J$$$,!"$R$H$D$NL\I8$K(B $B$OC#$7$?$H;W$&$N$G!"?7$7$$$7$?!#(B (skk-insert): $B8=:_$N(B point $B$,(B marker $B$HF1$8$+$h$j>.$5$+$C$?>l9g$O(B marker $B$r%/%j%"$9$k$h$&$K$7$?!#(B 2000-08-18 Tetsuo Tsukamoto * skk-nicola.el: $BAw$j$"$jJQ49$N$7$?!#(B $B:8?F;X(B + $B1&?F;X(B $B$G(B latin $B%b!<%I(B $B"N(B $B$+$J%b!<%I(B $B$N%H%0%k$,$G$-$k$h$&(B $B$K$7$?!#(B * skk-kanagaki.el (skk-kanagaki-start-henkan-okuriari): $B%H%j%C%-!<(B $B$J$N$r=q$-D>$7$?!#$3$l$GL5MQ$J(B advice $B$,$R$H$D8:$C$?!#$G$b$^$@(B skk-nicola.el $B$NCf$K$$$d$J(B advice $B$,$$$/$D$+$"$k!#(B {$B8e5-(B} $B!D(B $B$*$*$`$M2r7h$9$k$b!"(BNemacs $B$NHs8_49@-$O5[<}$G$-$:!#(B {$B8e!95-(B} $B!D(B Mule 1.1 $B$b%@%a$@$C$?(B... {$B8e!9!95-(B} $B!D(B Daredevil $B$N(B `skk-okurigana-prefix' $B$r=$@5$7$?!#$3$l(B $B$G(B Nemacs $B$G$b(B `skk-kana-rom-vector' $B$,;H$($k$h$&$K$J$C$?!#(B 2000-08-17 Tetsuo Tsukamoto * skk-nicola.el: NICOLA-SKK $B$HF1$8$h$&$JJQ49$r$9$k$?$a$N%3!<%I$r=q(B $B$-;O$a$?!#$^$@%P%0$,B?$$$,!"$H$j$"$($:F0$/$h$&$@!#(B 2000-08-16 Tetsuo Tsukamoto * skk-nicola.el: $B$h$&$d$C$H(B isearch $B$N5!G=$,?M$K8+$;$i$l$k%l%Y%k$K(B $B$J$C$?!"$h$&$J5$$,$9$k!#(B 2000-08-15 Tetsuo Tsukamoto * Makefile, NICOLA-DDSKK-CFG, NICOLA-DDSKK-ELS, NICOLA-DDSKK-MK: $BC1BN$G$N%$%s%9%H!<%k$KBP1~$7$F$_$?!#(B * skk-nicola.el: f + g $B$G$NAw$j$"$jJQ49$K$H$j$"$($:BP1~!#(B 2000-08-14 Tetsuo Tsukamoto * skk-*.el: $B%3!<%I$N@0M}!#(B $B$3$3$K=q$/$3$H$G!"(BNICOLA $B$JF~NO$NN}=,$r$9$k!#(B * skk-nicola.el (skk-nicola-self-insert-{r,l}shift): Isearch $B$NET(B $B9g$r9M$(!"(Bread-only $B;~$N%(%i!<$r$d$a$k!#(B * skk-oasys.el: $B%-!$r(B NICOLA-DDSKK $B$H$7$F$_$k!#(B 2000-08-13 Tetsuo Tsukamoto * skk-*.el: $B%U%!%$%k9=@.$rJQ99!#(B1 $B%-!]G[Ns(B 1 $B%U%!%$%kJ}<0$G%b%8%e!<(B $B%k2=$rB%?J!#(B 2000-08-09 Tetsuo Tsukamoto * skk-*.el: NICOLA-SKK $B$N5!G=$rF3F~!#(B ddskk-15.2/nicola/Makefile0000644000570400056700000000141207206163417015513 0ustar kitamotoopenlab# # Makefile for NICOLA-DDSKK. # PACKAGE = nicola-ddskk TAR = /bin/tar RM = /bin/rm -f EMACS = emacs XEMACS = xemacs FLAGS = -batch -q -no-site-file -l NICOLA-DDSKK-MK PREFIX = NONE LISPDIR = NONE PACKAGEDIR = NONE VERSION_SPECIFIC_LISPDIR = NONE GOMI = *.elc auto-autoloads.el custom-load.el nicola-ddskk-autoloads.el all: elc elc: clean $(EMACS) $(FLAGS) -f compile-nicola-ddskk $(PREFIX) $(LISPDIR) \ $(VERSION_SPECIFIC_LISPDIR) install-elc: elc $(EMACS) $(FLAGS) -f install-nicola-ddskk $(PREFIX) $(LISPDIR) \ $(VERSION_SPECIFIC_LISPDIR) install: install-elc package: clean $(XEMACS) $(FLAGS) -f compile-nicola-ddskk-package $(PACKAGEDIR) install-package: package $(XEMACS) $(FLAGS) -f install-nicola-ddskk-package $(PACKAGEDIR) clean: -$(RM) $(GOMI) ddskk-15.2/nicola/NICOLA-DDSKK-CFG0000644000570400056700000000573111442723324016202 0ustar kitamotoopenlab;;; NICOLA-DDSKK-CFG --- installation setting -*-emacs-lisp-*- ;;; Code: (or (fboundp 'add-to-list) (defun add-to-list (list-var element) (or (member element (symbol-value list-var)) (set list-var (cons element (symbol-value list-var)))))) (defvar emacs-major-version (progn (string-match "^[0-9]+" emacs-version) (string-to-int (substring emacs-version (match-beginning 0) (match-end 0))))) (or (fboundp 'member) (defun member (elt list) (while (and list (not (equal elt (car list)))) (setq list (cdr list))) list)) ;; (defvar default-load-path load-path) (add-to-list 'load-path (expand-file-name "../../site-lisp/skk" data-directory)) (add-to-list 'load-path (expand-file-name "../site-lisp/skk" data-directory)) (add-to-list 'load-path (expand-file-name ".")) (if (boundp 'LISPDIR) (progn (add-to-list 'default-load-path LISPDIR) (add-to-list 'load-path LISPDIR) (add-to-list 'load-path (expand-file-name "skk" LISPDIR)))) (if (boundp 'VERSION_SPECIFIC_LISPDIR) (add-to-list 'load-path VERSION_SPECIFIC_LISPDIR)) (require 'install (expand-file-name "install.el" "..")) (defvar emacs-self-contained nil) ;; Default value of install-prefix is not valid on some systems, especially ;; on non-UNIX like systems. (setq install-prefix (cond ((eq system-type 'windows-nt) ;; Meadow, NTEmacs (setq emacs-self-contained t) (expand-file-name ".." exec-directory)) ((eq system-type 'darwin) ;; Carbon Emacs or Cocoa Emacs (or system-default Emacs) (let ((dir (expand-file-name ".." data-directory))) (if (string-match "/Emacs\\.app/Contents/Resources/?$" dir) (progn (setq emacs-self-contained t) dir) (expand-file-name "../../.." dir)))) ((featurep 'xemacs) (expand-file-name "../../.." exec-directory)) (t (expand-file-name "../../../.." data-directory)))) ;;; @ Please specify prefix of install directory. ;;; ;; Please specify install path prefix. ;; If it is omitted, shared directory (maybe /usr/local is used). (defvar PREFIX install-prefix) ;;(setq PREFIX "~/") ;; Please specify prefix for ``NICOLA-DDSKK'' [optional] (setq NICOLA-DDSKK_PREFIX "nicola-ddskk") ;;; @ optional settings ;;; ;; It is generated by automatically. Please set variable `PREFIX'. ;; If you don't like default directory tree, please set it. (defvar LISPDIR (cond (emacs-self-contained (expand-file-name "site-lisp" PREFIX)) (t (install-detect-elisp-directory PREFIX)))) ;; (setq install-default-elisp-directory "~/lib/emacs/lisp") (defvar VERSION_SPECIFIC_LISPDIR (cond (emacs-self-contained (expand-file-name "site-lisp" PREFIX)) (t (install-detect-elisp-directory PREFIX nil 'version-specific)))) ;; (setq FLIM_DIR (expand-file-name FLIM_PREFIX VERSION_SPECIFIC_LISPDIR)) (setq NICOLA-DDSKK_DIR (expand-file-name NICOLA-DDSKK_PREFIX VERSION_SPECIFIC_LISPDIR)) (defvar PACKAGEDIR (install-get-default-package-directory)) ;;; NICOLA-DDSKK-CFG ends here ddskk-15.2/nicola/NICOLA-DDSKK-ELS0000644000570400056700000000111612322425013016207 0ustar kitamotoopenlab;;; NICOLA-DDSKK-ELS --- list of modules to install -*-emacs-lisp-*- ;;; Code: (if (locate-library "easymenu") (require 'easymenu)) (setq nicola-ddskk-modules '(nicola-ddskk-autoloads skk-106-jis skk-kanagaki skk-kanagaki-menu skk-kanagaki-util skk-nicola-colemak skk-nicola-dcomp skk-nicola-dvorak skk-nicola-jis skk-nicola-us skk-nicola skk-oasys skk-omelet-colemak skk-omelet-dvorak skk-omelet-jis skk-omelet-us)) (if (featurep 'xemacs) (setq nicola-ddskk-modules (delq 'nicola-ddskk-autoloads nicola-ddskk-modules))) ;;; NICOLA-DDSKK-ELS ends here ddskk-15.2/nicola/NICOLA-DDSKK-MK0000644000570400056700000000741012161163443016105 0ustar kitamotoopenlab;;; NICOLA-DDSKK-MK --- installer for NICOLA-DDSKK -*-emacs-lisp-*- ;;; Code: (require 'cl) (require 'advice) (defun config-nicola-ddskk () (let (prefix lisp-dir version-specific-lisp-dir) (and (setq prefix (car command-line-args-left)) (or (string-equal "NONE" prefix) (defvar PREFIX prefix))) (setq command-line-args-left (cdr command-line-args-left)) (and (setq lisp-dir (car command-line-args-left)) (or (string-equal "NONE" lisp-dir) (defvar LISPDIR lisp-dir))) (setq command-line-args-left (cdr command-line-args-left)) (and (setq version-specific-lisp-dir (car command-line-args-left)) (or (string-equal "NONE" version-specific-lisp-dir) (progn (defvar VERSION_SPECIFIC_LISPDIR version-specific-lisp-dir) (princ (format "VERSION_SPECIFIC_LISPDIR=%s\n" VERSION_SPECIFIC_LISPDIR))))) (setq command-line-args-left (cdr command-line-args-left)) (load-file "NICOLA-DDSKK-CFG") (load-file "NICOLA-DDSKK-ELS") (autoload 'browse-url "browse-url" nil t) (autoload 'browse-url-netscape "browse-url" nil t) (autoload 'update-buffer-local-frame-params "ccc") (autoload 'set-buffer-local-cursor-color "ccc") (autoload 'skk-cursor-current-color "skk-cursor") (princ (format "PREFIX=%s VERSION_SPECIFIC_LISPDIR=%s\n" PREFIX VERSION_SPECIFIC_LISPDIR)))) (defun compile-nicola-ddskk () (condition-case nil (load "bytecomp-runtime.el") (error)) (config-nicola-ddskk) (require 'skk-isearch) (require 'skk-macs) (require 'skk-autoloads) (require 'skk) (nicola-ddskk-generate-autoloads) (compile-elisp-modules nicola-ddskk-modules ".")) (defun install-nicola-ddskk () (config-nicola-ddskk) (install-elisp-modules nicola-ddskk-modules "./" NICOLA-DDSKK_DIR) (delete-file "./nicola-ddskk-autoloads.el")) (defun config-nicola-ddskk-package () (require 'cus-load) (let (package-dir) (and (setq package-dir (car command-line-args-left)) (or (string= "NONE" package-dir) (defvar PACKAGEDIR package-dir))) (setq command-line-args-left (cdr command-line-args-left)) (load-file "NICOLA-DDSKK-CFG") (load-file "NICOLA-DDSKK-ELS") (setq nicola-ddskk-modules (append nicola-ddskk-modules '(auto-autoloads custom-load))) (princ (format "PACKAGEDIR=%s\n" PACKAGEDIR)))) (defun compile-nicola-ddskk-package () (config-nicola-ddskk-package) (install-update-package-files "nicola-ddskk" ".") (require 'nicola-ddskk-autoloads "./auto-autoloads.el") (require 'skk-isearch) (require 'skk-macs) (require 'skk-autoloads) (require 'skk) (compile-elisp-modules nicola-ddskk-modules ".")) (defun install-nicola-ddskk-package () (config-nicola-ddskk-package) (install-elisp-modules nicola-ddskk-modules "./" (expand-file-name NICOLA-DDSKK_PREFIX (expand-file-name "lisp" PACKAGEDIR))) (delete-file "./auto-autoloads.el") (delete-file "./custom-load.el")) (defun nicola-ddskk-generate-autoloads () "Generate nicola-ddskk-autoload.el." (require 'autoload) (let ((buf (get-buffer-create " *nicola-ddskk-generate-autoloads*")) sort-min standard-output) (save-excursion (set-buffer buf) (setq buffer-file-name "nicola-ddskk-autoloads.el") (erase-buffer) (insert ";; -*- coding: iso-2022-7bit -*-\n") (message "%s" nicola-ddskk-modules) (dolist (module nicola-ddskk-modules) (let ((file (expand-file-name (format "%s.el" module) default-directory))) (and (file-exists-p file) (message "%s" file) (generate-file-autoloads file)))) (goto-char (point-max)) (insert " \(provide 'nicola-ddskk-autoloads) ") (let ((coding-system-for-write 'iso-2022-7bit)) (write-region (point-min) (point-max) "nicola-ddskk-autoloads.el" nil nil)) (kill-buffer buf)))) ;;; NICOLA-DDSKK-MK ends here ddskk-15.2/nicola/README.NICOLA.ja0000644000570400056700000003356112315771464016306 0ustar kitamotoopenlab-*- mode: text -*- NICOLA-DDSKK on Daredevil SKK 11.4 ($B%*%j%8%J%k(B) $BL'1:(B $B0o;K(B ($B2~D{!&J8@U(B) $BDMK\(B $BE0M:(B $B!ZK\J8$K$D$$$F![(B $B$3$l$O!"L'1:$5$s$,(B NICOLA-SKK 0.39 $B$K$D$$$F2r@b$5$l$?J8>O$rDMK\$,(B NICOLA-DDSKK $B$KE,9g$9$k$h$&$K2CI.=$@5$7$?$b$N$G$9!#$b$7K\J8$K8m$j$,$"(B $B$l$PDMK\$N@UG$$G$9$N$G!"$=$N;]$4O"Mm2<$5$$!#(B $B!Z35@b![(B NICOLA-DDSKK $B$H$O!"(BDaredevil SKK $B$G(B NICOLA $B$+$JF~NO!J?F;X%7%U%HF~NO!K(B $B$K$h$C$FF|K\8lF~NO$r2DG=$K$9$k$b$N$G$9!#0J2<$N(B Emacsen $B$r%5%]!<%H$7$^(B $B$9!#(B o Emacs 20.7 $B0J9_(B (Meadow 1.10 $B0J9_(B $B$r4^$`(B) o Mule $B5!G=IU$-$G%3%s%Q%$%k$5$l$?(B XEmacs 21 $B0J9_(B $B$?$@$7(B GNU Emacs 21.3 $B0J9_$^$?$O(B XEmacs 21.4.15 $B0J9_$r?d>)$7$^$9!#(B $B!Z$O$8$a$K![(B SKK $B$O(B Emacs $B$G;H$($kM%$l$?$+$J4A;zJQ49%7%9%F%`$G$9!#$=$N(B SKK $B$NFH<+$N(B $BF~NOJ}K!$r;Y$($F$$$k4A;z$NItJ,$N;XDjJ}K!$O!"%m!<%^;z$NBgJ8;z$H>.J8;z$r(B $B;H$$J,$1$FF|K\8l$rF~NO$9$k$H$$$&$b$N$G$9!#$3$l$O!"%m!<%^;zF~NO$KBg$-$/(B $B0MB8$7$F$$$^$9$,!"$=$N86M}<+BN$OFC$K%m!<%^;zF~NO$K0MB8$7$F$$$k$o$1$G$O(B $B$"$j$^$;$s!#(B $BEAE}E*$K(B SKK $B$G$O!"4A;z$NItJ,$N;XDj$9$k$?$a$K%7%U%H%-!<$r;H$$$^$9!#$7(B $B$+$7!"%?%C%A%?%$%T%s%0$rMF0W$K$9$k$?$a$K!"(BNICOLA-DDSKK $B$G$O%[!<%`%]%8(B $B%7%g%s$N%-!<$G$"$k!"(Bf $B$H(B j $B$rF1;~$KBG80$9$k$H$$$&J}K!$r;H$$$^$9!#$3$l(B $B$K$h$C$F!">.;X$G%7%U%H$r2!$9$h$j$b8zN(E*$JF~NO$,2DG=$K$J$C$F$$$k$N$G$O(B $B$J$$$+$H;W$$$^$9!#(B $B!ZCm0U![(B $B1Q8lMQ$N%-!<%\!<%I$G$O?F;X%7%U%H%-!<$H$7$F;H$($k%-!<$,$J$$$?$a!";HMQ$O(B $BFq$7$$$H;W$o$l$^$9!#F|K\8l%-!<%\!<%I$N;HMQ$r$*4+$a$7$^$9!#(B (*) $B$^$l$K(B US $B%-!<%\!<%I$G!"(Bspace $B%-!<$,H>J,$KJ,$+$l$F$$$?$j!":8H>J,$,(B backspace $B%-!<$K$J$C$F$$$?$j$9$k$b$N$,$"$j$^$9!#$=$&$$$&FCl9g$K$O!"F1;~(B $BBG80$r@5$7$/G'<1$7$J$/$J$k$3$H$,$"$j$^$9!#(B $B8=:_!"(BNICOLA-DDSKK $B$O(B Daredevil SKK $B$KImB0$9$k$+$?$A$GG[I[$5$l$F$$$^$9!#(B $BI,$:F1:-$5$l$F$$$k(B Daredevil SKK $B$H(B NICOLA-DDSKK $B$H$rAH$_9g$o$;$F;HMQ(B $B$7$F$/$@$5$$!#(B NICOLA-DDSKK $B$O$^$@%Y!<%?%P!<%8%g%s$G$9!#$^$@%P%0$,$"$k$+$b$7$l$^$;$s!#(B $B%P%0$r8+$D$1$i$l$?J}$OJs9p$r$*4j$$$7$^$9!#(B $B!ZCx:n8"$J$I![(B SKK NICOLA patch $B$O(B SKK $B$r$b$H$KL'1:$5$s$,:n@.$5$l$?$b$N$G$9!#$=$NCx:n(B $B8"$OL'1:$5$s$,J];}$5$l$F$$$^$9!#(B Daredevil SKK $B$N0Y$K2CI.=$@5$7$?ItJ,$K$D$$$F$O!"DMK\$,Cx:n8"$rJ];}$7$^(B $B$9!#$^$?!":#8e(B SKK $B3+H/%i%\$K$*$$$FK\%W%m%0%i%`$,2CI.=$@5$5$l$?>l9g$O!"(B $B$=$NItJ,$NCx:n8"$O$=$N2~JQ$r9T$C$?J}$KB0$7$^$9!#(B $BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!#:FG[I[$*$h$S2~JQ$,G'$a$i$l$^$9$,!"(B $B$=$N:]$K$O(B Free Software Foundation $B$,8xI=$9$k(B GNU General Public Licence $B$NBh(B 2 $B%P!<%8%g%s0J9_(B ($B$NG$0U$N(B 1 $B$D$N%P!<%8%g%s(B) $B$N>r7o$K=>$&(B $BI,MW$,$"$j$^$9!#(B $BK\%W%m%0%i%`$OM-MQ$G$"$k$H;W$o$l$^$9$,!"$=$NG[I[$OL5J]>Z$G$9!#;T>l@-$^(B $B$?$OFCDj$NL\E*$X$NE,9g@-$N$?$a$KDL>oG'$a$i$l$k$h$&$J0EL[$NJ]>Z$9$i$5$l(B $B$^$;$s!#(BGNU General Public License $B$r;2>H$9$l$P$h$j>\$7$$$3$H$,J,$+$j(B $B$^$9!#(B Daredevil SKK $B$H$H$b$K(B GNU General Public License $B$,<}O?$5$l$F$$$k$O$:(B $B$G$9!#(BCOPYING $B$H$$$&L>A0$N%U%!%$%k$r8+$F$/$@$5$$!#$b$7$3$l$,$J$1$l$P!"(B $BH$7$F$/$@$5$$!#(B $B!Z@_Dj![(B $B4pK\E*$K$O(B REAME.ja $B$K=q$+$l$F$$$kDL$j$G$9!#(B (setq skk-use-kana-keyboard t) $B$H$$$&@_Dj$OI,$:$7$^$9!#F|K\8l(B 106 $B%-!<%\!<%I$N>l9g!"(B skk-kanagaki-keyboard-type $B$H$$$&JQ?t$O(B nicola-jis, oasys, omelet-jis $B$N$$$:$l$+$K$9$k$3$H$K$J$k$G$7$g$&!#$=$l$>$lHyL/$K%-! [space] o $B1&?F;X%-!<(B => [$BJQ49(B] $B$N$h$&$K@_Dj$rJQ99$7$?$$>l9g$O!"(B~/.skk $B$Ke5-$O(B XFree86 $B>e$G$N(B GNU Emacs 20.3 $B0J9_$NNc$G$9!#(B[henkan] $B$NItJ,(B $B$,(BEmacs $B$Ne$G$N(B XEmacs $B!D(B [henkan-mode] - XFree86 $B>e$G$N(B Mule2.3@19.34 $B!D(B [numbersign] - XFree86 $B>e$G$N(B Mule2.3@19.28 $B!D(B [key-35] - XFree86 $B>e$G$N(B Emacs 20.2 $B!D(B $BJQ49%-!<$,;H$($^$;$s!#(B $BJQ49%-!<$dL5JQ49%-!<$,;H$($J$$4D6-$G$b(B xmodmap $B$r;H$&$J$I!"2>A[%-!<%3!<(B $B%I$N%l%Y%k$G@_Dj$rJQ99$G$-$k>l9g$O!"$=$l$K$h$C$F;HMQ$G$-$k$h$&$K$9$k$H(B $B$$$$$G$7$g$&!#(B (*) xmodmap $B%3%^%s%I$N;H$$J}$K$D$$$F$O3d0&$7$^$9!#(B $B0lEY(B Emacs $B$r=*N;$7!"5/F0$7$J$*$7$^$9!#(BC-x C-j $B$G(B skk-mode $B$K$9$k(B $B$H!"%b!<%I%i%$%s$,!V$+$J!W$G$O$J$/!"!V$K$3$i!W$K$J$j$^$9!#$3$l$G(B SKK $B$G(B NICOLA $BF~NO$,$G$-$k$h$&$K$J$j$^$9!#(Bskk-use-kana-keyboard $B$r(B nil $B$K(B $B$7$F$*$/$H!"=>MhDL$j%m!<%^;z$+$JJQ49$,;H$($^$9!#(B $B$J$*!"(BSKK $B;HMQCf$K2>L>F~NO$H%m!<%^;zF~NO$r@Z$jBX$($k$3$H$,2DG=$G$9!#(B [f12] $B%-!<$,$"$k>l9g$O$=$l$r2!$7$F$_$F$/$@$5$$!#$J$$>l9g$O!"(BM-x skk-kanagaki-toggle-rom-kana $B$ruBV$G(B C-x t ($B$^$?$O(B M-x skk-tutorial) $B$ro$N%3%s%T%e!<%?MQ$N%-!<%\!<%I$N$3$H$r9M$($F!"1&%7%U%H!"%9%Z!<%9!"JQ(B $B49$r0l$D$N%-!<$G7sMQ$7!"$^$?:8%7%U%H!"2~9T!"3NDj$r0l$D$N%-!<$G7sMQ$7$^(B $B$9!#$D$^$j:81&$N?F;X$,0l$D$:$D%-!<$rC4Ev$7$^$9!#Nc$($P(B omelet-jis $B$G$O!"(B $B0J2<$N$h$&$J%-!$f("$Z$`("$\$o("$n$)("!2!G("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B\ $B!o("(B $B(&(!(!(*(!(!(+(!(!(*(!(!(*(!(!(%(&(!(!(*(!(!(*(!(!(+(!(!(*(!(!(*(!(!(%(B $B("(B $B:8%7%U%H(B | $B1&%7%U%H(B(space)$B("(B $B!!!!!!!!!!!!(&(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(%(B $B2<$NCJ$N$+$J$O$=$N$^$^F~NO$7!">e$NCJ$N1&$N$+$J$OF1$8B&$N?F;X%7%U%H%-!<(B $B$rF1;~$K2!$9$3$H$GF~NO$7$^$9!#$?$H$($P!V$(!W$rF~NO$9$k$?$a$K$O!V$+!W$N(B $B%-!<(B ("w" $B$N%-!<(B) $B$H:8%7%U%H$rF1;~$K2!$7$^$9!#$^$?ByE@$D$-$NJ8;z$rF~NO(B $B$9$k$?$a$K$O!"H?BPB&$N%7%U%H%-!<$HF1;~BG80$7$^$9!#$D$^$j!V$,!W$rF~NO$9(B $B$k$?$a$K$O!V$+!W(B("w" $B$N%-!<(B) $B$H1&%7%U%H$rF1;~$K2!$7$^$9!#(B $BH>ByE@$N$D$$$?J8;z$O!"0J2<$NJ}K!$GF~NO$G$-$^$9!#(B ------------------------ $B$Q(B [$B:8%7%U%H(B] + y $B$T(B [$B:8%7%U%H(B] + p $B$W(B [$B:8%7%U%H(B] + n $B$Z(B [$B:8%7%U%H(B] + , $B$](B [$B:8%7%U%H(B] + l ------------------------ $BA`:n$N4pK\$O(B SKK $B$N$b$N$rB:=E$7$F:n$i$l$F$$$^$9!#$7$+$7%m!<%^;z$G$O;H(B $B$o$J$$(B l $B$d(B q $B$J$I$K$O(B NICOLA $B$G$OA4$F!V$+$J!W$,3d$j$"$F$i$l$F$$$k$?$a!"(B $B%-!<%P%$%s%I$rBgI}$KJQ99$7$^$7$?!#(B $B%-!<%P%$%s%II=(B -------------------------------------------------------------------- NICOLA $B%m!<%^;z(B $BJQ99M}M3$J$I(B -------------------------------------------------------------------- $BJQ49(B [space] [$B1&(B] [space] $B3NDj(B C-j C-j $BA08uJd(B C-p x ; $B$+$J$H>WFM(B $B < ? > < ? abbrev-mode $B3+;O(B [gh] / ; $B$+$J$H>WFM(B $B$+$J%b!<%I$X(B C-j [$B:81&(B] C-j $B%+%?%+%J%b!<%I$X(B [dk] q ; $B$+$J$H>WFM(B $BH>3Q%b!<%I$X(B [$B:81&(B] A l ; $B$+$J$H>WFM(B $BA41Q%b!<%I$X(B Z L L $B%+%?%+%JJQ49(B [dk] q ; $B$+$J$H>WFM(B $BA43QJQ49(B C-q C-q $BJd40$N3+;O(B \t \t $BJd40WFM(B $BJ8;z%3!<%II=<((B $ $ JIS $B%3!<%IF~NO(B C \ ; $B$+$J$H>WFM(B -------------------------------------------------------------------- $B$h$j$h$$%-! $B$KDs0F$7$F$/$@(B $B$5$$!#(B $B!Z3Fe$G$N(B XEmacs $B!D(B [henkan-mode] - XFree86 $B>e$G$N(B GNU Emacs 20.3 $B0J9_(B $B!D(B [henkan] - XFree86 $B>e$G$N(B Mule2.3@19.34 $B!D(B [numbersign] - XFree86 $B>e$G$N(B Mule2.3@19.28 $B!D(B [key-35] - XFree86 $B>e$G$N(B Emacs 20.2 $B!D(B $BJQ49%-!<$,;H$($^$;$s!#(B ($BNc(B) (setq skk-nicola-rshift-keys '(" " [henkan])) o skk-nicola-lshift-keys $B:8?F;X%-!<$H$7$F;H$&%-!<$N%j%9%H!#(B $BI8=`$G$OL5JQ49%-!e$G$N(B Emacsen $B!D(B [muhenkan] ($BNc(B) (setq skk-nicola-lshift-keys '([muhenkan])) o skk-nicola-interval $B$3$N;~4V(B(ms)$B0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B ($BNc(B) (setq skk-nicola-interval 0.1) ; 100 $B%_%jIC(B o skk-nicola-latin-interval $B1Q?t(B (latin) $B%b!<%I$GF1;~BG80$HH=Dj$9$k;~4V(B(ms)$B!#(B ($BNc(B) (setq skk-nicola-latin-interval 0.15) ; 150 $B%_%jIC(B o skk-nicola-use-lshift-as-space $B$3$NJQ?t$r(B t $B$K$9$k$H!":8%7%U%H$b%9%Z!<%9$H$7$F5!G=$9$k!#(B $BI8=`$G$O(B nil$B!#(B $B%-!<%\!<%I$r2~B$$7$F!"??Cf$K1&%7%U%H$H:8%7%U%H$,JB$s$G$$$k$h$&$K(B $B$7$?$H$-$O!"JXMx$+$b$7$l$^$;$s!#$=$N$H$-$O!"(BNICOLA SKK $B0J30$G$b(B $B9)IW$9$kI,MW$,$"$j$^$9$,!#(B o skk-nicola-use-koyubi-functions $B$3$NJQ?t$,Hs(B nil $B$J$i$P!"1&.;X$N%[!<%`%]%8%7%g%s$N1&!J(BJIS $B%-!<(B $B%\!<%I$G$O!"(B":" $B$N0LCV!K(B $B$K8eB`%-!<$N$h$&$J5!G=$r3d$jEv$F$k!#(B $B$3$N5!G=$K$D$$$F$O0l1~!V(BOAK $B%Q%o!<%"%C%W%-%C%H(B $B&BHG!W$r;29M$K$7$^(B $B$7$?$,!"JQ49BP>]J8;zNs$N07$$$,(B SKK $B$K$*$$$F$O0lHL$N(B FEP $B$HA4A30c(B $B$&$?$a$K!"$=$C$/$jF1$85!G=$OC%-!<$N$h$&$J5!G=$r3d$jEv$F$^$9!#(B o skk-nicola-prefix-suffix-chars $B@\F,!&@\Hx8lF~NO$r$9$k:]$K@_Dj$9$k!#(B abbrev $B%b!<%I$HF1$8%-!<$r;HMQ$7$J$$>l9g$K(B skk-nicola-prefix-suffix-abbrev-chars $B$r(B nil $B$K$7$F@_Dj$9$k!#(B ($BNc(B) (setq skk-nicola-prefix-suffix-abbrev-chars '()) (setq skk-nicola-prefix-suffix-chars '(?s ?l)) o skk-nicola-abbrev-chars abbrev $B%b!<%I$KF~$k:]$K@_Dj$9$k!#(B $B@\F,!&@\Hx8lF~NO$HF1$8%-!<$r;HMQ$7$J$$>l9g$K(B skk-nicola-prefix-suffix-abbrev-chars $B$r(B nil $B$K$7$F@_Dj$9$k!#(B ($BNc(B) (setq skk-nicola-prefix-suffix-abbrev-chars '()) (setq skk-nicola-abbrev-chars '(?g ?h)) $B!Z<-=q$NHs8_49@-![(B NICOLA-DDSKK $B$O%m!<%^;zF~NO$NBX$o$j$K!"$+$JF~NO$r4pK\$H$7$F$$$k$?$a!"(B $B<-=q$NFbMF$,2<$K<($9$h$&$KK\Mh$N(B SKK $B$H0[$J$k$3$H$,$"$j$^$9!#(B $BK\Mh$N(BSKK $B$$(Bt /$B9T(B/[$B$C$?(B/$B9T(B/]/ NICOLA SKK $B$$(Bt /$B9T(B/[$B$C(B/$B9T(B/]/ NICOLA $BF~NO$N>l9g$O!"L5M}$K%*%j%8%J%k$K9g$o$;$k$H!">/$7$*$+$7$J%?%$%_(B $B%s%0!J!X"&$$(B*$B$C$?!Y$^$GF~NO!K$GJQ49$9$k$3$H$K$J$j$^$9$N$G!"(BNICOLA-DDSKK $B$O$"$($F$3$N$h$&$J;EMM$K$7$F$"$j$^$9!#(B skk-henkan-okuri-strictly $B$rHs(B nil $B$K$7$F$$$k>l9g$OLdBj$K$J$jF@$^$9$,!"(B $B$3$l$K$D$$$F$O(B SKK $BK\BN$KL>F~NOBP1~%3!<%I$rCV$$$F$$$^$9!#(B * $B35MW(B SKK $B$r%m!<%^;zE*F~NO0J30$NF~NOJ}<0$KBP1~$5$;$k$3$H$rL\E*$H$7$^$9!#8=:_(B $B$O0J2<$NF~NOJ}<0$K$D$$$F!"%5%]!<%H$9$k$Y$/3+H/$7$F$$$^$9!#(B o $BF|K\8l(B 106 $B%-!<%\!<%I$G$N2>L>F~NO(B o $B?F;X%7%U%H%-!<%\!<%I$N%(%_%e%l!<%7%g%s(B $B8eL>F~NO$N$?$a$N4pK\E*$JOHAH$_(B o skk-106-jis.el $B!D(B $BF|K\8l(B 106 $B%-!<%\!<%I$G2>L>F~NO$9$k$?$a$N%k!<%k(B o skk-nicola.el $B!D(B $B?F;X%7%U%HF~NO$r%(%_%e%l!<%H$9$k4X?t(B ($B%*%j%8%J%k(B $B$N(B skk-nicola.el $B$K=q$+$l$F$$$?4X?t(B) o skk-nicola-*.el $B!D(B NICOLA $BG[Ns$N%k!<%k(B (JIS, US, Dvorak, Colemak) o skk-oasys.el $B!D(B OASYS $BIwG[Ns$N%k!<%k(B o skk-omelet-*.el $B!D(B omelet $BFH<+G[Ns$N%k!<%k(B (JIS, US, Dvorak, Colemak) skk-nicola-*.el, skk-oasys.el, skk-omelet-*.el $B$NG[Ns$O$9$Y$F(B http://www.eva.hi-ho.ne.jp/%7Eminoura/kbd/keymap.html $B$N$b$N$rMxMQ$5$;$F$$$?$@$-$^$7$?!#(B * $B%$%s%9%H!<%k(B ** APEL $B$N:G?7HG$r%$%s%9%H!<%k(B ftp://ftp.m17n.org/pub/mule/apel/ % make install (XEmacs $B$G$O(B make install-package) ** SKK $B$r%$%s%9%H!<%k(B [$BJ}K!(B 1] % cvs -d :pserver:guest@openlab.ring.gr.jp:/circus/cvsroot login CVS password: guest (CR) % cvs -d :pserver:guest@openlab.ring.gr.jp:/circus/cvsroot \ co skk/main [$BJ}K!(B 2] http://openlab.ring.gr.jp/skk/ ** NICOLA-DDSKK $B$N%$%s%9%H!<%k(B $BI,$:!">e$G%$%s%9%H!<%k$7$?(B SKK $B$KF1:-$5$l$F$$$k(B NICOLA-DDSKK $B$r%$%s(B $B%9%H!<%k$7$F$/$@$5$$!#$D$^$j!"(BSKK $B$r%P!<%8%g%s%"%C%W$7$?$iI,$:(B NICOLA-DDSKK $B$r%$%s%9%H!<%k$7D>$7$F$/$@$5$$!#(B % cd nicola % make install (XEmacs $B$G$O(B make install-package) * $B@_Dj(B ** SKK $B$N@_Dj(B ~/.emacs $B$K(B (require 'skk-setup) $B$H5-F~!#(B ** NICOLA-DDSKK $B$N@_Dj(B $B?F;X%7%U%HF~NO$9$k>l9g$O(B ~/.skk $B$K(B (setq skk-use-kana-keyboard t) (setq skk-kanagaki-keyboard-type 'omelet-jis) $B$H5-F~!#5l(B JIS $BG[Ns$N2>L>F~NO$r9T$&>l9g$O(B (setq skk-use-kana-keyboard t) (setq skk-kanagaki-keyboard-type '106-jis) $B$H5-F~!#(B ** $B%+%9%?%^%$%:(B skk-kanagaki-keyboard-type $B$KBP1~$7$?%U%!%$%k$K=q$+$l$F$$$kJQ?t$K$h$C(B $B$F!"%-!\$7$$$3$H$O!"(BREADME.NICOLA.ja $B$r$40lFI$/$@$5(B $B$$!#(B $B$=$l0J30$N2>L>F~NO$K$D$$$F>\$7$$$3$H$O(B skk-kanagaki.el $B$NKAF,$N%3%a%s(B $B%H$r$40lFI$/$@$5$$!#(B $B0J2<$G!"(B[fj] $B$J$I$H$$$&$N$O(B f $B$H(B j $B$H$rF1;~$KBG80$9$k$3$H$r0UL#$7$^$9!#(B ** $B0lHLE*%-!L>F~NO%b!<%I$NFH<+%-!A0$N(B 1 $BJ8;z$rAw$j2>L>$H$7$FAw$j$"$jJQ49$r3+;O!#(B [muhenkan + henkan] $B!D(B latin $B%b!<%I(B $B"N(B $B$+$J%b!<%I(B $B$N@Z$jBX$((B C-h 2 $B!D(B $B8=:_$NF~NOJ}<0$N%-!3Q%+%J%b!<%I(B or $BH>3Q%+%JJQ49(B f10 $B!D(B latin $B%b!<%I(B f12 $B!D(B $B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO(B * $BLdBjE@(B $B?F;X%7%U%HF~NO$O!"(B $B$^$@(B NICOLA-SKK $B$H5sF0$N0[$J$kItJ,$,$"$j$^$9!#(B $BLdBj(B $B$OB?$/$"$j$^$9$,!"=y!9$K2~NI$9$kM=Dj$G$9!#$^$?!"(Bomelet $B5Z$S(B NICOLA-SKK $B$H$N8_49@-$r==J,9MN8$7$F$$$J$$ItJ,$,$"$j$^$9!#(B $BF|K\8l(B 106 $B%-!<%\!<%I$G2>L>F~NO$9$k>l9g!"(B $B%-!@7$K$J$i$J$1$l$P$J$j$^$;$s!#%G%U%)%k%H$G$O!"!V!@7(B $B$K$7$F$"$j$^$9(B (SHIFT $B$H6&$K2!$;$PF~NO$G$-$k$h$&$K$7$F$"$j$^$9(B)$B!#$3$l(B $B$r9o0uDL$j$NF~NO$K$9$k$K$O!"(B xmodmap $B$r;H$&$J$I$7$F%-!L>F~NO%5%]!<%H(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000 Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O!"F|K\8l(B 106 $B%-!<%\!<%I(B ($B5l(B JIS $BG[Ns(B) $B$K$h$k2>L>F~NO$N$?$a$N%k(B ;; $B!<%k$rDs6!$7$^$9!#(B ;; X $B>e$J$I$NI8=`$G$O(B \ (backslash) $B$r3d$j$"$F$i$l$F$$$k%-!<$,(B 2 $B$D$"$k$?$a!"(B ;; "$B$m(B" $B$H(B "$B!<(B" $B$NN>J}$r;EMM$NDL$j$KA^F~$9$k$3$H$O$G$-$^$;$s!#%G%U%)%k%H$G$O(B ;; \ $B$NF~NO$K$h$j(B "$B$m(B" $B$rA^F~$7!"(B "$B!<(B" $B$NJ}$OEv3:$N%-!<$r(B SHIFT $B$H6&$K2!$9$3$H(B ;; $B$GA^F~2DG=$H$7$F$$$^$9!#(B XFree86 $B>e$G$O!"$3$l$re5-$NNc$G$O2>A[%-!<%3!<%I(B 211 $B$H$J$C$F$$$^$9$,!"4D6-$K$h$C$F(B ;; $B0[$J$k$N$G(B xev $B$J$IMQ$$$F<+J,$GD4$Y$F$/$@$5$$!#(B ;; ;; 2. ~/.skk $B$K$F0J2<$N@_Dj$r$9$k!#(B ;; ;; (eval-after-load "skk-106-jis" ;; '(setcar (cdr (assq ?\\ skk-106-jis-plain-rule-list)) "$B!<(B")) ;; $B99$K(B "$B!9(B" $B$,I8=`$G$OF~NO$G$-$J$/$J$C$F$$$kE@$,5l(B JIS $BG[Ns$N;EMM$H0[$J$j$^(B ;; $B$9!#$3$l$K4X$7$F$bI,MW$J>l9g$O>e5-$HF1MM$JJ}K!$GBP=h$9$k$3$H$K$J$j$^$9!#(B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-macs) (require 'skk-vars)) (eval-when-compile (require 'skk-kanagaki-util)) (require 'skk-kanagaki) ;; $BF|K\8l(B 106 $B%-!<%\!<%I(B ($B5l(B JIS $BG[Ns(B) $B$N%k!<%k(B (defvar skk-kanagaki-106-jis-base-rule-list '(("1" nil skk-nicola-insert) ("2" nil skk-nicola-insert) ("3" nil skk-nicola-insert) ("4" nil skk-nicola-insert) ("5" nil skk-nicola-insert) ;; ("6" nil skk-nicola-insert) ("7" nil skk-nicola-insert) ("8" nil skk-nicola-insert) ("9" nil skk-nicola-insert) ("0" nil skk-nicola-insert) ("-" nil skk-nicola-insert) ("^" nil skk-nicola-insert) ("\\" nil skk-nicola-insert) ;; ("q" nil skk-nicola-insert) ("w" nil skk-nicola-insert) ("e" nil skk-nicola-insert) ("r" nil skk-nicola-insert) ("t" nil skk-nicola-insert) ;; ("y" nil skk-nicola-insert) ("u" nil skk-nicola-insert) ("i" nil skk-nicola-insert) ("o" nil skk-nicola-insert) ("p" nil skk-nicola-insert) ("@" nil skk-kanagaki-dakuten) ("[" nil skk-kanagaki-handakuten) ;; ("a" nil skk-nicola-insert) ("s" nil skk-nicola-insert) ("d" nil skk-nicola-insert) ("f" nil skk-nicola-insert) ("g" nil skk-nicola-insert) ;; ("h" nil skk-nicola-insert) ("j" nil skk-nicola-insert) ("k" nil skk-nicola-insert) ("l" nil skk-nicola-insert) (";" nil skk-nicola-insert) (":" nil skk-nicola-insert) ("]" nil skk-nicola-insert) ;; ("z" nil skk-nicola-insert) ("x" nil skk-nicola-insert) ("c" nil skk-nicola-insert) ("v" nil skk-nicola-insert) ("b" nil skk-nicola-insert) ;; ("n" nil skk-nicola-insert) ("m" nil skk-nicola-insert) ("," nil skk-nicola-insert) ("." nil skk-nicola-insert) ("/" nil skk-nicola-insert) ;; ("#" nil ("$B%!(B" . "$B$!(B")) ("$" nil ("$B%%(B" . "$B$%(B")) ("%" nil ("$B%'(B" . "$B$'(B")) ("&" nil ("$B%)(B" . "$B$)(B")) ("'" nil ("$B%c(B" . "$B$c(B")) ("(" nil ("$B%e(B" . "$B$e(B")) (")" nil ("$B%g(B" . "$B$g(B")) ("~" nil ("$B%r(B" . "$B$r(B")) ("=" nil "$B!r(B") ("|" nil skk-nicola-insert) ;; $B$3$l$,0lHV$NLdBj!#(B ("Q" nil skk-set-henkan-point-subr) ("E" nil ("$B%#(B" . "$B$#(B")) ("T" nil ("$B%u(B" . "$B%u(B")) ("Y" nil skk-nicola-insert) ("P" nil "$B!X(B") ("`" nil "$B!q(B") ("{" nil "$B!V(B") ("A" nil skk-latin-mode) ("S" nil skk-kanagaki-set-okurigana-no-sokuon) ("D" nil skk-today) ("F" nil skk-display-code-for-char-at-point) ("J" nil skk-abbrev-mdoe) ("K" nil skk-toggle-kana) ("L" nil skk-jisx0208-latin-mode) ("+" nil "$B!Y(B") ("*" nil ("$B%v(B" . "$B%v(B")) ("}" nil "$B!W(B") ("Z" nil skk-nicola-insert) ("X" nil skk-purge-from-jisyo) ("C" nil skk-input-by-code-or-menu) ("M" nil skk-kanagaki-midashi-henkan) ("<" nil skk-current-touten) (">" nil skk-current-kuten) ("?" nil "$B!&(B") ("_" nil skk-nicola-insert)) "\ $BF|K\8l(B 106 $B%-!<%\!<%I$G2>L>F~NO$9$k$?$a$N4pK\%k!<%k!#(B $B$3$N@_Dj$G$O(B \"$B!<(B\" $B$NF~NO$,9o0u$I$*$j$K$G$-$J$$$,!"(B SHIFT $B%-!<$r2!$9$3$H$G$G$-(B $B$k!#(B $B9o0u$I$*$j$KF~NO$G$-$k$h$&$K$9$k$?$a$K$O!"2>A[%-!<%3!<%I$N%l%Y%k$G@)8f$9$k(B $BI,MW$,$"$k!#(B") (defvar skk-106-jis-plain-rule-list '((?1 ("$B%L(B" . "$B$L(B")) (?2 ("$B%U(B" . "$B$U(B")) (?3 ("$B%"(B" . "$B$"(B")) (?4 ("$B%&(B" . "$B$&(B")) (?5 ("$B%((B" . "$B$((B")) (?6 ("$B%*(B" . "$B$*(B")) (?7 ("$B%d(B" . "$B$d(B")) (?8 ("$B%f(B" . "$B$f(B")) (?9 ("$B%h(B" . "$B$h(B")) (?0 ("$B%o(B" . "$B$o(B")) (?- ("$B%[(B" . "$B$[(B")) (?^ ("$B%X(B" . "$B$X(B")) (?q ("$B%?(B" . "$B$?(B")) (?w ("$B%F(B" . "$B$F(B")) (?e ("$B%$(B" . "$B$$(B")) (?r ("$B%9(B" . "$B$9(B")) (?t ("$B%+(B" . "$B$+(B")) (?y ("$B%s(B" . "$B$s(B")) (?u ("$B%J(B" . "$B$J(B")) (?i ("$B%K(B" . "$B$K(B")) (?o ("$B%i(B" . "$B$i(B")) (?p ("$B%;(B" . "$B$;(B")) (?a ("$B%A(B" . "$B$A(B")) (?s ("$B%H(B" . "$B$H(B")) (?d ("$B%7(B" . "$B$7(B")) (?f ("$B%O(B" . "$B$O(B")) (?g ("$B%-(B" . "$B$-(B")) (?h ("$B%/(B" . "$B$/(B")) (?j ("$B%^(B" . "$B$^(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%j(B" . "$B$j(B")) (?\; ("$B%l(B" . "$B$l(B")) (?: ("$B%1(B" . "$B$1(B")) (?\] ("$B%`(B" . "$B$`(B")) (?z ("$B%D(B" . "$B$D(B")) (?x ("$B%5(B" . "$B$5(B")) (?c ("$B%=(B" . "$B$=(B")) (?v ("$B%R(B" . "$B$R(B")) (?b ("$B%3(B" . "$B$3(B")) (?n ("$B%_(B" . "$B$_(B")) (?m ("$B%b(B" . "$B$b(B")) (?\, ("$B%M(B" . "$B$M(B")) (?\. ("$B%k(B" . "$B$k(B")) (?/ ("$B%a(B" . "$B$a(B")) ;; $Be5-$N!V! ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; NICOLA-DDSKK $B$N%a%K%e!<$r(B SKK $BI8=`$N%a%K%e!<$KDI2C$7$^$9!#(B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-vars)) (eval-and-compile (autoload 'browse-url-netscape "browse-url")) (require 'easymenu) (eval-and-compile (defvar skk-kanagaki-menu-items '("NICOLA DDSKK" ["Set Henkan point" skk-set-henkan-point-subr t] ["Input Prefix or Suffix" skk-kanagaki-midashi-henkan t] ["Start Conversion with Okuri" skk-kanagaki-set-okurigana t] "--" ["Input a Character by Code" skk-input-by-code-or-menu t] ["Enter SKK Abbrev Mode" skk-abbrev-mode t] ["\ Convert Hiragana <=> Katakana or Toggle Hiragana <=> Katakana Mode" skk-toggle-kana t] ["Enter SKK JIS X 0208 Latin Mode" skk-jisx0208-latin-mode t] ["\ Convert to Hankaku Katakana or Toggle Katakana <=> Hankaku Katakana Mode" skk-toggle-katakana t] ["Enter SKK Latin Mode" skk-latin-mode t] ["Enter SKK Japanese Mode" skk-kakutei t] ["Toggle Roma <=> Kana" skk-kanagaki-toggle-rom-kana t] "--" ["Show Key Bindings" skk-kanagaki-help t] ["Show the Current Keymap based on NICOLA" skk-nicola-help (featurep 'skk-nicola)] ["Show NICOLA-Specific Key Bindings" skk-nicola-2nd-help (featurep 'skk-nicola)] "--" ["Visit NIHONGO-NYURYOKU CONSORTIUM Web Site" skk-nicola-visit-nicola-website (locate-library "browse-url")]))) (cond ((eval-and-compile (featurep 'xemacs)) (add-hook 'skk-mode-hook #'(lambda () (add-submenu '("SKK") skk-kanagaki-menu-items)))) (t (dolist (map (list skk-j-mode-map skk-latin-mode-map skk-abbrev-mode-map skk-jisx0208-latin-mode-map)) (easy-menu-add-item map '("menu-bar" "SKK") skk-kanagaki-menu-items)) (when (eval-when-compile (featurep 'emacs)) (setq skk-emacs-menu-resource-ja (append skk-emacs-menu-resource-ja '(("Set Henkan point" . "$BJQ493+;OE@$r%;%C%H(B") ("Input Prefix or Suffix" . "$B@\F,<-!&@\Hx<-$rF~NO(B") ("Start Conversion with Okuri" . "$BAw$j$"$jJQ49$r3+;O(B") ("Input a Character by Code" . "$B%3!<%IF~NO(B") ("Enter SKK Abbrev Mode" . "Abbrev $B%b!<%I$KF~$k(B") ("\ Convert Hiragana <=> Katakana or Toggle Hiragana <=> Katakana Mode" . "$B$+$J(B <=> $B%+%J(B $BJQ49(B $B$^$?$O(B $B$+$J%b!<%I(B <=> $B%+%J%b!<%I(B $B@Z49$((B") ("Enter SKK JIS X 0208 Latin Mode" . "$BA41Q%b!<%I$KF~$k(B") ("\ Convert to Hankaku Katakana or Toggle Katakana <=> Hankaku Katakana Mode" . "\ $BH>3Q%+%J$KJQ49(B $B$^$?$O(B $BA43Q%+%J%b!<%I(B <=> $BH>3Q%+%J%b!<%I(B $B@Z49$((B") ("Enter SKK Latin Mode" . "$B%"%9%-!<%b!<%I$KF~$k(B") ("Enter SKK Japanese Mode" . "$B$+$J%b!<%I$KF~$k(B") ("Toggle Roma <=> Kana" . "$B$+$JF~NOJ}<0(B $B%m!<%^(B <=> $B$+$J(B $B@Z49$((B") ("Show Key Bindings" . "$B$+$JF~NOFH<+$N%-!L>F~NO%5%]!<%H$N$?$a$NF;6qH"(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000, 2001, 2002, 2003, 2004 ;; Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; macro$B!"(Binline function $B$O$3$3$KCV$-$^$9!#I,MW$J>l9g$O3F%b%8%e!<%k$NCf$+$i(B ;; $B$3$N%W%m%0%i%`$r%m!<%I$7$^$9!#(B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-vars) (require 'skk-macs)) (eval-when-compile (defvar skk-dcomp-start-point) (defvar skk-dcomp-end-point) (defvar skk-isearch-current-buffer) (defvar skk-nicola-okuri-flag) (defvar skk-nicola-hiragana-mode-string) (defvar skk-nicola-katakana-mode-string) (defvar skk-nicola-hiragana-rom-string) (defvar skk-nicola-katakana-rom-string)) ;; Variables. (defconst skk-kanagaki-dakuten-alist '(("$B$+(B" "$B$,(B") ("$B$-(B" "$B$.(B") ("$B$/(B" "$B$0(B") ("$B$1(B" "$B$2(B") ("$B$3(B" "$B$4(B") ("$B$5(B" "$B$6(B") ("$B$7(B" "$B$8(B") ("$B$9(B" "$B$:(B") ("$B$;(B" "$B$<(B") ("$B$=(B" "$B$>(B") ("$B$?(B" "$B$@(B") ("$B$A(B" "$B$B(B") ("$B$D(B" "$B$E(B") ("$B$F(B" "$B$G(B") ("$B$H(B" "$B$I(B") ("$B$O(B" "$B$P(B" "$B$Q(B") ("$B$R(B" "$B$S(B" "$B$T(B") ("$B$U(B" "$B$V(B" "$B$W(B") ("$B$X(B" "$B$Y(B" "$B$Z(B") ("$B$[(B" "$B$\(B" "$B$](B") ("$B%&(B" "$B%t(B") ("$B%+(B" "$B%,(B") ("$B%-(B" "$B%.(B") ("$B%/(B" "$B%0(B") ("$B%1(B" "$B%2(B") ("$B%3(B" "$B%4(B") ("$B%5(B" "$B%6(B") ("$B%7(B" "$B%8(B") ("$B%9(B" "$B%:(B") ("$B%;(B" "$B%<(B") ("$B%=(B" "$B%>(B") ("$B%?(B" "$B%@(B") ("$B%A(B" "$B%B(B") ("$B%D(B" "$B%E(B") ("$B%F(B" "$B%G(B") ("$B%H(B" "$B%I(B") ("$B%O(B" "$B%P(B" "$B%Q(B") ("$B%R(B" "$B%S(B" "$B%T(B") ("$B%U(B" "$B%V(B" "$B%W(B") ("$B%X(B" "$B%Y(B" "$B%Z(B") ("$B%[(B" "$B%\(B" "$B%](B")) "$BByE@$HH>ByE@$rF~NO$9$k$?$a$N%k!<%k!#(B") (defconst skk-kanagaki-print-help-function (cond ((and (featurep 'emacs) (>= emacs-major-version 23)) #'help-print-return-message) (t #'print-help-return-message))) ;;;###autoload (defmacro skk-kanagaki-help-1 (bufname title list) `(let ((buf (get-buffer-create ,bufname))) (with-current-buffer buf (setq buffer-read-only nil) (erase-buffer) (insert (concat (format "%s\n\n" ,title) (mapconcat #'(lambda (cons) (cond ((and (symbolp (car cons)) (symbol-value (car cons))) (format "%s $B!D(B %s\n" (key-description (symbol-value (car cons))) (cdr cons))) (t (format "%s $B!D(B %s\n" (car cons) (cdr cons))))) ;; (delq nil ,list) ""))) ;; (setq buffer-read-only t) (set-buffer-modified-p nil) (goto-char (point-min)) (help-mode)) (let ((standard-output buf)) (funcall skk-kanagaki-print-help-function)) (display-buffer buf))) ;;;###autoload (defun skk-nicola-visit-nicola-website () (interactive) (let ((func (cond ((fboundp 'browse-url) 'browse-url) (t 'browse-url-netscape)))) (funcall func "http://nicola.sunicom.co.jp/"))) ;;;###autoload (defun skk-kanagaki-toggle-rom-kana (&optional arg) "$B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO(B $B$r@Z$jBX$($k!#(B" (interactive) ;; (when (featurep 'skk-nicola) (setq skk-nicola-okuri-flag nil)) ;; (setq skk-kanagaki-state (if (memq arg '(kana rom)) arg (case skk-kanagaki-state (kana 'rom) (rom 'kana) ;; $B$H$j$"$($:!#(B (t 'kana)))) (skk-kanagaki-adjust-rule-tree) ;; (when (featurep 'skk-nicola) ;; $B%b!<%I9T$NI=<($ND4@a!#(B (case skk-kanagaki-state (kana (setq skk-hiragana-mode-string skk-nicola-hiragana-mode-string skk-katakana-mode-string skk-nicola-katakana-mode-string)) (rom (setq skk-hiragana-mode-string skk-nicola-hiragana-rom-string skk-katakana-mode-string skk-nicola-katakana-rom-string))) ;; (skk-modify-indicator-alist 'katakana skk-katakana-mode-string) (skk-modify-indicator-alist 'hiragana skk-hiragana-mode-string) ;; (skk-loop-for-buffers (buffer-list) (when (and skk-j-mode (listp mode-line-format)) (skk-update-modeline (if skk-katakana 'katakana 'hiragana)))))) ;;;###autoload (defun skk-kanagaki-dakuten (&optional arg handakuten) "$BD>A0$NJ8;z$r8+$F2DG=$J$iByE@$rIU2C$7!"$5$b$J$1$l$P(B \"$B!+(B\" $B$rF~NO$9$k!#(B" (interactive "*p") (let ((list skk-kanagaki-dakuten-alist) (pt1 (point)) (henkan-on (and skk-isearch-switch (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (eq skk-henkan-mode 'on)))) char1 char2 str) (ignore-errors (setq char1 (cond ((and skk-isearch-switch (not (skk-in-minibuffer-p))) (if henkan-on (with-current-buffer skk-isearch-working-buffer (skk-save-point (backward-char 1) (buffer-substring-no-properties (point) pt1))) (substring isearch-string -1))) (t (skk-save-point (backward-char 1) (buffer-substring-no-properties (point) pt1)))))) (cond ((setq char2 (nth (if handakuten 2 1) (assoc char1 list))) (cond ((and skk-isearch-switch (not (skk-in-minibuffer-p))) (if henkan-on (with-current-buffer skk-isearch-working-buffer (delete-char -1) (skk-insert-str char2)) (setq str isearch-string) (while (string= str (if (vectorp (car isearch-cmds)) (aref (car isearch-cmds) 0) (caar isearch-cmds))) (with-current-buffer skk-isearch-current-buffer (skk-isearch-delete-char arg))) (setq isearch-string (concat (if (vectorp (car isearch-cmds)) (aref (car isearch-cmds) 0) (caar isearch-cmds)) char2) isearch-message (concat (skk-isearch-mode-string) (mapconcat #'isearch-text-char-description isearch-string ""))) (put 'isearch-barrier 'skk-kanagaki t) (skk-unread-event (character-to-event (aref (where-is-internal (if isearch-forward 'isearch-repeat-forward 'isearch-repeat-backward) isearch-mode-map t) 0))))) (t (delete-char -1) (skk-insert-str char2)))) (t (skk-insert-str (if handakuten "$B!,(B" "$B!+(B")))))) (defadvice isearch-repeat (around skk-kanagaki-workaround activate) (cond ((get 'isearch-barrier 'skk-kanagaki) (goto-char isearch-barrier) ad-do-it (put 'isearch-barrier 'skk-kanagaki nil)) (t ad-do-it))) ;;;###autoload (defun skk-kanagaki-handakuten (&optional arg) "$BD>A0$NJ8;z$r8+$F2DG=$J$iH>ByE@$rIU2C$7!"$5$b$J$1$l$P(B \"$B!,(B\" $B$rF~NO$9$k!#(B" (interactive "*p") (skk-kanagaki-dakuten arg t)) ;;;###autoload (defun skk-kanagaki-bs (arg) ;; OASYS $B$K$*$1$k(B BS $B%-!<$N5!G=$NBe$o$j!#$I$N$h$&$J5sF0$r$5$;$k$Y$-$+$^$@7h$^(B ;; $B$C$F$$$J$$!#8=:_$N$H$3$m(B ;; ;; o $B"'%b!<%I$G$O(B `skk-kanagaki-esc' $B$HF1$85sF0(B ;; o $B"&%b!<%I$G$O(B `skk-delete-backward-char' $B$HF1$85sF0(B ;; o $B"#%b!<%I$G$O(B `delete-backward-char' $B$HF1$85sF0(B ;; ;; $B$H$$$&$U$&$K9M$($F$$$k!#(B (interactive "*p") ;; (cond ((eq skk-henkan-mode 'active) (call-interactively 'keyboard-quit)) ((and (eq skk-henkan-mode 'on) (= (point) (marker-position skk-henkan-start-point))) (skk-kakutei arg)) ((eq skk-henkan-mode 'on) (forward-char -1) (delete-char 1)) ((and skk-isearch-switch (buffer-live-p skk-isearch-current-buffer)) (with-current-buffer skk-isearch-current-buffer (skk-isearch-delete-char arg))) (t (delete-char (- 0 arg)))) ;; (when skk-dcomp-activate (skk-dcomp-after-delete-backward-char))) ;;;###autoload (let ((property (if (featurep 'xemacs) 'pending-del 'delete-selection))) (put 'skk-kanagaki-bs property 'supersede)) ;;;###autoload (defun skk-kanagaki-esc (&optional arg) ;; OASYS $B$K$*$1$kC$75!G=$NBe$o$j!#(B $B$H$j$"$($:(B keyboard-quit $B$N>l9g$HF1MM(B ;; $B$NF0:n$r$9$k$h$&$K$K$7$F$*$/!#(BOAK $B&BHG$@$H(B ;; ;; o 1 $B2sL\$NC$7$G!"JQ49A0$N>uBV$KLa$7$?>e$GJQ493+;OE@$K%]%$%s%H$r0\F0(B ;; o 2 $B2sL\$NC$7$GJQ49BP>]$NJ8;zNsA4BN$r>C5n(B ;; ;; $B$9$k$h$&$K$J$C$F$$$k$,!"(BSKK $B$K$*$1$kJQ49BP>]$NJ8;zNs$O(B $B"&(B $B$H%]%$%s%H$N4V$N(B ;; $BJ8;zNs$G$"$j!"%]%$%s%H$r0\F0$9$k$HJQ49BP>]$,JQ$o$C$F$7$^$&!#$=$N$?$a!"%]%$(B ;; $B%s%H$O0\F0$7$J$$$3$H$H$9$k!#(B (interactive "*P") (cond ((skk-in-minibuffer-p) (call-interactively (if (fboundp 'minibuffer-keyboard-quit) 'minibuffer-keyboard-quit 'abort-recursive-edit))) (skk-henkan-mode (call-interactively 'keyboard-quit)) (t nil))) (provide 'skk-kanagaki-util) ;;; skk-kanagaki-util.el ends here ddskk-15.2/nicola/skk-kanagaki.el0000644000570400056700000004321011471027201016720 0ustar kitamotoopenlab;;; skk-kanagaki.el --- SKK $B$N2>L>F~NO%5%]!<%H(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000 Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; {$B$F$C$H$jAa$$;H$$$+$?(B ($B;CDj%P!<%8%g%s(B)} ;; ;; ~/.skk $B$K(B ;; ;; (setq skk-use-kana-keyboard t) ;; (setq skk-kanagaki-keyboard-type '106-jis) ;; ;; $B$H=q$/!#(B ;; ;; ;; {$B@bL@(B} ;; ;; $B$3$N%W%m%0%i%`$O(B SKK $B$K$*$$$F%m!<%^;zF~NO$J$i$L2>L>F~NO$r%5%]!<%H$9$k$3$H(B ;; $B$rL\E*$H$7$^$9!#(B NICOLA $B$d5l(B JIS $BG[Ns$KBP1~$7$^$9!#(B ;; ;; $B$J$*!"0J2<$O!V?F;X%7%U%HF~NO!W0J30$NNc$G$9!#?F;X%7%U%HF~NO$NNc$K$D$$$F$O!"(B ;; README.NICOLA.ja $B$H(B skk-nicola.el $B$r8fMw$/$@$5$$!#(B ;; ;; -*- $BLdBjE@(B -*- ;; ;; 1. Emacs Lisp $B$N%l%Y%k$G$NLdBj(B ;; ;; $B2>L>F~NO$K$*$$$F$O(B SHIFT $B%-!<$rMxMQ$7$FF~NO$5$l$k2>L>$b$"$k$?$a!"(B SKK $BK\Mh(B ;; $B$N(BSHIFT $B$N;H$$J}$,$G$-$^$;$s!#$=$NB>$$$m$$$m(B SKK $B$i$7$/$J$$$N$G$9$,!"(B $B$H$j(B ;; $B$"$($:!"(B ;; ;; o $BJQ493+;OE@$N;XDj$O2>L>F~NO$H$OJL$K9T$&!#(B ;; o $BJQ49$N3+;O$ODL>oDL$j!"(B [SPC] $B$G;X<($9$k!#(B $B$?$@$7!"Aw$j$"$j$NJQ49$N$H$-(B ;; $B$O(B $BAw$j3+;OE@$r;XDj$9$k$?$a$NFCl9g$,$"(B ;; $B$j$^$9!#Nc$($PF|K\8l(B 106 $B%-!<%\!<%I;HMQ;~!"(BXFree86 $B>e$G$O(B ;; ;; o $B!V!o!W%-!<(B ($B2>A[%-!<%3!<%I(B 133) ;; o $B!V!@!W%-!<(B ($B2>A[%-!<%3!<%I(B 123) ;; ;; $B$O$$$:$l$b(B backslash $B$H$7$F07$o$l$^$9!#$7$+$72>L>F~NO$K$*$$$FA0$^$l$^$9!#$3$N>l9g$NBP1~:v$H$7$F!"Nc$($P(B ;; ;; % cat >> ~/.Xmodmap ;; ;; keycode 123 = underscore underscore ;; % xmodmap ~/.Xmodmap ;; ;; $B$J$I$H$7$F$*$$$F$+$i!"(B~/.skk $B$K(B ;; ;; (setq skk-kanagaki-rule-list ;; '(("\\" nil "$B!<(B"))) ;; ;; $B$H=q$/$3$H$J$I$,9M$($i$l$^$9!#(B ;; ($BF1MM$N%"%$%G%"$O(B Canna $B$G2>L>F~NO$9$k:]$K$bM-8z$G$"$k$h$&$G$9!#(B) ;; ;; $B$b$7$"$J$?$,(B XEmacs $B$N%Y!<%?%F%9%?!<$J$i$P(B ;; ;; keycode 123 = kana_RO underscore ;; keycode 19 = 0 kana_WO ;; ;; $B$J$s$F@_Dj$G$H$F$b9,$;$K$J$l$k$+$b$7$l$^$;$s!#(B (Mr. XEmacs $B$N$7$o$6$+$J(B?) ;; ;; $B$5$i$K!"$b$7$"$J$?$,(B PC-98 $B%f!<%6(B $B$G(B XEmacs $B$N%Y!<%?%F%9%?!<$J$i$P!"$*$b$`(B ;; $B$m$K!V$+$J!W%-!<$r%m%C%/$7$F$_$F$/$@$5$$!#(B ;') ;; ;; -*- $B;H$$J}(B -*- ;; ;; 1. $BJQ493+;OE@$N;XDj(B ;; ;; $BDL>o$N(B SKK $B$K$*$$$F$O!"(B SHIFT $B$r2!$7$J$,$iF~NO$9$k$3$H$GJQ493+;O0LCV$rL@<((B ;; $B$7$F$$$^$7$?$,!"2>L>F~NO$G$O$3$l$,$G$-$^$;$s!#$=$3$G!"JL$NJ}K!$GJQ493+;OE@(B ;; $B$r;XDj$7$J$1$l$P$J$j$^$;$s!#$=$3$G!"!V(Bf $B$H(B j $B$rF1;~$K2!$9!W$H$$$&o$N(B SKK $B$K$*$$$F$O!"(B SHIFT $B$r2!$7$J$,$iF~NO$9$k$3$H$GAw$j2>L>$N0LCV$rL@(B ;; $B<($7$F$$$^$7$?!#2>L>F~NO(B SKK $B$K$*$$$F$O$=$l$O$G$-$^$;$s!#$=$3$G(B ;; ;; o [fj] $B$,2!$5$l$?$H$-$K!"(B $BD>A0$N(B 1 $BJ8;z$rAw$j2>L>$H8+Jo$7$FJQ49$r3+;O$9$k!#(B ;; ;; $B$H$$$&l9g$O(B ;; ;; $B"&$?$C$9(B [fj] $B"M(B $B"'C#$9(B ;; ;; $B$N$h$&$K$J$j$^$9!#!VBT$C$F!W$HF~NO$7$?$$>l9g$O(B ;; ;; $B"&$^$C(B [fj] $B"M(B $B"'BT$C(B ;; ;; $B$H$7$F$+$i!V$F!W$rF~NO$7$^$9!#(B ;; ;; 3. $B$$$/$D$+$N=EMW$J%-!L>F~NO$G$O$3$l$b;H$($^$;$s!#$=$N$?$a!"$3$l$i$N$&$A=EMW$H;W$o$l$k$b(B ;; $B$N$rJL$N%-!3Q%+%J%b!<%I$^$?$OH>3Q%+%JJQ49(B ;; [f10] $B!D(B latin $B%b!<%I(B ;; [f12] $B!D(B $B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO(B $B$N@Z$jBX$((B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-dcomp) (require 'skk-kanagaki-util) (require 'skk-macs) (require 'skk-vars)) (require 'nicola-ddskk-autoloads) (when window-system (require 'skk-kanagaki-menu)) ;; Variables. (defcustom skk-kanagaki-keyboard-type '106-jis "\ *$B2>L>F~NO$K;HMQ$9$k%-!<%\!<%I$N(B}-base-rule-list' $B$H$$$&(B $BJQ?t$rMQ0U$7$J$1$l$P$J$i$J$$!#2?$b@_Dj$7$J$1$l$PF|K\8l(B 106 $B%-!<%\!<%IMQ$N@_Dj(B $B$rMQ0U$7!"$3$l$r;HMQ$9$k!#(B" :type '(radio (const 106-jis) (const nicola-jis) (const nicola-us) (const nicola-dvorak) (const omelet-jis) (const omelet-us) (const omelet-dvorak) (const oasys) (symbol :tag "Another Keyboard Type")) :group 'skk-kanagaki) (defcustom skk-kanagaki-set-henkan-point-key [f2] "\ *$B$3$N%-!<$r2!$9$3$H$GJQ493+;O0LCV$r@_Dj$9$k!#(B $BJQ493+;O0LCV$N@_Dj$O2>L>$rF~NO$9$kA0$K$*$3$J$C$F$b!"(B $BF~NO$7=*$o$C$?8e$G$*$3$J$C(B $B$F$b9=$o$J$$!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-abbrev-mode-key [f6] "\ *$B$3$N%-!<$r2!$9$3$H$G(B abbrev $B%b!<%I$KF~$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-katakana-mode-key [f7] "\ *$B$3$N%-!<$r2!$9$3$H$G%+%J%b!<%I$H$+$J%b!<%I$r@Z$j$+$($k!#(B $BJQ493+;O0LCV$N@_Dj8e$K2!$9$3$H$GBP>]J8;zNs$r%+%J$KJQ49$9$k$3$H$b$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-latin-jisx0208-mode-key [f8] "\ *$B$3$N%-!<$r2!$9$3$H$GA43Q1Q?t%b!<%I$KF~$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-hankaku-mode-key [f9] "\ *$B$3$N%-!<$r2!$9$3$H$GH>3Q%+%J%b!<%I$K@Z$j$+$($k!#(B $BJQ493+;O0LCV$N@_Dj8e$K2!$9$3$H$GBP>]J8;zNs$rH>3Q%+%J$KJQ49$9$k$3$H$b$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-latin-mode-key [f10] "\ *$B$3$N%-!<$r2!$9$3$H$G(B latin $B%b!<%I$KF~$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-toggle-rom-kana-key [f12] "\ *$B$3$N%-!<$r2!$9$3$H$G(B $B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO$N@Z$jBX$($,$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-code-input-key [f5] "\ *$B$3$N%-!<$r2!$9$3$H$G%3!<%IF~NO$,$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-midashi-henkan-key [f3] "\ *$B$3$N%-!<$r2!$9$3$H$G@\F,<-$^$?$O@\Hx<-JQ49$r$9$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-help-key "1" "\ *\\[help] $B$K$*$$$F%X%k%W$rI=<($9$k%-!e$G;HMQ$9$k>l9g!"(B $BNc$($P$3$NCM$r(B [henkan] (XEmacs $B$G$O(B [henkan-mode]) $B$K$9$l$P!"F|K\8l%-!<%\!<%I$N(B [$BA08uJd(B] $B%-!<$K3d$jEv$F$k$3$H$,$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-start-henkan-key " " "\ *$BJQ49$r3+;O$9$k$?$a$N%-!l9g$J$I$O!"$3$NJQ?t$rMQ$$$F$=$l$KBP1~$7(B $B$?@_Dj$r$9$k$3$H$,$G$-$k!#(B" :type '(repeat (list :tag "$B%k!<%k%j%9%H(B" (radio :tag "1 ($B%-!(B")) (radio :tag "2 ($BB%2;$N>l9g!VJ8;zNs!W$rA*$S$^$9(B)" (string :tag "$BJ8;zNs(B") (const nil)) (radio :tag "3 ($B$$$:$l$+$rA*$V(B)" (symbol :tag "$B4X?t(B") (string :tag "$BJ8;zNs(B ($B%+%J(B/$B$+$J6&DL(B)") (cons :tag "$BJ8;zNs$NAH(B ($B%+%J(B . $B$+$J(B)" (string :tag "3-1 ($B%+%J(B)") (string :tag "3-2 ($B$+$J(B)"))))) :group 'skk-kanagaki) ;; Internal constants and variables. (defvar skk-kanagaki-base-rule-list nil) (defvar skk-kanagaki-rule-tree nil) (defvar skk-kanagaki-rom-kana-rule-tree nil) (defvar skk-kanagaki-state 'kana) ;; Hooks. ;; Functions. (unless (fboundp 'help-mode) (defalias 'help-mode 'fundamental-mode)) ;;;###autoload (defun skk-kanagaki-midashi-henkan (&optional arg) "$B@\F,<-$^$?$O@\Hx<-JQ49$r$9$k!#(B" (interactive "*p") (cond ((eq skk-henkan-mode 'active) (skk-kakutei) (let (skk-kakutei-history) (skk-set-henkan-point-subr)) (insert-and-inherit ?>)) ((eq skk-henkan-mode 'on) ;; $B@\F,8l$N=hM}(B (skk-kana-cleanup 'force) (insert-and-inherit ?>) (skk-set-marker skk-henkan-end-point (point)) (setq skk-henkan-count 0 skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point (point)) skk-prefix "") (skk-henkan)))) ;;;###autoload (defun skk-kanagaki-help () (interactive) (skk-kanagaki-help-1 "* SKK $B2>L>F~NO(B $B%X%k%W(B*" "$B8=:_$N2>L>F~NO%b!<%I$N3Q%+%J%b!<%I(B or $BH>3Q%+%JJQ49(B") (skk-kanagaki-latin-mode-key . "latin $B%b!<%I(B") (skk-kanagaki-toggle-rom-kana-key . "$B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO(B") (skk-kanagaki-previous-candidate-key . "$BA08uJdI=<((B") (skk-kanagaki-start-henkan-key . "$BJQ49!&l9g(B (not (and parg (listp parg)))) (skk-bind-last-command-char ?\ (skk-insert arg parg))) (t ;; C-u [SPC] $B$GAw$j$"$jJQ49$r$9$k!#(B (when (featurep 'skk-dcomp) (skk-dcomp-cleanup-buffer)) (skk-kanagaki-set-okurigana-no-sokuon t)))) ;;;###autoload (defalias 'skk-kanagaki-set-okurigana 'skk-set-char-before-as-okurigana) ;;;###autoload (defun skk-kanagaki-set-okurigana-no-sokuon (&optional arg) "$B%]%$%s%H$ND>A0$NJ8;z$rAw$j2>L>$H8+Jo$7$F!"JQ49$r3+;O$9$k!#(B" (interactive "*p") (skk-kanagaki-set-okurigana (not (eq 4 (prefix-numeric-value arg))))) ;;;###autoload (defun skk-kanagaki-initialize () "SKK $B5/F0;~$NE,Ev$J%?%$%_%s%0$G2>L>F~NOMQ$N@_Dj$r9T$&!#(B" ;; $B" $B$K$h$k@\(B ;; $BHx<-$NF~NO$O$G$-$J$/$J$k!#(B "?" $B$K$h$k@\Hx<-$NF~NO$O$G$-$k!#(B (dolist (char skk-special-midashi-char-list) (when (and skk-use-kana-keyboard (memq (nth 2 (assoc (skk-char-to-unibyte-string char) (symbol-value (intern (format "skk-kanagaki-%s-base-rule-list" skk-kanagaki-keyboard-type))))) '(skk-current-kuten skk-current-touten))) (setq skk-special-midashi-char-list (delq char skk-special-midashi-char-list))))) ;; Pieces of advice. (defadvice skk-setup-keymap (after skk-kanagaki-keys activate preactivate) ;; $B%-!<%P%$%s%I!#$?$@$7$3$l$O!"$h$jE,@Z$J%-!L>F~NOMQ$N(B work around $B!#(B" ;; (when (and skk-process-okuri-early (eq skk-kanagaki-state 'kana)) ;; `skk-process-okuri-early' $B$,I{:nMQ$r;}$D$+$bCN$l$J$$!#2>L>F~NO$G$O$=$b(B ;; $B$=$b0UL#$N$J$$%*%W%7%g%s$J$N$G6/@)E*$K(B off $B$K$9$k!#(B (setq skk-process-okuri-early nil)) ;; (let ((skk-set-henkan-point-key (cond ((and (eq skk-kanagaki-state 'kana) (not skk-jisx0201-mode)) nil) (t skk-set-henkan-point-key)))) ad-do-it)) (defadvice skk-compute-henkan-lists-sub-adjust-okuri (around skk-kanagaki-adjust-okuri activate compile) (cond (skk-use-kana-keyboard ;; $B2>L>F~NOMQ$NFCl9g!#(B (string-match (concat "^" (regexp-quote okuri-key)) item)) (and (eq skk-kanagaki-state 'rom) ;; okuri-key $B$,(B "$B$C$F(B" $B$G(B item $B$,(B "$B$C(B" $B$J$I$@$C$?>l9g!#(B (string-match (concat "^" (regexp-quote item)) okuri-key))) okuri-key) (t item))))) (t ad-do-it))) (provide 'skk-kanagaki) ;;; skk-kanagaki.el ends here ddskk-15.2/nicola/skk-nicola-colemak.el0000644000570400056700000002267712322425013020045 0ustar kitamotoopenlab;;; skk-nicola-colemak.el --- SKK $B$K(B NICOLA (Colemak) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA Colemak $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BK $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-nicola-colemak-plain-rule-list' `skk-nicola-colemak-lshift-rule-list' `skk-nicola-colemak-rshift-rule-list' ") (defvar skk-nicola-colemak-plain-rule-list '((?\` "$B!.(B") ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?= "$B!a(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?f ("$B%?(B" . "$B$?(B")) (?p ("$B%3(B" . "$B$3(B")) (?g ("$B%5(B" . "$B$5(B")) ;; (?j ("$B%i(B" . "$B$i(B")) (?l ("$B%A(B" . "$B$A(B")) (?u ("$B%/(B" . "$B$/(B")) (?y ("$B%D(B" . "$B$D(B")) (?\; "$B!"(B") (?\[ "$B!"(B") (?\] skk-kanagaki-dakuten) (?\\ "$B!o(B") ;; (?a ("$B%&(B" . "$B$&(B")) (?r ("$B%7(B" . "$B$7(B")) (?s ("$B%F(B" . "$B$F(B")) (?t ("$B%1(B" . "$B$1(B")) (?d ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?n ("$B%H(B" . "$B$H(B")) (?e ("$B%-(B" . "$B$-(B")) (?i ("$B%$(B" . "$B$$(B")) (?o ("$B%s(B" . "$B$s(B")) (?\' "$B!G(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?k ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-nicola-colemak-rshift-rule-list '((?` "$B%u(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!0(B") (?7 "$B!u(B") (?8 "$B!v(B") (?9 "$B!J(B") (?0 "$B!K(B") (?- "$B!2(B") (?= "$B!\(B") ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?f ("$B%@(B" . "$B$@(B")) (?p ("$B%4(B" . "$B$4(B")) (?g ("$B%6(B" . "$B$6(B")) ;; (?j ("$B%h(B" . "$B$h(B")) (?l ("$B%K(B" . "$B$K(B")) (?u ("$B%k(B" . "$B$k(B")) (?y ("$B%^(B" . "$B$^(B")) (?\; ("$B%'(B" . "$B$'(B")) (?\[ "$B!7(B") (?\] skk-kanagaki-handakuten) (?\\ "$B!C(B") ;; (?a "$B%t(B") (?r ("$B%8(B" . "$B$8(B")) (?s ("$B%G(B" . "$B$G(B")) (?t ("$B%2(B" . "$B$2(B")) (?d ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?n ("$B%*(B" . "$B$*(B")) (?e ("$B%N(B" . "$B$N(B")) (?i ("$B%g(B" . "$B$g(B")) (?o ("$B%C(B" . "$B$C(B")) (?' "$B!D(B") ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?k ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-nicola-colemak-lshift-rule-list '((?\` "$B!1(B") ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!H(B") (?9 "$B!I(B") (?0 "$B!X(B") (?- "$B!Y(B") (?= "$B!c(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?f ("$B%j(B" . "$B$j(B")) (?p ("$B%c(B" . "$B$c(B")) (?g ("$B%l(B" . "$B$l(B")) ;; (?j ("$B%Q(B" . "$B$Q(B")) (?l ("$B%B(B" . "$B$B(B")) (?u ("$B%0(B" . "$B$0(B")) (?y ("$B%E(B" . "$B$E(B")) (?\; ("$B%T(B" . "$B$T(B")) (?\[ "$B!P(B") (?\] "$B!Q(B") (?\\ "$B!d(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?r ("$B%"(B" . "$B$"(B")) (?s ("$B%J(B" . "$B$J(B")) (?t ("$B%e(B" . "$B$e(B")) (?d ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?n ("$B%I(B" . "$B$I(B")) (?e ("$B%.(B" . "$B$.(B")) (?i ("$B%](B" . "$B$](B")) (?o "$B!((B") (?' "$B!'(B") ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?k ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map "'" 'skk-kanagaki-bs)))) (provide 'skk-nicola-colemak) ;;; skk-nicola-colemak.el ends here ddskk-15.2/nicola/skk-nicola-dcomp.el0000644000570400056700000000503411442724041017525 0ustar kitamotoopenlab;;; skk-nicola-dcomp.el --- skk-dcomp support for NICOLA-DDSKK ;; Copyright (C) 2001 Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'cl) (require 'skk-macs)) ;;;###autoload (add-hook 'skk-mode-hook #'(lambda () (when (and (featurep 'skk-dcomp) (featurep 'skk-nicola)) (require 'skk-nicola-dcomp)))) (defadvice skk-nicola-self-insert-lshift-1 (around skk-nicola-dcomp activate) (cond ((or (not skk-dcomp-activate) skk-hint-inhibit-dcomp (eq skk-henkan-mode 'active)) ad-do-it) (t (let (pos) (cond ((or (eq skk-henkan-mode 'active) (skk-get-prefix skk-current-rule-tree) (not skk-comp-stack)) (skk-set-marker skk-dcomp-start-point nil) (skk-set-marker skk-dcomp-end-point nil)) ((skk-dcomp-marked-p) (skk-dcomp-face-off) (unless (member (this-command-keys) skk-dcomp-keep-completion-keys) ;; (if (eq this-command 'skk-nicola-self-insert-rshift) (setq pos (point)) (ignore-errors (delete-region skk-dcomp-start-point skk-dcomp-end-point)))))) ad-do-it ;; (when (and (eq this-command 'skk-nicola-self-insert-rshift) (eq skk-henkan-mode 'on)) (when (and (markerp skk-dcomp-start-point) (marker-position skk-dcomp-start-point) pos (< (marker-position skk-dcomp-start-point) pos)) (delete-region skk-dcomp-start-point pos)) (when (and (markerp skk-dcomp-end-point) (marker-position skk-dcomp-end-point) (< (point) (marker-position skk-dcomp-end-point))) (delete-region skk-dcomp-end-point (point)))) ;; (skk-dcomp-do-completion (point)))))) (provide 'skk-nicola-dcomp) ;;; skk-nicola-dcomp.el ends here ddskk-15.2/nicola/skk-nicola-dvorak.el0000644000570400056700000002254011471027637017723 0ustar kitamotoopenlab;;; skk-nicola-dvorak.el --- SKK $B$K(B NICOLA (Dvorak) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA Dvorak $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(B; $B!%("(BQ $B$R("(BJ $B$9("(BK $B$U("(BX $B$X("(B $B("(BB $B$a("(BM $B$=("(BW $B$M("(BV $B$[("(BZ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-nicola-dvorak-plain-rule-list' `skk-nicola-dvorak-lshift-rule-list' `skk-nicola-dvorak-rshift-rule-list' ") (defvar skk-nicola-dvorak-plain-rule-list '((?` "$B!.(B") ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?\[ "$B!N(B") (?\] "$B!O(B") (?\\ "$B!o(B") ;; (?' "$B!#(B") (?, ("$B%+(B" . "$B$+(B")) (?. ("$B%?(B" . "$B$?(B")) (?p ("$B%3(B" . "$B$3(B")) (?y ("$B%5(B" . "$B$5(B")) ;; (?f ("$B%i(B" . "$B$i(B")) (?g ("$B%A(B" . "$B$A(B")) (?c ("$B%/(B" . "$B$/(B")) (?r ("$B%D(B" . "$B$D(B")) (?l "$B!$(B") (?/ "$B!"(B") (?= skk-kanagaki-dakuten) ;; (?a ("$B%&(B" . "$B$&(B")) (?o ("$B%7(B" . "$B$7(B")) (?e ("$B%F(B" . "$B$F(B")) (?u ("$B%1(B" . "$B$1(B")) (?i ("$B%;(B" . "$B$;(B")) ;; (?d ("$B%O(B" . "$B$O(B")) (?h ("$B%H(B" . "$B$H(B")) (?t ("$B%-(B" . "$B$-(B")) (?n ("$B%$(B" . "$B$$(B")) (?s ("$B%s(B" . "$B$s(B")) (?- "$B!](B") ;; (?\; "$B!%(B") (?q ("$B%R(B" . "$B$R(B")) (?j ("$B%9(B" . "$B$9(B")) (?k ("$B%U(B" . "$B$U(B")) (?x ("$B%X(B" . "$B$X(B")) ;; (?b ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?w ("$B%M(B" . "$B$M(B")) (?v ("$B%[(B" . "$B$[(B")) (?z "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-nicola-dvorak-lshift-rule-list '((?` "$B!1(B") ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!G(B") (?7 "$B!\(B") (?8 "$B!H(B") (?9 "$B!I(B") (?0 "$B!X(B") (?\[ "$B!Y(B") (?\] "$B!c(B") (?\\ "$B!d(B") ;; (?' ("$B%!(B" . "$B$!(B")) (?, ("$B%((B" . "$B$((B")) (?. ("$B%j(B" . "$B$j(B")) (?p ("$B%c(B" . "$B$c(B")) (?y ("$B%l(B" . "$B$l(B")) ;; (?f ("$B%Q(B" . "$B$Q(B")) (?g ("$B%B(B" . "$B$B(B")) (?c ("$B%0(B" . "$B$0(B")) (?r ("$B%E(B" . "$B$E(B")) (?l ("$B%T(B" . "$B$T(B")) (?/ "$B!'(B") (?= "$B!a(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?o ("$B%"(B" . "$B$"(B")) (?e ("$B%J(B" . "$B$J(B")) (?u ("$B%e(B" . "$B$e(B")) (?i ("$B%b(B" . "$B$b(B")) ;; (?d ("$B%P(B" . "$B$P(B")) (?h ("$B%I(B" . "$B$I(B")) (?t ("$B%.(B" . "$B$.(B")) (?n ("$B%](B" . "$B$](B")) (?s "$B!((B") (?- "$B!2(B") ;; (?\; ("$B%%(B" . "$B$%(B")) (?q "$B!<(B") (?j ("$B%m(B" . "$B$m(B")) (?k ("$B%d(B" . "$B$d(B")) (?x ("$B%#(B" . "$B$#(B")) ;; (?b ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?w ("$B%Z(B" . "$B$Z(B")) (?v ("$B%\(B" . "$B$\(B")) (?z ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-nicola-dvorak-rshift-rule-list '((?` "$B%u(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!0(B") (?7 "$B!u(B") (?8 "$B!v(B") (?9 "$B!J(B") (?0 "$B!K(B") (?\[ "$B!P(B") (?\] "$B!Q(B") (?\\ "$B!C(B") ;; (?' ("$B%p(B" . "$B$p(B")) (?, ("$B%,(B" . "$B$,(B")) (?. ("$B%@(B" . "$B$@(B")) (?p ("$B%4(B" . "$B$4(B")) (?y ("$B%6(B" . "$B$6(B")) ;; (?f ("$B%h(B" . "$B$h(B")) (?g ("$B%K(B" . "$B$K(B")) (?c ("$B%k(B" . "$B$k(B")) (?r ("$B%^(B" . "$B$^(B")) (?l ("$B%'(B" . "$B$'(B")) (?/ "$B!7(B") (?= skk-kanagaki-handakuten) ;; (?a "$B%t(B") (?o ("$B%8(B" . "$B$8(B")) (?e ("$B%G(B" . "$B$G(B")) (?u ("$B%2(B" . "$B$2(B")) (?i ("$B%<(B" . "$B$<(B")) ;; (?d ("$B%_(B" . "$B$_(B")) (?h ("$B%*(B" . "$B$*(B")) (?t ("$B%N(B" . "$B$N(B")) (?n ("$B%g(B" . "$B$g(B")) (?s ("$B%C(B" . "$B$C(B")) (?- "$B!D(B") ;; (?\; ("$B%q(B" . "$B$q(B")) (?q ("$B%S(B" . "$B$S(B")) (?j ("$B%:(B" . "$B$:(B")) (?k ("$B%V(B" . "$B$V(B")) (?x ("$B%Y(B" . "$B$Y(B")) ;; (?b ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?w ("$B%`(B" . "$B$`(B")) (?v ("$B%o(B" . "$B$o(B")) (?z ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (provide 'skk-nicola-dvorak) ;;; skk-nicola-dvorak.el ends here ddskk-15.2/nicola/skk-nicola-jis.el0000644000570400056700000002336711471027637017232 0ustar kitamotoopenlab;;; skk-nicola-jis.el --- SKK $B$K(B NICOLA (JIS) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J=`5r$N%-!$f("$Z$`("$\$o("$n$)("!2!C("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B\\ $B!o("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-nicola-jis-plain-rule-list' `skk-nicola-jis-lshift-rule-list' `skk-nicola-jis-rshift-rule-list' ") (defvar skk-nicola-jis-plain-rule-list '((?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?^ "$B!0(B") (?\\ "$B!o(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?e ("$B%?(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?@ "$B!"(B") (?\[ skk-kanagaki-dakuten) ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%1(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%$(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) (?: ("$B!((B" . "$B!'(B")) (?\] "$B!D(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-nicola-jis-rshift-rule-list '((?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!u(B") (?7 "$B!G(B") (?8 "$B!P(B") (?9 "$B!Q(B") (?0 "$B!F(B") (?- "$B!a(B") (?^ "$B!1(B") (?\\ "$B!C(B") ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?@ "$B!w(B") (?\[ skk-kanagaki-handakuten) ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) (?: ("$B%v(B" . "$B!((B")) (?\] ("$B!d(B" . "$B!c(B")) ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-nicola-jis-lshift-rule-list '((?1 "$B!*(B") (?2 "$B!I(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!J(B") (?9 "$B!K(B") (?0 "$B!X(B") (?- "$B!Y(B") (?^ "$B!H(B") (?\\ "$B!2(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%E(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?@ "$B!.(B") (?\[ "$B!7(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; ("$B!((B" . "$B!\(B")) (?: "$B!v(B") (?\] ("$B!c(B" ."$B!d(B")) ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map ":" 'skk-kanagaki-bs) (define-key skk-j-mode-map "]" 'skk-kanagaki-esc)))) (provide 'skk-nicola-jis) ;;; skk-nicola-jis.el ends here ddskk-15.2/nicola/skk-nicola-us.el0000644000570400056700000002263011471027637017064 0ustar kitamotoopenlab;;; skk-nicola-us.el --- SKK $B$K(B NICOLA (US) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J=`5r(B US $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-nicola-us-plain-rule-list' `skk-nicola-us-lshift-rule-list' `skk-nicola-us-rshift-rule-list' ") (defvar skk-nicola-us-plain-rule-list '((?\` "$B!.(B") ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?= "$B!a(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?e ("$B%?(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?\[ "$B!"(B") (?\] skk-kanagaki-dakuten) (?\\ "$B!o(B") ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%1(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%$(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) (?\' "$B!G(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-nicola-us-rshift-rule-list '((?` "$B%u(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!0(B") (?7 "$B!u(B") (?8 "$B!v(B") (?9 "$B!J(B") (?0 "$B!K(B") (?- "$B!2(B") (?= "$B!\(B") ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?\[ "$B!7(B") (?\] skk-kanagaki-handakuten) (?\\ "$B!C(B") ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) (?' "$B!D(B") ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-nicola-us-lshift-rule-list '((?\` "$B!1(B") ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!H(B") (?9 "$B!I(B") (?0 "$B!X(B") (?- "$B!Y(B") (?= "$B!c(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%E(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?\[ "$B!P(B") (?\] "$B!Q(B") (?\\ "$B!d(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; "$B!((B") (?' "$B!'(B") ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map "'" 'skk-kanagaki-bs)))) (provide 'skk-nicola-us) ;;; skk-nicola-us.el ends here ddskk-15.2/nicola/skk-nicola.el0000644000570400056700000010151212315771464016436 0ustar kitamotoopenlab;;; skk-nicola.el --- SKK $B$K?F;X%7%U%HF~NO%$%s%?%U%'%$%9$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%W%m%0%i%`$OL'1:0o;K$5$s:n$N(B NICOLA-SKK 0.39 $B$r4p$K!"(B Daredevil SKK $B$K(B ;; $BBP1~$5$;$?$b$N$G$9!#86:n$N%"%$%G%"$K4p$$$FO$r4p$K$D$/$j$^$7$?!#(B ;; ;; $BF1;a$N%"%$%G%"$H?F;X%7%U%HF~NO$K4X$9$k$4?TNO$K7I0U$rI=$7!"$^$?46\:Y$K$D$$$F$O!"F1:-$N(B README.NICOLA.ja $B$r$4Mw2<$5$$!#(B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-kanagaki-util) (require 'skk-macs) (require 'skk-vars)) (eval-and-compile (require 'skk-kanagaki)) (when (eval-when-compile (featurep 'emacs)) (require 'skk-emacs)) (eval-and-compile (autoload 'skk-dcomp-marked-p "skk-dcomp") (autoload 'skk-dcomp-face-off "skk-dcomp") (autoload 'skk-dcomp-face-on "skk-dcomp")) ;; Variables. (defcustom skk-nicola-interval 0.1 "*$B$3$N;~4V0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B $BC10L$OIC!#%G%U%)%k%H$O(B 0.1 $BIC!#(B" :type 'number :group 'skk-nicola) (defcustom skk-nicola-latin-interval 0.1 "*$B$3$N;~4V0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B $BC10L$OIC!#%G%U%)%k%H$O(B 0.1 $BIC!#(B" :type 'number :group 'skk-nicola) (defcustom skk-nicola-lshift-keys (list (cond ((eq system-type 'windows-nt) [noconvert]) (t ;; XEmacs, Emacs 19 or later ;; (except Emacs 20.1 & 20.2) [muhenkan]))) "*$B:8?F;X%-!<$H$7$F;H$&%-!C$7%-!<$rMQ0U$9$k!#(B $B$3$l$O!"(BJIS $B%-!<%\!<%I$G$O(B \":\" $B$H(B \"]\" $B$N0LCV$KAjEv$9$k!#(B" :type 'boolean :group 'skk-nicola) (defcustom skk-nicola-prefix-suffix-abbrev-chars (cond ((memq skk-kanagaki-keyboard-type '(nicola-dvorak omelet-dvorak)) '(?i ?d)) (t '(?g ?h))) "*$B@\F,!&@\Hx8lF~NO$r$7$?$j!"(B abbrev $B%b!<%I$KF~$kJ8;z!#(B $B$3$l$i$NJ8;z$KEv$?$k%-!<$NF1;~BG80$r8!=P$9$k$H!"(B $Bl9g$O(B skk-nicola-prefix-suffix-abbrev-chars $B$r;H$&!#(B" :type '(repeat character) :group 'skk-nicola) (defcustom skk-nicola-abbrev-chars (cond ((memq skk-kanagaki-keyboard-type '(nicola-dvorak omelet-dvorak)) '(?i ?d)) (t '(?g ?h))) "abbrev $B%b!<%I$KF~$kJ8;z!#(B $B$3$l$i$NJ8;z$KEv$?$k%-!<$NF1;~BG80$r8!=P$9$k$H!"(B $Bl9g$O(B skk-nicola-prefix-suffix-abbrev-chars $B$r;H$&!#(B" :type '(repeat character) :group 'skk-nicola) (defcustom skk-nicola-okuri-style 'nicola-skk "*$BAw$j2>L>$N%9%?%$%k!#(B `nicola-skk' $B$rA*$V$H!"!V"&$7(B*$B$C(B $B"M(B $B"'CN$C!W$N$h$&$KJQ49$9$k!#(B `skk' $B$rA*$V$H!"!V"&$7(B*$B$C$F(B $B"M(B $B"'CN$C$F!W$N$h$&$KJQ49$9$k!#(B" :type '(choice (const nicola-skk) (const skk)) :group 'skk-nicola) (defcustom skk-nicola-help-key "2" "* \\[help] $B$K$*$$$F%X%k%W$rI=<($9$k%-!l9g$K(B `skk-j-mode' $B$KF~$k!#(B" (interactive "*p") (if (sit-for skk-nicola-latin-interval t) ;; then (skk-bind-last-command-char (if (characterp (event-to-character last-command-event)) (event-to-character last-command-event) ?\ ) (call-interactively 'self-insert-command t)) ;; else (let ((last (cond ((eval-when-compile (featurep 'xemacs)) (event-key last-command-event)) (t last-command-event))) (next (cond ((eval-when-compile (featurep 'xemacs)) (event-key (next-command-event))) (t (next-command-event)))) char) (if (eq last next) ;; then (skk-bind-last-command-char (if (characterp (event-to-character last-command-event)) (event-to-character last-command-event) ?\ ) (call-interactively 'self-insert-command t) (call-interactively 'self-insert-command t)) ;; else (when (characterp next) (setq char next) (setq next (key-description (skk-char-to-unibyte-string char)))) (when (eq next 'space) (setq next (key-description " "))) (when (symbolp next) (setq next (key-description (vector next)))) ;; (unless (stringp next) (setq next (format "%s" next))) ;; (cond ((member next (mapcar #'(lambda (key) (key-description key)) (append skk-nicola-rshift-keys skk-nicola-lshift-keys))) ;; (skk-j-mode-on) (skk-cursor-set skk-cursor-hiragana-color)) (char (skk-bind-last-command-char (if (characterp (event-to-character last-command-event)) (event-to-character last-command-event) ?\ ) (call-interactively 'self-insert-command t)) (skk-bind-last-command-char char (call-interactively 'self-insert-command t))))))) nil) ;;;###autoload (defun skk-nicola-insert (&optional arg parg) "$BF1;~BG80$rG'<1$7$F!"(BNICOLA $B$+$JF~NO$r$9$k!#(B" (interactive "*p") (let (time1 time2 next-event next) ;; (setq time1 (skk-nicola-format-time (current-time))) ;; (unless (eq skk-henkan-mode 'on) (setq skk-nicola-okuri-flag nil)) ;; (cond ((sit-for skk-nicola-interval t) ;; No input in the interval. (skk-nicola-insert-single this-command arg parg)) (t ;; Some key's pressed. (setq time2 (skk-nicola-format-time (current-time))) ;; (setq next-event (next-command-event) next (skk-nicola-event-to-key next-event)) (cond ((skk-nicola-maybe-double-p this-command next) (skk-nicola-treat-triple this-command next time1 time2 arg)) (t ;; $B:G=i$NF~NO$OC1FHBG80$G$7$+$"$j$($J$$$H3NDj!#(B (skk-nicola-insert-single this-command arg) (skk-unread-event next-event))))) ;; $BE}7WE*2ACM$,$"$k$+$J(B...$B!)(B ; (setq skk-nicola-temp-data ; (cons ; (list (or (skk-last-command-char) this-command) ; period1 ; next ; period2 ; third) ; skk-nicola-temp-data)) ) ;; `skk-kana-input' $B$,2?$bF~NO$7$J$$$h$&$K!"(Bnil $B$rJV$7$F$*$/!#(B nil) (defun skk-nicola-format-time (time) "`current-time' $B$NJV$97k2L$rJQ49$7$FI>2A$G$-$k$h$&$K$9$k!#(B" (let ((time1 (* (float 65536) ;; 2^16 (car time))) (time2 (cadr time)) (time3 (/ (caddr time) (float 1000000)))) (+ time1 time2 time3))) (defun skk-nicola-event-to-key (event) "EVENT $B$rH/@8$9$k%-!<$rl9g$O!"Cf1{$K64$^$l$??F;X%-!<(Bs$B$,J8(B ;; $B;z%-!<(Ba$B$r=$>~$9$k$b$N$+!"J8;z%-!<(B b$B$r=$>~$9$k$b$N$+$r7hDj$7(B ;; $B$J$1$l$P$J$i$J$$!#!J?^#6!K(B ;; ;; $B4pK\E*$K$O!"2!2<;~9o$,!"(B $B$h$j?F;X%-!<$K6a$$J8;z%-!<$H$N4V$K(B ;; $BF1;~BG80$,@.N)$9$k$HH=CG$9$k!#(B ;; ;; $B?^(B6$B!!!!!!!VJ8;z%-!<(BON$B"*?F;X%-!<(BON$B"*J8;z%-!<(BON$B!W$NNc(B ;; ;; $B!!!!J8;z%-!<(Ba $B!!!!!!!!!!!!!!(B|$B!1!1!1(B| ;; $B!!!!!!!!!!!!!!!!!!!!!D!D!D!D!!!!!!!!!D!D!D!D!D!D!D!D(B ;; ;; $B!!!!?F;X%-!<(Bs $B!!!!!!!!!!!!!!!!!!(B|$B!1!1!1(B| ;; $B!!!!!!!!!!!!!!!!!!!!!D!D!D!D!D!D!!!!!!!!!D!D!D!D!D!D(B ;; ;; $B!!!!J8;z%-!<(Bb $B!!!!!!!!!!!!!!!!!!!!!!!!(B|$B!1!1!1(B| ;; $B!!!!!!!!!!!!!!!!!!!!!D!D!D!D!D!D!D!D!D!!!!!!!!!D!D!D(B ;; ;; $B!!!!!!!!!!!!!!!!!!!!!!!!!!!!(B|-t1-|-t2-| ;; (t1$B!"(Bt2$B$O6&$KH=Dj;~4V0JFb(B) ;; ;; t1=t2$B$J$i$P!"J8;z%-!<(Ba$B$H?F;X%-!<(Bs$B$,F1;~BG80!"J8;z%-!<(Bb$B$OC1FHBG80!#(B (defun skk-nicola-treat-triple (first next time1 time2 arg) "3 $B$D$NBG80$N$&$A!"$I$N(B 2 $BBG80$,F1;~BG80$+H=Dj$7$F%P%C%U%!$KA^F~$9$k!#(B" (let ((period1 (- time2 time1)) time3 period2 str third-event third) (cond ((sit-for period1 t) ;; 3 $B$D$a$NBG80$O@)8B;~4VFb$K$J$+$C$?!#F1;~BG80$H3NDj!#(B(< t1 t2) (skk-nicola-insert-double first next arg)) (t ;; 3 $B$D$a$NBG80$,@)8B;~4VFb$K$"$C$?!#$=$N(B event $B$rD4$Y$k!#(B (setq period2 (- (setq time3 (skk-nicola-format-time (current-time))) time2) str (if (characterp next) (skk-char-to-unibyte-string next)) third-event (next-command-event) third (skk-nicola-event-to-key third-event)) (cond ((and (skk-nicola-maybe-double-p next third) ;; ($BMW$i$J$$$+$bCN$i$J$$$,!"B?>/(B `sit-for' $B$NJV$C$F$/$k;~(B ;; $B4V$H(B `current-time' $B$,JV$9;~4V$H$N4V$K%:%l$,@8$8$k$3$H(B ;; $B$b$"$k$N$G!"0l1~Hf3S$7$F$*$/(B) (> period1 period2)) ;; $BA0$N(B 2 $BBG80$OF1;~BG80$G$O$J$$$H3NDj!#(B ;; $B8e$N(B 2 $BBG80$,F1;~BG80$+$I$&$+$O!"99$K= skk-nicola-interval 1) ;; $BC1FHBG80$rF10l%-!)) ((eq skk-henkan-mode 'on) ;; $B@\F,8l$N=hM}(B (skk-kana-cleanup 'force) (insert-and-inherit ?>) (skk-set-marker skk-henkan-end-point (point)) (setq skk-henkan-count 0 skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point (point)) skk-prefix "") (skk-henkan)) (t ;; (skk-abbrev-mode 1)))) ((and (not (eq char next)) (memq char skk-nicola-prefix-suffix-chars) (memq next skk-nicola-prefix-suffix-chars)) ;; [sl] suffix $B$N(B $BF~NO(B (cond ((eq skk-henkan-mode 'active) ;; $B@\Hx8l$N=hM}(B (skk-kakutei) (let (skk-kakutei-history) (skk-set-henkan-point-subr)) (insert-and-inherit ?>)) ((eq skk-henkan-mode 'on) ;; $B@\F,8l$N=hM}(B (skk-kana-cleanup 'force) (insert-and-inherit ?>) (skk-set-marker skk-henkan-end-point (point)) (setq skk-henkan-count 0 skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point (point)) skk-prefix "") (skk-henkan)))) ((and (not (eq char next)) (memq char skk-nicola-abbrev-chars) (memq next skk-nicola-abbrev-chars)) ;; [gh] (skk-kakutei) (skk-abbrev-mode 1)) ((and (not (eq char next)) (memq char skk-nicola-toggle-kana-chars) (memq next skk-nicola-toggle-kana-chars)) ;; [dk] (skk-toggle-kana 1)) (t ;; [$BJ8;z(B $BJ8;z(B] (let ((str (skk-nicola-insert-kana char skk-nicola-plain-rule arg))) (when (and skk-isearch-switch (not skk-henkan-mode)) (setq isearch-cmds (cons (cond ((vectorp (car isearch-cmds)) (let ((cmds (copy-sequence (car isearch-cmds)))) (aset cmds 0 (concat (aref (car isearch-cmds) 0) str)) (aset cmds 1 (concat (aref (car isearch-cmds) 1) str)) cmds)) (t (nconc (list (concat (caar isearch-cmds) str) (concat (cadar isearch-cmds) str)) (cddar isearch-cmds)))) isearch-cmds)))) (unless (and (< 1 skk-nicola-interval) (eq next char)) ;; $BC1FHBG80$rF10l%-!l9g$O$=$N?t$@$1J8;zNs$rO"7k$7$FF~NO$9$k!#(B" (let* ((el (cadr (assq char rule))) (str (when el (cond ((stringp el) el) ((not (listp el)) nil) (skk-katakana (car el)) (t (cdr el))))) (fun (when (and el (symbolp el)) el)) (arg (prefix-numeric-value arg))) ;; (when str (if (symbolp str) (setq fun str str nil) (skk-cancel-undo-boundary) (skk-insert-str (setq str (make-string arg (string-to-char str)))))) ;; (when fun (funcall fun arg)) ;; (cond (skk-nicola-okuri-flag (skk-nicola-process-okuri)) ((eq skk-henkan-mode 'active) (skk-kakutei))) ;; $B2?$+$K;H$&$3$H$,$"$k$+$b$7$l$J$$$N$G!"(B ;; STR $B$rJV$7$F$*$/!#(B str)) (defun skk-nicola-process-okuri () "$BAw$j3+;O$NI8<1$K$h$jAw$j3+;OE@$rG'<1$7!"Aw$j$"$jJQ49$r3+;O$9$k!#(B" (let ((okuri (buffer-substring-no-properties (1+ skk-nicola-okuri-flag) (point))) tag) (unless (and (not (eq skk-nicola-okuri-style 'nicola-skk)) (member okuri '("$B$C(B" "$B%C(B"))) (skk-save-point (goto-char skk-nicola-okuri-flag) (when (eq (following-char) ?*) (delete-char 1)) (backward-char 1) (when (member (buffer-substring-no-properties (point) (marker-position skk-nicola-okuri-flag)) '("$B$C(B" "$B%C(B")) (setq tag 'no-sokuon))) (skk-kanagaki-set-okurigana tag)))) (defun skk-nicola-set-okuri-flag () "$BAw$j3+;OE@$r(B marker $B$GI8<1$7!"Aw$j$"$jJQ49$NBT$A>uBV$KF~$k!#(B `*' $B$rA^F~$9$k$3$H$GI8<1$9$k!#(B" (interactive) (when (eq skk-henkan-mode 'on) ;; $B"&%b!<%I$N$H$-$@$15!G=$9$k!#(B (let ((pt (point))) (unless (and (string= "*" (buffer-substring-no-properties (1- pt) pt)) (markerp skk-nicola-okuri-flag)) ;; $B4{$KI8<1:Q$_$J$i2?$b$7$J$$!#(B (skk-set-marker skk-nicola-okuri-flag pt) (insert-and-inherit "*"))))) (defun skk-nicola-space-function (&optional arg parg) "$B?F;X1&%-!uBV$r4IM}$9$k!#(B" (when (or (and (markerp skk-nicola-okuri-flag) (<= (point) (marker-position skk-nicola-okuri-flag))) (not (eq skk-henkan-mode 'on))) (setq skk-nicola-okuri-flag nil))) (defadvice skk-kakutei (before skk-nicola-update-flag activate) "$BAw$jBT$A>uBV$r4IM}$9$k!#(B" (when (and skk-j-mode (eq skk-henkan-mode 'on) (markerp skk-nicola-okuri-flag)) ;; $B3NDj$9$k$H$-$OAw$j3+;O$NI8<1$r>C$9!#(B (skk-save-point (goto-char skk-nicola-okuri-flag) (when (eq ?* (following-char)) (delete-char 1)))) ;; (setq skk-nicola-okuri-flag nil)) (defadvice skk-previous-candidate (before skk-nicola-update-flag activate) "$BAw$jBT$A>uBV$r4IM}$9$k!#(B" (when (or (and (markerp skk-nicola-okuri-flag) (<= (point) (marker-position skk-nicola-okuri-flag))) (not (eq skk-henkan-mode 'on))) (setq skk-nicola-okuri-flag nil))) (defadvice skk-insert (around skk-nicola-workaround activate) ;; (let* ((list (symbol-value (intern (format "skk-%s-plain-rule-list" skk-kanagaki-keyboard-type)))) (cell1 (rassoc '("$B!"(B") list)) (cell2 (rassoc '("$B!#(B") list)) marker) (cond ((and (eq skk-kanagaki-state 'kana) skk-j-mode (or (eq (skk-last-command-char) (car cell1)) (eq (skk-last-command-char) (car cell2))) skk-henkan-mode) ;; $B$J$<$+$3$1$k!#860x2rL@Cf!#(B (cond ((not (eq skk-henkan-mode 'active)) (setq marker skk-henkan-start-point) (skk-kakutei) ad-do-it (unless (or (string= (char-to-string (char-before)) (cadr cell1)) (string= (char-to-string (char-before)) (cadr cell2))) (skk-save-point (goto-char marker) (skk-set-henkan-point-subr)))) (t (skk-kakutei) ad-do-it))) (t ad-do-it)))) (defadvice skk-isearch-setup-keymap (before skk-nicola-workaround activate) "$B?F;X%-!<$G%5!<%A$,=*N;$7$F$7$^$o$J$$$h$&$K$9$k!#(B" (let ((keys (append skk-nicola-lshift-keys skk-nicola-rshift-keys))) (while keys (define-key (ad-get-arg 0) (car keys) 'skk-isearch-wrapper) (setq keys (cdr keys))))) (defadvice isearch-char-to-string (around skk-nicola-workaround activate) "$B%(%i!<$,=P$k$H8!:w$,CfCG$7$F;H$$?I$$$N$G!"L[$i$;$k!#(B" (cond ((and skk-use-kana-keyboard (featurep 'skk-isearch) (with-current-buffer (get-buffer-create skk-isearch-working-buffer) skk-mode)) (ignore-errors ad-do-it)) (t ad-do-it))) (put 'skk-nicola-insert 'isearch-command t) (put 'skk-nicola-self-insert-lshift 'isearch-command t) (put 'skk-nicola-self-insert-rshift 'isearch-command t) (provide 'skk-nicola) ;;; skk-nicola.el ends here ddskk-15.2/nicola/skk-oasys.el0000644000570400056700000002505711471027637016336 0ustar kitamotoopenlab;;; skk-oasys.el --- SKK $B$K(B OASYS $BIwF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B $BIY;NDL$N%o!<%I%W%m%;%C%5(B OASYS $BIw$N%-!" nil ("$B%](B" . "$B$](B")) ("?" nil "$B!&(B")) "$BF|K\8l(B 106 $B%-!<%\!<%I$G(B OASYS $BIwF~NO$r$9$k$?$a$N4pK\%k!<%k!#(B") (defconst skk-oasys-keymap-display 'dummy "$B0J2<$O!"F|K\8l(B 106 $B%-!<%\!<%I$G(B OASYS $BIwF~NO$r$9$k$?$a$N%-!C("(B $B('(!(!(+(!(!(+(!(!(+(!(!(+(!(!()(B $B('(!(!(+(!(!(+(!(!(+(!(!(+(!(!(+(!(!(+(!(!(%(B $B("!%$%("$S!<("$:$m("$V$d("$Y$#("(B $B("$W$L("$>$f("$Z$`("$\$o("!+$)("!@!!("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B\\ $B!o("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) \($BC"$72<$+$i(B 2 $BNs$a$N1&$N(B 2 $B$D$N%-!<$O$=$l$>$l8eB`%-!C%-!<$G$"$k$3$H$r(B $B0UL#$7$^$9!#(B) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-oasys-plain-rule-list' `skk-oasys-lshift-rule-list' `skk-oasys-rshift-rule-list' ") (defvar skk-oasys-plain-rule-list '((?1 "$B#1(B") (?2 "$B#2(B") (?3 "$B#3(B") (?4 "$B#4(B") (?5 "$B#5(B") ;; (?6 "$B#6(B") (?7 "$B#7(B") (?8 "$B#8(B") (?9 "$B#9(B") (?0 "$B#0(B") (?- "$B!](B") (?^ ("$B!v(B" ."$B!'(B")) (?\\ "$B!o(B") ;; (?q "$B!#(B") (?w ("$B%q(B" . "$B$+(B")) (?e ("$B%u(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?@ "$B!"(B") ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%v(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%p(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-oasys-rshift-rule-list '((?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!J(B") (?9 "$B!K(B") (?0 "$B!X(B") (?- "$B!Y(B") (?^ "$B!!(B") (?\\ "$B!!(B") ;; (?q ("$B%!(B" . skk-kanagaki-handakuten)) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?@ ("$B!"(B" . "$B!!(B")) ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) ;; (?z ("$B%%(B" . "$B!%(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B!&(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-oasys-lshift-rule-list '((?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!J(B") (?9 "$B!K(B") (?0 "$B!X(B") (?- "$B!Y(B") (?^ ("$B!!(B" . "$B!-(B")) (?\\ ("$B!!(B" . "$B!@(B")) ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%D(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?@ "$B!!(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; ("$B%C(B" . "$B$C(B")) ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B!!(B" . skk-kanagaki-dakuten)) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (define-key skk-j-mode-map ":" 'skk-kanagaki-bs) (define-key skk-j-mode-map "]" 'skk-kanagaki-esc)) (provide 'skk-oasys) ;;; skk-oasys.el ends here ddskk-15.2/nicola/skk-omelet-colemak.el0000644000570400056700000002300712322425013020051 0ustar kitamotoopenlab;;; skk-omelet-colemak.el --- SKK $B$K(B omelet (Colemak) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J$K=`5r$7$?(B omelet $BFH<+(B Colemak $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BK $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-omelet-colemak-plain-rule-list' `skk-omelet-colemak-lshift-rule-list' `skk-omelet-colemak-rshift-rule-list' ") (defvar skk-omelet-colemak-plain-rule-list '((?\` "$B!.(B") ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?= "$B!a(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?f ("$B%?(B" . "$B$?(B")) (?p ("$B%3(B" . "$B$3(B")) (?g ("$B%5(B" . "$B$5(B")) ;; (?j ("$B%i(B" . "$B$i(B")) (?l ("$B%A(B" . "$B$A(B")) (?u ("$B%/(B" . "$B$/(B")) (?y ("$B%D(B" . "$B$D(B")) (?\; "$B!"(B") (?\[ "$B!"(B") (?\] skk-kanagaki-dakuten) (?\\ "$B!o(B") ;; (?a ("$B%&(B" . "$B$&(B")) (?r ("$B%7(B" . "$B$7(B")) (?s ("$B%F(B" . "$B$F(B")) (?t ("$B%1(B" . "$B$1(B")) (?d ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?n ("$B%H(B" . "$B$H(B")) (?e ("$B%-(B" . "$B$-(B")) (?i ("$B%$(B" . "$B$$(B")) (?o ("$B%s(B" . "$B$s(B")) (?\' "$B!G(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?k ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-omelet-colemak-rshift-rule-list '((?` "$B%u(B") ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!H(B") (?9 "$B!J(B") (?0 "$B!K(B") (?- "$B!X(B") (?= "$B!Y(B") ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?f ("$B%@(B" . "$B$@(B")) (?p ("$B%4(B" . "$B$4(B")) (?g ("$B%6(B" . "$B$6(B")) ;; (?j ("$B%h(B" . "$B$h(B")) (?l ("$B%K(B" . "$B$K(B")) (?u ("$B%k(B" . "$B$k(B")) (?y ("$B%^(B" . "$B$^(B")) (?\; ("$B%'(B" . "$B$'(B")) (?\[ "$B!7(B") (?\] skk-kanagaki-handakuten) (?\\ "$B!C(B") ;; (?a "$B%t(B") (?r ("$B%8(B" . "$B$8(B")) (?s ("$B%G(B" . "$B$G(B")) (?t ("$B%2(B" . "$B$2(B")) (?d ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?n ("$B%*(B" . "$B$*(B")) (?e ("$B%N(B" . "$B$N(B")) (?i ("$B%g(B" . "$B$g(B")) (?o ("$B%C(B" . "$B$C(B")) (?' "$B!F(B") ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?k ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-omelet-colemak-lshift-rule-list '((?\` "$B!1(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!N(B") (?7 "$B!u(B") (?8 "$B!I(B") (?9 "$B!Z(B") (?0 "$B![(B") (?- "$B!D(B") (?= "$B!\(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?f ("$B%j(B" . "$B$j(B")) (?p ("$B%c(B" . "$B$c(B")) (?g ("$B%l(B" . "$B$l(B")) ;; (?j ("$B%Q(B" . "$B$Q(B")) (?l ("$B%B(B" . "$B$B(B")) (?u ("$B%0(B" . "$B$0(B")) (?y ("$B%E(B" . "$B$E(B")) (?\; ("$B%T(B" . "$B$T(B")) (?\[ "$B!P(B") (?\] "$B!Q(B") (?\\ "$B!d(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?r ("$B%"(B" . "$B$"(B")) (?s ("$B%J(B" . "$B$J(B")) (?t ("$B%e(B" . "$B$e(B")) (?d ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?n ("$B%I(B" . "$B$I(B")) (?e ("$B%.(B" . "$B$.(B")) (?i ("$B%](B" . "$B$](B")) (?o "$B!((B") (?' "$B!'(B") ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?k ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map "'" 'skk-kanagaki-bs)))) (provide 'skk-omelet-colemak) ;;; skk-omelet-colemak.el ends here ddskk-15.2/nicola/skk-omelet-dvorak.el0000644000570400056700000002267211471027637017751 0ustar kitamotoopenlab;;; skk-omelet-dvorak.el --- SKK $B$K(B omelet (Dvorak) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J$K=`5r$7$?(B omelet $BFH<+(B Dvorak $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(B; $B!%("(BQ $B$R("(BJ $B$9("(BK $B$U("(BX $B$X("(B $B("(BB $B$a("(BM $B$=("(BW $B$M("(BV $B$[("(BZ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-omelet-dvorak-plain-rule-list' `skk-omelet-dvorak-lshift-rule-list' `skk-omelet-dvorak-rshift-rule-list' ") (defvar skk-omelet-dvorak-plain-rule-list '((?` "$B!.(B") ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?\[ "$B!N(B") (?\] "$B!O(B") (?\\ "$B!o(B") ;; (?' "$B!#(B") (?, ("$B%+(B" . "$B$+(B")) (?. ("$B%?(B" . "$B$?(B")) (?p ("$B%3(B" . "$B$3(B")) (?y ("$B%5(B" . "$B$5(B")) ;; (?f ("$B%i(B" . "$B$i(B")) (?g ("$B%A(B" . "$B$A(B")) (?c ("$B%/(B" . "$B$/(B")) (?r ("$B%D(B" . "$B$D(B")) (?l "$B!$(B") (?/ "$B!"(B") (?= skk-kanagaki-dakuten) ;; (?a ("$B%&(B" . "$B$&(B")) (?o ("$B%7(B" . "$B$7(B")) (?e ("$B%F(B" . "$B$F(B")) (?u ("$B%1(B" . "$B$1(B")) (?i ("$B%;(B" . "$B$;(B")) ;; (?d ("$B%O(B" . "$B$O(B")) (?h ("$B%H(B" . "$B$H(B")) (?t ("$B%-(B" . "$B$-(B")) (?n ("$B%$(B" . "$B$$(B")) (?s ("$B%s(B" . "$B$s(B")) (?- "$B!](B") ;; (?\; "$B!%(B") (?q ("$B%R(B" . "$B$R(B")) (?j ("$B%9(B" . "$B$9(B")) (?k ("$B%U(B" . "$B$U(B")) (?x ("$B%X(B" . "$B$X(B")) ;; (?b ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?w ("$B%M(B" . "$B$M(B")) (?v ("$B%[(B" . "$B$[(B")) (?z "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-omelet-dvorak-rshift-rule-list '((?` ("$B%u(B" . "$B!1(B")) ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!H(B") (?7 "$B!I(B") (?8 "$B!v(B") (?9 "$B!J(B") (?0 "$B!K(B") (?\[ "$B!X(B") (?\] "$B!Y(B") (?\\ "$B!@(B") ;; (?' ("$B%p(B" . "$B$p(B")) (?, ("$B%,(B" . "$B$,(B")) (?. ("$B%@(B" . "$B$@(B")) (?p ("$B%4(B" . "$B$4(B")) (?y ("$B%6(B" . "$B$6(B")) ;; (?f ("$B%h(B" . "$B$h(B")) (?g ("$B%K(B" . "$B$K(B")) (?c ("$B%k(B" . "$B$k(B")) (?r ("$B%^(B" . "$B$^(B")) (?l ("$B%'(B" . "$B$'(B")) (?/ "$B!7(B") (?= skk-kanagaki-handakuten) ;; (?a "$B%t(B") (?o ("$B%8(B" . "$B$8(B")) (?e ("$B%G(B" . "$B$G(B")) (?u ("$B%2(B" . "$B$2(B")) (?i ("$B%<(B" . "$B$<(B")) ;; (?d ("$B%_(B" . "$B$_(B")) (?h ("$B%*(B" . "$B$*(B")) (?t ("$B%N(B" . "$B$N(B")) (?n ("$B%g(B" . "$B$g(B")) (?s ("$B%C(B" . "$B$C(B")) (?- "$B!D(B") ;; (?\; ("$B%q(B" . "$B$q(B")) (?q ("$B%S(B" . "$B$S(B")) (?j ("$B%:(B" . "$B$:(B")) (?k ("$B%V(B" . "$B$V(B")) (?x ("$B%Y(B" . "$B$Y(B")) ;; (?b ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?w ("$B%`(B" . "$B$`(B")) (?v ("$B%o(B" . "$B$o(B")) (?z ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-omelet-dvorak-lshift-rule-list '((?` "$B!1(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!H(B") (?7 ("$B!I(B" . "$B!u(B")) (?8 "$B!\(B") (?9 "$B!Z(B") (?0 "$B![(B") (?\[ "$B!D(B") (?\] "$B!\(B") (?\\ "$B!C(B") ;; (?' ("$B%!(B" . "$B$!(B")) (?, ("$B%((B" . "$B$((B")) (?. ("$B%j(B" . "$B$j(B")) (?p ("$B%c(B" . "$B$c(B")) (?y ("$B%l(B" . "$B$l(B")) ;; (?f ("$B%Q(B" . "$B$Q(B")) (?g ("$B%B(B" . "$B$B(B")) (?c ("$B%0(B" . "$B$0(B")) (?r ("$B%E(B" . "$B$E(B")) (?l ("$B%T(B" . "$B$T(B")) (?/ "$B!?(B") (?= "$B!a(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?o ("$B%"(B" . "$B$"(B")) (?e ("$B%J(B" . "$B$J(B")) (?u ("$B%e(B" . "$B$e(B")) (?i ("$B%b(B" . "$B$b(B")) ;; (?d ("$B%P(B" . "$B$P(B")) (?h ("$B%I(B" . "$B$I(B")) (?t ("$B%.(B" . "$B$.(B")) (?n ("$B%](B" . "$B$](B")) (?s "$B%v(B") (?- "$B!'(B") ;; (?\; ("$B%%(B" . "$B$%(B")) (?q "$B!<(B") (?j ("$B%m(B" . "$B$m(B")) (?k ("$B%d(B" . "$B$d(B")) (?x ("$B%#(B" . "$B$#(B")) ;; (?b ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?w ("$B%Z(B" . "$B$Z(B")) (?v ("$B%\(B" . "$B$\(B")) (?z ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (provide 'skk-omelet-dvorak) ;;; skk-omelet-dvorak.el ends here ddskk-15.2/nicola/skk-omelet-jis.el0000644000570400056700000002342011471027637017240 0ustar kitamotoopenlab;;; skk-omelet-jis.el --- SKK $B$K(B omelet (JIS) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J$K=`5r$7$?(B omelet $BFH<+(B JIS $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("!2!G("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B\\ $B!o("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-omelet-jis-plain-rule-list' `skk-omelet-jis-lshift-rule-list' `skk-omelet-jis-rshift-rule-list' ") (defvar skk-omelet-jis-plain-rule-list '((?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?^ "$B!9(B") (?\\ "$B!o(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?e ("$B%?(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?@ "$B!"(B") (?\[ skk-kanagaki-dakuten) ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%1(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%$(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) (?: "$B!'(B") (?\] "$B!D(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-omelet-jis-rshift-rule-list '((?1 "$B!*(B") (?2 "$B!H(B") (?3 "$B!I(B") (?4 "$B!t(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!J(B") (?9 "$B!K(B") (?0 "$B!X(B") (?- "$B!Y(B") (?^ ("$B!0(B" . "$B!F(B")) (?\\ ("$B!C(B" . "$B!G(B")) ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?@ "$B!w(B") (?\[ skk-kanagaki-handakuten) ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) (?: "$B!((B") (?\] "$B!=(B") ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-omelet-jis-lshift-rule-list '((?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!Z(B") (?9 "$B![(B") (?0 "$B!P(B") (?- "$B!Q(B") (?^ "$B!a(B") (?\\ "$B!2(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%E(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?@ "$B!_(B") (?\[ "$B!7(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; "$B%v(B") (?: ("$B%u(B" . "$B!v(B")) (?\] "$B!\(B") ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map ":" 'skk-kanagaki-bs) (define-key skk-j-mode-map "]" 'skk-kanagaki-esc)))) (provide 'skk-omelet-jis) ;;; skk-omelet-jis.el ends here ddskk-15.2/nicola/skk-omelet-us.el0000644000570400056700000002271111471027637017104 0ustar kitamotoopenlab;;; skk-omelet-us.el --- SKK $B$K(B omelet (US) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J$K=`5r$7$?(B omelet $BFH<+(B US $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-omelet-us-plain-rule-list' `skk-omelet-us-lshift-rule-list' `skk-omelet-us-rshift-rule-list' ") (defvar skk-omelet-us-plain-rule-list '((?\` ("$B!'(B" . "$B!.(B")) ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?= "$B!a(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?e ("$B%?(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?\[ "$B!"(B") (?\] skk-kanagaki-dakuten) (?\\ "$B!o(B") ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%1(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%$(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) (?' "$B!G(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-omelet-us-rshift-rule-list '((?` "$B%u(B") ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!H(B") (?9 "$B!J(B") (?0 "$B!K(B") (?- "$B!X(B") (?= "$B!Y(B") ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?\[ "$B!7(B") (?\] skk-kanagaki-handakuten) (?\\ "$B!@(B") ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) (?' "$B!F(B") ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-omelet-us-lshift-rule-list '((?\` "$B!1(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!N(B") (?7 "$B!u(B") (?8 "$B!I(B") (?9 "$B!Z(B") (?0 "$B![(B") (?- "$B!D(B") (?= "$B!\(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%E(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?\[ "$B!P(B") (?\] "$B!Q(B") (?\\ "$B!C(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; "$B%v(B") (?' "$B!'(B") ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map "'" 'skk-kanagaki-bs)))) (provide 'skk-omelet-us) ;;; skk-omelet-us.el ends here ddskk-15.2/patches/0000755000570400056700000000000012434434722014236 5ustar kitamotoopenlabddskk-15.2/patches/README.ja0000644000570400056700000000104311434705414015503 0ustar kitamotoopenlab[emacs22-gtk-fix-dynamic-menus.diff] [emacs23_1-gtk-fix-dynamic-menus.diff] GTK 2.18 $B0J9_$H(B Emacs $B$NAH9g$o$;$K$F!"%a%K%e!<$,99?7$5$l$J$$LdBj$KBP$9(B $B$k%Q%C%A!#=$@5A0$O(B SKK $B$N%a%K%e!<$,I=<($5$l$J$$!#$=$l$>$l(B Emacs 22 $BMQ!"(B Emacs 23.1 $BMQ!#(B Cf. http://debbugs.gnu.org/cgi/bugreport.cgi?bug=4122 $BE>:\85(B Ubuntu $B$N(B diff $B$h$j(B http://archive.ubuntu.com/ubuntu/pool/universe/e/emacs22/emacs22_22.2-0ubuntu9.diff.gz http://archive.ubuntu.com/ubuntu/pool/main/e/emacs23/emacs23_23.1+1-4ubuntu7.diff.gz ddskk-15.2/patches/emacs22-gtk-fix-dynamic-menus.diff0000644000570400056700000001271011433473760022446 0ustar kitamotoopenlab* Emacs should properly render dynamically generated menus. Patch: fix-dynamic-menus.diff Originally-reported-by: Baylis Shanks Date: Sat, 10 Oct 2009 22:15:05 UTC Added-by: Rob Browning Backported-by: Reinhard Tartler Status: incorporated upstream Bug: 550541 This Debian patch is taken from this upstream commit: commit 3715ffe3e3b2c64d113bf26d94aab559f8559e83 Author: Jan Djärv Date: Wed Sep 2 17:03:20 2009 +0000 It was backported to emacs22 for the ubuntu package --- a/src/xfns.c +++ b/src/xfns.c @@ -369,10 +369,7 @@ x_any_window_to_frame (dpyinfo, wdesc) #ifdef USE_GTK GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); if (gwdesc != 0 - && (gwdesc == x->widget - || gwdesc == x->edit_widget - || gwdesc == x->vbox_widget - || gwdesc == x->menubar_widget)) + && gtk_widget_get_toplevel (gwdesc) == x->widget) found = f; #else if (wdesc == XtWindow (x->widget) @@ -393,54 +390,6 @@ x_any_window_to_frame (dpyinfo, wdesc) return found; } -/* Likewise, but exclude the menu bar widget. */ - -struct frame * -x_non_menubar_window_to_frame (dpyinfo, wdesc) - struct x_display_info *dpyinfo; - int wdesc; -{ - Lisp_Object tail, frame; - struct frame *f; - struct x_output *x; - - if (wdesc == None) return 0; - - for (tail = Vframe_list; GC_CONSP (tail); tail = XCDR (tail)) - { - frame = XCAR (tail); - if (!GC_FRAMEP (frame)) - continue; - f = XFRAME (frame); - if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo) - continue; - x = f->output_data.x; - /* This frame matches if the window is any of its widgets. */ - if (x->hourglass_window == wdesc) - return f; - else if (x->widget) - { -#ifdef USE_GTK - GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); - if (gwdesc != 0 - && (gwdesc == x->widget - || gwdesc == x->edit_widget - || gwdesc == x->vbox_widget)) - return f; -#else - if (wdesc == XtWindow (x->widget) - || wdesc == XtWindow (x->column_widget) - || wdesc == XtWindow (x->edit_widget)) - return f; -#endif - } - else if (FRAME_X_WINDOW (f) == wdesc) - /* A tooltip frame. */ - return f; - } - return 0; -} - /* Likewise, but consider only the menu bar widget. */ struct frame * @@ -468,15 +417,14 @@ x_menubar_window_to_frame (dpyinfo, wdes if (x->menubar_widget) { GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); - int found = 0; - BLOCK_INPUT; + /* This gives false positives, but the rectangle check in xterm.c + where this is called takes care of that. */ if (gwdesc != 0 && (gwdesc == x->menubar_widget - || gtk_widget_get_parent (gwdesc) == x->menubar_widget)) - found = 1; - UNBLOCK_INPUT; - if (found) return f; + || gtk_widget_is_ancestor (x->menubar_widget, gwdesc) + || gtk_widget_is_ancestor (gwdesc, x->menubar_widget))) + return f; } #else if (x->menubar_widget --- a/src/xterm.c +++ b/src/xterm.c @@ -110,8 +110,6 @@ extern void xlwmenu_redisplay P_ ((Widge #if defined (USE_X_TOOLKIT) || defined (USE_GTK) extern void free_frame_menubar P_ ((struct frame *)); -extern struct frame *x_menubar_window_to_frame P_ ((struct x_display_info *, - int)); #endif #ifdef USE_X_TOOLKIT @@ -144,11 +142,6 @@ extern void _XEditResCheckMessages (); #endif /* USE_X_TOOLKIT */ -#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) -#define x_any_window_to_frame x_window_to_frame -#define x_top_window_to_frame x_window_to_frame -#endif - #ifdef USE_X_TOOLKIT #include "widget.h" #ifndef XtNinitialState @@ -3788,7 +3781,14 @@ XTmouse_position (fp, insist, bar_window if (child == None || child == win) break; - +#ifdef USE_GTK + /* We don't wan't to know the innermost window. We + want the edit window. For non-Gtk+ the innermost + window is the edit window. For Gtk+ it might not + be. It might be the tool bar for example. */ + if (x_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win)) + break; +#endif win = child; parent_x = win_x; parent_y = win_y; @@ -3805,8 +3805,14 @@ XTmouse_position (fp, insist, bar_window parent_{x,y} are invalid, but that's okay, because we'll never use them in that case.) */ +#ifdef USE_GTK + /* We don't wan't to know the innermost window. We + want the edit window. */ + f1 = x_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win); +#else /* Is win one of our frames? */ f1 = x_any_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win); +#endif #ifdef USE_X_TOOLKIT /* If we end up with the menu bar window, say it's not --- a/src/xterm.h +++ b/src/xterm.h @@ -414,7 +414,7 @@ extern struct frame *x_window_to_frame P #if defined (USE_X_TOOLKIT) || defined (USE_GTK) extern struct frame *x_any_window_to_frame P_ ((struct x_display_info *, int)); -extern struct frame *x_non_menubar_window_to_frame P_ ((struct x_display_info *, int)); +extern struct frame *x_menubar_window_to_frame P_ ((struct x_display_info *, int)); extern struct frame *x_top_window_to_frame P_ ((struct x_display_info *, int)); #endif ddskk-15.2/patches/emacs23_1-gtk-fix-dynamic-menus.diff0000644000570400056700000001410411433473760022666 0ustar kitamotoopenlab* Emacs should properly render dynamically generated menus. Patch: fix-dynamic-menus.diff Originally-reported-by: Baylis Shanks Date: Sat, 10 Oct 2009 22:15:05 UTC Added-by: Rob Browning Status: incorporated upstream Bug: 550541 This Debian patch is taken from this upstream commit: commit 3715ffe3e3b2c64d113bf26d94aab559f8559e83 Author: Jan Djärv Date: Wed Sep 2 17:03:20 2009 +0000 Index: b/src/ChangeLog =================================================================== --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,19 @@ +2009-09-02 Jan Djärv + + * xterm.h: Rename x_non_menubar_window_to_frame to + x_menubar_window_to_frame + + * xterm.c: Remove declarations also in xterm.h + (XTmouse_position): Do not return valid positions + for clicks in the menubar and the toolbar for Gtk+. + + * xfns.c (x_any_window_to_frame): Assume less about Gtk+ internals, + if the widget for the event has the same top level as a frame, + return the frame. + (x_menubar_window_to_frame): Detect menu bar even with Gtk+ + internal windows, bug #4122. + (x_non_menubar_window_to_frame): Remove. + 2009-07-29 Chong Yidong * Version 23.1 released. Index: b/src/xfns.c =================================================================== --- a/src/xfns.c +++ b/src/xfns.c @@ -374,10 +374,7 @@ #ifdef USE_GTK GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); if (gwdesc != 0 - && (gwdesc == x->widget - || gwdesc == x->edit_widget - || gwdesc == x->vbox_widget - || gwdesc == x->menubar_widget)) + && gtk_widget_get_toplevel (gwdesc) == x->widget) found = f; #else if (wdesc == XtWindow (x->widget) @@ -398,54 +395,6 @@ return found; } -/* Likewise, but exclude the menu bar widget. */ - -struct frame * -x_non_menubar_window_to_frame (dpyinfo, wdesc) - struct x_display_info *dpyinfo; - int wdesc; -{ - Lisp_Object tail, frame; - struct frame *f; - struct x_output *x; - - if (wdesc == None) return 0; - - for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail)) - { - frame = XCAR (tail); - if (!FRAMEP (frame)) - continue; - f = XFRAME (frame); - if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo) - continue; - x = f->output_data.x; - /* This frame matches if the window is any of its widgets. */ - if (x->hourglass_window == wdesc) - return f; - else if (x->widget) - { -#ifdef USE_GTK - GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); - if (gwdesc != 0 - && (gwdesc == x->widget - || gwdesc == x->edit_widget - || gwdesc == x->vbox_widget)) - return f; -#else - if (wdesc == XtWindow (x->widget) - || wdesc == XtWindow (x->column_widget) - || wdesc == XtWindow (x->edit_widget)) - return f; -#endif - } - else if (FRAME_X_WINDOW (f) == wdesc) - /* A tooltip frame. */ - return f; - } - return 0; -} - /* Likewise, but consider only the menu bar widget. */ struct frame * @@ -473,15 +422,14 @@ if (x->menubar_widget) { GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); - int found = 0; - BLOCK_INPUT; + /* This gives false positives, but the rectangle check in xterm.c + where this is called takes care of that. */ if (gwdesc != 0 && (gwdesc == x->menubar_widget - || gtk_widget_get_parent (gwdesc) == x->menubar_widget)) - found = 1; - UNBLOCK_INPUT; - if (found) return f; + || gtk_widget_is_ancestor (x->menubar_widget, gwdesc) + || gtk_widget_is_ancestor (gwdesc, x->menubar_widget))) + return f; } #else if (x->menubar_widget Index: b/src/xterm.c =================================================================== --- a/src/xterm.c +++ b/src/xterm.c @@ -109,8 +109,6 @@ #if defined (USE_X_TOOLKIT) || defined (USE_GTK) extern void free_frame_menubar P_ ((struct frame *)); -extern struct frame *x_menubar_window_to_frame P_ ((struct x_display_info *, - int)); #endif #ifdef USE_X_TOOLKIT @@ -143,11 +141,6 @@ #endif /* USE_X_TOOLKIT */ -#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) -#define x_any_window_to_frame x_window_to_frame -#define x_top_window_to_frame x_window_to_frame -#endif - #ifdef USE_X_TOOLKIT #include "widget.h" #ifndef XtNinitialState @@ -3915,7 +3908,14 @@ if (child == None || child == win) break; - +#ifdef USE_GTK + /* We don't wan't to know the innermost window. We + want the edit window. For non-Gtk+ the innermost + window is the edit window. For Gtk+ it might not + be. It might be the tool bar for example. */ + if (x_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win)) + break; +#endif win = child; parent_x = win_x; parent_y = win_y; @@ -3932,8 +3932,14 @@ parent_{x,y} are invalid, but that's okay, because we'll never use them in that case.) */ +#ifdef USE_GTK + /* We don't wan't to know the innermost window. We + want the edit window. */ + f1 = x_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win); +#else /* Is win one of our frames? */ f1 = x_any_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win); +#endif #ifdef USE_X_TOOLKIT /* If we end up with the menu bar window, say it's not Index: b/src/xterm.h =================================================================== --- a/src/xterm.h +++ b/src/xterm.h @@ -374,7 +374,7 @@ #if defined (USE_X_TOOLKIT) || defined (USE_GTK) extern struct frame *x_any_window_to_frame P_ ((struct x_display_info *, int)); -extern struct frame *x_non_menubar_window_to_frame P_ ((struct x_display_info *, int)); +extern struct frame *x_menubar_window_to_frame P_ ((struct x_display_info *, int)); extern struct frame *x_top_window_to_frame P_ ((struct x_display_info *, int)); #endif ddskk-15.2/tut-code/0000755000570400056700000000000012434434722014333 5ustar kitamotoopenlabddskk-15.2/tut-code/README.tut0000644000570400056700000000105510656356414016034 0ustar kitamotoopenlab-*- text -*- $Date: 2007/08/08 15:11:08 $ $Id: README.tut,v 1.4 2007/08/08 15:11:08 skk-cvs Exp $ SKK-MK ¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ç¡¢ % ln -s tut-code/* . ¤·¤Æ¤«¤é make ¤·¤Æ²¼¤µ¤¤¡£symbolic link ¤Î¤Ê¤¤ OS ¤Î¾ì¹ç¤Ï¡¢¤³¤Î¥Õ¥©¥ë ¥À¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë¤ò°ì¤Ä¾å¤Î³¬Áؤ˥³¥Ô¡¼¤·¤Æ¤«¤é make ¤·¤Æ²¼¤µ¤¤¡£ ~/.skk ¤Ë¼¡¤Î¤è¤¦¤Ëµ­ºÜ¤·¤Þ¤¹¡£ (require 'skk-tutcdef) skk-tutcdef.el ¤ÎÆâÍÆ¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤¿¤¤¤È¤­¤Ï¡¢Î㤨¤Ð¡¢²¼µ­¤Î¤è¤¦¤Ë ¤·¤Þ¤¹¡£ (require 'skk-tutcdef) ;; your customizations... (setq skk-rom-kana-rule-list '(...)) [end of README] ddskk-15.2/tut-code/skk-def.el0000644000570400056700000002562410612545244016210 0ustar kitamotoopenlab;;; skk-def.el --- SKK default definition -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-def.el,v 1.9 2007/04/22 02:38:28 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2007/04/22 02:38:28 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; this file is to restore default setting for SKK. ;;; Code: (setq skk-start-henkan-char ?\040) (setq skk-rom-kana-base-rule-list '(("a" nil ("$B%"(B" . "$B$"(B")) ("bb" "b" ("$B%C(B" . "$B$C(B")) ("ba" nil ("$B%P(B" . "$B$P(B")) ("be" nil ("$B%Y(B" . "$B$Y(B")) ("bi" nil ("$B%S(B" . "$B$S(B")) ("bo" nil ("$B%\(B" . "$B$\(B")) ("bu" nil ("$B%V(B" . "$B$V(B")) ("bya" nil ("$B%S%c(B" . "$B$S$c(B")) ("bye" nil ("$B%S%'(B" . "$B$S$'(B")) ("byi" nil ("$B%S%#(B" . "$B$S$#(B")) ("byo" nil ("$B%S%g(B" . "$B$S$g(B")) ("byu" nil ("$B%S%e(B" . "$B$S$e(B")) ("cc" "c" ("$B%C(B" . "$B$C(B")) ("cha" nil ("$B%A%c(B" . "$B$A$c(B")) ("che" nil ("$B%A%'(B" . "$B$A$'(B")) ("chi" nil ("$B%A(B" . "$B$A(B")) ("cho" nil ("$B%A%g(B" . "$B$A$g(B")) ("chu" nil ("$B%A%e(B" . "$B$A$e(B")) ("cya" nil ("$B%A%c(B" . "$B$A$c(B")) ("cye" nil ("$B%A%'(B" . "$B$A$'(B")) ("cyi" nil ("$B%A%#(B" . "$B$A$#(B")) ("cyo" nil ("$B%A%g(B" . "$B$A$g(B")) ("cyu" nil ("$B%A%e(B" . "$B$A$e(B")) ("dd" "d" ("$B%C(B" . "$B$C(B")) ("da" nil ("$B%@(B" . "$B$@(B")) ("de" nil ("$B%G(B" . "$B$G(B")) ("dha" nil ("$B%G%c(B" . "$B$G$c(B")) ("dhe" nil ("$B%G%'(B" . "$B$G$'(B")) ("dhi" nil ("$B%G%#(B" . "$B$G$#(B")) ("dho" nil ("$B%G%g(B" . "$B$G$g(B")) ("dhu" nil ("$B%G%e(B" . "$B$G$e(B")) ("di" nil ("$B%B(B" . "$B$B(B")) ("do" nil ("$B%I(B" . "$B$I(B")) ("du" nil ("$B%E(B" . "$B$E(B")) ("dya" nil ("$B%B%c(B" . "$B$B$c(B")) ("dye" nil ("$B%B%'(B" . "$B$B$'(B")) ("dyi" nil ("$B%B%#(B" . "$B$B$#(B")) ("dyo" nil ("$B%B%g(B" . "$B$B$g(B")) ("dyu" nil ("$B%B%e(B" . "$B$B$e(B")) ("e" nil ("$B%((B" . "$B$((B")) ("ff" "f" ("$B%C(B" . "$B$C(B")) ("fa" nil ("$B%U%!(B" . "$B$U$!(B")) ("fe" nil ("$B%U%'(B" . "$B$U$'(B")) ("fi" nil ("$B%U%#(B" . "$B$U$#(B")) ("fo" nil ("$B%U%)(B" . "$B$U$)(B")) ("fu" nil ("$B%U(B" . "$B$U(B")) ("fya" nil ("$B%U%c(B" . "$B$U$c(B")) ("fye" nil ("$B%U%'(B" . "$B$U$'(B")) ("fyi" nil ("$B%U%#(B" . "$B$U$#(B")) ("fyo" nil ("$B%U%g(B" . "$B$U$g(B")) ("fyu" nil ("$B%U%e(B" . "$B$U$e(B")) ("gg" "g" ("$B%C(B" . "$B$C(B")) ("ga" nil ("$B%,(B" . "$B$,(B")) ("ge" nil ("$B%2(B" . "$B$2(B")) ("gi" nil ("$B%.(B" . "$B$.(B")) ("go" nil ("$B%4(B" . "$B$4(B")) ("gu" nil ("$B%0(B" . "$B$0(B")) ("gya" nil ("$B%.%c(B" . "$B$.$c(B")) ("gye" nil ("$B%.%'(B" . "$B$.$'(B")) ("gyi" nil ("$B%.%#(B" . "$B$.$#(B")) ("gyo" nil ("$B%.%g(B" . "$B$.$g(B")) ("gyu" nil ("$B%.%e(B" . "$B$.$e(B")) ;;("h" "" ("$B%*(B" . "$B$*(B")) ("ha" nil ("$B%O(B" . "$B$O(B")) ("he" nil ("$B%X(B" . "$B$X(B")) ("hi" nil ("$B%R(B" . "$B$R(B")) ("ho" nil ("$B%[(B" . "$B$[(B")) ("hu" nil ("$B%U(B" . "$B$U(B")) ("hya" nil ("$B%R%c(B" . "$B$R$c(B")) ("hye" nil ("$B%R%'(B" . "$B$R$'(B")) ("hyi" nil ("$B%R%#(B" . "$B$R$#(B")) ("hyo" nil ("$B%R%g(B" . "$B$R$g(B")) ("hyu" nil ("$B%R%e(B" . "$B$R$e(B")) ("i" nil ("$B%$(B" . "$B$$(B")) ("jj" "j" ("$B%C(B" . "$B$C(B")) ("ja" nil ("$B%8%c(B" . "$B$8$c(B")) ("je" nil ("$B%8%'(B" . "$B$8$'(B")) ("ji" nil ("$B%8(B" . "$B$8(B")) ("jo" nil ("$B%8%g(B" . "$B$8$g(B")) ("ju" nil ("$B%8%e(B" . "$B$8$e(B")) ("jya" nil ("$B%8%c(B" . "$B$8$c(B")) ("jye" nil ("$B%8%'(B" . "$B$8$'(B")) ("jyi" nil ("$B%8%#(B" . "$B$8$#(B")) ("jyo" nil ("$B%8%g(B" . "$B$8$g(B")) ("jyu" nil ("$B%8%e(B" . "$B$8$e(B")) ("kk" "k" ("$B%C(B" . "$B$C(B")) ("ka" nil ("$B%+(B" . "$B$+(B")) ("ke" nil ("$B%1(B" . "$B$1(B")) ("ki" nil ("$B%-(B" . "$B$-(B")) ("ko" nil ("$B%3(B" . "$B$3(B")) ("ku" nil ("$B%/(B" . "$B$/(B")) ("kya" nil ("$B%-%c(B" . "$B$-$c(B")) ("kye" nil ("$B%-%'(B" . "$B$-$'(B")) ("kyi" nil ("$B%-%#(B" . "$B$-$#(B")) ("kyo" nil ("$B%-%g(B" . "$B$-$g(B")) ("kyu" nil ("$B%-%e(B" . "$B$-$e(B")) ("ma" nil ("$B%^(B" . "$B$^(B")) ("me" nil ("$B%a(B" . "$B$a(B")) ("mi" nil ("$B%_(B" . "$B$_(B")) ("mo" nil ("$B%b(B" . "$B$b(B")) ("mu" nil ("$B%`(B" . "$B$`(B")) ("mya" nil ("$B%_%c(B" . "$B$_$c(B")) ("mye" nil ("$B%_%'(B" . "$B$_$'(B")) ("myi" nil ("$B%_%#(B" . "$B$_$#(B")) ("myo" nil ("$B%_%g(B" . "$B$_$g(B")) ("myu" nil ("$B%_%e(B" . "$B$_$e(B")) ("n" nil ("$B%s(B" . "$B$s(B")) ("n'" nil ("$B%s(B" . "$B$s(B")) ("na" nil ("$B%J(B" . "$B$J(B")) ("ne" nil ("$B%M(B" . "$B$M(B")) ("ni" nil ("$B%K(B" . "$B$K(B")) ("nn" nil ("$B%s(B" . "$B$s(B")) ("no" nil ("$B%N(B" . "$B$N(B")) ("nu" nil ("$B%L(B" . "$B$L(B")) ("nya" nil ("$B%K%c(B" . "$B$K$c(B")) ("nye" nil ("$B%K%'(B" . "$B$K$'(B")) ("nyi" nil ("$B%K%#(B" . "$B$K$#(B")) ("nyo" nil ("$B%K%g(B" . "$B$K$g(B")) ("nyu" nil ("$B%K%e(B" . "$B$K$e(B")) ("o" nil ("$B%*(B" . "$B$*(B")) ("pp" "p" ("$B%C(B" . "$B$C(B")) ("pa" nil ("$B%Q(B" . "$B$Q(B")) ("pe" nil ("$B%Z(B" . "$B$Z(B")) ("pi" nil ("$B%T(B" . "$B$T(B")) ("po" nil ("$B%](B" . "$B$](B")) ("pu" nil ("$B%W(B" . "$B$W(B")) ("pya" nil ("$B%T%c(B" . "$B$T$c(B")) ("pye" nil ("$B%T%'(B" . "$B$T$'(B")) ("pyi" nil ("$B%T%#(B" . "$B$T$#(B")) ("pyo" nil ("$B%T%g(B" . "$B$T$g(B")) ("pyu" nil ("$B%T%e(B" . "$B$T$e(B")) ("rr" "r" ("$B%C(B" . "$B$C(B")) ("ra" nil ("$B%i(B" . "$B$i(B")) ("re" nil ("$B%l(B" . "$B$l(B")) ("ri" nil ("$B%j(B" . "$B$j(B")) ("ro" nil ("$B%m(B" . "$B$m(B")) ("ru" nil ("$B%k(B" . "$B$k(B")) ("rya" nil ("$B%j%c(B" . "$B$j$c(B")) ("rye" nil ("$B%j%'(B" . "$B$j$'(B")) ("ryi" nil ("$B%j%#(B" . "$B$j$#(B")) ("ryo" nil ("$B%j%g(B" . "$B$j$g(B")) ("ryu" nil ("$B%j%e(B" . "$B$j$e(B")) ("ss" "s" ("$B%C(B" . "$B$C(B")) ("sa" nil ("$B%5(B" . "$B$5(B")) ("se" nil ("$B%;(B" . "$B$;(B")) ("sha" nil ("$B%7%c(B" . "$B$7$c(B")) ("she" nil ("$B%7%'(B" . "$B$7$'(B")) ("shi" nil ("$B%7(B" . "$B$7(B")) ("sho" nil ("$B%7%g(B" . "$B$7$g(B")) ("shu" nil ("$B%7%e(B" . "$B$7$e(B")) ("si" nil ("$B%7(B" . "$B$7(B")) ("so" nil ("$B%=(B" . "$B$=(B")) ("su" nil ("$B%9(B" . "$B$9(B")) ("sya" nil ("$B%7%c(B" . "$B$7$c(B")) ("sye" nil ("$B%7%'(B" . "$B$7$'(B")) ("syi" nil ("$B%7%#(B" . "$B$7$#(B")) ("syo" nil ("$B%7%g(B" . "$B$7$g(B")) ("syu" nil ("$B%7%e(B" . "$B$7$e(B")) ("tt" "t" ("$B%C(B" . "$B$C(B")) ("ta" nil ("$B%?(B" . "$B$?(B")) ("te" nil ("$B%F(B" . "$B$F(B")) ("tha" nil ("$B%F%!(B" . "$B$F$!(B")) ("the" nil ("$B%F%'(B" . "$B$F$'(B")) ("thi" nil ("$B%F%#(B" . "$B$F$#(B")) ("tho" nil ("$B%F%g(B" . "$B$F$g(B")) ("thu" nil ("$B%F%e(B" . "$B$F$e(B")) ("ti" nil ("$B%A(B" . "$B$A(B")) ("to" nil ("$B%H(B" . "$B$H(B")) ("tsu" nil ("$B%D(B" . "$B$D(B")) ("tu" nil ("$B%D(B" . "$B$D(B")) ("tya" nil ("$B%A%c(B" . "$B$A$c(B")) ("tye" nil ("$B%A%'(B" . "$B$A$'(B")) ("tyi" nil ("$B%A%#(B" . "$B$A$#(B")) ("tyo" nil ("$B%A%g(B" . "$B$A$g(B")) ("tyu" nil ("$B%A%e(B" . "$B$A$e(B")) ("u" nil ("$B%&(B" . "$B$&(B")) ("vv" "v" ("$B%C(B" . "$B$C(B")) ("va" nil ("$B%t%!(B" . "$B$&!+$!(B")) ("ve" nil ("$B%t%'(B" . "$B$&!+$'(B")) ("vi" nil ("$B%t%#(B" . "$B$&!+$#(B")) ("vo" nil ("$B%t%)(B" . "$B$&!+$)(B")) ("vu" nil ("$B%t(B" . "$B$&!+(B")) ("ww" "w" ("$B%C(B" . "$B$C(B")) ("wa" nil ("$B%o(B" . "$B$o(B")) ("we" nil ("$B%&%'(B" . "$B$&$'(B")) ("wi" nil ("$B%&%#(B" . "$B$&$#(B")) ("wo" nil ("$B%r(B" . "$B$r(B")) ("wu" nil ("$B%&(B" . "$B$&(B")) ("xx" "x" ("$B%C(B" . "$B$C(B")) ("xa" nil ("$B%!(B" . "$B$!(B")) ("xe" nil ("$B%'(B" . "$B$'(B")) ("xi" nil ("$B%#(B" . "$B$#(B")) ("xka" nil ("$B%u(B" . "$B$+(B")) ("xke" nil ("$B%v(B" . "$B$1(B")) ("xo" nil ("$B%)(B" . "$B$)(B")) ("xtsu" nil ("$B%C(B" . "$B$C(B")) ("xtu" nil ("$B%C(B" . "$B$C(B")) ("xu" nil ("$B%%(B" . "$B$%(B")) ("xwa" nil ("$B%n(B" . "$B$n(B")) ("xwe" nil ("$B%q(B" . "$B$q(B")) ("xwi" nil ("$B%p(B" . "$B$p(B")) ("xya" nil ("$B%c(B" . "$B$c(B")) ("xyo" nil ("$B%g(B" . "$B$g(B")) ("xyu" nil ("$B%e(B" . "$B$e(B")) ("yy" "y" ("$B%C(B" . "$B$C(B")) ("ya" nil ("$B%d(B" . "$B$d(B")) ("ye" nil ("$B%$%'(B" . "$B$$$'(B")) ("yo" nil ("$B%h(B" . "$B$h(B")) ("yu" nil ("$B%f(B" . "$B$f(B")) ("zz" "z" ("$B%C(B" . "$B$C(B")) ("z," nil "$B!E(B") ("z-" nil "$B!A(B") ("z." nil "$B!D(B") ("z/" nil "$B!&(B") ("z[" nil "$B!X(B") ("z]" nil "$B!Y(B") ("za" nil ("$B%6(B" . "$B$6(B")) ("ze" nil ("$B%<(B" . "$B$<(B")) ("zh" nil "$B"+(B") ("zi" nil ("$B%8(B" . "$B$8(B")) ("zj" nil "$B"-(B") ("zk" nil "$B",(B") ("zl" nil "$B"*(B") ("zo" nil ("$B%>(B" . "$B$>(B")) ("zu" nil ("$B%:(B" . "$B$:(B")) ("zya" nil ("$B%8%c(B" . "$B$8$c(B")) ("zye" nil ("$B%8%'(B" . "$B$8$'(B")) ("zyi" nil ("$B%8%#(B" . "$B$8$#(B")) ("zyo" nil ("$B%8%g(B" . "$B$8$g(B")) ("zyu" nil ("$B%8%e(B" . "$B$8$e(B")) ("." nil skk-current-kuten) ("," nil skk-current-touten) ("-" nil "$B!<(B") (":" nil "$B!'(B") (";" nil "$B!((B") ("?" nil "$B!)(B") ("[" nil "$B!V(B") ("]" nil "$B!W(B") ("l" nil skk-latin-mode) ("q" nil skk-toggle-kana) ("L" nil skk-jisx0208-latin-mode) ("Q" nil skk-set-henkan-point-subr) ("X" nil skk-purge-from-jisyo) ("/" nil skk-abbrev-mode) ("$" nil skk-display-code-for-char-at-point) ("@" nil skk-today) ("\\" nil skk-input-by-code-or-menu) )) (setq skk-rom-kana-rule-list '( ("hh" "h" ("$B%C(B" . "$B$C(B")) ("mm" "m" ("$B%s(B" . "$B$s(B")) )) (setq skk-try-completion-char ?\011) (provide 'skk-def) ;;; skk-def.el ends here ddskk-15.2/tut-code/skk-mkmgk.el0000644000570400056700000002271111425562260016552 0ustar kitamotoopenlab;;; skk-mkmgk.el --- Make Mazegaki dictionary from SKK-JISYO.* -*- coding: euc-jp -*- ;; Copyright (C) 2001 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-mkmgk.el,v 1.16 2010/08/02 15:30:56 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2010/08/02 15:30:56 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary ;; M-x skk-make-mazegaki-dic ¤·¤Æ½ÐÎϤµ¤ì¤¿¼­½ñ (²¼µ­¤ÎÎã¤Ç¤Ï TMP) ¤ò ;; ;; $ skkdic-expr TMP | skkdic-sort > NEWDICT ;; ;; ¤È²Ã¹©¤¹¤ë¤Èº®¤¼½ñ¤­ SKK ¼­½ñ (NEWDICT) ¤¬½ÐÍè¾å¤¬¤ê¤Þ¤¹¡£ ;; ;; ;; - search okuri-ari entries, too. ;; - fix a know bug below. ;; ;; ;; + ¤ªÍ·¤Ó /¤ªÍ·¤Ó/ fixed. ;; + ¤­¤ê¤¨ /Àڤ골/ÀÚ³¨/ ¢ª ¤­¤ê¤ê³¨ /Àڤ골/ ¤È¤ê¤¢¤¨¤º²¾Ì¾¤ò´Þ¤à¸õÊä¤Ï¼Î¤Æ¤ë¤³¤È¤Ë¤·¤Þ¤·¤¿¡£ ;; + ¤µ¤¯ /ºî/ºý/ºø/º÷/ºö/ºõ/ºô/ºó/ºò/ºñ/ºð/ºï/¿Ý/ ¢ª ¤µ /ºî/ fixed. ;; - ¤Ï¤ó²¾¤¯¤«¤¿¤«¤Ê /Ⱦ³ÑÊÒ²¾Ì¾/ ¤³¤ê¤ã¤É¤¦¤·¤è¤¦¤â¤Ê¤¤¤Ê (^^;; ;; - ¤¯¤µ¤ê /º¿/ ¢ª ¤¯º¿¤ê /º¿/ (·±ÆÉ¤ß¤Î°ìÉô¤Îʸ»ú¤¬²»ÆÉ¤ß¤Îʸ»ú¤ÈƱ°ì) ditto... ;;; Code: (eval-when-compile (require 'skk-macs)) (require 'skk) (defvar skk-mkmgk-region-limit 10000 "*¸¡º÷¥ê¡¼¥¸¥ç¥ó¤Î¥µ¥¤¥º¤¬¤³¤Î¿ô¤è¤ê¾®¤µ¤¤¾ì¹ç¤Ë¡¢¥Ð¥¤¥Ê¥ê¥µ¡¼¥Á¤ò»ß¤á¥ê¥Ë¥¢¥µ¡¼¥Á¤Ë°Ü¹Ô¤¹¤ë¡£ ¸Ä¿Í¼­½ñ¤ò²Ã¹©¤¹¤ë¾ì¹ç¤Ï¡¢0 ¤ËÀßÄꤹ¤ë¡£") ;;;###autoload (defun skk-make-mazegaki-dic (dic &optional nomsg) "SKK ·Á¼°¤Î¼­½ñ¤«¤é TUT-Code ¤Ê¤É¤Ç»È¤ï¤ì¤ì¤ëº®¤¼½ñ¤­¼­½ñ¤òºî¤ë¡£ ½ÐÎϤµ¤ì¤¿¼­½ñ (²¼µ­¤ÎÎã¤Ç¤Ï TMP) ¤ò $ skkdic-expr TMP | skkdic-sort > NEWDICT ¤È¤·¤Æ²Ã¹©¤¹¤ëɬÍפ¢¤ê¡£" (interactive "f¼­½ñ¥Õ¥¡¥¤¥ë:\nP ") (let ((cont t) (workbuf (get-buffer-create " *skkmkmgk working*")) max output ret) (unwind-protect (progn (while cont (setq output (read-file-name "¤É¤³¤Ë½ÐÎϤ·¤Þ¤¹¤«? " nil (convert-standard-filename "~/.skk-jisyo.tmp"))) (if (or (not (file-exists-p output)) (yes-or-no-p (format "%s ¤Ë¾å½ñ¤­¤·¤Æ¤è¤í¤·¤¤¤Ç¤¹¤«? " output))) (setq cont nil))) (with-current-buffer workbuf (erase-buffer)) (with-temp-buffer (insert-file-contents-as-coding-system (cdr (assoc "euc" skk-coding-system-alist)) (expand-file-name dic)) (re-search-forward "^;; okuri-nasi entries\\.$") ;; abbrev ¸õÊä¤ò skip (delete-region (point-min) (progn (re-search-forward "^¤¢") (beginning-of-line) (point))) (setq ret (skk-make-mazegaki-dic-1 workbuf nomsg))) (if ret (with-current-buffer workbuf (write-region-as-coding-system (cdr (assoc "euc" skk-coding-system-alist)) ;; only Emacs 21's write-region has 6th arg MUSTBENEW. 1 (point-max) output nil t nil) (or nomsg (message "Making Mazegaki dictionary...100%% done"))))) (kill-buffer workbuf)))) ;;;###autoload (defun skk-make-mazegaki-dic-region (min max &optional reference) "SKK ·Á¼°¤Î¼­½ñ¤«¤é TUT-Code ¤Ê¤É¤Ç»È¤ï¤ì¤ì¤ëº®¤¼½ñ¤­¼­½ñ¤òºî¤ë¡£ ²Ã¹©¤·¤¿¼­½ñ¤òºî¶È¥Ð¥Ã¥Õ¥¡¤Ë½ñ¤­½Ð¤· `pop-to-buffer' ¤¹¤ë¡£ ½ÐÎϤµ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤ò¥Õ¥¡¥¤¥ë (²¼µ­¤ÎÎã¤Ç¤Ï TMP) ¤ËÊݸ¤· $ skkdic-expr TMP | skkdic-sort > NEWDICT ¤È¤·¤Æ²Ã¹©¤¹¤ëɬÍפ¢¤ê¡£ ¥ª¥×¥·¥ç¥Ê¥ë°ú¿ô¤Î reference ¤ò»ØÄꤹ¤ë¤È¡¢²Ã¹©¤ÎºÝ¤Ë¸¡º÷¤¹¤ë¼­½ñ¤ò Ê̤˻ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£reference ¤Î»ØÄ꤬¤Ê¤¤¾ì¹ç¤Ï¡¢¥ê¡¼¥¸¥ç¥ó Æâ¤Ç¸¡º÷¤Ç¤­¤ë¸ì¤Î¤ß¤òÍøÍѤ·¤Æ¸«½Ð¤·¸ì¤ò²Ã¹©¤¹¤ë¡£" (interactive "r\nP") (unwind-protect (let ((outbuf (get-buffer-create " *skkmkmgk working*")) ret) (with-current-buffer outbuf (erase-buffer)) (if reference (progn (setq reference (read-file-name "¤É¤Î¼­½ñ¤ò»²¾È¤·¤Þ¤¹¤«? " nil nil 'mustmatch)) (with-current-buffer (get-buffer-create " *skkmkmgk working1*") (erase-buffer) (insert-file-contents-as-coding-system (cdr (assoc "euc" skk-coding-system-alist)) (expand-file-name reference)) (goto-char (point-min)) (re-search-forward "^;; okuri-nasi entries\\.$") ;; abbrev ¸õÊä¤ò skip (delete-region (point-min) (progn (re-search-forward "^¤¢") (beginning-of-line) (point))) (setq reference (current-buffer))))) (save-excursion (save-restriction (narrow-to-region min max) (goto-char min) (setq ret (skk-make-mazegaki-dic-1 outbuf nil reference)))) (if ret (progn (pop-to-buffer outbuf) (goto-char (point-min))))) (kill-buffer reference))) (defun skk-make-mazegaki-dic-1 (outbuf nomsg &optional reference) (let ((max (point-max)) (cont t) header0 header-list candidates0 candidates1) (or reference (setq reference (current-buffer))) (while (and cont (not (eobp))) (or nomsg (message "Making Mazegaki dictionary...%d%% done" (* (/ (* (point) 100.00) (* max 100.00)) 100.0))) (beginning-of-line) ;; ¤Ò¤é¤¬¤Ê¸«½Ð¤· e.x. "¤¢¤¤¤«¤ï" (setq header0 (buffer-substring-no-properties (point) (save-excursion (search-forward " ") (backward-char 1) (point)))) (if (= (skk-str-length header0) 1) nil (search-forward " /") ;; ¤Ò¤é¤¬¤Ê¸«½Ð¤·¤ò¥­¡¼¤Ë¤·¤¿¸õÊä¥ê¥¹¥È (2 ʸ»ú°Ê¾å) e.x. "ÁêÀî" (setq candidates0 (skk-mkmgk-filter (car (skk-compute-henkan-lists nil)))) (if (null candidates0) nil ;; ¤Ò¤é¤¬¤Ê¸«½Ð¤·¤òʬ²ò (setq header-list (string-to-list header0)) (save-excursion ; have to restore point after searching (set-buffer reference) (let ((max (point-max)) (min (point-min)) (header-list1 header-list) header1 n) (while header-list1 (setq header1 (char-to-string (car header-list1)) n 1) (while (and header1 (> (length header0) (length header1))) (goto-char min) ;; ʬ²ò¤·¤¿¤Ò¤é¤¬¤Ê¸«½Ð¤·¤ò 1 ʸ»ú¤Å¤Ä¸«½Ð¤·¤Ë¤·¤ÆºÆ¸¡º÷ e.x. "¤¢¤¤" (if (not (setq candidates1 (skk-mkmgk-binary-search header1 min max skk-mkmgk-region-limit))) nil (let ((can0 candidates0) key0 key1) (while (and candidates1 can0) (if (not (string-match (car candidates1) (car can0))) ;;(string-match header1 header0 (* skk-kanji-len (1- n))))) (or (setq candidates1 (cdr candidates1)) (setq can0 (cdr can0))) ;; ʬ²ò¥­¡¼ (e.x. ¤¢¤¤) ¤Ë¤è¤ë¸õÊä e.x. "Áê" ¤¬ ;; ¥ª¥ê¥¸¥Ê¥ë¥­¡¼ (e.x. ¤¢¤¤¤«¤ï) ¤Î¸õÊä e.x. ;; "ÁêÀî" ¤Ë match ¤·¤¿¤é (setq key0 (concat (substring (car can0) 0 (match-beginning 0)) header1 (substring (car can0) (match-end 0)))) (if (string-match header1 header0) (setq key1 (concat (substring header0 0 (match-beginning 0)) (car candidates1) (substring header0 (match-end 0))))) (or (string= key0 (car can0)) (with-current-buffer outbuf (goto-char (point-max)) ;; ¤¢¤¤Àî /ÁêÀî/ (insert key0 " /" (car can0) "/\n"))) (or (string= key1 (car can0)) (with-current-buffer outbuf (goto-char (point-max)) ;; Á꤫¤ï /ÁêÀî/ (insert key1 " /" (car can0) "/\n"))) (setq candidates1 nil))))) (if (> (skk-str-length (mapconcat 'char-to-string header-list1 nil)) n) ;; HEADER1 ¤ò¿­¤Ð¤·¤ÆºÆ¸¡º÷ ;; e.x. "¤¢" ¢ª "¤¢¤¤" ¢ª "¤¢¤¤¤«" ¢ª "¤¢¤¤¤«¤ï" ;; "¤¤" ¢ª "¤¤¤«" ¢ª "¤¤¤«¤ï" ;; "¤«" ¢ª "¤«¤ï" ;; "¤ï" (setq header1 (concat header1 (char-to-string (nth n header-list1))) n (1+ n)) (setq header1 nil))) ;; ¼¡¤Î char ¤òƬ¤Ë¤·¤¿¸¡º÷³«»Ï ;; e.x. "¤¢" ¢ª "¤¤" ¢ª "¤«" ¢ª "¤ï" (setq header-list1 (cdr header-list1))))))) (setq cont (= (forward-line 1) 0))) (let ((ret (with-current-buffer outbuf (> (buffer-size) 0)))) (prog1 ret (or nomsg (if ret (message "Making Mazegaki dictionary...100%% done") (message "No entries of Mazegaki dictionary"))))))) (defun skk-mkmgk-filter (list &optional onecharacter) ;; Optional arg ONECHARACTER means put out one character. (delete "" ; there was a bug in SKK-JISYO.L... (delq nil (mapcar (function (lambda (word) (setq word (if (and (not (string-match "[¤¡-¤ó¥¡-¥ó]" word)) ;; ±Ñ¸ì¤ò skip (not (string-match "^[a-zA-Z]+$" word))) (if (string-match ";" word) (substring word 0 (match-beginning 0)) word))) (if (and (not onecharacter) (= (skk-str-length word) 1)) (setq word nil)) word)) list)))) (defun skk-mkmgk-binary-search (key min max limit) (let ((case-fold-search nil) size p) (if (> limit 0) (while (progn (setq size (- max min)) (> size limit)) (goto-char (+ min (/ size 2))) (beginning-of-line) (setq p (point)) (if (string< key (buffer-substring-no-properties p (1- (search-forward " ")))) (setq max p) (setq min p)))) (goto-char min) (beginning-of-line) (if (re-search-forward (concat "^" key " /") max 'noerror) (skk-mkmgk-filter (car (skk-compute-henkan-lists nil)))))) (provide 'skk-mkmgk) ;;; skk-mkmgk.el ends here ddskk-15.2/tut-code/skk-tutcdef.el0000644000570400056700000017653011435707133017114 0ustar kitamotoopenlab;;; skk-tutcdef.el --- SKK TUT-code default definition -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000 GUNJI Takao ;; Author: GUNJI Takao ;; Maintainer: SKK Development Team ;; Version: $Id: skk-tutcdef.el,v 1.13 2010/08/27 10:07:23 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2010/08/27 10:07:23 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk) (require 'skk-tutcode)) (define-key skk-j-mode-map "\C-l" 'skk-latin-mode) (setq skk-try-completion-char ?\016) ; \C-n ;;(setq skk-latin-mode-string " sTUT") ;;(setq skk-hiragana-mode-string " $B#s$?$C$H(B") ;;(setq skk-katakana-mode-string " $B#s%?%C%H(B") ;;(setq skk-jisx0208-latin-mode-string " $B#s#T#U#T(B") ;;(setq skk-abbrev-mode-string " s$B$?(B") (setq skk-start-henkan-char ?\^@) (setq skk-rom-kana-base-rule-list '(("$" nil skk-tutcode-display-code) ("'" nil skk-abbrev-mode) ("@" nil skk-today) ("L" nil skk-jisx0208-latin-mode) ("Q" nil skk-set-henkan-point-subr) ("X" nil skk-purge-from-jisyo) ("\\" nil skk-tutcode-mode-off) ("\t" nil skk-toggle-kana) ("^" nil skk-input-by-code-or-menu) ("\C-@" nil skk-start-henkan))) ;; (if (and (featurep 'xemacs) (= emacs-major-version 20)) ;; (progn ;; (setq skk-rom-kana-base-rule-list ;; (delete '("\t" nil skk-toggle-kana) skk-rom-kana-base-rule-list)) ;; (define-key skk-j-mode-map "\t" 'skk-toggle-kana))) ;; The first few entries are necessary to disable special treatments of (setq skk-rom-kana-rule-list '( ("rk" nil ("$B%"(B" . "$B$"(B")) ("rlk" nil ("$B%!(B" . "$B$!(B")) ("ek" nil ("$B%+(B" . "$B$+(B")) ("elk" nil ("$B%,(B" . "$B$,(B")) ("sk" nil ("$B%5(B" . "$B$5(B")) ("slk" nil ("$B%6(B" . "$B$6(B")) ("dk" nil ("$B%?(B" . "$B$?(B")) ("dlk" nil ("$B%@(B" . "$B$@(B")) ("fk" nil ("$B%J(B" . "$B$J(B")) ("tk" nil ("$B%O(B" . "$B$O(B")) ("tlk" nil ("$B%P(B" . "$B$P(B")) ("tltk" nil ("$B%Q(B" . "$B$Q(B")) ("wk" nil ("$B%^(B" . "$B$^(B")) ("qk" nil ("$B%d(B" . "$B$d(B")) ("qlk" nil ("$B%c(B" . "$B$c(B")) ("gk" nil ("$B%i(B" . "$B$i(B")) ("ak" nil ("$B%o(B" . "$B$o(B")) ("alk" nil ("$B%n(B" . "$B$n(B")) ("ri" nil ("$B%$(B" . "$B$$(B")) ("rli" nil ("$B%#(B" . "$B$#(B")) ("ei" nil ("$B%-(B" . "$B$-(B")) ("eli" nil ("$B%.(B" . "$B$.(B")) ("si" nil ("$B%7(B" . "$B$7(B")) ("sli" nil ("$B%8(B" . "$B$8(B")) ("di" nil ("$B%A(B" . "$B$A(B")) ("dli" nil ("$B%B(B" . "$B$B(B")) ("fi" nil ("$B%K(B" . "$B$K(B")) ("ti" nil ("$B%R(B" . "$B$R(B")) ("tli" nil ("$B%S(B" . "$B$S(B")) ("tlti" nil ("$B%T(B" . "$B$T(B")) ("wi" nil ("$B%_(B" . "$B$_(B")) ("gi" nil ("$B%j(B" . "$B$j(B")) ("ai" nil ("$B%p(B" . "$B$p(B")) ("ru" nil ("$B%&(B" . "$B$&(B")) ("rlu" nil ("$B%%(B" . "$B$%(B")) ("eu" nil ("$B%/(B" . "$B$/(B")) ("elu" nil ("$B%0(B" . "$B$0(B")) ("su" nil ("$B%9(B" . "$B$9(B")) ("slu" nil ("$B%:(B" . "$B$:(B")) ("du" nil ("$B%D(B" . "$B$D(B")) ("dlu" nil ("$B%C(B" . "$B$C(B")) ("dldu" nil ("$B%E(B" . "$B$E(B")) ("fu" nil ("$B%L(B" . "$B$L(B")) ("tu" nil ("$B%U(B" . "$B$U(B")) ("tlu" nil ("$B%V(B" . "$B$V(B")) ("tltu" nil ("$B%W(B" . "$B$W(B")) ("wu" nil ("$B%`(B" . "$B$`(B")) ("qu" nil ("$B%f(B" . "$B$f(B")) ("qlu" nil ("$B%e(B" . "$B$e(B")) ("gu" nil ("$B%k(B" . "$B$k(B")) ("rh" nil ("$B%((B" . "$B$((B")) ("rlh" nil ("$B%'(B" . "$B$'(B")) ("eh" nil ("$B%1(B" . "$B$1(B")) ("elh" nil ("$B%2(B" . "$B$2(B")) ("sh" nil ("$B%;(B" . "$B$;(B")) ("slh" nil ("$B%<(B" . "$B$<(B")) ("dh" nil ("$B%F(B" . "$B$F(B")) ("dlh" nil ("$B%G(B" . "$B$G(B")) ("fh" nil ("$B%M(B" . "$B$M(B")) ("th" nil ("$B%X(B" . "$B$X(B")) ("tlh" nil ("$B%Y(B" . "$B$Y(B")) ("tlth" nil ("$B%Z(B" . "$B$Z(B")) ("wh" nil ("$B%a(B" . "$B$a(B")) ("gh" nil ("$B%l(B" . "$B$l(B")) ("ah" nil ("$B%q(B" . "$B$q(B")) ("rj" nil ("$B%*(B" . "$B$*(B")) ("rlj" nil ("$B%)(B" . "$B$)(B")) ("ej" nil ("$B%3(B" . "$B$3(B")) ("elj" nil ("$B%4(B" . "$B$4(B")) ("sj" nil ("$B%=(B" . "$B$=(B")) ("slj" nil ("$B%>(B" . "$B$>(B")) ("dj" nil ("$B%H(B" . "$B$H(B")) ("dlj" nil ("$B%I(B" . "$B$I(B")) ("fj" nil ("$B%N(B" . "$B$N(B")) ("tj" nil ("$B%[(B" . "$B$[(B")) ("tlj" nil ("$B%\(B" . "$B$\(B")) ("tltj" nil ("$B%](B" . "$B$](B")) ("wj" nil ("$B%b(B" . "$B$b(B")) ("qj" nil ("$B%h(B" . "$B$h(B")) ("qlj" nil ("$B%g(B" . "$B$g(B")) ("gj" nil ("$B%m(B" . "$B$m(B")) ("aj" nil ("$B%r(B" . "$B$r(B")) ("fl" nil ("$B%s(B" . "$B$s(B")) ("rlru" nil "$B%t(B") ("eleh" nil "$B%v(B") ("elek" nil "$B%u(B") ("f " nil skk-current-kuten) ("d " nil skk-current-touten) ("/ " nil "$B!?(B") ("q " nil "$B!H(B") ("w " nil "$B")(B") ("e " nil "$B!<(B") ("r " nil "$B!J(B") ("u " nil "$B!K(B") ("i " nil "$B!D(B") ("o " nil "$B!&(B") ("p " nil "$B!I(B") ("a " nil "$B!F(B") ("s " nil "$B!y(B") ("j " nil "$B!9(B") ("k " nil "$B"((B") ("l " nil "$B!@(B") ("; " nil "$B!G(B") ("z " nil "$B!:(B") ("x " nil "$B!x(B") ("c " nil "$B!;(B") ("v " nil "$B!Z(B") ("m " nil "$B![(B") (", " nil "$B!T(B") (". " nil "$B!U(B") ("t " nil "$B!V(B") ("y " nil "$B!W(B") ("g " nil "$B!X(B") ("h " nil "$B!Y(B") ("b " nil "$B"+(B") ("n " nil "$B"*(B") ("zz" nil "$B;((B") ("xz" nil "$B?d(B") ("cz" nil "$BEO(B") ("vz" nil "$B8z(B") ("bz" nil "$B1'(B") ("nz" nil "$B?6(B") ("mz" nil "$B9[(B") (",z" nil "$BI_(B") ("az" nil "$B@1(B") ("sz" nil "$B5v(B") ("dz" nil "$B39(B") ("fz" nil "$BNk(B") ("gz" nil "$BDk(B") ("hz" nil "$B@:(B") ("jz" nil "$BM'(B") ("kz" nil "$B<}(B") ("qz" nil "$BJV(B") ("wz" nil "$B6%(B") ("ez" nil "$BJl(B") ("rz" nil "$BG.(B") ("tz" nil "$BB`(B") ("yz" nil "$B4k(B") ("uz" nil "$BI~(B") ("iz" nil "$B9](B") (".z" nil "$BM;(B") ("/z" nil "$B1:(B") ("lz" nil "$B;{(B") (";z" nil "$BMz(B") ("oz" nil "$BDd(B") ("pz" nil "$B=#(B") ("zx" nil "$B4)(B") ("xx" nil "$BFA(B") ("cx" nil "$BEP(B") ("vx" nil "$BNd(B") ("bx" nil "$B6A(B") ("nx" nil "$BDE(B") ("mx" nil "$BDM(B") (",x" nil "$BHx(B") ("ax" nil "$BB2(B") ("sx" nil "$B=>(B") ("dx" nil "$BF2(B") ("fx" nil "$BJ<(B") ("gx" nil "$B4F(B") ("hx" nil "$BIM(B") ("jx" nil "$B8M(B") ("kx" nil "$BNA(B") ("qx" nil "$B:W(B") ("wx" nil "$BK,(B") ("ex" nil "$B=t(B") ("rx" nil "$B=$(B") ("tx" nil "$BHG(B") ("yx" nil "$B0K(B") ("ux" nil "$B=5(B") ("ix" nil "$B3,(B") (".x" nil "$BC](B") ("/x" nil "$B@t(B") ("lx" nil "$B2P(B") (";x" nil "$B:d(B") ("ox" nil "$BO+(B") ("px" nil "$BHD(B") ("zc" nil "$Br(B") (",c" nil "$B1I(B") ("ac" nil "$BDB(B") ("sc" nil "$B@2(B") ("dc" nil "$BFH(B") ("fc" nil "$B4Q(B") ("gc" nil "$BJQ(B") ("hc" nil "$BFn(B") ("jc" nil "$BC+(B") ("kc" nil "$BF;(B") ("qc" nil "$BF^(B") ("wc" nil "$BCm(B") ("ec" nil "$BLH(B") ("rc" nil "$BCc(B") ("tc" nil "$B:r(B") ("yc" nil "$B2J(B") ("uc" nil "$B20(B") ("ic" nil "$B1G(B") (".c" nil "$B8K(B") ("/c" nil "$BGH(B") ("lc" nil "$B6&(B") (";c" nil "$B9>(B") ("oc" nil "$B:e(B") ("pc" nil "$B>:(B") ("nv" nil "$BZ(B") ("pv" nil "$B@u(B") ("nb" nil "$B4d(B") ("mb" nil "$B>k(B") (",b" nil "$B1J(B") ("hb" nil "$B73(B") ("jb" nil "$BEZ(B") ("kb" nil "$B?@(B") ("yb" nil "$B><(B") ("ub" nil "$B5\(B") ("ib" nil "$B?&(B") (".b" nil "$B=)(B") ("/b" nil "$BN&(B") ("lb" nil "$BB$(B") (";b" nil "$B7](B") ("ob" nil "$BM:(B") ("pb" nil "$B=U(B") ("ng" nil "$BC(B") ("an" nil "$B=u(B") ("sn" nil "$B@-(B") ("dn" nil "$BOC(B") ("fn" nil "$B8l(B") ("gn" nil "$BE@(B") ("qn" nil "$BI,(B") ("wn" nil "$B41(B") ("en" nil "$B<#(B") ("rn" nil "$B@h(B") ("tn" nil "$B=i(B") ("zm" nil "$B<:(B") ("xm" nil "$BA[(B") ("cm" nil "$BN.(B") ("vm" nil "$B8!(B") ("bm" nil "$B:F(B") ("am" nil "$B^(B") ("oa" nil "$B;N(B") ("pa" nil "$BDZ(B") ("zs" nil "$B0e(B") ("xs" nil "$BC1(B") ("cs" nil "$BB_(B") ("vs" nil "$BDI(B") ("bs" nil "$B5s(B") ("ns" nil "$B4](B") ("ms" nil "$BB4(B") (",s" nil "$BD+(B") ("as" nil "$BKh(B") ("ss" nil "$BJ!(B") ("ds" nil "$BB>(B") ("fs" nil "$BJF(B") ("gs" nil "$BMx(B") ("hs" nil "$BBe(B") ("js" nil "$B7n(B") ("ks" nil "$BED(B") ("qs" nil "$B@G(B") ("ws" nil "$B&(B") ("os" nil "$BI4(B") ("ps" nil "$B@\(B") ("zd" nil "$BI>(B") ("xd" nil "$BDm(B") ("cd" nil "$B2~(B") ("vd" nil "$BLr(B") ("bd" nil "$B2V(B") ("nd" nil "$B5^(B") ("md" nil "$B3$(B") (",d" nil "$B;T(B") ("ad" nil "$BLs(B") ("sd" nil "$BM-(B") ("dd" nil "$BA4(B") ("fd" nil "$B<+(B") ("gd" nil "$B=;(B") ("hd" nil "$BEl(B") ("jd" nil "$BFs(B") ("kd" nil "$BF|(B") ("qd" nil "$B9u(B") ("wd" nil "$B;q(B") ("ed" nil "$B?t(B") ("rd" nil "$BIJ(B") ("td" nil "$B:B(B") ("yd" nil "$B3X(B") ("ud" nil "$BK\(B") ("id" nil "$BBg(B") (".d" nil "$B;Y(B") ("/d" nil "$B?9(B") ("ld" nil "$B;~(B") (";d" nil "$BIT(B") ("od" nil "$BO;(B") ("pd" nil "$B3t(B") ("zf" nil "$BF$(B") ("xf" nil "$B6q(B") ("cf" nil "$BKI(B") ("vf" nil "$BAG(B") ("bf" nil "$B2p(B") ("nf" nil "$B8w(B") ("mf" nil "$BO:(B") (",f" nil "$BJ8(B") ("af" nil "$BD>(B") ("sf" nil "$BAw(B") ("df" nil "$BJ](B") ("ff" nil "$B@$(B") ("gf" nil "$B8=(B") ("hf" nil "$B?7(B") ("jf" nil "$BG/(B") ("kf" nil "$B0l(B") ("qf" nil "$B7Y(B") ("wf" nil "$BBw(B") ("ef" nil "$B8x(B") ("rf" nil "$B:Y(B") ("tf" nil "$BHq(B") ("yf" nil "$B9)(B") ("uf" nil "$B;v(B") ("if" nil "$BCf(B") (".f" nil "$BBt(B") ("/f" nil "$BGO(B") ("lf" nil "$BF1(B") (";f" nil "$BJb(B") ("of" nil "$B6e(B") ("pf" nil "$B8a(B") ("zh" nil "$BH=(B") ("xh" nil "$BEj(B") ("ch" nil "$B@o(B") ("vh" nil "$BAH(B") ("bh" nil "$BB?(B") ("qh" nil "$BJ(B") ("hj" nil "$BNO(B") ("jj" nil "$B83(B") ("kj" nil "$B4V(B") ("yj" nil "$B>!(B") ("uj" nil "$B;a(B") ("ij" nil "$B2h(B") (".j" nil "$B7?(B") ("/j" nil "$B8N(B") ("lj" nil "$B@_(B") (";j" nil "$B9f(B") ("oj" nil "$B?4(B") ("pj" nil "$BHN(B") ("zk" nil "$B(B") ("zq" nil "$B?-(B") ("xq" nil "$B1)(B") ("cq" nil "$B@E(B") ("vq" nil "$B:b(B") ("bq" nil "$B;O(B") ("nq" nil "$B2O(B") ("mq" nil "$B1[(B") (",q" nil "$BE}(B") ("aq" nil "$B0-(B") ("sq" nil "$BIB(B") ("dq" nil "$BAa(B") ("fq" nil "$B;e(B") ("gq" nil "$B;n(B") ("hq" nil "$B>>(B") ("jq" nil "$B0B(B") ("kq" nil "$BET(B") ("qq" nil "$BJB(B") ("wq" nil "$BBV(B") ("eq" nil "$BN>(B") ("rq" nil "$B>h(B") ("tq" nil "$B@l(B") ("yq" nil "$B6=(B") ("uq" nil "$B8}(B") ("iq" nil "$BMN(B") (".q" nil "$B=((B") ("/q" nil "$BL}(B") ("lq" nil "$BM?(B") (";q" nil "$B@6(B") ("oq" nil "$BA%(B") ("pq" nil "$B5W(B") ("zw" nil "$BN"(B") ("xw" nil "$BC;(B") ("cw" nil "$B2?(B") ("vw" nil "$B@Q(B") ("bw" nil "$B7^(B") ("nw" nil "$B85(B") ("mw" nil "$BB"(B") (",w" nil "$B8)(B") ("aw" nil "$B:,(B") ("sw" nil "$B;E(B") ("dw" nil "$BL5(B") ("fw" nil "$B0F(B") ("gw" nil "$B3[(B") ("hw" nil "$BF0(B") ("jw" nil "$B@n(B") ("kw" nil "$B5k(B") ("qw" nil "$BEA(B") ("ww" nil "$B7r(B") ("ew" nil "$BBT(B") ("rw" nil "$BGr(B") ("tw" nil "$B9A(B") ("yw" nil "$B?e(B") ("uw" nil "$B;:(B") ("iw" nil "$BL3(B") (".w" nil "$BC[(B") ("/w" nil "$B3Q(B") ("lw" nil "$BLZ(B") (";w" nil "$B:4(B") ("ow" nil "$B1X(B") ("pw" nil "$BF,(B") ("ze" nil "$BN`(B") ("xe" nil "$BHs(B") ("ce" nil "$BJd(B") ("ve" nil "$B7Z(B") ("be" nil "$BN((B") ("ne" nil "$B:j(B") ("me" nil "$B=I(B") (",e" nil "$B2D(B") ("ae" nil "$BE7(B") ("se" nil "$B:#(B") ("de" nil "$B3F(B") ("fe" nil "$B4X(B") ("ge" nil "$B1?(B") ("he" nil "$B9b(B") ("je" nil "$B9q(B") ("ke" nil "$B;0(B") ("qe" nil "$B@D(B") ("we" nil "$B3h(B") ("ee" nil "$B7k(B") ("re" nil "$BM%(B") ("te" nil "$B:G(B") ("ye" nil "$B6b(B") ("ue" nil "$BCO(B") ("ie" nil "$BK|(B") (".e" nil "$B<<(B") ("/e" nil "$B=B(B") ("le" nil "$BH,(B") (";e" nil "$BKL(B") ("oe" nil "$B7z(B") ("pe" nil "$BE4(B") ("zr" nil "$BI|(B") ("xr" nil "$BM7(B") ("cr" nil "$B;\(B") ("vr" nil "$B5"(B") ("br" nil "$BJX(B") ("nr" nil "$BH>(B") ("mr" nil "$B2,(B") (",r" nil "$B@P(B") ("ar" nil "$BN@(B") ("sr" nil "$B9-(B") ("dr" nil "$BJ?(B") ("fr" nil "$B2;(B") ("gr" nil "$B7W(B") ("hr" nil "$B;3(B") ("jr" nil "$BEE(B") ("kr" nil "$B8^(B") ("qr" nil "$B@0(B") ("wr" nil "$B>/(B") ("er" nil "$B?.(B") ("rr" nil "$BJs(B") ("tr" nil "$BB@(B") ("yr" nil "$BD.(B") ("ur" nil "$B<7(B") ("ir" nil "$B5~(B") (".r" nil "$B5Y(B") ("/r" nil "$BK-(B") ("lr" nil "$B>.(B") (";r" nil "$B86(B") ("or" nil "$BM}(B") ("pr" nil "$B1D(B") ("nt" nil "$BNS(B") ("mt" nil "$BLg(B") (",t" nil "$B3J(B") ("ht" nil "$BL>(B") ("jt" nil "$BIt(B") ("kt" nil "$B6H(B") ("yt" nil "$BBh(B") ("ut" nil "$BOB(B") ("it" nil "$B6h(B") (".t" nil "$B5H(B") ("/t" nil "$BNp(B") ("lt" nil "$BLd(B") (";t" nil "$B6a(B") ("ot" nil "$B@>(B") ("pt" nil "$BIY(B") ("zy" nil "$BMn(B") ("xy" nil "$B>p(B") ("cy" nil "$B;d(B") ("vy" nil "$Bl(B") ("dy" nil "$B2q(B") ("fy" nil "$B>e(B") ("gy" nil "$BDL(B") ("qy" nil "$B?)(B") ("wy" nil "$B;}(B") ("ey" nil "$B;R(B") ("ry" nil "$B=P(B") ("ty" nil "$B9T(B") ("zu" nil "$B9%(B") ("xu" nil "$B4[(B") ("cu" nil "$BD4(B") ("vu" nil "$BCN(B") ("bu" nil "$B@Z(B") ("nu" nil "$BD#(B") ("mu" nil "$BG7(B") (",u" nil "$BN9(B") ("au" nil "$BL\(B") ("hu" nil "$B@=(B") ("ju" nil "$B(B") ("g/" nil "$B5,(B") ("h/" nil "$B=`(B") ("j/" nil "$BFq(B") ("k/" nil "$B:[(B") ("q/" nil "$BE8(B") ("w/" nil "$BF@(B") ("e/" nil "$B;`(B") ("r/" nil "$BM"(B") ("t/" nil "$BL#(B") ("y/" nil "$BCz(B") ("u/" nil "$BA1(B") ("i/" nil "$B:`(B") ("./" nil "$B67(B") ("//" nil "$B7J(B") ("l/" nil "$BE,(B") (";/" nil "$B?^(B") ("o/" nil "$B:9(B") ("p/" nil "$B@v(B") ("zl" nil "$BG$(B") ("xl" nil "$B0z(B") ("cl" nil "$BE^(B") ("vl" nil "$Bu(B") ("a;" nil "$B2N(B") ("s;" nil "$BL@(B") ("d;" nil "$BD9(B") ("f;" nil "$BJ}(B") ("g;" nil "$B@/(B") ("h;" nil "$B0L(B") ("j;" nil "$B:_(B") ("k;" nil "$B<0(B") ("q;" nil "$B6u(B") ("w;" nil "$B@~(B") ("e;" nil "$B9g(B") ("r;" nil "$B2H(B") ("t;" nil "$B=8(B") ("y;" nil "$B2&(B") ("u;" nil "$B1R(B") ("i;" nil "$B7`(B") (".;" nil "$BB((B") ("/;" nil "$BJU(B") ("l;" nil "$B:Q(B") (";;" nil "$B5f(B") ("o;" nil "$B?F(B") ("p;" nil "$BGz(B") ("zo" nil "$BFI(B") ("xo" nil "$B5a(B") ("co" nil "$B1i(B") ("vo" nil "$B=Q(B") ("bo" nil "$B?H(B") ("no" nil "$B;z(B") ("mo" nil "$BM\(B") (",o" nil "$B7b(B") ("ao" nil "$B4|(B") ("so" nil "$BH/(B") ("do" nil "$B?M(B") ("fo" nil "$B0w(B") ("go" nil "$B@8(B") ("ho" nil "$BM3(B") ("jo" nil "$B6I(B") ("ko" nil "$BBN(B") ("qo" nil "$B2r(B") ("wo" nil "$B5$(B") ("eo" nil "$Bo(B") ("po" nil "$BNN(B") ("zp" nil "$BC#(B") ("xp" nil "$B8B(B") ("cp" nil "$B1~(B") ("vp" nil "$BGc(B") ("bp" nil "$B46(B") ("np" nil "$B3U(B") ("mp" nil "$BC4(B") (",p" nil "$B>-(B") ("ap" nil "$BB3(B") ("sp" nil "$BAm(B") ("dp" nil "$BDj(B") ("fp" nil "$B=w(B") ("gp" nil "$B@.(B") ("hp" nil "$B5i(B") ("jp" nil "$B2](B") ("kp" nil "$B0i(B") ("qp" nil "$BG[(B") ("wp" nil "$BM=(B") ("ep" nil "$B5D(B") ("rp" nil "$BFC(B") ("tp" nil "$BK!(B") ("yp" nil "$B2L(B") ("up" nil "$BEy(B") ("ip" nil "$B(B") ("hnz" nil "$B:7(B") ("jnz" nil "$BMZ(B") ("knz" nil "$B3/(B") ("ynz" nil "$B5x(B") ("unz" nil "$B:@(B") ("inz" nil "$BKV(B") (".nz" nil "$BEF(B") ("/nz" nil "$B3p(B") ("lnz" nil "$B84(B") (";nz" nil "$BA'(B") ("onz" nil "$B;9(B") ("pnz" nil "$BBO(B") ("nmz" nil "$BDY(B") ("mmz" nil "$B8'(B") (",mz" nil "$B<5(B") ("hmz" nil "$BMV(B") ("jmz" nil "$B:s(B") ("kmz" nil "$B0+(B") ("ymz" nil "$B9[(B") ("umz" nil "$B<6(B") ("imz" nil "$B1e(B") (".mz" nil "$BD5(B") ("/mz" nil "$B@H(B") ("lmz" nil "$BFf(B") (";mz" nil "$B:|(B") ("omz" nil "$BI*(B") ("pmz" nil "$BKs(B") ("nnx" nil "$BC((B") ("mnx" nil "$BB|(B") (",nx" nil "$B0q(B") ("hnx" nil "$B8{(B") ("jnx" nil "$BHZ(B") ("knx" nil "$BJ0(B") ("ynx" nil "$B2e(B") ("unx" nil "$BNg(B") ("inx" nil "$B7T(B") (".nx" nil "$BCP(B") ("/nx" nil "$B3k(B") ("lnx" nil "$BME(B") (";nx" nil "$B7d(B") ("onx" nil "$B7X(B") ("pnx" nil "$B4;(B") ("nmx" nil "$BC7(B") ("mmx" nil "$BCI(B") (",mx" nil "$B?A(B") ("hmx" nil "$B9i(B") ("jmx" nil "$B:H(B") ("kmx" nil "$B26(B") ("ymx" nil "$BNb(B") ("umx" nil "$BK1(B") ("imx" nil "$B0k(B") (".mx" nil "$B2W(B") ("/mx" nil "$BL'(B") ("lmx" nil "$B(B") ("nmd" nil "$B:>(B") ("mmd" nil "$BKQ(B") (",md" nil "$B?x(B") ("hmd" nil "$B4T(B") ("jmd" nil "$BHa(B") ("kmd" nil "$B4m(B") ("ymd" nil "$B>b(B") ("umd" nil "$BK;(B") ("imd" nil "$B7K(B") (".md" nil "$B=v(B") ("/md" nil "$B=Y(B") ("lmd" nil "$BLv(B") (";md" nil "$B=C(B") ("omd" nil "$BKa(B") ("pmd" nil "$B2^(B") ("nnf" nil "$B0<(B") ("mnf" nil "$BC*(B") (",nf" nil "$B?#(B") ("hnf" nil "$BL2(B") ("jnf" nil "$B55(B") ("knf" nil "$B)(B") ("jng" nil "$B3((B") ("kng" nil "$BM&(B") ("yng" nil "$B4:(B") ("ung" nil "$BC{(B") ("ing" nil "$BG&(B") (".ng" nil "$B=T(B") ("/ng" nil "$BK+(B") ("lng" nil "$BD`(B") (";ng" nil "$B4$(B") ("ong" nil "$BBz(B") ("png" nil "$BK6(B") ("nmg" nil "$BA@(B") ("mmg" nil "$BBW(B") (",mg" nil "$B8k(B") ("hmg" nil "$BG:(B") ("jmg" nil "$BF8(B") ("kmg" nil "$BBX(B") ("ymg" nil "$BJm(B") ("umg" nil "$B5=(B") ("img" nil "$B4~(B") (".mg" nil "$BL{(B") ("/mg" nil "$B8H(B") ("lmg" nil "$BFJ(B") (";mg" nil "$B?;(B") ("omg" nil "$BIe(B") ("pmg" nil "$BA8(B") ("nnq" nil "$BL^(B") ("mnq" nil "$BIl(B") (",nq" nil "$BAo(B") ("hnq" nil "$B6T(B") ("jnq" nil "$B21(B") ("knq" nil "$B2E(B") ("ynq" nil "$BOD(B") ("unq" nil "$B1=(B") ("inq" nil "$B<4(B") (".nq" nil "$BK#(B") ("/nq" nil "$B(B") ("onq" nil "$B9"(B") ("pnq" nil "$B0;(B") ("nmq" nil "$B>*(B") ("mmq" nil "$BDv(B") (",mq" nil "$B<`(B") ("hmq" nil "$B(B") ("ynw" nil "$B1Z(B") ("unw" nil "$B=[(B") ("inw" nil "$B69(B") (".nw" nil "$BB](B") ("/nw" nil "$B>+(B") ("lnw" nil "$B6~(B") (";nw" nil "$BGe(B") ("onw" nil "$B4r(B") ("pnw" nil "$B7V(B") ("nmw" nil "$BD_(B") ("mmw" nil "$BIQ(B") (",mw" nil "$B2c(B") ("hmw" nil "$B1j(B") ("jmw" nil "$B=n(B") ("kmw" nil "$B=x(B") ("ymw" nil "$BMg(B") ("umw" nil "$B9#(B") ("imw" nil "$BAx(B") (".mw" nil "$B0t(B") ("/mw" nil "$BE.(B") ("lmw" nil "$BK9(B") (";mw" nil "$B<_(B") ("omw" nil "$BER(B") ("pmw" nil "$BJ~(B") ("nne" nil "$B5|(B") ("mne" nil "$BA)(B") (",ne" nil "$B2K(B") ("hne" nil "$B=D(B") ("jne" nil "$BA{(B") ("kne" nil "$B<-(B") ("yne" nil "$B6y(B") ("une" nil "$B1}(B") ("ine" nil "$B=F(B") (".ne" nil "$B3i(B") ("/ne" nil "$BBv(B") ("lne" nil "$BJI(B") (";ne" nil "$B?l(B") ("one" nil "$BK"(B") ("pne" nil "$B:x(B") ("nme" nil "$BAg(B") ("mme" nil "$BJJ(B") (",me" nil "$BJ"(B") ("hme" nil "$BC8(B") ("jme" nil "$B8X(B") ("kme" nil "$BHo(B") ("yme" nil "$B4}(B") ("ume" nil "$B7w(B") ("ime" nil "$B>W(B") (".me" nil "$B1>(B") ("/me" nil "$B5&(B") ("lme" nil "$B4S(B") (";me" nil "$BNt(B") ("ome" nil "$B4t(B") ("pme" nil "$BAs(B") ("nnr" nil "$BIK(B") ("mnr" nil "$B6i(B") (",nr" nil "$B63(B") ("hnr" nil "$BNC(B") ("jnr" nil "$BH)(B") ("knr" nil "$BKR(B") ("ynr" nil "$BHb(B") ("unr" nil "$BF-(B") ("inr" nil "$BK$(B") (".nr" nil "$BFW(B") ("/nr" nil "$BOH(B") ("lnr" nil "$B?f(B") (";nr" nil "$B:6(B") ("onr" nil "$B7"(B") ("pnr" nil "$BHA(B") ("nmr" nil "$B;=(B") ("mmr" nil "$B3C(B") (",mr" nil "$B9U(B") ("hmr" nil "$B2B(B") ("jmr" nil "$B>X(B") ("kmr" nil "$B=L(B") ("ymr" nil "$B4A(B") ("umr" nil "$B88(B") ("imr" nil "$BKe(B") (".mr" nil "$B2U(B") ("/mr" nil "$B?P(B") ("lmr" nil "$BMr(B") (";mr" nil "$BJ.(B") ("omr" nil "$B1o(B") ("pmr" nil "$BF{(B") ("nnt" nil "$B0Z(B") ("mnt" nil "$Ba(B") ("xg," nil "$BDf(B") ("cg," nil "$BNo(B") ("vg," nil "$B7}(B") ("bg," nil "$B?c(B") ("ag," nil "$BC%(B") ("sg," nil "$BO*(B") ("dg," nil "$BF}(B") ("fg," nil "$B4G(B") ("gg," nil "$B9x(B") ("qg," nil "$BI](B") ("wg," nil "$BKd(B") ("eg," nil "$B9K(B") ("rg," nil "$BB#(B") ("tg," nil "$B3M(B") ("zgh" nil "$B?}(B") ("xgh" nil "$BDF(B") ("cgh" nil "$BA,(B") ("vgh" nil "$BD"(B") ("bgh" nil "$B6M(B") ("agh" nil "$BE](B") ("sgh" nil "$B>P(B") ("dgh" nil "$B:'(B") ("fgh" nil "$B@d(B") ("ggh" nil "$B>c(B") ("qgh" nil "$B>0(B") ("wgh" nil "$B7{(B") ("egh" nil "$BFy(B") ("rgh" nil "$B0a(B") ("tgh" nil "$BHK(B") ("zgj" nil "$B4*(B") ("xgj" nil "$BMb(B") ("cgj" nil "$BN$(B") ("vgj" nil "$BA](B") ("bgj" nil "$BM#(B") ("agj" nil "$B0](B") ("sgj" nil "$BHW(B") ("dgj" nil "$B44(B") ("fgj" nil "$BD(B") ("vgk" nil "$B4J(B") ("bgk" nil "$BE~(B") ("agk" nil "$B3H(B") ("sgk" nil "$B9_(B") ("dgk" nil "$B6!(B") ("fgk" nil "$B05(B") ("ggk" nil "$BA!(B") ("qgk" nil "$B2w(B") ("wgk" nil "$BKc(B") ("egk" nil "$B?y(B") ("rgk" nil "$BJa(B") ("tgk" nil "$BKG(B") ("zgy" nil "$BG](B") ("xgy" nil "$B4.(B") ("cgy" nil "$B9@(B") ("vgy" nil "$B1U(B") ("bgy" nil "$BE[(B") ("agy" nil "$BG<(B") ("sgy" nil "$B6?(B") ("dgy" nil "$B1|(B") ("fgy" nil "$BKt(B") ("ggy" nil "$BI.(B") ("qgy" nil "$BE/(B") ("wgy" nil "$BCF(B") ("egy" nil "$BC:(B") ("rgy" nil "$B0p(B") ("tgy" nil "$B0Y(B") ("zgu" nil "$B9W(B") ("xgu" nil "$B4N(B") ("cgu" nil "$B=S(B") ("vgu" nil "$B7@(B") ("bgu" nil "$B28(B") ("agu" nil "$BDK(B") ("sgu" nil "$B=g(B") ("dgu" nil "$B<~(B") ("fgu" nil "$B9S(B") ("ggu" nil "$B>{(B") ("qgu" nil "$B6S(B") ("wgu" nil "$B:a(B") ("egu" nil "$B@S(B") ("rgu" nil "$BCk(B") ("tgu" nil "$B7'(B") ("zgi" nil "$B>z(B") ("xgi" nil "$BCr(B") ("cgi" nil "$B1@(B") ("vgi" nil "$BLi(B") ("bgi" nil "$BDq(B") ("agi" nil "$B5m(B") ("sgi" nil "$B?%(B") ("dgi" nil "$B2F(B") ("fgi" nil "$B1g(B") ("ggi" nil "$BLA(B") ("qgi" nil "$B3w(B") ("wgi" nil "$B8u(B") ("egi" nil "$B@9(B") ("rgi" nil "$B7c(B") ("tgi" nil "$BHc(B") ("zg." nil "$B;"(B") ("xg." nil "$B6|(B") ("cg." nil "$BLW(B") ("vg." nil "$BIn(B") ("bg." nil "$BKZ(B") ("ag." nil "$B<"(B") ("sg." nil "$BCE(B") ("dg." nil "$BK4(B") ("fg." nil "$BE((B") ("gg." nil "$BK^(B") ("qg." nil "$B1B(B") ("wg." nil "$B2:(B") ("eg." nil "$B0_(B") ("rg." nil "$B@;(B") ("tg." nil "$BKM(B") ("zg/" nil "$BHu(B") ("xg/" nil "$BAd(B") ("cg/" nil "$B1z(B") ("vg/" nil "$BM4(B") ("bg/" nil "$BNU(B") ("ag/" nil "$B6r(B") ("sg/" nil "$BNQ(B") ("dg/" nil "$B95(B") ("fg/" nil "$B1t(B") ("gg/" nil "$BD((B") ("qg/" nil "$BH;(B") ("wg/" nil "$B;1(B") ("eg/" nil "$B14(B") ("rg/" nil "$BH3(B") ("tg/" nil "$B2i(B") ("zgl" nil "$B<'(B") ("xgl" nil "$B>$(B") ("cgl" nil "$BE0(B") ("vgl" nil "$B1x(B") ("bgl" nil "$BAS(B") ("agl" nil "$B6X(B") ("sgl" nil "$BDl(B") ("dgl" nil "$B@a(B") ("fgl" nil "$B>F(B") ("ggl" nil "$B0\(B") ("qgl" nil "$B9|(B") ("wgl" nil "$BAq(B") ("egl" nil "$BBS(B") ("rgl" nil "$BA\(B") ("tgl" nil "$B5U(B") ("zg;" nil "$BGf(B") ("xg;" nil "$B>S(B") ("cg;" nil "$B4O(B") ("vg;" nil "$B35(B") ("bg;" nil "$BAB(B") ("ag;" nil "$BCn(B") ("sg;" nil "$B:Z(B") ("dg;" nil "$B0[(B") ("fg;" nil "$BEX(B") ("gg;" nil "$B:$(B") ("qg;" nil "$B7$(B") ("wg;" nil "$B4q(B") ("eg;" nil "$B9H(B") ("rg;" nil "$BAk(B") ("tg;" nil "$B3](B") ("zgo" nil "$B>g(B") ("xgo" nil "$BIS(B") ("cgo" nil "$B7<(B") ("vgo" nil "$B91(B") ("bgo" nil "$B?T(B") ("ago" nil "$BLo(B") ("sgo" nil "$B>5(B") ("dgo" nil "$B0h(B") ("fgo" nil "$B7/(B") ("ggo" nil "$BKk(B") ("qgo" nil "$BM6(B") ("wgo" nil "$B:^(B") ("ego" nil "$BJ[(B") ("rgo" nil "$B;u(B") ("tgo" nil "$B>M(B") ("zgp" nil "$B>[(B") ("xgp" nil "$BG+(B") ("cgp" nil "$BEM(B") ("vgp" nil "$BG^(B") ("bgp" nil "$B1S(B") ("agp" nil "$BE:(B") ("sgp" nil "$B5Q(B") ("dgp" nil "$BH((B") ("fgp" nil "$B?L(B") ("ggp" nil "$BEt(B") ("qgp" nil "$B>"(B") ("wgp" nil "$BJ%(B") ("egp" nil "$B=!(B") ("rgp" nil "$B54(B") ("tgp" nil "$B47(B") ("nhz" nil "$B75(B") ("mhz" nil "$BMe(B") (",hz" nil "$B3L(B") ("hhz" nil "$BB[(B") ("jhz" nil "$BB:(B") ("khz" nil "$BNm(B") ("yhz" nil "$B?W(B") ("uhz" nil "$B@7(B") ("ihz" nil "$BM^(B") (".hz" nil "$BA((B") ("/hz" nil "$BBi(B") ("lhz" nil "$BIk(B") (";hz" nil "$BA2(B") ("ohz" nil "$BD$(B") ("phz" nil "$B2}(B") ("nhx" nil "$B4a(B") ("mhx" nil "$BH2(B") (",hx" nil "$B7v(B") ("hhx" nil "$B3a(B") ("jhx" nil "$B;j(B") ("khx" nil "$BCh(B") ("yhx" nil "$B0N(B") ("uhx" nil "$BBs(B") ("ihx" nil "$BDb(B") (".hx" nil "$B?D(B") ("/hx" nil "$BD8(B") ("lhx" nil "$BNH(B") (";hx" nil "$B?](B") ("ohx" nil "$B36(B") ("phx" nil "$BJ>(B") ("nhc" nil "$B9J(B") ("mhc" nil "$BN!(B") (",hc" nil "$B2u(B") ("hhc" nil "$B;i(B") ("jhc" nil "$B57(B") ("khc" nil "$B5J(B") ("yhc" nil "$B3@(B") ("uhc" nil "$BGS(B") ("ihc" nil "$BF((B") (".hc" nil "$B4h(B") ("/hc" nil "$B3n(B") ("lhc" nil "$Bf(B") ("ohb" nil "$BAN(B") ("phb" nil "$B4y(B") ("nha" nil "$B6v(B") ("mha" nil "$B?O(B") (",ha" nil "$BI^(B") ("hha" nil "$B7s(B") ("jha" nil "$B0x(B") ("kha" nil "$B6Z(B") ("yha" nil "$B=_(B") ("uha" nil "$B0$(B") ("iha" nil "$B:~(B") (".ha" nil "$BMy(B") ("/ha" nil "$B0?(B") ("lha" nil "$BOQ(B") (";ha" nil "$BMB(B") ("oha" nil "$BK@(B") ("pha" nil "$B?((B") ("nhs" nil "$BAK(B") ("mhs" nil "$B8b(B") (",hs" nil "$B0O(B") ("hhs" nil "$BHS(B") ("jhs" nil "$B>](B") ("khs" nil "$B7O(B") ("yhs" nil "$BN8(B") ("uhs" nil "$BMp(B") ("ihs" nil "$BK<(B") (".hs" nil "$B9r(B") ("/hs" nil "$BKE(B") ("lhs" nil "$B=}(B") (";hs" nil "$BLx(B") ("ohs" nil "$BEI(B") ("phs" nil "$BA<(B") ("nhd" nil "$B1K(B") ("mhd" nil "$BJq(B") (",hd" nil "$BC<(B") ("hhd" nil "$B@U(B") ("jhd" nil "$B9/(B") ("khd" nil "$B?K(B") ("yhd" nil "$B5*(B") ("uhd" nil "$B2l(B") ("ihd" nil "$BFM(B") (".hd" nil "$BHn(B") ("/hd" nil "$B8J(B") ("lhd" nil "$BDy(B") (";hd" nil "$B:D(B") ("ohd" nil "$B8_(B") ("phd" nil "$BCx(B") ("nhf" nil "$B@R(B") ("mhf" nil "$BB)(B") (",hf" nil "$B5((B") ("hhf" nil "$B0M(B") ("jhf" nil "$BKB(B") ("khf" nil "$BEL(B") ("yhf" nil "$BNX(B") ("uhf" nil "$B=c(B") ("ihf" nil "$BE|(B") (".hf" nil "$B:X(B") ("/hf" nil "$BL&(B") ("lhf" nil "$B49(B") (";hf" nil "$B5%(B") ("ohf" nil "$BN5(B") ("phf" nil "$B8((B") ("nhg" nil "$BKP(B") ("mhg" nil "$BF'(B") (",hg" nil "$B2.(B") ("hhg" nil "$BEp(B") ("jhg" nil "$B<1(B") ("khg" nil "$B4n(B") ("yhg" nil "$BO7(B") ("uhg" nil "$BF`(B") ("ihg" nil "$B43(B") (".hg" nil "$BDD(B") ("/hg" nil "$B9*(B") ("lhg" nil "$BHH(B") (";hg" nil "$B1v(B") ("ohg" nil "$BL4(B") ("phg" nil "$BJ#(B") ("nhq" nil "$B:5(B") ("mhq" nil "$B>8(B") (",hq" nil "$BO$(B") ("hhq" nil "$B?2(B") ("jhq" nil "$B07(B") ("khq" nil "$B9k(B") ("yhq" nil "$BH!(B") ("uhq" nil "$B9'(B") ("ihq" nil "$B?X(B") (".hq" nil "$BCZ(B") ("/hq" nil "$B3l(B") ("lhq" nil "$B4c(B") (";hq" nil "$BMR(B") ("ohq" nil "$B4K(B") ("phq" nil "$BBE(B") ("nhw" nil "$BMJ(B") ("mhw" nil "$B(B") (".hw" nil "$BN:(B") ("/hw" nil "$BDi(B") ("lhw" nil "$B:R(B") (";hw" nil "$BAr(B") ("ohw" nil "$BIu(B") ("phw" nil "$BB%(B") ("nhe" nil "$B;#(B") ("mhe" nil "$B>;(B") (",he" nil "$BDa(B") ("hhe" nil "$B?\(B") ("jhe" nil "$BI[(B") ("khe" nil "$BIq(B") ("yhe" nil "$B90(B") ("uhe" nil "$B1d(B") ("ihe" nil "$BI'(B") (".he" nil "$BDA(B") ("/he" nil "$B@{(B") ("lhe" nil "$BGK(B") (";he" nil "$BCi(B") ("ohe" nil "$B7(B") ("jht" nil "$B7l(B") ("kht" nil "$B1s(B") ("yht" nil "$BK`(B") ("uht" nil "$B5l(B") ("iht" nil "$B3K(B") (".ht" nil "$B>x(B") ("/ht" nil "$BFF(B") ("lht" nil "$BF&(B") (";ht" nil "$BAC(B") ("oht" nil "$BN;(B") ("pht" nil "$BM5(B") ("zvn" nil "$BAL(B") ("xvn" nil "$BJw(B") ("cvn" nil "$B:g(B") ("vvn" nil "$BIo(B") ("bvn" nil "$BM](B") ("avn" nil "$BI?(B") ("svn" nil "$BO3(B") ("dvn" nil "$B@](B") ("fvn" nil "$BHQ(B") ("gvn" nil "$B23(B") ("qvn" nil "$BO>(B") ("wvn" nil "$BJK(B") ("evn" nil "$BA-(B") ("rvn" nil "$B8Q(B") ("tvn" nil "$BD1(B") ("zbn" nil "$B1a(B") ("xbn" nil "$B>V(B") ("cbn" nil "$B1^(B") ("vbn" nil "$B:S(B") ("bbn" nil "$BG?(B") ("abn" nil "$B:t(B") ("sbn" nil "$BFz(B") ("dbn" nil "$B0X(B") ("fbn" nil "$B<\(B") ("gbn" nil "$BIg(B") ("qbn" nil "$B<^(B") ("wbn" nil "$BC!(B") ("ebn" nil "$BKK(B") ("rbn" nil "$BD*(B") ("tbn" nil "$BL=(B") ("zvm" nil "$BB{(B") ("xvm" nil "$B4g(B") ("cvm" nil "$BLQ(B") ("vvm" nil "$BGN(B") ("bvm" nil "$B:k(B") ("avm" nil "$B2g(B") ("svm" nil "$B4Y(B") ("dvm" nil "$B08(B") ("fvm" nil "$BE3(B") ("gvm" nil "$BN_(B") ("qvm" nil "$B1m(B") ("wvm" nil "$B:q(B") ("evm" nil "$BJn(B") ("rvm" nil "$BMt(B") ("tvm" nil "$B6,(B") ("zbm" nil "$BEK(B") ("xbm" nil "$BK)(B") ("cbm" nil "$BNK(B") ("vbm" nil "$BA?(B") ("bbm" nil "$B2@(B") ("abm" nil "$BLm(B") ("sbm" nil "$B6U(B") ("dbm" nil "$B56(B") ("fbm" nil "$BNw(B") ("gbm" nil "$B9B(B") ("qbm" nil "$BI5(B") ("wbm" nil "$BFx(B") ("ebm" nil "$BJ:(B") ("rbm" nil "$B6)(B") ("tbm" nil "$B@y(B") ("zv," nil "$BLe(B") ("xv," nil "$BA.(B") ("cv," nil "$B<[(B") ("vv," nil "$B3!(B") ("bv," nil "$BL*(B") ("av," nil "$BFu(B") ("sv," nil "$B2M(B") ("dv," nil "$B8[(B") ("fv," nil "$B5g(B") ("gv," nil "$B>=(B") ("qv," nil "$B5d(B") ("wv," nil "$BG((B") ("ev," nil "$B:2(B") ("rv," nil "$B>w(B") ("tv," nil "$B0y(B") ("zb," nil "$B=6(B") ("xb," nil "$BA9(B") ("cb," nil "$BA:(B") ("vb," nil "$BO4(B") ("bb," nil "$BL`(B") ("ab," nil "$B>?(B") ("sb," nil "$BHR(B") ("db," nil "$B>#(B") ("fb," nil "$BEa(B") ("gb," nil "$B@X(B") ("qb," nil "$B0P(B") ("wb," nil "$B0|(B") ("eb," nil "$B2v(B") ("rb," nil "$B@e(B") ("tb," nil "$BGp(B") ("zvh" nil "$B:-(B") ("xvh" nil "$B1\(B") ("cvh" nil "$B3x(B") ("vvh" nil "$B6E(B") ("bvh" nil "$B3%(B") ("avh" nil "$B3j(B") ("svh" nil "$B>\(B") ("dvh" nil "$BCs(B") ("fvh" nil "$BE&(B") ("gvh" nil "$BG;(B") ("qvh" nil "$BA6(B") ("wvh" nil "$B;w(B") ("evh" nil "$BBY(B") ("rvh" nil "$BHB(B") ("tvh" nil "$BLB(B") ("zbh" nil "$B6z(B") ("xbh" nil "$B4(B") ("dbj" nil "$B4x(B") ("fbj" nil "$B79(B") ("gbj" nil "$BF<(B") ("qbj" nil "$B0r(B") ("wbj" nil "$B>1(B") ("ebj" nil "$BHU(B") ("rbj" nil "$B@x(B") ("tbj" nil "$BK3(B") ("zvk" nil "$B<.(B") ("xvk" nil "$B7B(B") ("cvk" nil "$B>N(B") ("vvk" nil "$BA~(B") ("bvk" nil "$B6(B") ("avy" nil "$B0S(B") ("svy" nil "$BFp(B") ("dvy" nil "$BC$(B") ("fvy" nil "$BAD(B") ("gvy" nil "$BD&(B") ("qvy" nil "$B;7(B") ("wvy" nil "$B:"(B") ("evy" nil "$BJS(B") ("rvy" nil "$B1n(B") ("tvy" nil "$B@O(B") ("zby" nil "$B8?(B") ("xby" nil "$B3A(B") ("cby" nil "$BF_(B") ("vby" nil "$B>_(B") ("bby" nil "$B(B") ("dvu" nil "$BN4(B") ("fvu" nil "$B1h(B") ("gvu" nil "$BKb(B") ("qvu" nil "$B?V(B") ("wvu" nil "$BI:(B") ("evu" nil "$BC\(B") ("rvu" nil "$BKW(B") ("tvu" nil "$BNv(B") ("zbu" nil "$BNF(B") ("xbu" nil "$BEc(B") ("cbu" nil "$BF=(B") ("vbu" nil "$B9d(B") ("bbu" nil "$BHm(B") ("abu" nil "$BG!(B") ("sbu" nil "$B9L(B") ("dbu" nil "$BNP(B") ("fbu" nil "$BOS(B") ("gbu" nil "$BOF(B") ("qbu" nil "$B0*(B") ("wbu" nil "$B4w(B") ("ebu" nil "$BBZ(B") ("rbu" nil "$BNu(B") ("tbu" nil "$BIP(B") ("zvi" nil "$BKj(B") ("xvi" nil "$B8d(B") ("cvi" nil "$BGl(B") ("vvi" nil "$BJW(B") ("bvi" nil "$B5}(B") ("avi" nil "$BB5(B") ("svi" nil "$B>Q(B") ("dvi" nil "$BMj(B") ("fvi" nil "$BJv(B") ("gvi" nil "$B=K(B") ("qvi" nil "$B7y(B") ("wvi" nil "$BHI(B") ("evi" nil "$BKO(B") ("rvi" nil "$BHd(B") ("tvi" nil "$BGu(B") ("zbi" nil "$BKj(B") ("xbi" nil "$B1M(B") ("cbi" nil "$BE=(B") ("vbi" nil "$BGE(B") ("bbi" nil "$B5#(B") ("abi" nil "$BB5(B") ("sbi" nil "$B9Z(B") ("dbi" nil "$BGw(B") ("fbi" nil "$BL<(B") ("gbi" nil "$B3-(B") ("qbi" nil "$BEi(B") ("wbi" nil "$BE)(B") ("ebi" nil "$B6](B") ("rbi" nil "$BIz(B") ("tbi" nil "$BH&(B") ("zv." nil "$BIs(B") ("xv." nil "$BB\(B") ("cv." nil "$B>E(B") ("vv." nil "$B6*(B") ("bv." nil "$BDJ(B") ("av." nil "$BMl(B") ("sv." nil "$BFk(B") ("dv." nil "$B9!(B") ("fv." nil "$B9?(B") ("gv." nil "$B:K(B") ("qv." nil "$B9m(B") ("wv." nil "$B:*(B") ("ev." nil "$B0T(B") ("rv." nil "$B:/(B") ("tv." nil "$BNJ(B") ("zb." nil "$B@C(B") ("xb." nil "$B4#(B") ("cb." nil "$BMd(B") ("vb." nil "$BDP(B") ("bb." nil "$BC?(B") ("ab." nil "$B1C(B") ("sb." nil "$BBC(B") ("db." nil "$B>L(B") ("fb." nil "$B;s(B") ("gb." nil "$B?[(B") ("qb." nil "$BC>(B") ("wb." nil "$B10(B") ("eb." nil "$B7=(B") ("rb." nil "$BN<(B") ("tb." nil "$BGW(B") ("zv/" nil "$B8S(B") ("xv/" nil "$B?Q(B") ("cv/" nil "$B2k(B") ("vv/" nil "$BA=(B") ("bv/" nil "$BDu(B") ("av/" nil "$B5@(B") ("sv/" nil "$BOK(B") ("dv/" nil "$B6o(B") ("fv/" nil "$B22(B") ("gv/" nil "$BL~(B") ("qv/" nil "$B7q(B") ("wv/" nil "$BFg(B") ("ev/" nil "$B0H(B") ("rv/" nil "$BFd(B") ("tv/" nil "$B4\(B") ("zb/" nil "$BJ\(B") ("xb/" nil "$B6}(B") ("cb/" nil "$BGb(B") ("vb/" nil "$B4H(B") ("bb/" nil "$B6B(B") ("ab/" nil "$B3_(B") ("sb/" nil "$B1b(B") ("db/" nil "$B1,(B") ("fb/" nil "$BLw(B") ("gb/" nil "$B2`(B") ("qb/" nil "$BO.(B") ("wb/" nil "$BFh(B") ("eb/" nil "$BAW(B") ("rb/" nil "$BD|(B") ("tb/" nil "$B4f(B") ("zvl" nil "$B3.(B") ("xvl" nil "$B4-(B") ("cvl" nil "$BMO(B") ("vvl" nil "$B00(B") ("bvl" nil "$BNl(B") ("avl" nil "$B=&(B") ("svl" nil "$BA&(B") ("dvl" nil "$B7;(B") ("fvl" nil "$B1"(B") ("gvl" nil "$BGU(B") ("qvl" nil "$B0I(B") ("wvl" nil "$B=A(B") ("evl" nil "$B2|(B") ("rvl" nil "$B>,(B") ("tvl" nil "$BMk(B") ("zbl" nil "$BGJ(B") ("xbl" nil "$BKr(B") ("cbl" nil "$B?g(B") ("vbl" nil "$B?+(B") ("bbl" nil "$BK{(B") ("abl" nil "$B?j(B") ("sbl" nil "$B>t(B") ("dbl" nil "$B9o(B") ("fbl" nil "$B8m(B") ("gbl" nil "$B6<(B") ("qbl" nil "$B0}(B") ("wbl" nil "$B8U(B") ("ebl" nil "$BH1(B") ("rbl" nil "$B6n(B") ("tbl" nil "$B@+(B") ("zv;" nil "$B4C(B") ("xv;" nil "$BJp(B") ("cv;" nil "$Bj(B") ("dbo" nil "$BK'(B") ("fbo" nil "$BCC(B") ("gbo" nil "$BBU(B") ("qbo" nil "$BKS(B") ("wbo" nil "$B3f(B") ("ebo" nil "$BOE(B") ("rbo" nil "$B7_(B") ("tbo" nil "$B2I(B") ("zvp" nil "$BLX(B") ("xvp" nil "$BH$(B") ("cvp" nil "$Bm(B") ("tvp" nil "$B1V(B") ("zbp" nil "$BDG(B") ("xbp" nil "$BAM(B") ("cbp" nil "$B@r(B") ("vbp" nil "$BIZ(B") ("bbp" nil "$B8C(B") ("abp" nil "$B=m(B") ("sbp" nil "$B92(B") ("dbp" nil "$BA>(B") ("fbp" nil "$BF6(B") ("gbp" nil "$B2'(B") ("qbp" nil "$B3r(B") ("wbp" nil "$B1y(B") ("ebp" nil "$BDR(B") ("rbp" nil "$B@((B") ("tbp" nil "$B4b(B") ("ztn" nil "$B3u(B") ("xtn" nil "$B5B(B") ("ctn" nil "$BI3(B") ("vtn" nil "$BD?(B") ("btn" nil "$BI`(B") ("atn" nil "$B?0(B") ("stn" nil "$B>n(B") ("dtn" nil "$BLV(B") ("ftn" nil "$B8W(B") ("gtn" nil "$B@K(B") ("qtn" nil "$BK[(B") ("wtn" nil "$BCT(B") ("etn" nil "$B0R(B") ("rtn" nil "$BBQ(B") ("ttn" nil "$B;x(B") ("ztm" nil "$B6f(B") ("xtm" nil "$BA"(B") ("ctm" nil "$B;$(B") ("vtm" nil "$B64(B") ("btm" nil "$BDX(B") ("atm" nil "$BGy(B") ("stm" nil "$B:?(B") ("dtm" nil "$BH*(B") ("ftm" nil "$BO2(B") ("gtm" nil "$BL[(B") ("qtm" nil "$B?1(B") ("wtm" nil "$BB7(B") ("etm" nil "$B45(B") ("rtm" nil "$B6g(B") ("ttm" nil "$BE+(B") ("zt," nil "$B@m(B") ("xt," nil "$BD^(B") ("ct," nil "$BMo(B") ("vt," nil "$B97(B") ("bt," nil "$BGV(B") ("at," nil "$BA5(B") ("st," nil "$B9Y(B") ("dt," nil "$BHi(B") ("ft," nil "$BLD(B") ("gt," nil "$BHy(B") ("qt," nil "$BC@(B") ("wt," nil "$BIO(B") ("et," nil "$BN,(B") ("rt," nil "$B9n(B") ("tt," nil "$B6`(B") ("zth" nil "$BD<(B") ("xth" nil "$B9s(B") ("cth" nil "$BJD(B") ("vth" nil "$BR(B") ("eth" nil "$BAv(B") ("rth" nil "$B9a(B") ("tth" nil "$BAX(B") ("ztj" nil "$BAz(B") ("xtj" nil "$B1#(B") ("ctj" nil "$B4z(B") ("vtj" nil "$BGq(B") ("btj" nil "$B;L(B") ("atj" nil "$B@^(B") ("stj" nil "$B;o(B") ("dtj" nil "$B4_(B") ("ftj" nil "$B>y(B") ("gtj" nil "$B5{(B") ("qtj" nil "$B5_(B") ("wtj" nil "$BNW(B") ("etj" nil "$B:J(B") ("rtj" nil "$B=h(B") ("ttj" nil "$BN1(B") ("ztk" nil "$BAe(B") ("xtk" nil "$B8-(B") ("ctk" nil "$BGQ(B") ("vtk" nil "$B4E(B") ("btk" nil "$BH(B") ("stl" nil "$BLC(B") ("dtl" nil "$B5y(B") ("ftl" nil "$B:y(B") ("gtl" nil "$B@k(B") ("qtl" nil "$B5M(B") ("wtl" nil "$BAP(B") ("etl" nil "$BB0(B") ("rtl" nil "$B93(B") ("ttl" nil "$BH<(B") ("zt;" nil "$B3s(B") ("xt;" nil "$B@B(B") ("ct;" nil "$BJ$(B") ("vt;" nil "$B?S(B") ("bt;" nil "$BC3(B") ("at;" nil "$B;](B") ("st;" nil "$BE`(B") ("dt;" nil "$BC&(B") ("ft;" nil "$B>'(B") ("gt;" nil "$BFG(B") ("qt;" nil "$B@#(B") ("wt;" nil "$B8.(B") ("et;" nil "$BG>(B") ("rt;" nil "$B@W(B") ("tt;" nil "$B68(B") ("zto" nil "$B@&(B") ("xto" nil "$B7p(B") ("cto" nil "$B7f(B") ("vto" nil "$BO#(B") ("bto" nil "$B@M(B") ("ato" nil "$B2x(B") ("sto" nil "$B>G(B") ("dto" nil "$BLJ(B") ("fto" nil "$BB'(B") ("gto" nil "$BMY(B") ("qto" nil "$B2G(B") ("wto" nil "$BB;(B") ("eto" nil "$BNY(B") ("rto" nil "$B7D(B") ("tto" nil "$B4{(B") ("ztp" nil "$BG|(B") ("xtp" nil "$B7&(B") ("ctp" nil "$B?b(B") ("vtp" nil "$B=G(B") ("btp" nil "$BFr(B") ("atp" nil "$B7\(B") ("stp" nil "$BIh(B") ("dtp" nil "$BJY(B") ("ftp" nil "$B=<(B") ("gtp" nil "$B=o(B") ("qtp" nil "$BC2(B") ("wtp" nil "$Bv(B") ("jyc" nil "$B9`(B") ("kyc" nil "$B>K(B") ("yyc" nil "$BBL(B") ("uyc" nil "$B1l(B") ("iyc" nil "$B>I(B") (".yc" nil "$B4Z(B") ("/yc" nil "$B?*(B") ("lyc" nil "$B=k(B") (";yc" nil "$B@F(B") ("oyc" nil "$BI!(B") ("pyc" nil "$BC"(B") ("nyv" nil "$B1H(B") ("myv" nil "$B6J(B") (",yv" nil "$B8`(B") ("hyv" nil "$BEm(B") ("jyv" nil "$B8c(B") ("kyv" nil "$B?C(B") ("yyv" nil "$BDC(B") ("uyv" nil "$B?5(B") ("iyv" nil "$B5r(B") (".yv" nil "$B7[(B") ("/yv" nil "$BH+(B") ("lyv" nil "$BE%(B") (";yv" nil "$B:O(B") ("oyv" nil "$BLG(B") ("pyv" nil "$B<@(B") ("nyb" nil "$B3*(B") ("myb" nil "$BDr(B") (",yb" nil "$B9N(B") ("hyb" nil "$B0=(B") ("jyb" nil "$B4l(B") ("kyb" nil "$BHh(B") ("yyb" nil "$BIf(B") ("uyb" nil "$B@N(B") ("iyb" nil "$B7*(B") (".yb" nil "$B?$(B") ("/yb" nil "$BC,(B") ("lyb" nil "$B1Y(B") (";yb" nil "$BJP(B") ("oyb" nil "$B;l(B") ("pyb" nil "$B2{(B") ("nya" nil "$BCv(B") ("mya" nil "$BO6(B") (",ya" nil "$B?R(B") ("hya" nil "$B7G(B") ("jya" nil "$B3Y(B") ("kya" nil "$BB(B") ("nyg" nil "$BB1(B") ("myg" nil "$BD:(B") (",yg" nil "$B5[(B") ("hyg" nil "$BMm(B") ("jyg" nil "$BJ)(B") ("kyg" nil "$B;Q(B") ("yyg" nil "$B2Y(B") ("uyg" nil "$BB.(B") ("iyg" nil "$BE!(B") (".yg" nil "$BC`(B") ("/yg" nil "$B8O(B") ("lyg" nil "$BC0(B") (";yg" nil "$BHr(B") ("oyg" nil "$B;I(B") ("pyg" nil "$BB+(B") ("nyq" nil "$B11(B") ("myq" nil "$BD7(B") (",yq" nil "$BJi(B") ("hyq" nil "$BI$(B") ("jyq" nil "$B=\(B") ("kyq" nil "$B3c(B") ("yyq" nil "$B8<(B") ("uyq" nil "$B4U(B") ("iyq" nil "$BN=(B") (".yq" nil "$BK*(B") ("/yq" nil "$B=l(B") ("lyq" nil "$B@p(B") (";yq" nil "$B?,(B") ("oyq" nil "$B<*(B") ("pyq" nil "$BK5(B") ("nyw" nil "$B1L(B") ("myw" nil "$B94(B") (",yw" nil "$B25(B") ("hyw" nil "$B9D(B") ("jyw" nil "$B>~(B") ("kyw" nil "$BGn(B") ("yyw" nil "$BI9(B") ("uyw" nil "$BLP(B") ("iyw" nil "$BJ4(B") (".yw" nil "$B2y(B") ("/yw" nil "$B98(B") ("lyw" nil "$BFO(B") (";yw" nil "$BIR(B") ("oyw" nil "$BCy(B") ("pyw" nil "$B2f(B") ("nye" nil "$BM1(B") ("mye" nil "$B8/(B") (",ye" nil "$BL8(B") ("hye" nil "$B8P(B") ("jye" nil "$B:N(B") ("kye" nil "$B6-(B") ("yye" nil "$B?"(B") ("uye" nil "$B5n(B") ("iye" nil "$B0W(B") (".ye" nil "$B:0(B") ("/ye" nil "$BD~(B") ("lye" nil "$BJ;(B") (";ye" nil "$B27(B") ("oye" nil "$B>O(B") ("pye" nil "$BD6(B") ("nyr" nil "$B8](B") ("myr" nil "$BMs(B") (",yr" nil "$B8*(B") ("hyr" nil "$B@g(B") ("jyr" nil "$BN%(B") ("kyr" nil "$B ;; Author: GUNJI Takao ;; Maintainer: SKK Development Team ;; Version: $Id: skk-tutcode.el,v 1.16 2010/08/24 09:13:28 skk-cvs Exp $ ;; Keywords: japanese, mule, input method, TUT-code ;; Last Modified: $Date: 2010/08/24 09:13:28 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 2, or ;; (at your option) any later version. ;; Daredevil SKK is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; ;; ;; TUT-code was developed by Hajime Ohiwa and ;; Takaaki Takashima of Toyohashi University of Technology in 1982. ;; TUT-code is a kind of direct input method of Japanese with two ;; strokes. You can pronounce it `Tea You Tea' or `TUT' like ;; Tutankamen's nickname, king `TUT'. ;; ;; At Mon, 23 Aug 1999 01:13:34 +0900, ;; Hajime Ohiwa wrote: ;; ;; > $B;d$O!V$F$#!<$f!<$F$#!<$3!<$I!W$HFI$s$G$$$^$9$,!"$b$&>/$78@$$0W$$J}$,(B ;; > $B$h$$$H;W$$$^$9!#(BTUT$B$O$3$l$r3+H/$7$?K-665;=Q2J3XBg3X$NN,>N$G$9!#(B ;; > $BJF9q?M$K8+$;$?$i!"!V$?$C$H!W$HFI$_$^$7$?!#$D$?$s$+!<$a$s2&$N$3$H$r1Q8l(B ;; > $B$G$O(B king TUT $B$H8F$S!"H/2;$O!V$?$C$H!W$J$N$@$=$&$G$9!#!V$?$C$H$3!<$I!W(B ;; > $B$NJ}$,$h$$$+$b$7$l$^$;$s!#8f0U8+$r$*J9$+$;2<$5$$!#(B ;; ;; To get more information, access following URL; ;; http://www.crew.sfc.keio.ac.jp/~chk/ ;; ;; To join TUT-code mailing list, send mail like following; ;; To: tut-code-control@crew.sfc.keio.ac.jp ;; Subject: APPEND ;; Body: an introduction of yourself (null body is available). ;; ;; ;; ;; Put the following lines in your .skk. ;; ;; (require 'skk-tutcdef) ;; ;; If you would like to customize some definitions in skk-tutcdef.el, ;; you could do, for example; ;; ;; (require 'skk-tutcdef) ;; ;; your customizations... ;; (setq skk-rom-kana-rule-list ;; '(...)) ;; ;; ;; - Efficient mazegaki (e.x. provided by T-code driver) support. ;; - To switch easily okurigana prefix in jisyo buffer. ;;; Code: (eval-when-compile (require 'skk)) ;;;###autoload (defgroup skk-tutcode nil "SKK/TUT-code related customization." :prefix "skk-tutcode-" :group 'skk-input-enhanced :group 'skk) ;; all prefix of functions, variables and constants are ;; `skk-tutcode-'. ;;;###autoload (defcustom skk-tutcode-use-touch16+ nil "*Non-nil $B$G$"$l$P!"(BTouch16+ $B3HD%%3!<%I$rMxMQ$9$k!#(B" :type 'boolean :group 'skk-tutcode) ;;;###autoload (defun skk-tutcode-mode-off (foo) (skk-latin-mode t) (skk-insert-str "\\")) ;;;###autoload (defun skk-tutcode-display-code (&optional arg) ;; adapted from skk-kcode.el "$B%]%$%s%H$K$"$kJ8;z$N(B EUC $B%3!<%I!"(BJIS $B%3!<%I!"(BTUT $B%3!<%I$rI=<($9$k!#(B" (interactive "P") (if (eobp) (skk-error "$B%+!<%=%k$,%P%C%U%!$N=*C<$K$"$j$^$9(B" "Cursor is at the end of the buffer") (skk-tutcode-display-code-1 (buffer-substring-no-properties (point) (skk-save-point (forward-char 1) (point)))) ;; $B%(%3!<$7$?J8;zNs$r%+%l%s%H%P%C%U%!$KA^F~$7$J$$$h$&$K!#(B t)) (defun skk-tutcode-display-code-1 (str) (let* ((char (string-to-char str)) (charset (char-charset char)) (charset-list (if (charsetp 'japanese-jisx0213-1) '(japanese-jisx0213-1 japanese-jisx0213-2 japanese-jisx0208 japanese-jisx0208-1978) '(japanese-jisx0208 japanese-jisx0208-1978)))) (cond ((memq charset charset-list) (let* ((char1-j (skk-char-octet char 0)) (char1-k (- char1-j 32)) (char1-e (+ char1-j 128)) (char2-j (skk-char-octet char 1)) (char2-k (- char2-j 32)) (char2-e (+ char2-j 128)) (char3 (skk-tutcode-get-code str))) (message "$B!X(B%s$B!Y(B EUC: %2x%2x (%3d, %3d), JIS: %2x%2x (%3d, %3d), KUTEN: (%2d, %2d), TUT: `%s'" str char1-e char2-e char1-e char2-e char1-j char2-j char1-j char2-j char1-k char2-k char3))) ((memq charset '(ascii latin-jisx0201)) (message "\"%s\" %2x (%3d)" str (skk-char-octet char 0) (skk-char-octet char 0))) (t (skk-error "$BH=JL$G$-$J$$J8;z$G$9(B" "Cannot understand this character"))))) ;; some new stuff (defun skk-tutcode-get-code (key) (let ((srkr-list skk-rom-kana-rule-list) (cont t) (val nil)) (while cont (if (null srkr-list) (setq cont nil) (if (listp (car (cdr (cdr (car srkr-list))))) (cond ((string= key (car (car (cdr (cdr (car srkr-list)))))) (setq cont nil val (car (car srkr-list)))) ((string= key (cdr (car (cdr (cdr (car srkr-list)))))) (setq cont nil val (car (car srkr-list)))) (t (setq srkr-list (cdr srkr-list)))) (cond ((string= key (car (cdr (cdr (car srkr-list))))) (setq cont nil val (car (car srkr-list)))) (t (setq srkr-list (cdr srkr-list))))))) val)) (provide 'skk-tutcode) ;;; skk-tutcode.el ends here