Hi List,

I don't switch between evil states and emacs states quite often and so
use C-z for a more used command.[1]

In viper there was `viper-toggle-key', appended is a patch to add
`evil-toggle-key' and adjust the keys to it.

Michael

Footnotes:

[1] Yes I can redefine them myself, but that results in 4 quite ugly lines.

From ecb10dded952ceac06e0c581ccaffc71a996af6c Mon Sep 17 00:00:00 2001
From: Michael Markert <[email protected]>
Date: Sun, 7 Aug 2011 23:10:16 +0200
Subject: [PATCH] Add `evil-toggle-key' custom for normal/emacs state
 toggling.

Signed-off-by: Michael Markert <[email protected]>
---
 evil-maps.el |    4 ++--
 evil-vars.el |   20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/evil-maps.el b/evil-maps.el
index 27af181..68d04be 100644
--- a/evil-maps.el
+++ b/evil-maps.el
@@ -236,7 +236,7 @@
 (define-key evil-motion-state-map (kbd "C-f") 'evil-scroll-page-down)
 (define-key evil-motion-state-map (kbd "C-o") 'evil-jump-backward)
 (define-key evil-motion-state-map (kbd "C-y") 'evil-scroll-line-up)
-(define-key evil-motion-state-map (kbd "C-z") 'evil-emacs-state)
+(define-key evil-motion-state-map (read-kbd-macro evil-toggle-key) 'evil-emacs-state)
 (define-key evil-motion-state-map (kbd "RET") 'evil-ret)
 (define-key evil-motion-state-map "z^" 'evil-scroll-top-line-to-bottom)
 (define-key evil-motion-state-map "z+" 'evil-scroll-bottom-line-to-top)
@@ -292,7 +292,7 @@
 
 ;;; Emacs state
 
-(define-key evil-emacs-state-map "\C-z" 'evil-exit-emacs-state)
+(define-key evil-emacs-state-map (read-kbd-macro evil-toggle-key) 'evil-exit-emacs-state)
 
 ;;; Minibuffer
 
diff --git a/evil-vars.el b/evil-vars.el
index fa44844..2d1cc6a 100644
--- a/evil-vars.el
+++ b/evil-vars.el
@@ -88,6 +88,26 @@ which causes the parenthesis to be highlighted."
   :type 'boolean
   :group 'evil)
 
+(defcustom evil-toggle-key "C-z"
+  "The key used to change from motion/normal state to emacs and back.
+
+Enter as `READ-KBD-MACRO' readable string. Example: \"C-z\"."
+  :type 'string
+  :group 'evil
+  :set (lambda (sym value)
+         (let ((old-value (if (boundp 'evil-toggle-key)
+                              evil-toggle-key
+                            "C-z")))
+           (when (and (boundp 'evil-motion-state-map)
+                      (keymapp evil-motion-state-map))
+             (define-key evil-motion-state-map (read-kbd-macro value) 'evil-emacs-state)
+             (define-key evil-motion-state-map (read-kbd-macro old-value) nil))
+           (when (and (boundp 'evil-emacs-state-map)
+                      (keymapp evil-emacs-state-map))
+             (define-key evil-emacs-state-map (read-kbd-macro value) 'evil-exit-emacs-state)
+             (define-key evil-emacs-state-map (read-kbd-macro old-value) nil))
+           (set-default sym value))))
+
 (defcustom evil-emacs-state-modes
   '(bookmark-bmenu-mode
     bookmark-edit-annotation-mode
-- 
1.7.5.4

Attachment: pgpfg52ByGAxd.pgp
Description: PGP signature

_______________________________________________
implementations-list mailing list
[email protected]
https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list

Reply via email to