anchor.diff:                                     (point-set start))))
                   nil)))
             (setq expr
  -                (funcall macroexpand-fn expr))
  +                (lisp-eval-in-package `(,macroexpand-symbol ',expr)
  +                                      (lisp-current-package)))
             (when (eq (window-buffer)
                       (get-buffer buffer-name))
               (let ((*kill-disable-p* t))
  
positive.code: 
  (define-key *lisp-mode-keymap* (kbd "C-x m") 'lisp-macroexpand)
  (define-command lisp-macroexpand () ()
    (%lisp-macroexpand #'macroexpand-1 "*macroexpand*"))
  
  (define-key *lisp-mode-keymap* (kbd "C-x M") 'lisp-macroexpand-all)
  (define-command lisp-macroexpand-all () ()
    (%lisp-macroexpand #'macroexpand "*macroexpand*"))
  
  (defun lisp-read-symbol (prompt)
    (let ((name (minibuf-read-line prompt ""
                                   'complete-symbol
                                   nil)))
      (with-safe-form
        (read-from-string name))))
  
  (define-key *lisp-mode-keymap* (kbd "C-x d") 'lisp-describe-symbol)
  (define-command lisp-describe-symbol () ()
  
negative.code:          (values (progn ,@body) nil))
       (error (cdt) (values cdt t))))
  
  (defun %lisp-macroexpand (macroexpand-symbol buffer-name)
    (multiple-value-bind (expr error-p)
        (with-safe-form
          (let ((expr
  