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

Re: emacs-w3m の Emacs-22 対応



>>>>> In [emacs-w3m : No.06390] 
>>>>>	川幡 太一 <batta@beige.ocn.ne.jp>( Taichi KAWABATA ) wrote:

> 現在、Emacs 22.0.0 で、emacs-w3mを使わせてもらっているのですが、Emacs
> 22は、内部のエンコードがutf-8になっているためか、w3m-e21.el のcclの定義
> の部分を Emacs 22で実行しようとすると、エラーになります。

(まだ作業をする気はないのですが)気になったのでちょっと調べてみた
ところ、以下の点が Emacs 22 でひっかかりそうな感じでした。

・utf-translation-table-for-encode がない。
・utf-subst-table-for-encode がない。
・charset-id<f> は常に 0 を返す。
  代わりに charset-id-internal<f> なんてものがあるけど使って良い?


それと、CCL の仕様ですが以下のように変わっていました。

・read-multibyte-character REG_0 REG_1) で REG_0 は変わらず
  charset_id が取得される。
  REG_1 は dimenstion が 2 の場合は ((CODE0 << 8) | CODE1) が
  取得されるようになった。(仕様か bug かは不明)
・(read REG_0) では1文字の内部コード(UCS) が取得できるようになった!


これらをふまえると、w3m-iso-latin-1-encoder は read で UCS を
取得して 255 以下であればそのまま write、256 以上であれば実体参照を
出力という感じに容易に実現できそうです。
一方、w3m-euc-japan-encoder は UCS と charset-id/codepoint の変換が
必要ですが、実現方法は不明です。


あと、encode-coding-string で CCL な coding-system を指定した場合に、
出力が入力より大きいと bug っぽい動きをしてました。このため、上記の
実装をしても今は動かないかもしれません。

-- 
有沢 明宏