Function: nnmaildir-open-server
nnmaildir-open-server is a byte-compiled function defined in
nnmaildir.el.gz.
Signature
(nnmaildir-open-server SERVER-STRING &optional DEFS)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/nnmaildir.el.gz
(defun nnmaildir-open-server (server-string &optional defs)
(let ((server (alist-get server-string nnmaildir--servers
nil nil #'equal))
dir size x prefix)
(catch 'return
(if server
(and (nnmaildir--srv-groups server)
(setq nnmaildir--cur-server server)
(throw 'return t))
(setq server (make-nnmaildir--srv :address server-string))
(let ((inhibit-quit t))
(setf (alist-get server-string nnmaildir--servers
nil nil #'equal)
server)))
(setq dir (assq 'directory defs))
(unless dir
(setf (nnmaildir--srv-error server)
"You must set \"directory\" in the select method")
(throw 'return nil))
(setq dir (cadr dir)
dir (eval dir t) ;FIXME: Why `eval'?
dir (expand-file-name dir)
dir (file-name-as-directory dir))
(unless (file-exists-p dir)
(setf (nnmaildir--srv-error server) (concat "No such directory: " dir))
(throw 'return nil))
(setf (nnmaildir--srv-dir server) dir)
(setq x (assq 'directory-files defs))
(if (null x)
(setq x (if nnheader-directory-files-is-safe 'directory-files
'nnheader-directory-files-safe))
(setq x (cadr x))
(unless (functionp x)
(setf (nnmaildir--srv-error server)
(concat "Not a function: " (prin1-to-string x)))
(throw 'return nil)))
(setf (nnmaildir--srv-ls server) x)
(setq size (length (funcall x dir nil "\\`[^.]" 'nosort)))
(and (setq x (assq 'get-new-mail defs))
(setq x (cdr x))
(car x)
(setf (nnmaildir--srv-gnm server) t)
(require 'nnmail))
(setf prefix (cl-second (assq 'target-prefix defs))
(nnmaildir--srv-target-prefix server)
(if prefix
(eval prefix t)
""))
(setf (nnmaildir--srv-groups server)
(gnus-make-hashtable size))
(setq nnmaildir--cur-server server)
t)))