macro-stepper: obsolete on program change (like stepper), not just rerun

Closes PR 8837
This commit is contained in:
Ryan Culpepper 2010-07-01 13:47:37 -06:00
parent f6f480053e
commit b3bf2fa6f3

View File

@ -202,6 +202,38 @@
(when tlw (when tlw
(send tlw check-language))) (send tlw check-language)))
(inner (void) after-set-next-settings s)) (inner (void) after-set-next-settings s))
;; Borrowed from stepper/stepper-tool
(define metadata-changing-now? #f)
;; don't pay attention to changes that occur on metadata.
;; this assumes that metadata changes cannot be nested.
(define/augment (begin-metadata-changes)
(set! metadata-changing-now? #t)
(inner (void) begin-metadata-changes))
(define/augment (end-metadata-changes)
(set! metadata-changing-now? #f)
(inner (void) end-metadata-changes))
(define/private (notify-macro-stepper-of-change)
(let ([win (get-top-level-window)])
;; should only be #f when win is #f
(when (is-a? win drscheme:unit:frame<%>)
(let ([interactions (send win get-interactions-text)])
(send interactions obsolete-macro-debugger)))))
;; Catch program changes and mark macro stepper obsolete.
(define/augment (on-insert x y)
(unless metadata-changing-now?
(notify-macro-stepper-of-change))
(inner (void) on-insert x y))
(define/augment (on-delete x y)
(unless metadata-changing-now?
(notify-macro-stepper-of-change))
(inner (void) on-delete x y))
(super-new))) (super-new)))
(define (macro-debugger-interactions-text-mixin %) (define (macro-debugger-interactions-text-mixin %)
@ -217,6 +249,10 @@
(define/public (enable-macro-debugging ?) (define/public (enable-macro-debugging ?)
(set! debugging? ?)) (set! debugging? ?))
(define/public (obsolete-macro-debugger)
(when current-stepper-director
(send current-stepper-director add-obsoleted-warning)))
(define/override (reset-console) (define/override (reset-console)
(super reset-console) (super reset-console)
(when current-stepper-director (when current-stepper-director