From 3bd358dc36d6c7397772b1e17772e44138c380d3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 18 Oct 2021 01:24:28 +0200 Subject: [PATCH] fix(lookup): +lookup/online for vertico users Would formerly throw wrong-number-of-args errors. --- modules/tools/lookup/autoload/online.el | 45 ++++++++++++------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/modules/tools/lookup/autoload/online.el b/modules/tools/lookup/autoload/online.el index c7473b05f..69696721e 100644 --- a/modules/tools/lookup/autoload/online.el +++ b/modules/tools/lookup/autoload/online.el @@ -36,30 +36,27 @@ QUERY must be a string, and PROVIDER must be a key of (interactive (list (if (use-region-p) (doom-thing-at-point-or-region)) (+lookup--online-provider current-prefix-arg))) - (let ((backend (cl-find-if (lambda (x) (or (stringp x) (fboundp x))) - (cdr (assoc provider +lookup-provider-url-alist))))) - (unless (and (functionp backend) - (funcall backend query)) - (unless backend - (user-error "%S is an invalid query engine backend for %S provider" - backend provider)) - (cl-check-type backend (or string function)) - (condition-case-unless-debug e - (progn - (unless query - (setq query - (read-string (format "Search for (on %s): " provider) - (thing-at-point 'symbol t)))) - (when (or (functionp backend) (symbolp backend)) - (setq backend (funcall backend))) - (when (string-empty-p query) - (user-error "The query query is empty")) - (funcall +lookup-open-url-fn (format backend (url-encode-url query)))) - (error - (setq +lookup--last-provider - (delq (assq major-mode +lookup--last-provider) - +lookup--last-provider)) - (signal (car e) (cdr e))))))) + (let ((backends (cdr (assoc provider +lookup-provider-url-alist)))) + (unless backends + (user-error "No available online lookup backend for %S provider" + provider)) + (catch 'done + (dolist (backend backends) + (cl-check-type backend (or string function)) + (cond ((stringp backend) + (funcall +lookup-open-url-fn + (format backend + (url-encode-url + (or query + (read-string (format "Search for (on %s): " provider) + (thing-at-point 'symbol t))))))) + ((condition-case-unless-debug e + (and (fboundp backend) + (funcall backend query)) + (error + (delq! major-mode +lookup--last-provider 'assq) + (signal (car e) (cdr e)))) + (throw 'done t))))))) ;;;###autoload (defun +lookup/online-select ()