remove 'create executable' functionality from drracket for all
langauges except The Racket Language and the HtDP and DMdA languages
This commit is contained in:
parent
89373c7850
commit
cce6f28d4d
|
@ -1350,7 +1350,9 @@
|
||||||
|
|
||||||
;; add-deinprogramm-language : (instanceof deinprogramm-language<%>) -> void
|
;; add-deinprogramm-language : (instanceof deinprogramm-language<%>) -> void
|
||||||
(define (add-deinprogramm-language o)
|
(define (add-deinprogramm-language o)
|
||||||
(drscheme:language-configuration:add-language o))
|
(drscheme:language-configuration:add-language
|
||||||
|
o
|
||||||
|
#:allow-executable-creation? #t))
|
||||||
|
|
||||||
(define (phase1) (void))
|
(define (phase1) (void))
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,8 @@
|
||||||
make-language-settings
|
make-language-settings
|
||||||
get-settings-preferences-symbol
|
get-settings-preferences-symbol
|
||||||
language-dialog
|
language-dialog
|
||||||
fill-language-dialog))
|
fill-language-dialog
|
||||||
|
language-allows-executable-creation?))
|
||||||
|
|
||||||
(define-signature drracket:language-configuration/internal^ extends drracket:language-configuration^
|
(define-signature drracket:language-configuration/internal^ extends drracket:language-configuration^
|
||||||
(add-info-specified-languages
|
(add-info-specified-languages
|
||||||
|
|
|
@ -84,26 +84,33 @@
|
||||||
;; all of the languages supported in DrRacket
|
;; all of the languages supported in DrRacket
|
||||||
(define languages null)
|
(define languages null)
|
||||||
|
|
||||||
|
(define languages-allowing-executable-creation '())
|
||||||
|
(define (language-allows-executable-creation? lang)
|
||||||
|
(and (memq lang languages-allowing-executable-creation)
|
||||||
|
#t))
|
||||||
|
|
||||||
;; add-language : (instanceof language%) -> void
|
;; add-language : (instanceof language%) -> void
|
||||||
;; only allows addition on phase2
|
;; only allows addition on phase2
|
||||||
;; effect: updates `languages'
|
;; effect: updates `languages'
|
||||||
(define add-language
|
(define (add-language language [front? #f] #:allow-executable-creation? [allow-executable-creation? #f])
|
||||||
(λ (language [front? #f])
|
|
||||||
|
(drracket:tools:only-in-phase 'drracket:language:add-language 'phase2)
|
||||||
(drracket:tools:only-in-phase 'drracket:language:add-language 'phase2)
|
(for-each
|
||||||
(for-each
|
(λ (i<%>)
|
||||||
(λ (i<%>)
|
(unless (is-a? language i<%>)
|
||||||
(unless (is-a? language i<%>)
|
(error 'drracket:language:add-language
|
||||||
(error 'drracket:language:add-language
|
"expected language ~e to implement ~e, forgot to use `drracket:language:get-default-mixin'?"
|
||||||
"expected language ~e to implement ~e, forgot to use `drracket:language:get-default-mixin'?"
|
language i<%>)))
|
||||||
language i<%>)))
|
(drracket:language:get-language-extensions))
|
||||||
(drracket:language:get-language-extensions))
|
|
||||||
|
(ensure-no-duplicate-numbers language languages)
|
||||||
(ensure-no-duplicate-numbers language languages)
|
(when allow-executable-creation?
|
||||||
(set! languages
|
(set! languages-allowing-executable-creation
|
||||||
(if front?
|
(cons language languages-allowing-executable-creation)))
|
||||||
(cons language languages)
|
(set! languages
|
||||||
(append languages (list language))))))
|
(if front?
|
||||||
|
(cons language languages)
|
||||||
|
(append languages (list language)))))
|
||||||
|
|
||||||
(define (ensure-no-duplicate-numbers l1 languages)
|
(define (ensure-no-duplicate-numbers l1 languages)
|
||||||
(for-each
|
(for-each
|
||||||
|
@ -1956,25 +1963,6 @@
|
||||||
[else (inner
|
[else (inner
|
||||||
(drracket:language:get-capability-default key)
|
(drracket:language:get-capability-default key)
|
||||||
capability-value key)]))
|
capability-value key)]))
|
||||||
(define/override (create-executable setting parent program-filename)
|
|
||||||
(let ([executable-fn
|
|
||||||
(drracket:language:put-executable
|
|
||||||
parent
|
|
||||||
program-filename
|
|
||||||
#t
|
|
||||||
mred-launcher?
|
|
||||||
(if mred-launcher?
|
|
||||||
(string-constant save-a-mred-launcher)
|
|
||||||
(string-constant save-a-mzscheme-launcher)))])
|
|
||||||
(when executable-fn
|
|
||||||
(drracket:language:create-module-based-launcher
|
|
||||||
program-filename
|
|
||||||
executable-fn
|
|
||||||
(get-module)
|
|
||||||
(get-transformer-module)
|
|
||||||
(get-init-code setting)
|
|
||||||
mred-launcher?
|
|
||||||
(use-namespace-require/copy-from-setting? setting)))))
|
|
||||||
(super-new))))]
|
(super-new))))]
|
||||||
[make-simple
|
[make-simple
|
||||||
(λ (module id position numbers mred-launcher? one-line-summary extra-mixin)
|
(λ (module id position numbers mred-launcher? one-line-summary extra-mixin)
|
||||||
|
|
|
@ -647,14 +647,7 @@
|
||||||
(module-based-language-front-end port (get-reader)))
|
(module-based-language-front-end port (get-reader)))
|
||||||
(define/public (front-end/interaction port settings)
|
(define/public (front-end/interaction port settings)
|
||||||
(module-based-language-front-end port (get-reader)))
|
(module-based-language-front-end port (get-reader)))
|
||||||
(define/public (create-executable setting parent program-filename)
|
(define/public (create-executable setting parent program-filename) (void))
|
||||||
(create-module-based-language-executable parent
|
|
||||||
program-filename
|
|
||||||
(get-module)
|
|
||||||
(get-transformer-module)
|
|
||||||
(get-init-code setting)
|
|
||||||
(use-mred-launcher)
|
|
||||||
(use-namespace-require/copy-from-setting? setting)))
|
|
||||||
(define/public (extra-repl-information _1 _2) (void))
|
(define/public (extra-repl-information _1 _2) (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)
|
||||||
|
|
|
@ -80,7 +80,8 @@
|
||||||
(drracket:language:simple-module-based-language->module-based-language-mixin
|
(drracket:language:simple-module-based-language->module-based-language-mixin
|
||||||
drracket:language:simple-module-based-language%)))))
|
drracket:language:simple-module-based-language%)))))
|
||||||
(drracket:language-configuration:add-language
|
(drracket:language-configuration:add-language
|
||||||
(new module-language%)))
|
(new module-language%)
|
||||||
|
#:allow-executable-creation? #t))
|
||||||
|
|
||||||
;; collection-paths : (listof (union 'default string))
|
;; collection-paths : (listof (union 'default string))
|
||||||
;; command-line-args : (vectorof string)
|
;; command-line-args : (vectorof string)
|
||||||
|
|
|
@ -405,29 +405,39 @@ module browser threading seems wrong.
|
||||||
|
|
||||||
;; create-executable : (instanceof drracket:unit:frame<%>) -> void
|
;; create-executable : (instanceof drracket:unit:frame<%>) -> void
|
||||||
(define (create-executable frame)
|
(define (create-executable frame)
|
||||||
(let* ([definitions-text (send frame get-definitions-text)]
|
(define definitions-text (send frame get-definitions-text))
|
||||||
[program-filename (send definitions-text get-filename)])
|
(define program-filename (send definitions-text get-filename))
|
||||||
(cond
|
(define settings (send definitions-text get-next-settings))
|
||||||
[(not program-filename)
|
(cond
|
||||||
(message-box (string-constant create-executable-title)
|
[(not (drracket:language-configuration:language-allows-executable-creation?
|
||||||
(string-constant must-save-before-executable)
|
(drracket:language-configuration:language-settings-language settings)))
|
||||||
frame
|
(message-box (string-constant drscheme)
|
||||||
#:dialog-mixin frame:focus-table-mixin)]
|
(string-append
|
||||||
[else
|
"Executable creation in DrRacket is supported only in the teaching languages and"
|
||||||
(when (or (not (send definitions-text is-modified?))
|
" when the #lang line specifies the language (in “The Racket Language”)"
|
||||||
(gui-utils:get-choice
|
"\n\n"
|
||||||
(string-constant definitions-not-saved)
|
"Consider using the raco exe command-line tool instead.")
|
||||||
(string-constant yes)
|
frame
|
||||||
(string-constant no)
|
#:dialog-mixin frame:focus-table-mixin)]
|
||||||
(string-constant drscheme)
|
[(not program-filename)
|
||||||
#f
|
(message-box (string-constant create-executable-title)
|
||||||
frame))
|
(string-constant must-save-before-executable)
|
||||||
(let ([settings (send definitions-text get-next-settings)])
|
frame
|
||||||
(send (drracket:language-configuration:language-settings-language settings)
|
#:dialog-mixin frame:focus-table-mixin)]
|
||||||
create-executable
|
[else
|
||||||
(drracket:language-configuration:language-settings-settings settings)
|
(when (or (not (send definitions-text is-modified?))
|
||||||
frame
|
(gui-utils:get-choice
|
||||||
program-filename)))])))
|
(string-constant definitions-not-saved)
|
||||||
|
(string-constant yes)
|
||||||
|
(string-constant no)
|
||||||
|
(string-constant drscheme)
|
||||||
|
#f
|
||||||
|
frame))
|
||||||
|
(send (drracket:language-configuration:language-settings-language settings)
|
||||||
|
create-executable
|
||||||
|
(drracket:language-configuration:language-settings-settings settings)
|
||||||
|
frame
|
||||||
|
program-filename))]))
|
||||||
|
|
||||||
(define-values (get-program-editor-mixin add-to-program-editor-mixin)
|
(define-values (get-program-editor-mixin add-to-program-editor-mixin)
|
||||||
(let* ([program-editor-mixin
|
(let* ([program-editor-mixin
|
||||||
|
|
|
@ -1156,14 +1156,23 @@ all of the names in the tools library, for use defining keybindings
|
||||||
|
|
||||||
(proc-doc/names
|
(proc-doc/names
|
||||||
drracket:language-configuration:add-language
|
drracket:language-configuration:add-language
|
||||||
((and/c (is-a?/c drracket:language:language<%>)
|
(->* ((and/c (is-a?/c drracket:language:language<%>)
|
||||||
drracket:language:object/c)
|
drracket:language:object/c))
|
||||||
. -> . void?)
|
(#:allow-executable-creation? boolean?)
|
||||||
(language)
|
void?)
|
||||||
|
((language) ((allow-executable-creation? #f)))
|
||||||
|
|
||||||
@{@phase[2]
|
@{@phase[2]
|
||||||
|
|
||||||
Adds @racket[language] to the languages offerend by DrRacket.})
|
Adds @racket[language] to the languages offered by DrRacket.
|
||||||
|
|
||||||
|
If @racket[allow-executable-creation?] is @racket[#f], then
|
||||||
|
choosing the @onscreen{Create Executable...} menu item results
|
||||||
|
in a dialog box saying that executable creation is disabled.
|
||||||
|
If it is @racket[#t], then the
|
||||||
|
@method[drracket:language:language<%> create-executable]
|
||||||
|
is called when that menu item is selected (after checking
|
||||||
|
to make sure the file is saved).})
|
||||||
|
|
||||||
(proc-doc/names
|
(proc-doc/names
|
||||||
drracket:language-configuration:get-settings-preferences-symbol
|
drracket:language-configuration:get-settings-preferences-symbol
|
||||||
|
|
|
@ -1153,7 +1153,9 @@
|
||||||
|
|
||||||
;; add-htdp-language : (instanceof htdp-language<%>) -> void
|
;; add-htdp-language : (instanceof htdp-language<%>) -> void
|
||||||
(define (add-htdp-language o)
|
(define (add-htdp-language o)
|
||||||
(drscheme:language-configuration:add-language o))
|
(drscheme:language-configuration:add-language
|
||||||
|
o
|
||||||
|
#:allow-executable-creation? #t))
|
||||||
|
|
||||||
(define (phase1) (void))
|
(define (phase1) (void))
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
Version 5.3.2
|
Version 5.3.2
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
. Removed 'Create Executable...' functionality from DrRacket,
|
||||||
|
except in the "The Racket Language" (#lang-based) language
|
||||||
|
and the teaching languages (HtDP and DMdA).
|
||||||
|
|
||||||
. DrRacket is more responsive when editing
|
. DrRacket is more responsive when editing
|
||||||
|
|
||||||
. The language dialog has been revamped to encourage people even
|
. The language dialog has been revamped to encourage people even
|
||||||
|
|
Loading…
Reference in New Issue
Block a user