diff options
| author | noctuid <noct@openmailbox.org> | 2018-01-06 01:44:52 -0500 |
|---|---|---|
| committer | noctuid <noct@openmailbox.org> | 2018-01-08 13:30:03 -0500 |
| commit | d6964209242bcb54fe4314fdb4214c503c653722 (patch) | |
| tree | 1edd6d88114a12777ff6b3543ba14f4dfe54625e /evil-core.el | |
| parent | d5e3a83a5783fb0317efbe349bb6a03e65011506 (diff) | |
Allow auxiliary maps to be intercept maps
Diffstat (limited to 'evil-core.el')
| -rw-r--r-- | evil-core.el | 16 |
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)) |
