Skip to content

Commit ae16d6b

Browse files
rfindlermflatt
authored andcommitted
create "drracket-core-lib" and "drracket-core" packages
The "drracket-core-lib" package is a minimal DrRacket implementation. Since it lacks documentation, its dependencies are significantly fewer than for the "drracket" package. The "drracket-core" package adds documentation for DrRacket itself --- which pulls in several other documents as dependencies. The "drracket" package implies the "drracket-core" package and the "drracket-core-lib" package. Much of the work in this commit reduces the dependencies of the "drracket" package. In fact, the dependencies for "drracket-core" are only slightly fewer. Still, the "drracket" package keeps all features as before, even if only a small amount of code is needed to enable some of thome, while "drracket-core" is free to leave out old functionality (such as legacy languages, the ".plt" installer, and separable functionality like the debugger). DrRacket in "drracket-core-lib" still needs to adapt in small ways to having no extra languages installed. Notably, the "Choose Language" dialog should not list "Pretty Big" and "R5RS"when the supporting packages are not included, and the "Add Teachpack..." menu item should go away when there are no languages that support teachpacks.
1 parent 98795b8 commit ae16d6b

File tree

148 files changed

+681
-459
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

148 files changed

+681
-459
lines changed

drracket-core-lib/LICENSE

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
This component of Racket is distributed under the under the Apache 2.0
2+
and MIT licenses. The user can choose the license under which they
3+
will be using the software. There may be other licenses within the
4+
distribution with which the user must also comply.
5+
6+
See the files
7+
https://github.com/racket/racket/blob/master/racket/src/LICENSE-APACHE.txt
8+
and
9+
https://github.com/racket/racket/blob/master/racket/src/LICENSE-MIT.txt
10+
for the full text of the licenses.

drracket-core-lib/browser/info.rkt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#lang info
2+
3+
(define drracket-tools (list (list "tool.rkt")))
4+
(define drracket-tool-names (list "Browser"))
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

