[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: follow anchors that point shimbun articles
>> On Wed, 04 Jul 2007 15:32:49 +0900
>> yamaoka@xxxxxxx (Katsumi Yamaoka) said as follows:
>土屋さんがこのときに追加された変数を流用して
> (setq w3m-goto-article-function 'browse-url)
>とすることを提案し、これを defcustom で定義するように変更、かつこの変数
>に設定した関数の戻り値が何でも良いことにしました。
>一方、本来の目的である `gnus-summary-refer-shimbun-article' という関数
>(nnshimbun.el にあります) が、その url を Xref として持つ新聞記事がロー
>カルシステムに無い場合に nil を返したら、通常の方法でその取得を再度試み
>るという従来の仕様は変えていません。
>ただし`gnus-summary-refer-shimbun-article' を単独で (catch 無しで) 使う
>とエラーになりますが、問題無いですよね?
問題ありと思います.
斜めにコードを読んだだけですが,非局所脱出を使わなければならない必然性が
分かりません.非局所脱出を使って,外部プログラムとインターフェースを取ろ
うとすると,非局所脱出のためのシンボルと返り値という2つの要素が必要になり
ます.つまり,emacs-w3m と外部プログラム(この場合,browse-url)の両方で同
一のシンボルを使うと同時に,同じ semantics の返り値を使う必要があり,互換
性問題を複雑にします.
また,非局所脱出用のシンボルとして,success という非常にありがちなシンボ
ルを使っていますが,これも疑問です.このようなありがちなシンボル名は,外
部プログラムの内部でも使われる可能性が高いですから,少なくとも,外部プロ
グラムとの間の通信で使うべき名前ではないと思います.
すみませんが,下記の変更ではまずい理由を解説して頂けませんか.
--
土屋 雅稔 ( TSUCHIYA Masatoshi )
--- w3m.el 24 Sep 2007 09:48:29 -0000 1.1310
+++ w3m.el 24 Sep 2007 14:40:23 -0000
@@ -9547,12 +9547,10 @@
;;; w3m-minor-mode
(defcustom w3m-goto-article-function nil
"Function used to visit an article pointed to by a given URL.
-Normally, this is used only when you follow a link in an html article.
-A function set to this variable takes one argument URL.
-
-If the function throws nil, that means the function failed in fetching
-URL, to the catch tag `success', the default function tries to fetch
-URL again. See `gnus-summary-refer-shimbun-article' in nnshimbun.el."
+Normally, this is used only when you follow a link in an html
+article. A function set to this variable must take one argument
+URL, and must returns non-nil value when it fails in fetching a
+given URL."
:group 'w3m
:type '(radio (const :tag "Use emacs-w3m" nil)
(function :value browse-url)))
@@ -9578,9 +9576,7 @@
(url (w3m-url-valid (w3m-anchor))))
(cond
(url (or (and (functionp w3m-goto-article-function)
- (catch 'success
- (funcall w3m-goto-article-function url)
- t))
+ (funcall w3m-goto-article-function url))
(if (and w3m-make-new-session
(not (eq major-mode 'w3m-mode)))
(w3m-goto-url-new-session url)
--- shimbun/nnshimbun.el 8 Aug 2007 01:07:57 -0000 1.60
+++ shimbun/nnshimbun.el 24 Sep 2007 14:40:23 -0000
@@ -875,14 +875,12 @@
(interactive "sURL: ")
(let ((method (gnus-find-method-for-group gnus-newsgroup-name))
(header))
- (throw
- 'success
- (and (eq 'nnshimbun (car method))
- (nnshimbun-possibly-change-group nil (nth 1 method))
- (setq header (nnshimbun-search-xref
- (gnus-group-short-name gnus-newsgroup-name) url))
- (with-current-buffer gnus-summary-buffer
- (gnus-summary-refer-article (shimbun-header-id header)))))))
+ (and (eq 'nnshimbun (car method))
+ (nnshimbun-possibly-change-group nil (nth 1 method))
+ (setq header (nnshimbun-search-xref
+ (gnus-group-short-name gnus-newsgroup-name) url))
+ (with-current-buffer gnus-summary-buffer
+ (gnus-summary-refer-article (shimbun-header-id header))))))
(defun nnshimbun-setup-article-mode ()
(set (make-local-variable 'w3m-goto-article-function)