mirror of
https://github.com/doomemacs/doomemacs.git
synced 2026-03-26 08:10:39 -07:00
fix(keybinds): ensure localleader sub-key is a prefix in leader map
When `doom-localleader-key' is a sub-key of `doom-leader-key' (e.g. "S m" under "S"), intermediate minor-mode keymaps like evil-snipe can bind the leader key to a command, blocking Emacs' prefix key merging. Localleader bindings in mode aux keymaps become unreachable even though which-key displays them. Create a sparse keymap prefix for the sub-key in `doom-leader-map' so the lookup always succeeds through the leader path. Fix: #8562 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a0d6aac43f
commit
6bc236e8f3
1 changed files with 13 additions and 0 deletions
|
|
@ -230,6 +230,19 @@ localleader prefix."
|
|||
(define-key map (kbd doom-leader-alt-key) 'doom/leader))
|
||||
(evil-define-key* doom-leader-key-states map (kbd doom-leader-key) 'doom/leader)
|
||||
(evil-define-key* doom-leader-alt-key-states map (kbd doom-leader-alt-key) 'doom/leader))
|
||||
;; HACK: When `doom-localleader-key' is a sub-key of `doom-leader-key'
|
||||
;; (e.g. "S m" under "S"), intermediate minor-mode keymaps (like
|
||||
;; evil-snipe binding "S" to a command) can block Emacs' prefix key
|
||||
;; merging, preventing localleader bindings in mode aux keymaps from
|
||||
;; being reached. Ensure the sub-key is a prefix in `doom-leader-map'
|
||||
;; so the lookup always succeeds through the leader path.
|
||||
(when (and doom-localleader-key doom-leader-key
|
||||
(string-prefix-p (concat doom-leader-key " ")
|
||||
doom-localleader-key))
|
||||
(let ((sub-key (substring doom-localleader-key
|
||||
(1+ (length doom-leader-key)))))
|
||||
(unless (lookup-key doom-leader-map (kbd sub-key))
|
||||
(define-key doom-leader-map (kbd sub-key) (make-sparse-keymap)))))
|
||||
(general-override-mode +1))))
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue