2000-01-12 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>
${EMACS} ${BATCHFLAGS} ${DEPS} -f batch-byte-compile $<
clean:
- rm -f ${ELCS}
+ rm -f ${ELCS} *~ */*~ \#* .\#* */\#* */.\#*
distclean:
- rm -f ${ELCS} config.* *~ */*~ Makefile \#* .\#* */\#* */.\#*
+ rm -f ${ELCS} config.* Makefile
install: install-site
- Tamago Versio 4
+ Tamago Version 4
NIIBE Yutaka <gniibe@chroot.org>
KATAYAMA Yoshio <kate@pfu.co.jp>
(require 'egg-edep)
(defgroup egg nil
- "Tamagotchy --- EGG Versio 4.0")
+ "Tamago Version 4")
(defcustom egg-mode-preference t
"*Make Egg as modefull input method, if non-NIL."
"*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)
(setq stdy (sj3bunsetsu-get-stdy bunsetsu))
(if stdy
(sj3rpc-bunsetsu-stdy env stdy))
- (if (setq kugiri-changed (sj3bunsetsu-get-kugiri-changed bunsetsu))
+ (if (and l
+ (setq kugiri-changed (sj3bunsetsu-get-kugiri-changed
+ bunsetsu)))
(let ((yomi1 (sj3bunsetsu-get-source bunsetsu))
(yomi2 (sj3bunsetsu-get-source (car l))))
(if (/= kugiri-changed (length yomi1))
;;; Code:
-
-
-;; Only support SJ3 version 2.
-
(eval-when-compile
(require 'egg-com)
;; (load-library "egg/sj3")
((eq c 'STDYSIZE) 23)
((eq c 'LOCK) 31)
((eq c 'UNLOCK) 32)
- ((eq c 'BEGIN) 41)
- ((eq c 'BEGIN_EUC) 111)
- ((eq c 'TANCONV) 51)
- ((eq c 'TANCONV_EUC) 112)
- ((eq c 'KOUHO) 54)
- ((eq c 'KOUHO_EUC) 115)
- ((eq c 'KOUHOSU) 55)
- ((eq c 'KOUHOSU_EUC) 116)
+ ((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 'STDY) 61)
- ((eq c 'CLSTDY) 62)
- ((eq c 'CLSTDY_EUC) 117)
- ((eq c 'WREG) 71)
- ((eq c 'WREG_EUC) 118)
- ((eq c 'WDEL) 72)
- ((eq c 'WDEL_EUC) 119)
+ ((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 'MKDIC) 81)
((eq c 'MKSTDY) 82)
((eq c 'MKDIR) 83)
((eq c 'ACCESS) 84)
- ((eq c 'WSCH) 91)
- ((eq c 'WSCH_EUC) 120)
- ((eq c 'WNSCH) 92)
- ((eq c 'WNSCH_EUC) 121)
+ ((eq c 'WSCH) '(if (eq 1 sj3-server-version) 91 120))
+ ((eq c 'WNSCH) '(if (eq 1 sj3-server-version) 92 121))
((eq c 'VERSION) 103)
(t (error "No such constant")))))
(process-send-region proc (point-min) (point-max))
(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)))
+ (while (not (search-forward "\0" nil t))
+ (comm-accept-process-output))
+ (decode-coding-string (buffer-substring start (1- (point)))
+ ,coding-system)))
\f
(defun sj3rpc-open (proc myhostname username)
"Open the session. Return 0 on success, error code on failure."
(comm-call-with-proc proc (result)
- (comm-format (u u s s s) (sj3-const OPEN) 2 ; Server version
+ (comm-format (u u s s s) (sj3-const OPEN) sj3-server-version
myhostname username
;; program name
(format "%d.emacs-egg" (emacs-pid)))
(defun sj3rpc-begin (env yomi)
"Begin conversion."
- (let ((yomi-ext (encode-coding-string yomi 'euc-japan))
- (p 0)
- len source converted stdy bunsetsu-list bl)
+ (let* ((codesys (sj3rpc-server-coding-system))
+ (yomi-ext (encode-coding-string yomi codesys))
+ (p 0)
+ len source converted stdy bunsetsu-list bl)
(sj3rpc-call-with-environment env (result)
- (comm-format (u s) (sj3-const BEGIN_EUC) yomi-ext)
+ (comm-format (u s) (sj3-const BEGIN) yomi-ext)
(comm-unpack (u) result)
(if (/= result 0)
(- result) ; failure
(comm-unpack (b) len)
(> len 0))
(setq stdy (sj3rpc-get-stdy proc))
- (comm-unpack (E) converted)
- (setq source
- (decode-coding-string (substring yomi-ext p (+ p len))
- 'euc-japan)
+ (setq converted (sj3rpc-unpack-mb-string codesys))
+ (setq source (decode-coding-string (substring yomi-ext p (+ p len))
+ codesys)
p (+ p len))
(let ((bl1 (cons (sj3-make-bunsetsu env
source converted nil stdy) nil)))
result))
(defun sj3rpc-get-bunsetsu-candidates-sub (proc env yomi yomi-ext len n)
- (let ((i 0)
+ (let ((codesys (sj3rpc-server-coding-system))
+ (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_EUC) len yomi-ext)
+ (comm-format (u u s) (sj3-const KOUHO) len yomi-ext)
(comm-unpack (u) result)
(if (/= result 0)
(- result) ; failure
(while (< i n)
(comm-unpack (u) cylen)
(setq stdy (sj3rpc-get-stdy proc))
- (comm-unpack (E) converted)
- (setq rest (decode-coding-string
- (substring yomi-ext cylen) 'euc-japan))
+ (setq converted (sj3rpc-unpack-mb-string codesys))
+ (setq rest (decode-coding-string (substring yomi-ext cylen)
+ codesys))
(setq bunsetsu (sj3-make-bunsetsu env yomi converted rest stdy))
(if bl
(setq bl (setcdr bl (cons bunsetsu nil)))
bunsetsu-list))))
(defun sj3rpc-get-bunsetsu-candidates (env yomi)
- (let* ((yomi-ext (encode-coding-string yomi 'euc-japan))
+ (let* ((yomi-ext (encode-coding-string yomi (sj3rpc-server-coding-system)))
(len (length yomi-ext)))
(sj3rpc-call-with-environment env (result)
- (comm-format (u u s) (sj3-const KOUHOSU_EUC) len yomi-ext)
+ (comm-format (u u s) (sj3-const KOUHOSU) len yomi-ext)
(comm-unpack (u) result)
(if (/= result 0)
(- result) ; failure
yomi yomi-ext len result))))))
(defun sj3rpc-tanbunsetsu-conversion (env yomi)
- (let* ((yomi-ext (encode-coding-string yomi 'euc-japan))
+ (let* ((codesys (sj3rpc-server-coding-system))
+ (yomi-ext (encode-coding-string yomi codesys))
(len (length yomi-ext)) cylen stdy converted rest)
(sj3rpc-call-with-environment env (result)
- (comm-format (u u s) (sj3-const TANCONV_EUC) len yomi-ext)
+ (comm-format (u u s) (sj3-const TANCONV) len yomi-ext)
(comm-unpack (u) result)
(if (/= result 0)
(- result)
(comm-unpack (u) cylen)
(setq stdy (sj3rpc-get-stdy proc))
- (comm-unpack (E) converted)
- (setq rest (decode-coding-string
- (substring yomi-ext cylen) 'euc-japan))
+ (setq converted (sj3rpc-unpack-mb-string codesys))
+ (setq rest (decode-coding-string (substring yomi-ext cylen) codesys))
(setq bunsetsu (sj3-make-bunsetsu env yomi converted rest stdy))))))
(defun sj3rpc-bunsetsu-stdy (env stdy)
0)))
(defun sj3rpc-kugiri-stdy (env yomi1 yomi2 stdy)
- (let* ((yomi1-ext (encode-coding-string yomi1 'euc-japan))
- (yomi2-ext (encode-coding-string yomi2 'euc-japan)))
+ (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_EUC)
+ (comm-format (u s s v) (sj3-const CLSTDY)
yomi1-ext yomi2-ext stdy (length stdy))
(comm-unpack (u) result)
(if (/= result 0)
-;;; its.el --- Input Translation Systam AKA "ITS(uDekirunDa!)"
+;;; its.el --- Input Translation System AKA "ITS(uDekirunDa!)"
;; Copyright (C) 1999,2000 PFU LIMITED
:group 'its :type 'boolean)
(defcustom its-delete-by-keystroke nil
- "*Delete characters as if cancele input keystroke, if nin-NIL."
+ "*Delete characters as if cancel input keystroke, if nin-NIL."
:group 'its :type 'boolean)
(defcustom its-fence-invisible nil
;;
(define-key map "\M-p" 'its-previous-map)
(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-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)
map)
"Keymap for ITS mode.")
(setq its-stroke-input-alist
(append alist its-stroke-input-alist))))
-(defun its-hiragana ()
- ;; hiragana-region for input-buffer
- (interactive)
- (let* ((inhibit-read-only t)
- (start (if (get-text-property (1- (point)) 'its-start)
- (point)
- (previous-single-property-change (point) 'its-start)))
- (end (if (get-text-property (point) 'its-end)
- (point)
- (next-single-property-change (point) 'its-end)))
- (old-str (buffer-substring-no-properties start (1- end)))
- (new-str (japanese-hiragana old-str)))
- (delete-region start end)
- (insert new-str)
- (its-put-cursor t)))
+;;; its-hiragana : hiragana-region for input-buffer
-(defun its-katakana ()
- ;; katakana-region for input-buffer
- (interactive)
- (let* ((inhibit-read-only t)
- (start (if (get-text-property (1- (point)) 'its-start)
- (point)
- (previous-single-property-change (point) 'its-start)))
- (end (if (get-text-property (point) 'its-end)
- (point)
- (next-single-property-change (point) 'its-end)))
- (old-str (buffer-substring-no-properties start (1- end)))
- (new-str (japanese-katakana old-str)))
- (delete-region start end)
- (insert new-str)
- (its-put-cursor t)))
+;;; its-katakana : katanaka-region for input-buffer
(defun its-mode ()
"\\{its-mode-map}"