anchor.diff:         :stream stream
          :count 100))))
   
  -(defun error-report (condition)
  -  (with-output-to-string (stream)
  -    (princ condition stream)
  -    (uiop/image:print-backtrace
  -     :stream stream
  -     :condition condition)))
  +(defmacro with-catch-bailout (&body body)
  +  `(catch +bailout-tag+
  +     ,@body))
   
   (defun bailout (condition)
  -  (throw 'toplevel
  -    (error-report condition)))
  +  (throw +bailout-tag+
  +    (with-output-to-string (stream)
  +      (princ condition stream)
  +      (uiop/image:print-backtrace
  +       :stream stream
  +       :condition condition))))
   
   (defmacro with-error-handler (() &body body)
     `(handler-case-bind ((lambda (condition)
  
positive.code: 
  (let ((passed nil))
    (defun call-with-editor (function)
      (handler-bind ((error #'error-report)
                     #+sbcl (sb-sys:interactive-interrupt #'error-report))
        (unwind-protect (let ((*in-the-editor* t))
                          (unless passed
                            (setq passed t)
                            (display-init)
                            (window-init)
                            (minibuf-init)
                            (setup)
                            (run-hooks *after-init-hook*))
                          (funcall function))
          (display-finalize)))))
  
  (defmacro with-editor (() &body body)
    `(call-with-editor (lambda () ,@body)))
  
negative.code: (defvar *debug-p* nil)
  (defvar *in-the-editor* nil)
  
  (defparameter +bailout-tag+ (make-symbol "BAILOUT"))
  
  (defun pop-up-backtrace (condition)
    (let ((buffer (get-buffer-create "*EDITOR ERROR*")))
      (erase-buffer buffer)
  