From ae278e31309d6a2f8e23d0b6c539a17f9433ca90 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 30 Dec 2013 10:57:17 -0600 Subject: [PATCH] adjust drracket to run the test submodule before the main one. --- .../drracket/drracket/private/main.rkt | 6 ++--- .../drracket/private/module-language.rkt | 25 ++++++++++--------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/pkgs/drracket-pkgs/drracket/drracket/private/main.rkt b/pkgs/drracket-pkgs/drracket/drracket/private/main.rkt index acb381abbe..84ccf03f2e 100644 --- a/pkgs/drracket-pkgs/drracket/drracket/private/main.rkt +++ b/pkgs/drracket-pkgs/drracket/drracket/private/main.rkt @@ -81,9 +81,9 @@ (preferences:set-default 'drracket:logger-scroll-to-bottom? #t boolean?) (preferences:set-default 'drracket:submodules-to-choose-from - '((main) (test)) - (cons/c (list/c 'main) - (cons/c (list/c 'test) + '((test) (main)) + (cons/c (list/c 'test) + (cons/c (list/c 'main) (listof (listof symbol?))))) (preferences:set-default 'drracket:defs/ints-labels #t boolean?) diff --git a/pkgs/drracket-pkgs/drracket/drracket/private/module-language.rkt b/pkgs/drracket-pkgs/drracket/drracket/private/module-language.rkt index e371aa3e82..4d4776cebe 100644 --- a/pkgs/drracket-pkgs/drracket/drracket/private/module-language.rkt +++ b/pkgs/drracket-pkgs/drracket/drracket/private/module-language.rkt @@ -129,7 +129,7 @@ (define default-compilation-on? #t) (define default-full-trace? #t) - (define default-submodules-to-run (list '(main) '(test))) + (define default-submodules-to-run (list '(test) '(main))) (define default-enforce-module-constants #t) (define (get-default-auto-text) (preferences:get 'drracket:module-language:auto-text)) @@ -647,14 +647,18 @@ (define right-debugging-radio-box #f) (define submodules-to-run #f) - (define (sort-submodules-to-run!) + (define (set-submodules-to-run l) (define ht (make-hash)) (for ([submod (in-list (preferences:get 'drracket:submodules-to-choose-from))] [x (in-naturals)]) (hash-set! ht submod x)) - (set! submodules-to-run (sort submodules-to-run - < - #:key (λ (x) (hash-ref ht x))))) + + ;; there may be a submodule in this list that is no longer choosable from + ;; the preferences (if the user edits their prefs or the defaults change) + ;; make sure the sort below doesn't crash by putting in an +inf.0 + ;; (also, rely on sort's stability) + (set! submodules-to-run (sort l < + #:key (λ (x) (hash-ref ht x +inf.0))))) (define simple-case-lambda (drracket:language:simple-module-based-language-config-panel @@ -697,10 +701,8 @@ [callback (λ (a b) (if (member item submodules-to-run) - (set! submodules-to-run (remove item submodules-to-run)) - (begin - (set! submodules-to-run (cons item submodules-to-run)) - (sort-submodules-to-run!))))] + (set-submodules-to-run (remove item submodules-to-run)) + (set-submodules-to-run (cons item submodules-to-run))))] [parent menu])) (new separator-menu-item% [parent menu]) (new menu-item% @@ -709,8 +711,7 @@ (λ (a b) (define new-submod (add-another-possible-submodule parent)) (when new-submod - (set! submodules-to-run (cons new-submod submodules-to-run)) - (sort-submodules-to-run!)))] + (set-submodules-to-run (cons new-submod submodules-to-run))))] [label (string-constant add-submodule)])) (super-new [font normal-control-font] @@ -902,7 +903,7 @@ (send compilation-on-check-box set-value (module-language-settings-compilation-on? settings)) (update-compilation-checkbox left-debugging-radio-box right-debugging-radio-box) (send save-stacktrace-on-check-box set-value (module-language-settings-full-trace? settings)) - (set! submodules-to-run (module-language-settings-submodules-to-run settings)) + (set-submodules-to-run (module-language-settings-submodules-to-run settings)) (send enforce-module-constants-checkbox set-value (module-language-settings-enforce-module-constants settings)) (update-buttons)]))