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

    Version 7
    
    - Remove regular vim hjkl and move HJKL commands on hjkl
    - better mnemonic keys for slurping, absorbing and splicing
    - remove extra key bindings that does not auto-switch to evil-lisp-state
---
 evil-lisp-state.el | 138 +++++++++++++++++++++--------------------------------
 1 file changed, 55 insertions(+), 83 deletions(-)

diff --git a/evil-lisp-state.el b/evil-lisp-state.el
index 5d44bc0311..bb0e2e7637 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: 6.3
+;; Version: 7.0
 ;; Package-Requires: ((evil "1.0.9") (evil-leader "0.4.3") (smartparens 
"1.6.1"))
 ;; URL: https://github.com/syl20bnr/evil-lisp-state
 
@@ -34,17 +34,12 @@
 
 ;; To execute a command while in normal state, the evil-leader is used.
 ;; By default, the prefix for each command is `<leader> m`.
-;; Some commands when executed set the current state to `lisp state`.
+;; Commands when executed set the current state to `lisp state`.
 
 ;; By example, to slurp three times while in normal state:
-;;     <leader> m 3 n
+;;     <leader> m 3 s
 ;; Or to wrap a symbol in parenthesis then slurping two times:
-;;     <leader> m w 2 n
-
-;; Auto-switch to lisp state commands:
-;; ----------------------------------
-
-;; These commands switch the current state to `lisp state'.
+;;     <leader> m w 2 s
 
 ;; Key Binding    | Function
 ;; ---------------|------------------------------------------------------------
@@ -56,24 +51,27 @@
 ;; `leader m $'   | go to the end of current sexp
 ;; `leader m 0'   | go to the beginning of current sexp
 ;; `leader m a'   | absorb expression
-;; `leader m A'   | transpose expression
 ;; `leader m b'   | forward barf expression
 ;; `leader m B'   | backward barf expression
 ;; `leader m c'   | convolute expression
-;; `leader m H'   | previous symbol
+;; `leader m ds'  | delete symbol
+;; `leader m dw'  | delete word
+;; `leader m dx'  | delete expression
+;; `leader m e'   | (splice) unwrap current expression and kill all symbols 
after point
+;; `leader m E'   | (splice) unwrap current expression and kill all symbols 
before point
+;; `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 closing parenthesis
-;; `leader m K'   | previous opening parenthesis
-;; `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 j'   | next closing parenthesis
+;; `leader m J'   | join expression
+;; `leader m k'   | previous opening parenthesis
+;; `leader m l'   | next symbol
 ;; `leader m p'   | paste after
 ;; `leader m P'   | paste before
-;; `leader m q'   | (splice) unwrap current expression and kill all symbols 
after point
-;; `leader m Q'   | (splice) unwrap current expression and kill all symbols 
before point
 ;; `leader m r'   | raise expression (replace parent expression by current one)
+;; `leader m s'   | forwared slurp expression
+;; `leader m S'   | backward slurp expression
+;; `leader m t'   | transpose expression
 ;; `leader m u'   | undo
 ;; `leader m C-r' | redo
 ;; `leader m v'   | switch to `visual state`
@@ -81,38 +79,8 @@
 ;; `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
 
-;; Lisp state commands:
-;; --------------------
-
-;; These commands can be executed in `lisp state'.
-
-;; Key Binding    | Function
-;; ---------------|------------------------------------------------------------
-;; `h'            | backward char
-;; `j'            | next visual line
-;; `k'            | previous visual line
-;; `l'            | forward char
-
-;; Other commands:
-;; ---------------
-
-;; These commands can be executed in any state.
-
-;; Key Binding    | Function
-;; ---------------|------------------------------------------------------------
-;; `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 g' | go to definition
-;; `leader m h h' | describe elisp thing at point (show documentation)
-;; `leader m t b' | execute buffer tests
-;; `leader m t q' | ask for test function to execute
-
 ;; Configuration:
 ;; --------------
 
@@ -120,6 +88,10 @@
 ;; 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.
+
 ;; The prefix key is `<leader> m' by default, it is possible to
 ;; change the `m' key to anything else with the variable
 ;; `evil-lisp-state-leader-prefix'. Set it to an empty string
