aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornoctuid <noct@openmailbox.org>2018-01-06 01:44:52 -0500
committernoctuid <noct@openmailbox.org>2018-01-08 13:30:03 -0500
commitd6964209242bcb54fe4314fdb4214c503c653722 (patch)
tree1edd6d88114a12777ff6b3543ba14f4dfe54625e
parentd5e3a83a5783fb0317efbe349bb6a03e65011506 (diff)
Allow auxiliary maps to be intercept maps
-rw-r--r--evil-core.el16
1 files 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))