17 drracket:eval
(drracket:eval:set-basic-parameters snipclasses) → void? |
snipclasses : (listof (is-a?/c snip-class%)) |
- current-namespace has been set to a newly created empty namespace. This namespace has the following modules copied (with namespace-attach-module) from DrRacket’s original namespace:
'mzscheme
'mred
read-curly-brace-as-paren is #t;
read-square-bracket-as-paren is #t;
error-print-width is set to 250;
current-ps-setup is set to a newly created ps-setup% object;
the exit-handler is set to a parameter that kills the user’s custodian; and
the snip-class-list, returned by get-the-snip-class-list is initialized with all of the snipclasses in DrRacket’s eventspace’s snip-class-list.
| ||||||||||||||||||||||||||||||||||||||||||
input : (or/c port? drracket:language:text/pos?) | ||||||||||||||||||||||||||||||||||||||||||
language-settings : drracket:language-configuration:language-settings? | ||||||||||||||||||||||||||||||||||||||||||
eval-compile-time-part? : boolean? | ||||||||||||||||||||||||||||||||||||||||||
init : (-> void?) | ||||||||||||||||||||||||||||||||||||||||||
kill-termination : (-> void?) | ||||||||||||||||||||||||||||||||||||||||||
|
This function uses drracket:eval:build-user-eventspace/custodian to build the user’s environment. The arguments language-settings, init, and kill-termination are passed to drracket:eval:build-user-eventspace/custodian.
The input argument specifies the source of the program.
The eval-compile-time-part? argument indicates if expand is called or if expand-top-level-with-compile-time-evals is called when the program is expanded. Roughly speaking, if your tool will evaluate each expression itself by calling eval then pass #f. Otherwise, if your tool just processes the expanded program, be sure to pass #t.
This function calls front-end/complete-program to expand the program. Unlike when the Run is clicked, however, it does not call front-end/finished-complete-program.
The first argument to iter is the expanded program (represented as syntax) or eof. The iter argument is called for each expression in the expanded program and once more with eof, unless an error is raised during expansion. It is called from the user’s thread. If an exception is raised during expansion of the user’s program, iter is not called. Consider setting the exception-handler during init to handle this situation.
The second argument to iter is a thunk that continues expanding the rest of the contents of the definitions window. If the first argument to iter was eof, this argument is just the primitive void.
| ||||||||||||
| ||||||||||||
language-settings : drracket:language-configuration:language-settings? | ||||||||||||
init : (-> void?) | ||||||||||||
kill-termination : (-> void?) |
| ||||||||||||||||||||
| ||||||||||||||||||||
language-settings : drracket:language-configuration:language-settings? | ||||||||||||||||||||
eval-compile-time-part? : boolean? | ||||||||||||||||||||
init : (-> void?) | ||||||||||||||||||||
kill-termination : (-> void?) |
| ||||||||||||||||
| ||||||||||||||||
language-settings : drracket:language-configuration:language-settings? | ||||||||||||||||
init : (-> void?) | ||||||||||||||||
kill-termination : (-> void?) |
current-custodian is set to a new custodian.
In addition, it calls drracket:eval:set-basic-parameters.
The language-settings argument is the current language and its settings. See drracket:language-configuration:make-language-settings for details on that structure.
If the program is associated with a DrRacket frame, get the frame’s language settings from the get-next-settings method of drracket:unit:definitions-text<%>. Also, the most recently chosen language in the language dialog is saved via the framework’s preferences. Apply preferences:get to drracket:language-configuration:get-settings-preferences-symbol for that language-settings.
The init argument is called after the user’s parameters are all set, but before the program is run. It is called on the user’s thread. The current-directory and current-load-relative-directory parameters are not set, so if there are appropriate directories, the init argument is a good place to set them.
The kill-termination argument is called when the main thread of the eventspace terminates, no matter if the custodian was shutdown, or the thread was killed. This procedure is also called when the thread terminates normally. This procedure is called from a new, dedicated thread (i. e., not the thread created to do the expansion, nor the thread that drracket:eval:build-user-eventspace/custodian was called from.)