[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[emacs-unicode-2] encode-coding-stringからの CCL 呼出し



Emacs23 にて encode-coding-string で CCL な coding-system を
指定した時に、最後まで出力されない(?)ことがあります。

(define-ccl-program t1-encoder
  '(2
    (loop
     (read r0)
     (write ?1)
     (write ?2)
     (repeat))))

(define-coding-system 't1 "ccl test coding system"
  :mnemonic ?t
  :coding-type 'ccl
  :ccl-decoder 't1-encoder
  :ccl-encoder 't1-encoder)

(encode-coding-string "t" 't1)
 => ""
(encode-coding-string "te" 't1)
 => "12"
(encode-coding-string "tes" 't1)
 => "121"
(encode-coding-string "test" 't1)
 => "1212"

入力より長い文字列を出力できないような感じです。
なお、ccl-execute-on-string からであれば期待通りに出力されました。


ついでにお聞きしたいのですが、define-ccl-program の DOC-STRING で

	;; character.  If the dimension of charset is two, set REG_1
	;; to ((CODE0 << 7) | CODE1), where CODE0 is the first code
	;; point and CODE1 is the second code point.
	| (read-multibyte-character REG_0 REG_1)

とありますが、REG_1 には ((CODE0 << 8) | CODE1) が入るようです。
これは仕様変更でしょうか?

-- 
有沢 明宏
;; 2年前に見付けて忘れてました(^^;