From 039df5e777047ee2a7105029dda8fa2ac5520b89 Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Thu, 1 Jun 2017 12:18:21 +0800 Subject: [PATCH] Provide a bit more backward-compatibility * lisp/gnus/gnus-search.el (nnir-method-default-engines): Note obsolete variable. (gnus-search-server-to-engine): Handle old 'nnir-search-engine server parameter keys. Additionally, warn when no engine can be found for a server. --- lisp/gnus/gnus-search.el | 45 +++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el index af56c4b9332..a0252d71560 100644 --- a/lisp/gnus/gnus-search.el +++ b/lisp/gnus/gnus-search.el @@ -1041,6 +1041,9 @@ quirks.") (eieio-oset-default 'gnus-search-notmuch 'raw-queries-p gnus-search-notmuch-raw-queries-p) +(make-obsolete-variable 'nnir-method-default-engines + "see `gnus-search-default-engines'" "26.1") + (defcustom gnus-search-default-engines '((nnimap gnus-search-imap) (nntp gnus-search-gmane)) "Alist of default search engines keyed by server method." @@ -2089,30 +2092,38 @@ remaining string, then adds all that to the top-level spec." ;; 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 (server) - (let* ((server - (or (assoc 'gnus-search-engine - (cddr (gnus-server-to-method server))) - (assoc (car (gnus-server-to-method server)) - gnus-search-default-engines))) +(defun gnus-search-server-to-engine (srv) + (let* ((method (gnus-server-to-method srv)) + (server + (or (assoc 'gnus-search-engine (cddr method)) + (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") + (pcase old + ('notmuch 'gnus-search-notmuch) + ('namazu 'gnus-search-notmuch) + ('find-grep 'gnus-search-find-grep))))) (inst (cond ((null server) nil) ((eieio-object-p (cadr server)) - (car server)) + (cadr server)) ((class-p (cadr server)) (make-instance (cadr server))) (t nil)))) - (when inst - (when (cddr server) - (pcase-dolist (`(,key ,value) (cddr server)) - (condition-case nil - (setf (slot-value inst key) value) - ((invalid-slot-name invalid-slot-type) - (nnheader-message - 5 "Invalid search engine parameter: (%s %s)" - key value))))) - inst))) + (if inst + (when (cddr server) + (pcase-dolist (`(,key ,value) (cddr server)) + (condition-case nil + (setf (slot-value inst key) value) + ((invalid-slot-name invalid-slot-type) + (nnheader-message + 5 "Invalid search engine parameter: (%s %s)" + key value))))) + (nnheader-message 5 "No search engine defined for %s" srv)) + inst)) (autoload 'nnimap-make-thread-query "nnimap") (declare-function gnus-registry-get-id-key "gnus-registry" (id key)) -- 2.39.5