[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:7560] Re: [Mule-UCS] buffer magnifications of shift-jisx0213-*-stream-encoder are too small



伊藤です。

> > この件ですが、src/ccl.c で定義されている CCL_WRITE_CHAR は、0x80-0x9f
> > の値を書き出す際にバッファを 2 バイト要求するため、
> > shift-jisx0213-unix-stream-encoder の buffer-magnification が 1 だと
> > バッファが足りない時があるというのが原因のようです。
(snip)
>  どのみち食わせる文字列しだいでは複数回エンコーダを回さなければな
> らない条件があるようなので(よくわかってないけど途中で変換が止まる),
> ここは encode_coding を直接使うのではなく encode_coding_string を
> 使うのが正しいようです.

mule-ja に出した最初のメールにも書いたように、buffer magnification を
変更するという案以外にも encode_coding の戻り値をチェックするという
方法を考えていたのですが、そうすると encoding_buffer_size の存在意義が
よく分からなくなったのと、xfns.c で同じような使い方をしているコードが
あったので、添付のパッチのような変更をしたとしても
encoding_buffer_size の戻り値が十分な大きさになった方がいいのかなと
考えています。

> このパッチはついでにクリップボードで Unicode text のやり取りを可能
> にします(こちらが私的には本題だったのですが)

私もその本題のほうをやろうとしましたが、結局、ユニコードテキストの
やり取りには問題なさそうだったので、自分で使っている Meadow-3 では
クリップボードまわりの処理は NTEmacs のコードを使うように
変えてしまいました。

ただし、Meadow-2.1 では NTEmacs のコードもユニコードテキストが
扱えるようになっていなかったので Meadow のコードをそのまま使っています。

> このパッチを適用した Madow で
> (set-clipboard-coding-system 'utf-16le-dos)
> をすると 0213 な文字も含めて Unicode で扱える文字がすべてクリップ
> ボード経由でやり取りできるようになるはずです.

少し試した範囲では問題なさそうです。

-- 
伊藤 和博(Kazuhiro Ito)