Function: gnus-server-to-method
gnus-server-to-method is a byte-compiled function defined in
gnus.el.gz.
Signature
(gnus-server-to-method SERVER)
Documentation
Map virtual server names to select methods.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus.el.gz
(defsubst gnus-server-to-method (server)
"Map virtual server names to select methods."
(or (and server (listp server) server)
(cdr (assoc server gnus-server-method-cache))
(let ((result
(or
;; Perhaps this is the native server?
(and (equal server "native") gnus-select-method)
;; It should be in the server alist.
(cdr (assoc server gnus-server-alist))
;; It could be in the predefined server alist.
(cdr (assoc server gnus-predefined-server-alist))
;; If not, we look through all the opened server
;; to see whether we can find it there.
(let ((opened gnus-opened-servers))
(while (and opened
(not (equal server (format "%s:%s" (caaar opened)
(cadaar opened)))))
(pop opened))
(caar opened))
;; It could be a named method, search all servers
(let ((servers gnus-secondary-select-methods))
(while (and servers
(not (equal server (format "%s:%s" (caar servers)
(cadar servers)))))
(pop servers))
(car servers))
;; This could be some sort of foreign server that I
;; simply haven't opened (yet). Do a brute-force scan
;; of the entire gnus-newsrc-alist for the server name
;; of every method. As a side-effect, loads the
;; gnus-server-method-cache so this only happens once,
;; if at all.
(let ((alist (cdr gnus-newsrc-alist))
method match)
(while alist
(setq method (gnus-info-method (pop alist)))
(when (and (not (stringp method))
(equal server
(gnus-method-to-server method nil t)))
(setq match method
alist nil)))
match))))
(when (and result
(not (assoc server gnus-server-method-cache)))
(push (cons server result) gnus-server-method-cache))
result)))