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

Re: emacs-w3m, w3m-m17n and mule



>>>>> In [emacs-w3m : No.03699] 
>>>>>	Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp> wrote:

ari> ● w3m-m17n を使用している場合に化ける。
ari> w3m-m17n に -I を指定しなかったり、w3m-m17n の知らない coding-sysmte を
ari> 指定した時に、w3m-m17n 側で正しく判定できないのでしょうね。

白井> w3m-m17n に -I で渡さないといけないのですね。(w3mee もかな)
白井> ちょっと時間がないので、あまり確認はしていないのですが、付属のパッ
白井> チをあてて、~/.emacs で
白井> (codepage-setup 1251)
白井> するという作戦はどうでしょう。(Emacs20/21 限定かしら? XEmacs は
白井> わからない)

附属のパッチをあてたるとバッチリでした:-)
XEmacs-21.4 や Mule-2.3 でも問題ありませんでした。
codepage-setup は実行しなくても良いようです。

>>>>> In [emacs-w3m : No.03696] 
>>>>>	ari@mbf.sphere.ne.jp (ARISAWA Akihiro) wrote:

ari> ● Mule-UCS + w3m を使用した場合、auto-detect の結果が iso-8859-1 となる
ari>    (setq w3m-coding-system-priority-list '(cyrillic-koi8)) としてもダメ。

ari> (set-language-environment "Cyrillic-KOI8") していると、cyrillic-koi8 に
ari> なりました。どうやら、set-language-environment-coding-systems で
ari> やっている以下の処理が効いているようです。

w3m-detect-coding-region で同様の処理をすれば良さそうです。

(defun w3m-detect-coding-region (start end &optional priority-list)
  "Detect coding system of the text in the region between START and END.
Return the first possible coding system.

PRIORITY-LIST is a list of coding systems ordered by priority."
  (let (category categories original-categories)
    (unwind-protect
	(progn
	  (dolist (codesys priority-list)
	    (setq category (coding-system-category codesys))
	    (unless (assq category categories)
	      (push (cons category (symbol-value category))
		    original-categories)
	      (set category codesys)
	      (push (cons category codesys) categories)))
	  (update-coding-systems-internal)
	  (car (detect-coding-with-priority start end (nreverse categories))))
      (dolist (category-codesys original-categories)
	(set (car category-codesys) (cdr category-codesys)))
      (update-coding-systems-internal))))

XEmacs は、w3m-detect-coding-region は変更しなくてもコード判定は
期待通りに動きましたが、別の問題がありました。

● XEmacs-21.4 + Mule-UCS で w3m を利用時に、エラーが発生し、実体参照が
   デコードされない。

以下のようなエラーが発生しました。
Signaling: (error "ID:128 is not valid charset-id.")
  signal(error ("ID:128 is not valid charset-id."))
  cerror("ID:%d is not valid charset-id." 128)
  apply(cerror "ID:%d is not valid charset-id." 128)
  error("ID:%d is not valid charset-id." 128)
  char-1-elisp-representation(8388668)
  mucs-convert(ucs-codepoint-to-emacs-char-conversion 188)
  ucs-representation-decoding-backend(ucs 188 nil)
  ucs-to-char(188)
  w3m-ucs-to-char(188)
  w3m-decode-entities(reserve-prop)
  w3m-fontify()
  w3m-prepare-text-content("http://www.mypsion.ru" "text/html" #<buffer "*w3m*"> nil)
(以下略)
(char-to-ucs (make-char 'cyrillic-iso8859-5 33))
 => 161
となるあたりが怪しいですが…。

-- 
有沢 明宏