Function: erc-networks--server-select

erc-networks--server-select is a byte-compiled function defined in erc-networks.el.gz.

Signature

(erc-networks--server-select)

Documentation

Prompt for a server in erc-server-alist and return its irc(s):// URL.

Choose port at random if multiple candidates exist, but always prefer TLS without asking. When a port can't be determined, return the host alone sans URL formatting (for compatibility).

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc-networks.el.gz
(defun erc-networks--server-select ()
  "Prompt for a server in `erc-server-alist' and return its irc(s):// URL.
Choose port at random if multiple candidates exist, but always
prefer TLS without asking.  When a port can't be determined,
return the host alone sans URL formatting (for compatibility)."
  (let* ((completion-ignore-case t)
	 (net (intern
	       (completing-read "Network: "
				(delete-dups
				 (mapcar (lambda (x)
                                           (list (nth 1 x)))
					 erc-server-alist)))))
         (s-choose (lambda (entry)
                     (and (equal (nth 1 entry) net)
                          (if-let* ((b (string-search ": " (car entry))))
                              (cons (format "%s (%s)" (nth 2 entry)
                                            (substring (car entry) (+ b 2)))
                                    (cdr entry))
                            entry))))
         (s-entries (delq nil (mapcar s-choose erc-server-alist)))
         (srv (assoc (completing-read "Server: " s-entries) s-entries))
	 (host (nth 2 srv))
         (pspec (nthcdr 3 srv))
         (ports (erc-ports-list (or (cadr pspec) (car pspec))))
         (scheme (if (cdr pspec) "ircs" "irc")))
    (if ports (format "%s://%s:%d" scheme host (seq-random-elt ports)) host)))