Luke Gorrie wrote:
Have you tried it? e.g. "C-c : (/ 1 0) RET" in a lisp-mode buffer. There's a little glitch under XEmacs currently where you need to press RET on the '--more--' line to get the rest of the backtrace - in GNU you only have to move the point there.
Ahh, this is cool. Don't have the fancy colorization though. Maybe because I have my font-lock stuff set to be just fonts instead of colors?
You could use this code for more-or-less what you want in inf-lisp:
(defun inferior-slime-delete-char (arg) "Delete ARG characters, or invoke ABORT restart if at end of buffer." (interactive "p") (if (not (eobp)) (call-interactively 'delete-char (list arg)) (message "Invoking ABORT restart.") (comint-send-string (get-buffer-process (current-buffer)) "ABORT\n")))
(define-key inferior-slime-mode-map "\C-d" 'inferior-slime-delete-char)
Trouble is that then ^D will evaluate "ABORT" if you're not already in the debugger. ILISP handles this better somehow.
This works very, very nicely! Thanks! And the easiest workaround is to use :ABORT instead of ABORT, so no gratuitous errors if at top-level. I think, but I'm not sure, that ilisp looks at the prompt. I know, thought, that ilisp looks at lisp prints out about restarts to figure which restart to use. There's a bug in ilisp about this too.
What we really want is for you to use our fancy graphical debugger instead. It might be practical to make that usable in *inferior-lisp*,
Yeah, but I find I still type things in directly to the listener. If you have a listener in elisp, that would be ok.
but I think the way forward is to write our own listener in Elisp that talks to Lisp through the socket. We should still support *inferior-lisp* as well as we reasonably can, and perhaps do a few more hacks to keep things usable before writing our listener :-)
I really appreciate your help in all this. I'm now just about ready to start using SLIME instead of ILISP now. :-)
Ray