From eb0f88939a00a3ce987c4fbcc13027417fe0918b Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 24 Nov 2014 09:22:14 -0600 Subject: [PATCH] use materialize-user-docs in drracket closes PR 14844 --- .../drracket/drracket/private/help-desk.rkt | 26 +++++++++++++++++++ .../drracket/drracket/private/main.rkt | 4 +++ 2 files changed, 30 insertions(+) diff --git a/pkgs/drracket-pkgs/drracket/drracket/private/help-desk.rkt b/pkgs/drracket-pkgs/drracket/drracket/private/help-desk.rkt index 91852b16ae..2ae7fdfc56 100644 --- a/pkgs/drracket-pkgs/drracket/drracket/private/help-desk.rkt +++ b/pkgs/drracket-pkgs/drracket/drracket/private/help-desk.rkt @@ -6,9 +6,11 @@ racket/class net/url setup/dirs + setup/materialize-user-docs help/search help/private/buginfo drracket/private/drsig + string-constants "local-member-names.rkt") (import [prefix drracket:frame: drracket:frame^] @@ -87,5 +89,29 @@ (define (goto-plt-license) (send-main-page #:sub "license/index.html")) +(define (maybe-try-to-materialize-docs) + ;; under mac os x, the basic installation is put into a 'com.apple.quarantine' + ;; which has the strange effect of making osascript drop the query parameters + ;; for urls when they are sent to the browser. To work around this, + ;; we materialize the documentation indicies in a user-specific place the + ;; first time someone tries to read the docs with a specific query + ;; the 'drracket:tried-materialize-user-docs pref is initialized to #t + ;; on non-mac os x platforms so that we don't try at all there. + (unless (preferences:get 'drracket:tried-materialize-user-docs) + (preferences:set 'drracket:tried-materialize-user-docs #t) + (define sp (open-output-string)) + (define succeeded? #t) + (materialize-user-docs (λ (go) + (set! succeeded? #f) + (parameterize ([current-output-port sp] + [current-error-port sp]) + (set! succeeded? (go))))) + (unless succeeded? + (message-box (string-constant drracket) + (string-append + "Attempting to materialize user docs failed:\n\n" + (get-output-string sp)))))) + (define (help-desk [key #f] [context #f]) + (when key (maybe-try-to-materialize-docs)) (if key (perform-search key context) (send-main-page))) diff --git a/pkgs/drracket-pkgs/drracket/drracket/private/main.rkt b/pkgs/drracket-pkgs/drracket/drracket/private/main.rkt index 5da5c7fc2f..29ddfda461 100644 --- a/pkgs/drracket-pkgs/drracket/drracket/private/main.rkt +++ b/pkgs/drracket-pkgs/drracket/drracket/private/main.rkt @@ -75,6 +75,10 @@ (application:current-app-name (string-constant drscheme)) +(preferences:set-default 'drracket:tried-materialize-user-docs + (not (equal? (system-type) 'macosx)) + boolean?) + (preferences:set-default 'drracket:open-module-path-last-used "" string?) (preferences:set-default 'drracket:logger-receiver-string "error debug@GC debug@PLaneT" string?)