From b05767ab1372d4e35b53c4aff5fb9656a67c00e5 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Fri, 5 Apr 2013 22:37:44 -0500 Subject: [PATCH] add support for firing up a REPL to poke at DrRacket --- collects/drracket/drracket.rkt | 13 +++++++++++++ collects/scribblings/drracket/extending.scrbl | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/collects/drracket/drracket.rkt b/collects/drracket/drracket.rkt index 3c1018eb6c..f11634b1c4 100644 --- a/collects/drracket/drracket.rkt +++ b/collects/drracket/drracket.rkt @@ -6,6 +6,8 @@ (define first-parallel? (getenv "PLTDRPAR")) +(define repl (getenv "PLTDRREPL")) + (define install-cm? (and (not debugging?) (getenv "PLTDRCM"))) @@ -149,3 +151,14 @@ ((dynamic-require 'drracket/private/profile-drs 'start-profile) orig-cust))) (dynamic-require 'drracket/private/drracket-normal #f) + +(when repl + (printf "Welcome to DrRacket, v~a\n" (version)) + (namespace-require 'racket) + (namespace-require 'drracket/tool-lib) + (unless (equal? repl "-q") + (define init-file (find-system-path 'init-file)) + (when (file-exists? init-file) + (load init-file))) + (void (thread read-eval-print-loop))) + diff --git a/collects/scribblings/drracket/extending.scrbl b/collects/scribblings/drracket/extending.scrbl index 0070434833..6fbd48509f 100644 --- a/collects/scribblings/drracket/extending.scrbl +++ b/collects/scribblings/drracket/extending.scrbl @@ -120,6 +120,19 @@ Several environment variables can affect DrRacket's behavior: those collections are loaded (The contents of the environment variable are @racket[read] and expected to be a single symbol or a list of symbols).} + + @item{@indexed-envvar{PLTDRREPL} : When this environment variable is + set, DrRacket starts a read-eval-print loop with all of + the forms and functions from the @racketmodname[racket] + module and those described in @other-doc['(lib "scribblings/tools/tools.scrbl")]. + + If it is not set to @litchar{-q}, then @racket[(find-system-path 'init-file)] + is loaded as well. + + A new thread is created to evaluate REPL expressions, so be + sure to use @racket[queue-callback] to evaluate expressions + that mutate the GUI (to avoid race-conditions). + } @item{@indexed-envvar{PLTDRCM} : When this environment variable is set, DrRacket installs the compilation manager before starting