      (when binding
        (call-interactively (cadr binding)))))
 
-(defun spacemacs//micro-state-create-wrappers (name doc bindings)
+(defun spacemacs//micro-state-create-wrappers (name doc msg-func bindings)
   "Return an alist (key wrapper) for each binding in BINDINGS."
-  (mapcar (lambda (x) (spacemacs//micro-state-create-wrapper name doc x))
+  (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" nil :exit t)))))
 
-(defun spacemacs//micro-state-create-wrapper (name default-doc 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)."
   (let* ((key (car binding))
          (wrapped (cadr binding))

    Evaluate SEXP when leaving the micro-state.

`:doc STRING or SEXP'
    A STRING or a SEXP that evaluates to a string

`:persistent BOOLEAN'
    If BOOLEAN is non nil then the micro-state never exits. A binding
    with an explicitly set `exit t' property is required.

`:bindings EXPRESSIONS'
    One or several EXPRESSIONS with the form

              (interactive)
              (let ((doc ,@doc))
                (when doc
                  (apply ',msg-func (list (spacemacs//micro-state-propertize-doc
                                      (format "%S: %s" ',name doc))))))
              ,(when exec-binding
                 (spacemacs//micro-state-auto-execute bindings))
              ,@on-enter
