Fix wrong which-key labels & leader key precedence
This changes how leader keys are bound, to fix an issue where the wrong which-key label was assigned to the wrong keys, and cases where the leader key was being shadowed by other minor mode mappings. Unfortunately, this new method adds 10-20% to startup times. I'll address this in a future patch. For now, correctness is more important. Also fixes dashboard keybind detection.
This commit is contained in:
parent
6992e27884
commit
63a224f0e8
2 changed files with 18 additions and 19 deletions
|
@ -55,21 +55,16 @@ If any hook returns non-nil, all hooks after it are ignored.")
|
|||
|
||||
;; leader/localleader keys
|
||||
(define-prefix-command 'doom-leader 'doom-leader-map)
|
||||
(define-key doom-leader-map [override-state] 'all)
|
||||
|
||||
(global-set-key (kbd doom-leader-alt-key) 'doom-leader)
|
||||
(after! evil
|
||||
(global-set-key (kbd doom-leader-alt-key) nil)
|
||||
(general-define-key :states '(emacs insert) doom-leader-alt-key 'doom-leader)
|
||||
(general-define-key :states '(normal visual motion replace) doom-leader-key 'doom-leader))
|
||||
(defvar doom-leader-alist `((t . ,doom-leader-map)))
|
||||
(add-to-list 'emulation-mode-map-alists 'doom-leader-alist)
|
||||
|
||||
;; We avoid `general-create-definer' to ensure that :states, :wk-full-keys and
|
||||
;; :keymaps cannot be overwritten.
|
||||
(defmacro define-leader-key! (&rest args)
|
||||
`(general-define-key
|
||||
:states nil
|
||||
:wk-full-keys nil
|
||||
:keymaps 'doom-leader-map
|
||||
:prefix doom-leader-alt-key
|
||||
,@args))
|
||||
|
||||
(general-create-definer define-localleader-key!
|
||||
|
@ -80,6 +75,14 @@ If any hook returns non-nil, all hooks after it are ignored.")
|
|||
;; Because :non-normal-prefix doesn't work for non-evil sessions (only evil's
|
||||
;; emacs state), we must redefine `define-localleader-key!' once evil is loaded
|
||||
(after! evil
|
||||
(defmacro define-leader-key! (&rest args)
|
||||
`(general-define-key
|
||||
:states '(normal visual motion insert)
|
||||
:keymaps 'doom-leader-map
|
||||
:prefix doom-leader-key
|
||||
:non-normal-prefix doom-leader-alt-key
|
||||
,@args))
|
||||
|
||||
(general-create-definer define-localleader-key!
|
||||
:states (cdr general-describe-evil-states)
|
||||
:major-modes t
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue