evil-lisp-state
- Description
- An evil state to edit Lisp code
- Latest
- evil-lisp-state-8.2.0.20160403.224859.tar (.sig), 2024-Mar-31, 70.0 KiB
- Maintainer
- Sylvain Benner <sylvain.benner@gmail.com>
- Atom feed
- evil-lisp-state.xml
- Website
- https://github.com/syl20bnr/evil-lisp-state
- Browse ELPA's repository
- CGit or Gitweb
- Badge
To install this package from Emacs, use package-install
or list-packages
.
Full description
evil-lisp-state
Adds a new evil state to navigate lisp code and edit sexp trees using mnemonic key bindings.
Table of Contents
Install
Package manager
You can either install evil-lisp-state
from MELPA:
M-x package-install evil-lisp-state
Or add it to your Cask
file:
```elisp (source melpa)
(depends-on "evil-lisp-state") ```
Manually
Add evil-lisp-state.el
to your load path. evil-lisp-state
requires
both evil
, bind-map
and smartparens
to be installed.
Principle
To execute a command while in normal state, a leader key is used.
The leader has to be defined with the function evil-lisp-state-leader
.
By default any command when executed sets the current state to lisp state
.
Examples:
to slurp three times while in normal state:
3 s to wrap a symbol in parenthesis then slurping two times:
w 2 s
Key Bindings
Key Binding | Function |
---|---|
\ |
switch to lisp state |
\ |
evil jump item |
\ |
ex command |
\ |
insert expression before (same level as current one) |
\ |
insert expression after (same level as current one) |
\ |
go to the end of current sexp |
\ |
hybrid version of kill sexp (can be used in non lisp dialects) |
\ |
hybrid version of push sexp (can be used in non lisp dialects) |
\ |
hybrid version of slurp sexp (can be used in non lisp dialects) |
\ |
hybrid version of transpose sexp (can be used in non lisp dialects) |
\ |
go to the beginning of current sexp |
\ |
absorb expression |
\ |
forward barf expression |
\ |
backward barf expression |
\ |
convolute expression |
\ |
delete symbol |
\ |
backward delete symbol |
\ |
delete word |
\ |
backward delete word |
\ |
delete expression |
\ |
backward delete expression |
\ |
unwrap current expression and kill all symbols after point |
\ |
unwrap current expression and kill all symbols before point |
\ |
previous symbol |
\ |
go to previous sexp |
\ |
switch to insert state |
\ |
go to beginning of current expression and switch to insert state |
\ |
next closing parenthesis |
\ |
join expression |
\ |
previous opening parenthesis |
\ |
next symbol |
\ |
go to next sexp |
\ |
paste after |
\ |
paste before |
\ |
raise expression (replace parent expression by current one) |
\ |
forwared slurp expression |
\ |
backward slurp expression |
\ |
transpose expression |
\ |
undo |
\ |
got to parent sexp backward |
\ |
redo |
\ |
switch to visual state |
\ |
switch to visual line state |
\ |
switch to visual block state |
\ |
wrap expression with parenthesis |
\ |
unwrap expression |
\ |
copy expression |
Configuration
No default binding comes with the package, you have to explicitly
bind the lisp state to a key with the function evil-lisp-state-leader
For instance:
elisp
(evil-lisp-state-leader ", l")
Key bindings are set only for emacs-lisp-mode
by default. It is possible to
add major modes with the variable `evil-lisp-state-major-modes'.
It is also possible to define the key bindings globally by setting
evil-lisp-state-global
to t. In this case `evil-lisp-state-major-modes' has no
effect.
If you don't want commands to enter in lisp state
by default set the variable
evil-lisp-state-enter-lisp-state-on-command
to nil. Then use the
lisp state