branch: elpa/evil-lisp-state
commit fc34826f18372f1644eef293f2775455a9dd0ab1
Author: syl20bnr <[email protected]>
Commit: syl20bnr <[email protected]>

    Default behavior for hjkl
    
    Add key bindings for evaluation, tests, ...
---
 README.md          |  49 +++++++---------
 evil-lisp-state.el | 161 ++++++++++++++++++++++++++++++++---------------------
 2 files changed, 117 insertions(+), 93 deletions(-)

diff --git a/README.md b/README.md
index d96ed6aab0..3ff0d507f5 100644
--- a/README.md
+++ b/README.md
@@ -13,8 +13,6 @@ using mnemonic key bindings.
         - [Manually](#manually)
     - [Principle](#principle)
     - [Commands and key bindings](#commands-and-key-bindings)
-        - [hjkl](#hjkl)
-        - [Other commands:](#other-commands)
     - [Configuration](#configuration)
 
 <!-- markdown-toc end -->
@@ -52,49 +50,40 @@ Examples:
 
 - to slurp three times while in normal state:
 
-    <leader> m s s s
+    <leader> m 3 n
 
 - to wrap a symbol in parenthesis then slurping two times:
 
-    <leader> m w s s
+    <leader> m w 2 n
 
 ## Commands and key bindings
 
-### hjkl
-
-Evil Lisp state binds the most common commands on hjkl:
-
-Key Binding                | Function
----------------------------|------------------------------------------------------------
-<kbd>\<leader\> m h</kbd>  | previous symbol
-<kbd>\<leader\> m H</kbd>  | forward barf sexp (move the current symbol or 
sexp outside)
-<kbd>\<leader\> m j</kbd>  | next closing parenthesis
-<kbd>\<leader\> m J</kbd>  | wrap symbol with parenthesis (down one level)
-<kbd>\<leader\> m k</kbd>  | previous opening parenthesis
-<kbd>\<leader\> m K</kbd>  | unwrap current sexp (up one level)
-<kbd>\<leader\> m l</kbd>  | next symbol
-<kbd>\<leader\> m L</kbd>  | forward slurp sexp (move next outside sexp into 
current one)
-
-So with just hjkl keys you can:
-- navigate between symbols and sexps
-- slurp and barf symbols and sexps
-- wrap and unwrap symbols and sexps
-
-**Notes:**
-Slurping, barfing and wrapping are also bound on other keys.
-
-### Other commands:
-
 Key Binding                 | Function
 
----------------------------|------------------------------------------------------------
+<kbd>\<leader\></kbd>       | evil leader
+<kbd>\<leader\> m %</kbd>   | evil jump item
+<kbd>\<leader\> m :</kbd>   | ex command
 <kbd>\<leader\> m (</kbd>   | insert expression before (same level as current 
one)
 <kbd>\<leader\> m )</kbd>   | insert expression after (same level as current 
one)
 <kbd>\<leader\> m a</kbd>   | absorb expression
 <kbd>\<leader\> m b</kbd>   | forward barf expression
 <kbd>\<leader\> m B</kbd>   | backward barf expression
 <kbd>\<leader\> m c</kbd>   | convolute expression
+<kbd>\<leader\> m d</kbd>   | describe elisp thing at point (show 
documentation)
+<kbd>\<leader\> m e $</kbd> | go to end of line and evaluate last sexp
+<kbd>\<leader\> m e e</kbd> | evaluate last sexp
+<kbd>\<leader\> m e f</kbd> | evaluate current defun
+<kbd>\<leader\> m g</kbd>   | go to definition
+<kbd>\<leader\> m h</kbd>   | backward char
+<kbd>\<leader\> m H</kbd>   | previous symbol
 <kbd>\<leader\> m i</kbd>   | switch to `insert state`
 <kbd>\<leader\> m I</kbd>   | go to beginning of current expression and switch 
to `insert state`
+<kbd>\<leader\> m j</kbd>   | next visual line
+<kbd>\<leader\> m J</kbd>   | next closing parenthesis
+<kbd>\<leader\> m k</kbd>   | previous visual line
+<kbd>\<leader\> m K</kbd>   | previous opening parenthesis
+<kbd>\<leader\> m l</kbd>   | forward char
+<kbd>\<leader\> m L</kbd>   | next symbol
 <kbd>\<leader\> m m</kbd>   | merge (join) expression
 <kbd>\<leader\> m n</kbd>   | forwared slurp expression
 <kbd>\<leader\> m N</kbd>   | backward slurp expression
@@ -103,6 +92,8 @@ Key Binding                 | Function
 <kbd>\<leader\> m q</kbd>   | unwrap current expression and kill all symbols 
after point
 <kbd>\<leader\> m Q</kbd>   | unwrap current expression and kill all symbols 
before point
 <kbd>\<leader\> m r</kbd>   | raise expression (replace parent expression by 
current one)
+<kbd>\<leader\> m t b</kbd> | execute buffer tests
+<kbd>\<leader\> m t q</kbd> | ask for test function to execute
 <kbd>\<leader\> m T</kbd>   | transpose expression
 <kbd>\<leader\> m u</kbd>   | undo
 <kbd>\<leader\> m C-r</kbd> | redo
diff --git a/evil-lisp-state.el b/evil-lisp-state.el
index dd596de964..886220f00e 100644
--- a/evil-lisp-state.el
+++ b/evil-lisp-state.el
@@ -5,7 +5,7 @@
 ;; Author: Sylvain Benner <[email protected]>
 ;; Keywords: convenience editing evil smartparens lisp mnemonic
 ;; Created: 9 Oct 2014
-;; Version: 5.1.0
+;; Version: 6.1
 ;; Package-Requires: ((evil "1.0.9") (evil-leader "0.4.3") (smartparens 
"1.6.1"))
 ;; URL: https://github.com/syl20bnr/evil-lisp-state
 
@@ -36,64 +36,61 @@
 ;; By default, the prefix for each command is `<leader> m`.
 ;; Each command when executed set the current state to `lisp state`.
 ;; By example, to slurp three times while in normal state:
-;;     <leader> m s s s
+;;     <leader> m 3 n
 ;; Or to wrap a symbol in parenthesis then slurping two times:
-;;     <leader> m w s s
+;;     <leader> m w 2 n
 
 ;; Commands and key bindings:
 ;; --------------------------
 
-;; Evil Lisp state binds the most common commands on hjkl:
-;;
-;; Key Binding     | Function
-;; 
----------------|------------------------------------------------------------
-;; `<leader> m h`  | previous symbol
-;; `<leader> m H`  | forward barf sexp (move the current symbol or sexp 
outside)
-;; `<leader> m j`  | next closing parenthesis
-;; `<leader> m J`  | wrap symbol with parenthesis (down one level)
-;; `<leader> m k`  | previous opening parenthesis
-;; `<leader> m K`  | unwrap current sexp (up one level)
-;; `<leader> m l`  | next symbol
-;; `<leader> m L`  | forward slurp sexp (move next outside sexp into current 
one)
-;;
-;; So with just hjkl keys you can:
-;; - navigate between symbols and sexps
-;; - slurp and barf symbols and sexps
-;; - wrap and unwrap symbols and sexps
-
-;; Slurping, barfing and wrapping are also bound on other keys.
-;; All the other commands are:
-
-;; Key Binding     | Function
-;; 
----------------|------------------------------------------------------------
-;; `<leader> m (`  | insert expression before (same level as current one)
-;; `<leader> m )`  | insert expression after (same level as current one)
-;; `<leader> m a`  | absorb expression
-;; `<leader> m b`  | forward barf expression
-;; `<leader> m B`  | backward barf expression
-;; `<leader> m c`  | convolute expression
-;; `<leader> m i`  | switch to `insert state`
-;; `<leader> m I`  | go to beginning of current expression and switch to 
`insert state`
-;; `<leader> m m`  | merge (join) expression
-;; `<leader> m n`  | forwared slurp expression
-;; `<leader> m N`  | backward slurp expression
-;; `<leader> m p`  | paste after
-;; `<leader> m P`  | paste before
-;; `<leader> m q`  | unwrap current expression and kill all symbols after point
-;; `<leader> m Q`  | unwrap current expression and kill all symbols before 
point
-;; `<leader> m r`  | raise expression (replace parent expression by current 
one)
-;; `<leader> m T`  | transpose expression
-;; `<leader> m u`  | undo
-;; `<leader> m C-r`| redo
-;; `<leader> m v`  | switch to `visual state`
-;; `<leader> m V`  | switch to `visual line state`
-;; `<leader> m C-v`| switch to `visual block state`
-;; `<leader> m w`  | wrap expression with parenthesis
-;; `<leader> m W`  | unwrap expression
-;; `<leader> m xs` | delete symbol
-;; `<leader> m xw` | delete word
-;; `<leader> m xx` | delete expression
-;; `<leader> m y`  | copy expression
+;; Key Binding    | Function
+;; ---------------|------------------------------------------------------------
+;; `leader'       | evil leader
+;; `leader m %'   | evil jump item
+;; `leader m :'   | ex command
+;; `leader m ('   | insert expression before (same level as current one)
+;; `leader m )'   | insert expression after (same level as current one)
+;; `leader m a'   | absorb expression
+;; `leader m b'   | forward barf expression
+;; `leader m B'   | backward barf expression
+;; `leader m c'   | convolute expression
+;; `leader m d'   | describe elisp thing at point (show documentation)
+;; `leader m e $' | go to end of line and evaluate last sexp
+;; `leader m e e' | evaluate last sexp
+;; `leader m e f' | evaluate current defun
+;; `leader m g'   | go to definition
+;; `leader m h'   | backward char
+;; `leader m H'   | previous symbol
+;; `leader m i'   | switch to `insert state`
+;; `leader m I'   | go to beginning of current expression and switch to 
`insert state`
+;; `leader m j'   | next visual line
+;; `leader m J'   | next closing parenthesis
+;; `leader m k'   | previous visual line
+;; `leader m K'   | previous opening parenthesis
+;; `leader m l'   | forward char
+;; `leader m L'   | next symbol
+;; `leader m m'   | merge (join) expression
+;; `leader m n'   | forwared slurp expression
+;; `leader m N'   | backward slurp expression
+;; `leader m p'   | paste after
+;; `leader m P'   | paste before
+;; `leader m q'   | unwrap current expression and kill all symbols after point
+;; `leader m Q'   | unwrap current expression and kill all symbols before point
+;; `leader m r'   | raise expression (replace parent expression by current one)
+;; `leader m t b' | execute buffer tests
+;; `leader m t q' | ask for test function to execute
+;; `leader m T'   | transpose expression
+;; `leader m u'   | undo
+;; `leader m C-r' | redo
+;; `leader m v'   | switch to `visual state`
+;; `leader m V'   | switch to `visual line state`
+;; `leader m C-v' | switch to `visual block state`
+;; `leader m w'   | wrap expression with parenthesis
+;; `leader m W'   | unwrap expression
+;; `leader m xs'  | delete symbol
+;; `leader m xw'  | delete word
+;; `leader m xx'  | delete expression
+;; `leader m y'   | copy expression
 
 ;; Configuration:
 ;; --------------
@@ -159,9 +156,22 @@
      (evil-normal-state)
      (call-interactively ',command)))
 
+;; escape
 (define-key evil-lisp-state-map [escape] 'evil-normal-state)
+
+;; toggle lisp state
+(define-key evil-lisp-state-map ",," 'lisp-state-toggle-lisp-state)
+(dolist (mm evil-lisp-state-major-modes)
+  (evil-leader/set-key-for-mode mm "m," 'lisp-state-toggle-lisp-state))
+
+;; leader
+(define-key evil-lisp-state-map (kbd evil-leader/leader) 
evil-leader--default-map)
+
+;; auto-switch to lisp state commands
 (defconst evil-lisp-state-commands
-  `(("("   . lisp-state-insert-sexp-before)
+  `(("%"   . evil-jump-item)
+    (":"   . evil-ex)
+    ("("   . lisp-state-insert-sexp-before)
     (")"   . lisp-state-insert-sexp-after)
     ("1"   . digit-argument)
     ("2"   . digit-argument)
@@ -176,16 +186,21 @@
     ("b"   . sp-forward-barf-sexp)
     ("B"   . sp-backward-barf-sexp)
     ("c"   . sp-convolute-sexp)
-    ("h"   . sp-backward-symbol)
-    ("H"   . sp-forward-barf-sexp)
+    ("d"   . elisp-slime-nav-describe-elisp-thing-at-point)
+    ("e$"  . lisp-state-eval-sexp-end-of-line)
+    ("ee"  . eval-last-sexp)
+    ("ef"  . eval-defun)
+    ("g"   . elisp-slime-nav-find-elisp-thing-at-point)
+    ("h"   . evil-backward-char)
+    ("H"   . sp-backward-symbol)
     ("i"   . evil-insert-state)
     ("I"   . evil-insert-line)
-    ("j"   . lisp-state-next-closing-paren)
-    ("J"   . lisp-state-wrap)
-    ("k"   . lisp-state-prev-opening-paren)
-    ("K"   . sp-unwrap-sexp)
-    ("l"   . lisp-state-forward-symbol)
-    ("L"   . sp-forward-slurp-sexp)
+    ("j"   . evil-next-visual-line)
+    ("J"   . lisp-state-next-closing-paren)
+    ("k"   . evil-previous-visual-line)
+    ("K"   . lisp-state-prev-opening-paren)
+    ("l"   . evil-forward-char)
+    ("L"   . lisp-state-forward-symbol)
     ("m"   . sp-join-sexp)
     ("n"   . sp-forward-slurp-sexp)
     ("N"   . sp-backward-slurp-sexp)
@@ -194,7 +209,9 @@
     ("q"   . sp-splice-sexp-killing-forward)
     ("Q"   . sp-splice-sexp-killing-backward)
     ("r"   . sp-raise-sexp)
-    ("T"  . sp-transpose-sexp)
+    ("tb"  . spacemacs/ert-run-tests-buffer)
+    ("tq"  . ert)
+    ("T"   . sp-transpose-sexp)
     ("u"   . undo-tree-undo)
     ("C-r" . undo-tree-redo)
     ("v"   . evil-visual-char)
@@ -221,6 +238,14 @@
             ,(kbd (concat evil-lisp-state-leader-prefix key))
             (evil-lisp-state-enter-command ,cmd)))))))
 
+(defun lisp-state-toggle-lisp-state ()
+  "Toggle the lisp state."
+  (interactive)
+  (message "state: %s" evil-state)
+  (if (eq 'lisp evil-state)
+      (evil-normal-state)
+    (evil-lisp-state)))
+
 (defun lisp-state-wrap (&optional arg)
   "Wrap a symbol with parenthesis."
   (interactive "P")
@@ -276,6 +301,14 @@
     (sp-insert-pair "(")
     (indent-for-tab-command)))
 
+(defun lisp-state-eval-sexp-end-of-line ()
+  "Evaluate the last sexp at the end of the current line."
+  (interactive)
+  (save-excursion
+    (end-of-line)
+    (eval-last-sexp nil)))
+
+
 (provide 'evil-lisp-state)
 
 ;;; evil-lisp-state.el ends here

Reply via email to