[PATCH] Fix for issue #301
Max Mikhanosha
max at openchat.com
Mon Jun 3 00:24:47 CEST 2013
At Sun, 02 Jun 2013 18:07:06 -0400,
In fact relying on symbol name parsing is not needed, I did not
realize there's already `evil-mode-for-keymap' function, which could
be used instead. Feel free to adjust my patch accordingly.
Max Mikhanosha wrote:
>
>
> From e4b59630cf40106d9afaf3544094dc27e3a2e840 Mon Sep 17 00:00:00 2001
> From: Max Mikhanosha <max at openchat.com>
> Date: Sun, 2 Jun 2013 18:03:27 -0400
> Subject: [PATCH] In (evil-define-key) is done for a minor mode, try to
> arrange for `evil-normalize-keymaps' to be called when mode
> is toggled
>
> ---
> evil-core.el | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/evil-core.el b/evil-core.el
> index 18e88d6..662cf0e 100644
> --- a/evil-core.el
> +++ b/evil-core.el
> @@ -866,6 +866,16 @@ (defun evil-overriding-keymap-state (map)
> (t
> state))))
>
> +(defun evil-maybe-hook-minor-mode (keymap)
> + "If KEYMAP belongs to a minor mode, add `evil-normalize-keymaps' to mode hook"
> + (when (and (symbolp keymap)
> + (string-match "^\\(.+\\)-\\(?:map\\|keymap\\)$"
> + (symbol-name keymap)))
> + (let ((mode-symbol (intern (match-string 1 (symbol-name keymap)))))
> + (when (memq mode-symbol minor-mode-list)
> + (let ((hook-symbol (intern (format "%s-hook" mode-symbol))))
> + (add-hook hook-symbol 'evil-normalize-keymaps))))))
> +
> (defmacro evil-define-key (state keymap key def &rest bindings)
> "Create a STATE binding from KEY to DEF for KEYMAP.
> STATE is one of `normal', `insert', `visual', `replace',
> @@ -898,7 +908,8 @@ (defmacro evil-define-key (state keymap key def &rest bindings)
> (setq key (pop bindings)
> def (pop bindings)))
> ;; ensure the prompt string comes first
> - (evil-set-keymap-prompt aux (keymap-prompt aux)))
> + (evil-set-keymap-prompt aux (keymap-prompt aux))
> + (evil-maybe-hook-minor-mode ',keymap))
> 'after-load-functions t nil
> (format "evil-define-key-in-%s"
> ',(if (symbolp keymap) keymap 'keymap))))
> --
> 1.7.11.rc0.100.g5498c5f
>
More information about the implementations-list
mailing list