From 003febd54c94e06f897ab5049e6a28848ab9649e Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 23 Jul 2019 18:14:34 +0200 Subject: [PATCH] Refactor doom--define-leader-key helper And mark it as a hack, which it is, Mr. Anderson. --- core/core-keybinds.el | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/core/core-keybinds.el b/core/core-keybinds.el index b951b960f..440e6c464 100644 --- a/core/core-keybinds.el +++ b/core/core-keybinds.el @@ -79,8 +79,8 @@ If any hook returns non-nil, all hooks after it are ignored.") (defalias 'define-key! #'general-def) (defalias 'unmap! #'general-unbind)) -;; `map!' uses this instead of `define-leader-key!' because it consumes 20-30% -;; more startup time, so we reimplement it ourselves. +;; HACK `map!' uses this instead of `define-leader-key!' because it consumes +;; 20-30% more startup time, so we reimplement it ourselves. (defmacro doom--define-leader-key (&rest keys) (let (prefix forms wkforms) (while keys @@ -100,19 +100,16 @@ If any hook returns non-nil, all hooks after it are ignored.") ,bdef) forms)) (when-let (desc (cadr (memq :which-key udef))) - (push `(which-key-add-key-based-replacements - (general--concat t doom-leader-alt-key ,key) - ,desc) - wkforms) - (push `(which-key-add-key-based-replacements - (general--concat t doom-leader-key ,key) - ,desc) - wkforms)))))) + (prependq! + wkforms `((which-key-add-key-based-replacements + (general--concat t doom-leader-alt-key ,key) + ,desc) + (which-key-add-key-based-replacements + (general--concat t doom-leader-key ,key) + ,desc)))))))) (macroexp-progn - (append (nreverse forms) - (when wkforms - `((after! which-key - ,@(nreverse wkforms)))))))) + (cons `(after! which-key ,@(nreverse wkforms)) + (nreverse forms))))) (defmacro define-leader-key! (&rest args) "Define keys.