[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: broken ~/.w3m/.arrived
>>>>> In [emacs-w3m : No.02699]
>>>>> Tatsuya Kinoshita <tats@iris.ne.jp> wrote:
木下さん> w3m-arrived-file (~/.w3m/.arrived)の中身が壊れてしまう現象を
木下さん> 見つけたのでお知らせします。
木下さん> emacs-w3m 1.2.4または1.2.138, w3m 0.2.5, Debian GNU/Linux
木下さん> sid i386という環境で、下記の手順により再現できました。
木下さん> * ~/.w3m/.arrivedを削除。
木下さん> * emacsを起動。
木下さん> * `M-x w3m'でemacs-w3mを起動。
木下さん> * `U'などでhttp://www.linux.org.tw/CLDP/Chinese-HOWTO.htmlを
木下さん> 表示。* `Q'でemacs-w3mを終了。
木下さん> * emacs-w3mの起動時や終了時に、Wrong type argumentのエラーが
木下さん> 起こるようになる。
Mule-UCS が無い環境で再現できました。
;; そうか、以前に XEmacs でこれが頻繁に起きたのは、
;; Mule-UCS ではなくて ucs-conv を使っていたからなのだな。
木下さん> find-fileで~/.w3m/.arrivedを見ると、タイトルの文字列に含まれ
木下さん> ているエスケープの影響で、そのうしろにある値が化けてしまって
木下さん> います。
;;; .arrived -*- mode: emacs-lisp; coding: iso-2022-7bit -*-
;; This file is generated automatically by Emacs-W3M v1.2.137.
(("http://www.linux.org.tw/CLDP/Chinese-HOWTO.html"
"Linux Chinese HOWTO ^[$(0&d'G0k"
(13709 11776)
(15454 21522 145156)
nil
nil))
ですね。
木下さん> デコードされずに残っているコントロール文字はファイルへ書き込
木下さん> む前に削除する、というふうな対策が必要なのだと思います。
w3m-save-list で使っている prin1 を、例えばこんなもので置き換え
る、というのでいかがでしょう? → 開発者のみなさま。
(defun w3m-prin1 (object &optional stream)
"Like `prin1', except that control chars will be represented with ^ as
`cat -v' does."
(let (rest)
(dolist (char (append (format "%s" object) nil) rest)
(if (or (memq char '(?\t ?\n))
(>= char ?\ ))
(push (char-to-string char) rest)
(push (concat "^" (char-to-string (+ 64 char))) rest)))
(prin1 (apply 'concat (nreverse rest)) stream)))
--
Katsumi Yamaoka <yamaoka@jpl.org>