     `(defun ,func ()
        ,(format "%s micro-state." (symbol-name name))
        (interactive)
-       (when ,doc (echo ,doc))
+       (let ((doc ,@doc)) (when doc (echo doc)))
        ,@on-enter
        (,(if (version< emacs-version "24.4")
              'set-temporary-overlay-map

         (wrapper-func (eval `(defun ,wrapper-name ()
                                "Auto-generated function"
                                (interactive)
                                (echo ,doc)
                                (when ',wrapped
                                  (call-interactively ',wrapped))))))
    (append (list (car binding) wrapper-func) binding)))

    Evaluate BODY when the micro-state is switched on.

`:on-exit BODY'
    Evaluate BODY when leaving the micro-state.

`:documentation BODY'
    Evaluate BODY which must return a string

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