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

Re: savannah



分かりづらくてすみません。

At Mon, 02 Jun 2003 17:34:25 +0900 (JST),
Masatake YAMATO wrote:
> 
> > えーと、通常 MUA 側でグループのリストはキャッシュされ、かつ、
> > キャッシュをアップデートする機能もあるので、
> > shimbun 側ではグループのリストのキャッシュはしなくても
> > 大丈夫ってことはないでしょうか。
> 
> ???
> そうすると、僕が改変するまえからsb-savannah.elに存在した
> shimbun-savannah-group-path-alist
> という変数は何のためにあるのでしょうか?
> MUA側でグループのリストをアップデートできれば、
> shimbun-savannah-group-path-alistで静的にgroupのlistを
> 定義する必要がないのではないかと思います.
> 
> sb-savannah.elがキャッシュをアップデートする機能をMUAに
> 提供できるという意味かな。

sb-savanna.el の shimbun-groups では、単純にグループリストを
サーバから取ってきて返してやる機能だけ提供して、
各 MUA で、その値をキャッシュするなりアップデートするなりの機能を持つ
のがいいのではないか、という意味のつもりでした。


例えば添付のようにすると、
Wanderlust であれば、@savannah/ というグループにて Enter をおすと、
1回目のみグループリストがサーバから取り寄せられ、
2回目以降はキャッシュされたグループリストが表示されます。
(最新のグループリストに更新するには C-u Enter です。)
Index: sb-savannah.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/shimbun/sb-savannah.el,v
retrieving revision 1.8
diff -u -r1.8 sb-savannah.el
--- sb-savannah.el	13 Mar 2003 22:58:42 -0000	1.8
+++ sb-savannah.el	2 Jun 2003 16:35:40 -0000
@@ -38,22 +38,42 @@
 
 (defvar shimbun-savannah-url "http://mail.gnu.org/archive/html/";)
 
-(defvar shimbun-savannah-group-path-alist
-  '(("bug-gnu-emacs" . "bug-gnu-emacs")
-    ("emacs-bidi" . "emacs-bidi")
-    ("emacs-commit" . "emacs-commit")
-    ("emacs-devel" . "emacs-devel")
-    ("emacs-diffs" . "emacs-diffs")
-    ("emacs-pretest-bug" . "emacs-pretest-bug")
-    ("gnu-emacs-sources" . "gnu-emacs-sources")
-    ("help-emacs-windows" . "help-emacs-windows")
-    ("help-gnu-emacs" . "help-gnu-emacs")
-    ("info-gnu-emacs" . "info-gnu-emacs")
-    ("tramp-devel" . "tramp-devel")
-    ("vms-gnu-emacs" . "vms-gnu-emacs")))
+(defgroup shimbun-savannah nil
+  "shimbun-savannah.el --- shimbun backend for gnu list archives on savannah."
+  :group 'shimbun)
 
-(defvar shimbun-savannah-groups
-  (mapcar 'car shimbun-savannah-group-path-alist))
+(defcustom shimbun-savannah-static-group-list
+  '("bug-gnu-emacs"
+    "emacs-bidi"
+    "emacs-commit"
+    "emacs-devel"
+    "emacs-diffs"
+    "emacs-pretest-bug"
+    "gnu-emacs-sources"
+    "help-emacs-windows"
+    "help-gnu-emacs"
+    "info-gnu-emacs"
+    "tramp-devel"
+    "vms-gnu-emacs")
+  "Table of mailing lists which is archived by savannah. 
+If the on-line retrieval of the lists information failed, this value is used."
+  :group 'sb-savannah
+  :type  '(repeat (string :tag "Group")))
+
+(defconst shimbun-savannah-group-regexp 
+  "<span class=\"listName\"><a href=\"/archive/html/\\(.*\\)/\">\\(.*\\)</a></span>")
+
+(luna-define-method shimbun-groups ((shimbun shimbun-savannah))
+  (with-temp-buffer
+    (if (shimbun-retrieve-url shimbun-savannah-url 'no-cache 'no-decode)
+	(progn
+	  (goto-char (point-min))
+	  (let (groups)
+	    (while (re-search-forward shimbun-savannah-group-regexp nil t)
+	      (setq groups
+		    (cons (match-string 1) groups)))
+	    groups))
+      shimbun-savannah-static-group-list)))
 
 (defvar shimbun-savannah-reverse-flag t)
 
@@ -69,8 +89,7 @@
 
 (defun shimbun-savannah-index-url (entity)
   (concat (shimbun-url-internal entity)
-	  (cdr (assoc (shimbun-current-group-internal entity)
-		      shimbun-savannah-group-path-alist))
+	  (shimbun-current-group-internal entity)
 	  "/"))
 
 (luna-define-method shimbun-index-url ((shimbun shimbun-savannah))
--
Yuuichi Teranishi (寺西裕一) <teranisi@gohome.org>
GPG Public Key: http://www.gohome.org/gpg/teranisi.asc
"Living is easy with eyes closed, misunderstanding all you see..."