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

w3m-form で lisp error



林と申します。

Mew で html 添付ファイルの表示に emacs-w3m を使っていますが、
いつの頃からか

Wrong type argument: stringp, nil

というエラーが出て表示できない *ことがある* のが気になっていました。
(たとえばこのメールに添付のもの)
# 現在は mew 3.0.54 + w3m_el-1.2.5 ですが、いつからかはっきり覚えていません。

Backtrace を見てみると

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  string-match("\\`\\(\\([^:/?#]+\\):\\)?\\(//\\([^/?#]*\\)\\)?\\([^?#]*\\)\\(\\?\\([^#]*\\)\\)?\\(#\\(.*\\)\\)?\\'" nil)
  (progn (string-match w3m-url-components-regexp w3m-current-url) (substring w3m-current-url 0 (or ... ...)))
  (or action (progn (string-match w3m-url-components-regexp w3m-current-url) (substring w3m-current-url 0 ...)))
  (w3m-form-new (or method "get") (or action (progn ... ...)) nil accept-charset)
  (cons (w3m-form-new (or method "get") (or action ...) nil accept-charset) forms)
  (setq forms (cons (w3m-form-new ... ... nil accept-charset) forms))
  (let (action method accept-charset charset) (skip-chars-forward " 	
\f\n") (while (cond ... ... ... ... ... ...) (goto-char ...) (skip-chars-forward " 	
\f\n")) (skip-chars-forward "^>") (forward-char) (if accept-charset (setq accept-charset ...) (when ... ...)) (setq forms (cons ... forms)))
  (w3m-parse-attributes (action (method :case-ignore) (accept-charset :case-ignore) (charset :case-ignore)) (if accept-charset (setq accept-charset ...) (when ... ...)) (setq forms (cons ... forms)))
  (cond ((string= tag "img") (w3m-parse-attributes ... ...)) (t (w3m-parse-attributes ... ... ...) (while ... ... ... ...)))
  (while (re-search-forward (w3m-tag-regexp-of "form" "img") nil t) (setq tag (downcase ...)) (goto-char (match-end 1)) (cond (... ...) (t ... ...)))
  (let ((case-fold-search t) forms tag) (goto-char (point-min)) (while (re-search-forward ... nil t) (setq tag ...) (goto-char ...) (cond ... ...)) forms)
  w3m-form-parse-forms()
  (nreverse (w3m-form-parse-forms))
  (or (when (w3m-cache-available-p w3m-current-url) (let ... ...)) (nreverse (w3m-form-parse-forms)))
  w3m-form-parse-buffer()
  w3m-rendering-buffer-1(iso-2022-7bit)
  w3m-rendering-multibyte-buffer()
  w3m-region(1 700)
  mew-mime-text/html-w3m(#<buffer  *mew cache*0> 884 1583 (("charset" "iso-2022-jp")))
  mew-mime-part(#<buffer  *mew cache*0> [message 1 581 nil ("Message/Rfc822") nil nil nil nil [multi 582 1632 nil ("Multipart/Mixed" ...) "7bit" nil nil nil [single 704 709 nil ... "7bit" nil nil nil] [single 884 1583 nil ... "7bit" nil nil ...]]] (2))
  mew-summary-display-part(#<buffer  *mew cache*0> (2))
  mew-summary-display(nil)
  mew-summary-display-down(nil)
  call-interactively(mew-summary-display-down)

ということなので、下記の対症療法でエラーは出なくなりましたが、
こういう対応方法で良いものでしょうか?

--- w3m-form.el.org	Tue Feb 26 00:45:59 2002
+++ w3m-form.el	Fri Mar  8 23:41:46 2002
@@ -252,6 +252,7 @@
 		       (or method "get")
 		       (or action
 			   (progn
+			     (if (null w3m-current-url) (setq w3m-current-url ""))
 			     (string-match w3m-url-components-regexp w3m-current-url)
 			     (substring w3m-current-url 0
 					(or (match-beginning 6) (match-beginning 8)))))

-- 
 林 千史  chifumi@mscom.or.jp
Title: テスト

ご利用ありがとうございました。