I'm happy to announce that I (finally!) merged a new, greatly improved graphical condition handler into the repl branch.
To take advantage of it, you don't need to do anything. By default, you'll get an error handler designed to be used by developers. If an error is signaled, you'll get a modal dialogue with the error message, plus a few buttons:
* Dismiss will abort handling the Ltk event and go back to the main loop
* Show Details will show you the stack trace. Not all lisps will actually get a stack trace here (SBCL and Allegro are privileged as usual), but patches are welcome :-)
* Debugger will drop you into your system's debugger. If you're running Slime, this will be Slime's. Otherwise, you should probably look for a terminal.
* Report Bug is a cool feature (if I say so myself). It pops up a bug reporter, which will save all the error information, including Ltk and CL version information, to a bug report file.
For deployment to end users, you will probably want to to specify :DEBUG 1 to WITH-LTK (the default is 2). With this setting, you will simply see "An internal error has occured" and there will be no "Debugger" button. The bug report file should contain all the details you want from a bug report, though.
:DEBUG 0 will do no condition handling, and leave everything to your Lisp implementation.
:DEBUG 1 will use the PRODUCTION-CONDITION-HANDLER class
:DEBUG 2 will use the GRAPHICAL-CONDITION-HANDLER class
:DEBUG 3 will use the PARANOID-CONDITION-HANDLER class (it pops up a modal dialogue for /every/ condition signaled)
Even better, the new graphical condition handling system is object-oriented and extensible. For example, you probably may want the bug reporter to send you an email. This is easy enough to add by subclassing PRODUCTION-CONDITION-HANDLER and writing a new REPORT-BUG method. The existing condition handler classes should be helpful as examples.
To use your new condition handler, simply pass :DEBUGGER-CLASS MY-DEBUGGER-CLASS to WITH-LTK.
Any feedback is welcome, and if you have bugs or questions, please ask them here.
VoilĂ !