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

    Version 8: use bind-map instead of evil-leader
---
 README.md          | 126 +++++++++++++++++++++++------------------------
 evil-lisp-state.el | 141 ++++++++++++++++++++++++++---------------------------
 2 files changed, 130 insertions(+), 137 deletions(-)

diff --git a/README.md b/README.md
index cdeb8af6b0..fdf9f6d2d4 100644
--- a/README.md
+++ b/README.md
@@ -38,90 +38,86 @@ Or add it to your `Cask` file:
 ### Manually
 
 Add `evil-lisp-state.el` to your load path. `evil-lisp-state` requires
-both `evil`, `evil-leader` and `smartparens` to be installed.
+both `evil`, `bind-map` and `smartparens` to be installed.
 
 ## Principle
 
-To execute a command while in normal state, the evil-leader is used.
-By default, the prefix for each command is `<leader> m`.
-Commands when executed set the current state to `lisp state`.
+To execute a command while in normal state, a leader key is used.
+By default, the leader for each command is `SPC l`.
+Any command when executed sets the current state to `lisp state`.
 
 Examples:
 
 - to slurp three times while in normal state:
 
-    <leader> m 3 s
+    <leader> 3 s
 
 - to wrap a symbol in parenthesis then slurping two times:
 
-    <leader> m w 2 s
+    <leader> w 2 s
 
 ## Key Bindings
 
