diff --git a/core/core-micro-state.el b/core/core-micro-state.el index 454495999..1ae3f42b7 100644 --- a/core/core-micro-state.el +++ b/core/core-micro-state.el @@ -57,6 +57,10 @@ Available PROPS: If non nil then the minibuffer is used to display the documenation 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' 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. @@ -82,13 +86,14 @@ used." (let* ((func (spacemacs//micro-state-func-name name)) (doc (spacemacs/mplist-get props :doc)) (persistent (plist-get props :persistent)) + (disable-leader (plist-get props :disable-evil-leader)) (msg-func (if (plist-get props :use-minibuffer) 'message 'lv-message)) (exec-binding (plist-get props :execute-binding-on-enter)) (on-enter (spacemacs/mplist-get props :on-enter)) (on-exit (spacemacs/mplist-get props :on-exit)) (bindings (spacemacs/mplist-get props :bindings)) (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)) (bindkeys (spacemacs//create-key-binding-form props func))) `(progn (defun ,func () @@ -121,14 +126,17 @@ used." (when 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." (mapcar (lambda (x) (spacemacs//micro-state-create-wrapper name doc msg-func x)) (append bindings ;; force SPC to quit the micro-state to avoid a edge case ;; 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) "Create a wrapper of FUNC and return a tuple (key wrapper BINDING)." diff --git a/spacemacs/packages.el b/spacemacs/packages.el index d24c8026a..101743179 100644 --- a/spacemacs/packages.el +++ b/spacemacs/packages.el @@ -1403,6 +1403,7 @@ which require an initialization must be listed explicitly in the list.") (spacemacs|define-micro-state helm-navigation :persistent t + :disable-evil-leader t :define-key (helm-map . "C-SPC") (helm-map . "C-@") :on-enter (spacemacs//helm-navigation-ms-on-enter) :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 :persistent t + :disable-evil-leader t :on-enter (spacemacs//ido-navigation-ms-on-enter) :on-exit (spacemacs//ido-navigation-ms-on-exit) :bindings