diff --git a/typed-racket-compatibility/typed-scheme/lang/reader.rkt b/typed-racket-compatibility/typed-scheme/lang/reader.rkt index 5affffd0..d26b323d 100644 --- a/typed-racket-compatibility/typed-scheme/lang/reader.rkt +++ b/typed-racket-compatibility/typed-scheme/lang/reader.rkt @@ -6,14 +6,11 @@ typed-scheme #:read-syntax r:read-syntax #:info make-info -(require (prefix-in r: typed-racket/typed-reader)) +(require (prefix-in r: typed-racket/typed-reader) + typed-racket/private/oc-button) (define (make-info key default use-default) (case key [(drscheme:toolbar-buttons) - ;; If Optimization Coach is installed, load it. - (with-handlers ([exn:fail:filesystem? (lambda _ '())]) ; not found - (collection-path "optimization-coach") - (list (dynamic-require 'optimization-coach/tool - 'optimization-coach-drracket-button)))] + (maybe-show-OC)] [else (use-default key default)])) diff --git a/typed-racket-compatibility/typed/scheme/base/lang/reader.rkt b/typed-racket-compatibility/typed/scheme/base/lang/reader.rkt index a1873cb0..5a360b29 100644 --- a/typed-racket-compatibility/typed/scheme/base/lang/reader.rkt +++ b/typed-racket-compatibility/typed/scheme/base/lang/reader.rkt @@ -7,14 +7,12 @@ typed/scheme/base #:info make-info #:language-info make-language-info +(require typed-racket/private/oc-button) + (define (make-info key default use-default) (case key [(drscheme:toolbar-buttons) - ;; If Optimization Coach is installed, load it. - (with-handlers ([exn:fail:filesystem? (lambda _ '())]) ; not found - (collection-path "optimization-coach") - (list (dynamic-require 'optimization-coach/tool - 'optimization-coach-drracket-button)))] + (maybe-show-OC)] [else (use-default key default)])) (define make-language-info diff --git a/typed-racket-compatibility/typed/scheme/lang/reader.rkt b/typed-racket-compatibility/typed/scheme/lang/reader.rkt index b3d729b9..fb3e5733 100644 --- a/typed-racket-compatibility/typed/scheme/lang/reader.rkt +++ b/typed-racket-compatibility/typed/scheme/lang/reader.rkt @@ -7,14 +7,12 @@ typed/scheme #:info make-info #:language-info make-language-info +(requie typed-racket/private/oc-button) + (define (make-info key default use-default) (case key [(drscheme:toolbar-buttons) - ;; If Optimization Coach is installed, load it. - (with-handlers ([exn:fail:filesystem? (lambda _ '())]) ; not found - (collection-path "optimization-coach") - (list (dynamic-require 'optimization-coach/tool - 'optimization-coach-drracket-button)))] + (maybe-show-OC)] [else (use-default key default)])) (define make-language-info diff --git a/typed-racket-lib/typed-racket/private/oc-button.rkt b/typed-racket-lib/typed-racket/private/oc-button.rkt new file mode 100644 index 00000000..c0bf6a97 --- /dev/null +++ b/typed-racket-lib/typed-racket/private/oc-button.rkt @@ -0,0 +1,16 @@ +#lang racket/base + +;; Control whether the OC button show up for TR files in DrR. + +(provide maybe-show-OC) + +(define (maybe-show-OC) + ;; If Optimization Coach is installed, load it. + (with-handlers ([exn:fail:filesystem? (lambda _ '())]) ; not found + (collection-path "optimization-coach") + (if (dynamic-require 'optimization-coach/tool + 'optimization-coach-loaded?) + ;; OC is loaded, show button + (list (dynamic-require 'optimization-coach/tool + 'optimization-coach-drracket-button)) + '()))) diff --git a/typed-racket-lib/typed/racket/base/lang/reader.rkt b/typed-racket-lib/typed/racket/base/lang/reader.rkt index 9432d448..df5f6555 100644 --- a/typed-racket-lib/typed/racket/base/lang/reader.rkt +++ b/typed-racket-lib/typed/racket/base/lang/reader.rkt @@ -7,14 +7,12 @@ typed/racket/base #:info make-info #:language-info make-language-info +(require typed-racket/private/oc-button) + (define (make-info key default use-default) (case key [(drscheme:toolbar-buttons) - ;; If Optimization Coach is installed, load it. - (with-handlers ([exn:fail:filesystem? (lambda _ '())]) ; not found - (collection-path "optimization-coach") - (list (dynamic-require 'optimization-coach/tool - 'optimization-coach-drracket-button)))] + (maybe-show-OC)] [else (use-default key default)])) (define make-language-info diff --git a/typed-racket-lib/typed/racket/lang/reader.rkt b/typed-racket-lib/typed/racket/lang/reader.rkt index 7ce2471b..da1440b4 100644 --- a/typed-racket-lib/typed/racket/lang/reader.rkt +++ b/typed-racket-lib/typed/racket/lang/reader.rkt @@ -7,14 +7,12 @@ typed/racket #:info make-info #:language-info make-language-info +(require typed-racket/private/oc-button) + (define (make-info key default use-default) (case key [(drscheme:toolbar-buttons) - ;; If Optimization Coach is installed, load it. - (with-handlers ([exn:fail:filesystem? (lambda _ '())]) ; not found - (collection-path "optimization-coach") - (list (dynamic-require 'optimization-coach/tool - 'optimization-coach-drracket-button)))] + (maybe-show-OC)] [else (use-default key default)])) (define make-language-info diff --git a/typed-racket-more/typed/racket/gui.rkt b/typed-racket-more/typed/racket/gui.rkt index 18ff5bb1..65d09ade 100644 --- a/typed-racket-more/typed/racket/gui.rkt +++ b/typed-racket-more/typed/racket/gui.rkt @@ -3,7 +3,8 @@ ;; Defines a language analogous to #lang racket/gui but typed (require "gui/base.rkt" - typed/racket) + typed/racket + typed-racket/private/oc-button) (provide (all-from-out "gui/base.rkt") (all-from-out typed/racket)) @@ -20,10 +21,7 @@ (define (make-info key default use-default) (case key [(drscheme:toolbar-buttons) - (with-handlers ([exn:fail:filesystem? (lambda _ '())]) - (collection-path "optimization-coach") - (list (dynamic-require 'optimization-coach/tool - 'optimization-coach-drracket-button)))] + (maybe-show-OC)] [else (use-default key default)])) (require typed-racket/typed-reader))