Improve leader key initialization
And ensure leader key always has precedence. Indirectly fixes #1234
This commit is contained in:
parent
e0ed8669af
commit
8e866bb37f
1 changed files with 16 additions and 5 deletions
|
@ -29,6 +29,8 @@ This needs to be changed from $DOOMDIR/init.el.")
|
||||||
(defvar doom-leader-map (make-sparse-keymap)
|
(defvar doom-leader-map (make-sparse-keymap)
|
||||||
"An overriding keymap for <leader> keys.")
|
"An overriding keymap for <leader> keys.")
|
||||||
|
|
||||||
|
(defvar doom--which-key-leader-regexp nil)
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
(defvar doom-escape-hook nil
|
(defvar doom-escape-hook nil
|
||||||
|
@ -94,10 +96,19 @@ If any hook returns non-nil, all hooks after it are ignored.")
|
||||||
;; the user more changes to modify them.
|
;; the user more changes to modify them.
|
||||||
(defun doom|init-leader-keys ()
|
(defun doom|init-leader-keys ()
|
||||||
"Bind `doom-leader-key' and `doom-leader-alt-key'."
|
"Bind `doom-leader-key' and `doom-leader-alt-key'."
|
||||||
(global-set-key (kbd doom-leader-alt-key) 'doom/leader)
|
(let ((map general-override-mode-map))
|
||||||
(when (featurep 'evil)
|
(if (not (featurep 'evil))
|
||||||
(evil-define-key* '(emacs insert) 'global (kbd doom-leader-alt-key) 'doom/leader)
|
(define-key map (kbd doom-leader-alt-key) 'doom/leader)
|
||||||
(evil-define-key* '(normal visual motion) 'global (kbd doom-leader-key) 'doom/leader)))
|
(evil-define-key* '(normal visual motion) map (kbd doom-leader-key) 'doom/leader)
|
||||||
|
(evil-define-key* '(emacs insert) map (kbd doom-leader-alt-key) 'doom/leader)))
|
||||||
|
(setq doom--which-key-leader-regexp
|
||||||
|
(concat "\\(?:"
|
||||||
|
(let ((where (where-is-internal 'doom/leader
|
||||||
|
(list (current-global-map)))))
|
||||||
|
(cond (where (mapconcat #'key-description where "\\|"))
|
||||||
|
((stringp doom-leader-alt-key) (regexp-quote doom-leader-alt-key))
|
||||||
|
((regexp-quote (key-description doom-leader-alt-key)))))
|
||||||
|
"\\)")))
|
||||||
(add-hook 'doom-after-init-modules-hook #'doom|init-leader-keys)
|
(add-hook 'doom-after-init-modules-hook #'doom|init-leader-keys)
|
||||||
|
|
||||||
;; ...However, this approach (along with :wk-full-keys in `define-leader-key!')
|
;; ...However, this approach (along with :wk-full-keys in `define-leader-key!')
|
||||||
|
@ -129,7 +140,7 @@ If any hook returns non-nil, all hooks after it are ignored.")
|
||||||
"\\`"
|
"\\`"
|
||||||
;; Modification begin
|
;; Modification begin
|
||||||
(if (memq 'doom-leader-map keymaps)
|
(if (memq 'doom-leader-map keymaps)
|
||||||
(concat "\\`\\(?:" doom-leader-key "\\|" doom-leader-alt-key "\\) ")))
|
(concat "\\`" doom--which-key-leader-regexp " ")))
|
||||||
;; Modification end
|
;; Modification end
|
||||||
(regexp-quote key)
|
(regexp-quote key)
|
||||||
"\\'"))
|
"\\'"))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue