[racket-dev] [plt] Push #22584: master branch updated
Or possibly not run raco setup so some tools didn't get registered?
Robby
On Sun, May 15, 2011 at 2:58 PM, Robby Findler
<robby at eecs.northwestern.edu> wrote:
> I'm not seeing it with the latest.
>
> Did you disable some tools?
>
> Robby
>
> On Sun, May 15, 2011 at 2:42 PM, Stephen Chang <stchang at ccs.neu.edu> wrote:
>> 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 ***
>>>
>>
>> _________________________________________________
>> For list-related administrative tasks:
>> http://lists.racket-lang.org/listinfo/dev
>>
>