branch: externals/hyperbole commit cff90c4a9a7a7dc00a1b6e1e92893fc7e5e42270 Author: Bob Weiner <r...@gnu.org> Commit: Bob Weiner <r...@gnu.org>
hyperbole-web-search: Handle functions as 'hyperbole-web-search-alist' values --- ChangeLog | 3 +++ hsettings.el | 27 +++++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 431d1d5753..b83aa65ddd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2022-04-24 Bob Weiner <r...@gnu.org> +* hsettings.el (hyperbole-web-search): Handle functions as + 'hyperbole-web-search-alist' values. + * FAST-DEMO (Introduction, Hyperbole Explicit and Global Buttons): Add. * Makefile (help): Update Hyperbole maintainer Makefile doc diff --git a/hsettings.el b/hsettings.el index afcbfc1b5d..0b09279919 100644 --- a/hsettings.el +++ b/hsettings.el @@ -3,7 +3,7 @@ ;; Author: Bob Weiner ;; ;; Orig-Date: 15-Apr-91 at 00:48:49 -;; Last-Mod: 17-Apr-22 at 11:18:39 by Bob Weiner +;; Last-Mod: 24-Apr-22 at 13:14:18 by Bob Weiner ;; ;; Copyright (C) 1991-2021 Free Software Foundation, Inc. ;; See the "HY-COPY" file for license information. @@ -141,7 +141,8 @@ lines" (defun hyperbole-default-web-search-term () "Return a default search term if region is active and not too large." (and (region-active-p) - (<= (count-lines (region-beginning) (region-end)) hyperbole-default-web-search-term-max-lines) + (<= (count-lines (region-beginning) (region-end)) + hyperbole-default-web-search-term-max-lines) (buffer-substring-no-properties (region-beginning) (region-end)))) (defun hyperbole-read-web-search-arguments (&optional service-name search-term) @@ -164,15 +165,16 @@ package to display search results." (interactive) (cl-multiple-value-bind (service-name search-term) (hyperbole-read-web-search-arguments service-name search-term) - (let ((search-pat (cdr (assoc service-name hyperbole-web-search-alist + (let ((browse-url-browser-function hyperbole-web-search-browser-function) + (search-pat (cdr (assoc service-name hyperbole-web-search-alist (lambda (service1 service2) (equal (downcase service1) (downcase service2))))))) - (if search-pat - (let ((browse-url-browser-function - hyperbole-web-search-browser-function)) - (browse-url - (format search-pat (browse-url-url-encode-chars search-term "[*\"()',=;?% ]")))) - (user-error "(Hyperbole): Invalid web search service `%s'" service-name))))) + (setq search-term (browse-url-url-encode-chars search-term "[*\"()',=;?% ]")) + (cond ((stringp search-pat) + (browse-url (format search-pat search-term))) + ((functionp search-pat) + (funcall search-pat search-term)) + (t (user-error "(Hyperbole): Invalid web search service `%s'" service-name)))))) ;; This must be defined before the defcustom `inhbit-hyperbole-messaging'. ;;;###autoload @@ -242,12 +244,13 @@ Hyperbole, and then restart Emacs." ("Twitter" . "https://twitter.com/search?q=%s") ("Wikipedia" . "https://en.wikipedia.org/wiki/%s") ("Youtube" . "https://www.youtube.com/results?search_query=%s")) - "*Alist of (web-service-name . url-with-%s-parameter-or-cmd) elements. + "*Alist of (web-service-name . emacs-cmd-or-url-with-%s-parameter) elements. The first capitalized character of each web-service-name must be unique. This custom option is used in the Hyperbole Find/Web menu where the %s in the url-with-%s-parameter is replaced with an interactively -obtained search string; if second argument is a command instead, then -it is called interactively to prompt for the search string." +obtained search term; if second argument is a command instead, then +it is called interactively to prompt for the search term with which it +then runs the search." :initialize #'custom-initialize-default :set (lambda (option value) (set option value)