Update of /project/mcclim/cvsroot/mcclim/Apps/Listener In directory cl-net:/tmp/cvs-serv29980
Modified Files: dev-commands.lisp Log Message: Two error handling fixes to com-eval: First, don't handle errors when evaluating in the foreground thread, so that errors can be handled in the SLIME debugger or similar.. Second, rebind *debugger-hook* if evaluating in a background thread.
--- /project/mcclim/cvsroot/mcclim/Apps/Listener/dev-commands.lisp 2008/10/23 20:54:53 1.64 +++ /project/mcclim/cvsroot/mcclim/Apps/Listener/dev-commands.lisp 2008/11/30 22:19:52 1.65 @@ -1516,21 +1516,25 @@ ((form 'clim:form :prompt "form")) (let ((standard-output *standard-output*) (standard-input *standard-input*) + (debugger-hook *debugger-hook*) (application-frame *application-frame*)) (flet ((evaluate () (let ((- form) (*standard-output* standard-output) (*standard-input* standard-input) (*error-output* standard-output) + (*debugger-hook* debugger-hook) (*application-frame* application-frame) error success) - (unwind-protect (handler-case (prog1 (cons :values (multiple-value-list (eval form))) - (setf success t)) - (serious-condition (e) - (setf error e) - (error e))) - (when (not success) - (return-from evaluate (cons :error error))))))) + (if *use-background-eval* + (unwind-protect (handler-case (prog1 (cons :values (multiple-value-list (eval form))) + (setf success t)) + (serious-condition (e) + (setf error e) + (error e))) + (when (not success) + (return-from evaluate (cons :error error)))) + (cons :values (multiple-value-list (eval form))))))) ;; If possible, use a thread for evaluation, permitting us to ;; interrupt it. (let ((start-time (get-internal-real-time)))