From eb3f36e3ae8317052c0153bed76453a48bb50085 Mon Sep 17 00:00:00 2001 From: Andreas Gerler Date: Tue, 13 Nov 2018 12:04:46 +0100 Subject: [PATCH] update engine-mode. Signed-off-by: Andreas Gerler --- .../engine-mode-autoloads.el | 15 ---- .../engine-mode-pkg.el | 1 - .../engine-mode-autoloads.el | 76 +++++++++++++++++++ .../engine-mode-pkg.el | 2 + .../engine-mode.el | 64 ++++++++++------ 5 files changed, 119 insertions(+), 39 deletions(-) delete mode 100644 elpa/engine-mode-20150902.1035/engine-mode-autoloads.el delete mode 100644 elpa/engine-mode-20150902.1035/engine-mode-pkg.el create mode 100644 elpa/engine-mode-20180401.1646/engine-mode-autoloads.el create mode 100644 elpa/engine-mode-20180401.1646/engine-mode-pkg.el rename elpa/{engine-mode-20150902.1035 => engine-mode-20180401.1646}/engine-mode.el (74%) diff --git a/elpa/engine-mode-20150902.1035/engine-mode-autoloads.el b/elpa/engine-mode-20150902.1035/engine-mode-autoloads.el deleted file mode 100644 index 5b7b8e7e..00000000 --- a/elpa/engine-mode-20150902.1035/engine-mode-autoloads.el +++ /dev/null @@ -1,15 +0,0 @@ -;;; engine-mode-autoloads.el --- automatically extracted autoloads -;; -;;; Code: -(add-to-list 'load-path (or (file-name-directory #$) (car load-path))) - -;;;### (autoloads nil nil ("engine-mode.el") (22215 7518 654616 0)) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; End: -;;; engine-mode-autoloads.el ends here diff --git a/elpa/engine-mode-20150902.1035/engine-mode-pkg.el b/elpa/engine-mode-20150902.1035/engine-mode-pkg.el deleted file mode 100644 index caefa1b5..00000000 --- a/elpa/engine-mode-20150902.1035/engine-mode-pkg.el +++ /dev/null @@ -1 +0,0 @@ -(define-package "engine-mode" "20150902.1035" "Define and query search engines from within Emacs." 'nil :url "https://github.com/hrs/engine-mode/engine-mode.el") diff --git a/elpa/engine-mode-20180401.1646/engine-mode-autoloads.el b/elpa/engine-mode-20180401.1646/engine-mode-autoloads.el new file mode 100644 index 00000000..8b5a02a4 --- /dev/null +++ b/elpa/engine-mode-20180401.1646/engine-mode-autoloads.el @@ -0,0 +1,76 @@ +;;; engine-mode-autoloads.el --- automatically extracted autoloads +;; +;;; Code: + +(add-to-list 'load-path (directory-file-name + (or (file-name-directory #$) (car load-path)))) + + +;;;### (autoloads nil "engine-mode" "engine-mode.el" (0 0 0 0)) +;;; Generated autoloads from engine-mode.el + +(defvar engine-mode nil "\ +Non-nil if Engine mode is enabled. +See the `engine-mode' command +for a description of this minor mode.") + +(custom-autoload 'engine-mode "engine-mode" nil) + +(autoload 'engine-mode "engine-mode" "\ +Minor mode for defining and querying search engines through Emacs. + +\\{engine-mode-map} + +\(fn &optional ARG)" t nil) + +(autoload 'defengine "engine-mode" "\ +Define a custom search engine. + +`engine-name' is a symbol naming the engine. +`search-engine-url' is the url to be queried, with a \"%s\" +standing in for the search term. +The optional keyword argument `docstring' assigns a docstring to +the generated function. A reasonably sensible docstring will be +generated if a custom one isn't provided. +The optional keyword argument `browser` assigns the browser +function to be used when opening the URL. +The optional keyword argument `term-transformation-hook' is a +function that will be applied to the search term before it's +substituted into `search-engine-url'. For example, if we wanted +to always upcase our search terms, we might use: + +\(defengine duckduckgo + \"https://duckduckgo.com/?q=%s\" + :term-transformation-hook 'upcase) + +In this case, searching for \"foobar\" will hit the url +\"https://duckduckgo.com/?q=FOOBAR\". + +The optional keyword argument `keybinding' is a string describing +the key to bind the new function. + +Keybindings are in the `engine-mode-map', so they're prefixed. + +For example, to search Wikipedia, use: + + (defengine wikipedia + \"http://www.wikipedia.org/search-redirect.php?language=en&go=Go&search=%s\" + :keybinding \"w\" + :docstring \"Search Wikipedia!\") + +Hitting \"C-x / w\" will be bound to the newly-defined +`engine/search-wikipedia' function. + +\(fn ENGINE-NAME SEARCH-ENGINE-URL &key KEYBINDING DOCSTRING (BROWSER \\='engine/browser-function) (TERM-TRANSFORMATION-HOOK \\='identity))" nil t) + +(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "engine-mode" '("engine"))) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; engine-mode-autoloads.el ends here diff --git a/elpa/engine-mode-20180401.1646/engine-mode-pkg.el b/elpa/engine-mode-20180401.1646/engine-mode-pkg.el new file mode 100644 index 00000000..64fabfae --- /dev/null +++ b/elpa/engine-mode-20180401.1646/engine-mode-pkg.el @@ -0,0 +1,2 @@ +;;; -*- no-byte-compile: t -*- +(define-package "engine-mode" "20180401.1646" "Define and query search engines from within Emacs." '((cl-lib "0.5")) :commit "fd5a235b2c93b95143d676e6b654e388d7cdd956" :authors '(("Harry R. Schwartz" . "hello@harryrschwartz.com")) :maintainer '("Harry R. Schwartz" . "hello@harryrschwartz.com") :url "https://github.com/hrs/engine-mode") diff --git a/elpa/engine-mode-20150902.1035/engine-mode.el b/elpa/engine-mode-20180401.1646/engine-mode.el similarity index 74% rename from elpa/engine-mode-20150902.1035/engine-mode.el rename to elpa/engine-mode-20180401.1646/engine-mode.el index 5a1fce1b..7342ad24 100644 --- a/elpa/engine-mode-20150902.1035/engine-mode.el +++ b/elpa/engine-mode-20180401.1646/engine-mode.el @@ -1,9 +1,10 @@ ;;; engine-mode.el --- Define and query search engines from within Emacs. ;; Author: Harry R. Schwartz -;; Version: 1.0.0 -;; Package-Version: 20150902.1035 -;; URL: https://github.com/hrs/engine-mode/engine-mode.el +;; Version: 2.1.0 +;; Package-Version: 20180401.1646 +;; URL: https://github.com/hrs/engine-mode +;; Package-Requires: ((cl-lib "0.5")) ;; This file is NOT part of GNU Emacs. @@ -24,13 +25,13 @@ ;; results in your default browser. ;; The `defengine' macro can also take an optional key combination, -;; prefixed with "C-c /": +;; prefixed with "C-x /": ;; (defengine duckduckgo ;; "https://duckduckgo.com/?q=%s" ;; :keybinding "d") -;; `C-c / d' is now bound to the new function +;; `C-x / d' is now bound to the new function ;; engine/search-duckduckgo'! Nifty. ;;; License: @@ -49,11 +50,23 @@ ;; along with this program. If not, see . ;;; Code: -(eval-when-compile (require 'cl)) +(eval-when-compile (require 'cl-macs)) -(defvar engine-mode-map (make-sparse-keymap)) -(defvar engine-mode-prefixed-map (make-sparse-keymap)) +(defcustom engine/keybinding-prefix "C-x /" + "The default engine-mode keybindings prefix." + :group 'engine-mode + :type 'string) + +(define-prefix-command 'engine-mode-prefixed-map) +(defvar engine-mode-prefixed-map) +(defvar engine-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd engine/keybinding-prefix) engine-mode-prefixed-map) + map) + "Keymap for `engine-mode'.") + +;;;###autoload (define-minor-mode engine-mode "Minor mode for defining and querying search engines through Emacs. @@ -63,24 +76,27 @@ (defun engine/set-keymap-prefix (prefix-key) "Bind the engine-mode keymap to a new prefix. -For example, to use \"C-c s\" instead of the default \"C-c /\": +For example, to use \"C-c s\" instead of the default \"C-x /\": -(engine/set-keymap-prefix (kbd \"C-c s\"))" +\(engine/set-keymap-prefix (kbd \"C-c s\"))" + (define-key engine-mode-map (kbd engine/keybinding-prefix) nil) (define-key engine-mode-map prefix-key engine-mode-prefixed-map)) -(engine/set-keymap-prefix (kbd "C-c /")) - -(defcustom engine/browser-function browse-url-browser-function +(defcustom engine/browser-function nil "The default browser function used when opening a URL in an engine. -Defaults to `browse-url-browser-function'." +Defaults to `nil' which means to go with `browse-url-browser-function'." :group 'engine-mode :type 'symbol) -(defun engine/search-prompt (engine-name) - (concat "Search " (capitalize engine-name) ": ")) +(defun engine/search-prompt (engine-name default-word) + (if (string= default-word "") + (format "Search %s: " (capitalize engine-name)) + (format "Search %s (%s): " (capitalize engine-name) default-word))) (defun engine/prompted-search-term (engine-name) - (read-string (engine/search-prompt engine-name) (thing-at-point 'symbol))) + (let ((current-word (or (thing-at-point 'symbol) ""))) + (read-string (engine/search-prompt engine-name current-word) + nil nil current-word))) (defun engine/get-query (engine-name) "Return the selected region (if any) or prompt the user for a query." @@ -91,10 +107,11 @@ Defaults to `browse-url-browser-function'." (defun engine/execute-search (search-engine-url browser-function search-term) "Display the results of the query." (interactive) - (let ((browse-url-browser-function browser-function)) + (let ((browse-url-browser-function (or browser-function + browse-url-browser-function))) (browse-url - (format search-engine-url - (url-hexify-string search-term))))) + (format-spec search-engine-url + (format-spec-make ?s (url-hexify-string search-term)))))) (defun engine/function-name (engine-name) (intern (concat "engine/search-" (downcase (symbol-name engine-name))))) @@ -109,6 +126,7 @@ Defaults to `browse-url-browser-function'." `(define-key engine-mode-prefixed-map ,keybinding (quote ,(engine/function-name engine-name))))) +;;;###autoload (cl-defmacro defengine (engine-name search-engine-url &key keybinding docstring (browser 'engine/browser-function) (term-transformation-hook 'identity)) "Define a custom search engine. @@ -125,7 +143,7 @@ function that will be applied to the search term before it's substituted into `search-engine-url'. For example, if we wanted to always upcase our search terms, we might use: -(defengine duckduckgo +\(defengine duckduckgo \"https://duckduckgo.com/?q=%s\" :term-transformation-hook 'upcase) @@ -144,10 +162,10 @@ For example, to search Wikipedia, use: :keybinding \"w\" :docstring \"Search Wikipedia!\") -Hitting \"C-c / w\" will be bound to the newly-defined +Hitting \"C-x / w\" will be bound to the newly-defined `engine/search-wikipedia' function." - (assert (symbolp engine-name)) + (cl-assert (symbolp engine-name)) `(prog1 (defun ,(engine/function-name engine-name) (search-term) ,(or docstring (engine/docstring engine-name)) -- 2.47.3