-Key Binding                 | Function
-----------------------------|------------------------------------------------------------
-<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 $</kbd>   | go to the end of current sexp
-<kbd>\<leader\> m ` k</kbd> | hybrid version of kill sexp (can be used in non 
lisp dialects)
-<kbd>\<leader\> m ` p</kbd> | hybrid version of push sexp (can be used in non 
lisp dialects)
-<kbd>\<leader\> m ` s</kbd> | hybrid version of slurp sexp (can be used in non 
lisp dialects)
-<kbd>\<leader\> m ` t</kbd> | hybrid version of transpose sexp (can be used in 
non lisp dialects)
-<kbd>\<leader\> m 0</kbd>   | go to the beginning of current sexp
-<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 ds</kbd>  | delete symbol
-<kbd>\<leader\> m Ds</kbd>  | backward delete symbol
-<kbd>\<leader\> m dw</kbd>  | delete word
-<kbd>\<leader\> m Dw</kbd>  | backward delete word
-<kbd>\<leader\> m dx</kbd>  | delete expression
-<kbd>\<leader\> m Dx</kbd>  | backward delete expression
-<kbd>\<leader\> m e</kbd>   | unwrap current expression and kill all symbols 
after point
-<kbd>\<leader\> m E</kbd>   | unwrap current expression and kill all symbols 
before point
-<kbd>\<leader\> m h</kbd>   | previous symbol
-<kbd>\<leader\> m H</kbd>   | go to previous sexp
-<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 closing parenthesis
-<kbd>\<leader\> m J</kbd>   | join expression
-<kbd>\<leader\> m k</kbd>   | previous opening parenthesis
-<kbd>\<leader\> m l</kbd>   | next symbol
-<kbd>\<leader\> m L</kbd>   | go to next sexp
-<kbd>\<leader\> m p</kbd>   | paste after
-<kbd>\<leader\> m P</kbd>   | paste before
-<kbd>\<leader\> m r</kbd>   | raise expression (replace parent expression by 
current one)
-<kbd>\<leader\> m s</kbd>   | forwared slurp expression
-<kbd>\<leader\> m S</kbd>   | backward slurp expression
-<kbd>\<leader\> m t</kbd>   | transpose expression
-<kbd>\<leader\> m u</kbd>   | undo
-<kbd>\<leader\> m U</kbd>   | got to parent sexp backward
-<kbd>\<leader\> m C-r</kbd> | redo
-<kbd>\<leader\> m v</kbd>   | switch to `visual state`
-<kbd>\<leader\> m V</kbd>   | switch to `visual line state`
-<kbd>\<leader\> m C-v</kbd> | switch to `visual block state`
-<kbd>\<leader\> m w</kbd>   | wrap expression with parenthesis
-<kbd>\<leader\> m W</kbd>   | unwrap expression
-<kbd>\<leader\> m y</kbd>   | copy expression
+Key Binding               | Function
+--------------------------|------------------------------------------------------------
+<kbd>\<leader\> %</kbd>   | evil jump item
+<kbd>\<leader\> :</kbd>   | ex command
+<kbd>\<leader\> (</kbd>   | insert expression before (same level as current 
one)
+<kbd>\<leader\> )</kbd>   | insert expression after (same level as current one)
+<kbd>\<leader\> $</kbd>   | go to the end of current sexp
+<kbd>\<leader\> ` k</kbd> | hybrid version of kill sexp (can be used in non 
lisp dialects)
+<kbd>\<leader\> ` p</kbd> | hybrid version of push sexp (can be used in non 
lisp dialects)
+<kbd>\<leader\> ` s</kbd> | hybrid version of slurp sexp (can be used in non 
lisp dialects)
+<kbd>\<leader\> ` t</kbd> | hybrid version of transpose sexp (can be used in 
non lisp dialects)
+<kbd>\<leader\> 0</kbd>   | go to the beginning of current sexp
+<kbd>\<leader\> a</kbd>   | absorb expression
+<kbd>\<leader\> b</kbd>   | forward barf expression
+<kbd>\<leader\> B</kbd>   | backward barf expression
+<kbd>\<leader\> c</kbd>   | convolute expression
+<kbd>\<leader\> ds</kbd>  | delete symbol
+<kbd>\<leader\> Ds</kbd>  | backward delete symbol
+<kbd>\<leader\> dw</kbd>  | delete word
+<kbd>\<leader\> Dw</kbd>  | backward delete word
+<kbd>\<leader\> dx</kbd>  | delete expression
+<kbd>\<leader\> Dx</kbd>  | backward delete expression
+<kbd>\<leader\> e</kbd>   | unwrap current expression and kill all symbols 
after point
+<kbd>\<leader\> E</kbd>   | unwrap current expression and kill all symbols 
before point
+<kbd>\<leader\> h</kbd>   | previous symbol
+<kbd>\<leader\> H</kbd>   | go to previous sexp
+<kbd>\<leader\> i</kbd>   | switch to `insert state`
+<kbd>\<leader\> I</kbd>   | go to beginning of current expression and switch 
to `insert state`
+<kbd>\<leader\> j</kbd>   | next closing parenthesis
+<kbd>\<leader\> J</kbd>   | join expression
+<kbd>\<leader\> k</kbd>   | previous opening parenthesis
+<kbd>\<leader\> l</kbd>   | next symbol
+<kbd>\<leader\> L</kbd>   | go to next sexp
+<kbd>\<leader\> p</kbd>   | paste after
+<kbd>\<leader\> P</kbd>   | paste before
+<kbd>\<leader\> r</kbd>   | raise expression (replace parent expression by 
current one)
+<kbd>\<leader\> s</kbd>   | forwared slurp expression
+<kbd>\<leader\> S</kbd>   | backward slurp expression
+<kbd>\<leader\> t</kbd>   | transpose expression
+<kbd>\<leader\> u</kbd>   | undo
+<kbd>\<leader\> U</kbd>   | got to parent sexp backward
+<kbd>\<leader\> C-r</kbd> | redo
+<kbd>\<leader\> v</kbd>   | switch to `visual state`
+<kbd>\<leader\> V</kbd>   | switch to `visual line state`
+<kbd>\<leader\> C-v</kbd> | switch to `visual block state`
+<kbd>\<leader\> w</kbd>   | wrap expression with parenthesis
+<kbd>\<leader\> W</kbd>   | unwrap expression
+<kbd>\<leader\> y</kbd>   | copy expression
 
 ## Configuration
 
