Changed @itemize{...} to @itemize[...] (done after comparing the doc
tree and verifying that there are no changes). (Also fixed a few bugs that were in the code) svn: r14427
This commit is contained in:
parent
ceee79e07f
commit
c0a8a01222
|
@ -188,7 +188,7 @@ error reporting (e.g., with @cpp{scheme_wrong_type}).
|
||||||
Each @scheme[argument-type] must be one of the following, which are
|
Each @scheme[argument-type] must be one of the following, which are
|
||||||
recognized symbolically:
|
recognized symbolically:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@argtype[@scheme[bool] "any value" @cpp{int}
|
@argtype[@scheme[bool] "any value" @cpp{int}
|
||||||
@toC{@scheme[#f] @|goesto| 0, anything else @|goesto| 1}
|
@toC{@scheme[#f] @|goesto| 0, anything else @|goesto| 1}
|
||||||
|
@ -249,7 +249,7 @@ recognized symbolically:
|
||||||
@toScheme{@cpp{NULL} @|goesto| @scheme[#f], anything else @|goesto| new c-pointer containing the pointer
|
@toScheme{@cpp{NULL} @|goesto| @scheme[#f], anything else @|goesto| new c-pointer containing the pointer
|
||||||
and identified as type @scheme[_bstr]}]
|
and identified as type @scheme[_bstr]}]
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The @scheme[return-type] must be @schemeidfont{void} or one of the
|
The @scheme[return-type] must be @schemeidfont{void} or one of the
|
||||||
@scheme[arg-type] keywords.}
|
@scheme[arg-type] keywords.}
|
||||||
|
|
|
@ -21,11 +21,11 @@ Zeichnen wird dabei durch das Bewegen einer virtuellen Schildkröte
|
||||||
über den Zeichenbereich modelliert. Eine Schildkröte kann durch drei
|
über den Zeichenbereich modelliert. Eine Schildkröte kann durch drei
|
||||||
Befehle bewegt werden:
|
Befehle bewegt werden:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[(move n)] Bewegt die Schildkröte um @scheme[n] Pixel ohne zu zeichnen.}
|
@item{@scheme[(move n)] Bewegt die Schildkröte um @scheme[n] Pixel ohne zu zeichnen.}
|
||||||
@item{@scheme[(draw n)] Bewegt die Schildkröte um @scheme[n] Pixel und zeichnet dabei.}
|
@item{@scheme[(draw n)] Bewegt die Schildkröte um @scheme[n] Pixel und zeichnet dabei.}
|
||||||
@item{@scheme[(turn n)] Dreht die Schildkröte um n Grad im Uhrzeigersinn.}
|
@item{@scheme[(turn n)] Dreht die Schildkröte um n Grad im Uhrzeigersinn.}
|
||||||
}
|
]
|
||||||
|
|
||||||
Wir stellen jetzt ein Teachpack für DrScheme vor, mit dessen Hilfe
|
Wir stellen jetzt ein Teachpack für DrScheme vor, mit dessen Hilfe
|
||||||
solche Turtle-Grafiken erstellt werden können.
|
solche Turtle-Grafiken erstellt werden können.
|
||||||
|
|
|
@ -69,12 +69,12 @@ all of the names in the tools library, for use defining keybindings
|
||||||
initialization and @scheme[drscheme:eval:build-user-eventspace/custodian]
|
initialization and @scheme[drscheme:eval:build-user-eventspace/custodian]
|
||||||
|
|
||||||
Specifically, it sets these parameters:
|
Specifically, it sets these parameters:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{ @scheme[current-namespace] has been set to a newly
|
@item{ @scheme[current-namespace] has been set to a newly
|
||||||
created empty namespace. This namespace has the following modules
|
created empty namespace. This namespace has the following modules
|
||||||
copied (with @scheme[namespace-attach-module])
|
copied (with @scheme[namespace-attach-module])
|
||||||
from DrScheme's original namespace:
|
from DrScheme's original namespace:
|
||||||
@itemize{@item{@scheme['mzscheme]}@item{@scheme['mred]}}
|
@itemize[@item{@scheme['mzscheme]}@item{@scheme['mred]}]
|
||||||
}@item{
|
}@item{
|
||||||
@scheme[read-curly-brace-as-paren]
|
@scheme[read-curly-brace-as-paren]
|
||||||
is @scheme[#t],
|
is @scheme[#t],
|
||||||
|
@ -94,7 +94,7 @@ all of the names in the tools library, for use defining keybindings
|
||||||
@scheme[get-the-snip-class-list]
|
@scheme[get-the-snip-class-list]
|
||||||
is initialized with all of the snipclasses in DrScheme's eventspace's snip-class-list.
|
is initialized with all of the snipclasses in DrScheme's eventspace's snip-class-list.
|
||||||
|
|
||||||
}}})
|
}]})
|
||||||
|
|
||||||
(proc-doc/names
|
(proc-doc/names
|
||||||
drscheme:eval:get-snip-classes
|
drscheme:eval:get-snip-classes
|
||||||
|
@ -235,12 +235,12 @@ all of the names in the tools library, for use defining keybindings
|
||||||
|
|
||||||
It initializes the
|
It initializes the
|
||||||
user's eventspace's main thread with several parameters:
|
user's eventspace's main thread with several parameters:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{ @scheme[current-custodian] is set to a new custodian.
|
@item{ @scheme[current-custodian] is set to a new custodian.
|
||||||
}@item{
|
}@item{
|
||||||
In addition, it calls
|
In addition, it calls
|
||||||
@scheme[drscheme:eval:set-basic-parameters].
|
@scheme[drscheme:eval:set-basic-parameters].
|
||||||
}}
|
}]
|
||||||
|
|
||||||
The @scheme[language-settings] argument is the current
|
The @scheme[language-settings] argument is the current
|
||||||
language and its settings. See
|
language and its settings. See
|
||||||
|
|
|
@ -145,11 +145,11 @@ Sets the parameters described in @secref["compile-params"] for a
|
||||||
particular known compiler. The acceptable names are
|
particular known compiler. The acceptable names are
|
||||||
platforms-specific:
|
platforms-specific:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{Unix: @scheme['cc] or @scheme['gcc]}
|
@item{Unix: @scheme['cc] or @scheme['gcc]}
|
||||||
@item{Windows: @scheme['gcc], @scheme['msvc], or @scheme['borland]}
|
@item{Windows: @scheme['gcc], @scheme['msvc], or @scheme['borland]}
|
||||||
@item{MacOS: @scheme['cw]}
|
@item{MacOS: @scheme['cw]}
|
||||||
}}
|
]}
|
||||||
|
|
||||||
|
|
||||||
@defproc[(get-standard-compilers) (listof symbol?)]{
|
@defproc[(get-standard-compilers) (listof symbol?)]{
|
||||||
|
|
|
@ -19,7 +19,7 @@ MzScheme's limited stack-trace reporting.
|
||||||
|
|
||||||
@section[#:tag "quick-instructions"]{Quick Instructions}
|
@section[#:tag "quick-instructions"]{Quick Instructions}
|
||||||
|
|
||||||
@itemize{@item{Throw away @filepath{.zo} versions of your source.}
|
@itemize[@item{Throw away @filepath{.zo} versions of your source.}
|
||||||
|
|
||||||
@item{Prefix your program with
|
@item{Prefix your program with
|
||||||
@schemeblock[(require errortrace)]
|
@schemeblock[(require errortrace)]
|
||||||
|
@ -33,7 +33,7 @@ MzScheme's limited stack-trace reporting.
|
||||||
|
|
||||||
@item{When an exception occurs, the exception handler prints
|
@item{When an exception occurs, the exception handler prints
|
||||||
something like a stack trace, most recent contexts first.}
|
something like a stack trace, most recent contexts first.}
|
||||||
}
|
]
|
||||||
|
|
||||||
The @schememodname[errortrace] module is strange; don't import it
|
The @schememodname[errortrace] module is strange; don't import it
|
||||||
into another module. Instead, the @schememodname[errortrace]
|
into another module. Instead, the @schememodname[errortrace]
|
||||||
|
@ -117,7 +117,7 @@ and sorts by either time or call counts.}
|
||||||
Returns a list of lists that contain all profiling information accumulated
|
Returns a list of lists that contain all profiling information accumulated
|
||||||
so far:
|
so far:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{the number of times a procedure was called.}
|
@item{the number of times a procedure was called.}
|
||||||
|
|
||||||
@item{the number of milliseconds consumed by the procedure's body across
|
@item{the number of milliseconds consumed by the procedure's body across
|
||||||
|
@ -133,19 +133,19 @@ so far:
|
||||||
@item{optionally, a list of unique call paths (i.e. stack traces)
|
@item{optionally, a list of unique call paths (i.e. stack traces)
|
||||||
recorded if @scheme[profile-paths-enabled] is set to @scheme[#t].
|
recorded if @scheme[profile-paths-enabled] is set to @scheme[#t].
|
||||||
Each call path is a pair of
|
Each call path is a pair of
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{a count (the number of times the path occurred), and}
|
@item{a count (the number of times the path occurred), and}
|
||||||
|
|
||||||
@item{a list containing two-element lists. Each two-element list
|
@item{a list containing two-element lists. Each two-element list
|
||||||
contains
|
contains
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{the calling procedure's name or source expression,
|
@item{the calling procedure's name or source expression,
|
||||||
and}
|
and}
|
||||||
@item{the calling procedure's source file or @scheme[#f].}}
|
@item{the calling procedure's source file or @scheme[#f].}]
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
]
|
||||||
Collecting this information is relatively expensive.}
|
Collecting this information is relatively expensive.}
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@defboolparam[profile-paths-enabled on?]{
|
@defboolparam[profile-paths-enabled on?]{
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ images. The @scheme[gif-end] function ends the GIF stream.
|
||||||
|
|
||||||
A GIF stream can be in any one of the following states:
|
A GIF stream can be in any one of the following states:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['init] : no images or controls have been added to the
|
@item{@scheme['init] : no images or controls have been added to the
|
||||||
stream}
|
stream}
|
||||||
|
@ -31,6 +31,6 @@ A GIF stream can be in any one of the following states:
|
||||||
|
|
||||||
@item{@scheme['done] : nothing more can be added}
|
@item{@scheme['done] : nothing more can be added}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@(include-extracted "../gif.ss")
|
@(include-extracted "../gif.ss")
|
||||||
|
|
|
@ -151,14 +151,14 @@
|
||||||
(name-list val-list)
|
(name-list val-list)
|
||||||
@{Like @scheme[put-preferences], but has more sophisticated error
|
@{Like @scheme[put-preferences], but has more sophisticated error
|
||||||
handling. In particular, it
|
handling. In particular, it
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{waits for three consecutive failures before informing the
|
@item{waits for three consecutive failures before informing the
|
||||||
user}
|
user}
|
||||||
@item{gives the user the opportunity to ``steal'' the lockfile
|
@item{gives the user the opportunity to ``steal'' the lockfile
|
||||||
after the third failure, and}
|
after the third failure, and}
|
||||||
@item{when failures occur, it remembers what its arguments were
|
@item{when failures occur, it remembers what its arguments were
|
||||||
and if any preference save eventually succeeds, all of the
|
and if any preference save eventually succeeds, all of the
|
||||||
past failures are also written at that point.}}})
|
past failures are also written at that point.}]})
|
||||||
|
|
||||||
(proc-doc/names
|
(proc-doc/names
|
||||||
preferences:add-panel
|
preferences:add-panel
|
||||||
|
@ -351,7 +351,7 @@
|
||||||
(-> any)
|
(-> any)
|
||||||
()
|
()
|
||||||
@{@scheme[exit:exit] performs four actions:
|
@{@scheme[exit:exit] performs four actions:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{sets the result of the @scheme[exit:exiting?] function to
|
@item{sets the result of the @scheme[exit:exiting?] function to
|
||||||
@scheme[#t].}
|
@scheme[#t].}
|
||||||
@item{invokes the exit-callbacks, with @scheme[exit:can-exit?] if
|
@item{invokes the exit-callbacks, with @scheme[exit:can-exit?] if
|
||||||
|
@ -359,7 +359,7 @@
|
||||||
@item{invokes @scheme[exit:on-exit] and then}
|
@item{invokes @scheme[exit:on-exit] and then}
|
||||||
@item{queues a callback that calls @scheme[exit]
|
@item{queues a callback that calls @scheme[exit]
|
||||||
(a mzscheme procedure) and (if @scheme[exit] returns) sets the result of
|
(a mzscheme procedure) and (if @scheme[exit] returns) sets the result of
|
||||||
@scheme[exit:exiting?] back to @scheme[#t].}}})
|
@scheme[exit:exiting?] back to @scheme[#t].}]})
|
||||||
|
|
||||||
(proc-doc/names
|
(proc-doc/names
|
||||||
exit:user-oks-exit
|
exit:user-oks-exit
|
||||||
|
@ -719,22 +719,22 @@
|
||||||
Otherwise, it invokes the appropriate format handler to open the
|
Otherwise, it invokes the appropriate format handler to open the
|
||||||
file (see @scheme[handler:insert-format-handler]).
|
file (see @scheme[handler:insert-format-handler]).
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{If @scheme[filename] is a string, this function checks the
|
@item{If @scheme[filename] is a string, this function checks the
|
||||||
result of @scheme[group:get-the-frame-group] to see if the
|
result of @scheme[group:get-the-frame-group] to see if the
|
||||||
@scheme[filename] is already open by a frame in the group.
|
@scheme[filename] is already open by a frame in the group.
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{If so, it returns the frame.}
|
@item{If so, it returns the frame.}
|
||||||
@item{If not, this function calls
|
@item{If not, this function calls
|
||||||
@scheme[handler:find-format-handler] with
|
@scheme[handler:find-format-handler] with
|
||||||
@scheme[filename].
|
@scheme[filename].
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{If a handler is found, it is applied to
|
@item{If a handler is found, it is applied to
|
||||||
@scheme[filename] and it's result is the
|
@scheme[filename] and it's result is the
|
||||||
final result.}
|
final result.}
|
||||||
@item{If not, @scheme[make-default] is used.}}}}}
|
@item{If not, @scheme[make-default] is used.}]}]}
|
||||||
@item{If @scheme[filename] is @scheme[#f], @scheme[make-default]
|
@item{If @scheme[filename] is @scheme[#f], @scheme[make-default]
|
||||||
is used.}}})
|
is used.}]})
|
||||||
|
|
||||||
(parameter-doc
|
(parameter-doc
|
||||||
handler:current-create-new-window
|
handler:current-create-new-window
|
||||||
|
@ -966,13 +966,13 @@
|
||||||
@{This returns a keymap for handling standard editing operations. It
|
@{This returns a keymap for handling standard editing operations. It
|
||||||
binds these keys:
|
binds these keys:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme["z"]: undo}
|
@item{@scheme["z"]: undo}
|
||||||
@item{@scheme["y"]: redo}
|
@item{@scheme["y"]: redo}
|
||||||
@item{@scheme["x"]: cut}
|
@item{@scheme["x"]: cut}
|
||||||
@item{@scheme["c"]: copy}
|
@item{@scheme["c"]: copy}
|
||||||
@item{@scheme["v"]: paste}
|
@item{@scheme["v"]: paste}
|
||||||
@item{@scheme["a"]: select all}}
|
@item{@scheme["a"]: select all}]
|
||||||
where each key is prefixed with the menu-shortcut key, based on the
|
where each key is prefixed with the menu-shortcut key, based on the
|
||||||
platform. Under unix, the shortcut is @scheme["a:"]; under windows
|
platform. Under unix, the shortcut is @scheme["a:"]; under windows
|
||||||
the shortcut key is @scheme["c:"] and under MacOS, the shortcut key
|
the shortcut key is @scheme["c:"] and under MacOS, the shortcut key
|
||||||
|
@ -1055,7 +1055,7 @@
|
||||||
|
|
||||||
This function extends a @scheme[keymap%] with the following
|
This function extends a @scheme[keymap%] with the following
|
||||||
functions:
|
functions:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@mapdesc[ring-bell any] --- Rings the bell
|
@item{@mapdesc[ring-bell any] --- Rings the bell
|
||||||
(using @scheme[bell]) and removes the search panel from the frame,
|
(using @scheme[bell]) and removes the search panel from the frame,
|
||||||
if there.}
|
if there.}
|
||||||
|
@ -1128,12 +1128,12 @@
|
||||||
@item{@mapdesc[end-macro key] --- Stops building a keyboard macro}
|
@item{@mapdesc[end-macro key] --- Stops building a keyboard macro}
|
||||||
@item{@mapdesc[do-macro key] --- Executes the last keyboard macro}
|
@item{@mapdesc[do-macro key] --- Executes the last keyboard macro}
|
||||||
@item{@mapdesc[toggle-overwrite key] --- Toggles overwriting
|
@item{@mapdesc[toggle-overwrite key] --- Toggles overwriting
|
||||||
mode}}
|
mode}]
|
||||||
|
|
||||||
These functions are bound to the following keys
|
These functions are bound to the following keys
|
||||||
(C = control, S = shift, A = alt, M = ``meta'', D = command):
|
(C = control, S = shift, A = alt, M = ``meta'', D = command):
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{C-g : ``ring-bell''}
|
@item{C-g : ``ring-bell''}
|
||||||
@item{M-C-g : ``ring-bell''}
|
@item{M-C-g : ``ring-bell''}
|
||||||
@item{C-c C-g : ``ring-bell''}
|
@item{C-c C-g : ``ring-bell''}
|
||||||
|
@ -1213,7 +1213,7 @@
|
||||||
@item{MIDDLEBUTTON : ``paste-click-region''}
|
@item{MIDDLEBUTTON : ``paste-click-region''}
|
||||||
@item{C-RIGHTBUTTON : ``copy-clipboard''}
|
@item{C-RIGHTBUTTON : ``copy-clipboard''}
|
||||||
@item{INSERT : ``toggle-overwrite''}
|
@item{INSERT : ``toggle-overwrite''}
|
||||||
@item{M-o : ``toggle-overwrite''}}})
|
@item{M-o : ``toggle-overwrite''}]})
|
||||||
|
|
||||||
(proc-doc/names
|
(proc-doc/names
|
||||||
keymap:setup-search
|
keymap:setup-search
|
||||||
|
|
|
@ -302,29 +302,29 @@ Removes @scheme[card] from the table.}
|
||||||
indicated by @scheme[which]. The @scheme[action] argument must be one
|
indicated by @scheme[which]. The @scheme[action] argument must be one
|
||||||
of the following:
|
of the following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item[@scheme['drag/one]]{ --- drag only the clicked-on card.}
|
@item{@scheme['drag/one] --- drag only the clicked-on card.}
|
||||||
|
|
||||||
@item[@scheme['drag-raise/one]]{ --- like drag/one, but raise the
|
@item{@scheme['drag-raise/one] --- like drag/one, but raise the
|
||||||
card to the top on a click.}
|
card to the top on a click.}
|
||||||
|
|
||||||
@item[@scheme['drag/above]]{ --- drag the card along with any card
|
@item{@scheme['drag/above] --- drag the card along with any card
|
||||||
on top of the card (i.e., more towards the front and
|
on top of the card (i.e., more towards the front and
|
||||||
overlapping with the card). The on-top-of relation
|
overlapping with the card). The on-top-of relation
|
||||||
is closed transitively.}
|
is closed transitively.}
|
||||||
|
|
||||||
@item[@scheme['drag-raise/above]]{ --- like @scheme['drag/above],
|
@item{@scheme['drag-raise/above] --- like @scheme['drag/above],
|
||||||
but raises.}
|
but raises.}
|
||||||
|
|
||||||
@item[@scheme['drag-below]]{ --- drag the card along with any card
|
@item{@scheme['drag-below] --- drag the card along with any card
|
||||||
underneath the card (i.e., more towards the back and
|
underneath the card (i.e., more towards the back and
|
||||||
overlapping with the card). The underneath relation
|
overlapping with the card). The underneath relation
|
||||||
is closed transitively.}
|
is closed transitively.}
|
||||||
|
|
||||||
@item[@scheme['drag-raise/below]]{ --- like @scheme['drag/below],
|
@item{@scheme['drag-raise/below] --- like @scheme['drag/below],
|
||||||
but raises.}
|
but raises.}
|
||||||
}
|
]
|
||||||
|
|
||||||
The initial settings are: @scheme['drag-raise/above] for
|
The initial settings are: @scheme['drag-raise/above] for
|
||||||
@scheme['left], @scheme['drag/one] for @scheme['middle], and
|
@scheme['left], @scheme['drag/one] for @scheme['middle], and
|
||||||
|
|
|
@ -1133,10 +1133,10 @@ based on the state of the key event.
|
||||||
|
|
||||||
The @scheme[clack] function handles mouse input. It has three tasks and each corresponds
|
The @scheme[clack] function handles mouse input. It has three tasks and each corresponds
|
||||||
to a helper function:
|
to a helper function:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{block the clicked cell (@scheme[block-cell/world]),}
|
@item{block the clicked cell (@scheme[block-cell/world]),}
|
||||||
@item{move the cat (@scheme[move-cat]), and}
|
@item{move the cat (@scheme[move-cat]), and}
|
||||||
@item{update the black dot as the mouse moves around (@scheme[update-world-posn]).}}
|
@item{update the black dot as the mouse moves around (@scheme[update-world-posn]).}]
|
||||||
The helper functions are combined in the body of @scheme[clack],
|
The helper functions are combined in the body of @scheme[clack],
|
||||||
first checking to see if the mouse event corresponds to a
|
first checking to see if the mouse event corresponds to a
|
||||||
player's move (via the @scheme[player-moved?] function.
|
player's move (via the @scheme[player-moved?] function.
|
||||||
|
|
|
@ -117,10 +117,10 @@ A @scheme[html-content] is either
|
||||||
}
|
}
|
||||||
|
|
||||||
A @scheme[Contents-of-html] is either
|
A @scheme[Contents-of-html] is either
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[body]}
|
@item{@scheme[body]}
|
||||||
@item{@scheme[head]}
|
@item{@scheme[head]}
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
@defstruct[(div html-full)()]{
|
@defstruct[(div html-full)()]{
|
||||||
|
|
|
@ -243,7 +243,7 @@ selects an identifier, all terms in the same equivalence class as the
|
||||||
selected term are highlighted in yellow.
|
selected term are highlighted in yellow.
|
||||||
|
|
||||||
The available secondary partitionings are:
|
The available secondary partitionings are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[bound-identifier=?]}
|
@item{@scheme[bound-identifier=?]}
|
||||||
@item{@scheme[module-identifier=?]}
|
@item{@scheme[module-identifier=?]}
|
||||||
@item{@scheme[module-or-top-identifier=?]}
|
@item{@scheme[module-or-top-identifier=?]}
|
||||||
|
@ -263,14 +263,14 @@ The available secondary partitionings are:
|
||||||
The bindings of the two identifiers were imported into the current
|
The bindings of the two identifiers were imported into the current
|
||||||
context by requiring the same module.
|
context by requiring the same module.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@subsection{Properties}
|
@subsection{Properties}
|
||||||
|
|
||||||
When the properties pane is shown, it displays properties of the
|
When the properties pane is shown, it displays properties of the
|
||||||
selected syntax object. The properties pane has two tabbed pages:
|
selected syntax object. The properties pane has two tabbed pages:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@bold{Term}:
|
@item{@bold{Term}:
|
||||||
|
|
||||||
If the selection is an identifier, shows the binding information
|
If the selection is an identifier, shows the binding information
|
||||||
|
@ -282,7 +282,7 @@ selected syntax object. The properties pane has two tabbed pages:
|
||||||
Displays source location information and other properties (see
|
Displays source location information and other properties (see
|
||||||
@scheme[syntax-property]) carried by the syntax object.
|
@scheme[syntax-property]) carried by the syntax object.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@subsection{Interpreting syntax}
|
@subsection{Interpreting syntax}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ arrow that the user can click to hide or show the sub-list's items.
|
||||||
|
|
||||||
The list control supports the following default keystrokes:
|
The list control supports the following default keystrokes:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Down: move to the next entry at the current level (skipping lower levels).}
|
@item{Down: move to the next entry at the current level (skipping lower levels).}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ The list control supports the following default keystrokes:
|
||||||
|
|
||||||
@item{Return: open/close the current selected level (only valid for lists).}
|
@item{Return: open/close the current selected level (only valid for lists).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
@local-table-of-contents[]
|
@local-table-of-contents[]
|
||||||
|
|
|
@ -14,13 +14,13 @@ Sets @scheme[port]'s display handler (via
|
||||||
@scheme[port-display-handler]) so that when it encounters these
|
@scheme[port-display-handler]) so that when it encounters these
|
||||||
values:
|
values:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{exact, real, non-integral numbers}
|
@item{exact, real, non-integral numbers}
|
||||||
|
|
||||||
@item{syntax objects}
|
@item{syntax objects}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
it uses @scheme[write-special] to send snips to the port,
|
it uses @scheme[write-special] to send snips to the port,
|
||||||
instead of those values. Otherwise, it behaves like the
|
instead of those values. Otherwise, it behaves like the
|
||||||
|
|
|
@ -72,7 +72,7 @@ user to create a new directory.
|
||||||
|
|
||||||
The @scheme[filters] argument is one of:
|
The @scheme[filters] argument is one of:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[(list (list _filter-name _filter-glob) ...)] --- a
|
@item{@scheme[(list (list _filter-name _filter-glob) ...)] --- a
|
||||||
list of pattern names (e.g., @scheme["Scheme Files"]) and glob
|
list of pattern names (e.g., @scheme["Scheme Files"]) and glob
|
||||||
|
@ -89,7 +89,7 @@ The @scheme[filters] argument is one of:
|
||||||
@scheme["*.*"] under Windows and @scheme["*"] on other
|
@scheme["*.*"] under Windows and @scheme["*"] on other
|
||||||
platforms.}
|
platforms.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The @scheme[show-file?] predicate is used to filter file paths that
|
The @scheme[show-file?] predicate is used to filter file paths that
|
||||||
are shown in the dialog. The predicate is applied to the file name as
|
are shown in the dialog. The predicate is applied to the file name as
|
||||||
|
|
|
@ -138,7 +138,7 @@ an additional keyword tag before the binding variables.
|
||||||
|
|
||||||
Each @scheme[clause] has one of the following forms:
|
Each @scheme[clause] has one of the following forms:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[(val target expr)] : Binds @scheme[target]
|
@item{@scheme[(val target expr)] : Binds @scheme[target]
|
||||||
non-recursively to @scheme[expr].}
|
non-recursively to @scheme[expr].}
|
||||||
|
@ -157,7 +157,7 @@ Each @scheme[clause] has one of the following forms:
|
||||||
@item{@scheme[(_ expr ...)] : Evaluates the @scheme[expr]s without
|
@item{@scheme[(_ expr ...)] : Evaluates the @scheme[expr]s without
|
||||||
binding any variables.}
|
binding any variables.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The clauses bind left-to-right. When a @scheme[target] is
|
The clauses bind left-to-right. When a @scheme[target] is
|
||||||
@scheme[(values id ...)], multiple values returned by the
|
@scheme[(values id ...)], multiple values returned by the
|
||||||
|
|
|
@ -20,7 +20,7 @@ Inlines the syntax in the designated file in place of the
|
||||||
@scheme[include] expression. The @scheme[path-spec] can be any of the
|
@scheme[include] expression. The @scheme[path-spec] can be any of the
|
||||||
following:
|
following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{A literal string that specifies a path to include, parsed
|
@item{A literal string that specifies a path to include, parsed
|
||||||
according to the platform's conventions (which means that it is
|
according to the platform's conventions (which means that it is
|
||||||
|
@ -45,7 +45,7 @@ following:
|
||||||
directory using @scheme[build-path] to obtain the path to
|
directory using @scheme[build-path] to obtain the path to
|
||||||
include.}
|
include.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If @scheme[path-spec] specifies a relative path to include, the path
|
If @scheme[path-spec] specifies a relative path to include, the path
|
||||||
is resolved relative to the source for the @scheme[include]
|
is resolved relative to the source for the @scheme[include]
|
||||||
|
|
|
@ -191,7 +191,7 @@ and keyword arguments---may contain specifications for rest-like
|
||||||
arguments and/or mode keywords. Up to five rest-like arguments can be
|
arguments and/or mode keywords. Up to five rest-like arguments can be
|
||||||
declared, each with an @scheme[_id] to bind:
|
declared, each with an @scheme[_id] to bind:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@as-index{@scheme[#:rest]} --- The variable is bound to the
|
@item{@as-index{@scheme[#:rest]} --- The variable is bound to the
|
||||||
list of ``rest'' arguments, which is the list of all values after
|
list of ``rest'' arguments, which is the list of all values after
|
||||||
|
@ -233,7 +233,7 @@ declared, each with an @scheme[_id] to bind:
|
||||||
binding. (When no @scheme[#:body] variables are specified, then
|
binding. (When no @scheme[#:body] variables are specified, then
|
||||||
@scheme[#:other-keys+body] is the same as @scheme[#:other-keys].)}
|
@scheme[#:other-keys+body] is the same as @scheme[#:other-keys].)}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
In the following example, all rest-like arguments are used and have different
|
In the following example, all rest-like arguments are used and have different
|
||||||
bindings:
|
bindings:
|
||||||
|
@ -252,10 +252,10 @@ bindings:
|
||||||
|
|
||||||
Note that the following invariants always hold:
|
Note that the following invariants always hold:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[_rest] = @scheme[(append _all-keys _body)]}
|
@item{@scheme[_rest] = @scheme[(append _all-keys _body)]}
|
||||||
@item{@scheme[_other-keys+body] = @scheme[(append _other-keys _body)]}
|
@item{@scheme[_other-keys+body] = @scheme[(append _other-keys _body)]}
|
||||||
}
|
]
|
||||||
|
|
||||||
To write a procedure that uses a few keyword argument values, and that
|
To write a procedure that uses a few keyword argument values, and that
|
||||||
also calls another procedure with the same list of arguments
|
also calls another procedure with the same list of arguments
|
||||||
|
@ -333,7 +333,7 @@ suffix:
|
||||||
Finally, the argument list of a @scheme[lambda/kw] can contain
|
Finally, the argument list of a @scheme[lambda/kw] can contain
|
||||||
keywords that serve as mode flags to control error reporting.
|
keywords that serve as mode flags to control error reporting.
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@as-index{@scheme[#:allow-other-keys]} --- The keyword-value
|
@item{@as-index{@scheme[#:allow-other-keys]} --- The keyword-value
|
||||||
sequence at the call site @italic{can} include keywords that are not
|
sequence at the call site @italic{can} include keywords that are not
|
||||||
|
@ -374,12 +374,12 @@ keywords that serve as mode flags to control error reporting.
|
||||||
@item{@as-index{@scheme[#:forbid-anything]} --- Forbids all of the
|
@item{@as-index{@scheme[#:forbid-anything]} --- Forbids all of the
|
||||||
above, ensuring that calls are as restricted as possible.}
|
above, ensuring that calls are as restricted as possible.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
These above mode markers are rarely needed, because the default modes
|
These above mode markers are rarely needed, because the default modes
|
||||||
are determined by the declared rest-like arguments:
|
are determined by the declared rest-like arguments:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The default is to allow other keys if a @scheme[#:rest],
|
@item{The default is to allow other keys if a @scheme[#:rest],
|
||||||
@scheme[#:other-keys+body], @scheme[#:all-keys], or
|
@scheme[#:other-keys+body], @scheme[#:all-keys], or
|
||||||
|
@ -393,12 +393,12 @@ are determined by the declared rest-like arguments:
|
||||||
@scheme[#:body], or @scheme[#:other-keys+body] variable is declared
|
@scheme[#:body], or @scheme[#:other-keys+body] variable is declared
|
||||||
(and a @scheme[#:body] argument requires allowing them).}
|
(and a @scheme[#:body] argument requires allowing them).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Here's an alternate specification, which maps rest-like arguments to
|
Here's an alternate specification, which maps rest-like arguments to
|
||||||
the behavior that they imply:
|
the behavior that they imply:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[#:rest]: Everything is allowed (a body, other keys,
|
@item{@scheme[#:rest]: Everything is allowed (a body, other keys,
|
||||||
and duplicate keys);}
|
and duplicate keys);}
|
||||||
|
@ -421,7 +421,7 @@ the behavior that they imply:
|
||||||
overridden by an explicit @scheme[#:allow-...] or a
|
overridden by an explicit @scheme[#:allow-...] or a
|
||||||
@scheme[#:forbid-...] mode.}
|
@scheme[#:forbid-...] mode.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@; ----------------------------------------
|
@; ----------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ created for the ``restarted'' MzScheme. (The new namespace is
|
||||||
installed as the current namespace in the new thread.) In the new
|
installed as the current namespace in the new thread.) In the new
|
||||||
thread, restarting performs the following actions:
|
thread, restarting performs the following actions:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @scheme[init-namespace] procedure is called with no
|
@item{The @scheme[init-namespace] procedure is called with no
|
||||||
arguments. The return value is ignored.}
|
arguments. The return value is ignored.}
|
||||||
|
@ -53,7 +53,7 @@ thread, restarting performs the following actions:
|
||||||
@scheme[read-eval-print-loop] returns, the return value for
|
@scheme[read-eval-print-loop] returns, the return value for
|
||||||
@scheme[restart-mzscheme] is set to @scheme[#t].}
|
@scheme[restart-mzscheme] is set to @scheme[#t].}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Before evaluating command-line arguments, an exit handler is installed
|
Before evaluating command-line arguments, an exit handler is installed
|
||||||
that immediately returns from @scheme[restart-mzscheme] with the value
|
that immediately returns from @scheme[restart-mzscheme] with the value
|
||||||
|
|
|
@ -62,7 +62,7 @@ exn:fail:resource-resource
|
||||||
Like @scheme-make-evaluator or @scheme[make-module-evaluator], but
|
Like @scheme-make-evaluator or @scheme[make-module-evaluator], but
|
||||||
with several differences:
|
with several differences:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @scheme[language] argument can be one of a fixed set of
|
@item{The @scheme[language] argument can be one of a fixed set of
|
||||||
symbols: @scheme['r5rs], etc. They are converted by adding a
|
symbols: @scheme['r5rs], etc. They are converted by adding a
|
||||||
|
@ -79,4 +79,4 @@ with several differences:
|
||||||
detect @scheme[require]), and the @scheme[require]d modules are
|
detect @scheme[require]), and the @scheme[require]d modules are
|
||||||
added to the @scheme[#:allow] list for @|scheme-make-evaluator|.}
|
added to the @scheme[#:allow] list for @|scheme-make-evaluator|.}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
|
@ -77,13 +77,13 @@ returned, and if @scheme[str] contains multiple expressions, the
|
||||||
result will be contain multiple values from all subexpressions.
|
result will be contain multiple values from all subexpressions.
|
||||||
|
|
||||||
The @scheme[err-handler] argument can be:
|
The @scheme[err-handler] argument can be:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[#f] (the default) which means that errors are not
|
@item{@scheme[#f] (the default) which means that errors are not
|
||||||
caught;}
|
caught;}
|
||||||
@item{a one-argument procedure, which will be used with an exception
|
@item{a one-argument procedure, which will be used with an exception
|
||||||
(when an error occurs) and its result will be returned}
|
(when an error occurs) and its result will be returned}
|
||||||
@item{a thunk, which will be used to produce a result.}
|
@item{a thunk, which will be used to produce a result.}
|
||||||
}}
|
]}
|
||||||
|
|
||||||
|
|
||||||
@defproc[(expr->string [expr any/c]) string?]{
|
@defproc[(expr->string [expr any/c]) string?]{
|
||||||
|
|
|
@ -344,7 +344,7 @@ exception is raised.}
|
||||||
Creates and returns a new hash table. If provided, each @scheme[flag]
|
Creates and returns a new hash table. If provided, each @scheme[flag]
|
||||||
must one of the following:
|
must one of the following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme['weak] --- creates a hash table with
|
@item{@indexed-scheme['weak] --- creates a hash table with
|
||||||
weakly-held keys via @scheme[make-weak-hash],
|
weakly-held keys via @scheme[make-weak-hash],
|
||||||
|
@ -358,7 +358,7 @@ must one of the following:
|
||||||
keys using @scheme[eqv?] instead of @scheme[eq?] using
|
keys using @scheme[eqv?] instead of @scheme[eq?] using
|
||||||
@scheme[make-hasheqv] or @scheme[make-weak-hasheqv].}
|
@scheme[make-hasheqv] or @scheme[make-weak-hasheqv].}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
By default, key comparisons use @scheme[eq?] (i.e., the hash table is
|
By default, key comparisons use @scheme[eq?] (i.e., the hash table is
|
||||||
created with @scheme[make-hasheq]). If the second @scheme[flag] is
|
created with @scheme[make-hasheq]). If the second @scheme[flag] is
|
||||||
|
|
|
@ -327,7 +327,7 @@ exception.}
|
||||||
A parameter that determines a mapping of proxy servers used for
|
A parameter that determines a mapping of proxy servers used for
|
||||||
connections. Each mapping is a list of three elements:
|
connections. Each mapping is a list of three elements:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{the URL scheme, such as @scheme["http"];}
|
@item{the URL scheme, such as @scheme["http"];}
|
||||||
|
|
||||||
|
@ -335,7 +335,7 @@ connections. Each mapping is a list of three elements:
|
||||||
|
|
||||||
@item{the proxy server port number.}
|
@item{the proxy server port number.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Currently, the only proxiable scheme is @scheme["http"]. The default
|
Currently, the only proxiable scheme is @scheme["http"]. The default
|
||||||
mapping is the empty list (i.e., no proxies).}
|
mapping is the empty list (i.e., no proxies).}
|
||||||
|
|
|
@ -16,7 +16,7 @@ generic @scheme[ports->ssl-ports] interface.
|
||||||
To use this library, you will need OpenSSL installed on your machine,
|
To use this library, you will need OpenSSL installed on your machine,
|
||||||
but
|
but
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{for Windows, the PLT Scheme distribution for Windows includes
|
@item{for Windows, the PLT Scheme distribution for Windows includes
|
||||||
the necessary DLLs.}
|
the necessary DLLs.}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ but
|
||||||
@item{for Unix, @filepath{libssl.so} and @filepath{libcrypto.so} are
|
@item{for Unix, @filepath{libssl.so} and @filepath{libcrypto.so} are
|
||||||
likely to be installed on your machine, already.}
|
likely to be installed on your machine, already.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
@defthing[ssl-available? boolean?]{
|
@defthing[ssl-available? boolean?]{
|
||||||
|
@ -106,13 +106,13 @@ section @secref["cert-procs"] below for more information on
|
||||||
certificates.
|
certificates.
|
||||||
|
|
||||||
The @scheme[protocol] must be one of the following:
|
The @scheme[protocol] must be one of the following:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['sslv2-or-v3] : SSL protocol versions 2 or 3, as
|
@item{@scheme['sslv2-or-v3] : SSL protocol versions 2 or 3, as
|
||||||
appropriate (this is the default)}
|
appropriate (this is the default)}
|
||||||
@item{@scheme['sslv2] : SSL protocol version 2}
|
@item{@scheme['sslv2] : SSL protocol version 2}
|
||||||
@item{@scheme['sslv3] : SSL protocol version 3}
|
@item{@scheme['sslv3] : SSL protocol version 3}
|
||||||
@item{@scheme['tls] : the TLS protocol version 1}
|
@item{@scheme['tls] : the TLS protocol version 1}
|
||||||
}
|
]
|
||||||
|
|
||||||
By default, the context returned by @scheme[ssl-make-client-context] does not
|
By default, the context returned by @scheme[ssl-make-client-context] does not
|
||||||
request verification of a server's certificate. Use @scheme[ssl-set-verify!]
|
request verification of a server's certificate. Use @scheme[ssl-set-verify!]
|
||||||
|
|
|
@ -60,7 +60,7 @@ style lexer and parser generators.
|
||||||
|
|
||||||
An @scheme[re] is matched as follows:
|
An @scheme[re] is matched as follows:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[id] --- expands to the named @deftech{lexer abbreviation};
|
@item{@scheme[id] --- expands to the named @deftech{lexer abbreviation};
|
||||||
abbreviations are defined via @scheme[define-lex-abbrev] or supplied by modules
|
abbreviations are defined via @scheme[define-lex-abbrev] or supplied by modules
|
||||||
like @schememodname[parser-tools/lex-sre].}
|
like @schememodname[parser-tools/lex-sre].}
|
||||||
|
@ -78,7 +78,7 @@ style lexer and parser generators.
|
||||||
The sub-expression must be a set of characters @scheme[re].}
|
The sub-expression must be a set of characters @scheme[re].}
|
||||||
@item{@scheme[(id datum ...)] --- expands the @deftech{lexer macro} named @scheme[id]; macros
|
@item{@scheme[(id datum ...)] --- expands the @deftech{lexer macro} named @scheme[id]; macros
|
||||||
are defined via @scheme[define-lex-trans].}
|
are defined via @scheme[define-lex-trans].}
|
||||||
}
|
]
|
||||||
|
|
||||||
Note that both @scheme[(concatenation)] and @scheme[""] match the
|
Note that both @scheme[(concatenation)] and @scheme[""] match the
|
||||||
empty string, @scheme[(union)] matches nothing,
|
empty string, @scheme[(union)] matches nothing,
|
||||||
|
@ -106,7 +106,7 @@ The suggested prefix is @scheme[:], so that @scheme[:*] and
|
||||||
Since negation is not a common operator on regular expressions, here
|
Since negation is not a common operator on regular expressions, here
|
||||||
are a few examples, using @scheme[:] prefixed SRE syntax:
|
are a few examples, using @scheme[:] prefixed SRE syntax:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@schemeblock0[(complement "1")]
|
@item{@schemeblock0[(complement "1")]
|
||||||
|
|
||||||
|
@ -150,13 +150,13 @@ are a few examples, using @scheme[:] prefixed SRE syntax:
|
||||||
words, @scheme[(:* (complement "xx"))] = @scheme[any-string]. It is
|
words, @scheme[(:* (complement "xx"))] = @scheme[any-string]. It is
|
||||||
usually not correct to place a @scheme[:*] around a
|
usually not correct to place a @scheme[:*] around a
|
||||||
@scheme[complement].}
|
@scheme[complement].}
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
The following binding have special meaning inside of a lexer
|
The following binding have special meaning inside of a lexer
|
||||||
action:
|
action:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[start-pos] --- a @scheme[position] struct for the first character matched.}
|
@item{@scheme[start-pos] --- a @scheme[position] struct for the first character matched.}
|
||||||
@item{@scheme[end-pos] --- a @scheme[position] struct for the character after the last character in the match.}
|
@item{@scheme[end-pos] --- a @scheme[position] struct for the character after the last character in the match.}
|
||||||
@item{@scheme[lexeme] --- the matched string.}
|
@item{@scheme[lexeme] --- the matched string.}
|
||||||
|
@ -181,7 +181,7 @@ are a few examples, using @scheme[:] prefixed SRE syntax:
|
||||||
@scheme[((comment) (return-without-pos (get-token input-port)))]
|
@scheme[((comment) (return-without-pos (get-token input-port)))]
|
||||||
will cause the value of the recursive call to be returned without
|
will cause the value of the recursive call to be returned without
|
||||||
wrapping position around it.}
|
wrapping position around it.}
|
||||||
}
|
]
|
||||||
|
|
||||||
The lexer raises an exception @scheme[(exn:read)] if none of the
|
The lexer raises an exception @scheme[(exn:read)] if none of the
|
||||||
regular expressions match the input. Hint: If @scheme[(any-char
|
regular expressions match the input. Hint: If @scheme[(any-char
|
||||||
|
@ -197,7 +197,7 @@ are a few examples, using @scheme[:] prefixed SRE syntax:
|
||||||
special). The non-@scheme[re] @scheme[trigger] forms handle these
|
special). The non-@scheme[re] @scheme[trigger] forms handle these
|
||||||
cases:
|
cases:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @scheme[(eof)] rule is matched when the input port
|
@item{The @scheme[(eof)] rule is matched when the input port
|
||||||
returns an @scheme[eof-object] value. If no @scheme[(eof)]
|
returns an @scheme[eof-object] value. If no @scheme[(eof)]
|
||||||
|
@ -214,7 +214,7 @@ are a few examples, using @scheme[:] prefixed SRE syntax:
|
||||||
port returns a value other than a character,
|
port returns a value other than a character,
|
||||||
@scheme[eof-object], or @scheme[special-comment] structure. If
|
@scheme[eof-object], or @scheme[special-comment] structure. If
|
||||||
no @scheme[(special)] rule is present, the lexer returns
|
no @scheme[(special)] rule is present, the lexer returns
|
||||||
@scheme[(void)].}}
|
@scheme[(void)].}]
|
||||||
|
|
||||||
End-of-files, specials, special-comments and special-errors can
|
End-of-files, specials, special-comments and special-errors can
|
||||||
never be part of a lexeme with surrounding characters.
|
never be part of a lexeme with surrounding characters.
|
||||||
|
@ -508,7 +508,7 @@ the right choice when using @scheme[lexer] in other situations.
|
||||||
are no duplicates and all non-@italic{OPTIONAL} declarations are
|
are no duplicates and all non-@italic{OPTIONAL} declarations are
|
||||||
present:
|
present:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@schemeblock0[(grammar (non-terminal-id
|
@item{@schemeblock0[(grammar (non-terminal-id
|
||||||
((grammar-id ...) maybe-prec expr)
|
((grammar-id ...) maybe-prec expr)
|
||||||
|
@ -642,7 +642,7 @@ the right choice when using @scheme[lexer] in other situations.
|
||||||
Causes the parser generator not to report shift/reduce or
|
Causes the parser generator not to report shift/reduce or
|
||||||
reduce/reduce conflicts.}
|
reduce/reduce conflicts.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The result of a @scheme[parser] expression with one @scheme[start]
|
The result of a @scheme[parser] expression with one @scheme[start]
|
||||||
non-terminal is a function, @scheme[_parse], that takes one
|
non-terminal is a function, @scheme[_parse], that takes one
|
||||||
|
|
|
@ -312,7 +312,7 @@ where @italic{command} is a subcommand from the following list, and
|
||||||
@(define (cmd name desc)
|
@(define (cmd name desc)
|
||||||
@item{@(seclink name (exec name)): @desc})
|
@item{@(seclink name (exec name)): @desc})
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@cmd["create"]{create a PLaneT archive from a directory}
|
@cmd["create"]{create a PLaneT archive from a directory}
|
||||||
@cmd["install"]{download and install a given package}
|
@cmd["install"]{download and install a given package}
|
||||||
@cmd["remove"]{remove the specified package from the local cache}
|
@cmd["remove"]{remove the specified package from the local cache}
|
||||||
|
@ -325,7 +325,7 @@ where @italic{command} is a subcommand from the following list, and
|
||||||
@cmd["url"]{get a URL for the given package}
|
@cmd["url"]{get a URL for the given package}
|
||||||
@cmd["open"]{unpack the contents of the given package}
|
@cmd["open"]{unpack the contents of the given package}
|
||||||
@cmd["structure"]{display the structure of a given .plt archive}
|
@cmd["structure"]{display the structure of a given .plt archive}
|
||||||
@cmd["print"]{display a file within of the given .plt archive}}
|
@cmd["print"]{display a file within of the given .plt archive}]
|
||||||
|
|
||||||
Each of these commands is described in more detail below. All the
|
Each of these commands is described in more detail below. All the
|
||||||
functionality of the command-line tool is also provided with a programmatic interface by
|
functionality of the command-line tool is also provided with a programmatic interface by
|
||||||
|
@ -339,9 +339,9 @@ Create a PLaneT archive in the current directory whose contents are the
|
||||||
directory @exec{<path>}.
|
directory @exec{<path>}.
|
||||||
|
|
||||||
@exec{<option>} is one of:
|
@exec{<option>} is one of:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@exec{-f, --force}: force a package to be created even if its info.ss file contains
|
@item{@exec{-f, --force}: force a package to be created even if its info.ss file contains
|
||||||
errors.}}
|
errors.}]
|
||||||
|
|
||||||
@subsection[#:tag "install"]{@exec{install}}
|
@subsection[#:tag "install"]{@exec{install}}
|
||||||
|
|
||||||
|
@ -358,9 +358,9 @@ Remove the specified package from the local cache, optionally also removing its
|
||||||
distribution file.
|
distribution file.
|
||||||
|
|
||||||
@exec{<option>} is one of:
|
@exec{<option>} is one of:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@exec{-e, --erase}: also remove the package's distribution file from the
|
@item{@exec{-e, --erase}: also remove the package's distribution file from the
|
||||||
uninstalled-package cache}}
|
uninstalled-package cache}]
|
||||||
|
|
||||||
@subsection[#:tag "show"]{@exec{show}}
|
@subsection[#:tag "show"]{@exec{show}}
|
||||||
|
|
||||||
|
@ -369,10 +369,10 @@ Usage:
|
||||||
List the packages installed in the local cache.
|
List the packages installed in the local cache.
|
||||||
|
|
||||||
@exec{<option>} is one of:
|
@exec{<option>} is one of:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@exec{-p, --packages}: show packages only (default)}
|
@item{@exec{-p, --packages}: show packages only (default)}
|
||||||
@item{@exec{-l, --linkage}: show linkage table only}
|
@item{@exec{-l, --linkage}: show linkage table only}
|
||||||
@item{@exec{-a, --all}: show packages and linkage}}
|
@item{@exec{-a, --all}: show packages and linkage}]
|
||||||
|
|
||||||
@subsection[#:tag "clearlinks"]{@exec{clearlinks}}
|
@subsection[#:tag "clearlinks"]{@exec{clearlinks}}
|
||||||
|
|
||||||
|
@ -694,7 +694,7 @@ already-existing package:
|
||||||
|
|
||||||
PLaneT can distribute whatever programs you write, but keep
|
PLaneT can distribute whatever programs you write, but keep
|
||||||
these guidelines in mind as you write:
|
these guidelines in mind as you write:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{Organize your code into modules. Since the PLaneT client is
|
@item{Organize your code into modules. Since the PLaneT client is
|
||||||
integrated into the @scheme[require] form, it works best if your code
|
integrated into the @scheme[require] form, it works best if your code
|
||||||
is arranged into modules.}
|
is arranged into modules.}
|
||||||
|
@ -709,7 +709,7 @@ instead of
|
||||||
|
|
||||||
@scheme[(require (planet "helper.ss" ("username" "packagename.plt" 1 0)))]
|
@scheme[(require (planet "helper.ss" ("username" "packagename.plt" 1 0)))]
|
||||||
|
|
||||||
in files that will also be a part of the package.}}
|
in files that will also be a part of the package.}]
|
||||||
|
|
||||||
@subsubsection[#:tag "devlinks"]{Development Links}
|
@subsubsection[#:tag "devlinks"]{Development Links}
|
||||||
|
|
||||||
|
@ -764,7 +764,7 @@ PLaneT system (as well as the rest of the PLT Scheme tool suite) will
|
||||||
look in it for descriptive metadata about your package. The PLaneT
|
look in it for descriptive metadata about your package. The PLaneT
|
||||||
system looks for certain names in that file:
|
system looks for certain names in that file:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @scheme['blurb] field: If present, the blurb field should contain a list of XHTML fragments
|
@item{The @scheme['blurb] field: If present, the blurb field should contain a list of XHTML fragments
|
||||||
encoded as x-expressions (see the xml collection for details) that
|
encoded as x-expressions (see the xml collection for details) that
|
||||||
|
@ -781,7 +781,7 @@ corresponding to the categories under which this package should be listed.
|
||||||
|
|
||||||
The valid categories are:
|
The valid categories are:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['devtools]: Development Tools}
|
@item{@scheme['devtools]: Development Tools}
|
||||||
@item{@scheme['net]: Networking and Protocols}
|
@item{@scheme['net]: Networking and Protocols}
|
||||||
@item{@scheme['media]: Graphics and Audio}
|
@item{@scheme['media]: Graphics and Audio}
|
||||||
|
@ -793,7 +793,7 @@ The valid categories are:
|
||||||
@item{@scheme['ui]: Textual and Graphical User Interface}
|
@item{@scheme['ui]: Textual and Graphical User Interface}
|
||||||
@item{@scheme['metaprogramming]: Metaprogramming Tools}
|
@item{@scheme['metaprogramming]: Metaprogramming Tools}
|
||||||
@item{@scheme['planet]: PLaneT-Related}
|
@item{@scheme['planet]: PLaneT-Related}
|
||||||
@item{@scheme['misc]: Miscellaneous}}
|
@item{@scheme['misc]: Miscellaneous}]
|
||||||
|
|
||||||
If you put symbols other than these the categories field, they will be
|
If you put symbols other than these the categories field, they will be
|
||||||
ignored. If you put no legal symbols in the categories field or do not
|
ignored. If you put no legal symbols in the categories field or do not
|
||||||
|
@ -882,7 +882,7 @@ or above version 4.0), and the string @scheme["3xx"] indicates that
|
||||||
the package should be included in the v3xx repository (containing
|
the package should be included in the v3xx repository (containing
|
||||||
packages intended to run in PLT Scheme versions in the 3xx series). A
|
packages intended to run in PLT Scheme versions in the 3xx series). A
|
||||||
single package (and a single version of a package) may be included in
|
single package (and a single version of a package) may be included in
|
||||||
multiple repositories with the same PLaneT version number.}}
|
multiple repositories with the same PLaneT version number.}]
|
||||||
|
|
||||||
In addition, PLaneT uses the setup-plt installer to install packages
|
In addition, PLaneT uses the setup-plt installer to install packages
|
||||||
on client machines, so most fields it looks for can be included with
|
on client machines, so most fields it looks for can be included with
|
||||||
|
@ -951,7 +951,7 @@ of thumb is to remember that modules written to work with the
|
||||||
previously-released version of your package should unmodified with the
|
previously-released version of your package should unmodified with the
|
||||||
new package. This means that at a minimum, a backwards compatible
|
new package. This means that at a minimum, a backwards compatible
|
||||||
update should:
|
update should:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{Contain all the same Scheme source files in that the previous
|
@item{Contain all the same Scheme source files in that the previous
|
||||||
version contained in directories intended for public access}
|
version contained in directories intended for public access}
|
||||||
@item{In each public file, provide at least all the bindings that the
|
@item{In each public file, provide at least all the bindings that the
|
||||||
|
@ -959,9 +959,9 @@ previous version provided}
|
||||||
@item{For each name provided with a contract (see @(secref #:doc '(lib
|
@item{For each name provided with a contract (see @(secref #:doc '(lib
|
||||||
"scribblings/guide/guide.scrbl") "contracts" )), provide it
|
"scribblings/guide/guide.scrbl") "contracts" )), provide it
|
||||||
with a contract that is at least as permissive as the previous
|
with a contract that is at least as permissive as the previous
|
||||||
contract}}
|
contract}]
|
||||||
A backwards-compatible upgrade may, however:
|
A backwards-compatible upgrade may, however:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{Change any behavior that
|
@item{Change any behavior that
|
||||||
reasonable consumers of your package would not consider guaranteed
|
reasonable consumers of your package would not consider guaranteed
|
||||||
(@italic{e.g.}, by fixing bugs or improving the efficiency of
|
(@italic{e.g.}, by fixing bugs or improving the efficiency of
|
||||||
|
@ -970,7 +970,7 @@ operations).}
|
||||||
sections. By convention, the contents of any directory called
|
sections. By convention, the contents of any directory called
|
||||||
@filepath{private} are considered private and should not be relied
|
@filepath{private} are considered private and should not be relied
|
||||||
upon by external users of your package.}
|
upon by external users of your package.}
|
||||||
@item{Extend the set of names exported by a module.}}
|
@item{Extend the set of names exported by a module.}]
|
||||||
Currently these rules are guidelines only, but in the future some or
|
Currently these rules are guidelines only, but in the future some or
|
||||||
all of them may be enforced programmatically. Ultimately, though, no
|
all of them may be enforced programmatically. Ultimately, though, no
|
||||||
technical device can precisely capture what it means for a package to
|
technical device can precisely capture what it means for a package to
|
||||||
|
|
|
@ -62,7 +62,7 @@ argument/value pairs after the data.
|
||||||
Besides plotting lines from functions in 2-D, the plotter can also
|
Besides plotting lines from functions in 2-D, the plotter can also
|
||||||
render a variety of other data in several ways:
|
render a variety of other data in several ways:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Discrete data, such as
|
@item{Discrete data, such as
|
||||||
|
|
||||||
|
@ -73,13 +73,13 @@ render a variety of other data in several ways:
|
||||||
|
|
||||||
can be interpreted in several ways:
|
can be interpreted in several ways:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{As points: @scheme[(plot (points _data))]}
|
@item{As points: @scheme[(plot (points _data))]}
|
||||||
|
|
||||||
@item{As error data: @scheme[(plot (error-bars _data))]}
|
@item{As error data: @scheme[(plot (error-bars _data))]}
|
||||||
|
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@item{A function of two variables, such as
|
@item{A function of two variables, such as
|
||||||
|
@ -90,7 +90,7 @@ render a variety of other data in several ways:
|
||||||
|
|
||||||
can be plotted on a 2d graph
|
can be plotted on a 2d graph
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Using contours to represent height (z)
|
@item{Using contours to represent height (z)
|
||||||
|
|
||||||
|
@ -112,11 +112,11 @@ render a variety of other data in several ways:
|
||||||
(plot (vector-field (gradient 3dfun)))
|
(plot (vector-field (gradient 3dfun)))
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
or in a 3d box
|
or in a 3d box
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Displaying only the top of the surface
|
@item{Displaying only the top of the surface
|
||||||
|
|
||||||
|
@ -124,10 +124,10 @@ render a variety of other data in several ways:
|
||||||
(plot3d (surface 3dfun))
|
(plot3d (surface 3dfun))
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@subsection[#:tag "ex-curve-fit"]{Curve Fitting}
|
@subsection[#:tag "ex-curve-fit"]{Curve Fitting}
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ algorithm to fit parameterized functions to given data.
|
||||||
|
|
||||||
To fit a particular function to a curve:
|
To fit a particular function to a curve:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Set up the independent and dependent variable data. The first
|
@item{Set up the independent and dependent variable data. The first
|
||||||
item in each vector is the independent variable, the second is the
|
item in each vector is the independent variable, the second is the
|
||||||
|
@ -196,7 +196,7 @@ To fit a particular function to a curve:
|
||||||
#:y-max 15)
|
#:y-max 15)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
A more realistic example can be found in
|
A more realistic example can be found in
|
||||||
@filepath{demos/fit-demo-2.ss} in the @filepath{plot} collection.
|
@filepath{demos/fit-demo-2.ss} in the @filepath{plot} collection.
|
||||||
|
|
|
@ -96,7 +96,7 @@ values in the same way the REPL does. The conversion process does not
|
||||||
transform every continuous piece of text into a single Scheme string
|
transform every continuous piece of text into a single Scheme string
|
||||||
because doing this:
|
because doing this:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{the Scheme process will need to allocating big strings which makes
|
@item{the Scheme process will need to allocating big strings which makes
|
||||||
this unfeasible for big files,}
|
this unfeasible for big files,}
|
||||||
|
@ -107,7 +107,7 @@ because doing this:
|
||||||
|
|
||||||
@item{special treatment for newlines in these strings will become expensive.}
|
@item{special treatment for newlines in these strings will become expensive.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
(Note that this is different from the BRL approach.)
|
(Note that this is different from the BRL approach.)
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ where text is transformed into Scheme expressions. These directives
|
||||||
cannot be changed from withing transformed text because they change the
|
cannot be changed from withing transformed text because they change the
|
||||||
way this transformation happens. Some of these transformation
|
way this transformation happens. Some of these transformation
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Skipping input:
|
@item{Skipping input:
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ way this transformation happens. Some of these transformation
|
||||||
@verbatim[#:indent 2]|{
|
@verbatim[#:indent 2]|{
|
||||||
shell output
|
shell output
|
||||||
Some preprocessed text
|
Some preprocessed text
|
||||||
123*456*789 = 44253432}
|
123*456*789 = 44253432
|
||||||
}|}
|
}|}
|
||||||
|
|
||||||
@item{Quoting the markers:
|
@item{Quoting the markers:
|
||||||
|
@ -170,7 +170,7 @@ way this transformation happens. Some of these transformation
|
||||||
change already-transformed text, which is the reason for this special
|
change already-transformed text, which is the reason for this special
|
||||||
format.}
|
format.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section{The mzpp read-eval-print loop}
|
@section{The mzpp read-eval-print loop}
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ code that @DFlag{debug} shows). Each expression is evaluated and its result
|
||||||
is printed using the @scheme[show] function (multiple values are all printed), where
|
is printed using the @scheme[show] function (multiple values are all printed), where
|
||||||
@scheme[show] works in the following way:
|
@scheme[show] works in the following way:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@|void-const| and @scheme[#f] values are ignored.}
|
@item{@|void-const| and @scheme[#f] values are ignored.}
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ is printed using the @scheme[show] function (multiple values are all printed), w
|
||||||
@item{All other values are printed with @scheme[display]. No newlines are used
|
@item{All other values are printed with @scheme[display]. No newlines are used
|
||||||
after printing values.}
|
after printing values.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "mzpp-lib"]{Provided bindings}
|
@section[#:tag "mzpp-lib"]{Provided bindings}
|
||||||
|
|
||||||
|
|
|
@ -68,9 +68,9 @@ generates this output:
|
||||||
|
|
||||||
An explanation of a few lines:
|
An explanation of a few lines:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@litchar|{@"bar"}|, @litchar|{[@(+ 1 2)}|---the Scheme objects
|
@item{@litchar|{@"bar"}|, @litchar|{@(+ 1 2)}|---the Scheme objects
|
||||||
that is read is evaluated and displayed back on the input port which
|
that is read is evaluated and displayed back on the input port which
|
||||||
is then printed.}
|
is then printed.}
|
||||||
|
|
||||||
|
@ -82,11 +82,11 @@ An explanation of a few lines:
|
||||||
@item{@litchar|{@(/ (read) 3)12}| --- demonstrates that the Scheme
|
@item{@litchar|{@(/ (read) 3)12}| --- demonstrates that the Scheme
|
||||||
code can do anything with the current input.}
|
code can do anything with the current input.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The complete behavior of the command dispatcher follows:
|
The complete behavior of the command dispatcher follows:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{If the marker sequence is followed by itself, then it is simply
|
@item{If the marker sequence is followed by itself, then it is simply
|
||||||
displayed, using the default, @litchar["@@"] outputs a @litchar["@"].}
|
displayed, using the default, @litchar["@@"] outputs a @litchar["@"].}
|
||||||
|
@ -94,7 +94,7 @@ The complete behavior of the command dispatcher follows:
|
||||||
@item{Otherwise a Scheme expression is read and evaluated, and the result is
|
@item{Otherwise a Scheme expression is read and evaluated, and the result is
|
||||||
processed as follows:
|
processed as follows:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{If the result consists of multiple values, each one is processed,}
|
@item{If the result consists of multiple values, each one is processed,}
|
||||||
|
|
||||||
|
@ -118,13 +118,13 @@ The complete behavior of the command dispatcher follows:
|
||||||
|
|
||||||
@item{All other values are ignored.}
|
@item{All other values are ignored.}
|
||||||
|
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@item{When this processing is done, and printable results have been re-added
|
@item{When this processing is done, and printable results have been re-added
|
||||||
to the input port, control is returned to the main processing loop.}
|
to the input port, control is returned to the main processing loop.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
A built-in convenient behavior is that if the evaluation of the Scheme
|
A built-in convenient behavior is that if the evaluation of the Scheme
|
||||||
expression returned a @|void-const| or @scheme[#f] value (or multiple values that are
|
expression returned a @|void-const| or @scheme[#f] value (or multiple values that are
|
||||||
|
@ -145,7 +145,7 @@ done in a better way using macros). The special treatment of procedure
|
||||||
values is what allows more powerful constructs. There are handled by
|
values is what allows more powerful constructs. There are handled by
|
||||||
their arity (preferring a the nullary treatment over the unary one):
|
their arity (preferring a the nullary treatment over the unary one):
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{A procedure of arity 0 is simply invoked, and its resulting value is
|
@item{A procedure of arity 0 is simply invoked, and its resulting value is
|
||||||
used. The procedure can freely use the input stream to retrieve
|
used. The procedure can freely use the input stream to retrieve
|
||||||
|
@ -218,7 +218,7 @@ their arity (preferring a the nullary treatment over the unary one):
|
||||||
facility that is rarely needed, similarly to the fact that @scheme[call/cc]
|
facility that is rarely needed, similarly to the fact that @scheme[call/cc]
|
||||||
is rarely needed in Scheme.}
|
is rarely needed in Scheme.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Remember that when procedures are used, generated output is not
|
Remember that when procedures are used, generated output is not
|
||||||
reprocessed, just like evaluating other expressions.
|
reprocessed, just like evaluating other expressions.
|
||||||
|
@ -375,7 +375,7 @@ Dispatching-related bindings:
|
||||||
commands. It should be used as a command, not from Scheme code
|
commands. It should be used as a command, not from Scheme code
|
||||||
directly, and it should receive three arguments:
|
directly, and it should receive three arguments:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The name for the new command (the contents of this argument is
|
@item{The name for the new command (the contents of this argument is
|
||||||
converted to a string),}
|
converted to a string),}
|
||||||
|
@ -386,7 +386,7 @@ Dispatching-related bindings:
|
||||||
@item{Arbitrary text, with @bold{textual} instances of the variables that
|
@item{Arbitrary text, with @bold{textual} instances of the variables that
|
||||||
denote places they are used.}
|
denote places they are used.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
For example, the sample code above:
|
For example, the sample code above:
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ without an additional glue script or a makefile. The following examples
|
||||||
use @exec{mzpp}, but they work with @exec{mztext} too. @DFlag{run} uses a single
|
use @exec{mzpp}, but they work with @exec{mztext} too. @DFlag{run} uses a single
|
||||||
argument which is a string specifying a command to run:
|
argument which is a string specifying a command to run:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{1. In its simplest form, the command string specifies some shell command
|
@item{1. In its simplest form, the command string specifies some shell command
|
||||||
which will be executed with its standard input piped in from the
|
which will be executed with its standard input piped in from the
|
||||||
|
@ -59,7 +59,7 @@ argument which is a string specifying a command to run:
|
||||||
|
|
||||||
@item{4. Any other cases where the command string contains a @litchar{*} are invalid.}
|
@item{4. Any other cases where the command string contains a @litchar{*} are invalid.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If an executed command fails with a return status different than 0, the
|
If an executed command fails with a return status different than 0, the
|
||||||
preprocessor execution will signal a failure by returning 1.
|
preprocessor execution will signal a failure by returning 1.
|
||||||
|
|
|
@ -40,7 +40,7 @@ this table looks like:
|
||||||
|
|
||||||
Where actual numbers appear in the printout. The meaning of the
|
Where actual numbers appear in the printout. The meaning of the
|
||||||
numbers and labels is as follows:
|
numbers and labels is as follows:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@tt{A} --- the name of the function that this node represents,
|
@item{@tt{A} --- the name of the function that this node represents,
|
||||||
followed by the source location for the function if it is known.
|
followed by the source location for the function if it is known.
|
||||||
The name can be ``???'' for functions with no identifier, but in
|
The name can be ``???'' for functions with no identifier, but in
|
||||||
|
@ -87,7 +87,7 @@ numbers and labels is as follows:
|
||||||
These values correspond to the @scheme[edge-caller-time] and
|
These values correspond to the @scheme[edge-caller-time] and
|
||||||
@scheme[edge-callee-time] fields; see the documentation for further
|
@scheme[edge-callee-time] fields; see the documentation for further
|
||||||
details.}
|
details.}
|
||||||
}
|
]
|
||||||
|
|
||||||
The function has a few keyword arguments to customize its output:
|
The function has a few keyword arguments to customize its output:
|
||||||
@itemize[
|
@itemize[
|
||||||
|
|
|
@ -179,7 +179,7 @@ are members of the named package.
|
||||||
@section[#:tag "advanced:import"]{@scheme[import]}
|
@section[#:tag "advanced:import"]{@scheme[import]}
|
||||||
|
|
||||||
@elemtag['(adv "import")]
|
@elemtag['(adv "import")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme import Name (code:comment ""))
|
@item{@(scheme import Name (code:comment ""))
|
||||||
|
|
||||||
Imports a specified class to use within the program.}
|
Imports a specified class to use within the program.}
|
||||||
|
@ -187,12 +187,12 @@ are members of the named package.
|
||||||
|
|
||||||
Imports a group of classes that can all be used within the program.}
|
Imports a group of classes that can all be used within the program.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "advanced:class"]{@scheme[class]}
|
@section[#:tag "advanced:class"]{@scheme[class]}
|
||||||
|
|
||||||
@elemtag['(adv "class")]
|
@elemtag['(adv "class")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme class Id { Member ...})
|
@item{@(scheme class Id { Member ...})
|
||||||
|
|
||||||
Creates a class named Id. If no constructor is present, one is generated that takes no arguments.
|
Creates a class named Id. If no constructor is present, one is generated that takes no arguments.
|
||||||
|
@ -237,13 +237,13 @@ are members of the named package.
|
||||||
the listed interfaces.
|
the listed interfaces.
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "advanced:iface"]{@scheme[interface]}
|
@section[#:tag "advanced:iface"]{@scheme[interface]}
|
||||||
|
|
||||||
@elemtag['(adv "iface")]
|
@elemtag['(adv "iface")]
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@(scheme interface Id { Signature ... })
|
@item{@(scheme interface Id { Signature ... })
|
||||||
|
|
||||||
|
@ -254,7 +254,7 @@ are members of the named package.
|
||||||
Creates an interface named Id that specifies a set of method signatures for classes to implement, and
|
Creates an interface named Id that specifies a set of method signatures for classes to implement, and
|
||||||
inherits the method signatures of the interfaces specified in the extends list.
|
inherits the method signatures of the interfaces specified in the extends list.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@elemtag['(adv "sig")]
|
@elemtag['(adv "sig")]
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ by all members of the same package.
|
||||||
|
|
||||||
@elemtag['(adv "field")]
|
@elemtag['(adv "field")]
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme Type Id (code:comment ""))
|
@item{@(scheme Type Id (code:comment ""))
|
||||||
|
|
||||||
Creates a field, bound to Id, that can be used within the current class, or on instances of the
|
Creates a field, bound to Id, that can be used within the current class, or on instances of the
|
||||||
|
@ -303,7 +303,7 @@ by all members of the same package.
|
||||||
current class using an @elemref['(adv "acc")]{expression}.
|
current class using an @elemref['(adv "acc")]{expression}.
|
||||||
This field must have an array type and the value is that of the evaluated @elemref['(adv "ainit")]{array initialization specification}.
|
This field must have an array type and the value is that of the evaluated @elemref['(adv "ainit")]{array initialization specification}.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
All fields with @(scheme static) preceeding their declaration are tied to the class and not tied
|
All fields with @(scheme static) preceeding their declaration are tied to the class and not tied
|
||||||
to an instance of the class. They can be accessed and initialized using the standard techniques
|
to an instance of the class. They can be accessed and initialized using the standard techniques
|
||||||
|
@ -354,7 +354,7 @@ is unique. Each constructor may set its own @elemref['(adv "mods")]{access}. A c
|
||||||
|
|
||||||
@elemtag['(adv "stmt")]{}
|
@elemtag['(adv "stmt")]{}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@elemtag['(adv "asgn")] @(scheme Expression = Expression (code:comment ""))
|
@item{@elemtag['(adv "asgn")] @(scheme Expression = Expression (code:comment ""))
|
||||||
|
|
||||||
The first expression must be a field reference, array position reference, or a variable.
|
The first expression must be a field reference, array position reference, or a variable.
|
||||||
|
@ -449,7 +449,7 @@ is unique. Each constructor may set its own @elemref['(adv "mods")]{access}. A c
|
||||||
This set of expressions can be used in a statement position, provided they
|
This set of expressions can be used in a statement position, provided they
|
||||||
are followed by ';'.
|
are followed by ';'.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "advanced:arrayInt"]{@scheme[ArrayInit]}
|
@section[#:tag "advanced:arrayInt"]{@scheme[ArrayInit]}
|
||||||
|
|
||||||
|
@ -469,7 +469,7 @@ with their values specified by the ArrayInit.
|
||||||
|
|
||||||
@section[#:tag "advanced:expr"]{@scheme[Expression]}
|
@section[#:tag "advanced:expr"]{@scheme[Expression]}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@elemtag['(adv "op")]@(scheme Expression Op Expression)
|
@item{@elemtag['(adv "op")]@(scheme Expression Op Expression)
|
||||||
|
|
||||||
|
@ -611,4 +611,4 @@ with their values specified by the ArrayInit.
|
||||||
@item{@(scheme false)}
|
@item{@(scheme false)}
|
||||||
|
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
|
@ -78,7 +78,7 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
@section{@scheme[import]}
|
@section{@scheme[import]}
|
||||||
|
|
||||||
@elemtag['(beg "import")]
|
@elemtag['(beg "import")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme import Name (code:comment ""))
|
@item{@(scheme import Name (code:comment ""))
|
||||||
|
|
||||||
Imports a specified class to use within the program.}
|
Imports a specified class to use within the program.}
|
||||||
|
@ -86,12 +86,12 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
|
|
||||||
Imports a group of classes that can all be used within the program.}
|
Imports a group of classes that can all be used within the program.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section{@scheme[class]}
|
@section{@scheme[class]}
|
||||||
|
|
||||||
@elemtag['(beg "class")]
|
@elemtag['(beg "class")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme class Id { Member Member ...})
|
@item{@(scheme class Id { Member Member ...})
|
||||||
|
|
||||||
Creates a class named Id. One member is required and must be a @elemref['(beg "ctor")]{constructor.}
|
Creates a class named Id. One member is required and must be a @elemref['(beg "ctor")]{constructor.}
|
||||||
|
@ -102,7 +102,7 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
named by (scheme implements). One member must be a @elemref['(beg "ctor")]{constructor}.
|
named by (scheme implements). One member must be a @elemref['(beg "ctor")]{constructor}.
|
||||||
Any @elemref['(beg "sig")]{method} defined by the interface must be a member of this class.
|
Any @elemref['(beg "sig")]{method} defined by the interface must be a member of this class.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@section{@scheme[interface]}
|
@section{@scheme[interface]}
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ return type, and argument types.
|
||||||
|
|
||||||
@elemtag['(beg "field")]
|
@elemtag['(beg "field")]
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme Type Id (code:comment ""))
|
@item{@(scheme Type Id (code:comment ""))
|
||||||
|
|
||||||
Creates a field, bound to Id, that can be used within the current class, or on instances of the
|
Creates a field, bound to Id, that can be used within the current class, or on instances of the
|
||||||
|
@ -139,7 +139,7 @@ return type, and argument types.
|
||||||
This field will have the declared type and the value of the evaluated @(scheme Expression).
|
This field will have the declared type and the value of the evaluated @(scheme Expression).
|
||||||
@(scheme Expression) may not refer to other fields in the current class.
|
@(scheme Expression) may not refer to other fields in the current class.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@section{@scheme[Method]}
|
@section{@scheme[Method]}
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ The initialization statements pass the value provided to the constructor to the
|
||||||
@section{@scheme[Statement]}
|
@section{@scheme[Statement]}
|
||||||
|
|
||||||
@elemtag['(beg "stmt")]
|
@elemtag['(beg "stmt")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@elemtag['(beg "if")] @(scheme if (Expression) { Statement } else { Statement })
|
@item{@elemtag['(beg "if")] @(scheme if (Expression) { Statement } else { Statement })
|
||||||
|
|
||||||
In this statement the expression should have a boolean type. It is evaluated first.
|
In this statement the expression should have a boolean type. It is evaluated first.
|
||||||
|
@ -180,11 +180,11 @@ The initialization statements pass the value provided to the constructor to the
|
||||||
as the result of the @elemref['(beg "method")]{method} in which it is contained.
|
as the result of the @elemref['(beg "method")]{method} in which it is contained.
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section{@scheme[Expression]}
|
@section{@scheme[Expression]}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@elemtag['(beg "op")]@(scheme Expression Op Expression)
|
@item{@elemtag['(beg "op")]@(scheme Expression Op Expression)
|
||||||
|
|
||||||
|
@ -252,4 +252,4 @@ The initialization statements pass the value provided to the constructor to the
|
||||||
}
|
}
|
||||||
@item{@(scheme true)}
|
@item{@(scheme true)}
|
||||||
@item{@(scheme false)}
|
@item{@(scheme false)}
|
||||||
}
|
]
|
||||||
|
|
|
@ -116,7 +116,7 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
@section[#:tag "intermedAcc:import"]{@scheme[import]}
|
@section[#:tag "intermedAcc:import"]{@scheme[import]}
|
||||||
|
|
||||||
@elemtag['(inta "import")]
|
@elemtag['(inta "import")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme import Name (code:comment ""))
|
@item{@(scheme import Name (code:comment ""))
|
||||||
|
|
||||||
Imports a specified class to use within the program.}
|
Imports a specified class to use within the program.}
|
||||||
|
@ -124,12 +124,12 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
|
|
||||||
Imports a group of classes that can all be used within the program.}
|
Imports a group of classes that can all be used within the program.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "intermedAcc:class"]{@scheme[class]}
|
@section[#:tag "intermedAcc:class"]{@scheme[class]}
|
||||||
|
|
||||||
@elemtag['(inta "class")]
|
@elemtag['(inta "class")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme class Id { Member ...})
|
@item{@(scheme class Id { Member ...})
|
||||||
|
|
||||||
Creates a class named Id. If no constructor is present, one is generated that takes no arguments.
|
Creates a class named Id. If no constructor is present, one is generated that takes no arguments.
|
||||||
|
@ -174,13 +174,13 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
the listed interfaces.
|
the listed interfaces.
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "intermedAcc:iface"]{@scheme[interface]}
|
@section[#:tag "intermedAcc:iface"]{@scheme[interface]}
|
||||||
|
|
||||||
@elemtag['(inta "iface")]
|
@elemtag['(inta "iface")]
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@(scheme interface Id { Signature ... })
|
@item{@(scheme interface Id { Signature ... })
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
Creates an interface named Id that specifies a set of method signatures for classes to implement, and
|
Creates an interface named Id that specifies a set of method signatures for classes to implement, and
|
||||||
inherits the method signatures of the interfaces specified in the extends list.
|
inherits the method signatures of the interfaces specified in the extends list.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@elemtag['(inta "sig")]
|
@elemtag['(inta "sig")]
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ by the containing class. A protected member can be accessed by the containing cl
|
||||||
|
|
||||||
@elemtag['(inta "field")]
|
@elemtag['(inta "field")]
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme Type Id (code:comment ""))
|
@item{@(scheme Type Id (code:comment ""))
|
||||||
|
|
||||||
Creates a field, bound to Id, that can be used within the current class, or on instances of the
|
Creates a field, bound to Id, that can be used within the current class, or on instances of the
|
||||||
|
@ -232,7 +232,7 @@ by the containing class. A protected member can be accessed by the containing cl
|
||||||
current class using an @elemref['(inta "acc")]{expression}.
|
current class using an @elemref['(inta "acc")]{expression}.
|
||||||
This field will have the declared type and the value of the evaluated @(scheme Expression).
|
This field will have the declared type and the value of the evaluated @(scheme Expression).
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "intermedAcc:method"]{@scheme[Method]}
|
@section[#:tag "intermedAcc:method"]{@scheme[Method]}
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ us unique. Each constructor may set its own @elemref['(inta "mods")]{access}. A
|
||||||
|
|
||||||
@elemtag['(inta "stmt")]{}
|
@elemtag['(inta "stmt")]{}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@elemtag['(inta "if")] @(scheme if (Expression) { Statement ... } else { Statement ...})
|
@item{@elemtag['(inta "if")] @(scheme if (Expression) { Statement ... } else { Statement ...})
|
||||||
|
|
||||||
In this statement the expression should have a boolean type. It is evaluated first.
|
In this statement the expression should have a boolean type. It is evaluated first.
|
||||||
|
@ -314,11 +314,11 @@ us unique. Each constructor may set its own @elemref['(inta "mods")]{access}. A
|
||||||
This set of expressions can be used in a statement position, provided they
|
This set of expressions can be used in a statement position, provided they
|
||||||
are followed by ';'.
|
are followed by ';'.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "intermedAcc:expr"]{@scheme[Expression]}
|
@section[#:tag "intermedAcc:expr"]{@scheme[Expression]}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@elemtag['(inta "op")]@(scheme Expression Op Expression)
|
@item{@elemtag['(inta "op")]@(scheme Expression Op Expression)
|
||||||
|
|
||||||
|
@ -421,4 +421,4 @@ us unique. Each constructor may set its own @elemref['(inta "mods")]{access}. A
|
||||||
@item{@(scheme false)}
|
@item{@(scheme false)}
|
||||||
|
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
|
@ -109,7 +109,7 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
@section[#:tag "intermed:import"]{@scheme[import]}
|
@section[#:tag "intermed:import"]{@scheme[import]}
|
||||||
|
|
||||||
@elemtag['(int "import")]
|
@elemtag['(int "import")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme import Name (code:comment ""))
|
@item{@(scheme import Name (code:comment ""))
|
||||||
|
|
||||||
Imports a specified class to use within the program.}
|
Imports a specified class to use within the program.}
|
||||||
|
@ -117,12 +117,12 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
|
|
||||||
Imports a group of classes that can all be used within the program.}
|
Imports a group of classes that can all be used within the program.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "intermed:class"]{@scheme[class]}
|
@section[#:tag "intermed:class"]{@scheme[class]}
|
||||||
|
|
||||||
@elemtag['(int "class")]
|
@elemtag['(int "class")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme class Id { Member ...})
|
@item{@(scheme class Id { Member ...})
|
||||||
|
|
||||||
Creates a class named Id. If no constructor is present, one is generated that takes no arguments.
|
Creates a class named Id. If no constructor is present, one is generated that takes no arguments.
|
||||||
|
@ -167,13 +167,13 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
the listed interfaces.
|
the listed interfaces.
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "intermed:iface"]{@scheme[interface]}
|
@section[#:tag "intermed:iface"]{@scheme[interface]}
|
||||||
|
|
||||||
@elemtag['(int "iface")]
|
@elemtag['(int "iface")]
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@(scheme interface Id { Signature ... })
|
@item{@(scheme interface Id { Signature ... })
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@ An @(scheme Id) is a sequence of alphanumeric characters, _, and $.
|
||||||
Creates an interface named Id that specifies a set of method signatures for classes to implement, and
|
Creates an interface named Id that specifies a set of method signatures for classes to implement, and
|
||||||
inherits the method signatures of the interfaces specified in the extends list.
|
inherits the method signatures of the interfaces specified in the extends list.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@elemtag['(int "sig")]
|
@elemtag['(int "sig")]
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ all signatures are by default abstract.
|
||||||
|
|
||||||
@elemtag['(int "field")]
|
@elemtag['(int "field")]
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@(scheme Type Id (code:comment ""))
|
@item{@(scheme Type Id (code:comment ""))
|
||||||
|
|
||||||
Creates a field, bound to Id, that can be used within the current class, or on instances of the
|
Creates a field, bound to Id, that can be used within the current class, or on instances of the
|
||||||
|
@ -217,7 +217,7 @@ all signatures are by default abstract.
|
||||||
current class using an @elemref['(int "acc")]{expression}.
|
current class using an @elemref['(int "acc")]{expression}.
|
||||||
This field will have the declared type and the value of the evaluated @(scheme Expression).
|
This field will have the declared type and the value of the evaluated @(scheme Expression).
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "intermed:method"]{@scheme[Method]}
|
@section[#:tag "intermed:method"]{@scheme[Method]}
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ parameters, then the first statement in the constructor must be a @elemref['(int
|
||||||
@section[#:tag "intermed:stmt"]{@scheme[Statement]}
|
@section[#:tag "intermed:stmt"]{@scheme[Statement]}
|
||||||
|
|
||||||
@elemtag['(int "stmt")]
|
@elemtag['(int "stmt")]
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@elemtag['(int "if")] @(scheme if (Expression) { Statement ... } else { Statement ...})
|
@item{@elemtag['(int "if")] @(scheme if (Expression) { Statement ... } else { Statement ...})
|
||||||
|
|
||||||
In this statement the expression should have a boolean type. It is evaluated first.
|
In this statement the expression should have a boolean type. It is evaluated first.
|
||||||
|
@ -289,7 +289,7 @@ parameters, then the first statement in the constructor must be a @elemref['(int
|
||||||
This set of expressions can be used in a statement position, provided they
|
This set of expressions can be used in a statement position, provided they
|
||||||
are followed by ';'.
|
are followed by ';'.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -297,7 +297,7 @@ parameters, then the first statement in the constructor must be a @elemref['(int
|
||||||
|
|
||||||
@section[#:tag "intermed:expr"]{@scheme[Expression]}
|
@section[#:tag "intermed:expr"]{@scheme[Expression]}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@elemtag['(int "op")]@(scheme Expression Op Expression)
|
@item{@elemtag['(int "op")]@(scheme Expression Op Expression)
|
||||||
|
|
||||||
|
@ -400,4 +400,4 @@ parameters, then the first statement in the constructor must be a @elemref['(int
|
||||||
@item{@(scheme false)}
|
@item{@(scheme false)}
|
||||||
|
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
|
@ -45,7 +45,7 @@ includes tools and libraries for running @|r5rs| programs.
|
||||||
PLT Scheme provides several layers of support for programs written
|
PLT Scheme provides several layers of support for programs written
|
||||||
according to @|r5rs|:
|
according to @|r5rs|:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{DrScheme provides an @onscreen{R5RS} language, which can be
|
@item{DrScheme provides an @onscreen{R5RS} language, which can be
|
||||||
selected via the @menuitem["Language" "Choose Language..."]
|
selected via the @menuitem["Language" "Choose Language..."]
|
||||||
|
@ -69,7 +69,7 @@ according to @|r5rs|:
|
||||||
@|r5rs| read-eval-print loop. See @secref["r5rs/init-mod"]
|
@|r5rs| read-eval-print loop. See @secref["r5rs/init-mod"]
|
||||||
(later in this manual) for more information.}
|
(later in this manual) for more information.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@; ----------------------------------------
|
@; ----------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ other modules.
|
||||||
|
|
||||||
To run a top-level program, either:
|
To run a top-level program, either:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Use the @exec{plt-r6rs} executable, supplying the file that
|
@item{Use the @exec{plt-r6rs} executable, supplying the file that
|
||||||
contains the program on the command line:
|
contains the program on the command line:
|
||||||
|
@ -109,7 +109,7 @@ To run a top-level program, either:
|
||||||
DrScheme and clicking @onscreen{Run} prints ``hello'' within
|
DrScheme and clicking @onscreen{Run} prints ``hello'' within
|
||||||
the DrScheme interactions window.}
|
the DrScheme interactions window.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@; ----------------------------------------
|
@; ----------------------------------------
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ To ensure that all @|r6rs| library names can be converted to a unique
|
||||||
and distinct library module path, the following conversions are
|
and distinct library module path, the following conversions are
|
||||||
applied to each symbol before concatenating them:
|
applied to each symbol before concatenating them:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The symbol is encoded using UTF-8, and the resulting bytes are
|
@item{The symbol is encoded using UTF-8, and the resulting bytes are
|
||||||
treated as Latin-1 encoded characters. ASCII letters, digits,
|
treated as Latin-1 encoded characters. ASCII letters, digits,
|
||||||
|
@ -254,7 +254,7 @@ applied to each symbol before concatenating them:
|
||||||
and the implicit @schemeidfont{main} when a library path has a single
|
and the implicit @schemeidfont{main} when a library path has a single
|
||||||
symbol element.}
|
symbol element.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Examples (assuming a typical PLT Scheme installation):
|
Examples (assuming a typical PLT Scheme installation):
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,7 @@ given term, Redex assumes that it will always match that term.
|
||||||
(code:line ... (code:comment "literal ellipsis"))
|
(code:line ... (code:comment "literal ellipsis"))
|
||||||
..._id])
|
..._id])
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @defpattech[any] @pattern matches any sepxression.
|
@item{The @defpattech[any] @pattern matches any sepxression.
|
||||||
This @pattern may also be suffixed with an underscore and another
|
This @pattern may also be suffixed with an underscore and another
|
||||||
|
@ -319,7 +319,7 @@ two matches occur, one where @tt{x} is bound to @scheme['()] and
|
||||||
bound to @scheme['()].
|
bound to @scheme['()].
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@defform*[[(redex-match lang #, @|ttpattern| any)
|
@defform*[[(redex-match lang #, @|ttpattern| any)
|
||||||
(redex-match lang #, @|ttpattern|)]]{
|
(redex-match lang #, @|ttpattern|)]]{
|
||||||
|
@ -410,7 +410,7 @@ stands for repetition unless otherwise indicated):
|
||||||
,@scheme-expression
|
,@scheme-expression
|
||||||
(code:line ... (code:comment "literal ellipsis"))])
|
(code:line ... (code:comment "literal ellipsis"))])
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{A term written @scheme[_identifier] is equivalent to the
|
@item{A term written @scheme[_identifier] is equivalent to the
|
||||||
corresponding symbol, unless the identifier is bound by
|
corresponding symbol, unless the identifier is bound by
|
||||||
|
@ -437,7 +437,7 @@ them.}
|
||||||
|
|
||||||
@item{A term written as a literal boolean or a string
|
@item{A term written as a literal boolean or a string
|
||||||
produces the boolean or the string.}
|
produces the boolean or the string.}
|
||||||
}
|
]
|
||||||
|
|
||||||
@defform[(term #, @|tttterm|)]{
|
@defform[(term #, @|tttterm|)]{
|
||||||
|
|
||||||
|
@ -1882,7 +1882,7 @@ lw structs for each of the non-lws in the
|
||||||
list (see the description of lw below for an
|
list (see the description of lw below for an
|
||||||
explanation of logical-space):
|
explanation of logical-space):
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{
|
@item{
|
||||||
If there are two adjacent lws, then the logical
|
If there are two adjacent lws, then the logical
|
||||||
space between them is filled with whitespace.}
|
space between them is filled with whitespace.}
|
||||||
|
@ -1903,7 +1903,7 @@ explanation of logical-space):
|
||||||
the logical space between the two lws is
|
the logical space between the two lws is
|
||||||
absorbed by a new lw that renders using no
|
absorbed by a new lw that renders using no
|
||||||
actual space in the typeset version.
|
actual space in the typeset version.
|
||||||
}}
|
}]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
The following people have contributed to SchemeUnit:
|
The following people have contributed to SchemeUnit:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{Robby Findler pushed me to release version 3}
|
@item{Robby Findler pushed me to release version 3}
|
||||||
|
|
||||||
@item{Matt Jadud and his students at Olin College
|
@item{Matt Jadud and his students at Olin College
|
||||||
|
@ -42,4 +42,4 @@ The following people have contributed to SchemeUnit:
|
||||||
|
|
||||||
@item{The Extreme Programming community started the whole
|
@item{The Extreme Programming community started the whole
|
||||||
testing framework thing}
|
testing framework thing}
|
||||||
}
|
]
|
||||||
|
|
|
@ -39,7 +39,7 @@ Teachpacks are designed to supplement student programs with code that
|
||||||
cannot be expressed in a teaching language. For
|
cannot be expressed in a teaching language. For
|
||||||
example, to enable students to play hangman, we supply a teachpack that
|
example, to enable students to play hangman, we supply a teachpack that
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{implements the random choosing of a word,}
|
@item{implements the random choosing of a word,}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ example, to enable students to play hangman, we supply a teachpack that
|
||||||
|
|
||||||
@item{manages the GUI.}
|
@item{manages the GUI.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
All these tasks are beyond students in the third week and/or impose
|
All these tasks are beyond students in the third week and/or impose
|
||||||
memorization of currently useless knowledge on students. The essence
|
memorization of currently useless knowledge on students. The essence
|
||||||
|
|
|
@ -13,7 +13,7 @@ is @indexed-file{.ss}. The extensions @indexed-file{.scm} and
|
||||||
|
|
||||||
DrScheme's editor can save a program file in two different formats:
|
DrScheme's editor can save a program file in two different formats:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@deftech{Plain-text file format} --- All text editors can read
|
@item{@deftech{Plain-text file format} --- All text editors can read
|
||||||
this format. DrScheme saves a program in plain-text format by
|
this format. DrScheme saves a program in plain-text format by
|
||||||
|
@ -34,7 +34,7 @@ DrScheme's editor can save a program file in two different formats:
|
||||||
encoding (so that different ways of transferring the file are
|
encoding (so that different ways of transferring the file are
|
||||||
unlikely to corrupt the file).}
|
unlikely to corrupt the file).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@; ----------------------------------------
|
@; ----------------------------------------
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ backup file exists. The backup file is saved in the same directory as
|
||||||
the original file, and the backup file's name is generated from the
|
the original file, and the backup file's name is generated from the
|
||||||
original file's name:
|
original file's name:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Under Unix and Mac OS X, a @filepath{~} is added to the end of
|
@item{Under Unix and Mac OS X, a @filepath{~} is added to the end of
|
||||||
the file's name.}
|
the file's name.}
|
||||||
|
@ -54,7 +54,7 @@ original file's name:
|
||||||
@item{Under Windows, the file's extension is replaced with
|
@item{Under Windows, the file's extension is replaced with
|
||||||
@filepath{.bak}.}
|
@filepath{.bak}.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Every five minutes, DrScheme checks each open file. If any file is
|
Every five minutes, DrScheme checks each open file. If any file is
|
||||||
modified and not saved, DrScheme saves the file to a special autosave
|
modified and not saved, DrScheme saves the file to a special autosave
|
||||||
|
@ -64,7 +64,7 @@ without saving the file, the autosave file is removed. The autosave
|
||||||
file is saved in the same directory as the original file, and the
|
file is saved in the same directory as the original file, and the
|
||||||
autosave file's name is generated from the original file's name:
|
autosave file's name is generated from the original file's name:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Under Unix and Mac OS X, a @filepath{#} is added to the start
|
@item{Under Unix and Mac OS X, a @filepath{#} is added to the start
|
||||||
and end of the file's name, then a number is added after the
|
and end of the file's name, then a number is added after the
|
||||||
|
@ -75,7 +75,7 @@ autosave file's name is generated from the original file's name:
|
||||||
@item{Under Windows, the file's extension is replaced with a number
|
@item{Under Windows, the file's extension is replaced with a number
|
||||||
to make the autosave filename unique.}
|
to make the autosave filename unique.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If the definitions window is modified and there is no current file,
|
If the definitions window is modified and there is no current file,
|
||||||
then an autosave file is written to the user's ``documents''
|
then an autosave file is written to the user's ``documents''
|
||||||
|
|
|
@ -93,7 +93,7 @@ Clicking the @as-index{@onscreen{Check Syntax} button} annotates the
|
||||||
program text in the definitions window. It add the following
|
program text in the definitions window. It add the following
|
||||||
annotations:
|
annotations:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@bold{Syntactic Highlighting:} Imported variables and locally
|
@item{@bold{Syntactic Highlighting:} Imported variables and locally
|
||||||
defined variables are highlighted with color
|
defined variables are highlighted with color
|
||||||
|
@ -143,7 +143,7 @@ annotations:
|
||||||
imported from a module shows the module that it is imported
|
imported from a module shows the module that it is imported
|
||||||
from in a status line at the bottom of the frame.}
|
from in a status line at the bottom of the frame.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The @as-index{@onscreen{Run} button} evaluates the program in the
|
The @as-index{@onscreen{Run} button} evaluates the program in the
|
||||||
@tech{definitions window} and resets the @tech{interactions window}.
|
@tech{definitions window} and resets the @tech{interactions window}.
|
||||||
|
@ -165,7 +165,7 @@ evaluation immediately.
|
||||||
DrScheme supports multiple dialects of Scheme, as well as some
|
DrScheme supports multiple dialects of Scheme, as well as some
|
||||||
non-Scheme languages. You specify a language in one of two ways:
|
non-Scheme languages. You specify a language in one of two ways:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Select the @menuitem["Language" "Choose Language..."] menu
|
@item{Select the @menuitem["Language" "Choose Language..."] menu
|
||||||
item, and choose a language other than @drlang{Module}. After
|
item, and choose a language other than @drlang{Module}. After
|
||||||
|
@ -179,7 +179,7 @@ non-Scheme languages. You specify a language in one of two ways:
|
||||||
specify a specific language as part of the program usually by
|
specify a specific language as part of the program usually by
|
||||||
starting the definitions-window content with @hash-lang[].}
|
starting the definitions-window content with @hash-lang[].}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The latter method, @drlang{Module} with @hash-lang[], is the recommend
|
The latter method, @drlang{Module} with @hash-lang[], is the recommend
|
||||||
mode, and it is described further in @secref["module"].
|
mode, and it is described further in @secref["module"].
|
||||||
|
@ -224,7 +224,7 @@ match. DrScheme also rewrites open square brackets, usually to an
|
||||||
open parenthesis. There are some exceptions where opening square
|
open parenthesis. There are some exceptions where opening square
|
||||||
brackets are not automatically changed to parentheses:
|
brackets are not automatically changed to parentheses:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{If the square bracket is after @scheme[cond]-like keyword,
|
@item{If the square bracket is after @scheme[cond]-like keyword,
|
||||||
potentially skipping some of the sub-expressions in the
|
potentially skipping some of the sub-expressions in the
|
||||||
|
@ -246,7 +246,7 @@ brackets are not automatically changed to parentheses:
|
||||||
|
|
||||||
@item{If the square bracket is in the middle of string,
|
@item{If the square bracket is in the middle of string,
|
||||||
comment, character, or symbol.}
|
comment, character, or symbol.}
|
||||||
}
|
]
|
||||||
|
|
||||||
The upshot of DrScheme's help is that you can always use the
|
The upshot of DrScheme's help is that you can always use the
|
||||||
(presumably unshifted) square brackets on your keyboard to type
|
(presumably unshifted) square brackets on your keyboard to type
|
||||||
|
@ -579,7 +579,7 @@ of a green triangle over this expression's left parenthesis.
|
||||||
|
|
||||||
While execution is paused, several buttons are available:
|
While execution is paused, several buttons are available:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @as-index{@onscreen{Go} button} is enabled
|
@item{The @as-index{@onscreen{Go} button} is enabled
|
||||||
whenever the program is paused. It causes the program to resume
|
whenever the program is paused. It causes the program to resume
|
||||||
|
@ -603,7 +603,7 @@ the @onscreen{Over} button, it sets a one-time breakpoint and
|
||||||
continues execution. In this case, the program stops upon returning
|
continues execution. In this case, the program stops upon returning
|
||||||
to the context or raising an unhandled exception.}
|
to the context or raising an unhandled exception.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If the program is running (not paused), then only the @as-index{Pause}
|
If the program is running (not paused), then only the @as-index{Pause}
|
||||||
button will be enabled. Clicking it will interrupt execution and
|
button will be enabled. Clicking it will interrupt execution and
|
||||||
|
@ -620,7 +620,7 @@ button, stopped execution cannot be continued.
|
||||||
When execution is paused, the definitions window supports several
|
When execution is paused, the definitions window supports several
|
||||||
additional actions:
|
additional actions:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Hovering the mouse cursor over a parenthesis may reveal a
|
@item{Hovering the mouse cursor over a parenthesis may reveal a
|
||||||
pink circle. If so, right-clicking or control-clicking (Mac OS X)
|
pink circle. If so, right-clicking or control-clicking (Mac OS X)
|
||||||
|
@ -665,7 +665,7 @@ options to @onscreen{Print value of <var> to console} or
|
||||||
in the interactions window; the latter opens a text box in which to
|
in the interactions window; the latter opens a text box in which to
|
||||||
enter a new value for the variable.}
|
enter a new value for the variable.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@subsection{Stack View Pane}
|
@subsection{Stack View Pane}
|
||||||
|
|
||||||
|
@ -734,7 +734,7 @@ engine, while other languages support only one type or engine.
|
||||||
|
|
||||||
Each type has advantages and disadvantages:
|
Each type has advantages and disadvantages:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{A @deftech{launcher executable} uses the latest version of
|
@item{A @deftech{launcher executable} uses the latest version of
|
||||||
your program source file when it starts. It also accesses library
|
your program source file when it starts. It also accesses library
|
||||||
|
@ -756,7 +756,7 @@ Each type has advantages and disadvantages:
|
||||||
unpacked and run on any machine with the same operating system as
|
unpacked and run on any machine with the same operating system as
|
||||||
yours.}
|
yours.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
In general, DrScheme's @drlang{Module} language gives you the most
|
In general, DrScheme's @drlang{Module} language gives you the most
|
||||||
options. Most other languages only allow one type of executable. The
|
options. Most other languages only allow one type of executable. The
|
||||||
|
|
|
@ -30,7 +30,7 @@ exactly one module.
|
||||||
DrScheme supports several historically useful variants of Scheme
|
DrScheme supports several historically useful variants of Scheme
|
||||||
without a @hash-lang[] prefix:
|
without a @hash-lang[] prefix:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @as-index{@drlang{R5RS} language} contains those
|
@item{The @as-index{@drlang{R5RS} language} contains those
|
||||||
primitives and syntax defined in the R@superscript{5}RS Scheme
|
primitives and syntax defined in the R@superscript{5}RS Scheme
|
||||||
|
@ -53,7 +53,7 @@ without a @hash-lang[] prefix:
|
||||||
bindings as @schememodname[swindle], and evaluates the program like
|
bindings as @schememodname[swindle], and evaluates the program like
|
||||||
@scheme[load].}
|
@scheme[load].}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@; ----------------------------------------
|
@; ----------------------------------------
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ without a @hash-lang[] prefix:
|
||||||
|
|
||||||
Five of DrScheme's languages are specifically designed for teaching:
|
Five of DrScheme's languages are specifically designed for teaching:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @as-index{@drlang{Beginning Student} language} is a small
|
@item{The @as-index{@drlang{Beginning Student} language} is a small
|
||||||
version of Scheme that is tailored for beginning computer
|
version of Scheme that is tailored for beginning computer
|
||||||
|
@ -81,12 +81,12 @@ Five of DrScheme's languages are specifically designed for teaching:
|
||||||
@item{The @as-index{@drlang{Advanced Student} language} adds mutable
|
@item{The @as-index{@drlang{Advanced Student} language} adds mutable
|
||||||
state.}
|
state.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The teaching languages are different from conventional Scheme in a number
|
The teaching languages are different from conventional Scheme in a number
|
||||||
of ways:
|
of ways:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defterm{Case-sensitive identifiers and symbols} --- In a
|
@item{@defterm{Case-sensitive identifiers and symbols} --- In a
|
||||||
case-sensitive language, the variable names @scheme[x] and
|
case-sensitive language, the variable names @scheme[x] and
|
||||||
|
@ -232,13 +232,13 @@ of ways:
|
||||||
languages, function definitions are not allowed in the
|
languages, function definitions are not allowed in the
|
||||||
interactions window.}
|
interactions window.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The teaching languages also deviate from traditional Scheme in
|
The teaching languages also deviate from traditional Scheme in
|
||||||
printing values. Different printing formats can be selected for any
|
printing values. Different printing formats can be selected for any
|
||||||
language through the detail section of language-selection dialog.
|
language through the detail section of language-selection dialog.
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defterm{Constructor-style output} --- See
|
@item{@defterm{Constructor-style output} --- See
|
||||||
@secref["output-syntax"].}
|
@secref["output-syntax"].}
|
||||||
|
@ -281,7 +281,7 @@ language through the detail section of language-selection dialog.
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
A program in the teaching languages should be tested using the check forms ---
|
A program in the teaching languages should be tested using the check forms ---
|
||||||
@scheme[(check-expect value value)], @scheme[(check-within value value value)], or
|
@scheme[(check-expect value value)], @scheme[(check-within value value value)], or
|
||||||
|
@ -300,7 +300,7 @@ A program in the teaching languages should be tested using the check forms ---
|
||||||
The ProfessorJ languages are Java based languages designed for teaching and
|
The ProfessorJ languages are Java based languages designed for teaching and
|
||||||
experimentation. There are four teaching based languages:
|
experimentation. There are four teaching based languages:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @as-index{@drlang{ProfessorJ Beginner} language} is a small
|
@item{The @as-index{@drlang{ProfessorJ Beginner} language} is a small
|
||||||
subset of Java, designed for novice computer science students.
|
subset of Java, designed for novice computer science students.
|
||||||
|
@ -318,18 +318,18 @@ The ProfessorJ languages are Java based languages designed for teaching and
|
||||||
@item{The @as-index{@drlang{ProfessorJ Advanced} language} adds arrays, loop
|
@item{The @as-index{@drlang{ProfessorJ Advanced} language} adds arrays, loop
|
||||||
constructs, and package specifications.}
|
constructs, and package specifications.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The remaining two languages support language extensions and experimentations:
|
The remaining two languages support language extensions and experimentations:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{The @as-index{@drlang{ProfessorJ Full} language} supports most of Java 1.1
|
@item{The @as-index{@drlang{ProfessorJ Full} language} supports most of Java 1.1
|
||||||
features, as well as a set of constructs designed for the development of
|
features, as well as a set of constructs designed for the development of
|
||||||
unit tests}
|
unit tests}
|
||||||
@item{The @as-index{@drlang{ProfessorJ Java + dynamic} language} extends the
|
@item{The @as-index{@drlang{ProfessorJ Java + dynamic} language} extends the
|
||||||
ProfessorJ Full language with a dynamic type and the ability to import Scheme
|
ProfessorJ Full language with a dynamic type and the ability to import Scheme
|
||||||
libraries directly, for developing programs that use both languages.}
|
libraries directly, for developing programs that use both languages.}
|
||||||
}
|
]
|
||||||
|
|
||||||
Value printing can be either @defterm{Class} or @defterm{Class + Field}, selectable
|
Value printing can be either @defterm{Class} or @defterm{Class + Field}, selectable
|
||||||
in the show details section of the language selection window. The Class printing style
|
in the show details section of the language selection window. The Class printing style
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
@section{@onscreen{File}}
|
@section{@onscreen{File}}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{New} Creates a new DrScheme window.}
|
@item{@defmenuitem{New} Creates a new DrScheme window.}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
window. Subsequent saves write to the newly-selected file.}
|
window. Subsequent saves write to the newly-selected file.}
|
||||||
|
|
||||||
@item{@defmenuitem{Save Other} Contains these sub-items
|
@item{@defmenuitem{Save Other} Contains these sub-items
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{Save Definitions As Text...} Like @onscreen{Save
|
@item{@defmenuitem{Save Definitions As Text...} Like @onscreen{Save
|
||||||
Definitions As...}, but the file is saved in plain-text format (see
|
Definitions As...}, but the file is saved in plain-text format (see
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
@secref["drscheme-file-formats"]). Subsequent saves are write in
|
@secref["drscheme-file-formats"]). Subsequent saves are write in
|
||||||
plain-text format.}
|
plain-text format.}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{@defmenuitem{Log Definitions and Interactions...} Starts a
|
@item{@defmenuitem{Log Definitions and Interactions...} Starts a
|
||||||
running of log of the text in the interactions and definitions
|
running of log of the text in the interactions and definitions
|
||||||
|
@ -87,7 +87,7 @@
|
||||||
@item{{@onscreen{Quit} or @onscreen{Exit}} Exits DrScheme. (Under Mac
|
@item{{@onscreen{Quit} or @onscreen{Exit}} Exits DrScheme. (Under Mac
|
||||||
OS X, this menu item is in the Apple menu.)}
|
OS X, this menu item is in the Apple menu.)}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@; ----------------------------------------
|
@; ----------------------------------------
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ All @onscreen{Edit} menu items operate on either the definitions or
|
||||||
interactions window, depending on the location of the selection or
|
interactions window, depending on the location of the selection or
|
||||||
blinking caret. Each window maintains its own Undo and Redo history.
|
blinking caret. Each window maintains its own Undo and Redo history.
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{Undo} Reverses an editing action. Each window
|
@item{@defmenuitem{Undo} Reverses an editing action. Each window
|
||||||
maintains a history of actions, so multiple @onscreen{Undo}
|
maintains a history of actions, so multiple @onscreen{Undo}
|
||||||
|
@ -126,11 +126,9 @@ blinking caret. Each window maintains its own Undo and Redo history.
|
||||||
@item{@defmenuitem{Find...} Opens an interactive search
|
@item{@defmenuitem{Find...} Opens an interactive search
|
||||||
window at the bottom of the frame and moves the insertion
|
window at the bottom of the frame and moves the insertion
|
||||||
point to the search string editor (or out of it, if the
|
point to the search string editor (or out of it, if the
|
||||||
insertion point is already there.
|
insertion point is already there).
|
||||||
|
|
||||||
See also @secref["Searching"].
|
See also @secref["Searching"].}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@item{@defmenuitem{Find Again} Finds the next occurrence of the text
|
@item{@defmenuitem{Find Again} Finds the next occurrence of the text
|
||||||
in the search window.}
|
in the search window.}
|
||||||
|
@ -153,7 +151,7 @@ the search string with the replace string.}
|
||||||
case-sensitive and case-insensitive search.}
|
case-sensitive and case-insensitive search.}
|
||||||
|
|
||||||
@item{@defmenuitem{Keybindings}
|
@item{@defmenuitem{Keybindings}
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{Show Active Keybindings} Shows all of the
|
@item{@defmenuitem{Show Active Keybindings} Shows all of the
|
||||||
keybindings available in the current window.}
|
keybindings available in the current window.}
|
||||||
|
@ -163,14 +161,14 @@ case-sensitive and case-insensitive search.}
|
||||||
Scheme-definitions of keybindings. See @secref["defining-shortcuts"]
|
Scheme-definitions of keybindings. See @secref["defining-shortcuts"]
|
||||||
for more information.}
|
for more information.}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{@defmenuitem{Complete Word} Completes the word at the
|
@item{@defmenuitem{Complete Word} Completes the word at the
|
||||||
insertion point, using the manuals as a source of completions.}
|
insertion point, using the manuals as a source of completions.}
|
||||||
|
|
||||||
@item{@defmenuitem{Preferences...} Opens the preferences dialog. See
|
@item{@defmenuitem{Preferences...} Opens the preferences dialog. See
|
||||||
@secref["prefs-explanation"]. (Under Mac OS X, this menu item is in
|
@secref["prefs-explanation"]. (Under Mac OS X, this menu item is in
|
||||||
the Apple menu.)} }
|
the Apple menu.)} ]
|
||||||
|
|
||||||
@; ----------------------------------------
|
@; ----------------------------------------
|
||||||
|
|
||||||
|
@ -179,7 +177,7 @@ insertion point, using the manuals as a source of completions.}
|
||||||
One each of the following show/hide pairs of menu items
|
One each of the following show/hide pairs of menu items
|
||||||
appears at any time.
|
appears at any time.
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{Show Definitions} Shows the definitions window.}
|
@item{@defmenuitem{Show Definitions} Shows the definitions window.}
|
||||||
|
|
||||||
|
@ -202,11 +200,11 @@ appears at any time.
|
||||||
@item{@defmenuitem{Hide Module Browser} Hides the module browser.}
|
@item{@defmenuitem{Hide Module Browser} Hides the module browser.}
|
||||||
|
|
||||||
@item{@defmenuitem{Toolbar}
|
@item{@defmenuitem{Toolbar}
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@defmenuitem{Toolbar on Left} Moves the tool bar (defaultly on the top of DrScheme's window) to the left-hand side, organized vertically.}
|
@item{@defmenuitem{Toolbar on Left} Moves the tool bar (defaultly on the top of DrScheme's window) to the left-hand side, organized vertically.}
|
||||||
@item{@defmenuitem{Toolbar on Top} Moves the toolbar to the top of the DrScheme window.}
|
@item{@defmenuitem{Toolbar on Top} Moves the toolbar to the top of the DrScheme window.}
|
||||||
@item{@defmenuitem{Toolbar on Right} Moves the tool bar to the right-hand side, organized vertically.}
|
@item{@defmenuitem{Toolbar on Right} Moves the tool bar to the right-hand side, organized vertically.}
|
||||||
@item{@defmenuitem{Toolbar Hidden} Hides the toolbar entirely.}}}
|
@item{@defmenuitem{Toolbar Hidden} Hides the toolbar entirely.}]}
|
||||||
|
|
||||||
@item{@defmenuitem{Show Log} Shows the current log messages.}
|
@item{@defmenuitem{Show Log} Shows the current log messages.}
|
||||||
@item{@defmenuitem{Hide Log} Hides the current log messages.}
|
@item{@defmenuitem{Hide Log} Hides the current log messages.}
|
||||||
|
@ -241,7 +239,7 @@ appears at any time.
|
||||||
menu item becomes enabled, allowing you to collapse the split
|
menu item becomes enabled, allowing you to collapse the split
|
||||||
window.}
|
window.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Note: whenever a program is run, the interactions window is made
|
Note: whenever a program is run, the interactions window is made
|
||||||
visible if it is hidden.
|
visible if it is hidden.
|
||||||
|
@ -250,7 +248,7 @@ Note: whenever a program is run, the interactions window is made
|
||||||
|
|
||||||
@section{@onscreen{Language}}
|
@section{@onscreen{Language}}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{Choose Language...} Opens a dialog for selecting
|
@item{@defmenuitem{Choose Language...} Opens a dialog for selecting
|
||||||
the current evaluation language. Click @onscreen{Run} to make the
|
the current evaluation language. Click @onscreen{Run} to make the
|
||||||
|
@ -269,7 +267,7 @@ Note: whenever a program is run, the interactions window is made
|
||||||
teachpacks. Click @onscreen{Run} to clear the teachpack from the
|
teachpacks. Click @onscreen{Run} to clear the teachpack from the
|
||||||
interactions window.}
|
interactions window.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
In addition to the above items, a menu item for each teachpack that
|
In addition to the above items, a menu item for each teachpack that
|
||||||
clears only the corresponding teachpack.
|
clears only the corresponding teachpack.
|
||||||
|
@ -278,7 +276,7 @@ clears only the corresponding teachpack.
|
||||||
|
|
||||||
@section[#:tag "menu:scheme"]{@onscreen{Scheme}}
|
@section[#:tag "menu:scheme"]{@onscreen{Scheme}}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{Run} Resets the interactions window and runs the
|
@item{@defmenuitem{Run} Resets the interactions window and runs the
|
||||||
program in the definitions window.}
|
program in the definitions window.}
|
||||||
|
@ -348,11 +346,11 @@ background that signals the source location of an error.}
|
||||||
the @onscreen{Disable Tests} menu item.
|
the @onscreen{Disable Tests} menu item.
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section{@onscreen{Insert}}
|
@section{@onscreen{Insert}}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{Insert Comment Box} Inserts a box that is ignored
|
@item{@defmenuitem{Insert Comment Box} Inserts a box that is ignored
|
||||||
by DrScheme; use it to write comments for people who read your
|
by DrScheme; use it to write comments for people who read your
|
||||||
|
@ -399,13 +397,13 @@ background that signals the source location of an error.}
|
||||||
Slideshow picture. Inside the pict box, insert and arrange Scheme
|
Slideshow picture. Inside the pict box, insert and arrange Scheme
|
||||||
boxes that produce picture values.}
|
boxes that produce picture values.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@; ----------------------------------------
|
@; ----------------------------------------
|
||||||
|
|
||||||
@section{@onscreen{Windows}}
|
@section{@onscreen{Windows}}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{Bring Frame to Front...} Opens a window that lists
|
@item{@defmenuitem{Bring Frame to Front...} Opens a window that lists
|
||||||
all of the opened DrScheme frames. Selecting one of them brings the
|
all of the opened DrScheme frames. Selecting one of them brings the
|
||||||
|
@ -414,7 +412,7 @@ background that signals the source location of an error.}
|
||||||
@item{@defmenuitem{Most Recent Window} Toggles between the currently
|
@item{@defmenuitem{Most Recent Window} Toggles between the currently
|
||||||
focused window and the one that most recently had the focus.}
|
focused window and the one that most recently had the focus.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Additionally, after the above menu items, this menu contains
|
Additionally, after the above menu items, this menu contains
|
||||||
an entry for each window in DrScheme. Selecting a menu item
|
an entry for each window in DrScheme. Selecting a menu item
|
||||||
|
@ -424,7 +422,7 @@ brings the corresponding window to the front.
|
||||||
|
|
||||||
@section{@onscreen{Help}}
|
@section{@onscreen{Help}}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@defmenuitem{Help Desk} Opens the Help Desk. This is the clearing
|
@item{@defmenuitem{Help Desk} Opens the Help Desk. This is the clearing
|
||||||
house for all documentation about DrScheme and its language.}
|
house for all documentation about DrScheme and its language.}
|
||||||
|
@ -441,5 +439,5 @@ brings the corresponding window to the front.
|
||||||
current language is not English. Additional menu items switch
|
current language is not English. Additional menu items switch
|
||||||
DrScheme to other languages.}
|
DrScheme to other languages.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ The preferences dialog consists of several panels.
|
||||||
|
|
||||||
The @onscreen{Editing} panel consists of several sub-panels:
|
The @onscreen{Editing} panel consists of several sub-panels:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@onscreen{Indenting}
|
@item{@onscreen{Indenting}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ The preferences dialog consists of several panels.
|
||||||
@item{@onscreen{Square bracket}
|
@item{@onscreen{Square bracket}
|
||||||
|
|
||||||
This panel controls which keywords DrScheme uses to determine
|
This panel controls which keywords DrScheme uses to determine
|
||||||
when to rewrite @litchar{[} to @litchar{(}. For
|
when to rewrite @litchar["["] to @litchar["("]. For
|
||||||
@scheme[cond]-like keywords, the number in parenthesis indicates
|
@scheme[cond]-like keywords, the number in parenthesis indicates
|
||||||
how many sub-expressions are skipped before square brackets are
|
how many sub-expressions are skipped before square brackets are
|
||||||
started.
|
started.
|
||||||
|
@ -50,7 +50,7 @@ The preferences dialog consists of several panels.
|
||||||
|
|
||||||
@item{@onscreen{General}
|
@item{@onscreen{General}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@PrefItem{Number of recent items} --- controls the
|
@item{@PrefItem{Number of recent items} --- controls the
|
||||||
length of the @onscreen{Open Recent} menu (in the @onscreen{File}
|
length of the @onscreen{Open Recent} menu (in the @onscreen{File}
|
||||||
|
@ -128,11 +128,11 @@ The preferences dialog consists of several panels.
|
||||||
that the @hash-lang[] line is the first line in the file.
|
that the @hash-lang[] line is the first line in the file.
|
||||||
}
|
}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{@onscreen{Scheme}
|
@item{@onscreen{Scheme}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@PrefItem{Highlight between matching parens} --- If checked, the
|
@item{@PrefItem{Highlight between matching parens} --- If checked, the
|
||||||
editor marks the region between matching parenthesis with a gray
|
editor marks the region between matching parenthesis with a gray
|
||||||
|
@ -140,23 +140,23 @@ The preferences dialog consists of several panels.
|
||||||
the blinking caret is next to a parenthesis.}
|
the blinking caret is next to a parenthesis.}
|
||||||
|
|
||||||
@item{@PrefItem{Correct parens} --- If checked, the editor
|
@item{@PrefItem{Correct parens} --- If checked, the editor
|
||||||
automatically converts a typed @litchar{)} to @litchar{]} to
|
automatically converts a typed @litchar[")"] to @litchar["]"] to
|
||||||
match @litchar{[}, or it converts a typed @litchar{]} to
|
match @litchar["["], or it converts a typed @litchar["]"] to
|
||||||
@litchar{)} to match @litchar{(}. Also, the editor changes
|
@litchar[")"] to match @litchar["("]. Also, the editor changes
|
||||||
typed @litchar{[} to match the context (as explained in
|
typed @litchar["["] to match the context (as explained in
|
||||||
@secref["editor"]).}
|
@secref["editor"]).}
|
||||||
|
|
||||||
@item{@PrefItem{Flash paren match} --- If checked, typing a closing
|
@item{@PrefItem{Flash paren match} --- If checked, typing a closing
|
||||||
parenthesis, square bracket, or quotation mark flashes the
|
parenthesis, square bracket, or quotation mark flashes the
|
||||||
matching open parenthesis/bracket/quote.}
|
matching open parenthesis/bracket/quote.}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section{@onscreen{Warnings}}
|
@section{@onscreen{Warnings}}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@PrefItem{Ask before changing save format} --- If checked,
|
@item{@PrefItem{Ask before changing save format} --- If checked,
|
||||||
DrScheme consults the user before saving a file in non-text format
|
DrScheme consults the user before saving a file in non-text format
|
||||||
|
@ -181,7 +181,7 @@ The preferences dialog consists of several panels.
|
||||||
checked, DrScheme periodically polls a server to determine
|
checked, DrScheme periodically polls a server to determine
|
||||||
whether a newer version of DrScheme is available.}
|
whether a newer version of DrScheme is available.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section{@onscreen{Profiling}}
|
@section{@onscreen{Profiling}}
|
||||||
|
|
||||||
|
|
|
@ -226,7 +226,7 @@ memory. Although not reflected above, the four arguments can appear in
|
||||||
any order since they are all different types of Scheme objects; a size
|
any order since they are all different types of Scheme objects; a size
|
||||||
specification is required at minimum:
|
specification is required at minimum:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{If a C type @scheme[bytes-or-type] is given, its size is used
|
@item{If a C type @scheme[bytes-or-type] is given, its size is used
|
||||||
to the block allocation size.}
|
to the block allocation size.}
|
||||||
|
@ -257,7 +257,7 @@ specification is required at minimum:
|
||||||
@indexed-scheme['failok] flag is given, then
|
@indexed-scheme['failok] flag is given, then
|
||||||
@cpp{scheme_malloc_fail_ok} is used to wrap the call.}
|
@cpp{scheme_malloc_fail_ok} is used to wrap the call.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If no mode is specified, then @scheme['nonatomic] allocation is used
|
If no mode is specified, then @scheme['nonatomic] allocation is used
|
||||||
when the type is any pointer-based type, and @scheme['atomic]
|
when the type is any pointer-based type, and @scheme['atomic]
|
||||||
|
|
|
@ -482,7 +482,7 @@ of known keys. Each key interacts with generated wrapper functions in
|
||||||
a different way, which affects how its corresponding argument is
|
a different way, which affects how its corresponding argument is
|
||||||
treated:
|
treated:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[type:] specifies the foreign type that should be used, if it is
|
@item{@scheme[type:] specifies the foreign type that should be used, if it is
|
||||||
@scheme[#f] then this argument does not participate in the foreign call.}
|
@scheme[#f] then this argument does not participate in the foreign call.}
|
||||||
|
@ -506,7 +506,7 @@ treated:
|
||||||
argument's value.}
|
argument's value.}
|
||||||
|
|
||||||
@item{@scheme[post:] a similar post-foreign code chunk.}
|
@item{@scheme[post:] a similar post-foreign code chunk.}
|
||||||
}
|
]
|
||||||
|
|
||||||
The @scheme[pre:] and @scheme[post:] bindings can be of the form
|
The @scheme[pre:] and @scheme[post:] bindings can be of the form
|
||||||
@scheme[(_id => _expr)] to use the existing value. Note that if the
|
@scheme[(_id => _expr)] to use the existing value. Note that if the
|
||||||
|
@ -551,7 +551,7 @@ Creates a C pointer type, where @scheme[mode] indicates input or
|
||||||
output pointers (or both). The @scheme[mode] can be one of the
|
output pointers (or both). The @scheme[mode] can be one of the
|
||||||
following:
|
following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[i] --- indicates an @italic{input} pointer argument:
|
@item{@scheme[i] --- indicates an @italic{input} pointer argument:
|
||||||
the wrapper arranges for the function call to receive a value that
|
the wrapper arranges for the function call to receive a value that
|
||||||
|
@ -576,7 +576,7 @@ following:
|
||||||
function, and a copy of the return value is made too---which is
|
function, and a copy of the return value is made too---which is
|
||||||
inefficient, but ensures that structs are not modified by C code.)}
|
inefficient, but ensures that structs are not modified by C code.)}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
For example, the @scheme[_ptr] type can be used in output mode to create a
|
For example, the @scheme[_ptr] type can be used in output mode to create a
|
||||||
foreign function wrapper that returns more than a single argument. The
|
foreign function wrapper that returns more than a single argument. The
|
||||||
|
@ -684,7 +684,7 @@ must start with @litchar{_}.
|
||||||
|
|
||||||
The resulting bindings are as follows:
|
The resulting bindings are as follows:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[_id] : the new C type for this struct.}
|
@item{@scheme[_id] : the new C type for this struct.}
|
||||||
|
|
||||||
|
@ -705,7 +705,7 @@ The resulting bindings are as follows:
|
||||||
@item{@schemeidfont{set-}@schemevarfont{id}@schemeidfont{-}@scheme[field-id]@schemeidfont{!}
|
@item{@schemeidfont{set-}@schemevarfont{id}@schemeidfont{-}@scheme[field-id]@schemeidfont{!}
|
||||||
: a mutator function for each @scheme[field-id].}
|
: a mutator function for each @scheme[field-id].}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Objects of the new type are actually C pointers, with a type tag that
|
Objects of the new type are actually C pointers, with a type tag that
|
||||||
is a list that contains the string form of @schemevarfont{id}. Since
|
is a list that contains the string form of @schemevarfont{id}. Since
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
and should return the style-name that the token should be colored.
|
and should return the style-name that the token should be colored.
|
||||||
|
|
||||||
get-token takes an input port and returns the next token as 5 values:
|
get-token takes an input port and returns the next token as 5 values:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{
|
@item{
|
||||||
An unused value. This value is intended to represent the textual
|
An unused value. This value is intended to represent the textual
|
||||||
component of the token and may be used as such in the future.}
|
component of the token and may be used as such in the future.}
|
||||||
|
@ -34,12 +34,12 @@
|
||||||
@item{
|
@item{
|
||||||
The starting position of the token.}
|
The starting position of the token.}
|
||||||
@item{
|
@item{
|
||||||
The ending position of the token.}}
|
The ending position of the token.}]
|
||||||
|
|
||||||
get-token will usually be implemented with a lexer using the
|
get-token will usually be implemented with a lexer using the
|
||||||
@scheme[parser-tools/lex] library.
|
@scheme[parser-tools/lex] library.
|
||||||
get-token must obey the following invariants:
|
get-token must obey the following invariants:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{
|
@item{
|
||||||
Every position in the buffer must be accounted for in exactly one
|
Every position in the buffer must be accounted for in exactly one
|
||||||
token.}
|
token.}
|
||||||
|
@ -58,7 +58,7 @@
|
||||||
@verbatim{" 1 2 3"}
|
@verbatim{" 1 2 3"}
|
||||||
would result in a single string token modifying previous tokens. To
|
would result in a single string token modifying previous tokens. To
|
||||||
handle these situations, get-token must treat the first line as a
|
handle these situations, get-token must treat the first line as a
|
||||||
single token.}}
|
single token.}]
|
||||||
|
|
||||||
@scheme[pairs] is a list of different kinds of matching parens. The second
|
@scheme[pairs] is a list of different kinds of matching parens. The second
|
||||||
value returned by get-token is compared to this list to see how the
|
value returned by get-token is compared to this list to see how the
|
||||||
|
|
|
@ -223,7 +223,7 @@ framework)) @(require (for-label scheme/gui)) @(require
|
||||||
If that returns @scheme[#t],
|
If that returns @scheme[#t],
|
||||||
it checks for one of the these three conditions:
|
it checks for one of the these three conditions:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{
|
@item{
|
||||||
@scheme[exit:exiting?]
|
@scheme[exit:exiting?]
|
||||||
returns @scheme[#t]}
|
returns @scheme[#t]}
|
||||||
|
@ -233,7 +233,7 @@ framework)) @(require (for-label scheme/gui)) @(require
|
||||||
@scheme[group:get-the-frame-group], or}
|
@scheme[group:get-the-frame-group], or}
|
||||||
@item{the procedure
|
@item{the procedure
|
||||||
@scheme[exit:user-oks-exit]
|
@scheme[exit:user-oks-exit]
|
||||||
returns @scheme[#t].}}
|
returns @scheme[#t].}]
|
||||||
If any of those conditions hold, the
|
If any of those conditions hold, the
|
||||||
method returns @scheme[#t].
|
method returns @scheme[#t].
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,10 +12,10 @@ The framework provides a number of mixins, classes and
|
||||||
functions designed to help you build a complete application
|
functions designed to help you build a complete application
|
||||||
program on top of the @scheme[scheme/gui] library.
|
program on top of the @scheme[scheme/gui] library.
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@bold{Entire Framework}
|
@item{@bold{Entire Framework}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[(require #, @schememodname[framework])]
|
@item{@scheme[(require #, @schememodname[framework])]
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ program on top of the @scheme[scheme/gui] library.
|
||||||
@scheme[framework^]. It imports the @scheme[mred^] signature.
|
@scheme[framework^]. It imports the @scheme[mred^] signature.
|
||||||
|
|
||||||
}
|
}
|
||||||
}}
|
]}
|
||||||
@item{
|
@item{
|
||||||
@bold{Test Suite Engine}
|
@bold{Test Suite Engine}
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ This library is here for backwards compatibility. The
|
||||||
functionality in it has moved into the framework proper, in
|
functionality in it has moved into the framework proper, in
|
||||||
the @secref["editor-snip"] section.
|
the @secref["editor-snip"] section.
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
@bold{Thanks}
|
@bold{Thanks}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ An @scheme[area-container<%>] is a container @scheme[area<%>].
|
||||||
|
|
||||||
All @scheme[area-container<%>] classes accept the following named
|
All @scheme[area-container<%>] classes accept the following named
|
||||||
instantiation arguments:
|
instantiation arguments:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme[border] --- default is @scheme[0]; passed to
|
@item{@indexed-scheme[border] --- default is @scheme[0]; passed to
|
||||||
@method[area-container<%> border]}
|
@method[area-container<%> border]}
|
||||||
|
@ -17,7 +17,7 @@ All @scheme[area-container<%>] classes accept the following named
|
||||||
@scheme['(center top)] for @scheme[vertical-panel%]; the list
|
@scheme['(center top)] for @scheme[vertical-panel%]; the list
|
||||||
elements are passed to
|
elements are passed to
|
||||||
@method[area-container<%> set-alignment]}
|
@method[area-container<%> set-alignment]}
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ An @scheme[area<%>] object is either a window or a windowless
|
||||||
|
|
||||||
All @scheme[area<%>] classes accept the following named instantiation
|
All @scheme[area<%>] classes accept the following named instantiation
|
||||||
arguments:
|
arguments:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme[min-width] --- default is the initial graphical minimum width; passed to
|
@item{@indexed-scheme[min-width] --- default is the initial graphical minimum width; passed to
|
||||||
@method[area<%> min-width]}
|
@method[area<%> min-width]}
|
||||||
|
@ -20,7 +20,7 @@ All @scheme[area<%>] classes accept the following named instantiation
|
||||||
@method[area<%> stretchable-width]}
|
@method[area<%> stretchable-width]}
|
||||||
@item{@indexed-scheme[stretchable-height] --- default is class-specific; passed to
|
@item{@indexed-scheme[stretchable-height] --- default is class-specific; passed to
|
||||||
@method[area<%> stretchable-height]}
|
@method[area<%> stretchable-height]}
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,7 @@ Loads a bitmap from a file. If the bitmap is in use by a
|
||||||
|
|
||||||
The @scheme[kind] argument specifies the file's format:
|
The @scheme[kind] argument specifies the file's format:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['unknown] --- examine the file to determine its format}
|
@item{@scheme['unknown] --- examine the file to determine its format}
|
||||||
@item{@scheme['unknown/mask] --- like @scheme['unknown], but see @method[bitmap% get-loaded-mask]}
|
@item{@scheme['unknown/mask] --- like @scheme['unknown], but see @method[bitmap% get-loaded-mask]}
|
||||||
@item{@scheme['gif] --- load a @as-index{GIF} bitmap file (X, Windows, Mac OS X)}
|
@item{@scheme['gif] --- load a @as-index{GIF} bitmap file (X, Windows, Mac OS X)}
|
||||||
|
@ -152,7 +152,7 @@ The @scheme[kind] argument specifies the file's format:
|
||||||
@item{@scheme['xpm] --- load an @as-index{XPM} bitmap file (X, Windows, Mac OS X)}
|
@item{@scheme['xpm] --- load an @as-index{XPM} bitmap file (X, Windows, Mac OS X)}
|
||||||
@item{@scheme['bmp] --- load a Windows bitmap file (X, Windows, Mac OS X)}
|
@item{@scheme['bmp] --- load a Windows bitmap file (X, Windows, Mac OS X)}
|
||||||
@item{@scheme['pict] --- load a @as-index{PICT} bitmap file (Mac OS X)}
|
@item{@scheme['pict] --- load a @as-index{PICT} bitmap file (Mac OS X)}
|
||||||
}
|
]
|
||||||
|
|
||||||
An XBM image is always loaded as a monochrome bitmap. A 1-bit
|
An XBM image is always loaded as a monochrome bitmap. A 1-bit
|
||||||
grayscale PNG without a mask or alpha channel is also loaded as a
|
grayscale PNG without a mask or alpha channel is also loaded as a
|
||||||
|
@ -198,7 +198,7 @@ Saves a bitmap in the named file.
|
||||||
The @scheme[kind] argument determined the type of file that is created,
|
The @scheme[kind] argument determined the type of file that is created,
|
||||||
one of:
|
one of:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['png] --- save a @as-index{PNG} file (X, Windows, Mac OS X)}
|
@item{@scheme['png] --- save a @as-index{PNG} file (X, Windows, Mac OS X)}
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ The @scheme[kind] argument determined the type of file that is created,
|
||||||
|
|
||||||
@item{@scheme['bmp] --- save a Windows bitmap file (Windows)}
|
@item{@scheme['bmp] --- save a Windows bitmap file (Windows)}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The @scheme[quality] argument is used only for saving as @scheme['jpeg], in
|
The @scheme[quality] argument is used only for saving as @scheme['jpeg], in
|
||||||
which case it specifies the trade-off between image precision (high
|
which case it specifies the trade-off between image precision (high
|
||||||
|
|
|
@ -142,10 +142,10 @@ information@|details|, even if the editor currently has delayed refreshing (see
|
||||||
(make-splice
|
(make-splice
|
||||||
(list
|
(list
|
||||||
@p{Be sure to use the following methods to start/end drawing:}
|
@p{Be sure to use the following methods to start/end drawing:}
|
||||||
@itemize{@item{@method[dc<%> start-doc]}
|
@itemize[@item{@method[dc<%> start-doc]}
|
||||||
@item{@method[dc<%> start-page]}
|
@item{@method[dc<%> start-page]}
|
||||||
@item{@method[dc<%> end-page]}
|
@item{@method[dc<%> end-page]}
|
||||||
@item{@method[dc<%> end-doc]}}
|
@item{@method[dc<%> end-doc]}]
|
||||||
@p{Attempts to use a drawing method outside of an active page raises an exception.})))
|
@p{Attempts to use a drawing method outside of an active page raises an exception.})))
|
||||||
|
|
||||||
(define reference-doc '(lib "scribblings/reference/reference.scrbl"))
|
(define reference-doc '(lib "scribblings/reference/reference.scrbl"))
|
||||||
|
|
|
@ -16,7 +16,7 @@ In addition to its color and style, a brush can have a stipple bitmap.
|
||||||
|
|
||||||
A brush's style is one of the following:
|
A brush's style is one of the following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme['transparent] --- Draws with no effect (on the
|
@item{@indexed-scheme['transparent] --- Draws with no effect (on the
|
||||||
interior of the drawn shape).}
|
interior of the drawn shape).}
|
||||||
|
@ -40,7 +40,7 @@ A brush's style is one of the following:
|
||||||
values. The @scheme['xor] mapping is unspecified for arbitrary
|
values. The @scheme['xor] mapping is unspecified for arbitrary
|
||||||
color combinations, but the mapping provides two guarantees:
|
color combinations, but the mapping provides two guarantees:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Black-and-white drawing to a color or monochrome
|
@item{Black-and-white drawing to a color or monochrome
|
||||||
destination always works as expected: black xor white = black,
|
destination always works as expected: black xor white = black,
|
||||||
|
@ -50,7 +50,7 @@ A brush's style is one of the following:
|
||||||
@item{Performing the same drawing operation twice in a row with
|
@item{Performing the same drawing operation twice in a row with
|
||||||
@scheme['xor] is equivalent to a no-op.}
|
@scheme['xor] is equivalent to a no-op.}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{@indexed-scheme['hilite] --- In unsmoothed mode, existing
|
@item{@indexed-scheme['hilite] --- In unsmoothed mode, existing
|
||||||
destination pixels are ``highlighted'' in a platform-specific
|
destination pixels are ``highlighted'' in a platform-specific
|
||||||
|
@ -84,21 +84,21 @@ A brush's style is one of the following:
|
||||||
@item{The following modes correspond to built-in stipples drawn in
|
@item{The following modes correspond to built-in stipples drawn in
|
||||||
@scheme['solid] mode:
|
@scheme['solid] mode:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['bdiagonal-hatch] --- diagonal lines, top-left to bottom-right}
|
@item{@indexed-scheme['bdiagonal-hatch] --- diagonal lines, top-left to bottom-right}
|
||||||
@item{@indexed-scheme['crossdiag-hatch] --- crossed diagonal lines}
|
@item{@indexed-scheme['crossdiag-hatch] --- crossed diagonal lines}
|
||||||
@item{@indexed-scheme['fdiagonal-hatch] --- diagonal lines, top-right to bottom-left}
|
@item{@indexed-scheme['fdiagonal-hatch] --- diagonal lines, top-right to bottom-left}
|
||||||
@item{@indexed-scheme['cross-hatch] --- crossed horizontal and vertical lines}
|
@item{@indexed-scheme['cross-hatch] --- crossed horizontal and vertical lines}
|
||||||
@item{@indexed-scheme['horizontal-hatch] --- horizontal lines}
|
@item{@indexed-scheme['horizontal-hatch] --- horizontal lines}
|
||||||
@item{@indexed-scheme['vertical-hatch] --- vertical lines}
|
@item{@indexed-scheme['vertical-hatch] --- vertical lines}
|
||||||
}
|
]
|
||||||
|
|
||||||
However, when a specific stipple is installed into the brush
|
However, when a specific stipple is installed into the brush
|
||||||
for when drawing with a smoothing mode into a non-PostScript
|
for when drawing with a smoothing mode into a non-PostScript
|
||||||
context, the above modes are ignored and @scheme['solid] is
|
context, the above modes are ignored and @scheme['solid] is
|
||||||
used, instead.}
|
used, instead.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@index['("drawing" "outlines")]{To} draw outline shapes (such as
|
@index['("drawing" "outlines")]{To} draw outline shapes (such as
|
||||||
unfilled boxes and ellipses), use the @scheme['transparent] brush
|
unfilled boxes and ellipses), use the @scheme['transparent] brush
|
||||||
|
|
|
@ -26,7 +26,7 @@ A @scheme[canvas%] object is a general-purpose window for drawing
|
||||||
|
|
||||||
The @scheme[style] argument indicates one or more of the following styles:
|
The @scheme[style] argument indicates one or more of the following styles:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['border] --- gives the canvas a thin border}
|
@item{@scheme['border] --- gives the canvas a thin border}
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ The @scheme[style] argument indicates one or more of the following styles:
|
||||||
later by calling @scheme[parent]'s @method[area-container<%> add-child]
|
later by calling @scheme[parent]'s @method[area-container<%> add-child]
|
||||||
method}
|
method}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The @scheme['hscroll] and @scheme['vscroll] styles create a
|
The @scheme['hscroll] and @scheme['vscroll] styles create a
|
||||||
canvas with an initially inactive scrollbar. The scrollbars are
|
canvas with an initially inactive scrollbar. The scrollbars are
|
||||||
|
|
|
@ -10,7 +10,7 @@ To draw onto a canvas, get its device context (see
|
||||||
@method[canvas<%> get-dc]).
|
@method[canvas<%> get-dc]).
|
||||||
|
|
||||||
The @scheme[canvas<%>] interface is implemented by two classes:
|
The @scheme[canvas<%>] interface is implemented by two classes:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[canvas%] --- a canvas for arbitrary drawing and
|
@item{@scheme[canvas%] --- a canvas for arbitrary drawing and
|
||||||
event handling}
|
event handling}
|
||||||
|
@ -18,7 +18,7 @@ The @scheme[canvas<%>] interface is implemented by two classes:
|
||||||
@item{@scheme[editor-canvas%] --- a canvas for displaying
|
@item{@scheme[editor-canvas%] --- a canvas for displaying
|
||||||
@scheme[editor<%>] objects}
|
@scheme[editor<%>] objects}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
@defmethod[(get-canvas-background)
|
@defmethod[(get-canvas-background)
|
||||||
|
|
|
@ -14,7 +14,7 @@ A @scheme[control-event%] object contains information about a
|
||||||
[time-stamp (and/c exact? integer?) 0])]{
|
[time-stamp (and/c exact? integer?) 0])]{
|
||||||
|
|
||||||
The @scheme[event-type] argument is one of the following:
|
The @scheme[event-type] argument is one of the following:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['button] --- for @scheme[button%] clicks}
|
@item{@scheme['button] --- for @scheme[button%] clicks}
|
||||||
@item{@scheme['check-box] --- for @scheme[check-box%] toggles}
|
@item{@scheme['check-box] --- for @scheme[check-box%] toggles}
|
||||||
@item{@scheme['choice] --- for @scheme[choice%] item selections}
|
@item{@scheme['choice] --- for @scheme[choice%] item selections}
|
||||||
|
@ -28,7 +28,7 @@ The @scheme[event-type] argument is one of the following:
|
||||||
@item{@scheme['menu-popdown] --- for @scheme[popup-menu%] callbacks (item selected)}
|
@item{@scheme['menu-popdown] --- for @scheme[popup-menu%] callbacks (item selected)}
|
||||||
@item{@scheme['menu-popdown-none] --- for @scheme[popup-menu%] callbacks (no item selected)}
|
@item{@scheme['menu-popdown-none] --- for @scheme[popup-menu%] callbacks (no item selected)}
|
||||||
@item{@scheme['tab-panel] --- for @scheme[tab-panel%] tab changes}
|
@item{@scheme['tab-panel] --- for @scheme[tab-panel%] tab changes}
|
||||||
}
|
]
|
||||||
|
|
||||||
This value is extracted out of a @scheme[control-event%] object with
|
This value is extracted out of a @scheme[control-event%] object with
|
||||||
the
|
the
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
The @scheme[control<%>] interface is implemented by the built-in
|
The @scheme[control<%>] interface is implemented by the built-in
|
||||||
control window classes:
|
control window classes:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[message%]}
|
@item{@scheme[message%]}
|
||||||
@item{@scheme[button%]}
|
@item{@scheme[button%]}
|
||||||
@item{@scheme[check-box%]}
|
@item{@scheme[check-box%]}
|
||||||
|
@ -15,7 +15,7 @@ The @scheme[control<%>] interface is implemented by the built-in
|
||||||
@item{@scheme[radio-box%]}
|
@item{@scheme[radio-box%]}
|
||||||
@item{@scheme[choice%]}
|
@item{@scheme[choice%]}
|
||||||
@item{@scheme[list-box%]}
|
@item{@scheme[list-box%]}
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ relative to its top-left corner.
|
||||||
The second case creates a cursor using a stock cursor, specified
|
The second case creates a cursor using a stock cursor, specified
|
||||||
as one of the following:
|
as one of the following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['arrow] --- the default cursor}
|
@item{@scheme['arrow] --- the default cursor}
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ as one of the following:
|
||||||
|
|
||||||
@item{@scheme['size-nw/se] --- arrows up-left and down-right}
|
@item{@scheme['size-nw/se] --- arrows up-left and down-right}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If the cursor is created successfully, @method[cursor% ok?]
|
If the cursor is created successfully, @method[cursor% ok?]
|
||||||
returns @scheme[#t], otherwise the cursor object cannot be
|
returns @scheme[#t], otherwise the cursor object cannot be
|
||||||
|
|
|
@ -576,7 +576,7 @@ Returns the size of @scheme[str] at it would be drawn in the drawing
|
||||||
|
|
||||||
The result is four real numbers:
|
The result is four real numbers:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{the total width of the text (depends on both the font and the
|
@item{the total width of the text (depends on both the font and the
|
||||||
text);}
|
text);}
|
||||||
|
@ -589,7 +589,7 @@ The result is four real numbers:
|
||||||
@item{extra vertical space added to the font by the font designer
|
@item{extra vertical space added to the font by the font designer
|
||||||
(included in the height, and often zero; depends only on the font).}
|
(included in the height, and often zero; depends only on the font).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The returned width and height define a rectangle is that guaranteed to
|
The returned width and height define a rectangle is that guaranteed to
|
||||||
contain the text string when it is drawn, but the fit is not
|
contain the text string when it is drawn, but the fit is not
|
||||||
|
@ -657,7 +657,7 @@ Returns @scheme[#t] if the drawing context is usable.
|
||||||
|
|
||||||
Determines the opacity of drawing, under certain conditions:
|
Determines the opacity of drawing, under certain conditions:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{pen- and brush-based drawing when @method[dc<%> get-smoothing]
|
@item{pen- and brush-based drawing when @method[dc<%> get-smoothing]
|
||||||
produces @scheme['smoothed] or @scheme['aligned], and when the
|
produces @scheme['smoothed] or @scheme['aligned], and when the
|
||||||
|
@ -669,7 +669,7 @@ Determines the opacity of drawing, under certain conditions:
|
||||||
fading the drawing color), and when the drawing context is not
|
fading the drawing color), and when the drawing context is not
|
||||||
an instance of @scheme[post-script-dc].}
|
an instance of @scheme[post-script-dc].}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
A value of @scheme[0.0] corresponds to completely transparent (i.e.,
|
A value of @scheme[0.0] corresponds to completely transparent (i.e.,
|
||||||
invisible) drawing, and @scheme[1.0] corresponds to completely opaque
|
invisible) drawing, and @scheme[1.0] corresponds to completely opaque
|
||||||
|
@ -884,7 +884,7 @@ For monochrome drawing, all non-black colors are treated as
|
||||||
|
|
||||||
Determines how text is drawn:
|
Determines how text is drawn:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['solid] --- Before text is drawn, the destination area
|
@item{@scheme['solid] --- Before text is drawn, the destination area
|
||||||
is filled with the text background color (see @method[dc<%>
|
is filled with the text background color (see @method[dc<%>
|
||||||
|
@ -894,7 +894,7 @@ Determines how text is drawn:
|
||||||
existing image in the destination, as if overlaying text
|
existing image in the destination, as if overlaying text
|
||||||
written on transparent film.}
|
written on transparent film.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ If the @scheme[x] or @scheme[y] argument is not @scheme[#f], it
|
||||||
The @scheme[style] flags adjust the appearance of the dialog on some
|
The @scheme[style] flags adjust the appearance of the dialog on some
|
||||||
platforms:
|
platforms:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['no-caption] --- omits the title bar for the dialog
|
@item{@scheme['no-caption] --- omits the title bar for the dialog
|
||||||
(Windows)}
|
(Windows)}
|
||||||
|
@ -68,7 +68,7 @@ The @scheme[style] flags adjust the appearance of the dialog on some
|
||||||
@item{@scheme['no-sheet] --- uses a movable window for the dialog,
|
@item{@scheme['no-sheet] --- uses a movable window for the dialog,
|
||||||
even if a parent window is provided (Mac OS X)}
|
even if a parent window is provided (Mac OS X)}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Even if the dialog is not shown, a few notification events may be
|
Even if the dialog is not shown, a few notification events may be
|
||||||
queued for the dialog on creation. Consequently, the new dialog's
|
queued for the dialog on creation. Consequently, the new dialog's
|
||||||
|
|
|
@ -190,7 +190,7 @@ Displays a message to the user in a (modal) dialog, using
|
||||||
breaking lines.
|
breaking lines.
|
||||||
|
|
||||||
The style must include exactly one of the following:
|
The style must include exactly one of the following:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['ok] --- the dialog only has an @onscreen{OK} button
|
@item{@scheme['ok] --- the dialog only has an @onscreen{OK} button
|
||||||
and always returns @scheme['ok].}
|
and always returns @scheme['ok].}
|
||||||
|
@ -208,7 +208,7 @@ The style must include exactly one of the following:
|
||||||
labels, so that the user does not have to read the message text
|
labels, so that the user does not have to read the message text
|
||||||
carefully to make a selection.}
|
carefully to make a selection.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
In addition, @scheme[style] can contain @scheme['caution] to make the
|
In addition, @scheme[style] can contain @scheme['caution] to make the
|
||||||
dialog use a caution icon instead of the application (or generic
|
dialog use a caution icon instead of the application (or generic
|
||||||
|
@ -262,7 +262,7 @@ If the user clicks the button labelled @scheme[button1-label], a @scheme[1]
|
||||||
If @scheme[style] does not include @scheme['number-order], the order of
|
If @scheme[style] does not include @scheme['number-order], the order of
|
||||||
the buttons is platform-specific, and labels should be assigned to
|
the buttons is platform-specific, and labels should be assigned to
|
||||||
the buttons based on their role:
|
the buttons based on their role:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Button 1 is the normal action, and it is usually the default
|
@item{Button 1 is the normal action, and it is usually the default
|
||||||
button. For example, if the dialog has an @onscreen{OK} button, it is
|
button. For example, if the dialog has an @onscreen{OK} button, it is
|
||||||
|
@ -279,7 +279,7 @@ If @scheme[style] does not include @scheme['number-order], the order of
|
||||||
Mac OS X, it is left-aligned in the dialog). Use this button only
|
Mac OS X, it is left-aligned in the dialog). Use this button only
|
||||||
for three-button dialogs.}
|
for three-button dialogs.}
|
||||||
|
|
||||||
}
|
]
|
||||||
Despite the above guidelines, any combination of visible buttons is
|
Despite the above guidelines, any combination of visible buttons is
|
||||||
allowed in the dialog.
|
allowed in the dialog.
|
||||||
|
|
||||||
|
@ -323,13 +323,13 @@ See also @scheme[message+check-box/custom].
|
||||||
|
|
||||||
Like @scheme[message-box], except that
|
Like @scheme[message-box], except that
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{the dialog contains a check box whose label is @scheme[check-label];}
|
@item{the dialog contains a check box whose label is @scheme[check-label];}
|
||||||
@item{the result is two values: the @scheme[message-box] result, and a
|
@item{the result is two values: the @scheme[message-box] result, and a
|
||||||
boolean indicating whether the box was checked; and}
|
boolean indicating whether the box was checked; and}
|
||||||
@item{@scheme[style] can contain @scheme['checked] to indicate that the check box
|
@item{@scheme[style] can contain @scheme['checked] to indicate that the check box
|
||||||
should be initially checked.}
|
should be initially checked.}
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@defproc[(message+check-box/custom [title label-string?]
|
@defproc[(message+check-box/custom [title label-string?]
|
||||||
[message string]
|
[message string]
|
||||||
|
@ -346,13 +346,13 @@ Like @scheme[message-box], except that
|
||||||
(one-of/c 1 2 3 close-result)]{
|
(one-of/c 1 2 3 close-result)]{
|
||||||
|
|
||||||
Like @scheme[message-box/custom], except that
|
Like @scheme[message-box/custom], except that
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{the dialog contains a check box whose label is @scheme[check-label];}
|
@item{the dialog contains a check box whose label is @scheme[check-label];}
|
||||||
@item{the result is two values: the @scheme[message-box] result, and a
|
@item{the result is two values: the @scheme[message-box] result, and a
|
||||||
boolean indicating whether the box was checked; and}
|
boolean indicating whether the box was checked; and}
|
||||||
@item{@scheme[style] can contain @scheme['checked] to indicate that the check box
|
@item{@scheme[style] can contain @scheme['checked] to indicate that the check box
|
||||||
should be initially checked.}
|
should be initially checked.}
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ interface. For example, the @method[canvas<%> get-dc] method of a
|
||||||
canvas returns a @scheme[dc<%>] instance for drawing into the canvas
|
canvas returns a @scheme[dc<%>] instance for drawing into the canvas
|
||||||
window. Other kinds of DCs draw to different kinds of devices:
|
window. Other kinds of DCs draw to different kinds of devices:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[bitmap-dc%] --- a @deftech{bitmap DC} draws to an
|
@item{@scheme[bitmap-dc%] --- a @deftech{bitmap DC} draws to an
|
||||||
offscreen bitmap.}
|
offscreen bitmap.}
|
||||||
|
@ -22,7 +22,7 @@ window. Other kinds of DCs draw to different kinds of devices:
|
||||||
@item{@scheme[printer-dc%] --- a @deftech{printer DC} draws to a
|
@item{@scheme[printer-dc%] --- a @deftech{printer DC} draws to a
|
||||||
platform-specific printer device (Windows, Mac OS X).}
|
platform-specific printer device (Windows, Mac OS X).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Tools that are used for drawing include the following: @scheme[pen%]
|
Tools that are used for drawing include the following: @scheme[pen%]
|
||||||
objects for drawing lines and shape outlines, @scheme[brush%]
|
objects for drawing lines and shape outlines, @scheme[brush%]
|
||||||
|
|
|
@ -264,11 +264,11 @@ If @scheme[refresh?] is not @scheme[#f], then the editor is requesting
|
||||||
to be updated immediately.
|
to be updated immediately.
|
||||||
|
|
||||||
The @scheme[bias] argument is one of:
|
The @scheme[bias] argument is one of:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['start] --- if the range doesn't fit in the visible area, show the top-left region}
|
@item{@scheme['start] --- if the range doesn't fit in the visible area, show the top-left region}
|
||||||
@item{@scheme['none] --- no special scrolling instructions}
|
@item{@scheme['none] --- no special scrolling instructions}
|
||||||
@item{@scheme['end] --- if the range doesn't fit in the visible area, show the bottom-right region}
|
@item{@scheme['end] --- if the range doesn't fit in the visible area, show the bottom-right region}
|
||||||
}
|
]
|
||||||
|
|
||||||
The return value is @scheme[#t] if the @techlink{display} is scrolled,
|
The return value is @scheme[#t] if the @techlink{display} is scrolled,
|
||||||
@scheme[#f] if not (either because the requested region is already
|
@scheme[#f] if not (either because the requested region is already
|
||||||
|
|
|
@ -34,7 +34,7 @@ If a canvas is initialized with @scheme[#f] for @scheme[editor],
|
||||||
|
|
||||||
The @scheme[style] list can contain the following flags:
|
The @scheme[style] list can contain the following flags:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['no-border] --- omits a border around the canvas}
|
@item{@scheme['no-border] --- omits a border around the canvas}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ The @scheme[style] list can contain the following flags:
|
||||||
@item{@scheme['transparent] --- the canvas is ``erased'' before an
|
@item{@scheme['transparent] --- the canvas is ``erased'' before an
|
||||||
update using it's parent window's background}
|
update using it's parent window's background}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
While vertical scrolling of text editors is based on lines,
|
While vertical scrolling of text editors is based on lines,
|
||||||
horizontal scrolling and pasteboard vertical scrolling is based on a
|
horizontal scrolling and pasteboard vertical scrolling is based on a
|
||||||
|
@ -276,7 +276,7 @@ If @scheme[refresh?] is not @scheme[#f], then the editor is updated
|
||||||
immediately after a successful scroll.
|
immediately after a successful scroll.
|
||||||
|
|
||||||
The @scheme[bias] argument is one of:
|
The @scheme[bias] argument is one of:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['start] --- if the range doesn't fit in the visible
|
@item{@scheme['start] --- if the range doesn't fit in the visible
|
||||||
area, show the top-left region}
|
area, show the top-left region}
|
||||||
|
@ -286,7 +286,7 @@ The @scheme[bias] argument is one of:
|
||||||
@item{@scheme['end] --- if the range doesn't fit in the visible area,
|
@item{@scheme['end] --- if the range doesn't fit in the visible area,
|
||||||
show the bottom-right region}
|
show the bottom-right region}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The return value is @scheme[#t] if the @techlink{display} is scrolled, @scheme[#f]
|
The return value is @scheme[#t] if the @techlink{display} is scrolled, @scheme[#f]
|
||||||
if not (either because the requested region is already visible,
|
if not (either because the requested region is already visible,
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
Given a @scheme[keymap%] object, the keymap is loaded with mappable
|
Given a @scheme[keymap%] object, the keymap is loaded with mappable
|
||||||
functions that apply to all @scheme[editor<%>] objects:
|
functions that apply to all @scheme[editor<%>] objects:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme["copy-clipboard"]}
|
@item{@scheme["copy-clipboard"]}
|
||||||
@item{@scheme["copy-append-clipboard"]}
|
@item{@scheme["copy-append-clipboard"]}
|
||||||
@item{@scheme["cut-clipboard"]}
|
@item{@scheme["cut-clipboard"]}
|
||||||
|
@ -23,7 +23,7 @@ Given a @scheme[keymap%] object, the keymap is loaded with mappable
|
||||||
@item{@scheme["undo"]}
|
@item{@scheme["undo"]}
|
||||||
@item{@scheme["redo"]}
|
@item{@scheme["redo"]}
|
||||||
@item{@scheme["select-all"]}
|
@item{@scheme["select-all"]}
|
||||||
}
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ See also
|
||||||
|
|
||||||
Given a @scheme[keymap%] object, the table is loaded with functions
|
Given a @scheme[keymap%] object, the table is loaded with functions
|
||||||
that apply to all @scheme[text%] objects:
|
that apply to all @scheme[text%] objects:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme["forward-character"]}
|
@item{@scheme["forward-character"]}
|
||||||
@item{@scheme["backward-character"]}
|
@item{@scheme["backward-character"]}
|
||||||
@item{@scheme["previous-line"]}
|
@item{@scheme["previous-line"]}
|
||||||
|
@ -85,7 +85,7 @@ Given a @scheme[keymap%] object, the table is loaded with functions
|
||||||
@item{@scheme["delete-line"]}
|
@item{@scheme["delete-line"]}
|
||||||
@item{@scheme["undo"]}
|
@item{@scheme["undo"]}
|
||||||
@item{@scheme["redo"]}
|
@item{@scheme["redo"]}
|
||||||
}
|
]
|
||||||
|
|
||||||
See also
|
See also
|
||||||
@scheme[add-editor-keymap-functions].
|
@scheme[add-editor-keymap-functions].
|
||||||
|
|
|
@ -466,7 +466,7 @@ Returns the name of a style to be used for newly inserted text,
|
||||||
Performs a generic edit command. The @scheme[op] argument must be a
|
Performs a generic edit command. The @scheme[op] argument must be a
|
||||||
valid edit command, one of:
|
valid edit command, one of:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['undo] --- undoes the last operation}
|
@item{@scheme['undo] --- undoes the last operation}
|
||||||
@item{@scheme['redo] --- undoes the last undo}
|
@item{@scheme['redo] --- undoes the last undo}
|
||||||
@item{@scheme['clear] --- deletes the current selection}
|
@item{@scheme['clear] --- deletes the current selection}
|
||||||
|
@ -481,7 +481,7 @@ valid edit command, one of:
|
||||||
@method[editor<%> on-new-box] .}
|
@method[editor<%> on-new-box] .}
|
||||||
@item{@scheme['insert-image] --- gets a filename from the user and inserts the image as an @techlink{item} in this editor; see also
|
@item{@scheme['insert-image] --- gets a filename from the user and inserts the image as an @techlink{item} in this editor; see also
|
||||||
@method[editor<%> on-new-image-snip] .}
|
@method[editor<%> on-new-image-snip] .}
|
||||||
}
|
]
|
||||||
|
|
||||||
If @scheme[recursive?] is not @scheme[#f], then the command is passed on to
|
If @scheme[recursive?] is not @scheme[#f], then the command is passed on to
|
||||||
any active snips of this editor (i.e., snips which own the caret).
|
any active snips of this editor (i.e., snips which own the caret).
|
||||||
|
@ -1074,7 +1074,7 @@ prompted for a name.
|
||||||
The possible values for @scheme[format] are listed below. A single set of
|
The possible values for @scheme[format] are listed below. A single set of
|
||||||
@scheme[format] values are used for loading and saving files:
|
@scheme[format] values are used for loading and saving files:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['guess] --- guess the format based on
|
@item{@scheme['guess] --- guess the format based on
|
||||||
extension and/or contents; when saving a file, this is the same as
|
extension and/or contents; when saving a file, this is the same as
|
||||||
|
@ -1097,7 +1097,7 @@ extension and/or contents; when saving a file, this is the same as
|
||||||
(@scheme[text%] only); when writing, change automatic newlines (from
|
(@scheme[text%] only); when writing, change automatic newlines (from
|
||||||
word-wrapping) into real carriage returns}
|
word-wrapping) into real carriage returns}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
In a @scheme[text%] instance, the format returned from @method[text%
|
In a @scheme[text%] instance, the format returned from @method[text%
|
||||||
get-file-format] is always one of @scheme['standard], @scheme['text],
|
get-file-format] is always one of @scheme['standard], @scheme['text],
|
||||||
|
@ -1713,7 +1713,7 @@ The @scheme[output-mode] setting is used for Windows and Mac OS X. It
|
||||||
using the platform-specific standard printing mechanism. The possible
|
using the platform-specific standard printing mechanism. The possible
|
||||||
values are
|
values are
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['standard] --- print using the platform-standard
|
@item{@scheme['standard] --- print using the platform-standard
|
||||||
mechanism (via a @scheme[printer-dc%]) under Windows and
|
mechanism (via a @scheme[printer-dc%]) under Windows and
|
||||||
|
@ -1722,7 +1722,7 @@ The @scheme[output-mode] setting is used for Windows and Mac OS X. It
|
||||||
@item{@scheme['postscript] --- print to a PostScript file (via a
|
@item{@scheme['postscript] --- print to a PostScript file (via a
|
||||||
@scheme[post-script-dc%])}
|
@scheme[post-script-dc%])}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If @scheme[parent] is not @scheme[#f], it is used as the parent window
|
If @scheme[parent] is not @scheme[#f], it is used as the parent window
|
||||||
for configuration dialogs (for either PostScript or platform-standard
|
for configuration dialogs (for either PostScript or platform-standard
|
||||||
|
@ -1807,7 +1807,7 @@ The stream provides either new mappings for names in the editor's
|
||||||
when the editor was written to the stream; see also @method[editor<%>
|
when the editor was written to the stream; see also @method[editor<%>
|
||||||
write-to-file]).
|
write-to-file]).
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{In the former case, if the @scheme[overwrite-styles?] argument
|
@item{In the former case, if the @scheme[overwrite-styles?] argument
|
||||||
is @scheme[#f], then each style name in the loaded file that is already
|
is @scheme[#f], then each style name in the loaded file that is already
|
||||||
|
@ -1818,7 +1818,7 @@ The stream provides either new mappings for names in the editor's
|
||||||
@item{In the latter case, the editor's style list will be changed to
|
@item{In the latter case, the editor's style list will be changed to
|
||||||
the previously-read list.}
|
the previously-read list.}
|
||||||
|
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2105,7 +2105,7 @@ If @scheme[#f] is provided as the new owner, then the local focus is
|
||||||
|
|
||||||
The domain of focus-setting is one of:
|
The domain of focus-setting is one of:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['immediate] --- only set the focus owner within the
|
@item{@scheme['immediate] --- only set the focus owner within the
|
||||||
editor}
|
editor}
|
||||||
|
@ -2117,7 +2117,7 @@ The domain of focus-setting is one of:
|
||||||
@item{@scheme['global] --- make this editor or the new focus
|
@item{@scheme['global] --- make this editor or the new focus
|
||||||
owner get the keyboard focus among all elements in the editor's frame}
|
owner get the keyboard focus among all elements in the editor's frame}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@MonitorMethod[@elem{The focus state of an editor} @elem{by the
|
@MonitorMethod[@elem{The focus state of an editor} @elem{by the
|
||||||
system} @elem{@method[editor<%> on-focus]} @elem{focus}]
|
system} @elem{@method[editor<%> on-focus]} @elem{focus}]
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
The editor toolbox provides a foundation for two common kinds of
|
The editor toolbox provides a foundation for two common kinds of
|
||||||
applications:
|
applications:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@italic{Programs that need a sophisticated text editor} ---
|
@item{@italic{Programs that need a sophisticated text editor} ---
|
||||||
The simple text field control is inadequate for text-intensive
|
The simple text field control is inadequate for text-intensive
|
||||||
|
@ -19,7 +19,7 @@ The editor toolbox provides a foundation for two common kinds of
|
||||||
lines and boxes, but many applications need an interactive canvas,
|
lines and boxes, but many applications need an interactive canvas,
|
||||||
where the user can drag and resize individual objects.}
|
where the user can drag and resize individual objects.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Both kinds of applications need an extensible editor that can handle
|
Both kinds of applications need an extensible editor that can handle
|
||||||
text, images, programmer-defined items, and even embedded
|
text, images, programmer-defined items, and even embedded
|
||||||
|
@ -27,7 +27,7 @@ Both kinds of applications need an extensible editor that can handle
|
||||||
editor toolbox therefore provides two kinds of editors via two
|
editor toolbox therefore provides two kinds of editors via two
|
||||||
classes:
|
classes:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[text%] --- in a @deftech{text editor}, items are
|
@item{@scheme[text%] --- in a @deftech{text editor}, items are
|
||||||
automatically positioned in a paragraph flow.}
|
automatically positioned in a paragraph flow.}
|
||||||
|
@ -35,7 +35,7 @@ Both kinds of applications need an extensible editor that can handle
|
||||||
@item{@scheme[pasteboard%] --- in a @deftech{pasteboard editor},
|
@item{@scheme[pasteboard%] --- in a @deftech{pasteboard editor},
|
||||||
items are explicitly positioned and dragable.}
|
items are explicitly positioned and dragable.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
This editor architecture addresses the full range of real-world
|
This editor architecture addresses the full range of real-world
|
||||||
issues for an editor---including cut-and-paste, extensible file
|
issues for an editor---including cut-and-paste, extensible file
|
||||||
|
@ -160,7 +160,7 @@ Applications that use the editor classes typically derive new versions
|
||||||
The editor toolbox supports extensible and nestable editors by
|
The editor toolbox supports extensible and nestable editors by
|
||||||
decomposing an editor assembly into three functional parts:
|
decomposing an editor assembly into three functional parts:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @deftech{editor} itself stores the state of the text or
|
@item{The @deftech{editor} itself stores the state of the text or
|
||||||
pasteboard and handles most events and editing operations. The
|
pasteboard and handles most events and editing operations. The
|
||||||
|
@ -183,7 +183,7 @@ The editor toolbox supports extensible and nestable editors by
|
||||||
@scheme[editor-snip%] class also acts as a display for embedded
|
@scheme[editor-snip%] class also acts as a display for embedded
|
||||||
editors.}
|
editors.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
These three parts are illustrated by a simple word processor. The
|
These three parts are illustrated by a simple word processor. The
|
||||||
editor corresponds to the text document. The editor object receives
|
editor corresponds to the text document. The editor object receives
|
||||||
|
@ -275,7 +275,7 @@ Styles are hierarchical: each style is defined in terms of another
|
||||||
style is encoded in a @deftech{style delta} (or simply
|
style is encoded in a @deftech{style delta} (or simply
|
||||||
@deftech{delta}). A delta encodes changes such as
|
@deftech{delta}). A delta encodes changes such as
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{change the font family to @italic{X};}
|
@item{change the font family to @italic{X};}
|
||||||
|
|
||||||
|
@ -285,7 +285,7 @@ Styles are hierarchical: each style is defined in terms of another
|
||||||
|
|
||||||
@item{change everything to match the style description @italic{Z}.}
|
@item{change everything to match the style description @italic{Z}.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Style objects are never created separately; rather, they are always
|
Style objects are never created separately; rather, they are always
|
||||||
created through a @deftech{style list}, an instance of the
|
created through a @deftech{style list}, an instance of the
|
||||||
|
@ -298,7 +298,7 @@ Style objects are never created separately; rather, they are always
|
||||||
|
|
||||||
Each new style is defined in one of two ways:
|
Each new style is defined in one of two ways:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{A @deftech{derived style} is defined in terms of a base style
|
@item{A @deftech{derived style} is defined in terms of a base style
|
||||||
and a delta. Every style (except for the root style) has a base
|
and a delta. Every style (except for the root style) has a base
|
||||||
|
@ -317,7 +317,7 @@ Each new style is defined in one of two ways:
|
||||||
character style is the shift style. However, FrameMaker allows only
|
character style is the shift style. However, FrameMaker allows only
|
||||||
those two levels; with join styles support any number of levels.)}
|
those two levels; with join styles support any number of levels.)}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@index*['("Standard style") (list @elem{@scheme["Standard"]
|
@index*['("Standard style") (list @elem{@scheme["Standard"]
|
||||||
style})]{Usually}, when text is inserted into a text editor, it
|
style})]{Usually}, when text is inserted into a text editor, it
|
||||||
|
@ -383,7 +383,7 @@ The editor file data format can be embedded within another file, and
|
||||||
Graceful and extensible encoding of snips requires that
|
Graceful and extensible encoding of snips requires that
|
||||||
two issues are addressed:
|
two issues are addressed:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The encoding function for a snip can be associated with the snip
|
@item{The encoding function for a snip can be associated with the snip
|
||||||
itself. To convert a snip from an encoded representation (e.g., as
|
itself. To convert a snip from an encoded representation (e.g., as
|
||||||
|
@ -407,7 +407,7 @@ Graceful and extensible encoding of snips requires that
|
||||||
each editor data object has an @deftech{editor data class}, which is
|
each editor data object has an @deftech{editor data class}, which is
|
||||||
an instance of the @scheme[editor-data-class%] class.}
|
an instance of the @scheme[editor-data-class%] class.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Snip classes, snip data, and snip data classes solve problems related
|
Snip classes, snip data, and snip data classes solve problems related
|
||||||
to encoding and decoding snips. In an application that has no need
|
to encoding and decoding snips. In an application that has no need
|
||||||
|
@ -472,7 +472,7 @@ Just as a snip must be associated with a snip class to be decoded (see
|
||||||
|
|
||||||
To store and load information about a snip or region in an editor:
|
To store and load information about a snip or region in an editor:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{derive new classes from @scheme[editor-data%] and
|
@item{derive new classes from @scheme[editor-data%] and
|
||||||
@scheme[editor-data-class%].}
|
@scheme[editor-data-class%].}
|
||||||
|
@ -488,7 +488,7 @@ To store and load information about a snip or region in an editor:
|
||||||
not for file-saving encoding; see @|globaleditordatadiscuss| for
|
not for file-saving encoding; see @|globaleditordatadiscuss| for
|
||||||
information on extending the file format.}
|
information on extending the file format.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
@subsection[#:tag "globaleditordata"]{Global Data: Headers and Footers}
|
@subsection[#:tag "globaleditordata"]{Global Data: Headers and Footers}
|
||||||
|
@ -497,7 +497,7 @@ The editor file format provides for adding extra global data in
|
||||||
special header and footer sections. To save and load special header
|
special header and footer sections. To save and load special header
|
||||||
and/or footer records:
|
and/or footer records:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Pick a name for each header/footer record. This name should not
|
@item{Pick a name for each header/footer record. This name should not
|
||||||
conflict with any other header/footer record name in use, and no one
|
conflict with any other header/footer record name in use, and no one
|
||||||
|
@ -512,7 +512,7 @@ The editor file format provides for adding extra global data in
|
||||||
@method[editor<%> read-header-from-file] and/or @method[editor<%>
|
@method[editor<%> read-header-from-file] and/or @method[editor<%>
|
||||||
read-footer-from-file] methods.}
|
read-footer-from-file] methods.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
When an editor is saved, the methods @method[editor<%>
|
When an editor is saved, the methods @method[editor<%>
|
||||||
write-headers-to-file] and @method[editor<%> write-footers-to-file]
|
write-headers-to-file] and @method[editor<%> write-footers-to-file]
|
||||||
|
@ -564,7 +564,7 @@ In plain text editors, there is a simple correlation between
|
||||||
|
|
||||||
Text can be extracted from an editor in either of two forms:
|
Text can be extracted from an editor in either of two forms:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@deftech{Simple text}, where there is one character per
|
@item{@deftech{Simple text}, where there is one character per
|
||||||
@techlink{item}. @techlink{Item}s that are characters are mapped to
|
@techlink{item}. @techlink{Item}s that are characters are mapped to
|
||||||
|
@ -582,7 +582,7 @@ Text can be extracted from an editor in either of two forms:
|
||||||
``flattened'' because the editor's @techlink{item}s have been reduced
|
``flattened'' because the editor's @techlink{item}s have been reduced
|
||||||
to a linear sequence of characters.}
|
to a linear sequence of characters.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@section[#:tag "drawcaretinfo"]{Caret Ownership}
|
@section[#:tag "drawcaretinfo"]{Caret Ownership}
|
||||||
|
|
||||||
|
@ -604,7 +604,7 @@ When an editor or snip is drawn, an argument to the drawing method
|
||||||
specifies whether the caret should be drawn with the data. This
|
specifies whether the caret should be drawn with the data. This
|
||||||
argument can be any of (in increasing order):
|
argument can be any of (in increasing order):
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme['no-caret] --- The caret should not be drawn at
|
@item{@indexed-scheme['no-caret] --- The caret should not be drawn at
|
||||||
all.}
|
all.}
|
||||||
|
@ -616,7 +616,7 @@ When an editor or snip is drawn, an argument to the drawing method
|
||||||
@item{@indexed-scheme['show-caret] --- The caret should be drawn to show
|
@item{@indexed-scheme['show-caret] --- The caret should be drawn to show
|
||||||
keyboard focus ownership.}
|
keyboard focus ownership.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The @scheme['show-inactive-caret] display mode is useful for showing
|
The @scheme['show-inactive-caret] display mode is useful for showing
|
||||||
selection ranges in text editors that do not have the focus. This
|
selection ranges in text editors that do not have the focus. This
|
||||||
|
@ -668,7 +668,7 @@ Note that there is no attempt to save clickback information when a
|
||||||
Instances of @scheme[editor<%>] have three levels of internal
|
Instances of @scheme[editor<%>] have three levels of internal
|
||||||
locking:
|
locking:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{write locking --- When an editor is internally locked for
|
@item{write locking --- When an editor is internally locked for
|
||||||
writing, the abstract content of the editor cannot be changed (e.g.,
|
writing, the abstract content of the editor cannot be changed (e.g.,
|
||||||
|
@ -696,7 +696,7 @@ Instances of @scheme[editor<%>] have three levels of internal
|
||||||
snips. The @method[editor<%> locked-for-read?] method reports
|
snips. The @method[editor<%> locked-for-read?] method reports
|
||||||
whether an editor is currently locked for reading.}
|
whether an editor is currently locked for reading.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The internal lock for an editor is @italic{not} affected by calls to
|
The internal lock for an editor is @italic{not} affected by calls to
|
||||||
@method[editor<%> lock].
|
@method[editor<%> lock].
|
||||||
|
@ -727,7 +727,7 @@ Nevertheless, the editor supports certain concurrent patterns
|
||||||
refreshes do not prevent editor modifications, the following are
|
refreshes do not prevent editor modifications, the following are
|
||||||
guaranteed:
|
guaranteed:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{When an editor's @method[editor<%> refresh] method is
|
@item{When an editor's @method[editor<%> refresh] method is
|
||||||
called during an edit sequence (which is started by
|
called during an edit sequence (which is started by
|
||||||
|
@ -749,7 +749,7 @@ Nevertheless, the editor supports certain concurrent patterns
|
||||||
delegated to the edit-sequence thread, to be called when the edit
|
delegated to the edit-sequence thread, to be called when the edit
|
||||||
sequence is complete.}
|
sequence is complete.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Thus, disabling an @scheme[editor-canvas%] object (using
|
Thus, disabling an @scheme[editor-canvas%] object (using
|
||||||
@method[window<%> enable]) is sufficient to ensure that a
|
@method[window<%> enable]) is sufficient to ensure that a
|
||||||
|
|
|
@ -16,13 +16,13 @@ A global object @scheme[the-editor-wordbreak-map] is created
|
||||||
A wordbreak objects implements a mapping from each character to a list
|
A wordbreak objects implements a mapping from each character to a list
|
||||||
of symbols. The following symbols are legal elements of the list:
|
of symbols. The following symbols are legal elements of the list:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['caret]}
|
@item{@indexed-scheme['caret]}
|
||||||
@item{@indexed-scheme['line]}
|
@item{@indexed-scheme['line]}
|
||||||
@item{@indexed-scheme['selection]}
|
@item{@indexed-scheme['selection]}
|
||||||
@item{@indexed-scheme['user1]}
|
@item{@indexed-scheme['user1]}
|
||||||
@item{@indexed-scheme['user2]}
|
@item{@indexed-scheme['user2]}
|
||||||
}
|
]
|
||||||
|
|
||||||
The presence of a flag in a character's value indicates that the
|
The presence of a flag in a character's value indicates that the
|
||||||
character does not break a word when searching for breaks using the
|
character does not break a word when searching for breaks using the
|
||||||
|
|
|
@ -158,7 +158,7 @@ If @scheme[v] is @indexed-scheme['wait], and @scheme[yield] is called
|
||||||
in the handler thread of an eventspace, then @scheme[yield] starts
|
in the handler thread of an eventspace, then @scheme[yield] starts
|
||||||
processing events in that eventspace until
|
processing events in that eventspace until
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{no top-level windows in the eventspace are visible;}
|
@item{no top-level windows in the eventspace are visible;}
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ If @scheme[v] is @indexed-scheme['wait], and @scheme[yield] is called
|
||||||
with @scheme['root] (i.e., creating a @scheme['root] menu bar
|
with @scheme['root] (i.e., creating a @scheme['root] menu bar
|
||||||
prevents an eventspace from ever unblocking).}
|
prevents an eventspace from ever unblocking).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
When called in a non-handler thread, @scheme[yield] returns
|
When called in a non-handler thread, @scheme[yield] returns
|
||||||
immediately. In either case, the result is @scheme[#t].
|
immediately. In either case, the result is @scheme[#t].
|
||||||
|
|
|
@ -7,7 +7,7 @@ A @defterm{font} is an object which determines the appearance of text,
|
||||||
primarily when drawing text to a device context. A font is determined
|
primarily when drawing text to a device context. A font is determined
|
||||||
by seven properties:
|
by seven properties:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{size --- The size of the text, either in points (the default)
|
@item{size --- The size of the text, either in points (the default)
|
||||||
or logical drawing units, depending on the
|
or logical drawing units, depending on the
|
||||||
|
@ -16,7 +16,7 @@ A @defterm{font} is an object which determines the appearance of text,
|
||||||
@item{family --- A platform- and device-independent font
|
@item{family --- A platform- and device-independent font
|
||||||
designation. The families are:
|
designation. The families are:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['default]}
|
@item{@indexed-scheme['default]}
|
||||||
@item{@indexed-scheme['decorative]}
|
@item{@indexed-scheme['decorative]}
|
||||||
@item{@indexed-scheme['roman]}
|
@item{@indexed-scheme['roman]}
|
||||||
|
@ -25,7 +25,7 @@ A @defterm{font} is an object which determines the appearance of text,
|
||||||
@item{@indexed-scheme['modern] (fixed width)}
|
@item{@indexed-scheme['modern] (fixed width)}
|
||||||
@item{@indexed-scheme['symbol] (Greek letters and more)}
|
@item{@indexed-scheme['symbol] (Greek letters and more)}
|
||||||
@item{@indexed-scheme['system] (used to draw control labels)}
|
@item{@indexed-scheme['system] (used to draw control labels)}
|
||||||
}
|
]
|
||||||
|
|
||||||
The @scheme['modern] designation is special under Mac OS X and X with
|
The @scheme['modern] designation is special under Mac OS X and X with
|
||||||
fontconfig/Xft; characters in the ASCII range 0-255 are converted to
|
fontconfig/Xft; characters in the ASCII range 0-255 are converted to
|
||||||
|
@ -47,23 +47,23 @@ A @defterm{font} is an object which determines the appearance of text,
|
||||||
drawing text.}
|
drawing text.}
|
||||||
|
|
||||||
@item{style --- The slant style of the font, one of:
|
@item{style --- The slant style of the font, one of:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['normal]}
|
@item{@indexed-scheme['normal]}
|
||||||
@item{@indexed-scheme['slant] (Windows, Mac OS X: same as @scheme['italic]; X: tries @scheme['italic] if @scheme['slant] font does not exist)}
|
@item{@indexed-scheme['slant] (Windows, Mac OS X: same as @scheme['italic]; X: tries @scheme['italic] if @scheme['slant] font does not exist)}
|
||||||
@item{@indexed-scheme['italic] (X: tries @scheme['slant] if @scheme['italic] font does not exist)}
|
@item{@indexed-scheme['italic] (X: tries @scheme['slant] if @scheme['italic] font does not exist)}
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{weight --- The weight of the font, one of:
|
@item{weight --- The weight of the font, one of:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['normal]}
|
@item{@indexed-scheme['normal]}
|
||||||
@item{@indexed-scheme['light]}
|
@item{@indexed-scheme['light]}
|
||||||
@item{@indexed-scheme['bold]}
|
@item{@indexed-scheme['bold]}
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{underline? --- @scheme[#t] for underlined, @scheme[#f] for plain.}
|
@item{underline? --- @scheme[#t] for underlined, @scheme[#f] for plain.}
|
||||||
|
|
||||||
@item{smoothing --- Amount of anti-alias smoothing, one of:
|
@item{smoothing --- Amount of anti-alias smoothing, one of:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['default] (platform-specific, sometimes user-configurable)}
|
@item{@indexed-scheme['default] (platform-specific, sometimes user-configurable)}
|
||||||
@item{@indexed-scheme['partly-smoothed] (Windows: TrueType when available;
|
@item{@indexed-scheme['partly-smoothed] (Windows: TrueType when available;
|
||||||
Mac OS X: 4-bit, pixel-aligned smoothing;
|
Mac OS X: 4-bit, pixel-aligned smoothing;
|
||||||
|
@ -72,7 +72,7 @@ A @defterm{font} is an object which determines the appearance of text,
|
||||||
Mac OS X: Quartz smoothing;
|
Mac OS X: Quartz smoothing;
|
||||||
X: fontconfig/Xft when available)}
|
X: fontconfig/Xft when available)}
|
||||||
@item{@indexed-scheme['unsmoothed]}
|
@item{@indexed-scheme['unsmoothed]}
|
||||||
}
|
]
|
||||||
Special case: @scheme['default] corresponds to
|
Special case: @scheme['default] corresponds to
|
||||||
@scheme['partly-smoothed] when used with the @scheme['modern] family
|
@scheme['partly-smoothed] when used with the @scheme['modern] family
|
||||||
and a font size between 9 and 13 (inclusive).}
|
and a font size between 9 and 13 (inclusive).}
|
||||||
|
@ -82,7 +82,7 @@ A @defterm{font} is an object which determines the appearance of text,
|
||||||
bitmap drawing context), @scheme[#f] if the size of the font is in
|
bitmap drawing context), @scheme[#f] if the size of the font is in
|
||||||
points (which can depend on screen resolution).}
|
points (which can depend on screen resolution).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
To avoid creating multiple fonts with the same characteristics, use
|
To avoid creating multiple fonts with the same characteristics, use
|
||||||
the global @scheme[font-list%] object @indexed-scheme[the-font-list].
|
the global @scheme[font-list%] object @indexed-scheme[the-font-list].
|
||||||
|
|
|
@ -24,7 +24,7 @@ To find a font name for a family, MrEd looks for a preference name by
|
||||||
concatenating @litchar{MrEd:}, a @nonterm{dest}, a @nonterm{type},
|
concatenating @litchar{MrEd:}, a @nonterm{dest}, a @nonterm{type},
|
||||||
a @nonterm{weight}, and a @nonterm{style}, where
|
a @nonterm{weight}, and a @nonterm{style}, where
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@nonterm{dest} is either @litchar{Screen} or @litchar{PostScript}.}
|
@item{@nonterm{dest} is either @litchar{Screen} or @litchar{PostScript}.}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ To find a font name for a family, MrEd looks for a preference name by
|
||||||
|
|
||||||
@item{@nonterm{style} is either @litchar{Straight}, @litchar{Italic}, or @litchar{Slant}.}
|
@item{@nonterm{style} is either @litchar{Straight}, @litchar{Italic}, or @litchar{Slant}.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Furthermore, any of the latter three parts can be wildcarded with
|
Furthermore, any of the latter three parts can be wildcarded with
|
||||||
@litchar{_}, as described below. The concatenated string is converted
|
@litchar{_}, as described below. The concatenated string is converted
|
||||||
|
@ -345,7 +345,7 @@ Depending on whether the font is CID-based (typically for the Chinese,
|
||||||
Japanese, Korean, and Vietnamese language families, and as indicated
|
Japanese, Korean, and Vietnamese language families, and as indicated
|
||||||
in the AFM file), MrEd must find additional files:
|
in the AFM file), MrEd must find additional files:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@italic{Non-CID:} In addition to an AFM file
|
@item{@italic{Non-CID:} In addition to an AFM file
|
||||||
@filepath{@nonterm{x}.afm}, MrEd looks for a
|
@filepath{@nonterm{x}.afm}, MrEd looks for a
|
||||||
|
@ -375,7 +375,7 @@ Depending on whether the font is CID-based (typically for the Chinese,
|
||||||
Unicode. MrEd automatically adds the font's character set to the font
|
Unicode. MrEd automatically adds the font's character set to the font
|
||||||
name when producing PostScript with a CID-based font.}
|
name when producing PostScript with a CID-based font.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
When drawing or measuring text using a particular PostScript font, if
|
When drawing or measuring text using a particular PostScript font, if
|
||||||
the font does not contain a glyph for a character (or if a relevant
|
the font does not contain a glyph for a character (or if a relevant
|
||||||
|
|
|
@ -49,7 +49,7 @@ Under Windows and Mac OS X, a face name is interpreted simply as a
|
||||||
Serif"] maps to the font that is typically used for button
|
Serif"] maps to the font that is typically used for button
|
||||||
labels. Under X, a face name has a more complex interpretation:
|
labels. Under X, a face name has a more complex interpretation:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{If the string begins with a space, then the remainder of the
|
@item{If the string begins with a space, then the remainder of the
|
||||||
string is interpreted as a fontconfig/Xft font name, but only
|
string is interpreted as a fontconfig/Xft font name, but only
|
||||||
|
@ -89,7 +89,7 @@ Under Windows and Mac OS X, a face name is interpreted simply as a
|
||||||
@item{A string of any other format is interpreted as an X font name,
|
@item{A string of any other format is interpreted as an X font name,
|
||||||
optionally parameterized with @litchar{%d}.}
|
optionally parameterized with @litchar{%d}.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The mapping for face names can be overridden (on all platforms)
|
The mapping for face names can be overridden (on all platforms)
|
||||||
through the user's preferences, as described in
|
through the user's preferences, as described in
|
||||||
|
|
|
@ -60,7 +60,7 @@ they are created).
|
||||||
The @scheme[style] flags adjust the appearance of the frame on
|
The @scheme[style] flags adjust the appearance of the frame on
|
||||||
some platforms:
|
some platforms:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['no-resize-border] --- omits the resizeable border
|
@item{@scheme['no-resize-border] --- omits the resizeable border
|
||||||
around the window (Windows, X MWM) or grow box in the bottom right
|
around the window (Windows, X MWM) or grow box in the bottom right
|
||||||
|
@ -102,7 +102,7 @@ some platforms:
|
||||||
background (Mac OS X); this style is ignored when
|
background (Mac OS X); this style is ignored when
|
||||||
@scheme['no-caption] is specified}
|
@scheme['no-caption] is specified}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If the @scheme['mdi-child] style is specified, the @scheme[parent] must be
|
If the @scheme['mdi-child] style is specified, the @scheme[parent] must be
|
||||||
a frame with the @scheme['mdi-parent] style, otherwise @|MismatchExn|.
|
a frame with the @scheme['mdi-parent] style, otherwise @|MismatchExn|.
|
||||||
|
@ -274,7 +274,7 @@ Sets the large or small icon bitmap for this frame. Future changes to
|
||||||
|
|
||||||
The icon is used in a platform-specific way:
|
The icon is used in a platform-specific way:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Windows --- the small icon is used for the frame's icon (in the
|
@item{Windows --- the small icon is used for the frame's icon (in the
|
||||||
top-left) and in the task bar, and the large icon is used for
|
top-left) and in the task bar, and the large icon is used for
|
||||||
|
@ -286,7 +286,7 @@ The icon is used in a platform-specific way:
|
||||||
as Windows, and others use the small icon when iconifying the
|
as Windows, and others use the small icon when iconifying the
|
||||||
frame; the large icon is ignored.}
|
frame; the large icon is ignored.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The bitmap for either icon can be any size, but most platforms scale
|
The bitmap for either icon can be any size, but most platforms scale
|
||||||
the small bitmap to 16 by 16 pixels and the large bitmap to 32 by 32
|
the small bitmap to 16 by 16 pixels and the large bitmap to 32 by 32
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
For documentation purposes, the graphics toolbox is organized into
|
For documentation purposes, the graphics toolbox is organized into
|
||||||
three parts:
|
three parts:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The @deftech{windowing toolbox}, for implementing form-filling
|
@item{The @deftech{windowing toolbox}, for implementing form-filling
|
||||||
GUI programs (such as a database query window) using buttons, menus,
|
GUI programs (such as a database query window) using buttons, menus,
|
||||||
|
@ -24,7 +24,7 @@ For documentation purposes, the graphics toolbox is organized into
|
||||||
browser). The editor toolbox is described in
|
browser). The editor toolbox is described in
|
||||||
@secref["editor-overview"].}
|
@secref["editor-overview"].}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
These three parts roughly represent layers of increasing
|
These three parts roughly represent layers of increasing
|
||||||
sophistication. Simple GUI programs access only the windowing toolbox
|
sophistication. Simple GUI programs access only the windowing toolbox
|
||||||
|
|
|
@ -67,7 +67,7 @@ Under Mac OS X, if a control-key press is combined with a mouse button
|
||||||
Gets the virtual key code for the key event. The virtual key code is
|
Gets the virtual key code for the key event. The virtual key code is
|
||||||
either a character or a special key symbol, one of the following:
|
either a character or a special key symbol, one of the following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['start]}
|
@item{@indexed-scheme['start]}
|
||||||
@item{@indexed-scheme['cancel]}
|
@item{@indexed-scheme['cancel]}
|
||||||
@item{@indexed-scheme['clear]}
|
@item{@indexed-scheme['clear]}
|
||||||
|
@ -138,13 +138,13 @@ Gets the virtual key code for the key event. The virtual key code is
|
||||||
@item{@indexed-scheme['wheel-down] --- mouse wheel down one notch}
|
@item{@indexed-scheme['wheel-down] --- mouse wheel down one notch}
|
||||||
@item{@indexed-scheme['release] --- indicates a key-release event}
|
@item{@indexed-scheme['release] --- indicates a key-release event}
|
||||||
@item{@indexed-scheme['press] --- indicates a key-press event; usually only from @scheme[get-key-release-code]}
|
@item{@indexed-scheme['press] --- indicates a key-press event; usually only from @scheme[get-key-release-code]}
|
||||||
}
|
]
|
||||||
|
|
||||||
The special key symbols attempt to capture useful keys that have no
|
The special key symbols attempt to capture useful keys that have no
|
||||||
standard ASCII representation. A few keys have standard
|
standard ASCII representation. A few keys have standard
|
||||||
representations that are not obvious:
|
representations that are not obvious:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[#\space] --- the space bar}
|
@item{@scheme[#\space] --- the space bar}
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ The special key symbols attempt to capture useful keys that have no
|
||||||
|
|
||||||
@item{@scheme[#\rubout] --- the delete key}
|
@item{@scheme[#\rubout] --- the delete key}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If a suitable special key symbol or ASCII representation is not
|
If a suitable special key symbol or ASCII representation is not
|
||||||
available, @scheme[#\nul] (the NUL character) is reported.
|
available, @scheme[#\nul] (the NUL character) is reported.
|
||||||
|
|
|
@ -8,13 +8,13 @@ A @scheme[keymap%] object is used by @scheme[editor<%>] objects to
|
||||||
extensible way. Keymaps can be used without editors, as well. A
|
extensible way. Keymaps can be used without editors, as well. A
|
||||||
@scheme[keymap%] object contains
|
@scheme[keymap%] object contains
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{a mapping from function names to event-handling procedures; and}
|
@item{a mapping from function names to event-handling procedures; and}
|
||||||
|
|
||||||
@item{a mapping from key and mouse sequences to function names.}
|
@item{a mapping from key and mouse sequences to function names.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
A handler procedure in a keymap is invoked with a @scheme[key-event%]
|
A handler procedure in a keymap is invoked with a @scheme[key-event%]
|
||||||
object or a @scheme[mouse-event%] object. It is also given another
|
object or a @scheme[mouse-event%] object. It is also given another
|
||||||
|
@ -163,7 +163,7 @@ Maps an input state sequence to a function name using a string-encoded
|
||||||
|
|
||||||
The modifier identifiers are:
|
The modifier identifiers are:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@litchar{s:} --- All platforms: Shift}
|
@item{@litchar{s:} --- All platforms: Shift}
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ The modifier identifiers are:
|
||||||
@item{@litchar{?:} --- All platforms: allow match to character produced by opposite
|
@item{@litchar{?:} --- All platforms: allow match to character produced by opposite
|
||||||
use of Shift, AltGr/Option, and/or Caps Lock, when available; see
|
use of Shift, AltGr/Option, and/or Caps Lock, when available; see
|
||||||
@xmethod[key-event% get-other-shift-key-code]}
|
@xmethod[key-event% get-other-shift-key-code]}
|
||||||
}
|
]
|
||||||
|
|
||||||
If a particular modifier is not mentioned in a state string, it
|
If a particular modifier is not mentioned in a state string, it
|
||||||
matches states whether that modifier is pressed or not pressed. A
|
matches states whether that modifier is pressed or not pressed. A
|
||||||
|
@ -195,7 +195,7 @@ A key identifier can be either a character on the keyboard (e.g.,
|
||||||
@litchar{a}, @litchar{2}, @litchar{?}) or a special name. The
|
@litchar{a}, @litchar{2}, @litchar{?}) or a special name. The
|
||||||
special names are as follows:
|
special names are as follows:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@litchar{leftbutton} (button down)}
|
@item{@litchar{leftbutton} (button down)}
|
||||||
@item{@litchar{rightbutton}}
|
@item{@litchar{rightbutton}}
|
||||||
@item{@litchar{middlebutton}}
|
@item{@litchar{middlebutton}}
|
||||||
|
@ -270,7 +270,7 @@ A key identifier can be either a character on the keyboard (e.g.,
|
||||||
@item{@litchar{f22}}
|
@item{@litchar{f22}}
|
||||||
@item{@litchar{f23}}
|
@item{@litchar{f23}}
|
||||||
@item{@litchar{f24}}
|
@item{@litchar{f24}}
|
||||||
}
|
]
|
||||||
|
|
||||||
For a special keyword, the capitalization does not matter. However,
|
For a special keyword, the capitalization does not matter. However,
|
||||||
capitalization is important for single-letter keynames. Furthermore,
|
capitalization is important for single-letter keynames. Furthermore,
|
||||||
|
@ -297,7 +297,7 @@ A state can match multiple state strings mapped in a keymap (or keymap
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme["space"] --- matches whenever the space bar is pressed,
|
@item{@scheme["space"] --- matches whenever the space bar is pressed,
|
||||||
regardless of the state of modifiers keys.}
|
regardless of the state of modifiers keys.}
|
||||||
|
@ -322,7 +322,7 @@ Examples:
|
||||||
that produces @litchar{+}, even if producing @litchar{+} normally requires
|
that produces @litchar{+}, even if producing @litchar{+} normally requires
|
||||||
pressing Shift.}
|
pressing Shift.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
A call to @method[keymap% map-function] that would map a particular
|
A call to @method[keymap% map-function] that would map a particular
|
||||||
key sequence both as a prefix and as a complete sequence raises an
|
key sequence both as a prefix and as a complete sequence raises an
|
||||||
|
|
|
@ -59,7 +59,7 @@ The @scheme[callback] procedure is called when the user changes the list
|
||||||
|
|
||||||
The @scheme[style] specification must include exactly one of the
|
The @scheme[style] specification must include exactly one of the
|
||||||
following:
|
following:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['single] --- Creates a single-selection list.}
|
@item{@scheme['single] --- Creates a single-selection list.}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ The @scheme[style] specification must include exactly one of the
|
||||||
clicked item. Use this style for a list when multiple selections are
|
clicked item. Use this style for a list when multiple selections are
|
||||||
the rule rather than the exception.}
|
the rule rather than the exception.}
|
||||||
|
|
||||||
}
|
]
|
||||||
The @scheme['multiple] and @scheme['extended] styles determine a
|
The @scheme['multiple] and @scheme['extended] styles determine a
|
||||||
platform-independent interpretation of unmodified mouse clicks, but
|
platform-independent interpretation of unmodified mouse clicks, but
|
||||||
dragging, shift-clicking, control-clicking, etc. have
|
dragging, shift-clicking, control-clicking, etc. have
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
A list control gives the user a list of string items to choose from.
|
A list control gives the user a list of string items to choose from.
|
||||||
There are two built-in classes that implement
|
There are two built-in classes that implement
|
||||||
@scheme[list-control<%>]:
|
@scheme[list-control<%>]:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[choice%] --- presents the list in a popup menu (so
|
@item{@scheme[choice%] --- presents the list in a popup menu (so
|
||||||
the user can choose only one item at a time)}
|
the user can choose only one item at a time)}
|
||||||
|
@ -15,7 +15,7 @@ A list control gives the user a list of string items to choose from.
|
||||||
allowing the use to choose one item (if the style includes
|
allowing the use to choose one item (if the style includes
|
||||||
@scheme['single]) or any number of items}
|
@scheme['single]) or any number of items}
|
||||||
|
|
||||||
}
|
]
|
||||||
In either case, the set of user-selectable items can be changed
|
In either case, the set of user-selectable items can be changed
|
||||||
dynamically.
|
dynamically.
|
||||||
|
|
||||||
|
|
|
@ -81,19 +81,19 @@ Finds a platform-specific (and possibly user- or machine-specific)
|
||||||
The result depends on @scheme[what], and a @scheme[#f] result is only
|
The result depends on @scheme[what], and a @scheme[#f] result is only
|
||||||
possible when @scheme[what] is @scheme['x-display]:
|
possible when @scheme[what] is @scheme['x-display]:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['init-file] returns the path to the user-specific
|
@item{@scheme['init-file] returns the path to the user-specific
|
||||||
initialization file (containing Scheme code). The directory part of
|
initialization file (containing Scheme code). The directory part of
|
||||||
the path is the same path as returned for @scheme['init-dir] by
|
the path is the same path as returned for @scheme['init-dir] by
|
||||||
MzScheme's @scheme[find-system-path]. The file name is
|
MzScheme's @scheme[find-system-path]. The file name is
|
||||||
platform-specific:
|
platform-specific:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@|AllUnix|: @indexed-file{.mredrc}}
|
@item{@|AllUnix|: @indexed-file{.mredrc}}
|
||||||
@item{Windows: @indexed-file{mredrc.ss}}
|
@item{Windows: @indexed-file{mredrc.ss}}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{@scheme['setup-file] returns the path to the file
|
@item{@scheme['setup-file] returns the path to the file
|
||||||
containing resources used by @scheme[get-resource]; obsolete.}
|
containing resources used by @scheme[get-resource]; obsolete.}
|
||||||
|
@ -104,7 +104,7 @@ The result depends on @scheme[what], and a @scheme[#f] result is only
|
||||||
other platforms, or when neither @Flag{display} nor @envvar{DISPLAY}
|
other platforms, or when neither @Flag{display} nor @envvar{DISPLAY}
|
||||||
was specified, the result is @scheme[#f].}
|
was specified, the result is @scheme[#f].}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ The format of a resource entry depends on the platform. Windows
|
||||||
@scheme[section] is one of the following strings, then @scheme[file]
|
@scheme[section] is one of the following strings, then @scheme[file]
|
||||||
is ignored, and @scheme[entry] is used as a resource path:
|
is ignored, and @scheme[entry] is used as a resource path:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme["HKEY_CLASSES_ROOT"]}
|
@item{@indexed-scheme["HKEY_CLASSES_ROOT"]}
|
||||||
@item{@indexed-scheme["HKEY_CURRENT_CONFIG"]}
|
@item{@indexed-scheme["HKEY_CURRENT_CONFIG"]}
|
||||||
|
@ -169,7 +169,7 @@ The format of a resource entry depends on the platform. Windows
|
||||||
@item{@indexed-scheme["HKEY_LOCAL_MACHINE"]}
|
@item{@indexed-scheme["HKEY_LOCAL_MACHINE"]}
|
||||||
@item{@indexed-scheme["HKEY_USERS"]}
|
@item{@indexed-scheme["HKEY_USERS"]}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
In that case, the @scheme[entry] argument is parsed as a resource entry
|
In that case, the @scheme[entry] argument is parsed as a resource entry
|
||||||
path, followed by a backslash, followed by a value name. To get the
|
path, followed by a backslash, followed by a value name. To get the
|
||||||
|
@ -222,13 +222,13 @@ If no eventspace is provided, or if @scheme[#f] is provided, an
|
||||||
|
|
||||||
When @scheme[redirect-ports?] is true, the following parameters are
|
When @scheme[redirect-ports?] is true, the following parameters are
|
||||||
initialized in the created eventspace's handler thread:
|
initialized in the created eventspace's handler thread:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[current-output-port] --- writes to the frame}
|
@item{@scheme[current-output-port] --- writes to the frame}
|
||||||
@item{@scheme[current-error-port] --- writes to the frame}
|
@item{@scheme[current-error-port] --- writes to the frame}
|
||||||
@item{@scheme[current-input-port] --- always returns @scheme[eof]}
|
@item{@scheme[current-input-port] --- always returns @scheme[eof]}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The keymap for the read-eval-print loop's editor is initialized by
|
The keymap for the read-eval-print loop's editor is initialized by
|
||||||
calling the current keymap initializer procedure, which is determined
|
calling the current keymap initializer procedure, which is determined
|
||||||
|
|
|
@ -31,7 +31,7 @@ See also @|mousekeydiscuss|.
|
||||||
Creates a mouse event for a particular type of event. The event types
|
Creates a mouse event for a particular type of event. The event types
|
||||||
are:
|
are:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['enter] --- mouse pointer entered the window}
|
@item{@scheme['enter] --- mouse pointer entered the window}
|
||||||
@item{@scheme['leave] --- mouse pointer left the window}
|
@item{@scheme['leave] --- mouse pointer left the window}
|
||||||
@item{@scheme['left-down] --- left mouse button pressed}
|
@item{@scheme['left-down] --- left mouse button pressed}
|
||||||
|
@ -41,7 +41,7 @@ Creates a mouse event for a particular type of event. The event types
|
||||||
@item{@scheme['right-down] --- right mouse button pressed (Mac OS X: click with control key pressed)}
|
@item{@scheme['right-down] --- right mouse button pressed (Mac OS X: click with control key pressed)}
|
||||||
@item{@scheme['right-up] --- right mouse button released (Mac OS X: release with control key pressed)}
|
@item{@scheme['right-up] --- right mouse button released (Mac OS X: release with control key pressed)}
|
||||||
@item{@scheme['motion] --- mouse moved, with or without button(s) pressed}
|
@item{@scheme['motion] --- mouse moved, with or without button(s) pressed}
|
||||||
}
|
]
|
||||||
|
|
||||||
See the corresponding @schemeidfont{get-} and @schemeidfont{set-}
|
See the corresponding @schemeidfont{get-} and @schemeidfont{set-}
|
||||||
methods for information about @scheme[left-down],
|
methods for information about @scheme[left-down],
|
||||||
|
|
|
@ -812,7 +812,7 @@ Deselects all selected snips in the editor.
|
||||||
|
|
||||||
Selects, drags, and resizes snips:
|
Selects, drags, and resizes snips:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Clicking on a snip selects the snip. Shift-clicking extends
|
@item{Clicking on a snip selects the snip. Shift-clicking extends
|
||||||
the current selection with the snip.}
|
the current selection with the snip.}
|
||||||
|
@ -831,7 +831,7 @@ with the new snips.}
|
||||||
@item{Clicking on a hiliting tab for a selected object resizes the
|
@item{Clicking on a hiliting tab for a selected object resizes the
|
||||||
object.}
|
object.}
|
||||||
|
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ In addition to its color, width, and style, a pen can have a stipple
|
||||||
|
|
||||||
A pen's style is one of the following:
|
A pen's style is one of the following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme['transparent] --- Draws with no effect (on the
|
@item{@indexed-scheme['transparent] --- Draws with no effect (on the
|
||||||
outline of the drawn shape).}
|
outline of the drawn shape).}
|
||||||
|
@ -31,7 +31,7 @@ A pen's style is one of the following:
|
||||||
or colored stipple is xor-ed with existing destination pixel
|
or colored stipple is xor-ed with existing destination pixel
|
||||||
values. The @scheme['xor] mapping is unspecified for arbitrary
|
values. The @scheme['xor] mapping is unspecified for arbitrary
|
||||||
color combinations, but the mapping provides two guarantees:
|
color combinations, but the mapping provides two guarantees:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Black-and-white drawing to a color or monochrome
|
@item{Black-and-white drawing to a color or monochrome
|
||||||
destination always works as expected: black xor white = black,
|
destination always works as expected: black xor white = black,
|
||||||
|
@ -41,7 +41,7 @@ A pen's style is one of the following:
|
||||||
@item{Performing the same drawing operation twice in a row with
|
@item{Performing the same drawing operation twice in a row with
|
||||||
@scheme['xor] is equivalent to a no-op.}
|
@scheme['xor] is equivalent to a no-op.}
|
||||||
|
|
||||||
}
|
]
|
||||||
In a smoothing mode, @scheme['xor] is equivalent to @scheme['solid].}
|
In a smoothing mode, @scheme['xor] is equivalent to @scheme['solid].}
|
||||||
|
|
||||||
@item{@indexed-scheme['hilite] --- In unsmoothed mode, existing
|
@item{@indexed-scheme['hilite] --- In unsmoothed mode, existing
|
||||||
|
@ -60,7 +60,7 @@ A pen's style is one of the following:
|
||||||
|
|
||||||
@item{The following special pen modes use the pen's color, and they only
|
@item{The following special pen modes use the pen's color, and they only
|
||||||
apply when a stipple is not used:
|
apply when a stipple is not used:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['dot]}
|
@item{@indexed-scheme['dot]}
|
||||||
@item{@indexed-scheme['long-dash]}
|
@item{@indexed-scheme['long-dash]}
|
||||||
@item{@indexed-scheme['short-dash]}
|
@item{@indexed-scheme['short-dash]}
|
||||||
|
@ -69,9 +69,9 @@ A pen's style is one of the following:
|
||||||
@item{@indexed-scheme['xor-long-dash]}
|
@item{@indexed-scheme['xor-long-dash]}
|
||||||
@item{@indexed-scheme['xor-short-dash]}
|
@item{@indexed-scheme['xor-short-dash]}
|
||||||
@item{@indexed-scheme['xor-dot-dash]}
|
@item{@indexed-scheme['xor-dot-dash]}
|
||||||
}}
|
]}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
To avoid creating multiple pens with the same characteristics, use the
|
To avoid creating multiple pens with the same characteristics, use the
|
||||||
global @scheme[pen-list%] object @indexed-scheme[the-pen-list], or
|
global @scheme[pen-list%] object @indexed-scheme[the-pen-list], or
|
||||||
|
|
|
@ -14,7 +14,7 @@ MrEd supports a number of preferences for global configuration. The
|
||||||
|
|
||||||
The following are the (case-sensitive) preference names used by MrEd:
|
The following are the (case-sensitive) preference names used by MrEd:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@ResourceFirst{default-font-size} --- sets the default font size
|
@item{@ResourceFirst{default-font-size} --- sets the default font size
|
||||||
the basic style in a style list, and thus the default font size for
|
the basic style in a style list, and thus the default font size for
|
||||||
|
@ -79,7 +79,7 @@ The following are the (case-sensitive) preference names used by MrEd:
|
||||||
@scheme[clipboard<%>].}
|
@scheme[clipboard<%>].}
|
||||||
|
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
In addition, preference names built from font face names can provide
|
In addition, preference names built from font face names can provide
|
||||||
or override default entries for the @scheme[font-name-directory<%>];
|
or override default entries for the @scheme[font-name-directory<%>];
|
||||||
|
|
|
@ -41,7 +41,7 @@ Gets the identity of the scrollbar that was modified by the event,
|
||||||
|
|
||||||
Returns the type of the event, one of the following:
|
Returns the type of the event, one of the following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['top] --- user clicked a scroll-to-top button}
|
@item{@scheme['top] --- user clicked a scroll-to-top button}
|
||||||
@item{@scheme['bottom] --- user clicked a scroll-to-bottom button}
|
@item{@scheme['bottom] --- user clicked a scroll-to-bottom button}
|
||||||
@item{@scheme['line-up] --- user clicked an arrow to scroll up or left one step}
|
@item{@scheme['line-up] --- user clicked an arrow to scroll up or left one step}
|
||||||
|
@ -49,7 +49,7 @@ Returns the type of the event, one of the following:
|
||||||
@item{@scheme['page-up] --- user clicked an arrow to scroll up or left one page}
|
@item{@scheme['page-up] --- user clicked an arrow to scroll up or left one page}
|
||||||
@item{@scheme['page-down] --- user clicked an arrow to scroll down or right one page}
|
@item{@scheme['page-down] --- user clicked an arrow to scroll down or right one page}
|
||||||
@item{@scheme['thumb] --- user dragged the scroll position indicator}
|
@item{@scheme['thumb] --- user dragged the scroll position indicator}
|
||||||
}
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,14 +45,14 @@ For a list of allowed key symbols, see @xmethod[key-event%
|
||||||
Returns a list of symbols that indicates the keyboard prefix used for the menu
|
Returns a list of symbols that indicates the keyboard prefix used for the menu
|
||||||
item's keyboard shortcut. The allowed symbols for the list are the following:
|
item's keyboard shortcut. The allowed symbols for the list are the following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['alt] --- Meta (Windows and X only)}
|
@item{@scheme['alt] --- Meta (Windows and X only)}
|
||||||
@item{@scheme['cmd] --- Command (Mac OS X only)}
|
@item{@scheme['cmd] --- Command (Mac OS X only)}
|
||||||
@item{@scheme['meta] --- Meta (X only)}
|
@item{@scheme['meta] --- Meta (X only)}
|
||||||
@item{@scheme['ctl] --- Control}
|
@item{@scheme['ctl] --- Control}
|
||||||
@item{@scheme['shift] --- Shift}
|
@item{@scheme['shift] --- Shift}
|
||||||
@item{@scheme['option] --- Option (Mac OS X only)}
|
@item{@scheme['option] --- Option (Mac OS X only)}
|
||||||
}
|
]
|
||||||
|
|
||||||
Under X, at most one of @scheme['alt] and @scheme['meta] can be
|
Under X, at most one of @scheme['alt] and @scheme['meta] can be
|
||||||
supplied; the only difference between @scheme['alt] and
|
supplied; the only difference between @scheme['alt] and
|
||||||
|
|
|
@ -259,7 +259,7 @@ If @scheme[refresh?] is not @scheme[#f], then the editor is requesting to
|
||||||
be updated immediately.
|
be updated immediately.
|
||||||
|
|
||||||
The @scheme[bias] argument is one of:
|
The @scheme[bias] argument is one of:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['start] --- if the range doesn't fit in the visible area, show the top-left region}
|
@item{@scheme['start] --- if the range doesn't fit in the visible area, show the top-left region}
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ The @scheme[bias] argument is one of:
|
||||||
|
|
||||||
@item{@scheme['end] --- if the range doesn't fit in the visible area, show the bottom-right region}
|
@item{@scheme['end] --- if the range doesn't fit in the visible area, show the bottom-right region}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The result is @scheme[#t] if the editor is scrolled, @scheme[#f]
|
The result is @scheme[#t] if the editor is scrolled, @scheme[#f]
|
||||||
otherwise.
|
otherwise.
|
||||||
|
|
|
@ -13,7 +13,7 @@ In deriving a new @scheme[snip-class%] class, override the
|
||||||
derived class (where each instance corresponds to a single snip
|
derived class (where each instance corresponds to a single snip
|
||||||
class):
|
class):
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Set the classname using @method[snip-class% set-classname].}
|
@item{Set the classname using @method[snip-class% set-classname].}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ In deriving a new @scheme[snip-class%] class, override the
|
||||||
name is inserted into the same class list multiple times, all
|
name is inserted into the same class list multiple times, all
|
||||||
but the first insertion is ignored.}
|
but the first insertion is ignored.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
See also @|snipclassdiscuss|.
|
See also @|snipclassdiscuss|.
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ A direct instance of @scheme[snip%] is uninteresting. Useful snips are
|
||||||
In deriving a new snip class, these methods must be overridden to
|
In deriving a new snip class, these methods must be overridden to
|
||||||
create a useful snip:
|
create a useful snip:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@method[snip% get-extent]}
|
@item{@method[snip% get-extent]}
|
||||||
|
|
||||||
|
@ -37,14 +37,14 @@ create a useful snip:
|
||||||
in the snip's administrator when the state changes the first
|
in the snip's administrator when the state changes the first
|
||||||
time}
|
time}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
If a snip can contain more than one @techlink{item}, then the snip's @techlink{count}
|
If a snip can contain more than one @techlink{item}, then the snip's @techlink{count}
|
||||||
must be maintained as well.
|
must be maintained as well.
|
||||||
|
|
||||||
To define a class of snips that can be saved or cut-and-pasted:
|
To define a class of snips that can be saved or cut-and-pasted:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Create an instance of @scheme[snip-class%], implementing the
|
@item{Create an instance of @scheme[snip-class%], implementing the
|
||||||
@method[snip-class% read] method. Export the
|
@method[snip-class% read] method. Export the
|
||||||
|
@ -59,18 +59,18 @@ To define a class of snips that can be saved or cut-and-pasted:
|
||||||
|
|
||||||
@item{Override the @method[snip% write] method.}
|
@item{Override the @method[snip% write] method.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
To define a class of snips that read specially with
|
To define a class of snips that read specially with
|
||||||
@scheme[open-input-text-editor]:
|
@scheme[open-input-text-editor]:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Make your @scheme[snip%] class implement @scheme[readable-snip<%>].}
|
@item{Make your @scheme[snip%] class implement @scheme[readable-snip<%>].}
|
||||||
|
|
||||||
@item{Implement the @method[readable-snip<%> read-special] method.}
|
@item{Implement the @method[readable-snip<%> read-special] method.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ Fills in all boxes with @scheme[0.0].
|
||||||
Returns flags defining the behavior of the snip, a list of the
|
Returns flags defining the behavior of the snip, a list of the
|
||||||
following symbols:
|
following symbols:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme['is-text] --- this is a text snip derived from
|
@item{@indexed-scheme['is-text] --- this is a text snip derived from
|
||||||
@scheme[string-snip%]; do not set this flag}
|
@scheme[string-snip%]; do not set this flag}
|
||||||
|
@ -357,7 +357,7 @@ following symbols:
|
||||||
notification is given as a redundant call to @method[snip%
|
notification is given as a redundant call to @method[snip%
|
||||||
set-admin]}
|
set-admin]}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
|
|
||||||
@defmethod[(get-num-scroll-steps)
|
@defmethod[(get-num-scroll-steps)
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
A @scheme[style-delta%] object encapsulates a style change. The changes expressible
|
A @scheme[style-delta%] object encapsulates a style change. The changes expressible
|
||||||
by a delta include:
|
by a delta include:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{changing the font family}
|
@item{changing the font family}
|
||||||
@item{changing the font face}
|
@item{changing the font face}
|
||||||
@item{changing the font size to a new value}
|
@item{changing the font size to a new value}
|
||||||
|
@ -21,7 +21,7 @@ by a delta include:
|
||||||
@item{dimming or brightening the foreground color, etc.}
|
@item{dimming or brightening the foreground color, etc.}
|
||||||
@item{changing the background color, etc.}
|
@item{changing the background color, etc.}
|
||||||
@item{changing text backing transparency}
|
@item{changing text backing transparency}
|
||||||
}
|
]
|
||||||
|
|
||||||
The @method[style-delta% set-delta] method is convenient for most
|
The @method[style-delta% set-delta] method is convenient for most
|
||||||
style delta settings; it takes a high-level delta specification and
|
style delta settings; it takes a high-level delta specification and
|
||||||
|
@ -36,7 +36,7 @@ turns on a weight setting when it is not present and
|
||||||
@scheme[weight-off] turns off a weight setting when it is
|
@scheme[weight-off] turns off a weight setting when it is
|
||||||
present. These two interact precisely in the following way:
|
present. These two interact precisely in the following way:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{If both @scheme[weight-on] and @scheme[weight-off] are set to @scheme['base],
|
@item{If both @scheme[weight-on] and @scheme[weight-off] are set to @scheme['base],
|
||||||
then the font weight is not changed.}
|
then the font weight is not changed.}
|
||||||
@item{If @scheme[weight-on] is not @scheme['base], then the weight is set to
|
@item{If @scheme[weight-on] is not @scheme['base], then the weight is set to
|
||||||
|
@ -51,65 +51,65 @@ the base style has the weight @scheme[weight-on], then weight is changed to
|
||||||
@item{If both @scheme[weight-on] and @scheme[weight-off] are set, but to
|
@item{If both @scheme[weight-on] and @scheme[weight-off] are set, but to
|
||||||
different values, then the weight is changed to @scheme[weight-on]
|
different values, then the weight is changed to @scheme[weight-on]
|
||||||
only when the base style has the weight @scheme[weight-off].}
|
only when the base style has the weight @scheme[weight-off].}
|
||||||
}
|
]
|
||||||
|
|
||||||
Font styles, smoothing, underlining, and alignment work in an analogous manner.
|
Font styles, smoothing, underlining, and alignment work in an analogous manner.
|
||||||
|
|
||||||
The possible values for @scheme[alignment-on] and @scheme[alignment-off] are:
|
The possible values for @scheme[alignment-on] and @scheme[alignment-off] are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['base]}
|
@item{@indexed-scheme['base]}
|
||||||
@item{@indexed-scheme['top]}
|
@item{@indexed-scheme['top]}
|
||||||
@item{@indexed-scheme['center]}
|
@item{@indexed-scheme['center]}
|
||||||
@item{@indexed-scheme['bottom]}
|
@item{@indexed-scheme['bottom]}
|
||||||
}
|
]
|
||||||
|
|
||||||
The possible values for @scheme[style-on] and @scheme[style-off] are:
|
The possible values for @scheme[style-on] and @scheme[style-off] are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['base]}
|
@item{@indexed-scheme['base]}
|
||||||
@item{@indexed-scheme['normal]}
|
@item{@indexed-scheme['normal]}
|
||||||
@item{@indexed-scheme['italic]}
|
@item{@indexed-scheme['italic]}
|
||||||
@item{@indexed-scheme['slant]}
|
@item{@indexed-scheme['slant]}
|
||||||
}
|
]
|
||||||
|
|
||||||
The possible values for @scheme[smoothing-on] and @scheme[smoothing-off] are:
|
The possible values for @scheme[smoothing-on] and @scheme[smoothing-off] are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['base]}
|
@item{@indexed-scheme['base]}
|
||||||
@item{@indexed-scheme['default]}
|
@item{@indexed-scheme['default]}
|
||||||
@item{@indexed-scheme['partly-smoothed]}
|
@item{@indexed-scheme['partly-smoothed]}
|
||||||
@item{@indexed-scheme['smoothed]}
|
@item{@indexed-scheme['smoothed]}
|
||||||
@item{@indexed-scheme['unsmoothed]}
|
@item{@indexed-scheme['unsmoothed]}
|
||||||
}
|
]
|
||||||
|
|
||||||
The possible values for @scheme[underlined-on] and @scheme[underlined-off] are:
|
The possible values for @scheme[underlined-on] and @scheme[underlined-off] are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[#f] (acts like @scheme['base])}
|
@item{@scheme[#f] (acts like @scheme['base])}
|
||||||
@item{@scheme[#t]}
|
@item{@scheme[#t]}
|
||||||
}
|
]
|
||||||
|
|
||||||
The possible values for @scheme[size-in-pixels-on] and @scheme[size-in-pixels-off] are:
|
The possible values for @scheme[size-in-pixels-on] and @scheme[size-in-pixels-off] are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[#f] (acts like @scheme['base])}
|
@item{@scheme[#f] (acts like @scheme['base])}
|
||||||
@item{@scheme[#t]}
|
@item{@scheme[#t]}
|
||||||
}
|
]
|
||||||
|
|
||||||
The possible values for @scheme[transparent-text-backing-on] and
|
The possible values for @scheme[transparent-text-backing-on] and
|
||||||
@scheme[transparent-text-backing-off] are:
|
@scheme[transparent-text-backing-off] are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme[#f] (acts like @scheme['base])}
|
@item{@scheme[#f] (acts like @scheme['base])}
|
||||||
@item{@scheme[#t]}
|
@item{@scheme[#t]}
|
||||||
}
|
]
|
||||||
|
|
||||||
The possible values for @scheme[weight-on] and @scheme[weight-off] are:
|
The possible values for @scheme[weight-on] and @scheme[weight-off] are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['base]}
|
@item{@indexed-scheme['base]}
|
||||||
@item{@indexed-scheme['normal]}
|
@item{@indexed-scheme['normal]}
|
||||||
@item{@indexed-scheme['bold]}
|
@item{@indexed-scheme['bold]}
|
||||||
@item{@indexed-scheme['light]}
|
@item{@indexed-scheme['light]}
|
||||||
}
|
]
|
||||||
|
|
||||||
The family and face settings in a style delta are interdependent:
|
The family and face settings in a style delta are interdependent:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{When a delta's face is @scheme[#f] and its family is
|
@item{When a delta's face is @scheme[#f] and its family is
|
||||||
@scheme['base], then neither the face nor family are modified by
|
@scheme['base], then neither the face nor family are modified by
|
||||||
|
@ -124,7 +124,7 @@ The family and face settings in a style delta are interdependent:
|
||||||
@scheme[#f], so that the family setting prevails in choosing a
|
@scheme[#f], so that the family setting prevails in choosing a
|
||||||
font.}
|
font.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -236,7 +236,7 @@ See also @method[style-delta% get-family].
|
||||||
'swiss 'modern 'symbol 'system)]{
|
'swiss 'modern 'symbol 'system)]{
|
||||||
|
|
||||||
Returns the delta's font family. The possible values are
|
Returns the delta's font family. The possible values are
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@indexed-scheme['base] --- no change to family}
|
@item{@indexed-scheme['base] --- no change to family}
|
||||||
@item{@indexed-scheme['default]}
|
@item{@indexed-scheme['default]}
|
||||||
@item{@indexed-scheme['decorative]}
|
@item{@indexed-scheme['decorative]}
|
||||||
|
@ -246,7 +246,7 @@ Returns the delta's font family. The possible values are
|
||||||
@item{@indexed-scheme['modern] (fixed width)}
|
@item{@indexed-scheme['modern] (fixed width)}
|
||||||
@item{@indexed-scheme['symbol] (Greek letters)}
|
@item{@indexed-scheme['symbol] (Greek letters)}
|
||||||
@item{@indexed-scheme['system] (used to draw control labels)}
|
@item{@indexed-scheme['system] (used to draw control labels)}
|
||||||
}
|
]
|
||||||
|
|
||||||
See also
|
See also
|
||||||
@method[style-delta% get-face].
|
@method[style-delta% get-face].
|
||||||
|
@ -401,7 +401,7 @@ Except for @scheme['change-nothing] and
|
||||||
|
|
||||||
The @scheme[change-command] argument specifies how the delta is changed;
|
The @scheme[change-command] argument specifies how the delta is changed;
|
||||||
the possible values are:
|
the possible values are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['change-nothing] --- reset all changes}
|
@item{@scheme['change-nothing] --- reset all changes}
|
||||||
@item{@scheme['change-normal] --- turn off all styles and resizings}
|
@item{@scheme['change-normal] --- turn off all styles and resizings}
|
||||||
@item{@scheme['change-toggle-underline] --- underline regions that are currently not underlined, and vice-versa}
|
@item{@scheme['change-toggle-underline] --- underline regions that are currently not underlined, and vice-versa}
|
||||||
|
@ -430,7 +430,7 @@ the possible values are:
|
||||||
@item{@scheme['change-smaller] --- make the text smaller (@scheme[param] is an additive amount)}
|
@item{@scheme['change-smaller] --- make the text smaller (@scheme[param] is an additive amount)}
|
||||||
@item{@scheme['change-underline] --- set the underline status to either underlined or plain}
|
@item{@scheme['change-underline] --- set the underline status to either underlined or plain}
|
||||||
@item{@scheme['change-size-in-pixels] --- set the size interpretation to pixels or points}
|
@item{@scheme['change-size-in-pixels] --- set the size interpretation to pixels or points}
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ A @scheme[subarea<%>] is a containee @scheme[area<%>].
|
||||||
|
|
||||||
All @scheme[subarea<%>] classes accept the following named
|
All @scheme[subarea<%>] classes accept the following named
|
||||||
instantiation arguments:
|
instantiation arguments:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme[horiz-margin] --- default is @scheme[2] for
|
@item{@indexed-scheme[horiz-margin] --- default is @scheme[2] for
|
||||||
@scheme[control<%>] classes and @scheme[group-box-panel%],
|
@scheme[control<%>] classes and @scheme[group-box-panel%],
|
||||||
|
@ -17,7 +17,7 @@ All @scheme[subarea<%>] classes accept the following named
|
||||||
@scheme[control<%>] classes and @scheme[group-box-panel%],
|
@scheme[control<%>] classes and @scheme[group-box-panel%],
|
||||||
@scheme[0] for others; passed to
|
@scheme[0] for others; passed to
|
||||||
@method[subarea<%> vert-margin]}
|
@method[subarea<%> vert-margin]}
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -588,7 +588,7 @@ Returns the snip at a given @techlink{position}, or @scheme[#f] if an appropriat
|
||||||
If the @techlink{position} @scheme[pos] is between
|
If the @techlink{position} @scheme[pos] is between
|
||||||
two snips, @scheme[direction] specifies which snip to return; @scheme[direction]
|
two snips, @scheme[direction] specifies which snip to return; @scheme[direction]
|
||||||
can be any of the following:
|
can be any of the following:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['before-or-none] --- returns the snip before the
|
@item{@scheme['before-or-none] --- returns the snip before the
|
||||||
@techlink{position}, or @scheme[#f] if @scheme[pos] is @scheme[0]}
|
@techlink{position}, or @scheme[#f] if @scheme[pos] is @scheme[0]}
|
||||||
|
@ -602,7 +602,7 @@ can be any of the following:
|
||||||
@item{@scheme['after-or-none] -- returns the snip after the
|
@item{@scheme['after-or-none] -- returns the snip after the
|
||||||
@techlink{position}, or @scheme[#f] if @scheme[pos] is the last @techlink{position} or larger}
|
@techlink{position}, or @scheme[#f] if @scheme[pos] is the last @techlink{position} or larger}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
@boxisfillnull[(scheme s-pos) @elem{the @techlink{position} where the returned snip starts}]
|
@boxisfillnull[(scheme s-pos) @elem{the @techlink{position} where the returned snip starts}]
|
||||||
|
|
||||||
|
@ -679,13 +679,13 @@ The @scheme[reason] argument specifies more information about what the
|
||||||
caret may be different from the wordbreaks used to break lines. The
|
caret may be different from the wordbreaks used to break lines. The
|
||||||
possible values of @scheme[reason] are:
|
possible values of @scheme[reason] are:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['caret] --- find a wordbreak suitable for moving the caret}
|
@item{@scheme['caret] --- find a wordbreak suitable for moving the caret}
|
||||||
@item{@scheme['line] --- find a wordbreak suitable for breaking lines}
|
@item{@scheme['line] --- find a wordbreak suitable for breaking lines}
|
||||||
@item{@scheme['selection] --- find a wordbreak suitable for selecting the closest word}
|
@item{@scheme['selection] --- find a wordbreak suitable for selecting the closest word}
|
||||||
@item{@scheme['user1] --- for other (not built-in) uses}
|
@item{@scheme['user1] --- for other (not built-in) uses}
|
||||||
@item{@scheme['user2] --- for other (not built-in) uses}
|
@item{@scheme['user2] --- for other (not built-in) uses}
|
||||||
}
|
]
|
||||||
|
|
||||||
The actual handling of @scheme[reason] is controlled by the current
|
The actual handling of @scheme[reason] is controlled by the current
|
||||||
wordbreak procedure; see @method[text% set-wordbreak-func]for
|
wordbreak procedure; see @method[text% set-wordbreak-func]for
|
||||||
|
@ -1227,7 +1227,7 @@ If the line starts with invisible @techlink{item}s and @scheme[visible?] is not
|
||||||
@|FCAMW|
|
@|FCAMW|
|
||||||
|
|
||||||
To calculate lines, if the following are true:
|
To calculate lines, if the following are true:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{the editor is not displayed (see @secref["tb:miaoverview"]),}
|
@item{the editor is not displayed (see @secref["tb:miaoverview"]),}
|
||||||
|
|
||||||
|
@ -1235,7 +1235,7 @@ To calculate lines, if the following are true:
|
||||||
|
|
||||||
@item{the editor has never been viewed}
|
@item{the editor has never been viewed}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
then this method ignores the editor's maximum width and any automatic
|
then this method ignores the editor's maximum width and any automatic
|
||||||
line breaks it might imply. If the first two of the above conditions
|
line breaks it might imply. If the first two of the above conditions
|
||||||
|
@ -1256,14 +1256,14 @@ Moves the current selection.
|
||||||
|
|
||||||
The possible values for @scheme[code] are:
|
The possible values for @scheme[code] are:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['home] --- go to start of file}
|
@item{@scheme['home] --- go to start of file}
|
||||||
@item{@scheme['end] --- go to end of file}
|
@item{@scheme['end] --- go to end of file}
|
||||||
@item{@scheme['right] --- move right}
|
@item{@scheme['right] --- move right}
|
||||||
@item{@scheme['left] --- move left}
|
@item{@scheme['left] --- move left}
|
||||||
@item{@scheme['up] --- move up}
|
@item{@scheme['up] --- move up}
|
||||||
@item{@scheme['down] --- move down}
|
@item{@scheme['down] --- move down}
|
||||||
}
|
]
|
||||||
|
|
||||||
If @scheme[extend?] is not @scheme[#f], the selection range is
|
If @scheme[extend?] is not @scheme[#f], the selection range is
|
||||||
extended instead of moved. If anchoring is on (see @method[text%
|
extended instead of moved. If anchoring is on (see @method[text%
|
||||||
|
@ -1272,12 +1272,12 @@ If @scheme[extend?] is not @scheme[#f], the selection range is
|
||||||
|
|
||||||
The possible values for @scheme[kind] are:
|
The possible values for @scheme[kind] are:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['simple] --- move one item or line}
|
@item{@scheme['simple] --- move one item or line}
|
||||||
@item{@scheme['word] --- works with @scheme['right] or @scheme['left]}
|
@item{@scheme['word] --- works with @scheme['right] or @scheme['left]}
|
||||||
@item{@scheme['page] --- works with @scheme['up] or @scheme['down]}
|
@item{@scheme['page] --- works with @scheme['up] or @scheme['down]}
|
||||||
@item{@scheme['line] --- works with @scheme['right] or @scheme['left]; moves to the start or end of the line}
|
@item{@scheme['line] --- works with @scheme['right] or @scheme['left]; moves to the start or end of the line}
|
||||||
}
|
]
|
||||||
|
|
||||||
See also @method[text% set-position].
|
See also @method[text% set-position].
|
||||||
|
|
||||||
|
@ -1317,7 +1317,7 @@ Does nothing.
|
||||||
|
|
||||||
Handles the following:
|
Handles the following:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Delete and Backspace --- calls @method[text% delete].}
|
@item{Delete and Backspace --- calls @method[text% delete].}
|
||||||
|
|
||||||
|
@ -1329,7 +1329,7 @@ Handles the following:
|
||||||
@scheme[(integer->char 255)] --- inserts the character into the
|
@scheme[(integer->char 255)] --- inserts the character into the
|
||||||
editor.}
|
editor.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Note that an editor's @scheme[editor-canvas%] normally handles mouse
|
Note that an editor's @scheme[editor-canvas%] normally handles mouse
|
||||||
wheel events (see also @method[editor-canvas% on-char] ).
|
wheel events (see also @method[editor-canvas% on-char] ).
|
||||||
|
@ -1346,7 +1346,7 @@ Tracks clicks on a clickback (see @method[text% set-clickback]) of
|
||||||
dispatches to a caret-owning snip and detects a click on an
|
dispatches to a caret-owning snip and detects a click on an
|
||||||
event-handling snip before calling to this method.
|
event-handling snip before calling to this method.
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Clicking on a clickback region starts clickback tracking. See
|
@item{Clicking on a clickback region starts clickback tracking. See
|
||||||
@method[text% set-clickback] for more information. Moving over a
|
@method[text% set-clickback] for more information. Moving over a
|
||||||
|
@ -1358,7 +1358,7 @@ Tracks clicks on a clickback (see @method[text% set-clickback]) of
|
||||||
@item{Dragging extends the selection, scrolling if possible when the
|
@item{Dragging extends the selection, scrolling if possible when the
|
||||||
selection is dragged outside the editor's visible region.}
|
selection is dragged outside the editor's visible region.}
|
||||||
|
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1821,11 +1821,11 @@ Set the format of the file saved from this editor.
|
||||||
|
|
||||||
The legal formats are:
|
The legal formats are:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['standard] --- a standard editor file}
|
@item{@scheme['standard] --- a standard editor file}
|
||||||
@item{@scheme['text] --- a text file}
|
@item{@scheme['text] --- a text file}
|
||||||
@item{@scheme['text-force-cr] --- a text file; when writing, change automatic newlines (from word-wrapping) into real carriage returns}
|
@item{@scheme['text-force-cr] --- a text file; when writing, change automatic newlines (from word-wrapping) into real carriage returns}
|
||||||
}
|
]
|
||||||
|
|
||||||
@MonitorMethod[@elem{The file format of an editor} @elem{the
|
@MonitorMethod[@elem{The file format of an editor} @elem{the
|
||||||
system in response to file loading and saving
|
system in response to file loading and saving
|
||||||
|
@ -1910,7 +1910,7 @@ See @|ateoldiscuss| for a discussion of @scheme[at-eol?]. If
|
||||||
|
|
||||||
The @scheme[seltype] argument is only used when the X Window System
|
The @scheme[seltype] argument is only used when the X Window System
|
||||||
selection mechanism is enabled. The possible values are:
|
selection mechanism is enabled. The possible values are:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme['default] --- if this window has the keyboard focus
|
@item{@scheme['default] --- if this window has the keyboard focus
|
||||||
and given selection is non-empty, make it the current X selection}
|
and given selection is non-empty, make it the current X selection}
|
||||||
|
@ -1921,7 +1921,7 @@ The @scheme[seltype] argument is only used when the X Window System
|
||||||
@item{@scheme['local] --- do not change the
|
@item{@scheme['local] --- do not change the
|
||||||
current X selection}
|
current X selection}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Setting the @techlink{position} is disallowed when the editor is internally
|
Setting the @techlink{position} is disallowed when the editor is internally
|
||||||
locked for reflowing (see also @|lockdiscuss|).
|
locked for reflowing (see also @|lockdiscuss|).
|
||||||
|
@ -1945,13 +1945,13 @@ See also @scheme[editor-set-x-selection-mode].
|
||||||
Like @method[text% set-position], but a scrolling bias can be specified.
|
Like @method[text% set-position], but a scrolling bias can be specified.
|
||||||
|
|
||||||
The possible values for @scheme[bias] are:
|
The possible values for @scheme[bias] are:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@scheme['start-only] --- only insure that the starting @techlink{position} is visible}
|
@item{@scheme['start-only] --- only insure that the starting @techlink{position} is visible}
|
||||||
@item{@scheme['start] --- if the range doesn't fit in the visible area, show the starting @techlink{position}}
|
@item{@scheme['start] --- if the range doesn't fit in the visible area, show the starting @techlink{position}}
|
||||||
@item{@scheme['none] --- no special scrolling instructions}
|
@item{@scheme['none] --- no special scrolling instructions}
|
||||||
@item{@scheme['end] --- if the range doesn't fit in the visible area, show the ending @techlink{position}}
|
@item{@scheme['end] --- if the range doesn't fit in the visible area, show the ending @techlink{position}}
|
||||||
@item{@scheme['end-only] --- only insure that the ending @techlink{position} is visible}
|
@item{@scheme['end-only] --- only insure that the ending @techlink{position} is visible}
|
||||||
}
|
]
|
||||||
|
|
||||||
See also @method[text% scroll-to-position].
|
See also @method[text% scroll-to-position].
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ A @scheme[text-field%] object is an editable text field with an
|
||||||
optional label displayed in front of it. There are two text field
|
optional label displayed in front of it. There are two text field
|
||||||
styles:
|
styles:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{A single line of text is visible, and a special control event
|
@item{A single line of text is visible, and a special control event
|
||||||
is generated when the user presses Enter (when the text field has the
|
is generated when the user presses Enter (when the text field has the
|
||||||
|
@ -17,7 +17,7 @@ A @scheme[text-field%] object is an editable text field with an
|
||||||
@item{Multiple lines of text are visible, and Enter is not handled
|
@item{Multiple lines of text are visible, and Enter is not handled
|
||||||
specially.}
|
specially.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Whenever the user changes the content of a text field, its callback
|
Whenever the user changes the content of a text field, its callback
|
||||||
procedure is invoked. A callback procedure is provided as an
|
procedure is invoked. A callback procedure is provided as an
|
||||||
|
@ -101,7 +101,7 @@ Returns the editor used to implement the text field.
|
||||||
|
|
||||||
For a text field, the most useful methods of a @scheme[text%] object
|
For a text field, the most useful methods of a @scheme[text%] object
|
||||||
are the following:
|
are the following:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[(send a-text #, @method[text% get-text])] returns
|
@item{@scheme[(send a-text #, @method[text% get-text])] returns
|
||||||
the current text of the editor.}
|
the current text of the editor.}
|
||||||
|
@ -112,7 +112,7 @@ For a text field, the most useful methods of a @scheme[text%] object
|
||||||
@item{@scheme[(send a-text #, @method[text% insert] _str)] inserts
|
@item{@scheme[(send a-text #, @method[text% insert] _str)] inserts
|
||||||
@scheme[_str] into the editor at the current caret position.}
|
@scheme[_str] into the editor at the current caret position.}
|
||||||
|
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -208,13 +208,13 @@ Returns @|void-const|.
|
||||||
The following rules determine, in order, whether and how @scheme[event]
|
The following rules determine, in order, whether and how @scheme[event]
|
||||||
is handled:
|
is handled:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{
|
@item{
|
||||||
If the window that currently owns the focus specifically handles the
|
If the window that currently owns the focus specifically handles the
|
||||||
event, then @scheme[#f] is returned. The following describes window
|
event, then @scheme[#f] is returned. The following describes window
|
||||||
types and the keyboard events they specifically handle:
|
types and the keyboard events they specifically handle:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[editor-canvas%] --- tab-exit is disabled (see
|
@item{@scheme[editor-canvas%] --- tab-exit is disabled (see
|
||||||
@method[editor-canvas% allow-tab-exit]): all keyboard events, except alphanumeric key events when the Meta
|
@method[editor-canvas% allow-tab-exit]): all keyboard events, except alphanumeric key events when the Meta
|
||||||
|
@ -242,7 +242,7 @@ If the window that currently owns the focus specifically handles the
|
||||||
@item{@scheme[list-box%] --- arrow key events and alphanumeric key
|
@item{@scheme[list-box%] --- arrow key events and alphanumeric key
|
||||||
events when the Meta (X) or Alt (Windows) key is not pressed}
|
events when the Meta (X) or Alt (Windows) key is not pressed}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{
|
@item{
|
||||||
If @scheme[event] is a Tab or arrow key event, the keyboard focus is
|
If @scheme[event] is a Tab or arrow key event, the keyboard focus is
|
||||||
|
@ -288,7 +288,7 @@ If @scheme[event] is an alphanumeric key event and the current top-level
|
||||||
@item{
|
@item{
|
||||||
Otherwise, @scheme[#f] is returned.}
|
Otherwise, @scheme[#f] is returned.}
|
||||||
|
|
||||||
}
|
]
|
||||||
}}
|
}}
|
||||||
|
|
||||||
@defmethod[(on-system-menu-char [event (is-a?/c key-event%)])
|
@defmethod[(on-system-menu-char [event (is-a?/c key-event%)])
|
||||||
|
|
|
@ -134,12 +134,12 @@ The fundamental graphical element in the windowing toolbox is an
|
||||||
@deftech{area}. The following classes implement the different types
|
@deftech{area}. The following classes implement the different types
|
||||||
of areas in the windowing toolbox:
|
of areas in the windowing toolbox:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@deftech{Containers} --- areas that can
|
@item{@deftech{Containers} --- areas that can
|
||||||
contain other areas:
|
contain other areas:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[frame%] --- a @deftech{frame} is a top-level window
|
@item{@scheme[frame%] --- a @deftech{frame} is a top-level window
|
||||||
that the user can move and resize.}
|
that the user can move and resize.}
|
||||||
|
@ -159,12 +159,12 @@ The fundamental graphical element in the windowing toolbox is an
|
||||||
@scheme[vertical-pane%], @scheme[horizontal-pane%], and
|
@scheme[vertical-pane%], @scheme[horizontal-pane%], and
|
||||||
@scheme[grow-box-spacer-pane%].}
|
@scheme[grow-box-spacer-pane%].}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{@deftech{Containees} --- areas that must be
|
@item{@deftech{Containees} --- areas that must be
|
||||||
contained within other areas:
|
contained within other areas:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[panel%] --- a panel is a containee as well as
|
@item{@scheme[panel%] --- a panel is a containee as well as
|
||||||
a container.}
|
a container.}
|
||||||
|
@ -182,7 +182,7 @@ The fundamental graphical element in the windowing toolbox is an
|
||||||
|
|
||||||
@item{@deftech{Controls} --- containees that the user can manipulate:
|
@item{@deftech{Controls} --- containees that the user can manipulate:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[message%] --- a @deftech{message} is a static
|
@item{@scheme[message%] --- a @deftech{message} is a static
|
||||||
text field or bitmap with no user interaction.}
|
text field or bitmap with no user interaction.}
|
||||||
|
@ -219,11 +219,11 @@ The fundamental graphical element in the windowing toolbox is an
|
||||||
control (the user cannot change the value) for reporting an integer
|
control (the user cannot change the value) for reporting an integer
|
||||||
value within a fixed range.}
|
value within a fixed range.}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
As suggested by the above listing, certain @tech{areas}, called
|
As suggested by the above listing, certain @tech{areas}, called
|
||||||
@tech{containers}, manage certain other areas, called
|
@tech{containers}, manage certain other areas, called
|
||||||
|
@ -268,11 +268,11 @@ Menu bars, menus, and menu items are graphical elements, but not areas
|
||||||
areas, such as an adjustable graphical size). Instead, the menu
|
areas, such as an adjustable graphical size). Instead, the menu
|
||||||
classes form a separate container--containee hierarchy:
|
classes form a separate container--containee hierarchy:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@deftech{Menu Item Containers}
|
@item{@deftech{Menu Item Containers}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[menu-bar%] --- a @deftech{menu bar} is a top-level
|
@item{@scheme[menu-bar%] --- a @deftech{menu bar} is a top-level
|
||||||
collection of menus that are associated with a frame.}
|
collection of menus that are associated with a frame.}
|
||||||
|
@ -285,11 +285,11 @@ Menu bars, menus, and menu items are graphical elements, but not areas
|
||||||
top-level menu that is dynamically displayed in a canvas or
|
top-level menu that is dynamically displayed in a canvas or
|
||||||
editor canvas.}
|
editor canvas.}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
@item{@deftech{Menu Items}
|
@item{@deftech{Menu Items}
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[separator-menu-item%] --- a @deftech{separator} is
|
@item{@scheme[separator-menu-item%] --- a @deftech{separator} is
|
||||||
an unselectable line in a menu or popup menu.}
|
an unselectable line in a menu or popup menu.}
|
||||||
|
@ -305,9 +305,9 @@ Menu bars, menus, and menu items are graphical elements, but not areas
|
||||||
@item{@scheme[menu%] --- a menu is a menu item as well as a menu
|
@item{@scheme[menu%] --- a menu is a menu item as well as a menu
|
||||||
item container.}
|
item container.}
|
||||||
|
|
||||||
}}
|
]}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
The following diagram shows the complete type hierarchy for the menu
|
The following diagram shows the complete type hierarchy for the menu
|
||||||
system:
|
system:
|
||||||
|
@ -395,7 +395,7 @@ The following subsections describe the container system in detail,
|
||||||
|
|
||||||
Each @tech{containee}, or child, has the following properties:
|
Each @tech{containee}, or child, has the following properties:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{a @deftech{graphical minimum width} and a @deftech{graphical minimum height};}
|
@item{a @deftech{graphical minimum width} and a @deftech{graphical minimum height};}
|
||||||
|
|
||||||
|
@ -405,7 +405,7 @@ Each @tech{containee}, or child, has the following properties:
|
||||||
|
|
||||||
@item{horizontal and vertical @tech{margins}.}
|
@item{horizontal and vertical @tech{margins}.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
A @tech{container} arranges its children based on these four
|
A @tech{container} arranges its children based on these four
|
||||||
properties of each @tech{containee}. A @tech{containee}'s parent
|
properties of each @tech{containee}. A @tech{containee}'s parent
|
||||||
|
@ -464,7 +464,7 @@ In practice, the @tech{requested minimum size} and @tech{margin} of a
|
||||||
|
|
||||||
A container has the following properties:
|
A container has the following properties:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{a list of (non-deleted) children containees;}
|
@item{a list of (non-deleted) children containees;}
|
||||||
|
|
||||||
|
@ -478,7 +478,7 @@ A container has the following properties:
|
||||||
|
|
||||||
@item{an alignment setting for positioning leftover space.}
|
@item{an alignment setting for positioning leftover space.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
These properties are factored into the container's calculation of its
|
These properties are factored into the container's calculation of its
|
||||||
own size and the arrangement of its children. For a container that is
|
own size and the arrangement of its children. For a container that is
|
||||||
|
@ -491,7 +491,7 @@ A containee's parent container is specified when the containee is
|
||||||
container (but a non-window containee cannot be @tech{hidden} or
|
container (but a non-window containee cannot be @tech{hidden} or
|
||||||
@tech{deleted}):
|
@tech{deleted}):
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{A @deftech{hidden} child is invisible to the user, but space is
|
@item{A @deftech{hidden} child is invisible to the user, but space is
|
||||||
still allocated for each hidden child within a container. To hide or
|
still allocated for each hidden child within a container. To hide or
|
||||||
|
@ -504,7 +504,7 @@ A containee's parent container is specified when the containee is
|
||||||
delete-child] or @method[area-container<%> add-child] method (which
|
delete-child] or @method[area-container<%> add-child] method (which
|
||||||
calls the child's @method[window<%> show] method).}
|
calls the child's @method[window<%> show] method).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
When a child is created, it is initially shown and non-deleted. A
|
When a child is created, it is initially shown and non-deleted. A
|
||||||
deleted child is subject to garbage collection when no external
|
deleted child is subject to garbage collection when no external
|
||||||
|
@ -588,22 +588,22 @@ Although nested horizontal and vertical containers can express most
|
||||||
|
|
||||||
An input size specification is a list of four values:
|
An input size specification is a list of four values:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{the child's minimum width;}
|
@item{the child's minimum width;}
|
||||||
@item{the child's minimum height;}
|
@item{the child's minimum height;}
|
||||||
@item{the child's horizontal stretchability (@scheme[#t] means stretchable, @scheme[#f] means not stretchable); and}
|
@item{the child's horizontal stretchability (@scheme[#t] means stretchable, @scheme[#f] means not stretchable); and}
|
||||||
@item{the child's vertical stretchability.}
|
@item{the child's vertical stretchability.}
|
||||||
}
|
]
|
||||||
|
|
||||||
For @method[area-container<%> place-children], an output
|
For @method[area-container<%> place-children], an output
|
||||||
position and size specification is a list of four values:
|
position and size specification is a list of four values:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{the child's new horizontal position (relative to the parent);}
|
@item{the child's new horizontal position (relative to the parent);}
|
||||||
@item{the child's new vertical position;}
|
@item{the child's new vertical position;}
|
||||||
@item{the child's new actual width;}
|
@item{the child's new actual width;}
|
||||||
@item{the child's new actual height.}
|
@item{the child's new actual height.}
|
||||||
}
|
]
|
||||||
|
|
||||||
The widths and heights for both the input and output include the
|
The widths and heights for both the input and output include the
|
||||||
children's margins. The returned position for each child is
|
children's margins. The returned position for each child is
|
||||||
|
@ -618,7 +618,7 @@ Whenever the user moves the mouse, clicks or releases a mouse button,
|
||||||
window. The window that receives the event depends on the current
|
window. The window that receives the event depends on the current
|
||||||
state of the graphic display:
|
state of the graphic display:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@index['("mouse events" "overview")]{The} receiving window of a
|
@item{@index['("mouse events" "overview")]{The} receiving window of a
|
||||||
mouse event is usually the window under the cursor when the mouse is
|
mouse event is usually the window under the cursor when the mouse is
|
||||||
|
@ -665,7 +665,7 @@ Whenever the user moves the mouse, clicks or releases a mouse button,
|
||||||
event, however, key-release events sometimes get dropped (e.g., due
|
event, however, key-release events sometimes get dropped (e.g., due
|
||||||
to the appearance of a modal dialog).}
|
to the appearance of a modal dialog).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Controls, such as buttons and list boxes, handle keyboard and mouse
|
Controls, such as buttons and list boxes, handle keyboard and mouse
|
||||||
events automatically, eventually invoking the callback procedure that
|
events automatically, eventually invoking the callback procedure that
|
||||||
|
@ -715,7 +715,7 @@ Despite the programming convenience provided by a purely sequential
|
||||||
event queue, certain situations require a less rigid dialog with
|
event queue, certain situations require a less rigid dialog with
|
||||||
the user:
|
the user:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@italic{Nested event handling:} In the process of handling an
|
@item{@italic{Nested event handling:} In the process of handling an
|
||||||
event, it may be necessary to obtain further information from the
|
event, it may be necessary to obtain further information from the
|
||||||
|
@ -738,7 +738,7 @@ Despite the programming convenience provided by a purely sequential
|
||||||
the application needs a separate event queue for each window, and a
|
the application needs a separate event queue for each window, and a
|
||||||
separate event-handling thread for each event queue.}
|
separate event-handling thread for each event queue.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
An @deftech{eventspace} is a context for processing GUI
|
An @deftech{eventspace} is a context for processing GUI
|
||||||
events. Each eventspace maintains its own queue of events, and events
|
events. Each eventspace maintains its own queue of events, and events
|
||||||
|
@ -795,7 +795,7 @@ An eventspace's event queue is actually a priority queue with events
|
||||||
sorted according to their kind, from highest-priority (dispatched
|
sorted according to their kind, from highest-priority (dispatched
|
||||||
first) to lowest-priority (dispatched last):
|
first) to lowest-priority (dispatched last):
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{The highest-priority events are high-priority events installed
|
@item{The highest-priority events are high-priority events installed
|
||||||
with @scheme[queue-callback].}
|
with @scheme[queue-callback].}
|
||||||
|
@ -808,7 +808,7 @@ An eventspace's event queue is actually a priority queue with events
|
||||||
@item{The lowest-priority events are low-priority events installed
|
@item{The lowest-priority events are low-priority events installed
|
||||||
with @scheme[queue-callback].}
|
with @scheme[queue-callback].}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Although a programmer has no direct control over the order in which
|
Although a programmer has no direct control over the order in which
|
||||||
events are dispatched, a programmer can control the timing of
|
events are dispatched, a programmer can control the timing of
|
||||||
|
|
|
@ -8,12 +8,12 @@ A @scheme[window<%>] object is an @scheme[area<%>] with a graphical
|
||||||
|
|
||||||
All @scheme[window<%>] classes accept the following named instantiation
|
All @scheme[window<%>] classes accept the following named instantiation
|
||||||
arguments:
|
arguments:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@indexed-scheme[enabled] --- default is @scheme[#t]; passed to
|
@item{@indexed-scheme[enabled] --- default is @scheme[#t]; passed to
|
||||||
@method[window<%> enable] if @scheme[#f]}
|
@method[window<%> enable] if @scheme[#f]}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ Returns an exact integer representing a handle to the window in the
|
||||||
current platform's GUI toolbox. Cast this number from a C @tt{long}
|
current platform's GUI toolbox. Cast this number from a C @tt{long}
|
||||||
to a platform-specific C type:
|
to a platform-specific C type:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{Windows: @tt{HWND}}
|
@item{Windows: @tt{HWND}}
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ to a platform-specific C type:
|
||||||
|
|
||||||
@item{X: @tt{Widget*}}
|
@item{X: @tt{Widget*}}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Some windows may not have a representation in the platform's GUI level,
|
Some windows may not have a representation in the platform's GUI level,
|
||||||
in which case the result of this method is @scheme[0].
|
in which case the result of this method is @scheme[0].
|
||||||
|
|
|
@ -19,7 +19,7 @@ Mitchell and McKim's principles for design by contract DbC are derived
|
||||||
we use a mostly applicative, we
|
we use a mostly applicative, we
|
||||||
retain their terminology of ``classes'' and ``objects'':
|
retain their terminology of ``classes'' and ``objects'':
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{@bold{Separate queries from commands.}
|
@item{@bold{Separate queries from commands.}
|
||||||
|
|
||||||
A @italic{query} returns a result but does not change the observable
|
A @italic{query} returns a result but does not change the observable
|
||||||
|
@ -40,7 +40,7 @@ Mitchell and McKim's principles for design by contract DbC are derived
|
||||||
changes to the observable properties in terms of the basic queries.}}
|
changes to the observable properties in terms of the basic queries.}}
|
||||||
|
|
||||||
@item{@bold{For each query and command, decide on suitable
|
@item{@bold{For each query and command, decide on suitable
|
||||||
pre-condition contract.}}}
|
pre-condition contract.}}]
|
||||||
|
|
||||||
Each of the following sections corresponds to a chapter in
|
Each of the following sections corresponds to a chapter in
|
||||||
Mitchell and McKim's book (but not all chapters show up
|
Mitchell and McKim's book (but not all chapters show up
|
||||||
|
|
|
@ -104,7 +104,7 @@ point here is the formulation of the contract for the
|
||||||
|
|
||||||
|
|
||||||
The contract combinator @scheme[->*], demands several groups of contracts:
|
The contract combinator @scheme[->*], demands several groups of contracts:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{The first one is a parenthesized group of contracts for all required
|
@item{The first one is a parenthesized group of contracts for all required
|
||||||
arguments. In this example, we see two: @scheme[string?] and
|
arguments. In this example, we see two: @scheme[string?] and
|
||||||
@scheme[natural-number/c]. }
|
@scheme[natural-number/c]. }
|
||||||
|
@ -113,7 +113,7 @@ arguments. In this example, we see two: @scheme[string?] and
|
||||||
arguments: @scheme[char?]. }
|
arguments: @scheme[char?]. }
|
||||||
|
|
||||||
@item{The last one is a single contract: the result of the function.}
|
@item{The last one is a single contract: the result of the function.}
|
||||||
}
|
]
|
||||||
|
|
||||||
Note if a default value does not satisfy a contract, you
|
Note if a default value does not satisfy a contract, you
|
||||||
won't get a contract error for this interface. In contrast
|
won't get a contract error for this interface. In contrast
|
||||||
|
@ -358,7 +358,7 @@ scheme
|
||||||
acc)
|
acc)
|
||||||
]
|
]
|
||||||
|
|
||||||
The second section is the export interface: @itemize{
|
The second section is the export interface: @itemize[
|
||||||
@item{@scheme[create] consumes an initial deposit and
|
@item{@scheme[create] consumes an initial deposit and
|
||||||
produces an account. This kind of contract is just like a
|
produces an account. This kind of contract is just like a
|
||||||
type in a statically typed language, except that statically
|
type in a statically typed language, except that statically
|
||||||
|
@ -383,7 +383,7 @@ format string). The result is a contract.
|
||||||
|
|
||||||
@item{@scheme[deposit]'s contract has been reformulated using the
|
@item{@scheme[deposit]'s contract has been reformulated using the
|
||||||
@scheme[->d] combinator. }
|
@scheme[->d] combinator. }
|
||||||
}
|
]
|
||||||
|
|
||||||
The code in the first section defines all those pieces that
|
The code in the first section defines all those pieces that
|
||||||
are needed for the formulation of the export contracts:
|
are needed for the formulation of the export contracts:
|
||||||
|
@ -467,13 +467,13 @@ others):
|
||||||
[(s start end) (substring s start end)]))
|
[(s start end) (substring s start end)]))
|
||||||
]
|
]
|
||||||
This version of @scheme[substring] has one of the following signature:
|
This version of @scheme[substring] has one of the following signature:
|
||||||
@itemize{
|
@itemize[
|
||||||
@item{just a string, in which case it copies the string;}
|
@item{just a string, in which case it copies the string;}
|
||||||
@item{a string and an index into the string, in which case it extracts the
|
@item{a string and an index into the string, in which case it extracts the
|
||||||
suffix of the string starting at the index; or }
|
suffix of the string starting at the index; or }
|
||||||
@item{a string a start index and an end index, in which case it extracts the
|
@item{a string a start index and an end index, in which case it extracts the
|
||||||
fragment of the string between the two indices. }
|
fragment of the string between the two indices. }
|
||||||
}
|
]
|
||||||
|
|
||||||
The contract for such a function is formed with the @scheme[case->]
|
The contract for such a function is formed with the @scheme[case->]
|
||||||
combinator, which combines as many functional contracts as needed:
|
combinator, which combines as many functional contracts as needed:
|
||||||
|
|
|
@ -37,13 +37,13 @@ scheme
|
||||||
]
|
]
|
||||||
|
|
||||||
It exports two functions:
|
It exports two functions:
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@scheme[create]: The function's contract says that it consumes two
|
@item{@scheme[create]: The function's contract says that it consumes two
|
||||||
arguments, a string and a number, and it promises nothing about the return value. }
|
arguments, a string and a number, and it promises nothing about the return value. }
|
||||||
|
|
||||||
@item{@scheme[deposit]: The function's contract demands from the client modules
|
@item{@scheme[deposit]: The function's contract demands from the client modules
|
||||||
that they apply it to numbers. It promises nothing about the return value. }}
|
that they apply it to numbers. It promises nothing about the return value. }]
|
||||||
|
|
||||||
If a ``client'' module were to apply @scheme[deposit] to
|
If a ``client'' module were to apply @scheme[deposit] to
|
||||||
@scheme['silly], it would violate the contract. The
|
@scheme['silly], it would violate the contract. The
|
||||||
|
|
|
@ -44,7 +44,7 @@ Meanwhile, in addition to defining @scheme[_struct-id],
|
||||||
@scheme[define-struct] also defines a number of identifiers that are
|
@scheme[define-struct] also defines a number of identifiers that are
|
||||||
built from @scheme[_struct-id] and the @scheme[_field-id]s:
|
built from @scheme[_struct-id] and the @scheme[_field-id]s:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@schemeidfont{make-}@scheme[_struct-id] : a
|
@item{@schemeidfont{make-}@scheme[_struct-id] : a
|
||||||
@deftech{constructor} function that takes as many arguments as
|
@deftech{constructor} function that takes as many arguments as
|
||||||
|
@ -74,7 +74,7 @@ built from @scheme[_struct-id] and the @scheme[_field-id]s:
|
||||||
@scheme[#:super], as discussed later in
|
@scheme[#:super], as discussed later in
|
||||||
@secref["struct-options"]).}
|
@secref["struct-options"]).}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
A @scheme[define-struct] form places no constraints on the kinds of
|
A @scheme[define-struct] form places no constraints on the kinds of
|
||||||
values that can appear for fields in an instance of the structure
|
values that can appear for fields in an instance of the structure
|
||||||
|
@ -368,7 +368,7 @@ or existing examples. Overall, the different options for structure
|
||||||
types offer a spectrum of possibilities from more abstract to more
|
types offer a spectrum of possibilities from more abstract to more
|
||||||
convenient:
|
convenient:
|
||||||
|
|
||||||
@itemize{
|
@itemize[
|
||||||
|
|
||||||
@item{@tech{Opaque} (the default) : Instances cannot be inspected or
|
@item{@tech{Opaque} (the default) : Instances cannot be inspected or
|
||||||
forged without access to the structure-type declaration. As
|
forged without access to the structure-type declaration. As
|
||||||
|
@ -394,7 +394,7 @@ convenient:
|
||||||
manufacture instances directly. The instance cannot have a
|
manufacture instances directly. The instance cannot have a
|
||||||
@tech{constructor guard} or @tech{properties}.}
|
@tech{constructor guard} or @tech{properties}.}
|
||||||
|
|
||||||
}
|
]
|
||||||
|
|
||||||
Since the expression reader can generate @tech{prefab} instances, they
|
Since the expression reader can generate @tech{prefab} instances, they
|
||||||
are useful when convenient @tech{serialization} is more important than
|
are useful when convenient @tech{serialization} is more important than
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user