▼ |  | Plugins: Extending Dr Scheme

1 | Implementing Dr Scheme Tools
2 | Adding Languages to Dr Scheme
3 | Creating New Kinds of Dr Scheme Frames
4 | Extending the Existing Dr Scheme Classes
5 | Expanding the User’s Program Text and Breaking
6 | Editor Modes
7 | Language-specific capabilities
8 | drscheme: get/ extend
9 | drscheme: unit
10 | drscheme: language
11 | drscheme: language-configuration
12 | drscheme: debug
13 | drscheme: rep
14 | drscheme: frame
15 | drscheme: help-desk
16 | drscheme: eval
17 | drscheme: modes
| Index

On this page:

drscheme: eval: set-basic-parameters
drscheme: eval: get-snip-classes
drscheme: eval: expand-program
drscheme: eval: traverse-program/ multiple
drscheme: eval: expand-program/ multiple
drscheme: eval: build-user-eventspace/ custodian

Version: 4.1.4
top← prev up next →

### 16`` drscheme:eval

(drscheme:eval:set-basic-parameters snipclasses) → void?
snipclasses : (listof (is-a?/c snip-class%))

sets the parameters that are shared between the repl’s initialization and drscheme:eval:build-user-eventspace/custodian

Specifically, it sets these parameters:

- current-namespace has been set to a newly created empty namespace. This namespace has the following modules copied (with namespace-attach-module) from DrScheme’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.

- The snip-class-list, returned by get-the-snip-class-list is initialized with all of the snipclasses in DrScheme’s eventspace’s snip-class-list.

(drscheme:eval:get-snip-classes)
→ (listof (is-a?/c snip-class%))

Returns a list of all of the snipclasses in the current eventspace.

(drscheme:eval:expand-program |  | input |  |  |  |
|  | language-settings |  |  |  |
|  | eval-compile-time-part? |  |  |  |
|  | init |  |  |  |
|  | kill-termination |  |  |  |
|  | iter) |  | → |  | void?

input : (or/c port? drscheme:language:text/pos?)
language-settings : drscheme:language-configuration:language-settings?
eval-compile-time-part? : boolean?
init : (-> void?)
kill-termination : (-> void?)

iter

:

(-> (or/c eof-object? syntax? (cons/c string? any/c))
(-> any)
any)

Use this function to expand the contents of the definitions window for use with external program processing tools.

This function uses drscheme:eval:build-user-eventspace/custodian to build the user’s environment. The arguments language-settings, init, and kill-termination are passed to drscheme: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.

See also drscheme:eval:expand-program/multiple.

(drscheme:eval:traverse-program/multiple |  | language-settings |
|  | init |
|  | kill-termination) |

→

((or/c port? drscheme:language:text/pos?)
((or/c eof-object? syntax? (cons/c string? any/c))
(-> any)
. -> .
any)
boolean?
. -> .
void?)

language-settings : drscheme:language-configuration:language-settings?
init : (-> void?)
kill-termination : (-> void?)

This function is similar to drscheme:eval:expand-program/multiple The only difference is that it does not expand the program in the editor; instead the processing function can decide how to expand the program.

(drscheme:eval:expand-program/multiple |
|  | language-settings |
|  | eval-compile-time-part? |
|  | init |
|  | kill-termination) |

→

(-> (or/c port? drscheme:language:text/pos?)
(-> (or/c eof-object? syntax? (cons/c string? any/c))
(-> any)
any)
boolean?
void?)

language-settings : drscheme:language-configuration:language-settings?
eval-compile-time-part? : boolean?
init : (-> void?)
kill-termination : (-> void?)

This function is just like drscheme:eval:expand-program except that it is curried and the second application can be used multiple times. Use this function if you want to initialize the user’s thread (and namespace, etc) once but have program text that comes from multiple sources.

The extra boolean argument to the result function determines if drscheme:language:language front-end/complete-program<%> or drscheme:language:language front-end/interaction<%> is called.

(drscheme:eval:build-user-eventspace/custodian |
|  | language-settings |
|  | init |
|  | kill-termination) |

→

eventspace? |  | custodian?

language-settings : drscheme:language-configuration:language-settings?
init : (-> void?)
kill-termination : (-> void?)

This function creates a custodian and an eventspace (on the new custodian) to expand the user’s program. It does not kill this custodian, but it can safely be shutdown (with custodian-shutdown-all) after the expansion is finished.

It initializes the user’s eventspace’s main thread with several parameters:

- current-custodian is set to a new custodian.

- In addition, it calls drscheme:eval:set-basic-parameters.

The language-settings argument is the current language and its settings. See drscheme:language-configuration:make-language-settings for details on that structure.

If the program is associated with a DrScheme frame, get the frame’s language settings from the get-next-settings method of drscheme:unit:definitions-text<%>. Also, the most recently chosen language in the language dialog is saved via the framework’s preferences. Apply preferences:get to drscheme: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 drscheme:eval:build-user-eventspace/custodian was called from.)

top← prev up next →