-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'.
+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.
+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
-if you want all the commands to be directly available
-under the `<leader>` key.
+The leader key is `SPC l` by default, it is possible to change it with the
+variable `evil-lisp-state-leader'.
 
 [evil-link]: https://gitorious.org/evil/pages/Home
 [smartparens-link]: https://github.com/Fuco1/smartparens/wiki
diff --git a/evil-lisp-state.el b/evil-lisp-state.el
index 20bddde671..ff49bcd143 100644
--- a/evil-lisp-state.el
+++ b/evil-lisp-state.el
@@ -5,8 +5,8 @@
 ;; Author: Sylvain Benner <[email protected]>
 ;; Keywords: convenience editing evil smartparens lisp mnemonic
 ;; Created: 9 Oct 2014
-;; Version: 7.1
-;; Package-Requires: ((evil "1.0.9") (evil-leader "0.4.3") (smartparens 
"1.6.1"))
+;; Version: 8.0
+;; Package-Requires: ((evil "1.0.9") (bind-map "0") (smartparens "1.6.1"))
 ;; URL: https://github.com/syl20bnr/evil-lisp-state
 
 ;; This file is not part of GNU Emacs.
@@ -32,61 +32,60 @@
 ;; Principle:
 ;; ----------
 
-;; To execute a command while in normal state, the evil-leader is used.
-;; By default, the prefix for each command is `<leader> m`.
-;; Commands when executed set the current state to `lisp state`.
+;; To execute a command while in normal state, a leader is used.
+;; By default, the leader for each command is `SPC l`.
+;; Any command when executed sets the current state to `lisp state`.
 
 ;; By example, to slurp three times while in normal state:
-;;     <leader> m 3 s
+;;     <leader> 3 s
 ;; Or to wrap a symbol in parenthesis then slurping two times:
-;;     <leader> m w 2 s
-
-;; 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 $'   | go to the end of current sexp
-;; `leader m ` k' | hybrid version of kill sexp (can be used in non lisp 
dialects)
-;; `leader m ` p' | hybrid version of push sexp (can be used in non lisp 
dialects)
-;; `leader m ` s' | hybrid version of slurp sexp (can be used in non lisp 
dialects)
-;; `leader m ` t' | hybrid version of transpose sexp (can be used in non lisp 
dialects)
-;; `leader m 0'   | go to the beginning of current sexp
-;; `leader m a'   | absorb expression
-;; `leader m b'   | forward barf expression
-;; `leader m B'   | backward barf expression
-;; `leader m c'   | convolute expression
-;; `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 H'   | go to previous sexp
-;; `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 J'   | join expression
-;; `leader m k'   | previous opening parenthesis
-;; `leader m l'   | next symbol
-;; `leader m L'   | go to next sexp
-;; `leader m p'   | paste after
-;; `leader m P'   | paste before
-;; `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 U'   | got to parent sexp backward
-;; `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 y'   | copy expression
+;;     <leader> w 2 s
+
+;; Key Binding  | Function
+;; -------------|------------------------------------------------------------
+;; `leader %'   | evil jump item
+;; `leader :'   | ex command
+;; `leader ('   | insert expression before (same level as current one)
+;; `leader )'   | insert expression after (same level as current one)
+;; `leader $'   | go to the end of current sexp
+;; `leader ` k' | hybrid version of kill sexp (can be used in non lisp 
dialects)
+;; `leader ` p' | hybrid version of push sexp (can be used in non lisp 
dialects)
+;; `leader ` s' | hybrid version of slurp sexp (can be used in non lisp 
dialects)
+;; `leader ` t' | hybrid version of transpose sexp (can be used in non lisp 
dialects)
+;; `leader 0'   | go to the beginning of current sexp
+;; `leader a'   | absorb expression
+;; `leader b'   | forward barf expression
+;; `leader B'   | backward barf expression
+;; `leader c'   | convolute expression
+;; `leader ds'  | delete symbol
+;; `leader dw'  | delete word
+;; `leader dx'  | delete expression
+;; `leader e'   | (splice) unwrap current expression and kill all symbols 
after point
+;; `leader E'   | (splice) unwrap current expression and kill all symbols 
before point
+;; `leader h'   | previous symbol
+;; `leader H'   | go to previous sexp
+;; `leader i'   | switch to `insert state`
+;; `leader I'   | go to beginning of current expression and switch to `insert 
state`
+;; `leader j'   | next closing parenthesis
+;; `leader J'   | join expression
+;; `leader k'   | previous opening parenthesis
+;; `leader l'   | next symbol
+;; `leader L'   | go to next sexp
+;; `leader p'   | paste after
+;; `leader P'   | paste before
+;; `leader r'   | raise expression (replace parent expression by current one)
+;; `leader s'   | forwared slurp expression
+;; `leader S'   | backward slurp expression
+;; `leader t'   | transpose expression
+;; `leader u'   | undo
+;; `leader U'   | got to parent sexp backward
+;; `leader C-r' | redo
+;; `leader v'   | switch to `visual state`
+;; `leader V'   | switch to `visual line state`
+;; `leader C-v' | switch to `visual block state`
+;; `leader w'   | wrap expression with parenthesis
+;; `leader W'   | unwrap expression
+;; `leader y'   | copy expression
 
 ;; Configuration:
 ;; --------------
@@ -99,16 +98,12 @@
 ;; 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
-;; if you want all the commands to be directly available
-;; under the `<leader>' key.
+;; The leader key is `SPC l' by default, it is possible to
+;; change it with the variable `evil-lisp-state-leader'.
 
 ;;; Code:
 
 (require 'evil)
-(require 'evil-leader)
 (require 'smartparens)
 
 (evil-define-state lisp
@@ -126,8 +121,8 @@
   :prefix 'evil-lisp-state-)
 
 (eval-and-compile
-  (defcustom evil-lisp-state-leader-prefix "m"
-    "Prefix key added to evil-lader."
+  (defcustom evil-lisp-state-leader "SPC l"
+    "Leader key."
     :type 'string
     :group 'evil-lisp-state)
 
@@ -162,6 +157,16 @@ If `evil-lisp-state-global' is non nil then this variable 
has no effect."
      (evil-normal-state)
      (call-interactively ',command)))
 
+
+;; leader maps
+(bind-map evil-lisp-state-map
+  :evil-keys (evil-lisp-state-leader)
+  :evil-states (normal))
+(bind-map evil-lisp-state-major-modes-map
+  :evil-keys (evil-lisp-state-leader)
+  :evil-states (normal)
+  :major-modes (evil-lisp-state-major-modes))
+
 ;; escape
 (define-key evil-lisp-state-map [escape] 'evil-normal-state)
 ;; toggle lisp state
@@ -171,8 +176,6 @@ If `evil-lisp-state-global' is non nil then this variable 
has no effect."
 (define-key evil-lisp-state-map "j" 'evil-next-visual-line)
 (define-key evil-lisp-state-map "k" 'evil-previous-visual-line)
 (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)
 
 ;; auto-switch to lisp state commands
 (defconst evil-lisp-state-commands
@@ -237,15 +240,9 @@ If `evil-lisp-state-global' is non nil then this variable 
has no effect."
         (cmd (cdr x)))
     (eval
      `(progn
-        (define-key evil-lisp-state-map ,(kbd key) ',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))))))))
+            (define-key evil-lisp-state-map ,(kbd key) ',cmd)
+          (define-key evil-lisp-state-major-mode-map ,(kbd key) ',cmd))))))
 
 (defun lisp-state-toggle-lisp-state ()
   "Toggle the lisp state."

Reply via email to