* nnshimbun.el (nnshimbun-request-expire-articles): Prefer the group parameter
[elisp/gnus.git-] / lisp / gnus-group.el
index c9eb427..ff81bf7 100644 (file)
@@ -2426,29 +2426,42 @@ If SOLID (the prefix), create a solid group."
                       (nnwarchive-login ,login))))
     (gnus-group-make-group group method)))
 
-(defvar nnshimbun-type-definition)
 (defvar gnus-group-shimbun-server-history nil)
 
 (defun gnus-group-make-shimbun-group ()
   "Create a nnshimbun group."
   (interactive)
   (require 'nnshimbun)
-  (let* ((minibuffer-setup-hook (append minibuffer-setup-hook
-                                       '(beginning-of-line)))
-        (server (completing-read "Shimbun address: "
-                                 nnshimbun-type-definition nil t
-                                 (or (car gnus-group-shimbun-server-history)
-                                     (caar nnshimbun-type-definition))
-                                 'gnus-group-shimbun-server-history))
-        (group (completing-read
-                "Group name: "
+  (let* ((minibuffer-setup-hook
+         (append minibuffer-setup-hook '(beginning-of-line)))
+        (alist
+         (apply 'nconc
                 (mapcar
-                 'list
-                 (cdr (assq 'groups
-                            (cdr (assoc server nnshimbun-type-definition)))))
-                nil t nil))
-        (nnshimbun-pre-fetch-article nil))
-    (gnus-group-make-group group (list 'nnshimbun server))))
+                 (lambda (d)
+                   (and (stringp d)
+                        (file-directory-p d)
+                        (delq nil
+                              (mapcar
+                               (lambda (f)
+                                 (and (string-match "^sb-\\(.*\\)\\.el$" f)
+                                      (list (match-string 1 f))))
+                               (directory-files d)))))
+                 load-path)))
+        (server (completing-read
+                 "Shimbun address: " 
+                 alist nil t
+                 (or (car gnus-group-shimbun-server-history)
+                     (caar alist))
+                 'gnus-group-shimbun-server-history))
+        (groups)
+        (nnshimbun-pre-fetch-article))
+    (require (intern (concat "sb-" server)))
+    (when (setq groups (intern-soft (concat "shimbun-" server "-groups")))
+      (gnus-group-make-group
+       (completing-read "Group name: "
+                       (mapcar 'list (symbol-value groups))
+                       nil t nil)
+       (list 'nnshimbun server)))))
 
 (defun gnus-group-make-archive-group (&optional all)
   "Create the (ding) Gnus archive group of the most recent articles.