Refactor doom--define-leader-key helper

And mark it as a hack, which it is, Mr. Anderson.
This commit is contained in:
Henrik Lissner 2019-07-23 18:14:34 +02:00
parent 58ab20ec5f
commit 003febd54c
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -79,8 +79,8 @@ If any hook returns non-nil, all hooks after it are ignored.")
(defalias 'define-key! #'general-def) (defalias 'define-key! #'general-def)
(defalias 'unmap! #'general-unbind)) (defalias 'unmap! #'general-unbind))
;; `map!' uses this instead of `define-leader-key!' because it consumes 20-30% ;; HACK `map!' uses this instead of `define-leader-key!' because it consumes
;; more startup time, so we reimplement it ourselves. ;; 20-30% more startup time, so we reimplement it ourselves.
(defmacro doom--define-leader-key (&rest keys) (defmacro doom--define-leader-key (&rest keys)
(let (prefix forms wkforms) (let (prefix forms wkforms)
(while keys (while keys
@ -100,19 +100,16 @@ If any hook returns non-nil, all hooks after it are ignored.")
,bdef) ,bdef)
forms)) forms))
(when-let (desc (cadr (memq :which-key udef))) (when-let (desc (cadr (memq :which-key udef)))
(push `(which-key-add-key-based-replacements (prependq!
wkforms `((which-key-add-key-based-replacements
(general--concat t doom-leader-alt-key ,key) (general--concat t doom-leader-alt-key ,key)
,desc) ,desc)
wkforms) (which-key-add-key-based-replacements
(push `(which-key-add-key-based-replacements
(general--concat t doom-leader-key ,key) (general--concat t doom-leader-key ,key)
,desc) ,desc))))))))
wkforms))))))
(macroexp-progn (macroexp-progn
(append (nreverse forms) (cons `(after! which-key ,@(nreverse wkforms))
(when wkforms (nreverse forms)))))
`((after! which-key
,@(nreverse wkforms))))))))
(defmacro define-leader-key! (&rest args) (defmacro define-leader-key! (&rest args)
"Define <leader> keys. "Define <leader> keys.