[racket-dev] [plt] Push #22584: master branch updated

From: Stephen Chang (stchang at ccs.neu.edu)
Date: Sun May 15 15:42:31 EDT 2011

I just pulled the latest from git, started drracket, selected
Beginning Student language,
pressed run, and I got this error msg:



send: no such method: get-test-window for class: ...per\stepper-tool.rkt:235:4

 === context ===
C:\plt\collects\racket\private\class-internal.rkt:4550:0: obj-error
C:\plt\collects\test-engine\test-display.scm:36:4: report-success
method in test-display%
C:\plt\collects\mred\private\wx\common\queue.rkt:430:6
C:\plt\collects\mred\private\wx\common\queue.rkt:470:32
C:\plt\collects\mred\private\wx\common\queue.rkt:607:3




Does anyone else get this error? I'm running 5.1.1.5 on windows 7.






On Thu, Apr 28, 2011 at 4:22 PM,  <clements at racket-lang.org> wrote:
> clements has updated `master' from fc531c4dbf to d2a21d717c.
>  http://git.racket-lang.org/plt/fc531c4dbf..d2a21d717c
>
> =====[ 3 Commits ]======================================================
>
> Directory summary:
>  28.6% collects/stepper/private/
>  14.9% collects/stepper/scribblings/
>  56.4% collects/stepper/
>
> ~~~~~~~~~~
>
> 437baf9 John Clements <clements at racket-lang.org> 2011-04-26 11:36
> :
> | added simple scribblings from old doc.txt
> :
>  M collects/stepper/info.rkt |    2 ++
>  A collects/stepper/scribblings/stepper.scrbl
>
> ~~~~~~~~~~
>
> e4a834e John Clements <clements at racket-lang.org> 2011-04-28 11:36
> :
> | housekeeping, changed to drracket-tool, moved files to private
> :
>  R collects/stepper/{ => private}/view-controller.rkt (96%)
>  R collects/stepper/{ => private}/xml-sig.rkt (100%)
>  D collects/stepper/break.rkt
>  M collects/stepper/info.rkt                     |   12 +---
>  M collects/stepper/stepper-tool.rkt             |   78 +++++++++++-----------
>  M collects/stepper/stepper+xml-tool.rkt         |   38 +++++------
>  M collects/stepper/tests/test-docs-complete.rkt |    4 -
>  M collects/stepper/xml-tool.rkt                 |   53 +++++++--------
>
> ~~~~~~~~~~
>
> d2a21d7 John Clements <clements at racket-lang.org> 2011-04-28 13:21
> :
> | refactored stepper tool to work with tabs instead of frames
> :
>  M collects/stepper/private/view-controller.rkt |    6 +-
>  M collects/stepper/stepper-tool.rkt            |  206 +++++++++++++---------
>
> =====[ Overall Diff ]===================================================
>
> collects/stepper/break.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/collects/stepper/break.rkt
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -(module break mzscheme
> -
> -  (require mzlib/contract)
> -
> -  (provide current-breakpoint-handler)
> -
> -  (define (default-current-breakpoint-handler)
> -    (error 'default-current-breakpoint-handler
> -           "The current-breakpoint-handler parameter has not yet been set in this thread."))
> -
> -  (define current-breakpoint-handler
> -    (make-parameter
> -     default-current-breakpoint-handler
> -     (lambda (new-handler)
> -       (if (and (procedure? new-handler)
> -                (procedure-arity-includes? new-handler 0))
> -         new-handler
> -         (error 'current-breakpoint-handler
> -                "Bad value for current-breakpoint-handler: ~e"
> -                new-handler)))))
> -
> -  (provide/contract [break (-> any)])
> -
> -  (define (break)
> -    ((current-breakpoint-handler))))
>
> collects/stepper/info.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/collects/stepper/info.rkt
> +++ NEW/collects/stepper/info.rkt
> @@ -1,15 +1,11 @@
>  #lang setup/infotab
>
> -(define tools '(("stepper+xml-tool.ss")
> -                ;; ("debugger-tool.ss")
> -                ))
> +(define drracket-tools '(("stepper+xml-tool.ss")))
>
> -(define tool-names (list "The Stepper"
> -                         ;; "The Debugger"
> -                         ))
> +(define drracket-tool-names (list "The Stepper"))
>
> -(define tool-icons (list '("foot-up.png" "icons")
> -                         ;; #f
> -                         ))
> +(define drracket-tool-icons (list '("foot-up.png" "icons")))
>
>  (define compile-omit-paths '("debugger-tool.ss"))
> +
> +(define scribblings '(("scribblings/stepper.scrbl")))
>
> collects/stepper/scribblings/stepper.scrbl
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> --- /dev/null
> +++ NEW/collects/stepper/scribblings/stepper.scrbl
> @@ -0,0 +1,177 @@
> +#lang scribble/doc
> +
> +@(require scribble/manual)
> +
> + at title{The Stepper}
> +
> + at section{What is the Stepper?}
> +
> +DrRacket includes an "algebraic stepper," a tool which proceeds
> +through the evaluation of a set of definitions and expressions,
> +one step at a time. This evaluation shows the user how DrRacket
> +evaluates expressions and definitions, and can help in debugging
> +programs.  Currently, the Stepper is available in the "Beginning
> +Student" and "Intermediate Student" language levels.
> +
> + at section{How do I use the Stepper?}
> +
> +The Stepper operates on the contents of the frontmost DrRacket
> +window.  A click on the "Step" button brings up the stepper
> +window.  The stepper window has two panes, arranged as follows:
> +
> + at verbatim{
> +------------------
> +|        |       |
> +| before -> after|
> +|        |       |
> +------------------
> +}
> +
> +The first, "before," box, shows the current expression.  The
> +region highlighted in green is known as the "redex".  You may
> +pronounce this word in any way you want.  It is short for
> +"reducible expression," and it is the expression which is the
> +next to be simplified.
> +
> +The second, "after," box shows the result of the reduction.  The
> +region highlighted in purple is the new expression which is
> +substituted for the green one as a result of the reduction. For
> +most reductions, the only difference between the left- and right-hand
> +sides should be the contents of the green and purple boxes.
> +
> +Please note that the stepper only steps through the expressions
> +in the definitions window, and does not allow the user to enter
> +additional expressions.  So, for instance, a definitions buffer
> +which contains only procedure definitions will not result in
> +any reductions.
> +
> + at section{How Does the Stepper work?}
> +
> +In order to discover all of the steps that occur during the evaluation
> +of your code, the Stepper rewrites (or "instruments") your code.
> +The inserted code uses a mechanism called "continuation marks" to
> +store information about the program's execution as it is running,
> +and makes calls to the Stepper before, after and during the evaluation
> +of each expression, indicating the current shape of the program.
> +
> +What does this instrumented code look like?  For the curious, here's the
> +expanded version of @racket[(define (f x) (+ 3 x))] in the beginner
> +language [*]:
> +
> + at racketblock[
> +(module #%htdp (lib "lang/htdp-beginner.ss")
> +  (#%plain-module-begin
> +   (define-syntaxes (f)
> +     (#%app make-first-order-function
> +            (quote procedure)
> +            (quote 1)
> +            (quote-syntax f)
> +            (quote-syntax #%app)))
> +   (define-values (test~object) (#%app namespace-variable-value (quote test~object)))
> +   (begin
> +     (define-values (f)
> +       (with-continuation-mark "#<debug-key-struct>"
> +         (#%plain-lambda () (#%plain-app "#<procedure:...rivate/marks.rkt:70:2>"))
> +         (#%plain-app
> +          call-with-values
> +          (#%plain-lambda ()
> +            (with-continuation-mark "#<debug-key-struct>"
> +              (#%plain-lambda () (#%plain-app
> +                                  "#<procedure:...rivate/marks.rkt:70:2>"
> +                                  (#%plain-lambda () beginner:+)))
> +              (#%plain-app
> +               "#<procedure:closure-storing-proc>"
> +               (#%plain-lambda (x)
> +                 (begin
> +                   (let-values (((arg0-1643 arg1-1644 arg2-1645)
> +                                 (#%plain-app
> +                                  values
> +                                  "#<*unevaluated-struct*>"
> +                                  "#<*unevaluated-struct*>"
> +                                  "#<*unevaluated-struct*>")))
> +                     (with-continuation-mark "#<debug-key-struct>"
> +                       (#%plain-lambda ()
> +                         (#%plain-app
> +                          "#<procedure:...rivate/marks.rkt:70:2>"
> +                          (#%plain-lambda () beginner:+)
> +                          (#%plain-lambda () x)
> +                          (#%plain-lambda () arg0-1643)
> +                          (#%plain-lambda () arg1-1644)
> +                          (#%plain-lambda () arg2-1645)))
> +                       (begin
> +                         (#%plain-app "#<procedure:result-exp-break>")
> +                         (begin
> +                           (set! arg0-1643
> +                                 (with-continuation-mark "#<debug-key-struct>"
> +                                   (#%plain-lambda ()
> +                                     (#%plain-app
> +                                      "#<procedure:...rivate/marks.rkt:70:2>"))
> +                                   beginner:+))
> +                           (set! arg1-1644
> +                                 (with-continuation-mark "#<debug-key-struct>"
> +                                   (#%plain-lambda ()
> +                                     (#%plain-app
> +                                      "#<procedure:...rivate/marks.rkt:70:2>"))
> +                                   (quote 3)))
> +                           (set! arg2-1645
> +                                 (with-continuation-mark "#<debug-key-struct>"
> +                                   (#%plain-lambda ()
> +                                     (#%plain-app
> +                                      "#<procedure:...rivate/marks.rkt:70:2>")) x))
> +                           (begin
> +                             (#%plain-app "#<procedure:normal-break>")
> +                             (with-continuation-mark "#<debug-key-struct>"
> +                               (#%plain-lambda ()
> +                                 (#%plain-app
> +                                  "#<procedure:...rivate/marks.rkt:70:2>"
> +                                  (#%plain-lambda () arg0-1643)
> +                                  (#%plain-lambda () arg1-1644)
> +                                  (#%plain-lambda () arg2-1645)))
> +                               (if (#%plain-app
> +                                    "#<procedure:annotated-proc?>"
> +                                    arg0-1643)
> +                                   (#%plain-app
> +                                    arg0-1643
> +                                    arg1-1644
> +                                    arg2-1645)
> +                                   (#%plain-app
> +                                    call-with-values
> +                                    (#%plain-lambda ()
> +                                      (#%plain-app arg0-1643 arg1-1644 arg2-1645))
> +                                    (#%plain-lambda args
> +                                      (#%plain-app
> +                                       "#<procedure:result-value-break>"
> +                                       args)
> +                                      (#%plain-app
> +                                       "#<procedure:apply>"
> +                                       values
> +                                       args))))))))))))
> +               (#%plain-lambda ()
> +                 (#%plain-app
> +                  "#<procedure:...rivate/marks.rkt:70:2>"
> +                  (#%plain-lambda () beginner:+))) #f)))
> +          (#%plain-lambda args
> +            (#%plain-app "#<procedure:apply>" values args)))))
> +     (#%plain-app "#<procedure:exp-finished-break>"
> +                  (#%plain-app
> +                   list
> +                   (#%plain-app
> +                    list
> +                    "#<procedure:...ate/annotate.rkt:1256:93>"
> +                    #f
> +                    (#%plain-lambda () (#%plain-app list f))))))))
> +
> +(let-values (((done-already?) (quote #f)))
> +  (#%app dynamic-wind void
> +         (lambda () (#%app dynamic-require (quote (quote #%htdp)) (quote #f)))
> +         (lambda () (if done-already?
> +                        (#%app void)
> +                        (let-values ()
> +                          (set! done-already? (quote #t))
> +                          (#%app test*)
> +                          (#%app current-namespace
> +                                 (#%app module->namespace
> +                                        (quote (quote #%htdp)))))))))]
> +
> +
> +[*] : In order to allow things like @verbatim{#<procedure:apply>} in scribble, I've taken the cheap solution of wrapping them in quotes. These are not actually strings, they're opaque 3D syntax elements.
> \ No newline at end of file
>
> collects/stepper/stepper+xml-tool.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/collects/stepper/stepper+xml-tool.rkt
> +++ NEW/collects/stepper/stepper+xml-tool.rkt
> @@ -1,25 +1,19 @@
> -(module stepper+xml-tool mzscheme
> -  (require mzlib/unit
> -           drscheme/tool
> -           "stepper-tool.ss"
> -           "xml-tool.ss"
> -           "view-controller.ss"
> -           "private/shared.ss")
> +#lang racket
>
> -  (provide tool@)
> +(require drracket/tool
> +         "stepper-tool.rkt"
> +         "xml-tool.rkt"
> +         "private/view-controller.rkt")
>
> -  ;; the xml and stepper tools are combined, so that the stepper can create XML
> -  ;; snips.  note that both of these tools provide 'void' for phase1 and phase2
> -  ;; (which together make up the tool-exports^), so we can provide either one
> -  ;; of these for the compound unit.  Doesn't matter.
> -
> -  ;; NNNURRRG!  This is not true any more.  But that should be okay, because the
> -  ;; stepper-tool phase1 is the non-void one. -- JBC, 2006-09-28
> +(provide tool@)
>
> -  (define tool@
> -    (compound-unit/infer
> -      (import drscheme:tool^)
> -      (export STEPPER-TOOL)
> -      (link xml-tool@
> -            view-controller@
> -            [((STEPPER-TOOL : drscheme:tool-exports^)) stepper-tool@]))))
> +;; the xml and stepper tools are combined, so that the stepper can create XML
> +;; snips.
> +
> +(define tool@
> +  (compound-unit/infer
> +   (import drracket:tool^)
> +   (export STEPPER-TOOL)
> +   (link xml-tool@
> +         view-controller@
> +         [((STEPPER-TOOL : drracket:tool-exports^)) stepper-tool@])))
> \ No newline at end of file
>
> collects/stepper/stepper-tool.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/collects/stepper/stepper-tool.rkt
> +++ NEW/collects/stepper/stepper-tool.rkt
> @@ -1,27 +1,26 @@
>  #lang racket/unit
>
> -(require scheme/class
> -         drscheme/tool
> +(require racket/class
> +         drracket/tool
>          mred
> -         mzlib/pconvert
> -         string-constants
>          (prefix-in frame: framework)
>          mrlib/switchable-button
> -         (file "private/my-macros.ss")
> -         (prefix-in x: "private/mred-extensions.ss")
> -         "private/shared.ss"
> +         mzlib/pconvert
> +         racket/pretty
> +         string-constants
>          lang/stepper-language-interface
> -         scheme/pretty
> -         "xml-sig.ss"
> +         (prefix-in x: "private/mred-extensions.rkt")
> +         "private/shared.rkt"
> +         "private/xml-sig.rkt"
>          "drracket-button.ss") ;; get the stepper-button-callback private-member-name
>
> -(import drscheme:tool^ xml^ view-controller^)
> -(export drscheme:tool-exports^ stepper-frame^)
> +(import drracket:tool^ xml^ view-controller^)
> +(export drracket:tool-exports^ stepper-frame^)
>
>   ;; tool magic here:
>  (define (phase1)
>   ;; experiment with extending the language... parameter-like fields for stepper parameters
> -  (drscheme:language:extend-language-interface
> +  (drracket:language:extend-language-interface
>    stepper-language<%>
>    (lambda (superclass)
>      (class* superclass (stepper-language<%>)
> @@ -67,7 +66,7 @@
>   (send definitions-text get-next-settings))
>
>  (define (settings->language-level settings)
> -  (drscheme:language-configuration:language-settings-language settings))
> +  (drracket:language-configuration:language-settings-language settings))
>
>  (define (stepper-works-for? language-level)
>   (or (send language-level stepper:supported?)
> @@ -76,10 +75,10 @@
>   ;; the stepper's frame:
>
>  (define stepper-frame%
> -  (class (drscheme:frame:basics-mixin
> +  (class (drracket:frame:basics-mixin
>           (frame:frame:standard-menus-mixin frame:frame:basic%))
>
> -    (init-field drscheme-frame)
> +    (init-field drracket-tab)
>
>     ;; PRINTING-PROC
>     ;; I frankly don't think that printing (i.e., to a printer) works
> @@ -114,7 +113,7 @@
>     (define/augment (on-close)
>       (when custodian
>         (custodian-shutdown-all custodian))
> -      (send drscheme-frame on-stepper-close)
> +      (send drracket-tab on-stepper-close)
>       (inner (void) on-close))
>
>     ;; WARNING BOXES:
> @@ -153,20 +152,91 @@
>                [height stepper-initial-height])))
>
>
> -  ;; stepper-unit-frame<%> : the interface that the extended drscheme frame
> +  ;; stepper-unit-frame<%> : the interface that the extended drracket frame
>   ;; fulfils
> -  (define stepper-unit-frame<%>
> +  (define stepper-tab<%>
>     (interface ()
>       get-stepper-frame
>       on-stepper-close))
>
> -  ;; stepper-unit-frame-mixin : the mixin that is applied to the drscheme
> -  ;; frame to interact with a possible stepper window
> +  ;; stepper-unit-frame-mixin : the mixin that is applied to the drracket
> +  ;; frame to interact with a possible stepper window. Specifically, this
> +  ;; mixin needs to manage the creation and visibility of the stepper button.
>   (define (stepper-unit-frame-mixin super%)
> -    (class* super% (stepper-unit-frame<%>)
> +    (class* super% ()
> +      (inherit get-button-panel register-toolbar-button get-current-tab get-tabs)
> +
> +      (super-new)
> +
> +      ;; STEPPER BUTTON
> +
> +      (define/public (get-stepper-button) stepper-button)
> +
> +      (define stepper-button-parent-panel
> +        (new horizontal-panel%
> +             [parent (get-button-panel)]
> +             [stretchable-width #f]
> +             [stretchable-height #f]))
> +
> +      (define stepper-button
> +        (new switchable-button%
> +             [parent stepper-button-parent-panel]
> +             [label (string-constant stepper-button-label)]
> +             [bitmap x:foot-img/horizontal]
> +             [alternate-bitmap x:foot-img/vertical]
> +             [callback (lambda (dont-care) (send (get-current-tab)
> +                                                 stepper-button-callback))]))
> +
> +      (register-toolbar-button stepper-button)
> +
> +      (define (stepper-button-show)
> +        (unless (send stepper-button is-shown?)
> +          (send (send stepper-button get-parent)
> +                add-child stepper-button)))
> +
> +      (define (stepper-button-hide)
> +        (when (send stepper-button is-shown?)
> +          (send (send stepper-button get-parent)
> +                delete-child stepper-button)))
> +
> +      ;; when the window closes, notify all of the stepper frames.
> +      (define/augment (on-close)
> +        (for ([tab (in-list (get-tabs))])
> +          (define possible-stepper-frame (send tab get-stepper-frame))
> +          (when possible-stepper-frame
> +            (send possible-stepper-frame original-program-gone)))
> +        (inner (void) on-close))
> +
> +      ;; when we change tabs, show or hide the stepper button.
> +      (define/augment (on-tab-change old new)
> +        (show/hide-stepper-button)
> +        (inner (void) on-tab-change old new))
> +
> +      ;; add the stepper button to the button panel:
> +      (send (get-button-panel) change-children
> +            (lambda (x)
> +              (cons stepper-button-parent-panel
> +                    (remq stepper-button-parent-panel x))))
>
> -      (inherit get-button-panel register-toolbar-button get-interactions-text get-definitions-text)
> +      ;; show or hide the stepper button depending
> +      ;; on the language level
> +      (define/public (show/hide-stepper-button)
> +        (cond [(send (get-current-tab) current-lang-supports-stepper?)
> +               (stepper-button-show)]
> +              [else
> +               (stepper-button-hide)]))
>
> +      ;; hide stepper button if it's not supported for the initial language:
> +      (show/hide-stepper-button)))
> +
> +  ;; stepper-tab-mixin : the mixin that is applied to drracket tabs, to
> +  ;; interact with a possible stepper window.
> +  (define (stepper-tab-mixin super%)
> +    (class* super% (stepper-tab<%>)
> +
> +      (inherit get-ints get-defs get-frame)
> +
> +      ;; a reference to a possible stepper frame.
>       (define stepper-frame #f)
>       (define/public (on-stepper-close)
>         (set! stepper-frame #f))
> @@ -178,14 +248,14 @@
>       ;; definitions window one at a time and calls 'iter' on each one
>       (define (program-expander init iter)
>         (let* ([lang-settings
> -                (send (get-definitions-text) get-next-settings)]
> -               [lang (drscheme:language-configuration:language-settings-language lang-settings)]
> -               [settings (drscheme:language-configuration:language-settings-settings lang-settings)])
> -          (drscheme:eval:expand-program
> -           (drscheme:language:make-text/pos
> -            (get-definitions-text)
> +                (send (get-defs) get-next-settings)]
> +               [lang (drracket:language-configuration:language-settings-language lang-settings)]
> +               [settings (drracket:language-configuration:language-settings-settings lang-settings)])
> +          (drracket:eval:expand-program
> +           (drracket:language:make-text/pos
> +            (get-defs)
>             0
> -            (send (get-definitions-text) last-position))
> +            (send (get-defs) last-position))
>            lang-settings
>            #f
>            (lambda ()
> @@ -203,108 +273,75 @@
>            void ; kill
>            iter)))
>
> -      ;; STEPPER BUTTON
> -
> -      (define/public (get-stepper-button) stepper-button)
> -
> -      (define stepper-button-parent-panel
> -        (new horizontal-panel%
> -             [parent (get-button-panel)]
> -             [stretchable-width #f]
> -             [stretchable-height #f]))
> -
> -      ;; called from drracket-button.rkt, installed via the #lang htdp/bsl (& co) reader into drscheme
> +
> +      ;; called from drracket-button.rkt, installed via the #lang htdp/bsl (& co) reader into drracket
>       (define/public (stepper-button-callback)
> -        (if stepper-frame
> -            (send stepper-frame show #t)
> -            (let* ([language-level
> -                    (extract-language-level (get-definitions-text))]
> -                   [language-level-name (language-level->name language-level)])
> -              (if (or (stepper-works-for? language-level)
> -                      (is-a? language-level drscheme:module-language:module-language<%>))
> -                  (set! stepper-frame
> -                        (go this
> -                            program-expander
> -                            (+ 1 (send (get-definitions-text) get-start-position))
> -                            (+ 1 (send (get-definitions-text) get-end-position))))
> -                  (message-box
> -                   (string-constant stepper-name)
> -                   (format (string-constant stepper-language-level-message)
> -                           language-level-name))))))
> +        (cond
> +          [stepper-frame (send stepper-frame show #t)]
> +          [else (create-new-stepper)]))
>
> -      (define stepper-button
> -        (new switchable-button%
> -             [parent stepper-button-parent-panel]
> -             [label (string-constant stepper-button-label)]
> -             [bitmap x:foot-img/horizontal]
> -             [alternate-bitmap x:foot-img/vertical]
> -             [callback (lambda (dont-care) (stepper-button-callback))]))
> +      ;; open a new stepper window, start it running
> +      (define (create-new-stepper)
> +        (let* ([language-level
> +                (extract-language-level (get-defs))]
> +               [language-level-name (language-level->name language-level)])
> +          (if (or (stepper-works-for? language-level)
> +                  (is-a? language-level drracket:module-language:module-language<%>))
> +              (set! stepper-frame
> +                    (go this
> +                        program-expander
> +                        (+ 1 (send (get-defs) get-start-position))
> +                        (+ 1 (send (get-defs) get-end-position))))
> +              (message-box
> +               (string-constant stepper-name)
> +               (format (string-constant stepper-language-level-message)
> +                       language-level-name)))))
>
> -      (register-toolbar-button stepper-button)
> +      (define/override (enable-evaluation)
> +        (super enable-evaluation)
> +        (send (send (get-frame) get-stepper-button) enable #t))
>
> -      (define/augment (enable-evaluation)
> -        (send stepper-button enable #t)
> -        (inner (void) enable-evaluation))
> +      (define/override (disable-evaluation)
> +        (super enable-evaluation)
> +        (send (send (get-frame) get-stepper-button) enable #f))
>
> -      (define/augment (disable-evaluation)
> -        (send stepper-button enable #f)
> -        (inner (void) disable-evaluation))
> +      (define/public (current-lang-supports-stepper?)
> +        (stepper-works-for? (extract-language-level (get-defs))))
> +
> +      (define/public (notify-stepper-frame-of-change)
> +        (when stepper-frame
> +          (send stepper-frame original-program-changed)))
>
>       (define/augment (on-close)
>         (when stepper-frame
> -          (send stepper-frame original-program-gone))
> +            (send stepper-frame original-program-gone))
>         (inner (void) on-close))
> -
> -      (define/augment (on-tab-change old new)
> -        (check-current-language-for-stepper)
> -        (inner (void) on-tab-change old new))
> -
> -      (define/public (check-current-language-for-stepper)
> -        (if (stepper-works-for?
> -             (extract-language-level (get-definitions-text)))
> -            (unless (send stepper-button is-shown?)
> -              (send (send stepper-button get-parent)
> -                    add-child stepper-button))
> -            (when (send stepper-button is-shown?)
> -              (send (send stepper-button get-parent)
> -                    delete-child stepper-button))))
> -
> -      ;; add the stepper button to the button panel:
> -      (send (get-button-panel) change-children
> -            (lx (cons stepper-button-parent-panel
> -                      (remq stepper-button-parent-panel _))))
> -
> -      ;; hide stepper button if it's not supported for the initial language:
> -      (check-current-language-for-stepper)))
> +
> +      ))
> +
> +
>
>   ;; stepper-definitions-text-mixin : a mixin for the definitions text that
>   ;; alerts thet stepper when the definitions text is altered or destroyed
>   (define (stepper-definitions-text-mixin %)
>     (class %
>
> -      (inherit get-top-level-window)
> -      (define/private (notify-stepper-frame-of-change)
> -        (let ([win (get-top-level-window)])
> -          ;; should only be #f when win is #f
> -          (when (is-a? win stepper-unit-frame<%>)
> -            (let ([stepper-window (send win get-stepper-frame)])
> -              (when stepper-window
> -                (send stepper-window original-program-changed))))))
> +      (inherit get-tab get-top-level-window)
>
>       (define/augment (on-insert x y)
>         (unless metadata-changing-now?
> -          (notify-stepper-frame-of-change))
> +          (send (get-tab) notify-stepper-frame-of-change))
>         (inner (void) on-insert x y))
>
>       (define/augment (on-delete x y)
>         (unless metadata-changing-now?
> -          (notify-stepper-frame-of-change))
> +          (send (get-tab) notify-stepper-frame-of-change))
>         (inner (void) on-delete x y))
>
>       (define/augment (after-set-next-settings s)
>         (let ([tlw (get-top-level-window)])
>           (when tlw
> -            (send tlw check-current-language-for-stepper)))
> +            (send tlw show/hide-stepper-button)))
>         (inner (void) after-set-next-settings s))
>
>       (define metadata-changing-now? #f)
> @@ -321,28 +358,29 @@
>
>       (super-new)))
>
> -  ;; apply the mixins dynamically to the drscheme unit frame and
> +  ;; apply the mixins dynamically to the drracket unit frame and
>   ;; definitions text:
> -  (drscheme:get/extend:extend-unit-frame stepper-unit-frame-mixin)
> -  (drscheme:get/extend:extend-definitions-text stepper-definitions-text-mixin)
> +  (drracket:get/extend:extend-unit-frame stepper-unit-frame-mixin)
> +  (drracket:get/extend:extend-definitions-text stepper-definitions-text-mixin)
> +  (drracket:get/extend:extend-tab stepper-tab-mixin)
>
> -  ;; COPIED FROM drscheme/private/language.ss
> +  ;; COPIED FROM drracket/private/language.ss
>  ;; simple-module-based-language-convert-value : TST STYLE boolean -> TST
>  (define (simple-module-based-language-convert-value value settings)
> -  (case (drscheme:language:simple-settings-printing-style settings)
> +  (case (drracket:language:simple-settings-printing-style settings)
>     [(print) value]
>     [(write trad-write) value]
>     [(constructor)
>      (parameterize
>          ([constructor-style-printing #t]
> -          [show-sharing (drscheme:language:simple-settings-show-sharing settings)]
> +          [show-sharing (drracket:language:simple-settings-show-sharing settings)]
>           [current-print-convert-hook
>            (leave-snips-alone-hook (current-print-convert-hook))])
>        (stepper-print-convert value))]
>     [(quasiquote)
>      (parameterize
>          ([constructor-style-printing #f]
> -          [show-sharing (drscheme:language:simple-settings-show-sharing settings)]
> +          [show-sharing (drracket:language:simple-settings-show-sharing settings)]
>           [current-print-convert-hook
>            (leave-snips-alone-hook (current-print-convert-hook))])
>        (stepper-print-convert value))]
> @@ -381,19 +419,19 @@
>     [(is-a? exp snip%)
>      (send exp copy)]
>     #;
> -    [((drscheme:rep:use-number-snip) exp)
> +    [((drracket:rep:use-number-snip) exp)
>      (let ([number-snip-type
> -            (drscheme:language:simple-settings-fraction-style
> +            (drracket:language:simple-settings-fraction-style
>              simple-settings)])
>        (cond
>          [(eq? number-snip-type 'repeating-decimal)
> -          (drscheme:number-snip:make-repeating-decimal-snip exp #f)]
> +          (drracket:number-snip:make-repeating-decimal-snip exp #f)]
>          [(eq? number-snip-type 'repeating-decimal-e)
> -          (drscheme:number-snip:make-repeating-decimal-snip exp #t)]
> +          (drracket:number-snip:make-repeating-decimal-snip exp #t)]
>          [(eq? number-snip-type 'mixed-fraction)
> -          (drscheme:number-snip:make-fraction-snip exp #f)]
> +          (drracket:number-snip:make-fraction-snip exp #f)]
>          [(eq? number-snip-type 'mixed-fraction-e)
> -          (drscheme:number-snip:make-fraction-snip exp #t)]
> +          (drracket:number-snip:make-fraction-snip exp #t)]
>          [else
>           (error 'which-number-snip
>                  "expected either 'repeating-decimal, 'repeating-decimal-e, 'mixed-fraction, or 'mixed-fraction-e got : ~e"
>
> collects/stepper/tests/test-docs-complete.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/collects/stepper/tests/test-docs-complete.rkt
> +++ NEW/collects/stepper/tests/test-docs-complete.rkt
> @@ -1,6 +1,2 @@
>  #lang racket/base
>  (require tests/utils/docs-complete)
> -(check-docs (quote stepper/xml-sig))
> -(check-docs (quote stepper/view-controller))
> -(check-docs (quote stepper/drracket-button))
> -(check-docs (quote stepper/break))
>
> collects/stepper/xml-tool.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/collects/stepper/xml-tool.rkt
> +++ NEW/collects/stepper/xml-tool.rkt
> @@ -1,27 +1,26 @@
> +#lang racket
>
> -(module xml-tool mzscheme
> -  (require "private/xml-snip-helpers.rkt"
> -           "private/find-tag.rkt"
> -           "xml-sig.ss"
> -           mzlib/unit
> -           mzlib/contract
> -           mzlib/class
> -           mred
> -           framework
> -           drscheme/tool
> -           xml/xml
> -           string-constants)
> +(require "private/xml-snip-helpers.rkt"
> +         "private/find-tag.rkt"
> +         "private/xml-sig.ss"
> +         mred
> +         framework
> +         drracket/tool
> +         xml/xml
> +         string-constants)
>
>   (provide xml-tool@)
>
>   (define orig (current-output-port))
>   (define-unit xml-tool@
> -    (import drscheme:tool^)
> +    (import drracket:tool^)
>     (export xml^)
> -      (define (phase1) (void))
> -      (define (phase2) (void))
> -
> -      (preferences:set-default 'drscheme:xml-eliminate-whitespace #t boolean?)
> +
> +    ;; these were necessary when this was a stand-alone tool:
> +    #;(define (phase1) (void))
> +    #;(define (phase2) (void))
> +
> +    (preferences:set-default 'drracket:xml-eliminate-whitespace #t boolean?)
>
>       (define xml-box-color "forest green")
>       (define scheme-splice-box-color "blue")
> @@ -74,7 +73,7 @@
>           (define/private (set-eliminate-whitespace-in-empty-tags? new)
>             (unless (eq? eliminate-whitespace-in-empty-tags? new)
>               (set! eliminate-whitespace-in-empty-tags? new)
> -              (preferences:set 'drscheme:xml-eliminate-whitespace new)
> +              (preferences:set 'drracket:xml-eliminate-whitespace new)
>               (reset-min-sizes)
>               (let ([admin (get-admin)])
>                 (when admin
> @@ -109,7 +108,7 @@
>           (define/override (make-snip stream-in)
>             (instantiate xml-snip% ()
>               [eliminate-whitespace-in-empty-tags?
> -               (preferences:get 'drscheme:xml-eliminate-whitespace)]))
> +               (preferences:get 'drracket:xml-eliminate-whitespace)]))
>           (super-instantiate ())))
>
>       ;; this snipclass is for old, saved files (no snip has it set)
> @@ -196,7 +195,7 @@
>       (define (get-scheme-box-text%)
>         (unless scheme-box-text%
>           (set! scheme-box-text%
> -                (class ((drscheme:unit:get-program-editor-mixin)
> +                (class ((drracket:unit:get-program-editor-mixin)
>                         (add-file-keymap-mixin
>                          scheme:text%))
>                   (inherit copy-self-to)
> @@ -306,7 +305,7 @@
>        (let ([xml-text% #f])
>          (lambda ()
>            (unless xml-text%
> -             (set! xml-text% (class ((drscheme:unit:get-program-editor-mixin)
> +             (set! xml-text% (class ((drracket:unit:get-program-editor-mixin)
>                                       (xml-text-mixin
>                                        plain-text%))
>                                 (inherit copy-self-to)
> @@ -375,8 +374,8 @@
>                   (lambda ()
>                     (instantiate xml-snip% ()
>                       [eliminate-whitespace-in-empty-tags?
> -                       (preferences:get 'drscheme:xml-eliminate-whitespace)]))))))
> -            (register-capability-menu-item 'drscheme:special:xml-menus (get-insert-menu))
> +                       (preferences:get 'drracket:xml-eliminate-whitespace)]))))))
> +            (register-capability-menu-item 'drracket:special:xml-menus (get-insert-menu))
>             (instantiate menu:can-restore-menu-item% ()
>               (label (string-constant xml-tool-insert-scheme-box))
>               (parent menu)
> @@ -385,7 +384,7 @@
>                (lambda (menu evt)
>                  (insert-snip
>                   (lambda () (instantiate scheme-snip% () (splice? #f)))))))
> -            (register-capability-menu-item 'drscheme:special:xml-menus (get-insert-menu))
> +            (register-capability-menu-item 'drracket:special:xml-menus (get-insert-menu))
>             (instantiate menu:can-restore-menu-item% ()
>               (label (string-constant xml-tool-insert-scheme-splice-box))
>               (parent menu)
> @@ -394,10 +393,10 @@
>                (lambda (menu evt)
>                  (insert-snip
>                   (lambda () (instantiate scheme-snip% () (splice? #t)))))))
> -            (register-capability-menu-item 'drscheme:special:xml-menus (get-insert-menu)))
> +            (register-capability-menu-item 'drracket:special:xml-menus (get-insert-menu)))
>
>           (frame:reorder-menus this)))
>
> -      (drscheme:language:register-capability 'drscheme:special:xml-menus (flat-contract boolean?) #t)
> +      (drracket:language:register-capability 'drracket:special:xml-menus (flat-contract boolean?) #t)
>
> -      (drscheme:get/extend:extend-unit-frame xml-box-frame-extension)))
> +      (drracket:get/extend:extend-unit-frame xml-box-frame-extension))
>
> *** See above for renames and copies ***
>



Posted on the dev mailing list.