anchor.diff:  (defun eval-string (str)
     (minibuf-print
      (write-to-string
  -    (first (safe-eval-from-string str))))
  -  (inferior-lisp-prompt))
  +    (first (safe-eval-from-string str)))))
   
   (define-command eval-region (&optional begin end) ("r")
     (unless (or begin end)
  
positive.code: (defvar *mi-thread*)
  
  (defun safe-eval-from-string-1 (str)
    (unless (get-buffer "*REPL*")
      (let ((*current-window* *current-window*))
        (inferior-lisp)))
    (let ((values)
          (error-p))
      (labels ((eval-thread-closure
                ()
                (let ((in (make-minibuffer-input-stream))
                      (tmpbuf (current-buffer))
                      (replbuf (get-buffer "*REPL*")))
                  (set-buffer replbuf nil)
                  (end-of-buffer)
                  (insert-string
                   (with-output-to-string (out)
                     (let ((*error-output* out)
                           (*trace-output* out)
                           (*debug-io* out)
                           (*standard-output* out)
                           (*standard-input* in))
                       (handler-case
                           (handler-bind ((error #'lisp-error-clause))
                             (setq values (multiple-value-list (eval-from-string str))))
                         (error (cdt)
                                (setq error-p t)
                                (setq values (list cdt)))))))
                  (inferior-lisp-set-point)
                  (set-buffer tmpbuf nil)))
               (mi-thread-closure
                ()
                (loop for c = (cl-ncurses:getch)
  
negative.code:           (insert-string
             (subseq comp-str (length str)))))
        t)))
  