anchor.diff:           (values (progn ,@body) nil))
        (error (cdt) (values cdt t))))
   
  -(defun %lisp-macroexpand (macroexpand-fn buffer-name)
  +(defun %lisp-macroexpand (macroexpand-symbol buffer-name)
     (multiple-value-bind (expr error-p)
         (with-safe-form
           (let ((expr
  
positive.code:                                    (point-set start))))
                  nil)))
            (setq expr
                  (funcall macroexpand-fn expr))
            (when (eq (window-buffer)
                      (get-buffer buffer-name))
              (let ((*kill-disable-p* t))
  
negative.code:          (%make-eval-closure str
                               output-buffer
                               point
                               update-point-p
                               package)))
    (setq *lisp-mi-thread* (bt:make-thread #'%lisp-mi-thread))
    (handler-case (bt:join-thread *lisp-eval-thread*)
      #+sbcl
  