Function: gnus-search-server-to-engine
gnus-search-server-to-engine is an autoloaded and byte-compiled
function defined in gnus-search.el.gz.
Signature
(gnus-search-server-to-engine SRV)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-search.el.gz
;; This should be done once at Gnus startup time, when the servers are
;; first opened, and the resulting engine instance attached to the
;; server.
(defun gnus-search-server-to-engine (srv)
(let* ((method (gnus-server-to-method srv))
(engine-config (assoc 'gnus-search-engine (cddr method)))
(server (or (cdr-safe
(assoc-string srv gnus-search-engine-instance-alist t))
(nth 1 engine-config)
(cdr-safe (assoc (car method) gnus-search-default-engines))
(when-let ((old (assoc 'nnir-search-engine
(cddr method))))
(nnheader-message
8 "\"nnir-search-engine\" is no longer a valid parameter")
(nth 1 old))))
inst)
(setq server
(pcase server
('notmuch 'gnus-search-notmuch)
('namazu 'gnus-search-namazu)
('find-grep 'gnus-search-find-grep)
('imap 'gnus-search-imap)
(_ server))
inst
(cond
((null server) nil)
((eieio-object-p server)
server)
((class-p server)
(make-instance server))
(t nil)))
(if inst
(unless (assoc-string srv gnus-search-engine-instance-alist t)
(when (cddr engine-config)
;; We're not being completely backward-compatible here,
;; because we're not checking for nnir-specific config
;; options in the server definition.
(pcase-dolist (`(,key ,value) (cddr engine-config))
(condition-case nil
(setf (slot-value inst key) value)
((invalid-slot-name invalid-slot-type)
(nnheader-report 'search
"Invalid search engine parameter: (%s %s)"
key value)))))
(push (cons srv inst) gnus-search-engine-instance-alist))
(signal 'gnus-search-config-error
(list (format-message
"No search engine configured for %s" srv))))
inst))