Today, Peter Mechlenborg <metch@daimi.au.dk> wrote:
Changes:
- A "more button" have been added, so more stack-frames can be viewed if 20 isn't enough.
- Scroll-bars have been added, thanks to Elliott Johnson. There's still a small problem though. The scroll-bars do not remember their position when a stack-frame or "more" is pressed. I don't know how to fix this, couldn't find anything in the specs and Clouseau didn't help either. Do anyone of you know how to do this?
- Frame variables are viewed with Clouseau when pressed.
What do you think?
I think it rocks. I found the fonts a bit unreadable on descriptive texts, so I hacked on it a little. This patch adds: * better fonts on descriptions (not on reference-conditions reference slots yet, I'm hoping somebody figures a way to render them soon) * (maybe) better formatting of reference condition descriptions & extra condition info * better handling of multi-table-column presentation (you can now click on a stack frame number and on a restart description) * doesn't show the --MORE-- link when there are fewer than 20 frames. Here's some lisp porn: http://boinkor.net/lisp/porn/clim-debugger_pretty.png (-: Hope you like it. --- clim-debugger.orig.lisp 2005-04-14 19:08:32.000000000 +0200 +++ clim-debugger.lisp 2005-04-15 00:18:25.861376109 +0200 @@ -255,13 +255,14 @@ ;;; Display debugging info ;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun std-form (pane first second) +(defun std-form (pane first second &key (family :sans-serif)) (formatting-row (pane) - (formatting-cell (pane) (bold (pane) (format t "~A" first))) - (formatting-cell - (pane) - (format t "~A" second)))) + (with-text-family (pane :sans-serif) + (formatting-cell (pane) (bold (pane) (format t "~A" first)))) + (formatting-cell (pane) + (with-text-family (pane family) + (format t "~A" second))))) (defun display-debugger (frame pane) (let ((*standard-output* pane)) @@ -269,26 +270,32 @@ (std-form pane "Condition type:" (type-of-condition (condition-info pane))) (std-form pane "Description:" (condition-message (condition-info - pane)))) + pane))) + (when (condition-extra (condition-info pane)) + (std-form pane "Extra:" (condition-extra (condition-info pane)) + :family :fix)) + (when (condition-references (condition-info pane)) + (std-form pane "References:" (condition-references (condition-info + pane)) + :family :fix))) (fresh-line) - (when (condition-extra (condition-info pane)) - (formatting-table (pane) - (std-form pane "Extra:" (condition-extra (condition-info pane)))) - (fresh-line)) - (when (condition-references (condition-info pane)) - (formatting-table (pane) - (std-form pane "References:" (condition-references (condition-info - pane)))) - (fresh-line)) - (bold (pane) (format t "Restarts:")) + + + (with-text-family (pane :sans-serif) + (bold (pane) (format t "Restarts:"))) (fresh-line) (format t " ") (formatting-table (pane) (loop for r in (restarts (condition-info pane)) - do (formatting-row (pane) - (formatting-cell (pane) (present r 'restart)) - (formatting-cell (pane) (format t "~A" r))))) + do (formatting-row (pane) + (with-output-as-presentation (pane r 'restart) + (formatting-cell (pane) + (format pane "~A" (restart-name r))) + + (formatting-cell (pane) + (with-text-family (pane :sans-serif) + (format pane "~A" r))))))) (fresh-line) (display-backtrace frame pane) (change-space-requirements pane @@ -298,7 +305,8 @@ (defun display-backtrace (frame pane) (declare (ignore frame)) - (bold (pane) (format t "Backtrace:")) + (with-text-family (pane :sans-serif) + (bold (pane) (format t "Backtrace:"))) (fresh-line) (format t " ") (formatting-table @@ -306,14 +314,17 @@ (loop for stack-frame in (backtrace (condition-info pane)) for i from 0 do (formatting-row (pane) - (bold (pane) (formatting-cell (pane) (format t "~A: " i))) - (formatting-cell (pane) (present stack-frame 'stack-frame - :view (view stack-frame))))) - (formatting-row (pane) - (formatting-cell (pane)) - (formatting-cell (pane) - (bold (pane) - (present pane 'more-type)))))) + (with-output-as-presentation (pane stack-frame 'stack-frame) + (bold (pane) (formatting-cell (pane) (format t "~A: " i))) + (formatting-cell (pane) + (present stack-frame 'stack-frame + :view (view stack-frame)))))) + (when (>= (length (backtrace (condition-info pane))) 20) + (formatting-row (pane) + (formatting-cell (pane)) + (formatting-cell (pane) + (bold (pane) + (present pane 'more-type))))))) (define-presentation-method present (object (type stack-frame) stream @@ -329,7 +340,8 @@ (progn (princ (frame-string object) stream) (fresh-line) - (bold (stream) (format t " Locals:")) + (with-text-family (stream :sans-serif) + (bold (stream) (format t " Locals:"))) (fresh-line) (format t " ") (formatting-table Cheers, -- Andreas Fuchs, <asf@boinkor.net>, asf@jabber.at, antifuchs