Some random tidyings.

This commit is contained in:
Eli Barzilay 2011-02-16 15:26:11 -05:00
parent 8886b87876
commit 1be26400cb
7 changed files with 1279 additions and 1531 deletions

View File

@ -9,22 +9,25 @@
The preferences dialog consists of several panels. The preferences dialog consists of several panels.
@section{@onscreen{Font}} @section{@onscreen{Font}}
This panel controls the main font used by DrRacket. This panel controls the main font used by DrRacket.
@section{@onscreen{Colors}} @section{@onscreen{Colors}}
The @onscreen{Colors} panel has several sub-panels that let you The @onscreen{Colors} panel has several sub-panels that let you
configure the colors that DrRacket uses for the editor background, configure the colors that DrRacket uses for the editor background, for
for highlighting matching parentheses, for the online coloring for highlighting matching parentheses, for the online coloring for Racket
Racket and Java modes, for @onscreen{Check Syntax}, and for the and Java modes, for @onscreen{Check Syntax}, and for the colors of the
colors of the text in the @tech{interactions window}. text in the @tech{interactions window}.
It also has two buttons, @onscreen{White on Black} and @onscreen{Black
on White}, which set a number of defaults for the color preferences and
change a few other aspects of DrRacket's behavior to make DrRacket's
colors look nicer for those two modes.
It also has two buttons, @onscreen{White on Black} and
@onscreen{Black on White}, which set a number of defaults for the
color preferences and change a few other aspects of DrRacket's
behavior to make DrRacket's colors look nicer for those two modes.
@section{@onscreen{Editing}} @section{@onscreen{Editing}}
@ -39,76 +42,78 @@ The preferences dialog consists of several panels.
@item{@onscreen{Square bracket} @item{@onscreen{Square bracket}
This panel controls which keywords DrRacket uses to determine This panel controls which keywords DrRacket uses to determine when
when to rewrite @litchar["["] to @litchar["("]. For to rewrite @litchar["["] to @litchar["("]. For @racket[cond]-like
@racket[cond]-like keywords, the number in parenthesis indicates keywords, the number in parenthesis indicates how many
how many sub-expressions are skipped before square brackets are sub-expressions are skipped before square brackets are started.
started.
See @secref["editor"] for details on how the entries in the See @secref["editor"] for details on how the entries in the
columns behave.} columns behave.}
@item{@onscreen{General} @item{@onscreen{General}
@itemize[@item{@PrefItem{Map delete to backspace} --- If checked, the editor
@itemize[
@item{@PrefItem{Map delete to backspace} --- If checked, the editor
treats the Delete key like the Backspace key.} treats the Delete key like the Backspace key.}
@item{@PrefItem{Wrap words in editor buffers} --- If checked, @item{@PrefItem{Wrap words in editor buffers} --- If checked,
DrRacket editors auto-wrap text lines by default. Changing this DrRacket editors auto-wrap text lines by default. Changing
preference affects new windows only.} this preference affects new windows only.}
@item{@PrefItem{Reuse existing frames when opening new files} --- @item{@PrefItem{Reuse existing frames when opening new files} ---
If checked, new files are opened in the same DrRacket window, If checked, new files are opened in the same DrRacket
rather than creating a new DrRacket window for each new file.} window, rather than creating a new DrRacket window for each
new file.}
@item{@PrefItem{Enable keybindings in menus} --- If checked, some @item{@PrefItem{Enable keybindings in menus} --- If checked, some
DrRacket menu items have keybindings. Otherwise, no menu items DrRacket menu items have keybindings. Otherwise, no menu
have key bindings. This preference is designed for people who are items have key bindings. This preference is designed for
comfortable editing in Emacs and find the standard menu people who are comfortable editing in Emacs and find the
keybindings interfere with the Emacs keybindings.} standard menu keybindings interfere with the Emacs
keybindings.}
@item{@PrefItem{Treat command key as meta} --- If checked,
@item{@PrefItem{Treat command key as meta} --- If checked, DrRacket will use the command key for some Emacs-like keybindings, instead of using it for menu shortcuts. This option is only available under Mac OS X.} DrRacket will use the command key for some Emacs-like
keybindings, instead of using it for menu shortcuts. This
@item{@PrefItem{Color syntax interactively} --- If checked, DrRacket option is only available under Mac OS X.}
colors your syntax as you type.} @item{@PrefItem{Color syntax interactively} --- If checked,
DrRacket colors your syntax as you type.}
@item{@PrefItem{Search using anchors} --- If checked, DrRacket's searching mode will jump directly to the first search hit, using an ``anchor'' to determine where to search if the search string changes.} @item{@PrefItem{Search using anchors} --- If checked, DrRacket's
searching mode will jump directly to the first search hit,
@item{@PrefItem{Normalize pasted strings} --- If checked, DrRacket adjusts strings that are pasted into the editor to avoid confusion. For example, non-breaking spaces look just like spaces but are not considered separators like ordinary spaces are. If this is checked DrRacket will automatically turn those non-breaking spaces into regular spaces. Similarly with other (less common) characters.} using an ``anchor'' to determine where to search if the
search string changes.}
@item{@PrefItem{Enable overwrite mode keybindings} --- If checked, DrRacket enables the insert keybinding to swap into overwrite mode} @item{@PrefItem{Normalize pasted strings} --- If checked, DrRacket
adjusts strings that are pasted into the editor to avoid
@item{@PrefItem{Show line numbers} --- If checked, DrRacket shows line numbers for the file being edited in the left-hand column} confusion. For example, non-breaking spaces look just like
spaces but are not considered separators like ordinary
]} spaces are. If this is checked DrRacket will automatically
turn those non-breaking spaces into regular spaces.
Similarly with other (less common) characters.}
@item{@PrefItem{Enable overwrite mode keybindings} --- If checked,
DrRacket enables the insert keybinding to swap into
overwrite mode}
@item{@PrefItem{Show line numbers} --- If checked, DrRacket shows
line numbers for the file being edited in the left-hand
column}]}
@item{@onscreen{Racket} @item{@onscreen{Racket}
@itemize[ @itemize[
@item{@PrefItem{Highlight between matching parens} --- If checked,
the editor marks the region between matching parenthesis
with a gray background (in color) or a stipple pattern (in
monochrome) when the blinking caret is next to a
parenthesis.}
@item{@PrefItem{Automatically adjust closing parens} --- If
checked, the editor automatically converts a typed
@litchar[")"] to @litchar["]"] to match @litchar["["], or it
converts a typed @litchar["]"] to @litchar[")"] to match
@litchar["("].}
@item{@PrefItem{Automatically adjust opening square brackets} If
checked, the editor changes typed @litchar["["] to match the
context (as explained in @secref["editor"]).}
@item{@PrefItem{Flash paren match} --- If checked, typing a
closing parenthesis, square bracket, or quotation mark
flashes the matching open parenthesis/bracket/quote.}]}
@item{@PrefItem{Highlight between matching parens} --- If checked, the ]
editor marks the region between matching parenthesis with a gray
background (in color) or a stipple pattern (in monochrome) when
the blinking caret is next to a parenthesis.}
@item{@PrefItem{Automatically adjust closing parens} --- If checked, the editor
automatically converts a typed @litchar[")"] to @litchar["]"] to
match @litchar["["], or it converts a typed @litchar["]"] to
@litchar[")"] to match @litchar["("].}
@item{@PrefItem{Automatically adjust opening square brackets} If checked, the editor changes
typed @litchar["["] to match the context (as explained in
@secref["editor"]).}
@item{@PrefItem{Flash paren match} --- If checked, typing a closing
parenthesis, square bracket, or quotation mark flashes the
matching open parenthesis/bracket/quote.}
]}]
@section{@onscreen{Warnings}} @section{@onscreen{Warnings}}
@ -122,41 +127,41 @@ The preferences dialog consists of several panels.
user before exiting.} user before exiting.}
@item{@PrefItem{Ask about normalizing strings} --- If checked, DrRacket @item{@PrefItem{Ask about normalizing strings} --- If checked, DrRacket
consults the user before normalizing a string pasted into the editor.} consults the user before normalizing a string pasted into the
editor.}
@item{@PrefItem{Only warn once when executions and interactions are @item{@PrefItem{Only warn once when executions and interactions are not
not synchronized} --- If checked, DrRacket warns the user on the synchronized} --- If checked, DrRacket warns the user on the first
first interaction after the definitions window, language, or interaction after the definitions window, language, or teachpack
teachpack is changed without a corresponding click on is changed without a corresponding click on @onscreen{Run}.
@onscreen{Run}. Otherwise, the warning appears on every Otherwise, the warning appears on every interaction.}
interaction.}
@item{@PrefItem{Ask about clearing test coverage} --- If checked, @item{@PrefItem{Ask about clearing test coverage} --- If checked, when
when test coverage annotations are displayed DrRacket prompts test coverage annotations are displayed DrRacket prompts about
about removing them. This setting only applies to the PLT removing them. This setting only applies to the PLT languages.
languages. DrRacket never asks in the teaching languages.} DrRacket never asks in the teaching languages.}
@item{@PrefItem{Check for newer Racket versions} --- If @item{@PrefItem{Check for newer Racket versions} --- If checked,
checked, DrRacket periodically polls a server to determine DrRacket periodically polls a server to determine whether a newer
whether a newer version of DrRacket is available.} version of DrRacket is available.}
] ]
@section{@onscreen{General}} @section{@onscreen{General}}
@itemize[ @itemize[
@item{@PrefItem{Number of recent items} --- controls the @item{@PrefItem{Number of recent items} --- controls the length of the
length of the @onscreen{Open Recent} menu (in the @onscreen{File} @onscreen{Open Recent} menu (in the @onscreen{File} menu).}
menu).}
@item{@PrefItem{Auto-save files} --- If checked, the editor @item{@PrefItem{Auto-save files} --- If checked, the editor generates
generates autosave files (see @secref["drracket-autosave-files"]) autosave files (see @secref["drracket-autosave-files"]) for files
for files that have not been saved after five minutes.} that have not been saved after five minutes.}
@item{@PrefItem{Backup files} --- If checked, when saving a file for @item{@PrefItem{Backup files} --- If checked, when saving a file for the
the first time in each editing session, the original copy of the first time in each editing session, the original copy of the file
file is copied to a backup file in the same directory. The backup is copied to a backup file in the same directory. The backup
files have the same name as the original, except that they end in files have the same name as the original, except that they end in
either @indexed-file{.bak} or @indexed-file{~}.} either @indexed-file{.bak} or @indexed-file{~}.}
@ -164,61 +169,63 @@ The preferences dialog consists of several panels.
status line at the bottom of each window.} status line at the bottom of each window.}
@item{@PrefItem{Count column numbers from one} --- If checked, the @item{@PrefItem{Count column numbers from one} --- If checked, the
status line's column counter counts from one. Otherwise, it counts status line's column counter counts from one. Otherwise, it
from zero.} counts from zero.}
@item{@PrefItem{Display line numbers in buffer; not character @item{@PrefItem{Display line numbers in buffer; not character offsets}
offsets} --- If checked, the status line shows a --- If checked, the status line shows a
@nonterm{line}:@nonterm{column} display for the current selection @nonterm{line}:@nonterm{column} display for the current selection
rather than the character offset into the text.} rather than the character offset into the text.}
@item{@PrefItem{Automatically print to PostScript file} --- If @item{@PrefItem{Automatically print to PostScript file} --- If checked,
checked, printing will automatically save PostScript files. If printing will automatically save PostScript files. If not,
not, printing will use the standard printing mechanisms for your printing will use the standard printing mechanisms for your
computer.} computer.}
@item{@PrefItem{Open files in separate tabs (not separate windows)} @item{@PrefItem{Open files in separate tabs (not separate windows)} ---
-- If checked, DrRacket will use tabs in the front-most window to If checked, DrRacket will use tabs in the front-most window to
open new files, rather than creating new windows for new files.} open new files, rather than creating new windows for new files.}
@item{@PrefItem{Automatically open interactions window when running @item{@PrefItem{Automatically open interactions window when running a
a program} -- If checked, DrRacket shows the interactions window program} --- If checked, DrRacket shows the interactions window
(if it is hidden) when a program is run.} (if it is hidden) when a program is run.}
@item{@PrefItem{Automatically switch to the module language when opening a module} -- @item{@PrefItem{Automatically switch to the module language when opening
If checked, DrRacket will recognize files that have a @tt{#lang} line a module} --- If checked, DrRacket will recognize files that have
and adjust the language setting automatically.} a @tt{#lang} line and adjust the language setting automatically.}
@item{@PrefItem{Put the interactions window beside the definitions @item{@PrefItem{Put the interactions window beside the definitions
window} -- If checked, DrRacket puts the interactions window to the window} --- If checked, DrRacket puts the interactions window to
right of the definitions window. By default, the interactions the right of the definitions window. By default, the interactions
window is below the definitions window.} window is below the definitions window.}
@item{@PrefItem{Always show the #lang line in the Module language} -- @item{@PrefItem{Always show the #lang line in the Module language} ---
If checked, the module language always shows the @hash-lang[] If checked, the module language always shows the @hash-lang[] line
line (even when it would ordinarily be scrolled off of the page), assuming (even when it would ordinarily be scrolled off of the page),
that the @hash-lang[] line is the first line in the file. assuming that the @hash-lang[] line is the first line in the file.}
}
] ]
@section{@onscreen{Profiling}} @section{@onscreen{Profiling}}
This preference panel configures the profiling report. The band of This preference panel configures the profiling report. The band of
color shows the range of colors that profiled functions take color shows the range of colors that profiled functions take on. Colors
on. Colors near the right are used for code that is not invoked near the right are used for code that is not invoked often and colors on
often and colors on the right are used for code that is invoked the right are used for code that is invoked often.
often.
If you are interested in more detail at the low end, choose the If you are interested in more detail at the low end, choose the
@onscreen{Square root} check box. If you are interested in more @onscreen{Square root} check box. If you are interested in more detail
detail at the upper end, choose the @onscreen{Square} check box. at the upper end, choose the @onscreen{Square} check box.
@section{@onscreen{Browser}} @section{@onscreen{Browser}}
This preferences panel allows you to configure your HTTP This preferences panel allows you to configure your HTTP proxy. Contact
proxy. Contact your system administrator for details. your system administrator for details.
@section{@onscreen{Tools}} @section{@onscreen{Tools}}
This preference panel allows you to configure the currently active plugins. This preference panel allows you to configure the currently active
plugins.

View File

@ -25,7 +25,7 @@
for more info about edit sequences. for more info about edit sequences.
} }
@defmethod*[(((run-after-edit-sequence (thunk (-> void)) (tag (union symbol? |#f|) |#f|)) void))]{ @defmethod*[(((run-after-edit-sequence (thunk (-> void)) (tag (union symbol? #f) #f)) void))]{
This method is used to install callbacks that will be run after any This method is used to install callbacks that will be run after any
edit-sequence completes. edit-sequence completes.
@ -40,7 +40,7 @@
@method[editor:basic<%> run-after-edit-sequence]'s argument will be called. @method[editor:basic<%> run-after-edit-sequence]'s argument will be called.
} }
@defmethod*[(((get-top-level-window) (union |#f| (is-a?/c top-level-window<%>))))]{ @defmethod*[(((get-top-level-window) (union #f (is-a?/c top-level-window<%>))))]{
Returns the Returns the
@scheme[top-level-window<%>] @scheme[top-level-window<%>]
currently associated with this buffer. currently associated with this buffer.
@ -53,7 +53,7 @@
Returns @scheme[#t] if the file on disk has been modified, by some other program. Returns @scheme[#t] if the file on disk has been modified, by some other program.
} }
@defmethod*[(((save-file/gui-error (filename (union path |#f|) |#f|) (format (union (quote guess) (quote standard) (quote text) (quote text-force-cr) same copy) (quote same)) (show-errors? boolean |#t|)) boolean?))]{ @defmethod*[(((save-file/gui-error (filename (union path #f) #f) (format (union (quote guess) (quote standard) (quote text) (quote text-force-cr) same copy) (quote same)) (show-errors? boolean |#t|)) boolean?))]{
This method is an alternative to This method is an alternative to
@method[editor<%> save-file]. Rather than showing errors via the original stdout, it @method[editor<%> save-file]. Rather than showing errors via the original stdout, it
opens a dialog with an error message showing the error. opens a dialog with an error message showing the error.
@ -63,7 +63,7 @@
no error occurred and @scheme[#f] if an error occurred. no error occurred and @scheme[#f] if an error occurred.
} }
@defmethod*[(((load-file/gui-error (filename (union string |#f|) |#f|) (format (union (quote guess) (quote standard) (quote text) (quote text-force-cr) (quote same) (quote copy)) (quote guess)) (show-errors? boolean |#t|)) boolean?))]{ @defmethod*[(((load-file/gui-error (filename (union string #f) #f) (format (union (quote guess) (quote standard) (quote text) (quote text-force-cr) (quote same) (quote copy)) (quote guess)) (show-errors? boolean |#t|)) boolean?))]{
This method is an alternative to This method is an alternative to
@method[editor<%> load-file]. Rather than showing errors via the original stdout, it @method[editor<%> load-file]. Rather than showing errors via the original stdout, it
opens a dialog with an error message showing the error. opens a dialog with an error message showing the error.
@ -347,7 +347,7 @@
The class that this mixin produces uses the same initialization The class that this mixin produces uses the same initialization
arguments as its input. arguments as its input.
@defmethod*[#:mode override (((set-filename (name string) (temp? boolean |#f|)) void))]{ @defmethod*[#:mode override (((set-filename (name string) (temp? boolean #f)) void))]{
Updates the filename on each frame displaying this editor, for each Updates the filename on each frame displaying this editor, for each
frame that matches frame that matches
@ -399,7 +399,7 @@
Returns @scheme[#t]. Returns @scheme[#t].
} }
@defmethod*[(((do-autosave) (union |#f| string)))]{ @defmethod*[(((do-autosave) (union #f string)))]{
This method is called to perform the autosaving. This method is called to perform the autosaving.
See also See also
@scheme[autosave:register] @scheme[autosave:register]

View File

@ -7,272 +7,251 @@
@definterface[scheme:sexp-snip<%> ()]{ @definterface[scheme:sexp-snip<%> ()]{
@defmethod*[(((get-saved-snips) (listof snip%)))]{ @defmethod*[(((get-saved-snips) (listof snip%)))]{
This returns the list of snips hidden by the sexp snip. This returns the list of snips hidden by the sexp snip.
} }
} }
@defclass[scheme:sexp-snip% snip% (scheme:sexp-snip<%> readable-snip<%>)]{ @defclass[scheme:sexp-snip% snip% (scheme:sexp-snip<%> readable-snip<%>)]{
@defmethod*[#:mode override
@defmethod*[#:mode override (((get-text (offset number) (num number) (flattened? boolean |#f|)) string))]{ (((get-text (offset number) (num number)
(flattened? boolean #f))
Returns the concatenation of the text for all of the hidden string))]{
snips. Returns the concatenation of the text for all of the hidden snips.
} }
@defmethod*[#:mode override (((copy) (is-a?/c scheme:sexp-snip%)))]{ @defmethod*[#:mode override (((copy) (is-a?/c scheme:sexp-snip%)))]{
Returns a copy of this snip that includes the hidden snips. Returns a copy of this snip that includes the hidden snips.
} }
@defmethod*[#:mode override (((write (stream-out editor-stream-out%)) void))]{ @defmethod*[#:mode override (((write (stream-out editor-stream-out%)) void))]{
Saves the embedded snips Saves the embedded snips
} }
@defmethod*[#:mode override (((draw (dc dc<%>) (x real) (y real) (left real) (top real) (right real) (bottom real) (dx real) (dy real) (draw-caret symbol?)) void))]{ @defmethod*[#:mode override
(((draw (dc dc<%>) (x real) (y real)
(left real) (top real) (right real) (bottom real)
(dx real) (dy real) (draw-caret symbol?))
void))]{
Draws brackets with a centered ellipses between them. Draws brackets with a centered ellipses between them.
} }
@defmethod*[#:mode override (((get-extent (dc (is-a?/c dc<%>)) (x real) (y real) (w boxed |#f|) (h boxed |#f|) (descent boxed |#f|) (space boxed |#f|) (lspace boxed |#f|) (rspace boxed |#f|)) void))]{ @defmethod*[#:mode override
(((get-extent (dc (is-a?/c dc<%>)) (x real) (y real)
(w boxed #f) (h boxed #f)
(descent boxed #f) (space boxed #f)
(lspace boxed #f) (rspace boxed #f))
void))]{
Returns a size corresponding to what this snip draws. Returns a size corresponding to what this snip draws.
} }
} }
@definterface[scheme:text<%> (text:basic<%> mode:host-text<%> color:text<%>)]{ @definterface[scheme:text<%> (text:basic<%> mode:host-text<%> color:text<%>)]{
Texts matching this interface support Racket mode operations. Texts matching this interface support Racket mode operations.
@defmethod*[(((get-limit (start exact-integer)) int))]{ @defmethod*[(((get-limit (start exact-integer)) int))]{
Returns a limit for backward-matching parenthesis starting at
Returns a limit for backward-matching parenthesis starting at position position @scheme[start].
@scheme[start].
} }
@defmethod*[(((balance-parens (key-event (instance key-event%))) void))]{ @defmethod*[(((balance-parens (key-event (instance key-event%))) void))]{
This function is called when the user types a close parenthesis in the This function is called when the user types a close parenthesis in
@scheme[text%]. If the close parenthesis that the user inserted does not match the the @scheme[text%]. If the close parenthesis that the user inserted
corresponding open parenthesis and the @scheme['framework:fixup-parens] preference is does not match the corresponding open parenthesis and the
@scheme[#t] (see @scheme['framework:fixup-parens] preference is @scheme[#t] (see
@scheme[preferences:get]) the correct closing parenthesis is inserted. @scheme[preferences:get]) the correct closing parenthesis is
If the @scheme['framework:paren-match] preference is inserted. If the @scheme['framework:paren-match] preference is
@scheme[#t] (see @scheme[#t] (see @scheme[preferences:get]) the matching open
@scheme[preferences:get]) the matching open parenthesis is flashed. parenthesis is flashed.
} }
@defmethod*[(((tabify-on-return?) boolean?))]{ @defmethod*[(((tabify-on-return?) boolean?))]{
The result of this method is used to determine if the return key The result of this method is used to determine if the return key
automatically tabs over to the correct position. automatically tabs over to the correct position.
Override it to change its behavior. Override it to change its behavior.
} }
@defmethod*[(((tabify (start-pos exact-integer (send this text get-start-position))) void))]{ @defmethod*[(((tabify (start-pos exact-integer
(send this text get-start-position)))
void))]{
Tabs the line containing by @scheme[start-pos] Tabs the line containing by @scheme[start-pos]
} }
@defmethod*[(((tabify-selection (start exact-integer) (end exact-integer)) void))]{ @defmethod*[(((tabify-selection (start exact-integer) (end exact-integer))
void))]{
Sets the tabbing for the lines containing positions @scheme[start] Sets the tabbing for the lines containing positions @scheme[start]
through @scheme[end]. through @scheme[end].
} }
@defmethod*[(((tabify-all) void))]{ @defmethod*[(((tabify-all) void))]{
Tabs all lines. Tabs all lines.
} }
@defmethod*[(((insert-return) void))]{ @defmethod*[(((insert-return) void))]{
Inserts a newline into the buffer. If Inserts a newline into the buffer. If
@method[scheme:text<%> tabify-on-return?] @method[scheme:text<%> tabify-on-return?] returns @scheme[#t], this
returns @scheme[#t], this will tabify the new line. will tabify the new line.
} }
@defmethod*[(((box-comment-out-selection (start-pos (or/c (symbols 'start) exact-integer?)) (end-pos (or/c (symbols 'end) exact-integer?))) void))]{ @defmethod*[(((box-comment-out-selection
This method comments out a selection in the text by putting it into a comment box. (start-pos (or/c (symbols 'start) exact-integer?))
(end-pos (or/c (symbols 'end) exact-integer?)))
void))]{
This method comments out a selection in the text by putting it into
a comment box.
Removes the region from @scheme[start-pos] to @scheme[end-pos] from
the editor and inserts a comment box with that region of text
inserted into the box.
Removes the region from @scheme[start-pos] to @scheme[end-pos] If @scheme[start-pos] is @scheme['start], the starting point of the
from the editor and inserts a comment box with that region selection is used. If @scheme[end-pos] is @scheme['end], the ending
of text inserted into the box. point of the selection is used.
If @scheme[start-pos] is @scheme['start], the starting point of
the selection is used. If @scheme[end-pos] is @scheme['end],
the ending point of the selection is used.
} }
@defmethod*[(((comment-out-selection (start exact-integer) (end exact-integer)) void))]{ @defmethod*[(((comment-out-selection (start exact-integer)
(end exact-integer))
Comments the lines containing positions @scheme[start] through @scheme[end] void))]{
by inserting a semi-colon at the front of each line. Comments the lines containing positions @scheme[start] through
@scheme[end] by inserting a semi-colon at the front of each line.
} }
@defmethod*[(((uncomment-selection (start int) (end int)) void))]{ @defmethod*[(((uncomment-selection (start int) (end int)) void))]{
Uncomments the lines containing positions @scheme[start] through
Uncomments the lines containing positions @scheme[start] through @scheme[end]. @scheme[end].
} }
@defmethod*[(((get-forward-sexp (start exact-integer)) (union |#f| exact-integer)))]{ @defmethod*[(((get-forward-sexp (start exact-integer))
(union #f exact-integer)))]{
Returns the position of the end of next S-expression after position Returns the position of the end of next S-expression after position
@scheme[start], or @scheme[#f] if there is no appropriate answer. @scheme[start], or @scheme[#f] if there is no appropriate answer.
} }
@defmethod*[(((remove-sexp (start exact-integer)) void))]{ @defmethod*[(((remove-sexp (start exact-integer)) void))]{
Forward-deletes the S-expression starting after the position
Forward-deletes the S-expression starting after the position @scheme[start]. @scheme[start].
} }
@defmethod*[(((forward-sexp (start |#t|)) exact-integer))]{ @defmethod*[(((forward-sexp (start |#t|)) exact-integer))]{
Moves forward over the S-expression starting at position
Moves forward over the S-expression starting at position @scheme[start]. @scheme[start].
} }
@defmethod*[(((flash-forward-sexp (start-pos exact-integer)) void))]{ @defmethod*[(((flash-forward-sexp (start-pos exact-integer)) void))]{
Flashes the parenthesis that closes the sexpression at Flashes the parenthesis that closes the sexpression at
@scheme[start-pos]. @scheme[start-pos].
} }
@defmethod*[(((get-backward-sexp (start exact-integer)) (union exact-integer |#f|)))]{ @defmethod*[(((get-backward-sexp (start exact-integer))
(union exact-integer #f)))]{
Returns the position of the start of the S-expression before or Returns the position of the start of the S-expression before or
containing @scheme[start], or @scheme[#f] if there is no appropriate containing @scheme[start], or @scheme[#f] if there is no appropriate
answer. answer.
} }
@defmethod*[(((flash-backward-sexp (start-pos exact-integer)) void))]{ @defmethod*[(((flash-backward-sexp (start-pos exact-integer)) void))]{
Flashes the parenthesis that opens the sexpression at Flashes the parenthesis that opens the sexpression at
@scheme[start-pos]. @scheme[start-pos].
} }
@defmethod*[(((backward-sexp (start-pos exact-integer)) void))]{ @defmethod*[(((backward-sexp (start-pos exact-integer)) void))]{
Move the caret backwards one sexpression Move the caret backwards one sexpression
Moves the caret to the beginning of the sexpression that ends at Moves the caret to the beginning of the sexpression that ends at
@scheme[start-pos]. @scheme[start-pos].
} }
@defmethod*[(((find-up-sexp (start-pos exact-integer)) (union |#f| exact-integer)))]{ @defmethod*[(((find-up-sexp (start-pos exact-integer))
(union #f exact-integer)))]{
Returns the position of the beginning of the next sexpression outside Returns the position of the beginning of the next sexpression
the sexpression that contains @scheme[start-pos]. If there is no such outside the sexpression that contains @scheme[start-pos]. If there
sexpression, it returns @scheme[#f]. is no such sexpression, it returns @scheme[#f].
} }
@defmethod*[(((up-sexp (start exact-integer)) void))]{ @defmethod*[(((up-sexp (start exact-integer)) void))]{
Moves backward out of the S-expression containing the position
Moves backward out of the S-expression containing the position @scheme[start]. @scheme[start].
} }
@defmethod*[(((find-down-sexp (start-pos exact-integer)) (union |#f| exact-integer)))]{ @defmethod*[(((find-down-sexp (start-pos exact-integer))
(union #f exact-integer)))]{
Returns the position of the beginning of the next sexpression inside Returns the position of the beginning of the next sexpression inside
the sexpression that contains @scheme[start-pos]. If there is no such the sexpression that contains @scheme[start-pos]. If there is no
sexpression, it returns @scheme[#f]. such sexpression, it returns @scheme[#f].
} }
@defmethod*[(((down-sexp (start exact-integer)) void))]{ @defmethod*[(((down-sexp (start exact-integer)) void))]{
Moves forward into the next S-expression after the position
Moves forward into the next S-expression after the position @scheme[start]. @scheme[start].
} }
@defmethod*[(((remove-parens-forward (start exact-integer)) void))]{ @defmethod*[(((remove-parens-forward (start exact-integer)) void))]{
Removes the parentheses from the S-expression starting after the Removes the parentheses from the S-expression starting after the
position @scheme[start]. position @scheme[start].
} }
@defmethod*[(((select-forward-sexp (start exact-integer)) |#t|))]{ @defmethod*[(((select-forward-sexp (start exact-integer)) |#t|))]{
Selects the next S-expression, starting at position @scheme[start]. Selects the next S-expression, starting at position @scheme[start].
} }
@defmethod*[(((select-backward-sexp (start exact-integer)) |#t|))]{ @defmethod*[(((select-backward-sexp (start exact-integer)) |#t|))]{
Selects the previous S-expression, starting at position
Selects the previous S-expression, starting at position @scheme[start]. @scheme[start].
} }
@defmethod*[(((select-up-sexp (start exact-integer)) |#t|))]{ @defmethod*[(((select-up-sexp (start exact-integer)) |#t|))]{
Selects the region to the enclosing S-expression, starting at
Selects the region to the enclosing S-expression, starting at position @scheme[start]. position @scheme[start].
} }
@defmethod*[(((select-down-sexp (start exact-integer)) |#t|))]{ @defmethod*[(((select-down-sexp (start exact-integer)) |#t|))]{
Selects the region to the next contained S-expression, starting at
Selects the region to the next contained S-expression, starting at position @scheme[start]. position @scheme[start].
} }
@defmethod*[(((transpose-sexp (start exact-integer)) void))]{ @defmethod*[(((transpose-sexp (start exact-integer)) void))]{
Swaps the S-expression beginning before the position @scheme[start]
Swaps the S-expression beginning before the position @scheme[start] with with the next S-expression following @scheme[start].
the next S-expression following @scheme[start].
} }
@defmethod*[(((mark-matching-parenthesis (pos exact-positive-integer)) void))]{ @defmethod*[(((mark-matching-parenthesis (pos exact-positive-integer))
If the paren after @scheme[pos] is matched, this method void))]{
highlights it and its matching counterpart in dark green. If the paren after @scheme[pos] is matched, this method highlights
it and its matching counterpart in dark green.
} }
@defmethod*[(((get-tab-size) exact-integer))]{ @defmethod*[(((get-tab-size) exact-integer))]{
This method returns the current size of the tabs for scheme mode. This method returns the current size of the tabs for scheme mode.
See also See also @method[scheme:text<%> set-tab-size].
@method[scheme:text<%> set-tab-size].
} }
@defmethod*[(((set-tab-size (new-size exact-integer)) void))]{ @defmethod*[(((set-tab-size (new-size exact-integer)) void))]{
This method sets the tab size for this This method sets the tab size for this text.
text.
} }
@defmethod*[(((introduce-let-ans) void))]{ @defmethod*[(((introduce-let-ans) void))]{
Adds a let around the current s-expression and a printf into the body Adds a let around the current s-expression and a printf into the
of the let. body of the let.
} }
@defmethod*[(((move-sexp-out) void))]{ @defmethod*[(((move-sexp-out) void))]{
Replaces the sexpression surrounding the insertion point with the Replaces the sexpression surrounding the insertion point with the
sexpression following the insertion point. sexpression following the insertion point.
} }
} }
@defmixin[scheme:text-mixin (text:basic<%> mode:host-text<%> color:text<%> text:autocomplete<%>) (scheme:text<%>)]{ @defmixin[scheme:text-mixin
(text:basic<%> mode:host-text<%> color:text<%> text:autocomplete<%>)
(scheme:text<%>)]{
This mixin adds functionality for editing Racket files. This mixin adds functionality for editing Racket files.
The result of this mixin uses the same initialization arguments as the The result of this mixin uses the same initialization arguments as the
mixin's argument. mixin's argument.
@defmethod*[#:mode override (((get-word-at (pos positive-exact-integer)) string))]{
Returns the word just before @scheme[pos], which is then used
as the prefix for auto-completion.
@defmethod*[#:mode override
(((get-word-at (pos positive-exact-integer)) string))]{
Returns the word just before @scheme[pos], which is then used as the
prefix for auto-completion.
} }
@defmethod[#:mode override (get-start-of-line [pos exact-nonnegative-integer?]) exact-nonnegative-integer?]{ @defmethod[#:mode override
Returns the first non-whitespace character in the paragraph containing @racket[pos], (get-start-of-line [pos exact-nonnegative-integer?])
unless the position is already there, in which case it returns the first position of the paragraph. exact-nonnegative-integer?]{
Returns the first non-whitespace character in the paragraph
containing @racket[pos], unless the position is already there, in
which case it returns the first position of the paragraph.
} }
} }
@definterface[scheme:text-mode<%> ()]{ @definterface[scheme:text-mode<%> ()]{
The result of The result of @scheme[scheme:text-mode-mixin] implements this
@scheme[scheme:text-mode-mixin] interface.
implements this interface.
} }
@defmixin[scheme:text-mode-mixin (color:text-mode<%> mode:surrogate-text<%>) (scheme:text-mode<%>)]{ @defmixin[scheme:text-mode-mixin
This mixin adds Racket mode functionality (color:text-mode<%> mode:surrogate-text<%>)
to the mode that it is mixed into. The resulting (scheme:text-mode<%>)]{
mode assumes that it is only set to an editor This mixin adds Racket mode functionality to the mode that it is mixed
that is the result of into. The resulting mode assumes that it is only set to an editor
@scheme[scheme:text-mixin]. that is the result of @scheme[scheme:text-mixin].
@defmethod*[#:mode override (((on-disable-surrogate) void))]{
Removes the scheme keymap (see also @defmethod*[#:mode override (((on-disable-surrogate) void))]{
@scheme[scheme:get-keymap]) and disables any parenthesis Removes the scheme keymap (see also @scheme[scheme:get-keymap]) and
highlighting in the host editor. disables any parenthesis highlighting in the host editor.
} }
@defmethod*[#:mode override (((on-enable-surrogate) void))]{ @defmethod*[#:mode override (((on-enable-surrogate) void))]{
Adds the scheme keymap (see also @scheme[scheme:get-keymap]) and
Adds the scheme keymap (see also enables a parenthesis highlighting in the host editor.
@scheme[scheme:get-keymap]) and enables a parenthesis
highlighting in the host editor.
} }
} }
@defmixin[scheme:set-mode-mixin (scheme:text<%> mode:host-text<%>) ()]{ @defmixin[scheme:set-mode-mixin (scheme:text<%> mode:host-text<%>) ()]{
This mixin creates a new instance of This mixin creates a new instance of @scheme[scheme:text-mode%] and
@scheme[scheme:text-mode%] installs it, by calling its own @method[mode:host-text<%>
and installs it, by calling its own set-surrogate] method with the object.
@method[mode:host-text<%> set-surrogate]
method with the object.
} }
@defclass[scheme:text% (scheme:set-mode-mixin (scheme:text-mixin (text:autocomplete-mixin (mode:host-text-mixin color:text%)))) ()]{} @defclass[scheme:text%
(scheme:set-mode-mixin
(scheme:text-mixin
(text:autocomplete-mixin (mode:host-text-mixin color:text%))))
()]{}
@defclass[scheme:text-mode% (scheme:text-mode-mixin color:text-mode%) ()]{} @defclass[scheme:text-mode% (scheme:text-mode-mixin color:text-mode%) ()]{}
@(include-previously-extracted "main-extracts.ss" #rx"^scheme:") @(include-previously-extracted "main-extracts.ss" #rx"^scheme:")

View File

@ -107,7 +107,7 @@
moved. A snip may refuse to be moved by returning @scheme[#f] from moved. A snip may refuse to be moved by returning @scheme[#f] from
@method[snip% release-from-owner]. @method[snip% release-from-owner].
} }
@defmethod*[(((initial-autowrap-bitmap) (union |#f| (instance bitmap%))))]{ @defmethod*[(((initial-autowrap-bitmap) (union #f (instance bitmap%))))]{
The result of this method is used as the initial autowrap The result of this method is used as the initial autowrap
bitmap. Override this method to change the initial bitmap. Override this method to change the initial
@scheme[bitmap%]. See also @scheme[bitmap%]. See also
@ -488,13 +488,13 @@
The contents of the two The contents of the two
editor are kept in sync, as modifications editor are kept in sync, as modifications
to this object happen. to this object happen.
@defmethod*[(((get-delegate) (union |#f| (instanceof text%))))]{ @defmethod*[(((get-delegate) (union #f (instanceof text%))))]{
The result of this method is the @scheme[text%] object The result of this method is the @scheme[text%] object
that the contents of this editor are being delegated to, or that the contents of this editor are being delegated to, or
@scheme[#f], if there is none. @scheme[#f], if there is none.
} }
@defmethod*[(((set-delegate (delegate (union |#f| (instanceof text%)))) void))]{ @defmethod*[(((set-delegate (delegate (union #f (instanceof text%)))) void))]{
This method sets the current delegate. This method sets the current delegate.
@ -531,7 +531,17 @@
Creates and returns an instance of Creates and returns an instance of
@scheme[text:1-pixel-string-snip%]. @scheme[text:1-pixel-string-snip%].
} }
@defmethod*[#:mode override (((get-extent (dc (instanceof dc<%>)) (x real) (y real) (w (box (union non-negative-real-number |#f|)) |#f|) (h (box (union non-negative-real-number |#f|)) |#f|) (descent (box (union non-negative-real-number |#f|)) |#f|) (space (box (union non-negative-real-number |#f|)) |#f|) (lspace (box (union non-negative-real-number |#f|)) |#f|) (rspace (box (union non-negative-real-number |#f|)) |#f|)) void))]{ @defmethod*[#:mode override
(((get-extent
(dc (instanceof dc<%>))
(x real) (y real)
(w (box (union non-negative-real-number #f)) #f)
(h (box (union non-negative-real-number #f)) #f)
(descent (box (union non-negative-real-number #f)) #f)
(space (box (union non-negative-real-number #f)) #f)
(lspace (box (union non-negative-real-number #f)) #f)
(rspace (box (union non-negative-real-number #f)) #f))
void))]{
Sets the descent, space, lspace, and rspace to zero. Sets Sets the descent, space, lspace, and rspace to zero. Sets
the height to 1. Sets the width to the number of characters the height to 1. Sets the width to the number of characters
@ -573,7 +583,7 @@
Creates and returns an instance of Creates and returns an instance of
@scheme[text:1-pixel-tab-snip%]. @scheme[text:1-pixel-tab-snip%].
} }
@defmethod*[#:mode override (((get-extent (dc (instanceof dc<%>)) (x real) (y real) (w (box (union non-negative-real-number |#f|)) |#f|) (h (box (union non-negative-real-number |#f|)) |#f|) (descent (box (union non-negative-real-number |#f|)) |#f|) (space (box (union non-negative-real-number |#f|)) |#f|) (lspace (box (union non-negative-real-number |#f|)) |#f|) (rspace (box (union non-negative-real-number |#f|)) |#f|)) void))]{ @defmethod*[#:mode override (((get-extent (dc (instanceof dc<%>)) (x real) (y real) (w (box (union non-negative-real-number #f)) #f) (h (box (union non-negative-real-number #f)) #f) (descent (box (union non-negative-real-number #f)) #f) (space (box (union non-negative-real-number #f)) #f) (lspace (box (union non-negative-real-number #f)) #f) (rspace (box (union non-negative-real-number #f)) #f)) void))]{
Sets the descent, space, lspace, and rspace to zero. Sets Sets the descent, space, lspace, and rspace to zero. Sets
the height to 1. Sets the width to the width of tabs as the height to 1. Sets the width to the width of tabs as

View File

@ -12,10 +12,10 @@
@defmodule[compiler/zo-parse] @defmodule[compiler/zo-parse]
@defproc[(zo-parse [in input-port? (current-input-port)]) compilation-top?]{ @defproc[(zo-parse [in input-port? (current-input-port)]) compilation-top?]{
Parses a port (typically the result of opening a @filepath{.zo} file) Parses a port (typically the result of opening a @filepath{.zo} file)
containing bytecode. Beware that the structure types used to represent the containing bytecode. Beware that the structure types used to
bytecode are subject to frequent changes across Racket versons. represent the bytecode are subject to frequent changes across Racket
versons.
The parsed bytecode is returned in a @racket[compilation-top] The parsed bytecode is returned in a @racket[compilation-top]
structure. For a compiled module, the @racket[compilation-top] structure. For a compiled module, the @racket[compilation-top]
@ -37,21 +37,21 @@ stack. For example, execution of an @racket[application] structure
reserves space on the stack for each argument result. Similarly, when reserves space on the stack for each argument result. Similarly, when
a @racket[let-one] structure (for a simple @racket[let]) is executed, a @racket[let-one] structure (for a simple @racket[let]) is executed,
the value obtained by evaluating the right-hand side expression is the value obtained by evaluating the right-hand side expression is
pushed onto the stack, and then the body is evaluated. Local variables pushed onto the stack, and then the body is evaluated. Local
are always accessed as offsets from the current stack position. When a variables are always accessed as offsets from the current stack
function is called, its arguments are passed on the stack. A closure position. When a function is called, its arguments are passed on the
is created by transferring values from the stack to a flat closure stack. A closure is created by transferring values from the stack to
record, and when a closure is applied, the saved values are restored a flat closure record, and when a closure is applied, the saved values
on the stack (though possibly in a different order and likely in a are restored on the stack (though possibly in a different order and
more compact layout than when they were captured). likely in a more compact layout than when they were captured).
When a sub-expression produces a value, then the stack pointer is When a sub-expression produces a value, then the stack pointer is
restored to its location from before evaluating the restored to its location from before evaluating the sub-expression.
sub-expression. For example, evaluating the right-hand size for a For example, evaluating the right-hand size for a @racket[let-one]
@racket[let-one] structure may temporarily push values onto the stack, structure may temporarily push values onto the stack, but the stack is
but the stack is restored to its pre-@racket[let-one] position before restored to its pre-@racket[let-one] position before pushing the
pushing the resulting value and continuing with the body. In addition, resulting value and continuing with the body. In addition, a tail
a tail call resets the stack pointer to the position that follows the call resets the stack pointer to the position that follows the
enclosing function's arguments, and then the tail call continues by enclosing function's arguments, and then the tail call continues by
pushing onto the stack the arguments for the tail-called function. pushing onto the stack the arguments for the tail-called function.
@ -77,23 +77,23 @@ the stack) before evaluating expressions that might use them.}
@defstruct+[zo ()]{ @defstruct+[zo ()]{
A supertype for all zo objects that can appear in compiled code.} A supertype for all zo objects that can appear in compiled code.}
@defstruct+[(compilation-top zo) ([max-let-depth exact-nonnegative-integer?] @defstruct+[(compilation-top zo)
([max-let-depth exact-nonnegative-integer?]
[prefix prefix?] [prefix prefix?]
[code (or/c form? any/c)])]{ [code (or/c form? any/c)])]{
Wraps compiled code. The @racket[max-let-depth] field indicates the Wraps compiled code. The @racket[max-let-depth] field indicates the
maximum stack depth that @racket[code] creates (not counting the maximum stack depth that @racket[code] creates (not counting the
@racket[prefix] array). The @racket[prefix] field describes top-level @racket[prefix] array). The @racket[prefix] field describes top-level
variables, module-level variables, and quoted syntax-objects accessed variables, module-level variables, and quoted syntax-objects accessed
by @racket[code]. The @racket[code] field contains executable code; it by @racket[code]. The @racket[code] field contains executable code;
is normally a @racket[form], but a literal value is represented as it is normally a @racket[form], but a literal value is represented as
itself.} itself.}
@defstruct+[(prefix zo)
@defstruct+[(prefix zo) ([num-lifts exact-nonnegative-integer?] ([num-lifts exact-nonnegative-integer?]
[toplevels (listof (or/c #f symbol? global-bucket? module-variable?))] [toplevels (listof (or/c #f symbol? global-bucket?
module-variable?))]
[stxs (listof stx?)])]{ [stxs (listof stx?)])]{
Represents a ``prefix'' that is pushed onto the stack to initiate Represents a ``prefix'' that is pushed onto the stack to initiate
evaluation. The prefix is an array, where buckets holding the values evaluation. The prefix is an array, where buckets holding the values
for @racket[toplevels] are first, then a bucket for another array if for @racket[toplevels] are first, then a bucket for another array if
@ -101,38 +101,29 @@ for @racket[toplevels] are first, then a bucket for another array if
lifted local procedures. lifted local procedures.
In @racket[toplevels], each element is one of the following: In @racket[toplevels], each element is one of the following:
@itemize[ @itemize[
@item{a @racket[#f], which indicates a dummy variable that is used
@item{a @racket[#f], which indicates a dummy variable that is used to to access the enclosing module/namespace at run time;}
access the enclosing module/namespace at run time;}
@item{a symbol, which is a reference to a variable defined in the @item{a symbol, which is a reference to a variable defined in the
enclosing module;} enclosing module;}
@item{a @racket[global-bucket], which is a top-level variable (appears
@item{a @racket[global-bucket], which is a top-level variable only outside of modules); or}
(appears only outside of modules); or}
@item{a @racket[module-variable], which indicates a variable imported @item{a @racket[module-variable], which indicates a variable imported
from another module.} from another module.}
] ]
The variable buckets and syntax objects that are recorded in a prefix The variable buckets and syntax objects that are recorded in a prefix
are accessed by @racket[toplevel] and @racket[topsyntax] expression are accessed by @racket[toplevel] and @racket[topsyntax] expression
forms.} forms.}
@defstruct+[(global-bucket zo) ([name symbol?])]{ @defstruct+[(global-bucket zo) ([name symbol?])]{
Represents a top-level variable, and used only in a @racket[prefix].} Represents a top-level variable, and used only in a @racket[prefix].}
@defstruct+[(module-variable zo)
@defstruct+[(module-variable zo) ([modidx module-path-index?] ([modidx module-path-index?]
[sym symbol?] [sym symbol?]
[pos exact-integer?] [pos exact-integer?]
[phase (or/c 0 1)])]{ [phase (or/c 0 1)])]{
Represents a top-level variable, and used only in a @racket[prefix]. Represents a top-level variable, and used only in a @racket[prefix].
The @racket[pos] may record the variable's offset within its module, The @racket[pos] may record the variable's offset within its module,
or it can be @racket[-1] if the variable is always located by name. or it can be @racket[-1] if the variable is always located by name.
@ -141,7 +132,6 @@ its module.}
@defstruct+[(stx zo) ([encoded wrapped?])]{ @defstruct+[(stx zo) ([encoded wrapped?])]{
Wraps a syntax object in a @racket[prefix].} Wraps a syntax object in a @racket[prefix].}
@ -149,17 +139,16 @@ Wraps a syntax object in a @racket[prefix].}
@section{Forms} @section{Forms}
@defstruct+[(form zo) ()]{ @defstruct+[(form zo) ()]{
A supertype for all forms that can appear in compiled code (including A supertype for all forms that can appear in compiled code (including
@racket[expr]s), except for literals that are represented as @racket[expr]s), except for literals that are represented as
themselves.} themselves.}
@defstruct+[(def-values form) ([ids (listof toplevel?)] @defstruct+[(def-values form)
([ids (listof toplevel?)]
[rhs (or/c expr? seq? any/c)])]{ [rhs (or/c expr? seq? any/c)])]{
Represents a @racket[define-values] form. Each element of
Represents a @racket[define-values] form. Each element of @racket[ids] @racket[ids] will reference via the prefix either a top-level variable
will reference via the prefix either a top-level variable or a local or a local module variable.
module variable.
After @racket[rhs] is evaluated, the stack is restored to its depth After @racket[rhs] is evaluated, the stack is restored to its depth
from before evaluating @racket[rhs].} from before evaluating @racket[rhs].}
@ -169,31 +158,28 @@ from before evaluating @racket[rhs].}
[rhs (or/c expr? seq? any/c)] [rhs (or/c expr? seq? any/c)]
[prefix prefix?] [prefix prefix?]
[max-let-depth exact-nonnegative-integer?])] [max-let-depth exact-nonnegative-integer?])]
@defstruct+[(def-for-syntax form) ([ids (listof toplevel?)] @defstruct+[(def-for-syntax form)
([ids (listof toplevel?)]
[rhs (or/c expr? seq? any/c)] [rhs (or/c expr? seq? any/c)]
[prefix prefix?] [prefix prefix?]
[max-let-depth exact-nonnegative-integer?])] [max-let-depth exact-nonnegative-integer?])]
)]{ )]{
Represents a @racket[define-syntaxes] or Represents a @racket[define-syntaxes] or
@racket[define-values-for-syntax] form. The @racket[rhs] expression @racket[define-values-for-syntax] form. The @racket[rhs] expression
has its own @racket[prefix], which is pushed before evaluating has its own @racket[prefix], which is pushed before evaluating
@racket[rhs]; the stack is restored after obtaining the result @racket[rhs]; the stack is restored after obtaining the result values.
values. The @racket[max-let-depth] field indicates the maximum size of The @racket[max-let-depth] field indicates the maximum size of the
the stack that will be created by @racket[rhs] (not counting stack that will be created by @racket[rhs] (not counting
@racket[prefix]).} @racket[prefix]).}
@defstruct+[(req form) ([reqs stx?] @defstruct+[(req form) ([reqs stx?]
[dummy toplevel?])]{ [dummy toplevel?])]{
Represents a top-level @racket[#%require] form (but not one in a Represents a top-level @racket[#%require] form (but not one in a
@racket[module] form) with a sequence of specifications @racket[module] form) with a sequence of specifications @racket[reqs].
@racket[reqs]. The @racket[dummy] variable is used to access to the The @racket[dummy] variable is used to access to the top-level
top-level namespace.} namespace.}
@defstruct+[(seq form) ([forms (listof (or/c form? any/c))])]{ @defstruct+[(seq form) ([forms (listof (or/c form? any/c))])]{
Represents a @racket[begin] form, either as an expression or at the Represents a @racket[begin] form, either as an expression or at the
top level (though the latter is more commonly a @racket[splice] form). top level (though the latter is more commonly a @racket[splice] form).
When a @racket[seq] appears in an expression position, its When a @racket[seq] appears in an expression position, its
@ -202,17 +188,15 @@ When a @racket[seq] appears in an expression position, its
After each form in @racket[forms] is evaluated, the stack is restored After each form in @racket[forms] is evaluated, the stack is restored
to its depth from before evaluating the form.} to its depth from before evaluating the form.}
@defstruct+[(splice form) ([forms (listof (or/c form? any/c))])]{ @defstruct+[(splice form) ([forms (listof (or/c form? any/c))])]{
Represents a top-level @racket[begin] form where each evaluation is Represents a top-level @racket[begin] form where each evaluation is
wrapped with a continuation prompt. wrapped with a continuation prompt.
After each form in @racket[forms] is evaluated, the stack is restored After each form in @racket[forms] is evaluated, the stack is restored
to its depth from before evaluating the form.} to its depth from before evaluating the form.}
@defstruct+[(mod form)
@defstruct+[(mod form) ([name symbol?] ([name symbol?]
[srcname symbol?] [srcname symbol?]
[self-modidx module-path-index?] [self-modidx module-path-index?]
[prefix prefix?] [prefix prefix?]
@ -223,17 +207,16 @@ to its depth from before evaluating the form.}
(listof module-path-index?)))] (listof module-path-index?)))]
[body (listof (or/c form? any/c))] [body (listof (or/c form? any/c))]
[syntax-body (listof (or/c def-syntaxes? def-for-syntax?))] [syntax-body (listof (or/c def-syntaxes? def-for-syntax?))]
[unexported (list/c (listof symbol?) (listof symbol?) [unexported (list/c (listof symbol?)
(listof symbol?)
(listof symbol?))] (listof symbol?))]
[max-let-depth exact-nonnegative-integer?] [max-let-depth exact-nonnegative-integer?]
[dummy toplevel?] [dummy toplevel?]
[lang-info (or/c #f (vector/c module-path? symbol? any/c))] [lang-info (or/c #f (vector/c module-path? symbol? any/c))]
[internal-context (or/c #f #t stx?)])]{ [internal-context (or/c #f #t stx?)])]{
Represents a @racket[module] declaration. The @racket[body] forms use Represents a @racket[module] declaration. The @racket[body] forms use
@racket[prefix], rather than any prefix in place for the module @racket[prefix], rather than any prefix in place for the module
declaration itself (and each @racket[syntax-body] has its own declaration itself (and each @racket[syntax-body] has its own prefix).
prefix).
The @racket[provides] and @racket[requires] lists are each an The @racket[provides] and @racket[requires] lists are each an
association list from phases to exports or imports. In the case of association list from phases to exports or imports. In the case of
@ -261,33 +244,33 @@ provides information about the module's implementation language.
The @racket[internal-module-context] value describes the lexical The @racket[internal-module-context] value describes the lexical
context of the body of the module. This value is used by context of the body of the module. This value is used by
@racket[module->namespace]. A @racket[#f] value means that the context @racket[module->namespace]. A @racket[#f] value means that the
is unavailable or empty. A @racket[#t] value means that the context is context is unavailable or empty. A @racket[#t] value means that the
computed by re-importing all required modules. A syntax-object value context is computed by re-importing all required modules. A
embeds an arbitrary lexical context.} syntax-object value embeds an arbitrary lexical context.}
@defstruct+[provided ([name symbol?] @defstruct+[provided
([name symbol?]
[src (or/c module-path-index? #f)] [src (or/c module-path-index? #f)]
[src-name symbol?] [src-name symbol?]
[nom-mod (or/c module-path-index? #f)] [nom-mod (or/c module-path-index? #f)]
[src-phase (or/c 0 1)] [src-phase (or/c 0 1)]
[protected? boolean?] [protected? boolean?]
[insp (or #t #f void?)])]{ [insp (or #t #f void?)])]{
Describes an individual provided identifier within a @racket[mod]
Describes an individual provided identifier within a @racket[mod] instance.} instance.}
@; -------------------------------------------------- @; --------------------------------------------------
@section{Expressions} @section{Expressions}
@defstruct+[(expr form) ()]{ @defstruct+[(expr form) ()]{
A supertype for all expression forms that can appear in compiled code, A supertype for all expression forms that can appear in compiled code,
except for literals that are represented as themselves and some @racket[seq] except for literals that are represented as themselves and some
structures (which can appear as an expression as long as it contains @racket[seq] structures (which can appear as an expression as long as
only other things that can be expressions).} it contains only other things that can be expressions).}
@defstruct+[(lam expr)
@defstruct+[(lam expr) ([name (or/c symbol? vector?)] ([name (or/c symbol? vector?)]
[flags (listof (or/c 'preserves-marks 'is-method 'single-result 'only-rest-arg-not-used))] [flags (listof (or/c 'preserves-marks 'is-method 'single-result 'only-rest-arg-not-used))]
[num-params exact-nonnegative-integer?] [num-params exact-nonnegative-integer?]
[param-types (listof (or/c 'val 'ref 'flonum))] [param-types (listof (or/c 'val 'ref 'flonum))]
@ -296,7 +279,6 @@ only other things that can be expressions).}
[closure-types (listof (or/c 'val/ref 'flonum))] [closure-types (listof (or/c 'val/ref 'flonum))]
[max-let-depth exact-nonnegative-integer?] [max-let-depth exact-nonnegative-integer?]
[body (or/c expr? seq? any/c)])]{ [body (or/c expr? seq? any/c)])]{
Represents a @racket[lambda] form. The @racket[name] field is a name Represents a @racket[lambda] form. The @racket[name] field is a name
for debugging purposes. The @racket[num-params] field indicates the for debugging purposes. The @racket[num-params] field indicates the
number of arguments accepted by the procedure, not counting a rest number of arguments accepted by the procedure, not counting a rest
@ -310,8 +292,8 @@ local variable), or @racket['flonum] for a flonum argument. The
captured when evaluating the @racket[lambda] form to create a closure. captured when evaluating the @racket[lambda] form to create a closure.
The @racket[closure-types] field provides a corresponding list of The @racket[closure-types] field provides a corresponding list of
types, but no distinction is made between normal values and boxed types, but no distinction is made between normal values and boxed
values; also, this information is redundant, since it can be inferred by values; also, this information is redundant, since it can be inferred
the bindings referenced though @racket[closure-map]. by the bindings referenced though @racket[closure-map].
When the function is called, the rest-argument list (if any) is pushed When the function is called, the rest-argument list (if any) is pushed
onto the stack, then the normal arguments in reverse order, then the onto the stack, then the normal arguments in reverse order, then the
@ -324,28 +306,25 @@ created by @racket[body] plus the arguments and closure-captured
values pushed onto the stack. The @racket[body] field is the values pushed onto the stack. The @racket[body] field is the
expression for the closure's body.} expression for the closure's body.}
@defstruct+[(closure expr)
@defstruct+[(closure expr) ([code lam?] [gen-id symbol?])]{ ([code lam?] [gen-id symbol?])]{
A @racket[lambda] form with an empty closure, which is a procedure A @racket[lambda] form with an empty closure, which is a procedure
constant. The procedure constant can appear multiple times in the constant. The procedure constant can appear multiple times in the
graph of expressions for bytecode, and the @racket[code] field can graph of expressions for bytecode, and the @racket[code] field can be
be a cycle for a recursive constant procedure; the @racket[gen-id] a cycle for a recursive constant procedure; the @racket[gen-id] is
is different for each such constant.} different for each such constant.}
@defstruct+[(case-lam expr) ([name (or/c symbol? vector?)] @defstruct+[(case-lam expr) ([name (or/c symbol? vector?)]
[clauses (listof lam?)])]{ [clauses (listof lam?)])]{
Represents a @racket[case-lambda] form as a combination of Represents a @racket[case-lambda] form as a combination of
@racket[lambda] forms that are tried (in order) based on the number of @racket[lambda] forms that are tried (in order) based on the number of
arguments given.} arguments given.}
@defstruct+[(let-one expr)
@defstruct+[(let-one expr) ([rhs (or/c expr? seq? any/c)] ([rhs (or/c expr? seq? any/c)]
[body (or/c expr? seq? any/c)] [body (or/c expr? seq? any/c)]
[flonum? boolean?] [flonum? boolean?]
[unused? boolean?])]{ [unused? boolean?])]{
Pushes an uninitialized slot onto the stack, evaluates @racket[rhs] Pushes an uninitialized slot onto the stack, evaluates @racket[rhs]
and puts its value into the slot, and then runs @racket[body]. If and puts its value into the slot, and then runs @racket[body]. If
@racket[flonum?] is @racket[#t], then @racket[rhs] must produce a @racket[flonum?] is @racket[#t], then @racket[rhs] must produce a
@ -356,25 +335,23 @@ onto the stack (but @racket[rhs] is constrained to produce a single
value). value).
After @racket[rhs] is evaluated, the stack is restored to its depth After @racket[rhs] is evaluated, the stack is restored to its depth
from before evaluating @racket[rhs]. Note that the new slot is created from before evaluating @racket[rhs]. Note that the new slot is
before evaluating @racket[rhs].} created before evaluating @racket[rhs].}
@defstruct+[(let-void expr)
@defstruct+[(let-void expr) ([count exact-nonnegative-integer?] ([count exact-nonnegative-integer?]
[boxes? boolean?] [boxes? boolean?]
[body (or/c expr? seq? any/c)])]{ [body (or/c expr? seq? any/c)])]{
Pushes @racket[count] uninitialized slots onto the stack and then runs Pushes @racket[count] uninitialized slots onto the stack and then runs
@racket[body]. If @racket[boxes?] is @racket[#t], then the slots are @racket[body]. If @racket[boxes?] is @racket[#t], then the slots are
filled with boxes that contain @|undefined-const|.} filled with boxes that contain @|undefined-const|.}
@defstruct+[(install-value expr)
@defstruct+[(install-value expr) ([count exact-nonnegative-integer?] ([count exact-nonnegative-integer?]
[pos exact-nonnegative-integer?] [pos exact-nonnegative-integer?]
[boxes? boolean?] [boxes? boolean?]
[rhs (or/c expr? seq? any/c)] [rhs (or/c expr? seq? any/c)]
[body (or/c expr? seq? any/c)])]{ [body (or/c expr? seq? any/c)])]{
Runs @racket[rhs] to obtain @racket[count] results, and installs them Runs @racket[rhs] to obtain @racket[count] results, and installs them
into existing slots on the stack in order, skipping the first into existing slots on the stack in order, skipping the first
@racket[pos] stack positions. If @racket[boxes?] is @racket[#t], then @racket[pos] stack positions. If @racket[boxes?] is @racket[#t], then
@ -383,24 +360,20 @@ the values are put into existing boxes in the stack slots.
After @racket[rhs] is evaluated, the stack is restored to its depth After @racket[rhs] is evaluated, the stack is restored to its depth
from before evaluating @racket[rhs].} from before evaluating @racket[rhs].}
@defstruct+[(let-rec expr) ([procs (listof lam?)] @defstruct+[(let-rec expr) ([procs (listof lam?)]
[body (or/c expr? seq? any/c)])]{ [body (or/c expr? seq? any/c)])]{
Represents a @racket[letrec] form with @racket[lambda] bindings. It Represents a @racket[letrec] form with @racket[lambda] bindings. It
allocates a closure shell for each @racket[lambda] form in allocates a closure shell for each @racket[lambda] form in
@racket[procs], installs each onto the stack in previously @racket[procs], installs each onto the stack in previously allocated
allocated slots in reverse order (so that the closure shell for the slots in reverse order (so that the closure shell for the last element
last element of @racket[procs] is installed at stack position of @racket[procs] is installed at stack position @racket[0]), fills
@racket[0]), fills out each shell's closure (where each closure out each shell's closure (where each closure normally references some
normally references some other just-created closures, which is other just-created closures, which is possible because the shells have
possible because the shells have been installed on the stack), and been installed on the stack), and then evaluates @racket[body].}
then evaluates @racket[body].}
@defstruct+[(boxenv expr)
@defstruct+[(boxenv expr) ([pos exact-nonnegative-integer?] ([pos exact-nonnegative-integer?]
[body (or/c expr? seq? any/c)])]{ [body (or/c expr? seq? any/c)])]{
Skips @racket[pos] elements of the stack, setting the slot afterward Skips @racket[pos] elements of the stack, setting the slot afterward
to a new box containing the slot's old value, and then runs to a new box containing the slot's old value, and then runs
@racket[body]. This form appears when a @racket[lambda] argument is @racket[body]. This form appears when a @racket[lambda] argument is
@ -408,13 +381,12 @@ mutated using @racket[set!] within its body; calling the function
initially pushes the value directly on the stack, and this form boxes initially pushes the value directly on the stack, and this form boxes
the value so that it can be mutated later.} the value so that it can be mutated later.}
@defstruct+[(localref expr)
@defstruct+[(localref expr) ([unbox? boolean?] ([unbox? boolean?]
[pos exact-nonnegative-integer?] [pos exact-nonnegative-integer?]
[clear? boolean?] [clear? boolean?]
[other-clears? boolean?] [other-clears? boolean?]
[flonum? boolean?])]{ [flonum? boolean?])]{
Represents a local-variable reference; it accesses the value in the Represents a local-variable reference; it accesses the value in the
stack slot after the first @racket[pos] slots. If @racket[unbox?] is stack slot after the first @racket[pos] slots. If @racket[unbox?] is
@racket[#t], the stack slot contains a box, and a value is extracted @racket[#t], the stack slot contains a box, and a value is extracted
@ -425,12 +397,11 @@ that can prevent reclamation of the value as garbage). If
the same stack slot may clear after reading. If @racket[flonum?] is the same stack slot may clear after reading. If @racket[flonum?] is
@racket[#t], the slot holds to a flonum value.} @racket[#t], the slot holds to a flonum value.}
@defstruct+[(toplevel expr)
@defstruct+[(toplevel expr) ([depth exact-nonnegative-integer?] ([depth exact-nonnegative-integer?]
[pos exact-nonnegative-integer?] [pos exact-nonnegative-integer?]
[const? boolean?] [const? boolean?]
[ready? boolean?])]{ [ready? boolean?])]{
Represents a reference to a top-level or imported variable via the Represents a reference to a top-level or imported variable via the
@racket[prefix] array. The @racket[depth] field indicates the number @racket[prefix] array. The @racket[depth] field indicates the number
of stack slots to skip to reach the prefix array, and @racket[pos] is of stack slots to skip to reach the prefix array, and @racket[pos] is
@ -443,42 +414,38 @@ value might change in the future). If @racket[const?] and
@racket[ready?] are both @racket[#f], then a check is needed to @racket[ready?] are both @racket[#f], then a check is needed to
determine whether the variable is defined.} determine whether the variable is defined.}
@defstruct+[(topsyntax expr)
@defstruct+[(topsyntax expr) ([depth exact-nonnegative-integer?] ([depth exact-nonnegative-integer?]
[pos exact-nonnegative-integer?] [pos exact-nonnegative-integer?]
[midpt exact-nonnegative-integer?])]{ [midpt exact-nonnegative-integer?])]{
Represents a reference to a quoted syntax object via the Represents a reference to a quoted syntax object via the
@racket[prefix] array. The @racket[depth] field indicates the number @racket[prefix] array. The @racket[depth] field indicates the number
of stack slots to skip to reach the prefix array, and @racket[pos] is of stack slots to skip to reach the prefix array, and @racket[pos] is
the offset into the array. The @racket[midpt] value is used internally the offset into the array. The @racket[midpt] value is used
for lazy calculation of syntax information.} internally for lazy calculation of syntax information.}
@defstruct+[(application expr)
@defstruct+[(application expr) ([rator (or/c expr? seq? any/c)] ([rator (or/c expr? seq? any/c)]
[rands (listof (or/c expr? seq? any/c))])]{ [rands (listof (or/c expr? seq? any/c))])]{
Represents a function call. The @racket[rator] field is the
Represents a function call. The @racket[rator] field is the expression expression for the function, and @racket[rands] are the argument
for the function, and @racket[rands] are the argument
expressions. Before any of the expressions are evaluated, expressions. Before any of the expressions are evaluated,
@racket[(length rands)] uninitialized stack slots are created (to be @racket[(length rands)] uninitialized stack slots are created (to be
used as temporary space).} used as temporary space).}
@defstruct+[(branch expr)
@defstruct+[(branch expr) ([test (or/c expr? seq? any/c)] ([test (or/c expr? seq? any/c)]
[then (or/c expr? seq? any/c)] [then (or/c expr? seq? any/c)]
[else (or/c expr? seq? any/c)])]{ [else (or/c expr? seq? any/c)])]{
Represents an @racket[if] form. Represents an @racket[if] form.
After @racket[test] is evaluated, the stack is restored to its depth After @racket[test] is evaluated, the stack is restored to its depth
from before evaluating @racket[test].} from before evaluating @racket[test].}
@defstruct+[(with-cont-mark expr)
@defstruct+[(with-cont-mark expr) ([key (or/c expr? seq? any/c)] ([key (or/c expr? seq? any/c)]
[val (or/c expr? seq? any/c)] [val (or/c expr? seq? any/c)]
[body (or/c expr? seq? any/c)])]{ [body (or/c expr? seq? any/c)])]{
Represents a @racket[with-continuation-mark] expression. Represents a @racket[with-continuation-mark] expression.
After each of @racket[key] and @racket[val] is evaluated, the stack is After each of @racket[key] and @racket[val] is evaluated, the stack is
@ -486,22 +453,18 @@ restored to its depth from before evaluating @racket[key] or
@racket[val].} @racket[val].}
@defstruct+[(beg0 expr) ([seq (listof (or/c expr? seq? any/c))])]{ @defstruct+[(beg0 expr) ([seq (listof (or/c expr? seq? any/c))])]{
Represents a @racket[begin0] expression. Represents a @racket[begin0] expression.
After each expression in @racket[seq] is evaluated, the stack is After each expression in @racket[seq] is evaluated, the stack is
restored to its depth from before evaluating the expression.} restored to its depth from before evaluating the expression.}
@defstruct+[(varref expr) ([toplevel toplevel?])]{ @defstruct+[(varref expr) ([toplevel toplevel?])]{
Represents a @racket[#%variable-reference] form.} Represents a @racket[#%variable-reference] form.}
@defstruct+[(assign expr)
@defstruct+[(assign expr) ([id toplevel?] ([id toplevel?]
[rhs (or/c expr? seq? any/c)] [rhs (or/c expr? seq? any/c)]
[undef-ok? boolean?])]{ [undef-ok? boolean?])]{
Represents a @racket[set!] expression that assigns to a top-level or Represents a @racket[set!] expression that assigns to a top-level or
module-level variable. (Assignments to local variables are represented module-level variable. (Assignments to local variables are represented
by @racket[install-value] expressions.) by @racket[install-value] expressions.)
@ -509,62 +472,57 @@ by @racket[install-value] expressions.)
After @racket[rhs] is evaluated, the stack is restored to its depth After @racket[rhs] is evaluated, the stack is restored to its depth
from before evaluating @racket[rhs].} from before evaluating @racket[rhs].}
@defstruct+[(apply-values expr)
@defstruct+[(apply-values expr) ([proc (or/c expr? seq? any/c)] ([proc (or/c expr? seq? any/c)]
[args-expr (or/c expr? seq? any/c)])]{ [args-expr (or/c expr? seq? any/c)])]{
Represents @racket[(call-with-values (lambda () args-expr) proc)], Represents @racket[(call-with-values (lambda () args-expr) proc)],
which is handled specially by the run-time system.} which is handled specially by the run-time system.}
@defstruct+[(primval expr) ([id exact-nonnegative-integer?])]{ @defstruct+[(primval expr)
([id exact-nonnegative-integer?])]{
Represents a direct reference to a variable imported from the run-time Represents a direct reference to a variable imported from the run-time
kernel.} kernel.}
@; -------------------------------------------------- @; --------------------------------------------------
@section{Syntax Objects} @section{Syntax Objects}
@defstruct+[(wrapped zo) ([datum any/c] @defstruct+[(wrapped zo)
([datum any/c]
[wraps (listof wrap?)] [wraps (listof wrap?)]
[certs (or/c certificate? #f)])]{ [certs (or/c certificate? #f)])]{
Represents a syntax object, where @racket[wraps] contain the lexical Represents a syntax object, where @racket[wraps] contain the lexical
information and @racket[certs] is certificate information. When the information and @racket[certs] is certificate information. When the
@racket[datum] part is itself compound, its pieces are wrapped, too.} @racket[datum] part is itself compound, its pieces are wrapped, too.}
@defstruct+[(certificate zo) ()]{ @defstruct+[(certificate zo) ()]{
A supertype for syntax certificates.} A supertype for syntax certificates.}
@defstruct+[(certificate:nest certificate) ([nested (listof number? module-path-index? ...)] @defstruct+[(certificate:nest certificate)
([nested (listof number? module-path-index? ...)]
[map (listof number? module-path-index? ...)])]{ [map (listof number? module-path-index? ...)])]{
A nested certificate.} A nested certificate.}
@defstruct+[(certificate:ref certificate) ([val any/c] @defstruct+[(certificate:ref certificate)
([val any/c]
[map (listof number? module-path-index? ...)])]{ [map (listof number? module-path-index? ...)])]{
A reference certificate.} A reference certificate.}
@defstruct+[(certificate:plain certificate) ([map (listof number? module-path-index? ...)])]{ @defstruct+[(certificate:plain certificate)
([map (listof number? module-path-index? ...)])]{
A plain certificate.} A plain certificate.}
@defstruct+[(wrap zo) ()]{ @defstruct+[(wrap zo) ()]{
A supertype for lexical-information elements.} A supertype for lexical-information elements.}
@defstruct+[(top-level-rename wrap) ([flag boolean?])]{ @defstruct+[(top-level-rename wrap) ([flag boolean?])]{
A top-level renaming.} A top-level renaming.}
@defstruct+[(mark-barrier wrap) ([value symbol?])]{ @defstruct+[(mark-barrier wrap) ([value symbol?])]{
A mark barrier.} A mark barrier.}
@defstruct+[(free-id-info zo) ([path0 module-path-index?] @defstruct+[(free-id-info zo)
([path0 module-path-index?]
[symbol0 symbol?] [symbol0 symbol?]
[path1 module-path-index?] [path1 module-path-index?]
[symbol1 symbol?] [symbol1 symbol?]
@ -574,100 +532,95 @@ A mark barrier.}
[use-current-inspector? boolean?])]{ [use-current-inspector? boolean?])]{
Information about a free identifier.} Information about a free identifier.}
@defstruct+[(lexical-rename wrap) ([has-free-id-info? boolean?] @defstruct+[(lexical-rename wrap)
([has-free-id-info? boolean?]
[bool2 boolean?] [bool2 boolean?]
[alist (listof [alist
(listof
(cons/c symbol? (cons/c symbol?
(or/c (or/c symbol?
symbol? (cons/c symbol?
(cons/c (or/c (cons/c symbol? (or/c symbol? #f))
symbol?
(or/c
(cons/c symbol? (or/c symbol? #f))
free-id-info?)))))])]{ free-id-info?)))))])]{
A local-binding mapping from symbols to binding-set names.} A local-binding mapping from symbols to binding-set names.}
@defstruct+[(phase-shift wrap) ([amt exact-integer?] @defstruct+[(phase-shift wrap)
([amt exact-integer?]
[src module-path-index?] [src module-path-index?]
[dest module-path-index?])]{ [dest module-path-index?])]{
Shifts module bindings later in the wrap set.} Shifts module bindings later in the wrap set.}
@defstruct+[(module-rename wrap) ([phase exact-integer?] @defstruct+[(module-rename wrap)
([phase exact-integer?]
[kind (or/c 'marked 'normal)] [kind (or/c 'marked 'normal)]
[set-id any/c] [set-id any/c]
[unmarshals (listof make-all-from-module?)] [unmarshals (listof make-all-from-module?)]
[renames (listof module-binding?)] [renames (listof module-binding?)]
[mark-renames any/c] [mark-renames any/c]
[plus-kern? boolean?])]{ [plus-kern? boolean?])]{
Represents a set of module and import bindings.} Represents a set of module and import bindings.}
@defstruct+[(all-from-module zo) ([path module-path-index?] @defstruct+[(all-from-module zo)
([path module-path-index?]
[phase (or/c exact-integer? #f)] [phase (or/c exact-integer? #f)]
[src-phase (or/c exact-integer? #f)] [src-phase (or/c exact-integer? #f)]
[exceptions (listof (or/c symbol? number?))] [exceptions (listof (or/c symbol? number?))]
[prefix (or/c symbol? #f)])]{ [prefix (or/c symbol? #f)])]{
Represents a set of simple imports from one module within a Represents a set of simple imports from one module within a
@racket[module-rename].} @racket[module-rename].}
@defstruct+[(module-binding zo) ()]{ @defstruct+[(module-binding zo) ()]{
A supertype for module bindings.} A supertype for module bindings.}
@defstruct+[(simple-module-binding module-binding) ([path module-path-index?])]{ @defstruct+[(simple-module-binding module-binding)
([path module-path-index?])]{
Represents a single identifier import within a
@racket[module-rename].}
Represents a single identifier import within @defstruct+[(phased-module-binding module-binding)
a @racket[module-rename].} ([path module-path-index?]
@defstruct+[(phased-module-binding module-binding) ([path module-path-index?]
[phase exact-integer?] [phase exact-integer?]
[export-name any/c] [export-name any/c]
[nominal-path nominal-path?] [nominal-path nominal-path?]
[nominal-export-name any/c])]{ [nominal-export-name any/c])]{
Represents a single identifier import within a
@racket[module-rename].}
Represents a single identifier import within @defstruct+[(exported-nominal-module-binding module-binding)
a @racket[module-rename].} ([path module-path-index?]
@defstruct+[(exported-nominal-module-binding module-binding) ([path module-path-index?]
[export-name any/c] [export-name any/c]
[nominal-path nominal-path?] [nominal-path nominal-path?]
[nominal-export-name any/c])]{ [nominal-export-name any/c])]{
Represents a single identifier import within a
@racket[module-rename].}
Represents a single identifier import within @defstruct+[(nominal-module-binding module-binding)
a @racket[module-rename].} ([path module-path-index?]
@defstruct+[(nominal-module-binding module-binding) ([path module-path-index?]
[nominal-path nominal-path?])]{ [nominal-path nominal-path?])]{
Represents a single identifier import within a
@racket[module-rename].}
Represents a single identifier import within @defstruct+[(exported-module-binding module-binding)
a @racket[module-rename].} ([path module-path-index?]
@defstruct+[(exported-module-binding module-binding) ([path module-path-index?]
[export-name any/c])]{ [export-name any/c])]{
Represents a single identifier import within a
Represents a single identifier import within @racket[module-rename].}
a @racket[module-rename].}
@defstruct+[(nominal-path zo) ()]{ @defstruct+[(nominal-path zo) ()]{
A supertype for nominal paths.} A supertype for nominal paths.}
@defstruct+[(simple-nominal-path nominal-path) ([value module-path-index?])]{ @defstruct+[(simple-nominal-path nominal-path)
([value module-path-index?])]{
Represents a simple nominal path.} Represents a simple nominal path.}
@defstruct+[(imported-nominal-path nominal-path) ([value module-path-index?] @defstruct+[(imported-nominal-path nominal-path)
([value module-path-index?]
[import-phase exact-integer?])]{ [import-phase exact-integer?])]{
Represents an imported nominal path.} Represents an imported nominal path.}
@defstruct+[(phased-nominal-path nominal-path) ([value module-path-index?] @defstruct+[(phased-nominal-path nominal-path)
([value module-path-index?]
[import-phase (or/c false/c exact-integer?)] [import-phase (or/c false/c exact-integer?)]
[phase exact-integer?])]{ [phase exact-integer?])]{
Represents a phased nominal path.} Represents a phased nominal path.}

File diff suppressed because it is too large Load Diff

View File

@ -713,7 +713,10 @@ that the button is not referenced by this frame and thus can be gc'd.
} }
@defclass[drracket:unit:definitions-text% (drracket:rep:drs-bindings-keymap-mixin (drracket:unit:program-editor-mixin (scheme:text-mixin text:info%))) (drracket:unit:definitions-text<%>)]{ @defclass[drracket:unit:definitions-text%
(drracket:rep:drs-bindings-keymap-mixin
(drracket:unit:program-editor-mixin (scheme:text-mixin text:info%)))
(drracket:unit:definitions-text<%>)]{
@defconstructor[()]{ @defconstructor[()]{
Passes all arguments to @scheme[super-init]. Passes all arguments to @scheme[super-init].