Correctly handle evil function properties in evil-escape
Fix a bug where `f` motion could act like a `t` motion.
This commit is contained in:
parent
827ab01066
commit
ba2447dde0
|
@ -851,7 +851,7 @@ is **guaranteed** to never conflict with `Spacemacs` defaults key bindings.
|
||||||
## Escaping
|
## Escaping
|
||||||
|
|
||||||
`Spacemacs` uses [evil-escape][] to easily switch between `insert state` and
|
`Spacemacs` uses [evil-escape][] to easily switch between `insert state` and
|
||||||
`normal state` with the key chord `fd`.
|
`normal state` by quickly pressing the `fd` keys.
|
||||||
|
|
||||||
The choice of `fd` was made to be able to use the same sequence to escape from
|
The choice of `fd` was made to be able to use the same sequence to escape from
|
||||||
"everything" in Emacs:
|
"everything" in Emacs:
|
||||||
|
@ -877,6 +877,10 @@ to `jj` (it is important set the variable in `dotspacemacs/init`):
|
||||||
(setq-default evil-escape-key-sequence "jj"))
|
(setq-default evil-escape-key-sequence "jj"))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Note:** Although `jj` or `jk` are popular choices of vim users, these key
|
||||||
|
sequences are not optimal for `Spacemacs`. Indeed it is very easy in
|
||||||
|
`visual state` to press quickly `jj` and inadvertently escape to `normal state`.
|
||||||
|
|
||||||
## Executing Vim, Emacs and shell commands
|
## Executing Vim, Emacs and shell commands
|
||||||
|
|
||||||
Command | Key Binding
|
Command | Key Binding
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
- [Customization](#customization)
|
- [Customization](#customization)
|
||||||
- [Key sequence](#key-sequence)
|
- [Key sequence](#key-sequence)
|
||||||
- [Delay between keys](#delay-between-keys)
|
- [Delay between keys](#delay-between-keys)
|
||||||
|
- [Limitations](#limitations)
|
||||||
|
|
||||||
<!-- markdown-toc end -->
|
<!-- markdown-toc end -->
|
||||||
|
|
||||||
|
@ -84,4 +85,52 @@ composed with the two same characters it is recommended to set the delay to
|
||||||
**Note:** The variable `evil-escape-delay` must be set before requiring
|
**Note:** The variable `evil-escape-delay` must be set before requiring
|
||||||
`evil-escape`.
|
`evil-escape`.
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
|
||||||
|
Due to the current implementation only the following characters can be used
|
||||||
|
as the first character of the key sequence:
|
||||||
|
|
||||||
|
| Keys |
|
||||||
|
|:----------:|
|
||||||
|
|<kbd>b</kbd>|
|
||||||
|
|<kbd>B</kbd>|
|
||||||
|
|<kbd>e</kbd>|
|
||||||
|
|<kbd>E</kbd>|
|
||||||
|
|<kbd>f</kbd>|
|
||||||
|
|<kbd>F</kbd>|
|
||||||
|
|<kbd>G</kbd>|
|
||||||
|
|<kbd>h</kbd>|
|
||||||
|
|<kbd>H</kbd>|
|
||||||
|
|<kbd>j</kbd>|
|
||||||
|
|<kbd>k</kbd>|
|
||||||
|
|<kbd>l</kbd>|
|
||||||
|
|<kbd> </kbd>|
|
||||||
|
|<kbd>K</kbd>|
|
||||||
|
|<kbd>L</kbd>|
|
||||||
|
|<kbd>M</kbd>|
|
||||||
|
|<kbd>n</kbd>|
|
||||||
|
|<kbd>N</kbd>|
|
||||||
|
|<kbd>t</kbd>|
|
||||||
|
|<kbd>T</kbd>|
|
||||||
|
|<kbd>w</kbd>|
|
||||||
|
|<kbd>W</kbd>|
|
||||||
|
|<kbd>{</kbd>|
|
||||||
|
|<kbd>}</kbd>|
|
||||||
|
|<kbd>#</kbd>|
|
||||||
|
|<kbd>%</kbd>|
|
||||||
|
|<kbd>`</kbd>|
|
||||||
|
|<kbd>'</kbd>|
|
||||||
|
|<kbd>(</kbd>|
|
||||||
|
|<kbd>)</kbd>|
|
||||||
|
|<kbd>*</kbd>|
|
||||||
|
|<kbd>,</kbd>|
|
||||||
|
|<kbd>/</kbd>|
|
||||||
|
|<kbd>;</kbd>|
|
||||||
|
|<kbd>?</kbd>|
|
||||||
|
|<kbd>|</kbd>|
|
||||||
|
|<kbd>^</kbd>|
|
||||||
|
|<kbd>+</kbd>|
|
||||||
|
|<kbd>_</kbd>|
|
||||||
|
|<kbd>-</kbd>|
|
||||||
|
|
||||||
[MELPA]: http://melpa.org/
|
[MELPA]: http://melpa.org/
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
||||||
;; Keywords: convenience editing evil
|
;; Keywords: convenience editing evil
|
||||||
;; Created: 22 Oct 2014
|
;; Created: 22 Oct 2014
|
||||||
;; Version: 2.05
|
;; Version: 2.06
|
||||||
;; Package-Requires: ((emacs "24") (evil "1.0.9"))
|
;; Package-Requires: ((emacs "24") (evil "1.0.9"))
|
||||||
;; URL: https://github.com/syl20bnr/evil-escape
|
;; URL: https://github.com/syl20bnr/evil-escape
|
||||||
|
|
||||||
|
@ -128,13 +128,16 @@ with a key sequence."
|
||||||
|
|
||||||
`:delete-func FUNCTION'
|
`:delete-func FUNCTION'
|
||||||
Specify the delete function to call when deleting the first key."
|
Specify the delete function to call when deleting the first key."
|
||||||
(let ((shadowed-func (plist-get properties :shadowed-func))
|
(let* ((shadowed-func (plist-get properties :shadowed-func))
|
||||||
(insert-func (plist-get properties :insert-func))
|
(evil-func-props (when shadowed-func
|
||||||
(delete-func (plist-get properties :delete-func)))
|
(evil-get-command-properties shadowed-func)))
|
||||||
|
(insert-func (plist-get properties :insert-func))
|
||||||
|
(delete-func (plist-get properties :delete-func)))
|
||||||
`(progn
|
`(progn
|
||||||
(define-key ,map ,(evil-escape--first-key)
|
(define-key ,map ,(evil-escape--first-key)
|
||||||
(evil-define-motion ,(evil-escape--escape-function-symbol from)
|
(evil-define-motion ,(evil-escape--escape-function-symbol from)
|
||||||
(count)
|
(count)
|
||||||
|
,@evil-func-props
|
||||||
;; called by the user
|
;; called by the user
|
||||||
(if (called-interactively-p 'interactive)
|
(if (called-interactively-p 'interactive)
|
||||||
(evil-escape--escape ,evil-escape-key-sequence
|
(evil-escape--escape ,evil-escape-key-sequence
|
||||||
|
|
Loading…
Reference in a new issue