                      (if bdoc
                          (lv-message (spacemacs//micro-state-propertize-doc
                                       (concat ,(symbol-name name) ": " bdoc)))
-                       (when (and defdoc ',wrapped)
+                       (when (and defdoc
+                                  ',wrapped (not (plist-get ',binding :exit)))
                          (lv-message (spacemacs//micro-state-propertize-doc
                                       (concat ,(symbol-name name) ": "
                                               defdoc))))))))))

  (declare (indent 1))
  (let* ((func (spacemacs//micro-state-func-name name))
         (doc (spacemacs/mplist-get props :doc))
         (on-enter (spacemacs/mplist-get props :on-enter))
         (on-exit (spacemacs/mplist-get props :on-exit))
         (bindings (spacemacs/mplist-get props :bindings))

  (mapcar (lambda (x) `(define-key map ,(kbd (car x)) ',(cadr x)))
          wrappers))

(defun spacemacs//micro-state-create-exit-func
    (name wrappers persistent on-exit)
  "Return a function to execute when leaving the micro-state.

The returned function returns nil if the executed command exits the
