diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-10-17 21:29:59 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-10-17 21:29:59 +0200 |
commit | 50296843582b13d3e43c4215c7c4e98e44ce650f (patch) | |
tree | 2eabc5a79ac411ea3d970c360826d2d0d1489276 /lisp/emacs-lisp/byte-opt.el | |
parent | 94fe416c9544ddeb6973c6fa8fb6d77b42dfbd62 (diff) | |
download | emacs-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.el | 19 |
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 |