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
|
||||
(define (add-deinprogramm-language o)
|
||||
(drscheme:language-configuration:add-language o))
|
||||
(drscheme:language-configuration:add-language
|
||||
o
|
||||
#:allow-executable-creation? #t))
|
||||
|
||||
(define (phase1) (void))
|
||||
|
||||
|
|
|
@ -147,7 +147,8 @@
|
|||
make-language-settings
|
||||
get-settings-preferences-symbol
|
||||
language-dialog
|
||||
fill-language-dialog))
|
||||
fill-language-dialog
|
||||
language-allows-executable-creation?))
|
||||
|
||||
(define-signature drracket:language-configuration/internal^ extends drracket:language-configuration^
|
||||
(add-info-specified-languages
|
||||
|
|
|
@ -84,11 +84,15 @@
|
|||
;; all of the languages supported in DrRacket
|
||||
(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
|
||||
;; only allows addition on phase2
|
||||
;; effect: updates `languages'
|
||||
(define add-language
|
||||
(λ (language [front? #f])
|
||||
(define (add-language language [front? #f] #:allow-executable-creation? [allow-executable-creation? #f])
|
||||
|
||||
(drracket:tools:only-in-phase 'drracket:language:add-language 'phase2)
|
||||
(for-each
|
||||
|
@ -100,10 +104,13 @@
|
|||
(drracket:language:get-language-extensions))
|
||||
|
||||
(ensure-no-duplicate-numbers language languages)
|
||||
(when allow-executable-creation?
|
||||
(set! languages-allowing-executable-creation
|
||||
(cons language languages-allowing-executable-creation)))
|
||||
(set! languages
|
||||
(if front?
|
||||
(cons language languages)
|
||||
(append languages (list language))))))
|
||||
(append languages (list language)))))
|
||||
|
||||
(define (ensure-no-duplicate-numbers l1 languages)
|
||||
(for-each
|
||||
|
@ -1956,25 +1963,6 @@
|
|||
[else (inner
|
||||
(drracket:language:get-capability-default 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))))]
|
||||
[make-simple
|
||||
(λ (module id position numbers mred-launcher? one-line-summary extra-mixin)
|
||||
|
|
|
@ -647,14 +647,7 @@
|
|||
(module-based-language-front-end port (get-reader)))
|
||||
(define/public (front-end/interaction port settings)
|
||||
(module-based-language-front-end port (get-reader)))
|
||||
(define/public (create-executable setting parent program-filename)
|
||||
(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 (create-executable setting parent program-filename) (void))
|
||||
(define/public (extra-repl-information _1 _2) (void))
|
||||
(define/public (get-reader-module) #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%)))))
|
||||
(drracket:language-configuration:add-language
|
||||
(new module-language%)))
|
||||
(new module-language%)
|
||||
#:allow-executable-creation? #t))
|
||||
|
||||
;; collection-paths : (listof (union 'default string))
|
||||
;; command-line-args : (vectorof string)
|
||||
|
|
|
@ -405,9 +405,20 @@ module browser threading seems wrong.
|
|||
|
||||
;; create-executable : (instanceof drracket:unit:frame<%>) -> void
|
||||
(define (create-executable frame)
|
||||
(let* ([definitions-text (send frame get-definitions-text)]
|
||||
[program-filename (send definitions-text get-filename)])
|
||||
(define definitions-text (send frame get-definitions-text))
|
||||
(define program-filename (send definitions-text get-filename))
|
||||
(define settings (send definitions-text get-next-settings))
|
||||
(cond
|
||||
[(not (drracket:language-configuration:language-allows-executable-creation?
|
||||
(drracket:language-configuration:language-settings-language settings)))
|
||||
(message-box (string-constant drscheme)
|
||||
(string-append
|
||||
"Executable creation in DrRacket is supported only in the teaching languages and"
|
||||
" when the #lang line specifies the language (in “The Racket Language”)"
|
||||
"\n\n"
|
||||
"Consider using the raco exe command-line tool instead.")
|
||||
frame
|
||||
#:dialog-mixin frame:focus-table-mixin)]
|
||||
[(not program-filename)
|
||||
(message-box (string-constant create-executable-title)
|
||||
(string-constant must-save-before-executable)
|
||||
|
@ -422,12 +433,11 @@ module browser threading seems wrong.
|
|||
(string-constant drscheme)
|
||||
#f
|
||||
frame))
|
||||
(let ([settings (send definitions-text get-next-settings)])
|
||||
(send (drracket:language-configuration:language-settings-language settings)
|
||||
create-executable
|
||||
(drracket:language-configuration:language-settings-settings settings)
|
||||
frame
|
||||
program-filename)))])))
|
||||
program-filename))]))
|
||||
|
||||
(define-values (get-program-editor-mixin add-to-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
|
||||
drracket:language-configuration:add-language
|
||||
((and/c (is-a?/c drracket:language:language<%>)
|
||||
drracket:language:object/c)
|
||||
. -> . void?)
|
||||
(language)
|
||||
(->* ((and/c (is-a?/c drracket:language:language<%>)
|
||||
drracket:language:object/c))
|
||||
(#:allow-executable-creation? boolean?)
|
||||
void?)
|
||||
((language) ((allow-executable-creation? #f)))
|
||||
|
||||
@{@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
|
||||
drracket:language-configuration:get-settings-preferences-symbol
|
||||
|
|
|
@ -1153,7 +1153,9 @@
|
|||
|
||||
;; add-htdp-language : (instanceof htdp-language<%>) -> void
|
||||
(define (add-htdp-language o)
|
||||
(drscheme:language-configuration:add-language o))
|
||||
(drscheme:language-configuration:add-language
|
||||
o
|
||||
#:allow-executable-creation? #t))
|
||||
|
||||
(define (phase1) (void))
|
||||
|
||||
|
|
|
@ -2,6 +2,10 @@
|
|||
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
|
||||
|
||||
. The language dialog has been revamped to encourage people even
|
||||
|
|
Loading…
Reference in New Issue
Block a user