emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/engine-mode fae1bd4fdf: Fall back to define-key if keymap-


From: ELPA Syncer
Subject: [nongnu] elpa/engine-mode fae1bd4fdf: Fall back to define-key if keymap-set isn't bound
Date: Tue, 16 May 2023 11:59:20 -0400 (EDT)

branch: elpa/engine-mode
commit fae1bd4fdf7d102744505bf2a8f4dc88d5b8f2fd
Author: Harry R. Schwartz <hello@harryrschwartz.com>
Commit: Harry R. Schwartz <hello@harryrschwartz.com>

    Fall back to define-key if keymap-set isn't bound
    
    `keymap-set` was introduced in a recent version of Emacs. I switched to it 
in
    2.2.2 to allow more complex keybindings, but forgot it's unavailable in 
older
    versions! This checks whether `keymap-set` is available, uses it if it is, 
and
    reverts to `define-key` if it's not.
    
    Closes #57.
---
 engine-mode.el | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/engine-mode.el b/engine-mode.el
index cae3fa8b59..5945d6db8a 100644
--- a/engine-mode.el
+++ b/engine-mode.el
@@ -1,7 +1,7 @@
 ;;; engine-mode.el --- Define and query search engines from within Emacs
 
 ;; Author: Harry R. Schwartz <hello@harryrschwartz.com>
-;; Version: 2.2.2
+;; Version: 2.2.3
 ;; URL: https://github.com/hrs/engine-mode
 ;; Package-Requires: ((cl-lib "0.5"))
 
@@ -123,9 +123,18 @@ Defaults to `browse-url-browser-function'."
           (capitalize (symbol-name engine-name))))
 
 (defun engine/bind-key (engine-name keybinding)
+  "Bind KEYBINDING to ENGINE-NAME in the `engine-mode-prefixed-map'.
+
+Do nothing if KEYBINDING is nil.
+
+Use `keymap-set' instead of `define-key' if it's available, since
+it permits multiple keys in KEYBINDING."
   (when keybinding
-    `(keymap-set engine-mode-prefixed-map ,keybinding
-       (quote ,(engine/function-name engine-name)))))
+    (if (fboundp 'keymap-set)
+        `(keymap-set engine-mode-prefixed-map ,keybinding
+                     (quote ,(engine/function-name engine-name)))
+      `(define-key engine-mode-prefixed-map (kbd ,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))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]