* gnus.el (gnus-find-method-for-group): On killed/unknown groups, try
authorAndreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
Sun, 25 Jun 2006 10:45:41 +0000 (10:45 +0000)
committerAndreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
Sun, 25 Jun 2006 10:45:41 +0000 (10:45 +0000)
looking up the method using GROUP's prefix before inventing a new one.
It is used on killed/unknown groups in various places where returning
an all-new method isn't expected by the caller.

* gnus-util.el (gnus-group-server): Fix for empty virtual server names
and match semantics of gnus-group-real-prefix.

lisp/ChangeLog
lisp/gnus-util.el
lisp/gnus.el

index 28e0beb..42fd872 100644 (file)
@@ -1,3 +1,13 @@
+2006-06-25  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+       * gnus.el (gnus-find-method-for-group): On killed/unknown groups, try
+       looking up the method using GROUP's prefix before inventing a new one.
+       It is used on killed/unknown groups in various places where returning
+       an all-new method isn't expected by the caller.
+
+       * gnus-util.el (gnus-group-server): Fix for empty virtual server names
+       and match semantics of gnus-group-real-prefix.
+
 2006-06-22  Reiner Steib  <Reiner.Steib@gmx.de>
 
        * nnmail.el (nnmail-broken-references-mailers): New variable.
index c0fbcb4..3167d36 100644 (file)
@@ -596,8 +596,10 @@ If N, return the Nth ancestor instead."
 For example, (gnus-group-server \"nnimap+yxa:INBOX.foo\") would
 yield \"nnimap:yxa\"."
   `(let ((gname ,group))
-     (if (string-match "^\\([^+]+\\).\\([^:]+\\):" gname)
-        (format "%s:%s" (match-string 1 gname) (match-string 2 gname))
+     (if (string-match "^\\([^:+]+\\)\\(?:\\+\\([^:]*\\)\\)?:" gname)
+        (format "%s:%s" (match-string 1 gname) (or
+                                                (match-string 2 gname)
+                                                ""))
        (format "%s:%s" (car gnus-select-method) (cadr gnus-select-method)))))
 
 (defun gnus-make-sort-function (funs)
index 6697ddd..0db06f8 100644 (file)
@@ -4123,8 +4123,13 @@ If NEWSGROUP is nil, return the global kill file name instead."
   (or gnus-override-method
       (and (not group)
           gnus-select-method)
-      (and (not (gnus-group-entry group)) ;; a new group
-          (gnus-group-name-to-method group))
+      (and (not (gnus-group-entry group))
+          ;; Killed or otherwise unknown group.
+          (or
+           ;; If we know a virtual server by that name, return its method.
+           (gnus-server-to-method (gnus-group-server group))
+           ;; Guess a new method as last resort.
+           (gnus-group-name-to-method group)))
       (let ((info (or info (gnus-get-info group)))
            method)
        (if (or (not info)