Add `:disable-evil-leader` keyword in micro-states

This commit is contained in:
syl20bnr 2015-03-10 23:18:57 -04:00
parent 453343a920
commit 9ee4e5d9fb
2 changed files with 13 additions and 3 deletions

View File

@ -57,6 +57,10 @@ Available PROPS:
If non nil then the minibuffer is used to display the documenation If non nil then the minibuffer is used to display the documenation
strings. Default is nil. strings. Default is nil.
`:disable-evil-leader BOOLEAN'
If non nil then the evil leader has no effect when the micro state
is active. Default to nil.
`:persistent BOOLEAN' `:persistent BOOLEAN'
If BOOLEAN is non nil then the micro-state never exits. A binding If BOOLEAN is non nil then the micro-state never exits. A binding
with an explicitly set `exit t' property is required. Default is nil. with an explicitly set `exit t' property is required. Default is nil.
@ -82,13 +86,14 @@ used."
(let* ((func (spacemacs//micro-state-func-name name)) (let* ((func (spacemacs//micro-state-func-name name))
(doc (spacemacs/mplist-get props :doc)) (doc (spacemacs/mplist-get props :doc))
(persistent (plist-get props :persistent)) (persistent (plist-get props :persistent))
(disable-leader (plist-get props :disable-evil-leader))
(msg-func (if (plist-get props :use-minibuffer) 'message 'lv-message)) (msg-func (if (plist-get props :use-minibuffer) 'message 'lv-message))
(exec-binding (plist-get props :execute-binding-on-enter)) (exec-binding (plist-get props :execute-binding-on-enter))
(on-enter (spacemacs/mplist-get props :on-enter)) (on-enter (spacemacs/mplist-get props :on-enter))
(on-exit (spacemacs/mplist-get props :on-exit)) (on-exit (spacemacs/mplist-get props :on-exit))
(bindings (spacemacs/mplist-get props :bindings)) (bindings (spacemacs/mplist-get props :bindings))
(wrappers (spacemacs//micro-state-create-wrappers (wrappers (spacemacs//micro-state-create-wrappers
name doc msg-func bindings)) name doc msg-func disable-leader bindings))
(keymap-body (spacemacs//micro-state-fill-map-sexps wrappers)) (keymap-body (spacemacs//micro-state-fill-map-sexps wrappers))
(bindkeys (spacemacs//create-key-binding-form props func))) (bindkeys (spacemacs//create-key-binding-form props func)))
`(progn (defun ,func () `(progn (defun ,func ()
@ -121,14 +126,17 @@ used."
(when binding (when binding
(call-interactively (cadr binding))))) (call-interactively (cadr binding)))))
(defun spacemacs//micro-state-create-wrappers (name doc msg-func bindings) (defun spacemacs//micro-state-create-wrappers
(name doc msg-func disable-leader bindings)
"Return an alist (key wrapper) for each binding in BINDINGS." "Return an alist (key wrapper) for each binding in BINDINGS."
(mapcar (lambda (x) (spacemacs//micro-state-create-wrapper (mapcar (lambda (x) (spacemacs//micro-state-create-wrapper
name doc msg-func x)) name doc msg-func x))
(append bindings (append bindings
;; force SPC to quit the micro-state to avoid a edge case ;; force SPC to quit the micro-state to avoid a edge case
;; with evil-leader ;; with evil-leader
(list '("SPC" evil-leader--default-map :exit t))))) (list `(,dotspacemacs-leader-key
,(unless disable-leader 'evil-leader--default-map)
:exit t)))))
(defun spacemacs//micro-state-create-wrapper (name default-doc msg-func binding) (defun spacemacs//micro-state-create-wrapper (name default-doc msg-func binding)
"Create a wrapper of FUNC and return a tuple (key wrapper BINDING)." "Create a wrapper of FUNC and return a tuple (key wrapper BINDING)."

View File

@ -1403,6 +1403,7 @@ which require an initialization must be listed explicitly in the list.")
(spacemacs|define-micro-state helm-navigation (spacemacs|define-micro-state helm-navigation
:persistent t :persistent t
:disable-evil-leader t
:define-key (helm-map . "C-SPC") (helm-map . "C-@") :define-key (helm-map . "C-SPC") (helm-map . "C-@")
:on-enter (spacemacs//helm-navigation-ms-on-enter) :on-enter (spacemacs//helm-navigation-ms-on-enter)
:on-exit (spacemacs//helm-navigation-ms-on-exit) :on-exit (spacemacs//helm-navigation-ms-on-exit)
@ -1681,6 +1682,7 @@ Put (global-hungry-delete-mode) in dotspacemacs/config to enable by default."
(spacemacs|define-micro-state ido-navigation (spacemacs|define-micro-state ido-navigation
:persistent t :persistent t
:disable-evil-leader t
:on-enter (spacemacs//ido-navigation-ms-on-enter) :on-enter (spacemacs//ido-navigation-ms-on-enter)
:on-exit (spacemacs//ido-navigation-ms-on-exit) :on-exit (spacemacs//ido-navigation-ms-on-exit)
:bindings :bindings