From d6964209242bcb54fe4314fdb4214c503c653722 Mon Sep 17 00:00:00 2001 From: noctuid Date: Sat, 6 Jan 2018 01:44:52 -0500 Subject: Allow auxiliary maps to be intercept maps --- evil-core.el | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/evil-core.el b/evil-core.el index 125c166..aa1cf6e 100644 --- a/evil-core.el +++ b/evil-core.el @@ -476,11 +476,15 @@ higher precedence. See also `evil-make-intercept-map'." (define-key copy key (or state 'all)) (define-key keymap key copy)))) -(defun evil-make-intercept-map (keymap &optional state) +(defun evil-make-intercept-map (keymap &optional state aux) "Give KEYMAP precedence over all Evil keymaps in STATE. -If STATE is nil, give it precedence over all states. -See also `evil-make-overriding-map'." - (let ((key [intercept-state])) +If STATE is nil, give it precedence over all states. If AUX is non-nil, make the +auxiliary keymap corresponding to KEYMAP in STATE an intercept keymap instead of +KEYMAP itself. See also `evil-make-overriding-map'." + (let ((key [intercept-state]) + (keymap (if aux + (evil-get-auxiliary-keymap keymap state t t) + keymap))) (define-key keymap key (or state 'all)))) (defmacro evil-define-keymap (keymap doc &rest body) @@ -810,7 +814,9 @@ See also `evil-mode-for-keymap'." (let* ((state (or state evil-state)) result) (dolist (map (current-active-maps)) - (when (setq map (evil-intercept-keymap-p map state)) + (when (setq map (or (evil-intercept-keymap-p map state) + (evil-intercept-keymap-p + (evil-get-auxiliary-keymap map state) state))) (push (cons (evil-mode-for-keymap map t) map) result))) (setq result (nreverse result)) result)) -- cgit v1.0