$NetBSD: patch-aa,v 1.10 2009/08/17 16:05:32 taca Exp $ Index: AUTHORS =================================================================== RCS file: /cvs/tamago/tamago/AUTHORS,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- AUTHORS 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ AUTHORS 23 Aug 2002 07:46:38 -0000 1.2 @@ -4,16 +4,17 @@ KAWABATA, Taichi Use of custom. -NIIBE Yutaka +NIIBE Yutaka Design a part of ITS programming. Wrote ITS: its.el its/hira.el - Wrote tamago.el, menudiag.el, tamago-cnv.el, tamago-comm.el, - and tamago-mlh.el. + Wrote egg.el, menudiag.el, egg-cnv.el, egg-com.el, + and egg-mlh.el. Wrote backend conversion engine interface: - SJ3: tamago-lib/sj3.el, tamago-lib/sj3rpc.el, - WNN: tamago-lib/wnn.el, and tamago-lib/wnnrpc.el. + ANTHY: egg/anthy.el, egg/anthyipc.el, + SJ3: egg/sj3.el, egg/sj3rpc.el, + WNN: egg/wnn.el, and egg/wnnrpc.el. KATAYAMA Yoshio Design ITS programming. Index: ChangeLog =================================================================== RCS file: /cvs/tamago/tamago/ChangeLog,v retrieving revision 1.1.1.5 retrieving revision 1.14 diff -d -u -p -r1.1.1.5 -r1.14 --- ChangeLog 27 Jan 2001 18:46:59 -0000 1.1.1.5 +++ ChangeLog 9 Sep 2002 08:50:42 -0000 1.14 @@ -1,156 +1,60 @@ -2000-01-17 TOMURA Satoru - - * Version 4.0.6 released - -2000-01-17 TOMURA Satoru - - * README.ja.text: mentiond about doc/lc99.text - -2000-01-17 KATAYAMA Yoshio - - * its.el (its-hiragana, its-katanaka): modified - (its-zenkaku, its-hankaku): added - (its-put-cursor): bug fixed. - (its-set-cursor-status): redefined. - (its-search-beginning, its-search-end): created. - (its-end-of-input-buffer): modified. - (its-kill-line): modified. - (its-cancel-input): modified. - (its-japanese-hankaku): added. - (its-convert): added. - * egg.el (egg-redraw-face): bug fixed. - -2000-01-17 SAKAI Kiyotaka - - * its.el (its-hiragana, its-katakana): re-added. - -2000-01-17 SANETO Takanori - - * Makefile.in: move its-keydefs.el from ITSELS to TOPELS - -2000-01-16 - - * egg-sim.el: many functions renamed and modified... - * doc/code-table: created - -2000-01-15 TOMURA Satoru - - * egg-sim.el: rename egg-code.el as egg-sim.el - * egg-sim.el (egg-simple-input-method): rename - egg-insert-character as egg-simple-input-method - * egg.el: rename egg-insert-character as egg-simple-input-method - * doc/lc99.txt: added. - -2000-01-14 TOMURA Satoru - * egg-code.el: created - * egg.el: Bind egg-insert-character to C-^ in egg-mode - * egg.el: Delete the binding for C-_ in egg-mode - * Makefile.in: add egg-code to ${SRCS} - -2000-01-13 TOMURA Satoru - - * Version 4.0.5 released. - -2000-01-13 Katsumi Yamaoka - - * egg/sj3.el (sj3-end-conversion): Restrain from overrunning. - -2000-01-13 Katsumi Yamaoka - * egg/sj3rpc.el (sj3rpc-open): Use `sj3-server-version' instead of - 2. - (sj3rpc-unpack-mb-string): New macro. - (sj3rpc-tanbunsetsu-conversion, sj3rpc-get-bunsetsu-candidates-sub, - sj3rpc-begin): Use it instead of `comm-unpack'. - - (sj3rpc-server-coding-system): New macro. - (sj3rpc-kugiri-stdy, sj3rpc-tanbunsetsu-conversion, - sj3rpc-get-bunsetsu-candidates, sj3rpc-get-bunsetsu-candidates-sub, - sj3rpc-begin, sj3rpc-unpack-mb-string): Use it. - - (sj3-const): Switch on the value of `sj3-server-version'. - (sj3rpc-kugiri-stdy, sj3rpc-tanbunsetsu-conversion, - sj3rpc-get-bunsetsu-candidates, sj3rpc-get-bunsetsu-candidates-sub, - sj3rpc-begin): Modify for it. - - * egg/sj3.el (sj3-server-coding-system-list): New user option. - (sj3-server-version): Ditto. +2002-09-09 NIIBE Yutaka -2000-01-13 SAKAI Kiyotaka + Check JIS x0213 support at compile time. + * check-jisx0213.el: New file. + * configure.in: Check if JIS X0213 is supported or not. + * Makefile.in (TOPSRCS): Remove egg-x0213.el. + (DEPS): Don't load jisx0213.el. + (ITSSRCS): Removed its/aynu.el. + (AYNU): New variable. - * its.el: typo - * egg.el: typo + Bug fix. + * its/thai.el (its-thai-add-vowel, its-thai-add-tone): Bug fixes. + Just call compose-string. -2000-01-13 KATAYAMA Yoshio +2002-08-26 ISHIKAWA Mutsumi , + Takahiro Kambe , + Katsumi Yamaoka - * its.el(its-hiragana, its-katakana): does not work. so deleted. - -2000-01-12 NAKAJI Hiroyuki + * Makefile.in (TOPSRCS): Remove egg-util.el. Added egg-x0213.el. + (ITSSRCS): Added its/greek.el + its/greek.elc: Depends on its-keydef.elc. - * README.ja.txt: typo - * Makefile.in: (clean, distclean): modified. +2002-08-23 NIIBE Yutaka -2000-01-12 TOMURA Satoru - - * Version 4.0.4 released. - -2000-01-12 TOMURA Satoru + * AUTHORS (NIIBE Yutaka): Updated. + * egg-mlh.el: Update e-mail address. - * REAMDE: removed. - - * README.ja.txt: created. - -2000-01-12 SAKAI Kiyotaka + * leim-list.el: Removed eval-when contstuct. Reoved "loading + another" feature. + (egg-activate-anthy): Added. - * Makefile.in: "clean" removes ${ELCS}. - - * Makefile.in: "distclean" created. - -2000-01-12 Satoru Tomura +2002-08-23 Katsumi Yamaoka , NIIBE Yutaka - * Version 4.0.3 released. - -2000-01-12 Satoru Tomura + * egg-util.el: Removed. - * install-sh: copied from automake distribution +2002-08-08 NIIBE Yutaka - * configure.in: created + * Makefile.in (EGGSRCS): Added anthy.el and anthyipc.el + (srcdir, top_srcdir, VPATH): Added. + (DEPS): Use top_srcdir. - * Makefile.in: created + Added ANTHY support. + * egg/anthy.el egg/anthyipc.el: New files. + * leim-list.el: Added anthy. - * configure: generated by autoconf - -2000-01-11 Satoru Tomura +2002-08-02 SAITO Takuya - * leim-list.el: (defgroup sj3) added. + * its.el (its-previous-line): point-mim -> point-min (typo) - * egg/sj3.el (sj3-hosname, sj3-server-port): defcusotm'ed +2002-07-20 SAITO Takuya -2000-01-11 Katsumi Yamaoka + * egg.el (egg-activate-keymap-after-command): set-buffer to + killed buffer. - * egg/sj3.el : (require 'egg) added. +2002-05-08 Katsumi Yamaoka (cf. [mule-ja:08306]) -2000-01-11 SAKAI Kiyotaka - - * its.el (its-hiragana, its-katakana): New functions - -2000-01-07 Tomura Satoru - - * COPYING: The file is added. - - * ChangeLog.1: The original ChangeLog is renamed as. - - * ChangeLog: Created. - -2000-01-07 Tomura Satoru - - * Version 4.0.2 released. - -2000-01-06 Tomura Satoru - - * Version 4.0.1 released. - -2000-01-05 Tomura Satoru - - * Version 4.0.0 released. - + * its.el (its-next-line, its-previous-line): New commands; + substitute key definitions for `next-line' and `previous-line' + with them in `its-mode-map'. Index: ChangeLog.0 =================================================================== RCS file: ChangeLog.0 diff -N ChangeLog.0 --- ChangeLog.0 27 Jan 2001 18:46:16 -0000 1.1.1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,2311 +0,0 @@ -1998-07-12 NIIBE Yutaka - - * egg-mlh.el (mlh-space-bar-backward-henkan): Don't test against - egg-conversion-backend-alist. - - * egg/wnn.el (wnn-fini-lang): Reneme from wnn-fini. - (wnn-fini): New implementation calling wnn-fini-lang. - - (wnn-close): Call wnn-fini-lang. - (wnn-dictionary-save): Ditto. - - * egg/canna.el (canna-fini): Delete LANG argument. - * egg/sj3.el (sj3-fini): Ditto. - - * egg-cnv.el (egg-set-conversion-backend): Removed. - - * egg/sj3.el (sj3-start-conversion): Signal error on non-supported - language. - * egg/canna.el (canna-start-conversion): Likewise. - * egg/wnn.el (wnn-start-conversion): Likewise. - - * egg-cnv.el (egg-convert-region): Add handler for - lang-not-supported. - - * egg/wnn.el (egg-activate-wnn): load wnnrpc here conditionally. - * egg/sj3.el: Likewise. - * egg/canna.el: Likewise. - - * egg.el (egg-support-languages, egg-set-support-languages): Removed. - (egg-mode): Don't call egg-set-conversion-backend. - * egg/{canna.el, wnn.el, sj3.el}: Don't call egg-support-languages. - - * egg-cnv.el (egg-set-current-backend): Removed. - (egg-initialize-backend, egg-start-conversion, - egg-start-reverse-conversion): Don't call egg-set-current-backend. - (egg-conversion-backend-null): Rename from *-other-languages. - (egg-conversion-backend-alist): Removed. - (egg-conversion-backend): Not buffer local. - (egg-finalize-backend-alist): Removed. - -1998-07-10 NIIBE Yutaka - - * egg-cnv.el (egg-start-conversion-failure-hook): New Variable. - (egg-start-conversion-failure-fallback): New Function. - (egg-convert-region): Handle error and hook on failure. - - * egg/sj3.el (sj3-open): Remove bogus setq-s of sj3-sys-dict-list, - sj3-user-dict-list. - - * egg-mlh.el (mlh-space-bar-backward-henkan): Don't emit message - "converting...", as it may flush out error message. - - * egg/sj3rpc.el ("egg-com", "egg/sj3"): Require on compilation. - (sj3rpc-open): Failure when version is different. - -1998-07-03 KATAYAMA Yoshio - - * its/erpin.el, its/hangul.el, its/hankata.el, its/hira.el, - its/jeonkak.el, its/kata.el, its/pinyin.el, its/quanjiao.el, - its/thai.el, its/zenkaku.el: Updated using new its-*. - - * its.el (define-its-state-machine): Rewritten. - (define-its-compiled-map): Deleted. - (define-its-state-machine-append): Rewritten. - (its-defrule): Rewritten. - (its-defrule*): Rewritten. - (its-parent-states): New Variable. - (its-goto-state): Remove 2nd optional argument INITIAL-STATE. - (its-set-interim-terminal-state): New Function. - (its-make-next-state): Remove 2nd argument KEYSEQ. - -1998-07-01 NIIBE Yutaka - - * egg-mlh.el (mlh-hira-to-kata): Removed. Doesn't work any more. - (mlh-katakana): Use japanese-katakana-region. - - * egg-cnv.el (egg-conversion-map): Add again mapping for "/". - -1998-06-27 KATAYAMA Yoshio - - * egg-cnv.el (egg-abort-conversion): Bug fix. - -1998-06-27 NIIBE Yutaka - - * egg/wnn.el (wnn-dictionary-specification-list): Don' specify - for gerodic/g-jinmei. - Suggested by SAKAI Kiyotaka . - -1998-06-26 KATAYAMA Yoshio - - * its.el (its-cancel-input): Bug fix. - -1998-06-26 SAKAI Kiyotaka - - * egg-cnv.el (egg-conversion-mode, egg-help-command): New - functions for help string. - * its.el (its-mode, its-mode-help-command): Likewise. - -1998-06-26 KATAYAMA Yoshio - - * egg-cnv.el (egg-convert-region): Bug fix. - * egg.el (egg-default-language): Don't use string. - - * its/hankata.el (its-han-kata-enable-double-n, and others): - Variable name change (-han-) to distingush kata.el. - - * its/erpin.el (its-erpin-tw-enable-quanjioao-alphabet, - its-erpin-cn-enable-quanjioao-alphabet): - See its-enable-fullwidth-alphabet. - * its/kata.el (its-kata-enable-zenkaku-alphabet): Likewise. - * its/pinyin.el (its-pinyin-cn-enable-quanjioao-alphabet): Likewise. - * its/zenkaku.el (its-zenkaku-down-map): Likewise. - - * its/erpin.el (its-erpin-tw-map): Bug fix for "\\", "{", "}", and - "/". - * its/pinyin.el (its-pinyin-cn-map): Ditto. - * its/quanjiao.el (its-quanjiao-down-tw-map): Ditto. - * its/zhuyin.el (its-zhuyin-cn-enable-quanjioao-alphabet): Ditto. - - * its/hira.el (its-hira-enable-zenkaku-alphabet): Follow changes - of its.el. - * its/ascii.el (its-up-map, its-down-map): Ditto. - * its/jeonkak.el (its-jeonkak-up-map): Ditto. - - * its/hira.el (its-hira-enable-zenkaku-alphabet): - See its-enable-fullwidth-alphabet. - - * egg/wnn.el (wnn-save-dictionaries): Rewritten. - - * egg/canna.el (egg-edep): Required. - (canna-support-languages): Use symbol. - * egg/sj3.el (egg-edep): Likewise. - - * egg/wnn.el (egg-edep): Likewise. - * egg/wnnrpc.el: Use symbol. - - * menudiag.el (menudiag-mode-map): Bug fix for boundary conditions. - (menudiag-make-selection-list): Bug fix in case of many items. - - (menudiag-forward-item, menudiag-backward-item, - menudiag-goto-line): Change so that it wraps. - - * its.el (egg-edep): Required. - (its-keydef): Require unconditioanlly. - (its-mode-map): Don't call its-define-select-keys here. - (its-mode-map): Use of symbol as keymap. - (its-fence-invisible): New variable. - (its-put-cursor): Don't call its-define-select-keys. - (its-setup-fence-mode): invisible handling and its-define-select-keys. - (its-keyseq-acceptable-p): if (CDR SYL) is number, return NIL. - (define-its-state-machine): Introduce its-temporaly-map. - (define-its-state-machine-append): Likewise. - - (its-goto-state): Use symbol as keymap, not directly. - - (its-set-part-1,its-set-part-2): New function. - (its-delete-backward-within-SYL): Conditionalize. - - * egg.el (egg-edep): Required. - (egg-mode): Add remove-hook call. - Supply NIL as first argument to egg-set-conversion-backend. - make-local-hook for input-method-activate-hook. - (egg-set-face): Add optional argument OBJECT. - (egg-redraw-face): Bind inhibit-point-motion-hooks. - - * egg.el (set-buffer-multibyte): Move to egg-edep.el. - - * egg-mlh.el (mlh-space-bar-backward-henkan): Use assq. - - * egg-com.el (egg-zhuyin-syllable): compatibility change. - (encode-fixed-euc-china-region): Removed maxlen. - - Really Needed? -- gN. - * egg-com.el (egg-pinyin-syllable): Check exact match. - (egg-zhuyin-syllable): Likewise. - - * egg-cnv.el (egg-edep): Required. - (its-keydef): Not required. - (egg-conversion-map): Don't call its-define-select-keys here. - Fset it to use symbol instead of the map directly. - - (egg-get-bunsetsu-info): Add new optional argument for getting - property. - (egg-start-conversion-other-languages): set egg-conversion-backend. - (egg-set-current-backend): Use assq instead of assoc. - (egg-get-conversion-face): Likewise. - (egg-conversion-invisible): New variable. - (egg-convert-region): Change for open/close delimiter. - (egg-chinese-sisheng-regexp): New function. - (egg-separate-languages): Use egg-chinese-sisheng-regexp, - use symbol for language specifier (instead of string). - - (egg-charset-to-language): Use symbol for language specifier - (instead of string). - (egg-next-chinese-lang): Likewise. - - (egg-next-part-lang): Change the arguments. - - (egg-make-bunsetsu): New function changing egg-insert-bunsetsu. - - (egg-separate-characters): compatibility changes. - - (egg-conversion-wrap-select): New Variable. - - (egg-next-candidate): Can wrap around. - - (egg-decide-before-point): Rewritten. - (egg-abort-conversion): Back to previous one. - (egg-select-candidate): Use egg-make-bunsetsu. - - * egg-edep.el: New File for handling differences between Emacs version. - * its/thai.el: New File. - * its/hangul.el: Updated. - -1998-06-26 NIIBE Yutaka - - * Makefile (install): Don't touch .emacs and leim-list.el - directly. User should do it by her hand. - Reported by SAKAI Kiyotaka - -1998-06-25 NIIBE Yutaka - - * egg/canna.el (canna-dictionary-specification): "user" instead of - ("user"). Should chnage canna-filename later. - Reported by Akio Morita . - -1998-04-02 NIIBE Yutaka - - * egg-com.el (comm-unpack-u16-string): Call string-as-multibyte. - (comm-unpack-mb-string): Likewise. - - * egg.el (set-buffer-multibyte): Function for Emacs 20.2. - - * egg/wnn.el (wnn-open): Call set-buffer-multibyte. - * egg/sj3.el (sj3-open): Ditto. - * egg/canna.el (canna-open): Ditto. - -1998-04-02 KATAYAMA Yoshio - - Implement hilight. - * egg.el (egg-mark-list, egg-suppress-marking): New Variables. - (egg-set-face, egg-mark-modification, egg-redraw-face): New - Functions. - * its.el (its-buffer-ins/del-SYL): Call egg-set-face. - (its-setup-yanked-portion): Likewise. - * egg-cnv.el (egg-insert-bunsetsu): Call egg-set-face. - - * egg.el (egg-mode): set default backend. - * egg-mlh.el (mlh-space-bar-backward-henkan): activate input - method. - -1998-04-02 NIIBE Yutaka - - * egg-cnv.el (egg-decide-bunsetsu): Undo changes of 03-16. - (egg-abort-conversion): Call egg-end-conversion. - (egg-decide-before-point): Call egg-end-conversion widh ABORT=NIL. - -1998-03-16 NIIBE Yutaka - - CANNA Support. - * egg/canna.el, egg/cannarpc.el: New file. - * Makefile (SRCS): Added. - - * egg-cnv.el (egg-end-conversion): Add argument ABORT. - - * egg/wnn.el (wnn-end-conversion): Follow the change of - EGG-END-CONVERSION. - * egg/sj3.el (sj3-end-conversion): Likewise. - -1998-03-15 NIIBE Yutaka - - * Makefile: Add dependencies for its-keydef.elc. - * egg/sj3rpc.el (sj3-open): Don't support list of hosts. - * its.el (its-exit-mode, its-kick-convert-region): Bug fix. Call - its-input-end and its-put-cursor. - (its-exit-mode-off-input-method): Removed. - -1998-03-14 KATAYAMA Yoshio - - * docomp.el (its-keydef): Undo the changes of 03-09. its.el - is fixed. - - * egg-cnv.el (egg-current-language): New valiable. - (egg-bunsetsu-info): Separate bunsetsu-info and lunguage. - (egg-conversion-backend-other-languages - egg-init-other-languages - egg-start-conversion-other-languages - egg-get-bunsetsu-converted-other-languages - egg-get-bunsetsu-source-other-languages - egg-list-candidates-other-languages - egg-get-number-of-candidates-other-languages - egg-get-current-candidate-number-other-languages - egg-get-all-candidates-other-languages - egg-decide-candidate-other-languages - egg-change-bunsetsu-length-other-languages - egg-end-conversion-other-languages - egg-fini-other-languages): New valiable and functions for - handling unknown language. - (egg-set-current-backend): Set egg-conversion-backend-other-languages - when backend for specified language isn't found. - (egg-start-reverse-conversion): New function for reverse conversion. - (egg-set-conversion-backend-internal): Removed. - (egg-set-conversion-backend): Args are changed. - (egg-get-conversion-face): New function for different face for - every language. - (egg-convert-region): Make converting text read-only. Handle - unknown laguages and backend opening error. Rename its-lang to - egg-lang. - (egg-separate-languages): Argument use-context is added to - utilize context when called by its-yank. Rename its-lang to - egg-lang Improve speed. - (egg-charset-to-language): Renamed from egg-char-to-language. - (egg-next-part-lang egg-next-chinese-lang): Rename its-lang to - egg-lang. - (egg-conversion-map): Unbind C-\ and /. Bind C-X RET XXX to - its-select-XXX. - (egg-insert-bunsetsu): Make conversion text read-only. Separate - bunsetsu-info and conversion-backend. - (egg-insert-bunsetsu-list): Remove redundant variables. - (egg-beginning-of-conversion-buffer): New function. - (egg-end-of-conversion-buffer): New function. - (egg-enlarge-bunsetsu): Handle read-only text. - (egg-next-candidate): Handle read-only text. Bug on no candidate - bunsetsu is fiexed. - (egg-reconvert-bunsetsu-internal egg-reverse-convert-bunsetu - egg-reconvert-bunsetsu): New functions for reverse conversion and - re-conversion. - (egg-decide-before-point egg-abort-conversion): Handle read-only - text. Bug on pinyin and zhuyin mixed conversion is fixed. Allow - long fence. - (egg-select-candidate): Handle read-only text. Bug on no candidate - bunsetsu is fiexed. - - * egg-com.el: Change coding-system from internal to iso-2022-7bit. - - * egg-mlh.el (mlh-space-bar-backward-henkan): Disable temporally - mode selection. - - * egg.el (egg-mode): Set cureent lang to conversion backend. - (egg-set-mode-line-title): Renamed to its-set-mode-line-title - and moved to its.el. - (egg-check-language): Removed. - - * egg/sj3.el (sj3-server-port): Change from defconst to defver for - user customization. - (sj3-open sj3-get-environment): Try opening alternate servers. - (sj3-start-conversion): Make second argument LANGUAGE optional. - (egg-activate-sj3): Parameters of egg-set-conversion-backend is - changed. - - * egg/sj3rpc.el (sj3rpc-error-message): New constant (Not yet - completed). - (sj3rpc-get-error-message): Check range of errno to avoid - args-out-ou-range error. - - * egg/wnn.el (wnn-jport wnn-cport wnn-tport wnn-kport): New - variables for user customization. - (wnn-server-info-list wnn-server-port): Type of fourth element - is changed from integer to symbol. - (wnn-start-reverse-conversion): New function. - (wnn-open wnn-get-environment): Try opening alternate servers. - (egg-activate-wnn): Parameters of egg-set-conversion-backend is - changed. - - * its-keydef.el (its-current-language): Moved to its.el. - (its-make-select-func): Remove language check (egg-check-language). - Add temporally mode selection. - (its-do-list-make-select-func): Binding of zhuyin-tw is changed to - `C' because conflicting zenkaku-upcase. - - * its.el (its-current-select-func its-previous-select-func): New - variables for temporally mode selection. - (its-keydef requiring): Use eval-when to avoid error on using - compiled file. - (its-get-fence-face): New function for different face for - every language. - (its-put-cursor its-setup-fence-mode): Make fence read-only. - (its-start): Remove force-mode-line-update calling. - (its-restart): Add optional argument set-prop. - (its-self-insert-char its-backward-SYL its-forward-SYL - its-delete-SYL its-delete-backward-SYL its-exit-mode - its-delete-backward-SYL-by-keystroke its-transpose-chars - its-kick-convert-region its-end-of-input-buffer): Handle read-only - fence. - (its-state-machine): Accept special actions to handle temporally - mode selection. - (its-buffer-ins/del-SYL its-ins/del-SYL-batch): Handle read-only - fence. Property its-lang is renamed to egg-lang. - (its-get-next-state its-make-next-state): Add type check to avoid - wrong-type-argument error. - (its-keyseq-acceptable-p): Save informations of its-map to avoid - confusing on temporally mode selection. - (its-defrule-select-mode-temporally): New macro. - (its-kill-line its-cancel-input): New function. - (its-delete-backward-within-SYL): Bind its-current-language to - avoid confusing when undo is done beyond language change. - (its-yank its-yank-pop its-setup-yanked-portion): New functions. - (its-exit-mode-internal): Reset temporally selected mode. Allow - long fence. - (its-kick-convert-region-or-self-insert): New function. - (its-translate-region): Remove text properties completly. - (its-set-mode-line-title): Moved from egg.el and renamed. - (its-select-mode-temporally its-select-previous-mode): New functions - for temporally mode selection. - - * leim-list-egg.el: Secondary argument for egg-activate-sj3/wnn - is no longer needed. - - * its/hira.el: Remove the rule for "~" which destroies the rules - with its-hankaku-escape. - - * its/pinyin.el: Implement its-pinyin-cn-enable-quanjioao-alphabet - and its-pinyin-tw-enable-quanjioao-alphabet. - - * its/hangul.el: Implement its-hangul-enable-quanjioao-alphabet. - - * its/ascii.el: New file. - * its/erpin.el: New file. - * its/hankata.el: New file. - * its/jeonkak.el: New file. - * its/kata.el: New file. - * its/quanjiao.el: New file. - * its/zenkaku.el: New file. - * its/zhuyin.el: New file. - -1998-03-14 NIIBE Yutaka - - * egg/sj3rpc.el (sj3rpc-close): New function. - - * egg/sj3.el (sj3bunsetsu-[sg]et-kugiri-changed): Rename from - sj3bunsetsu-get-stdy-down. - (sj3-end-conversion): Implement CLSTDY. - (sj3-fini): Implemented. - -1998-03-10 NIIBE Yutaka - - * egg/sj3.el (sj3-end-conversion): Implement bunsetsu study. - CLSTDY not yet. - - * egg/sj3rpc.el (sj3rpc-get-bunsetsu-candidates-sub): Bug fix. - Always add hiragana and katakana candidates. - (sj3-const: CLSTDY, CLSTDY_EUC): Renamed from END and END_EUC - according to "sj3cmd.h" of SJ3 distribution. - (sj3rpc-bunsetsu-stdy, sj3rpc-kugiri-stdy): New functions. - - * egg-com.el (comm-format-u8-vector): New substitution. - (comm-format): New format 'v'. - -1998-03-09 NIIBE Yutaka - - * docomp.el (its-keydef): Require its-keydef when compile. - Not so good. Just a work around. - (its-mode-map): Undo the changes of 03-04. - -1998-03-09 KATAYAMA Yoshio - - * its.el (its-translate-region): Make it command. - (its-translate-region-internal): Make it function. - -1998-03-04 NIIBE Yutaka - - * its.el (its-define-select-keys of its-mode-map): Comment it out. - * its-keydef.el (its-make-select-func): Add eval-when to compile this. - - * egg-cnv.el (egg-decide-bunsetsu): Deleted. - * its.el (its-restart): Call its-setup-fence-mode with no argument. - - * its.el (its-keyseq-acceptable-p): Bug fix. - -1998-03-03 KATAYAMA Yoshio - - *its.el (its-get-keyseq-syl): Compensate when DSYL has back. - (its-DSYL-with-back-p): New function. Return t when DSYL has back. - (its-concrete-DSYL-p): New function. Return t when DSYL is cons - form which means input is not continued after DSYL was created. - (its-make-concrete-DSYL): New function. - (its-self-insert-char): Make DSYL to ``concrete-DSYL'' if cursor - is t which means input is not continued. - (its-input): Test input key is whether acceptable or not when - its-barf-on-invalid-keyseq is non-nil. - (its-input-to-vsyl): Set cursor status, not just returning it. - (its-state-machine its-state-machine-keyseq): Make sure to issue - ``DSYL-with-back'' when syllable is decided by the rule with back. - ``test mode'' is added. - (its-keyseq-acceptable-p): New function. - (its-forward-SYL): The args order of put-text-property was wrong. - (its-delete-backward-SYL-by-keystroke): New function. - (its-delete-backward-within-SYL): ``delete-by-keystroke'' mode - did not work when syllable is decided by the rule with back. - Deletion limit is extended to outside of SYL (meaning of - ``within-SYL'' is changed to ``deletion starts within SYL). - (its-transpose-chars): Fixed up. - (its-in-fence-p): Confuse at openning fence. - -1998-02-25 KATAYAMA Yoshio - - * its.el (its-put-cursor): Enable its-map change in fence mode. - - * its-keydef.el (its-make-select-func): Same as above. - -1998-02-25 KATAYAMA Yoshio - - * its.el (its-set-cursor-status): New function. - (its-setup-fence-mode): New function. - (its-insert-fence-open its-insert-fence-close): Deleted. - (its-start, its-restart, its-self-insert-char): Avoid fence - destruction on its-barf. - (its-input-to-vsyl, its-state-machine, its-state-machine-keyseq, - its-buffer-ins/del-SYL, its-ins/del-SYL-batch): Update cursor - status on updating syllables. - (its-input-error): New function to realize doc-string of - its-barf-on-invalid-keyseq. - - * egg.el (egg-mode): Don't use egg-mode-line-title which cause - wrong-type-argument at isearch. Bind its-select-XXX to key only - when modefull is select. - - * egg-mlh.el (mlh-hangul, mlh-zhongwen, mlh-zhongwen-tw): Same - as above. - - * its-keydef.el (its-make-select-func): Same as above. - - * leim-list-egg.el: Same as above. - -1998-02-24 KATAYAMA Yoshio - - * its.el (its-state-machine-keyseq): Remove binding - its-barf-on-invalid-keyseq to nil. - (its-ins/del-SYL-batch): Avoide altering its-XXX-map. - (its-translate-region-internal): its-translation-result's data - type is changed to string. - - * egg-cnv.el (egg-convert-region): Gather contiguous same - language part. - -1998-02-21 KATAYAMA Yoshio - - * its.el (its-ins/del-SYL-batch): Set its-lang property. - (its-translate-region): Remove its-lang property from translated - text. - (its-translate-region-internal): New function. Retain its-lang - property on translated text. - - * egg-mlh.el (mlh-space-bar-backward-henkan): Force base language - to Japanese. - - (mlh-hangul mlh-zhongwen-tw mlh-zhongwen): New functions for - conversion functions. - -1998-02-20 KATAYAMA Yoshio - - * its.el (its-restart): New function. - (its-insert-fence-open, its-insert-fence-close): New function. - (its-start): Rewritten. Use its-insert-fence-open and - its-insert-fence-close. - (its-exit-mode-internal): Leave its-syl property. - (its-exit-mode-internal): Delete the property in this case. - (its-keydef): Require it. - - * its-keydef.el: Provide the feature. - - * egg-cnv.el (egg-convert-region): Add egg-source property to save - the source string. - (egg-conversion-map, \C-c): New keybind. - (egg-get-previous-bunsetsu): Bug fix. - (egg-decide-before-point): New implementation. - (egg-exit-conversion): Use gg-decide-before-point. - (egg-abort-conversion): New command. - -1998-02-20 NIIBE Yutaka - - * Makefile (SRCS), Egg.prj: Remove euc-china.el. - * egg-com.el: Include egg-china.el. - * egg-china.el: Removed. - -1998-02-18 NIIBE Yutaka - - * Egg.prj: Use PRCS. - - * Makefile (SRCS): Rename euc-cn.el to euc-china.el - * egg-mlh.el (mlh-space-bar-backward-henkan): Put "Japanese" - language property for text. - -1998-02-18 KATAYAMA Yoshio - - * euc-china.el: Rename from euc-cn.el. Update. - - * egg.el (egg-mode): Bug fix. Call get-exit-conversion. - * leim-list-egg.el ("japanese-egg-wnn", "japanese-egg-sj3"): - Use new definition (with language argument). - * egg/wnn.el (egg-activate-wnn): - * egg/sj3.el (egg-activate-sj3): - -1998-02-17 NIIBE Yutaka - - * Makefile (SRCS): Add its/pinyin.el, its/hangul.el and - its-keydef.el. - - * egg-com.el (ccl-encode-fixed-euc-kr): Fixed the name. - -1998-02-17 KATAYAMA Yoshio - - * its-keydef.el: New file. - * its/hangul.el, its/pinyin.el: New version. - - * egg/wnnrpc.el (load-library "egg/wnn"): Comment it out. - (wnnrpc-get-error-message): Support multiple languages. - (wnnrpc-call-with-environment): Chinese support. - - * egg/wnn.el (wnn-support-languages): New const. - (): Add , , and . - (wnnenv-get-server-type, wnnenv-get-dictionary-set, - wnnenv-get-reverse-flag): New substs. - (wnnenv-get-daibunsetsu-info, wnnenv-set-daibunsetsu-info): Changed. - (wnn-server): Removed. - (wnn-jserver, wnn-cserver, wnn-tserver, wnn-kserver): New custom. - (wnn-server-info-list): New const. - (wnn-get-server-info): New function. - (wnn-server-locale, wnn-server-type, wnn-server-port, - wnn-server-stream-name, wnn-server-buffer-name, - wnn-server-coding-system, wnn-server-hostname): New substs. - (wnn-start-conversion): Add new arguments. - (wnn-uniq-candidates): Initialize 'n'. - (wnn-change-bunsetsu-length): Simplefied. - (wnn-change-bunsetsu-length): Call renbunsetsu-conversion, - instead. - (wnn-fini, wnn-comm-sentinel): back to 971009 version. - (wnn-jserver-port): Removed. - (wnn-open): Argument change. Support languages. - - (wnn-dictionary-specification): Removed. - (wnn-dictionary-specification-list): New variable. - (wnn-get-dic-spec, wnn-dic-spec-dic-set, wnn-dic-spec-reverse, - wnn-dic-spec-name, wnn-dic-spec-param, wnn-dic-spec-fuzokugo, - wnn-dic-spec-dic-list): New substs. - (wnn-get-environment): Rewrite. - (wnn-create-environment): Rewrite. - - (egg-activate-wnn): Support languages. - - * egg/sj3rpc.el (load-library "egg/sj3"): Don't load it. - - * egg/sj3.el (sj3-support-languages): New const. - (sj3-start-conversion, sj3-fini): Add lang. - (sj3-change-bunsetsu-length): Simplified. - (egg-activate-sj3): Support language. - - * its/hira.el (its/hira): Packagefy. (?) - (its-hira-map): Add language spec. Move here the escape keys - ("Z", "~"). - - * leim-list-egg.el ("chinese-gb-egg-wnn-py", "chinese-gb-egg-wnn-zy", - "chinese-cns-egg-wnn-py", "chinese-cns-egg-wnn-zy", - "korean-egg-wnn"): New input methods. - - * its.el (its-current-language): New Local Variables. - : Change the structure. Add . - (its-get-language): New substitution. - (its-set-indicator): Removed. - (its-get-indicator, its-get-start-state): New implementation. - (its-reset-start-state): Removed. - (its-buffer-ins/del-SYL): Add new properties, its-map and its-lang. - (its-exit-mode-internal): Change for its-map and its-lang. - (its-in-fence-p): New function. - - ("its-keydef.el"): Load it. - - (its-select-map-menu): Removed. - (its-select-map-from-menu): Removed. - (its-select-hiragana, its-select-katakana, its-select-downcase, - its-select-upcase, its-select-zenkaku-downcase, - its-select-zenkaku-upcase, its-select-map, its-zenkaku-escape, - its-hankaku-escape): Removed. - - (define-its-state-machine): Rewrite. - (define-its-compiled-map): New macro. - (its-define-state-machine): Removed. - - (its-forward-SYL): Cleanup. - - (its-beginning-of-input-buffer): Fix. - (its-end-of-input-buffer): Likewise. - - * egg-com.el (egg-fixed-euc, egg-mb-euc): New Local Variables. - (ccl-decode-fixed-euc-kr, ccl-encode-fixed-euc-kr): New CCLs. - (fixed-euc-kr): New coding system. - (comm-format-mb-string, comm-format-u16-string): Support EUC-KR. - (comm-unpack-u16-string, comm-unpack-mb-string): Likewise. - - * egg-cnv.el (egg-get-bunsetsu-info): New function. - (egg-conversion-backend-alist, egg-finalize-backend-alist): - New Variables. - Make egg-conversion-backend buffer local. - (egg-set-current-backend): New function. - (egg-initialize-backend): Call egg-set-current-backend. - (egg-start-conversion): Add new argument LANGUAGE. - (egg-finalize-backend): Finalize for all backend(s). - (egg-set-conversion-backend-internal): New Macro. - (egg-convert-region): Support multiple languages in the region. - (egg-separate-languages, egg-char-to-language, egg-next-part-lang, - egg-next-chinese-lang): New functions. - (egg-insert-bunsetsu-list): Change the meaning of last argument. - (egg-shrink-bunsetsu): Simplified. Just call egg-enlarge-bunsetsu. - (egg-enlarge-bunsetsu): Support shrink. - - (egg-decide-bunsetsu, egg-next-candidate, egg-select-candidate): - Use egg-get-bunsetsu-info. - - (egg-insert-bunsetsu): The property now includes - egg-conversion-backend. - - * egg.el: Don't load its/hira and don't set its-current-map. - - * egg.el (egg-default-language, egg-support-languages): New Variables. - (egg-last-method-name, egg-mode-line-title): New Local Variables. - (egg-set-mode-line-title, egg-check-language): New functions. - (egg-set-support-languages): New function. - (egg-mode): Final processing: call its-exit-mode, call - egg-exit-conversion. - Changing the arguments, remember last input method. - - Bug fix. Don't set its-hira-period and its-hira-comma. - -1998-02-17 KAWABATA, Taichi - - * menudiag.el (menudiag-mode-map): New binds for new commands. - (menudiag-beginning-of-items, menudiag-end-of-items): New commands. - (menudiag-make-menu-formatted-string): Bug fix. Use - menudiag-item-num-to-char. - (menudiag-goto-item): Rewrite. Better user interface. - (menudiag-char-to-item-num, menudiag-item-num-to-char): New - functions. - -1998-02-07 MORIOKA Tomohiko - - * leim-list-egg.el: Delete autoload setting for `egg-mode'. - Delete input method registration for "japanese-egg". - - * egg.el: Comment out setting for Wnn. - - * leim-list-egg.el: Add autoload setting for - `egg-activate-{wnn|sj3}'. - - * egg/sj3.el (egg-activate-sj3): Add DOC-string. - - * egg/sj3.el (egg-activate-sj3): New function. - Require egg. - Load egg/sj3rpc.el. - - * egg/wnn.el (egg-activate-wnn): New function. - Require egg. - Load egg/wnnrpc.el. - -1998-02-07 MORIOKA Tomohiko - - * leim-list-egg.el (japanese-egg-wnn): New input method. - (japanese-egg-sj3): New input method. - -1997-11-20 MORIOKA Tomohiko - - * leim-list-egg.el: Rename `egg-ja' -> `japanese-egg'. - -1997-11-20 MORIOKA Tomohiko - - * egg/wnn.el (wnn): New group. - (wnn-server): Use `defcustom'. - (wnn-usr-dic-dir): Use `defcustom'. - - * egg.el (egg): New group. - -1997-11-20 MORIOKA Tomohiko - - * menudiag.el (menudiag-mode-map): Swap binding for left and - right. - - * egg.el (egg-toroku-region): `wnn-get-environment' requires - dictionary-specification. - - * leim-list-egg.el: add autoload setting for egg-mode. - -1997-11-03 KATAYAMA Yoshio - - * euc-cn.el: New file. Original name was yincoding.el. - Adopted by NIIBE Yutaka . - -1997-11-03 NIIBE Yutaka - - * its.el (its-start): Add INVISIBLE property if ITS-FENCE-FACE. - * egg-cnv.el (egg-decide-before-point): Ditto. - Based on patch by Kenichi HANDA . - - Once, I thought that we need many environments which correspond to - outstanding CONVERSION buffre. However, I've learned that WNN4 - protocol is completely independent. It's no use to maintain each - environment. Share the one environment. - * egg/wnn.el (wnn-environments): Removed. - (wnn-environment): New variable. - (wnn-comm-sentinel): Follow the change. Let users know the close. - (wnn-fini): Likewise. - - : Remove the member . - (wnnenv-create): Follow the structure change. - (wnn-end-conversion): Likewise. - (wnnenv-get-in-use-flag, wnnenv-set-in-use-flag): Removed. - (wnn-find-env-not-in-use): Removed. - (wnn-get-environment): Use wnn-environment instead of wnn-environments. - Take one argument. - - * egg-cnv.el (egg-decide-before-point): Signal error on first SYL. - Reported by KATAYAMA Yoshio . Changes of 1997-09-07 - was not enough. - Set-marker M to NIL after PUT-TEXT-PROPERTY. - - Because the name of identifier begins egg-*, change the file names. - * tamago: Rename from tamago. - * egg.el, egg-mlh.el, egg-com.el, egg-cnv.el: Rename from tamago-*.el - * Makefile: Follow the changes. - -1997-10-05 NIIBE Yutaka - - * tamago/wnn.el (wnn-uniq-candidates): Add new argument BUNSETSU. - Call WNN-BUNSETSU-SET-ZENKOUHO-POS, WNN-BUNSETSU-SET-ZENKOUHO in - this function. Handle the case where BUNSETSU is not the first - element of BUNSETSU-LIST. - (wnn-list-candidates): Use new API of WNN-UNIQ-CANDIDATES. - - * tamago-cnv.el (egg-next-candidate): Handle the case where - EGG-LIST-CANDIDATES returns non zero value. - -1997-10-04 NIIBE Yutaka - - * Makefile (install): Install to SITEDIR. - -1997-09-26 NIIBE Yutaka - - * its/hira.el (its-hira-enable-zenkaku-alphabet): New variable. - (its-hira-map): Use it. - -1997-09-19 NIIBE Yutaka - - Arrange for LEIM. Use tamago/ subdirectory. - * tamago/: Rename from tamago-lib. - -1997-09-18 NIIBE Yutaka - - * tamago-cnv.el (egg-select-candidate): menu-select --> - menudiag-select. - * tamago.el (egg-toroku-region, egg-hinshi-select): Likewise. - - * tamago-cnv.el (egg-exit-conversion): Run hook of - input-method-after-insert-chunk-hook. - * its.el (its-exit-mode-internal): Ditto. - - * tamago-mlh.el (mlh-comma-period-style): Deleted. - - * its/, tamago-lib/: New directory. - * its/: Move its-*.el files here. - * tamago-lib/: Move sj3.el, sj3rpc.el, wnn.el and wnnrpc.el here. - - * tamago-com.el: Rename from comm.el. - * tamago-mlh.el: Rename from mlh.el. - * tamago-cnv.el: Rename from convert.el. - - * menudiag.el: Rename from menu.el. - (Throughout): Rename menu-* to menudiag-*. - -1997-09-07 NIIBE Yutaka - - * egg.el (egg-insert-after-hook, egg-exit-hook): Removed. - (egg-sai-henkan-start, egg-sai-henkan-end, egg-old-bunsetu-suu): - Removed. - - * wnn.el (WNN-const): New macro. - (wnn-start-conversion, wnn-open-dictionary, wnn-open-frequency, - wnn-set-dictionary-sub, wnn-update-frequency): Use it. - - * wnnrpc.el (wnn-const): New macro. - Throughout: Use wnn-const. - - * convert.el (egg-decide-before-point): Bug fix. Handle the case - where all bunsetsu are decided. - Reported by KATAYAMA Yoshio . - - * convert.el (egg-exit-conversion): Call egg-end-conversion at end. - (egg-decide-before-point): Ditto. - - * wnn.el (wnn-environments): Change the structure of enviromnents. - (wnn-fini): Handle errors. - (wnn-open): Set sentinel. Delete buffer on failure. - (wnn-comm-sentinel): New function. - (wnn-find-env-not-in-use): Return nil when not found. - - (wnn-create-environment): Take username as argument. - (wnn-get-environment): Follow the change. - - (wnnenv-create): Remove useless serial no. - (wnnenv-get-in-use-flag, wnnenv-set-in-use-flag): Follow the change. - (wnnenv-get-daibunsetsu-info, wnnenv-set-daibunsetsu-info): Likewise. - (wnn-create-environment, wnn-get-environment): Likewise. - -1997-09-04 NIIBE Yutaka - - * its.el (its-state-machine-keyseq): Bug fix. Handle VSYL. - - * sj3.el, sj3rpc.el: New files. - - * comm.el (comm-call-with-proc, comm-call-with-proc-1): New macros. - * wnnrpc.el (wnnrpc-call-with-proc, wnnrpc-call-with-proc-1): Deleted. - Throughout: Use comm-call-with-proc and comm-call-with-proc-1. - -1997-09-03 NIIBE Yutaka - - * wnnrpc.el (wnnrpc-call-with-proc-1): Bug fix. let --> progn. - - * convert.el (egg-conversion-backend): Initail value is NIL. - - * wnn.el (wnn-conversion-backend): New constant. - - * comm.el (comm-format,comm-unpack): Support multibyte string. - (comm-format-mb-string): New substitution. - (comm-unpack-mb-string): New substitution. - - * wnn.el (wnn-fini): Handle the case where wnn-environments is nil. - Reported by Hisashi Miyashita . - -1997-09-03 Hiroshi Ogata - - * mlh.el (mlh-zenkaku): Use new API of Emacs-20, - japanese-zenkaku-region. - -1997-09-02 NIIBE Yutaka - - * egg.el (egg-toroku-region): New function. - - * wnn.el (wnn-list-dictionaries): New function. - (wnnenv-get-proc): New function. - - * wnnrpc.el (wnndic-get-id, wnndic-get-comment, wnndic-get-dictname): - New substitution. - (wnnrpc-get-writable-dictionary-id-list): Rename from - wnnrpc-get-writable-dictionary-list. - -1997-09-01 NIIBE Yutaka - - * convert.el (egg-decide-bunsetsu): New function. - (egg-decide-before-point): New command. - (egg-exit-conversion): Use egg-decide-bunsetsu. - - * its.el (its-start): Divide the fence buffer into two parts and - make them intangible, so that point goes appropriate position. - (its-put-cursor): The cursor belongs to part-2. - (its-buffer-ins/del-SYL): The new SYL belongs to part-1. - (its-exit-mode-internal): Remove the property on exit. - (its-beginning-of-input-buffer): Make SYLs have property of "part 2". - (its-backward-SYL): Likewise. - (its-forward-SYL): Make SYLs have property of "part 1". - (its-end-of-input-buffer): Likewise. - - (its-input-end): Delete useless argument. - (its-beginning-of-input-buffer, its-exit-mode, - its-exit-mode-off-input-method, its-kick-convert-region, - its-end-of-input-buffer, its-backward-SYL, its-forward-SYL, - its-delete-SYL): Follow the change. - -1997-08-31 NIIBE Yutaka - - For egg-mode, don't use minor mode, override local map instead. - For its-mode and egg-conversion-mode, don't use minor mode, - instead use local-map of text property. - - Although overriding local map is not good, using local-map of - property is natural thing. Besides, point-left/point-entered - don't work as I expected (yet). - - * egg.el (egg-mode: variable): Removed. - * egg.el (egg-modefull-map, egg-modeless-map): Make them functions. - Generate overriding local map. - * egg.el (egg-mode): use overriding local map. - - * its.el, convert.el: Undo changes of 1997-08-28 for minor mode - and local map of text properties. - - * its.el (its-exit-mode-off-input-method): New function. - -1997-08-29 NIIBE Yutaka - - Let Undo work correctly. - * its.el (its-self-insert-char): Delete/Insert cursor. - - * its.el (its-put-cursor): Remove useless first argument. - (its-start, its-beginning-of-input-buffer, its-end-of-input-buffer, - its-backward-SYL, its-forward-SYL, its-delete-SYL, its-delete-SYL, - its-delete-backward-SYL-internal, its-delete-backward-within-SYL): - Follow the change. - -1997-08-28 KATAYAMA Yoshio - - * its-erpin.el: New file. - * its-pinyin.el: New file. - * its-zhuyin.el: New file. - -1997-08-28 NIIBE Yutaka - - * its.el (its-exit-mode-no-egg): Removed. - (its-exit-mode-internal): Remove first argument. - (its-kick-convert-region, its-delete-SYL, - its-delete-backward-SYL-internal, its-delete-backward-within-SYL): - Follow the change. - - Don't use local map of text properties, instead use minor mode. - * convert.el (egg-conversion-mode): New minor mode. - (egg-conversion-left, egg-conversion-enter): New functions. - (egg-insert-bunsetsu): remove local-map, add point-entered and - point-left properties. - (egg-exit-conversion): Likewise. - (egg-exit-conversion): Exit minor mode. - - * its.el (its-put-cursor): remove local-map, add point-entered and - point-left properties. - (its-enter, its-left): New functions. - (its-mode): New variable. New minor mode. - -1997-08-27 NIIBE Yutaka - - * convert.el (egg-exit-conversion-no-egg): Removed. - (egg-exit-conversion): No argument, no egg-mode. - - * convert.el (egg-convert-region): No egg-flag. - * its.el (its-exit-mode-internal): Follow it. - * mlh.el (mlh-space-bar-backward-henkan): Ditto. - -1997-08-26 NIIBE Yutaka - - * wnn.el (wnn-change-bunsetsu-length): Don't use magic #3. - - * convert.el (egg-insert-bunsetsu-list): Add optional argument - CONTIN. - -1997-08-25 NIIBE Yutaka - - * convert.el (egg-insert-bunsetsu): Include seperator. Add - intangible property to bunsetsu. - (egg-insert-bunsetsu-list): Follow the change. - (egg-backward-bunsetsu, egg-forward-bunsetsu, - egg-select-candidate, egg-next-candidate, - egg-shrink-bunsetsu, egg-enlarge-bunsetsu, - egg-exit-conversion): Ditto. - - * mlh.el (mlh-space-bar-backward-henkan): Call egg-convert-region - with last argument t. Turn of egg-mode. - -1997-08-24 NIIBE Yutaka - - * its.el (its-exit-mode-internal): Inactivate input method. - - * wnn.el (wnn-end-conversion): Change the interface. - (wnn-update-frequency): Follow the change. - * convert.el (egg-exit-conversion): Follow the change. - - * wnn.el (wnn-start-conversion): Change the return value interface. - * convert.el (egg-convert-region): Follow the change. - - * wnn.el (wnnenv-get-bunsetsu-pos, wnnenv-set-bunsetsu-pos): Removed. - (wnn-get-bunsetsu-source-afterwards): Removed. - (wnn-get-number-of-bunsetsu, wnn-get-bunsetsu-info): Removed. - (wnnenv-get-bunsetsu-list, wnnenv-set-bunsetsu-list): Removed. - (wnn-start-conversion): Don't call wnnenv-set-bunsetsu-list. - (wnn-end-conversion): Ditto. - -1997-08-23 NIIBE Yutaka - - * convert.el (egg-change-bunsetsu-length): Change the interface. - (egg-shrink-bunsetsu,egg-enlarge-bunsetsu): Follow it. - - (egg-source-maxlen-from-here): Removed. - (egg-get-previous-bunsetsu): New function. - (egg-select-candidate, egg-shrink-bunsetsu, egg-enlarge-bunsetsu, - egg-next-candidate): Use egg-get-previous-bunsetsu. - -1997-08-20 NIIBE Yutaka - - * egg.el (minor-mode-alist): Don't show " EGG" in mode line. - (egg-mode): Use input method indicator instead. - -1997-07-20 NIIBE Yutaka - - * convert.el (egg-next-candidate): Rename from egg-next-conversion. - (egg-previous-candidate): Rename from egg-previous-conversion. - (egg-select-candidate): Follow the change of new interface. - (egg-source-maxlen-from-here): Likewise. - -1997-07-19 NIIBE Yutaka - - * wnn.el (wnn-start-conversion): Change the interface. Return ENV - and the list of bunsetsu. Fix the documentation string too. - * convert.el (egg-convert-region): Follow the change. - (egg-insert-converted-result): Change the argument. - (egg-insert-bunsetsu-list): Rename from egg-insert-converted-result. - (egg-insert-bunsetsu): New function. - (egg-get-number-of-bunsetsu,egg-get-bunsetsu-info): Removed. - (egg-backward-bunsetsu): Don't use bunsetsu-pos. - - * wnn.el (wnn-get-bunsetsu-converted): Change the interface. Take - BUNSETSU as the argument instead of ENV and POS. - * convert.el (egg-get-bunsetsu-converted): Follow the change. - - * wnn.el (wnn-bunsetsu-create): Take ENV as the first argument. - (wnn-list-candidates): Dont take ENV. - (wnn-bunsetsu-get-env): New substitution. - - * wnnrpc.el (wnnrpc-receive-sho-bunsetsu-list-sub): Take the argument - for ENV, and use it for the argument of wnn-bunsetsu-create. - (wnnrpc-receive-sho-bunsetsu-list): Take ENV as the first argument. - (wnnrpc-renbunsetsu-conversion): Follow the change. - -1997-07-17 NIIBE Yutaka - - * convert.el (egg-decide-candidate): Change the interface. - Take the argument bunsetsu-info instead of conversion-engine. - - * wnn.el (wnn-get-candidate): Deleted. - - * convert.el (egg-get-all-candidates): Change the interface. - Take an argument bunsetsu-info instead of conversion-engine. - (egg-select-candidate): Follow the change. - - * convert.el (egg-set-bunsetsu-pos,egg-get-bunsetsu-pos): Deleted. - (egg-list-candidates,egg-get-current-candidate-number): New stub. - * wnn.el (wnn-bunsetsu-create): Add new member zenkouho-pos. - (wnn-bunsetsu-get-zenkouho-pos,wnn-bunsetsu-set-zenkouho-pos): New - functions. - (wnn-list-candidates,wnn-get-current-candidate-number): New functions. - (wnn-set-bunsetsu-pos,wnn-get-bunsetsu-pos): Deleted. - - * convert.el (egg-get-number-of-candidates): Change the interface. - Take an argument bunsetsu-info instead of conversion-engine. - (egg-next-conversion,egg-select-candidate): Follow the change. - * wnn.el (wnn-get-number-of-candidates): Follow the change. - - * wnn.el (wnn-get-bunsetsu-source-afterwards): New function. - (wnn-change-bunsetsu-length): Use it. - - * convert.el (egg-get-bunsetsu-source): Change the interface. - Take an argument bunsetsu-info instead of conversion-engine. - (egg-enlarge-bunsetsu,egg-shrink-bunsetsu,egg-source-maxlen-from-here): - Follow the change. - * wnn.el (wnn-get-bunsetsu-source): Follow the change. - - Put bunsetsu information on text property. - * wnn.el (wnn-get-bunsetsu-info): New function. - - * convert.el (egg-insert-converted-result): Put it on text property. - (egg-conversion-backend): Add new interface - wnn-get-bunsetsu-info. - (egg-get-bunsetsu-info): New stub. - -1997-07-17 KATAYAMA Yoshio - - * its.el (its-state-machine-keyseq, its-state-machine): Handle - end-of-input correctly when going backward. - -1997-07-16 NIIBE Yutaka - - * wnn.el (wnn-create-directory): Bug fix. Really make directory. - -1997-07-15 NIIBE Yutaka - - * its-hangul.el (its-define-hangul): Use its-defrule-otherwise. - -1997-07-15 KATAYAMA Yoshio - - * its-hangul.el: Updated. - -1997-06-19 NIIBE Yutaka - - * its-hira.el: its-hira-hankaku-escape --> its-hankaku-escape. - its-hira-zenkaku-escape --> its-zenkaku-escape. - -1997-06-14 NIIBE Yutaka - - * its.el: Change the data structure of so - that it can encourage sharing same structure and it can use same - structure of SYL. - (its-ins/del-SYL-batch): Follow the change of data structure. - (its-define-otherwise): Change the argument. - (its-defrule-otherwise): New function. - (its-eob-keyexpr, its-eob-back, its-make-class+back, - its-make-otherwise): New substitutions. - -1997-06-13 NIIBE Yutaka - - * its-kana.el: New file. Taken from its/kanainput.el of Mule-2.3. - - * its-hira.el: Use `define-its-state-machine'. - - * its.el (its-zenkaku-escape, its-hankaku-escape): Make them - defconst. - (define-its-state-machine, define-its-state-machine-append): New - macro. - -1997-06-13 NIIBE Yutaka - - * its-hira.el ("n'"): Added. - -1997-06-12 NIIBE Yutaka - - its-zenkaku-escape and its-hankaku-escape are also used in hangul. - * its.el (its-zenkaku-escape, its-hankaku-escape): Moved to here - and rename them. - * its-hira.el (its-hira-hankaku-escape, its-hira-zenkaku-escape): - Removed. - - * its.el (its-read-current-its-string): Removed. There's the - function `read-multilingual-string' already. - -1997-06-12 KATAYAMA Yoshio - - * its-hangul.el: New file. - -1997-06-10 NIIBE Yutaka - - Miscellaneous cosmetic changes. - * comm.el: New file. Move communication related funcitons from - wnnrpc.el. - (comm-format-u32c, and others): Rename from wnnrpc-*. - * wnnrpc.el (Throughout): Follow the rename. - - * wnn.el (wnnenv-get-in-use-flag): Rename from wnn-e-get-in-use. - (wnnenv-set-in-use-flag): Rename from wnn-e-set-in-use. - (Others): Rename from wnn-e-*. - (wnn-bunsetsu-*): Rename from wnnrpc-b-*, and moved from wnnrpc.el. - - * convert.el (egg-exit-conversion): Call egg-do-auto-fill. - - * its.el (its-translate-region): Bug fix. End of input. - (its-state-machine): Bug fix. Generate error if - its-barf-on-invalid-keyseq. - (its-exit-mode-internal): Call egg-do-auto-fill. - - * wnnrpc.el (ccl-decode-fixed-euc-jp): Bug fix for ASCII. - - * mlh.el (mlh-space-bar-backward-henkan): Call egg-do-auto-fill. - - * egg.el: Comment out definition of C-\ in global-map. - -1997-06-09 NIIBE Yutaka - - * its.el (its-kick-convert-region): Rename from its-convert-region. - (its-mode-map): Follow the change. - - (its-make-next-state): Use list instead of cons. - - (its-get-kst/t): Make it substitution. - (its-set-kst, its-get-keyseq, its-set-keyseq, its-kst-p, - its-get-output, its-set-output, its-get-keyseq-syl): Likewise. - (its-new-state, its-new-map, its-get-indicator, its-set-indicator, - its-get-start-state, its-reset-start-state): Likewise. - - (its-get-next-state): Use assq instead of assoc. - - (its-goto-state): Tune up. - -1997-06-08 NIIBE Yutaka - - * mlh.el: Merge mlh-nihongo.el. - * mlh-nihongo.el: Removed. - - * its-hira.el: Moved from its/hira.el. Move comments to HISTORY. - (its-hira-enable-double-n, its-hira-period, its-hira-comma, - its-hira-open-bracket, its-hira-close-bracket, - its-hira-horizontal): New variables. - Use the variables to define the state-machine. - - Implement non-interactive translation in ITS. - * its.el (its-translate-region): New function. - (its-latest-SYL): New Variable. - (its-state-machine-keyseq): Use it. - (its-update-latest-SYL): New function. - (its-buffer-ins/del-SYL): Use it. - (its-translation-result): New variable. - (its-ins/del-SYL-batch): New function. - (its-enable-double-n-syntax, its-use-kuten-for-period, - its-use-touten-for-comma, its-zenkaku-escape, its-hankaku-escape): - Removed. - - Use ITS, delete mlh's own implementation of automata. - * mlh.el (mlh-start-state, mlh-set-of-chars, mlh-start-state-sym, - mlh-set-of-chars-sym, mlh-define-automata, mlh-end-of-definition, - mlh-defrule, mlh-next-state, mlh-roma-kana-backward): Removed. - (mlh-cause-error-when-unknown-romaji-sequence): Removed. - (mlh-atoi): Removed. - (mlh-white-space, mlh-zenkaku-white): Use string-to-int. - * mlh-nihongo.el (mlh-hira-start-state, mlh-hira-chars, and all - rules of definition which defines the automaton): Removed. - (mlh-kanji-with-henkan-region-function): Use its-translate-region. - (mlh-hiragana, mlh-katakana): Likewise. - - Fix of CCL. - * wnnrpc.el (ccl-decode-fixed-euc-jp): Bug fix for jisx0212. - Add missing parens. - - Speed up of unpacking. - * wnnrpc.el (wnnrpc-following-char-or-wait): Tune up. - (wnnrpc-following+forward-char): New function. - (wnnrpc-unpack-u32c, wnnrpc-unpack-u32, wnnrpc-unpack-u16, - wnnrpc-unpack-u8): Use it. - (wnnrpc-accept-process-output): New function. - (wnnrpc-unpack-u16-string, wnnrpc-unpack-u8-string, - wnnrpc-unpack-bytes): Use it. Use search-forward. - (wnnrpc-unpack-u16-string): Use decode-coding-region. - -1997-06-07 NIIBE Yutaka - - * wnn.el (wnn-get-all-candidates): New function. - (wnn-set-bunsetsu-pos): Return 0 (instead of -1). - - * convert.el (egg-get-candidate): Removed. - (egg-get-all-candidates): New entry function. - (egg-conversion-backend): Entry for egg-get-all-candidates. - (egg-select-candidate): New function. - (egg-conversion-map): Bind "\M-s" and egg-select-candidate. - -1997-06-05 NIIBE Yutaka - - * bushu.el: Renamed from busyu.el. - (bushu-break-string, etc): Renamed from busyu*. - - * menu.el: Completely rewritten. - -1997-06-03 NIIBE Yutaka - - * its.el (its-reset-start-state): Bug fix. Delete a CDR. - - Implement "class of key" transition. - Change the structure of , the last member is - instead of . - * its.el (its-kst-p): Rename from its-ksa-p. - (its-get-next-state): Follow the change of the data structure. - (its-state-machine): Likewise. - (its-make-next-state): Likewise. - (its-set-kst): New function. - (its-get-otherwise): New function. - (its-otherwise-match): New function. - (its-define-otherwise-terminate-here): Removed. - (its-define-otherwise): New function. - (its-defrule*): Use its-define-otherwise. - - * its/hira.el (n): Use its-define-otherwise. - -1997-06-02 NIIBE Yutaka - - * wnnrpc.el (wnnrpc-receive-sho-bunsetsu-list-sub, - wnnrpc-receive-sho-bunsetsu-list-sub-2): Splited from - wnnrpc-receive-sho-bunsetsu-list. - (wnnrpc-receive-dai-bunsetsu-list): New function. - (wnnrpc-daibunsetsu-conversion, wnnrpc-get-daibunsetsu-candidate): - New function. - -1997-06-01 NIIBE Yutaka - - * wnnrpc.el (ccl-decode-fixed-euc-jp): Clean it up. - (wnnrpc-file-attribute): Rename from wnnrpc-stat-file. - (wnnrpc-get-dictionary-list-with-environment): Rename from - wnnrpc-get-dictionary-list-with-environment. - - Implement RPC more. - * wnnrpc.el (wnnrpc-who, wnnrpc-get-env-list, wnnrpc-kill, - wnnrpc-delete-dictionary, wnnrpc-set-flag-on-dictionary, - wnnrpc-get-dictionary-list, wnnrpc-delete-word, - wnnrpc-receive-word, wnnrpc-search-word, - wnnrpc-search-word-in-dictionary, wnnrpc-get-word-info, - wnnrpc-set-comment-on-word, wnnrpc-get-dictionary-info, - wnnrpc-set-file-comment, wnnrpc-hinshi-name, - wnnrpc-set-file-password, wnnrpc-set-hinshi-table): New functions. - -1997-05-31 NIIBE Yutaka - - * wnnrpc.el (wnnrpc-format-u32c, wnnrpc-unpack-u32c): New - substitutions. Support 32-bit number represented in cons cell of - a pair of 16-bit integer. - (wnnrpc-format, wnnrpc-unpack): Handle u32c (U). - - (wnnrpc-format-bytes, wnnrpc-unpack-bytes): New substitutions. - Support byte stream end with 255(-1). - (wnnrpc-format, wnnrpc-unpack): Handle bytes (B). - - (wnnrpc-local-file-loaded): New function. - (wnnrpc-call-with-proc-1): New macro. Assume the buffer is the one - of process. - -1997-05-29 NIIBE Yutaka - - * wnnrpc.el (wnnrpc-get-conversion-parameters, wnnrpc-file-loaded, - wnnrpc-write-file, wnnrpc-get-fuzokugo-file, wnnrpc-get-file-list, - wnnrpc-get-file-list-with-env, wnnrpc-stat-file, - wnnrpc-get-file-info): New functions. - wnnrpc-receive-file-list): New subst. - -1997-05-29 Kenichi Handa - - * wnnrpc.el (ccl-decode-fixed-euc-jp): Tune it up. - -1997-05-29 Hisashi Miyashita - - * wnnrpc.el (fixed-euc-jp, ccl-decode-fixed-euc-jp, - ccl-encode-fixed-euc): New private coding system. Encode/decode - CCL for it. - -1997-05-27 NIIBE Yutaka - - * wnnrpc.el (wnnrpc-tanbunsetsu-conversion): Change the argument. - (wnnrpc-get-bunsetsu-candidates): Likewise. - (wnnrpc-renbunsetsu-conversion): Likewise. - - * wnn.el (wnn-change-bunsetsu-length): Follow the change. - (wnn-set-bunsetsu-pos): Likewise. - (wnn-change-bunsetsu-length, wnn-start-conversion): Likewise. - -1997-05-25 NIIBE Yutaka - - * wnnrpc.el (wnnrpc-add-word, wnnrpc-get-dictionary-list, - wnnrpc-receive-dictionary-list, wnnrpc-get-writable-dictionary-list, - wnnrpc-get-hinshi-list, wnnrpc-hinshi-number): New functions. - (wnnrpc-unpack-u16-string): Bug fix for the case of ASCII string. - - * wnn.el (wnn-dictionary-specification): Add dictionaries of - gerodic and ones of WNN consortium. - - Implement a false path. - * wnnrpc.el (wnnrpc-renbunsetsu-conversion): Generate an error on - failure. - (wnnrpc-get-bunsetsu-candidates): Ditto. - (wnnrpc-tanbunsetsu-conversion): Ditto. - - Implement a false path. Error recovery. - * wnn.el (wnn-create-directory, wnn-open-dictionary, - wnn-open-frequency, wnn-query-del/create-frequency): New function. - (wnn-set-dictionary-sub): New function. - -1997-05-24 NIIBE Yutaka - - * wnnrpc.el (wnnrpc-version, wnnrpc-access, wnnrpc-mkdir, - wnnrpc-create-dictionary, wnnrpc-create-frequency, - wnnrpc-discard-file, wnnrpc-remove-file): New functions. - (wnnrpc-test-result-and-get-error): New subst. - - Implement a false path from wnnrpc-set-fuzokugo-file. - * wnnrpc.el (wnnrpc-set-fuzokugo-file): Return negate-encoded - error code on failure. - * wnn.el (wnn-create-environment): Generate an error message. - - Implement a false path from wnnrpc-open-file. - * wnnrpc.el (wnnrpc-open-file): Change the interface. Return - negate-encoded error code on failure. - * wnn.el (wnn-open-file): New function. - (wnn-create-environment): Handle return value, and generate - an error message for wnnrpc-set-fuzokugo-file on failure. - (wnn-set-dictionary): Handle return value. - -1997-05-17 NIIBE Yutaka - - * wnnrpc.el (wnnrpc-error-message): Error strings taken from - Wnn-4.2 distribution. - (wnnrpc-errono): Removed. - - Implement a false path from wnnrpc-open. - * wnnrpc.el (wnnrpc-open): Change the interface. Return NIL on - success, error code on failure. - * wnn.el (wnn-open): Delete process and buffer. - Generate an error on failure. - (wnn-get-environment): Follow the change (none). - (wnn-start-conversion): Follow the change (none). - * convert.el (egg-convert-region): Follow the change. Call - delete-region after egg-start-conversion. - - Implement a false path from wnnrpc-connect. - * wnnrpc.el (wnnrpc-connect): Change the interface. Return - negate-encoded error code on failure. - * wnn.el (wnn-create-environment): Generate an error on failure. - (wnn-get-environment): Follow the change. On failure, don't - register the environment to wnn-environments. - -1997-05-16 NIIBE Yutaka - - Dynamically allocate environment arbitrarily. - * wnn.el (wnn-create-environment): Change the structure of ENV. - (wnn-e-get-in-use, wnn-e-set-in-use): New subst. - (wnn-end-conversion): Call wnn-e-set-in-use. - (wnn-get-environment, wnn-find-env-not-in-use): New function. - (wnn-start-conversion): Call wnn-get-environment. - - * wnn.el (wnn-fini): Implemented. - -1997-05-15 NIIBE Yutaka - - * convert.el (egg-start-conversion): Change the interface. - (egg-convert-region): Follow the change. - (egg-open-if-not): Removed. - * wnn.el (wnn-start-conversion): Follow the change. - - * wnn.el (wnn-environment-list): Removed. - (wnn-environment-serial): Removed. - (wnn-connect-and-init): Removed. - (wnn-environments): New variable which holds all environments. - -1997-05-15 NIIBE Yutaka - - * wnn.el (wnn-change-bunsetsu-length): Bug fix. Last argument to - wnnrpc-b-set-freq-down is list of bunsetsu. - - * mlh.el (mlh-do-spacing): Emacs 20 related changes. - Use category-set-mnemonics, and char-category-set. - According to suggestion by Kenichi Handa . - -1997-05-15 MORIOKA Tomohiko - - * wnn.el (wnn-usr-dic-dir): New variable. - (wnn-filename): Use wnn-usr-dic-dir. - - * its.el (its-defrule): New argument `enable-overwrite'. - -1997-05-14 NIIBE Yutaka - - * convert.el (egg-exit-conversion-unread-char): Use newer variable - unread-command-events, as unread-command-char is obsolete. - (egg-shrink-bunsetsu, egg-source-maxlen-from-here, - egg-enlarge-bunsetsu, egg-next-conversion, egg-exit-conversion, - egg-exit-conversion, egg-insert-converted-result): New property - EGG-CONVERSION-ENGINE, which specifis backend. - - (egg-start-conversion, egg-get-number-of-bunsetsu, - egg-get-bunsetsu-converted, egg-set-bunsetsu-pos, - egg-get-bunsetsu-pos, egg-get-number-of-candidates, - egg-get-candidate, egg-decide-candidate, - egg-change-bunsetsu-length, egg-get-bunsetsu-source, - egg-end-conversion): Change the interface, new argument c. - * wnn.el (wnn-start-conversion, wnn-get-number-of-bunsetsu, - wnn-get-bunsetsu-converted, wnn-set-bunsetsu-pos, - wnn-get-bunsetsu-pos, wnn-get-number-of-candidates, - wnn-get-candidate, wnn-decide-candidate, - wnn-change-bunsetsu-length, wnn-get-bunsetsu-source, - wnn-end-conversion): Likewise. - - * convert.el (egg-open-if-not): Change the interface. Return - conversion backend. - - * wnnrpc.el (wnnrpc-following-char-or-wait, wnnrpc-unpack-u32, - wnnrpc-unpack-u16, wnnrpc-unpack-u8, wnnrpc-unpack-u16-string, - wnnrpc-unpack-u8-string): Change the interface to avoid - compilation warnings. - (wnnrpc-unpack): Use new interface. - - * wnn.el (wnn-open): Change the name of WNN buffer as debug has - been done. - -1997-05-11 NIIBE Yutaka - - * wnnrpc.el (wnnrpc-following-char-or-wait): Rename from - wnn-following-char-or-wait. - (wnnrpc-following-char-or-wait): Declare with DEFUN instead of - DEFSUBST. - -1997-05-10 NIIBE Yutaka - - * Throughout: Use JUNET coding system for file format. - - * mlh.el: Move some comments to HISTORY. - (mlh-version): Removed. - Remove all autoload entries. - (henkan-region-function): Removed. - (member): Don't need any more. - - * mlh-nihongo.el: Renamed from nihongo.el. - - * mlh.el (mlh-space-bar-backward-henkan): call egg-convert-region - directly. - (mlh-space-bar-backward-henkan): Fix for Emacs 20. - Don't call egg:do-auto-fill. - (mlh-backward-henkan): Use set-marker-insertion-type. - (mlh-do-spacing): Char-category. - - * mlh.el, nihongo.el: Taken from mlh-1.002 distribution. - -1997-05-07 NIIBE Yutaka - - * convert.el (egg-update-frequency): Removed. - (egg-conversion-backend): Remove entry for update-frequency. - - * wnn.el (wnn-dictionary-specification): Change parameters - according to suggestion by Tomoko Yoshida in mule-jp@etl.go.jp. - Original had been taken from wnn-4.2. - -1997-05-06 NIIBE Yutaka - - * convert.el (egg-next-conversion): Bug fix. It's max+ instead of n. - -1997-05-05 NIIBE Yutaka - - * wnnfns.c (Fwnn_get_bunsetsu_converted): Rename from - get-converted-bunsetsu. - (Fwnn_get_bunsetsu_source): Ditto. - * convert.el (egg-get-bunsetsu-converted): Ditto. - (egg-get-bunsetsu-source): Ditto. - - * wnn.el (wnn-create-environment): New file which mimics API of - wnnfns.c. - -1997-04-29 NIIBE Yutaka - - * wnnrpc.el: New file which implements Remote Procedure Calls of WNN. - -1997-04-16 NIIBE Yutaka - - * its/kanainput.el (normal-pair): Use its-defrule*. - - * its.el (its-defrule*): Rewritten. - - * its/hira.el ("n"): Alternative implementation using 'otherwise'. - - * its.el (its-processing-map): Removed. - (its-register-map): Rename from its-set-map. - (its-register-map): Remove first argumet NAME. - (its-defrule): Remove last optional argument END. - (its-define-otherwise-terminate-here): New function. - (its-goto-state): New function. - (its-defrule, its-defoutput): Use its-goto-state. - -1997-04-12 NIIBE Yutaka - - * its.el: Enhance meaning of ITS state machine. Now, - includes representation of "ANY of key stroke" (-2). - (its-defrule): New feature end=='otherwise. - (its-defrule*): New function. - (its-state-machine): Implement otherwise-terminate-before-this-key. - - * its/kanainput.el (its-k-zenkaku-escape, its-k-hankaku-escape, - its-k-symbols-escape): Add prefix its-. Let them defconst. - "W": Move the definition beginning to avoid error. - -1997-03-26 NIIBE Yutaka - - * convert.el (egg-next-conversion): -1 goes to end of bunsetsu. - -1997-03-25 NIIBE Yutaka - - * egg.el (egg-mode-on, egg-input-mode, egg-in-fence-mode): Deleted. - (egg-fence-face-on, egg-fence-face-off): Deleted. - (egg-region-start, egg-region-end): Deleted. - -1997-03-24 NIIBE Yutaka - - * its/hira.el ("n"): Add "z" and "?" for prefetch char of "n". - - Implement conversion mode. - * convert.el: New file. - -1997-03-23 NIIBE Yutaka - - * its.el (its-mode-map): As "\C-g" is used in global-map, use - "\C-]" instead (for its-cancel-input). - -1997-03-22 NIIBE Yutaka - - Introduce new scheme to specify server. - * wnnfns.c (Qjserver, Qcserver, Qtserver, Qkserver): Removed. - (Vwnn_server_type): Integer variable. - (wnn_get_server_type): Renamed from wnn_check_server_type. - (charset_wnn_server_type): Renamed from lc_wnn_server_type. - - Introduce new scheme to specify uniqueness. - * wnnfns.c (Qwnn_no_uniq, Qwnn_uniq, Qwnn_uniq_kanji): Removed. - (Vwnn_uniqueness_specifier): Integer variable. Renamed from - wnn_uniq_level. - -1997-03-21 NIIBE Yutaka - - Cosmetic changes. - * wnnfnc.c (Throughout): Change Lisp function name to follow the - format of wnn-VERB-OBJECT. - Use XFASTINT instead of XINT, if appropriate. - - * wnnfns.c (Fwnn_fuzokugo_set): Merged with wnn-set-fuzokugo of - wnn-egg.el. - - * wnn-egg.el (wnn-set-fuzokugo): Deleted. - - * wnnfns.c (Fwnn_dict_add): Merged with wnn-add-dict of wnn-egg.el. - * wnn-egg.el (wnn-add-dict): Deleted. - - * wnn-egg-msg.el (wnn-msg-get): Renamed from egg-msg-get. - (wnn-message-alist): Renamed from egg-message-alist. - Use defconst. - - * wnnfns.c (wnn_check_server_type): Renemed from - check_wnn_server_type. - - * wnn-egg-msg.el (egg-error): Deleted. Not useful enough. - * wnn-egg.el (Throughout): Replace egg-error by error. - - * egg.el (egg-sai-henkan-start, egg-sai-henkan-end, - egg-old-bunsetu-suu): Moved from wnn-egg.el. - - * wnn-egg.el (Throughout): Change variable name and function name. - Added wnn- prefix, egg- prefix. - * wnn-egg.el: Delete historical defaliases. Only support - wnn-set-[cjk]server-hostname. - - * wnn6.el: New file. Discriminate Wnn6 related functions. - * eggrc-wnn6: New file. Discriminate Wnn6 related setting. - - * egg-fence.el: Removed. - -1997-03-20 NIIBE Yutaka - - Distingush continuation of egg-mode and turn off of egg-mode. - * its.el (its-mode-map): Bind "\C-\\" to its-exit-mode-no-egg. - (its-exit-mode-internal): New argument egg-mode-flag. - (its-exit-mode-no-egg): New Function. - - Rethink about keymap. Once, the intention of egg-mode-map has - been to override ALL of the keymap. That's so selfish, and not - friendly to other parts of Emacs. This implementation intend to - be more friendly with other keymaps. - * its.el (its-mode-map): Remove definition of "\C-c" for - its-cancel-input, as C-c has special meaning in Emacs. We should - not re-define it. - Remove definition of "\C-q" for its-select-previous-map. - Remove definition of "\C-_" for egg-jis-code-input. - Remove definition of "\C-w", "\C-@", [?\C-\ ] for - egg-henkan-fence-region. - - Implement START/CURSOR/END scheme. - * its.el (its-input-to-vsyl): New function. - (its-beginning-of-input-buffer): New function. - (its-end-of-input-buffer): New function. - (its-backward-SYL): New function. - (its-forward-SYL): New function. - (its-delete-SYL): New function. - (its-delete-backward-SYL): New function. - (its-delete-backward-SYL-internal): New function. - (its-delete-backward-within-SYL): New function. - (its-delete-by-keystroke): New Variable. - (its-exit-mode): New function. - (its-exit-mode-internal): New function. - - * its.el (its-standard-map-list, its-find, its-next-map, - its-previous-map): Deleted. - (its-get-indicator): Delete duplicated definition. Leave one which - takes argument. - (its-input): Rename from its-input-subsubsub. - - * egg.el (egg-mode-map): Don't include SPACE. - - Introduce CURSOR. - * its.el (its-state-machine): Add new argument EMIT. Return CURSOR. - (its-state-machine-keyseq): Likewise. - (its-input-subsubsub): Return CURSOR. - (its-input-subsub): Deleted. - (its-DSYL-p): Deleted. - (its-buffer-insert-SYL-list): Deleted. - (its-buffer-ins/del-SYL): New function. - (its-input-end): Change the argument to P of point, and return VOID. - - Change structure of . is normal . - (its-new-map): Follow the change of structure. - (its-get-indicator, its-set-indicator, its-reset-start-state): - Likewise. - (its-reset-start-state): Renamed from its-reset-start. - - Don't use , but introduce new scheme of SYL property. - (its-change-t-to-nil, its-nil-index, its-bytes-between, - its-delete-between, its-move-nil--->, its-move-nil-<--, - its-move-nil-<--sub, its-move-nil-to-last, its-move-nil-to-first): - Deleted. - -1997-03-19 NIIBE Yutaka - - * its.el: Change the structure of DSYL. Same as . - (its-input-subsub): Follow the change of structure. - (its-make-DSYL): Deleted. - (its-get-keyseq-cooked): New function. - - Swap the meaning of T/NIL of . - - Delete the structure of . - (its-new-input-buffer): Deleted. - (its-input-subsub): Remove the argument SYLP. - (its-input, its-input-sub, its-init-text-properties): Deleted. - - Introduce START, END and CURSOR. - -1997-03-19 NIIBE Yutaka - - Global-map should be used, for key sequence not defined by - its-mode-map and/or egg-mode-map. Don't mask other maps. - * its.el (its-mode-esc-map): Deleted. - (its-mode-map): Include define-key of the esc-map here. - * egg.el (egg-mode-esc-map): Deleted. - (egg-mode-map): Include define-key of the esc-map here. - -1997-03-18 NIIBE Yutaka - - * its.el (its-input): Rename from its-input-input-buffer. - (its-state-machine): Handle END of input (key == -1). - - ITS minor mode deleted. It's implemented by local-map of text - properties. - (its-mode): Remove the variable. - (its-mode): Remove the function. - - * its.el (): Change the order of list. - (car sylp) is last entry of the list. - (its-input-buffer): Deleted. It's now a member of text - properties. - (): Change the structure. Start state should have "" for keyseq. - (its-get-start-state): Follow chage of the structure. - (its-reset-start, its-set-indicator, its-get-indicator): Likewise. - (its-new-state, its-new-map): Split from its-new-state/map. - (its-make-map): Deleted. - -1997-03-17 NIIBE Yutaka - - * its.el (its-buffer-insert-SYL-list): Use insert-and-inherit to - inherit properties. - (its-fence-overlay): Removed. Don't use overlay, as it has no - information in undo-list. - -1997-03-16 NIIBE Yutaka - - * its/hira.el ("n"): Use new feature END. - ("ppy", "bby", "ddy", "jjy", "zzy", "ggy", "lly", "rry", "hhy", - "cch", "tts", "tty", "ssh", "ssy", "kky"): its-defoutput. - - * its.el (its-defrule): Add argument END. - (its-buffer-delete-SYL): Bug fix. Use length instead of string-width. - -1997-03-15 NIIBE Yutaka - - * its.el (its-input-input-buffer): Implement the case of DSYL. - -1997-03-14 NIIBE Yutaka - - * its.el (its-buffer-delete-SYL): Handle the case of NIL. - - * its/hira.el: Implement "kka" and others. Implemlement "N". - (digit-characters, symbol-characters, downcase-alphabets, - upcase-alphabets): Delete useless defvar-s. - -1997-03-14 NIIBE Yutaka - - * its/hira.el ("roma-kana"): Follow change of implementation of - state machine. - - Correct the abuse of the word "MODE". It seems that it's direct - influence of "mode" in Emacs, but it's not mode at all. - * its.el (its-map-alist): Renamed from its-mode-alist. - (its-get-map): Renamed from its-get-mode-map. - (its-set-map): Renamed from its-set-mode-map. - (its-define-state-machine): Renamed from its-define-mode. - (its-select-map-menu): Renamed from its-select-mode-menu. - (its-select-map-from-menu): Renamed from its-select-mode-from-menu. - (its-standard-map-list): Renamed from its-standard-modes. - (its-next-map): Renamed from its-next-mode. - (its-previous-map): Renamed from its-previous-mode. - (its-select-map): Renamed from its-select-mode. - (its-get-indicator): Renamed from its-get-mode-indicator. - - (its-select-map-from-menu): As it's not mode, don't need offer hooks. - (its-next-map): Likewise. - (its-previous-map): Likewise. - (its-select-map): Likewise. - - Change the implementation of its-mode-alist. Name is in now. - * its.el (its-get-mode-map): Just do assoc. - (its-set-mode-map): Simplified. - - * its.el (its-get-indicator): Renamed from its-map-indicator. - (its-set-indicator): Renamed from its-map-set-indicator. - (its-get-start-state): Renamed from its-map-start. - (its-new-state): Change the argunents. - (its-map-set-start): Removed. - (its-reset-start): New function. - - Remove old implemantation of translator. - * its.el (its-resize, its-maps, its-actions, its-inputs, - its-level, its-maxlevel, its-char-from-buff, its-interactive): - Removed. - (its-make-action, its-reset-maps, its-current-map, - its-previous-map, its-level, its-enter-newlevel, its-reset-input, - its-flush-input-before-point, its-peek-char, its-read-char): - Removed. - (its-push-char, its-ordinal-charp, its-delete-charp): Removed. - (its-translate-region): Removed. - (its-buff-s, its-buff-e): Removed. - (its-state-terminalp): Removed. - - Remove selection of candidates in map, it's questionable to - implement this feature with SYL. Might rethink in future. - (its-make-menu-from-map-result, its-make-alist-from-map-result): - Removed. - (its-make-menu-from-map, its-make-menu-from-map*): Removed. - (its-make-alist-from-map, its-make-alist-from-map*): Removed. - (its-completing-read): Removed. - (its-minibuffer-local-must-match-map, - its-minibuffer-local-completion-map): Removed. - (its-minibuffer-completion-help, car-string-lessp, - its-temp-echo-area-contents): Removed. - - Implement SYL-based state machine. - * its.el (its-input-buffer, its-barf-on-invalid-keyseq): New variables. - (its-new-input-buffer): New function. - (its-self-insert-char): New command. - (its-initial-ISYL, its-make-DSYL, its-make-VSYL, - its-input-input-buffer, its-input-input-buffer-sub, - its-state-machine, its-state-machine-keyseq, - its-buffer-delete-SYL, its-buffer-insert-SYL-list, - its-get-next-state, its-get-ksa/b, its-get-keyseq, its-ksa-p, - its-get-output): New function. - (its-get-KAS): Removed. - (its-get-state, its-get-action, its-set-action): Removed. - (its-make-KAS, its-get-KAS): Removed. - - * its.el (its-defrule-sub): Merged into its-defrule. - -1997-03-13 NIIBE Yutaka - - * its.el: (its-define-mode): Change the arguments. - * its/zhuyin.el ("zhuyin"): Follow the changes of its-define-mode. - * its/zenkaku.el ("zenkaku-downcase"): Likewise. - * its/pinyin.el ("PinYin"): Likewise. - * its/kata.el ("roma-kata"): Likewise. - * its/kanainput.el ("kanainput"): Likewise. - * its/hira.el ("roma-kana"): Likewise. - * its/hankaku.el ("downcase"): Likewise. - * its/hangul.el ("hangul"): Likewise. - * its/han-kata.el ("roma-han-kata"): Likewise. - - * its.el (its-action-output, its-action-next, its-get-next-map, - its-set-next-map): Removed. - (its-make-next-state): New function. - (its-make-state): Removed. - - * its.el (its-defrule-sub): Renamed from `its-defrule**'. - - * wnnfns.h: New file. Macros for WNN6 are defined here. - * wnn6fns.c: New file. Moved from wnnfns.c for WNN6 specific - functions. - -1997-03-12 NIIBE Yutaka - - * wnnfns.c: cosmetic changes (indentation, commenting-out-style, - and compare to Qnil, etc). - Get rid of "register" qualifier. - -1997-03-05 NIIBE Yutaka - - * its.el (its-define-mode): Change internal structure. Completely - rewritten. - (its-make-map): Function to make map. - (its-make-state): New function. Make new state. - (its-make-KAS): New function. Make Key-Action-State triad. - (its-state-terminalp): New function. True when the state is - terminal. - (its-map-indicator, its-map-set-indicator,): Changed. - (its-map-terminalp, its-map-incrementalp, - its-map-set-incrementalp, its-map-alist, its-map-set-alist, - its-map-action, its-map-set-action): Removed. - - (its-defrule-verbose): Deleted. Seems debug purpose variable. - - (its-make-map): Removed . It was useless space eater. - (its-map-indicator, its-map-set-indicator, its-map-alist, - its-map-set-alist, its-map-action, its-map-set-action): Follow the - change. - (its-define-mode): Likewise. - (its-defrule**): Change the argument. Delete STATE. - (its-defrule): Likewise. - (its-map-state, its-map-set-state): Removed. - - : Changed the structure. Introduce , which - is t on hangul-map, zhuyin-map, and kanainput-map. - (its-define-mode): Change the arguments. INDICATOR and RESET is - always required. Add new argument INCREMENTALP. - * its/kanainput.el ("kanainput"): Use new API of its-define-mode. - * its/hangul.el ("hangul"): Likewise. - * its/zhuyin.el ("zhuyin"): Likewise. - * its.el (its-make-terminal-state-sofar): Removed. - (its-default-make-terminal-state): Removed. - (its-make-terminal-state): Removed - (its-make-non-terminal-state): Removed. Not used. - (its-map-incrementalp, its-map-set-incrementalp): New functions. - -1997-03-04 NIIBE Yutaka - - * its.el (its-defrule-conditional, its-defrule-conditional*): - Removed. Evaluating cond clause at runtime is stupid. Rules - should be determined at compile time, not at run time. - (its-get-action): Simplified. It's always standard. - (its-make-terminal-state-sofar): Likewise. - (its-make-action): Renamed from its-make-standard-action. - (its-standard-actionp): Removed. No use. - (its-translate-region): Simplified. - - (its-map-topmap-p): Removed. No use. - - (its-simple-actionp, its-collect-simple-action): Removed. No use. - - (its-insert-output-string, its-display-status-string): Removed. - It seemd these variables is to debug ITS itself. - (its-translate-region): Simplified. - - * its/hira.el (".", ",", "n", "nn"): Rules should be determined at - compile time. - * its/han-kata.el: Likewise. - * its/kata.el: Likewise. - - * its.el (its-make-standard-action): Simplified. - (its-make-standard-action): Remove alternative output. - (its-standard-actionp): Simplified. - (its-action-next): Simplified. - (its-select-alternative-output-menu): Removed. Not used at all. - (its-select-alternative-output): Ditto. - - * its/han-kata.el, its/zenkaku.el, its/kata.el, its/kanainput.el, - its/hira.el, its/hankaku.el: Add (require cl). - - * its.el (its-enable-double-n-syntax, its-use-kuten-for-period, - its-use-touten-for-comma, its-zenkaku-escape, its-hankaku-escape): - Declare here. Add prefix `its-'. ): - - (its-defrule, its-defrule*): Remove MAP argument. - Merged into its-defrule. - -1997-03-04 NIIBE Yutaka - - * its.el (its-completing-input-menu): Removed. Not used. - (its-completing-input): Ditto. - (its-translate-region): Remove (null action) clause. It's identical - to 't' case. - - (its-map-supers): Deleted. - (its-map-set-supers): Ditto. - (its-get-next-map-locally): Deleted. - - (its-define-mode): Remove supers. - (its-make-map): Likewise. - - (its-simulate-input): sref -> aref. add char-bytes -> +1. - (its-defrule**): Likewise. - - (its-flush-input-before-point): Delete useless save-excursion. - (its-push-char): Likewise. - (its-translate-region): Likewise. - - * its/zhuyin.el (its-make-terminal-state): - * its/kanainput.el (its-make-terminal-state): - * its/hangul.el (its-make-terminal-state): - Use its-make-terminal-state-sofar. - - * its/kanainput.el (its-make-terminal-state-kanainput): Removed. - - * its.el (its-make-terminal-state-sofar): Renamed. - (was: its-make-terminal-state-hangul) - - * its/han-kata.el (its-select-hankaku-katakana): Renamed. - (was: its:select-hankaku-katakana). - - * its.el (its-map-topmap-p, its-map-supers, its-map-set-supers, - its-map-terminalp, its-map-state, its-map-set-state, - its-map-indicator, its-map-set-indicator, its-map-action, - its-map-set-action, its-map-alist, its-map-set-alist, - its-get-action, its-action-output, its-action-next, - its-get-next-map, its-get-next-map-locally, its-set-next-map, - its-collect-simple-action, its-read-current-its-string, - its-make-map): Add prefix 'its-'. - - * its.el (its-defrule-select-mode-temporally): Deleted. - (its-select-mode-temporally): Deleted. - (its-select-previous-mode): Deleted. - - * its/hira.el ("q", "Q"): Removed. - - * its.el (its-defrule**): Don't call coerce-internal-string. - (map-state-string): Removed. - (its-default-make-standard-non-terminal-state): Don't call - map-state-string. - - * egg.el (characterp, coerce-internal-string, coerce-string): Removed. - - * its.el (its-insert-char): Deleted. - (its-internal-mode-alist): Removed. - (its-set-mode-map, its-define-mode): Remove internalp. - (its-set-mode-indicator): Removed. - - * egg-fence.el (egg-fence-self-insert-command): Add prefix 'egg-'. - - * its.el (fence-self-insert-command): Move to egg-fence.el. - - * egg-fence.el (egg-exit-fence-mode): Renamed (egg-fence-exit-mode). - (egg-enter-fence-mode-and-self-insert): Deleted. - - * egg.el (egg-quit-egg-mode): Deleted. - - * egg-misc.el (egg-fence-toggle-egg-mode): Add prefix 'egg-'. - (egg-fence-toggle-egg-mode): beep -> ding. - (global-map): bind C-\ to egg-enter-fence-mode. - -1997-03-02 NIIBE Yutaka - - * egg-henkan.el: New file. - - Use new API (egg-get-bunsetu-kanji, egg-get-bunsetu-yomi, - egg-is-dai-bunsetu, bunsetu-suu, egg-hindo-update, - egg-get-bunsetu-end). - - * wnn-egg.el: Move egg-henkan-* to egg-henkan.el. - - * wnn-egg.el (egg-startup-file-search-path): Remove current - directory. - (egg-open-wnn): Renamed from EGG-open-wnn. - (bunsetu-suu): New function. - (egg-get-bunsetu-kanji, egg-get-bunsetu-yomi): New function. - (egg-is-dai-bunsetu): New function. - (egg-hindo-update): New function. - (egg-get-bunsetu-end): New function. - - (egg-henkan-region, egg-gyaku-henkan-region, - egg-henkan-region-internal, egg-henkan-paragraph, - egg-gyaku-henkan-paragraph, egg-henkan-sentence, - egg-gyaku-henkan-sentence, egg-henkan-word, egg-gyaku-henkan-word, - egg-henkan-insert-kouho, egg-henkan-kakutei, - egg-henkan-kakutei-first-char, egg-henkan-kakutei-before-point, - egg-sai-henkan, egg-henkan-goto-bunsetu, - egg-henkan-forward-bunsetu, egg-henkan-backward-bunsetu, - egg-henkan-first-bunsetu, egg-henkan-last-bunsetu, - egg-henkan-hiragana, egg-henkan-katakana, egg-henkan-next-kouho, - egg-henkan-next-kouho-dai, egg-henkan-next-kouho-sho, - egg-henkan-previous-kouho, egg-henkan-previous-kouho-dai, - egg-henkan-previous-kouho-sho, egg-henkan-goto-kouho, - egg-henkan-bunsetu-chijime-dai, egg-henkan-bunsetu-chijime-sho, - egg-henkan-bunsetu-nobasi-dai, egg-henkan-saishou-bunsetu, - egg-henkan-saichou-bunsetu, egg-bunsetu-length-henko, - egg-henkan-quit, egg-henkan-select-kouho, - egg-henkan-select-kouho-dai, egg-henkan-select-kouho-sho, - egg-henkan-word-off, egg-henkan-kakutei-and-self-insert, - egg-henkan-mode-map, egg-henkan-mode-esc-prefix, - egg-henkan-help-command, egg-henkan-inspect-bunsetu): - Add prefix `egg-'. - - (egg-henkan-mode-in-use): Deleted. - (set-egg-henkan-mode-format): Deleted. Don't need. - - (disconnect-wnn): Let it be normal function, instead of command. - (close-wnn): Ditto. - - (set-jserver-host-name, set-kserver-host-name, - set-cserver-host-name): Use defalias. - - (close-wnn): Take an argument of wnn-server-type. - (wnn-egg-kill-emacs-function, set-wnn-host-name, - set-cwnn-host-name, set-kwnn-host-name): Likewise. - - * egg.el (egg-global-map-backup): Deleted. - (egg-local-map-backup): Deleted. - (egg-insert-after-hook): it's global variable, nod buffer-local. - - * egg-fence.el (egg-henkan-fence-region, egg-enter-fence-mode, - egg-fence-katakana, egg-fence-hiragana, egg-fence-hankaku, - egg-fence-zenkaku, egg-fence-backward-char, - egg-fence-forward-char, egg-fence-beginning-of-line, - egg-fence-end-of-line, egg-fence-transpose-chars, - egg-fence-delete-char, egg-fence-backward-delete-char, - egg-fence-kill-line, egg-fence-exit-mode, egg-fence-cancel-input, - egg-fence-mode-help-command): Add Prefix `egg-'. - - (egg-fence-mode-map): Remove binding to eval-expression (C-z). - - (egg-self-insert-non-undo-count): Removed. - (egg-self-insert-command): Removed. - - (egg-fence-backward-char, egg-fence-forward-char, - egg-fence-transpose-chars, egg-fence-delete-char, - egg-fence-backward-delete-char): beep -> ding. - wnn-egg.el (egg-henkan-select-kouho): Likewise. - -1997-02-27 NIIBE Yutaka - - * wnn-egg.el (push-end, push-end-internal): Removed. - - * its.el (dolist): Removed. It's in CL package. - (for-each, for-each*): Removed. - - * egg-keymap.el: Removed. I guess noone use it. - - * egg-jsymbol.el (*-alist): Declare by defconst. - - * egg-misc.el (toggle-egg-mode): Removed. - - * All files: Change the identifier XXX:YYYY --> XXX-YYYY, - and *YYY* ---> YYY. - - * egg-fence.el (enter-fence-mode): Use new API for marker - insertion `set-marker-insertion-type'. - * its.el (its-*buff-e*): Likewise. - - * egg-jsymbol.el: lc-jp --> (charset-id 'japanese-jisx0208) - lc-jp2 --> (charset-id 'japanese-jisx0212). - -1997-02-26 NIIBE Yutaka - - * egg-fence.el (egg:fence-mode-map): Renamed from fence-mode-map. - (egg:fence-mode-esc-prefix): Renamed from egg:fence-mode-esc-map. - (henkan-fence-region-or-single-space): Removed. - - * egg-misc.el (toggle-egg-mode): mc-flag - -> enable-multibyte-characters. - - * its.el (read-current-its-string): New function. Moved from - wnn-egg-misc.el. - (In meny functions): beep --> ding. - - * egg-misc.el (read-hiragana-string): Removed. - (read-kanji-string): Removed. - (egg:special-symbol-input): Renamed from special-symbol-input. - (egg:special-symbol-input-point): Renamed from - special-symbol-input-point. - (si:*global-map*): Remeved. - Removed 'Changes on Global map'. - (its-mode-map): Renamed from mule-keymap. - - * wnn-egg.el (henkan-region-internal): Use new API for undo. - (henkan-kakutei): Likewise. - (henkan-kakutei-first-char): Likewise. - (henkan-kakutei-before-point): Likewise. - (sai-henkan): Likewise. - * egg.el (egg:quit-egg-mode): Likewise. - - * egg-fence.el (egg:*fence-open*, egg:*fence-close*, - egg:*fence-face*): Let them be declared by defvar. - (egg:*fence-open-in-cont*, egg:*fence-close-in-cont*, - egg:*fence-face-in-cont*): Likewise. - - (set-egg-fence-mode-format): Removed. Useless. Don't need to be - interactive. - (set-egg-fence-mode-format-in-cont): Removed. - (egg:*face-alist*): Removed. - - * wnn-egg-misc.el (its:select-mode, its:select-mode-from-menu, - its:next-mode, its:previous-mode): - Removed (Merged into its.el). - - * its.el (its:select-mode, its:select-mode-from-menu, - its:next-mode, its:previous-mode): Call hook of - `its:select-mode-hook'. - - * diced.el: Removed. This depends on wnn. Functions are moved to - wnn-egg-dict.el. - - * wnn-egg-dict.el (remove-regexp-in-string): Removed. - (toroku-region): Don't call `remove-regexp-in-string'. Removing - invalid sequence (TAB?) automatically is not good idea. It should - notify user. Currently, just don't remove. - - * busyu.el (busyu-table): defconst instead of defvar. - (busyu-kaku-alist): defconst instead of defvar. - - * its.el (egg:member): Removed. Not used. - - * wnn-egg-msg.el (*egg-message-alist*): Include asking string in - register-notify and remove-notify. Should also change Korean and - Chinese. - - * egg.el: Removed "Tamago Notification System". - It is useless, as we have *Messages* buffer in GNU Emacs 19. - - * diced.el (diced-execute): Don't use `notify' but `message'. - (set-dict-comment): Likewise. - * its.el (its-defrule**): Likewise. - * wnn-egg-dict.el (egg:toroku-word): Likewise. - * wnn-egg-msg.el (egg:error): Likewise. - * wnn-egg.el (set-wnn-param): Likewise. - (EGG:open-wnn): Likewise. - (close-wnn): Likewise. - (henkan-word-off): Likewise. - (henkan-inspect-bunsetu): Likewise. - - * diced.el (diced-execute): Don't use `notify-yes-or-no-p' but use - plain `yes-or-no-p' and format. - * wnn-egg-dict.el (egg:toroku-word): Likewise. - - * egg.el (notify-yes-or-no-p-internal): IIDESUKA is not good. - it should get the message through egg:get-msg. Currently, use - "OK?". - (notify-y-or-n-p-internal): Likewise. - - * wnn-egg.el: Split into wnn-egg-dict.el, wnn-egg-misc.el, and - wnn-egg-msg.el. - (many functions): remove commented out line of - (open-wnn-if-disconnected). - - * egg.el: Split into egg.el, egg-fence.el, egg-misc.el, - jis-input.el, and modeline.el. - - * wnn-egg.el (egg-default-startup-file): change to eggrc-wnn from - eggrc. - (henkan-region-internal): Use new API for marker insertion - `set-marker-insertion-type'. - -1997-02-13 NIIBE Yutaka - - * menu.el (menu:select-from-menu): Rewritten. Index: ChangeLog.1997-1998 =================================================================== RCS file: ChangeLog.1997-1998 diff -N ChangeLog.1997-1998 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ChangeLog.1997-1998 25 Aug 2002 23:53:10 -0000 1.1 @@ -0,0 +1,2311 @@ +1998-07-12 NIIBE Yutaka + + * egg-mlh.el (mlh-space-bar-backward-henkan): Don't test against + egg-conversion-backend-alist. + + * egg/wnn.el (wnn-fini-lang): Reneme from wnn-fini. + (wnn-fini): New implementation calling wnn-fini-lang. + + (wnn-close): Call wnn-fini-lang. + (wnn-dictionary-save): Ditto. + + * egg/canna.el (canna-fini): Delete LANG argument. + * egg/sj3.el (sj3-fini): Ditto. + + * egg-cnv.el (egg-set-conversion-backend): Removed. + + * egg/sj3.el (sj3-start-conversion): Signal error on non-supported + language. + * egg/canna.el (canna-start-conversion): Likewise. + * egg/wnn.el (wnn-start-conversion): Likewise. + + * egg-cnv.el (egg-convert-region): Add handler for + lang-not-supported. + + * egg/wnn.el (egg-activate-wnn): load wnnrpc here conditionally. + * egg/sj3.el: Likewise. + * egg/canna.el: Likewise. + + * egg.el (egg-support-languages, egg-set-support-languages): Removed. + (egg-mode): Don't call egg-set-conversion-backend. + * egg/{canna.el, wnn.el, sj3.el}: Don't call egg-support-languages. + + * egg-cnv.el (egg-set-current-backend): Removed. + (egg-initialize-backend, egg-start-conversion, + egg-start-reverse-conversion): Don't call egg-set-current-backend. + (egg-conversion-backend-null): Rename from *-other-languages. + (egg-conversion-backend-alist): Removed. + (egg-conversion-backend): Not buffer local. + (egg-finalize-backend-alist): Removed. + +1998-07-10 NIIBE Yutaka + + * egg-cnv.el (egg-start-conversion-failure-hook): New Variable. + (egg-start-conversion-failure-fallback): New Function. + (egg-convert-region): Handle error and hook on failure. + + * egg/sj3.el (sj3-open): Remove bogus setq-s of sj3-sys-dict-list, + sj3-user-dict-list. + + * egg-mlh.el (mlh-space-bar-backward-henkan): Don't emit message + "converting...", as it may flush out error message. + + * egg/sj3rpc.el ("egg-com", "egg/sj3"): Require on compilation. + (sj3rpc-open): Failure when version is different. + +1998-07-03 KATAYAMA Yoshio + + * its/erpin.el, its/hangul.el, its/hankata.el, its/hira.el, + its/jeonkak.el, its/kata.el, its/pinyin.el, its/quanjiao.el, + its/thai.el, its/zenkaku.el: Updated using new its-*. + + * its.el (define-its-state-machine): Rewritten. + (define-its-compiled-map): Deleted. + (define-its-state-machine-append): Rewritten. + (its-defrule): Rewritten. + (its-defrule*): Rewritten. + (its-parent-states): New Variable. + (its-goto-state): Remove 2nd optional argument INITIAL-STATE. + (its-set-interim-terminal-state): New Function. + (its-make-next-state): Remove 2nd argument KEYSEQ. + +1998-07-01 NIIBE Yutaka + + * egg-mlh.el (mlh-hira-to-kata): Removed. Doesn't work any more. + (mlh-katakana): Use japanese-katakana-region. + + * egg-cnv.el (egg-conversion-map): Add again mapping for "/". + +1998-06-27 KATAYAMA Yoshio + + * egg-cnv.el (egg-abort-conversion): Bug fix. + +1998-06-27 NIIBE Yutaka + + * egg/wnn.el (wnn-dictionary-specification-list): Don' specify + for gerodic/g-jinmei. + Suggested by SAKAI Kiyotaka . + +1998-06-26 KATAYAMA Yoshio + + * its.el (its-cancel-input): Bug fix. + +1998-06-26 SAKAI Kiyotaka + + * egg-cnv.el (egg-conversion-mode, egg-help-command): New + functions for help string. + * its.el (its-mode, its-mode-help-command): Likewise. + +1998-06-26 KATAYAMA Yoshio + + * egg-cnv.el (egg-convert-region): Bug fix. + * egg.el (egg-default-language): Don't use string. + + * its/hankata.el (its-han-kata-enable-double-n, and others): + Variable name change (-han-) to distingush kata.el. + + * its/erpin.el (its-erpin-tw-enable-quanjioao-alphabet, + its-erpin-cn-enable-quanjioao-alphabet): + See its-enable-fullwidth-alphabet. + * its/kata.el (its-kata-enable-zenkaku-alphabet): Likewise. + * its/pinyin.el (its-pinyin-cn-enable-quanjioao-alphabet): Likewise. + * its/zenkaku.el (its-zenkaku-down-map): Likewise. + + * its/erpin.el (its-erpin-tw-map): Bug fix for "\\", "{", "}", and + "/". + * its/pinyin.el (its-pinyin-cn-map): Ditto. + * its/quanjiao.el (its-quanjiao-down-tw-map): Ditto. + * its/zhuyin.el (its-zhuyin-cn-enable-quanjioao-alphabet): Ditto. + + * its/hira.el (its-hira-enable-zenkaku-alphabet): Follow changes + of its.el. + * its/ascii.el (its-up-map, its-down-map): Ditto. + * its/jeonkak.el (its-jeonkak-up-map): Ditto. + + * its/hira.el (its-hira-enable-zenkaku-alphabet): + See its-enable-fullwidth-alphabet. + + * egg/wnn.el (wnn-save-dictionaries): Rewritten. + + * egg/canna.el (egg-edep): Required. + (canna-support-languages): Use symbol. + * egg/sj3.el (egg-edep): Likewise. + + * egg/wnn.el (egg-edep): Likewise. + * egg/wnnrpc.el: Use symbol. + + * menudiag.el (menudiag-mode-map): Bug fix for boundary conditions. + (menudiag-make-selection-list): Bug fix in case of many items. + + (menudiag-forward-item, menudiag-backward-item, + menudiag-goto-line): Change so that it wraps. + + * its.el (egg-edep): Required. + (its-keydef): Require unconditioanlly. + (its-mode-map): Don't call its-define-select-keys here. + (its-mode-map): Use of symbol as keymap. + (its-fence-invisible): New variable. + (its-put-cursor): Don't call its-define-select-keys. + (its-setup-fence-mode): invisible handling and its-define-select-keys. + (its-keyseq-acceptable-p): if (CDR SYL) is number, return NIL. + (define-its-state-machine): Introduce its-temporaly-map. + (define-its-state-machine-append): Likewise. + + (its-goto-state): Use symbol as keymap, not directly. + + (its-set-part-1,its-set-part-2): New function. + (its-delete-backward-within-SYL): Conditionalize. + + * egg.el (egg-edep): Required. + (egg-mode): Add remove-hook call. + Supply NIL as first argument to egg-set-conversion-backend. + make-local-hook for input-method-activate-hook. + (egg-set-face): Add optional argument OBJECT. + (egg-redraw-face): Bind inhibit-point-motion-hooks. + + * egg.el (set-buffer-multibyte): Move to egg-edep.el. + + * egg-mlh.el (mlh-space-bar-backward-henkan): Use assq. + + * egg-com.el (egg-zhuyin-syllable): compatibility change. + (encode-fixed-euc-china-region): Removed maxlen. + + Really Needed? -- gN. + * egg-com.el (egg-pinyin-syllable): Check exact match. + (egg-zhuyin-syllable): Likewise. + + * egg-cnv.el (egg-edep): Required. + (its-keydef): Not required. + (egg-conversion-map): Don't call its-define-select-keys here. + Fset it to use symbol instead of the map directly. + + (egg-get-bunsetsu-info): Add new optional argument for getting + property. + (egg-start-conversion-other-languages): set egg-conversion-backend. + (egg-set-current-backend): Use assq instead of assoc. + (egg-get-conversion-face): Likewise. + (egg-conversion-invisible): New variable. + (egg-convert-region): Change for open/close delimiter. + (egg-chinese-sisheng-regexp): New function. + (egg-separate-languages): Use egg-chinese-sisheng-regexp, + use symbol for language specifier (instead of string). + + (egg-charset-to-language): Use symbol for language specifier + (instead of string). + (egg-next-chinese-lang): Likewise. + + (egg-next-part-lang): Change the arguments. + + (egg-make-bunsetsu): New function changing egg-insert-bunsetsu. + + (egg-separate-characters): compatibility changes. + + (egg-conversion-wrap-select): New Variable. + + (egg-next-candidate): Can wrap around. + + (egg-decide-before-point): Rewritten. + (egg-abort-conversion): Back to previous one. + (egg-select-candidate): Use egg-make-bunsetsu. + + * egg-edep.el: New File for handling differences between Emacs version. + * its/thai.el: New File. + * its/hangul.el: Updated. + +1998-06-26 NIIBE Yutaka + + * Makefile (install): Don't touch .emacs and leim-list.el + directly. User should do it by her hand. + Reported by SAKAI Kiyotaka + +1998-06-25 NIIBE Yutaka + + * egg/canna.el (canna-dictionary-specification): "user" instead of + ("user"). Should chnage canna-filename later. + Reported by Akio Morita . + +1998-04-02 NIIBE Yutaka + + * egg-com.el (comm-unpack-u16-string): Call string-as-multibyte. + (comm-unpack-mb-string): Likewise. + + * egg.el (set-buffer-multibyte): Function for Emacs 20.2. + + * egg/wnn.el (wnn-open): Call set-buffer-multibyte. + * egg/sj3.el (sj3-open): Ditto. + * egg/canna.el (canna-open): Ditto. + +1998-04-02 KATAYAMA Yoshio + + Implement hilight. + * egg.el (egg-mark-list, egg-suppress-marking): New Variables. + (egg-set-face, egg-mark-modification, egg-redraw-face): New + Functions. + * its.el (its-buffer-ins/del-SYL): Call egg-set-face. + (its-setup-yanked-portion): Likewise. + * egg-cnv.el (egg-insert-bunsetsu): Call egg-set-face. + + * egg.el (egg-mode): set default backend. + * egg-mlh.el (mlh-space-bar-backward-henkan): activate input + method. + +1998-04-02 NIIBE Yutaka + + * egg-cnv.el (egg-decide-bunsetsu): Undo changes of 03-16. + (egg-abort-conversion): Call egg-end-conversion. + (egg-decide-before-point): Call egg-end-conversion widh ABORT=NIL. + +1998-03-16 NIIBE Yutaka + + CANNA Support. + * egg/canna.el, egg/cannarpc.el: New file. + * Makefile (SRCS): Added. + + * egg-cnv.el (egg-end-conversion): Add argument ABORT. + + * egg/wnn.el (wnn-end-conversion): Follow the change of + EGG-END-CONVERSION. + * egg/sj3.el (sj3-end-conversion): Likewise. + +1998-03-15 NIIBE Yutaka + + * Makefile: Add dependencies for its-keydef.elc. + * egg/sj3rpc.el (sj3-open): Don't support list of hosts. + * its.el (its-exit-mode, its-kick-convert-region): Bug fix. Call + its-input-end and its-put-cursor. + (its-exit-mode-off-input-method): Removed. + +1998-03-14 KATAYAMA Yoshio + + * docomp.el (its-keydef): Undo the changes of 03-09. its.el + is fixed. + + * egg-cnv.el (egg-current-language): New valiable. + (egg-bunsetsu-info): Separate bunsetsu-info and lunguage. + (egg-conversion-backend-other-languages + egg-init-other-languages + egg-start-conversion-other-languages + egg-get-bunsetsu-converted-other-languages + egg-get-bunsetsu-source-other-languages + egg-list-candidates-other-languages + egg-get-number-of-candidates-other-languages + egg-get-current-candidate-number-other-languages + egg-get-all-candidates-other-languages + egg-decide-candidate-other-languages + egg-change-bunsetsu-length-other-languages + egg-end-conversion-other-languages + egg-fini-other-languages): New valiable and functions for + handling unknown language. + (egg-set-current-backend): Set egg-conversion-backend-other-languages + when backend for specified language isn't found. + (egg-start-reverse-conversion): New function for reverse conversion. + (egg-set-conversion-backend-internal): Removed. + (egg-set-conversion-backend): Args are changed. + (egg-get-conversion-face): New function for different face for + every language. + (egg-convert-region): Make converting text read-only. Handle + unknown laguages and backend opening error. Rename its-lang to + egg-lang. + (egg-separate-languages): Argument use-context is added to + utilize context when called by its-yank. Rename its-lang to + egg-lang Improve speed. + (egg-charset-to-language): Renamed from egg-char-to-language. + (egg-next-part-lang egg-next-chinese-lang): Rename its-lang to + egg-lang. + (egg-conversion-map): Unbind C-\ and /. Bind C-X RET XXX to + its-select-XXX. + (egg-insert-bunsetsu): Make conversion text read-only. Separate + bunsetsu-info and conversion-backend. + (egg-insert-bunsetsu-list): Remove redundant variables. + (egg-beginning-of-conversion-buffer): New function. + (egg-end-of-conversion-buffer): New function. + (egg-enlarge-bunsetsu): Handle read-only text. + (egg-next-candidate): Handle read-only text. Bug on no candidate + bunsetsu is fiexed. + (egg-reconvert-bunsetsu-internal egg-reverse-convert-bunsetu + egg-reconvert-bunsetsu): New functions for reverse conversion and + re-conversion. + (egg-decide-before-point egg-abort-conversion): Handle read-only + text. Bug on pinyin and zhuyin mixed conversion is fixed. Allow + long fence. + (egg-select-candidate): Handle read-only text. Bug on no candidate + bunsetsu is fiexed. + + * egg-com.el: Change coding-system from internal to iso-2022-7bit. + + * egg-mlh.el (mlh-space-bar-backward-henkan): Disable temporally + mode selection. + + * egg.el (egg-mode): Set cureent lang to conversion backend. + (egg-set-mode-line-title): Renamed to its-set-mode-line-title + and moved to its.el. + (egg-check-language): Removed. + + * egg/sj3.el (sj3-server-port): Change from defconst to defver for + user customization. + (sj3-open sj3-get-environment): Try opening alternate servers. + (sj3-start-conversion): Make second argument LANGUAGE optional. + (egg-activate-sj3): Parameters of egg-set-conversion-backend is + changed. + + * egg/sj3rpc.el (sj3rpc-error-message): New constant (Not yet + completed). + (sj3rpc-get-error-message): Check range of errno to avoid + args-out-ou-range error. + + * egg/wnn.el (wnn-jport wnn-cport wnn-tport wnn-kport): New + variables for user customization. + (wnn-server-info-list wnn-server-port): Type of fourth element + is changed from integer to symbol. + (wnn-start-reverse-conversion): New function. + (wnn-open wnn-get-environment): Try opening alternate servers. + (egg-activate-wnn): Parameters of egg-set-conversion-backend is + changed. + + * its-keydef.el (its-current-language): Moved to its.el. + (its-make-select-func): Remove language check (egg-check-language). + Add temporally mode selection. + (its-do-list-make-select-func): Binding of zhuyin-tw is changed to + `C' because conflicting zenkaku-upcase. + + * its.el (its-current-select-func its-previous-select-func): New + variables for temporally mode selection. + (its-keydef requiring): Use eval-when to avoid error on using + compiled file. + (its-get-fence-face): New function for different face for + every language. + (its-put-cursor its-setup-fence-mode): Make fence read-only. + (its-start): Remove force-mode-line-update calling. + (its-restart): Add optional argument set-prop. + (its-self-insert-char its-backward-SYL its-forward-SYL + its-delete-SYL its-delete-backward-SYL its-exit-mode + its-delete-backward-SYL-by-keystroke its-transpose-chars + its-kick-convert-region its-end-of-input-buffer): Handle read-only + fence. + (its-state-machine): Accept special actions to handle temporally + mode selection. + (its-buffer-ins/del-SYL its-ins/del-SYL-batch): Handle read-only + fence. Property its-lang is renamed to egg-lang. + (its-get-next-state its-make-next-state): Add type check to avoid + wrong-type-argument error. + (its-keyseq-acceptable-p): Save informations of its-map to avoid + confusing on temporally mode selection. + (its-defrule-select-mode-temporally): New macro. + (its-kill-line its-cancel-input): New function. + (its-delete-backward-within-SYL): Bind its-current-language to + avoid confusing when undo is done beyond language change. + (its-yank its-yank-pop its-setup-yanked-portion): New functions. + (its-exit-mode-internal): Reset temporally selected mode. Allow + long fence. + (its-kick-convert-region-or-self-insert): New function. + (its-translate-region): Remove text properties completly. + (its-set-mode-line-title): Moved from egg.el and renamed. + (its-select-mode-temporally its-select-previous-mode): New functions + for temporally mode selection. + + * leim-list-egg.el: Secondary argument for egg-activate-sj3/wnn + is no longer needed. + + * its/hira.el: Remove the rule for "~" which destroies the rules + with its-hankaku-escape. + + * its/pinyin.el: Implement its-pinyin-cn-enable-quanjioao-alphabet + and its-pinyin-tw-enable-quanjioao-alphabet. + + * its/hangul.el: Implement its-hangul-enable-quanjioao-alphabet. + + * its/ascii.el: New file. + * its/erpin.el: New file. + * its/hankata.el: New file. + * its/jeonkak.el: New file. + * its/kata.el: New file. + * its/quanjiao.el: New file. + * its/zenkaku.el: New file. + * its/zhuyin.el: New file. + +1998-03-14 NIIBE Yutaka + + * egg/sj3rpc.el (sj3rpc-close): New function. + + * egg/sj3.el (sj3bunsetsu-[sg]et-kugiri-changed): Rename from + sj3bunsetsu-get-stdy-down. + (sj3-end-conversion): Implement CLSTDY. + (sj3-fini): Implemented. + +1998-03-10 NIIBE Yutaka + + * egg/sj3.el (sj3-end-conversion): Implement bunsetsu study. + CLSTDY not yet. + + * egg/sj3rpc.el (sj3rpc-get-bunsetsu-candidates-sub): Bug fix. + Always add hiragana and katakana candidates. + (sj3-const: CLSTDY, CLSTDY_EUC): Renamed from END and END_EUC + according to "sj3cmd.h" of SJ3 distribution. + (sj3rpc-bunsetsu-stdy, sj3rpc-kugiri-stdy): New functions. + + * egg-com.el (comm-format-u8-vector): New substitution. + (comm-format): New format 'v'. + +1998-03-09 NIIBE Yutaka + + * docomp.el (its-keydef): Require its-keydef when compile. + Not so good. Just a work around. + (its-mode-map): Undo the changes of 03-04. + +1998-03-09 KATAYAMA Yoshio + + * its.el (its-translate-region): Make it command. + (its-translate-region-internal): Make it function. + +1998-03-04 NIIBE Yutaka + + * its.el (its-define-select-keys of its-mode-map): Comment it out. + * its-keydef.el (its-make-select-func): Add eval-when to compile this. + + * egg-cnv.el (egg-decide-bunsetsu): Deleted. + * its.el (its-restart): Call its-setup-fence-mode with no argument. + + * its.el (its-keyseq-acceptable-p): Bug fix. + +1998-03-03 KATAYAMA Yoshio + + *its.el (its-get-keyseq-syl): Compensate when DSYL has back. + (its-DSYL-with-back-p): New function. Return t when DSYL has back. + (its-concrete-DSYL-p): New function. Return t when DSYL is cons + form which means input is not continued after DSYL was created. + (its-make-concrete-DSYL): New function. + (its-self-insert-char): Make DSYL to ``concrete-DSYL'' if cursor + is t which means input is not continued. + (its-input): Test input key is whether acceptable or not when + its-barf-on-invalid-keyseq is non-nil. + (its-input-to-vsyl): Set cursor status, not just returning it. + (its-state-machine its-state-machine-keyseq): Make sure to issue + ``DSYL-with-back'' when syllable is decided by the rule with back. + ``test mode'' is added. + (its-keyseq-acceptable-p): New function. + (its-forward-SYL): The args order of put-text-property was wrong. + (its-delete-backward-SYL-by-keystroke): New function. + (its-delete-backward-within-SYL): ``delete-by-keystroke'' mode + did not work when syllable is decided by the rule with back. + Deletion limit is extended to outside of SYL (meaning of + ``within-SYL'' is changed to ``deletion starts within SYL). + (its-transpose-chars): Fixed up. + (its-in-fence-p): Confuse at openning fence. + +1998-02-25 KATAYAMA Yoshio + + * its.el (its-put-cursor): Enable its-map change in fence mode. + + * its-keydef.el (its-make-select-func): Same as above. + +1998-02-25 KATAYAMA Yoshio + + * its.el (its-set-cursor-status): New function. + (its-setup-fence-mode): New function. + (its-insert-fence-open its-insert-fence-close): Deleted. + (its-start, its-restart, its-self-insert-char): Avoid fence + destruction on its-barf. + (its-input-to-vsyl, its-state-machine, its-state-machine-keyseq, + its-buffer-ins/del-SYL, its-ins/del-SYL-batch): Update cursor + status on updating syllables. + (its-input-error): New function to realize doc-string of + its-barf-on-invalid-keyseq. + + * egg.el (egg-mode): Don't use egg-mode-line-title which cause + wrong-type-argument at isearch. Bind its-select-XXX to key only + when modefull is select. + + * egg-mlh.el (mlh-hangul, mlh-zhongwen, mlh-zhongwen-tw): Same + as above. + + * its-keydef.el (its-make-select-func): Same as above. + + * leim-list-egg.el: Same as above. + +1998-02-24 KATAYAMA Yoshio + + * its.el (its-state-machine-keyseq): Remove binding + its-barf-on-invalid-keyseq to nil. + (its-ins/del-SYL-batch): Avoide altering its-XXX-map. + (its-translate-region-internal): its-translation-result's data + type is changed to string. + + * egg-cnv.el (egg-convert-region): Gather contiguous same + language part. + +1998-02-21 KATAYAMA Yoshio + + * its.el (its-ins/del-SYL-batch): Set its-lang property. + (its-translate-region): Remove its-lang property from translated + text. + (its-translate-region-internal): New function. Retain its-lang + property on translated text. + + * egg-mlh.el (mlh-space-bar-backward-henkan): Force base language + to Japanese. + + (mlh-hangul mlh-zhongwen-tw mlh-zhongwen): New functions for + conversion functions. + +1998-02-20 KATAYAMA Yoshio + + * its.el (its-restart): New function. + (its-insert-fence-open, its-insert-fence-close): New function. + (its-start): Rewritten. Use its-insert-fence-open and + its-insert-fence-close. + (its-exit-mode-internal): Leave its-syl property. + (its-exit-mode-internal): Delete the property in this case. + (its-keydef): Require it. + + * its-keydef.el: Provide the feature. + + * egg-cnv.el (egg-convert-region): Add egg-source property to save + the source string. + (egg-conversion-map, \C-c): New keybind. + (egg-get-previous-bunsetsu): Bug fix. + (egg-decide-before-point): New implementation. + (egg-exit-conversion): Use gg-decide-before-point. + (egg-abort-conversion): New command. + +1998-02-20 NIIBE Yutaka + + * Makefile (SRCS), Egg.prj: Remove euc-china.el. + * egg-com.el: Include egg-china.el. + * egg-china.el: Removed. + +1998-02-18 NIIBE Yutaka + + * Egg.prj: Use PRCS. + + * Makefile (SRCS): Rename euc-cn.el to euc-china.el + * egg-mlh.el (mlh-space-bar-backward-henkan): Put "Japanese" + language property for text. + +1998-02-18 KATAYAMA Yoshio + + * euc-china.el: Rename from euc-cn.el. Update. + + * egg.el (egg-mode): Bug fix. Call get-exit-conversion. + * leim-list-egg.el ("japanese-egg-wnn", "japanese-egg-sj3"): + Use new definition (with language argument). + * egg/wnn.el (egg-activate-wnn): + * egg/sj3.el (egg-activate-sj3): + +1998-02-17 NIIBE Yutaka + + * Makefile (SRCS): Add its/pinyin.el, its/hangul.el and + its-keydef.el. + + * egg-com.el (ccl-encode-fixed-euc-kr): Fixed the name. + +1998-02-17 KATAYAMA Yoshio + + * its-keydef.el: New file. + * its/hangul.el, its/pinyin.el: New version. + + * egg/wnnrpc.el (load-library "egg/wnn"): Comment it out. + (wnnrpc-get-error-message): Support multiple languages. + (wnnrpc-call-with-environment): Chinese support. + + * egg/wnn.el (wnn-support-languages): New const. + (): Add , , and . + (wnnenv-get-server-type, wnnenv-get-dictionary-set, + wnnenv-get-reverse-flag): New substs. + (wnnenv-get-daibunsetsu-info, wnnenv-set-daibunsetsu-info): Changed. + (wnn-server): Removed. + (wnn-jserver, wnn-cserver, wnn-tserver, wnn-kserver): New custom. + (wnn-server-info-list): New const. + (wnn-get-server-info): New function. + (wnn-server-locale, wnn-server-type, wnn-server-port, + wnn-server-stream-name, wnn-server-buffer-name, + wnn-server-coding-system, wnn-server-hostname): New substs. + (wnn-start-conversion): Add new arguments. + (wnn-uniq-candidates): Initialize 'n'. + (wnn-change-bunsetsu-length): Simplefied. + (wnn-change-bunsetsu-length): Call renbunsetsu-conversion, + instead. + (wnn-fini, wnn-comm-sentinel): back to 971009 version. + (wnn-jserver-port): Removed. + (wnn-open): Argument change. Support languages. + + (wnn-dictionary-specification): Removed. + (wnn-dictionary-specification-list): New variable. + (wnn-get-dic-spec, wnn-dic-spec-dic-set, wnn-dic-spec-reverse, + wnn-dic-spec-name, wnn-dic-spec-param, wnn-dic-spec-fuzokugo, + wnn-dic-spec-dic-list): New substs. + (wnn-get-environment): Rewrite. + (wnn-create-environment): Rewrite. + + (egg-activate-wnn): Support languages. + + * egg/sj3rpc.el (load-library "egg/sj3"): Don't load it. + + * egg/sj3.el (sj3-support-languages): New const. + (sj3-start-conversion, sj3-fini): Add lang. + (sj3-change-bunsetsu-length): Simplified. + (egg-activate-sj3): Support language. + + * its/hira.el (its/hira): Packagefy. (?) + (its-hira-map): Add language spec. Move here the escape keys + ("Z", "~"). + + * leim-list-egg.el ("chinese-gb-egg-wnn-py", "chinese-gb-egg-wnn-zy", + "chinese-cns-egg-wnn-py", "chinese-cns-egg-wnn-zy", + "korean-egg-wnn"): New input methods. + + * its.el (its-current-language): New Local Variables. + : Change the structure. Add . + (its-get-language): New substitution. + (its-set-indicator): Removed. + (its-get-indicator, its-get-start-state): New implementation. + (its-reset-start-state): Removed. + (its-buffer-ins/del-SYL): Add new properties, its-map and its-lang. + (its-exit-mode-internal): Change for its-map and its-lang. + (its-in-fence-p): New function. + + ("its-keydef.el"): Load it. + + (its-select-map-menu): Removed. + (its-select-map-from-menu): Removed. + (its-select-hiragana, its-select-katakana, its-select-downcase, + its-select-upcase, its-select-zenkaku-downcase, + its-select-zenkaku-upcase, its-select-map, its-zenkaku-escape, + its-hankaku-escape): Removed. + + (define-its-state-machine): Rewrite. + (define-its-compiled-map): New macro. + (its-define-state-machine): Removed. + + (its-forward-SYL): Cleanup. + + (its-beginning-of-input-buffer): Fix. + (its-end-of-input-buffer): Likewise. + + * egg-com.el (egg-fixed-euc, egg-mb-euc): New Local Variables. + (ccl-decode-fixed-euc-kr, ccl-encode-fixed-euc-kr): New CCLs. + (fixed-euc-kr): New coding system. + (comm-format-mb-string, comm-format-u16-string): Support EUC-KR. + (comm-unpack-u16-string, comm-unpack-mb-string): Likewise. + + * egg-cnv.el (egg-get-bunsetsu-info): New function. + (egg-conversion-backend-alist, egg-finalize-backend-alist): + New Variables. + Make egg-conversion-backend buffer local. + (egg-set-current-backend): New function. + (egg-initialize-backend): Call egg-set-current-backend. + (egg-start-conversion): Add new argument LANGUAGE. + (egg-finalize-backend): Finalize for all backend(s). + (egg-set-conversion-backend-internal): New Macro. + (egg-convert-region): Support multiple languages in the region. + (egg-separate-languages, egg-char-to-language, egg-next-part-lang, + egg-next-chinese-lang): New functions. + (egg-insert-bunsetsu-list): Change the meaning of last argument. + (egg-shrink-bunsetsu): Simplified. Just call egg-enlarge-bunsetsu. + (egg-enlarge-bunsetsu): Support shrink. + + (egg-decide-bunsetsu, egg-next-candidate, egg-select-candidate): + Use egg-get-bunsetsu-info. + + (egg-insert-bunsetsu): The property now includes + egg-conversion-backend. + + * egg.el: Don't load its/hira and don't set its-current-map. + + * egg.el (egg-default-language, egg-support-languages): New Variables. + (egg-last-method-name, egg-mode-line-title): New Local Variables. + (egg-set-mode-line-title, egg-check-language): New functions. + (egg-set-support-languages): New function. + (egg-mode): Final processing: call its-exit-mode, call + egg-exit-conversion. + Changing the arguments, remember last input method. + + Bug fix. Don't set its-hira-period and its-hira-comma. + +1998-02-17 KAWABATA, Taichi + + * menudiag.el (menudiag-mode-map): New binds for new commands. + (menudiag-beginning-of-items, menudiag-end-of-items): New commands. + (menudiag-make-menu-formatted-string): Bug fix. Use + menudiag-item-num-to-char. + (menudiag-goto-item): Rewrite. Better user interface. + (menudiag-char-to-item-num, menudiag-item-num-to-char): New + functions. + +1998-02-07 MORIOKA Tomohiko + + * leim-list-egg.el: Delete autoload setting for `egg-mode'. + Delete input method registration for "japanese-egg". + + * egg.el: Comment out setting for Wnn. + + * leim-list-egg.el: Add autoload setting for + `egg-activate-{wnn|sj3}'. + + * egg/sj3.el (egg-activate-sj3): Add DOC-string. + + * egg/sj3.el (egg-activate-sj3): New function. + Require egg. + Load egg/sj3rpc.el. + + * egg/wnn.el (egg-activate-wnn): New function. + Require egg. + Load egg/wnnrpc.el. + +1998-02-07 MORIOKA Tomohiko + + * leim-list-egg.el (japanese-egg-wnn): New input method. + (japanese-egg-sj3): New input method. + +1997-11-20 MORIOKA Tomohiko + + * leim-list-egg.el: Rename `egg-ja' -> `japanese-egg'. + +1997-11-20 MORIOKA Tomohiko + + * egg/wnn.el (wnn): New group. + (wnn-server): Use `defcustom'. + (wnn-usr-dic-dir): Use `defcustom'. + + * egg.el (egg): New group. + +1997-11-20 MORIOKA Tomohiko + + * menudiag.el (menudiag-mode-map): Swap binding for left and + right. + + * egg.el (egg-toroku-region): `wnn-get-environment' requires + dictionary-specification. + + * leim-list-egg.el: add autoload setting for egg-mode. + +1997-11-03 KATAYAMA Yoshio + + * euc-cn.el: New file. Original name was yincoding.el. + Adopted by NIIBE Yutaka . + +1997-11-03 NIIBE Yutaka + + * its.el (its-start): Add INVISIBLE property if ITS-FENCE-FACE. + * egg-cnv.el (egg-decide-before-point): Ditto. + Based on patch by Kenichi HANDA . + + Once, I thought that we need many environments which correspond to + outstanding CONVERSION buffre. However, I've learned that WNN4 + protocol is completely independent. It's no use to maintain each + environment. Share the one environment. + * egg/wnn.el (wnn-environments): Removed. + (wnn-environment): New variable. + (wnn-comm-sentinel): Follow the change. Let users know the close. + (wnn-fini): Likewise. + + : Remove the member . + (wnnenv-create): Follow the structure change. + (wnn-end-conversion): Likewise. + (wnnenv-get-in-use-flag, wnnenv-set-in-use-flag): Removed. + (wnn-find-env-not-in-use): Removed. + (wnn-get-environment): Use wnn-environment instead of wnn-environments. + Take one argument. + + * egg-cnv.el (egg-decide-before-point): Signal error on first SYL. + Reported by KATAYAMA Yoshio . Changes of 1997-09-07 + was not enough. + Set-marker M to NIL after PUT-TEXT-PROPERTY. + + Because the name of identifier begins egg-*, change the file names. + * tamago: Rename from tamago. + * egg.el, egg-mlh.el, egg-com.el, egg-cnv.el: Rename from tamago-*.el + * Makefile: Follow the changes. + +1997-10-05 NIIBE Yutaka + + * tamago/wnn.el (wnn-uniq-candidates): Add new argument BUNSETSU. + Call WNN-BUNSETSU-SET-ZENKOUHO-POS, WNN-BUNSETSU-SET-ZENKOUHO in + this function. Handle the case where BUNSETSU is not the first + element of BUNSETSU-LIST. + (wnn-list-candidates): Use new API of WNN-UNIQ-CANDIDATES. + + * tamago-cnv.el (egg-next-candidate): Handle the case where + EGG-LIST-CANDIDATES returns non zero value. + +1997-10-04 NIIBE Yutaka + + * Makefile (install): Install to SITEDIR. + +1997-09-26 NIIBE Yutaka + + * its/hira.el (its-hira-enable-zenkaku-alphabet): New variable. + (its-hira-map): Use it. + +1997-09-19 NIIBE Yutaka + + Arrange for LEIM. Use tamago/ subdirectory. + * tamago/: Rename from tamago-lib. + +1997-09-18 NIIBE Yutaka + + * tamago-cnv.el (egg-select-candidate): menu-select --> + menudiag-select. + * tamago.el (egg-toroku-region, egg-hinshi-select): Likewise. + + * tamago-cnv.el (egg-exit-conversion): Run hook of + input-method-after-insert-chunk-hook. + * its.el (its-exit-mode-internal): Ditto. + + * tamago-mlh.el (mlh-comma-period-style): Deleted. + + * its/, tamago-lib/: New directory. + * its/: Move its-*.el files here. + * tamago-lib/: Move sj3.el, sj3rpc.el, wnn.el and wnnrpc.el here. + + * tamago-com.el: Rename from comm.el. + * tamago-mlh.el: Rename from mlh.el. + * tamago-cnv.el: Rename from convert.el. + + * menudiag.el: Rename from menu.el. + (Throughout): Rename menu-* to menudiag-*. + +1997-09-07 NIIBE Yutaka + + * egg.el (egg-insert-after-hook, egg-exit-hook): Removed. + (egg-sai-henkan-start, egg-sai-henkan-end, egg-old-bunsetu-suu): + Removed. + + * wnn.el (WNN-const): New macro. + (wnn-start-conversion, wnn-open-dictionary, wnn-open-frequency, + wnn-set-dictionary-sub, wnn-update-frequency): Use it. + + * wnnrpc.el (wnn-const): New macro. + Throughout: Use wnn-const. + + * convert.el (egg-decide-before-point): Bug fix. Handle the case + where all bunsetsu are decided. + Reported by KATAYAMA Yoshio . + + * convert.el (egg-exit-conversion): Call egg-end-conversion at end. + (egg-decide-before-point): Ditto. + + * wnn.el (wnn-environments): Change the structure of enviromnents. + (wnn-fini): Handle errors. + (wnn-open): Set sentinel. Delete buffer on failure. + (wnn-comm-sentinel): New function. + (wnn-find-env-not-in-use): Return nil when not found. + + (wnn-create-environment): Take username as argument. + (wnn-get-environment): Follow the change. + + (wnnenv-create): Remove useless serial no. + (wnnenv-get-in-use-flag, wnnenv-set-in-use-flag): Follow the change. + (wnnenv-get-daibunsetsu-info, wnnenv-set-daibunsetsu-info): Likewise. + (wnn-create-environment, wnn-get-environment): Likewise. + +1997-09-04 NIIBE Yutaka + + * its.el (its-state-machine-keyseq): Bug fix. Handle VSYL. + + * sj3.el, sj3rpc.el: New files. + + * comm.el (comm-call-with-proc, comm-call-with-proc-1): New macros. + * wnnrpc.el (wnnrpc-call-with-proc, wnnrpc-call-with-proc-1): Deleted. + Throughout: Use comm-call-with-proc and comm-call-with-proc-1. + +1997-09-03 NIIBE Yutaka + + * wnnrpc.el (wnnrpc-call-with-proc-1): Bug fix. let --> progn. + + * convert.el (egg-conversion-backend): Initail value is NIL. + + * wnn.el (wnn-conversion-backend): New constant. + + * comm.el (comm-format,comm-unpack): Support multibyte string. + (comm-format-mb-string): New substitution. + (comm-unpack-mb-string): New substitution. + + * wnn.el (wnn-fini): Handle the case where wnn-environments is nil. + Reported by Hisashi Miyashita . + +1997-09-03 Hiroshi Ogata + + * mlh.el (mlh-zenkaku): Use new API of Emacs-20, + japanese-zenkaku-region. + +1997-09-02 NIIBE Yutaka + + * egg.el (egg-toroku-region): New function. + + * wnn.el (wnn-list-dictionaries): New function. + (wnnenv-get-proc): New function. + + * wnnrpc.el (wnndic-get-id, wnndic-get-comment, wnndic-get-dictname): + New substitution. + (wnnrpc-get-writable-dictionary-id-list): Rename from + wnnrpc-get-writable-dictionary-list. + +1997-09-01 NIIBE Yutaka + + * convert.el (egg-decide-bunsetsu): New function. + (egg-decide-before-point): New command. + (egg-exit-conversion): Use egg-decide-bunsetsu. + + * its.el (its-start): Divide the fence buffer into two parts and + make them intangible, so that point goes appropriate position. + (its-put-cursor): The cursor belongs to part-2. + (its-buffer-ins/del-SYL): The new SYL belongs to part-1. + (its-exit-mode-internal): Remove the property on exit. + (its-beginning-of-input-buffer): Make SYLs have property of "part 2". + (its-backward-SYL): Likewise. + (its-forward-SYL): Make SYLs have property of "part 1". + (its-end-of-input-buffer): Likewise. + + (its-input-end): Delete useless argument. + (its-beginning-of-input-buffer, its-exit-mode, + its-exit-mode-off-input-method, its-kick-convert-region, + its-end-of-input-buffer, its-backward-SYL, its-forward-SYL, + its-delete-SYL): Follow the change. + +1997-08-31 NIIBE Yutaka + + For egg-mode, don't use minor mode, override local map instead. + For its-mode and egg-conversion-mode, don't use minor mode, + instead use local-map of text property. + + Although overriding local map is not good, using local-map of + property is natural thing. Besides, point-left/point-entered + don't work as I expected (yet). + + * egg.el (egg-mode: variable): Removed. + * egg.el (egg-modefull-map, egg-modeless-map): Make them functions. + Generate overriding local map. + * egg.el (egg-mode): use overriding local map. + + * its.el, convert.el: Undo changes of 1997-08-28 for minor mode + and local map of text properties. + + * its.el (its-exit-mode-off-input-method): New function. + +1997-08-29 NIIBE Yutaka + + Let Undo work correctly. + * its.el (its-self-insert-char): Delete/Insert cursor. + + * its.el (its-put-cursor): Remove useless first argument. + (its-start, its-beginning-of-input-buffer, its-end-of-input-buffer, + its-backward-SYL, its-forward-SYL, its-delete-SYL, its-delete-SYL, + its-delete-backward-SYL-internal, its-delete-backward-within-SYL): + Follow the change. + +1997-08-28 KATAYAMA Yoshio + + * its-erpin.el: New file. + * its-pinyin.el: New file. + * its-zhuyin.el: New file. + +1997-08-28 NIIBE Yutaka + + * its.el (its-exit-mode-no-egg): Removed. + (its-exit-mode-internal): Remove first argument. + (its-kick-convert-region, its-delete-SYL, + its-delete-backward-SYL-internal, its-delete-backward-within-SYL): + Follow the change. + + Don't use local map of text properties, instead use minor mode. + * convert.el (egg-conversion-mode): New minor mode. + (egg-conversion-left, egg-conversion-enter): New functions. + (egg-insert-bunsetsu): remove local-map, add point-entered and + point-left properties. + (egg-exit-conversion): Likewise. + (egg-exit-conversion): Exit minor mode. + + * its.el (its-put-cursor): remove local-map, add point-entered and + point-left properties. + (its-enter, its-left): New functions. + (its-mode): New variable. New minor mode. + +1997-08-27 NIIBE Yutaka + + * convert.el (egg-exit-conversion-no-egg): Removed. + (egg-exit-conversion): No argument, no egg-mode. + + * convert.el (egg-convert-region): No egg-flag. + * its.el (its-exit-mode-internal): Follow it. + * mlh.el (mlh-space-bar-backward-henkan): Ditto. + +1997-08-26 NIIBE Yutaka + + * wnn.el (wnn-change-bunsetsu-length): Don't use magic #3. + + * convert.el (egg-insert-bunsetsu-list): Add optional argument + CONTIN. + +1997-08-25 NIIBE Yutaka + + * convert.el (egg-insert-bunsetsu): Include seperator. Add + intangible property to bunsetsu. + (egg-insert-bunsetsu-list): Follow the change. + (egg-backward-bunsetsu, egg-forward-bunsetsu, + egg-select-candidate, egg-next-candidate, + egg-shrink-bunsetsu, egg-enlarge-bunsetsu, + egg-exit-conversion): Ditto. + + * mlh.el (mlh-space-bar-backward-henkan): Call egg-convert-region + with last argument t. Turn of egg-mode. + +1997-08-24 NIIBE Yutaka + + * its.el (its-exit-mode-internal): Inactivate input method. + + * wnn.el (wnn-end-conversion): Change the interface. + (wnn-update-frequency): Follow the change. + * convert.el (egg-exit-conversion): Follow the change. + + * wnn.el (wnn-start-conversion): Change the return value interface. + * convert.el (egg-convert-region): Follow the change. + + * wnn.el (wnnenv-get-bunsetsu-pos, wnnenv-set-bunsetsu-pos): Removed. + (wnn-get-bunsetsu-source-afterwards): Removed. + (wnn-get-number-of-bunsetsu, wnn-get-bunsetsu-info): Removed. + (wnnenv-get-bunsetsu-list, wnnenv-set-bunsetsu-list): Removed. + (wnn-start-conversion): Don't call wnnenv-set-bunsetsu-list. + (wnn-end-conversion): Ditto. + +1997-08-23 NIIBE Yutaka + + * convert.el (egg-change-bunsetsu-length): Change the interface. + (egg-shrink-bunsetsu,egg-enlarge-bunsetsu): Follow it. + + (egg-source-maxlen-from-here): Removed. + (egg-get-previous-bunsetsu): New function. + (egg-select-candidate, egg-shrink-bunsetsu, egg-enlarge-bunsetsu, + egg-next-candidate): Use egg-get-previous-bunsetsu. + +1997-08-20 NIIBE Yutaka + + * egg.el (minor-mode-alist): Don't show " EGG" in mode line. + (egg-mode): Use input method indicator instead. + +1997-07-20 NIIBE Yutaka + + * convert.el (egg-next-candidate): Rename from egg-next-conversion. + (egg-previous-candidate): Rename from egg-previous-conversion. + (egg-select-candidate): Follow the change of new interface. + (egg-source-maxlen-from-here): Likewise. + +1997-07-19 NIIBE Yutaka + + * wnn.el (wnn-start-conversion): Change the interface. Return ENV + and the list of bunsetsu. Fix the documentation string too. + * convert.el (egg-convert-region): Follow the change. + (egg-insert-converted-result): Change the argument. + (egg-insert-bunsetsu-list): Rename from egg-insert-converted-result. + (egg-insert-bunsetsu): New function. + (egg-get-number-of-bunsetsu,egg-get-bunsetsu-info): Removed. + (egg-backward-bunsetsu): Don't use bunsetsu-pos. + + * wnn.el (wnn-get-bunsetsu-converted): Change the interface. Take + BUNSETSU as the argument instead of ENV and POS. + * convert.el (egg-get-bunsetsu-converted): Follow the change. + + * wnn.el (wnn-bunsetsu-create): Take ENV as the first argument. + (wnn-list-candidates): Dont take ENV. + (wnn-bunsetsu-get-env): New substitution. + + * wnnrpc.el (wnnrpc-receive-sho-bunsetsu-list-sub): Take the argument + for ENV, and use it for the argument of wnn-bunsetsu-create. + (wnnrpc-receive-sho-bunsetsu-list): Take ENV as the first argument. + (wnnrpc-renbunsetsu-conversion): Follow the change. + +1997-07-17 NIIBE Yutaka + + * convert.el (egg-decide-candidate): Change the interface. + Take the argument bunsetsu-info instead of conversion-engine. + + * wnn.el (wnn-get-candidate): Deleted. + + * convert.el (egg-get-all-candidates): Change the interface. + Take an argument bunsetsu-info instead of conversion-engine. + (egg-select-candidate): Follow the change. + + * convert.el (egg-set-bunsetsu-pos,egg-get-bunsetsu-pos): Deleted. + (egg-list-candidates,egg-get-current-candidate-number): New stub. + * wnn.el (wnn-bunsetsu-create): Add new member zenkouho-pos. + (wnn-bunsetsu-get-zenkouho-pos,wnn-bunsetsu-set-zenkouho-pos): New + functions. + (wnn-list-candidates,wnn-get-current-candidate-number): New functions. + (wnn-set-bunsetsu-pos,wnn-get-bunsetsu-pos): Deleted. + + * convert.el (egg-get-number-of-candidates): Change the interface. + Take an argument bunsetsu-info instead of conversion-engine. + (egg-next-conversion,egg-select-candidate): Follow the change. + * wnn.el (wnn-get-number-of-candidates): Follow the change. + + * wnn.el (wnn-get-bunsetsu-source-afterwards): New function. + (wnn-change-bunsetsu-length): Use it. + + * convert.el (egg-get-bunsetsu-source): Change the interface. + Take an argument bunsetsu-info instead of conversion-engine. + (egg-enlarge-bunsetsu,egg-shrink-bunsetsu,egg-source-maxlen-from-here): + Follow the change. + * wnn.el (wnn-get-bunsetsu-source): Follow the change. + + Put bunsetsu information on text property. + * wnn.el (wnn-get-bunsetsu-info): New function. + + * convert.el (egg-insert-converted-result): Put it on text property. + (egg-conversion-backend): Add new interface + wnn-get-bunsetsu-info. + (egg-get-bunsetsu-info): New stub. + +1997-07-17 KATAYAMA Yoshio + + * its.el (its-state-machine-keyseq, its-state-machine): Handle + end-of-input correctly when going backward. + +1997-07-16 NIIBE Yutaka + + * wnn.el (wnn-create-directory): Bug fix. Really make directory. + +1997-07-15 NIIBE Yutaka + + * its-hangul.el (its-define-hangul): Use its-defrule-otherwise. + +1997-07-15 KATAYAMA Yoshio + + * its-hangul.el: Updated. + +1997-06-19 NIIBE Yutaka + + * its-hira.el: its-hira-hankaku-escape --> its-hankaku-escape. + its-hira-zenkaku-escape --> its-zenkaku-escape. + +1997-06-14 NIIBE Yutaka + + * its.el: Change the data structure of so + that it can encourage sharing same structure and it can use same + structure of SYL. + (its-ins/del-SYL-batch): Follow the change of data structure. + (its-define-otherwise): Change the argument. + (its-defrule-otherwise): New function. + (its-eob-keyexpr, its-eob-back, its-make-class+back, + its-make-otherwise): New substitutions. + +1997-06-13 NIIBE Yutaka + + * its-kana.el: New file. Taken from its/kanainput.el of Mule-2.3. + + * its-hira.el: Use `define-its-state-machine'. + + * its.el (its-zenkaku-escape, its-hankaku-escape): Make them + defconst. + (define-its-state-machine, define-its-state-machine-append): New + macro. + +1997-06-13 NIIBE Yutaka + + * its-hira.el ("n'"): Added. + +1997-06-12 NIIBE Yutaka + + its-zenkaku-escape and its-hankaku-escape are also used in hangul. + * its.el (its-zenkaku-escape, its-hankaku-escape): Moved to here + and rename them. + * its-hira.el (its-hira-hankaku-escape, its-hira-zenkaku-escape): + Removed. + + * its.el (its-read-current-its-string): Removed. There's the + function `read-multilingual-string' already. + +1997-06-12 KATAYAMA Yoshio + + * its-hangul.el: New file. + +1997-06-10 NIIBE Yutaka + + Miscellaneous cosmetic changes. + * comm.el: New file. Move communication related funcitons from + wnnrpc.el. + (comm-format-u32c, and others): Rename from wnnrpc-*. + * wnnrpc.el (Throughout): Follow the rename. + + * wnn.el (wnnenv-get-in-use-flag): Rename from wnn-e-get-in-use. + (wnnenv-set-in-use-flag): Rename from wnn-e-set-in-use. + (Others): Rename from wnn-e-*. + (wnn-bunsetsu-*): Rename from wnnrpc-b-*, and moved from wnnrpc.el. + + * convert.el (egg-exit-conversion): Call egg-do-auto-fill. + + * its.el (its-translate-region): Bug fix. End of input. + (its-state-machine): Bug fix. Generate error if + its-barf-on-invalid-keyseq. + (its-exit-mode-internal): Call egg-do-auto-fill. + + * wnnrpc.el (ccl-decode-fixed-euc-jp): Bug fix for ASCII. + + * mlh.el (mlh-space-bar-backward-henkan): Call egg-do-auto-fill. + + * egg.el: Comment out definition of C-\ in global-map. + +1997-06-09 NIIBE Yutaka + + * its.el (its-kick-convert-region): Rename from its-convert-region. + (its-mode-map): Follow the change. + + (its-make-next-state): Use list instead of cons. + + (its-get-kst/t): Make it substitution. + (its-set-kst, its-get-keyseq, its-set-keyseq, its-kst-p, + its-get-output, its-set-output, its-get-keyseq-syl): Likewise. + (its-new-state, its-new-map, its-get-indicator, its-set-indicator, + its-get-start-state, its-reset-start-state): Likewise. + + (its-get-next-state): Use assq instead of assoc. + + (its-goto-state): Tune up. + +1997-06-08 NIIBE Yutaka + + * mlh.el: Merge mlh-nihongo.el. + * mlh-nihongo.el: Removed. + + * its-hira.el: Moved from its/hira.el. Move comments to HISTORY. + (its-hira-enable-double-n, its-hira-period, its-hira-comma, + its-hira-open-bracket, its-hira-close-bracket, + its-hira-horizontal): New variables. + Use the variables to define the state-machine. + + Implement non-interactive translation in ITS. + * its.el (its-translate-region): New function. + (its-latest-SYL): New Variable. + (its-state-machine-keyseq): Use it. + (its-update-latest-SYL): New function. + (its-buffer-ins/del-SYL): Use it. + (its-translation-result): New variable. + (its-ins/del-SYL-batch): New function. + (its-enable-double-n-syntax, its-use-kuten-for-period, + its-use-touten-for-comma, its-zenkaku-escape, its-hankaku-escape): + Removed. + + Use ITS, delete mlh's own implementation of automata. + * mlh.el (mlh-start-state, mlh-set-of-chars, mlh-start-state-sym, + mlh-set-of-chars-sym, mlh-define-automata, mlh-end-of-definition, + mlh-defrule, mlh-next-state, mlh-roma-kana-backward): Removed. + (mlh-cause-error-when-unknown-romaji-sequence): Removed. + (mlh-atoi): Removed. + (mlh-white-space, mlh-zenkaku-white): Use string-to-int. + * mlh-nihongo.el (mlh-hira-start-state, mlh-hira-chars, and all + rules of definition which defines the automaton): Removed. + (mlh-kanji-with-henkan-region-function): Use its-translate-region. + (mlh-hiragana, mlh-katakana): Likewise. + + Fix of CCL. + * wnnrpc.el (ccl-decode-fixed-euc-jp): Bug fix for jisx0212. + Add missing parens. + + Speed up of unpacking. + * wnnrpc.el (wnnrpc-following-char-or-wait): Tune up. + (wnnrpc-following+forward-char): New function. + (wnnrpc-unpack-u32c, wnnrpc-unpack-u32, wnnrpc-unpack-u16, + wnnrpc-unpack-u8): Use it. + (wnnrpc-accept-process-output): New function. + (wnnrpc-unpack-u16-string, wnnrpc-unpack-u8-string, + wnnrpc-unpack-bytes): Use it. Use search-forward. + (wnnrpc-unpack-u16-string): Use decode-coding-region. + +1997-06-07 NIIBE Yutaka + + * wnn.el (wnn-get-all-candidates): New function. + (wnn-set-bunsetsu-pos): Return 0 (instead of -1). + + * convert.el (egg-get-candidate): Removed. + (egg-get-all-candidates): New entry function. + (egg-conversion-backend): Entry for egg-get-all-candidates. + (egg-select-candidate): New function. + (egg-conversion-map): Bind "\M-s" and egg-select-candidate. + +1997-06-05 NIIBE Yutaka + + * bushu.el: Renamed from busyu.el. + (bushu-break-string, etc): Renamed from busyu*. + + * menu.el: Completely rewritten. + +1997-06-03 NIIBE Yutaka + + * its.el (its-reset-start-state): Bug fix. Delete a CDR. + + Implement "class of key" transition. + Change the structure of , the last member is + instead of . + * its.el (its-kst-p): Rename from its-ksa-p. + (its-get-next-state): Follow the change of the data structure. + (its-state-machine): Likewise. + (its-make-next-state): Likewise. + (its-set-kst): New function. + (its-get-otherwise): New function. + (its-otherwise-match): New function. + (its-define-otherwise-terminate-here): Removed. + (its-define-otherwise): New function. + (its-defrule*): Use its-define-otherwise. + + * its/hira.el (n): Use its-define-otherwise. + +1997-06-02 NIIBE Yutaka + + * wnnrpc.el (wnnrpc-receive-sho-bunsetsu-list-sub, + wnnrpc-receive-sho-bunsetsu-list-sub-2): Splited from + wnnrpc-receive-sho-bunsetsu-list. + (wnnrpc-receive-dai-bunsetsu-list): New function. + (wnnrpc-daibunsetsu-conversion, wnnrpc-get-daibunsetsu-candidate): + New function. + +1997-06-01 NIIBE Yutaka + + * wnnrpc.el (ccl-decode-fixed-euc-jp): Clean it up. + (wnnrpc-file-attribute): Rename from wnnrpc-stat-file. + (wnnrpc-get-dictionary-list-with-environment): Rename from + wnnrpc-get-dictionary-list-with-environment. + + Implement RPC more. + * wnnrpc.el (wnnrpc-who, wnnrpc-get-env-list, wnnrpc-kill, + wnnrpc-delete-dictionary, wnnrpc-set-flag-on-dictionary, + wnnrpc-get-dictionary-list, wnnrpc-delete-word, + wnnrpc-receive-word, wnnrpc-search-word, + wnnrpc-search-word-in-dictionary, wnnrpc-get-word-info, + wnnrpc-set-comment-on-word, wnnrpc-get-dictionary-info, + wnnrpc-set-file-comment, wnnrpc-hinshi-name, + wnnrpc-set-file-password, wnnrpc-set-hinshi-table): New functions. + +1997-05-31 NIIBE Yutaka + + * wnnrpc.el (wnnrpc-format-u32c, wnnrpc-unpack-u32c): New + substitutions. Support 32-bit number represented in cons cell of + a pair of 16-bit integer. + (wnnrpc-format, wnnrpc-unpack): Handle u32c (U). + + (wnnrpc-format-bytes, wnnrpc-unpack-bytes): New substitutions. + Support byte stream end with 255(-1). + (wnnrpc-format, wnnrpc-unpack): Handle bytes (B). + + (wnnrpc-local-file-loaded): New function. + (wnnrpc-call-with-proc-1): New macro. Assume the buffer is the one + of process. + +1997-05-29 NIIBE Yutaka + + * wnnrpc.el (wnnrpc-get-conversion-parameters, wnnrpc-file-loaded, + wnnrpc-write-file, wnnrpc-get-fuzokugo-file, wnnrpc-get-file-list, + wnnrpc-get-file-list-with-env, wnnrpc-stat-file, + wnnrpc-get-file-info): New functions. + wnnrpc-receive-file-list): New subst. + +1997-05-29 Kenichi Handa + + * wnnrpc.el (ccl-decode-fixed-euc-jp): Tune it up. + +1997-05-29 Hisashi Miyashita + + * wnnrpc.el (fixed-euc-jp, ccl-decode-fixed-euc-jp, + ccl-encode-fixed-euc): New private coding system. Encode/decode + CCL for it. + +1997-05-27 NIIBE Yutaka + + * wnnrpc.el (wnnrpc-tanbunsetsu-conversion): Change the argument. + (wnnrpc-get-bunsetsu-candidates): Likewise. + (wnnrpc-renbunsetsu-conversion): Likewise. + + * wnn.el (wnn-change-bunsetsu-length): Follow the change. + (wnn-set-bunsetsu-pos): Likewise. + (wnn-change-bunsetsu-length, wnn-start-conversion): Likewise. + +1997-05-25 NIIBE Yutaka + + * wnnrpc.el (wnnrpc-add-word, wnnrpc-get-dictionary-list, + wnnrpc-receive-dictionary-list, wnnrpc-get-writable-dictionary-list, + wnnrpc-get-hinshi-list, wnnrpc-hinshi-number): New functions. + (wnnrpc-unpack-u16-string): Bug fix for the case of ASCII string. + + * wnn.el (wnn-dictionary-specification): Add dictionaries of + gerodic and ones of WNN consortium. + + Implement a false path. + * wnnrpc.el (wnnrpc-renbunsetsu-conversion): Generate an error on + failure. + (wnnrpc-get-bunsetsu-candidates): Ditto. + (wnnrpc-tanbunsetsu-conversion): Ditto. + + Implement a false path. Error recovery. + * wnn.el (wnn-create-directory, wnn-open-dictionary, + wnn-open-frequency, wnn-query-del/create-frequency): New function. + (wnn-set-dictionary-sub): New function. + +1997-05-24 NIIBE Yutaka + + * wnnrpc.el (wnnrpc-version, wnnrpc-access, wnnrpc-mkdir, + wnnrpc-create-dictionary, wnnrpc-create-frequency, + wnnrpc-discard-file, wnnrpc-remove-file): New functions. + (wnnrpc-test-result-and-get-error): New subst. + + Implement a false path from wnnrpc-set-fuzokugo-file. + * wnnrpc.el (wnnrpc-set-fuzokugo-file): Return negate-encoded + error code on failure. + * wnn.el (wnn-create-environment): Generate an error message. + + Implement a false path from wnnrpc-open-file. + * wnnrpc.el (wnnrpc-open-file): Change the interface. Return + negate-encoded error code on failure. + * wnn.el (wnn-open-file): New function. + (wnn-create-environment): Handle return value, and generate + an error message for wnnrpc-set-fuzokugo-file on failure. + (wnn-set-dictionary): Handle return value. + +1997-05-17 NIIBE Yutaka + + * wnnrpc.el (wnnrpc-error-message): Error strings taken from + Wnn-4.2 distribution. + (wnnrpc-errono): Removed. + + Implement a false path from wnnrpc-open. + * wnnrpc.el (wnnrpc-open): Change the interface. Return NIL on + success, error code on failure. + * wnn.el (wnn-open): Delete process and buffer. + Generate an error on failure. + (wnn-get-environment): Follow the change (none). + (wnn-start-conversion): Follow the change (none). + * convert.el (egg-convert-region): Follow the change. Call + delete-region after egg-start-conversion. + + Implement a false path from wnnrpc-connect. + * wnnrpc.el (wnnrpc-connect): Change the interface. Return + negate-encoded error code on failure. + * wnn.el (wnn-create-environment): Generate an error on failure. + (wnn-get-environment): Follow the change. On failure, don't + register the environment to wnn-environments. + +1997-05-16 NIIBE Yutaka + + Dynamically allocate environment arbitrarily. + * wnn.el (wnn-create-environment): Change the structure of ENV. + (wnn-e-get-in-use, wnn-e-set-in-use): New subst. + (wnn-end-conversion): Call wnn-e-set-in-use. + (wnn-get-environment, wnn-find-env-not-in-use): New function. + (wnn-start-conversion): Call wnn-get-environment. + + * wnn.el (wnn-fini): Implemented. + +1997-05-15 NIIBE Yutaka + + * convert.el (egg-start-conversion): Change the interface. + (egg-convert-region): Follow the change. + (egg-open-if-not): Removed. + * wnn.el (wnn-start-conversion): Follow the change. + + * wnn.el (wnn-environment-list): Removed. + (wnn-environment-serial): Removed. + (wnn-connect-and-init): Removed. + (wnn-environments): New variable which holds all environments. + +1997-05-15 NIIBE Yutaka + + * wnn.el (wnn-change-bunsetsu-length): Bug fix. Last argument to + wnnrpc-b-set-freq-down is list of bunsetsu. + + * mlh.el (mlh-do-spacing): Emacs 20 related changes. + Use category-set-mnemonics, and char-category-set. + According to suggestion by Kenichi Handa . + +1997-05-15 MORIOKA Tomohiko + + * wnn.el (wnn-usr-dic-dir): New variable. + (wnn-filename): Use wnn-usr-dic-dir. + + * its.el (its-defrule): New argument `enable-overwrite'. + +1997-05-14 NIIBE Yutaka + + * convert.el (egg-exit-conversion-unread-char): Use newer variable + unread-command-events, as unread-command-char is obsolete. + (egg-shrink-bunsetsu, egg-source-maxlen-from-here, + egg-enlarge-bunsetsu, egg-next-conversion, egg-exit-conversion, + egg-exit-conversion, egg-insert-converted-result): New property + EGG-CONVERSION-ENGINE, which specifis backend. + + (egg-start-conversion, egg-get-number-of-bunsetsu, + egg-get-bunsetsu-converted, egg-set-bunsetsu-pos, + egg-get-bunsetsu-pos, egg-get-number-of-candidates, + egg-get-candidate, egg-decide-candidate, + egg-change-bunsetsu-length, egg-get-bunsetsu-source, + egg-end-conversion): Change the interface, new argument c. + * wnn.el (wnn-start-conversion, wnn-get-number-of-bunsetsu, + wnn-get-bunsetsu-converted, wnn-set-bunsetsu-pos, + wnn-get-bunsetsu-pos, wnn-get-number-of-candidates, + wnn-get-candidate, wnn-decide-candidate, + wnn-change-bunsetsu-length, wnn-get-bunsetsu-source, + wnn-end-conversion): Likewise. + + * convert.el (egg-open-if-not): Change the interface. Return + conversion backend. + + * wnnrpc.el (wnnrpc-following-char-or-wait, wnnrpc-unpack-u32, + wnnrpc-unpack-u16, wnnrpc-unpack-u8, wnnrpc-unpack-u16-string, + wnnrpc-unpack-u8-string): Change the interface to avoid + compilation warnings. + (wnnrpc-unpack): Use new interface. + + * wnn.el (wnn-open): Change the name of WNN buffer as debug has + been done. + +1997-05-11 NIIBE Yutaka + + * wnnrpc.el (wnnrpc-following-char-or-wait): Rename from + wnn-following-char-or-wait. + (wnnrpc-following-char-or-wait): Declare with DEFUN instead of + DEFSUBST. + +1997-05-10 NIIBE Yutaka + + * Throughout: Use JUNET coding system for file format. + + * mlh.el: Move some comments to HISTORY. + (mlh-version): Removed. + Remove all autoload entries. + (henkan-region-function): Removed. + (member): Don't need any more. + + * mlh-nihongo.el: Renamed from nihongo.el. + + * mlh.el (mlh-space-bar-backward-henkan): call egg-convert-region + directly. + (mlh-space-bar-backward-henkan): Fix for Emacs 20. + Don't call egg:do-auto-fill. + (mlh-backward-henkan): Use set-marker-insertion-type. + (mlh-do-spacing): Char-category. + + * mlh.el, nihongo.el: Taken from mlh-1.002 distribution. + +1997-05-07 NIIBE Yutaka + + * convert.el (egg-update-frequency): Removed. + (egg-conversion-backend): Remove entry for update-frequency. + + * wnn.el (wnn-dictionary-specification): Change parameters + according to suggestion by Tomoko Yoshida in mule-jp@etl.go.jp. + Original had been taken from wnn-4.2. + +1997-05-06 NIIBE Yutaka + + * convert.el (egg-next-conversion): Bug fix. It's max+ instead of n. + +1997-05-05 NIIBE Yutaka + + * wnnfns.c (Fwnn_get_bunsetsu_converted): Rename from + get-converted-bunsetsu. + (Fwnn_get_bunsetsu_source): Ditto. + * convert.el (egg-get-bunsetsu-converted): Ditto. + (egg-get-bunsetsu-source): Ditto. + + * wnn.el (wnn-create-environment): New file which mimics API of + wnnfns.c. + +1997-04-29 NIIBE Yutaka + + * wnnrpc.el: New file which implements Remote Procedure Calls of WNN. + +1997-04-16 NIIBE Yutaka + + * its/kanainput.el (normal-pair): Use its-defrule*. + + * its.el (its-defrule*): Rewritten. + + * its/hira.el ("n"): Alternative implementation using 'otherwise'. + + * its.el (its-processing-map): Removed. + (its-register-map): Rename from its-set-map. + (its-register-map): Remove first argumet NAME. + (its-defrule): Remove last optional argument END. + (its-define-otherwise-terminate-here): New function. + (its-goto-state): New function. + (its-defrule, its-defoutput): Use its-goto-state. + +1997-04-12 NIIBE Yutaka + + * its.el: Enhance meaning of ITS state machine. Now, + includes representation of "ANY of key stroke" (-2). + (its-defrule): New feature end=='otherwise. + (its-defrule*): New function. + (its-state-machine): Implement otherwise-terminate-before-this-key. + + * its/kanainput.el (its-k-zenkaku-escape, its-k-hankaku-escape, + its-k-symbols-escape): Add prefix its-. Let them defconst. + "W": Move the definition beginning to avoid error. + +1997-03-26 NIIBE Yutaka + + * convert.el (egg-next-conversion): -1 goes to end of bunsetsu. + +1997-03-25 NIIBE Yutaka + + * egg.el (egg-mode-on, egg-input-mode, egg-in-fence-mode): Deleted. + (egg-fence-face-on, egg-fence-face-off): Deleted. + (egg-region-start, egg-region-end): Deleted. + +1997-03-24 NIIBE Yutaka + + * its/hira.el ("n"): Add "z" and "?" for prefetch char of "n". + + Implement conversion mode. + * convert.el: New file. + +1997-03-23 NIIBE Yutaka + + * its.el (its-mode-map): As "\C-g" is used in global-map, use + "\C-]" instead (for its-cancel-input). + +1997-03-22 NIIBE Yutaka + + Introduce new scheme to specify server. + * wnnfns.c (Qjserver, Qcserver, Qtserver, Qkserver): Removed. + (Vwnn_server_type): Integer variable. + (wnn_get_server_type): Renamed from wnn_check_server_type. + (charset_wnn_server_type): Renamed from lc_wnn_server_type. + + Introduce new scheme to specify uniqueness. + * wnnfns.c (Qwnn_no_uniq, Qwnn_uniq, Qwnn_uniq_kanji): Removed. + (Vwnn_uniqueness_specifier): Integer variable. Renamed from + wnn_uniq_level. + +1997-03-21 NIIBE Yutaka + + Cosmetic changes. + * wnnfnc.c (Throughout): Change Lisp function name to follow the + format of wnn-VERB-OBJECT. + Use XFASTINT instead of XINT, if appropriate. + + * wnnfns.c (Fwnn_fuzokugo_set): Merged with wnn-set-fuzokugo of + wnn-egg.el. + + * wnn-egg.el (wnn-set-fuzokugo): Deleted. + + * wnnfns.c (Fwnn_dict_add): Merged with wnn-add-dict of wnn-egg.el. + * wnn-egg.el (wnn-add-dict): Deleted. + + * wnn-egg-msg.el (wnn-msg-get): Renamed from egg-msg-get. + (wnn-message-alist): Renamed from egg-message-alist. + Use defconst. + + * wnnfns.c (wnn_check_server_type): Renemed from + check_wnn_server_type. + + * wnn-egg-msg.el (egg-error): Deleted. Not useful enough. + * wnn-egg.el (Throughout): Replace egg-error by error. + + * egg.el (egg-sai-henkan-start, egg-sai-henkan-end, + egg-old-bunsetu-suu): Moved from wnn-egg.el. + + * wnn-egg.el (Throughout): Change variable name and function name. + Added wnn- prefix, egg- prefix. + * wnn-egg.el: Delete historical defaliases. Only support + wnn-set-[cjk]server-hostname. + + * wnn6.el: New file. Discriminate Wnn6 related functions. + * eggrc-wnn6: New file. Discriminate Wnn6 related setting. + + * egg-fence.el: Removed. + +1997-03-20 NIIBE Yutaka + + Distingush continuation of egg-mode and turn off of egg-mode. + * its.el (its-mode-map): Bind "\C-\\" to its-exit-mode-no-egg. + (its-exit-mode-internal): New argument egg-mode-flag. + (its-exit-mode-no-egg): New Function. + + Rethink about keymap. Once, the intention of egg-mode-map has + been to override ALL of the keymap. That's so selfish, and not + friendly to other parts of Emacs. This implementation intend to + be more friendly with other keymaps. + * its.el (its-mode-map): Remove definition of "\C-c" for + its-cancel-input, as C-c has special meaning in Emacs. We should + not re-define it. + Remove definition of "\C-q" for its-select-previous-map. + Remove definition of "\C-_" for egg-jis-code-input. + Remove definition of "\C-w", "\C-@", [?\C-\ ] for + egg-henkan-fence-region. + + Implement START/CURSOR/END scheme. + * its.el (its-input-to-vsyl): New function. + (its-beginning-of-input-buffer): New function. + (its-end-of-input-buffer): New function. + (its-backward-SYL): New function. + (its-forward-SYL): New function. + (its-delete-SYL): New function. + (its-delete-backward-SYL): New function. + (its-delete-backward-SYL-internal): New function. + (its-delete-backward-within-SYL): New function. + (its-delete-by-keystroke): New Variable. + (its-exit-mode): New function. + (its-exit-mode-internal): New function. + + * its.el (its-standard-map-list, its-find, its-next-map, + its-previous-map): Deleted. + (its-get-indicator): Delete duplicated definition. Leave one which + takes argument. + (its-input): Rename from its-input-subsubsub. + + * egg.el (egg-mode-map): Don't include SPACE. + + Introduce CURSOR. + * its.el (its-state-machine): Add new argument EMIT. Return CURSOR. + (its-state-machine-keyseq): Likewise. + (its-input-subsubsub): Return CURSOR. + (its-input-subsub): Deleted. + (its-DSYL-p): Deleted. + (its-buffer-insert-SYL-list): Deleted. + (its-buffer-ins/del-SYL): New function. + (its-input-end): Change the argument to P of point, and return VOID. + + Change structure of . is normal . + (its-new-map): Follow the change of structure. + (its-get-indicator, its-set-indicator, its-reset-start-state): + Likewise. + (its-reset-start-state): Renamed from its-reset-start. + + Don't use , but introduce new scheme of SYL property. + (its-change-t-to-nil, its-nil-index, its-bytes-between, + its-delete-between, its-move-nil--->, its-move-nil-<--, + its-move-nil-<--sub, its-move-nil-to-last, its-move-nil-to-first): + Deleted. + +1997-03-19 NIIBE Yutaka + + * its.el: Change the structure of DSYL. Same as . + (its-input-subsub): Follow the change of structure. + (its-make-DSYL): Deleted. + (its-get-keyseq-cooked): New function. + + Swap the meaning of T/NIL of . + + Delete the structure of . + (its-new-input-buffer): Deleted. + (its-input-subsub): Remove the argument SYLP. + (its-input, its-input-sub, its-init-text-properties): Deleted. + + Introduce START, END and CURSOR. + +1997-03-19 NIIBE Yutaka + + Global-map should be used, for key sequence not defined by + its-mode-map and/or egg-mode-map. Don't mask other maps. + * its.el (its-mode-esc-map): Deleted. + (its-mode-map): Include define-key of the esc-map here. + * egg.el (egg-mode-esc-map): Deleted. + (egg-mode-map): Include define-key of the esc-map here. + +1997-03-18 NIIBE Yutaka + + * its.el (its-input): Rename from its-input-input-buffer. + (its-state-machine): Handle END of input (key == -1). + + ITS minor mode deleted. It's implemented by local-map of text + properties. + (its-mode): Remove the variable. + (its-mode): Remove the function. + + * its.el (): Change the order of list. + (car sylp) is last entry of the list. + (its-input-buffer): Deleted. It's now a member of text + properties. + (): Change the structure. Start state should have "" for keyseq. + (its-get-start-state): Follow chage of the structure. + (its-reset-start, its-set-indicator, its-get-indicator): Likewise. + (its-new-state, its-new-map): Split from its-new-state/map. + (its-make-map): Deleted. + +1997-03-17 NIIBE Yutaka + + * its.el (its-buffer-insert-SYL-list): Use insert-and-inherit to + inherit properties. + (its-fence-overlay): Removed. Don't use overlay, as it has no + information in undo-list. + +1997-03-16 NIIBE Yutaka + + * its/hira.el ("n"): Use new feature END. + ("ppy", "bby", "ddy", "jjy", "zzy", "ggy", "lly", "rry", "hhy", + "cch", "tts", "tty", "ssh", "ssy", "kky"): its-defoutput. + + * its.el (its-defrule): Add argument END. + (its-buffer-delete-SYL): Bug fix. Use length instead of string-width. + +1997-03-15 NIIBE Yutaka + + * its.el (its-input-input-buffer): Implement the case of DSYL. + +1997-03-14 NIIBE Yutaka + + * its.el (its-buffer-delete-SYL): Handle the case of NIL. + + * its/hira.el: Implement "kka" and others. Implemlement "N". + (digit-characters, symbol-characters, downcase-alphabets, + upcase-alphabets): Delete useless defvar-s. + +1997-03-14 NIIBE Yutaka + + * its/hira.el ("roma-kana"): Follow change of implementation of + state machine. + + Correct the abuse of the word "MODE". It seems that it's direct + influence of "mode" in Emacs, but it's not mode at all. + * its.el (its-map-alist): Renamed from its-mode-alist. + (its-get-map): Renamed from its-get-mode-map. + (its-set-map): Renamed from its-set-mode-map. + (its-define-state-machine): Renamed from its-define-mode. + (its-select-map-menu): Renamed from its-select-mode-menu. + (its-select-map-from-menu): Renamed from its-select-mode-from-menu. + (its-standard-map-list): Renamed from its-standard-modes. + (its-next-map): Renamed from its-next-mode. + (its-previous-map): Renamed from its-previous-mode. + (its-select-map): Renamed from its-select-mode. + (its-get-indicator): Renamed from its-get-mode-indicator. + + (its-select-map-from-menu): As it's not mode, don't need offer hooks. + (its-next-map): Likewise. + (its-previous-map): Likewise. + (its-select-map): Likewise. + + Change the implementation of its-mode-alist. Name is in now. + * its.el (its-get-mode-map): Just do assoc. + (its-set-mode-map): Simplified. + + * its.el (its-get-indicator): Renamed from its-map-indicator. + (its-set-indicator): Renamed from its-map-set-indicator. + (its-get-start-state): Renamed from its-map-start. + (its-new-state): Change the argunents. + (its-map-set-start): Removed. + (its-reset-start): New function. + + Remove old implemantation of translator. + * its.el (its-resize, its-maps, its-actions, its-inputs, + its-level, its-maxlevel, its-char-from-buff, its-interactive): + Removed. + (its-make-action, its-reset-maps, its-current-map, + its-previous-map, its-level, its-enter-newlevel, its-reset-input, + its-flush-input-before-point, its-peek-char, its-read-char): + Removed. + (its-push-char, its-ordinal-charp, its-delete-charp): Removed. + (its-translate-region): Removed. + (its-buff-s, its-buff-e): Removed. + (its-state-terminalp): Removed. + + Remove selection of candidates in map, it's questionable to + implement this feature with SYL. Might rethink in future. + (its-make-menu-from-map-result, its-make-alist-from-map-result): + Removed. + (its-make-menu-from-map, its-make-menu-from-map*): Removed. + (its-make-alist-from-map, its-make-alist-from-map*): Removed. + (its-completing-read): Removed. + (its-minibuffer-local-must-match-map, + its-minibuffer-local-completion-map): Removed. + (its-minibuffer-completion-help, car-string-lessp, + its-temp-echo-area-contents): Removed. + + Implement SYL-based state machine. + * its.el (its-input-buffer, its-barf-on-invalid-keyseq): New variables. + (its-new-input-buffer): New function. + (its-self-insert-char): New command. + (its-initial-ISYL, its-make-DSYL, its-make-VSYL, + its-input-input-buffer, its-input-input-buffer-sub, + its-state-machine, its-state-machine-keyseq, + its-buffer-delete-SYL, its-buffer-insert-SYL-list, + its-get-next-state, its-get-ksa/b, its-get-keyseq, its-ksa-p, + its-get-output): New function. + (its-get-KAS): Removed. + (its-get-state, its-get-action, its-set-action): Removed. + (its-make-KAS, its-get-KAS): Removed. + + * its.el (its-defrule-sub): Merged into its-defrule. + +1997-03-13 NIIBE Yutaka + + * its.el: (its-define-mode): Change the arguments. + * its/zhuyin.el ("zhuyin"): Follow the changes of its-define-mode. + * its/zenkaku.el ("zenkaku-downcase"): Likewise. + * its/pinyin.el ("PinYin"): Likewise. + * its/kata.el ("roma-kata"): Likewise. + * its/kanainput.el ("kanainput"): Likewise. + * its/hira.el ("roma-kana"): Likewise. + * its/hankaku.el ("downcase"): Likewise. + * its/hangul.el ("hangul"): Likewise. + * its/han-kata.el ("roma-han-kata"): Likewise. + + * its.el (its-action-output, its-action-next, its-get-next-map, + its-set-next-map): Removed. + (its-make-next-state): New function. + (its-make-state): Removed. + + * its.el (its-defrule-sub): Renamed from `its-defrule**'. + + * wnnfns.h: New file. Macros for WNN6 are defined here. + * wnn6fns.c: New file. Moved from wnnfns.c for WNN6 specific + functions. + +1997-03-12 NIIBE Yutaka + + * wnnfns.c: cosmetic changes (indentation, commenting-out-style, + and compare to Qnil, etc). + Get rid of "register" qualifier. + +1997-03-05 NIIBE Yutaka + + * its.el (its-define-mode): Change internal structure. Completely + rewritten. + (its-make-map): Function to make map. + (its-make-state): New function. Make new state. + (its-make-KAS): New function. Make Key-Action-State triad. + (its-state-terminalp): New function. True when the state is + terminal. + (its-map-indicator, its-map-set-indicator,): Changed. + (its-map-terminalp, its-map-incrementalp, + its-map-set-incrementalp, its-map-alist, its-map-set-alist, + its-map-action, its-map-set-action): Removed. + + (its-defrule-verbose): Deleted. Seems debug purpose variable. + + (its-make-map): Removed . It was useless space eater. + (its-map-indicator, its-map-set-indicator, its-map-alist, + its-map-set-alist, its-map-action, its-map-set-action): Follow the + change. + (its-define-mode): Likewise. + (its-defrule**): Change the argument. Delete STATE. + (its-defrule): Likewise. + (its-map-state, its-map-set-state): Removed. + + : Changed the structure. Introduce , which + is t on hangul-map, zhuyin-map, and kanainput-map. + (its-define-mode): Change the arguments. INDICATOR and RESET is + always required. Add new argument INCREMENTALP. + * its/kanainput.el ("kanainput"): Use new API of its-define-mode. + * its/hangul.el ("hangul"): Likewise. + * its/zhuyin.el ("zhuyin"): Likewise. + * its.el (its-make-terminal-state-sofar): Removed. + (its-default-make-terminal-state): Removed. + (its-make-terminal-state): Removed + (its-make-non-terminal-state): Removed. Not used. + (its-map-incrementalp, its-map-set-incrementalp): New functions. + +1997-03-04 NIIBE Yutaka + + * its.el (its-defrule-conditional, its-defrule-conditional*): + Removed. Evaluating cond clause at runtime is stupid. Rules + should be determined at compile time, not at run time. + (its-get-action): Simplified. It's always standard. + (its-make-terminal-state-sofar): Likewise. + (its-make-action): Renamed from its-make-standard-action. + (its-standard-actionp): Removed. No use. + (its-translate-region): Simplified. + + (its-map-topmap-p): Removed. No use. + + (its-simple-actionp, its-collect-simple-action): Removed. No use. + + (its-insert-output-string, its-display-status-string): Removed. + It seemd these variables is to debug ITS itself. + (its-translate-region): Simplified. + + * its/hira.el (".", ",", "n", "nn"): Rules should be determined at + compile time. + * its/han-kata.el: Likewise. + * its/kata.el: Likewise. + + * its.el (its-make-standard-action): Simplified. + (its-make-standard-action): Remove alternative output. + (its-standard-actionp): Simplified. + (its-action-next): Simplified. + (its-select-alternative-output-menu): Removed. Not used at all. + (its-select-alternative-output): Ditto. + + * its/han-kata.el, its/zenkaku.el, its/kata.el, its/kanainput.el, + its/hira.el, its/hankaku.el: Add (require cl). + + * its.el (its-enable-double-n-syntax, its-use-kuten-for-period, + its-use-touten-for-comma, its-zenkaku-escape, its-hankaku-escape): + Declare here. Add prefix `its-'. ): + + (its-defrule, its-defrule*): Remove MAP argument. + Merged into its-defrule. + +1997-03-04 NIIBE Yutaka + + * its.el (its-completing-input-menu): Removed. Not used. + (its-completing-input): Ditto. + (its-translate-region): Remove (null action) clause. It's identical + to 't' case. + + (its-map-supers): Deleted. + (its-map-set-supers): Ditto. + (its-get-next-map-locally): Deleted. + + (its-define-mode): Remove supers. + (its-make-map): Likewise. + + (its-simulate-input): sref -> aref. add char-bytes -> +1. + (its-defrule**): Likewise. + + (its-flush-input-before-point): Delete useless save-excursion. + (its-push-char): Likewise. + (its-translate-region): Likewise. + + * its/zhuyin.el (its-make-terminal-state): + * its/kanainput.el (its-make-terminal-state): + * its/hangul.el (its-make-terminal-state): + Use its-make-terminal-state-sofar. + + * its/kanainput.el (its-make-terminal-state-kanainput): Removed. + + * its.el (its-make-terminal-state-sofar): Renamed. + (was: its-make-terminal-state-hangul) + + * its/han-kata.el (its-select-hankaku-katakana): Renamed. + (was: its:select-hankaku-katakana). + + * its.el (its-map-topmap-p, its-map-supers, its-map-set-supers, + its-map-terminalp, its-map-state, its-map-set-state, + its-map-indicator, its-map-set-indicator, its-map-action, + its-map-set-action, its-map-alist, its-map-set-alist, + its-get-action, its-action-output, its-action-next, + its-get-next-map, its-get-next-map-locally, its-set-next-map, + its-collect-simple-action, its-read-current-its-string, + its-make-map): Add prefix 'its-'. + + * its.el (its-defrule-select-mode-temporally): Deleted. + (its-select-mode-temporally): Deleted. + (its-select-previous-mode): Deleted. + + * its/hira.el ("q", "Q"): Removed. + + * its.el (its-defrule**): Don't call coerce-internal-string. + (map-state-string): Removed. + (its-default-make-standard-non-terminal-state): Don't call + map-state-string. + + * egg.el (characterp, coerce-internal-string, coerce-string): Removed. + + * its.el (its-insert-char): Deleted. + (its-internal-mode-alist): Removed. + (its-set-mode-map, its-define-mode): Remove internalp. + (its-set-mode-indicator): Removed. + + * egg-fence.el (egg-fence-self-insert-command): Add prefix 'egg-'. + + * its.el (fence-self-insert-command): Move to egg-fence.el. + + * egg-fence.el (egg-exit-fence-mode): Renamed (egg-fence-exit-mode). + (egg-enter-fence-mode-and-self-insert): Deleted. + + * egg.el (egg-quit-egg-mode): Deleted. + + * egg-misc.el (egg-fence-toggle-egg-mode): Add prefix 'egg-'. + (egg-fence-toggle-egg-mode): beep -> ding. + (global-map): bind C-\ to egg-enter-fence-mode. + +1997-03-02 NIIBE Yutaka + + * egg-henkan.el: New file. + + Use new API (egg-get-bunsetu-kanji, egg-get-bunsetu-yomi, + egg-is-dai-bunsetu, bunsetu-suu, egg-hindo-update, + egg-get-bunsetu-end). + + * wnn-egg.el: Move egg-henkan-* to egg-henkan.el. + + * wnn-egg.el (egg-startup-file-search-path): Remove current + directory. + (egg-open-wnn): Renamed from EGG-open-wnn. + (bunsetu-suu): New function. + (egg-get-bunsetu-kanji, egg-get-bunsetu-yomi): New function. + (egg-is-dai-bunsetu): New function. + (egg-hindo-update): New function. + (egg-get-bunsetu-end): New function. + + (egg-henkan-region, egg-gyaku-henkan-region, + egg-henkan-region-internal, egg-henkan-paragraph, + egg-gyaku-henkan-paragraph, egg-henkan-sentence, + egg-gyaku-henkan-sentence, egg-henkan-word, egg-gyaku-henkan-word, + egg-henkan-insert-kouho, egg-henkan-kakutei, + egg-henkan-kakutei-first-char, egg-henkan-kakutei-before-point, + egg-sai-henkan, egg-henkan-goto-bunsetu, + egg-henkan-forward-bunsetu, egg-henkan-backward-bunsetu, + egg-henkan-first-bunsetu, egg-henkan-last-bunsetu, + egg-henkan-hiragana, egg-henkan-katakana, egg-henkan-next-kouho, + egg-henkan-next-kouho-dai, egg-henkan-next-kouho-sho, + egg-henkan-previous-kouho, egg-henkan-previous-kouho-dai, + egg-henkan-previous-kouho-sho, egg-henkan-goto-kouho, + egg-henkan-bunsetu-chijime-dai, egg-henkan-bunsetu-chijime-sho, + egg-henkan-bunsetu-nobasi-dai, egg-henkan-saishou-bunsetu, + egg-henkan-saichou-bunsetu, egg-bunsetu-length-henko, + egg-henkan-quit, egg-henkan-select-kouho, + egg-henkan-select-kouho-dai, egg-henkan-select-kouho-sho, + egg-henkan-word-off, egg-henkan-kakutei-and-self-insert, + egg-henkan-mode-map, egg-henkan-mode-esc-prefix, + egg-henkan-help-command, egg-henkan-inspect-bunsetu): + Add prefix `egg-'. + + (egg-henkan-mode-in-use): Deleted. + (set-egg-henkan-mode-format): Deleted. Don't need. + + (disconnect-wnn): Let it be normal function, instead of command. + (close-wnn): Ditto. + + (set-jserver-host-name, set-kserver-host-name, + set-cserver-host-name): Use defalias. + + (close-wnn): Take an argument of wnn-server-type. + (wnn-egg-kill-emacs-function, set-wnn-host-name, + set-cwnn-host-name, set-kwnn-host-name): Likewise. + + * egg.el (egg-global-map-backup): Deleted. + (egg-local-map-backup): Deleted. + (egg-insert-after-hook): it's global variable, nod buffer-local. + + * egg-fence.el (egg-henkan-fence-region, egg-enter-fence-mode, + egg-fence-katakana, egg-fence-hiragana, egg-fence-hankaku, + egg-fence-zenkaku, egg-fence-backward-char, + egg-fence-forward-char, egg-fence-beginning-of-line, + egg-fence-end-of-line, egg-fence-transpose-chars, + egg-fence-delete-char, egg-fence-backward-delete-char, + egg-fence-kill-line, egg-fence-exit-mode, egg-fence-cancel-input, + egg-fence-mode-help-command): Add Prefix `egg-'. + + (egg-fence-mode-map): Remove binding to eval-expression (C-z). + + (egg-self-insert-non-undo-count): Removed. + (egg-self-insert-command): Removed. + + (egg-fence-backward-char, egg-fence-forward-char, + egg-fence-transpose-chars, egg-fence-delete-char, + egg-fence-backward-delete-char): beep -> ding. + wnn-egg.el (egg-henkan-select-kouho): Likewise. + +1997-02-27 NIIBE Yutaka + + * wnn-egg.el (push-end, push-end-internal): Removed. + + * its.el (dolist): Removed. It's in CL package. + (for-each, for-each*): Removed. + + * egg-keymap.el: Removed. I guess noone use it. + + * egg-jsymbol.el (*-alist): Declare by defconst. + + * egg-misc.el (toggle-egg-mode): Removed. + + * All files: Change the identifier XXX:YYYY --> XXX-YYYY, + and *YYY* ---> YYY. + + * egg-fence.el (enter-fence-mode): Use new API for marker + insertion `set-marker-insertion-type'. + * its.el (its-*buff-e*): Likewise. + + * egg-jsymbol.el: lc-jp --> (charset-id 'japanese-jisx0208) + lc-jp2 --> (charset-id 'japanese-jisx0212). + +1997-02-26 NIIBE Yutaka + + * egg-fence.el (egg:fence-mode-map): Renamed from fence-mode-map. + (egg:fence-mode-esc-prefix): Renamed from egg:fence-mode-esc-map. + (henkan-fence-region-or-single-space): Removed. + + * egg-misc.el (toggle-egg-mode): mc-flag + -> enable-multibyte-characters. + + * its.el (read-current-its-string): New function. Moved from + wnn-egg-misc.el. + (In meny functions): beep --> ding. + + * egg-misc.el (read-hiragana-string): Removed. + (read-kanji-string): Removed. + (egg:special-symbol-input): Renamed from special-symbol-input. + (egg:special-symbol-input-point): Renamed from + special-symbol-input-point. + (si:*global-map*): Remeved. + Removed 'Changes on Global map'. + (its-mode-map): Renamed from mule-keymap. + + * wnn-egg.el (henkan-region-internal): Use new API for undo. + (henkan-kakutei): Likewise. + (henkan-kakutei-first-char): Likewise. + (henkan-kakutei-before-point): Likewise. + (sai-henkan): Likewise. + * egg.el (egg:quit-egg-mode): Likewise. + + * egg-fence.el (egg:*fence-open*, egg:*fence-close*, + egg:*fence-face*): Let them be declared by defvar. + (egg:*fence-open-in-cont*, egg:*fence-close-in-cont*, + egg:*fence-face-in-cont*): Likewise. + + (set-egg-fence-mode-format): Removed. Useless. Don't need to be + interactive. + (set-egg-fence-mode-format-in-cont): Removed. + (egg:*face-alist*): Removed. + + * wnn-egg-misc.el (its:select-mode, its:select-mode-from-menu, + its:next-mode, its:previous-mode): + Removed (Merged into its.el). + + * its.el (its:select-mode, its:select-mode-from-menu, + its:next-mode, its:previous-mode): Call hook of + `its:select-mode-hook'. + + * diced.el: Removed. This depends on wnn. Functions are moved to + wnn-egg-dict.el. + + * wnn-egg-dict.el (remove-regexp-in-string): Removed. + (toroku-region): Don't call `remove-regexp-in-string'. Removing + invalid sequence (TAB?) automatically is not good idea. It should + notify user. Currently, just don't remove. + + * busyu.el (busyu-table): defconst instead of defvar. + (busyu-kaku-alist): defconst instead of defvar. + + * its.el (egg:member): Removed. Not used. + + * wnn-egg-msg.el (*egg-message-alist*): Include asking string in + register-notify and remove-notify. Should also change Korean and + Chinese. + + * egg.el: Removed "Tamago Notification System". + It is useless, as we have *Messages* buffer in GNU Emacs 19. + + * diced.el (diced-execute): Don't use `notify' but `message'. + (set-dict-comment): Likewise. + * its.el (its-defrule**): Likewise. + * wnn-egg-dict.el (egg:toroku-word): Likewise. + * wnn-egg-msg.el (egg:error): Likewise. + * wnn-egg.el (set-wnn-param): Likewise. + (EGG:open-wnn): Likewise. + (close-wnn): Likewise. + (henkan-word-off): Likewise. + (henkan-inspect-bunsetu): Likewise. + + * diced.el (diced-execute): Don't use `notify-yes-or-no-p' but use + plain `yes-or-no-p' and format. + * wnn-egg-dict.el (egg:toroku-word): Likewise. + + * egg.el (notify-yes-or-no-p-internal): IIDESUKA is not good. + it should get the message through egg:get-msg. Currently, use + "OK?". + (notify-y-or-n-p-internal): Likewise. + + * wnn-egg.el: Split into wnn-egg-dict.el, wnn-egg-misc.el, and + wnn-egg-msg.el. + (many functions): remove commented out line of + (open-wnn-if-disconnected). + + * egg.el: Split into egg.el, egg-fence.el, egg-misc.el, + jis-input.el, and modeline.el. + + * wnn-egg.el (egg-default-startup-file): change to eggrc-wnn from + eggrc. + (henkan-region-internal): Use new API for marker insertion + `set-marker-insertion-type'. + +1997-02-13 NIIBE Yutaka + + * menu.el (menu:select-from-menu): Rewritten. Index: ChangeLog.2000-2001 =================================================================== RCS file: ChangeLog.2000-2001 diff -N ChangeLog.2000-2001 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ChangeLog.2000-2001 25 Aug 2002 23:55:41 -0000 1.2 @@ -0,0 +1,371 @@ +2001-12-01 ? + + * egg/wnn.el (wnn-server-info-list): Use `defvar' instead of + `defconst' to define it. + +2001-12-01 KATAYAMA Yoshio + + * egg-x0213.el: New file. + +2001-11-10 Kinji Itoh + (cf. http://cgi18.plala.or.jp/nyy/canna/canna-20011023-20011110.diff) + + * egg/canna.el (canna-server-port): Default to the string "canna". + (cannna-open): Treat the port name as a string instead of a number. + +2001-11-08 Kinji Itoh (cf. [tamago:00546]) + + * egg/canna.el (canna-set-converted-yomi): New function. + (canna-start-conversion): Use it. + (canna-change-bunsetsu-length): Use it. + +2001-10-22 Yoichi NAKAYAMA + (cf. [tamago:00534]) + + * egg/canna.el (canna-word-delete-regist): Signal an error using + `egg-error' if there is no text for yomi. + +2001-08-16 KATAYAMA Yoshio (cf. [tamago:00516]) + + * its/greek.el: New file. + +2001-07-24 KATAYAMA Yoshio (cf. [tamago:00504]) + + * eggrc (wnn7-jserver-setup): New function. + +2001-06-28 Yoshiki Hayashi (cf. [tamago:00468]) + + * egg-cnv.el (egg-end-of-conversion-buffer): Replace + `next-single-property-change' to `egg-next-single-property-change'. + (egg-decide-before-point): Ditto. + (egg-exit-conversion): Ditto. + (egg-abort-conversion): Ditto. + + * egg.el (egg-last-method-name): Default to nil. + + * its-keydef.el: Set the default value of `its-select-func-alist' + to nil. + + * its.el (its-current-language): Default to nil. + (its-mode-map): Use `(meta KEY)' instead of `M-KEY'. + + * egg/canna.el (canna-open): Use `binary' instead of + `no-conversion' for the process coding-system. + * egg/sj3.el (sj3-open): Ditto. + * egg/wnn.el (wnn-open): Ditto. + + * egg/wnnrpc.el (wnnrpc-with-temp-buffer): Use `binary' instead of + `no-conversion'. + (wnnrpc-with-write-file): Ditto. + +2001-05-24 KATAYAMA Yoshio (cf. [tamago:00462]) + + * its/aynu.el: Require `cl' when compiling. + +2001-05-23 Katsumi Yamaoka (cf. [tamago:00461]) + + * egg.el: Require `cl' only when compiling. + * its.el: Ditto. + +2001-05-22 KATAYAMA Yoshio + + * its.el (its-delete-by-character): New customizable variable. + (its-delete-backward-SYL): Delete a character as a unit even if + just after input, if its-delete-by-character is non-NIL. + +2001-04-16 KATAYAMA Yoshio + + * egg.el (egg-setup-invisibility-spec): New function for setup + buffer-invisibilty-spec. + + * its.el (its-setup-fence-mode): Change the value of invisible + property to egg. + + * egg-cnv.el (egg-convert-region): Change the value of invisible + property to egg. + + * jisx0213.el: Correct JIS X 0213 definition. (suggested by + T. Kawabata) + +2000-06-02 KATAYAMA Yoshio + + * egg/wnn.el (wnn): Fix docstring. + (wnn-backend-plist): Include egg-special-candidate. + (wnn-special-candidate): New function. + (wnn-pinyin-zhuyin-bunsetsu, wnn-pinyin-zhuyin-string): New + functions. + (egg-activate-wnn): Fix docstring. + + * egg/sj3.el (sj3, egg-activate-sj3): Fix docstring. + + * egg/canna.el (egg-activate-canna): Fix docstring. + + * menudiag.el: Mostly rewritten. + + * leim-list.el: Docstrings for autoload fixed. + + * its.el (its): Fix docstring. + (its-mode-map): Fix bindings. + (its-fence-mode, egg-sub-mode-map-alist): New variables. + (its-enter/leave-fence): New function. + (its-put-cursor): Add text properties point-entered, point-left, + modification-hooks. + (its-in-fence-p): Check also read-only property. + (its-hiragana, its-katakana): Just call its-convert. + (its-hankaku, its-japanese-hankaku): These functions deleted. + (its-full-half-table, its-half-full-table): New variables. + Initialize them. + (its-half-width, its-full-width): New functions. + (its-convert): Args changed. + + * its-keydef.el (its-make-select-func): Add check by + (egg-conversion-fence-p). + + * egg.el (egg): Fix docstring. + (egg-current-keymap): This variable deleted. + (egg-mode-map-alist, egg-sub-mode-map-alist): New variables. + (define-egg-mode-map): New macro. + (modefull, modeless): New egg mode maps. + (egg-enter/leave-fence-hook): New variable. + (egg-enter/leave-fence): New function. + (egg-activated): New variable. + (egg-activate-keymap): New variable. + (egg-modify-fence, egg-post-command-func): New functions. + (egg-change-major-mode-buffer): New variable. + (egg-activate-keymap-after-command, egg-change-major-mode-func): + New functions. + (egg-mode): Initialize egg-modefull-mode, egg-modeless-mode. + (egg-modefull-map, egg-modeless-map): These functions deleted. + (egg-set-face): Preserve the current modification-hooks property. + + * egg-com.el (ccl-decode-egg-binary): Fix BUFFER-MAGNIFICATION. + (ccl-encode-egg-binary): Likewise. + + * egg-cnv.el (egg-conv): Fix docstring. + (egg-conversion-auto-candidate-menu): Fix docstring. + (egg-conversion-auto-candidate-menu-show-all): New variable. + (egg-conversion-sort-by-converted-string): New variable. + (egg-conversion-fence-p): New function. + (egg-define-backend-functions): Include egg-special-candidate. + (egg-conversion-map): Define up, down, etc. + (egg-conversion-mode): New variable. Register it in + egg-sub-mode-map-alist. + (egg-conversion-enter/leave-fence): New function. Register it in + egg-enter/leave-fence-hook. + (egg-exit-conversion-unread-char): Use single setq. + (egg-make-bunsetsu): Add text properties point-entered and + point-left. + (egg-set-menu-mode-in-use, egg-unset-menu-mode-in-use) + (egg-set-candsel-info): Args changed. + (egg-get-candsel-target-major): Code changed. + (egg-get-candsel-target-minor): Code changed. + (egg-insert-new-bunsetsu): Args changed. + (egg-candidate-select-counter): Make it buffer local. + (egg-next-candidate-internal): Args changed. + (egg-sort-item): New functions. + (egg-select-candidate-major): New arg SORT. + (egg-select-candidate-minor, egg-select-candidate-list-all-major) + (egg-select-candidate-list-all-minor) + (egg-select-candidate-internal): Likewise. + (egg-hiragana): New function. + (egg-katakana, egg-pinyin, egg-zhuyin, egg-hangul): Aliases of + egg-hiragana. + (egg-special-convert): New function. + (egg-enlarge-bunsetsu-internal): Code changed. + (egg-reconvert-bunsetsu-internal, egg-decide-before-point) + (egg-decide-first-char, egg-exit-conversion) + (egg-abort-conversion): Likewise. + +2000-02-01 Takanori Saneto + + * egg/sj3rpc.el (sj3rpc-tanbunsetsu-conversion): should use + let* instead of let. + +2000-01-20 Katsumi Yamaoka + + * egg/sj3.el (sj3-word-registration): New function. + (sj3-hinshi-select): New function. + (sj3-dictionary-select): New function. + (sj3-conversion-backend): Add `sj3-word-registration'. + (sj3-hinshi-name): New function. + (sj3-hinshi-menu): New variable. + (sj3-register-2, sj3-register-1): Add messages. + (sj3-server-coding-system-list): Remove. + (sj3-server-version): Move to egg/sj3rpc.el. + (sj3-server-port, sj3-hostname): Strip "*" from the doc string. + + * egg/sj3rpc.el (sj3rpc-add-word): New function. + (sj3rpc-kugiri-stdy, sj3rpc-get-bunsetsu-candidates): Use + `sj3-server-coding-system' insted of `sj3rpc-server-coding-system'. + (sj3rpc-tanbunsetsu-conversion, sj3rpc-get-bunsetsu-candidates-sub, + sj3rpc-begin): Use `sj3-server-coding-system' insted of + `sj3rpc-server-coding-system'; don't specify an argument of + `sj3rpc-unpack-mb-string'. + (sj3rpc-unpack-mb-string): Don't allow the argument; use + `sj3rpc-server-coding-system'. + (sj3rpc-server-coding-system): Remove macro. + (sj3-const): Switch on the return value of `sj3-sjis-p' instead of + `sj3-server-version'. + (sj3-sjis-p): New macro. + (sj3-server-coding-system): New variable; default to `shift_jis'. + (sj3-server-version): Move from egg/sj3.el; use `defvar' insted of + `defcustom'. + + * eggrc: Remove SJ3 stuff. + +2000-01-17 TOMURA Satoru + + * Version 4.0.6 released + +2000-01-17 TOMURA Satoru + + * README.ja.text: mentiond about doc/lc99.text + +2000-01-17 KATAYAMA Yoshio + + * its.el (its-hiragana, its-katanaka): modified + (its-zenkaku, its-hankaku): added + (its-put-cursor): bug fixed. + (its-set-cursor-status): redefined. + (its-search-beginning, its-search-end): created. + (its-end-of-input-buffer): modified. + (its-kill-line): modified. + (its-cancel-input): modified. + (its-japanese-hankaku): added. + (its-convert): added. + * egg.el (egg-redraw-face): bug fixed. + +2000-01-17 SAKAI Kiyotaka + + * its.el (its-hiragana, its-katakana): re-added. + +2000-01-17 SANETO Takanori + + * Makefile.in: move its-keydefs.el from ITSELS to TOPELS + +2000-01-16 + + * egg-sim.el: many functions renamed and modified... + * doc/code-table: created + +2000-01-15 TOMURA Satoru + + * egg-sim.el: rename egg-code.el as egg-sim.el + * egg-sim.el (egg-simple-input-method): rename + egg-insert-character as egg-simple-input-method + * egg.el: rename egg-insert-character as egg-simple-input-method + * doc/lc99.txt: added. + +2000-01-14 TOMURA Satoru + * egg-code.el: created + * egg.el: Bind egg-insert-character to C-^ in egg-mode + * egg.el: Delete the binding for C-_ in egg-mode + * Makefile.in: add egg-code to ${SRCS} + +2000-01-13 TOMURA Satoru + + * Version 4.0.5 released. + +2000-01-13 Katsumi Yamaoka + + * egg/sj3.el (sj3-end-conversion): Restrain from overrunning. + +2000-01-13 Katsumi Yamaoka + * egg/sj3rpc.el (sj3rpc-open): Use `sj3-server-version' instead of + 2. + (sj3rpc-unpack-mb-string): New macro. + (sj3rpc-tanbunsetsu-conversion, sj3rpc-get-bunsetsu-candidates-sub, + sj3rpc-begin): Use it instead of `comm-unpack'. + + (sj3rpc-server-coding-system): New macro. + (sj3rpc-kugiri-stdy, sj3rpc-tanbunsetsu-conversion, + sj3rpc-get-bunsetsu-candidates, sj3rpc-get-bunsetsu-candidates-sub, + sj3rpc-begin, sj3rpc-unpack-mb-string): Use it. + + (sj3-const): Switch on the value of `sj3-server-version'. + (sj3rpc-kugiri-stdy, sj3rpc-tanbunsetsu-conversion, + sj3rpc-get-bunsetsu-candidates, sj3rpc-get-bunsetsu-candidates-sub, + sj3rpc-begin): Modify for it. + + * egg/sj3.el (sj3-server-coding-system-list): New user option. + (sj3-server-version): Ditto. + +2000-01-13 SAKAI Kiyotaka + + * its.el: typo + * egg.el: typo + +2000-01-13 KATAYAMA Yoshio + + * its.el(its-hiragana, its-katakana): does not work. so deleted. + +2000-01-12 NAKAJI Hiroyuki + + * README.ja.txt: typo + * Makefile.in: (clean, distclean): modified. + +2000-01-12 TOMURA Satoru + + * Version 4.0.4 released. + +2000-01-12 TOMURA Satoru + + * REAMDE: removed. + + * README.ja.txt: created. + +2000-01-12 SAKAI Kiyotaka + + * Makefile.in: "clean" removes ${ELCS}. + + * Makefile.in: "distclean" created. + +2000-01-12 Satoru Tomura + + * Version 4.0.3 released. + +2000-01-12 Satoru Tomura + + * install-sh: copied from automake distribution + + * configure.in: created + + * Makefile.in: created + + * configure: generated by autoconf + +2000-01-11 Satoru Tomura + + * leim-list.el: (defgroup sj3) added. + + * egg/sj3.el (sj3-hosname, sj3-server-port): defcusotm'ed + +2000-01-11 Katsumi Yamaoka + + * egg/sj3.el : (require 'egg) added. + +2000-01-11 SAKAI Kiyotaka + + * its.el (its-hiragana, its-katakana): New functions + +2000-01-07 Tomura Satoru + + * COPYING: The file is added. + + * ChangeLog.1: The original ChangeLog is renamed as. + + * ChangeLog: Created. + +2000-01-07 Tomura Satoru + + * Version 4.0.2 released. + +2000-01-06 Tomura Satoru + + * Version 4.0.1 released. + +2000-01-05 Tomura Satoru + + * Version 4.0.0 released. + + Index: Makefile.in =================================================================== RCS file: /cvs/tamago/tamago/Makefile.in,v retrieving revision 1.1.1.4 retrieving revision 1.6 diff -d -u -p -r1.1.1.4 -r1.6 --- Makefile.in 27 Jan 2001 18:46:59 -0000 1.1.1.4 +++ Makefile.in 9 Sep 2002 08:50:42 -0000 1.6 @@ -8,6 +8,10 @@ .SUFFIXES: SHELL = @SHELL@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + #------------------------------------------------ # Configuration parameters #------------------------------------------------ @@ -31,7 +35,7 @@ INSTALL_INFO = install-info # ;; install files into the emacs site-lisp directory # ;; ex. /usr/local/share/emacs/site-lisp/egg -DEPS = -l ./docomp.el +DEPS = -l $(top_srcdir)/docomp.el BATCHFLAGS = -batch -q -no-site-file -no-init-file ETCS = Makefile docomp.el \ @@ -46,7 +50,6 @@ TOPSRCS = \ egg-edep.el \ egg-com.el \ egg-cnv.el \ - egg-util.el \ egg-mlh.el \ egg-sim.el \ menudiag.el \ @@ -58,12 +61,16 @@ EGGSRCS = \ egg/cannarpc.el egg/canna.el \ egg/sj3rpc.el egg/sj3.el \ egg/wnnrpc.el egg/wnn.el \ + egg/anthyipc.el egg/anthy.el # +AYNU = @HAVE_JISX0213@ its/aynu.el + ITSSRCS = \ its/ascii.el \ its/bixing.el \ its/erpin.el \ + its/greek.el \ its/hankata.el \ its/hira.el \ its/jeonkak.el \ @@ -74,6 +81,7 @@ ITSSRCS = \ its/quanjiao.el \ its/zenkaku.el \ its/zhuyin.el \ + ${AYNU} # ELCS = ${SRCS:.el=.elc} @@ -86,6 +94,7 @@ ITSELCS = ${ITSSRCS:.el=.elc} DIST = ${ETCS} ${SRCS} ${INITELS} + all: ${ELCS} .SUFFIXES: .el .elc @@ -138,9 +147,7 @@ uninstall-site: egg/sj3rpc.elc: egg-com.elc egg/sj3.elc egg/wnnrpc.elc: egg-com.elc egg/wnn.elc -egg.elc its/ascii.elc its/erpin.elc its/hankata.elc \ -its/hira.elc its/jeonkak.elc its/pinyin.elc \ +egg.elc its/ascii.elc its/aynu.elc its/erpin.elc its/greek.elc \ +its/hankata.elc its/hira.elc its/jeonkak.elc its/pinyin.elc \ its/hangul.elc its/kata.elc its/quanjiao.elc \ its/zenkaku.elc its/zhuyin.elc: its-keydef.elc - - Index: check-jisx0213.el =================================================================== RCS file: check-jisx0213.el diff -N check-jisx0213.el --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ check-jisx0213.el 9 Sep 2002 08:50:42 -0000 1.1 @@ -0,0 +1,3 @@ +(if (charsetp 'japanese-jisx0213-1) + (kill-emacs 0) + (kill-emacs 1)) Index: configure =================================================================== RCS file: /cvs/tamago/tamago/configure,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- configure 27 Jan 2001 18:46:16 -0000 1.1.1.1 +++ configure 9 Sep 2002 08:50:42 -0000 1.2 @@ -637,6 +637,15 @@ fi +echo $ac_n "checking jisx0213""... $ac_c" 1>&6 +echo "configure:642: checking jisx0213" >&5 +if emacs -batch -q -no-site-file -no-init-file -l ${srcdir}/check-jisx0213.el; then + echo "yes"; HAVE_JISX0213="" +else + echo "no"; HAVE_JISX0213="# " +fi + + lispdir=${datadir}/emacs/site-lisp trap '' 1 2 15 @@ -788,6 +797,7 @@ s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_DATA@%$INSTALL_DATA%g s%@SET_MAKE@%$SET_MAKE%g +s%@HAVE_JISX0213@%$HAVE_JISX0213%g s%@lispdir@%$lispdir%g CEOF Index: configure.in =================================================================== RCS file: /cvs/tamago/tamago/configure.in,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- configure.in 27 Jan 2001 18:46:16 -0000 1.1.1.1 +++ configure.in 9 Sep 2002 08:50:42 -0000 1.2 @@ -13,6 +13,15 @@ dnl Checks for typedefs, structures, and dnl Checks for library functions. +dnl check if jisx0213 is supported or not +AC_MSG_CHECKING(jisx0213) +if emacs -batch -q -no-site-file -no-init-file -l ${srcdir}/check-jisx0213.el; then + echo "yes"; HAVE_JISX0213="" +else + echo "no"; HAVE_JISX0213="# " +fi +AC_SUBST(HAVE_JISX0213) + lispdir=${datadir}/emacs/site-lisp AC_SUBST(lispdir) AC_OUTPUT(Makefile) Index: egg-cnv.el =================================================================== RCS file: /cvs/tamago/tamago/egg-cnv.el,v retrieving revision 1.1.1.2 retrieving revision 1.4 diff -d -u -p -r1.1.1.2 -r1.4 --- egg-cnv.el 27 Jan 2001 18:46:16 -0000 1.1.1.2 +++ egg-cnv.el 22 Jul 2002 13:18:56 -0000 1.4 @@ -34,19 +34,29 @@ (require 'egg-edep) (defgroup egg-conv nil - "Conversion backend Interface of Tamagotchy" + "Conversion Backend Interface of Tamago 4." :group 'egg) -(defcustom egg-conversion-wrap-select nil +(defcustom egg-conversion-wrap-select t "*Candidate selection wraps around to first candidate, if non-NIL. Otherwise stop at the last candidate." :group 'egg-conv :type 'boolean) (defcustom egg-conversion-auto-candidate-menu 0 - "*Automatically enter the candidate selectionmenu mode at N times + "*Automatically enter the candidate selection mode at N times next/previous-candidate, if positive number N." :group 'egg-conv :type 'integer) +(defcustom egg-conversion-auto-candidate-menu-show-all nil + "*Enter show all candiate mode when automatic candidate selection +mode, if non-NIL." + :group 'egg-conv :type 'boolean) + +(defcustom egg-conversion-sort-by-converted-string nil + "*Sort candidate list by converted string on candidate selection +mode, if non-NIL." + :group 'egg-conv :type 'boolean) + (defcustom egg-conversion-fence-invisible nil "*Make fence marks invisible, if non-NIL." :group 'egg-conv :type 'boolean) @@ -147,7 +157,7 @@ next/previous-candidate, if positive num pair (assq lang egg-conversion-backend-alist)) (cond ((null pair) - (setq egg-conversion-backend-alist + (setq egg-conversion-backend-alist (cons (cons lang backend-set) egg-conversion-backend-alist))) (force (setcdr pair backend-set)))))) @@ -207,6 +217,10 @@ next/previous-candidate, if positive num (defsubst egg-bunsetsu-set-info (bunsetsu info) (setcdr bunsetsu info)) +(defun egg-conversion-fence-p () + (and (egg-get-backend (point)) + (get-text-property (point) 'read-only))) + (defvar egg-finalize-backend-list nil) (defun egg-set-finalize-backend (func-list) @@ -243,8 +257,9 @@ next/previous-candidate, if positive num (egg-major-bunsetsu-continue-p (bunsetsu)) (egg-list-candidates (bunsetsu-list prev-b next-b major)) (egg-decide-candidate (bunsetsu-list candidate-pos prev-b next-b)) + (egg-special-candidate (bunsetsu-list prev-b next-b major type)) (egg-change-bunsetsu-length (bunsetsu-list prev-b next-b length major)) - (egg-bunsetsu-combinable-p (bunsetsu next-b)) + (egg-bunsetsu-combinable-p (bunsetsu next-b)) (egg-end-conversion (bunsetsu-list abort)) (egg-word-inspection (bunsetsu)) (egg-word-registration (backend source converted)))) @@ -263,7 +278,7 @@ next/previous-candidate, if positive num (defun egg-start-conversion-noconv (backend yomi-string context) (let ((string (copy-sequence yomi-string)) (language (egg-get-language 0 yomi-string))) - (set-text-properties 0 (length string) nil string) + (egg-remove-all-text-properties 0 (length string) string) (list (egg-bunsetsu-create backend (vector string language))))) (defun egg-get-bunsetsu-source-noconv (bunsetsu) @@ -288,6 +303,7 @@ next/previous-candidate, if positive num ;; nothing to do nil (delete-region start end) + (egg-setup-invisibility-spec) (let ((inhibit-read-only t)) (its-define-select-keys egg-conversion-map) (goto-char start) @@ -302,13 +318,13 @@ next/previous-candidate, if positive num (if context (put-text-property 0 len 'egg-context context s)) (if egg-conversion-fence-invisible - (put-text-property 0 len 'invisible t s)) + (put-text-property 0 len 'invisible 'egg s)) (insert s) (setq s (copy-sequence egg-conversion-fence-close) len (length s)) (set-text-properties 0 len '(read-only t rear-nonsticky t egg-end t) s) (if egg-conversion-fence-invisible - (put-text-property 0 len 'invisible t s)) + (put-text-property 0 len 'invisible 'egg s)) (insert s) (goto-char start) (insert source) @@ -429,7 +445,8 @@ next/previous-candidate, if positive num (setq last-chinese lang)) (setq j i i (egg-next-single-property-change i 'egg-lang str len)) - (set-text-properties j i (list 'egg-lang lang) str)))) + (egg-remove-all-text-properties j i str) + (put-text-property j i 'egg-lang lang str)))) ;;; Should think again the interface to language-info-alist (defun egg-charset-to-language (charset) @@ -478,7 +495,8 @@ next/previous-candidate, if positive num s (substring source i j) lang (egg-get-language 0 s) backend (egg-get-conversion-backend lang n t)) - (set-text-properties 0 (- j i) (list 'egg-lang lang) s) + (egg-remove-all-text-properties 0 (- j i) s) + (put-text-property 0 (- j i) 'egg-lang lang s) (setq retval (nconc retval (list (list backend (list lang) s))) i j)) (prog1 @@ -499,7 +517,7 @@ next/previous-candidate, if positive num file (and (file-readable-p file) file)) (while (and (null file) path) (if (stringp (car path)) - (setq file (substitute-in-file-name + (setq file (substitute-in-file-name (expand-file-name filename (car path))) file (and (file-exists-p file) file))) (setq path (cdr path))) @@ -536,53 +554,72 @@ next/previous-candidate, if positive num (while (< i 127) (define-key map (vector i) 'egg-exit-conversion-unread-char) (setq i (1+ i))) - (define-key map "\C-@" 'egg-decide-first-char) - (define-key map [?\C-\ ] 'egg-decide-first-char) - (define-key map "\C-a" 'egg-beginning-of-conversion-buffer) - (define-key map "\C-b" 'egg-backward-bunsetsu) - (define-key map "\C-c" 'egg-abort-conversion) - (define-key map "\C-e" 'egg-end-of-conversion-buffer) - (define-key map "\C-f" 'egg-forward-bunsetsu) - (define-key map "\C-h" 'egg-help-command) - (define-key map "\C-i" 'egg-shrink-bunsetsu-major) - (define-key map "\C-k" 'egg-decide-before-point) -;; (define-key map "\C-l" 'egg-exit-conversion) ; Don't override C-L - (define-key map "\C-m" 'egg-exit-conversion) - (define-key map "\C-n" 'egg-next-candidate-major) - (define-key map "\C-o" 'egg-enlarge-bunsetsu-major) - (define-key map "\C-p" 'egg-previous-candidate-major) - (define-key map "\C-r" 'egg-reconvert-bunsetsu) - (define-key map "\C-t" 'egg-toroku-bunsetsu) - (define-key map "\C-v" 'egg-inspect-bunsetsu) - (define-key map "\M-i" 'egg-shrink-bunsetsu-minor) - (define-key map "\M-n" 'egg-next-candidate-minor) - (define-key map "\M-o" 'egg-enlarge-bunsetsu-minor) - (define-key map "\M-p" 'egg-previous-candidate-minor) - (define-key map "\M-r" 'egg-reconvert-bunsetsu-from-source) - (define-key map "\M-s" 'egg-select-candidate-major) - (define-key map "\M-v" 'egg-toggle-inspect-mode) - (define-key map "\M-z" 'egg-select-candidate-minor) - (define-key map "\e\C-s" 'egg-select-candidate-list-all-major) - (define-key map "\e\C-z" 'egg-select-candidate-list-all-minor) - (define-key map [return] 'egg-exit-conversion) - (define-key map [right] 'egg-forward-bunsetsu) - (define-key map [left] 'egg-backward-bunsetsu) - (define-key map " " 'egg-next-candidate) - (define-key map "/" 'egg-exit-conversion) - ;;;(define-key map "\M-h" 'egg-hiragana) - ;;;(define-key map "\M-k" 'egg-katakana) - ;;;(define-key map "\M-<" 'egg-hankaku) - ;;;(define-key map "\M->" 'egg-zenkaku) + (define-key map "\C-@" 'egg-decide-first-char) + (define-key map [?\C-\ ] 'egg-decide-first-char) + (define-key map "\C-a" 'egg-beginning-of-conversion-buffer) + (define-key map "\C-b" 'egg-backward-bunsetsu) + (define-key map "\C-c" 'egg-abort-conversion) + (define-key map "\C-e" 'egg-end-of-conversion-buffer) + (define-key map "\C-f" 'egg-forward-bunsetsu) + (define-key map "\C-h" 'egg-help-command) + (define-key map "\C-i" 'egg-shrink-bunsetsu-major) + (define-key map "\C-k" 'egg-decide-before-point) +;; (define-key map "\C-l" 'egg-exit-conversion) ; Don't override C-L + (define-key map "\C-m" 'egg-exit-conversion) + (define-key map "\C-n" 'egg-next-candidate-major) + (define-key map "\C-o" 'egg-enlarge-bunsetsu-major) + (define-key map "\C-p" 'egg-previous-candidate-major) + (define-key map "\C-r" 'egg-reconvert-bunsetsu) + (define-key map "\C-t" 'egg-toroku-bunsetsu) + (define-key map "\C-v" 'egg-inspect-bunsetsu) + (define-key map "\M-i" 'egg-shrink-bunsetsu-minor) + (define-key map "\M-n" 'egg-next-candidate-minor) + (define-key map "\M-o" 'egg-enlarge-bunsetsu-minor) + (define-key map "\M-p" 'egg-previous-candidate-minor) + (define-key map "\M-r" 'egg-reconvert-bunsetsu-from-source) + (define-key map "\M-s" 'egg-select-candidate-major) + (define-key map "\M-v" 'egg-toggle-inspect-mode) + (define-key map "\M-z" 'egg-select-candidate-minor) + (define-key map "\e\C-s" 'egg-select-candidate-list-all-major) + (define-key map "\e\C-z" 'egg-select-candidate-list-all-minor) + (define-key map [return] 'egg-exit-conversion) + (define-key map [right] 'egg-forward-bunsetsu) + (define-key map [left] 'egg-backward-bunsetsu) + (define-key map [up] 'egg-previous-candidate) + (define-key map [down] 'egg-next-candidate) + (define-key map [backspace] 'egg-abort-conversion) + (define-key map [clear] 'egg-abort-conversion) + (define-key map [delete] 'egg-abort-conversion) + (define-key map " " 'egg-next-candidate) + (define-key map "/" 'egg-exit-conversion) + (define-key map "\M-h" 'egg-hiragana) + (define-key map "\M-k" 'egg-katakana) + (define-key map "\M-P" 'egg-pinyin) + (define-key map "\M-Z" 'egg-zhuyin) + (define-key map "\M-H" 'egg-hangul) map) "Keymap for EGG Conversion mode.") - (fset 'egg-conversion-map egg-conversion-map) +(defvar egg-conversion-mode nil) +(make-variable-buffer-local 'egg-conversion-mode) +(put 'egg-conversion-mode 'permanent-local t) + +(or (assq 'egg-conversion-mode egg-sub-mode-map-alist) + (setq egg-sub-mode-map-alist (cons + '(egg-conversion-mode . egg-conversion-map) + egg-sub-mode-map-alist))) + +(defun egg-conversion-enter/leave-fence (&optional old new) + (setq egg-conversion-mode (egg-conversion-fence-p))) + +(add-hook 'egg-enter/leave-fence-hook 'egg-conversion-enter/leave-fence) + (defun egg-exit-conversion-unread-char () (interactive) - (setq unread-command-events (list last-command-event) - this-command 'egg-use-context) - (setq egg-context (egg-exit-conversion))) + (setq egg-context (egg-exit-conversion) + unread-command-events (list last-command-event) + this-command 'egg-use-context)) (defun egg-make-bunsetsu (backend bunsetsu last) (let* ((converted (copy-sequence (egg-get-bunsetsu-converted bunsetsu))) @@ -597,27 +634,30 @@ next/previous-candidate, if positive num egg-conversion-minor-separator egg-conversion-major-separator)))) (setq len (length converted)) - (set-text-properties 0 len + (egg-remove-all-text-properties 0 len converted) + (add-text-properties 0 len (list 'read-only t (egg-bunsetsu-info) bunsetsu 'egg-backend backend 'egg-lang language 'egg-bunsetsu-last last 'egg-major-continue continue - 'local-map 'egg-conversion-map) + 'point-entered 'egg-enter/leave-fence + 'point-left 'egg-enter/leave-fence + 'modification-hooks '(egg-modify-fence)) converted) (if face (egg-set-face 0 len1 face converted)) converted)) -(defun egg-insert-bunsetsu-list (backend bunsetsu-list &optional last) +(defun egg-insert-bunsetsu-list (backend bunsetsu-list &optional last before) (let ((len (length bunsetsu-list))) - (insert - (mapconcat - (lambda (b) - (setq len (1- len)) - (egg-make-bunsetsu backend b (and (= len 0) last))) - bunsetsu-list "")))) + (funcall (if before 'insert-before-markers 'insert) + (mapconcat + (lambda (b) + (setq len (1- len)) + (egg-make-bunsetsu backend b (and (= len 0) last))) + bunsetsu-list nil)))) (defun egg-beginning-of-conversion-buffer (n) (interactive "p") @@ -627,13 +667,13 @@ next/previous-candidate, if positive num ((null (get-text-property (1- (point)) 'egg-start)) (goto-char (previous-single-property-change (point) 'egg-start))))) -(defun egg-end-of-conversion-buffer(n) +(defun egg-end-of-conversion-buffer (n) (interactive "p") (cond ((<= n 0) (egg-beginning-of-conversion-buffer 1)) (t - (goto-char (next-single-property-change (point) 'egg-end)) + (goto-char (egg-next-single-property-change (point) 'egg-end)) (backward-char)))) (defun egg-backward-bunsetsu (n) @@ -677,8 +717,7 @@ next/previous-candidate, if positive num (egg-get-bunsetsu-info (1- p)))) (defun egg-get-previous-major-bunsetsu (p) - (let ((p (point)) - (prev (egg-get-previous-bunsetsu p)) + (let ((prev (egg-get-previous-bunsetsu p)) bunsetsu) (while prev (setq bunsetsu (cons prev bunsetsu) @@ -702,7 +741,10 @@ next/previous-candidate, if positive num (nreverse bunsetsu))) (defsubst egg-get-major-bunsetsu-source (list) - (mapconcat (lambda (b) (egg-get-bunsetsu-source b)) list "")) + (mapconcat 'egg-get-bunsetsu-source list nil)) + +(defsubst egg-get-major-bunsetsu-converted (list) + (mapconcat 'egg-get-bunsetsu-converted list nil)) (defvar egg-inspect-mode nil "*Display clause information on candidate selection, if non-NIL.") @@ -724,8 +766,8 @@ next/previous-candidate, if positive num (defvar egg-candidate-selection-major t) (make-variable-buffer-local 'egg-candidate-selection-major) -(defsubst egg-set-candsel-info (b prev-b next-b major) - (setq egg-candidate-selection-info (list b prev-b next-b major))) +(defsubst egg-set-candsel-info (b major) + (setq egg-candidate-selection-info (list (car b) (cadr b) (caddr b) major))) (defsubst egg-candsel-last-bunsetsu () (car egg-candidate-selection-info)) (defsubst egg-candsel-last-prev-b () (nth 1 egg-candidate-selection-info)) @@ -744,9 +786,8 @@ next/previous-candidate, if positive num (defun egg-get-candsel-target-major () (let ((bunsetsu (egg-get-major-bunsetsu (point))) - next-b prev-b next) - (setq prev-b (egg-get-previous-major-bunsetsu (point)) - next (egg-next-bunsetsu-point (point) (length bunsetsu))) + (prev-b (egg-get-previous-major-bunsetsu (point))) + next-b) (cond ((and (egg-candsel-last-major) (egg-major-bunsetsu-tail-p (egg-candsel-last-prev-b) prev-b) @@ -755,31 +796,63 @@ next/previous-candidate, if positive num bunsetsu)) (setq bunsetsu (egg-candsel-last-bunsetsu) prev-b (egg-candsel-last-prev-b) - next-b (egg-candsel-last-next-b)) - (setq next (egg-next-bunsetsu-point (point) (length bunsetsu)))) - ((null (egg-get-bunsetsu-last (1- next))) - (setq next-b (egg-get-major-bunsetsu next)))) + next-b (egg-candsel-last-next-b))) + ((null (egg-get-bunsetsu-last + (egg-next-bunsetsu-point (point) (1- (length bunsetsu))))) + (setq next-b (egg-get-major-bunsetsu + (egg-next-bunsetsu-point (point) (length bunsetsu)))))) (setq egg-candidate-selection-major t) - (list bunsetsu prev-b next-b next t))) + (list bunsetsu prev-b next-b t))) (defun egg-get-candsel-target-minor () (let* ((bunsetsu (list (egg-get-bunsetsu-info (point)))) (prev-b (egg-get-previous-bunsetsu (point))) (next-b (egg-get-next-bunsetsu (point)))) - (and prev-b (setq prev-b (list prev-b))) - (and next-b (setq next-b (list next-b))) (setq egg-candidate-selection-major nil) - (list bunsetsu prev-b next-b (egg-next-bunsetsu-point (point)) nil))) + (list bunsetsu (and prev-b (list prev-b)) (and next-b (list next-b)) nil))) -(defun egg-insert-new-bunsetsu (b prev-b next-b next end) - (let ((backend (egg-get-backend (point))) - start last) - (setq start (egg-previous-bunsetsu-point (point) (length prev-b))) - (setq end (or end (egg-next-bunsetsu-point next (length next-b)))) - (setq last (egg-get-bunsetsu-last (1- end))) - (delete-region start end) - (egg-insert-bunsetsu-list backend (append prev-b (append b next-b)) last) - (goto-char (egg-next-bunsetsu-point start (length prev-b))) +(defun egg-check-candsel-target (b prev-b next-b major) + (if major + (and (egg-major-bunsetsu-tail-p + prev-b (egg-get-previous-major-bunsetsu (point))) + (let* ((cur-b (egg-get-major-bunsetsu (point))) + (next-p (egg-next-bunsetsu-point (point) (length cur-b)))) + (egg-major-bunsetsu-head-p + (append b next-b) + (append cur-b (and (null (egg-get-bunsetsu-last (1- next-p))) + (egg-get-major-bunsetsu next-p)))))) + (and (eq (egg-get-bunsetsu-info (point)) (car b)) + (eq (egg-get-previous-bunsetsu (point)) (car prev-b)) + (eq (egg-get-next-bunsetsu (point)) (car next-b))))) + +(defun egg-insert-new-bunsetsu (b tail new-b) + (let* ((backend (egg-get-backend (point))) + (start (egg-previous-bunsetsu-point (point) (length (cadr new-b)))) + (end (egg-next-bunsetsu-point (point) (+ (length b) (length tail)))) + (last (egg-get-bunsetsu-last (1- end))) + (insert-before (buffer-has-markers-at end))) + (cond + ((buffer-has-markers-at end) + (delete-region start end) + (egg-insert-bunsetsu-list backend + (append (cadr new-b) (car new-b) (caddr new-b)) + last t)) + ((buffer-has-markers-at (egg-next-bunsetsu-point (point) (length b))) + (delete-region start end) + (egg-insert-bunsetsu-list backend (append (cadr new-b) (car new-b)) + nil t) + (egg-insert-bunsetsu-list backend (caddr new-b) last)) + ((buffer-has-markers-at (point)) + (delete-region start end) + (egg-insert-bunsetsu-list backend (cadr new-b) nil t) + (egg-insert-bunsetsu-list backend (append (car new-b) (caddr new-b)) + last)) + (t + (delete-region start end) + (egg-insert-bunsetsu-list backend + (append (cadr new-b) (car new-b) (caddr new-b)) + last))) + (goto-char (egg-next-bunsetsu-point start (length (cadr new-b)))) (if egg-inspect-mode (egg-inspect-bunsetsu t)))) @@ -812,16 +885,19 @@ next/previous-candidate, if positive num (apply 'egg-next-candidate-internal (- n) (egg-get-candsel-target-minor))) (defvar egg-candidate-select-counter 1) +(make-variable-buffer-local 'egg-candidate-select-counter) -(defun egg-next-candidate-internal (n b prev-b next-b next major) +(defun egg-next-candidate-internal (n b prev-b next-b major) (if (eq last-command (if major 'egg-candidate-major 'egg-candidate-minor)) (setq egg-candidate-select-counter (1+ egg-candidate-select-counter)) (setq egg-candidate-select-counter 1)) (if (= egg-candidate-select-counter egg-conversion-auto-candidate-menu) - (egg-select-candidate-internal nil b prev-b next-b next major) + (egg-select-candidate-internal + nil egg-conversion-auto-candidate-menu-show-all + b prev-b next-b major) (setq this-command (if major 'egg-candidate-major 'egg-candidate-minor)) (let ((inhibit-read-only t) - candidates nitem i beep) + new-b candidates nitem i beep) (setq candidates (egg-list-candidates b prev-b next-b major)) (if (null candidates) (setq beep t) @@ -829,21 +905,18 @@ next/previous-candidate, if positive num nitem (length (cdr candidates))) (cond ((< i 0) ; go backward as if it is ring - (while (< i 0) - (setq i (+ i nitem)))) + (setq i (% i nitem)) + (if (< i 0) + (setq i (+ i nitem)))) ((< i nitem)) ; OK (egg-conversion-wrap-select ; go backward as if it is ring - (while (>= i nitem) - (setq i (- i nitem)))) - (t ; don't go forward + (setq i (% i nitem))) + (t ; don't go forward (setq i (1- nitem) beep t))) - (setq b (egg-decide-candidate b i prev-b next-b) - prev-b (nth 1 b) - next-b (nth 2 b) - b (car b)) - (egg-set-candsel-info b prev-b next-b major) - (egg-insert-new-bunsetsu b prev-b next-b next nil)) + (setq new-b (egg-decide-candidate b i prev-b next-b)) + (egg-set-candsel-info new-b major) + (egg-insert-new-bunsetsu b (caddr new-b) new-b)) (if beep (ding))))) @@ -851,39 +924,65 @@ next/previous-candidate, if positive num (let ((n -1)) (mapcar (lambda (item) (cons item (setq n (1+ n)))) list))) -(defun egg-select-candidate-major () - (interactive) - (apply 'egg-select-candidate-internal nil (egg-get-candsel-target-major))) +(defun egg-sort-item (list sort) + (if (eq (null sort) (null egg-conversion-sort-by-converted-string)) + list + (sort list (lambda (a b) (string< (car a) (car b)))))) -(defun egg-select-candidate-minor () - (interactive) - (apply 'egg-select-candidate-internal nil (egg-get-candsel-target-minor))) +(defun egg-select-candidate-major (sort) + (interactive "P") + (apply 'egg-select-candidate-internal sort nil (egg-get-candsel-target-major))) -(defun egg-select-candidate-list-all-major () - (interactive) - (apply 'egg-select-candidate-internal t (egg-get-candsel-target-major))) +(defun egg-select-candidate-minor (sort) + (interactive "P") + (apply 'egg-select-candidate-internal sort nil (egg-get-candsel-target-minor))) -(defun egg-select-candidate-list-all-minor () - (interactive) - (apply 'egg-select-candidate-internal t (egg-get-candsel-target-minor))) +(defun egg-select-candidate-list-all-major (sort) + (interactive "P") + (apply 'egg-select-candidate-internal sort t (egg-get-candsel-target-major))) -(defun egg-select-candidate-internal (all b prev-b next-b next major) - (let ((inhibit-read-only t) - (prompt (egg-get-message 'candidate)) - candidates item-list new i) +(defun egg-select-candidate-list-all-minor (sort) + (interactive "P") + (apply 'egg-select-candidate-internal sort t (egg-get-candsel-target-minor))) + +(defun egg-select-candidate-internal (sort all b prev-b next-b major) + (let ((prompt (egg-get-message 'candidate)) + new-b candidates pos clist item-list i) (setq candidates (egg-list-candidates b prev-b next-b major)) (if (null candidates) (ding) - (setq all (and all '(menudiag-list-all)) - item-list (egg-numbering-item (cdr candidates)) + (setq pos (car candidates) + clist (cdr candidates) + item-list (egg-sort-item (egg-numbering-item clist) sort) i (menudiag-select (list 'menu prompt item-list) - (cons (nth (car candidates) item-list) all)) - new (egg-decide-candidate b i prev-b next-b) - prev-b (nth 1 new) - next-b (nth 2 new) - new (car new)) - (egg-set-candsel-info new prev-b next-b major) - (egg-insert-new-bunsetsu new prev-b next-b next nil)))) + all + (list (assq (nth pos clist) item-list)))) + (if (or (null (egg-conversion-fence-p)) + (null (egg-check-candsel-target b prev-b next-b major))) + (error "Fence was already modified") + (let ((inhibit-read-only t)) + (setq new-b (egg-decide-candidate b i prev-b next-b)) + (egg-set-candsel-info new-b major) + (egg-insert-new-bunsetsu b (caddr new-b) new-b)))))) + +(defun egg-hiragana (&optional minor) + (interactive "P") + (if (null minor) + (apply 'egg-special-convert this-command (egg-get-candsel-target-major)) + (apply 'egg-special-convert this-command (egg-get-candsel-target-minor)))) + +(defalias 'egg-katakana 'egg-hiragana) +(defalias 'egg-pinyin 'egg-hiragana) +(defalias 'egg-zhuyin 'egg-hiragana) +(defalias 'egg-hangul 'egg-hiragana) + +(defun egg-special-convert (type b prev-b next-b major) + (let ((inhibit-read-only t) + (new-b (egg-special-candidate b prev-b next-b major type))) + (if (null new-b) + (ding) + (egg-set-candsel-info new-b major) + (egg-insert-new-bunsetsu b (caddr new-b) new-b)))) (defun egg-separate-characters (str) (let* ((v (egg-string-to-vector str)) @@ -915,7 +1014,7 @@ next/previous-candidate, if positive num (defun egg-enlarge-bunsetsu-internal (n major) (let ((inhibit-read-only t) - b prev-b next-b s1 s1len s2 s2len nchar i last next end beep) + b prev-b next-b new-b s1 s1len s2 s2len nchar i last end beep) (if major (setq b (egg-get-major-bunsetsu (point)) prev-b (egg-get-previous-major-bunsetsu (point))) @@ -938,28 +1037,23 @@ next/previous-candidate, if positive num ((<= n 0) (setq beep t nchar (and (/= s1len 1) (egg-get-char-size 0 s1)))) ((> n s2len) - (setq beep t nchar (and (/= s2len 0) (length s2)))) + (setq beep t nchar (and (/= s2len s1len) (length s2)))) (t (setq nchar 0) (while (> n 0) (setq nchar (+ nchar (egg-get-char-size nchar s2)) n (1- n))))) - (if nchar - (progn - (setq next-b (nconc b next-b) - i (length (egg-get-bunsetsu-source (car next-b)))) - (while (< i nchar) - (setq next-b (cdr next-b) - i (+ i (length (egg-get-bunsetsu-source (car next-b)))))) - (setq next-b (prog1 (cdr next-b) (setcdr next-b nil)) - next (egg-next-bunsetsu-point (point) (length b)) - b (egg-change-bunsetsu-length b prev-b next-b nchar major)) - (if (null b) - (setq beep t) - (setq prev-b (nth 1 b) - next-b (nth 2 b) - b (car b)) - (egg-insert-new-bunsetsu b prev-b next-b next (and next-b end))))) + (when nchar + (setq next-b (nconc b next-b) + i (length (egg-get-bunsetsu-source (car next-b)))) + (while (< i nchar) + (setq next-b (cdr next-b) + i (+ i (length (egg-get-bunsetsu-source (car next-b)))))) + (setq next-b (prog1 (cdr next-b) (setcdr next-b nil)) + new-b (egg-change-bunsetsu-length b prev-b next-b nchar major)) + (if (null new-b) + (setq beep t) + (egg-insert-new-bunsetsu b (and (caddr new-b) next-b) new-b))) (if beep (ding)))) @@ -1013,13 +1107,13 @@ next/previous-candidate, if positive num (previous-single-property-change (point) 'egg-start))) (end (if (get-text-property (point) 'egg-end) (point) - (next-single-property-change (point) 'egg-end))) + (egg-next-single-property-change (point) 'egg-end))) (decided (buffer-substring start (point))) (undecided (buffer-substring (point) end)) i len bunsetsu source context) (delete-region (previous-single-property-change start 'egg-start nil (point-min)) - (next-single-property-change end 'egg-end nil (point-max))) + (egg-next-single-property-change end 'egg-end nil (point-max))) (setq i 0 len (length decided)) (while (< i len) @@ -1028,9 +1122,7 @@ next/previous-candidate, if positive num (if (or (= i len) (egg-get-bunsetsu-last (1- i) decided)) (progn - (apply 'insert (mapcar - (lambda (b) (egg-get-bunsetsu-converted b)) - bunsetsu)) + (insert (mapconcat 'egg-get-bunsetsu-converted bunsetsu nil)) (setq context (cons (cons (egg-bunsetsu-get-backend (car bunsetsu)) (egg-end-conversion bunsetsu nil)) context) @@ -1061,19 +1153,19 @@ next/previous-candidate, if positive num (previous-single-property-change (point) 'egg-start))) (end (if (get-text-property (point) 'egg-end) (point) - (next-single-property-change (point) 'egg-end))) + (egg-next-single-property-change (point) 'egg-end))) (bunsetsu (egg-get-bunsetsu-info start))) (delete-region (previous-single-property-change start 'egg-start nil (point-min)) - (next-single-property-change end 'egg-end nil (point-max))) + (egg-next-single-property-change end 'egg-end nil (point-max))) (egg-end-conversion (list bunsetsu) nil) (insert (egg-string-to-char-at (egg-get-bunsetsu-converted bunsetsu) 0)))) (defun egg-exit-conversion () (interactive) - (if (egg-get-bunsetsu-info (point)) + (if (egg-conversion-fence-p) (progn - (goto-char (next-single-property-change (point) 'egg-end)) + (goto-char (egg-next-single-property-change (point) 'egg-end)) (egg-decide-before-point)))) (defun egg-abort-conversion () @@ -1087,8 +1179,8 @@ next/previous-candidate, if positive num 'egg-start nil (point-min))) (setq source (get-text-property (point) 'egg-source) context (get-text-property (point) 'egg-context)) - (delete-region (point) (next-single-property-change - (next-single-property-change (point) 'egg-end) + (delete-region (point) (egg-next-single-property-change + (egg-next-single-property-change (point) 'egg-end) 'egg-end nil (point-max))) (its-restart source nil nil context))) @@ -1156,4 +1248,5 @@ next/previous-candidate, if positive num (help-setup-xref (cons #'help-xref-mode (current-buffer)) (interactive-p)))) (provide 'egg-cnv) -;;; egg-cnv.el ends here. + +;;; egg-cnv.el ends here Index: egg-com.el =================================================================== RCS file: /cvs/tamago/tamago/egg-com.el,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- egg-com.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ egg-com.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -136,6 +136,7 @@ (cons ccl-decode-fixed-euc-kr ccl-encode-fixed-euc-kr)) ;; Chinese + (defconst egg-pinyin-shengmu '(("" . 0) ("B" . 1) ("C" . 2) ("Ch" . 3) ("D" . 4) ("F" . 5) ("G" . 6) ("H" . 7) ("J" . 8) ("K" . 9) @@ -521,53 +522,60 @@ (defun decode-fixed-euc-china-region (beg end type zhuyin) "Decode EUC-CN/TW encoded text in the region. Return the length of resulting text." - (prog1 - (let ((str (string-as-unibyte (buffer-substring beg end))) - (i 0) - l c0 c1 s y ss) - (delete-region beg end) - (setq l (1- (length str))) - (while (< i l) - (setq c0 (aref str i) - c1 (aref str (1+ i)) - i (+ i 2)) - (cond - ((eq c0 0) - (if (> c1 ?\xa0) - (insert leading-code-private-11 - (charset-id 'chinese-sisheng) - c1) - (insert c1))) - ((>= c0 ?\x80) - (cond - ((eq type 'cn) - (insert (charset-id 'chinese-gb2312) c0 (logior c1 ?\x80))) - ((>= c1 ?\x80) - (insert (charset-id 'chinese-cns11643-1) c0 c1)) - (t - (insert (charset-id 'chinese-cns11643-2) c0 (+ c1 ?\x80))))) - (t - (setq c1 (logand c1 ?\x7f)) - (setq s (- (lsh c1 -2) 7);;(+ (lsh (- c1 32) -2) 1) - y (- (lsh c0 -1) 16);;(lsh (- c0 32) -1) - ss (+ (logand c0 1) (logand c1 3))) - (if (and (eq s 20) - (eq (aref egg-pinyin-table (+ (* 39 20) y)) 0)) - (setq s 0)) - (if (null zhuyin) - (setq s (car (nth s egg-pinyin-shengmu)) - y (car (nth (+ (* 5 y) ss) egg-pinyin-yunmu))) - (setq c0 (aref egg-zhuyin-table (+ (* 41 s) y))) - (if (eq (logand c0 ?\x8080) ?\x80) - (setq s (lsh c0 -8) - y (logand c0 ?\x7f))) - (setq s (car (nth s egg-zhuyin-shengmu)) - y (car (nth (+ (* 5 y) ss) egg-zhuyin-yunmu)))) - (if enable-multibyte-characters - (insert s y) - (insert (string-as-unibyte s) (string-as-unibyte y)))))) - (- (point) beg)) - (if (looking-at "\0\0") (forward-char 2)))) + (let ((str (string-as-unibyte (buffer-substring beg end))) + (i 0) + (char (make-string 3 0)) + l c0 c1 s y ss) + (delete-region beg end) + (setq l (1- (length str))) + (while (< i l) + (setq c0 (aref str i) + c1 (aref str (1+ i)) + i (+ i 2)) + (cond + ((eq c0 0) + (if (<= c1 ?\xa0) + (insert c1) + (aset char 0 leading-code-private-11) + (aset char 1 (charset-id 'chinese-sisheng)) + (aset char 2 c1) + (insert (string-as-multibyte char)))) + ((>= c0 ?\x80) + (cond + ((eq type 'cn) + (aset char 0 (charset-id 'chinese-gb2312)) + (aset char 1 c0) + (aset char 2 (logior c1 ?\x80))) + ((>= c1 ?\x80) + (aset char 0 (charset-id 'chinese-cns11643-1)) + (aset char 1 c0) + (aset char 2 c1)) + (t + (aset char 0 (charset-id 'chinese-cns11643-2)) + (aset char 1 c0) + (aset char 2 (+ c1 ?\x80)))) + (insert (string-as-multibyte char))) + (t + (setq c1 (logand c1 ?\x7f)) + (setq s (- (lsh c1 -2) 7);;(+ (lsh (- c1 32) -2) 1) + y (- (lsh c0 -1) 16);;(lsh (- c0 32) -1) + ss (+ (logand c0 1) (logand c1 3))) + (if (and (eq s 20) + (eq (aref egg-pinyin-table (+ (* 39 20) y)) 0)) + (setq s 0)) + (if (null zhuyin) + (setq s (car (nth s egg-pinyin-shengmu)) + y (car (nth (+ (* 5 y) ss) egg-pinyin-yunmu))) + (setq c0 (aref egg-zhuyin-table (+ (* 41 s) y))) + (if (eq (logand c0 ?\x8080) ?\x80) + (setq s (lsh c0 -8) + y (logand c0 ?\x7f))) + (setq s (car (nth s egg-zhuyin-shengmu)) + y (car (nth (+ (* 5 y) ss) egg-zhuyin-yunmu)))) + (if enable-multibyte-characters + (insert s y) + (insert (string-as-unibyte s) (string-as-unibyte y)))))) + (- (point) beg))) (defun post-read-decode-fixed-euc-china (len type zhuyin) (let ((pos (point)) @@ -620,7 +628,7 @@ Return the length of resulting text." (eval-and-compile (define-ccl-program ccl-decode-egg-binary - `(2 + `(1 ((read r0) (loop (if (r0 == ?\xff) @@ -628,7 +636,7 @@ Return the length of resulting text." (write-read-repeat r0))))) (define-ccl-program ccl-encode-egg-binary - `(1 + `(2 ((read r0) (loop (if (r0 == ?\xff) @@ -705,6 +713,7 @@ U: 32-bit integer. The argument is 2 el u: 32-bit integer. The argument is treat as unsigned integer. (Note: Elisp's integer may be less than 32 bits) i: 32-bit integer. + (Note: Elisp's integer may be greater than 32 bits) w: 16-bit integer. b: 8-bit integer. S: 16-bit wide-character EUC string (0x0000 terminated). @@ -776,6 +785,14 @@ V: Fixed length string (0x00 terminated) (+ (lsh (comm-following+forward-char) 8) (comm-following+forward-char))))) +(defun comm-unpack-i32 () + (progn + (comm-require-process-output 4) + (+ (lsh (- (logxor (comm-following+forward-char) 128) 128) 24) + (lsh (comm-following+forward-char) 16) + (lsh (comm-following+forward-char) 8) + (comm-following+forward-char)))) + (defun comm-unpack-u32 () (progn (comm-require-process-output 4) @@ -852,7 +869,7 @@ See `comm-format' for FORMAT." (list (cond ((eq f 'U) `(setq ,arg (comm-unpack-u32c))) ((eq f 'u) `(setq ,arg (comm-unpack-u32))) - ((eq f 'i) `(setq ,arg (comm-unpack-u32))) + ((eq f 'i) `(setq ,arg (comm-unpack-i32))) ((eq f 'w) `(setq ,arg (comm-unpack-u16))) ((eq f 'b) `(setq ,arg (comm-unpack-u8))) ((eq f 'S) `(setq ,arg (comm-unpack-u16-string))) Index: egg-mlh.el =================================================================== RCS file: /cvs/tamago/tamago/egg-mlh.el,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- egg-mlh.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ egg-mlh.el 23 Aug 2002 07:46:38 -0000 1.2 @@ -3,10 +3,10 @@ ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc -;; Author: NIIBE Yutaka +;; Author: NIIBE Yutaka ;; KATAYAMA Yoshio ; Multilingual Enhancement -;; Maintainer: TOMURA Satoru +;; Maintainer: NIIBE Yutaka ;; Keywords: mule, multilingual, input method Index: egg-sim-old.el =================================================================== RCS file: egg-sim-old.el diff -N egg-sim-old.el --- egg-sim-old.el 27 Jan 2001 18:46:59 -0000 1.1.1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,514 +0,0 @@ -;;; egg-sim.el --- EGG Simple Input Method - -;; Copyright (C) 2000 Electrotechnical Laboratory, JAPAN. -;; Licensed to the Free Software Foundation. -;; Copyright (C) 2000 TOMURA Satoru - - -;; Author: TOMURA Satoru - -;; Maintainer: TOMURA Satoru - -;; Keywords: mule, multilingual, input method - -;; This file is part of EGG. - -;; EGG is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; EGG is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;;; Code: - -;;; This code is based on egg-jsymbol.el of Egg V3. - -;;; 92.10.18 modified for Mule Ver.0.9.6 by K.Handa -;;; Moved from egg.el -;;; 92.12.26 modified for Mule Ver.0.9.7 by T.Shingu -;;; JIS Hojo Kanji support. - -(require 'menudiag) - -(provide 'egg-sim) - -(defun make-char-list (charset &optional from to) - (let ((result nil) - (chars (charset-chars charset)) - min max) - (setq min (if (= chars 96) 32 33) - max (if (= chars 96) 127 126)) - (setq from (if from (+ min (1- from)) min) - to (if to (+ min (1- to)) max)) - (and (<= min from) - (<= to max) - (cond ((= (charset-dimension charset) 1) - (while (<= from to) - (setq result (cons (char-to-string - (make-char charset to)) - result) - to (1- to))) - result) - ((= (charset-dimension charset) 2) - (while (<= from to) - (let ((code max)) - (while (<= min code) - (setq result (cons (char-to-string - (make-char charset to code)) - result) - code (1- code)))) - (setq to (1- to))) - result))))) - -(defvar egg-sim-ascii-menu - '(menu "ASCII:" ,(make-char-list 'ascii))) - -(defvar egg-sim-latin-1-menu - `(menu "ISO 8859-1:" ,(make-char-list 'latin-iso8859-1))) - -(defvar egg-sim-latin-2-menu - `(menu "ISO 8859-2:" ,(make-char-list 'latin-iso8859-2))) - -(defvar egg-sim-latin-3-menu - `(menu "ISO 8859-3:" ,(make-char-list 'latin-iso8859-3))) - -(defvar egg-sim-latin-4-menu - `(menu "ISO 8859-4:" ,(make-char-list 'latin-iso8859-4))) - -(defvar egg-sim-latin-5-menu - `(menu "ISO 8859-9:" ,(make-char-list 'latin-iso8859-9))) - -(defvar egg-sim-cyrillic-menu - `(menu "ISO 8859-5:" ,(make-char-list 'cyrillic-iso8859-5))) - -(defvar egg-sim-arabic-menu - `(menu "ISO 8859-6:" ,(make-char-list 'arabic-iso8859-6))) - -(defvar egg-sim-greek-menu - `(menu "ISO 8859-7:" ,(make-char-list 'greek-iso8859-7))) - -(defvar egg-sim-hebrew-menu - `(menu "ISO 8859-8:" ,(make-char-list 'hebrew-iso8859-8))) - -(defvar egg-sim-thai-menu - `(menu "TIS620.2529:" ,(make-char-list 'thai-tis620))) - -(defvar egg-sim-lao-menu - `(menu "lao:" ,(make-char-list 'lao))) - -(defvar egg-sim-vietnamese-menu - `(menu "Vietnamese:" - (("VISCII1.1(lower-case)" . - (menu "VISCII1.1 lower-case:" - ,(make-char-list 'vietnamese-viscii-lower))) - ("VISCII1.1(upper-case)" . - (menu "VISCII1.1 upper-case:" - ,(make-char-list 'vietnamese-viscii-upper)))))) - -(defvar egg-sim-chinese-big5-menu - `(menu "Big5:" - (("Level1" . - (menu "Big 5 Level1:" , (make-char-list 'chinese-big5-1))) - ("Level2" . - (menu "Big 5 Level2:" , (make-char-list 'chinese-big5-2)))))) - -(defvar egg-sim-chinese-cns-menu - `(menu "CNS 11643:" - (("Plane-1" . - (menu "CNS 11643-1:" ,(make-char-list 'chinese-cns11643-1))) - ("Plane- 2" . - (menu "CNS 11643-2:" ,(make-char-list 'chinese-cns11643-2))) - ("Plane-3" . - (menu "CNS 11643-3:" ,(make-char-list 'chinese-cns11643-3))) - ("Plane-4" . - (menu "CNS 11643-4:" ,(make-char-list 'chinese-cns11643-4))) - ("Plane-5" . - (menu "CNS 11643-5:" ,(make-char-list 'chinese-cns11643-5))) - ("Plane-6" . - (menu "CNS 11643-6:" ,(make-char-list 'chinese-cns11643-6))) - ("Plane-7" . - (menu "CNS 11643-7:" ,(make-char-list 'chinese-cns11643-7)))))) - -(defvar egg-sim-chinese-gb-menu - `(menu "GB 2312:" - (("All" . - (menu "GB 2312:" ,(make-char-list 'chinese-gb2312))) - ("Symbols" . - (menu "GB2312/1:" ,(make-char-list 'chinese-gb2312 1 1))) - ("Numbers" . - (menu "GB2312/2:" ,(make-char-list 'chinese-gb2312 2 2))) - ("Fullwidth ASCII" . - (menu "GB2312/3:" ,(make-char-list 'chinese-gb2312 3 3))) - ("Hiragana" . - (menu "GB2312/4:" ,(make-char-list 'chinese-gb2312 4 4))) - ("Katanaka" . - (menu "GB2312/5:" ,(make-char-list 'chinese-gb2312 5 5))) - ("Greek" . - (menu "GB2312/6:" ,(make-char-list 'chinese-gb2312 6 6))) - ("Cyrillic" . - (menu "GB2312/7:" ,(make-char-list 'chinese-gb2312 7 7))) - ("Pinyin/Bopomofo" . - (menu "GB2312/8:" ,(make-char-list 'chinese-gb2312 8 8))) - ("Box Drawings" . - (menu "GB2312/9:" ,(make-char-list 'chinese-gb2312 9 9))) - ))) - -(defvar egg-sim-chinese-menu - `(menu "Chinese:" - (("GB2312" . , egg-sim-chinese-gb-menu) - ("CNS11643" . , egg-sim-chinese-cns-menu) - ("Big5" . , egg-sim-chinese-big5-menu)))) - -(defvar egg-sim-korean-menu - `(menu "Korean:" - (("KSC5601" . - (menu "KSC 5601:" ,(make-char-list 'korean-ksc5601))) - ("Symbol" . - (menu "KSC 5601/1-2:" ,(make-char-list 'korean-ksc5601 1 2))) - ("Fullwidth ASCII" . - (menu "KSC 5601/3:" , (make-char-list 'korean-ksc5601 3 3))) - ("Jamo" . - (menu "KSC 5601/4:" , (make-char-list 'korean-ksc5601 4 4))) - ("Roman Number/Greek" . - (menu "KSC 5601/5:" , (make-char-list 'korean-ksc5601 5 5))) - ("Box Drawings" . - (menu "KSC 5601/6:" , (make-char-list 'korean-ksc5601 6 6))) - ("Unit" . - (menu "KSC 5601/7:" , (make-char-list 'korean-ksc5601 7 7))) - ("Misc." . - (menu "KSC 5601/8-9:" , (make-char-list 'korean-ksc5601 8 9))) - ("Hiragana" . - (menu "KSC 5601/10:" , (make-char-list 'korean-ksc5601 10 10))) - ("Katakana" . - (menu "KSC 5601/11:" , (make-char-list 'korean-ksc5601 11 11))) - ("Cyrillic" . - (menu "KSC 5601/12:" , (make-char-list 'korean-ksc5601 12 12))) - ("Hangul" . - (menu "KSC 5601/16-40:" , (make-char-list 'korean-ksc5601 16 40))) - ("Hanja" . - (menu "KSC 5601/42-93:" , (make-char-list 'korean-ksc5601 42 93)))))) - -(defvar egg-sim-japanese-menu - `(menu "Japanese:" - (("JISX0201" . - ,(append (make-char-list 'latin-jisx0201) - (make-char-list 'katakana-jisx0201))) - ("JISX0208" . - (menu "JIS X 0208:" ,(make-char-list 'japanese-jisx0208))) - ("JISX0212" . - (menu "JIS X 0212:" ,(make-char-list 'japanese-jisx0212))) - ("JISX0208/0212" . - (menu "$B5-9fF~NO(B:" - (("JIS$BF~NO(B" . japanese-jisx0208) - ("$B5-9f(B" . - (menu "$B5-9f(B:" , (make-char-list 'japanese-jisx0208 1 2))) - ("$B1Q?t;z(B" . - (menu "$B1Q?t;z(B:" , (make-char-list 'japanese-jisx0208 3 3))) - ("$B$R$i$,$J(B" . - (menu "$B$R$i$,$J(B:" , (make-char-list 'japanese-jisx0208 4 4))) - ("$B%+%?%+%J(B" . - (menu "$B%+%?%+%J(B:" , (make-char-list 'japanese-jisx0208 5 5))) - ("$B%.%j%7%cJ8;z(B" . - (menu "$B%.%j%7%cJ8;z(B:" , (make-char-list 'japanese-jisx0208 6 6))) - ("$B%-%j%kJ8;z(B" . - (menu "$B%-%j%kJ8;z(B:" , (make-char-list 'japanese-jisx0208 7 7))) - ("$B7S@~(B" . - (menu "$B7S@~(B:" , (make-char-list 'japanese-jisx0208 8 8))) - ;;;"$BIt(B" ",1%(B" ",15(B" ",2e(B" ",1U(B" ",1e(B" ",1u(B" -6| ",2g(B" "&" "6" "F" "V" "f" "v" ",2&(B" ",26(B" ",1&(B" ",16(B" ",1F(B" ",1V(B" ",1f(B" ",1v(B" -7| "'" "7" "G" "W" "g" "w" ",2'(B" ",27(B" ",1'(B" ",17(B" ",1G(B" ",1W(B" ",1g(B" ",1w(B" -8| "(" "8" "H" "X" "h" "x" ",2((B" ",28(B" ",1((B" ",18(B" ",2h(B" ",1X(B" ",1h(B" ",1x(B" -9| ",2[(B" ")" "9" "I" "Y" "i" "y" ",2)(B" ",2v(B" ",1)(B" ",2q(B" ",2i(B" ",2y(B" ",1i(B" ",1y(B" -A| "*" ":" "J" "Z" "j" "z" ",2*(B" ",2w(B" ",1*(B" ",2Q(B" ",2j(B" ",2z(B" ",1j(B" ",1z(B" -B| "+" ";" "K" "[" "k" "{" ",2+(B" ",2o(B" ",1+(B" ",2W(B" ",2k(B" ",1[(B" ",1k(B" ",1{(B" -C| "," "<" "L" "\" "l" "|" ",2,(B" ",2|(B" ",1,(B" ",2X(B" ",2l(B" ",1\(B" ",1l(B" ",1|(B" -D| "-" "=" "M" "]" "m" "}" ",2-(B" ",2{(B" ",1-(B" ",1=(B" ",2m(B" ",2}(B" ",1m(B" ",1}(B" -E| ",2\(B" "." ">" "N" "^" "n" "~" ",2.(B" ",2x(B" ",1.(B" ",1>(B" ",2n(B" ",1^(B" ",1n(B" ",1~(B" -F| "/" "?" "O" "_" "o" ",2/(B" ",2O(B" ",1/(B" ",2_(B" ",1O(B" ",1_(B" ",1o(B" ",2f(B" - -"a" ",1`(B" ",1d(B" ",1c(B" ",1a(B" ",1U(B" -",1e(B" ",1"(B" ",1F(B" ",1G(B" ",1!(B" ",1#(B" -",1b(B" ",1%(B" ",1&(B" ",1g(B" ",1$(B" ",1'(B" -"e" ",1i(B" ",1k(B" ",1((B" ",1h(B" ",1)(B" -",1j(B" ",1*(B" ",1,(B" ",1-(B" ",1+(B" ",1.(B" -"i" ",1m(B" ",1o(B" ",1n(B" ",1l(B" ",18(B" -"o" ",1s(B" ",1v(B" ",1u(B" ",1r(B" ",1w(B" -",1t(B" ",1/(B" ",11(B" ",12(B" ",10(B" ",15(B" -",1=(B" ",1>(B" ",17(B" ",1^(B" ",16(B" ",1~(B" -"u" ",1z(B" ",1|(B" ",1{(B" ",1y(B" ",1x(B" -",1_(B" ",1Q(B" ",1X(B" ",1f(B" ",1W(B" ",1q(B" -"y" ",1}(B" ",1V(B" ",1[(B" ",1O(B" ",1\(B" - -"A" ",2`(B" ",2d(B" ",2c(B" ",2a(B" ",2U(B" -",2e(B" ",2"(B" ",2F(B" ",2G(B" ",2!(B" ",2#(B" -",2b(B" ",2%(B" ",2&(B" ",2g(B" ",2$(B" ",2'(B" -"E" ",2h(B" ",2k(B" ",2((B" ",2i(B" ",2)(B" -",2j(B" ",2+(B" ",2,(B" ",2-(B" ",2*(B" ",2.(B" -"I" ",2l(B" ",2o(B" ",2n(B" ",2m(B" ",28(B" -"O" ",2r(B" ",2v(B" ",2u(B" ",2s(B" ",2w(B" -",2t(B" ",20(B" ",21(B" ",22(B" ",2/(B" ",25(B" -",2=(B" ",26(B" ",27(B" ",2^(B" ",2>(B" ",2~(B" -"U" ",2y(B" ",2|(B" ",2{(B" ",2z(B" ",2x(B" -",2_(B" ",2W(B" ",2X(B" ",2f(B" ",2Q(B" ",2q(B" -"Y" ",2O(B" ",2V(B" ",2[(B" ",2}(B" ",2\(B" - -",2p(B" ",1p(B" \ No newline at end of file Index: egg-util.el =================================================================== RCS file: egg-util.el diff -N egg-util.el --- egg-util.el 27 Jan 2001 18:46:05 -0000 1.1.1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,62 +0,0 @@ -;;; egg-util.el --- Utilities with Egg - -;; Copyright (C) 2000 ElectroTechinical Laboratory, Japan -;; Copyright (C) 2000 TOMURA Satoru - -;; Author: TOMURA Satoru - -;; Maintainer: TOMURA Satoru - -;; Keywords: mule, multilingual, input method - -;; This file is part of EGG. - -;; EGG is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; EGG is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;;; Code: - -(provide 'egg-util) - -(defun add-directory-to-load-path (dir) - (let ((dir (expand-file-name dir))) - (add-to-list 'load-path dir) - (let ((default-directory dir)) - (normal-top-level-add-subdirs-to-load-path)))) - -(defun locate-libraries (library &optional nosuffix path interactive-call) - (let ((lpath (or path load-path)) - (result nil)) - (while lpath - (let ((path (locate-library library nosuffix lpath interactive-call))) - (if path - (progn - (setq lpath (cdr-safe - (member (directory-file-name (file-name-directory path)) - lpath)) - result (cons path result))) - (progn - (setq lpath nil - result (reverse result)))))) - result)) - -(defun load-libraries (library &optional path) - (let ((files (locate-libraries library nil (or path load-path) nil))) - (while files - (load-file (car files)) - (setq files (cdr files))))) - Index: egg-x0213.el =================================================================== RCS file: egg-x0213.el diff -N egg-x0213.el --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ egg-x0213.el 1 Dec 2001 09:42:24 -0000 1.1 @@ -0,0 +1,111 @@ +;;; jisx0213.el --- Charset Definition for JIS X 0213 + +;; Copyright (C) 1999,2000 PFU LIMITED + +;; Author: KATAYAMA Yoshio + +;; Maintainer: TOMURA Satoru + +;; Keywords: mule, multilingual, input method + +;; This file is part of EGG. + +;; EGG is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; EGG is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; This module defines JIS X 0213 character sets if these character +;; sets are not defined. This module also defines fixed-euc-jisx0213 +;; coding systems if these coding systems are not defined and can be +;; defined. + +;;; Code: + +(if (not (charsetp 'japanese-jisx0213-1)) + (define-charset 151 'japanese-jisx0213-1 + [2 94 2 0 ?O 0 "JISX0213-1" "JISX0213-1" "JISX0213-1 (Japanese)"])) + +(if (not (charsetp 'japanese-jisx0213-2)) + (define-charset 254 'japanese-jisx0213-2 + [2 94 2 0 ?P 0 "JISX0213-2" "JISX0213-2" "JISX0213-2 (Japanese)"])) + +;; Mule-UCS is required to adopt fixed-euc-jisx0213. +(or + noninteractive ;; unnecessary in non-interactive mode. + (unless (or (require 'jisx0213) + (get 'jisx0213-to-jisx0208/0212 'translation-table)) + (message "Mule-UCS not installed.")) + (coding-system-p 'fixed-euc-jisx0213) + (progn + + (define-ccl-program ccl-decode-fixed-euc-jisx0213 + `(2 + ((r3 = ,(charset-id 'katakana-jisx0201)) + (loop ;; ascii kana 212 208 + (read r0) ;; r0 - 0 0 h h + (read r1) ;; r1 - l h l h + (if (r0 < ?\x80) + ((if (r1 < ?\x80) + (write-repeat r1)) + (write r3) + (write-repeat r1)) + ((r0 &= 127) + (r0 <<= 7) + (if (r1 > ?\x80) + ((r1 &= 127) + (r2 = ,(charset-id 'japanese-jisx0213-1))) + (r2 = ,(charset-id 'japanese-jisx0213-2))) + (r0 += r1) + (translate-character jisx0213-to-jisx0208/0212 r2 r0) + (write-multibyte-character r2 r0) + (repeat) + )))))) + + (define-ccl-program ccl-encode-fixed-euc-jisx0213 + `(2 + ((loop + (read-multibyte-character r0 r1) + (r6 = (r0 == ,(charset-id 'ascii))) ;G0 + (r6 |= (r0 == ,(charset-id 'latin-jisx0201))) + (if r6 + ((write 0) + (write-repeat r1))) + (r6 = (r0 == ,(charset-id 'japanese-jisx0208))) + (r6 |= (r0 == ,(charset-id 'japanese-jisx0208-1978))) + (r6 |= (r0 == ,(charset-id 'japanese-jisx0213-1))) + (if r6 ;G1 + ((r2 = (r1 >> 7)) + (write (r2 | ?\x80)) + (write ((r1 & ?\x7f) | ?\x80)) + (repeat))) + (if (r0 == ,(charset-id 'katakana-jisx0201)) ;G2 + ((write 0) + (write (r1 | ?\x80)) + (repeat))) + (r6 = (r0 == ,(charset-id 'japanese-jisx0212))) ;G3 + (r6 |= (r0 == ,(charset-id 'japanese-jisx0213-2))) + (if r6 + ((r2 = (r1 >> 7)) + (write (r2 | ?\x80)) + (write (r1 & ?\x7f)) + (repeat))) + (repeat))))) + + (make-coding-system + 'fixed-euc-jisx0213 4 ?W "Coding System for fixed EUC Japanese" + (cons ccl-decode-fixed-euc-jisx0213 ccl-encode-fixed-euc-jisx0213)))) + +(provide 'egg-x0213) Index: egg.el =================================================================== RCS file: /cvs/tamago/tamago/egg.el,v retrieving revision 1.1.1.3 retrieving revision 1.5 diff -d -u -p -r1.1.1.3 -r1.5 --- egg.el 27 Jan 2001 18:46:59 -0000 1.1.1.3 +++ egg.el 22 Jul 2002 13:18:56 -0000 1.5 @@ -30,13 +30,19 @@ ;;; Code: -(require 'cl) +(defconst egg-version "4.0.6" + "Version number for this version of Tamago.") + +(eval-when-compile + (require 'cl)) + (require 'egg-edep) -(autoload 'egg-simple-input-method "egg-sim") +(autoload 'egg-simple-input-method "egg-sim" + "simple input method for Tamago 4." t) (defgroup egg nil - "Tamago Version 4") + "Tamago Version 4.") (defcustom egg-mode-preference t "*Make Egg as modefull input method, if non-NIL." @@ -44,13 +50,89 @@ (defvar egg-default-language) -(defvar egg-last-method-name) +(defvar egg-last-method-name nil) (make-variable-buffer-local 'egg-last-method-name) (put 'egg-last-method-name 'permanent-local t) -(defvar egg-current-keymap nil) -(make-variable-buffer-local 'egg-current-keymap) -(put 'egg-current-keymap 'permanent-local t) +(defvar egg-mode-map-alist nil) +(defvar egg-sub-mode-map-alist nil) + +(defmacro define-egg-mode-map (mode &rest initializer) + (let ((map (intern (concat "egg-" (symbol-name mode) "-map"))) + (var (intern (concat "egg-" (symbol-name mode) "-mode"))) + (comment (concat (symbol-name mode) " keymap for EGG mode."))) + `(progn + (defvar ,map (let ((map (make-sparse-keymap))) + ,@initializer + map) + ,comment) + (fset ',map ,map) + (defvar ,var nil) + (make-variable-buffer-local ',var) + (put ',var 'permanent-local t) + (or (assq ',var egg-mode-map-alist) + (setq egg-mode-map-alist (append egg-mode-map-alist + '((,var . ,map)))))))) + +(define-egg-mode-map modefull + (define-key map "\C-^" 'egg-simple-input-method) + (let ((i 33)) + (while (< i 127) + (define-key map (vector i) 'egg-self-insert-char) + (setq i (1+ i))))) + +(define-egg-mode-map modeless + (define-key map " " 'mlh-space-bar-backward-henkan) + (define-key map "\C-^" 'egg-simple-input-method)) + +(defvar egg-enter/leave-fence-hook nil) + +(defun egg-enter/leave-fence (&optional old new) + (run-hooks 'egg-enter/leave-fence-hook)) + +(defvar egg-activated nil) +(make-variable-buffer-local 'egg-activated) +(put 'egg-activated 'permanent-local t) + +(defun egg-activate-keymap () + (when (and egg-activated + (null (eq (car egg-sub-mode-map-alist) + (car minor-mode-overriding-map-alist)))) + (let ((alist (append egg-sub-mode-map-alist egg-mode-map-alist)) + (overriding (copy-sequence minor-mode-overriding-map-alist))) + (while alist + (setq overriding (delq (assq (caar alist) overriding) overriding) + alist (cdr alist))) + (setq minor-mode-overriding-map-alist (append egg-sub-mode-map-alist + overriding + egg-mode-map-alist))))) + +(add-hook 'egg-enter/leave-fence-hook 'egg-activate-keymap t) + +(defun egg-modify-fence (&rest arg) + (add-hook 'post-command-hook 'egg-post-command-func)) + +(defun egg-post-command-func () + (run-hooks 'egg-enter/leave-fence-hook) + (remove-hook 'post-command-hook 'egg-post-command-func)) + +(defvar egg-change-major-mode-buffer nil) + +(defun egg-activate-keymap-after-command () + (while egg-change-major-mode-buffer + (save-excursion + (when (buffer-live-p (car egg-change-major-mode-buffer)) + (set-buffer (car egg-change-major-mode-buffer)) + (egg-activate-keymap)) + (setq egg-change-major-mode-buffer (cdr egg-change-major-mode-buffer)))) + (remove-hook 'post-command-hook 'egg-activate-keymap-after-command)) + +(defun egg-change-major-mode-func () + (setq egg-change-major-mode-buffer (cons (current-buffer) + egg-change-major-mode-buffer)) + (add-hook 'post-command-hook 'egg-activate-keymap-after-command)) + +(add-hook 'change-major-mode-hook 'egg-change-major-mode-func) ;;;###autoload (defun egg-mode (&rest arg) @@ -64,9 +146,9 @@ (progn (its-exit-mode) (egg-exit-conversion)) - (setq describe-current-input-method-function nil) - (if (eq (current-local-map) egg-current-keymap) - (use-local-map (keymap-parent (current-local-map)))) + (setq describe-current-input-method-function nil + egg-modefull-mode nil + egg-modeless-mode nil) (remove-hook 'input-method-activate-hook 'its-set-mode-line-title t) (force-mode-line-update)) ;; Turn on @@ -77,11 +159,14 @@ (egg-set-conversion-backend (nthcdr 2 arg)) (egg-set-conversion-backend (list (assq its-current-language (nthcdr 2 arg))) t) - (setq egg-last-method-name (car arg)) - (setq egg-current-keymap (if egg-mode-preference - (egg-modefull-map) - (egg-modeless-map))) - (use-local-map egg-current-keymap) + (setq egg-last-method-name (car arg) + egg-activated t) + (egg-activate-keymap) + (if egg-mode-preference + (progn + (setq egg-modefull-mode t) + (its-define-select-keys egg-modefull-map)) + (setq egg-modeless-mode t)) (setq inactivate-current-input-method-function 'egg-mode) (setq describe-current-input-method-function 'egg-help) (make-local-hook 'input-method-activate-hook) @@ -95,43 +180,44 @@ (if (<= (minibuffer-depth) 1) (remove-hook 'minibuffer-exit-hook 'egg-exit-from-minibuffer))) -(defun egg-modefull-map () - "Generate modefull keymap for EGG mode." - (let ((map (make-sparse-keymap)) - (i 33)) - (define-key map "\C-^" 'egg-simple-input-method) - (while (< i 127) - (define-key map (vector i) 'egg-self-insert-char) - (setq i (1+ i))) - (its-define-select-keys map) - (set-keymap-parent map (current-local-map)) - map)) - -(defun egg-modeless-map () - "Generate modeless keymap for EGG mode." - (let ((map (make-sparse-keymap))) - (define-key map " " 'mlh-space-bar-backward-henkan) - (define-key map "\C-^" 'egg-simple-input-method) - (set-keymap-parent map (current-local-map)) - map)) - (defvar egg-context nil) (defun egg-self-insert-char () (interactive) (its-start last-command-char (and (eq last-command 'egg-use-context) egg-context))) + +(defun egg-remove-all-text-properties (from to &optional object) + (let ((p from) + props prop) + (while (< p to) + (setq prop (text-properties-at p object)) + (while prop + (unless (eq (car prop) 'composition) + (setq props (plist-put props (car prop) nil))) + (setq prop (cddr prop))) + (setq p (next-property-change p object to))) + (remove-text-properties from to props object))) + +(defun egg-setup-invisibility-spec () + (if (listp buffer-invisibility-spec) + (unless (condition-case nil (memq 'egg buffer-invisibility-spec) (error)) + (setq buffer-invisibility-spec (cons 'egg buffer-invisibility-spec))) + (unless (eq buffer-invisibility-spec t) + (setq buffer-invisibility-spec (list 'egg buffer-invisibility-spec))))) (defvar egg-mark-list nil) (defvar egg-suppress-marking nil) (defun egg-set-face (beg eng face &optional object) - (put face 'face face) - (add-text-properties beg eng - (list 'category face - 'egg-face t - 'modification-hooks '(egg-mark-modification)) - object)) + (let ((hook (get-text-property beg 'modification-hooks object))) + (put face 'face face) + (add-text-properties beg eng + (list 'category face + 'egg-face t + 'modification-hooks (cons 'egg-mark-modification + hook)) + object))) (defun egg-mark-modification (beg end) (if (and (null egg-suppress-marking) @@ -262,7 +348,7 @@ (funcall auto-fill-function) (while (and (< fill-column (current-column)) (< (current-column) ocolumn)) - (setq ocolumn (current-column)) + (setq ocolumn (current-column)) (funcall auto-fill-function))))) (eval-when (eval load) Index: eggrc =================================================================== RCS file: /cvs/tamago/tamago/eggrc,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -d -u -p -r1.1.1.1 -r1.3 --- eggrc 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ eggrc 22 Jul 2002 13:18:56 -0000 1.3 @@ -1,4 +1,4 @@ -;;; eggrc --- EGG Input Method Startup File +;;; eggrc --- EGG Input Method Startup File -*- emacs-lisp -*- ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc @@ -107,6 +107,93 @@ (wnn-add-dict '("ud") "" 15 t t) (wnn-set-param 2 10 2 45 1 80 5 1 50 -20 400 -10 100 -100 200 0 200)) +(defun wnn7-jserver-setup () + (wnn-define-environment nil) + (wnn-set-fuzokugo "system/kougo.fzk") + (wnn-add-fisys-dict "system/fisd" '("fisd.h") t) + (wnn-add-fiusr-dict '("fiud") nil t nil) + + (wnn-add-dict "system/kihon.dic" '("kihon.h") 6 nil t) + (wnn-add-dict "system/symbol.dic" '("symbol.h") 1 nil t) + (wnn-add-dict "system/symbol_noat.dic" '("symbol_noat.h") 1 nil t) + (wnn-add-dict "system/tel.dic" '("tel.h") 1 nil t) + (wnn-add-dict "system/zip.dic" '("zip.h") 1 nil t) + (wnn-add-dict "system/tankan.dic" nil 1 nil nil) + (wnn-add-dict "system/tankan2.dic" nil 1 nil nil) + (wnn-add-dict "system/ikeiji.dic" nil 1 nil nil) + (wnn-add-dict "system/rensou.dic" nil 1 nil nil) + (wnn-add-dict '("ud") nil 15 t t) + + (wnn-add-dict "option/jinmei.dic" '("jinmei.h") 1 nil t) + (wnn-add-dict "option/chimei.dic" '("chimei.h") 1 nil t) + (wnn-add-dict "option/address.dic" '("address.h") 1 nil t) + (wnn-add-dict "option/station.dic" '("station.h") 1 nil t) + (wnn-add-dict "option/kana_english.dic" '("kana_english.h")1 nil t) + (wnn-add-dict "option/enterprise.dic" '("enterprise.h") 1 nil t) + (wnn-add-dict "option/airport.dic" '("airport.h") 1 nil t) + (wnn-add-dict "option/university.dic" '("university.h") 1 nil t) + (wnn-add-dict "option/zoo.dic" '("zoo.h") 1 nil t) + (wnn-add-dict "option/botanical_garden.dic" '("botanical_garden.h") 1 nil t) + (wnn-add-dict "option/aquarium.dic" '("aquarium.h") 1 nil t) + (wnn-add-dict "option/conveni.dic" '("conveni.h") 1 nil t) + (wnn-add-dict "option/amusement.dic" '("amusement.h") 1 nil t) + + (wnn-set-param 5 10 2 45 0 80 5 1 20 0 400 -100 400 80 200 2 200) + + (wnn-add-notrans-dict '("katakana") 15 t) + (wnn-add-bmodify-dict '("bunsetsu") 15 t) + + (wnn-set-last-is-first-mode t) + (wnn-set-complex-conv-mode nil) + ;; (wnn-set-okuri-flag -1) + (wnn-set-prefix-flag 0) + + (wnn-set-okuri-learn-mode t) + (wnn-set-prefix-learn-mode t) + (wnn-set-suffix-learn-mode t) + (wnn-set-common-learn-mode t) + (wnn-set-yuragi-mode nil) + + (wnn-set-freq-func-mode 4) + +;; (wnn-set-yosoku-learn t) +;; (wnn-set-yosoku-max-disp 10) +;; (wnn-set-yosoku-last-is-first t) + +;; (wnn-set-boin-kabusoku t) +;; (wnn-set-shiin-choka t) +;; (wnn-set-n-choka t) +;; (wnn-set-nihongo-kosei t) + + ;; (wnn-set-numeric-mode -12) + ;; (wnn-set-alphabet-mode -30) + ;; (wnn-set-symbol-mode -40) + + (wnn-define-environment t) + (wnn-set-fuzokugo "system/kougo.fzk") + (wnn-add-dict "system/kihonR.dic" nil 1 nil nil) + (wnn-add-dict "system/telR.dic" nil 1 nil nil) + (wnn-add-dict "system/zipR.dic" nil 1 nil nil) + (wnn-add-dict "system/tankanR.dic" nil 1 nil nil) + (wnn-add-dict "system/tankan2R.dic" nil 1 nil nil) + + (wnn-add-dict "option/jinmeiR.dic" nil 1 nil nil) + (wnn-add-dict "option/chimeiR.dic" nil 1 nil nil) + (wnn-add-dict "option/addressR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/stationR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/kana_englishR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/enterpriseR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/airportR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/universityR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/zooR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/botanical_gardenR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/aquariumR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/conveniR.dic" nil 1 nil nil) + ;;(wnn-add-dict "option/amusementR.dic" nil 1 nil nil) + + (wnn-add-dict '("ud") nil 15 t t) + (wnn-set-param 2 10 2 45 1 80 5 1 50 -20 400 -10 100 -100 200 0 200)) + (cond ((eq egg-backend-type 'wnn) (cond @@ -186,11 +273,15 @@ (wnn-add-dict '("ud") nil 2 t t) (wnn-set-param 2 5 2 45 200 80 5 1 40 0 400 -100 400 80 200 2 200)))) - ((eq egg-backend-type 'sj3) -; (sj3-set-default-sys-dic-directory "/usr/sony/dict/sj3") -; (sj3-set-default-usr-dic-directory "/usr/sony/dict/sj3/user/$USER") + ((eq egg-backend-type 'canna) - (sj3-setsysdic "sj3main.dic") + (canna-define-environment) + (canna-add-dict "iroha" nil) + (canna-add-dict "fuzokugo" nil) + (canna-add-dict "hojomwd" nil) + (canna-add-dict "hojoswd" nil) + (canna-add-dict "user" t) - (sj3-setusrdic "private.dic") - (sj3-setusrstdy "study.dat"))) + (canna-define-environment "Bushu" 0 t) + (canna-add-dict "bushu" nil)) + ) Index: its-keydef.el =================================================================== RCS file: /cvs/tamago/tamago/its-keydef.el,v retrieving revision 1.1.1.2 retrieving revision 1.3 diff -d -u -p -r1.1.1.2 -r1.3 --- its-keydef.el 27 Jan 2001 18:45:56 -0000 1.1.1.2 +++ its-keydef.el 22 Jul 2002 13:18:56 -0000 1.3 @@ -43,6 +43,7 @@ (defvar its-select-alist nil) (make-variable-buffer-local 'its-select-func-alist) +(setq-default its-select-func-alist nil) (put 'its-select-alist 'permanent-local t) (defvar its-select-func-default-alist nil) @@ -70,7 +71,7 @@ ((its-in-fence-p) (its-input-end) (its-put-cursor t)) - ((egg-get-bunsetsu-info (point)) + ((egg-conversion-fence-p) (egg-exit-conversion))) (setq its-current-select-func func its-current-map ',map Index: its.el =================================================================== RCS file: /cvs/tamago/tamago/its.el,v retrieving revision 1.1.1.4 retrieving revision 1.5 diff -d -u -p -r1.1.1.4 -r1.5 --- its.el 27 Jan 2001 18:46:58 -0000 1.1.1.4 +++ its.el 2 Aug 2002 02:36:28 -0000 1.5 @@ -31,11 +31,13 @@ ;;; Code: -(require 'cl) +(eval-when-compile + (require 'cl)) + (require 'egg-edep) (defgroup its nil - "Input Translation System of Tamagotchy" + "Input Translation System of Tamago 4." :group 'egg) (defcustom its-enable-fullwidth-alphabet t @@ -47,7 +49,13 @@ :group 'its :type 'boolean) (defcustom its-delete-by-keystroke nil - "*Delete characters as if cancel input keystroke, if nin-NIL." + "*Delete characters as if cancel input keystroke, if nin-NIL. +This variable is overriden by `its-delete-by-character'." + :group 'its :type 'boolean) + +(defcustom its-delete-by-character nil + "*Delete a character as a unit even if just after input, if nin-NIL. +This variable override `its-delete-by-keystroke'." :group 'its :type 'boolean) (defcustom its-fence-invisible nil @@ -93,7 +101,7 @@ (make-variable-buffer-local 'its-previous-select-func) (put 'its-previous-select-func 'permanent-local t) -(defvar its-current-language) +(defvar its-current-language nil) (make-variable-buffer-local 'its-current-language) (put 'its-current-language 'permanent-local t) @@ -194,8 +202,15 @@ (defsubst its-kst-p (kst/t) (not (or (numberp kst/t) (null kst/t)))) -(defsubst its-get-output (syl/state) - (car syl/state)) +(defun its-get-output (syl/state &optional no-eval) + (setq syl/state (car syl/state)) + (cond ((null (consp syl/state)) + syl/state) + ((and (null no-eval) (eq (car syl/state) 'eval)) + (eval (mapcar (lambda (s) (if (stringp s) (copy-sequence s) s)) + (cdr syl/state)))) + (t + (copy-sequence syl/state)))) (defsubst its-set-output (state output) (setcar state output)) @@ -232,7 +247,7 @@ (if (consp (cdr syl)) (cons (its-get-output syl) (its-get-keyseq-syl syl)) syl)) - + ;; ;; @@ -260,8 +275,8 @@ (define-key map "\M-y" 'its-yank-pop) (define-key map [backspace] 'its-delete-backward-SYL) (define-key map [delete] 'its-delete-backward-SYL) - (define-key map [M-backspace] 'its-delete-backward-SYL-by-keystroke) - (define-key map [M-delete] 'its-delete-backward-SYL-by-keystroke) + (define-key map [(meta backspace)] 'its-delete-backward-SYL-by-keystroke) + (define-key map [(meta delete)] 'its-delete-backward-SYL-by-keystroke) (define-key map [right] 'its-forward-SYL) (define-key map [left] 'its-backward-SYL) (while (< i 127) @@ -274,13 +289,26 @@ (define-key map "\M-n" 'its-next-map) (define-key map "\M-h" 'its-hiragana) ; hiragana-region for input-buffer (define-key map "\M-k" 'its-katakana) - (define-key map "\M-<" 'its-hankaku) - (define-key map "\M->" 'its-zenkaku) + (define-key map "\M-<" 'its-half-width) + (define-key map "\M->" 'its-full-width) map) "Keymap for ITS mode.") - (fset 'its-mode-map its-mode-map) +(defvar its-fence-mode nil) +(make-variable-buffer-local 'its-fence-mode) +(put 'its-fence-mode 'permanent-local t) + +(defvar egg-sub-mode-map-alist nil) +(or (assq 'its-fence-mode egg-sub-mode-map-alist) + (setq egg-sub-mode-map-alist (cons '(its-fence-mode . its-mode-map) + egg-sub-mode-map-alist))) + +(defun its-enter/leave-fence (&optional old new) + (setq its-fence-mode (its-in-fence-p))) + +(add-hook 'egg-enter/leave-fence-hook 'its-enter/leave-fence) + (defconst its-setup-fence-before-insert-SYL nil) (defun its-get-fence-face (lang) @@ -290,17 +318,19 @@ (assq t its-fence-face))))) (defun its-put-cursor (cursor) - (if (null (eq its-barf-on-invalid-keyseq 'its-keyseq-test)) - (let ((p (point)) - (str (copy-sequence "!"))) - (set-text-properties 0 1 (list 'local-map 'its-mode-map - 'read-only t - 'invisible t - 'intangible 'its-part-2 - 'its-cursor cursor) - str) - (insert str) - (goto-char p)))) + (unless (eq its-barf-on-invalid-keyseq 'its-keyseq-test) + (let ((p (point)) + (str (copy-sequence "!"))) + (set-text-properties 0 1 (list 'read-only t + 'invisible 'egg + 'intangible 'its-part-2 + 'its-cursor cursor + 'point-entered 'egg-enter/leave-fence + 'point-left 'egg-enter/leave-fence + 'modification-hooks '(egg-modify-fence)) + str) + (insert str) + (goto-char p)))) (defun its-set-cursor-status (cursor) (delete-region (point) (1+ (point))) @@ -330,6 +360,7 @@ (error "invalid fence")) ;; Put open-fence before inhibit-read-only to detect read-only (insert (if its-context its-fence-continue its-fence-open)) + (egg-setup-invisibility-spec) (let ((inhibit-read-only t)) (setq p1 (point)) (add-text-properties p p1 open-props) @@ -338,7 +369,7 @@ (insert its-fence-close) (add-text-properties p1 (point) close-props) (if its-fence-invisible - (put-text-property p (point) 'invisible t)) + (put-text-property p (point) 'invisible 'egg)) (put-text-property p (point) 'read-only t) (goto-char p1) (its-define-select-keys its-mode-map t) @@ -643,14 +674,14 @@ (add-hook hook func t) (funcall func) (run-hooks hook) - (setq hook nil)))) + (set hook nil)))) ;; Data structure for map compaction ;; ::= ( ) ; atom ;; | ( ( . )) ; cons cell ;; ;; ::= integer ; 0 or negative - usage count -;; ; psotive - generated common sub-tree +;; ; positive - generated common sub-tree ;; ;; ::= integer ; subject to compaction ;; | nil ; not subject to compaction @@ -683,9 +714,16 @@ `(1- (setq its-compaction-list (cons ,node its-compaction-list) its-compaction-counter-2 (1+ its-compaction-counter-2)))) +(defmacro its-concat (&rest args) + `(concat ,@(mapcar (lambda (arg) + (if (stringp arg) + arg + `(if (numberp ,arg) (number-to-string ,arg) ,arg))) + args))) + (defmacro its-compaction-hash (name node parent lr type) (if (null type) - `(let ((hash (intern (concat ,@name) its-compaction-hash-table))) + `(let ((hash (intern (its-concat ,@name) its-compaction-hash-table))) (if (null (boundp hash)) (car (set hash (list* (its-compaction-new-node) ,parent ,lr))) (setq hash (symbol-value hash)) @@ -696,7 +734,7 @@ (its-compaction-set-lr ,parent ,lr (cdr hash)) (car hash))) `(let ((hash ,(if (eq type 'integer) - `(intern (concat ,@name) its-compaction-hash-table) + `(intern (its-concat ,@name) its-compaction-hash-table) `(aref its-compaction-integer-table (+ ,node 10))))) (if (null ,(if (eq type 'integer) '(boundp hash) 'hash)) (setq hash (,@(if (eq type 'integer) @@ -708,18 +746,24 @@ (its-compaction-set-lr ,parent ,lr (cdr hash)) (car hash)))) -(defun its-map-compaction-internal (map parent lr) +(defun its-map-compaction-internal (map parent lr &optional force) (cond - ((consp map) (let ((candidate (or (null (stringp (car map))) (cdr map))) - (l (its-map-compaction-internal (car map) map 'car)) - (r (its-map-compaction-internal (cdr map) map 'cdr))) - (if (and candidate l r) - (its-compaction-hash (l " " r) map parent lr nil)))) - ((stringp map) (its-compaction-hash ("STR" map) map parent lr nil)) - ((integerp map) (if (and (>= map -10) (< map 128)) - (its-compaction-hash nil map parent lr small-int) - (its-compaction-hash ("INT" map) map parent lr integer))) - ((null map) 0))) + ((consp map) + (let* ((candidate (or (null (stringp (car map))) (cdr map))) + (sexp (or force (eq (car map) 'eval))) + (l (its-map-compaction-internal (car map) map 'car sexp)) + (r (its-map-compaction-internal (cdr map) map 'cdr sexp))) + (if (or sexp (and candidate l r)) + (its-compaction-hash (l " " r) map parent lr nil)))) + ((stringp map) + (its-compaction-hash ("STR" map) map parent lr nil)) + ((integerp map) + (if (and (>= map -10) (< map 128)) + (its-compaction-hash nil map parent lr small-int) + (its-compaction-hash ("INT" map) map parent lr integer))) + ((null map) 0) + ((symbolp map) + (its-compaction-hash ("SYM" (symbol-name map)) map parent lr nil)))) (defvar its-map-rebuild-subtrees) @@ -790,7 +834,7 @@ Return last state." (setq state next-state)) ((null build-if-none) (error "No such state (%s)" input)) - (t + (t (if (not (or brand-new (= i 1) (its-get-kst/t state))) (its-set-interim-terminal-state state)) (setq state (its-make-next-state state key @@ -802,7 +846,7 @@ Return last state." state)) (defun its-set-interim-terminal-state (state &optional output) - (its-make-next-state state -1 (or output (its-get-output state))) + (its-make-next-state state -1 (or output (its-get-output state t))) (its-defrule-otherwise state output)) (defun its-defoutput (input display) @@ -975,7 +1019,7 @@ Return last state." (cursor (get-text-property (point) 'its-cursor))) (if (null syl) (signal 'beginning-of-buffer nil) - (if (eq cursor t) + (if (or (eq cursor t) (and cursor its-delete-by-character)) (its-delete-backward-SYL-internal n killflag) (its-delete-backward-within-SYL syl n killflag))))) @@ -1038,7 +1082,7 @@ Return last state." (signal 'beginning-of-buffer nil)) (delete-region p (point)) (if (> len n) - (its-state-machine-keyseq (substring keyseq 0 (- len n)) + (its-state-machine-keyseq (substring keyseq 0 (- len n)) 'its-buffer-ins/del-SYL) (its-set-cursor-status (if (or (null its-delete-by-keystroke) @@ -1124,10 +1168,14 @@ Return last state." (setq i 0) (while (< i len) (setq lang (get-text-property i 'egg-lang source)) - (if (and - (or (eq lang 'Chinese-GB) (eq lang 'Chinese-CNS)) - (setq l (egg-chinese-syllable source i))) - (setq j (+ i l)) + (if (or (and (or (eq lang 'Chinese-GB) (eq lang 'Chinese-CNS)) + (setq l (egg-chinese-syllable source i))) + (and (setq l (get-text-property i 'composition source)) + (setq l (if (consp (car l)) (caar l) (cadr l))) + (eq (next-single-property-change i 'composition + source (length source)) + l))) + (setq j (+ i l)) (setq j (+ i (egg-char-bytes (egg-string-to-char-at source i))))) (setq syl (substring no-prop-source i j)) (put-text-property i j 'its-syl (cons syl syl) source) @@ -1181,7 +1229,7 @@ Return last state." ;; TODO: handle overwrite-mode, insertion-hook, fill... (defun its-exit-mode-internal (&optional proceed-to-conversion n) - (let (start end s context) + (let (start end s context str) (its-select-previous-mode t) ;; Delete CURSOR (delete-region (point) (1+ (point))) @@ -1198,9 +1246,10 @@ Return last state." (egg-convert-region start end context n) ;; Remove all properties (goto-char start) - (insert (prog1 - (buffer-substring-no-properties start end) - (delete-region start end))) + (setq str (buffer-substring start end)) + (egg-remove-all-text-properties 0 (length str) str) + (delete-region start end) + (insert str) (egg-do-auto-fill) (run-hooks 'input-method-after-insert-chunk-hook)))) @@ -1220,7 +1269,8 @@ Return last state." (its-kick-convert-region n)))) (defun its-in-fence-p () - (eq (get-text-property (point) 'intangible) 'its-part-2)) + (and (eq (get-text-property (point) 'intangible) 'its-part-2) + (get-text-property (point) 'read-only))) (defvar its-translation-result "" "") @@ -1241,7 +1291,7 @@ Return last state." (defun its-translate-region (start end) (interactive "r") (its-translate-region-internal start end) - (set-text-properties start (point) nil)) + (egg-remove-all-text-properties start (point))) (defun its-translate-region-internal (start end) (setq its-translation-result "") @@ -1300,66 +1350,198 @@ Return last state." ;;; its-hiragana : hiragana-region for input-buffer (defun its-hiragana () (interactive) - (let ((inhibit-read-only t)) - (its-input-end) - (its-set-part-1 (point) (its-search-end)) - (its-convert 'japanese-hiragana (its-search-beginning) (point)) - (its-put-cursor t))) + (its-convert (lambda (str lang) (japanese-hiragana str)))) ;;; its-katakana : katanaka-region for input-buffer (defun its-katakana () (interactive) - (let ((inhibit-read-only t)) - (its-input-end) - (its-set-part-1 (point) (its-search-end)) - (its-convert 'japanese-katakana (its-search-beginning) (point)) - (its-put-cursor t))) + (its-convert (lambda (str lang) (japanese-katakana str)))) -;;; its-hankaku : hankaku-region for input-buffer -(defun its-hankaku () - (interactive) - (let ((inhibit-read-only t)) - (its-input-end) - (its-set-part-1 (point) (its-search-end)) - (its-convert 'its-japanese-hankaku (its-search-beginning) (point)) - (its-put-cursor t))) +(defconst its-full-half-table (make-vector 100 nil)) +(defconst its-half-full-table (make-vector 100 nil)) -(defun its-japanese-hankaku (obj) - (japanese-hankaku obj 'ascii-only)) +(let ((table '((Japanese + (?$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!2(B . ?_) (?$B!1(B . ?~) + (?$B!<(B . ?-) (?$B!=(B . ?-) (?$B!>(B . ?-) + (?$B!?(B . ?/) (?$B!@(B . ?\\) (?$B!A(B . ?~) (?$B!C(B . ?|) + (?$B!F(B . ?`) (?$B!G(B . ?') (?$B!H(B . ?\") (?$B!I(B . ?\") + (?$B!J(B . ?\() (?$B!K(B . ?\)) (?$B!N(B . ?[) (?$B!O(B . ?]) + (?$B!P(B . ?{) (?$B!Q(B . ?}) (?$B!R(B . ?<) (?$B!S(B . ?>) + (?$B!\(B . ?+) (?$B!](B . ?-) (?$B!a(B . ?=) (?$B!c(B . ?<) (?$B!d(B . ?>) + (?$B!l(B . ?') (?$B!m(B . ?\") (?$B!o(B . ?\\) (?$B!p(B . ?$) (?$B!s(B . ?%) + (?$B!t(B . ?#) (?$B!u(B . ?&) (?$B!v(B . ?*) (?$B!w(B . ?@) + (?$B#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#A(B . ?A) (?$B#B(B . ?B) (?$B#C(B . ?C) (?$B#D(B . ?D) (?$B#E(B . ?E) + (?$B#F(B . ?F) (?$B#G(B . ?G) (?$B#H(B . ?H) (?$B#I(B . ?I) (?$B#J(B . ?J) + (?$B#K(B . ?K) (?$B#L(B . ?L) (?$B#M(B . ?M) (?$B#N(B . ?N) (?$B#O(B . ?O) + (?$B#P(B . ?P) (?$B#Q(B . ?Q) (?$B#R(B . ?R) (?$B#S(B . ?S) (?$B#T(B . ?T) + (?$B#U(B . ?U) (?$B#V(B . ?V) (?$B#W(B . ?W) (?$B#X(B . ?X) (?$B#Y(B . ?Y) + (?$B#Z(B . ?Z) + (?$B#a(B . ?a) (?$B#b(B . ?b) (?$B#c(B . ?c) (?$B#d(B . ?d) (?$B#e(B . ?e) + (?$B#f(B . ?f) (?$B#g(B . ?g) (?$B#h(B . ?h) (?$B#i(B . ?i) (?$B#j(B . ?j) + (?$B#k(B . ?k) (?$B#l(B . ?l) (?$B#m(B . ?m) (?$B#n(B . ?n) (?$B#o(B . ?o) + (?$B#p(B . ?p) (?$B#q(B . ?q) (?$B#r(B . ?r) (?$B#s(B . ?s) (?$B#t(B . ?t) + (?$B#u(B . ?u) (?$B#v(B . ?v) (?$B#w(B . ?w) (?$B#x(B . ?x) (?$B#y(B . ?y) + (?$B#z(B . ?z)) + (Chinese-GB + (?$A!!(B . ?\ ) (?$A#,(B . ?,) (?$A#.(B . ?.) (?$A!"(B . ?,) (?$A!#(B . ?.) + (?$A#:(B . ?:) (?$A#;(B . ?\;) (?$A#?(B . ??) (?$A#!(B . ?!) + (?$A#`(B . ?`) (?$A#^(B . ?^) (?$A#_(B . ?_) (?$A#~(B . ?~) + (?$A!*(B . ?-) + (?$A#/(B . ?/) (?$A#\(B . ?\\) (?$A!+(B . ?~) (?$A#|(B . ?|) + (?$A!.(B . ?`) (?$A!/(B . ?') (?$A!0(B . ?\") (?$A!1(B . ?\") + (?$A#((B . ?\() (?$A#)(B . ?\)) (?$A#[(B . ?[) ( ?$A#](B . ?]) + (?$A#{(B . ?{) (?$A#}(B . ?}) + (?$A#+(B . ?+) (?$A#-(B . ?-) (?$A#=(B . ?=) (?$A#<(B . ?<) (?$A#>(B . ?>) + (?$A#'(B . ?') (?$A#"(B . ?\") (?$A#$(B . ?$) (?$A#%(B . ?%) + (?$A##(B . ?#) (?$A#&(B . ?&) (?$A#*(B . ?*) (?$A#@(B . ?@) + (?$A#0(B . ?0) (?$A#1(B . ?1) (?$A#2(B . ?2) (?$A#3(B . ?3) (?$A#4(B . ?4) + (?$A#5(B . ?5) (?$A#6(B . ?6) (?$A#7(B . ?7) (?$A#8(B . ?8) (?$A#9(B . ?9) + (?$A#A(B . ?A) (?$A#B(B . ?B) (?$A#C(B . ?C) (?$A#D(B . ?D) (?$A#E(B . ?E) + (?$A#F(B . ?F) (?$A#G(B . ?G) (?$A#H(B . ?H) (?$A#I(B . ?I) (?$A#J(B . ?J) + (?$A#K(B . ?K) (?$A#L(B . ?L) (?$A#M(B . ?M) (?$A#N(B . ?N) (?$A#O(B . ?O) + (?$A#P(B . ?P) (?$A#Q(B . ?Q) (?$A#R(B . ?R) (?$A#S(B . ?S) (?$A#T(B . ?T) + (?$A#U(B . ?U) (?$A#V(B . ?V) (?$A#W(B . ?W) (?$A#X(B . ?X) (?$A#Y(B . ?Y) + (?$A#Z(B . ?Z) + (?$A#a(B . ?a) (?$A#b(B . ?b) (?$A#c(B . ?c) (?$A#d(B . ?d) (?$A#e(B . ?e) + (?$A#f(B . ?f) (?$A#g(B . ?g) (?$A#h(B . ?h) (?$A#i(B . ?i) (?$A#j(B . ?j) + (?$A#k(B . ?k) (?$A#l(B . ?l) (?$A#m(B . ?m) (?$A#n(B . ?n) (?$A#o(B . ?o) + (?$A#p(B . ?p) (?$A#q(B . ?q) (?$A#r(B . ?r) (?$A#s(B . ?s) (?$A#t(B . ?t) + (?$A#u(B . ?u) (?$A#v(B . ?v) (?$A#w(B . ?w) (?$A#x(B . ?x) (?$A#y(B . ?y) + (?$A#z(B . ?z)) + (Chinese-CNS + (?$(G!!(B . ?\ ) (?$(G!"(B . ?,) (?$(G!%(B . ?.) (?$(G!#(B . ?,) (?$(G!$(B . ?.) + (?$(G!((B . ?:) (?$(G!'(B . ?\;) (?$(G!)(B . ??) (?$(G!*(B . ?!) + (?$(G!k(B . ?') (?$(G!j(B . ?`) (?$(G!T(B . ?^) (?$(G"%(B . ?_) (?$(G"#(B . ?~) + (?$(G"@(B . ?-) + (?$(G"_(B . ?/) (?$(G"`(B . ?\\) (?$(G"a(B . ?/) (?$(G"b(B . ?\\) + (?$(G"D(B . ?~) (?$(G"^(B . ?|) + (?$(G!d(B . ?`) (?$(G!e(B . ?') + (?$(G!h(B . ?\") (?$(G!i(B . ?\") (?$(G!f(B . ?\") (?$(G!g(B . ?\") + (?$(G!>(B . ?\() (?$(G!?(B . ?\)) + (?$(G!F(B . ?[) (?$(G!G(B . ?]) (?$(G!b(B . ?[) (?$(G!c(B . ?]) + (?$(G!B(B . ?{) (?$(G!C(B . ?}) (?$(G!`(B . ?{) (?$(G!a(B . ?}) + (?$(G!R(B . ?<) (?$(G!S(B . ?>) + (?$(G"0(B . ?+) (?$(G"1(B . ?-) (?$(G"8(B . ?=) (?$(G"6(B . ?<) (?$(G"7(B . ?>) + (?$(G"c(B . ?$) (?$(G"h(B . ?%) + (?$(G!l(B . ?#) (?$(G!m(B . ?&) (?$(G!n(B . ?*) (?$(G"i(B . ?@) + (?$(G$!(B . ?0) (?$(G$"(B . ?1) (?$(G$#(B . ?2) (?$(G$$(B . ?3) (?$(G$%(B . ?4) + (?$(G$&(B . ?5) (?$(G$'(B . ?6) (?$(G$((B . ?7) (?$(G$)(B . ?8) (?$(G$*(B . ?9) + (?$(G$A(B . ?A) (?$(G$B(B . ?B) (?$(G$C(B . ?C) (?$(G$D(B . ?D) (?$(G$E(B . ?E) + (?$(G$F(B . ?F) (?$(G$G(B . ?G) (?$(G$H(B . ?H) (?$(G$I(B . ?I) (?$(G$J(B . ?J) + (?$(G$K(B . ?K) (?$(G$L(B . ?L) (?$(G$M(B . ?M) (?$(G$N(B . ?N) (?$(G$O(B . ?O) + (?$(G$P(B . ?P) (?$(G$Q(B . ?Q) (?$(G$R(B . ?R) (?$(G$S(B . ?S) (?$(G$T(B . ?T) + (?$(G$U(B . ?U) (?$(G$V(B . ?V) (?$(G$W(B . ?W) (?$(G$X(B . ?X) (?$(G$Y(B . ?Y) + (?$(G$Z(B . ?Z) + (?$(G$[(B . ?a) (?$(G$\(B . ?b) (?$(G$](B . ?c) (?$(G$^(B . ?d) (?$(G$_(B . ?e) + (?$(G$`(B . ?f) (?$(G$a(B . ?g) (?$(G$b(B . ?h) (?$(G$c(B . ?i) (?$(G$d(B . ?j) + (?$(G$e(B . ?k) (?$(G$f(B . ?l) (?$(G$g(B . ?m) (?$(G$h(B . ?n) (?$(G$i(B . ?o) + (?$(G$j(B . ?p) (?$(G$k(B . ?q) (?$(G$l(B . ?r) (?$(G$m(B . ?s) (?$(G$n(B . ?t) + (?$(G$o(B . ?u) (?$(G$p(B . ?v) (?$(G$q(B . ?w) (?$(G$r(B . ?x) (?$(G$s(B . ?y) + (?$(G$t(B . ?z)) + (Korean + (?$(C!!(B . ?\ ) (?$(C#,(B . ?,) (?$(C#.(B . ?.) + (?$(C#:(B . ?:) (?$(C#;(B . ?\;) (?$(C#?(B . ??) (?$(C#!(B . ?!) + (?$(C!/(B . ?') (?$(C!.(B . ?`) (?$(C#^(B . ?^) (?$(C#_(B . ?_) (?$(C#~(B . ?~) + (?$(C!*(B . ?-) (?$(C!)(B . ?-) + (?$(C#/(B . ?/) (?$(C!,(B . ?\\) (?$(C!-(B . ?~) (?$(C#|(B . ?|) + (?$(C!.(B . ?`) (?$(C!/(B . ?') (?$(C!0(B . ?\") (?$(C!1(B . ?\") + (?$(C#((B . ?\() (?$(C#)(B . ?\)) (?$(C#[(B . ?[) (?$(C#](B . ?]) + (?$(C#{(B . ?{) (?$(C#}(B . ?}) (?$(C!4(B . ?<) (?$(C!5(B . ?>) + (?$(C#+(B . ?+) (?$(C#-(B . ?-) (?$(C#=(B . ?=) (?$(C#<(B . ?<) (?$(C#>(B . ?>) + (?$(C#'(B . ?') (?$(C#"(B . ?\") (?$(C#\(B . ?\\) (?$(C#$(B . ?$) (?$(C#%(B . ?%) + (?$(C##(B . ?#) (?$(C#&(B . ?&) (?$(C#*(B . ?*) (?$(C#@(B . ?@) + (?$(C#0(B . ?0) (?$(C#1(B . ?1) (?$(C#2(B . ?2) (?$(C#3(B . ?3) (?$(C#4(B . ?4) + (?$(C#5(B . ?5) (?$(C#6(B . ?6) (?$(C#7(B . ?7) (?$(C#8(B . ?8) (?$(C#9(B . ?9) + (?$(C#A(B . ?A) (?$(C#B(B . ?B) (?$(C#C(B . ?C) (?$(C#D(B . ?D) (?$(C#E(B . ?E) + (?$(C#F(B . ?F) (?$(C#G(B . ?G) (?$(C#H(B . ?H) (?$(C#I(B . ?I) (?$(C#J(B . ?J) + (?$(C#K(B . ?K) (?$(C#L(B . ?L) (?$(C#M(B . ?M) (?$(C#N(B . ?N) (?$(C#O(B . ?O) + (?$(C#P(B . ?P) (?$(C#Q(B . ?Q) (?$(C#R(B . ?R) (?$(C#S(B . ?S) (?$(C#T(B . ?T) + (?$(C#U(B . ?U) (?$(C#V(B . ?V) (?$(C#W(B . ?W) (?$(C#X(B . ?X) (?$(C#Y(B . ?Y) + (?$(C#Z(B . ?Z) + (?$(C#a(B . ?a) (?$(C#b(B . ?b) (?$(C#c(B . ?c) (?$(C#d(B . ?d) (?$(C#e(B . ?e) + (?$(C#f(B . ?f) (?$(C#g(B . ?g) (?$(C#h(B . ?h) (?$(C#i(B . ?i) (?$(C#j(B . ?j) + (?$(C#k(B . ?k) (?$(C#l(B . ?l) (?$(C#m(B . ?m) (?$(C#n(B . ?n) (?$(C#o(B . ?o) + (?$(C#p(B . ?p) (?$(C#q(B . ?q) (?$(C#r(B . ?r) (?$(C#s(B . ?s) (?$(C#t(B . ?t) + (?$(C#u(B . ?u) (?$(C#v(B . ?v) (?$(C#w(B . ?w) (?$(C#x(B . ?x) (?$(C#y(B . ?y) + (?$(C#z(B . ?z)))) + (hash (make-vector 100 nil)) + lang pair) + (while table + (setq lang (caar table) + pair (cdar table) + table (cdr table)) + (while pair + (set (intern (char-to-string (caar pair)) its-full-half-table) + (cdar pair)) + (set (intern (concat (symbol-name lang) (char-to-string (cdar pair))) + its-half-full-table) + (caar pair)) + (setq pair (cdr pair))) + hash)) -;;; its-zenkaku : zenkaku-region for input-buffer -(defun its-zenkaku () +;;; its-half-width : half-width-region for input-buffer +(defun its-half-width () (interactive) - (let ((inhibit-read-only t)) - (its-input-end) - (its-set-part-1 (point) (its-search-end)) - (its-convert 'japanese-zenkaku (its-search-beginning) (point)) - (its-put-cursor t))) + (its-convert + (lambda (str lang) + (concat (mapcar (lambda (c) + (or (symbol-value (intern-soft (char-to-string c) + its-full-half-table)) + c)) + (string-to-sequence str 'list)))))) -(defun its-convert (func start end) - (let* ((goto-start (eq (point) start)) - (old-str (buffer-substring start end)) - (new-str "") - (len (length old-str)) - (p 0) - old new syl q) - (while (< p len) - (setq q (next-single-property-change p 'its-syl old-str len) - old (substring old-str p q) - new (copy-sequence old)) - (set-text-properties 0 (- q p) nil new) - (setq new (funcall func new)) - (if (equal new old) - (setq new-str (concat new-str old)) - (setq syl (cons (copy-sequence new) (copy-sequence new))) - (set-text-properties 0 (length new) (text-properties-at 0 old) new) - (put-text-property 0 (length new) 'its-syl syl new) - (setq new-str (concat new-str new))) - (setq p q)) - (delete-region start end) - (insert new-str) - (if goto-start - (goto-char start)))) +;;; its-full-width : full-width-region for input-buffer +(defun its-full-width () + (interactive) + (its-convert + (lambda (str lang) + (if (egg-chinese-syllable str 0) + (copy-sequence str) + (concat (mapcar (lambda (c) + (or (symbol-value + (intern-soft (concat (symbol-name lang) + (char-to-string c)) + its-half-full-table)) + c)) + (string-to-sequence str 'list))))))) + +(defun its-convert (func) + (let ((inhibit-read-only t)) + (unwind-protect + (progn + (its-input-end) + (let* ((start (its-search-beginning)) + (end (its-search-end)) + (old-str (buffer-substring start end)) + (len (length old-str)) + (p 0) + (new-str "")) + (put-text-property 0 len 'intangible 'its-part-1 old-str) + (while (< p len) + (let* ((prop (text-properties-at p old-str)) + (cmp (memq 'composition prop)) + (old (its-get-output (plist-get prop 'its-syl))) + (new (funcall func old (plist-get prop 'egg-lang))) + (new-len (length new)) + syl) + (unless (equal new old) + (when cmp + (if (eq prop cmp) + (setq prop (cddr prop)) + (setcdr (nthcdr (- (length prop) (length cmp) 1) prop) + (cddr cmp)))) + (setq syl (copy-sequence new)) + (plist-put prop 'its-syl (cons syl syl))) + (add-text-properties 0 new-len prop new) + (setq new-str (concat new-str new) + p (+ p (length old))))) + (delete-region start end) + (insert new-str))) + (its-put-cursor t)))) (defun its-mode () "\\{its-mode-map}" @@ -1374,5 +1556,31 @@ Return last state." (princ (documentation 'its-mode)) (help-setup-xref (cons #'help-xref-mode (current-buffer)) (interactive-p)))) +;; The `point-left' hook function will never be called in Emacs 21.2.50 +;; when the command `next-line' is used in the last line of a buffer +;; which isn't terminated with a newline or the command `previous-line' +;; is used in the first line of a buffer. +(defun its-next-line (&optional arg) + "Go to the end of the line if the line isn't terminated with a newline, +otherwise run `next-line' as usual." + (interactive "p") + (if (= (line-end-position) (point-max)) + (end-of-line) + (next-line arg))) + +(defun its-previous-line (&optional arg) + "Go to the beginning of the line if it is called in the first line of a +buffer, otherwise run `previous-line' as usual." + (interactive "p") + (if (= (line-beginning-position) (point-min)) + (beginning-of-line) + (previous-line arg))) + +(substitute-key-definition 'next-line 'its-next-line + its-mode-map global-map) +(substitute-key-definition 'previous-line 'its-previous-line + its-mode-map global-map) + (provide 'its) -;;; its.el ends here. + +;;; its.el ends here Index: jisx0213.el =================================================================== RCS file: jisx0213.el diff -N jisx0213.el --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ jisx0213.el 9 Jul 2001 14:46:38 -0000 1.2 @@ -0,0 +1,39 @@ +;;; jisx0213.el --- Charset Definition for JIS X 0213 + +;; Copyright (C) 1999,2000 PFU LIMITED + +;; Author: KATAYAMA Yoshio + +;; Maintainer: TOMURA Satoru + +;; Keywords: mule, multilingual, input method + +;; This file is part of EGG. + +;; EGG is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; EGG is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + + +;;; Code: + +(unless (charsetp 'japanese-jisx0213-1) + (define-charset 151 'japanese-jisx0213-1 + [2 94 2 0 ?O 0 "JISX0213-1" "JISX0213-1" "JISX0213-1 (Japanese)"])) + +(unless (charsetp 'japanese-jisx0213-2) + (define-charset 254 'japanese-jisx0213-2 + [2 94 2 0 ?P 0 "JISX0213-2" "JISX0213-2" "JISX0213-2 (Japanese)"])) Index: leim-list.el =================================================================== RCS file: /cvs/tamago/tamago/leim-list.el,v retrieving revision 1.1.1.3 retrieving revision 1.3 diff -d -u -p -r1.1.1.3 -r1.3 --- leim-list.el 27 Jan 2001 18:46:16 -0000 1.1.1.3 +++ leim-list.el 23 Aug 2002 07:46:38 -0000 1.3 @@ -1,8 +1,8 @@ ;;; leim-list.el --- Egg setup for leim API -;; Copyright (C) 1999, 2000 Free Software Foundation, Inc +;; Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc -;; Author: NIIBE Yutaka +;; Author: NIIBE Yutaka ;; KATAYAMA Yoshio ;; TOMURA Satoru @@ -31,61 +31,74 @@ ;;; Code: -(when site-run-file - (autoload 'egg-activate-wnn "egg/wnn" "Activate Wnn backend of Tamagotchy." t) - (autoload 'egg-activate-sj3 "egg/sj3" "Activate SJ3 backend of Tamagotchy." t) +(autoload 'egg-activate-anthy "egg/anthy" + "Activate ANTHY backend of Tamago 4." t) +(autoload 'egg-activate-wnn "egg/wnn" "Activate Wnn backend of Tamago 4." t) +(autoload 'egg-activate-sj3 "egg/sj3" "Activate SJ3 backend of Tamago 4." t) +(autoload 'egg-activate-canna "egg/canna" + "Activate CANNA backend of Tamago 4." t) - (register-input-method - "japanese-egg-wnn" "Japanese" 'egg-activate-wnn - "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" - 'its-select-hiragana) +(register-input-method + "japanese-egg-anthy" "Japanese" 'egg-activate-anthy + "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" + 'its-select-hiragana) - (register-input-method - "japanese-egg-sj3" "Japanese" 'egg-activate-sj3 - "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" - 'its-select-hiragana) +(register-input-method + "japanese-egg-wnn" "Japanese" 'egg-activate-wnn + "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" + 'its-select-hiragana) - (register-input-method - "chinese-gb-egg-wnn-py" "Chinese-GB" 'egg-activate-wnn - "$AF4(BG" "Pinyin -> Simplified Hanzi" - 'its-select-pinyin-cn) +(register-input-method + "japanese-egg-sj3" "Japanese" 'egg-activate-sj3 + "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" + 'its-select-hiragana) - (register-input-method - "chinese-gb-egg-wnn-zy" "Chinese-GB" 'egg-activate-wnn - "$AW"(BG" "Zhunyin -> Simplified Hanzi" - 'its-select-zhuyin-cn) +(register-input-method + "japanese-egg-canna" "Japanese" 'egg-activate-canna + "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" + 'its-select-hiragana) - (register-input-method - "chinese-gb-egg-wnn-qm" "Chinese-GB" 'egg-activate-wnn - "$AG.(B" "QianMa Simplified Hanzi inputmethod" - 'its-select-qianma) +(register-input-method + "chinese-gb-egg-wnn-py" "Chinese-GB" 'egg-activate-wnn + "$AF4(BG" "Pinyin -> Simplified Hanzi" + 'its-select-pinyin-cn) - (register-input-method - "chinese-gb-egg-wnn-wb" "Chinese-GB" 'egg-activate-wnn - "$ANe(B" "WuBi Simplified Hanzi inputmethod" - 'its-select-wubi) +(register-input-method + "chinese-gb-egg-wnn-zy" "Chinese-GB" 'egg-activate-wnn + "$AW"(BG" "Zhunyin -> Simplified Hanzi" + 'its-select-zhuyin-cn) - (register-input-method - "chinese-cns-egg-wnn-py" "Chinese-CNS" 'egg-activate-wnn - "$(GQ;(BC" "Pinyin -> Traditional Hanzi" - 'its-select-pinyin-tw) +(register-input-method + "chinese-gb-egg-wnn-qm" "Chinese-GB" 'egg-activate-wnn + "$AG.(B" "QianMa Simplified Hanzi inputmethod" + 'its-select-qianma) - (register-input-method - "chinese-cns-egg-wnn-zy" "Chinese-CNS" 'egg-activate-wnn - "$(GNC(BC" "Zhunyin -> Traditional Hanzi" - 'its-select-zhuyin-tw) +(register-input-method + "chinese-gb-egg-wnn-wb" "Chinese-GB" 'egg-activate-wnn + "$ANe(B" "WuBi Simplified Hanzi inputmethod" + 'its-select-wubi) - (register-input-method - "korean-egg-wnn" "Korean" 'egg-activate-wnn - "$(CGQ(B" "Hangul -> Hanja" - 'its-select-hangul) +(register-input-method + "chinese-cns-egg-wnn-py" "Chinese-CNS" 'egg-activate-wnn + "$(GQ;(BC" "Pinyin -> Traditional Hanzi" + 'its-select-pinyin-tw) - (autoload 'egg-mode "egg" "Toggle EGG mode." t) +(register-input-method + "chinese-cns-egg-wnn-zy" "Chinese-CNS" 'egg-activate-wnn + "$(GNC(BC" "Zhunyin -> Traditional Hanzi" + 'its-select-zhuyin-tw) - (set-language-info "Japanese" 'input-method "japanese-egg-wnn") - (set-language-info "Chinese-GB" 'input-method "chinese-gb-egg-wnn-py") - (set-language-info "Chinese-CNS" 'input-method "chinese-cns-egg-wnn-py") - (set-language-info "Korean" 'input-method "korean-egg-wnn") +(register-input-method + "korean-egg-wnn" "Korean" 'egg-activate-wnn + "$(CGQ(B" "Hangul -> Hanja" + 'its-select-hangul) + +(autoload 'egg-mode "egg" "Toggle EGG mode." t) + +(set-language-info "Japanese" 'input-method "japanese-egg-wnn") +(set-language-info "Chinese-GB" 'input-method "chinese-gb-egg-wnn-py") +(set-language-info "Chinese-CNS" 'input-method "chinese-cns-egg-wnn-py") +(set-language-info "Korean" 'input-method "korean-egg-wnn") (defgroup leim nil "LEIM stands for Libraries of Emacs Input Methods." @@ -94,29 +107,22 @@ (defgroup egg nil "" :group 'leim :load "egg") +(defgroup anthy nil "" + :group 'egg :load "egg/anthy") + (defgroup wnn nil "" :group 'egg :load "egg/wnn") (defgroup sj3 nil "" :group 'egg :load "egg/sj3") +(defgroup canna nil "" + :group 'egg :load "egg/canna") + (defgroup its nil "" :group 'egg :load "its") (defgroup hira nil "" :group 'its :load "its/hira") -;;;; - - (require 'egg-util) - - (defun load-leim-list-except-this () - (load-libraries "leim-list" - (cdr-safe - (member (directory-file-name (file-name-directory load-file-name)) - load-path)))) - - (message "Finished loading %s \n and load others..." load-file-name) - (load-leim-list-except-this) - - ) \ No newline at end of file +;;; leim-list.el ends here. Index: menudiag.el =================================================================== RCS file: /cvs/tamago/tamago/menudiag.el,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- menudiag.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ menudiag.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -50,7 +50,7 @@ ;; (defgroup menudiag nil - "Input Translation System of Tamagotchy" + "Input Translation System of Tamago 4." :group 'egg) (defcustom menudiag-select-without-return nil @@ -72,26 +72,34 @@ (while (<= ch ?Z) (define-key map (char-to-string ch) 'menudiag-goto-item) (setq ch (1+ ch))) - (define-key map "\C-a" 'menudiag-beginning-of-line) - (define-key map "\C-e" 'menudiag-end-of-line) - (define-key map "\M-<" 'menudiag-beginning-of-items) - (define-key map "\M->" 'menudiag-end-of-items) - (define-key map "\C-f" 'menudiag-forward-item) - (define-key map "\C-b" 'menudiag-backward-item) - (define-key map "\C-n" 'menudiag-next-line) - (define-key map "\C-p" 'menudiag-previous-line) - (define-key map "\C-]" 'menudiag-exit) - (define-key map "\C-g" 'menudiag-exit-one-level) - (define-key map "\C-l" 'menudiag-redraw) - (define-key map "\C-m" 'menudiag-select-this-item) - (define-key map "?" 'menudiag-list-other-window) + (setq ch ?\C-0) + (while (<= ch ?\C-9) + (define-key map (vector ch) 'digit-argument) + (setq ch (1+ ch))) + (define-key map [?\C--] 'negative-argument) + (define-key map [?\C-u] 'universal-argument) + (define-key map " " 'menudiag-forward-item) + (define-key map "\C-a" 'menudiag-beginning-of-line) + (define-key map "\C-e" 'menudiag-end-of-line) + (define-key map "\M-<" 'menudiag-beginning-of-items) + (define-key map "\M->" 'menudiag-end-of-items) + (define-key map "\C-f" 'menudiag-forward-item) + (define-key map "\C-b" 'menudiag-backward-item) + (define-key map "\C-n" 'menudiag-next-line) + (define-key map "\C-p" 'menudiag-previous-line) + (define-key map "\C-]" 'menudiag-exit) + (define-key map "\C-g" 'menudiag-exit-one-level) + (define-key map "\C-l" 'menudiag-redraw) + (define-key map "\C-m" 'menudiag-select-this-item) + (define-key map "\M-v" 'menudiag-list-other-window) + (define-key map "?" 'menudiag-list-other-window) (define-key map [return] 'menudiag-select-this-item) - (define-key map [left] 'menudiag-backward-item) - (define-key map [right] 'menudiag-forward-item) - (define-key map [up] 'menudiag-previous-line) - (define-key map [down] 'menudiag-next-line) - (define-key map [menudiag-continuation] 'menudiag-follow-continuation) - (define-key map [t] 'undefined) + (define-key map [left] 'menudiag-backward-item) + (define-key map [right] 'menudiag-forward-item) + (define-key map [up] 'menudiag-previous-line) + (define-key map [down] 'menudiag-next-line) + (define-key map [exit] 'menudiag-exit) + (define-key map [t] 'undefined) map) "Keymap for MENU.") @@ -111,8 +119,6 @@ (defsubst menudiag-item-width (item) (+ 4 (string-width (menudiag-item-string item)))) -(defvar menudiag-window-conf nil) - (defun menudiag-make-selection-list (item-list line-width) (let ((l nil) (line nil) @@ -135,66 +141,121 @@ (reverse (cons (reverse line) l)) (reverse l)))) +(defvar menudiag-show-all nil) +(make-variable-buffer-local 'menudiag-show-all) + +(defvar menudiag-continuation nil) +(make-variable-buffer-local 'menudiag-continuation) + +(defvar menudiag-return-contin nil) +(make-variable-buffer-local 'menudiag-return-contin) + +(defvar menudiag-value nil) +(make-variable-buffer-local 'menudiag-value) + +(defvar menudiag-done nil) +(make-variable-buffer-local 'menudiag-done) + ;; Entry function -(defun menudiag-select (menu &optional menudiag-continuation return-contin) - (let ((enable-recursive-minibuffers t) - value done) - (setq menudiag-window-conf nil) - (if menudiag-continuation - (setq unread-command-events (cons 'menudiag-continuation - unread-command-events))) - (if (not return-contin) - (setq value t)) - (menudiag-select-internal menu) - (if (eq done t) - value +(defun menudiag-select (menu &optional list-all continuation return-contin) + (let ((enable-recursive-minibuffers t)) + (setq menudiag-return-contin return-contin) + (menudiag-select-internal menu list-all continuation) + (if (eq menudiag-done t) + menudiag-value (signal 'quit "")))) -;; Entry function -(defun menudiag-get-value (continuation) - (menudiag-item-value (nth (1- (length continuation)) continuation))) +(defvar menudiag-line nil) +(make-variable-buffer-local 'menudiag-line) + +(defvar menudiag-linepos 0) +(make-variable-buffer-local 'menudiag-linepos) + +(defvar menudiag-pos-in-line 0) +(make-variable-buffer-local 'menudiag-pos-in-line) (defun menudiag-follow-continuation () + (let* ((item (car menudiag-continuation)) + (value (menudiag-item-value item)) + (pos (menudiag-search-item item))) + (unless pos + (error "no such item: %s" (menudiag-item-string item))) + (menudiag-goto-line (car pos)) + (menudiag-goto-item-internal (cdr pos)) + (when (menudiag-menu-p value) + (menudiag-select-internal value + menudiag-show-all + (cdr menudiag-continuation)) + (menudiag-redraw) + (when menudiag-done + (when menudiag-return-contin + (setq menudiag-value (cons item menudiag-value))) + (setq unread-command-events (cons 'exit unread-command-events)))))) + +(defvar menudiag-minibuffer-list nil) +(defvar menudiag-variable-alist nil) + +(defmacro menudiag-send-variables (&rest args) + `(setq menudiag-variable-alist + (list ,@(mapcar (lambda (var) `(cons ',var ,var)) args)))) + +(defmacro menudiag-send-variables-with-value (&rest args) + `(setq menudiag-variable-alist + ,(let ((alist (list 'list))) + (while args + (nconc alist `((cons ',(car args) ,(cadr args)))) + (setq args (cddr args))) + alist))) + +(defun menudiag-receive-variables () + (while menudiag-variable-alist + (set (caar menudiag-variable-alist) (cdar menudiag-variable-alist)) + (setq menudiag-variable-alist (cdr menudiag-variable-alist)))) + +(defvar menudiag-minibuf-prompt nil) +(make-variable-buffer-local 'menudiag-minibuf-prompt) + +(defvar menudiag-current-items nil) +(make-variable-buffer-local 'menudiag-current-items) + +(defvar menudiag-selection-list nil) +(make-variable-buffer-local 'menudiag-selection-list) + +(defun menudiag-minibuffer-hook () (interactive) - (let ((item (car menudiag-continuation))) - (setq menudiag-continuation (cdr menudiag-continuation)) - (if menudiag-continuation - (setq unread-command-events (cons 'menudiag-continuation - unread-command-events))) - (if (eq item 'menudiag-list-all) - (menudiag-list-other-window) - (let ((in-loop t)) - (while in-loop - (if (eq item (nth pos-in-line line)) - (setq in-loop nil) - (menudiag-forward-item) - (if (and (= linepos 0) (= pos-in-line 0)) - (error "no such item: %s" (menudiag-item-string item)))))) - (let ((v (menudiag-item-value item))) - (if (menudiag-menu-p v) - (unwind-protect - (progn - (menudiag-select-internal v) - (menudiag-redraw)) - (if (consp value) - (setq value (cons item value))) - (if done (menudiag-exit-minibuffer)))))))) + (remove-hook 'minibuffer-setup-hook 'menudiag-minibuffer-hook) + (setq menudiag-minibuffer-list (cons (current-buffer) + menudiag-minibuffer-list)) + (buffer-disable-undo) + (menudiag-receive-variables) + (menudiag-beginning-of-items) + (when menudiag-continuation + (menudiag-follow-continuation)) + (when (and menudiag-show-all (null menudiag-done)) + (menudiag-list-other-window))) -(defun menudiag-select-internal (menu) - (let* ((minibuf-prompt (nth 1 menu)) - (current-items (nth 2 menu)) - (selection-list - (menudiag-make-selection-list current-items - (- (window-width (minibuffer-window)) - (string-width minibuf-prompt)))) - (line (car selection-list)) - (minibuf-contents - (menudiag-make-menu-formatted-string line))) - (let ((linepos 0) - (pos-in-line 0)) - (read-from-minibuffer minibuf-prompt - (cons minibuf-contents 3) - menudiag-mode-map)))) +(defun menudiag-select-internal (menu all &optional continuation) + (menudiag-send-variables-with-value + menudiag-value menudiag-value + menudiag-continuation continuation + menudiag-return-contin menudiag-return-contin + menudiag-show-all all + menudiag-minibuf-prompt (cadr menu) + menudiag-current-items (car (cddr menu)) + menudiag-selection-list (menudiag-make-selection-list + (car (cddr menu)) + (- (window-width (minibuffer-window)) + (string-width (cadr menu))))) + (add-hook 'minibuffer-setup-hook 'menudiag-minibuffer-hook) + (unwind-protect + (progn + (read-from-minibuffer "" "" menudiag-mode-map) + (menudiag-receive-variables)) + (setq menudiag-minibuffer-list (cdr menudiag-minibuffer-list)) + (remove-hook 'minibuffer-setup-hook 'menudiag-minibuffer-hook) + ;; for egg's point-enterd/left hooks + (save-excursion + (goto-char (point-min))))) (defun menudiag-make-menu-formatted-string (item-list) (let ((i -1)) @@ -217,7 +278,7 @@ char)) ;; Character --> ITEM No -(defun menudiag-char-to-item-num (char) +(defun menudiag-char-to-item-num (ch) (let ((num)) (cond ((and (<= ?0 ch) (<= ch ?9)) (setq num (- ch ?0))) @@ -228,44 +289,52 @@ (t (setq num 1000))) num)) +(defun menudiag-check-current-menu () + (or (eq (current-buffer) (car menudiag-minibuffer-list)) + (error "menudiag: not current menu"))) + (defun menudiag-goto-item () (interactive) + (menudiag-check-current-menu) (let ((ch last-command-char) (n 0)) (setq n (menudiag-char-to-item-num ch)) - (if (>= n (length line)) + (if (>= n (length menudiag-line)) (error "No such item") (menudiag-goto-item-internal n) (if menudiag-select-without-return (menudiag-select-this-item))))) (defun menudiag-goto-item-internal (n) - (let ((old-pos-in-line pos-in-line) - (p 3) + (let ((p (+ (length menudiag-minibuf-prompt) 3)) (i 0)) - (setq pos-in-line n) - (while (< i pos-in-line) - (setq p (+ p (length (menudiag-item-string (nth i line))) 4)) + (setq menudiag-pos-in-line n) + (while (< i menudiag-pos-in-line) + (setq p (+ p (length (menudiag-item-string (nth i menudiag-line))) 4)) (setq i (1+ i))) (goto-char p))) (defun menudiag-beginning-of-items () (interactive) + (menudiag-check-current-menu) (menudiag-goto-line 0) (menudiag-beginning-of-line)) (defun menudiag-end-of-items () (interactive) - (menudiag-goto-line (1- (length selection-list))) + (menudiag-check-current-menu) + (menudiag-goto-line (1- (length menudiag-selection-list))) (menudiag-end-of-line)) (defun menudiag-beginning-of-line () (interactive) + (menudiag-check-current-menu) (menudiag-goto-item-internal 0)) (defun menudiag-end-of-line () (interactive) - (menudiag-goto-item-internal (1- (length line)))) + (menudiag-check-current-menu) + (menudiag-goto-item-internal (1- (length menudiag-line)))) ;; Should retain compatibility. Must. ;; @@ -296,127 +365,166 @@ ;; (insert (menudiag-make-menu-formatted-string line)))) ;; -(defun menudiag-forward-item () - (interactive) - (if (< pos-in-line (1- (length line))) - (menudiag-goto-item-internal (1+ pos-in-line)) - (if (>= linepos (1- (length selection-list))) - (menudiag-goto-line 0) - (menudiag-goto-line (1+ linepos))) - (menudiag-beginning-of-line))) +(defun menudiag-forward-item (n) + (interactive "p") + (menudiag-forward-item-internal n)) -(defun menudiag-backward-item () - (interactive) - (if (< 0 pos-in-line) - (menudiag-goto-item-internal (1- pos-in-line)) - (if (< linepos 1) - (menudiag-goto-line (1- (length selection-list))) - (menudiag-goto-line (1- linepos))) - (menudiag-end-of-line))) +(defun menudiag-backward-item (n) + (interactive "p") + (menudiag-forward-item-internal (- n))) + +(defun menudiag-forward-item-internal (n) + (menudiag-check-current-menu) + (setq n (+ n menudiag-pos-in-line)) + (while (< n 0) + (menudiag-goto-line (1- menudiag-linepos)) + (setq n (+ n (length menudiag-line)))) + (while (>= n (length menudiag-line)) + (setq n (- n (length menudiag-line))) + (menudiag-goto-line (1+ menudiag-linepos))) + (menudiag-goto-item-internal n)) (defun menudiag-goto-line (n) - (cond - ((>= n (length selection-list)) - (setq n 0)) - ((< n 0) - (setq n (1- (length selection-list))))) - (setq line (nth n selection-list) - linepos n) - (delete-region (point-min) (point-max)) - (insert (menudiag-make-menu-formatted-string line))) + (let ((len (length menudiag-selection-list))) + (when (< n 0) + (setq n (+ (% n len) len))) + (when (>= n len) + (setq n (% n len))) + (setq menudiag-line (nth n menudiag-selection-list) + menudiag-linepos n) + (let ((inhibit-read-only t)) + (erase-buffer) + (insert menudiag-minibuf-prompt + (menudiag-make-menu-formatted-string menudiag-line)) + (set-text-properties (point-min) (point-max) '(read-only t))))) -(defun menudiag-next-line () - (interactive) - (menudiag-goto-line (1+ linepos)) - (if (< pos-in-line (length line)) - (menudiag-goto-item-internal pos-in-line) - (menudiag-end-of-line))) +(defun menudiag-next-line (n) + (interactive "p") + (menudiag-next-line-internal n)) -(defun menudiag-previous-line () - (interactive) - (menudiag-goto-line (1- linepos)) - (if (< pos-in-line (length line)) - (menudiag-goto-item-internal pos-in-line) +(defun menudiag-previous-line (n) + (interactive "p") + (menudiag-next-line-internal (- n))) + +(defun menudiag-next-line-internal (n) + (menudiag-check-current-menu) + (menudiag-goto-line (+ menudiag-linepos n)) + (if (< menudiag-pos-in-line (length menudiag-line)) + (menudiag-goto-item-internal menudiag-pos-in-line) (menudiag-end-of-line))) (defun menudiag-redraw () (interactive) - (menudiag-goto-line linepos) - (menudiag-goto-item-internal pos-in-line)) + (menudiag-check-current-menu) + (menudiag-goto-line menudiag-linepos) + (menudiag-goto-item-internal menudiag-pos-in-line)) (defun menudiag-exit-one-level () (interactive) + (menudiag-check-current-menu) (menudiag-exit-minibuffer)) (defun menudiag-exit () (interactive) - (setq done 'quit) + (menudiag-check-current-menu) + (unless menudiag-done + (setq menudiag-done 'quit)) (menudiag-exit-minibuffer)) -(defun menudiag-select-this-item () +(defun menudiag-select-this-item (&optional all) (interactive) - (let* ((item (nth pos-in-line line)) + (menudiag-check-current-menu) + (let* ((item (nth menudiag-pos-in-line menudiag-line)) (v (menudiag-item-value item))) (if (menudiag-menu-p v) - (unwind-protect - (progn - (menudiag-restore-window) - (menudiag-select-internal v) - (menudiag-redraw)) - (if (consp value) - (setq value (cons item value))) - (if done (menudiag-exit-minibuffer))) - (if (eq value t) - (setq value (menudiag-item-value item)) - (setq value (cons item nil))) - (setq done t) + (progn + (menudiag-restore-window) + (menudiag-select-internal v all) + (menudiag-redraw) + (cond (menudiag-done + (when menudiag-return-contin + (setq menudiag-value (cons item menudiag-value))) + (menudiag-exit-minibuffer)) + (all + (menudiag-list-other-window)))) + (setq menudiag-value (if menudiag-return-contin + (list item) + (menudiag-item-value item)) + menudiag-done t) (menudiag-exit-minibuffer)))) + +(defun menudiag-search-item (item) + (let ((selection-list menudiag-selection-list) + (line 0) + rest) + (while (and selection-list + (null (setq rest (memq item (car selection-list))))) + (setq selection-list (cdr selection-list) + line (1+ line))) + (and selection-list + (cons line (- (length (car selection-list)) (length rest)))))) (defconst menudiag-selection-map - (let ((map (make-sparse-keymap))) - (define-key map [right] 'next-completion) - (define-key map [left] 'previous-completion) - (define-key map "\r" 'menudiag-choose-item) - (define-key map [mouse-2] 'menudiag-mouse-choose-item) - map)) + (let ((map (make-sparse-keymap)) + (ch ?0)) + (while (<= ch ?9) + (define-key map (char-to-string ch) 'menudiag-selection-goto) + (setq ch (1+ ch))) + (define-key map "q" 'menudiag-retun-to-minibuf) + (define-key map "\C-b" 'previous-completion) + (define-key map "\M-b" 'previous-completion) + (define-key map "\C-f" 'next-completion) + (define-key map "\M-f" 'next-completion) + (define-key map " " 'next-completion) + (define-key map "\C-g" 'menudiag-selection-exit-one-level) + (define-key map "\C-m" 'menudiag-choose-item) + (define-key map "\C-]" 'menudiag-selection-exit) + (define-key map "\177" 'menudiag-selection-goto-delete) + (define-key map [delete] 'menudiag-selection-goto-delete) + (define-key map [backspace] 'menudiag-selection-goto-delete) + (define-key map [right] 'next-completion) + (define-key map [left] 'previous-completion) + (define-key map [return] 'menudiag-choose-item) + (define-key map [mouse-2] 'menudiag-mouse-choose-item) + map) + "keymap for menu selection mode") + +(defvar menudiag-window-conf nil) +(make-variable-buffer-local 'menudiag-window-conf) (defvar menudiag-selection-buffer nil) (make-variable-buffer-local 'menudiag-selection-buffer) -(put 'menudiag-selection-buffer 'permanent-local t) (defvar menudiag-selection-main-buffer nil) (make-variable-buffer-local 'menudiag-selection-main-buffer) -(put 'menudiag-selection-main-buffer 'permanent-local t) (defun menudiag-selection-mode () - (interactive) (kill-all-local-variables) (make-local-variable 'inhibit-read-only) (setq buffer-read-only t inhibit-read-only nil) + (make-local-hook 'post-command-hook) + (add-hook 'post-command-hook 'menudiag-selection-align-to-item nil t) (use-local-map menudiag-selection-map) (setq mode-name "Menudiag Selection") (setq major-mode 'menudiag-selection-mode)) -(defun menudiag-max-item-width (item-list) - (let ((max 0)) - (while item-list - (setq max (max max (menudiag-item-width (car item-list))) - item-list (cdr item-list))) - max)) +(defun menudiag-max-item-width (items) + (apply 'max (mapcar 'menudiag-item-width items))) (defun menudiag-buffer-show-function () - (let* ((items current-items) - (digits (length (concat (length items)))) - (columns (max 1 (/ (window-width (minibuffer-window)) + (menudiag-receive-variables) + (let* ((items menudiag-current-items) + (digits (length (number-to-string (length items)))) + (form (concat "%" (number-to-string digits) "d. %s")) + (columns (max 1 (/ (window-width (selected-window)) (+ digits (menudiag-max-item-width items))))) - (width (/ (window-width (minibuffer-window)) columns)) - (col 0) (n 0) str) + (width (/ (window-width (selected-window)) columns)) + (col 0) (n 0) str p) (insert " ") (while items (setq p (point) - str (format (concat "%" digits "d. %s") - n (menudiag-item-string (car items)))) + str (format form n (menudiag-item-string (car items)))) (insert str) (set-text-properties p (point) '(mouse-face highlight)) (setq col (1+ col) @@ -433,75 +541,156 @@ (defun menudiag-buffer-name (prompt) (let ((len (1- (length prompt)))) - (if (= (aref prompt len) ?:) (substring prompt 0 len) prompt))) + (generate-new-buffer-name + (if (= (aref prompt len) ?:) (substring prompt 0 len) prompt)))) (defun menudiag-list-other-window () (interactive) - (let ((temp-buffer-show-hook 'menudiag-buffer-show-function) - (main-buf (current-buffer))) - (setq menudiag-window-conf (current-window-configuration)) - (with-output-to-temp-buffer (menudiag-buffer-name minibuf-prompt) - (setq menudiag-selection-buffer standard-output)) - (set-buffer menudiag-selection-buffer) - (setq menudiag-selection-main-buffer main-buf))) + (menudiag-check-current-menu) + (let ((window (and menudiag-selection-buffer + (get-buffer-window menudiag-selection-buffer)))) + (if window + (select-window window) + (let ((temp-buffer-show-hook 'menudiag-buffer-show-function) + (main-buf (current-buffer)) + (selection-list menudiag-selection-list) + (linepos menudiag-linepos) + (n (1+ menudiag-pos-in-line))) + (setq menudiag-window-conf (current-window-configuration)) + (menudiag-send-variables menudiag-current-items) + (with-output-to-temp-buffer + (menudiag-buffer-name menudiag-minibuf-prompt) + (setq menudiag-selection-buffer standard-output)) + (switch-to-buffer-other-window menudiag-selection-buffer) + (setq menudiag-selection-main-buffer main-buf + menudiag-selection-list selection-list) + (while (> linepos 0) + (setq linepos (1- linepos) + n (+ n (length (car selection-list))) + selection-list (cdr selection-list))) + (next-completion n))))) + +(defun menudiag-check-current-menu-list () + (or (eq menudiag-selection-main-buffer (car menudiag-minibuffer-list)) + (error "menudiag: not current menu list"))) (defun menudiag-choose-item () (interactive) - (let ((org-buf menudiag-selection-main-buffer) - (sel-buf (current-buffer)) - (item-list selection-list) - (l 0) - tmp-buf n) - (with-temp-buffer - (setq tmp-buf (current-buffer)) - (set-buffer sel-buf) - (setq completion-reference-buffer tmp-buf) - (choose-completion) - (set-buffer tmp-buf) - (setq n (string-to-int (buffer-string)))) - (pop-to-buffer org-buf) - (while (and item-list (>= (- n (length (car item-list))) 0)) - (setq l (1+ l) - n (- n (length (car item-list))) - item-list (cdr item-list))) - (menudiag-goto-line l) - (menudiag-goto-item-internal n) - (menudiag-select-this-item))) + (menudiag-choose-item-internal nil)) (defun menudiag-mouse-choose-item (event) (interactive "e") - (set-buffer (window-buffer (car (nth 1 event)))) + (set-buffer (window-buffer (caadr event))) + (menudiag-choose-item-internal event)) + +(defun menudiag-choose-item-internal (event) + (menudiag-check-current-menu-list) (let ((org-buf menudiag-selection-main-buffer) (sel-buf (current-buffer)) - (item-list selection-list) + (item-list menudiag-selection-list) (l 0) tmp-buf n) (with-temp-buffer (setq tmp-buf (current-buffer)) (set-buffer sel-buf) (setq completion-reference-buffer tmp-buf) - (mouse-choose-completion event) + (if event + (mouse-choose-completion event) + (choose-completion)) (set-buffer tmp-buf) (setq n (string-to-int (buffer-string)))) (pop-to-buffer org-buf) - (while (and item-list (>= (- n (length (car item-list))) 0)) + (while (and item-list (>= n (length (car item-list)))) (setq l (1+ l) n (- n (length (car item-list))) item-list (cdr item-list))) (menudiag-goto-line l) (menudiag-goto-item-internal n) - (menudiag-select-this-item))) + (menudiag-select-this-item t))) + +(defvar menudiag-goto-number-list nil) +(make-variable-buffer-local 'menudiag-goto-number-list) + +(defvar menudiag-original-point nil) +(make-variable-buffer-local' menudiag-original-point) + +(defun menudiag-selection-goto () + (interactive) + (unless (eq last-command 'menudiag-selection-goto) + (setq menudiag-goto-number-list nil + menudiag-original-point (point))) + (setq menudiag-goto-number-list (cons (- last-command-char ?0) + menudiag-goto-number-list)) + (menudiag-selection-goto-internal)) + +(defun menudiag-selection-goto-internal () + (let* ((list menudiag-goto-number-list) + (n (menudiag-selection-item-number list)) + (len (save-excursion + (set-buffer menudiag-selection-main-buffer) + (length menudiag-current-items)))) + (setq this-command 'menudiag-selection-goto) + (if (>= n len) + (progn + (ding) + (setq menudiag-goto-number-list (cdr list))) + (goto-char (point-min)) + (next-completion (1+ n))))) + +(defun menudiag-selection-item-number (list) + (let ((n 0) + (exp 1)) + (while list + (setq n (+ (* (car list) exp) n) + exp (* 10 exp) + list (cdr list))) + n)) + +(defun menudiag-selection-goto-delete (n) + (interactive "p") + (if (null (eq last-command 'menudiag-selection-goto)) + (ding) + (setq menudiag-goto-number-list (nthcdr n menudiag-goto-number-list)) + (if (null menudiag-goto-number-list) + (goto-char menudiag-original-point) + (menudiag-selection-goto-internal)))) + +(defun menudiag-selection-align-to-item () + (cond ((bolp) + (next-completion 1)) + ((get-text-property (1- (point)) 'mouse-face) + (goto-char (previous-single-property-change (point) 'mouse-face))))) (defun menudiag-restore-window () - (if menudiag-window-conf - (progn - (set-window-configuration menudiag-window-conf) - (setq menudiag-window-conf nil) - (kill-buffer menudiag-selection-buffer)))) + (when menudiag-window-conf + (set-window-configuration menudiag-window-conf) + (kill-buffer menudiag-selection-buffer))) (defun menudiag-exit-minibuffer () - (and menudiag-window-conf (menudiag-restore-window)) + (menudiag-restore-window) + (menudiag-send-variables menudiag-done menudiag-value) + (buffer-enable-undo) (exit-minibuffer)) + +(defun menudiag-retun-to-minibuf () + (interactive) + (menudiag-check-current-menu-list) + (unless (minibuffer-window-active-p (minibuffer-window)) + (set-minibuffer-window (minibuffer-window))) + (let ((window (get-buffer-window menudiag-selection-main-buffer))) + (if window + (select-window window) + (error "menudiag: cannot find minibuffer")))) + +(defun menudiag-selection-exit-one-level () + (interactive) + (set-buffer menudiag-selection-main-buffer) + (menudiag-exit-one-level)) + +(defun menudiag-selection-exit () + (interactive) + (set-buffer menudiag-selection-main-buffer) + (menudiag-exit)) (provide 'menudiag) ;;; menudiag.el ends here. Index: egg/anthy.el =================================================================== RCS file: egg/anthy.el diff -N egg/anthy.el --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ egg/anthy.el 8 Aug 2002 08:11:22 -0000 1.2 @@ -0,0 +1,220 @@ +;;; egg/anthy.el --- ANTHY Support (high level interface) in Egg +;;; Input Method Architecture + +;; Copyright (C) 2002 The Free Software Initiative of Japan + +;; Author: NIIBE Yutaka + +;; Maintainer: NIIBE Yutaka + +;; Keywords: mule, multilingual, input method + +;; This file is part of EGG. + +;; EGG is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; EGG is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + + +;;; Code: + +(require 'egg) +(require 'egg-edep) + +(defgroup anthy nil + "Anthy interface for Tamago 4." + :group 'egg) + +(setplist 'anthy-conversion-backend + '(egg-start-conversion anthy-convert + egg-get-bunsetsu-source anthy-get-bunsetsu-source + egg-get-bunsetsu-converted anthy-get-bunsetsu-converted + egg-list-candidates anthy-get-candidates + egg-decide-candidate anthy-select-candidate + egg-change-bunsetsu-length anthy-resize-segment + egg-end-conversion anthy-commit + ;; + egg-get-source-language anthy-get-source-language + egg-get-converted-language anthy-get-converted-language)) + +(defconst anthy-backend-alist '((Japanese ((anthy-conversion-backend))))) + +(egg-set-finalize-backend '(anthy-finalize-backend)) + +(defvar anthy-proc nil + "Process of ANTHY helper agent.") + +;; ::= ( ... ) +;; +;; ::= +;; ::= +(defvar anthy-environment-pool nil + "Environments for ANTHY kana-kanji conversion, to be used.") + +(defvar anthy-environments-in-use nil + "Environments for ANTHY kana-kanji conversion, in use.") + +;; +;; ::= +;; [ ] +(defsubst anthy-make-bunsetsu (env source converted seg-no) + (egg-bunsetsu-create + 'anthy-conversion-backend + (vector env source converted nil 0 seg-no))) + +(defsubst anthybunsetsu-get-env (b) + (aref (egg-bunsetsu-get-info b) 0)) +(defsubst anthybunsetsu-get-source (b) + (aref (egg-bunsetsu-get-info b) 1)) +(defsubst anthybunsetsu-get-converted (b) + (aref (egg-bunsetsu-get-info b) 2)) +(defsubst anthybunsetsu-get-candidates (b) + (aref (egg-bunsetsu-get-info b) 3)) +(defsubst anthybunsetsu-set-candidates (b z) + (aset (egg-bunsetsu-get-info b) 3 z)) +(defsubst anthybunsetsu-get-candidate-pos (b) + (aref (egg-bunsetsu-get-info b) 4)) +(defsubst anthybunsetsu-set-candidate-pos (b zp) + (aset (egg-bunsetsu-get-info b) 4 zp)) +(defsubst anthybunsetsu-get-seg-no (b) + (aref (egg-bunsetsu-get-info b) 5)) + +(defun anthy-get-bunsetsu-source (b) + (anthybunsetsu-get-source b)) + +(defun anthy-get-bunsetsu-converted (b) + (let ((cands (anthybunsetsu-get-candidates b))) + (if cands + (nth (anthybunsetsu-get-candidate-pos b) cands) + (anthybunsetsu-get-converted b)))) + +(defun anthy-get-source-language (b) 'Japanese) +(defun anthy-get-converted-language (b) 'Japanese) + +;; Getting new context-descriptor, and returns environment with 'inuse' bit +(defun anthy-new-environment () + (if (null anthy-proc) + (let ((buf (generate-new-buffer " *ANTHY*")) + (process-connection-type nil)) ; avoid using pty + (setq anthy-proc + (start-process "anthy-agent" buf "anthy-agent" "--egg")) + (process-kill-without-query anthy-proc) + (set-process-coding-system anthy-proc 'euc-jp-dos 'euc-jp-dos) + (set-process-sentinel anthy-proc 'anthy-proc-sentinel) + (set-marker-insertion-type (process-mark anthy-proc) t) + (save-excursion + (set-buffer buf) + (erase-buffer) + (buffer-disable-undo)))) + (anthyipc-get-greeting anthy-proc) + (anthyipc-new-context anthy-proc)) + +;;; XXX: Don't kill buffer (for now) so that I can debug this program +(defun anthy-proc-sentinel (proc reason) +; (kill-buffer (process-buffer proc)) + (setq anthy-proc nil + anthy-environments-in-use nil + anthy-environment-pool nil)) + +;;; anthyipc-release-context + + +(defun anthy-get-environment () + "Return the ANTHY environment." + (if anthy-environment-pool + (let ((env (car anthy-environment-pool))) + (setq anthy-environment-pool (cdr anthy-environment-pool)) + (setq anthy-environments-in-use (cons env anthy-environments-in-use)) + env) + (let ((env (anthy-new-environment))) + (setq anthy-environments-in-use (cons env anthy-environments-in-use)) + env))) + +;; +;; Returns list of bunsetsu +;; +(defun anthy-convert (backend yomi &optional context) + "Convert YOMI string to kanji, and enter conversion mode. +Return the list of bunsetsu." + (let ((env (anthy-get-environment))) + (anthyipc-convert anthy-proc env yomi))) + +;; +;; +;; +(defun anthy-commit (bunsetsu-list abort) + (let ((env (anthybunsetsu-get-env (car bunsetsu-list)))) + (anthyipc-commit anthy-proc env (if abort 1 0)) + (setq anthy-environment-pool (cons env anthy-environment-pool)) + (setq anthy-environments-in-use (delq env anthy-environments-in-use)))) + +;; +;; Returns ( ) +;; +(defun anthy-get-candidates (bunsetsu-list prev-bunsetsu next-bunsetsu major) + (let ((bunsetsu (car bunsetsu-list))) + (if (anthybunsetsu-get-candidates bunsetsu) + (cons (anthybunsetsu-get-candidate-pos bunsetsu) + (anthybunsetsu-get-candidates bunsetsu)) + (let* ((env (anthybunsetsu-get-env bunsetsu)) + (seg-no (anthybunsetsu-get-seg-no bunsetsu)) + (cands (anthyipc-get-candidates anthy-proc env seg-no))) + (cons (anthybunsetsu-set-candidate-pos bunsetsu 0) + (anthybunsetsu-set-candidates bunsetsu cands)))))) + +;; Returns list of list of bunsetsu +(defun anthy-select-candidate (bunsetsu-list candidate-pos prev-b next-b) + (let* ((bunsetsu (car bunsetsu-list)) + (candidate-list (anthybunsetsu-get-candidates bunsetsu)) + (candidate (nth candidate-pos candidate-list)) + (env (anthybunsetsu-get-env bunsetsu)) + (seg-no (anthybunsetsu-get-seg-no bunsetsu))) + (anthybunsetsu-set-candidate-pos bunsetsu candidate-pos) + ;; Anthy doesn't have capability of changing another segment + ;; at the selection of a segment. + ;; So, just ignore the result of "SELECT-CANDIDATE" + (anthyipc-select-candidate anthy-proc env seg-no candidate-pos) + (list (list bunsetsu)))) + +;; Returns list of list of bunsetsu +(defun anthy-resize-segment (bunsetsu-list prev-b next-b len major) + (let ((bunsetsu (car bunsetsu-list))) + (let ((env (anthybunsetsu-get-env bunsetsu)) + (seg-no (anthybunsetsu-get-seg-no bunsetsu)) + (prevlen (length (anthybunsetsu-get-source bunsetsu)))) + (let ((r (anthyipc-resize-segment anthy-proc env seg-no + (if (< prevlen len) 0 1)))) + ;; XXX: I don't know what this means, + ;; but this works. Blame EGG. + (list (list (car r)) nil (cdr r)))))) + +(defun anthy-finalize-backend () + (if anthy-proc + (progn + (delete-process anthy-proc) + (setq anthy-proc nil)))) + +;;; setup + +(load "egg/anthyipc") +(run-hooks 'anthy-load-hook) + +;;;###autoload +(defun egg-activate-anthy (&rest arg) + "Activate ANTHY backend of Tamago 4." + (apply 'egg-mode (append arg anthy-backend-alist))) + +;;; egg/anthy.el ends here. Index: egg/anthyipc.el =================================================================== RCS file: egg/anthyipc.el diff -N egg/anthyipc.el --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ egg/anthyipc.el 8 Aug 2002 07:28:41 -0000 1.1 @@ -0,0 +1,195 @@ +;;; egg/anthyipc.el --- ANTHY IPC Support (low level interface) in Egg +;;; Input Method Architecture + +;; Copyright (C) 2002 The Free Software Initiative of Japan + +;; Author: NIIBE Yutaka + +;; Maintainer: NIIBE Yutaka + +;; Keywords: mule, multilingual, input method + +;; This file is part of EGG. + +;; EGG is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; EGG is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + + +;;; Code: + +(defmacro anthyipc-call-with-proc (proc vlist send-expr &rest receive-exprs) + `(let* ((proc ,proc) + (buffer (process-buffer proc)) + ,@vlist) + (if (and (eq (process-status proc) 'run) + (buffer-live-p buffer)) + (save-excursion + (set-buffer buffer) + (erase-buffer) + ,send-expr + (goto-char (point-max)) + (process-send-region proc (point-min) (point-max)) + ,@receive-exprs) + (egg-error "process %s was killed" proc)))) + +(defun anthyipc-wait-line () + (let ((start (point))) + (while (not (search-forward "\n" nil 1)) + (accept-process-output proc 1000) + (goto-char start)) + (goto-char start))) + +(defun anthyipc-accept-ok () + (anthyipc-wait-line) + (if (eq (char-after) ?+) + ;; "+OK" + (goto-char (point-max)) + (egg-error "protocol error: %s" (buffer-substring (point) (point-max))))) + +(defun anthyipc-accept-number () + (anthyipc-wait-line) + (if (eq (char-after) ?+) + ;; "+OK " + (progn + (forward-char 4) + (prog1 + (read (current-buffer)) + (goto-char (point-max)))) + (egg-error "protocol error: %s" (buffer-substring (point) (point-max))))) + +(defun anthyipc-read-string () + (if (eq (char-after) ?\ ) + (forward-char 1)) + (let ((start (point))) + (while (and (char-after) + (not (eq (char-after) ?\ )) + (not (eq (char-after) ?\n))) + (forward-char 1)) + (buffer-substring start (point)))) + +(defun anthyipc-accept-segments (env seg-no-orig) + (anthyipc-wait-line) + (if (eq (char-after) ?+) + (progn + (forward-char 1) + (if (eq (char-after) ?O) + ;; "+OK" + (progn + (goto-char (point-max)) + t) + ;; "+DATA " + ;; " "*N + ;; "" + ;; + (forward-char 5) + (let* ((seg-no (read (current-buffer))) + (num-segments-removed (read (current-buffer))) + (num-segments-inserted (read (current-buffer))) + (segment-list nil) + (in-loop t) + (i seg-no)) + (while in-loop + (forward-char 1) + (anthyipc-wait-line) + (if (eq (char-after) ?\n) + (setq in-loop nil) + (let* ((num-candidates (read (current-buffer))) + (converted (anthyipc-read-string)) + (source (anthyipc-read-string)) + (segment (anthy-make-bunsetsu env source converted i))) + (setq i (1+ i)) + (setq segment-list (cons segment segment-list))))) + ;; XXX check if seg-no == seg-no-orig + ;; XXX check inserted and length of segment-list??? + (forward-char 1) + (cons seg-no (cons num-segments-removed (reverse segment-list)))))) + (egg-error "protocol error: %s" (buffer-substring (point) (point-max))))) + +(defun anthyipc-accept-candidates () + (anthyipc-wait-line) + (if (eq (char-after) ?+) + (progn + ;; "+DATA " + ;; ""*N + ;; "" + (forward-char 6) + (let* ((offset (read (current-buffer))) + (num-candidates (read (current-buffer))) + (candidate-list nil) + (in-loop t)) + (while in-loop + (forward-char 1) + (anthyipc-wait-line) + (if (eq (char-after) ?\n) + (setq in-loop nil) + (let ((candidate (anthyipc-read-string))) + (setq candidate-list (cons candidate candidate-list))))) + ;; XXX check num-candidates and length of candidate-list??? + (forward-char 1) + (cons offset (reverse candidate-list)))) + (egg-error "protocol error: %s" (buffer-substring (point) (point-max))))) + +(defun anthyipc-get-greeting (proc) + (anthyipc-call-with-proc proc () + nil + (anthyipc-wait-line) + (message (buffer-substring (point-min) (1- (point-max)))))) + +(defun anthyipc-new-context (proc) + (anthyipc-call-with-proc proc () + (insert "NEW-CONTEXT INPUT=#18 OUTPUT=#18\n") + (anthyipc-accept-number))) + +(defun anthyipc-release-context (proc cont) + (anthyipc-call-with-proc proc () + (insert (format "RELEASE-CONTEXT %d\n" cont)) + (anthyipc-accept-ok))) + +;; Returns list of bunsetsu +(defun anthyipc-convert (proc cont yomi) + (anthyipc-call-with-proc proc () + (insert (format "CONVERT %d %s\n" cont yomi)) + (let ((r (anthyipc-accept-segments cont 0))) + (cdr (cdr r))))) + +(defun anthyipc-commit (proc cont cancel) + (anthyipc-call-with-proc proc () + (insert (format "COMMIT %d %d\n" cont cancel)) + (anthyipc-accept-ok))) + +;;; Returns list of candidate +(defconst anthy-max-candidates 9999) +(defun anthyipc-get-candidates (proc cont seg-no) + (anthyipc-call-with-proc proc () + (insert + (format "GET-CANDIDATES %d %d %d %d\n" cont seg-no 0 anthy-max-candidates)) + (let ((r (anthyipc-accept-candidates))) + (cdr r)))) + +;;; Returns segments +(defun anthyipc-select-candidate (proc cont seg-no candidate-no) + (anthyipc-call-with-proc proc () + (insert (format "SELECT-CANDIDATE %d %d %d\n" cont seg-no candidate-no)) + (anthyipc-accept-segments cont seg-no))) + +;;; Returns segments +(defun anthyipc-resize-segment (proc cont seg-no inc-dec) + (anthyipc-call-with-proc proc () + (insert (format "RESIZE-SEGMENT %d %d %d\n" cont seg-no inc-dec)) + (cddr (anthyipc-accept-segments cont seg-no)))) + +;;; egg/anthyipc.el ends here. Index: egg/canna.el =================================================================== RCS file: /cvs/tamago/tamago/egg/canna.el,v retrieving revision 1.1.1.1 retrieving revision 1.4 diff -d -u -p -r1.1.1.1 -r1.4 --- egg/canna.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ egg/canna.el 22 Jul 2002 13:18:56 -0000 1.4 @@ -30,257 +30,878 @@ ;;; Code: - +(require 'egg) (require 'egg-edep) -(eval-when-compile - (defmacro CANNA-const (c) - (cond ((eq c 'FileNotExist) xxxxxxxxxxxxxx) - ))) +(defgroup canna nil + "CANNA interface for Tamago 4." + :group 'egg) -(defconst canna-conversion-backend - [ canna-init +(defcustom canna-hostname "localhost" + "Hostname of CANNA server" + :group 'canna :type 'string) - canna-start-conversion - canna-get-bunsetsu-converted - canna-get-bunsetsu-source - canna-list-candidates - canna-get-number-of-candidates - canna-get-current-candidate-number - canna-get-all-candidates - canna-decide-candidate - canna-change-bunsetsu-length - canna-end-conversion - nil +(defcustom canna-server-port "canna" + "A service name or a port number (should be a string) of CANNA server" + :group 'canna :type 'string) - canna-fini - ]) +(defcustom canna-user-name nil + "User Name on CANNA server" + :group 'canna :type 'string) -(defconst canna-server-port 5680 "Port number of Canna server") -(defvar canna-hostname "localhost" - "Hostname of Canna server") +(defcustom canna-group-name nil + "Group Name on CANNA server" + :group 'canna :type 'string) -(defun canna-open (hostname) - "Establish the connection to CANNA server. Return environment object." - (let* ((buf (generate-new-buffer " *CANNA*")) - (proc (open-network-stream "CANNA" buf hostname canna-server-port)) - result) - (process-kill-without-query proc) - (set-process-coding-system proc 'no-conversion 'no-conversion) - (set-marker-insertion-type (process-mark proc) t) - (save-excursion - (set-buffer buf) - (erase-buffer) - (buffer-disable-undo) - (set-buffer-multibyte nil)) - (setq result (cannarpc-open proc (user-login-name))) - (if (< result 0) - (let ((msg (cannarpc-get-error-message (- result)))) - (delete-process proc) - (kill-buffer buf) - (error "Can't open CANNA session (%s): %s" hostname msg))) - (vector proc result))) +; (eval-when-compile +; (defmacro CANNA-const (c) +; (cond ((eq c 'FileNotExist) xxxxxxxxxxxxxx) +; ))) -;; XXX: Should support multiple outstanding context -;; ::= [ ] -(defvar canna-environment nil +(egg-add-message + '((Japanese + (canna-connect-error "$B%5!<%P$H@\B3$G$-$^$;$s$G$7$?(B") + (canna-fail-make-env "$B4D6-$r:n$k$3$H$O$G$-$^$;$s$G$7$?(B") + (canna-dict-missing-1 "$B<-=q%U%!%$%k(B %s $B$,$"$j$^$;$s!#(B") + (canna-dict-missing-2 "$B<-=q%U%!%$%k(B %s $B$,$"$j$^$;$s!#:n$j$^$9$+(B? ") + (canna-dict-created "$B<-=q%U%!%$%k(B %s $B$r:n$j$^$7$?(B") + (canna-dict-saving "%s $B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$F$$$^$9(B") + (canna-dict-saved "%s $B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?(B") + (canna-register-1 "$BEPO?<-=qL>(B:") + (canna-register-2 "$BIJ;lL>(B")))) + +(defvar canna-hinshi-alist + '(("$B?ML>(B" . "#JN") ("$BCOL>(B" . "#CN") ("$B8GM-L>;l(B" . "#KK") + ("$B0lHLL>;l(B" . "#T35") ("$BL>;l(B($BNc(B)$B6/NO$J(B" . "#T15") + ("$B%5JQL>;l(B" . "#T30") ("$B%5JQL>;l(B($BNc(B)$B0B?4$J(B" . "#T10") ("$BC14A;z(B" . "#KJ") + ("$BF0;l%+9TJQ3J3hMQ(B" . "#KX") ("$BF0;l%s%69TJQ3J3hMQ(B" . "#NZX") + ("$BF0;l%69TJQ3J3hMQ(B" . "#ZX") ("$BF0;l%59TJQ3J3hMQ(B" . "#SX") + ("$BF0;l%+9T8^CJ3hMQ(B" . "#K5") ("$BF0;l%,9T8^CJ3hMQ(B" . "#G5") + ("$BF0;l%59T8^CJ3hMQ(B" . "#S5") ("$BF0;l%?9T8^CJ3hMQ(B" . "#T5") + ("$BF0;l%J9T8^CJ3hMQ(B" . "#N5") ("$BF0;l%P9T8^CJ3hMQ(B" . "#B5") + ("$BF0;l%^9T8^CJ3hMQ(B" . "#M5") ("$BF0;l%i9T8^CJ3hMQ(B" . "#R5") + ("$BF0;l%o9T8^CJ3hMQ(B" . "#W5") ("$BF0;l>e2<0lCJ3hMQ(B" . "#KS") + ("$BF0;l%+9T8^CJO"MQL>;l(B" . "#K5r") ("$BF0;l%,9T8^CJO"MQL>;l(B" . "#G5r") + ("$BF0;l%59T8^CJO"MQL>;l(B" . "#S5r") ("$BF0;l%?9T8^CJO"MQL>;l(B" . "#T5r") + ("$BF0;l%J9T8^CJO"MQL>;l(B" . "#N5r") ("$BF0;l%P9T8^CJO"MQL>;l(B" . "#B5r") + ("$BF0;l%^9T8^CJO"MQL>;l(B" . "#M5r") ("$BF0;l%i9T8^CJO"MQL>;l(B" . "#R5r") + ("$BF0;l%o9T8^CJO"MQL>;l(B" . "#W5r") ("$BF0;l>e2<0lCJ8l44L>;l(B" . "#KSr") + ("$B7AMF;l(B" . "#KY") ("$B7AMF;l(B($BNc(B)$B$-$$$m$$(B" . "#KYT") + ("$B7AMFF0;l(B" . "#T05") + ("$B7AMFF0;l(B($BNc(B)$B4X?4$@(B" . "#T10") ("$B7AMFF0;l(B($BNc(B)$BB?92$F$@(B" . "#T13") + ("$B7AMFF0;l(B($BNc(B)$B0U30$@(B" . "#T15") ("$B7AMFF0;l(B($BNc(B)$BJXMx$@(B" . "#T18") + ("$BI{;l(B" . "#F14") ("$BI{;l(B($BNc(B)$B$U$C$/$i(B" . "#F04") + ("$BI{;l(B($BNc(B)$B$=$C$H(B" . "#F12") ("$BI{;l(B($BNc(B)$BFMA3(B" . "#F06") + ("$B?t;l(B" . "#NN") ("$B@\B3;l!&46F0;l(B" . "#CJ") ("$BO"BN;l(B" . "#RT"))) + +(defvar canna-hinshi-menu + '("$B?ML>(B" "$BCOL>(B" ("$BCDBN!&2q(B" . "$B8GM-L>;l(B") ("$BL>;l(B" . MEISHI) + ("$B%5JQL>;l(B" . SAHEN-MEISHI) "$BC14A;z(B" ("$BF0;l(B" . DOUSHI) + ("$B7AMF;l(B" . KEIYOUSHI) ("$B7AMFF0;l(B" . KEIYOUDOUSHI) ("$BI{;l(B" . FUKUSHI) + "$B?t;l(B" "$B@\B3;l!&46F0;l(B" "$BO"BN;l(B" ("$B$=$NB>$N8GM-L>;l(B" . "$B8GM-L>;l(B")) + "Menu data for a hinshi (a part of speech) selection.") + +(defun canna-hinshi-name (id &optional reverse) + (if reverse + (cdr (assoc id canna-hinshi-alist)) + (car (rassoc id canna-hinshi-alist)))) + +(defmacro canna-backend-plist () + ''(egg-start-conversion canna-start-conversion + egg-get-bunsetsu-source canna-get-bunsetsu-source + egg-get-bunsetsu-converted canna-get-bunsetsu-converted + egg-get-source-language canna-get-source-language + egg-get-converted-language canna-get-converted-language + egg-list-candidates canna-list-candidates + egg-decide-candidate canna-decide-candidate + egg-special-candidate canna-special-candidate + egg-change-bunsetsu-length canna-change-bunsetsu-length + egg-end-conversion canna-end-conversion + egg-word-registration canna-word-registration)) + +(defconst canna-backend-language-alist nil) + +(defvar canna-backend-alist nil) + +(defun canna-backend-func-name (name lang &optional env) + (intern (concat name "-" (symbol-name lang) + (and env "-") (and env (symbol-name env))))) + +(defun canna-make-backend (lang env &optional source-lang converted-lang) + (let ((finalize (canna-backend-func-name "canna-finalize-backend" lang)) + (backend (canna-backend-func-name "canna-backend" lang env))) + (if (null (fboundp finalize)) + (progn + (fset finalize (function (lambda () (canna-finalize-backend)))) + (egg-set-finalize-backend (list finalize)))) + (if (null (get backend 'egg-start-conversion)) + (setplist backend (apply 'list + 'language lang + 'source-language (or source-lang lang) + 'converted-language (or converted-lang lang) + (canna-backend-plist)))) + backend)) + +(defun canna-define-backend (lang env-name-list) + (mapcar (lambda (env) + (if (consp env) + (canna-define-backend lang env) + (canna-make-backend lang env))) + env-name-list)) + +(defun canna-define-backend-alist (deflist) + (setq canna-backend-alist + (mapcar (lambda (slot) + (let* ((lang (car slot)) + (alt (cdr (assq lang canna-backend-language-alist)))) + (cons lang (canna-define-backend (or alt lang) (cdr slot))))) + deflist))) + +(defcustom canna-backend-define-list + '((Japanese ((nil nil nil)) + ((Bushu Bushu Bushu)))) + "Alist of Japanese language and lists of the Canna backend suffixes." + :group 'canna + :set (lambda (sym value) + (set-default sym value) + (canna-define-backend-alist value)) + :type '(repeat + (cons + :tag "Language - Backend" + (choice :tag "Language" + (const Japanese) + (symbol :tag "Other")) + (repeat + (cons + :tag "Backend Sequece" + (cons :tag "First Conversion Stage" + (symbol :tag "Backend for Start Conversion") + (repeat :tag "Backends for Reconvert" + (symbol :tag "Backend"))) + (repeat + :tag "Following Conversion Stages" + (cons + :tag "N-th Stage" + (symbol :tag "Backend for This Stage") + (repeat :tag "Backends for Reconvert" + (symbol :tag "Backend"))))))))) + +(defsubst canna-backend-get-language (backend) + (get backend 'language)) + +(defsubst canna-backend-get-source-language (backend) + (get backend 'source-language)) + +(defsubst canna-backend-get-converted-language (backend) + (get backend 'converted-language)) + +(defvar canna-envspec-list nil) +(defvar canna-current-envspec nil) + +;; Should support multiple outstanding context +;; ::= [ ] +(defvar canna-environments nil "Environment for CANNA kana-kanji conversion") -(defsubst cannaenv-get-proc (env) - (aref env 0)) -(defsubst cannaenv-get-context (env) - (aref env 1)) +(defun cannaenv-create (proc context &optional backend mode nostudy) + (vector proc context backend mode nostudy (list nil))) -;; ::= -;; [ -;; ] -(defsubst canna-make-bunsetsu (env converted bunsetsu-pos) - (vector env converted bunsetsu-pos nil nil nil)) +(defsubst cannaenv-get-proc (env) (aref env 0)) +(defsubst cannaenv-get-context (env) (aref env 1)) +(defsubst cannaenv-get-backend (env) (aref env 2)) +(defsubst cannaenv-get-mode (env) (aref env 3)) +(defsubst cannaenv-get-nostudy (env) (aref env 4)) +(defsubst cannaenv-get-dic-list (env) (cdr (aref env 5))) -(defsubst cannabunsetsu-get-env (b) - (aref b 0)) -(defsubst cannabunsetsu-get-converted (b) - (aref b 1)) -(defsubst cannabunsetsu-get-bunsetsu-pos (b) - (aref b 2)) -(defsubst cannabunsetsu-get-source (b) - (aref b 3)) -(defsubst cannabunsetsu-set-source (b s) - (aset b 3 s)) -(defsubst cannabunsetsu-get-zenkouho-pos (b) - (aref b 4)) -(defsubst cannabunsetsu-set-zenkouho-pos (b p) - (aset b 4 p)) -(defsubst cannabunsetsu-get-zenkouho (b) - (aref b 5)) -(defsubst cannabunsetsu-set-zenkouho (b z) - (aset b 5 z)) +(defsubst cannaenv-add-dic-list (env &rest dic) + (nconc (aref env 5) (list (apply 'vector dic)))) + +;; ::= +;; [ +;; ] +(defsubst canna-make-bunsetsu (env converted bunsetsu-pos source) + (egg-bunsetsu-create + (cannaenv-get-backend env) + (vector env converted bunsetsu-pos source nil nil nil))) + +(defsubst canna-bunsetsu-get-env (b) + (aref (egg-bunsetsu-get-info b) 0)) +(defsubst canna-bunsetsu-get-converted (b) + (aref (egg-bunsetsu-get-info b) 1)) +(defsubst canna-bunsetsu-get-bunsetsu-pos (b) + (aref (egg-bunsetsu-get-info b) 2)) +(defsubst canna-bunsetsu-get-source (b) + (aref (egg-bunsetsu-get-info b) 3)) +(defsubst canna-bunsetsu-set-source (b s) + (aset (egg-bunsetsu-get-info b) 3 s)) +(defsubst canna-bunsetsu-get-zenkouho-pos (b) + (aref (egg-bunsetsu-get-info b) 4)) +(defsubst canna-bunsetsu-set-zenkouho-pos (b p) + (aset (egg-bunsetsu-get-info b) 4 p)) +(defsubst canna-bunsetsu-get-zenkouho (b) + (aref (egg-bunsetsu-get-info b) 5)) +(defsubst canna-bunsetsu-set-zenkouho (b z) + (aset (egg-bunsetsu-get-info b) 5 z)) +(defsubst canna-bunsetsu-get-zenkouho-converted (b) + (aref (egg-bunsetsu-get-info b) 6)) +(defsubst canna-bunsetsu-set-zenkouho-converted (b zc) + (aset (egg-bunsetsu-get-info b) 6 zc)) (defun canna-get-bunsetsu-source (b) - (let ((s (cannabunsetsu-get-source b))) + (let ((s (canna-bunsetsu-get-source b))) (or s - (let* ((env (cannabunsetsu-get-env b)) - (bp (cannabunsetsu-get-bunsetsu-pos b)) + (let* ((env (canna-bunsetsu-get-env b)) + (bp (canna-bunsetsu-get-bunsetsu-pos b)) (s (cannarpc-get-bunsetsu-source env bp))) - (cannabunsetsu-set-source b s))))) + (canna-bunsetsu-set-source b s))))) +(defun canna-get-bunsetsu-converted (b) (canna-bunsetsu-get-converted b)) +(defun canna-get-source-language (b) 'Japanese) +(defun canna-get-converted-language (b) 'Japanese) -(defun canna-get-bunsetsu-converted (b) - (cannabunsetsu-get-converted b)) +(defun canna-envspec-create (env-name convert-mode nostudy) + (vector (and env-name (setq env-name (intern env-name))) + (canna-make-backend egg-language env-name) + convert-mode nostudy (list nil))) -(defconst canna-dictionary-specification - '("iroha" - "fuzokugo" - "hojomwd" - "hojoswd" - "bushu" - "user" - ) - "Dictionary specification of CANNA.") +(defsubst canna-envspec-env-type (spec) (aref spec 0)) +(defsubst canna-envspec-backend (spec) (aref spec 1)) +(defsubst canna-envspec-mode (spec) (aref spec 2)) +(defsubst canna-envspec-nostudy (spec) (aref spec 3)) +(defsubst canna-envspec-dic-list (spec) (cdr (aref spec 4))) + +(defsubst canna-envspec-add-dic-list (spec &rest dic) + (nconc (aref spec 4) (list (apply 'vector dic)))) + +(defmacro canna-arg-type-error (func) + `(egg-error ,(format "%s: Wrong type argument" func))) + +(defun canna-define-environment (&optional env-name convert-mode nostudy) + "Define a Canna environment. ENV-NAME specifies suffix of the Canna +environment name. CONVERT-MODE specifies including hiragana or +katakana to candidates list. NOSTUDY specifies not study." + (if (and env-name (null (stringp env-name))) + (canna-arg-type-error canna-define-environment)) + (setq canna-current-envspec (canna-envspec-create env-name + convert-mode nostudy) + canna-envspec-list (nconc canna-envspec-list + (list canna-current-envspec)))) + +(defun canna-add-dict (dict dict-rw) + (canna-envspec-add-dic-list canna-current-envspec dict dict-rw)) + +(defun canna-comm-sentinel (proc reason) ; assume it is close + (let ((inhibit-quit t)) + (kill-buffer (process-buffer proc)) + ;; delete env from the list. + (setq canna-environments + (delq nil (mapcar (lambda (env) + (if (null (eq (cannaenv-get-proc env) proc)) + env)) + canna-environments))))) + +(defun canna-open (hostname-list) + "Establish the connection to CANNA server. Return environment object." + (let* ((save-inhibit-quit inhibit-quit) + (inhibit-quit t) + (proc-name "CANNA") + (msg-form "Canna: connecting to %S at %s...") + (user-name (or canna-user-name (user-login-name))) + (id (shell-command-to-string "id")) + (group (or canna-group-name + (if (string-match "gid=[0-9]+(\\([^)]+\\))" id) + (match-string 1 id) + "user"))) + buf hostname port proc result msg) + (unwind-protect + (progn + (setq buf (generate-new-buffer " *CANNA*")) + (save-excursion + (set-buffer buf) + (erase-buffer) + (buffer-disable-undo) + (set-buffer-multibyte nil) + (setq egg-fixed-euc 'fixed-euc-jp)) + (or (consp hostname-list) + (setq hostname-list (list hostname-list))) + (while (and hostname-list (null proc)) + (setq hostname (or (car hostname-list) "") + hostname-list (cdr hostname-list)) + (if (null (string-match ":" hostname)) + (setq port canna-server-port) + (setq port (substring hostname (match-end 0)) + hostname (substring hostname 0 (match-beginning 0)))) + (if (and (stringp port) (string-match "^[0-9]+$" port)) + (setq port (string-to-int port))) + (and (equal hostname "") + (setq hostname (or (getenv "CANNAHOST") "localhost"))) + (let ((inhibit-quit save-inhibit-quit)) + (if (and msg + (null (y-or-n-p (format "%s failed. Try to %s? " + msg hostname)))) + (egg-error "abort connect"))) + (setq msg (format "Canna: connecting to %s..." hostname)) + (message "%s" msg) + (let ((inhibit-quit save-inhibit-quit)) + (condition-case nil + (setq proc (open-network-stream proc-name buf hostname port)) + ((error quit)))) + (when proc + (process-kill-without-query proc) + (set-process-coding-system proc 'binary 'binary) + (set-process-sentinel proc 'canna-comm-sentinel) + (set-marker-insertion-type (process-mark proc) t) + (setq result (cannarpc-open proc user-name)) ;; result is context + (if (= result -1) + (progn + (delete-process proc) + (setq proc nil)) + (cannarpc-notice-group-name proc result group) + (cannarpc-set-app-name proc result "EGG4")))) + (cons proc result)) + (if proc + (message (concat msg "done")) + (if buf (kill-buffer buf)) + (egg-error 'canna-connect-error))))) (defun canna-filename (p) "" (cond ((consp p) (concat (car p) "/" (user-login-name))) (t p))) -(defun canna-get-environment () +(defun canna-search-environment (backend) + (let ((env-list canna-environments) + env) + (while (and (null env) env-list) + (setq env (and (eq (cannaenv-get-backend (car env-list)) backend) + (car env-list)) + env-list (cdr env-list))) + env)) + +(defun canna-get-environment (backend) "Return the backend of CANNA environment." - (if canna-environment - canna-environment - (let* ((env (canna-open canna-hostname)) - (l canna-dictionary-specification) - dict-list) - (while l - (let ((dic (car l)) - result) - (setq result - (canna-open-dictionary env (canna-filename dic))) - (if (= result 255) - (error "Damedamedame") ; XXX - (setq l (cdr l))))) - (setq canna-environment env)))) + (let ((env (canna-search-environment backend)) + proc context error) + (or env + (unwind-protect + (let* ((language (canna-backend-get-language backend)) + specs) + (setq proc (canna-open canna-hostname) + context (cdr proc) + proc (car proc) + canna-envspec-list nil) + (condition-case err + (egg-load-startup-file 'canna language) + (egg-error + (setq error err) + (signal (car error) (cdr error)))) + (setq specs canna-envspec-list) + (while specs + (canna-create-environment proc context (car specs)) + (setq context nil) + (setq specs (cdr specs))) + (setq env (canna-search-environment backend))) + (when (and proc (null env)) + (cannarpc-close proc) + (if error + (signal (car error) (cdr error)) + (egg-error 'canna-fail-make-env))) + )))) -(defun canna-open-dictionary (env name) +(defun canna-create-environment (proc context spec) + (let* ((save-inhibit-quit inhibit-quit) + (inhibit-quit t) + (backend (canna-envspec-backend spec)) + (convert-mode (canna-envspec-mode spec)) + (nostudy (canna-envspec-nostudy spec)) + (dic-list (canna-envspec-dic-list spec)) + env) + (condition-case err + (progn + (if (not context) + (setq context (cannarpc-create-context proc))) + (if (< context 0) + (egg-error "%s" (cannarpc-get-error-message (- context)))) + (setq env (cannaenv-create proc context backend convert-mode nostudy)) + (let ((inhibit-quit save-inhibit-quit)) + (while dic-list + (canna-set-dictionary env (car dic-list)) + (setq dic-list (cdr dic-list)))) + (setq canna-environments (nconc canna-environments (list env)))) + ((egg-error quit) + (if (eq (car err) 'egg-error) + (message "%s" (nth 1 err))) + (if env + (progn + (cannarpc-close-context env) + (setq canna-environments (delq env canna-environments)))) + (if (eq (car err) 'quit) + (signal 'quit (cdr err))))))) + +(defun canna-set-dictionary (env dic-spec) + (let ((dname (aref dic-spec 0)) + (drw (aref dic-spec 1)) + did result) + (if (= 0 (canna-open-dictionary env dname drw)) + (cannaenv-add-dic-list env dname drw)))) + +(defun canna-open-dictionary (env name rw) (let ((trying t) ret) (while trying (setq ret (cannarpc-open-dictionary env name 0)) ; XXX MODE=0 (if (= ret 0) (setq trying nil) - (message "$B<-=q%U%!%$%k(B(%s)$B$,$"$j$^$;$s(B" name) - (setq ret (- ret)) ; Get error code. + (message (egg-get-message 'canna-dict-missing-1) name) + (if rw (if (and (y-or-n-p - (format "$B<-=q%U%!%$%k(B(%s)$B$,$"$j$^$;$s!#:n$j$^$9$+(B? " - name)) + (format (egg-get-message 'canna-dict-missing-2) name)) (= (cannarpc-make-dictionary env name) 0)) - (message "$B<-=q%U%!%$%k(B(%s)$B$r:n$j$^$7$?(B" name) - (error "Fatal")))) + (message (egg-get-message 'canna-dict-created) name) + (message "%s" (cannarpc-get-error-message (- ret)))) + (setq trying nil)))) ret)) +(defun canna-save-dictionaries (env) + (let ((dic-list (canna-list-writable-dictionaries-byname env)) + dic) + (while dic-list + (setq dic (car dic-list) + dic-list (cdr dic-list)) + (cannarpc-save-dictionary env dic)))) + (defun canna-init () ) -(defun canna-start-conversion (yomi lang) +(defun canna-set-converted-yomi (bunsetsu-pos bunsetsu-list) + (let ((bl bunsetsu-list) + (i bunsetsu-pos) + b) + (while bl + (setq b (car bl)) + (canna-bunsetsu-set-source b (cannarpc-get-bunsetsu-source env i)) + (setq i (1+ i) + bl (cdr bl))) + bunsetsu-list)) + +(defun canna-start-conversion (backend yomi &optional context) "Convert YOMI string to kanji, and enter conversion mode. Return the list of bunsetsu." - (if (eq lang 'Japanese) - (let ((env (canna-get-environment))) - (cannarpc-begin-conversion env yomi)) - (signal 'lang-not-supported))) + (let* ((env (canna-get-environment backend)) + (bunsetsu-list (cannarpc-begin-conversion env yomi))) + (if (numberp bunsetsu-list) ; XXX error $B$N=hM}E,Ev(B + (progn + (if (= -1 (cannarpc-cancel-conversion env)) + (progn + (setq env (canna-get-environment backend)) + (canna-finalize-backend))) + (setq bunsetsu-list (cannarpc-begin-conversion env yomi)))) + (canna-set-converted-yomi 0 bunsetsu-list))) (defun canna-end-conversion (bunsetsu-list abort) - (let* ((env (cannabunsetsu-get-env (car bunsetsu-list))) + (let* ((env (canna-bunsetsu-get-env (car bunsetsu-list))) (l bunsetsu-list) (len (length bunsetsu-list)) (zenkouho-pos-vector (make-vector (* 2 len) 0)) (i 0) - (mode 1) ;XXX MODE=1 attru? + (mode (if (cannaenv-get-nostudy env) 0 1)) ; MODE=1 $B3X=,(B 0 $B$7$J$$(B bunsetsu zenkouho-pos) (if abort (setq mode 0)) (while l (setq bunsetsu (car l)) (setq l (cdr l)) - (setq zenkouho-pos (cannabunsetsu-get-zenkouho-pos bunsetsu)) + (setq zenkouho-pos (canna-bunsetsu-get-zenkouho-pos bunsetsu)) (if (null zenkouho-pos) () ; XXX: NIL--> 0 atteru??? (aset zenkouho-pos-vector i 0) ; XXX Don't support >=256 (aset zenkouho-pos-vector (1+ i) zenkouho-pos)) (setq i (+ i 2))) - (cannarpc-end-conversion env len zenkouho-pos-vector 0))) + (cannarpc-end-conversion env len zenkouho-pos-vector mode))) -(defun canna-list-candidates (bunsetsu prev-bunsetsu) - (let* ((env (cannabunsetsu-get-env bunsetsu)) - (bunsetsu-pos (cannabunsetsu-get-bunsetsu-pos bunsetsu)) - (z (cannarpc-get-bunsetsu-candidates env bunsetsu-pos))) - (cannabunsetsu-set-zenkouho bunsetsu z) - (cannabunsetsu-set-zenkouho-pos bunsetsu 0) - 0)) +(defun canna-list-candidates (bunsetsu prev-b next-b major) + (setq bunsetsu (car bunsetsu)) + (if (canna-bunsetsu-get-zenkouho bunsetsu) + (cons (canna-bunsetsu-get-zenkouho-pos bunsetsu) + (canna-bunsetsu-get-zenkouho-converted bunsetsu)) + (let* ((env (canna-bunsetsu-get-env bunsetsu)) + (yomi (canna-get-bunsetsu-source bunsetsu)) + (bunsetsu-pos (canna-bunsetsu-get-bunsetsu-pos bunsetsu)) + (z (cannarpc-get-bunsetsu-candidates env bunsetsu-pos yomi))) + (canna-bunsetsu-set-zenkouho bunsetsu z) + (cons (canna-bunsetsu-set-zenkouho-pos bunsetsu 0) + (canna-bunsetsu-set-zenkouho-converted + bunsetsu + (mapcar 'canna-bunsetsu-get-converted z)))))) +;;; XXX not use ? (defun canna-get-number-of-candidates (bunsetsu) - (let ((l (cannabunsetsu-get-zenkouho bunsetsu))) + (let ((l (canna-bunsetsu-get-zenkouho bunsetsu))) (if l (length l) nil))) -(defun canna-decide-candidate (bunsetsu candidate-pos) - (let* ((candidate-list (cannabunsetsu-get-zenkouho bunsetsu)) - (candidate (nth candidate-pos candidate-list))) - (cannabunsetsu-set-zenkouho candidate candidate-list) - (cannabunsetsu-set-zenkouho-pos candidate candidate-pos) - candidate)) +(defun canna-decide-candidate (bunsetsu pos prev-b next-b) + (let* ((head (car bunsetsu)) + (candidate-list (canna-bunsetsu-get-zenkouho head)) + (candidate (nth pos candidate-list))) + (canna-bunsetsu-set-zenkouho candidate candidate-list) + (canna-bunsetsu-set-zenkouho-pos candidate pos) + (canna-bunsetsu-set-zenkouho-converted + candidate (canna-bunsetsu-get-zenkouho-converted head)) + (list (list candidate)))) +(defun canna-special-candidate (bunsetsu prev-b next-b major type) + (let* ((head (car bunsetsu)) + (env (canna-bunsetsu-get-env head)) + (backend (egg-bunsetsu-get-backend head)) + (lang (get backend 'language)) + source converted zenkouho-list kouho-list pos) + (when (and (eq lang (get backend 'source-language)) + (eq lang (get backend 'converted-language))) + (cond ((eq lang 'Japanese) + (setq source (canna-get-bunsetsu-source head)) + (cond ((eq type 'egg-hiragana) + (setq converted source)) + ((eq type 'egg-katakana) + (setq converted (japanese-katakana source)))) + (setq zenkouho-list + (cdr (canna-list-candidates bunsetsu prev-b next-b major))) + (setq pos + (when (setq kouho-list (member converted zenkouho-list)) + (- (length zenkouho-list) (length kouho-list)))))) + (when pos + (canna-decide-candidate bunsetsu pos prev-b next-b))))) + +;;; XXX not used ? (defun canna-get-current-candidate-number (bunsetsu) - (cannabunsetsu-get-zenkouho-pos bunsetsu)) + (canna-bunsetsu-get-zenkouho-pos bunsetsu)) +;;; XXX not used ? (defun canna-get-all-candidates (bunsetsu) - (let* ((l (cannabunsetsu-get-zenkouho bunsetsu)) + (let* ((l (canna-bunsetsu-get-zenkouho bunsetsu)) (result (cons nil nil)) (r result)) (catch 'break (while t (let ((candidate (car l))) - (setcar r (cannabunsetsu-get-converted candidate)) + (setcar r (canna-bunsetsu-get-converted candidate)) (if (null (setq l (cdr l))) (throw 'break nil) (setq r (setcdr r (cons nil nil))))))) result)) -;;;;;;;;;;;;;;;;;;;;;;; MADAMADA zenzendame, just copy from SJ3 -(defun canna-change-bunsetsu-length (b0 b1 b2 len) - (let ((yomi (concat - (cannabunsetsu-get-source b1) - (if b2 (cannabunsetsu-get-source b2)))) - (env (cannabunsetsu-get-env b1)) - yomi1 yomi2 - bunsetsu1 bunsetsu2) - (setq yomi1 (substring yomi 0 len) - yomi2 (substring yomi len)) - (setq bunsetsu1 - (cannarpc-tanbunsetsu-conversion env yomi1)) - ;; Only set once (memory original length of the bunsetsu). - (cannabunsetsu-set-kugiri-changed bunsetsu1 - (or (cannabunsetsu-get-kugiri-changed b1) - (length (cannabunsetsu-get-source b1)))) - (if (< 0 (length yomi2)) - (setq bunsetsu2 (cannarpc-tanbunsetsu-conversion env yomi2)) - (setq bunsetsu2 nil)) - (if bunsetsu2 - (list bunsetsu1 bunsetsu2) - (list bunsetsu1)))) +(defun canna-change-bunsetsu-length (bunsetsu prev-b next-b len major) + (let* ((env (canna-bunsetsu-get-env (car bunsetsu))) + (yomi (canna-get-bunsetsu-source (car bunsetsu))) + (yomi-length (cond ((< (length yomi) len) -1) + ((> (length yomi) len) -2) + (t nil))) + (bunsetsu-pos (canna-bunsetsu-get-bunsetsu-pos (car bunsetsu))) + new) + (if yomi-length + (setq new (canna-set-converted-yomi + bunsetsu-pos + (cannarpc-set-kugiri-changed env yomi-length bunsetsu-pos))) + (setq new bunsetsu)) + (list (list (car new)) prev-b (cdr new)))) -;;;;;;;;;;;;;; MADAMADA -(defun canna-fini () -) +(defun canna-finalize-backend (&optional action) + (let* ((save-inhibit-quit inhibit-quit) + (inhibit-quit t) + (env-list canna-environments) + env proc-list saved) + (while env-list + (setq env (car env-list) + env-list (cdr env-list)) + (condition-case err + (progn + (unless (memq (cannaenv-get-proc env) proc-list) + (setq proc-list (cons (cannaenv-get-proc env) proc-list))) + (unless (eq action 'disconnect-only) + (unless saved + (setq saved t) + (message (egg-get-message 'canna-dict-saving) "Canna")) + (let ((inhibit-quit save-inhibit-quit)) + (canna-save-dictionaries env))) + (unless (eq action 'save-only) + (cannarpc-close-context env))) + ((error quit) + (message "signal %S occured when dictionary saving" err)))) + (if saved + (message (egg-get-message 'canna-dict-saved) "Canna")) + (unless (eq action 'save-only) + (while proc-list + (if (and (car proc-list) + (eq (process-status (car proc-list)) 'open)) + (cannarpc-close (car proc-list))) + (setq proc-list (cdr proc-list))))) + (setq canna-environments nil)) + +;;; word registration + +(defun canna-list-writable-dictionaries-byname (env) + (let ((dic-list (cannaenv-get-dic-list env))) + (delq nil + (mapcar (lambda (dic) + (let ((dname (aref dic 0)) + (drw (aref dic 1))) + (and drw dname))) + dic-list)))) + +(defun canna-dictionary-select (env) + (let ((dic-list (canna-list-writable-dictionaries-byname env))) + (if (= 1 (length dic-list)) + (car dic-list) + (menudiag-select (list 'menu + (egg-get-message 'canna-register-1) + dic-list))))) + +(defun canna-hinshi-MEISHI (kanji yomi) + (if (y-or-n-p (concat "$B!V(B" kanji "$B$J!W$O@5$7$$$G$9$+!#(B")) "#T15" "#T35")) + +(defun canna-hinshi-SAHEN-MEISHI (kanji yomi) + (if (y-or-n-p (concat "$B!V(B" kanji "$B$J!W$O@5$7$$$G$9$+!#(B")) "#T10" "#T30")) + +(defmacro canna-hinshi-DOUSHI-check-gobi () + '(progn + (setq i 0) + (while (> 9 i) + (if (string-match (concat (substring gobi i (1+ i)) "$") kanji) + (progn + (setq renyou (substring re-gobi i (1+ i))) + (setq mizen (substring mi-gobi i (1+ i))) + (setq kanji-gobi (substring kanji (match-beginning 0))) + (setq kanji-gokan (substring kanji 0 (match-beginning 0))) + (setq ret (nth i hinshi)) + (setq i 9))) + (setq i (1+ i))) + (setq i 0) + (while (> 9 i) + (if (string-match (concat (substring gobi i (1+ i)) "$") yomi) + (progn + (setq yomi-gobi (substring yomi (match-beginning 0))) + (setq yomi-gokan (substring yomi 0 (match-beginning 0))) + (setq i 9))) + (setq i (1+ i))))) + +(defun canna-hinshi-DOUSHI (kanji yomi) + (let ((gobi "$B$/$0$9$D$L$V$`$k$&(B") + (re-gobi "$B$-$.$7$A$K$S$_$j$$(B") + (mi-gobi "$B$+$,$5$?$J$P$^$i$o(B") + (hinshi (list "#K5" "#G5" "#S5" "#T5" "#N5" "#B5" "#M5" "#R5" "#W5")) + kanji-gokan yomi-gokan kanji-gobi yomi-gobi mizen renyou + i ret1 ret2 ret) + (canna-hinshi-DOUSHI-check-gobi) + (if (not (and (> (length kanji) 1) (> (length yomi) 1) + (and kanji-gobi yomi-gobi (equal kanji-gobi yomi-gobi)))) + (if (and kanji-gobi yomi-gobi) + (egg-error "$BFI$_$H8uJd$N3hMQ$,0c$$$^$9!#F~NO$7$J$*$7$F$/$@$5$$!#(B") + (egg-error "$BFI$_$H8uJd$r=*;_7A$GF~NO$7$F$/$@$5$$!#(B"))) + (cond ((and (> (length kanji) 2) (> (length yomi) 2) + (string-match "$B$/$k(B$" kanji) (string-match "$B$/$k(B$" yomi)) + (setq ret "#KX") + (setq kanji-gokan (substring kanji 0 (- (length kanji) 2))) + (setq yomi-gokan (substring yomi 0 (- (length yomi) 2)))) + ((and (> (length kanji) 3) (> (length yomi) 3) + (string-match "$B$s$:$k(B$" kanji) (string-match "$B$s$:$k(B$" yomi)) + (setq ret "#NZX") + (setq kanji-gokan (substring kanji 0 (- (length kanji) 3))) + (setq yomi-gokan (substring yomi 0 (- (length yomi) 3)))) + ((and (> (length kanji) 2) (> (length yomi) 2) + (string-match "$B$:$k(B$" kanji) (string-match "$B$:$k(B$" yomi)) + (setq ret "#ZX") + (setq kanji-gokan (substring kanji 0 (- (length kanji) 2))) + (setq yomi-gokan (substring yomi 0 (- (length yomi) 2)))) + ((and (> (length kanji) 2) (> (length yomi) 2) + (string-match "$B$9$k(B$" kanji) (string-match "$B$9$k(B$" yomi)) + (setq ret "#SX") + (setq kanji-gokan (substring kanji 0 (- (length kanji) 2))) + (setq yomi-gokan (substring yomi 0 (- (length yomi) 2))))) + (if (not (string-match "5$" ret)) + (if (y-or-n-p (concat "$B!X(B" kanji "$B!Y$r(B (" (canna-hinshi-name ret) + ") $B$H$7$FEPO?$7$^$9$+(B? ")) + (setq ret (list kanji-gokan yomi-gokan ret)) + (setq ret "#R5") + (setq kanji-gokan (substring kanji 0 (- (length kanji) 1))) + (setq yomi-gokan (substring yomi 0 (- (length yomi) 1))))) + (if (listp ret) + ret + (if (y-or-n-p "$B$5$i$K:Y$+$$IJ;lJ,$1$N$?$a$N 9 i) + (if (string-match (concat (substring re-gobi i (1+ i)) "$") + kanji-gokan) + (progn (setq renyou nil) + (setq i 9))) + (setq i (1+ i)))) + (setq ret2 (y-or-n-p (concat "$B!V(B" kanji-gokan renyou + "$B$,$$$$!W$O@5$7$$$G$9$+!#(B"))) + (setq ret (if ret1 (if ret2 (concat ret "r") ret) + (if ret2 "#KSr" "#KS"))))) + (list kanji-gokan yomi-gokan ret)))) + +(defun canna-hinshi-KEIYOUSHI (kanji yomi) + (let (ret) + (if (not (and (> (length kanji) 1) (> (length yomi) 1) + (string-match "$B$$(B$" yomi) (string-match "$B$$(B$" kanji))) + (egg-error "$BFI$_$H8uJd$r(B $B=*;_7A$GF~NO$7$F$/$@$5$$!#Nc(B) $BAa$$(B")) + (setq kanji (substring kanji 0 (1- (length kanji)))) + (setq yomi (substring yomi 0 (1- (length yomi)))) + (setq ret + (if (y-or-n-p "$B$5$i$K:Y$+$$IJ;lJ,$1$N$?$a$N (length kanji) 1) (> (length yomi) 1) + (string-match "$B$@(B$" yomi) (string-match "$B$@(B$" kanji))) + (egg-error "$BFI$_$H8uJd$r(B $B=*;_7A$GF~NO$7$F$/$@$5$$!#Nc(B) $B@E$+$@(B")) + (setq kanji (substring kanji 0 (1- (length kanji)))) + (setq yomi (substring yomi 0 (1- (length yomi)))) + (setq ret + (if (y-or-n-p "$B$5$i$K:Y$+$$IJ;lJ,$1$N$?$a$N= result 0) + (progn + (cannarpc-save-dictionary env dic) + (list (canna-hinshi-name hinshi-id) dic)) + (egg-error (cannarpc-get-error-message (- result))))))) + +;;; word delete registration + +(defun canna-word-delete-regist (backend yomi) + "Delete a word KANJI from dictionary." + (if (= (length yomi) 0) + (egg-error "Canna word delete registration: null string")) + (let* ((env (canna-get-environment backend)) + (dic (canna-dictionary-select env)) + proc context envd bunsetsu bunsetsu-pos z zpos kouho-list hinshi i + kanji lex result) + (setq proc (cannaenv-get-proc env)) + (setq context (cannarpc-create-context proc)) + (setq envd (cannaenv-create proc context + 'canna-backend-Japanese-tmp-delete-regist + 1 t)) + (canna-set-dictionary envd (vector dic t)) + (canna-set-dictionary envd (vector "fuzokugo" nil)) + (setq bunsetsu (car (cannarpc-begin-conversion envd yomi))) + (setq bunsetsu-pos (canna-bunsetsu-get-bunsetsu-pos bunsetsu)) + (setq z (cannarpc-get-bunsetsu-candidates envd bunsetsu-pos yomi)) + (canna-bunsetsu-set-zenkouho bunsetsu z) + (canna-bunsetsu-set-zenkouho-pos bunsetsu 0) + (setq kouho-list + (canna-bunsetsu-set-zenkouho-converted + bunsetsu + (mapcar 'canna-bunsetsu-get-converted z))) + (setq yomi (car (last kouho-list))) + (setq kouho-list (cdr (reverse kouho-list))) + (setq kouho-list (reverse kouho-list)) + (setq i 0) + (setq kouho-list (mapcar '(lambda (k) + (prog1 + (cons k i) + (setq i (1+ i)))) + kouho-list)) + (let ((hiragana (assoc yomi kouho-list)) + hinshi) + (if hiragana + (setq hinshi (cannarpc-get-hinshi envd bunsetsu-pos (cdr hiragana)))) + (if (stringp hinshi) + (if (equal "#T35" hinshi) + (setq kouho-list (delete hiragana kouho-list))) + (setq kouho-list (delete hiragana kouho-list)))) + (cond + ((null kouho-list) + (cannarpc-close-context envd) + (egg-error "$BEPO?$5$l$F$$$^$;$s!#(B")) + ((eq 1 (length kouho-list)) + (setq zpos 0) + (setq kanji (car (car kouho-list)))) + (t + (setq kanji (menudiag-select (list 'menu "$B:o=|(B:" kouho-list) nil nil t)) + (setq zpos (cdr (car kanji))) + (setq kanji (car (car kanji))))) + (setq hinshi (cannarpc-get-hinshi envd bunsetsu-pos zpos)) + (setq lex (cannarpc-get-lex envd bunsetsu-pos zpos)) + (cannarpc-cancel-conversion envd) + (if (string-match "#[^#]+" hinshi) + (setq hinshi (substring hinshi 0 (match-end 0))) + (egg-error "$BIJ;l>pJs$,= result 0) + (progn + (cannarpc-save-dictionary envd dic) + (cannarpc-close-context envd) + (list kanji yomi (canna-hinshi-name hinshi) dic)) + (cannarpc-close-context envd) + (egg-error "$B:o=|$5$l$^$;$s$G$7$?!#(B")) + )) ;;; setup -(require 'egg) +(load "egg/cannarpc") +(run-hooks 'canna-load-hook) ;;;###autoload (defun egg-activate-canna (&rest arg) - "Activate CANNA backend of Tamagotchy." - (setq egg-conversion-backend canna-conversion-backend) - (if (not (fboundp 'cannarpc-open)) - (load-library "egg/canna")) - (apply 'egg-mode arg)) + "Activate CANNA backend of Tamago 4." + (apply 'egg-mode (append arg canna-backend-alist))) ;;; egg/canna.el ends here. Index: egg/cannarpc.el =================================================================== RCS file: /cvs/tamago/tamago/egg/cannarpc.el,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- egg/cannarpc.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ egg/cannarpc.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -45,17 +45,31 @@ ((eq c 'GetDirectoryList) 7) ((eq c 'MountDictionary) 8) ((eq c 'UnmountDictionary) 9) + ((eq c 'GetMountDictionaryList) 11) + ((eq c 'DefineWord) 13) + ((eq c 'DeleteWord) 14) ((eq c 'BeginConvert) 15) ((eq c 'EndConvert) 16) ((eq c 'GetCandidacyList) 17) ((eq c 'GetYomi) 18) ((eq c 'ResizePause) 26) + ((eq c 'GetHinshi) 27) + ((eq c 'GetLex) 28) + ((eq c 'SetApplicationName) 33) + ((eq c 'NoticeGroupName) 34) ((eq c 'CreateDictionary) 3) + ((eq c 'Sync) 8) (t (error "No such constant"))))) +;; XXX +(defconst cannarpc-error-message (vector )) + (defun cannarpc-get-error-message (errno) - (or (aref cannarpc-error-message errno) (format "#%d" errno))) + (or (and (>= errno 0) + (< errno (length cannarpc-error-message)) + (aref cannarpc-error-message errno)) + (format "#%d" errno))) (defmacro cannarpc-call-with-environment (e vlist send-expr &rest receive-exprs) (let ((v (append @@ -73,54 +87,101 @@ (goto-char (prog1 (point) (accept-process-output proc)))) receive-exprs)))) -(defconst canna-version-fmt "2.0:%s") +(defconst canna-version-fmt "3.3:%s") (defun cannarpc-open (proc username) "Open the session. Return 0 on success, error code on failure." (let ((verusr (format canna-version-fmt username))) - (comm-call-with-proc proc (result) - (comm-format (u u v) (canna-const Initialize) (length verusr) verusr) - (comm-unpack (u) result) - result))) + (comm-call-with-proc proc (minor context) + (comm-format (u u s) (canna-const Initialize) (+ (length verusr) 1) + verusr) + (comm-unpack (w w) minor context) + (cond ((and (= minor 65535) (= context 65535)) + -1) ; failure + ((and (= minor 65535) (= context 65534)) + -1) ; version miss match + (t context))))) (defun cannarpc-close (proc) (comm-call-with-proc proc (dummy result) (comm-format (b b w) (canna-const Finalize) 0 0) - (comm-unpack (b b w b) dummy dummy dummy result) - result)) + (comm-unpack (u b) dummy result) + (if (= result 255) + -1 ; failure + result))) (defun cannarpc-create-context (proc) (comm-call-with-proc proc (dummy result) (comm-format (b b w) (canna-const CreateContext) 0 0) - (comm-unpack (b b w w) dummy dummy dummy result) - result)) + (comm-unpack (u w) dummy result) + (if (= result 65535) + -1 ; failure + result))) -(defun cannarpc-close-context (proc context) - (comm-call-with-proc proc (dummy result) +(defun cannarpc-close-context (env) + (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w) (canna-const CloseContext) 0 2 context) - (comm-unpack (b b w b) dummy dummy dummy result) - result)) + (comm-unpack (u b) dummy result) + (if (= result 255) + -1 ; failure + result))) -;; XXX: Not implemented fully (defun cannarpc-get-dictionary-list (env) - (cannarpc-call-with-environment env (dymmy result) + (let ((i 0) + dic dl dic-list) + (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w) (canna-const GetDictionaryList) 0 4 context 1024) (comm-unpack (u w) dummy result) ;; follow list of dictionaries - result)) + (if (= result 65535) + -1 ; failure + (while (< i result) + (comm-unpack (s) dic) + (if dl + (setq dl (setcdr dl (cons dic nil))) + (setq dic-list (setq dl (cons dic nil)))) + (setq i (1+ i))) + dic-list)))) -;; XXX: Not implemented fully (defun cannarpc-get-directory-list (env) - (cannarpc-call-with-environment env (dymmy result) + (let ((i 0) + dir dl dir-list) + (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w) (canna-const GetDirectoryList) 0 4 context 1024) (comm-unpack (u w) dummy result) ;; follow list of directories - result)) + (if (= result 65535) + -1 ; failure + (while (< i result) + (comm-unpack (s) dir) + (if dl + (setq dl (setcdr dl (cons dir nil))) + (setq dir-list (setq dl (cons dir nil)))) + (setq i (1+ i))) + dir-list)))) + +(defun cannarpc-get-mount-dictionary-list (env) + (let ((i 0) + dic dl dic-list) + (cannarpc-call-with-environment env (dummy result) + (comm-format (b b w w w) (canna-const GetMountDictionaryList) 0 4 + context 1024) + (comm-unpack (u w) dummy result) + ;; follow list of dictionaries + (if (= result 65535) + -1 ; failure + (while (< i result) + (comm-unpack (s) dic) + (if dl + (setq dl (setcdr dl (cons dic nil))) + (setq dic-list (setq dl (cons dic nil)))) + (setq i (1+ i))) + dic-list)))) (defun cannarpc-open-dictionary (env dict-file-name mode) - (cannarpc-call-with-environment env (dymmy result) + (cannarpc-call-with-environment env (dummy result) (comm-format (b b w u w s) (canna-const MountDictionary) 0 (+ (length dict-file-name) 7) mode context dict-file-name) @@ -128,27 +189,28 @@ result)) (defun cannarpc-close-dictionary (env dict-file-name mode) - (cannarpc-call-with-environment env (dymmy result) + (cannarpc-call-with-environment env (dummy result) (comm-format (b b w u w s) (canna-const UnmountDictionary) 0 - (+ (length dict-file-name) 6) + (+ (length dict-file-name) 7) mode context dict-file-name) (comm-unpack (u b) dummy result) result)) (defun cannarpc-begin-conversion (env yomi) "Begin conversion." - (let ((yomi-ext (encode-coding-string yomi 'euc-japan)) + (let ((yomi-ext (encode-coding-string yomi 'fixed-euc-jp)) + (mode (or (cannaenv-get-mode env) 19)) ; 19 kana hiragana (i 0) converted bunsetsu-list bl) (cannarpc-call-with-environment env (dummy result) - (comm-format (b b w u w S) (canna-const BeginConvert) 0 - (+ (length yomi-ext) 8) 0 context yomi) + (comm-format (b b w i w S) (canna-const BeginConvert) 0 + (+ (length yomi-ext) 8) mode context yomi) (comm-unpack (u w) dummy result) (if (= result 65535) -1 ; failure (while (< i result) (comm-unpack (S) converted) - (let ((bl1 (cons (canna-make-bunsetsu env converted i) + (let ((bl1 (cons (canna-make-bunsetsu env converted i nil) nil))) (if bl (setq bl (setcdr bl bl1)) @@ -156,11 +218,21 @@ (setq i (1+ i))) bunsetsu-list)))) +(defun cannarpc-cancel-conversion (env) + "Cancel conversion." + (cannarpc-call-with-environment env (dummy result) + (comm-format (b b w w w u) (canna-const EndConvert) 0 8 context 0 0) + (comm-unpack (u b) dummy result) + (if (= result 255) + -1 ; failure + result))) + (defun cannarpc-end-conversion (env len zenkouho-pos-vector mode) "End conversion." (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w u v) (canna-const EndConvert) 0 - (+ (* len 2) 8) context len mode zenkouho-pos-vector) + (+ (* len 2) 8) context len mode zenkouho-pos-vector + (length zenkouho-pos-vector)) (comm-unpack (u b) dummy result) (if (= result 255) -1 ; failure @@ -173,6 +245,24 @@ (comm-unpack (u b) dummy result) result)) +(defun cannarpc-save-dictionary (env dict-name) + (cannarpc-call-with-environment env (dummy result) + (comm-format (b b w u w s) (canna-const Sync) 1 + (+ (length dict-name) 7) 0 context dict-name) + (comm-unpack (u b) dummy result) + result)) + +;;; XXX not used +(defun cannarpc-get-dictionary-data (env dir dic) + (cannarpc-call-with-environment env (dummy result) + (comm-format (b b w w s s w) 6 1 + (+ (length dir) (length dic) 6) context dir dic 4096) + (comm-unpack (u w) dummy result) + (if (= result 65535) + -1 +;; (comm-unpack (S) result) + result))) + (defun cannarpc-get-bunsetsu-source (env bunsetsu-pos) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w w) (canna-const GetYomi) 0 6 context @@ -183,23 +273,123 @@ (comm-unpack (S) result) result))) -(defun cannarpc-get-bunsetsu-candidates (env bunsetsu-pos) +(defun cannarpc-get-bunsetsu-candidates (env bunsetsu-pos yomi) (let ((i 0) converted bunsetsu-list bl) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w w) (canna-const GetCandidacyList) 0 6 context bunsetsu-pos 1024) - (comm-unpack (u w) dymmy result) + (comm-unpack (u w) dummy result) (if (= result 65535) -1 ; failure (while (< i result) (comm-unpack (S) converted) - (let ((bl1 (cons (canna-make-bunsetsu env converted bunsetsu-pos) + (let ((bl1 (cons (canna-make-bunsetsu env converted + bunsetsu-pos yomi) nil))) (if bl (setq bl (setcdr bl bl1)) (setq bunsetsu-list (setq bl bl1)))) (setq i (1+ i))) bunsetsu-list)))) + +(defun cannarpc-set-kugiri-changed (env yomi-length bunsetsu-pos) + ;; yomi-length -2$B!DJ8@a=L$a(B -1$B!DJ8@a?-$P$7(B + (let* ((i bunsetsu-pos) + converted bunsetsu-list bl) + (cannarpc-call-with-environment env (dummy result) + (comm-format (b b w w w w) (canna-const ResizePause) 0 6 context + bunsetsu-pos yomi-length) + (comm-unpack (u w) dummy result) + (if (= result 65535) + -1 ; failure + (while (< i result) + (comm-unpack (S) converted) + (let ((bl1 (cons (canna-make-bunsetsu env converted i nil) nil))) + (if bl + (setq bl (setcdr bl bl1)) + (setq bunsetsu-list (setq bl bl1)))) + (setq i (1+ i))) + bunsetsu-list)))) + +(defun cannarpc-get-hinshi (env bunsetsu-pos kouho-pos) + (let (b hinshi) + (cannarpc-call-with-environment env (dummy result) + (comm-format (b b w w w w w) (canna-const GetHinshi) 0 8 context + bunsetsu-pos kouho-pos 1024) + (comm-unpack (u w) dummy result) + (if (= result 65535) + -1 + (while (> result 0) + (comm-unpack (w) b) + (setq hinshi (concat hinshi (char-to-string b))) + (setq result (1- result))) + hinshi)))) + +(defun cannarpc-get-lex (env bunsetsu-pos kouho-pos) + (let ((i 0) + ylen klen rownum coldnum dicnum lex-list ll) + (cannarpc-call-with-environment env (dummy result) + (comm-format (b b w w w w w) (canna-const GetLex) 0 8 context + bunsetsu-pos kouho-pos 1024) + (comm-unpack (u w) dummy result) + (if (= result 65535) + -1 + (while (< i result) + (comm-unpack (i i i i i) ylen klen rownum coldnum dicnum) + (let ((ll1 (cons (list ylen klen rownum coldnum dicnum) nil))) + (if ll + (setq ll (setcdr ll ll1)) + (setq lex-list (setq ll ll1)))) + (setq i (1+ i))) + lex-list)))) + +(defun cannarpc-add-word (env dictionary yomi kanji hinshi) + "Register a word KANJI into DICTIONARY with a pronunciation YOMI and +a part of speech HINSHI. Where DICTIONARY should be an integer." + (let* ((word-info (concat yomi " " hinshi " " kanji)) + (word-info-ext (encode-coding-string word-info 'fixed-euc-jp)) + (length (+ (length word-info-ext) (length dictionary) 5))) + (cannarpc-call-with-environment env (dummy result) + (comm-format (b b w w S s) (canna-const DefineWord) 0 length context + word-info dictionary) + (comm-unpack (u b) dummy result) + (if (= result 255) + -1 ; failure + result)))) + +(defun cannarpc-delete-word (env dictionary yomi kanji hinshi) + "Delete the registered word KANJI from DICTIONARY with a +pronunciation YOMI and a part of speech HINSHI. Where DICTIONARY +should be an integer." + (let* ((word-info (concat yomi " " hinshi " " kanji)) + (word-info-ext (encode-coding-string word-info 'fixed-euc-jp)) + (length (+ (length word-info-ext) (length dictionary) 5))) + (cannarpc-call-with-environment env (dummy result) + (comm-format (b b w w S s) (canna-const DeleteWord) 0 length context + word-info dictionary) + (comm-unpack (u b) dummy result) + (if (= result 255) + -1 ; failure + result)))) + +(defun cannarpc-notice-group-name (proc context group) + (comm-call-with-proc proc (dummy result) + (comm-format (b b w u w s) (canna-const NoticeGroupName) 0 + (+ (length group) 7) 0 ;; mode = 0 + context group) + (comm-unpack (u b) dummy result) + (if (= result 255) + -1 + result))) + +(defun cannarpc-set-app-name (proc context name) + (comm-call-with-proc proc (dummy result) + (comm-format (b b w u w s) (canna-const SetApplicationName) 0 + (+ (length name) 7) 0 context name) + (comm-unpack (u b) dummy result) + (if (= result 255) + -1 + result))) ;;; egg/cannarpc.el ends here. Index: egg/sj3.el =================================================================== RCS file: /cvs/tamago/tamago/egg/sj3.el,v retrieving revision 1.1.1.3 retrieving revision 1.3 diff -d -u -p -r1.1.1.3 -r1.3 --- egg/sj3.el 27 Jan 2001 18:46:48 -0000 1.1.1.3 +++ egg/sj3.el 22 Jul 2002 13:18:56 -0000 1.3 @@ -35,33 +35,89 @@ (require 'egg-edep) (defgroup sj3 nil - "SJ3 interface for Tamago 4" + "SJ3 interface for Tamago 4." :group 'egg) -(defcustom sj3-hostname "localhost" - "*Hostname of SJ3 server" +(defcustom sj3-hostname "localhost" + "Hostname of SJ3 server" :group 'sj3 :type 'string) -(defcustom sj3-server-port 3086 - "*Port number of SJ3 server" +(defcustom sj3-server-port 3086 + "Port number of SJ3 server" :group 'sj3 :type 'integer) -(defcustom sj3-server-version 2 - "Major version number of SJ3 server." - :group 'sj3 - :type '(choice (const 1) (const 2))) - -(defcustom sj3-server-coding-system-list '(shift_jis euc-japan) - "List of coding systems for SJ3 server v1 and v2." - :group 'sj3 - :type '(list (symbol :tag "v1") (symbol :tag "v2"))) - (eval-when-compile (defmacro SJ3-const (c) (cond ((eq c 'FileNotExist) 35) ))) +(egg-add-message + '((Japanese + (sj3-register-1 "$BEPO?<-=qL>(B:") + (sj3-register-2 "$BIJ;lL>(B")))) + +(defvar sj3-hinshi-menu + '(("$BL>;l(B" . + (menu "$BIJ;l(B:$BL>;l(B:" + (("$BL>;l(B" . 1) + ("$BL>;l(B($B$*!D(B)" . 2) + ("$BL>;l(B($B$4!D(B)" . 3) + ("$BL>;l(B($B!DE*(B/$B2=(B)" . 4) + ("$BL>;l(B($B$*!D$9$k(B)" . 5) + ("$BL>;l(B($B!D$9$k(B)" . 6) + ("$BL>;l(B($B$4!D$9$k(B)" . 7) + ("$BL>;l(B($B!D$J(B/$B$K(B)" . 8) + ("$BL>;l(B($B$*!D$J(B/$B$K(B)" . 9) + ("$BL>;l(B($B$4!D$J(B/$B$K(B)" . 10) + ("$BL>;l(B($BI{;l(B)" . 11)))) + ("$BBeL>;l(B" . 12) + ("$BID;z(B" . 21) + ("$BL>A0(B" . 22) + ("$BCOL>(B" . 24) + ("$B8)(B/$B6hL>(B" . 25) + ("$BF0;l(B" . + (menu "$BIJ;l(B:$BF0;l(B:" + (("$B%5JQ8l44(B" . 80) + ("$B%6JQ8l44(B" . 81) + ("$B0lCJITJQ2=It(B" . 90) + ("$B%+9T8^CJ8l44(B" . 91) + ("$B%,9T8^CJ8l44(B" . 92) + ("$B%59T8^CJ8l44(B" . 93) + ("$B%?9T8^CJ8l44(B" . 94) + ("$B%J9T8^CJ8l44(B" . 95) + ("$B%P9T8^CJ8l44(B" . 96) + ("$B%^9T8^CJ8l44(B" . 97) + ("$B%i9T8^CJ8l44(B" . 98) + ("$B%o9T8^CJ8l44(B" . 99)))) + ("$BO"BN;l(B" . 26) + ("$B@\B3;l(B" . 27) + ("$B=u?t;l(B" . 29) + ("$B?t;l(B" . 30) + ("$B@\F,8l(B" . 31) + ("$B@\Hx8l(B" . 36) + ("$BI{;l(B" . 45) + ("$BI{;l(B2" . 46) + ("$B7AMF;l8l44(B" . 60) + ("$B7AMFF0;l8l44(B" . 71) + ("$BC14A;z(B" . 189)) + "Menu data for a hinshi (a part of speech) selection.") + +(defun sj3-hinshi-name (id &optional menu alist) + "Return a hinshi (a part of speech) name corresponding to ID. +If ID is nil, return a flattened alist from `sj3-hinshi-menu'. +Don't specify the optional arguments in normal use." + (let ((menu (or menu sj3-hinshi-menu))) + (if (consp menu) + (if (consp (cdr menu)) + (mapcar (lambda (elem) + (setq alist (sj3-hinshi-name nil elem alist))) + menu) + (setq alist (nconc alist (list (cons (cdr menu) (car menu))))))) + (if id + (cdr (assq id alist)) + alist))) + (setplist 'sj3-conversion-backend '(egg-start-conversion sj3-start-conversion egg-get-bunsetsu-source sj3-get-bunsetsu-source @@ -71,7 +127,8 @@ egg-list-candidates sj3-list-candidates egg-decide-candidate sj3-decide-candidate egg-change-bunsetsu-length sj3-change-bunsetsu-length - egg-end-conversion sj3-end-conversion)) + egg-end-conversion sj3-end-conversion + egg-word-registration sj3-word-registration)) (defconst sj3-backend-alist '((Japanese ((sj3-conversion-backend))))) @@ -90,7 +147,7 @@ ((error quit) (egg-error "failed to connect sj3 server"))) (process-kill-without-query proc) - (set-process-coding-system proc 'no-conversion 'no-conversion) + (set-process-coding-system proc 'binary 'binary) (set-marker-insertion-type (process-mark proc) t) (save-excursion (set-buffer buf) @@ -141,7 +198,7 @@ ;; (if proc ;; (progn ;; (process-kill-without-query proc) -;; (set-process-coding-system proc 'no-conversion 'no-conversion) +;; (set-process-coding-system proc 'binary 'binary) ;; (set-marker-insertion-type (process-mark proc) t) ;; ;; Initialize dictionaries ;; (setq sj3-sys-dict-list nil) @@ -353,7 +410,7 @@ Return the list of bunsetsu." (list (list candidate)))) (defun sj3-change-bunsetsu-length (bunsetsu prev-b next-b len major) - (let ((yomi (apply 'concat (mapcar 'sj3bunsetsu-get-source bunsetsu))) + (let ((yomi (mapconcat 'sj3bunsetsu-get-source bunsetsu nil)) (env (sj3bunsetsu-get-env (car bunsetsu))) (old (car bunsetsu)) new yomi1 yomi2) @@ -361,7 +418,7 @@ Return the list of bunsetsu." yomi2 (substring yomi len)) (setq new (sj3rpc-tanbunsetsu-conversion env yomi1)) ;; Only set once (memory original length of the bunsetsu). - (sj3bunsetsu-set-kugiri-changed new + (sj3bunsetsu-set-kugiri-changed new (or (sj3bunsetsu-get-kugiri-changed old) (length (sj3bunsetsu-get-source old)))) (if (> (length yomi2) 0) @@ -381,6 +438,37 @@ Return the list of bunsetsu." (sj3rpc-close proc) (setq sj3-environment nil)))) +;;; word registration + +(defun sj3-dictionary-select () + (menudiag-select (list 'menu + (egg-get-message 'sj3-register-1) + (aref (nth 2 sj3-dictionary-specification) 0)))) + +(defun sj3-hinshi-select () + (menudiag-select (list 'menu + (egg-get-message 'sj3-register-2) + sj3-hinshi-menu))) + +(defun sj3-word-registration (backend kanji yomi) + "Register a word KANJI with a pronunciation YOMI." + (if (or (null (eq (egg-get-language 0 kanji) + (sj3-get-converted-language backend))) + (next-single-property-change 0 'egg-lang kanji) + (null (eq (egg-get-language 0 yomi) + (sj3-get-source-language backend))) + (next-single-property-change 0 'egg-lang yomi)) + (egg-error "word registration: invalid character") + (let* ((env (sj3-get-environment)) + (dic (sj3-dictionary-select)) + (hinshi-id (sj3-hinshi-select)) + (result (sj3rpc-add-word env + (car (aref env 1)) + yomi kanji hinshi-id))) + (if (>= result 0) + (list (sj3-hinshi-name hinshi-id) dic) + (egg-error (sj3rpc-get-error-message (- result))))))) + ;;; setup (load "egg/sj3rpc") @@ -388,7 +476,7 @@ Return the list of bunsetsu." ;;;###autoload (defun egg-activate-sj3 (&rest arg) - "Activate SJ3 backend of Tamagotchy." + "Activate SJ3 backend of Tamago 4." (apply 'egg-mode (append arg sj3-backend-alist))) ;;; egg/sj3.el ends here. Index: egg/sj3rpc.el =================================================================== RCS file: /cvs/tamago/tamago/egg/sj3rpc.el,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -d -u -p -r1.1.1.2 -r1.2 --- egg/sj3rpc.el 27 Jan 2001 18:46:48 -0000 1.1.1.2 +++ egg/sj3rpc.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -31,9 +31,18 @@ ;;; Code: +(defvar sj3-server-version 2 + "*Major version number of SJ3 server.") + +(defvar sj3-server-coding-system 'shift_jis + "*Coding system used when decoding and encoding of I/O operation with +SJ3 server. Valid coding systems are depend on the server spec.") + (eval-when-compile (require 'egg-com) -;; (load-library "egg/sj3") + (defmacro sj3-sjis-p () + '(eq 'coding-category-sjis (coding-system-category + sj3-server-coding-system))) (defmacro sj3-const (c) (cond ((eq c 'OPEN) 1) ((eq c 'CLOSE) 2) @@ -44,20 +53,20 @@ ((eq c 'STDYSIZE) 23) ((eq c 'LOCK) 31) ((eq c 'UNLOCK) 32) - ((eq c 'BEGIN) '(if (eq 1 sj3-server-version) 41 111)) - ((eq c 'TANCONV) '(if (eq 1 sj3-server-version) 51 112)) - ((eq c 'KOUHO) '(if (eq 1 sj3-server-version) 54 115)) - ((eq c 'KOUHOSU) '(if (eq 1 sj3-server-version) 55 116)) + ((eq c 'BEGIN) '(if (sj3-sjis-p) 41 111)) + ((eq c 'TANCONV) '(if (sj3-sjis-p) 51 112)) + ((eq c 'KOUHO) '(if (sj3-sjis-p) 54 115)) + ((eq c 'KOUHOSU) '(if (sj3-sjis-p) 55 116)) ((eq c 'STDY) 61) - ((eq c 'CLSTDY) '(if (eq 1 sj3-server-version) 62 117)) - ((eq c 'WREG) '(if (eq 1 sj3-server-version) 71 118)) - ((eq c 'WDEL) '(if (eq 1 sj3-server-version) 72 119)) + ((eq c 'CLSTDY) '(if (sj3-sjis-p) 62 117)) + ((eq c 'WREG) '(if (sj3-sjis-p) 71 118)) + ((eq c 'WDEL) '(if (sj3-sjis-p) 72 119)) ((eq c 'MKDIC) 81) ((eq c 'MKSTDY) 82) ((eq c 'MKDIR) 83) ((eq c 'ACCESS) 84) - ((eq c 'WSCH) '(if (eq 1 sj3-server-version) 91 120)) - ((eq c 'WNSCH) '(if (eq 1 sj3-server-version) 92 121)) + ((eq c 'WSCH) '(if (sj3-sjis-p) 91 120)) + ((eq c 'WNSCH) '(if (sj3-sjis-p) 92 121)) ((eq c 'VERSION) 103) (t (error "No such constant"))))) @@ -85,15 +94,12 @@ (goto-char (prog1 (point) (accept-process-output proc)))) receive-exprs)))) -(defmacro sj3rpc-server-coding-system () - '(nth (1- sj3-server-version) sj3-server-coding-system-list)) - -(defmacro sj3rpc-unpack-mb-string (coding-system) - `(let ((start (point))) +(defmacro sj3rpc-unpack-mb-string () + '(let ((start (point))) (while (not (search-forward "\0" nil t)) (comm-accept-process-output)) (decode-coding-string (buffer-substring start (1- (point))) - ,coding-system))) + sj3-server-coding-system))) (defun sj3rpc-open (proc myhostname username) "Open the session. Return 0 on success, error code on failure." @@ -102,7 +108,7 @@ myhostname username ;; program name (format "%d.emacs-egg" (emacs-pid))) - (comm-unpack (u) result) + (comm-unpack (i) result) (if (= result -2) 0 result))) @@ -110,7 +116,7 @@ (defun sj3rpc-close (proc) (comm-call-with-proc proc (result) (comm-format (u) (sj3-const CLOSE)) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun sj3rpc-get-stdy-size (proc) @@ -134,10 +140,9 @@ (defun sj3rpc-begin (env yomi) "Begin conversion." - (let* ((codesys (sj3rpc-server-coding-system)) - (yomi-ext (encode-coding-string yomi codesys)) - (p 0) - len source converted stdy bunsetsu-list bl) + (let ((yomi-ext (encode-coding-string yomi sj3-server-coding-system)) + (p 0) + len source converted stdy bunsetsu-list bl) (sj3rpc-call-with-environment env (result) (comm-format (u s) (sj3-const BEGIN) yomi-ext) (comm-unpack (u) result) @@ -148,9 +153,9 @@ (comm-unpack (b) len) (> len 0)) (setq stdy (sj3rpc-get-stdy proc)) - (setq converted (sj3rpc-unpack-mb-string codesys)) + (setq converted (sj3rpc-unpack-mb-string)) (setq source (decode-coding-string (substring yomi-ext p (+ p len)) - codesys) + sj3-server-coding-system) p (+ p len)) (let ((bl1 (cons (sj3-make-bunsetsu env source converted nil stdy) nil))) @@ -171,7 +176,7 @@ (defun sj3rpc-close-dictionary (proc dict-no) (comm-call-with-proc proc (result) (comm-format (u u) (sj3-const DICDEL) dict-no) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun sj3rpc-make-dictionary (proc dict-name) @@ -181,19 +186,19 @@ 2048 ; Length 256 ; Number ) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun sj3rpc-open-stdy (proc stdy-name) (comm-call-with-proc proc (result) (comm-format (u s s) (sj3-const OPENSTDY) stdy-name "") - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun sj3rpc-close-stdy (proc) (comm-call-with-proc proc (result) (comm-format (u) (sj3-const CLOSESTDY)) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun sj3rpc-make-stdy (proc stdy-name) @@ -203,18 +208,17 @@ 1 ; Step 2048 ; Length ) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun sj3rpc-make-directory (proc name) (comm-call-with-proc proc (result) (comm-format (u s) (sj3-const MKDIR) name) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun sj3rpc-get-bunsetsu-candidates-sub (proc env yomi yomi-ext len n) - (let ((codesys (sj3rpc-server-coding-system)) - (i 0) + (let ((i 0) stdy converted bunsetsu bl bunsetsu-list cylen rest) (comm-call-with-proc-1 proc (result) (comm-format (u u s) (sj3-const KOUHO) len yomi-ext) @@ -224,9 +228,9 @@ (while (< i n) (comm-unpack (u) cylen) (setq stdy (sj3rpc-get-stdy proc)) - (setq converted (sj3rpc-unpack-mb-string codesys)) + (setq converted (sj3rpc-unpack-mb-string)) (setq rest (decode-coding-string (substring yomi-ext cylen) - codesys)) + sj3-server-coding-system)) (setq bunsetsu (sj3-make-bunsetsu env yomi converted rest stdy)) (if bl (setq bl (setcdr bl (cons bunsetsu nil))) @@ -240,7 +244,7 @@ bunsetsu-list)))) (defun sj3rpc-get-bunsetsu-candidates (env yomi) - (let* ((yomi-ext (encode-coding-string yomi (sj3rpc-server-coding-system))) + (let* ((yomi-ext (encode-coding-string yomi sj3-server-coding-system)) (len (length yomi-ext))) (sj3rpc-call-with-environment env (result) (comm-format (u u s) (sj3-const KOUHOSU) len yomi-ext) @@ -254,9 +258,8 @@ yomi yomi-ext len result)))))) (defun sj3rpc-tanbunsetsu-conversion (env yomi) - (let* ((codesys (sj3rpc-server-coding-system)) - (yomi-ext (encode-coding-string yomi codesys)) - (len (length yomi-ext)) cylen stdy converted rest) + (let* ((yomi-ext (encode-coding-string yomi sj3-server-coding-system)) + (len (length yomi-ext)) cylen stdy converted rest) (sj3rpc-call-with-environment env (result) (comm-format (u u s) (sj3-const TANCONV) len yomi-ext) (comm-unpack (u) result) @@ -264,28 +267,35 @@ (- result) (comm-unpack (u) cylen) (setq stdy (sj3rpc-get-stdy proc)) - (setq converted (sj3rpc-unpack-mb-string codesys)) - (setq rest (decode-coding-string (substring yomi-ext cylen) codesys)) + (setq converted (sj3rpc-unpack-mb-string)) + (setq rest (decode-coding-string (substring yomi-ext cylen) + sj3-server-coding-system)) (setq bunsetsu (sj3-make-bunsetsu env yomi converted rest stdy)))))) (defun sj3rpc-bunsetsu-stdy (env stdy) (sj3rpc-call-with-environment env (result) (comm-format (u v) (sj3-const STDY) stdy (length stdy)) (comm-unpack (u) result) - (if (/= result 0) - (- result) - 0))) + (- result))) (defun sj3rpc-kugiri-stdy (env yomi1 yomi2 stdy) - (let* ((codesys (sj3rpc-server-coding-system)) - (yomi1-ext (encode-coding-string yomi1 codesys)) - (yomi2-ext (encode-coding-string yomi2 codesys))) - (sj3rpc-call-with-environment env (result) - (comm-format (u s s v) (sj3-const CLSTDY) - yomi1-ext yomi2-ext stdy (length stdy)) - (comm-unpack (u) result) - (if (/= result 0) - (- result) - 0)))) + (sj3rpc-call-with-environment env (result) + (comm-format (u s s v) (sj3-const CLSTDY) + (encode-coding-string yomi1 sj3-server-coding-system) + (encode-coding-string yomi2 sj3-server-coding-system) + stdy (length stdy)) + (comm-unpack (u) result) + (- result))) + +(defun sj3rpc-add-word (env dictionary yomi kanji hinshi) + "Register a word KANJI into DICTIONARY with a pronunciation YOMI and +a part of speech HINSHI. Where DICTIONARY should be an integer." + (sj3rpc-call-with-environment env () + (comm-format (u u s s u) (sj3-const WREG) dictionary + (encode-coding-string yomi sj3-server-coding-system) + (encode-coding-string kanji sj3-server-coding-system) + hinshi) + (comm-unpack (u) result) + (- result))) ;;; egg/sj3rpc.el ends here. Index: egg/wnn.el =================================================================== RCS file: /cvs/tamago/tamago/egg/wnn.el,v retrieving revision 1.1.1.1 retrieving revision 1.4 diff -d -u -p -r1.1.1.1 -r1.4 --- egg/wnn.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ egg/wnn.el 22 Jul 2002 13:18:56 -0000 1.4 @@ -36,7 +36,7 @@ (require 'egg-edep) (defgroup wnn nil - "Wnn interface for Tamagotchy" + "Wnn interface for Tamago 4." :group 'egg) (defcustom wnn-auto-save-dictionaries 0 @@ -114,6 +114,7 @@ by ':' and digit N." egg-major-bunsetsu-continue-p wnn-major-bunsetsu-continue-p egg-list-candidates wnn-list-candidates egg-decide-candidate wnn-decide-candidate + egg-special-candidate wnn-special-candidate egg-change-bunsetsu-length wnn-change-bunsetsu-length egg-bunsetsu-combinable-p wnn-bunsetsu-combinable-p egg-end-conversion wnn-end-conversion @@ -389,13 +390,12 @@ by ':' and digit N." ;; ::= [ ;; -;; -;; -;; -;; ] +;; +;; +;; +;; ] ;; ;; ::= [ ] -;; (defsubst wnn-bunsetsu-create (env jirilen dic-no entry freq right-now hinshi status status-backward kangovect evaluation) @@ -556,7 +556,7 @@ by ':' and digit N." (copy-sequence (egg-bunsetsu-get-info b)))) bunsetsu)) -(defconst wnn-server-info-list +(defvar wnn-server-info-list ;; language server port hostname proc coding-system '((Japanese jserver wnn-jport wnn-jserver "Wnn" (fixed-euc-jp fixed-euc-jp)) (Chinese-GB cserver wnn-cport wnn-cserver "cWnn" (fixed-euc-py-cn fixed-euc-zy-cn)) @@ -657,20 +657,28 @@ Return the list of bunsetsu." (defun wnn-major-bunsetsu-continue-p (bunsetsu) (wnn-bunsetsu-get-dai-continue bunsetsu)) +(defmacro wnn-uniq-hash-string (uniq-level) + `(mapconcat + (lambda (b) + (concat ,@(cond ((eq uniq-level 'wnn-uniq) + '((number-to-string (wnn-bunsetsu-get-hinshi b)))) + ((eq uniq-level 'wnn-uniq-entry) + '((number-to-string (wnn-bunsetsu-get-dic-no b)) + "+" + (number-to-string (wnn-bunsetsu-get-entry b))))) + "\0" + (wnn-bunsetsu-get-converted b) + "\0" + (wnn-bunsetsu-get-fuzokugo b))) + bunsetsu "\0")) + (defun wnn-uniq-hash (bunsetsu hash-table) - (intern (mapconcat (lambda (b) - (concat (cond - ((eq wnn-uniq-level 'wnn-uniq) - (wnn-bunsetsu-get-hinshi b)) - ((eq wnn-uniq-level 'wnn-uniq-entry) - (concat (wnn-bunsetsu-get-dic-no b) - "+" - (wnn-bunsetsu-get-entry b)))) - (concat "\0" - (wnn-bunsetsu-get-converted b) - "\0" - (wnn-bunsetsu-get-fuzokugo b)))) - bunsetsu "\0") + (intern (cond ((eq wnn-uniq-level 'wnn-uniq) + (wnn-uniq-hash-string wnn-uniq)) + ((eq wnn-uniq-level 'wnn-uniq-entry) + (wnn-uniq-hash-string wnn-uniq-entry)) + (t + (wnn-uniq-hash-string nil))) hash-table)) (defun wnn-uniq-candidates (candidates) @@ -786,6 +794,68 @@ Return the list of bunsetsu." (setq next-b (list (car next-b)))) (list cand prev-b next-b))) +(defun wnn-special-candidate (bunsetsu prev-b next-b major type) + (let* ((backend (egg-bunsetsu-get-backend (car bunsetsu))) + (lang (get backend 'language)) + pos cand) + (when (and (eq lang (get backend 'source-language)) + (eq lang (get backend 'converted-language))) + (setq pos (and (eq lang (get backend 'source-language)) + (eq lang (get backend 'converted-language)) + (cond ((eq lang 'Japanese) + (cond ((eq type 'egg-hiragana) -1) + ((eq type 'egg-katakana) -2))) + ((or (eq lang 'Chinese-GB) (eq lang 'Chinese-CNS)) + (cond ((eq type 'egg-pinyin) -1) + ((eq type 'egg-zhuyin) -1))) + ((eq lang 'Korean) + (cond ((eq type 'egg-hangul) -1)))))) + (when pos + (setq cand (cdr (wnn-list-candidates bunsetsu prev-b next-b major)) + pos (+ pos (length cand))) + (when (and (or (eq lang 'Chinese-GB) (eq lang 'Chinese-CNS))) + (let ((converted (nth pos cand))) + (cond ((egg-pinyin-syllable converted) + (cond ((eq type 'egg-pinyin)) ; OK + ((eq type 'egg-zhuyin) + (wnn-pinyin-zhuyin-bunsetsu bunsetsu pos lang type)) + (t (setq pos nil)))) + ((egg-zhuyin-syllable converted) + (cond ((eq type 'egg-pinyin) + (wnn-pinyin-zhuyin-bunsetsu bunsetsu pos lang type)) + ((eq type 'egg-zhuyin)) ; OK + (t (setq pos nil)))) + (t (setq pos nil)))))) + (when pos + (wnn-decide-candidate bunsetsu pos prev-b next-b))))) + +(defun wnn-pinyin-zhuyin-bunsetsu (bunsetsu pos lang type) + (let ((b (nth pos (wnn-bunsetsu-get-zenkouho-list (car bunsetsu)))) + (encoding (if (eq lang 'Chinese-GB) + (if (eq type 'egg-pinyin) + 'fixed-euc-py-cn 'fixed-euc-zy-cn) + (if (eq type 'egg-pinyin) + 'fixed-euc-py-tw 'fixed-euc-zy-tw))) + (converted (wnn-bunsetsu-get-zenkouho-converted (car bunsetsu))) + str) + (setcar (nthcdr pos converted) + (wnn-pinyin-zhuyin-string (nth pos converted) encoding)) + (while b + (setq str (wnn-bunsetsu-get-converted (car b))) + (when str + (wnn-bunsetsu-set-converted + (car b) + (wnn-pinyin-zhuyin-string str encoding))) + (setq str (wnn-bunsetsu-get-fuzokugo (car b))) + (when str + (wnn-bunsetsu-set-fuzokugo + (car b) + (wnn-pinyin-zhuyin-string str encoding))) + (setq b (cdr b))))) + +(defun wnn-pinyin-zhuyin-string (str encoding) + (decode-coding-string (encode-coding-string str encoding) encoding)) + (defun wnn-change-bunsetsu-length (bunsetsu prev-b next-b len major) (let ((backend (egg-bunsetsu-get-backend (car bunsetsu))) (env (wnn-bunsetsu-get-env (car bunsetsu))) @@ -918,7 +988,7 @@ Return the list of bunsetsu." (wnn-bunsetsu-get-right-now b) (wnn-bunsetsu-get-freq b)) context)) - (wnnrpc-set-frequency env dic-no entry + (wnnrpc-set-frequency env dic-no entry (WNN-const IMA_ON) (WNN-const HINDO_INC))) (list (car context) (nth 1 context)))) @@ -1139,7 +1209,7 @@ Return the list of bunsetsu." (proc-name (wnn-server-proc-name server-info)) (msg-form "Wnn: connecting to %S at %s...") (user-name (user-login-name)) - buf hostname myname port-off proc result msg) + buf hostname myname port-off proc result msg) (unwind-protect (progn (setq buf (generate-new-buffer (wnn-server-buffer-name server-info))) @@ -1175,7 +1245,7 @@ Return the list of bunsetsu." ((error quit)))) (when proc (process-kill-without-query proc) - (set-process-coding-system proc 'no-conversion 'no-conversion) + (set-process-coding-system proc 'binary 'binary) (set-process-sentinel proc 'wnn-comm-sentinel) (set-marker-insertion-type (process-mark proc) t) (setq result (wnnrpc-open proc myname user-name)) @@ -1276,7 +1346,7 @@ is non-NIL." (setq env-name (if reverse (concat env-name "R") env-name) wnn-current-envspec (wnn-envspec-create env-name tankan stickey) wnn-current-envspec-reverse reverse - wnn-envspec-list (nconc wnn-envspec-list + wnn-envspec-list (nconc wnn-envspec-list (list wnn-current-envspec)))) (defun wnn-set-fuzokugo (filename) @@ -1359,7 +1429,7 @@ is non-NIL." dict freq nil dict-rw freq-rw dict-passwd freq-passwd nil)) -(defun wnn-add-notrans-dict (dict priority dict-rw +(defun wnn-add-notrans-dict (dict priority dict-rw &optional dict-passwd &rest reverse) (wnn-wnn6-env-func wnn-add-notrans-dict) (wnn-add-dict-param-check wnn-add-notrans-dict @@ -1705,7 +1775,7 @@ On failure, return negative error code." (wnn-create-frequency env fi did fname "" fpass)) (message (egg-get-message 'wnn-re-create-freq) fname) (and (>= (setq fid (wnn-open-file env fname)) 0) - (>= (wnnrpc-set-dictionary env + (>= (wnnrpc-set-dictionary env did fid prior drw frw dpass fpass rev) 0)))))))) @@ -2090,7 +2160,7 @@ environment." ;;;###autoload (defun egg-activate-wnn (&rest arg) - "Activate Wnn backend of Tamagotchy." + "Activate Wnn backend of Tamago 4." (apply 'egg-mode (append arg wnn-backend-alist))) ;;; egg/wnn.el ends here. Index: egg/wnnrpc.el =================================================================== RCS file: /cvs/tamago/tamago/egg/wnnrpc.el,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -d -u -p -r1.1.1.1 -r1.3 --- egg/wnnrpc.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ egg/wnnrpc.el 22 Jul 2002 13:18:56 -0000 1.3 @@ -162,8 +162,8 @@ ((eq c 'WNN_NOT_A_FILE) 98) ((eq c 'WNN_INODE_CHECK_ERROR) 99) - ((eq c 'WNN_UD_DICT) 2) - ((eq c 'WNN_REV_DICT) 3) + ((eq c 'WNN_UD_DICT) 2) + ((eq c 'WNN_REV_DICT) 3) ((eq c 'CWNN_REV_DICT) ?\x103) ((eq c 'BWNN_REV_DICT) ?\x203) ((eq c 'WNN_COMPACT_DICT) 5) @@ -693,10 +693,10 @@ (defmacro wnnrpc-get-result (&rest body) `(let (result) - (comm-unpack (u) result) + (comm-unpack (i) result) (if (< result 0) (progn - (comm-unpack (u) result) + (comm-unpack (i) result) (- result)) ,@(or body '(result))))) @@ -725,7 +725,7 @@ (defun wnnrpc-connect (proc envname) "Establish new `connection' and make an environment. -Return the identitifation of the environment on success, +Return the identitifation of the environment on success, or negative error code on failure." (comm-call-with-proc proc () (comm-format (u s) (wnn-const JS_CONNECT) envname) @@ -739,7 +739,7 @@ Return non-negative file ID on success, (wnnrpc-get-result))) (defun wnnrpc-set-fuzokugo-file (env fid) - "For PROC, on environment ENV-ID, + "For PROC, on environment ENV-ID, Set Fuzokugo file specified by FID. Return 0 on success, negate-encoded error code on failure." (wnnrpc-call-with-environment env () @@ -783,7 +783,7 @@ error code on faiulure." (comm-format (u u u) (wnn-const JS_GET_AUTOLEARNING_DIC) env-id type) (wnnrpc-get-result - (comm-unpack (u) result) + (comm-unpack (i) result) (1+ result)))) (defun wnnrpc-set-autolearning-dic (env type dic-id) @@ -798,16 +798,16 @@ Return 0 on success, negate-encoded erro "Return the version number of WNN server." (comm-call-with-proc proc (result) (comm-format (u) (wnn-const JS_VERSION)) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) -(defun wnnrpc-access (env path mode) +(defun wnnrpc-access (env path mode) "Check the accessibility of file in the environment ENV. Return 0 when the remote file (dictionary/frequency) of PATH on server can be accessed in mode MODE. Return Non-zero otherwise." (wnnrpc-call-with-environment env (result) (comm-format (u u u s) (wnn-const JS_ACCESS) env-id mode path) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun wnnrpc-mkdir (env path) @@ -904,7 +904,7 @@ Return positive if loaded, zero if not, hinshi status status-backward kangovect evaluation result source fuzokugo) (while (> n-bunsetsu 0) - (comm-unpack (u u u u u u u u u u u u) + (comm-unpack (i i i i i i i i i i i i) end start jiritsugo-end dic-no entry freq right-now hinshi status status-backward kangovect evaluation) @@ -929,9 +929,9 @@ Return positive if loaded, zero if not, n-bunstsu kanji-length dlist slist end start n-sho evaluation n retval) - (comm-unpack (u u) n-bunstsu kanji-length) + (comm-unpack (i i) n-bunstsu kanji-length) (while (> n-dai 0) - (comm-unpack (u u u u) end start n-sho evaluation) + (comm-unpack (i i i i) end start n-sho evaluation) (setq dlist (cons (cons n-sho evaluation) dlist) n-dai (1- n-dai))) (setq dlist (nreverse dlist) @@ -1010,7 +1010,7 @@ HINSHI and FUZOKUGO are information of p fi-dic dic entry offset num result) (comm-unpack (i) num) (while (> num 0) - (comm-unpack (u u u u) fi-dic dic entry offset) + (comm-unpack (i i i i) fi-dic dic entry offset) (setq result (cons (vector fi-dic dic entry offset -2 -4) result) num (1- num))) (nreverse result))) @@ -1110,7 +1110,7 @@ HINSHI and FUZOKUGO are information of p "" (comm-call-with-proc proc (result) (comm-format (u s) (wnn-const JS_ENV_EXIST) envname) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun wnnrpc-make-env-sticky (env) @@ -1156,14 +1156,14 @@ HINSHI and FUZOKUGO are information of p "" (wnnrpc-call-with-environment env (n-dic) (comm-format (u u) (wnn-const JS_DIC_LIST) env-id) - (comm-unpack (u) n-dic) + (comm-unpack (i) n-dic) (wnnrpc-receive-dictionary-list proc n-dic))) (defun wnnrpc-get-fi-dictionary-list-with-environment (env mask) "" (wnnrpc-call-with-environment env (n-dic) (comm-format (u u u) (wnn-const JS_FI_DIC_LIST) env-id mask) - (comm-unpack (u) n-dic) + (comm-unpack (i) n-dic) (wnnrpc-receive-dictionary-list proc n-dic))) (defun wnnrpc-receive-dictionary-list (proc n-dic) @@ -1171,7 +1171,7 @@ HINSHI and FUZOKUGO are information of p rev comment dicname freqname dic-passwd freq-passwd type gosuu dic-local-flag freq-local-flag retval) (while (> n-dic 0) - (comm-unpack (u u u u u u u u S s s s s u u u u) + (comm-unpack (i i i i i i i i S s s s s i i i i) entry dic freq dic-mode freq-mode enable-flag nice rev comment dicname freqname dic-passwd freq-passwd type gosuu dic-local-flag freq-local-flag) @@ -1193,7 +1193,7 @@ HINSHI and FUZOKUGO are information of p (comm-format (u u i) (wnn-const JS_HINSI_DICTS) env-id -1) (wnnrpc-get-result (while (> result 0) - (comm-unpack (u) dic) + (comm-unpack (i) dic) (setq dic-list (nconc dic-list (list dic)) result (1- result))) dic-list))) @@ -1222,7 +1222,7 @@ HINSHI and FUZOKUGO are information of p p10 p11 p12 p13 p14 p15) (comm-format (u u) (wnn-const JS_PARAM_GET) env-id) (wnnrpc-get-result - (comm-unpack (u u u u u u u u u u u u u u u u u) + (comm-unpack (i i i i i i i i i i i i i i i i i) n nsho p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15) (vector n nsho p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15)))) @@ -1243,7 +1243,7 @@ HINSHI and FUZOKUGO are information of p "" (comm-call-with-proc proc (result) (comm-format (u s) (wnn-const JS_FILE_LOADED) path) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun wnnrpc-write-file (env fid filename) @@ -1261,9 +1261,9 @@ HINSHI and FUZOKUGO are information of p (let ((i 0) flist nfiles fid local ref-count type name) - (comm-unpack (u) nfiles) + (comm-unpack (i) nfiles) (while (> nfiles 0) - (comm-unpack (u u u u s) fid local ref-count type name) + (comm-unpack (i i i i s) fid local ref-count type name) (setq flist (nconc flist (list (vector fid local ref-count type name))) nfiles (1- nfiles))) flist)) @@ -1284,7 +1284,7 @@ HINSHI and FUZOKUGO are information of p "3: dictionary, 4: hindo file, 5: fuzokugo-file" (wnnrpc-call-with-environment env (result) (comm-format (u u s) (wnn-const JS_FILE_STAT) env-id path) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun wnnrpc-get-file-info (env fid) @@ -1292,7 +1292,7 @@ HINSHI and FUZOKUGO are information of p (wnnrpc-call-with-environment env (name local ref-count type) (comm-format (u u u) (wnn-const JS_FILE_INFO) env-id fid) (wnnrpc-get-result - (comm-unpack (s u u u) name local ref-count type) + (comm-unpack (s i i i) name local ref-count type) (vector name local ref-count type)))) (defmacro wnnrpc-receive-vector (n) @@ -1300,7 +1300,7 @@ HINSHI and FUZOKUGO are information of p (i 0) j) (while (< i ,n) - (comm-unpack (u) j) + (comm-unpack (i) j) (aset v i j) (setq i (1+ i))) v)) @@ -1311,7 +1311,7 @@ HINSHI and FUZOKUGO are information of p (comm-format (u) (wnn-const JS_WHO)) (wnnrpc-get-result (while (> result 0) - (comm-unpack (u s s) socket username hostname) + (comm-unpack (i s s) socket username hostname) (setq who (nconc who (list (vector socket username hostname (wnnrpc-receive-vector @@ -1324,7 +1324,7 @@ HINSHI and FUZOKUGO are information of p (comm-format (u) (wnn-const JS_ENV_LIST)) (wnnrpc-get-result (while (> result 0) - (comm-unpack (u s u u u) id name count fuzokugo dic-max) + (comm-unpack (i s i i i) id name count fuzokugo dic-max) (setq envs (nconc envs (list (vector id name count fuzokugo dic-max (wnnrpc-receive-vector @@ -1338,7 +1338,7 @@ HINSHI and FUZOKUGO are information of p "" (comm-call-with-proc proc (result) (comm-format (u) (wnn-const JS_KILL)) - (comm-unpack (u) result) + (comm-unpack (i) result) result)) (defun wnnrpc-delete-dictionary (env dic) @@ -1357,7 +1357,7 @@ HINSHI and FUZOKUGO are information of p "" (wnnrpc-call-with-proc proc (n-dic) (comm-format (u) (wnn-const JS_DIC_LIST_ALL)) - (comm-unpack (u) n-dic) + (comm-unpack (i) n-dic) (wnnrpc-receive-dictionary-list proc n-dic))) (defun wnnrpc-delete-word (env dic entry) @@ -1369,15 +1369,15 @@ HINSHI and FUZOKUGO are information of p (defun wnnrpc-receive-word (proc yomi) (let (dic serial hinshi hindo right-now internal-hindo internal-right-now kanji comment l l1) - (comm-unpack (u) dic) + (comm-unpack (i) dic) (while (>= dic 0) - (comm-unpack (u u u u u u) serial hinshi hindo right-now + (comm-unpack (i i i i i i) serial hinshi hindo right-now internal-hindo internal-right-now) (setq l (cons (vector dic serial hinshi hindo right-now internal-hindo internal-right-now yomi nil nil) l)) - (comm-unpack (u) dic)) + (comm-unpack (i) dic)) (setq l (nreverse l) l1 l) (while l1 @@ -1454,16 +1454,16 @@ HINSHI and FUZOKUGO are information of p (defmacro wnnrpc-with-temp-buffer (&rest body) `(with-temp-buffer - (let ((coding-system-for-read 'no-conversion) - (coding-system-for-write 'no-conversion)) + (let ((coding-system-for-read 'binary) + (coding-system-for-write 'binary)) (set-buffer-multibyte nil) ,@body))) (defmacro wnnrpc-with-write-file (filename error-handler &rest body) `(condition-case error (with-temp-file ,filename - (let ((coding-system-for-read 'no-conversion) - (coding-system-for-write 'no-conversion)) + (let ((coding-system-for-read 'binary) + (coding-system-for-write 'binary)) (set-buffer-multibyte nil) ,@body)) (file-error ,error-handler))) @@ -1492,7 +1492,7 @@ HINSHI and FUZOKUGO are information of p (wnn-const WNN_FILE_STRING))) (progn (goto-char (1+ (wnn-const WNN_FILE_STRING_LEN))) - (comm-unpack (u v v v) + (comm-unpack (i v v v) type uniq1 (wnn-const WNN_UNIQ_LEN) uniq2 (wnn-const WNN_UNIQ_LEN) @@ -1511,7 +1511,7 @@ HINSHI and FUZOKUGO are information of p (cond ((null header) (- (wnn-const WNN_NOT_A_FILE))) ((null (car header)) - (if (file-exists-p path) + (if (file-exists-p path) (- (wnn-const WNN_OPENF_ERR)) (- (wnn-const WNN_NO_EXIST)))) (t @@ -1534,10 +1534,18 @@ HINSHI and FUZOKUGO are information of p (defun wnnrpc-make-uniq (attributes) (wnnrpc-with-temp-buffer - (comm-format (U i u V) - (nth 6 attributes) (nth 11 attributes) (nth 10 attributes) - wnn-system-name (wnn-const WNN_HOST_LEN)) - (buffer-string))) + (let ((ctime (nth 6 attributes)) + (ino (nth 10 attributes)) + (devno (nth 11 attributes))) + (if (numberp devno) + (comm-format (U i u V) + ctime devno ino + wnn-system-name (wnn-const WNN_HOST_LEN)) + ;; Emacs 21 returns returns negative devno as 16 bits uint pair + (comm-format (U U u V) + ctime (list (car devno) (cdr devno)) ino + wnn-system-name (wnn-const WNN_HOST_LEN))) + (buffer-string)))) (defun wnnrpc-change-file-uniq (header path &optional new) (wnnrpc-with-write-file path @@ -1558,27 +1566,28 @@ HINSHI and FUZOKUGO are information of p (defun wnnrpc-check-passwd (proc passwd header) (let ((env-id -1)) (unwind-protect - (if (>= (setq env-id (wnnrpc-connect proc "")) 0) - (wnnrpc-call-with-environment (wnnenv-create proc env-id) - (file-id) - (comm-format (u u v) (wnn-const JS_FILE_SEND) - env-id - (nth 1 header) (wnn-const WNN_UNIQ_LEN)) - (comm-unpack (u) file-id) - (if (>= file-id 0) - (progn - (wnnrpc-get-result) ; ignore result code - (- (wnn-const WNN_FILE_IN_USE))) - (wnnrpc-get-result - (comm-call-with-proc-1 proc () - (comm-format (s B) - (concat wnn-system-name "!TEMPFILE") - (wnnrpc-make-dummy-dictionary header)) - (wnnrpc-get-result - (let ((egg-fixed-euc (list egg-fixed-euc egg-fixed-euc))) - (wnnrpc-set-dictionary (wnnenv-create proc env-id) - result -1 1 t t - passwd "" nil)))))))) + (if (< (setq env-id (wnnrpc-connect proc "")) 0) + -1 + (wnnrpc-call-with-environment (wnnenv-create proc env-id) + (file-id) + (comm-format (u u v) (wnn-const JS_FILE_SEND) + env-id + (nth 1 header) (wnn-const WNN_UNIQ_LEN)) + (comm-unpack (i) file-id) + (if (>= file-id 0) + (progn + (wnnrpc-get-result) ; ignore result code + (- (wnn-const WNN_FILE_IN_USE))) + (wnnrpc-get-result + (comm-call-with-proc-1 proc () + (comm-format (s B) + (concat wnn-system-name "!TEMPFILE") + (wnnrpc-make-dummy-dictionary header)) + (wnnrpc-get-result + (let ((egg-fixed-euc (list egg-fixed-euc egg-fixed-euc))) + (wnnrpc-set-dictionary (wnnenv-create proc env-id) + result -1 1 t t + passwd "" nil)))))))) (if (>= env-id 0) (wnnrpc-disconnect (wnnenv-create proc env-id)))))) @@ -1603,7 +1612,7 @@ HINSHI and FUZOKUGO are information of p (comm-call-with-proc proc (result) (comm-format (u v) (wnn-const JS_FILE_LOADED_LOCAL) (nth 1 header) (wnn-const WNN_UNIQ_LEN)) - (comm-unpack (u) result) + (comm-unpack (i) result) result)))) (defun wnnrpc-file-receive (env fid local-filename) @@ -1629,7 +1638,7 @@ HINSHI and FUZOKUGO are information of p (wnnrpc-terminate-current-command WNN_FILE_WRITE_ERROR)) (t (wnnrpc-with-write-file local-filename - (- (wnn-const WNN_FILE_WRITE_ERROR)) + (- (wnn-const WNN_FILE_WRITE_ERROR)) (comm-call-with-proc proc () (comm-format (u) (wnn-const WNN_ACK)) (comm-unpack (B) contents)) @@ -1654,7 +1663,7 @@ HINSHI and FUZOKUGO are information of p (comm-format (u u v) (wnn-const JS_FILE_SEND) env-id (nth 1 header) (wnn-const WNN_UNIQ_LEN)) - (comm-unpack (u) file-id) + (comm-unpack (i) file-id) (if (>= file-id 0) (wnnrpc-get-result (wnnenv-set-client-file env filename) @@ -1705,7 +1714,7 @@ HINSHI and FUZOKUGO are information of p comment passwd hpasswd)) 0 (- (wnn-const WNN_FILE_CREATE_ERROR)))) - + (defun wnnrpc-hindo-file-create-client (env fi dic-id freqname comment passwd) (if (and (null (file-exists-p freqname)) @@ -1718,9 +1727,9 @@ HINSHI and FUZOKUGO are information of p (defun wnnrpc-make-temp-name (env) (let ((n 0) (temp-form "usr/temp")) - (while (= (wnnrpc-access env (concat temp-form n) 0) 0) + (while (= (wnnrpc-access env (concat temp-form (number-to-string n)) 0) 0) (setq n (1+ n))) - (concat temp-form n))) + (concat temp-form (number-to-string n)))) (defun wnnrpc-create-and-move-to-client (env dic-id filename type comment passwd hpasswd) @@ -1750,7 +1759,7 @@ HINSHI and FUZOKUGO are information of p (cond ((null filename) "") ((null (file-readable-p filename)) (- (wnn-const WNN_FILE_READ_ERROR))) - (t + (t (wnnrpc-with-temp-buffer (insert-file-contents filename nil 0 (1- (wnn-const WNN_PASSWD_LEN))) (goto-char 1) @@ -1759,4 +1768,4 @@ HINSHI and FUZOKUGO are information of p (backward-char)) (buffer-substring 1 (point)))))) -;;; egg/wnnrpc.el ends here. +;;; egg/wnnrpc.el ends here Index: its/ascii.el =================================================================== RCS file: /cvs/tamago/tamago/its/ascii.el,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- its/ascii.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ its/ascii.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -26,10 +26,7 @@ ;; Boston, MA 02111-1307, USA. ;;; Commentary: -;; -;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro) -;; This file is based on the rules of its/hira.el in Mule-2.3 distribution. -;; + ;;; Code: Index: its/aynu.el =================================================================== RCS file: its/aynu.el diff -N its/aynu.el --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ its/aynu.el 22 Jul 2002 13:18:56 -0000 1.3 @@ -0,0 +1,285 @@ +;;; its/aynu.el --- Aynu Katakana Input in Egg Input Method Architecture + +;; Copyright (C) 1999,2000 PFU LIMITED + +;; Author: KATAYAMA Yoshio + +;; Maintainer: TOMURA Satoru + +;; Keywords: mule, multilingual, input method + +;; This file is part of EGG. + +;; EGG is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; EGG is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + + +;;; Code: + +(eval-when-compile + (require 'its) + (require 'cl)) + +(eval-when (compile) + (defconst its-compaction-enable t)) + +(defvar its-aynu-enable-zenkaku-alphabet + (if (boundp 'its-enable-fullwidth-alphabet) + its-enable-fullwidth-alphabet + t) + "*Enable Zenkaku alphabet") + +(defvar its-aynu-horizontal "$(O!<(B" "*-") ; "-" "$(O!=(B" +(defvar its-aynu-period "$(O!#(B " "*.") ; "." "$(O!#(B" +(defvar its-aynu-comma "$(O!$(B " "*,") ; "," "$(O!$(B" +(defvar its-aynu-open-bracket "$(O!V(B" "*[") ; "$(O!N(B" +(defvar its-aynu-close-bracket "$(O!W(B" "*]") ; "$(O!O(B" + +(defvar its-aynu-enable-double-n nil "*Enable \"nn\" input for \"$(O%s(B\"") + +(defvar its-aynu-kick-conversion-on-space nil "*Start conversion on SPACE") + +(eval-when-compile + (defun its-define-state-aynu (input i-tail output o-tail otherwise) + "Define following rules: +INPUT + I-TAIL --> OUTPUT + O-TAIL +INPUT + I-TAIL + ' --> OUTPUT + O-TAIL +INPUT + I-TAIL + vowel --> (translate INPUT) + I-tail + vowel +INPUT + I-TAIL + OTHERWISE (see `its-defrule-otherwise')." + (let ((out (concat output o-tail)) + state) + (setq state (its-defrule (concat input i-tail) out)) + (its-defrule (concat input i-tail "'") out) + (its-defrule-otherwise state nil "[aiueo]" -2) + (while otherwise + (its-defrule-otherwise state (concat output (caar otherwise)) + (nth 1 (car otherwise)) (nth 2 (car otherwise))) + (setq otherwise (cdr otherwise))) + (setq state (its-defrule (concat input i-tail "y") (concat out "$(O%#(B"))) + (its-make-next-state state -1 out -1) + (its-defrule-otherwise state out nil -2) + (its-defrule-otherwise state nil "[u]" -3) +)) + + (defconst its-aynu-tail-alist + (let ((common '(("k" "$(O&n(B" (("$(O%C(B" "[k]" -1))) + ("s" "$(O&o(B" (("$(O%C(B" "[s]" -1) (nil "[h]" -2))) + ("p" "$(O&x(B" (("$(O%C(B" "[p]" -1))) + ("m" "$(O&y(B" (("$(O%s(B" "[mp]" -1))) + ("t" "$(O%C(B") ("y" "$(O%#(B") ("w" "$(O%%(B")))) + `((?a ("h" "$(O&s(B") ("x" "$(O&s(B") ("r" "$(O&z(B") ,@common) + (?i ("h" "$(O&t(B") ("x" "$(O&t(B") ("r" "$(O&{(B") ,@common) + (?u ("h" "$(O&u(B") ("x" "$(O&u(B") ("r" "$(O&|(B") ,@common) + (?e ("h" "$(O&v(B") ("x" "$(O&v(B") ("r" "$(O&}(B") ,@common) + (?o ("h" "$(O&w(B") ("x" "$(O&w(B") ("r" "$(O&~(B") ,@common)))) + + (defun its-defrule-aynu (conso vowel output) + (let ((input (concat conso vowel)) + (tails (and vowel (cdr (assq (aref vowel 0) its-aynu-tail-alist))))) + (its-defrule input output) + (while tails + (its-define-state-aynu input (caar tails) output (nth 1 (car tails)) + (nth 2 (car tails))) + (setq tails (cdr tails))))) + + (defmacro its-define-aynu (&rest rules) + (let ((defs (list 'progn)) + conso vowels output) + (while rules + (setq vowels '(nil "a" "i" "u" "e" "o") + conso (caar rules) + output (cdar rules) + rules (cdr rules)) + (while output + (when (car output) + (setq defs (cons `(its-defrule-aynu ,conso ,(car vowels) + ,(car output)) + defs))) + (setq output (cdr output) + vowels (cdr vowels)))) + (nreverse defs))) + + (defun its-defrule-aynu-override-yu (conso) + (let ((output (its-get-output (its-goto-state conso))) + state) + (its-defrule (concat conso "yu") + (concat (its-get-output (its-goto-state (concat conso "i"))) + "$(O%e!<(B")) + (setq state (its-goto-state (concat conso "y"))) + (its-set-output state (concat output "$(O%#(B")) + (its-make-next-state state -1 output -1) + (its-defrule-otherwise state output nil -2)))) + +(define-its-state-machine its-aynu-map + "roma-aynu-kata" "$(O%"(B" Aynu + "Map for Romaji-Aynu-Katakana translation. (Japanese)" + + (defconst its-zenkaku-escape "Z") ;; Escape character to Zenkaku inputs + (defconst its-hankaku-escape "~") ;; Escape character to Hankaku inputs + + (its-defrule-select-mode-temporally "q" downcase) + (its-defrule-select-mode-temporally "Q" zenkaku-downcase) + + (dolist (small '(("a" "$(O%!(B") ("i" "$(O%#(B") ("u" "$(O%%(B") ("e" "$(O%'(B") ("o" "$(O%)(B") + ("ka" "$(O%u(B") ("ku" "$(O&n(B") ("ke" "$(O%v(B") + ("si" "$(O&o(B") ("su" "$(O&p(B") + ("tu" "$(O%C(B") ("to" "$(O&q(B") + ("nu" "$(O&r(B") + ("ha" "$(O&s(B") ("hi" "$(O&t(B") ("hu" "$(O&u(B") ("he" "$(O&v(B") ("ho" "$(O&w(B") + ("pu" "$(O&x(B") + ("mu" "$(O&y(B") + ("ya" "$(O%c(B") ("yu" "$(O%e(B") ("yo" "$(O%g(B") + ("ra" "$(O&z(B") ("ri" "$(O&{(B") ("ru" "$(O&|(B") ("re" "$(O&}(B") ("ro" "$(O&~(B") + ("wa" "$(O%n(B"))) + (its-defrule (concat "x" (car small)) (cadr small))) + + (its-define-aynu + ("" nil "$(O%"(B" "$(O%$(B" "$(O%&(B" "$(O%((B" "$(O%*(B") + ("k" "$(O&n(B" "$(O%+(B" "$(O%-(B" "$(O%/(B" "$(O%1(B" "$(O%3(B") + ("g" "$(O%0(B" "$(O%,(B" "$(O%.(B" "$(O%0(B" "$(O%2(B" "$(O%4(B") + ("s" "$(O&p(B" "$(O%5(B" "$(O%7(B" "$(O%9(B" "$(O%;(B" "$(O%=(B") + ("z" nil "$(O%6(B" "$(O%8(B" "$(O%:(B" "$(O%<(B" "$(O%>(B") + ("vs" nil nil nil nil "$(O%|(B" nil) + ("sh" "$(O%7%c(B" "$(O%7%c(B" "$(O%7(B" "$(O%7%e(B" "$(O%7%'(B" "$(O%7%g(B") + ("j" nil "$(O%8%c(B" "$(O%8(B" "$(O%8%e(B" "$(O%8%'(B" "$(O%8%g(B") + ("t" "$(O%C(B" "$(O%?(B" "$(O%A(B" "$(O%H%%(B" "$(O%F(B" "$(O%H(B") + ("vt" nil nil nil "$(O%}(B" nil "$(O%~(B") + ("d" nil "$(O%@(B" "$(O%B(B" "$(O%E(B" "$(O%G(B" "$(O%I(B") + ("c" "$(O%C(B" "$(O%A%c(B" "$(O%A(B" "$(O%A%e(B" "$(O%A%'(B" "$(O%A%g(B") + ("ch" "$(O%C(B" "$(O%A%c(B" "$(O%A(B" "$(O%A%e(B" "$(O%A%'(B" "$(O%A%g(B") + ("n" "$(O%s(B" "$(O%J(B" "$(O%K(B" "$(O%L(B" "$(O%M(B" "$(O%N(B") + ("h" "$(O&s(B" "$(O%O(B" "$(O%R(B" "$(O%U(B" "$(O%X(B" "$(O%[(B") + ("b" nil "$(O%P(B" "$(O%S(B" "$(O%V(B" "$(O%Y(B" "$(O%\(B") + ("p" "$(O&x(B" "$(O%Q(B" "$(O%T(B" "$(O%W(B" "$(O%Z(B" "$(O%](B") + ("m" "$(O&y(B" "$(O%^(B" "$(O%_(B" "$(O%`(B" "$(O%a(B" "$(O%b(B") + ("y" "$(O%#(B" "$(O%d(B" "$(O%#(B" "$(O%f(B" "$(O%$%'(B" "$(O%h(B") + ("r" "$(O&|(B" "$(O%i(B" "$(O%j(B" "$(O%k(B" "$(O%l(B" "$(O%m(B") + ("w" "$(O%%(B" "$(O%o(B" "$(O%&%#(B" "$(O%%(B" "$(O%&%'(B" "$(O%&%)(B")) + + (dolist (yu '("k" "g" "s" "z" "sh" "j" "t" "d" + "c" "ch" "n" "h" "b" "p" "m" "r")) + (its-defrule-aynu-override-yu yu)) + + (its-defrule "kk" "$(O%C(B" -1) + (its-defrule "ss" "$(O%C(B" -1) + (its-defrule "pp" "$(O%C(B" -1) + (its-defrule "vv" "$(O%C(B" -1) + +;; SYMBOL Input + (its-defrule "z1" "$(O!{(B") (its-defrule "z!" "$(O!|(B") + (its-defrule "z2" "$(O"&(B") (its-defrule "z@" "$(O"'(B") + (its-defrule "z3" "$(O"$(B") (its-defrule "z#" "$(O"%(B") + (its-defrule "z4" "$(O""(B") (its-defrule "z$" "$(O"#(B") + (its-defrule "z5" "$(O!~(B") (its-defrule "z%" "$(O"!(B") + (its-defrule "z6" "$(O!y(B") (its-defrule "z^" "$(O!z(B") + (its-defrule "z7" "$(O!}(B") (its-defrule "z&" "$(O!r(B") + (its-defrule "z8" "$(O!q(B") (its-defrule "z*" "$(O!_(B") + (its-defrule "z9" "$(O!i(B") (its-defrule "z(" "$(O!Z(B") + (its-defrule "z0" "$(O!j(B") (its-defrule "z)" "$(O![(B") + (its-defrule "z-" "$(O!A(B") (its-defrule "z_" "$(O!h(B") + (its-defrule "z=" "$(O!b(B") (its-defrule "z+" "$(O!^(B") + (its-defrule "z\\" "$(O!@(B") (its-defrule "z|" "$(O!B(B") + (its-defrule "z`" "$(O!-(B") (its-defrule "z~" "$(O!/(B") + + (its-defrule "zq" "$(O!T(B") (its-defrule "zQ" "$(O!R(B") + (its-defrule "zw" "$(O!U(B") (its-defrule "zW" "$(O!S(B") + ; e + (its-defrule "zr" "$(O!9(B") (its-defrule "zR" "$(O!8(B") + (its-defrule "zt" "$(O!:(B") (its-defrule "zT" "$(O!x(B") + ; y u i o + (its-defrule "zp" "$(O")(B") (its-defrule "zP" "$(O",(B") + (its-defrule "z[" "$(O!X(B") (its-defrule "z{" "$(O!L(B") + (its-defrule "z]" "$(O!Y(B") (its-defrule "z}" "$(O!M(B") + ; a + (its-defrule "zs" "$(O!3(B") (its-defrule "zS" "$(O!4(B") + (its-defrule "zd" "$(O!5(B") (its-defrule "zD" "$(O!6(B") + (its-defrule "zf" "$(O!7(B") (its-defrule "zF" "$(O"*(B") + (its-defrule "zg" "$(O!>(B") (its-defrule "zG" "$(O!=(B") + (its-defrule "zh" "$(O"+(B") + (its-defrule "zj" "$(O"-(B") + (its-defrule "zk" "$(O",(B") + (its-defrule "zl" "$(O"*(B") + (its-defrule "z;" "$(O!+(B") (its-defrule "z:" "$(O!,(B") + (its-defrule "z\'" "$(O!F(B") (its-defrule "z\"" "$(O!H(B") + ; z + (its-defrule "zx" ":-") (its-defrule "zX" ":-)") + (its-defrule "zc" "$(O!;(B") (its-defrule "zC" "$(O!n(B") + (its-defrule "zv" "$(O"((B") (its-defrule "zV" "$(O!`(B") + (its-defrule "zb" "$(O!k(B") (its-defrule "zB" "$(O"+(B") + (its-defrule "zn" "$(O!l(B") (its-defrule "zN" "$(O"-(B") + (its-defrule "zm" "$(O!m(B") (its-defrule "zM" "$(O".(B") + (its-defrule "z," "$(O!E(B") (its-defrule "z<" "$(O!e(B") + (its-defrule "z." "$(O!D(B") (its-defrule "z>" "$(O!f(B") + (its-defrule "z/" "$(O!&(B") (its-defrule "z?" "$(O!g(B") + ) + +(define-its-state-machine-append its-aynu-map + (if its-aynu-enable-double-n + (its-defrule "nn" "$(O%s(B")) + + (its-defrule "-" its-aynu-horizontal) + (its-defrule "." its-aynu-period) + (its-defrule "," its-aynu-comma) + (its-defrule "[" its-aynu-open-bracket) + (its-defrule "]" its-aynu-close-bracket) + + (unless its-aynu-kick-conversion-on-space + (its-defrule " " " ")) + + (if its-aynu-enable-zenkaku-alphabet + (progn + (its-defrule "1" "$(O#1(B") (its-defrule "2" "$(O#2(B") + (its-defrule "3" "$(O#3(B") (its-defrule "4" "$(O#4(B") + (its-defrule "5" "$(O#5(B") (its-defrule "6" "$(O#6(B") + (its-defrule "7" "$(O#7(B") (its-defrule "8" "$(O#8(B") + (its-defrule "9" "$(O#9(B") (its-defrule "0" "$(O#0(B") + (its-defrule "!" "$(O!*(B") (its-defrule "@" "$(O!w(B") + (its-defrule "#" "$(O!t(B") (its-defrule "$" "$(O!p(B") + (its-defrule "%" "$(O!s(B") (its-defrule "^" "$(O!0(B") + (its-defrule "&" "$(O!u(B") (its-defrule "*" "$(O!v(B") + (its-defrule "(" "$(O!J(B") (its-defrule ")" "$(O!K(B") + (its-defrule "=" "$(O!a(B") (its-defrule "`" "$(O!.(B") + (its-defrule "\\" "$(O!o(B") (its-defrule "|" "$(O!C(B") + (its-defrule "_" "$(O!2(B") (its-defrule "+" "$(O!\(B") + (its-defrule "{" "$(O!P(B") (its-defrule "}" "$(O!Q(B") + (its-defrule ":" "$(O!'(B") (its-defrule ";" "$(O!((B") + (its-defrule "\"" "$(O!I(B") (its-defrule "'" "$(O!G(B") + (its-defrule "<" "$(O!c(B") (its-defrule ">" "$(O!d(B") + (its-defrule "?" "$(O!)(B") (its-defrule "/" "$(O!?(B")) + (progn + (its-defrule "1" "1") (its-defrule "2" "2") + (its-defrule "3" "3") (its-defrule "4" "4") + (its-defrule "5" "5") (its-defrule "6" "6") + (its-defrule "7" "7") (its-defrule "8" "8") + (its-defrule "9" "9") (its-defrule "0" "0") + (its-defrule "!" "!") (its-defrule "@" "@") + (its-defrule "#" "#") (its-defrule "$" "$") + (its-defrule "%" "%") (its-defrule "^" "^") + (its-defrule "&" "&") (its-defrule "*" "*") + (its-defrule "(" "(") (its-defrule ")" ")") + (its-defrule "=" "=") (its-defrule "`" "`") + (its-defrule "\\" "\\") (its-defrule "|" "|") + (its-defrule "_" "_") (its-defrule "+" "+") + (its-defrule "{" "{") (its-defrule "}" "}") + (its-defrule ":" ":") (its-defrule ";" ";") + (its-defrule "\"" "\"") (its-defrule "'" "'") + (its-defrule "<" "<") (its-defrule ">" ">") + (its-defrule "?" "?") (its-defrule "/" "/")))) + +(provide 'its/aynu) + +;;; its/aynu.el ends here Index: its/greek.el =================================================================== RCS file: its/greek.el diff -N its/greek.el --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ its/greek.el 20 Aug 2001 10:09:07 -0000 1.1 @@ -0,0 +1,251 @@ +(eval-when-compile + (require 'its) + (require 'cl)) + +(eval-when (compile) + (defconst its-compaction-enable t)) + +(defgroup greek nil + "Greek Input Method" + :group 'its) + +(define-its-state-machine its-greek-jis-map + "greek-jis" "$B&8(B" Greek + "$B&%&K&K&G&M&I&J&A(B: Greek keyboard layout (JIS X0208.1983) + +The layout is same as greek, but uses JIS characters. +Sorry, accents and terminal sigma are not supported in JIS." + + (its-defrule "1" "$B#1(B") + (its-defrule "2" "$B#2(B") + (its-defrule "3" "$B#3(B") + (its-defrule "4" "$B#4(B") + (its-defrule "5" "$B#5(B") + (its-defrule "6" "$B#6(B") + (its-defrule "7" "$B#7(B") + (its-defrule "8" "$B#8(B") + (its-defrule "9" "$B#9(B") + (its-defrule "0" "$B#0(B") + (its-defrule "-" "$B!](B") + (its-defrule "=" "$B!a(B") + (its-defrule "`" "$B!F(B") + (its-defrule "q" "$B!&(B") + (its-defrule "w" "$B&R(B") + (its-defrule "e" "$B&E(B") + (its-defrule "r" "$B&Q(B") + (its-defrule "t" "$B&S(B") + (its-defrule "y" "$B&T(B") + (its-defrule "u" "$B&H(B") + (its-defrule "i" "$B&I(B") + (its-defrule "o" "$B&O(B") + (its-defrule "p" "$B&P(B") + (its-defrule "[" "$B!N(B") + (its-defrule "]" "$B!O(B") + (its-defrule "a" "$B&A(B") + (its-defrule "s" "$B&R(B") + (its-defrule "d" "$B&D(B") + (its-defrule "f" "$B&U(B") + (its-defrule "g" "$B&C(B") + (its-defrule "h" "$B&G(B") + (its-defrule "j" "$B&N(B") + (its-defrule "k" "$B&J(B") + (its-defrule "l" "$B&K(B") + (its-defrule ";" "$B!G(B") + (its-defrule "'" "$B!G(B") + (its-defrule "\\" "$B!@(B") + (its-defrule "z" "$B&F(B") + (its-defrule "x" "$B&V(B") + (its-defrule "c" "$B&W(B") + (its-defrule "v" "$B&X(B") + (its-defrule "b" "$B&B(B") + (its-defrule "n" "$B&M(B") + (its-defrule "m" "$B&L(B") + (its-defrule "," ", ") + (its-defrule "." ". ") + (its-defrule "/" "$B!?(B") + + (its-defrule "!" "$B!*(B") + (its-defrule "@" "$B!w(B") + (its-defrule "#" "$B!t(B") + (its-defrule "$" "$B!t(B") + (its-defrule "%" "$B!s(B") + (its-defrule "^" "$B!0(B") + (its-defrule "&" "$B!u(B") + (its-defrule "*" "$B!v(B") + (its-defrule "(" "$B!J(B") + (its-defrule ")" "$B!K(B") + (its-defrule "_" "$B!2(B") + (its-defrule "+" "$B!\(B") + (its-defrule "~" "$B!1(B") + (its-defrule "Q" "$B!](B") + (its-defrule "W" "$B&2(B") + (its-defrule "E" "$B&%(B") + (its-defrule "R" "$B&1(B") + (its-defrule "T" "$B&3(B") + (its-defrule "Y" "$B&4(B") + (its-defrule "U" "$B&((B") + (its-defrule "I" "$B&)(B") + (its-defrule "O" "$B&/(B") + (its-defrule "P" "$B&1(B") + (its-defrule "{" "$B!P(B") + (its-defrule "}" "$B!Q(B") + (its-defrule "A" "$B&!(B") + (its-defrule "S" "$B&2(B") + (its-defrule "D" "$B&$(B") + (its-defrule "F" "$B&5(B") + (its-defrule "G" "$B&#(B") + (its-defrule "H" "$B&'(B") + (its-defrule "J" "$B&.(B") + (its-defrule "K" "$B&*(B") + (its-defrule "L" "$B&+(B") + (its-defrule ":" "$B!I(B") + (its-defrule "\"" "$B!I(B") + (its-defrule "|" "$B!C(B") + (its-defrule "Z" "$B&&(B") + (its-defrule "X" "$B&6(B") + (its-defrule "C" "$B&7(B") + (its-defrule "V" "$B&8(B") + (its-defrule "B" "$B&"(B") + (its-defrule "N" "$B&-(B") + (its-defrule "M" "$B&,(B") + (its-defrule "<" "$B!((B") + (its-defrule ">" "$B!'(B") + (its-defrule "?" "$B!)(B")) + +(define-its-state-machine its-greek-map + "greek" ",FY(B" Greek + ",FEkkgmij\(B: Greek keyboard layout (ISO 8859-7) +-------------- + +In the right of ,Fk(B key is a combination key, where + ,F4(B acute + ,F((B diaresis + +e.g. + ,Fa(B + ,F4(B -> ,F\(B + ,Fi(B + ,F((B -> ,Fz(B + ,Fi(B + ,F((B + ,F4(B -> ,F@(B" + +;; 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) -_ =+ `~ +;; ,F7/(B ,FrS(B ,FeE(B ,FqQ(B ,FtT(B ,FuU(B ,FhH(B ,FiI(B ,FoO(B ,FpP(B [{ ]} +;; ,FaA(B ,FsS(B ,FdD(B ,FvV(B ,FcC(B ,FgG(B ,FnN(B ,FjJ(B ,FkK(B ,F4((B '" \| +;; ,FfF(B ,FwW(B ,FxX(B ,FyY(B ,FbB(B ,FmM(B ,FlL(B ,; .: /? + + (its-defrule "1" "1") + (its-defrule "2" "2") + (its-defrule "3" "3") + (its-defrule "4" "4") + (its-defrule "5" "5") + (its-defrule "6" "6") + (its-defrule "7" "7") + (its-defrule "8" "8") + (its-defrule "9" "9") + (its-defrule "0" "0") + (its-defrule "-" "-") + (its-defrule "=" "=") + (its-defrule "`" "`") + (its-defrule "q" ",F7(B") + (its-defrule "w" ",Fr(B") + (its-defrule "e" ",Fe(B") + (its-defrule "r" ",Fq(B") + (its-defrule "t" ",Ft(B") + (its-defrule "y" ",Fu(B") + (its-defrule "u" ",Fh(B") + (its-defrule "i" ",Fi(B") + (its-defrule "o" ",Fo(B") + (its-defrule "p" ",Fp(B") + (its-defrule "[" "[") + (its-defrule "]" "]") + (its-defrule "a" ",Fa(B") + (its-defrule "s" ",Fs(B") + (its-defrule "d" ",Fd(B") + (its-defrule "f" ",Fv(B") + (its-defrule "g" ",Fc(B") + (its-defrule "h" ",Fg(B") + (its-defrule "j" ",Fn(B") + (its-defrule "k" ",Fj(B") + (its-defrule "l" ",Fk(B") + (its-defrule ";" ",F4(B") + (its-defrule "'" "'") + (its-defrule "\\" "\\") + (its-defrule "z" ",Ff(B") + (its-defrule "x" ",Fw(B") + (its-defrule "c" ",Fx(B") + (its-defrule "v" ",Fy(B") + (its-defrule "b" ",Fb(B") + (its-defrule "n" ",Fm(B") + (its-defrule "m" ",Fl(B") + (its-defrule "," ",") + (its-defrule "." ".") + (its-defrule "/" "/") + + (its-defrule "!" "!") + (its-defrule "@" "@") + (its-defrule "#" "#") + (its-defrule "$" "$") + (its-defrule "%" "%") + (its-defrule "^" "^") + (its-defrule "&" "&") + (its-defrule "*" "*") + (its-defrule "(" "(") + (its-defrule ")" ")") + (its-defrule "_" "_") + (its-defrule "+" "+") + (its-defrule "~" "~") + (its-defrule "Q" ",F/(B") + (its-defrule "W" ",FS(B") + (its-defrule "E" ",FE(B") + (its-defrule "R" ",FQ(B") + (its-defrule "T" ",FT(B") + (its-defrule "Y" ",FU(B") + (its-defrule "U" ",FH(B") + (its-defrule "I" ",FI(B") + (its-defrule "O" ",FO(B") + (its-defrule "P" ",FP(B") + (its-defrule "{" "{") + (its-defrule "}" "}") + (its-defrule "A" ",FA(B") + (its-defrule "S" ",FS(B") + (its-defrule "D" ",FD(B") + (its-defrule "F" ",FV(B") + (its-defrule "G" ",FC(B") + (its-defrule "H" ",FG(B") + (its-defrule "J" ",FN(B") + (its-defrule "K" ",FJ(B") + (its-defrule "L" ",FK(B") + (its-defrule ":" ",F((B") + (its-defrule "\"" "\"") + (its-defrule "|" "|") + (its-defrule "Z" ",FF(B") + (its-defrule "X" ",FW(B") + (its-defrule "C" ",FX(B") + (its-defrule "V" ",FY(B") + (its-defrule "B" ",FB(B") + (its-defrule "N" ",FM(B") + (its-defrule "M" ",FL(B") + (its-defrule "<" ";") + (its-defrule ">" ":") + (its-defrule "?" "?") + + (its-defrule "a;" ",F\(B") + (its-defrule "e;" ",F](B") + (its-defrule "h;" ",F^(B") + (its-defrule "i;" ",F_(B") + (its-defrule "o;" ",F|(B") + (its-defrule "y;" ",F}(B") + (its-defrule "v;" ",F~(B") + (its-defrule "A;" ",F6(B") + (its-defrule "E;" ",F8(B") + (its-defrule "H;" ",F9(B") + (its-defrule "I;" ",F:(B") + (its-defrule "O;" ",F<(B") + (its-defrule "Y;" ",F>(B") + (its-defrule "V;" ",F?(B") + (its-defrule "i:" ",Fz(B") + (its-defrule "y:" ",F{(B") + (its-defrule "I:" ",FZ(B") + (its-defrule "Y:" ",F[(B") + (its-defrule "i:;" ",F@(B") + (its-defrule "y:;" ",F`(B")) + +(provide 'its/greek) Index: its/hankata.el =================================================================== RCS file: /cvs/tamago/tamago/its/hankata.el,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -d -u -p -r1.1.1.2 -r1.2 --- its/hankata.el 27 Jan 2001 18:45:56 -0000 1.1.1.2 +++ its/hankata.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -24,10 +24,7 @@ ;; Boston, MA 02111-1307, USA. ;;; Commentary: -;; -;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro) -;; This file is based on the rules of its/kata.el in Mule-2.3 distribution. -;; + ;;; Code: Index: its/jeonkak.el =================================================================== RCS file: /cvs/tamago/tamago/its/jeonkak.el,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- its/jeonkak.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ its/jeonkak.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -26,10 +26,7 @@ ;; Boston, MA 02111-1307, USA. ;;; Commentary: -;; -;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro) -;; This file is based on the rules of its/hira.el in Mule-2.3 distribution. -;; + ;;; Code: Index: its/pinyin.el =================================================================== RCS file: /cvs/tamago/tamago/its/pinyin.el,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -d -u -p -r1.1.1.1 -r1.3 --- its/pinyin.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ its/pinyin.el 22 Jul 2002 13:18:56 -0000 1.3 @@ -4,7 +4,7 @@ ;; Author: KATAYAMA Yoshio -;; Maintainer: TOMURA Satoru  +;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method @@ -237,7 +237,7 @@ (dolist (ascii '(("0" . "$A#0(B") ("1" . "$A#1(B") ("2" . "$A#2(B") ("3" . "$A#3(B") ("4" . "$A#4(B") ("5" . "$A#5(B") ("6" . "$A#6(B") ("7" . "$A#7(B") - ("8" . "$A#8(B") ("9" . "$A#9(B") + ("8" . "$A#8(B") ("9" . "$A#9(B") (" " . "$A!!(B") ("!" . "$A#!(B") ("@" . "$A#@(B") ("#" . "$A##(B") ("$" . "$A!g(B") ("%" . "$A#%(B") ("^" . "$A#^(B") ("&" . "$A#&(B") ("*" . "$A#*(B") ("(" . "$A#((B") (")" . "$A#)(B") @@ -311,7 +311,7 @@ (dolist (ascii '(("0" . "$(G$!(B") ("1" . "$(G$"(B") ("2" . "$(G$#(B") ("3" . "$(G$$(B") ("4" . "$(G$%(B") ("5" . "$(G$&(B") ("6" . "$(G$'(B") ("7" . "$(G$((B") - ("8" . "$(G$)(B") ("9" . "$(G$*(B") + ("8" . "$(G$)(B") ("9" . "$(G$*(B") (" " . "$(G!!(B") ("!" . "$(G!*(B") ("@" . "$(G"i(B") ("#" . "$(G!l(B") ("$" . "$(G"c(B") ("%" . "$(G"h(B") ("^" . "$(G!T(B") ("&" . "$(G!m(B") ("*" . "$(G!n(B") ("(" . "$(G!>(B") (")" . "$(G!?(B") Index: its/quanjiao.el =================================================================== RCS file: /cvs/tamago/tamago/its/quanjiao.el,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- its/quanjiao.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ its/quanjiao.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -26,10 +26,7 @@ ;; Boston, MA 02111-1307, USA. ;;; Commentary: -;; -;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro) -;; This file is based on the rules of its/hira.el in Mule-2.3 distribution. -;; + ;;; Code: Index: its/thai.el =================================================================== RCS file: /cvs/tamago/tamago/its/thai.el,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -d -u -p -r1.1.1.1 -r1.3 Index: its/zenkaku.el =================================================================== RCS file: /cvs/tamago/tamago/its/zenkaku.el,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- its/zenkaku.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ its/zenkaku.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -26,10 +26,7 @@ ;; Boston, MA 02111-1307, USA. ;;; Commentary: -;; -;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro) -;; This file is based on the rules of its/hira.el in Mule-2.3 distribution. -;; + ;;; Code: Index: its/zhuyin.el =================================================================== RCS file: /cvs/tamago/tamago/its/zhuyin.el,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -d -u -p -r1.1.1.1 -r1.2 --- its/zhuyin.el 27 Jan 2001 18:45:24 -0000 1.1.1.1 +++ its/zhuyin.el 27 Jan 2001 18:53:13 -0000 1.2 @@ -142,9 +142,9 @@ (mapcar (lambda (s) (its-defoutput (car s) (nth 1 s))) (list B P M F D T N L G K H J Q X)) - (its-defrule (concat (car N) 2) (concat (nth 1 N) "(0B(B")) - (its-defrule (concat (car N) 3) (concat (nth 1 N) "(0C(B")) - (its-defrule (concat (car N) 4) (concat (nth 1 N) "(0D(B"))))) + (its-defrule (concat (car N) "2") (concat (nth 1 N) "(0B(B")) + (its-defrule (concat (car N) "3") (concat (nth 1 N) "(0C(B")) + (its-defrule (concat (car N) "4") (concat (nth 1 N) "(0D(B"))))) (define-its-state-machine its-zhuyin-cn-map "zhuyin-cn" "$AW"(BG" Chinese-GB