Function: gnus-read-method

gnus-read-method is a byte-compiled function defined in gnus.el.gz.

Signature

(gnus-read-method PROMPT)

Documentation

Prompt the user for a method.

Allow completion over sensible values.

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/gnus.el.gz
(defun gnus-read-method (prompt)
  "Prompt the user for a method.
Allow completion over sensible values."
  (let* ((open-servers
	  (mapcar (lambda (i) (cons (format "%s:%s" (caar i) (cadar i)) i))
		  gnus-opened-servers))
	 (valid-methods
	  (let (methods)
	    (dolist (method gnus-valid-select-methods)
	      (if (or (memq 'prompt-address method)
		      (not (assoc (format "%s:" (car method)) open-servers)))
		  (push method methods)))
	    methods))
	 (servers
	  (append valid-methods
		  open-servers
		  gnus-predefined-server-alist
		  gnus-server-alist))
	 (method
	  (gnus-completing-read
	   prompt (mapcar #'car servers)
	   t nil 'gnus-method-history)))
    (cond
     ((equal method "")
      (setq method gnus-select-method))
     ((assoc method gnus-valid-select-methods)
      (let ((address (if (memq 'prompt-address
			       (assoc method gnus-valid-select-methods))
			 (read-string "Address: ")
		       "")))
	(or (cadr (assoc (format "%s:%s" method address) open-servers))
	    (list (intern method) address))))
     ((assoc method servers)
      method)
     (t
      (list (intern method) "")))))