tool.ss
(module tool mzscheme

  (require (lib "tool.ss" "drscheme")
           (lib "unit.ss")
           (lib "class.ss")
           (lib "mred.ss" "mred")
           (lib "string-constant.ss" "string-constants")
           "driver.ss")

  (provide tool@)

  (define tool@
    (unit
      (import drscheme:tool^)
      (export drscheme:tool-exports^)

      (define sequence-trace-language%
        (class* drscheme:language:simple-module-based-language%
          (drscheme:language:simple-module-based-language<%>)

          (super-new [module '(planet "traced-lang.ss" ("plt" "object-debugger.plt"))]
                     [language-position
                      (list (string-constant experimental-languages)
                            "Object Debugger")]
                     [language-numbers (list 1000 1000)]
                     [one-line-summary
                      "Graphical language with trace-instrumented class.ss"]
                     [documentation-reference #f])))

      (define (sequence-trace-language-mixin super%)
        (class super%
          (super-new)

          (override on-execute)
          (define (on-execute settings run-in-user-thread)
            (run-in-user-thread install-trace-window)
            (super on-execute settings run-in-user-thread))
          ))

      (define (phase1)
        (void))

      (define (phase2)
        (drscheme:language-configuration:add-language
         (new
          (sequence-trace-language-mixin
           ((drscheme:language:get-default-mixin)
            (drscheme:language:module-based-language->language-mixin
             (drscheme:language:simple-module-based-language->module-based-language-mixin
              sequence-trace-language%)))))))

      ))

  )