@@ -148,12 +120,18 @@
 
 (eval-and-compile
   (defcustom evil-lisp-state-leader-prefix "m"
-    "Prefix key added to evil-lader, be default `m'"
+    "Prefix key added to evil-lader."
     :type 'string
     :group 'evil-lisp-state)
 
+  (defcustom evil-lisp-state-global nil
+    "If non nil evil-lisp-state is available everywhere."
+    :type 'boolean
+    :group 'evil-lisp-state)
+
   (defcustom evil-lisp-state-major-modes '(emacs-lisp-mode)
-    "Major modes where evil leader key bindings are defined."
+    "Major modes where evil leader key bindings are defined.
+If `evil-lisp-state-global' is non nil then this variable has no effect."
     :type 'sexp
     :group 'evil-lisp-state))
 
@@ -188,16 +166,6 @@
 (define-key evil-lisp-state-map "l" 'evil-forward-char)
 ;; leader
 (define-key evil-lisp-state-map (kbd evil-leader/leader) 
evil-leader--default-map)
-;; commands that wont switch to lisp state
-(dolist (mm evil-lisp-state-major-modes)
-  (evil-leader/set-key-for-mode mm "me$" 'lisp-state-eval-sexp-end-of-line)
-  (evil-leader/set-key-for-mode mm "mee" 'eval-last-sexp)
-  (evil-leader/set-key-for-mode mm "mef" 'eval-defun)
-  (evil-leader/set-key-for-mode mm "mgg" 
'elisp-slime-nav-find-elisp-thing-at-point)
-  (evil-leader/set-key-for-mode mm "mhh" 
'elisp-slime-nav-describe-elisp-thing-at-point)
-  (evil-leader/set-key-for-mode mm "m,"  'lisp-state-toggle-lisp-state)
-  (evil-leader/set-key-for-mode mm "mtb" 'spacemacs/ert-run-tests-buffer)
-  (evil-leader/set-key-for-mode mm "mtq" 'ert))
 
 ;; auto-switch to lisp state commands
 (defconst evil-lisp-state-commands
@@ -217,24 +185,30 @@
     ("8"   . digit-argument)
     ("9"   . digit-argument)
     ("a"   . sp-absorb-sexp)
-    ("A"   . sp-transpose-sexp)
     ("b"   . sp-forward-barf-sexp)
     ("B"   . sp-backward-barf-sexp)
     ("c"   . sp-convolute-sexp)
-    ("H"   . sp-backward-symbol)
+    ("ds"  . sp-kill-symbol)
+    ("Ds"  . sp-backward-kill-symbol)
+    ("dw"  . sp-kill-word)
+    ("Dw"  . sp-backward-kill-word)
+    ("dx"  . sp-kill-sexp)
+    ("Dx"  . sp-backward-kill-sexp)
+    ("e"   . sp-splice-sexp-killing-forward)
+    ("E"   . sp-splice-sexp-killing-backward)
+    ("h"   . sp-backward-symbol)
     ("i"   . evil-insert-state)
     ("I"   . evil-insert-line)
-    ("J"   . lisp-state-next-closing-paren)
-    ("K"   . lisp-state-prev-opening-paren)
-    ("L"   . lisp-state-forward-symbol)
-    ("m"   . sp-join-sexp)
-    ("n"   . sp-forward-slurp-sexp)
-    ("N"   . sp-backward-slurp-sexp)
-    ("p"   . evil-past-after)
-    ("P"   . evil-past-before)
-    ("q"   . sp-splice-sexp-killing-forward)
-    ("Q"   . sp-splice-sexp-killing-backward)
+    ("j"   . lisp-state-next-closing-paren)
+    ("J"   . sp-join-sexp)
+    ("k"   . lisp-state-prev-opening-paren)
+    ("l"   . lisp-state-forward-symbol)
+    ("p"   . evil-paste-after)
+    ("P"   . evil-paste-before)
     ("r"   . sp-raise-sexp)
+    ("s"   . sp-forward-slurp-sexp)
+    ("S"   . sp-backward-slurp-sexp)
+    ("t"   . sp-transpose-sexp)
     ("u"   . undo-tree-undo)
     ("C-r" . undo-tree-redo)
     ("v"   . evil-visual-char)
@@ -242,12 +216,6 @@
     ("C-v" . evil-visual-block)
     ("w"   . lisp-state-wrap)
     ("W"   . sp-unwrap-sexp)
-    ("xs"  . sp-kill-symbol)
-    ("Xs"  . sp-backward-kill-symbol)
-    ("xw"  . sp-kill-word)
-    ("Xw"  . sp-backward-kill-word)
-    ("xx"  . sp-kill-sexp)
-    ("Xx"  . sp-backward-kill-sexp)
     ("y"   . sp-copy-sexp))
   "alist of keys and commands in lisp state.")
 (dolist (x evil-lisp-state-commands)
@@ -256,10 +224,14 @@
     (eval
      `(progn
         (define-key evil-lisp-state-map ,(kbd key) ',cmd)
-        (dolist (mm evil-lisp-state-major-modes)
-          (evil-leader/set-key-for-mode mm
-            ,(kbd (concat evil-lisp-state-leader-prefix key))
-            (evil-lisp-state-enter-command ,cmd)))))))
+        (if evil-lisp-state-global
+            (evil-leader/set-key
+              ,(kbd (concat evil-lisp-state-leader-prefix " "key))
+              (evil-lisp-state-enter-command ,cmd))
+          (dolist (mm evil-lisp-state-major-modes)
+            (evil-leader/set-key-for-mode mm
+              ,(kbd (concat evil-lisp-state-leader-prefix " " key))
+              (evil-lisp-state-enter-command ,cmd))))))))
 
 (defun lisp-state-toggle-lisp-state ()
   "Toggle the lisp state."

Reply via email to