anchor.diff:     :keymap *lisp-repl-mode-keymap*
      :syntax-table *lisp-syntax-table*))
   
  +(defvar *lisp-repl-log* nil)
  +(defvar *lisp-repl-prev-log* nil)
  +
   (define-command run-lisp () ()
     (let ((buffer (get-buffer-create "*lisp-repl*")))
       (select-window (pop-to-buffer buffer))
  
positive.code:         (buffer (window-buffer)))
      (if (not (lisp-repl-paren-correspond-p))
          (insert-newline)
          (let ((start (progn
                         (backward-sexp 1 t)
                         (point))))
            (point-set end)
            (insert-newline)
            (multiple-value-bind (values error-p)
                (eval-string (region-string start end) buffer (point))
              (select-window (pop-to-buffer buffer))
              (point-set (point-max))
              (dolist (v values)
                (insert-string (write-to-string v))
                (insert-newline))
              (lisp-repl-prompt))))))
  
  (define-command popup-scratch-buffer () ()
    (setq *current-window*
  
negative.code: (defun lisp-repl-prompt ()
    (unless (bolp)
      (insert-newline))
    (insert-string "> ")
    (buffer-put (window-buffer) :prompt-point (point)))
  
  (defun lisp-repl-paren-correspond-p ()
    (loop :with count := 0 :do
  