racket/collects/macro-debugger/view/debug.rkt
2010-09-03 13:53:42 -06:00

33 lines
831 B
Racket

#lang racket/base
(require racket/pretty
racket/class
unstable/class-iop
"interfaces.rkt"
"debug-format.rkt"
"view.rkt")
(provide debug-file)
(define (widget-mixin %)
(class %
(define/override (top-interaction-kw? x)
(eq? (syntax-e x) '#%top-interaction))
(super-new)))
(define stepper-frame%
(class macro-stepper-frame%
(define/override (get-macro-stepper-widget%)
(widget-mixin (super get-macro-stepper-widget%)))
(super-new)))
(define (make-stepper)
(define director (new macro-stepper-director%))
(send director new-stepper))
(define (debug-file file)
(let-values ([(events msg ctx) (load-debug-file file)])
(pretty-print msg)
(pretty-print ctx)
(let* ([w (make-stepper)])
(send/i w widget<%> add-trace events)
w)))