anchor.diff:                                    (declare (ignore condition))
                                     (editor-error "Synchronous Lisp Evaluation aborted"))))
                  :package package
  -               :thread (current-swank-thread))
  -      (loop (sit-for 10 nil)))))
  +               :thread thread-id)
  +      (handler-case (loop (sit-for 10 nil))
  +        (editor-abort ()
  +          (send-message-string *connection* (format nil "(:emacs-interrupt ~D)" thread-id))
  +          (keyboard-quit))))))
   
   (defun lisp-eval-from-string (string &optional (package (current-package)))
     (lisp-eval-internal 'emacs-rex-string string package))
  
positive.code:              :package package))
  
  (defun lisp-eval-internal (emacs-rex-fun rex-arg package)
    (let ((tag (gensym)))
      (catch tag
        (funcall emacs-rex-fun
                 *connection*
  
negative.code:   (check-connection)
    (interactive-eval string))
  
  (define-command lisp-eval-last-expression (p) ("P")
    (check-connection)
    (with-point ((start (current-point))
                 (end (current-point)))
      (form-offset start -1)
      (let ((string (points-to-string start end)))
        (if p
            (eval-print string)
            (interactive-eval string)))))
  
  (define-command lisp-eval-defun () ()
    (check-connection)
  