added front-end/finished-complete-program

svn: r11084
This commit is contained in:
Robby Findler 2008-08-05 17:28:16 +00:00
parent 4b06568982
commit 7d8d1bc37b
5 changed files with 30 additions and 5 deletions

View File

@ -49,6 +49,7 @@
(define lang%
(class* object% (drscheme:language:language<%>)
(define/public (front-end/finished-complete-program settings) (void))
(define/public (extra-repl-information settings port) (void))
(define/public (get-reader-module) #f)
(define/public (get-metadata a b) #f)

View File

@ -42,6 +42,7 @@
default-settings?
front-end/complete-program
front-end/finished-complete-program
front-end/interaction
config-panel
on-execute
@ -480,6 +481,9 @@
(inherit get-module get-transformer-module use-namespace-require/copy-from-setting?
get-init-code use-mred-launcher get-reader)
(define/public (front-end/finished-complete-program settings) (void))
(define/public (module-based-language->language-mixin settings) (void))
(define/pubment (capability-value s)
(inner (get-capability-default s) capability-value s))

View File

@ -1103,6 +1103,8 @@ TODO
(update-running #f)
(cleanup)
(flush-output (get-value-port))
(when complete-program?
(send lang front-end/finished-complete-program settings))
(queue-system-callback/sync
(get-user-thread)
(λ () ; =Kernel=, =Handler=

View File

@ -430,6 +430,7 @@
(define (java-lang-mixin level name number one-line dyn? manual-dirname)
(when dyn? (dynamic? #t))
(class* object% (drscheme:language:language<%>)
(define/public (front-end/finished-complete-program settings) (void))
(define/public (extra-repl-information settings port) (void))
(define/public (get-reader-module) #f)
(define/public (get-metadata a b) #f)

View File

@ -682,19 +682,36 @@ or
and the use of the expanded code dictates which applies.
See also
@method[drscheme:language:language<%> front-end/interaction].
@method[drscheme:language:language<%> front-end/interaction]
and
@method[drscheme:language:language<%> front-end/finished-complete-program].
}
@defmethod[(front-end/finished-complete-program [settings settings]) any]{
This method is called when @onscreen{Run} is clicked, but only after
@method[drscheme:language:language<%> front-end/complete-program]
has been called. Specifically,
@method[drscheme:language:language<%> front-end/complete-program] is
first called to get a thunk that reads from the program. That thunk
is called some number of times, eventually returning @scheme[eof-object],
or raising an exception. Then, this method is called.
This method is called on the user's main eventspace thread, and without
a prompt or other control delimiter. It must return without raising an
error, or else the DrScheme window will be wedged.
}
@defmethod[(front-end/interaction [port input-port]
[settings settings])
(-> (or/c sexp/c syntax? eof-object?))]{
This method is just like
@method[drscheme:language:language<%> front-end/complete-program] except that it is called with program fragments,
for example the expressions entered in the interactions
window. It is also used in other contexts by
tools to expand single expressions.
@method[drscheme:language:language<%> front-end/complete-program]
except that it is called with program fragments, for example the
expressions entered in the interactions window. It is also used in
other contexts by tools to expand single expressions.
See also
@method[drscheme:langauge:language<%> front-end/finished-complete-program].
}
@defmethod[(get-comment-character)