drracket-core-lib/drracket/info.rkt

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
#lang info
2+
3+
(define drracket-tools '("syncheck.rkt"))
4+
(define drracket-tool-names '("Check Syntax"))
5+
6+
(define gracket-launcher-names '("DrRacket"))
7+
(define gracket-launcher-libraries '("drracket.rkt"))
8+
9+
(define copy-man-pages '("drracket.1"))
10+
11+
(define binary-keep-files '("private/launcher-mred-bootstrap.rkt"
12+
"private/launcher-mz-bootstrap.rkt"))
13+
14+
;; color-blind friendly palette from Paul Tol:
15+
;; http://www.sron.nl/~pault/
16+
;; using his Scheme for Marking Text colors
17+
(define light-blue #(#x90 #xb3 #xff))
18+
(define light-cyan #(#xcc #xee #xff))
19+
(define light-green #(#xcc #xdd #xaa))
20+
(define light-tan #(#xee #xee #xbb))
21+
(define light-pink #(#xff #xcc #xcc))
22+
(define light-grey #(#xdd #xdd #xdd))
23+
(define dark-blue #(#x22 #x22 #x77))
24+
(define dark-plum #(#x77 #x22 #x77))
25+
(define dark-green #(#x22 #x77 #x22))
26+
(define dark-olive #(#x66 #x66 #x33))
27+
(define dark-red #(#x88 #x11 #x11))
28+
(define sea-green #(#x00 #xb2 #xb2))
29+
(define burnt-orange #(181 102 51))
30+
31+
(define tol-bow-error-color dark-red)
32+
(define tol-bow-constants dark-green)
33+
(define tol-black-on-white-colors
34+
`((framework:paren-match-color ,light-tan)
35+
(framework:syntax-color:scheme:comment ,dark-plum)
36+
(framework:syntax-color:scheme:constant ,tol-bow-constants)
37+
(framework:syntax-color:scheme:error ,tol-bow-error-color)
38+
(framework:syntax-color:scheme:hash-colon-keyword ,tol-bow-constants)
39+
(framework:syntax-color:scheme:keyword ,dark-blue)
40+
(framework:syntax-color:scheme:string ,tol-bow-constants)
41+
(framework:syntax-color:scheme:text ,tol-bow-constants)
42+
(framework:syntax-color:scheme:other ,dark-blue)
43+
(framework:syntax-color:scheme:parenthesis ,sea-green)
44+
(framework:syntax-color:scheme:symbol ,dark-blue)
45+
(drracket:read-eval-print-loop:error-color ,tol-bow-error-color)
46+
(drracket:read-eval-print-loop:out-color ,tol-bow-constants)
47+
(drracket:read-eval-print-loop:value-color ,dark-blue)
48+
(drracket:check-syntax:free-variable ,tol-bow-error-color)
49+
(drracket:check-syntax:set!d ,tol-bow-error-color)
50+
(drracket:check-syntax:unused-require ,tol-bow-error-color)
51+
(drracket:syncheck:matching-identifiers ,light-green)
52+
(drracket:syncheck:unused-identifier ,light-pink)
53+
(drracket:syncheck:document-identifier ,light-green)
54+
(drracket:syncheck:var-arrow ,sea-green)
55+
(drracket:syncheck:template-arrow ,dark-plum)
56+
(drracket:syncheck:tail-arrow ,dark-red)))
57+
58+
(define tol-wob-constants light-blue)
59+
(define tol-wob-error light-pink)
60+
(define tol-white-on-black-colors
61+
`((framework:paren-match-color ,dark-blue)
62+
(framework:syntax-color:scheme:comment ,light-green)
63+
(framework:syntax-color:scheme:constant ,tol-wob-constants)
64+
(framework:syntax-color:scheme:error ,tol-wob-error)
65+
(framework:syntax-color:scheme:hash-colon-keyword ,tol-wob-constants)
66+
(framework:syntax-color:scheme:keyword ,light-blue)
67+
(framework:syntax-color:scheme:string ,tol-wob-constants)
68+
(framework:syntax-color:scheme:text ,tol-wob-constants)
69+
(framework:syntax-color:scheme:other ,light-blue)
70+
(framework:syntax-color:scheme:parenthesis ,sea-green)
71+
(framework:syntax-color:scheme:symbol ,light-blue)
72+
(drracket:read-eval-print-loop:error-color ,tol-wob-error)
73+
(drracket:read-eval-print-loop:out-color ,dark-green)
74+
(drracket:read-eval-print-loop:value-color ,light-blue)
75+
(drracket:check-syntax:free-variable ,tol-wob-error)
76+
(drracket:check-syntax:set!d ,tol-wob-error)
77+
(drracket:check-syntax:unused-require ,tol-wob-error)
78+
(drracket:syncheck:matching-identifiers ,dark-green)
79+
(drracket:syncheck:unused-identifier ,dark-red)
80+
(drracket:syncheck:document-identifier ,dark-green)
81+
(drracket:syncheck:var-arrow ,light-pink)
82+
(drracket:syncheck:template-arrow ,burnt-orange)
83+
(drracket:syncheck:tail-arrow ,light-green)))
84+
85+
(define |Tol's Color-blind-safe| "Tol's Color-blind-safe")
86+
(define |Tol's White on Black| "Tol's White on Black")
87+
88+
(define framework:color-schemes
89+
(list
90+
(hash
91+
'name 'modern-color-scheme
92+
'colors
93+
'((framework:syntax-color:scheme:string #(211 72 255))
94+
(framework:syntax-color:scheme:constant #(211 72 255))
95+
(framework:syntax-color:scheme:comment #(194 158 31))
96+
(framework:syntax-color:scheme:parenthesis #(0 150 255))))
97+
(hash
98+
'name |Tol's Color-blind-safe|
99+
'inverted-base-name |Tol's White on Black|
100+
'colors tol-black-on-white-colors)
101+
(hash
102+
'name |Tol's White on Black|
103+
'inverted-base-name |Tol's Color-blind-safe|
104+
'white-on-black-base? #t
105+
'colors tol-white-on-black-colors)))
File renamed without changes.

drracket/drracket/private/app.rkt renamed to drracket-core-lib/drracket/private/app.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
browser/external
88
setup/getinfo
99
drracket/private/drsig
10-
lang/htdp-langs-save-file-prefix
1110
"../acks.rkt"
11+
"local-member-names.rkt"
1212
"frame-icon.rkt"
1313
pict/snip pict)
1414

drracket/drracket/private/frame.rkt renamed to drracket-core-lib/drracket/private/frame.rkt

Lines changed: 2 additions & 207 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,6 @@
317317
framework/private/srcloc-panel
318318
net/url
319319
net/head
320-
setup/plt-installer
321-
help/bug-report
322320
setup/unpack
323321
mrlib/terminal
324322
browser/external
@@ -393,12 +391,7 @@
393391
(define/override (file-menu:create-open?) #t)
394392
(define/override (file-menu:create-open-recent?) #t)
395393

396-
(define/override (file-menu:between-open-and-revert file-menu)
397-
(new menu-item%
398-
[label (string-constant install-plt-file-menu-item...)]
399-
[parent file-menu]
400-
[callback (λ (item evt)
401-
(install-plt-file this))])
394+
(define/override (file-menu:between-open-and-revert file-menu)
402395
(new menu-item%
403396
[label (string-constant install-pkg-menu-item...)]
404397
[parent file-menu]
@@ -526,205 +519,7 @@
526519
'drracket:user-defined-keybindings
527520
(remove item
528521
(preferences:get 'drracket:user-defined-keybindings))))
529-
530-
;; install-plt-file : (union #f dialog% frame%) -> void
531-
;; asks the user for a .plt file, either from the web or from
532-
;; a file on the disk and installs it.
533-
(define (install-plt-file parent)
534-
(define pref (preferences:get 'drracket:install-plt-dialog))
535-
(define dialog
536-
(new dialog% [parent parent]
537-
[label (string-constant install-plt-file-dialog-title)]
538-
[alignment '(left center)]))
539-
(define tab-panel
540-
(new tab-panel% [parent dialog]
541-
[callback (λ (x y) (update-panels))]
542-
[choices (list (string-constant install-plt-web-tab)
543-
(string-constant install-plt-file-tab))]))
544-
(define outer-swapping-panel
545-
(new-horizontal-panel% [parent tab-panel]
546-
[stretchable-height #f]))
547-
(define spacing-panel
548-
(new-horizontal-panel% [parent outer-swapping-panel]
549-
[stretchable-width #f]
550-
[min-width 20]))
551-
(define swapping-panel
552-
(new panel:single% [parent outer-swapping-panel]
553-
[alignment '(left center)]
554-
[stretchable-width #t] [stretchable-height #f]))
555-
(define file-panel
556-
(new-horizontal-panel% [parent swapping-panel]
557-
[stretchable-width #t] [stretchable-height #f]))
558-
(define url-panel
559-
(new-horizontal-panel% [parent swapping-panel]
560-
[stretchable-height #f]))
561-
(define button-panel
562-
(new-horizontal-panel% [parent dialog]
563-
[stretchable-height #f] [alignment '(right center)]))
564-
(define file-text-field
565-
(keymap:call/text-keymap-initializer
566-
(λ ()
567-
(new text-field% [parent file-panel]
568-
[callback void] [min-width 300] [stretchable-width #t]
569-
[init-value (caddr pref)]
570-
[label (string-constant install-plt-filename)]))))
571-
(define file-button
572-
(new button% [parent file-panel]
573-
[callback (λ (x y) (browse))]
574-
[label (string-constant browse...)]))
575-
(define url-text-field
576-
(keymap:call/text-keymap-initializer
577-
(λ ()
578-
(new text-field% [parent url-panel]
579-
[min-width 300] [stretchable-width #t] [callback void]
580-
[init-value (cadr pref)]
581-
[label (string-constant install-plt-url)]))))
582-
(define-values (ok-button cancel-button)
583-
(gui-utils:ok/cancel-buttons
584-
button-panel
585-
(λ (x y) (set! cancel? #f) (send dialog show #f))
586-
(λ (x y) (send dialog show #f))))
587-
;; browse : -> void
588-
;; gets the name of a file from the user and updates file-text-field
589-
(define (browse)
590-
(let ([filename (parameterize ([finder:default-extension "plt"]
591-
[finder:default-filters
592-
(if (eq? (system-type) 'macosx)
593-
(finder:default-filters)
594-
'(("PLT Files" "*.plt")
595-
("Any" "*.*")))])
596-
(finder:get-file #f "" #f "" dialog))])
597-
(when filename
598-
(send file-text-field set-value (path->string filename)))))
599-
;; from-web? : -> boolean
600-
;; returns #t if the user has selected a web address
601-
(define (from-web?)
602-
(zero? (send tab-panel get-selection)))
603-
(define cancel? #t)
604-
(define (update-panels)
605-
(define w? (from-web?))
606-
(define t (if w? url-text-field file-text-field))
607-
(send swapping-panel active-child (if w? url-panel file-panel))
608-
(send t focus)
609-
(send (send t get-editor) set-position
610-
0 (string-length (send t get-value))))
611-
;; initialize
612-
(send tab-panel set-selection (if (car pref) 0 1))
613-
(update-panels)
614-
(send dialog show #t)
615-
(preferences:set 'drracket:install-plt-dialog
616-
(list (from-web?)
617-
(send url-text-field get-value)
618-
(send file-text-field get-value)))
619-
(cond
620-
[cancel? (void)]
621-
[(from-web?)
622-
(install-plt-from-url
623-
(let* ([url (send url-text-field get-value)]
624-
;; trim whitespaces
625-
[url (regexp-replace #rx"^ +" url "")]
626-
[url (regexp-replace #rx" +$" url "")])
627-
(if (regexp-match? #rx"^(?:[^/:]*://|$)" url)
628-
url
629-
(string-append "http://" url)))
630-
parent)]
631-
[else (parameterize ([error-display-handler
632-
drracket:init:original-error-display-handler])
633-
(run-installer
634-
(string->path (send file-text-field get-value))))]))
635-
636-
;; install-plt-from-url : string (union #f dialog%) -> void
637-
;; downloads and installs a .plt file from the given url
638-
(define (install-plt-from-url s-url parent)
639-
(define url (string->url s-url))
640-
(define-values (port header)
641-
(with-handlers ([exn:fail? (λ (x) (values #f x))])
642-
(get-pure-port/headers url #:redirections 5)))
643-
(cond
644-
[port
645-
(define size
646-
(let* ([content-header (extract-field "content-length" header)]
647-
[m (and content-header
648-
(regexp-match "[0-9]+" content-header))])
649-
(and m (string->number (car m)))))
650-
(define tmp-filename (make-temporary-file "tmp~a.plt"))
651-
(define d (make-object dialog% (string-constant downloading) parent))
652-
(define message (make-object message% (string-constant downloading-file...) d))
653-
(define gauge (and size
654-
(make-object gauge% #f 100 d)))
655-
(define exn #f)
656-
; Semaphores to avoid race conditions:
657-
(define wait-to-start (make-semaphore 0))
658-
(define wait-to-break (make-semaphore 0))
659-
; Thread to perform the download:
660-
(define t
661-
(thread
662-
(λ ()
663-
(semaphore-wait wait-to-start)
664-
(with-handlers ([exn:fail?
665-
(λ (x)
666-
(set! exn x))]
667-
[exn:break? ; throw away break exceptions
668-
void])
669-
(semaphore-post wait-to-break)
670-
(with-output-to-file tmp-filename
671-
(λ ()
672-
(let loop ([total 0])
673-
(when gauge
674-
(send gauge set-value
675-
(inexact->exact
676-
(floor (* 100 (/ total size))))))
677-
(define s (read-string 1024 port))
678-
(unless (eof-object? s)
679-
(display s)
680-
(loop (+ total (string-length s))))))
681-
#:mode 'binary #:exists 'truncate))
682-
(send d show #f))))
683-
(send d center)
684-
(make-object button% (string-constant &stop)
685-
d
686-
(λ (b e)
687-
(semaphore-wait wait-to-break)
688-
(set! tmp-filename #f)
689-
(send d show #f)
690-
(break-thread t)))
691-
; Let thread run only after the dialog is shown
692-
(queue-callback (λ () (semaphore-post wait-to-start)))
693-
(send d show #t)
694-
(when exn (raise exn))
695-
(define unpack-err (open-output-string))
696-
(cond
697-
[(with-handlers ((exn:fail? values))
698-
(parameterize ([error-display-handler drracket:init:original-error-display-handler]
699-
[current-error-port unpack-err])
700-
(fold-plt-archive tmp-filename void void void void void))
701-
#f)
702-
=>
703-
(λ (exn)
704-
(delete-file tmp-filename)
705-
(message-box (string-constant drscheme)
706-
(string-append
707-
(string-constant install-plt-error-header)
708-
"\n\n"
709-
(exn-message exn)
710-
"\n\n"
711-
(get-output-string unpack-err))
712-
#:dialog-mixin frame:focus-table-mixin))]
713-
[else
714-
(parameterize ([error-display-handler drracket:init:original-error-display-handler])
715-
(run-installer tmp-filename
716-
(λ ()
717-
(delete-file tmp-filename))))])]
718-
[else
719-
(define exn header)
720-
(define sp (open-output-string))
721-
(parameterize ([current-error-port sp])
722-
(drracket:init:original-error-display-handler (exn-message exn) exn))
723-
(message-box (string-constant drracket)
724-
(string-append
725-
(string-constant install-plt-error-downloading)
726-
(get-output-string sp)))]))
727-
522+
728523
(define keybindings-frame%
729524
(class frame%
730525
(init-field bindings)

drracket/drracket/private/help-desk.rkt renamed to drracket-core-lib/drracket/private/help-desk.rkt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
setup/dirs
99
setup/materialize-user-docs
1010
help/search
11-
help/private/buginfo
1211
drracket/private/drsig
1312
string-constants
1413
setup/dirs
@@ -35,8 +34,6 @@
3534
(send language get-language-position)
3635
(send language marshall-settings settings)))))
3736

38-
(set-bug-report-info! "Computer Language" get-computer-language-info)
39-
4037
(define lang-message%
4138
(class canvas%
4239
(init-field button-release font)

0 commit comments

Comments
 (0)