5
5
; ; Author: Sylvain Benner <sylvain.benner@gmail.com>
6
6
; ; Keywords: convenience editing evil
7
7
; ; Created: 22 Oct 2014
8
- ; ; Version: 3.06
8
+ ; ; Version: 3.07
9
9
; ; Package-Requires: ((emacs "24") (evil "1.0.9"))
10
10
; ; URL: https://github.com/syl20bnr/evil-escape
11
11
55
55
; ; The delay between the two key presses can be customized with
56
56
; ; the variable `evil-escape-delay' . Default is `0.1' .
57
57
58
+ ; ; The key sequence can be entered in any order by setting
59
+ ; ; the variable `evil-escape-unordered-key-sequence' to non nil.
60
+
58
61
; ; A major mode can be excluded by adding it to the list
59
62
; ; `evil-escape-excluded-major-modes' .
60
63
90
93
:type 'number
91
94
:group 'evil-escape )
92
95
96
+ (defcustom evil-escape-unordered-key-sequence nil
97
+ " If non-nil then the key sequence can also be entered with the second
98
+ key first."
99
+ :type 'boolean
100
+ :group 'evil-escape )
101
+
93
102
(defcustom evil-escape-excluded-major-modes nil
94
103
" Excluded major modes where escape sequences has no effect."
95
104
:type 'sexp
@@ -132,12 +141,16 @@ with a key sequence."
132
141
(when (evil-escape-p)
133
142
(let ((modified (buffer-modified-p ))
134
143
(inserted (evil-escape--insert))
144
+ (fkey (elt evil-escape-key-sequence 0 ))
135
145
(skey (elt evil-escape-key-sequence 1 ))
136
146
(evt (read-event nil nil evil-escape-delay)))
137
147
(when inserted (evil-escape--delete))
138
148
(set-buffer-modified-p modified)
139
149
(cond
140
- ((and (integerp evt) (char-equal evt skey))
150
+ ((and (integerp evt)
151
+ (or (char-equal evt skey)
152
+ (and evil-escape-unordered-key-sequence
153
+ (char-equal evt fkey))))
141
154
(evil-escape)
142
155
(setq this-command 'ignore ))
143
156
((null evt))
@@ -153,7 +166,9 @@ with a key sequence."
153
166
(not (memq major-mode evil-escape-excluded-major-modes))
154
167
(or (not evil-escape-enable-only-for-major-modes)
155
168
(memq major-mode evil-escape-enable-only-for-major-modes))
156
- (equal (this-command-keys ) (evil-escape--first-key))))
169
+ (or (equal (this-command-keys ) (evil-escape--first-key))
170
+ (and evil-escape-unordered-key-sequence
171
+ (equal (this-command-keys ) (evil-escape--second-key))))))
157
172
158
173
(defun evil-escape--escape-normal-state ()
159
174
" Escape from normal state."
@@ -195,6 +210,12 @@ with a key sequence."
195
210
(fkeystr (char-to-string first-key)))
196
211
fkeystr))
197
212
213
+ (defun evil-escape--second-key ()
214
+ " Return the second key string in the key sequence."
215
+ (let* ((sec-key (elt evil-escape-key-sequence 1 ))
216
+ (fkeystr (char-to-string sec-key)))
217
+ fkeystr))
218
+
198
219
(defun evil-escape--insert-func ()
199
220
" Default insert function."
200
221
(when (not buffer-read-only) (self-insert-command 1 )))
0 commit comments