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

View File

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

View File

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

View File

@ -430,6 +430,7 @@
(define (java-lang-mixin level name number one-line dyn? manual-dirname) (define (java-lang-mixin level name number one-line dyn? manual-dirname)
(when dyn? (dynamic? #t)) (when dyn? (dynamic? #t))
(class* object% (drscheme:language:language<%>) (class* object% (drscheme:language:language<%>)
(define/public (front-end/finished-complete-program settings) (void))
(define/public (extra-repl-information settings port) (void)) (define/public (extra-repl-information settings port) (void))
(define/public (get-reader-module) #f) (define/public (get-reader-module) #f)
(define/public (get-metadata a b) #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. and the use of the expanded code dictates which applies.
See also 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] @defmethod[(front-end/interaction [port input-port]
[settings settings]) [settings settings])
(-> (or/c sexp/c syntax? eof-object?))]{ (-> (or/c sexp/c syntax? eof-object?))]{
This method is just like This method is just like
@method[drscheme:language:language<%> front-end/complete-program] except that it is called with program fragments, @method[drscheme:language:language<%> front-end/complete-program]
for example the expressions entered in the interactions except that it is called with program fragments, for example the
window. It is also used in other contexts by expressions entered in the interactions window. It is also used in
tools to expand single expressions. other contexts by tools to expand single expressions.
See also
@method[drscheme:langauge:language<%> front-end/finished-complete-program].
} }
@defmethod[(get-comment-character) @defmethod[(get-comment-character)