pkgsrc/editors/tamago/patches/patch-aa

12786 lines
462 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$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 <kawabata@exa.onlab.nt
MORIOKA Tomohiko <tomo@etl.go.jp>
Use of custom.
-NIIBE Yutaka <gniibe@chroot.org>
+NIIBE Yutaka <gniibe@m17n.org>
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 <kate@pfu.co.jp>
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 <tomura@etl.go.jp>
-
- * Version 4.0.6 released
-
-2000-01-17 TOMURA Satoru <tomura@etl.go.jp>
-
- * README.ja.text: mentiond about doc/lc99.text
-
-2000-01-17 KATAYAMA Yoshio <kate@pfu.co.jp>
-
- * 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 <ksakai@kso.netwk.ntt-at.co.jp>
-
- * its.el (its-hiragana, its-katakana): re-added.
-
-2000-01-17 SANETO Takanori <sanewo@ba2.so-net.ne.jp>
-
- * 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 <tomura@etl.go.jp>
-
- * 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 <tomura@etl.go.jp>
- * 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 <tomura@etl.go.jp>
-
- * Version 4.0.5 released.
-
-2000-01-13 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * egg/sj3.el (sj3-end-conversion): Restrain from overrunning.
-
-2000-01-13 Katsumi Yamaoka <yamaoka@jpl.org>
- * 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 <gniibe@m17n.org>
-2000-01-13 SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp>
+ 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 <kate@pfu.co.jp>
+2002-08-26 ISHIKAWA Mutsumi <ishikawa@linux.or.jp>,
+ Takahiro Kambe <taca@sky.yamashina.kyoto.jp>,
+ Katsumi Yamaoka <yamaoka@jpl.org>
- * its.el(its-hiragana, its-katakana): does not work. so deleted.
-
-2000-01-12 NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp>
+ * 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 <gniibe@m17n.org>
-2000-01-12 TOMURA Satoru <tomura@etl.go.jp>
-
- * Version 4.0.4 released.
-
-2000-01-12 TOMURA Satoru <tomura@etl.go.jp>
+ * AUTHORS (NIIBE Yutaka): Updated.
+ * egg-mlh.el: Update e-mail address.
- * REAMDE: removed.
-
- * README.ja.txt: created.
-
-2000-01-12 SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp>
+ * 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 <tomura@etl.go.jp>
+2002-08-23 Katsumi Yamaoka <yamaoka@jpl.org>, NIIBE Yutaka <gniibe@m17n.org>
- * Version 4.0.3 released.
-
-2000-01-12 Satoru Tomura <tomura@etl.go.jp>
+ * egg-util.el: Removed.
- * install-sh: copied from automake distribution
+2002-08-08 NIIBE Yutaka <gniibe@m17n.org>
- * 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 <tomura@etl.go.jp>
+2002-08-02 SAITO Takuya <reed@lily.freemail.ne.jp>
- * 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 <reed@lily.freemail.ne.jp>
-2000-01-11 Katsumi Yamaoka <yamaoka@jpl.org>
+ * egg.el (egg-activate-keymap-after-command): set-buffer to
+ killed buffer.
- * egg/sj3.el : (require 'egg) added.
+2002-05-08 Katsumi Yamaoka <yamaoka@jpl.org> (cf. [mule-ja:08306])
-2000-01-11 SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp>
-
- * its.el (its-hiragana, its-katakana): New functions
-
-2000-01-07 Tomura Satoru <tomura@etl.go.jp>
-
- * COPYING: The file is added.
-
- * ChangeLog.1: The original ChangeLog is renamed as.
-
- * ChangeLog: Created.
-
-2000-01-07 Tomura Satoru <tomura@etl.go.jp>
-
- * Version 4.0.2 released.
-
-2000-01-06 Tomura Satoru <tomura@etl.go.jp>
-
- * Version 4.0.1 released.
-
-2000-01-05 Tomura Satoru <tomura@etl.go.jp>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>
-
- * egg-cnv.el (egg-abort-conversion): Bug fix.
-
-1998-06-27 NIIBE Yutaka <gniibe@akebono>
-
- * egg/wnn.el (wnn-dictionary-specification-list): Don' specify
- for gerodic/g-jinmei.
- Suggested by SAKAI Kiyotaka <ksakai@netwk.ntt-at.co.jp>.
-
-1998-06-26 KATAYAMA Yoshio <kate@pfu.co.jp>
-
- * its.el (its-cancel-input): Bug fix.
-
-1998-06-26 SAKAI Kiyotaka <ksakai@netwk.ntt-at.co.jp>
-
- * 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 <kate@pfu.co.jp>
-
- * 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 <gniibe@chroot.org>
-
- * Makefile (install): Don't touch .emacs and leim-list.el
- directly. User should do it by her hand.
- Reported by SAKAI Kiyotaka <ksakai@netwk.ntt-at.co.jp>
-
-1998-06-25 NIIBE Yutaka <gniibe@chroot.org>
-
- * egg/canna.el (canna-dictionary-specification): "user" instead of
- ("user"). Should chnage canna-filename later.
- Reported by Akio Morita <amorita@bird.scphys.kyoto-u.ac.jp>.
-
-1998-04-02 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>
-
- 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- 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 <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>
-
- * its.el (its-translate-region): Make it command.
- (its-translate-region-internal): Make it function.
-
-1998-03-04 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>
-
- *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 <kate@pfu.co.jp>
-
- * 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 <kate@pfu.co.jp>
-
- * 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 <kate@pfu.co.jp>
-
- * 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 <kate@pfu.co.jp>
-
- * 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 <kate@pfu.co.jp>
-
- * 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 <gniibe@akebono>
-
- * Makefile (SRCS), Egg.prj: Remove euc-china.el.
- * egg-com.el: Include egg-china.el.
- * egg-china.el: Removed.
-
-1998-02-18 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>
-
- * 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.
- (<env>): Add <server-type>, <dic-set>, and <rev-flag>.
- (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.
- <map>: Change the structure. Add <language>.
- (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 <morioka@jaist.ac.jp>
-
- * 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 <morioka@jaist.ac.jp>
-
- * leim-list-egg.el (japanese-egg-wnn): New input method.
- (japanese-egg-sj3): New input method.
-
-1997-11-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * leim-list-egg.el: Rename `egg-ja' -> `japanese-egg'.
-
-1997-11-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * 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 <morioka@jaist.ac.jp>
-
- * 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 <kate@pfu.co.jp>
-
- * euc-cn.el: New file. Original name was yincoding.el.
- Adopted by NIIBE Yutaka <gniibe@chroot.org>.
-
-1997-11-03 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <handa@etl.go.jp>.
-
- 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.
-
- <env>: Remove the member <in-use>.
- (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 <kate@pfu.co.jp>. 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * Makefile (install): Install to SITEDIR.
-
-1997-09-26 NIIBE Yutaka <gniibe@chroot.org>
-
- * its/hira.el (its-hira-enable-zenkaku-alphabet): New variable.
- (its-hira-map): Use it.
-
-1997-09-19 NIIBE Yutaka <gniibe@chroot.org>
-
- Arrange for LEIM. Use tamago/ subdirectory.
- * tamago/: Rename from tamago-lib.
-
-1997-09-18 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>.
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <himi@bird.scphys.kyoto-u.ac.jp>.
-
-1997-09-03 Hiroshi Ogata <hiroshi@nereid.rim.or.jp>
-
- * mlh.el (mlh-zenkaku): Use new API of Emacs-20,
- japanese-zenkaku-region.
-
-1997-09-02 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- 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 <gniibe@chroot.org>
-
- 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 <kate@pfu.co.jp>
-
- * its-erpin.el: New file.
- * its-pinyin.el: New file.
- * its-zhuyin.el: New file.
-
-1997-08-28 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * egg.el (minor-mode-alist): Don't show " EGG" in mode line.
- (egg-mode): Use input method indicator instead.
-
-1997-07-20 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <kate@pfu.co.jp>
-
- * its.el (its-state-machine-keyseq, its-state-machine): Handle
- end-of-input correctly when going backward.
-
-1997-07-16 NIIBE Yutaka <gniibe@chroot.org>
-
- * wnn.el (wnn-create-directory): Bug fix. Really make directory.
-
-1997-07-15 NIIBE Yutaka <gniibe@chroot.org>
-
- * its-hangul.el (its-define-hangul): Use its-defrule-otherwise.
-
-1997-07-15 KATAYAMA Yoshio <kate@pfu.co.jp>
-
- * its-hangul.el: Updated.
-
-1997-06-19 NIIBE Yutaka <gniibe@akebono.etl.go.jp>
-
- * its-hira.el: its-hira-hankaku-escape --> its-hankaku-escape.
- its-hira-zenkaku-escape --> its-zenkaku-escape.
-
-1997-06-14 NIIBE Yutaka <gniibe@chroot.org>
-
- * its.el: Change the data structure of <expr-output-back-list> 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 <gniibe@chroot.org>
-
- * 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 <gniibe@akebono.etl.go.jp>
-
- * its-hira.el ("n'"): Added.
-
-1997-06-12 NIIBE Yutaka <gniibe@akebono.etl.go.jp>
-
- 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 <kate@pfu.co.jp>
-
- * its-hangul.el: New file.
-
-1997-06-10 NIIBE Yutaka <gniibe@chroot.org>
-
- 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * bushu.el: Renamed from busyu.el.
- (bushu-break-string, etc): Renamed from busyu*.
-
- * menu.el: Completely rewritten.
-
-1997-06-03 NIIBE Yutaka <gniibe@akebono.etl.go.jp>
-
- * its.el (its-reset-start-state): Bug fix. Delete a CDR.
-
- Implement "class of key" transition.
- Change the structure of <state>, the last member is
- <key-state-table/terminal> instead of <key-state-alist/terminal>.
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <handa@etl.go.jp>
-
- * wnnrpc.el (ccl-decode-fixed-euc-jp): Tune it up.
-
-1997-05-29 Hisashi Miyashita <himi@bird.scphys.kyoto-u.ac.jp>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@akebono.etl.go.jp>
-
- 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 <gniibe@chroot.org>
-
- * 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 <gniibe@akebono.etl.go.jp>
-
- * 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 <handa@etl.go.jp>.
-
-1997-05-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * convert.el (egg-next-conversion): Bug fix. It's max+ instead of n.
-
-1997-05-05 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * wnnrpc.el: New file which implements Remote Procedure Calls of WNN.
-
-1997-04-16 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * its.el: Enhance meaning of ITS state machine. Now, <key>
- 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 <gniibe@chroot.org>
-
- * convert.el (egg-next-conversion): -1 goes to end of bunsetsu.
-
-1997-03-25 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * its/hira.el ("n"): Add "z" and "?" for prefetch char of "n".
-
- Implement conversion mode.
- * convert.el: New file.
-
-1997-03-23 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- 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 <gniibe@chroot.org>
-
- 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 <gniibe@chroot.org>
-
- 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 <map> 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 <map>. <start-state> is normal <state>.
- (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 <input-buffer>, 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 <gniibe@chroot.org>
-
- * its.el: Change the structure of DSYL. Same as <state>.
- (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 <SYL>.
-
- Delete the structure of <input-buffer>.
- (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 <gniibe@akebono.etl.go.jp>
-
- 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 <gniibe@chroot.org>
-
- * 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 (<input-buffer>): Change the order of <SYL> list.
- (car sylp) is last entry of the list.
- (its-input-buffer): Deleted. It's now a member of text
- properties.
- (<map>): Change the structure. Start state should have "" for keyseq.
- (its-get-start-state): Follow chage of the <map> 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * its.el (its-input-input-buffer): Implement the case of DSYL.
-
-1997-03-14 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <gniibe@akebono.etl.go.jp>
-
- * 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 <map> 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 <gniibe@akebono.etl.go.jp>
-
- * 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 <gniibe@chroot.org>
-
- * wnnfns.c: cosmetic changes (indentation, commenting-out-style,
- and compare to Qnil, etc).
- Get rid of "register" qualifier.
-
-1997-03-05 NIIBE Yutaka <gniibe@chroot.org>
-
- * 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 <state>. 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.
-
- <topmap>: Changed the structure. Introduce <incrementalp>, 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 <gniibe@chroot.org>
-
- * 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 <gniibe@akebono.etl.go.jp>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@chroot.org>
-
- * 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 <gniibe@akebono.etl.go.jp>
-
- * 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 <gniibe@akebono.etl.go.jp>
-
- * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>
+
+ * egg-cnv.el (egg-abort-conversion): Bug fix.
+
+1998-06-27 NIIBE Yutaka <gniibe@akebono>
+
+ * egg/wnn.el (wnn-dictionary-specification-list): Don' specify
+ for gerodic/g-jinmei.
+ Suggested by SAKAI Kiyotaka <ksakai@netwk.ntt-at.co.jp>.
+
+1998-06-26 KATAYAMA Yoshio <kate@pfu.co.jp>
+
+ * its.el (its-cancel-input): Bug fix.
+
+1998-06-26 SAKAI Kiyotaka <ksakai@netwk.ntt-at.co.jp>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <gniibe@chroot.org>
+
+ * Makefile (install): Don't touch .emacs and leim-list.el
+ directly. User should do it by her hand.
+ Reported by SAKAI Kiyotaka <ksakai@netwk.ntt-at.co.jp>
+
+1998-06-25 NIIBE Yutaka <gniibe@chroot.org>
+
+ * egg/canna.el (canna-dictionary-specification): "user" instead of
+ ("user"). Should chnage canna-filename later.
+ Reported by Akio Morita <amorita@bird.scphys.kyoto-u.ac.jp>.
+
+1998-04-02 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>
+
+ 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ 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 <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>
+
+ * its.el (its-translate-region): Make it command.
+ (its-translate-region-internal): Make it function.
+
+1998-03-04 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>
+
+ *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 <kate@pfu.co.jp>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <gniibe@akebono>
+
+ * Makefile (SRCS), Egg.prj: Remove euc-china.el.
+ * egg-com.el: Include egg-china.el.
+ * egg-china.el: Removed.
+
+1998-02-18 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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.
+ (<env>): Add <server-type>, <dic-set>, and <rev-flag>.
+ (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.
+ <map>: Change the structure. Add <language>.
+ (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 <morioka@jaist.ac.jp>
+
+ * 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 <morioka@jaist.ac.jp>
+
+ * leim-list-egg.el (japanese-egg-wnn): New input method.
+ (japanese-egg-sj3): New input method.
+
+1997-11-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * leim-list-egg.el: Rename `egg-ja' -> `japanese-egg'.
+
+1997-11-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * 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 <morioka@jaist.ac.jp>
+
+ * 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 <kate@pfu.co.jp>
+
+ * euc-cn.el: New file. Original name was yincoding.el.
+ Adopted by NIIBE Yutaka <gniibe@chroot.org>.
+
+1997-11-03 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <handa@etl.go.jp>.
+
+ 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.
+
+ <env>: Remove the member <in-use>.
+ (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 <kate@pfu.co.jp>. 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * Makefile (install): Install to SITEDIR.
+
+1997-09-26 NIIBE Yutaka <gniibe@chroot.org>
+
+ * its/hira.el (its-hira-enable-zenkaku-alphabet): New variable.
+ (its-hira-map): Use it.
+
+1997-09-19 NIIBE Yutaka <gniibe@chroot.org>
+
+ Arrange for LEIM. Use tamago/ subdirectory.
+ * tamago/: Rename from tamago-lib.
+
+1997-09-18 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>.
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <himi@bird.scphys.kyoto-u.ac.jp>.
+
+1997-09-03 Hiroshi Ogata <hiroshi@nereid.rim.or.jp>
+
+ * mlh.el (mlh-zenkaku): Use new API of Emacs-20,
+ japanese-zenkaku-region.
+
+1997-09-02 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ 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 <gniibe@chroot.org>
+
+ 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 <kate@pfu.co.jp>
+
+ * its-erpin.el: New file.
+ * its-pinyin.el: New file.
+ * its-zhuyin.el: New file.
+
+1997-08-28 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * egg.el (minor-mode-alist): Don't show " EGG" in mode line.
+ (egg-mode): Use input method indicator instead.
+
+1997-07-20 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <kate@pfu.co.jp>
+
+ * its.el (its-state-machine-keyseq, its-state-machine): Handle
+ end-of-input correctly when going backward.
+
+1997-07-16 NIIBE Yutaka <gniibe@chroot.org>
+
+ * wnn.el (wnn-create-directory): Bug fix. Really make directory.
+
+1997-07-15 NIIBE Yutaka <gniibe@chroot.org>
+
+ * its-hangul.el (its-define-hangul): Use its-defrule-otherwise.
+
+1997-07-15 KATAYAMA Yoshio <kate@pfu.co.jp>
+
+ * its-hangul.el: Updated.
+
+1997-06-19 NIIBE Yutaka <gniibe@akebono.etl.go.jp>
+
+ * its-hira.el: its-hira-hankaku-escape --> its-hankaku-escape.
+ its-hira-zenkaku-escape --> its-zenkaku-escape.
+
+1997-06-14 NIIBE Yutaka <gniibe@chroot.org>
+
+ * its.el: Change the data structure of <expr-output-back-list> 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@akebono.etl.go.jp>
+
+ * its-hira.el ("n'"): Added.
+
+1997-06-12 NIIBE Yutaka <gniibe@akebono.etl.go.jp>
+
+ 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 <kate@pfu.co.jp>
+
+ * its-hangul.el: New file.
+
+1997-06-10 NIIBE Yutaka <gniibe@chroot.org>
+
+ 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * bushu.el: Renamed from busyu.el.
+ (bushu-break-string, etc): Renamed from busyu*.
+
+ * menu.el: Completely rewritten.
+
+1997-06-03 NIIBE Yutaka <gniibe@akebono.etl.go.jp>
+
+ * its.el (its-reset-start-state): Bug fix. Delete a CDR.
+
+ Implement "class of key" transition.
+ Change the structure of <state>, the last member is
+ <key-state-table/terminal> instead of <key-state-alist/terminal>.
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <handa@etl.go.jp>
+
+ * wnnrpc.el (ccl-decode-fixed-euc-jp): Tune it up.
+
+1997-05-29 Hisashi Miyashita <himi@bird.scphys.kyoto-u.ac.jp>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@akebono.etl.go.jp>
+
+ 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@akebono.etl.go.jp>
+
+ * 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 <handa@etl.go.jp>.
+
+1997-05-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * convert.el (egg-next-conversion): Bug fix. It's max+ instead of n.
+
+1997-05-05 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * wnnrpc.el: New file which implements Remote Procedure Calls of WNN.
+
+1997-04-16 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * its.el: Enhance meaning of ITS state machine. Now, <key>
+ 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 <gniibe@chroot.org>
+
+ * convert.el (egg-next-conversion): -1 goes to end of bunsetsu.
+
+1997-03-25 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * its/hira.el ("n"): Add "z" and "?" for prefetch char of "n".
+
+ Implement conversion mode.
+ * convert.el: New file.
+
+1997-03-23 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ 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 <gniibe@chroot.org>
+
+ 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 <gniibe@chroot.org>
+
+ 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 <map> 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 <map>. <start-state> is normal <state>.
+ (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 <input-buffer>, 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 <gniibe@chroot.org>
+
+ * its.el: Change the structure of DSYL. Same as <state>.
+ (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 <SYL>.
+
+ Delete the structure of <input-buffer>.
+ (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 <gniibe@akebono.etl.go.jp>
+
+ 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 <gniibe@chroot.org>
+
+ * 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 (<input-buffer>): Change the order of <SYL> list.
+ (car sylp) is last entry of the list.
+ (its-input-buffer): Deleted. It's now a member of text
+ properties.
+ (<map>): Change the structure. Start state should have "" for keyseq.
+ (its-get-start-state): Follow chage of the <map> 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * its.el (its-input-input-buffer): Implement the case of DSYL.
+
+1997-03-14 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <gniibe@akebono.etl.go.jp>
+
+ * 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 <map> 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 <gniibe@akebono.etl.go.jp>
+
+ * 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 <gniibe@chroot.org>
+
+ * wnnfns.c: cosmetic changes (indentation, commenting-out-style,
+ and compare to Qnil, etc).
+ Get rid of "register" qualifier.
+
+1997-03-05 NIIBE Yutaka <gniibe@chroot.org>
+
+ * 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 <state>. 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.
+
+ <topmap>: Changed the structure. Introduce <incrementalp>, 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@akebono.etl.go.jp>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@chroot.org>
+
+ * 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 <gniibe@akebono.etl.go.jp>
+
+ * 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 <gniibe@akebono.etl.go.jp>
+
+ * 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 <kate@pfu.fujitsu.com>
+
+ * egg-x0213.el: New file.
+
+2001-11-10 Kinji Itoh <kinji-i@gray.plala.or.jp>
+ (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 <kinji-i@gray.plala.or.jp> (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 <yoichi@eken.phys.nagoya-u.ac.jp>
+ (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 <kate@pfu.fujitsu.com> (cf. [tamago:00516])
+
+ * its/greek.el: New file.
+
+2001-07-24 KATAYAMA Yoshio <kate@pfu.fujitsu.com> (cf. [tamago:00504])
+
+ * eggrc (wnn7-jserver-setup): New function.
+
+2001-06-28 Yoshiki Hayashi <yoshiki@xemacs.org> (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 <kate@pfu.fujitsu.com> (cf. [tamago:00462])
+
+ * its/aynu.el: Require `cl' when compiling.
+
+2001-05-23 Katsumi Yamaoka <yamaoka@jpl.org> (cf. [tamago:00461])
+
+ * egg.el: Require `cl' only when compiling.
+ * its.el: Ditto.
+
+2001-05-22 KATAYAMA Yoshio <kate@pfu.fujitsu.com>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <kate@pfu.co.jp>
+
+ * 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 <sanewo@ba2.so-net.ne.jp>
+
+ * egg/sj3rpc.el (sj3rpc-tanbunsetsu-conversion): should use
+ let* instead of let.
+
+2000-01-20 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * 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 <tomura@etl.go.jp>
+
+ * Version 4.0.6 released
+
+2000-01-17 TOMURA Satoru <tomura@etl.go.jp>
+
+ * README.ja.text: mentiond about doc/lc99.text
+
+2000-01-17 KATAYAMA Yoshio <kate@pfu.co.jp>
+
+ * 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 <ksakai@kso.netwk.ntt-at.co.jp>
+
+ * its.el (its-hiragana, its-katakana): re-added.
+
+2000-01-17 SANETO Takanori <sanewo@ba2.so-net.ne.jp>
+
+ * 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 <tomura@etl.go.jp>
+
+ * 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 <tomura@etl.go.jp>
+ * 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 <tomura@etl.go.jp>
+
+ * Version 4.0.5 released.
+
+2000-01-13 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * egg/sj3.el (sj3-end-conversion): Restrain from overrunning.
+
+2000-01-13 Katsumi Yamaoka <yamaoka@jpl.org>
+ * 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 <ksakai@kso.netwk.ntt-at.co.jp>
+
+ * its.el: typo
+ * egg.el: typo
+
+2000-01-13 KATAYAMA Yoshio <kate@pfu.co.jp>
+
+ * its.el(its-hiragana, its-katakana): does not work. so deleted.
+
+2000-01-12 NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp>
+
+ * README.ja.txt: typo
+ * Makefile.in: (clean, distclean): modified.
+
+2000-01-12 TOMURA Satoru <tomura@etl.go.jp>
+
+ * Version 4.0.4 released.
+
+2000-01-12 TOMURA Satoru <tomura@etl.go.jp>
+
+ * REAMDE: removed.
+
+ * README.ja.txt: created.
+
+2000-01-12 SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp>
+
+ * Makefile.in: "clean" removes ${ELCS}.
+
+ * Makefile.in: "distclean" created.
+
+2000-01-12 Satoru Tomura <tomura@etl.go.jp>
+
+ * Version 4.0.3 released.
+
+2000-01-12 Satoru Tomura <tomura@etl.go.jp>
+
+ * install-sh: copied from automake distribution
+
+ * configure.in: created
+
+ * Makefile.in: created
+
+ * configure: generated by autoconf
+
+2000-01-11 Satoru Tomura <tomura@etl.go.jp>
+
+ * leim-list.el: (defgroup sj3) added.
+
+ * egg/sj3.el (sj3-hosname, sj3-server-port): defcusotm'ed
+
+2000-01-11 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * egg/sj3.el : (require 'egg) added.
+
+2000-01-11 SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp>
+
+ * its.el (its-hiragana, its-katakana): New functions
+
+2000-01-07 Tomura Satoru <tomura@etl.go.jp>
+
+ * COPYING: The file is added.
+
+ * ChangeLog.1: The original ChangeLog is renamed as.
+
+ * ChangeLog: Created.
+
+2000-01-07 Tomura Satoru <tomura@etl.go.jp>
+
+ * Version 4.0.2 released.
+
+2000-01-06 Tomura Satoru <tomura@etl.go.jp>
+
+ * Version 4.0.1 released.
+
+2000-01-05 Tomura Satoru <tomura@etl.go.jp>
+
+ * 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 <gniibe@chroot.org>
+;; Author: NIIBE Yutaka <gniibe@m17n.org>
;; KATAYAMA Yoshio <kate@pfu.co.jp> ; Multilingual Enhancement
-;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
+;; Maintainer: NIIBE Yutaka <gniibe@m17n.org>
;; 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 <tomura@etl.go.jp>
-
-
-;; Author: TOMURA Satoru <tomura@etl.go.jp>
-
-;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
-
-;; 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 <handa@etl.go.jp>
-;;; Moved from egg.el
-;;; 92.12.26 modified for Mule Ver.0.9.7 by T.Shingu <shingu@cpr.canon.co.jp>
-;;; 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<sF~NO(B" (bushyu-input)
- ;;; "$B2h?tF~NO(B" (kakusuu-input)
- ("$BBh0l?e=`(B" .
- (menu "$BBh0l?e=`(B:" , (make-char-list 'japanese-jisx0208 16 47)))
- ("$BBhFs?e=`(B" .
- (menu "$BBhFs?e=`(B:" , (make-char-list 'japanese-jisx0208 48 84)))
- ("$BJd=u4A;z(B" .
- (menu "$BJd=u4A;z(B:" , (make-char-list 'japanese-jisx0212 2 77)))))))))
-
-(defvar egg-sim-ipa-menu
- `(menu "IPA:" ,(make-char-list 'ipa)))
-
-(defvar egg-sisheng-menu
- `(menu "SiSheng characters" ,(make-char-list 'chinese-sisheng)))
-
-(defvar egg-sim-code-input-menu
- `(menu "Charset:"
- (("JISX0208" . japanese-jisx0208)
- ("JISX0212" . japanese-jisx0212)
- ("CNS11643-1" . chinese-cns11634-1)
- ("CNS11643-2" . chinese-cns11634-2)
- ("CNS11643-3" . chinese-cns11634-3)
- ("CNS11643-4" . chinese-cns11634-4)
- ("CNS11643-5" . chinese-cns11634-5)
- ("CNS11643-6" . chinese-cns11634-6)
- ("CNS11643-7" . chinese-cns11634-7)
- ("Big5-1" . chinese-big5-1)
- ("Big5-2" . chinese-big5-2)
- ("GB2312" . chinese-gb2312)
- ("KSC5601" . korean-ksc5601))))
-
-(defvar egg-simple-input-method-menu-item-list
- `(("Code Input" . ,egg-sim-code-input-menu)
- ("Arabic" . , egg-sim-arabic-menu)
- ("ASCII" . , egg-sim-ascii-menu)
- ("Chinese" . , egg-sim-chinese-menu)
- ("Cyrillic" . , egg-sim-cyrillic-menu)
- ("Greek" . , egg-sim-greek-menu)
- ("Hebrew" . , egg-sim-hebrew-menu)
- ("Japanese" . , egg-sim-japanese-menu)
- ("Korean" . , egg-sim-korean-menu)
- ("Latin" .
- (menu "Latin:"
- (("Latin-1" . , egg-sim-latin-1-menu)
- ("Latin-2" . , egg-sim-latin-2-menu)
- ("Latin-3" . , egg-sim-latin-3-menu)
- ("Latin-4" . , egg-sim-latin-4-menu)
- ("Latin-5" . , egg-sim-latin-5-menu))))
- ("Thai/Lao" .
- (menu "Thai/Lao:"
- (("Thai" . , egg-sim-thai-menu)
- ("Lao" . , egg-sim-lao-menu))))
- ("Vietnamese" . , egg-sim-vietnamese-menu)
- ("Phonetic code" .
- (menu "Phonetic code:"
- (("SISHENG" . , egg-sisheng-menu)
- ("IPA" . , egg-sim-ipa-menu))))
- ))
-
-(defvar egg-language-environment-alist
- `(("ASCII" . , egg-sim-ascii-menu)
- ("Chinese-BIG5" . , egg-sim-chinese-big5-menu)
- ("Chinese-CNS" . , egg-sim-chinese-cns-menu)
- ("Chinese-GB" . , egg-sim-chinese-gb-menu)
- ("Cyrillic-ISO" . , egg-sim-cyrillic-menu)
- ("Cyrillic-KOI8" . , egg-sim-cyrillic-menu)
- ("Cyrillic-ALT" . , egg-sim-cyrillic-menu)
- ("Czech" . , egg-sim-latin-2-menu)
- ("Devanagari")
- ("English" . , egg-sim-ascii-menu)
- ("Ethiopic")
- ("German" . , egg-sim-latin-1-menu)
- ("Greek" . , egg-sim-greek-menu)
- ("Hebrew" . , egg-sim-hebrew-menu)
- ("Hindi")
- ("IPA" . , egg-sim-ipa-menu)
- ("Japanese" . , egg-sim-japanese-menu)
- ("Korean" . , egg-sim-korean-menu)
- ("Lao" . , egg-sim-lao-menu)
- ("Latin-1" . , egg-sim-latin-1-menu)
- ("Latin-2" . , egg-sim-latin-2-menu)
- ("Latin-3" . , egg-sim-latin-3-menu)
- ("Latin-4" . , egg-sim-latin-4-menu)
- ("Latin-5" . , egg-sim-latin-5-menu)
- ("Romaian" . , egg-sim-latin-2-menu)
- ("Slovenian" . , egg-sim-latin-2-menu)
- ("Slovak" . , egg-sim-latin-2-menu)
- ("Thai" . , egg-sim-thai-menu)
- ("Tibetan")
- ("Turkish" . , egg-sim-latin-5-menu)
- ("Vietnamese" . , egg-sim-vietnamese-menu)))
-
-(defvar egg-simple-input-method-menu
- `(menu "Character set:" , egg-simple-input-method-menu-item-list))
-
-;;;;###autoload
-(defun egg-simple-input-method()
- (interactive)
- (let ((result (egg-simple-input-menu)))
- (cond((stringp result)
- (insert result))
- ((symbolp result)
- (egg-character-code-input result
- (format "%s/Character Code in Hexadecimal:"
- (charset-description result)))))))
-
-(defun egg-simple-input-menu ()
- (let ((menu (cdr-safe (assoc current-language-environment
- egg-language-environment-alist))))
- (if menu
- (menudiag-select
- `(menu "Character set:" ,(cons (cons current-language-environment
- menu)
- egg-simple-input-method-menu-item-list)))
- (menudiag-select egg-simple-input-method-menu))))
-
-(defun egg-character-code-input (charset prompt)
- (egg-insert-character-code-from-minibuffer charset prompt))
-
-(defun egg-insert-character-code-from-minibuffer (charset prompt)
- (let ((str (read-from-minibuffer prompt)) val)
- (while (null (setq val (egg-read-character-code-from-string str charset)))
- (beep)
- (setq str (read-from-minibuffer prompt str)))
- (insert (make-char charset (car val) (cdr val)))))
-
-(defun egg-hexadigit-value (ch)
- (cond((and (<= ?0 ch) (<= ch ?9))
- (- ch ?0))
- ((and (<= ?a ch) (<= ch ?f))
- (+ (- ch ?a) 10))
- ((and (<= ?A ch) (<= ch ?F))
- (+ (- ch ?A) 10))))
-
-(defun egg-read-character-code-from-string (str charset)
- (if (and (= (length str) 4)
- (<= 2 (egg-hexadigit-value (aref str 0)))
- (egg-hexadigit-value (aref str 1))
- (<= 2 (egg-hexadigit-value (aref str 2)))
- (egg-hexadigit-value (aref str 3)))
- (let ((code1 (+ (* 16 (egg-hexadigit-value (aref str 0)))
- (egg-hexadigit-value (aref str 1))))
- (code2 (+ (* 16 (egg-hexadigit-value (aref str 2)))
- (egg-hexadigit-value (aref str 3))))
- (min (if (= (charset-chars charset) 94)
- 33 32))
- (max (if (= (charset-chars charset) 94)
- 126 127)))
- (and (<= min code1)
- (<= code1 max)
- (<= min code2)
- (<= code2 max)
- (cons code1 code2)))))
-
-;;;
-;;;
-;;;
-
-(defun make-non-iso2022-code-table-file (name)
- (with-temp-file name
- (set-buffer-multibyte nil)
- (insert ";;; -*- coding: -*-\n\n")
- (insert " |")
-
- (let ((i 0))
- (while (< i 16)
- (insert (format " %X " i))
- (setq i (1+ i))))
- (insert "\n")
-
- (insert "-+")
- (let ((i 0))
- (while (< i 16)
- (insert (format "----" i))
- (setq i (1+ i))))
- (insert "\n")
-
- (let ((i 0))
- (while (< i 16)
- (insert (format "%X|" i))
- (let ((j 0) (c i))
- (while (< j 16)
- (insert (format " \"%c\"" c))
- (setq j (1+ j)
- c (+ c 16)))
- (insert (format "\n")))
- (setq i (1+ i))))))
-
-(defun make-iso2022-94char-code-table-file (name)
- (with-temp-file name
- (set-buffer-multibyte nil)
- (insert ";;; -*- coding: -*-\n\n")
- (insert " |")
- (let ((i 0))
- (while (< i 16)
- (insert (format " %X " i))
- (setq i (1+ i))))
- (insert "\n")
-
- (insert "-+")
- (let ((i 0))
- (while (< i 16)
- (insert (format "----" i))
- (setq i (1+ i))))
- (insert "\n")
-
- (let ((i 0))
- (while (< i 16)
- (insert (format "%X|" i))
- (let ((j 0) (c i))
- (while (< j 16)
- (if (or (<= c 31)
- (= c 127)
- (and (<= 128 c)
- (<= c 160))
- (= c 255))
- (insert " ")
- (insert (format " \"%c\"" c)))
- (setq j (1+ j)
- c (+ c 16)))
- (insert (format "\n")))
- (setq i (1+ i))))))
-
-(defun make-iso2022-96char-code-table-file (name)
- (with-temp-file name
- (set-buffer-multibyte nil)
- (insert ";;; -*- coding: -*-\n\n")
- (insert " |")
- (let ((i 0))
- (while (< i 16)
- (insert (format " %X " i))
- (setq i (1+ i))))
- (insert "\n")
-
- (insert "-+")
- (let ((i 0))
- (while (< i 16)
- (insert (format "----" i))
- (setq i (1+ i))))
- (insert "\n")
-
- (let ((i 0))
- (while (< i 16)
- (insert (format "%X|" i))
- (let ((j 0) (c i))
- (while (< j 16)
- (if (or (<= c 31)
- (= c 127)
- (and (<= 128 c)
- (< c 160)))
- (insert " ")
- (insert (format " \"%c\"" c)))
- (setq j (1+ j)
- c (+ c 16)))
- (insert (format "\n")))
- (setq i (1+ i))))))
-
-(defun make-euc-code-table-file (name)
- (with-temp-file name
- (set-buffer-multibyte nil)
- (insert ";;; -*- coding: -*-\n\n")
- (insert " |")
- (let ((i 1))
- (while (<= i 94)
- ;; "XX"
- (insert (format " %02d " i))
- (setq i (1+ i))))
- (insert "\n")
-
- (insert "-+")
- (let ((i 1))
- (while (<= i 94)
- (insert (format "-----" i))
- (setq i (1+ i))))
- (insert "\n")
-
- (let ((i 1))
- (while (<= i 94)
- (insert (format "%02d|" i))
- (let ((j 1))
- (while (<= j 94)
- (insert (format " \"%c%c\""
- (+ i 32 128)
- (+ j 32 128)))
- (setq j (1+ j)))
- (insert (format "\n")))
- (setq i (1+ i))))))
\ No newline at end of file
Index: egg-sim.el
===================================================================
RCS file: /cvs/tamago/tamago/egg-sim.el,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -d -u -p -r1.1.1.1 -r1.2
--- egg-sim.el 27 Jan 2001 18:46:59 -0000 1.1.1.1
+++ egg-sim.el 27 Jan 2001 18:53:13 -0000 1.2
@@ -73,7 +73,7 @@
result)))))
(defvar egg-sim-ascii-menu
- '(menu "ASCII:" ,(make-char-list 'ascii)))
+ `(menu "ASCII:" ,(make-char-list 'ascii)))
(defvar egg-sim-latin-1-menu
`(menu "ISO 8859-1:" ,(make-char-list 'latin-iso8859-1)))
@@ -355,7 +355,7 @@
`(menu "Character set:" , egg-simple-input-method-menu-item-list))
;;;;###autoload
-(defun egg-simple-input-method()
+(defun egg-simple-input-method ()
(interactive)
(let ((result (egg-simple-input-menu)))
(cond((stringp result)
@@ -545,4 +545,4 @@
(+ j 32 128)))
(setq j (1+ j)))
(insert (format "\n")))
- (setq i (1+ i))))))
\ No newline at end of file
+ (setq i (1+ i))))))
Index: egg-simv.el
===================================================================
RCS file: egg-simv.el
diff -N egg-simv.el
--- egg-simv.el 27 Jan 2001 18:46:59 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,47 +0,0 @@
-
- | 0 1 2 3 4 5 6 7 8 9 A B C D E F
--+----------------------------------------------------------------
-0| " " "0" "@" "P" "`" "p" ",2U(B" ",20(B" ",2u(B" ",10(B" ",2`(B" ",2p(B" ",1`(B" ",1p(B"
-1| "!" "1" "A" "Q" "a" "q" ",2!(B" ",21(B" ",1!(B" ",11(B" ",2a(B" ",1Q(B" ",1a(B" ",1q(B"
-2| ",2F(B" """ "2" "B" "R" "b" "r" ",2"(B" ",22(B" ",1"(B" ",12(B" ",2b(B" ",2r(B" ",1b(B" ",1r(B"
-3| "#" "3" "C" "S" "c" "s" ",2#(B" ",25(B" ",1#(B" ",2^(B" ",2c(B" ",2s(B" ",1c(B" ",1s(B"
-4| ",2V(B" "$" "4" "D" "T" "d" "t" ",2$(B" ",2~(B" ",1$(B" ",2=(B" ",2d(B" ",2t(B" ",1d(B" ",1t(B"
-5| ",2G(B" "%" "5" "E" "U" "e" "u" ",2%(B" ",2>(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 <tomura@etl.go.jp>
-
-;; Author: TOMURA Satoru <tomura@etl.go.jp>
-
-;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
-
-;; 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 <kate@pfu.co.jp>
+
+;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
+
+;; 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
;; <node> ::= (<count> <node#> <original node>) ; atom
;; | (<count> <node#> (<node> . <node>)) ; cons cell
;;
;; <count> ::= integer ; 0 or negative - usage count
-;; ; psotive - generated common sub-tree
+;; ; positive - generated common sub-tree
;;
;; <node#> ::= 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 <kate@pfu.co.jp>
+
+;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
+
+;; 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 <gniibe@chroot.org>
+;; Author: NIIBE Yutaka <gniibe@m17n.org>
;; KATAYAMA Yoshio <kate@pfu.co.jp>
;; TOMURA Satoru <tomura@etl.go.jp>
@@ -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 <gniibe@m17n.org>
+
+;; Maintainer: NIIBE Yutaka <gniibe@m17n.org>
+
+;; 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.")
+
+;; <environments> ::= ( <env> ... <env> )
+;;
+;; <env> ::= <context-descriptor>
+;; <context-descriptor> ::= <integer>
+(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.")
+
+;;
+;; <anthy-bunsetsu> ::=
+;; [ <env> <source> <converted> <candidates> <candidate-pos> <seg-no> ]
+(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 ( <pos> <candidates> )
+;;
+(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 <gniibe@m17n.org>
+
+;; Maintainer: NIIBE Yutaka <gniibe@m17n.org>
+
+;; 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 <number>"
+ (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 <seg-no> <num-segments-removed> <num-segments-inserted>"
+ ;; "<num-candidates> <converted> <yomi>"*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 <offset> <num-candidates>"
+ ;; "<converted>"*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
-;; <env> ::= [ <proc> <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<RL>(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
+;; <env> ::= [ <proc> <context> <backend> <convert-mode> <nostudy> <dic-list> ]
+(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)))
-;; <bunsetsu> ::=
-;; [ <env> <converted> <bunsetsu-pos>
-;; <source> <zenkouho-pos> <zenkouho> ]
-(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))))
+
+;; <canna-bunsetsu> ::=
+;; [ <env> <converted> <bunsetsu-pos> <source>
+;; <zenkouho-pos> <zenkouho> <zenkouho-converted> ]
+(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<ALd$r$7$F$bNI$$$G$9$+(B? ")
+ (progn
+ (setq ret1 (y-or-n-p (concat "$B!V(B" kanji-gokan mizen
+ "$B$J$$!W$O@5$7$$$G$9$+!#(B")))
+ (setq i 0)
+ (if (eq "#R5" ret)
+ (while (> 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<ALd$r$7$F$bNI$$$G$9$+(B? ")
+ (if (y-or-n-p (concat "$B!V(B" kanji "$B!W$O@5$7$$$G$9$+!#(B"))
+ "#KYT" "#KY")
+ "#KY"))
+ (list kanji yomi ret)))
+
+(defun canna-hinshi-KEIYOUDOUSHI (kanji yomi)
+ (let (ret1 ret2 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) $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<ALd$r$7$F$bNI$$$G$9$+(B? ")
+ (progn
+ (setq ret1 (y-or-n-p
+ (concat "$B!V(B" kanji "$B$9$k!W$O@5$7$$$G$9$+!#(B")))
+ (setq ret2 (y-or-n-p
+ (concat "$B!V(B" kanji "$B$,$"$k!W$O@5$7$$$G$9$+!#(B")))
+ (if ret1 (if ret2 "#T10" "#T13") (if ret2 "#T15" "#T18")))
+ "#T05"))
+ (list kanji yomi ret)))
+
+(defun canna-hinshi-FUKUSHI (kanji yomi)
+ (let (ret1 ret2)
+ (if (y-or-n-p "$B$5$i$K:Y$+$$IJ;lJ,$1$N$?$a$N<ALd$r$7$F$bNI$$$G$9$+(B? ")
+ (progn
+ (setq ret1 (y-or-n-p (concat "$B!V(B" kanji "$B$9$k!W$O@5$7$$$G$9$+!#(B")))
+ (setq ret2 (y-or-n-p (concat "$B!V(B" kanji "$B$H!W$O@5$7$$$G$9$+!#(B")))
+ (if ret1 (if ret2 "#F04" "#F12") (if ret2 "#F06" "#F14")))
+ "#F14")))
+
+(defun canna-hinshi-select (kanji yomi)
+ (let ((key (menudiag-select (list 'menu
+ (egg-get-message 'canna-register-2)
+ canna-hinshi-menu))))
+ (cond ((symbolp key) (funcall
+ (intern (concat "canna-hinshi-" (symbol-name key)))
+ kanji yomi))
+ ((stringp key) (cdr (assoc key canna-hinshi-alist))))))
+
+(defun canna-word-registration (backend kanji yomi)
+ "Register a word KANJI with a pronunciation YOMI."
+ (if (or (null (eq (egg-get-language 0 kanji)
+ (canna-get-converted-language backend)))
+ (next-single-property-change 0 'egg-lang kanji)
+ (null (eq (egg-get-language 0 yomi)
+ (canna-get-source-language backend)))
+ (next-single-property-change 0 'egg-lang yomi))
+ (egg-error "word registration: invalid character")
+ (let* ((env (canna-get-environment backend))
+ (dic (canna-dictionary-select env))
+ (hinshi-id (canna-hinshi-select kanji yomi))
+ result)
+ (if (listp hinshi-id)
+ (progn (setq kanji (car hinshi-id))
+ (setq yomi (nth 1 hinshi-id))
+ (setq hinshi-id (nth 2 hinshi-id))))
+ (setq result (cannarpc-add-word env dic yomi kanji hinshi-id))
+ (if (>= 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$,<hF@$G$-$^$;$s!#(B"))
+ (setq kanji (substring kanji 0 (nth 1 (car lex))))
+ (setq yomi (substring yomi 0 (car (car lex))))
+ (if (y-or-n-p (concat "$B!X(B" kanji "$B!Y(B(" yomi ": "
+ (canna-hinshi-name hinshi) ")$B$r(B "
+ dic " $B$+$i:o=|$7$^$9$+(B? "))
+ (setq result
+ (cannarpc-delete-word envd dic yomi kanji hinshi))
+ (setq result -1))
+ (if (>= 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."
;; <wnn-bunsetsu> ::= [ <env>
;; <jirilen> <dic-no> <entry> <freq> <right-now> <hinshi>
-;; <status> <status-backward> <kangovect> <evaluation>
-;; <converted> <yomi> <fuzokugo>
-;; <dai-evaluation> <dai-continue> <change-top>
-;; <zenkouho-info> <freq-down> <fi-rel> <context> ]
+;; <status> <status-backward> <kangovect> <evaluation>
+;; <converted> <yomi> <fuzokugo>
+;; <dai-evaluation> <dai-continue> <change-top>
+;; <zenkouho-info> <freq-down> <fi-rel> <context> ]
;;
;; <zenkouho-info> ::= [ <pos> <list> <converted> <dai> <prev-b> <nxet-b> ]
-;;
(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 <kate@pfu.co.jp>
+
+;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
+
+;; 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 <kate@pfu.co.jp>
-;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
+;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
;; 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