a little progress on the tools manual

svn: r9724
This commit is contained in:
Robby Findler 2008-05-07 17:57:14 +00:00
parent 42dcfbc79a
commit 06463490f3
9 changed files with 161 additions and 205 deletions

View File

@ -1,87 +1,84 @@
#lang scheme/unit
(require mzlib/class
"drsig.ss"
mred
mzlib/etc)
(import [prefix drscheme:unit: drscheme:unit^]
[prefix drscheme:frame: drscheme:frame^]
[prefix drscheme:rep: drscheme:rep^]
[prefix drscheme:debug: drscheme:debug^])
(export drscheme:get/extend^)
(define make-extender
(λ (get-base% name)
(let ([extensions (λ (x) x)]
[built-yet? #f]
[built #f]
[verify
(λ (f)
(λ (%)
(let ([new% (f %)])
(if (and (class? new%)
(subclass? new% %))
new%
(error 'extend-% "expected output of extension to create a subclass of its input, got: ~a"
new%)))))])
(values
(rec add-extender
(case-lambda
[(extension) (add-extender extension #t)]
[(extension before?)
(when built-yet?
(error 'extender "cannot build a new extension of ~a after initialization"
name))
(set! extensions
(if before?
(compose (verify extension) extensions)
(compose extensions (verify extension))))]))
(λ ()
(unless built-yet?
(set! built-yet? #t)
(set! built (extensions (get-base%))))
built)))))
(define (get-base-tab%)
(drscheme:debug:test-coverage-tab-mixin
(drscheme:debug:profile-tab-mixin
drscheme:unit:tab%)))
(define-values (extend-tab get-tab) (make-extender get-base-tab% 'tab%))
(define (get-base-interactions-canvas%)
drscheme:unit:interactions-canvas%)
(define-values (extend-interactions-canvas get-interactions-canvas)
(make-extender get-base-interactions-canvas% 'interactions-canvas%))
(define (get-base-definitions-canvas%)
drscheme:unit:definitions-canvas%)
(define-values (extend-definitions-canvas get-definitions-canvas)
(make-extender get-base-definitions-canvas% 'definitions-canvas%))
(define (get-base-unit-frame%)
(drscheme:debug:profile-unit-frame-mixin
drscheme:unit:frame%))
(define-values (extend-unit-frame get-unit-frame)
(make-extender get-base-unit-frame% 'drscheme:unit:frame))
(define (get-base-interactions-text%)
(drscheme:debug:test-coverage-interactions-text-mixin
drscheme:rep:text%))
(define-values (extend-interactions-text get-interactions-text)
(make-extender get-base-interactions-text% 'interactions-text%))
(define (get-base-definitions-text%)
(drscheme:debug:test-coverage-definitions-text-mixin
(drscheme:debug:profile-definitions-text-mixin
(drscheme:unit:get-definitions-text%))))
(define-values (extend-definitions-text get-definitions-text)
(make-extender get-base-definitions-text% 'definitions-text%))
(require scheme/class
"drsig.ss")
(import [prefix drscheme:unit: drscheme:unit^]
[prefix drscheme:frame: drscheme:frame^]
[prefix drscheme:rep: drscheme:rep^]
[prefix drscheme:debug: drscheme:debug^])
(export drscheme:get/extend^)
(define make-extender
(λ (get-base% name)
(let ([extensions (λ (x) x)]
[built-yet? #f]
[built #f]
[verify
(λ (f)
(λ (%)
(let ([new% (f %)])
(if (and (class? new%)
(subclass? new% %))
new%
(error 'extend-% "expected output of extension to create a subclass of its input, got: ~a"
new%)))))])
(values
(letrec ([add-extender
(case-lambda
[(extension) (add-extender extension #t)]
[(extension before?)
(when built-yet?
(error 'extender "cannot build a new extension of ~a after initialization"
name))
(set! extensions
(if before?
(compose (verify extension) extensions)
(compose extensions (verify extension))))])])
add-extender)
(λ ()
(unless built-yet?
(set! built-yet? #t)
(set! built (extensions (get-base%))))
built)))))
(define (get-base-tab%)
(drscheme:debug:test-coverage-tab-mixin
(drscheme:debug:profile-tab-mixin
drscheme:unit:tab%)))
(define-values (extend-tab get-tab) (make-extender get-base-tab% 'tab%))
(define (get-base-interactions-canvas%)
drscheme:unit:interactions-canvas%)
(define-values (extend-interactions-canvas get-interactions-canvas)
(make-extender get-base-interactions-canvas% 'interactions-canvas%))
(define (get-base-definitions-canvas%)
drscheme:unit:definitions-canvas%)
(define-values (extend-definitions-canvas get-definitions-canvas)
(make-extender get-base-definitions-canvas% 'definitions-canvas%))
(define (get-base-unit-frame%)
(drscheme:debug:profile-unit-frame-mixin
drscheme:unit:frame%))
(define-values (extend-unit-frame get-unit-frame)
(make-extender get-base-unit-frame% 'drscheme:unit:frame))
(define (get-base-interactions-text%)
(drscheme:debug:test-coverage-interactions-text-mixin
drscheme:rep:text%))
(define-values (extend-interactions-text get-interactions-text)
(make-extender get-base-interactions-text% 'interactions-text%))
(define (get-base-definitions-text%)
(drscheme:debug:test-coverage-definitions-text-mixin
(drscheme:debug:profile-definitions-text-mixin
(drscheme:unit:get-definitions-text%))))
(define-values (extend-definitions-text get-definitions-text)
(make-extender get-base-definitions-text% 'definitions-text%))

View File

@ -18,4 +18,13 @@ all of the names in the tools library, for use defining keybindings
(shutdown-splash)
(define-values/invoke-unit/infer drscheme@)
(close-splash)
(provide-signature-elements drscheme:tool^))
(provide-signature-elements drscheme:tool^)
(provide drscheme:unit:program-editor-mixin)
(define-syntax (drscheme:unit:program-editor-mixin stx)
(syntax-case stx ()
[(_ a ...)
#'((drscheme:unit:get-program-editor-mixin) a ...)]
[_ #'(drscheme:unit:get-program-editor-mixin)])))

View File

@ -1,21 +1,47 @@
(module common scheme/base
(require scribble/manual
scribble/basic
scheme/class
scheme/contract)
(provide (all-from-out scribble/manual)
(all-from-out scribble/basic)
(all-from-out scheme/class)
(all-from-out scheme/contract))
#reader scribble/reader
#lang scheme/base
(require (for-syntax scheme/base))
(require (for-label scheme/gui/base
scheme/class
scheme/contract
scheme/base
framework))
(provide (for-label (all-from-out scheme/gui/base)
(all-from-out scheme/class)
(all-from-out scheme/contract)
(all-from-out scheme/base)
(all-from-out framework))))
(require scribble/manual
scribble/basic
scheme/class
scheme/contract)
(provide (all-from-out scribble/manual)
(all-from-out scribble/basic)
(all-from-out scheme/class)
(all-from-out scheme/contract))
(require (for-label scheme/gui/base
scheme/class
scheme/contract
scheme/base
drscheme/tool-lib
framework))
(provide (for-label (all-from-out scheme/gui/base)
(all-from-out scheme/class)
(all-from-out scheme/contract)
(all-from-out scheme/base)
(all-from-out drscheme/tool-lib)
(all-from-out framework)))
(provide docs-get/extend)
(define-syntax (docs-get/extend stx)
(syntax-case stx ()
[(_ id)
(identifier? #'id)
(with-syntax ([get (datum->syntax
#'id
(string->symbol
(format "drscheme:get/extend:get-~a" (syntax-e #'id))))]
[extend (datum->syntax
#'id
(string->symbol
(format "drscheme:get/extend:extend-~a" (syntax-e #'id))))])
#'(begin
@defproc*[([(extend (mixin mixin-contract))
void?]
[(extend (mixin mixin-contract) (before boolean?))
void?])]{
Does stuff.
}
@defproc[(get) class?]{Returns the class.}))]))

View File

@ -1,19 +1,20 @@
#lang scribble/doc
@(require "common.ss")
@title{@tt{drscheme:debug}}
@(defmodule drscheme/tool-lib)
@defmixin[drscheme:debug:profile-unit-frame-mixin () ((domain . drscheme:frame:) (domain . drscheme:unit:frame))]{
@defmixin[drscheme:debug:profile-unit-frame-mixin (drscheme:frame:<%> drscheme:unit:frame<%>) ()]{
}
@defmixin[drscheme:debug:profile-interactions-text-mixin () ((domain . drscheme:rep:text))]{
@defmixin[drscheme:debug:profile-interactions-text-mixin (drscheme:rep:text<%>) ()]{
%% %% drscheme:unit %%
}
@defmixin[drscheme:debug:profile-definitions-text-mixin () ((domain . drscheme:unit:definitions-text) (domainc . text))]{
@defmixin[drscheme:debug:profile-definitions-text-mixin (drscheme:unit:definitions-text<%> text%) ()]{
}

View File

@ -1,6 +1,7 @@
#lang scribble/doc
@(require "common.ss")
@title{@tt{drscheme:frame}}
@(defmodule drscheme/tool-lib)
@defclass[drscheme:frame:name-message% canvas% ()]{
@ -31,7 +32,7 @@ hasn't been saved is shown.
}}}
@defmixin[drscheme:frame:mixin (drscheme:frame:<%>) ((domain . drscheme:frame:basics) (domain . frame:text-info) (domain . frame:editor))]{
@defmixin[drscheme:frame:mixin (drscheme:frame:basics<%> frame:text-info<%> frame:editor<%>) (drscheme:frame:<%>)]{
Provides an implementation of
@scheme[drscheme:frame:<%>]
@ -39,7 +40,7 @@ Provides an implementation of
}
@defmixin[drscheme:frame:basics-mixin (drscheme:frame:basics<%>) ((domain . frame:standard-menus))]{
@defmixin[drscheme:frame:basics-mixin (frame:standard-menus<%>) (drscheme:frame:basics<%>)]{
Use this mixin to establish some common menu items across various DrScheme windows.

View File

@ -1,92 +1,11 @@
#lang scribble/doc
@(require "common.ss")
@title{@tt{drscheme:get/extend}}
@(defmodule drscheme/tool-lib)
@defclass[drscheme:get/extend:base-unit-frame% (drscheme:debug:profile-unit-frame-mixin) ()]{
@defconstructor[()]{
Passes all arguments to @scheme[super-init].
}}
@defclass[drscheme:get/extend:base-tab% () ()]{
@defconstructor[()]{
Passes all arguments to @scheme[super-init].
}}
@defclass[drscheme:get/extend:base-interactions-text% (drscheme:debug:profile-interactions-text-mixin) ()]{
@defconstructor[()]{
Passes all arguments to @scheme[super-init].
}}
@defclass[drscheme:get/extend:base-interactions-canvas% (canvas:delegate-mixin canvas:info-mixin) ()]{
@defconstructor/make[()]{
Calls @scheme[super-new], adding @scheme['hide-hscroll] to the style argument.
}
@defconstructor[()]{
Passes all arguments to @scheme[super-init].
}
@defmethod[#:mode override
(on-focus)
void?]{
When the focus is on, calls
@method[drscheme:unit:frame% make-searchable] with @scheme[this].
}}
@defclass[drscheme:get/extend:base-definitions-text% (drscheme:debug:profile-definitions-text-mixin) ()]{
@defconstructor[()]{
Passes all arguments to @scheme[super-init].
}}
@defclass[drscheme:get/extend:base-definitions-canvas% (canvas:delegate-mixin canvas:info-mixin) ()]{
@defconstructor/make[()]{
Calls @scheme[super-new], adding @scheme['hide-hscroll] to the style argument.
}
@defconstructor[()]{
Passes all arguments to @scheme[super-init].
}
@defmethod[#:mode override
(on-focus)
void?]{
When the focus is on, calls
@method[drscheme:unit:frame% make-searchable] with @scheme[this].
%% %% drscheme:debug %%
}}
@docs-get/extend[definitions-text]
@docs-get/extend[interactions-text]
@docs-get/extend[unit-frame]
@docs-get/extend[definitions-canvas]
@docs-get/extend[interactions-canvas]
@docs-get/extend[tab]

View File

@ -1,6 +1,7 @@
#lang scribble/doc
@(require "common.ss")
@title{@tt{drscheme:language}}
@(defmodule drscheme/tool-lib)
@definterface[drscheme:language:simple-module-based-language<%> ()]{
@ -131,7 +132,7 @@ returns the corresponding init arg.
}}
@defmixin[drscheme:language:simple-module-based-language->module-based-language-mixin (drscheme:language:module-based-language<%>) ((domain . drscheme:language:simple-module-based-language))]{
@defmixin[drscheme:language:simple-module-based-language->module-based-language-mixin (drscheme:language:simple-module-based-language<%>) (drscheme:language:module-based-language<%>)]{
\index{drscheme:language:simple-settings}
\label{tools:simple-settings}
@ -492,7 +493,7 @@ Defaultly returns @scheme[#f].
}}}
@defmixin[drscheme:language:module-based-language->language-mixin (drscheme:language:language<%>) ((domain . drscheme:language:module-based-language))]{
@defmixin[drscheme:language:module-based-language->language-mixin (drscheme:language:module-based-language<%>) (drscheme:language:language<%>)]{

View File

@ -1,6 +1,7 @@
#lang scribble/doc
@(require "common.ss")
@title{@tt{drscheme:rep}}
@(defmodule drscheme/tool-lib)
@definterface[drscheme:rep:text<%> ()]{
@ -312,7 +313,7 @@ in the user's eventspace
}}
@defmixin[drscheme:rep:drs-bindings-keymap-mixin () ((domain . editor:keymap))]{
@defmixin[drscheme:rep:drs-bindings-keymap-mixin (editor:keymap<%>) ()]{
This mixin adds some drscheme-specific keybindings to the
editor it is mixed onto.

View File

@ -1,6 +1,7 @@
#lang scribble/doc
@(require "common.ss")
@title{@tt{drscheme:unit}}
@(defmodule drscheme/tool-lib)
@definterface[drscheme:unit:tab<%> (drscheme:rep:context<%>)]{
@ -175,7 +176,7 @@ Clears any error highlighting.
}}
@defmixin[drscheme:unit:program-editor-mixin () ((domainc . text) (domain . editor:basic))]{
@defmixin[drscheme:unit:program-editor-mixin (text% editor:basic<%>) ()]{
This mixes in the ability to reset the highlighting for
error message when the user modifies the buffer. Use it for
@ -220,7 +221,7 @@ Passes all arguments to @scheme[super-init].
}}
@defclass[drscheme:unit:frame% (drscheme:frame:mixin drscheme:frame:basics-mixin drscheme:unit:frame<%>) ()]{
@defclass[drscheme:unit:frame% (drscheme:frame:basics-mixin (drscheme:frame:mixin frame:searchable%)) (drscheme:unit:frame<%>)]{
This frame inserts the Scheme and Language menus into the menu bar as it is initialized.
@ -688,7 +689,7 @@ Note that the capability must be registered separately, via
}}
@defclass[drscheme:unit:definitions-text% (scheme:text-mixin drscheme:unit:program-editor-mixin drscheme:rep:drs-bindings-keymap-mixin drscheme:unit:definitions-text<%>) ()]{
@defclass[drscheme:unit:definitions-text% (drscheme:rep:drs-bindings-keymap-mixin (drscheme:unit:program-editor-mixin (scheme:text-mixin text:info%))) (drscheme:unit:definitions-text<%>)]{