added a little more safety to protect against broken tools

svn: r6243
This commit is contained in:
Robby Findler 2007-05-23 16:00:16 +00:00
parent 09ce9df295
commit f59d1f205e

View File

@ -3474,24 +3474,27 @@ module browser threading seems wrong.
[marshalled-settings (cdr name/settings)] [marshalled-settings (cdr name/settings)]
[lang (ormap [lang (ormap
(λ (l) (and (equal? (send l get-language-name) name) l)) (λ (l) (and (equal? (send l get-language-name) name) l))
(drscheme:language-configuration:get-languages))] (drscheme:language-configuration:get-languages))])
[settings (send lang unmarshall-settings marshalled-settings)])
(when lang (when lang
(set! added-one? #t) ;; this test can fail when a language has been added wrongly via the tools interface
(new menu-item% ;; just ignore that menu item, in that case.
[parent menu] (let ([settings (send lang unmarshall-settings marshalled-settings)])
[label (string-append " " (when lang
(send lang get-language-name) (set! added-one? #t)
(if (send lang default-settings? settings) (new menu-item%
"" [parent menu]
(string-append " " (string-constant custom))))] [label (string-append " "
[callback (send lang get-language-name)
(λ (x y) (if (send lang default-settings? settings)
(send (send frame get-definitions-text) ""
set-next-settings (string-append " " (string-constant custom))))]
(drscheme:language-configuration:make-language-settings [callback
lang (λ (x y)
settings)))])))) (send (send frame get-definitions-text)
set-next-settings
(drscheme:language-configuration:make-language-settings
lang
settings)))]))))))
(preferences:get 'drscheme:recent-language-names)) (preferences:get 'drscheme:recent-language-names))
(unless added-one? (unless added-one?
(send (new menu-item% (send (new menu-item%