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

Re: g (w3m-goto-url) barfs for local directory(non-member post)



こんにちは、白井と申します。

From: Seiichi NAMBA <sn@asahi-net.email.ne.jp> さん曰く
Subject: [emacs-w3m:02872] g (w3m-goto-url) barfs for local directory (non-member post)
Message-ID: <200203051109.g25B9UH58168@goro.asahi-net.or.jp>
Date: Tue, 05 Mar 2002 20:08:35 +0900

sn> 難波と申します。当 ML に入っておりませんので送れるかどうかよく判りませ
sn> んが送信してみます。

バグ報告ありがとうございました。ちゃんと届いています。

sn> 今、手元にあるのは
sn> emacs-w3m-version => "1.2.169"

sn> ですが、ここのところ、g (w3m-goto-url) (あるいは G も同じ) キーでロー
sn> カルディレクトリを読もうとするとエラーになってしまいます。

sn> Debugger entered--Lisp error: (wrong-type-argument stringp nil)
sn>   string-match("\\`\\([^:/?#]+:\\)?//\\([^/?#:]+\\)\\(:\\([^/?#@]+\\)\\)?@" nil)
sn>   w3m-url-authinfo(nil)

sn> という感じで、ローカルディレクトリを読む場合、
sn> w3m-process-start-process() に入った時点で、w3m-current-url に nil がバイ
sn> ンドされてしまっているようです。

はい、おっしゃる通りのエラーになりました。

sn> として逃げています。w3m-process-arguments() が w3m-current-url を
sn> 設定するようにも見えませんので、ここまでくるどこかで w3m-current-url が
sn> 決まると思うのですが…。

通常の場合はすでに w3m-current-url を代入しているのですが、local
directory のときだけ(だよな、きっと)見逃していました。エラーになっ
たのは、w3m-process-start-process() 内部で最近変わった所なのです
が、まったく気付いていませんでした。ありがとうございます。

また、

sn> (setq w3m-local-directory-view-method 'w3m-dtree) と

が効いていないのも確認しました。CVS にはこれから commit しますが、
とりあえずパッチは以下のようになります。

-- 
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)

Index: w3m.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.595
diff -u -r1.595 w3m.el
--- w3m.el	2002/02/23 18:01:20	1.595
+++ w3m.el	2002/03/05 11:50:31
@@ -2669,6 +2669,7 @@
 	(error "Can't execute: %s" w3m-dirlist-cgi-program))
     ;; execute w3m internal CGI
     (w3m-process-with-wait-handler
+      (setq w3m-current-url url)
       (w3m-process-start handler "-dump_source" url)))
   ;; bind charset to w3m-file-name-coding-system
   (let ((charset (or (car (rassq w3m-file-name-coding-system
@@ -4687,12 +4688,13 @@
 	;; Remove processing url's forms from the history structure.
 	(w3m-history-remove-properties '(:forms) url nil t))
       ;; local directory URL check
-      (if (and (w3m-url-local-p url)
-	       (file-directory-p (w3m-url-to-file-name url))
-	       (setq url (file-name-as-directory url))
-	       (eq w3m-local-directory-view-method 'w3m-dtree)
-	       (string-match "\\`file:///" url))
-	  (setq url (replace-match "about://dtree/" nil nil url)))
+      (when (and (w3m-url-local-p url)
+		 (file-directory-p (w3m-url-to-file-name url))
+		 (setq url (file-name-as-directory url))
+		 (eq w3m-local-directory-view-method 'w3m-dtree)
+		 (string-match "\\`file:///" url))
+	(setq url (replace-match "about://dtree/" nil nil url))
+	(setq orig url))
       (and (string-match w3m-url-components-regexp url)
 	   (match-beginning 8)
 	   (setq name (match-string 9 url)