]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge from gnus--rel--5.10
authorMiles Bader <miles@gnu.org>
Fri, 25 Aug 2006 02:15:02 +0000 (02:15 +0000)
committerMiles Bader <miles@gnu.org>
Fri, 25 Aug 2006 02:15:02 +0000 (02:15 +0000)
Patches applied:

 * gnus--rel--5.10  (patch 126-127)

   - Merge from emacs--devo--0
   - Update from CVS

2006-08-23  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>

   [ Backported bug fix from No Gnus. ]

   * lisp/gnus/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.

   * lisp/gnus/gnus-util.el (gnus-group-server): Copy required macro from No Gnus.

Revision: emacs@sv.gnu.org/emacs--devo--0--patch-410

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

index 6ddd513610a7bb71759329a6ec0eae4bb5e82e42..6927e3bfbac5f1548efa90771e3abc7d642c878f 100644 (file)
@@ -1,3 +1,14 @@
+2006-08-23  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+       [ Backported bug fix from No Gnus. ]
+
+       * 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): Copy required macro from No Gnus.
+
 2006-08-13  Romain Francoise  <romain@orebokech.com>
 
        * mm-extern.el (mm-extern-mail-server): End `y-or-n-p' prompt with a
index 6b525fc490cc266d9d8aa55937851be726a728cd..6f706fabce584372d6076bbb09f8abd78d6e1e22 100644 (file)
@@ -607,6 +607,17 @@ If N, return the Nth ancestor instead."
         (substring gname (match-end 0))
        gname)))
 
+(defmacro gnus-group-server (group)
+  "Find the server name of a foreign newsgroup.
+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) (or
+                                                (match-string 2 gname)
+                                                ""))
+       (format "%s:%s" (car gnus-select-method) (cadr gnus-select-method)))))
+
 (defun gnus-make-sort-function (funs)
   "Return a composite sort condition based on the functions in FUNS."
   (cond
index 7a04c61151a9c39dab2ec9a499e4a37a50694982..8554b1332f1acd454d7f685e1bbfc8499f9717a8 100644 (file)
@@ -4079,8 +4079,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)