pax_global_header00006660000000000000000000000064143275615150014523gustar00rootroot0000000000000052 comment=c24a624884a3cfb0c28d6d5b9eb19e01387f0917 skk-dev-ddskk-c24a624/000077500000000000000000000000001432756151500145145ustar00rootroot00000000000000skk-dev-ddskk-c24a624/.github/000077500000000000000000000000001432756151500160545ustar00rootroot00000000000000skk-dev-ddskk-c24a624/.github/workflows/000077500000000000000000000000001432756151500201115ustar00rootroot00000000000000skk-dev-ddskk-c24a624/.github/workflows/ci.yml000066400000000000000000000013261432756151500212310ustar00rootroot00000000000000name: CI on: [pull_request, push] jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: emacs-version: - 24.3 - 24.4 - 24.5 - 25.1 - 25.2 - 25.3 - 26.1 - 26.2 - 26.3 - 27.1 - snapshot steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Emacs uses: purcell/setup-emacs@master with: version: ${{ matrix.emacs-version }} - name: Download if Emacs version is 24.3 run: make downloads if: ${{ matrix.emacs-version == '24.3' }} - name: Run tests run: make elc test skk-dev-ddskk-c24a624/ChangeLog000066400000000000000000000414011432756151500162660ustar00rootroot000000000000002020-09-06 Tsuyoshi Kitamoto * skk.el (skk-henkan-show-candidates-buffer, skk-show-num-type-info): Remove code for window management. * skk-annotation.el (skk-annotation-add): Ditto. * skk-vars.el (skk-candidate-buffer-display-fringesl, skk-candidate-buffer-fringe-width) (skk-candidate-buffer-delete-other-windows): Remove variables. 2020-09-04 Tsuyoshi Kitamoto * bayesian/bskk, bayesian/skk-bayesian.el: * experimental/skk-correct.el, experimental/skk-dinsert.el, experimental/skk-exsearch.el: * experimental/skk-ja-names.el, experimental/skk-pre-henkan.el, experimental/skk-w3m.el: * tut-code/skk-def.el, tut-code/skk-mkmgk.el, tut-code/skk-tutcdef.el, tut-code/skk-tutcode.el: * Makefile, SKK-CFG, SKK-MK, ccc.el, cdb.el, leim-list.el.in, make1.bat: * skk-abbrev.el, skk-annotation.el, skk-auto.el, skk-azik.el, skk-cdb.el, skk-comp.el: * skk-cursor.el, skk-cus.el, skk-dcomp.el, skk-decor.el, skk-develop.el, skk-emacs.el: * skk-gadget.el, skk-inline.el, skk-isearch.el, skk-jisx0201.el, skk-jisx0213.el, skk-jisyo-edit-mode.el: * skk-kakasi.el, skk-kcode.el, skk-leim.el, skk-look.el, skk-lookup.el, skk-macs.el, skk-num.el: * skk-search-web.el, skk-server.el, skk-setup.el.in, skk-show-mode.el, skk-study.el, skk-tankan.el: * skk-tut.el, skk-vars.el, skk-version.el, skk-viper.el, skk.el, tar-util.el: Remove e-mail address for SKK Development Team. Add URL for github. 2020-09-01 Tsuyoshi Kitamoto * skk.el: Wrapped org-meta-return() and markdown-enter-key() in skk-wrap-newline-command(). 2020-08-23 Tsuyoshi Kitamoto * skk-vars.el (skk-indicator-prefix, skk-indicator-suffix-func): New variables. * skk.el (skk-make-indicator-alist-1): Use it. 2020-08-17 Tsuyoshi Kitamoto * ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.2.daredevil: * ChangeLog.3, ChangeLog.4, ChangeLog.5: Change coding-system to utf-8. * ChangeLog.6: Add new file. * ChangeLog: Split file to ChangeLog.6. 2020-08-16 Tatsuya Kinoshita * skk.el (skk-make-indicator-alist-1): Correct the mode argument for skk-mode-string-to-indicator. * skk-cursor.el (skk-cursor-off-1): Check for ccc-default-cursor-color. 2020-08-15 Tsuyoshi Kitamoto * Version 17.1 Neppu Released. * skk-version.el, docs/conf.py, ddskk-pkg.el, Makefile: Bump SKK version to 17.1. 2020-04-03 Tsuyoshi Kitamoto * skk-vars.el (skk-rom-kana-base-rule-list): Add new rule `zn'. 2020-03-31 Tsuyoshi Kitamoto * skk-emacs.el (skk-jis2sjis2): Move function to skk-kcode.el. 2020-03-30 Tsuyoshi Kitamoto * skk-emacs.el (skk-tooltip-relative-p): Remove function for GNU Emacs 23. (skk-tooltip-show-at-point): Do not use it. 2020-03-29 Tsuyoshi Kitamoto * README.md: Remove Openlab-mailing-list. 2020-03-28 Tsuyoshi Kitamoto * README.md: Update. 2020-03-24 Tsuyoshi Kitamoto * skk.el (skk-henkan-show-candidates-buffer): Add :extend parameter. * experimental/rdbms/*: Remove files. no longer maintained. 2020-03-22 Tsuyoshi Kitamoto * skk-vars.el (skk-auto-paren-string-alist): Remove whitespace. * context-skk.el: Fix footer. 2020-03-21 Tsuyoshi Kitamoto * skk.el (skk-search-itaiji): Fix comment. 2020-03-19 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): Apply face when Unicode. 2020-03-15 Tsuyoshi Kitamoto * skk-develop.el (skk-submit-bug-report): Remove function. * skk-emacs.el (skk-emacs-visit-website): Rename from skk-emacs-visit-openlab. (skk-emacs-modeline-menu-items, skk-emacs-menu-resource-ja): Modify. * skk-vars.el (skk-ml-address, skk-ml-command-address): Remove Variables. * skk-tut.el (skktut-end-tutorial): Remove it. 2020-03-10 Tsuyoshi Kitamoto * skk-vars.el (skk-jisyo): New function. (skk-jisyo): Update custom-type. (skk-car): Remove function. * skk.el (skk-mode, skk-save-jisyo, skk-save-jisyo-original): Use function skk-jisyo(). (skk-update-shared-jisyo, skk-save-jisyo-as,skk-check-size-and-do-save-jisyo): Use it. (skk-make-new-jisyo, skk-record-jisyo-data, skk-count-jisyo-candidates): Use it. (skk-create-file, skk-get-jisyo-buffer): Use it. (skk-reread-private-jisyo, skk-update-jisyo-original): Do not use function skk-car(). * skk-tut.el (skk-get-jisyo-buffer): Use it. * skk-study.el (skk-study-save-1, skk-study-read-1): Use it. * skk-jisyo-edit-mode.el (skk-edit-private-jisyo, skk-edit-private-jisyo-1): Use it. * skk-comp.el (skk-comp-from-jisyo): Do not use function skk-car(). 2020-03-08 Tsuyoshi Kitamoto * skk-study.el (skk-study-save-1, skk-study-read-1): Accept '(PATH . CODING) cons-cell. * skk-jisyo-edit-mode.el (skk-edit-private-jisyo): Ditto. * skk.el (skk-get-jisyo-buffer): Ditto. (skk-update-jisyo-original): Ditto. * skk-vars.el (skk-car): New function. (skk-dcomp-multiple-keep-point-buffer-list): Use it. * skk.el (skk-mode, skk-save-jisyo, skk-save-jisyo-original,): Use it. (skk-update-shared-jisyo, skk-save-jisyo-as): (skk-check-size-and-do-save-jisyo, skk-make-new-jisyo, skk-reread-private-jisyo): (skk-record-jisyo-data, skk-create-file, skk-count-jisyo-candidates): * skk-jisyo-edit-mode.el (skk-edit-private-jisyo-1): Use it. * skk-comp.el (skk-comp-from-jisyo): Use it. 2020-03-06 Tsuyoshi Kitamoto * Makefile: maintenance. 2020-03-04 Tsuyoshi Kitamoto * Makefile (test): fix. 2020-03-03 Tsuyoshi Kitamoto * Makefile (test): Add byte-compile files in nicola/ directory when `make test'. 2020-03-01 Tsuyoshi Kitamoto * skk-emacs.el (skk-tooltip-show-at-point): Use function read-event() instead of next-command-event(). 2020-02-29 Tsuyoshi Kitamoto * skk-macs.el (next-command-event): Remove function. * skk.el (skk-henkan-show-candidates): Use function read-event() instead of next-command-event(). * skk-tut.el (skktut-end-tutorial): Ditto. * skk-sticky.el (skk-insert): Ditto. * skk-kcode.el (skk-input-by-code-or-menu-jump,skk-input-by-code-or-menu-1): Ditto. * skk-isearch.el (skk-isearch-start-henkan): Ditto. * skk-gadget.el (skk-clock): Ditto. 2020-02-29 Tsuyoshi Kitamoto * Makefile (test): テスト実行時に bayesian と tut-code のバイトコンパイルを追加. * tut-code/skk-def.el: Always require skk-vars.el. * tut-code/skk-tutcode.el: Always require skk.el. * tut-code/skk-mkmgk.el: Always require skk-macs.el. * tut-code/skk-mkmgk.el (skk-make-mazegaki-dic): Use function insert-file-contents() or write-region() instead of insert-file-contents-as-coding-system() or write-region-as-coding-system() (skk-make-mazegaki-dic-1): Use macro with-current-buffer() instead of save-excursion() + set-buffer(). Use function length() instead of skk-str-length(). Use macro with-current-buffer() instead od save-excursion() + set-buffer(). (skk-make-mazegaki-dic-region): Use function insert-file-contents() instead of insert-file-contents-as-coding-system(). (skk-mkmgk-filter): Use function length() instead of skk-str-length(). 2020-02-25 Tsuyoshi Kitamoto * skk-macs.el (skk-make-raw-arg): cl-case() を cond() へ書き換え. (skk-string<): コメントを追加. ほか、不要と思われるコメント行を削除. 2020-02-24 Tsuyoshi Kitamoto * skk-macs.el (character-to-event): Remove function. (skk-reset-henkan-count): Do not use function character-to-event(). * skk-emacs.el (skk-tooltip-show-at-point): Ditto. * skk-isearch.el (skk-isearch-start-henkan): Ditto. 2020-02-24 Tsuyoshi Kitamoto * skk-vars.el (find-coding-system): Remove function. (skk-kcode-charset): Do not use function find-coding-system(). (skk-code-n1-max): Do not use function find-coding-system(). * skk-macs.el (skk-find-coding-system): Do not use function find-coding-system(). * skk-jisx0213.el: Remove require jisx0213. 2020-02-24 Tsuyoshi Kitamoto * skk-tut.el, skk.el: Remove unnecessary autoload function. * skk-lookup.el: Fix indent. * make1.bat (compile): Modify. * Makefile (test): Use long options. 2020-02-24 Tsuyoshi Kitamoto * skk-emacs.el: Add declare-function x-show-tip. * skk-dcomp.el: Remove declare-function skk-comp-get-candidate. * skk-comp.el: Remove defalias skk-start-henkan-with-completion. * skk.el (skk-setup-abbrev-mode-map-options): Use function skk-comp-start-henkan instead of skk-start-henkan-with-completion. 2020-02-24 Tsuyoshi Kitamoto * bayesian/skk-bayesian.el: require skk-autoloads. * maint/ptexinfmt.el (texinfo-format-verb): Use delete-char() instead of delete-backward-char(). * maint/install.el (install-get-default-package-directory): (install-update-package-files): Remove functions for XEmacs. * maint/install-info.el (install-info-1, install-info-delete-entry): (install-info-add-groups): Use with-current-buffer() instead of save-excursion() + set-buffer(). 2020-02-23 Tsuyoshi Kitamoto * Makefile (elc): Do not use SKK-MK-compile() when make. Generate autoload files before make get. * make1.bat: Ditto. * context-skk.el, ddskk-pkg.el, skk-act.el, skk-annotation.el, skk-auto.el: * skk-azik.el, skk-cdb.el, skk-comp.el, skk-cursor.el, skk-cus.el, skk-dcomp.el: * skk-decor.el, skk-develop.el, skk-emacs.el, skk-gadget.el, skk-hint.el: * skk-inline.el, skk-isearch.el, skk-jisx0201.el, skk-jisyo-edit-mode.el: * skk-kakasi.el, skk-kcode.el, skk-leim.el, skk-look.el, skk-lookup.el: * skk-macs.el, skk-num.el, skk-search-web.el, skk-server.el, skk-show-mode.el: * skk-sticky.el, skk-study.el, skk-tankan.el, skk-tut.el, skk-vars.el: * skk-viper.el, skk.el: Modify. * SKK-MK (SKK-MK-compile): Do not load files skk-autoloads.el, skk.el when Interactive Install. * maint/install.el: Move from top directory. 2020-02-20 Tsuyoshi Kitamoto * skk-tut.el (skktut-enable-advice, skktut-disable-advice): Remove unnecessary let(). * skk-emacs.el (skk-tooltip-hide): Remove Alias. * skk.el (skk-henkan-in-minibuff, skk-kakutei): Use tooltip-hide() instead of skk-tooltip-hide(). 2020-02-16 Tsuyoshi Kitamoto * skk-decor.el: New file. * SKK-MK: Use skk-decor.el. * skk-vars.el (skk-inline-show-vertically-decor,skk-tooltip-show-at-point-decor) (skk-henkan-show-candidates-buffer-decor): New variables. (skk-inline-show-vertically-cand-face, skk-inline-show-vertically-anno-face) (skk-tooltip-show-at-point-cand-face, skk-tooltip-show-at-point-anno-face) (skk-henkan-show-candidates-buffer-cand-face, skk-henkan-show-candidates-buffer-anno-face) New faces. * skk.el (skk-henkan-show-candidates-buffer): Use variable skk-henkan-show-candidates-buffer-decor. * skk-inline.el (skk-inline-show-vertically): Use variable skk-inline-show-vertically-decor. * skk-emacs.el (skk-tooltip-show-at-point): Use variable skk-tooltip-show-at-point-decor. 2020-02-16 Tsuyoshi Kitamoto * skk-macs.el (skk-ding, skk-char-charset, skk-charsetp): (skk-local-variable-p, skk-last-command-char, skk-set-last-command-char): (skk-region-active-p, skk-process-kill-without-query, skk-window-body-height): (skk-fit-window): Remove functions. * skk-gadget.el (skk-clock): Use function ding() instead of skk-ding(). * skk-kcode.el (skk-display-code, skk-list-chars-move-to-charstr): Use function char-charset() instead of skk-char-charset(). * skk.el (skk-setup-charset-list): Use function charsetp() instead of skk-charsetp(). (skk-setup-modeline): Use function local-variable-p() instead of skk-local-variable-p(). (skk-delete-selection-wrapper, skk-insert): Use last-command-event instead of skk-last-command-char(). (skk-insert, skk-set-henkan-point): Use set() instead of skk-set-last-command-char(). * skk-tut.el (skk-insert): Use last-command-event instead of skk-last-command-char(). * skk-jisx0201.el (skk-insert): Use last-command-event instead of skk-last-command-char(). * skk-isearch.el (skk-isearch-message, skk-isearch-start-henkan): Use last-command-event instead of skk-last-command-char(). * skk-hint.el (skk-insert): Use last-command-event instead of skk-last-command-char(). (skk-insert): Use set() instead of skk-set-last-command-char(). * skk-dcomp.el (skk-kana-input, skk-abbrev-insert, skk-abbrev-comma): (skk-abbrev-period, skk-comp-do): Use last-command-event instead of skk-last-command-char(). * skk-sticky.el (skk-insert): Use set() instead of skk-set-last-command-char(). * skk-annotation.el (skk-annotation-lookup-region-or-at-point): * skk.el (skk-kana-input,skk-jisx0208-latin-insert): Use function use-region-p() instead of skk-region-active-p(). * skk-annotation.el (skk-annotation-start-python, skkannot-start-dict-process) * skk-server.el (skk-open-network-stream): Use function set-process-query-on-exit-flag() instead of skk-process-kill-without-query(). * skk-dcomp.el (skk-dcomp-multiple-available-p, skk-dcomp-multiple-show): Use function window-body-height() instead of skk-window-body-height(). * skk-inline.el (skk-inline-show, skk-inline-show-vertically): Use function window-body-height() instead of skk-window-body-height(). * skk-annotation.el (skk-annotation-show-buffer): * skk.el (skk-henkan-show-candidates-buffer, skk-show-num-type-info): Use function fit-window-to-buffer() instead of skk-fit-window(). * skk-tut.el (skktut-enable-tutmap): Use function local-variable-p() instead of skk-local-variable-p(). * skk-setup.el.in, skk-annotation.el, skk-isearch.el, skk-inline.el: * skk-cursor.el, skk-annotation.el, skk-kcode.el, skk-tankan.el: * skk-macs.el, skk-tut.el, skk-vars.el, skk.el, skk-viper.el: Remove code for XEmacs. * patches/README.ja, patches/emacs23_1-gtk-fix-dynamic-menus.diff: Remove file (for GNU Emacs 23). * .travis.yml: fix EVM_EMACS. 2020-02-15 Tsuyoshi Kitamoto * skk-vars.el (skk-insert-keysequence): New internal variable. * skk.el (skk-search-romaji): use it. 2020-02-15 Tsuyoshi Kitamoto * skk-annotation.el (skkannot-url-installed-p): Remove function. * skk-vars.el (skkannot-url-installed-p): Remove variable. * skk-kcode.el (skk-make-char): Remove function. * skk-macs.el (skk-called-interactively-p, skk-facep): Remove macro. * skk-tankan.el (skk-tankan-set-char-annotaion): Remove function. * skk.el (skk-multiple-line-message, skk-multiple-line-message-clear): (skk-henkan-count, skk-set-henkan-count, skk-exit-show-candidates): (skk-set-exit-show-candidates): Remove function. * SKK-MK, skk-annotation.el, skk-vars.el, skk-cursor.el: * skk-dcomp.el, skk-gadget.el, skk-isearch.el, skk-jisyo-edit-mode.el: * skk-kcode.el, skk-macs.el, skk-tankan.el, skk-tut.el: * skk-vars.el, skk-viper.el, skk.el: Remove code for XEmacs. * skk-xemacs.el: Remove file. * SKK-CFG: Remove contents for XEmacs. 2020-02-11 Tsuyoshi Kitamoto * skk.el (skk-make-indicator-alist-1): Remove comment. * skk-viper.el: Remove code for GNU Emacs version check. * skk-macs.el (skk-deactivate-input-method): Remove macro skk-deactivate-input-method. * skk-leim.el (skk-leim-exit-from-minibuffer): * skk-isearch.el (skk-isearch-mode-cleanup, skk-isearch-really-early-advice): Use deactivate-input-method instead of skk-deactivate-input-method. * skk-macs.el (skk-set-deactivate-im-func): Remove macro skk-set-deactivate-im-func. * skk-leim.el (skk-activate, skk-auto-fill-activate): * skk-isearch.el (skk-isearch-mode-setup): Use deactivate-current-input-method-function instead of skk-set-deactivate-im-func. * skk-macs.el (skk-called-interactively-p): * skk-emacs.el (skk-search-ja-dic): * skk-develop.el (skk-get-delete-files): Remove code for GNU Emacs 23. * .github/workflows/test.yml: GNU Emacs 24.2 is not supported by this version of SKK. 2020-02-10 Tsuyoshi Kitamoto * cdb.el, install-info.el, skk-cus.el, skk-dcomp.el, skk-emacs.el: * skk-gadget.el, skk-inline.el, skk-isearch.el, skk-kcode.el: * skk-lookup.el, skk-macs.el, skk-study.el, skk.el: use 'cl-lib instead of 'cl. 2020-02-10 Tsuyoshi Kitamoto * SKK-MK: version check when installation. GNU Emacs 23 is not supported by this version of SKK. * skk-version.el, docs/conf.py, ddskk-pkg.el, Makefile: Bump SKK version to 16.3.50. ;; Local Variables: ;; coding: utf-8 ;; End: skk-dev-ddskk-c24a624/ChangeLog.0000066400000000000000000002501001432756151500164220ustar00rootroot000000000000001998-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' --> 「達っし」, `TasSi' -> 「達し」 * 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 `「' and `」' 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: (いきなり日本語ですが f(^_^;;;...) 数値変換 に関する大改造を行なった。 SKK では、"#1", #2" などの数値表現を用いることで、数値変換を行なっ ているが、以前は、異なる数値表現でも変換結果が同じ数値を重複して出 力しないよう、~/.skk-jisyo に候補が見つかっても skk-current-search-prog-list が null になるまで候補を探し、それか ら uniq を行なっていたために、数値変換にかかるオーバーヘッドが大き かったが、一方、 検索 -> uniq -> 数値変換 という作業が 1 回で済んでいたため、skk-henkan-list の扱いが簡単で あった (uniq 後の skk-henkan-list を copy して skk-noconv-henkan-list を作り、skk-henkan-list の各要素には数値変 換後の文字列に入れ替えていた。辞書の更新のためには数値変換の内部表 現と、数値変換後の文字列を把握する必要がある)。 今回の改造で、候補が "#4" の数値表現を含まないときは、一気に skk-current-search-prog-list の全てを検索してしまわずに、通常の変 換と同じように検索を行なうようにした。変換のために 1 回スペースを 押す毎に 検索 -> uniq -> 数値変換 という一連の作業を行なうようになっているので、何度もスペースを押し て変換しまくると、uniq の度に skk-henkan-list と skk-noconv-henkan-list をシンクロさせるのが難しくなってくる。そこ で、 数値変換前の skk-henkan-list; ("#2" "#1" ...) 数値変換後の skk-henkan-list; (("#2 . "一") ("#1" . "1") ...) という風に、skk-henkan-list に直付けで数値変換の内部表現、その数値 変換文字列を表現するようにした (uniq 自体のコストはかなり上がって いるはず)。 * 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 が t のとき ▽モードで、最初の一文字にオ段の文字を入力した直後に入力した大文 字が大文字として認識されないバグを修正。 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さんは、言いました。 the point would be there, Daviesさんは-!-、言いました。 but should be here. Davies-!-、さんは、言いました。 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: ネストしていない defmacro に eval-and-compile を使うのを 止めた。以前はここに eval-when-compile を使っていたが、小林@JAIST さんのご指摘で、 eval-when-compile を使う -> skk.el 内にあるマクロは上手くコンパ イルできる -> でも skk-*.el 内のマクロは上手くコンパイルできない ことに気が付いた。コンパイル時だけ定義しようとするなら、 skk-macro.el などの別ファイルにマクロを集中させ、skk.el, skk-*.el の中で、(eval-when-compile (require 'skk-macro)) しなければならな い。でも今は、マクロの数がそんなに多くないので、これで良しとしましょ う。 * skk-viper.el (vip-join-lines): adviced. スペースの両側の文字セッ トが JISX0208 だったらスペースを取り除く。 1997-03-14 Mikio Nakajima * skk-menu.el: New file. * skk-viper.el: Viper -> SKK の順に起動されたときは、既存のバッファ を全て調査して localized minor-mode-map-alist で SKK 化されていな いものを SKK するようにした。 * skk-viper.el (vip-intercept-ESC-key): adviced. 変換中に ESC キー を押すと確定する。 * skk-vip.el: revival. Emacs 19.28 では Viper は素直に動かない...。 VIP を使いましょう。 * skk.el (skk-j-mode-map, skk-abbrev-mode-map, skk-zenkaku-mode-map): skk-use-vip が non-nil のときは、M- プレフィッ クスで始まるキーバインドを定義しないようにした。 (skk-setup-special-midashi-char): minor-mode-map-alist を使用した キー定義でも有効になるようにした。 (skk-jisx0208-to-ascii): New function. Mule-3 で、JISX0208 の英数 字や記号類を ASCII に変換するコードが実装されていなかったので、対 応 (XEmacs 未対応! 救援求む)。 (skk-search-jisyo-file-1): enable-multibyte-characters を nil にバ インドするのを止めた。 * skk-comp.el (skk-completion): 「だい6」など数字を含む変換でも見 出し語の補完が効くようにした。例えば、 「▽だい6」-> TAB -> 「▽だい6けいやくねんど」 など。 * skk-num.el (skk-compute-numeric-henkan-key): (enable-multibyte-characters を t にバインドするようにした。 この変数が nil だと例えば (string-match "[0-9]" "だい6") が non-nil (0) を返してしまう。 1997-03-13 Hideki Sakurada * skk-forword.el XEmacs で skk-unread-event を dispatch-event の defalias としていたのを止め、unread-command-events へ append する 形で、インライン関数として実装。 1997-03-11 Mikio Nakajima * skk-viper.el (vip-del-backward-char-in-insert): adviced. ▽モー ド、▼モードでの動きを SKK 化。 キーマップの調整のために vip-normalize-minor-mode-map-alist と (setq-default minor-mode-map-alist minor-mode-map-alist) を使用。 * skk.el (skk-middle-list): New function. 例えば、'(A B C D) の B の後に '(X Y Z) というリストを挿入し、'(A B X Y Z C D) にする、と いう作業を副作用を利用して効率良く行なう。 * 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 を SKK より先にロードしていても VIPER が併用できる ようにした。 1997-03-02 Hideki Sakurada * skk-forword.el skk-read-event に next-event でなく next-command-event を使うようにした。 * skk-forword.el (skk-this-command-key): 廃止。 * skk-isearchl.el: XEmacs で「とりあえず動く」ように変更 (ちゃんと isearch-exit で抜けないとおかしくなります。) 1997-03-02 Murata Shuuichirou * skk-viper.el: minor-mode-map-alist を使う SKK 10.x を Viper に対 応させた。 * skk.el: XEmacs での face 対応。 1997-03-01 Mikio Nakajima * skk.el 単語登録時に skk-abbrev-mode や eval-expression が使えな い不具合を修正。 skk-yes-or-no-p や skk-message を使えるのに使っていなかった個所を 修正。 マクロはコンパイル時のみ使用し、ロード時は定義しないように変更 (バ イトコンパイルしないで使うことはできなくなりました)。 * skk-tut.el (skk-tutorial) : (string< "9.4" "10.1") が意に反して nil を返すので、skk-version の比較を数値で行なうようにした。 1997-02-26 Shuhei KOBAYASHI * skk.el: XEmacs + window-system 対応。 (skk-background-mode): BackgroundMode という resource は XEmacs にはありませんので, default の face の 'background property を使 うことにしました. また, x-color-values に相当する関数は color-rgb-components なのですが, この引数は color-name (string) ではなく color-specifier (first-class object) になっています. (skk-default-cursor-color): frame-parameters (frame-properties) ではなぜか cursor-color が得られませんので, frame-property を使 用しています. (set-cursor-color): New function. (skk-change-cursor-when-ovwrt): bar-cursor 変数に ovwrt-mode の 値を代入する形にした。 1997-02-28 Mikio Nakajima * skk.el (skk-toggle-kana): カレントバッファで最初に変換を行なうま でに▽モードで skk-toggle-kana を使って平仮名 -> カタカナ変換を行 なうと、カレントバッファの全ての平仮名がカタカナに変換されてしまう バグをフィックス。 1997-02-26 Mikio Nakajima * skk-isearch.el: GNU Emacs で動かなかった不具合を修正。 1997-02-25 Hideki Sakurada * skk.el (skk-henkan-in-minibuff): read-from-minibuffer を呼ぶとこ ろで、キーマップとして skk-j-mode-map を渡していますが、これは多分 マズいと思います。実際、Mule3 では単語登録時に英数字を入力できませ んでした。 (この応急処置もパッチに含めておきました) * XEmacs で動くようになった (但し window-system を nil にしておか ないと動かない)。何も手を付けていない、又は中途半端なままなのは、 色を付ける部分と isearch。 1997-02-2? Mikio Nakajima * skk.el: skk-e19.el を skk.el に統合。この統合により要らなくなっ た advice 達はオリジナルの中へマージしました。同時に Emacs 18 対応 コードを除去。 (skk-search-excluding-word-pattern-func): 特定の文字列を個人辞書に 取り込まない機能を作りました。 easymenu.el を使ってメニュー関連のコードを読み易く簡単にしました (でも lambda を使った無名関数はメニューから上手く実行できない...)。 Ovwrt マイナーモードでカーソルの幅を小さくする機能を付けました。こ の機能は、お好みでオン/オフできます。 マクロでなきゃ困るものだけマクロで残し、単にインライン化を狙ったも のは defsubst を使うようにしました。 skk-isearch.el: SKK-8.x 対応コードが残っていたので消しました。 Mule 3 では select-window-hook の廃止が有力なので、一応これになら い、select-window-hook を利用しているコードを廃止しました。 バグレポ用の関数のアドレスが SKK ML (for user) になってましたので、 これを修正しました。 SKK をコンベンショナルなマイナーモード化することに一応成功しました。 仕組を簡単に言いますと、skk-mode というダミーのマイナーモード (SKK が起動されると、関数と同名の変数が入力モードにかかわらず t になっ ており、独自のマイナーモードマップは持たないが、モードラインを操作 するキー変数 skk-input-mode-string を持つ) を頂点に、4 つの実マイ ナーモードマップがあります。 +----------------------+----- skk-mode ------+-------------------+ | | | | | | | | skk-j-mode skk-ascii-mode skk-zenkaku-mode skk-abbrev-mode ASCII ZENKAKU EIMOJI ABBREVIATION (C-j wakes up skk-j-mode) skk-j-mode-map skk-ascii-mode-map skk-zenkaku-mode-map skk-abbrev-mode-map skk-katakana: nil HIRAKANA skk-j-mode-map skk-katakana: t KATAKANA この実マイナーモードは、それぞれ独自のマイナーモードマップを持って おり、それぞれの関数名と同名の変数が t になったときにそれぞれのマ イナーモードが有効になります。モードラインを操作する変数は独自に持 たず、代りに skk-input-mode-string に自分の入力モードを示す文字列 を代入し、force-mode-line-update を呼んでモードラインの表示を更新 するようになっています。 skk-j-mode はかな・カナモードの両方に対応するマイナーモードキーマッ プを持っています。これは、skk-katakana という変数をキーにして、キー ボード入力直後に入力される文字列を決定しており、キーバインドとして は一種類です。 {VIP|VIPER}には対応しないなどの不具合もありますが、 skk-emulate-original-map や skk-isearch-* 類は、順調に動いており、 基礎的なところは大丈夫と思われます。 minor-mode-map-alist を利用することで、use-local-map に defadvice する、というようなトリッキーなことをせずに済むようになりましたし、 skk-emulate-original-map が簡単になったりと、結構ソースは簡素化さ れたような気がします。 その他、Emacs Lisp Manual を読んで、Emacs のコンベンショナルなネー ミング規則にできるだけならうようにし、また、それ以外でもできるだけ 統一的なネーミングを付けるようにしているので、変数名、関数名は、従 来のものと変更されてるものが色々あります。これはお手数ですが、ソー スを見ていただくということで勘弁して下さい。ネーミングが変だ、とい うようなご指摘がありましたら、どんどんお願いいたします。 ;; Local Variables: ;; coding: utf-8 ;; End: skk-dev-ddskk-c24a624/ChangeLog.1000066400000000000000000001167361432756151500164430ustar00rootroot000000000000001999-11-03 Mikio Nakajima * 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 ▽ mode. 1999-10-30 Tsukamoto Tetsuo * experimental/skk-hankaku-mode.el: New experimental program. 1999-10-27 FUKANO Masaaki * doc/skk.texi (入力モードを示すカーソル色に関する設定): 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 (お願い): 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 `【' and `】' 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関連ソフトウェア): Add `skkfep内蔵jvim' 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関連ソフトウェア): 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関連ソフトウェア): 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 が t のときの処理を 改良。 1999-08-28 Masahiko Sato * vip.el (skk-pre-command): defadvice で skk-foreword.el での定義 を変更。 * skk-foreword.el (skk-pre-command): this-command が vip-delete-backward-char の場合の処理を vip.el に移した。 1999-08-27 Masahiko Sato * vip.el (vip-skk-mode-on): (add-hook 'pre-command-hook 'skk-pre-command nil 'local) を追加。 (vip-skk-mode-off): 以下の行を削除 (setq skk-mode nil) (vip-skk-mode-off): (if skk-abbrev-mode (skk-j-mode-on)) を先頭に追加。変数 vip-skk-abbrev-mode が不要になった。 * skk-foreword.el (skk-pre-command): skk-pre-command を実行しない コマンドのリストに vip-delete-backward-char を追加。 * skk.el (abort-recursive-edit): pre-command-hook に対する add-hook が local になるようにした。skk.el 全体で同様の変更をした。 1999-08-25 Masahiko Sato * skk.el: vip 関連のコードをすべて削除。 (skk-mode): 最初に skk-mode に入ったとき: (require 'skk-autoloads) (if skk-use-numeric-conversion (require 'skk-num)) を追加. (skk-input-mode-string): buffer local にした。理由は複数の mode line があるとき、他の mode line に影響しないようにするため。 (skk-update-jisyo-original): 丁度 skk-jisyo-save-count 回だけ辞書 を更新したときにセーブするようにした。これまでは、例えば、 skk-jisyo-save-count が 50 ならば 51 回更新したときに辞書がセーブ されていた。 * skk-foreword.el (skk-erase-prefix): skk-kana-start-point が (point-max) かどうかをチェックするようにした。 * skk-autoloads.el: (provide 'skk-autoloads) を追加。 (autoload 'skk-version "skk" nil t nil) を comment out。 * vip.el: minor mode として実装。minor-mode-map-alist の先頭に vip-vi-mode, vip-insert-mode のキーマップがくるようにした。vip の viモードでは vip-vi-mode のキーマップを使用し、insertモードでは vip-insert-mode のキーマップを使用する。local-map を使わないように した。 skk 関連のコードはすべて vip.el に吸収。 viper.el が vip-mode を autoload できなくしているので、Vip-mode を追加。 (provide 'vip) を追加。 (vip-change-mode-line): 17b -> 12b (vip-info-on-file): line number の計算を修正。 (vip-delete-backward-char): 最後の部分を以下のように変更。 (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" ("ッ" . "っ"))' entry. * (skk-rom-kana-rule-list): Add `("mm" "m" ("ン" . "ん"))' entry to insert 「がんま」 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 松井孝雄/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: utf-8 ;; End: skk-dev-ddskk-c24a624/ChangeLog.2000066400000000000000000000762061432756151500164410ustar00rootroot000000000000002000-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. (英単語をあいまいに変換して取り出す): Simplified sample. * READMEs/README.win (APEL の byte-compile): Doc fixed. * READMEs/INSTALL: Ditto. * Makefile (VERSION): Updated to 10.62. 2000-10-27 Tsuyoshi AKIHO * doc/skk.texi: "辞書の入手", "skk-look", "skk-lookup" について加筆。 2000-10-26 Tetsuo Tsukamoto * READMEs/FAQ.txt (Emacs 20 に SKK 9.6 がインストールできません。, 全く漢字が出てきません。, チュートリアルが起動できません。, スペー スを押しても変換できません。): New questions. * READMEs/NEWS: Add description. * doc/skk-faq.texi (Emacs 20 に SKK 9.6 がインストールできません。, 全く漢字が出てきません。, チュートリアルが起動できません。, スペー スを押しても変換できません。): New subsections. 2000-10-25 Mikio Nakajima * doc/skk-faq.texi (Q.1-4 SKK はどんなオペレーティングシステムで使 えますか?): Add cross reference to `Q.2-4 APEL って何ですか?'. (Q.1-7 APEL に依存せずに SKK だけで済むように開発してもらえません か?): Ditto. (Q.2-5 色々別に入手するものがあってインストールが難しいですね。): Ditto. 2000-10-25 Tetsuo Tsukamoto * READMES/FAQ.txt (左手の小指を SHIFT で酷使したくありません。): New question. * doc/skk-faq.texi (左手の小指を SHIFT で酷使したくありません。): New subsection. 2000-10-23 Tsuyoshi AKIHO * READMEs/README.win: Maintrunk 用の設定に変更。Mule for Windows では SKK-CFG を編集することを追加。 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 のインストール): Add reference to 「Q.2-4 APEL って何ですか?」. * 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 形式の英和辞書を作る方法がある、と聞いたのですが。): Change node name to `[Q.4-4] SKK 形式の英和辞書があると聞いたので すが。 '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 「ディレクトリィ」to「ディレクトリ」 and 「エントリー」 to 「エントリ」. (APEL のインストール): Add description about what APEL is. Recommend using latest version of APEL. (辞書の保存): Put on @vindex skk-backup-jisyo and skk-jisyo. Add description about how to change filename "~/.skk-jisyo" or "~/.skk-jisyo.BAK". (最も基本的な設定): Add note for XEmacs/package-install. Remove referece to 「拡張アイディア」 (there's no mentioning about key bindings). (インクリメント検索の設定): Put on @vindex isearch-mode-hook and isearch-mode-end-hook. Change the latter form for isearch-mode-end-hook in order to set cursor color. Add description about forms for isearch-mode-end-hook if cursor color feature is not used. (起動と終了): Add reference to 「入力モードを示すカーソル色に関す る設定」. (辞書の保存): Change xref node 「辞書の形式」 to 「辞書の種別」. (送り仮名が無い場合の辞書登録): Ditto. (送り仮名が無い場合): Change reference node 「辞書の形式」 to 「送 りありエントリと送りなしエントリ」. (送り仮名が有る場合): Change reference node 「辞書登録モード」 to 「サ変動詞の辞書登録に関する注意」. (SKK Ring Server Openlab メーリングリスト): Do not use the word 「講読」. 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. (プログラム作成方法): 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 (よくある質問とその回答): 復活。 2000-10-13 Tsuyoshi AKIHO * SKK-MK (SKK_LISPDIR): "make PREFIX=dir install" で PREFIX のと おりに elisp がインストールされるように修正. 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 によるツール): Fix. 2000-10-09 Tetsuo Tsukamoto * doc/skk.texi (どのように変換されるか): Use `@samp'. 2000-10-09 Tsuyoshi AKIHO * doc/skk.texi: "サーバー" を "サーバ" に統一。 "インストール" の章を追加。 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 (辞書ツール, 拡張アイディア, SKKメーリングリスト, SKK関連ソフトウェア): 「ですます」調に変更。 2000-10-05 Tetsuo Tsukamoto * doc/skk.texi (飾りつけ, VIP/VIPERとの併用, I-search関連, skk-init-fileのコンパイル, picture-modeとの併用, サーバー関連): 「ですます」調に変更。 * 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 (送り仮名関連, 自動変換開始, 特殊変換, 接頭辞・接尾 辞, 暗黙の確定のタイミング, 領域一括変換, 漢字コード関連, ▼モード の特殊キー, 辞書関連): 「ですます」調に変更。 2000-10-03 Mikio Nakajima * READMEs/FAQ.txt: Change filename description in end of filename tag. 2000-10-03 Tetsuo Tsukamoto * doc/skk.texi (入力モードの一時変更, ■モードにおける文字入力, ポ イントを戻して▽モードへ, 確定変換とその取り消し, 確定アンドゥ, 見 出し語関連): 「ですます」調に変更。 (旧バージョンからの変更点): New chapter. 2000-10-02 Tetsuo Tsukamoto * doc/skk.texi (ファイル構成, ユーザーオプションの設定方法, 辞書の 形式, 辞書に関する設定): 「ですます」調に変更。 2000-10-01 Tsuyoshi AKIHO * doc/skk.texi: "辞書サーバを使いたいときの設定" typo fix. "チュートリアル" 英語のチュートリアルファイルについて記述. "ファイル構成" ファイル名を sort した順番に変更し, skk-cursor.el, skk-develop の記述を追加. "見出し語の補完" 見易いように space を追加. 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 「検索する辞書を増や したいのですが」. 2000-09-29 Tsuyoshi AKIHO * READMEs/FAQ.txt: Add an answer about 「郵便番号辞書」. 2000-09-29 Mikio Nakajima * READMEs/FAQ.txt: Add a description about 「検索する辞書を増やし たいのですが」. * 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 さん提供, Thanks). * doc/skk.texi: SKKオートフィルモード , SKK Ring Server Openlab メーリングリスト typo fix. skk-lookup.el の記述を追加. tools の入手方法を追加. * READMEs/README.win: Mule for Windows では, SKK-CFG で APEL のパ スを設定することを記述. MAKE.BAT info-mule-for-win の記述削除. * Makefile: info-mule-for-win を削除. * make.bat: 同様. * SKK-MK: SKK-MK-compile-info-for-mule4win32 を削除. 2000-09-27 Tetsuo Tsukamoto * doc/skk.texi (SKK 9 と SKK 10 の違い): New section. (SKKの入手方法): Modify for SKK OpenLab. (SKKの作者): Ditto. * skk-num.el (skk-num-type3-kanji-1, skk-num-type5-kanji-1): Don't miss "万" {"萬"}, "億", "兆", "京". 2000-09-26 Tetsuo Tsukamoto * doc/skk.texi (基本的な使用方法): 「ですます」調を採用。 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: `チュートリアル'を追加. `stack-m.el' の記述削除. `SKK Ring Server Openlab メーリングリスト'を追加. `最新情報'を追加. `その他'を`最新情報など'に変更. 2000-09-21 Tsuyoshi AKIHO * skk-tut.el (skktut-end-tutorial): Change address to skk@ring.gr.jp. * doc/skk.texi (最も基本的な設定): typo fix. * SKK-MK: Mule for Windows対策として, SKK-MK-compile-info-for-mule4win32 を追加. * make.bat: info-mule-for-win エントリを追加. del でのファイル削除 を分ける. * Makefile (info-mule-for-win): New target. * READMEs/README.win: MAKE.BAT info-mule-for-win の記述追加. 2000-09-18 Tsuyoshi AKIHO * doc/skk.texi (はじめに): 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 (配布条件, 概要): Remove these chapters. (はじめの設定): <= chapter `インストール'. Simplify. (その他): <= chapter `謝辞とお願い'. Add section `SKKの作者'. 2000-09-15 Mikio Nakajima * 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: メニューに 配布条件 を追加. * skk-gadget.el: eval-when-compile を削除. * skk-kakasi.el: (require 'skk-cursor)を削除. (skk-set-cursor-properly) を使う前に, (featurep 'skk-cursor) で skk-cursor が load されているか check する. * experimental/skk-hankaku-mode.el: 同上. * experimental/rdbms/skk-rdbms.el: 同上. * experimental/skk-jisx0201.el: 同上. skk-set-cursor-color を使う 前に, (featurep 'skk-cursor) で skk-cursor が load されているか check する. 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 (入力モードの一時変更): 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 がシンボルか check する。 (skk-save-jisyo-1):同上 * doc/skk.texi:dbskkd-cdb 配布先, KAKASI, 拡張アイディア, 起動と終 了, 基本的な使用方法, 最も基本的な設定 update & 辞書バッファの文字 コードの設定 typo fix * skk-kakasi.el:(require 'skk) で eval-when-compile を使わない。 (require 'skk-cursor)を追加。 * skk.el (skk-use-fase):DOCSTRING を info と同じくハイライトと書く. 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 (基本的な使用方法, 便利な応用機能とユーザーオプショ ン): 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 (■モードにおける文字変換, 数字や記号文字の入力, 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: utf-8 ;; End: skk-dev-ddskk-c24a624/ChangeLog.2.daredevil000066400000000000000000002763051432756151500204010ustar00rootroot000000000000002000-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 「辞・典・盤」 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 "〈", "〉", "{", "}", "( 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 に SKK 9.6 がインストールできません。, 全く漢字が出てきません。, チュートリアルが起動できません。, スペー スを押しても変換できません。): 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 (左手の小指を SHIFT で酷使したくありません。): 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 はどんなオペレーティングシステムで使えますか?): * 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: 新機能や廃止された関数について加筆。 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" で PREFIX のと おりに elisp がインストールされるように修正. 2000-10-18 Tetsuo Tsukamoto * ccc.el (ccc-apply): New macro. (ccc-ads): New variable. 2000-10-18 Mikio Nakajima * READMEs/README.win: Move 「`MAKE.BAT'の編集とインストール (Windows 95,98/NT)」 to header (change to non-section). Section structer rearranged (change `****' section to `***', `***' to `**' and `**' section to `*'). New sections 「* Windows 上で動くサーバについて」,「wskkserve」, 「 cygwin を利用してソースからコンパイルして利用する」,「script 言 語で実装されたサーバ」created. 2000-10-17 Mikio Nakajima * 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 「Windows 95 では上記の SKKIME が動作しないためこちらを使 用します。」. 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 「検索する辞書を増や したいのですが」. Sync up with a description about 「Wnn でも Canna でも郵便番号辞書 が使えるけれど、SKK では使えないの ?」 * READMEs/FAQ.txt: Add a description about 「検索する辞書を増やし たいのですが」. * 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 "万" {"萬"}, "億", "兆", "京". 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 (お願い): 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 (入力モードの一時変更): 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 (■モードにおける文字変換, 数字や記号文字の入力, 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の編集とインストール): 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の編集とインストール): Ditto. (.emacsの設定): 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 中島さん. (re-search-backward): Ditto. (window-minibuffer-p): New function -- by 中島さん. (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 (分割したファイルに必須の記述): 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 という buffer local 変数に関するエラーを回避するために skk-use-numeric-conversion が non-nil であれば skk-mode 内で先に skk-num.el を require していたのだが、上記の問題は daredevil に限っ ては起こる可能性がないので、明示的な require を止めた (必要となっ たときに autoload される)。 skk-use-numeric-conversion が non-nil で、skk-num.el の load 前に let で temporary 変数として bind し、その let 内で skk-num.el を require したとき、let を出た後に skk-num-list が void になるという エラーがあった。Daredevil では変数は全て skk-vars.el に入っており、 これを skk.el が require しているので、skk-num-list 変数は skk.el の load 直後から存在しているので、この問題は発生しない。 * 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 (見出し語の補完): 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 酒井 清隆 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の編集とインストール): 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: utf-8 ;; mode: change-log ;; End: skk-dev-ddskk-c24a624/ChangeLog.3000066400000000000000000006662541432756151500164520ustar00rootroot000000000000002007-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 "単漢字" 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 "英語", "前置詞" and "接続詞" 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 `▽'. (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 "↓辞書登録中↓". 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 日付入力. * 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, "[↓辞書登録]" -> "Echo area を見て!". 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 ヴ, ヵ, ヶ, ヽ and ヾ 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 "[辞書登録]" 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 「.」、「,」 が入力できるようにカスタマイズしたいのですが。" 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 改正案. 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 "上記の例では、" to "上記の例は、". Delete a space before @samp{立ち上げる}. 2003-02-25 Tetsuo Tsukamoto * doc/skk.texi: Insert a space before @samp{立ち上げる}. 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 (予備知識): remove. (ファイル構成 & ユーザーオプションの設定方法): move from (予備知識) to (便利な応用機能). (辞書の形式 & 辞書に関する設定): move from (予備知識) to (辞書関連). (辞書に関する設定): Add subsubsection(複数辞書の検索方法). (旧バージョンからの変更点): Add section(SKK 11 からの変更点). 2002-10-22 Yano Keisuke * skk-kcode.el (skk-display-code): Modified for JISX0213. Change display of KUTEN code in accordance with `規格協会「JIS漢字 字典」. (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. "かんどう /感動/" + ">てき /的/" ===> "かんどうてき /感動的/" (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 ▽ 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 ▽ 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 モードでもっと英単語を利用した変換が できませんか?): 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の歴史): 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 (送り仮名の優先的なマッチ). 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を利用して入手する方法): Add new section. (WWWを利用して入手する方法): Add mirroring URL. 2001-12-04 Tetsuo Tsukamoto * 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の歴史): Update. (SKK 9 からの変更点): Update. 2001-12-02 Eiji Obata * doc/skk.texi (XEmacs & Emacs 21 のモードライン): Doc fixed. 2001-12-02 Tsuyoshi AKIHO * skk-annotation.el(skk-annotation-show): Fixed. * doc/skk.texi: Add 辞書のアノテーション(註釈). Add XEmacs & Emacs 21 のモードライン. (skk-lookup): Update. (英単語をあいまいに変換して取り出した後、更に再帰的な英和変換を行う): Update. (サーバ関連): Update. 2001-12-01 NAKAJIMA Mikio * doc/skk.texi (▽モードにおける自動ダイナミックコンプリーション): Update. (サーバ関連): 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 のインストール): Doc fixed. (最も基本的な設定): Add doc about sample(etc/dot.emacs,etc/dot.skk) files. (送り仮名が有る場合の辞書登録): Add doc about skk-check-okurigana-on-touroku. (ファイル構成): Update doc. (ユーザーオプションの設定方法): Coment out skk-viper-load-hook. (skk-rom-kana-rule-listの利用例): Sample code fixed. (カタカナの見出し語): Update doc. (辞書登録の際に注意すべきこと): Update doc. (プログラム実行変換): Doc fixed. (領域一括変換): Add doc about menu-bar with kakasi. Update doc. (漢字コードを知る方法): Update doc. (▼モードでのBS): Doc fixed. (個人辞書の保存動作): Doc fixed. (変換及び個人辞書に関する統計): Update doc. (入力モードを示すモードラインの文字列の変更): Doc fixed. (入力モードを示すカーソル色に関する設定): Doc fixed. (起動時の入力モードの指定): Doc fixed. (WWWを利用して入手する方法): Doc fixed. (SKKの歴史): Update doc. (Q.1-4 DDSKK はどのバージョンの Emacs で使えますか?): Update doc. (Q.1-6 Emacs に付属の SKK を使っているのですが): Update doc. 2001-11-25 NAKAJIMA Mikio * 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 "《" and "》 " 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. (はじめに) : Add support for GNU Emacs 21. (辞書の入手): Update doc. (SKK のインストール) : Change make.bat to makeit.bat. (SKK Ring Server Openlab メーリングリスト) : Change ring.etl.go.jp to news.ring.gr.jp. 2001-11-18 Tetsuo Tsukamoto * 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 (起動と終了): 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 "零". * 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 の入手方法): Add note about pcvs of GNU Emacs 21. 2001-09-09 Tetsuo Tsukamoto * *: 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の歴史): 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 モードでもっと英単語を利用した変換が できませんか?): Typo fixed. (Q.1-1 最新のバージョンは?): Sync up with skk/main/READMEs/FAQ.txt. (Q.1-3 SKK はどのバージョンの Emacs で使えますか?): Ditto. (Q.1-6 開発版は何故、Daredevil と言うのですか?): Ditto. (Q.1-7 APEL に依存せずに SKK だけで済むように開発してもらえません か?): Ditto. (Q.1-6 開発版は何故、Daredevil と言うのですか?): Change section name to `Daredevil SKK って SKK とは違うのですか?' and move to Q.1-2. (Q.1-4 SKK はどのバージョンの Emacs で使えますか?): Change section name to `Q.1-4 DDSKK はどのバージョンの Emacs で使えますか?'. (Q.1-5 SKK はどんなオペレーティングシステムで使えますか?): Change section name to `Q.1-5 DDSKK はどんなオペレーティングシステムで使 えますか?' and sync up with skk/main/READMEs/FAQ.txt. (Q.2-6 Emacs 20 に SKK 9.6 がインストールできません。): Sync up with skk/main/READMEs/FAQ.txt. * READMEs/FAQ.txt ([Q.] 最新のバージョンは?): Updated. ([Q.] SKK はどのバージョンの Emacs で使えますか?): Ditto. ([Q.] 最新版の SKK はどこから入手できますか?): Ditto. ([Q.] 開発版の SKK は何故、`Daredevil SKK' などと言う名がついてい るのですか?): Ditto. (開発版の SKK は何故、`Daredevil SKK' などと言う名がついているのですか?): Change section name to `Daredevil SKK って SKK とは違うのですか?'. ([Q.] SKK はどんなオペレーティングシステムで使えますか?): Change section name to `[Q.] DDSKK はどんなオペレーティングシステムで使え ますか?' ([Q.] Emacs 20 に SKK 9.6 がインストールできません。): Change URL. ([Q.] SKK はどんなオペレーティングシステムで使えますか?): Change section name to `[Q.] DDSKK はどんなオペレーティングシステムで使え ますか?' and update sentences. * READMEs/PROPOSAL (Emacs のバージョン間差異の吸収は?): 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 (分割したファイルに必須の記述): Updated. Change section name to `skk.el 以外のファイルに必須の記述'. (SKK 10 が動作する Emacs のバージョンは?): Change section name to `Daredevil skk 11 が動作する Emacs のバージョンは?'. (Emacs のバージョン間差異の吸収は?): 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 はどんなオペレーティングシステムで使え ますか?): Updated. ([Q.] APEL に依存せずに SKK だけで済むように開発してもらえませんか?): 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 ".". * 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 メーリングリスト): Update for ml program change to ezmlm. (SKKの作者) : Update akiho's mail-address. 2001-05-20 Tetsuo Tsukamoto * 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 "〈" and "〉". 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]+ 新規で開く" 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 (英単語をあいまいに変換して取り出した後、更に再帰的 な英和変換を行う): Remove obsolete footnote. (SKK 以外のツールを用いた辞書候補): Change the node name to `look コマンドを用いた辞書変換'. (▽モードにおける自動ダイナミックコンプリーション): Add new section. * READMEs/Contributors (Contributors): Add Satoshi Harauchi's email address. 2001-03-30 Norio Maeda * skk-kcode.el (skk-display-code): added SJIS encoding. 2001-03-28 NAKAJIMA Mikio * doc/skk.texi (SKKの作者): Add Satoshi Harauchi's email address. 2001-03-22 Tetsuo Tsukamoto * 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 (ユーザーメーリングリスト): 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 `アリストテレス‐しゅぎ【—主義】'. Set to nil 7th element of "KOUJIEN" and "KOJIEN". Add a regexp to 5th element of "KOJIEN" in order to pick up a pattern like `でんし‐ブック【電子—】'. 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 (変更個所): 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 "っ". * 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 の検索で、市販の CD-ROM 辞書やネットワー クの辞書サーバが利用できますか?): 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 (送りあり変換中のC-g): Doc fixed. (カナモードでの変換の送り仮名の処理): 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. (英単語をあいまいに変換して取り出す): Remove unnecessary sentence. * READMEs/README.win (APEL の byte-compile): Doc fixed. * READMEs/CVS_digest (Tagify): Change section name to `tag 付け' and update sentences. * READMEs/INSTALL (APEL): Modify sentence slightly. * skk-version.el (skk-version): Updated to 11.4 and Ishibashi. * Sync up with daredevil. ;; Local Variables: ;; coding: utf-8 ;; End: skk-dev-ddskk-c24a624/ChangeLog.4000066400000000000000000004174161432756151500164450ustar00rootroot000000000000002012-01-01 Tsuyoshi Kitamoto * 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): 「どのwiki」を「どれを参照」 と修整. (skk-check-okurigana-on-touroku): footnote から defvr へ変更. * skk-vars.el (skk-verbose-intention-face): 「どのwiki」を「どれを参照」 と修整. (skk-undo-kakutei-return-previous-point): docstring を修整. 2011-12-27 Tsuyoshi Kitamoto * doc/skk.texi (文字コードを知る方法): M-x skk-display-code-for-char-at-point を記載. * skk-macs.el (skk-split-char): Add comment. 2011-12-24 Tsuyoshi Kitamoto * doc/skk.texi (冗長な案内メッセージの表示): 更新. 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 を追加. @subsection 行の中で使われていた @code{}, @key{}, @kbd{} を削除. @subsubsection 行も同様. 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): ユーザオプション化. (skk-show-mode-style): docstring を変更. * skk-show-mode.el (skk-cursor-set): 判定に skk-show-mode-invoked を 加えた. (skk-show-mode): 新たなコマンド. * skk.el (skk-require-module): skk-show-mode を require. * doc/skk.texi: 更新. 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 のタイプで char-list が起動するのか menu が起動するのかを、あらかじめ表示. 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): コードを整理. 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 "古典日本語". (skkannot-ja-wiktionary-part-of-speech-regexp): Add "和語の漢字表 記". * 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: 更新. 2011-12-05 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-name-radical-alist): 新たなリスト. (skk-tankan-yomi-compread): 新たな関数. (skk-tankan): 部首の読みに基づいて単漢字変換を実行. 2011-12-05 Tetsuo Tsukamoto * 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): 新たな FACE. * skk-tankan.el (skk-tankan-radical-name): 新たな配列. (skk-tankan-bushu-compread): skk-tankan-radical-name と skk-tankan-radical-name-face を使用. * doc/skk.texi: 更新. 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): インクリメンタル・サーチ中の 入力モード切り替え時には表示しない。変数 skk-isearch-switch で判断. 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): 単位が秒である旨を記載. * doc/skk.texi (skk-annotation-delay): 追加. (VIP/VIPERとの併用): 「I-search関連」と順を入れ替え. * skk.el (skk-check-size-and-do-save-jisyo): skk-yes-or-no-p() の 引数 JAPANESE と ENGLISH の生成が異なっていたのを修正. 2011-11-21 Tsuyoshi Kitamoto * doc/skk.texi (skk-show-mode-style): 更新. (文字コード関連): 更新. * experimental/skk-search-web.el: 追加. * SKK-MK (SKK_MODULES): skk-search-web を追加. 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): 追加. 2011-11-19 Tsuyoshi Kitamoto * doc/skk.texi (SKKとはなにか): 更新. * skk-inline.el (skk-add-background-color): docstring を修正. (skk-inline-show-vertically): ソースコード上のインデント幅誤り を修正. 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 を修正. * doc/skk.texi (アノテーションとしてEPWING辞書を表示する): 追加. 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: 微修正. 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 (領域の操作): skk-romaji-*-by-hepburn を @defvr. (動的補完): skk-dcomp-multiple-activate を更新. (外部コマンドからアノテーションを取得する): 新設. 2011-11-07 Tetsuo Tsukamoto * 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 (このバージョンのSKKについて, skk-tut-lang) (skk-tooltip-mouse-behavior): 更新. (skk-tut-use-face, skk-show-num-type-info) (skk-tooltip-parameters): 追加. 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 を更新. * doc/skk.texi (読みの補完): 更新. 2011-11-04 Tsuyoshi Kitamoto * doc/skk.texi (skk-extra-jisyo-file-list) (辞書検索の設定の具体例): 更新. 2011-11-03 Tsuyoshi Kitamoto * skk.el (skk-kana-input): インデントを修正. 2011-11-02 Tsuyoshi Kitamoto * doc/skk.texi (skk-read-from-minibuffer-function) (サ変動詞の辞書登録に関する注意, 再帰的辞書登録) (確定辞書, 変換の学習): 更新. 2011-11-01 Tsuyoshi Kitamoto * doc/skk.texi: 更新. 2011-10-31 Tsuyoshi Kitamoto * doc/skk.texi: 更新. 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: 更新. 2011-10-28 Tsuyoshi Kitamoto * skk-cus.el (skk-cus-params-visual): docstring の "助言的" を "冗長な" へ. * doc/skk.texi (skk-server-portnum): 記述誤りを修正. (skk-customizeによる設定変更): @subsection 化した. (skk-gyakubiki-jisyo-list, 動的補完): 修正. 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 "助言的" to "冗長な" to be more accurate. {These are rather reversions than modifications.} 2011-10-27 Tsuyoshi Kitamoto * doc/skk.texi: 更新. 2011-10-25 Tsuyoshi Kitamoto * skk-tut.el (skktut-init-variables-alist): チュートリアルの起動 時に skk-kcode-method を初期化. 2011-10-24 Tsuyoshi Kitamoto * doc/skk.texi (skk-isearch-use-previous-mode): 記述を更新. * skk.el (skk-setup-shared-private-jisyo): インデントを整理. * skk-vars.el (skk-record-file): docstring を更新. 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 を更新. * doc/skk.texi (skk-jisyo-fix-order): 記述を更新. * skk-annotation.el (skk-annotation-message): (split-string ...) を (delete "" (split-string ...)) へ変更 [skk 7513]. 2011-10-22 Tsuyoshi Kitamoto * SKK-MK (SKK-MK-what-where): interactive-p() に代えて noninteractive を使用. 2011-10-22 Tsuyoshi Kitamoto * skk-hint.el (skk-hint-setup-hint): メッセージの内容を修正. * skk-kakasi.el (skk-kakasi-region): 同上. * skk.el (skk-record-jisyo-data): docstring を修正. * doc/skk.texi: 微修正. 2011-10-21 Tsuyoshi Kitamoto * doc/skk.texi: 微修正. 2011-10-18 Tsuyoshi Kitamoto * doc/skk.texi: 微修正. 2011-10-04 Tsuyoshi Kitamoto * doc/skk.texi: 微修正. 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: ドキュメントの微修正. * bayesian/bskk: ドキュメントの微修正. RCS のキーワード展開 Id と Date を挿入. 2011-07-21 Tsuyoshi Kitamoto * skk-study.el (skk-study-remove-theme): skk-error() に代えて skk-message() を使用. 2011-07-19 Tsuyoshi Kitamoto * skk-azik.el (skk-azik-additional-rom-kana-rule-list): 「子音 + ピリオド」の組み合せ、具体的には次の4つを削除. "b." nil ("ブ" . "ぶ") "m." nil ("ム" . "む") "n." nil ("ヌ" . "ぬ") "z." nil ("ズ" . "ず") yuu さん、Teika Kazura さんからの提案 [skk 7485]. 2011-07-15 Tsuyoshi Kitamoto * skk-tut.el (skktut-make-windows, skktut-end-tutorial): switch-to-buffer() に代えて pop-to-buffer() を使用. (skktut-end-tutorial): 終了時メッセージの文言を微修正. 2011-07-14 Tsuyoshi Kitamoto * skk-vars.el (skk-tankan-mode-original-window-configuration): 新たな変数. * skk-tankan.el (skk-tankan): M-x skk-tankan 実行時の window-configuration を保存. (skk-tankan-mode-quit): window-configuration を復帰. * skk-cus.el (skk-customize, skk-customize-done): switch-to-buffer() に代えて set-window-buffer() を使用. * skk-annotation.el (skk-annotation-add): switch-to-buffer() に代えて pop-to-buffer() を使用. 2011-07-12 Tsuyoshi Kitamoto * skk-vars.el (skk-update-jisyo-function) (skk-save-jisyo-function): docstring を更新. 2011-07-10 Tsuyoshi Kitamoto * skk.el (skk-kakutei, skk-search-jisyo): コメントを追加. * doc/skk.texi (skk-search-jisyo-file): 更新. 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): コメントや docstring に記載のあった単語 「オプション引数」を「オプショナル引数」へ統一した. * skk-macs.el (skk-erase-prefix): 同上. * skk-jisyo-edit-mode.el (skk-edit-private-jisyo): 同上. * skk-gadget.el (skk-ad-to-gengo, skk-gengo-to-ad): 同上. 2011-07-08 Tsuyoshi Kitamoto * skk-server.el (skk-server-version): skk-error() の引数の順序が逆で あったため、これを修正. 2011-07-02 Tsuyoshi Kitamoto * doc/skk.texi: 更新. * skk-kcode.el (skk-display-code-for-char-at-point): if() について、then でも else でも t を返すコードであるため、if() を 抜けたあとに t を評価するようにした. (skk-display-code): "判別できない文字です" について、skk-error() を やめてメッセージ化した. これまでの表示方法(ツールチップまたはエコーエリア)に加え、別ウィン ドウでの表示をサポートした. skk-show-candidates-always-pop-to-buffer と連動する. 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 で済む箇所 を let* から let へ変更. * skk-look.el (skk-look-1): 同上. * skk-kcode.el (skk-display-code) (skk-list-chars-find-char-string-for-code): 同上. * skk-jisx0201.el (skk-set-okurigana): 同上. * 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): (サーバコンプリージョン): 追加. * skk-vars.el (skk-kcode-method): 'this-key を追加. (skk-server-report-response): docstring を修正. * skk-kcode.el (skk-input-by-code-or-menu): skk-kcode-method の動作に 'this-key を追加. 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): 加筆. (skk-make-face): 修正. 2011-06-21 Tsuyoshi Kitamoto * doc/skk.texi (skk-kcode-method): 追加. * skk-kcode.el (skk-list-chars-next-line) (skk-list-chars-previous-line): コードの見直し. 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 を修正. * doc/skk.texi (skk-tut-lang, skk-hint-start-char) (skk-tooltip-hide-delay): 追加. (変換位置の指定方法): 更新. 2011-06-16 Tsuyoshi Kitamoto * doc/skk.texi (skk-annotation-browse-key): 追加. 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):主処理を skk-edit-private-jisyo-1 へ分離. 自己責任のもと作業を行うよう skk-yes-or-no-p を追加. (skk-edit-private-jisyo-1): 元の skk-edit-private-jisyo の主処理. 2011-06-12 Tsuyoshi Kitamoto * 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 の「キーバインド C-f10 に skk-edit-private-jisyo を割り当て」は取り消します. * skk-vars.el (skk-tooltip-face): docstring を修正. (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): 属性 inverse-video を取り消し、デフォルト 色を与えた. (skk-verbose-intention-face): 属性 bold を t としてみた. * skk-kcode.el: require font-lock を無効化(コメント化). (skk-display-code): skk-display-code-tankan-radical-face, skk-display-code-tankan-annotation-face を導入. (skk-list-chars-sub): skk-list-chars-table-header-face を導入. (skk-list-chars): skk-list-chars-face を導入. * 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 に関する記述を追加. skk-input-by-code-or-menu に関する記述を復活. 2011-06-10 Tsuyoshi Kitamoto * skk-vars.el (skk-jisyo-registration-badge-face) :New face. (skk-verbose-kbd-face): 属性 inverse-video を t としてみた. * skk.el (skk-henkan-in-minibuff): Use skk-jisyo-registration-badge-face. * context-skk.el (context-skk-insert): message 関数の使い方を修正. * skk-vars.el (skk-rom-kana-base-rule-list): 2010-12-09 の commit を訂正。\ のタイプは skk-input-by-code-or-menu の起動に戻す. 2011-06-10 Tetsuo Tsukamoto * skk.el (skk-toggle-isearch-mode): message 関数の使い方を修正. [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: 上記 face に関する記述を追加. * skk.el (skk-toggle-isearch-mode): 関数 message の第1引数に "%s" を 付加. * skk-annotation.el (skk-annotation-save-and-quit) (skk-annotation-quote): 同上. * skk-macs.el (ignore-errors): 2011-06-04 の変更を取り消し. [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 を修正. 2011-06-06 Tsuyoshi Kitamoto * skk-inline.el (skk-add-background-color): 引数 COLOR のチェックを 厳格にするため color-defined-p を追加. 2011-06-05 Tsuyoshi Kitamoto * skk-annotation.el (skk-annotation-save-and-quit) (skk-annotation-quote): 余分な %s を削除. * 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): 追加. * 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 以下の場合に defmacro していましたが、GNU Emacs 21.4 (cl-macs.el) にも存在しており普通に 使えることから、skk-macs.el からは削除した。 * 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): 追加. * skk-tut.el (skktut-init-variables-alist): 初期化対象の変数として skk-dcomp-multiple-activate, skk-read-from-minibuffer-function, skk-verbose, debug-on-error を追加. * 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 を #'foo へと書き換え. * 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 はマクロ展開で function 付加されるため #' は不要. 2011-06-02 Tsuyoshi Kitamoto * skk-emacs.el (skk-emacs-menu-replace, skk-tooltip-resize-text): コードの整理. * 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): 不要な lambda を削除. * skk-tankan.el (skk-tankan-select-tankanji-kouho): lambda を #'lambda へ変更. 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): 不必要なキーワードを削除. * skk-comp.el (skk-comp-search-current-buffer) (skk-comp-re-search-current-buffer): インデントを整形. (skk-comp-by-history): Use function skk-remove-duplicates. * skk-emacs.el (skk-emacs-prepare-menu) (skk-emacs-prepare-modeline-properties): インデントを整形. * 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): 挿入先バッファを buffer-live-p で確認. * skk-annotation.el (skk-annotation-message): 助言的メッセージを face で色付けした. (skk-annotation-insert): docstring を付加した. (skk-annotation-get): コード見直し. * skk.el (skk-setup-verbose-messages): 助言的メッセージを face で色付けした. 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 から dolist へ変更. * skk-tankan.el (skk-tankan): while から dolist へ変更. * skk-num.el (skk-num-flatten-list): while から dolist へ変更. * skk-kcode.el (skk-list-chars): while から dotimes へ変更. * skk-gadget.el (skk-today-execute-char): while から dolist へ変更. * skk.el (skk-remove-minibuffer-setup-hook, skk-setup-auto-paren) (skk-kill-local-variables, skk-search-extra-jisyo-files) (skk-remove-duplicates): while から dolist へ変更. (skk-define-j-mode-map, skk-define-jisx0208-latin-mode-map) (skk-define-abbrev-mode-map): while から dotimes へ変更. (skk-mode-exit, skk-setup-charset-list, skk-setup-verbose-messages): コード見直し. 2011-05-27 Tsuyoshi Kitamoto * skk.el (skk-get-jisyo-buffer): インデントを整形. (skk-search, skk-numeric-program-p, skk-search-server) (skk-update-jisyo-original, skk-quote-char): docstring を修正. (skk-undo-kakutei): skk-error を除去. (skk-mode-exit): コード見直し. 2011-05-25 Tsuyoshi Kitamoto * skk.el (skk-mode-exit): コード見直し. (skk-ovwrt-len): 不要な let を削除. (skk-insert-str): skk-ovwrt-len の呼び出し方法を変更. (skk-kakutei-cleanup-buffer): skk-ovwrt-len の呼び出し方法を変更. (skk-show-num-type-info): Use fit-window-to-buffer except XEmacs 21.4. 2011-05-24 Tsuyoshi Kitamoto * skk.el (skk-toggle-kutouten): メッセージ順を「句点 読点」から 「読点 句点」へ 変更. (skk-search-jisyo): 不要な progn を削除. (skk-mode-exit): skk-mode を抜けた際は *候補*バッファと *SKK annotation*バッファを削除するよう変更した. 2011-05-23 Tsuyoshi Kitamoto * skk-macs.el (skk-multiple-line-string-width): 削除. * skk.el (skk-henkan-show-candidate-subr): skk-multiple-line-string-width に代えて skk-max-string-width を使用. 2011-05-22 Tsuyoshi Kitamoto * skk.el (skk-multiple-line-string-width): skk-macs.el へ移動. (skk-kakutei-cleanup-buffer): インデントを整形. * skk-macs.el (skk-max-string-width): New function. (skk-multiple-line-string-width): skk.el から移動. * skk-inline.el (skk-inline-show-vertically): Use skk-max-string-width. (skk-inline-show-vertically): インデントを整形. * 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): インデントを整形. * 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): 記述を修正. * skk-vars.el (skk-tooltip-face): docstring を修正. * skk-emacs.el (skk-tooltip-show-at-point, skk-tooltip-show-1): docstring を追加. * skk.el (skk-henkan-show-candidates) (skk-henkan-show-candidate-subr, skk-henkan-in-minibuff) (skk-show-num-type-info, skk-kakutei-initialize): ソースコードのインデントを修正. 2011-05-21 Tsuyoshi Kitamoto * skk-dcomp.el (skk-dcomp-multiple-show): コメントを修正. * skk.el (skk-kill-emacs-without-saving-jisyo): docstring と メッセージを修正. (skk-multiple-line-string-width): 機能は変えずソースコードを見直した. 2011-05-20 Tsuyoshi Kitamoto * skk-vars.el (skk-auto-okuri-process): docstring を更新. * skk-jisyo-edit-mode.el (skk-jisyo-edit-mode): docstring を更新. (skk-edit-private-jisyo): 簡易なガイダンスを表示. * skk-setup.el.in: キーバインド C-f10 に skk-edit-private-jisyo を 割り当て. 2011-05-19 Tsuyoshi Kitamoto * skk.el (skk-mode): docstring を更新. * skk-vars.el (skk-background-mode): docstring を更新. (skk-auto-start-henkan-keyword-list): docstring を更新. 2011-05-18 Tsuyoshi Kitamoto * SKK-MK (SKK-MK-generate-autoloads-el): kill-buffer の前に set-buffer-modified-p を nil とした. 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: 新変数 context-skk-mode-off-message に関する記述. * context-skk.el: RCS のキーワード展開 Id と Date を挿入. (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): ソースコードのインデントを修正. (skk-make-face): 機能は変えず、ソースコードを見直した. 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 を更新. * skk-tankan.el (skk-tankan-search, skk-tankan-bushu-compread): docstring を更新. * skk-server.el (skk-search-server-1): docstring を更新. * skk-macs.el (skk-string<=): docstring を更新. * skk-kcode.el (skk-make-string): docstring を更新. * skk-kakasi.el (skk-hurigana-1): インデントを整形. (skk-romaji-region, skk-romaji-message): docstring を更新. * skk-gadget.el (skk-clock): docstring を更新. (skk-ad-to-gengo-1): typo (Unkown -> Unknown). * doc/skk.texi: skk-comp-lisp-symbol の記述を追加. * skk-comp.el (skk-comp-lisp-symbol, skk-search-smart-find) (skk-search-lisp-symbol): docstring を更新. * skk-annotation.el (skk-annotation-add) (skk-annotation-wikipedia-region-or-at-point): docstring を更新. 2011-05-01 Tsuyoshi Kitamoto * doc/skk.texi (変換及び個人辞書に関する統計): 更新. * 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 を更新. 2011-05-01 Tsuyoshi Kitamoto * doc/skk.texi: skk-share-private-jisyo の記述を追加. * skk-vars.el: docstring 内の用語「辞書サーバー」を「辞書サーバ」へ 統一. * skk-server.el: 同上. * skk-server-completion.el: 同上. 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 を更新. * doc/skk.texi: 変数 skk-inhibit-ja-dic-search と 関数 skk-search-ja-dic について、記述を追加. docstring から切り貼りしただけですので、もう少し見直します。 2011-04-23 Tsuyoshi Kitamoto * skk-server.el (skk-server-version): skk-called-interactively-p の引数を 'any から 'interactive へと変更 [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: 誤字の修正、ソースの整形. 2011-01-15 Tsuyoshi Kitamoto * skk.el (skk-insert-str): Docstring を修正. (skk-auto-start-henkan): Docstring を修正. (skk-what-char-type): Docstring を修正. 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 対話的なインストール. * 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 失敗の原因であった STRING 違い "Initial setup for SKK" を "initial setup for SKK" へ修正. skk-setup.el.in との整合性を図った. (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): 標準に skk-tankan-search を加えた. * 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 に代えて intern-soft を使用. 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 文字コード入力. * skk-tankan.el (skk-search-by-stroke-or-radical): 部首変換 及び 総画数変換の JIS X 0213-[12] 対応. * skk-kcode.el (skk-list-chars-sub): 区切り行に区番号を表示. (skk-list-chars-code-input-1): 文字コード入力後、当該文字を search-forward. * skk-vars.el (skk-list-chars-buffer-name, skk-list-chars-destination-buffer) (skk-list-chars-skip-chars, skk-list-chars-point, skk-list-chars-mode-map): Move from skk-kcode.el. (skk-tankan-mode-map): Move from skk-tankan.el. 2010-12-10 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan): コード見直し。 * skk-kcode.el (skk-list-chars-code-input): New function. (skk-list-chars-code-input-1): New function. (skk-list-chars): C-u \ で カーソル位置の文字を引数に skk-list-chars を実行. 2010-12-09 Tsuyoshi Kitamoto * skk-vars.el (skk-rom-kana-base-rule-list): \ の実行を skk-input-by-code-or-menu から skk-list-chars へ変更. * skk-kcode.el (skk-display-code-for-char-at-point): C-u $ での skk-list-chars 呼び出しをいったん削除。 (skk-list-chars-destination-buffer): New variable. (skk-list-chars-insert): New function. (skk-list-chars-other-charset): New function. (skk-list-chars): 機能追加. 2010-12-07 Tsuyoshi Kitamoto * 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): 軽微な修正。 (skk-display-code): 軽微な修正。 2010-12-04 Tsuyoshi Kitamoto * doc/skk.texi: Replace string from 漢字コード to 文字コード. * skk-kcode.el (skk-input-by-code-or-menu): JIS X 0213 の2面の区点 番号を入力可能とした。形式 00-00-00 を2面とみなす。 Unicode の符号位置を入力可能とした。形式 U+nnnnn 。 (skk-char-to-hex): コード見直し。 (skk-display-code): 色付け (font-lock-keyword-face) して見やすくした。 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): コード見直し。 * 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 (▽mode). 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): 変換ルールを修正 [skk 7327]。 2010-11-23 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk.el (skk-henkan-show-candidate-subr): 2010-11-14 の commit (ツールティップでの [残り99++] の右寄せ表示)は、XEmacs では無効 としました。 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 ではないときに確定アンドゥを実行した場合、 確定アンドゥの本処理の前に skk-j-mode-on を追加した。[skk 7319]。 * 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): ツールティップでも インジケータ([残り99++])を右寄せ表示可能とした。 ほか、docstring の微修正。 * 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): 禁則処理の実装を見直した。 * 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 を流用した禁則処理。 * 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): 入力が長大な場合、 適度に改行を挿入する [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 きもち多めなメッセージ to 助言的メッセージ. * 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 の commit は取り下げます。 * skk-version.el (skk-startup-screen): ditto. 2010-09-13 Tetsuo Tsukamoto * 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 向け japanese-jisx0213-2 対応。 * skk-kcode.el (skk-display-code): tooltip 時の `$' メッセージ内容 に適宜改行を加えた。 2010-09-07 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): `$' の表示を tooltip 化. 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): 総画数変換と部首変換を追加. * doc/skk.texi: Update. 2010-08-27 Tetsuo Tsukamoto * 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): キー `$' をタイプした際のメッセージ に "総%d画(%s部%d画)" を追加。 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: 用語の統一。そのほか. * 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 の load-path への追加を (requre 'install) の前に移動. 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)?(辞書)?サーバ/辞書サーバ/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/ユーザ辞書/個人辞書/g 2010-02-21 Tsuyoshi Kitamoto * skk-macs.el: s/非nil/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: リンク切れを修正。makeinfo によるコンパイルの方法。 このファイルに含まれる非 Unicode 文字についてコメント。 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 "アノテーションの使用". * 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 便利な 応用機能. 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"))) (apply #'format format-string (mapcar (lambda (element) (if (stringp element) (url-hexify-string element) element)) args))) (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))))) ;;; $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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-annotation.el ends here skk-dev-ddskk-c24a624/skk-auto.el000066400000000000000000000132011432756151500165710ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) ;;;###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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-auto.el ends here skk-dev-ddskk-c24a624/skk-azik.el000066400000000000000000000655731432756151500166020ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; Created: Jan. 9, 2002 ;; 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 3 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, see . ;;; 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-characters" $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: (require 'skk) (eval-when-compile (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")) ("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")) ("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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method, cdb ;; 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 3 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, see . ;;; 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") ;;; Code: (require 'cdb) (require 'skk) (defconst skk-cdb-version "20100719+") (defvar skk-cdb-working-buffer " *skk-cdb*") ;;;###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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-cdb.el ends here skk-dev-ddskk-c24a624/skk-comp.el000066400000000000000000000565631432756151500166010ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;; $B"&$5(B (TAB) -> $B"&$5$H$&(B (.) -> $B"&$5$$$H$&(B (,) -> $B"&$5$H$&(B(.) -> $B"&$5$$$H$&(B ;;; Code: (require 'skk) (eval-when-compile (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-key' $B$r%-!<$H$7$F!"J8;zNs$R$H$D$,La$k(B 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 (if (fboundp 'smart-find-file-all) (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)))) (run-hooks 'skk-comp-load-hook) (provide 'skk-comp) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-comp.el ends here skk-dev-ddskk-c24a624/skk-cursor.el000066400000000000000000000050241432756151500171420ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (unless (skk-color-cursor-display-p) (error "%s" "SKK-CURSOR requires color display")) (require 'skk-macs) (require 'skk-vars) (eval-and-compile (require 'ccc)) ;; Functions. (defun skk-cursor-default-color () (ccc-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) (when ccc-default-cursor-color (ccc-set-buffer-local-cursor-color (or color (skk-cursor-current-color))))) ;;;###autoload (defun skk-cursor-off-1 () (when ccc-default-cursor-color (ccc-set-cursor-color-buffer-local nil))) (provide 'skk-cursor) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-cursor.el ends here skk-dev-ddskk-c24a624/skk-cus.el000066400000000000000000000324771432756151500164330ustar00rootroot00000000000000;;; skk-cus.el --- SKK $B$N4JC1$+$9$?$^$$$:;n:nIJ(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2001 SKK Development Team ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;; SKK $B5/F08e(B M-x skk-customize $B$G@_Dj$9$k!#(B ;;; Code: (eval-when-compile (require 'cl-lib)) (require 'skk) (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 (cl-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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-cus.el ends here skk-dev-ddskk-c24a624/skk-dcomp.el000066400000000000000000000664201432756151500167360ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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.d/init.el $B$b$7$/$O(B ~/.skk $B$K(B (setq skk-dcomp-activate t) $B$H=q$-(B ;; $B$^$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$,9T$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: (require 'skk) (require 'skk-comp) (eval-when-compile (require 'cl-lib)) (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 () (< (1+ skk-dcomp-multiple-rows) (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) (cl-incf i)) (nreverse extract))) (defun skk-dcomp-multiple-get-candidates (&optional same-key) (let (candidates) (cond ;; (1) $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) (cl-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))) ;; (2) $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))) ;; (3) $BA48!:w$9$k(B (TAB $BO"BG$G7+$j1[$7$?$H$-(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))) ;; (4) $BC1$J$k(B TAB $BBG80(B (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) (cl-incf i)) (when (or invisible (and bottom (> (+ 2 skk-dcomp-multiple-rows) (- (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) ; $B"'%b!<%I(B (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)) ;; experimental/skk-pre-henkan.el ((and (featurep 'skk-pre-henkan) (eq last-command 'skk-comp-do)) (skk-kakutei)) ((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 last-command-event 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 last-command-event '(?*)) (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 last-command-event '(?*)) (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 last-command-event '(?*)) (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 abort-minibuffers (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 last-command-event 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 last-command-event 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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-dcomp.el ends here skk-dev-ddskk-c24a624/skk-decor.el000066400000000000000000000124251432756151500167240ustar00rootroot00000000000000;;; skk-decor.el --- decorate the candidate for SKK -*- mode: emacs-lisp; coding: iso-2022-jp -*- ;; Copyright (C) 2020 Tsuyoshi Kitamoto ;; Author: 2020 Tsuyoshi Kitamoto ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;; skk-insert() ;; |- skk-start-henkan() ;; |- skk-henkan() ;; |- skk-henkan-1() ;; |- skk-insert-new-word() ;; | |- skk-henkan-face-on() ;; | |- skk-face-on() @ skk-macs.el ;; |- skk-henkan-show-candidates() ;; |- skk-henkan-show-candidate-subr() ;; |- skk-henkan-candidate-list() ;; |- skk-treat-candidate-appearance() ;; $BJ8=q%P%C%U%!$N"'%b!<%I$K$*$1$kJQ498uJd$NI=<($rAu>~$9$k$K$O(B ;; skk-henkan-face $B$r@_Dj$7$^$9!#EvA3$G$9$,!"J8=q%P%C%U%!$NJQ498uJd$K$7(B ;; $B$+:nMQ$7$^$;$s!#(B ;; $B%$%s%i%$%s!"(Btooltip $BKt$O(B $B8uJd%P%C%U%!$NJQ498uJd$NI=<($rAu>~$9$k$K$O(B ;; skk-treat-candidate-appearance-function $B$r@_Dj$7$^$9!#(B ;; $B$7$+$7!"(Bskk-treat-candidate-appearance-function $B$N@_Dj$O!"(B ;; o $BJ8=q%P%C%U%!$N"'%b!<%I$K$*$1$kJQ498uJd$NI=<($K$b1F6A(B ;; $B!J(Bskk-henkan-face $B$h$j$bM%@h$7$FE,MQ$5$l$k!K(B ;; o $B%$%s%i%$%s!"(Btooltip $B5Z$S(B $B8uJd%P%C%U%!$N#3$D$9$Y$F$K1F6A(B ;; $B$H$$$&8z2L$,$"$j$^$9!#(B ;; $BNc$($P!"8uJd%P%C%U%!$NJQ498uJd$NI=<($rBg$-$/$7$h$&$H;W$C$?$H$-!"(B ;; skk-henkan-face $B$G$O8uJd%P%C%U%!$NAu>~$rJQ$($k$3$H$,$G$-$J$$$?$a!"(B ;; skk-treat-candidate-appearance-function $B$r;HMQ$7$F%5%$%:$NBg$-$J(B ;; face $B$rE,MQ$5$;$^$9!#$7$+$7!"(Bskk-treat-candidate-appearance-function $B$O(B ;; $BJ8=q%P%C%U%!$NAu>~$K$b1F6A$,5Z$V$3$H$+$i!"I=<($,%,%?%,%?$K$J$C$F$7$^(B ;; $B$$$^$9!#(B ;; $B$=$3$G!"!VJ8=q%P%C%U%!$K1F6A$;$:!"8uJd%P%C%U%!$K8B$C$?I=<($NAu>~!W$r(B ;; $B$7$?$$J}$N$?$a$K:n$C$F$_$^$7$?!#(B ;;; Howto: ;; (setq skk-inline-show-vertically-decor ;; #'skk-inline-show-vertically-decor-func) ;; (setq skk-tooltip-show-at-point-decor ;; #'skk-tooltip-show-at-point-decor-func) ;; (setq skk-henkan-show-candidates-buffer-decor ;; #'skk-henkan-show-candidates-buffer-decor-func) ;;; Code: (require 'skk) ;; skk-show-inline 'vertical $B$K8B$C$F%U%'%$%9$r:nMQ$5$;$k(B. ;;;###autoload (defun skk-inline-show-vertically-decor-func (string) (let* ((sp (reverse (split-string string "\n"))) (rest (car sp)) (cands (reverse (cdr sp)))) (concat (mapconcat (lambda (x) (let* ((d (skk-treat-strip-note-from-word (substring x 2))) (c (car d)) (n (cdr d))) (concat (substring x 0 2) (propertize c 'face 'skk-inline-show-vertically-cand-face) (when n (concat " " (propertize n 'face 'skk-inline-show-vertically-anno-face)))))) cands "\n") "\n" rest))) ;; tooltip $B$K8B$C$F%U%'%$%9$r:nMQ$5$;$k(B ;;;###autoload (defun skk-tooltip-show-at-point-decor-func (text) (let* ((sp (reverse (split-string text "\n"))) (rest (car sp)) (cands (reverse (cdr sp)))) (concat (mapconcat (lambda (x) (let* ((d (skk-treat-strip-note-from-word (substring x 2))) (c (car d)) (n (cdr d))) (concat (substring x 0 2) (propertize c 'face 'skk-tooltip-show-at-point-cand-face) (when n (concat " " (propertize n 'face 'skk-tooltip-show-at-point-anno-face)))))) cands "\n") "\n" rest))) ;; $B8uJd%P%C%U%!$K8B$C$F%U%'%$%9$r:nMQ$5$;$k(B ;;;###autoload (defun skk-henkan-show-candidates-buffer-decor-func (str) (let* ((cand (reverse (split-string str " " t))) (nokori (car cand)) (cand (reverse (cdr cand)))) (concat (mapconcat (lambda (x) (let* ((d (skk-treat-strip-note-from-word (substring x 2))) (c (car d)) (n (cdr d))) (concat (substring x 0 2) ; `A:' (propertize c 'face 'skk-henkan-show-candidates-buffer-cand-face) (when n (concat " " (propertize n 'face 'skk-henkan-show-candidates-buffer-anno-face)))))) cand " ") " " nokori))) (provide 'skk-decor) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-decor.el ends here skk-dev-ddskk-c24a624/skk-develop.el000066400000000000000000000202031432756151500172570ustar00rootroot00000000000000;;; skk-develop.el --- support SKK developper -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) (require 'tar-util) (eval-when-compile (require 'url) (defvar skk-exserv-list)) (defvar skk-get-files '("SKK-JISYO.JIS2.gz" "SKK-JISYO.JIS2004.gz" "SKK-JISYO.JIS3_4.gz" "SKK-JISYO.L.gz" "SKK-JISYO.assoc.gz" "SKK-JISYO.edict.tar.gz" "SKK-JISYO.fullname.gz" "SKK-JISYO.geo.gz" "SKK-JISYO.itaiji.gz" "SKK-JISYO.jinmei.gz" "SKK-JISYO.law.gz" "SKK-JISYO.lisp.gz" "SKK-JISYO.mazegaki.gz" "SKK-JISYO.okinawa.gz" "SKK-JISYO.propernoun.gz" "SKK-JISYO.pubdic+.gz" "SKK-JISYO.station.gz" "zipcode.tar.gz") "") (defun skk-get-delete-files (dir) "DIR." (let ((files (cons "edict_doc.txt" skk-get-files)) p) (dolist (filename files) (dolist (file (list filename (replace-regexp-in-string ".gz" "" filename) (replace-regexp-in-string ".tar.gz" "" filename))) (setq p (expand-file-name file dir)) (when (file-exists-p p) (cond ((null (car (file-attributes p))) (delete-file p)) (t (delete-directory p t)))))))) (defun skk-get-mkdir (dir) "DIR." (if (file-exists-p dir) (skk-get-delete-files dir) (make-directory dir t))) (defun skk-get-download (dir) "DIR." (let ((url "https://skk-dev.github.io/dict/") fn) (dolist (f skk-get-files) (setq fn (expand-file-name f dir)) (unless (file-exists-p fn) (url-copy-file (format "%s%s" url f) fn))))) (defun skk-get-generate-gzip-d (dir) "$BB(@J(B gzip -d" (and (not (executable-find "gzip")) (eq system-type 'windows-nt) (not (file-exists-p (expand-file-name "gzip-d.ps1" dir))) (skk-get-generate-gzip-d-1 dir))) (defun skk-get-generate-gzip-d-1 (dir) "$BMW(B powershell" (with-temp-buffer (insert "$infile = $args[0]" 10) (insert "$outfile = ( $infile -replace '\.gz$','' )" 10) (insert "$input = New-Object System.IO.FileStream $inFile, ( [IO.FileMode]::Open ), ( [IO.FileAccess]::Read ), ( [IO.FileShare]::Read )" 10) (insert "$gzipStream = New-Object System.IO.Compression.GzipStream $input, ( [IO.Compression.CompressionMode]::Decompress )" 10) (insert "$output = New-Object System.IO.FileStream $outFile, ( [IO.FileMode]::Create ), ( [IO.FileAccess]::Write ), ( [IO.FileShare]::None )" 10) (insert "$buffer = New-Object byte[](1024)" 10) (insert "while( $true ) {" 10) (insert " $read = $gzipstream.Read( $buffer, 0, 1024 )" 10) (insert " if ( $read -le 0 ) {break}" 10) (insert " $output.Write( $buffer, 0, $read )" 10) (insert "}" 10) (insert "$input.Close()" 10) (insert "$gzipStream.Close()" 10) (insert "$output.Close()" 10) (write-region (point-min) (point-max) (expand-file-name "gzip-d.ps1" dir)))) (defun skk-get-expand-gzip (dir) "DIR." (let* ((ps (convert-standard-filename (expand-file-name "gzip-d.ps1" dir))) (cmd (cond ((executable-find "gzip") "gzip -d") ((file-exists-p ps) (message "skk-get: Use powershell version of the simple gzip.") (format "powershell.exe -executionpolicy remotesigned -file %s" (shell-quote-argument ps))) (t (error "skk-get: gzip command could not be found. Aborts."))))) (dolist (f (directory-files dir t ".gz")) (let ((fn (convert-standard-filename f))) (message "skk-get: expand %s..." fn) (shell-command (format "%s %s" cmd (shell-quote-argument fn))) (when (file-exists-p fn) (delete-file fn)))))) (defun skk-get-expand-tar (dir) "DIR." ;; (let (fn) ;; (dolist (f (directory-files dir t "tar")) ;; (setq fn (convert-standard-filename f)) ;; (shell-command (format "tar -xf %s -C %s && rm %s" ;; fn dir fn)))) (let ((list '(("SKK-JISYO.edict.tar" . "SKK-JISYO.edict") ("zipcode.tar" . "SKK-JISYO.zipcode") ("zipcode.tar" . "SKK-JISYO.office.zipcode")))) (dolist (c list) (tar-salvage-file (expand-file-name (car c) dir) (cdr c) (expand-file-name (cdr c) dir))))) ;;;###autoload (defun skk-get (dir) "DIR." (interactive (list (read-directory-name "skk-get directory: " (expand-file-name skk-get-jisyo-directory)))) (let ((jisyo-dir (expand-file-name dir))) (skk-get-mkdir jisyo-dir) (skk-get-download jisyo-dir) (skk-get-generate-gzip-d jisyo-dir) (skk-get-expand-gzip jisyo-dir) (when (fboundp 'tar--extract) ; GNU Emacs 24.4 $B$+$i(B (skk-get-expand-tar jisyo-dir))) (message "skk-get...done") nil) ;;;###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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-develop.el ends here skk-dev-ddskk-c24a624/skk-emacs.el000066400000000000000000000733051432756151500167240ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) (eval-when-compile (require 'cl-lib) (require 'ja-dic-utl) (require 'tooltip) (defvar tool-bar-border) (declare-function x-show-tip "xfns.c")) (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] "--" ["About Daredevil SKK.." skk-version t] ["Visit Web Site" skk-emacs-visit-website 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-show-at-point (text &optional situation) "TEXT $B$r(B tooltip $B$GI=<($9$k!#(B" (require 'tooltip) (and (null (eq situation 'annotation)) skk-tooltip-show-at-point-decor (setq text (funcall skk-tooltip-show-at-point-decor text))) (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)) (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 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)) ;; (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 (read-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)) (setq skk-henkan-count 0) (cond ((eq skk-henkan-mode 'active) ; $B"'%b!<%I(B (skk-unread-event (aref (car (where-is-internal 'skk-previous-candidate skk-j-mode-map)) 0)) (when (eq situation 'listing) (throw 'unread nil))) ; skk-henkan $B$^$G0l5$$K(B throw $B$9$k!#(B (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)))) ;;@@ 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 (not skkdic-okuri-nasi) (locate-library "ja-dic/ja-dic")) (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 (>= 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))) (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))) ;; advices. (defadvice tooltip-hide (after ccc-ad activate) (ccc-update-buffer-local-frame-params)) (provide 'skk-emacs) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-emacs.el ends here skk-dev-ddskk-c24a624/skk-gadget.el000066400000000000000000000520361432756151500170650ustar00rootroot00000000000000;;; skk-gadget.el --- $B ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;; 2014.12.30 SKK-JISYO.lisp ;; SKK-JISYO.L $B$+$i%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: (require 'skk) (eval-when-compile (require 'cl-lib)) ;; -- 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" (cl-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" (cl-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) nil (string-to-number (nth 0 (cdr (assoc month skk-month-alist)))) (string-to-number day)))) (setq year (if gengo (concat (if gengo-index (nth gengo-index (car v)) (caar v)) (if (numberp (cdr v)) (skk-num-exp (number-to-string (cdr v)) num-type) (cdr v))) (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 (cl-defun skk-relative-date (pp-function format and-time &key (yy 0) (mm 0) (dd 0)) "`skk-current-date' $B$N3HD%HG!#0z?t$G$"$k(B PP-FUNCTION, FORMAT $B5Z$S(B 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 (cl-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))) (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"))) (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 (ding)) ((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 (ding) (ding) (unless (sit-for (setq sec (+ sec 0.16)) 'nodisplay) (read-event) (signal 'quit nil)) (ding))))) (unless (sit-for (- 1 sec) 'nodisplay) (read-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 month day) ;; 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 ((or (< ad 1912) (and (= ad 1912) month (< month 7)) (and (= ad 1912) month (= month 7) day (< day 30))) (setq ad (- ad 1867)) (cdr (assq 'meiji skk-gengo-alist))) ((or (< ad 1926) (and (= ad 1926) month (< month 12)) (and (= ad 1926) month (= month 12) day (< day 25))) (setq ad (- ad 1911)) (cdr (assq 'taisho skk-gengo-alist))) ((or (< ad 1989) (and (= ad 1989) month (= month 1) day (< day 8))) (setq ad (- ad 1925)) (cdr (assq 'showa skk-gengo-alist))) ((or (< ad 2019) (and (= ad 2019) month (< month 5))) (setq ad (- ad 1988)) (cdr (assq 'heisei skk-gengo-alist))) (t (setq ad (- ad 2018)) (cdr (assq 'reiwa 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$l$$$o(B" "$BNaOB(B")) 2018) ((member gengo '("$B$X$$$;$$(B" "$BJ?@.(B")) 1988) ((member gengo '("$B$7$g$&$o(B" "$B>C$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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-gadget.el ends here skk-dev-ddskk-c24a624/skk-hint.el000066400000000000000000000201371432756151500165710ustar00rootroot00000000000000;;; 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 3 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, see . ;;; 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: (require 'skk) (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 last-command-event 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 last-command-event 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 last-command-event skk-set-henkan-point-key)) (skk-with-point-move (setq skk-hint-end-point (point)) (setq skk-hint-state 'okuri) (set 'last-command-event (skk-downcase last-command-event)) (setq skk-hint-okuri-char (skk-char-to-unibyte-string last-command-event)) (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: ;; indent-tabs-mode: nil ;; End: ;;; skk-hint.el ends here skk-dev-ddskk-c24a624/skk-inline.el000066400000000000000000000210011432756151500170740ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) (eval-when-compile (require 'cl-lib)) ;; 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 (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))) (cl-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) (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) (when skk-inline-show-vertically-decor (setq string (funcall skk-inline-show-vertically-decor string))) (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)))) (cl-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) (cl-incf i)) (when (or invisible (and bottom (> (1+ skk-henkan-number-to-display-candidates) (- (window-body-height) (count-screen-lines (window-start) (point)))))) (recenter (- (1+ skk-henkan-number-to-display-candidates))))))) (provide 'skk-inline) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-inline.el ends here skk-dev-ddskk-c24a624/skk-isearch.el000066400000000000000000000754251432756151500172570ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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: (require 'skk) (eval-when-compile (require 'cl-lib)) ;; 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 last-command-event) 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) (cl-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) (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 (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 (setq deactivate-current-input-method-function 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 (cl-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 (string-match "^japanese-skk" (format "%s" default-input-method)) (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (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. (cl-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))) (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)) (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 (cl-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. ;; '([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 (if (null cmd) "" (aref cmd 2))) (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 (cl-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))) (aset cmd 2 newmsg))))) (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 last-command-event ?\177) ?0))) (event (read-event (skk-isearch-incomplete-message)))) (cond ((equal 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 (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 "")))))) ;;; 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)) (deactivate-input-method))) (t ad-do-it))))) ;;;###autoload (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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-isearch.el ends here skk-dev-ddskk-c24a624/skk-jisx0201.el000066400000000000000000000425641432756151500171170ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; Created: Oct. 30, 1999. ;; 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 3 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, see . ;;; 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: (require 'skk) (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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; Created: Sep. 30, 2000. ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) ;;;###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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-jisx0213.el ends here skk-dev-ddskk-c24a624/skk-jisyo-edit-mode.el000066400000000000000000000173751432756151500206430ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;; This is a major mode for editing SKK dictionaries. ;;; Code: (require 'skk) (require 'skk-cus) (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))) (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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-kakasi.el ends here skk-dev-ddskk-c24a624/skk-kcode.el000066400000000000000000000720241432756151500167160ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) (require 'skk-tankan) (eval-when-compile (require 'cl-lib) (defvar enable-recursive-minibuffers) (defvar message-log-max)) ;;;###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) (cl-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) (cl-case flag (x0213-1 (char-to-string (make-char 'japanese-jisx0213-1 n1 n2))) (x0213-2 (char-to-string (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 (make-char skk-kcode-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 (read-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)) (read-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 (read-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)) (read-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 (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 (concat ", " (propertize "UNICODE:" 'face 'skk-display-code-prompt-face) (format "U+%04x" char))) (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 (concat (propertize (char-to-string char) 'face 'skk-display-code-char-face) "\t" (format "UNICODE: U+%04x" char)))) ;; (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-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))) (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))) ;;;; 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 (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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-kcode.el ends here skk-dev-ddskk-c24a624/skk-leim.el000066400000000000000000000044011432756151500165510ustar00rootroot00000000000000;;; skk-leim.el --- SKK related code for LEIM ;; Copyright (C) 1997, 1999, 2000 ;; Murata Shuuichirou ;; Author: Murata Shuuichirou ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;; SKK related code for LEIM ;;; Code: (require 'skk) ;;;###autoload (defun skk-activate (&optional name) (setq deactivate-current-input-method-function '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) (setq deactivate-current-input-method-function '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 () (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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-leim.el ends here skk-dev-ddskk-c24a624/skk-look.el000066400000000000000000000324131432756151500165730ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;; ;; ~/.skk $B$+(B ~/.emacs.d/init.el $B$G(B `skk-use-look' $B$r(B t $B$K%;%C%H$7$F$3$l$r(B ;; $BI>2A$7$F2<$5$$!#$=$N8e(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=$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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-look.el ends here skk-dev-ddskk-c24a624/skk-lookup.el000066400000000000000000000512361432756151500171440ustar00rootroot00000000000000;;; skk-lookup.el --- SKK lookup gateway -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000, 2001 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; Created: Sep. 23, 1999 ;; 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 3 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, see . ;;; 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 (cl-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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-lookup.el ends here skk-dev-ddskk-c24a624/skk-macs.el000066400000000000000000000712541432756151500165600ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;; Macros and inline functions commonly used in SKK ;;; Code: (require 'advice) (require 'skk) ;;;; macros (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) `(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)))) ;;;###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 26)) (encode-coding-string (char-to-string char) 'iso-8859-1)) ;; GNU Emacs 25 $B$^$G(B (t (string-make-unibyte (char-to-string char)))))) (defun skk-ascii-char-p (char) (eq (char-charset char skk-charset-list) 'ascii)) (defun skk-jisx0208-p (char) (eq (char-charset char skk-charset-list) 'japanese-jisx0208)) (defun skk-jisx0213-p (char) (memq (char-charset char skk-charset-list) '(japanese-jisx0213-1 japanese-jisx0213.2004-1 japanese-jisx0213-2))) (defun skk-split-char (ch) ;; http://mail.ring.gr.jp/skk/200908/msg00006.html ;; 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))) (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" (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" (if (and window-system (not (eq mode 'default))) (apply 'propertize string (cdr (assq mode skk-emacs-property-alist))) string)) (defun skk-face-proportional-p (face) (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$rC$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-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" ;; mule-version $B$,(B 6.0 $B0J>e$N(B GNU Emacs $B$O(B Emacs with coding system utf-8-emacs ;; (emacs-version) => "GNU Emacs 28.0.50" ;; (stringp "$B4A(B") => t ;; (encode-coding-string "$B4A(B" 'emacs-mule) => "\222\264\301" (skk-string-lessp-in-coding-system str1 str2 'emacs-mule)) (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-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) (cond ((eql arg '1) nil) ((eql arg '-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))) (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-reset-henkan-count (count) ;; $B"&%b!<%I$KLa$k$H$-$O(B 0 ;; $B"'%b!<%I$N$^$^8uJd0lMw$N '(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-detach-extent (object) (when (overlayp object) (delete-overlay object))) (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)))) (provide 'skk-macs) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-macs.el ends here skk-dev-ddskk-c24a624/skk-num.el000066400000000000000000000521701432756151500164300ustar00rootroot00000000000000;;; skk-num.el --- $B?tCMJQ49$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, 2002 ;; Masahiko Sato ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) (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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-num.el ends here skk-dev-ddskk-c24a624/skk-search-web.el000066400000000000000000000156651432756151500176610ustar00rootroot00000000000000;;; skk-search-web.el --- Google $B%5%8%'%9%H$J$I$rMxMQ$7$?$+$J4A;zJQ49(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2010, 2011 HAMANO Kiyoto ;; Copyright (C) 2011 Tsuyoshi Kitamoto ;; Author: HAMANO Kiyoto ;; Maintainer: Tsuyoshi Kitamoto ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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>e5-Nc$G<($7$?4X?t(B skk-google-suggest $B$O(B skk-google-cgi-api-for-japanese-input ;; $B$KCV$-49$(2DG=$G$9!#(B ;; (add-to-list 'skk-search-prog-list ;; '(skk-search-web 'skk-google-cgi-api-for-japanese-input) ;; t) ;; (setq skk-read-from-minibuffer-function ;; (lambda () ;; (car (skk-google-cgi-api-for-japanese-input skk-henkan-key)))) ;; SKK Dynamic Completion $B$HJ;MQ$9$k$3$H$b2DG=$G$9!#(B ;; (add-to-list 'skk-completion-prog-list '(skk-comp-google) t) ;;; Test: ;; (let ((skk-henkan-key "emacs")) ;; (skk-search-web 'skk-google-suggest)) ;; => ("emacs" "emacs $B%3%^%s%I(B" "emacs windows" "emacs $B;H$$J}(B" "emacs $BJ8;z%3!<%I(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$K46]*\\)\"" 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-web (function) (funcall function skk-henkan-key)) ;; skk-comp, skk-dcomp, (defvar skk-comp-google-candidates nil) (defun skk-comp-google () ;; Howto use ;; (add-to-list 'skk-completion-prog-list '(skk-comp-google) t) (unless (string= skk-comp-key "") (when skk-comp-first (setq skk-comp-google-candidates (skk-comp-google-make-candidates))) (prog1 (car skk-comp-google-candidates) (setq skk-comp-google-candidates (cdr skk-comp-google-candidates))))) (defun skk-comp-google-make-candidates () (let ((key (car (split-string skk-comp-key "*" t)))) (skk-google-suggest key))) (provide 'skk-search-web) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-search-web.el ends here skk-dev-ddskk-c24a624/skk-server-completion.el000066400000000000000000000204231432756151500213020ustar00rootroot00000000000000;;; skk-server-completion.el --- server completion $B$N%/%i%$%"%s%H(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2005 Fumihiko MACHIDA ;; 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 3 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, see . ;;; 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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-server-completion.el ends here skk-dev-ddskk-c24a624/skk-server.el000066400000000000000000000305651432756151500171430ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) (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 ((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")))) (set-process-query-on-exit-flag process nil) 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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-server.el ends here skk-dev-ddskk-c24a624/skk-setup.el.in000066400000000000000000000036431432756151500173770ustar00rootroot00000000000000;;; skk-setup.el --- initial setup for SKK -*- emacs-lisp -*- ;; Copyright (C) 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: ;;; 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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-setup.el ends here skk-dev-ddskk-c24a624/skk-show-mode.el000066400000000000000000000163771432756151500175440ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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: (require 'skk-emacs) (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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-show-mode.el ends here skk-dev-ddskk-c24a624/skk-sticky.el000066400000000000000000000207051432756151500171360ustar00rootroot00000000000000;;; skk-sticky.el --- Improved sticky-shift on SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 2008 IRIE Tetsuya ;; Author: IRIE Tetsuya ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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: (require 'skk) (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 last-command-event skk-downcase-alist))) (set 'last-command-event (if pair (car pair) (upcase last-command-event)))))) (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 last-command-event))) (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 last-command-event 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 (read-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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-sticky.el ends here skk-dev-ddskk-c24a624/skk-study.el000066400000000000000000000472421432756151500170050ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese ;; Created: Apr. 11, 1999 ;; 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 3 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, see . ;;; 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-lib) (defvar jka-compr-compression-info-list) (defvar print-quoted)) (require 'skk) (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) (cl-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 t))) 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 t))) 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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-study.el ends here skk-dev-ddskk-c24a624/skk-tankan.el000066400000000000000000006261171432756151500171150ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; 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 3 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, see . ;;; 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 ;; ;; (aset skk-tankan-annotation-table 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 (char-charset char skk-charset-list)) (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$,Ito$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) (aset skk-tankan-annotation-table (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) (aset skk-tankan-annotation-table (make-char 'japanese-jisx0213-1 (+ 32 (car x)) (+ 32 (nth 1 x))) (nth 2 x))))) (provide 'skk-tankan) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-tankan.el ends here skk-dev-ddskk-c24a624/skk-tut.el000066400000000000000000001340441432756151500164460ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) (eval-and-compile (autoload 'skk-nicola-setup-tutorial "skk-nicola")) (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 . (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-number-to-display-candidates . 7) (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-characters) ("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-char . ?\040) (skk-show-candidates-nth-henkan-char . 5) (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) ; Mule-UCS (quote japanese-jisx0208) skk-kcode-charset)) (skk-kcode-method . 'code-or-char-list) (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 last-command-event 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 (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 (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 (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 () (dolist (e skktut-adviced-alist) (ad-enable-advice (car e) (cdr e) 'skktut-ad) (ad-activate (car e)))) (defun skktut-disable-advice () (dolist (e skktut-adviced-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) (local-variable-p 'minor-mode-map-alist)) (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 '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 post comments, questions and bug reports on %s to: https://github.com/skk-dev !! Hit key when you are ready.") (skk-version t))) (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 (read-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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-tut.el ends here skk-dev-ddskk-c24a624/skk-vars.el000066400000000000000000006610051432756151500166070ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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)) (require 'skk) (declare-function skk-lookup-get-content "skk-lookup.el") ;; Functions needed prior to loading skk-macs.el. (defun skk-find-window-system () (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)) (defun skk-jisyo (&optional coding) "CODING $B$,(B nil $B$G$"$l$P!"8D?M<-=q$N(B PATH $B$rJV$9(B ($BJQ?t(B `skk-jisyo' $B$,J8;zNs$G(B $B$"$l$P$=$NCM$r!"%3%s%9%;%k$G$"$l$P(B car $B$rJV$9(B). CODING $B$,(B non-nil $B$G$"$l$P!"8D?M<-=q$KE,MQ$5$l$k(B CODING $B$rJV$9(B ($BJQ?t(B `skk-jisyo' $B$,(B $BJ8;zNs$G$"$l$PJQ?t(B `skk-jisyo-code' $B$NCM$r!"%3%s%9%;%k$G$"$l$P(B cdr $B$rJV$9(B)." (let ((p (if (consp skk-jisyo) (car skk-jisyo) skk-jisyo)) (c (if (consp skk-jisyo) (cdr skk-jisyo) skk-jisyo-code))) (if coding c p))) ;;;###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)))) ;;;; 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 ((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.d/init.el $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.d/init.el $B$K(B SKK $B$N3Fl9g$O(B \\[skk-restart] $B$G$OH?1G$5$l$J$$!#(B ~/.emacs.d/init.el $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" ,(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" ,(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 '(radio (file :tag "$B<-=q%U%!%$%kL>(B") (cons :tag "`skk-jisyo-code' $B$H0[$J$kJ8;z%3!<%I$r;HMQ$9$k>l9g(B" (file :tag "PATH/TO/FILE") (coding-system :tag "CODING-SYSTEM-NAME"))) :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 $BJ8;zNs(B \"euc\", \"ujis\", \"sjis\", \"jis\" $B$N;XDj$bN(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!W$r;XDj$9$k!#(B $B$3$NJQ?t$K$O!"0z?t#18D$N4X?t!JKt$O4X?t$N%j%9%H!K$rBeF~$9$k!#(B $BBeF~$7$?4X?t$O!"3NDj$7$?J8;zNs$r0z?t$K(B `skk-update-jisyo-p' $BFb$G(B `funcall' $B$5$l$k!#(B $B$3$NJQ?t$N%G%U%)%k%H$O(B nil $B$G$"$k$?$a!"4X?t(B `skk-update-jisyo-p' $B$O(B t $B$rJV$9!#(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;H(B $BMQ$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") ("zn" 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-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-characters) ("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-comp-start-henkan); 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.d/init.el' $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$r(B $BJQ99$9$k!#(BASCII $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!"(B $BFIE@(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!"(B $B6gE@(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$re$N@0?t$G$"$kI,MW!#(B" :type 'integer :group 'skk-henkan) (defcustom skk-previous-candidate-keys (list "x" "\C-p") "*`skk-previous-candidate' $B$r3dEv$F$k%-!$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) (make-obsolete-variable 'skk-henkan-show-candidates-rows 'skk-henkan-number-to-display-candidates "DDSKK 16.2") (defcustom skk-henkan-number-to-display-candidates 7 "*$BJQ498uJd$rI=<($9$k8D?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(B $B$r@lMQ%&%#%s%I%&$KI=<($9$k!#(B nil $B$G$"$l$P!"8uJd0lMw$r%(%3!<%(%j%"$KI=<($9$k!#$?$@$7!"8uJd0lMw$NJ8;zNs$ND9$5$,(B $B%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@l(B $BMQ$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-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.d/init.el $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 (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) (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 '(("euc" . euc-jis-2004) ("ujis" . euc-jis-2004) ("sjis". japanese-shift-jis-2004) ("jis" . iso-2022-jp-3)) "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.d/init.el $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) (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$r (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 (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) (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" ,(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)) "*$BJd404X?t!"Jd40BP>]$N<-=q$r7hDj$9$k$?$a$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!"#12s$NI>2A$K$D$-#1$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-characters) ;; skk-rom-kana-rule-list)) ;; (car (rassoc (list nil 'skk-toggle-characters) ;; skk-rom-kana-rule-list)) ;; (car (rassoc (list nil 'skk-toggle-characters) ;; 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" :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 '((reiwa "$BNaOB(B" "R") (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 (lambda (char) ;; see emacs/lisp/fill.el how the category `|' is ;; treated. (aref (char-category-set 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 '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 'code-or-char-list "*`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 'japanese-jisx0213-1 "*`skk-input-by-code-or-menu' $B$G;H$o$l$kJ8;z%;%C%H!#(B" :type (let ((list '((const japanese-jisx0213-1) (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 254) (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))) 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 ($BItl9g$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 '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" :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 (/ (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 (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") "*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) (defvar skk-tut-current-lang nil) (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\".") (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 $A$G$"$l$P!"$+$J%b$B!<$A%I$d%"%9%-$B!<$A%b$B!<$A%I$XGP$jLf$o$C$?$H$-$K%+$B!<$A%=%k86=|$K(B skk-*-mode-string $A$r1mJ>$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") ;;; skk-decor.el related. ;; skk-show-inline 'vertical $B$K8B$C$F%U%'%$%9$r:nMQ$5$;$k(B (defvar skk-inline-show-vertically-decor nil) (defface skk-inline-show-vertically-cand-face '((((type tty)) (:foreground "light sea green" :background "dark sea green")) (t (:foreground "white" :background "gray40" :height 180 :box (:line-width 3 :color "gray40" :style released-button) ))) "$B8uJd$KE,MQ$9$k(B FACE" :group 'skk-visual) (defface skk-inline-show-vertically-anno-face '((((type tty)) (:foreground "DarkSeaGreen")) (t (:foreground "yellow" :height 120))) "$B%"%N%F!<%7%g%s$KE,MQ$9$k(B FACE" :group 'skk-visual) ;; tooltip $B$K8B$C$F%U%'%$%9$r:nMQ$5$;$k(B (defvar skk-tooltip-show-at-point-decor nil) (defface skk-tooltip-show-at-point-cand-face '((((type tty)) (:foreground "light sea green" :background "dark sea green")) (t (:foreground "white" :background "gray40" :height 200 :box (:line-width 3 :color "gray40" :style released-button) ))) "$B8uJd$KE,MQ$9$k(B FACE" :group 'skk-visual) (defface skk-tooltip-show-at-point-anno-face '((((type tty)) (:foreground "DarkSeaGreen")) (t (:foreground "yellow" :height 120))) "$B%"%N%F!<%7%g%s$KE,MQ$9$k(B FACE" :group 'skk-visual) ;; $B8uJd%P%C%U%!$K8B$C$F%U%'%$%9$r:nMQ$5$;$k(B (defvar skk-henkan-show-candidates-buffer-decor nil) (defface skk-henkan-show-candidates-buffer-cand-face '((((type tty)) (:foreground "light sea green" :background "dark sea green")) (t (:foreground "white" :background "gray40" :height 250 :box (:line-width 3 :color "gray40" :style released-button) ))) "$B8uJd$KE,MQ$9$k(B FACE" :group 'skk-visual) (defface skk-henkan-show-candidates-buffer-anno-face '((((type tty)) (:foreground "DarkSeaGreen")) (t (:foreground "yellow" :height 120))) "$B%"%N%F!<%7%g%s$KE,MQ$9$k(B FACE" :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)))) (defvar skk-emacs-modeline-property (when window-system (list 'local-map (let ((map (make-sparse-keymap))) (define-key map [mode-line mouse-3] #'skk-emacs-modeline-menu) (define-key map [mode-line mouse-1] #'skk-emacs-circulate-modes) map) 'help-echo "mouse-1: $B%b!<%I@ZBX(B($B=[4D(B)\nmouse-3: SKK $B%a%K%e!<(B" 'mouse-face 'highlight))) (defvar skk-emacs-property-alist (when window-system (list (cons 'latin skk-emacs-modeline-property)))) (provide 'skk-vars) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-vars.el ends here skk-dev-ddskk-c24a624/skk-version.el000066400000000000000000000047071432756151500173210ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk-vars) (put 'skk-version 'product-name "Daredevil SKK") (put 'skk-version 'version-string (let ((ver "17.1") (mepla "mepla") (path (catch 'exit (dolist (p load-path) ;; ;; ~/.emacs.d/elpa/ddskk-20150107.409/ (when (string-match "ddskk-[0-9]+\.[0-9]+" p) (throw 'exit p)))))) (if path (format "%s/%s-%s" ver mepla (car (cdr (split-string path "ddskk-")))) ver))) (put 'skk-version 'codename "Neppu") ; See also `READMEs/CODENAME.ja' (put 'skk-version 'codename-ja "$BG.n>(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 (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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-version.el ends here skk-dev-ddskk-c24a624/skk-viper.el000066400000000000000000000305101432756151500167500ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;;; Code: (require 'skk) (eval-when-compile (if (boundp 'viper-mode) (when (eq viper-mode 'ask) (setq viper-mode nil)) (defvar viper-mode nil))) (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 (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-characters))) (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) (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 'ccc-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))) (setq skk-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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-viper.el ends here skk-dev-ddskk-c24a624/skk.el000066400000000000000000007103441432756151500156370ustar00rootroot00000000000000;;; skk.el --- Daredevil SKK (Simple Kana to Kanji conversion program) -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988-1997 Masahiko Sato ;; Copyright (C) 1999-2020 SKK Development Team ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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-lib)) ;; Emacs standard library. (require 'advice) (require 'easymenu) (eval-and-compile ;; SKK common. ;; skk $B$N5/F0;~!"(B*-autoloads $B$O2<5-$N#2l9g!"(B autoload $B$O(B package.el $B$K$h$C$F4IM}$5$l$k$?$a!"(B ;; skk-autoloads$B$,%m!<%I$G$-$J$$>l9g!"C1$KL5;k$9$k!#(B ;; | make $B$G%$%s%9%H!<%k(B | MELPA $B7PM3$G%$%s%9%H!<%k(B ;; $B%U%!%$%kL>(B | skk-autoloads.el | ddskk-autoloads.el ;; provide $B@k8@(B | $B$"$j(B (SKK-MK $B$,@8@.(B) | $B$J$7(B (require 'skk-autoloads nil 'noerror) (provide 'skk) ; workaround for recursive require (require 'skk-vars) (require 'skk-macs) (require 'skk-emacs) ;; Shut up, compiler. (autoload 'skk-kanagaki-initialize "skk-kanagaki") ; nicola/ (autoload 'skk-rdbms-count-jisyo-candidates "skk-rdbms")) ;;;###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") (skk-require-module) ;; To terminate kana input. (skk-add-skk-pre-command) (add-hook 'post-command-hook 'skk-after-point-move nil 'local) (skk-search-ja-dic-maybe t) (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 (if skk-japanese-message-and-error "$B8D?M<-=q$rJ]B8$;$:$K(B Emacs $B$r=*N;$7$^$9!#NI$$$G$9$+!)(B " "Do you really wish to kill Emacs without saving Jisyo? ")) (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))) (skk-emacs-prepare-menu) (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 (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) (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 (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)) ;; (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)))) (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-comp-start-henkan)))) (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" (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) (skk-mode-string-to-indicator mode (format "%s%s%s" skk-indicator-prefix base (funcall skk-indicator-suffix-func mode)))) (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)) (cl-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) (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) (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 (cl-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-delete-selection-wrapper () (unless (and (member (char-to-string last-command-event) (mapcar (lambda (x) (car x)) skk-auto-paren-string-alist)) skk-use-auto-enclose-pair-of-region) (delete-region (point) (mark)) (if (and overwrite-mode (eq this-command 'self-insert-command)) (let ((overwrite-mode nil)) (self-insert-command (prefix-numeric-value current-prefix-arg)) (setq this-command 'ignore))))) (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 ((funcs '(skk-current-kuten skk-current-touten skk-input-by-code-or-menu skk-today)) (supersede-funcs '(skk-delete-backward-char))) (unless (get 'skk-insert 'delete-selection) (dolist (func funcs) (put func 'delete-selection t)) (dolist (func supersede-funcs) (put func 'delete-selection 'supersede)) (put 'skk-insert 'delete-selection 'skk-delete-selection-wrapper)))) (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" (cl-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)))) ;;;###autoload (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)))) ;;;###autoload (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)) ;;;###autoload (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 ;;;###autoload (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 last-command-event)) (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 (set 'last-command-event ?>) (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. (setq skk-insert-keysequence (string ch)) (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 (setq skk-insert-keysequence (concat skk-insert-keysequence (string ch))) (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)) (setq skk-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 last-command-event ;; `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 last-command-event))) (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 (use-region-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)) (setq skk-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 last-command-event)) (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 (use-region-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))) (setq skk-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) ;$B"'%b!<%I0J30$J$i!#$D$^$j0lH/L\$r4^$`(B (skk-change-marker) (setq skk-current-search-prog-list (cond ((and (integerp prog-list-number) (<= 0 prog-list-number) (<= prog-list-number 9)) (or (symbol-value (intern (format "skk-search-prog-list-%d" prog-list-number))) 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%^!<%+! skk-henkan-count (- skk-show-candidates-nth-henkan-char 2) )) ;; 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-henkan-show-candidates () "$BJQ49$7$?8uJd72$r%(%3!<%(%j%"$KI=<($9$k!#(B" (skk-save-point (let* ((max-candidates skk-henkan-number-to-display-candidates) (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)))) (nth-henkan (- skk-show-candidates-nth-henkan-char 1)) (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)) (setq skk-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 (+ nth-henkan 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 (+ nth-henkan (* 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 (read-event)) (char (event-to-character event)) (key (skk-event-key event)) num) ;; clear out candidates in echo area (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 (setq skk-henkan-count (+ nth-henkan (* 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 (+ nth-henkan (* loop max-candidates)))) (setq skk-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 nth-henkan)) (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 skk-henkan-number-to-display-candidates) (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 skk-henkan-number-to-display-candidates)) ; $B3FNs$N:G=i$N8uJd(B (not (zerop i))) (setq str (concat str "\n"))) (setq str (concat str (if (zerop (% i skk-henkan-number-to-display-candidates)) "" " ") 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 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 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)))) (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 (if skk-henkan-show-candidates-buffer-decor (funcall skk-henkan-show-candidates-buffer-decor str) 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 :extend t))) (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))) (let ((w (selected-window))) (pop-to-buffer buff) (fit-window-to-buffer) (select-window w)) (when minibuf-p (select-window (minibuffer-window)))))) ;;;###autoload (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) (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 (setq skk-henkan-count (cdr skk-exit-show-candidates)) (skk-henkan)) ;; skk-henkan-show-candidates $B$KF~$kA0$K8uJd$,?T$-$?>l9g(B (setq skk-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))) (let ((w (selected-window))) (pop-to-buffer buff) (fit-window-to-buffer) (select-window w)) (when minibuf-p (select-window (minibuffer-window))))))) ;;;###autoload (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)))) ;;;###autoload (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\") "(when word (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))))) ;;;###autoload (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 (cl-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) (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 ))) (setq skk-henkan-count -1) (setq skk-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!") (setq skk-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 last-command-event)) (normal (not (eq last-char last-command-event))) (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)) (setq skk-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 "") (setq skk-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 "") (setq skk-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) (set 'last-command-event 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 (set 'last-command-event 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) ;;;###autoload (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!#8+=P$78l$rJQ49$;$:$K$=$N$^$^4A;zJQ49$r(B $B9T$$$?$1$l$P!"(B\\[universal-argument] SPC $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 (setq skk-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) (setq skk-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)))) ;;;###autoload (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%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 (nth 1 list) ;okurigana (nth 2 list) ;word (skk-search-jisyo (nth 1 list) 0 'delete) ;old-words-list (nth 3 list))) ;purge (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 t))) 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 (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 (called-interactively-p 'interactive) (point-max))) (interactive-p (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))))))))) ;;;###autoload (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))))) ;;;###autoload (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<-=q%P%C%U%!$K$O(B `skk-jisyo-code' $B$,E,MQ$5$l$k(B (nil $B$G$"$l$P(B euc) $B$,!"(BFILE $B$K(B (\"path/to/file\" . CODING-SYSTEM) $B$N%3%s%9%;%k$b;XDj$G$-$k!#(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 (cond ((consp file) (cdr file)) ((string= file (skk-jisyo)) (skk-jisyo t)) (t 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 $B$$$:$l$+$NMWAG$,8uJd$r8+$D$1$?;~E@$G=*N;$9$k!#(B" ;; $B8D?M<-=q$G8uJd$,8+$D$+$l$P$=$l$rJV$9!J(BL $B<-=q$^$G8+$K$$$/Lu$G$O$J$$!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$a2A$7$?CM$G$"$k!#(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 ((skk-henkan-key "$B$[$+$s(B")) ;; (with-current-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg) ;; (skk-search-jisyo nil 0))) ;; => (("$BJd4V(B" "$BJd40(B" "$BJ]4I(B") nil nil nil) ;; (let ((skk-henkan-key "$B$&$4(Bk")) ;; (with-current-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg) ;; (skk-search-jisyo "$B$/(B" 0))) ;; => (("$BF0(B") ("[$B$/(B") ("$BF0(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!#(B ;; key $B$N@hF,ItJ,$K(B "\n" $B$,4^$^$l$F$$$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))) ;;;###autoload (defun skk-compute-henkan-lists (okurigana) "$B<-=q8uJd72$r#4$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 ;; ;; (with-temp-buffer ;; (insert "$B$F$s$5$$(B /$BE>:\(B/$BE7:R(B/$BE7:M(B/") ;; (goto-char (point-min)) ;; (search-forward " /") ;; (skk-compute-henkan-lists "")) ;; => (("$BE>:\(B" "$BE7:R(B" "$BE7:M(B") nil nil 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) ;; ;; (with-temp-buffer ;; (insert "$B$J(Bk /$BK4(B/$BL5(B/$BLD(B/$B5c(B/[$B$/(B/$BL5(B/$BLD(B/$B5c(B/]/[$B$-(B/$BK4(B/]/") ;; (goto-char (point-min)) ;; (search-forward " /") ;; (skk-compute-henkan-lists "$B$/(B")) ;; => (("$BK4(B" "$BL5(B" "$BLD(B" "$B5c(B") ("[$B$/(B") ("$BL5(B" "$BLD(B" "$B5c(B") ("]" "[$B$-(B" "$BK4(B" "]")) ;; ;; * "[" $B$OD>8e$KB3$/$R$i$,$J$rAw$j2>L>$K;}$D4A;z$N8uJd72$N;O$^$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#2EY8F$P$l$k(B ;; ($BJQ49;~$K8!:w$r9T$C$?<-=q$,!"(Bskk-jisyo $B$H$O8B$i$J$$$N$G!"#2EY7W;;$;$6$k(B ;; $B$rF@$J$$(B)$B!#(B ;; ;; $BJQ49;~$O!"(B ;; o skk-henkan-okuri-strictly $B$,(B non-nil $B$G$"$l$P!"7W;;7k2L$N(B words3 $B$r!"(B ;; o skk-henkan-okuri-strictly $B$,(B nil $B$G$"$C$F(B ;; - skk-henkan-strict-okuri-precedence $B$,(B non-nil $B$"$l$P(B (skk-nunion words3 words1) $B$r(B ;; - skk-henkan-strict-okuri-precedence $B$,(B nil $B$N>l9g$O(B words1 $B$r(B ;; $Bl9g$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))) ;;;###autoload (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))) ;;;###autoload (defun skk-update-jisyo-original (word &optional purge) "$B:(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!"(Bskk-okuri-search $B$O8+=P$78l$N(B ;; $BD9$$=g$K8uJd$rJV$9I,MW$,$"$k!#(B ;; skk-okuri-search $B$,!"8+IU$1$?8uJd$r8+=P$78l$r%-!<$H$7$F>:=g$K%=!<%H$7$FJV(B ;; $B$9$?$a!"8D?M<-=q$N%=!<%H$OI,MW$G$J$$!#(B ;; $B$h$C$F!":G8e$KJQ49$7$?$b$N$r(B skk-okuri-ari-min $B$N0LCV$KA^F~$9$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" ;; $BF~NO$H$J$k(B OLD-WORDS-LIST $B$O!"4X?t(B `skk-search-jisyo' $B$,=PNO$7$?$b$N$G$"$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 (skk-update-jisyo-2 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 (cl-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))) (cl-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 (skk-update-jisyo-2 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 (skk-update-jisyo-2 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 (skk-update-jisyo-2 words4) "/")))))) (defun skk-update-jisyo-2 (words) (mapconcat #'skk-quote-char words "/")) ;;;###autoload (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)))) ;;;###autoload (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" (cond ((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))) (skk-insert-keysequence (list skk-insert-keysequence)))) (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" (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" (skk-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))))))) ;;;###autoload (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 (&optional check) ;; `skk-search-prog-list' $B$N0lMWAG$H$7$F:nMQ$9$k$[$+!"(B ;; skk-mode $B$KF~$k$?$S(B check $B$GI>2A$5$l$k!#(B (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) (if check (skk-message "$B<-=q$H$7$F(B leim/ja-dic $B$r;H$$$^$9(B" "Use leim/ja-dic as dictionary") (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)))) ;;;###autoload (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) (let ((beg0 (match-beginning 0)) (end0 (match-end 0))) (setq matched (buffer-substring-no-properties beg0 end0) replace (funcall func matched)) (goto-char beg0) ;; firstly insert a new string, secondly delete an old string to save ;; the cursor position. (insert-and-inherit replace) (delete-region (+ beg0 (length replace)) (+ end0 (length replace))))) (set-marker end nil))))) ;;;###autoload (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))) ;;;###autoload (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 (cl-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))))) ;;;###autoload (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) ""))) ;;;###autoload (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) ""))) ;;;###autoload (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))) ;;;###autoload (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-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-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))))) ;;; 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))) ;;;###autoload (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" (setq skk-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" ;; Emacs 27 $B$^$G$O(B $BHs(B interactive $B$G$"$C$?$,!"(B ;; Emacs 28 $B$+$i(B WARNING: Adding advice to subr keyboard-quit ;; without mirroring its interactive spec $B$H$J$C$?$?$a(B interactive $B$H$7$?!#(B ;; SRC/lisp/emacs-lisp/advoce.el $B$N(B @@ Advising interactive subrs: $B$,;29M$K$J$k!#(B (interactive) (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-minibuffers (around skk-ad activate preactivate) "$BF1>e(B" (interactive) (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 (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 (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 ;; Author: Tsuyoshi Kitamoto ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Created: 22 Jan 2016 ;; 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 3 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, see . ;;; Commentary: ;; 使い方 ;; o (tar-salvage-file "~/temp/foo.tar" "foo/bar.el" "~/bar.el") ;; アーカイブ foo.tar の中のファイル bar.el を取り出して、 ;; ~/bar.el として保存します。 ;; o (tar-list-files "~/temp/foo.tar") ;; アーカイブ foo.tar の中のファイル群をリストで返します。 ;;; shut up compiler warning. (eval-when-compile (declare-function tar--extract "tar-mode") (declare-function tar-header-block-tokenize "tar-mode") (declare-function tar-header-data-end "tar-mode") (declare-function tar-header-name "tar-mode")) ;;; Code: (require 'tar-mode) ;;;###autoload (defun tar-make-descriptor (buffer) "BUFFER is made by function `tar-raw-buffer'. Return list like `tar-parse-info', See `tar-mode'. this function is based on `tar-summarize-buffer'." (let ((result '()) (pos (point-min)) (coding (or file-name-coding-system default-file-name-coding-system locale-coding-system)) descriptor) (with-current-buffer buffer (while (and (< pos (point-max)) (setq descriptor (tar-header-block-tokenize pos coding))) (let ((size (tar-header-size descriptor))) (if (< size 0) (error "%s has size %s - corrupted" (tar-header-name descriptor) size))) (push descriptor result) (setq pos (tar-header-data-end descriptor)))) ; END while (nreverse result))) ;;;###autoload (defun tar-file-descriptor (buffer file) "Return descriptor Structure for match FILE in BUFFER. BUFFER is made by function `tar-raw-buffer'." ;; (tar-file-descriptor (tar-raw-buffer "/temp/ddskk-16.0.52.tar") "ann") ;; => [tar-header # ;; "ddskk-16.0.52/skk-annotation.el" 436 1000 1000 64715 (22169 36584) 7124 nil ;; "" "ustar " "brutus" "brutus" 0 0 nil] (let ((descriptor (tar-make-descriptor buffer))) (catch 'match (dolist (d descriptor) (when (string-match file (tar-header-name d)) (throw 'match d)))))) ;;;###autoload (defun tar-raw-buffer (archive) "ARCHIVE is path to tar archive. Return buffer object." (let* ((path (expand-file-name archive)) (buffer (file-name-nondirectory path))) ;; バッファ名にtarの拡張子がある場合、バッファのコーディングが適切 ;; に設定されない。この結果、以下の2つのskk-getでダウンロードした ;; 以下の2つのファイルが展開されない。 ;; 対処として、拡張子を``tar''→``archive''に変更する。 ;; - SKK-JISYO.edict.tar ;; - zipcode.tar ;; 参考 ;; バッファのコーディングの自動設定は、以下のルートで否決。 ;; (tar--extract desc) ;; (funcall set-auto-coding-function name (- end start)) ;; (set-auto-coding filename size) ;; (find-auto-coding filename size) ;; (setq head-end (set-auto-mode-1)) ;; (inhibit-local-variables-p) (if (string-match "\\.tar\\b" buffer) (setq buffer (replace-match "archive" t t buffer))) (when (get-buffer buffer) (kill-buffer buffer)) (set-buffer (get-buffer-create buffer)) (set-buffer-multibyte nil) (insert-file-contents-literally path) (when (fboundp 'zlib-decompress-region) (zlib-decompress-region (point-min) ; GNU Emacs 24 以降であれば (point-max)))) ; 直接 tar.gz いける (事前の gzip -d 不要) (current-buffer)) ;;;###autoload (defun tar-list-files (archive) "ARCHIVE is path to tar archive." (let* ((buffer (tar-raw-buffer archive)) (descriptor (tar-make-descriptor buffer))) (kill-buffer buffer) (mapcar #'tar-header-name descriptor))) ;;;###autoload (defun tar-salvage-file (archive salvagefile savefile) "Salvage SALVAGEFILE in ARCHIVE, and save to SAVEFILE." (let* ((tar-data-buffer (tar-raw-buffer archive)) (desc (tar-file-descriptor tar-data-buffer salvagefile))) (set-buffer (tar--extract desc)) (kill-buffer tar-data-buffer) (set-buffer-file-coding-system last-coding-system-used t) (setq buffer-file-name (expand-file-name savefile)) (basic-save-buffer) (kill-buffer nil))) (provide 'tar-util) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; tar-util.el ends here skk-dev-ddskk-c24a624/test/000077500000000000000000000000001432756151500154735ustar00rootroot00000000000000skk-dev-ddskk-c24a624/test/.nosearch000066400000000000000000000000001432756151500172640ustar00rootroot00000000000000skk-dev-ddskk-c24a624/test/all-tests.el000066400000000000000000000001461432756151500177260ustar00rootroot00000000000000(load "skk-test.el") ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; all-test.el ends here skk-dev-ddskk-c24a624/test/skk-test.el000066400000000000000000000015301432756151500175610ustar00rootroot00000000000000(require 'ert) (require 'skk) (ert-deftest skk-compute-henkan-lists/test1 () (let ((fixtures '(("てんさい /転載/天災/天才/" nil (("転載" "天災" "天才") nil nil nil)) ("なk /亡/無/鳴/泣/[く/無/鳴/泣/]/[き/亡/]/" "く" (("亡" "無" "鳴" "泣") ("[く") ("無" "鳴" "泣") ("]" "[き" "亡" "]")))))) (dolist (f fixtures) (let ((entry (car f)) (okurigana (nth 1 f)) (expected (nth 2 f))) (with-temp-buffer (insert ";;\n") (insert entry) (insert "\n") (forward-line -1) (search-forward "/" nil 'noerror) (should (equal (skk-compute-henkan-lists okurigana) expected))))))) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-test.el ends here skk-dev-ddskk-c24a624/tut-code/000077500000000000000000000000001432756151500162405ustar00rootroot00000000000000skk-dev-ddskk-c24a624/tut-code/.nosearch000066400000000000000000000000001432756151500200310ustar00rootroot00000000000000skk-dev-ddskk-c24a624/tut-code/README.tut000066400000000000000000000010571432756151500177360ustar00rootroot00000000000000-*- text -*- 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] skk-dev-ddskk-c24a624/tut-code/skk-def.el000066400000000000000000000307521432756151500201150ustar00rootroot00000000000000;;; skk-def.el --- SKK default definition -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; Commentary: ;; this file is to restore default setting for SKK. ;;; Code: (require 'skk-vars) (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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-def.el ends here skk-dev-ddskk-c24a624/tut-code/skk-mkmgk.el000066400000000000000000000273231432756151500204650ustar00rootroot00000000000000;;; skk-mkmgk.el --- Make Mazegaki dictionary from SKK-JISYO.* -*- coding: euc-jp -*- ;; Copyright (C) 2001 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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: (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 (let ((coding-system-for-read (cdr (assoc "euc" skk-coding-system-alist)))) (insert-file-contents (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 (let ((coding-system-for-read (cdr (assoc "euc" skk-coding-system-alist)))) (write-region 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) (let ((coding-system-for-read (cdr (assoc "euc" skk-coding-system-alist)))) (insert-file-contents (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 (= (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)) (with-current-buffer reference ; have to restore point after searching (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 (> (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) (= (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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-mkmgk.el ends here skk-dev-ddskk-c24a624/tut-code/skk-tutcdef.el000066400000000000000000002125611432756151500210150ustar00rootroot00000000000000;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method ;; 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 3 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, see . ;;; 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 ;; URL: https://github.com/skk-dev/ddskk ;; Keywords: japanese, mule, input method, TUT-code ;; 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 3 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, see . ;;; 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: (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) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; skk-tutcode.el ends here