summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/byte-opt.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-10-17 21:29:59 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2021-10-17 21:29:59 +0200
commit50296843582b13d3e43c4215c7c4e98e44ce650f (patch)
tree2eabc5a79ac411ea3d970c360826d2d0d1489276 /lisp/emacs-lisp/byte-opt.el
parent94fe416c9544ddeb6973c6fa8fb6d77b42dfbd62 (diff)
downloademacs-50296843582b13d3e43c4215c7c4e98e44ce650f.tar.gz
emacs-50296843582b13d3e43c4215c7c4e98e44ce650f.tar.bz2
emacs-50296843582b13d3e43c4215c7c4e98e44ce650f.zip
Reinstate defvar-keymap expansion
* lisp/emacs-lisp/byte-opt.el (byte-optimize-define-keymap--define): Make more robust.
Diffstat (limited to 'lisp/emacs-lisp/byte-opt.el')
-rw-r--r--lisp/emacs-lisp/byte-opt.el19
1 files changed, 11 insertions, 8 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index aa57e022c5a..abfc9b3b316 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1237,14 +1237,17 @@ See Info node `(elisp) Integer Basics'."
(defun byte-optimize-define-keymap--define (form)
"Expand key bindings in FORM."
- (let ((optimized (byte-optimize-define-keymap (nth 1 form))))
- (if (eq optimized (nth 1 form))
- ;; No improvement.
- form
- (list (car form) optimized))))
-
-;;(put 'define-keymap 'byte-optimizer #'byte-optimize-define-keymap)
-;;(put 'define-keymap--define 'byte-optimizer #'byte-optimize-define-keymap--define)
+ (if (not (consp (nth 1 form)))
+ form
+ (let ((optimized (byte-optimize-define-keymap (nth 1 form))))
+ (if (eq optimized (nth 1 form))
+ ;; No improvement.
+ form
+ (list (car form) optimized)))))
+
+(put 'define-keymap 'byte-optimizer #'byte-optimize-define-keymap)
+(put 'define-keymap--define 'byte-optimizer
+ #'byte-optimize-define-keymap--define)
;; I'm not convinced that this is necessary. Doesn't the optimizer loop
;; take care of this? - Jamie