diff --git a/collects/drscheme/private/rep.ss b/collects/drscheme/private/rep.ss index cb64ab7600..35aa44c1f5 100644 --- a/collects/drscheme/private/rep.ss +++ b/collects/drscheme/private/rep.ss @@ -262,7 +262,18 @@ TODO [add-drs-function (λ (name f) (send drs-bindings-keymap add-function name - (λ (obj evt) (cond [(get-frame obj) => f]))))]) + (λ (obj evt) (cond [(get-frame obj) => f]))))] + [show-tab + (λ (i) + (λ (obj evt) + (let ([fr (get-frame obj)]) + (and fr + (is-a? fr drscheme:unit:frame<%>) + (< i (send fr get-tab-count)) + (begin (send fr change-to-nth-tab i) + #t)))))]) + (for ([i (in-range 1 10)]) + (send drs-bindings-keymap add-function (format "show-tab-~a" i) (show-tab (- i 1)))) (send drs-bindings-keymap add-function "search-help-desk" (λ (obj evt) (if (not (and (is-a? obj text%) (get-frame obj))) ; is `get-frame' needed? @@ -300,6 +311,14 @@ TODO (send drs-bindings-keymap map-function "c:x;0" "collapse") (send drs-bindings-keymap map-function "c:x;2" "split") + + (for ([i (in-range 1 10)]) + (send drs-bindings-keymap map-function + (format "a:~a" i) + (format "show-tab-~a" i)) + (send drs-bindings-keymap map-function + (format "m:~a" i) + (format "show-tab-~a" i))) (define (get-drs-bindings-keymap) drs-bindings-keymap) diff --git a/collects/drscheme/private/unit.ss b/collects/drscheme/private/unit.ss index a9ab136f02..15a8ba5033 100644 --- a/collects/drscheme/private/unit.ss +++ b/collects/drscheme/private/unit.ss @@ -2081,12 +2081,20 @@ module browser threading seems wrong. (send tabs-panel set-item-label (send tab get-i) label)))) (define/private (get-defs-tab-label defs tab) - (let ([fn (send defs get-filename)]) - (add-modified-flag - defs - (if fn - (get-tab-label-from-filename fn) - (send defs get-filename/untitled-name))))) + (let ([fn (send defs get-filename)] + [i-prefix (or (for/or ([i (in-list tabs)] + [n (in-naturals 1)] + #:when (<= n 9)) + (and (eq? i tab) + (format "~a: " n))) + "")]) + (string-append + i-prefix + (add-modified-flag + defs + (if fn + (get-tab-label-from-filename fn) + (send defs get-filename/untitled-name)))))) (define/private (get-tab-label-from-filename fn) (let* ([take-n @@ -2909,7 +2917,8 @@ module browser threading seems wrong. (define/public (open-in-new-tab filename) (create-new-tab filename)) - (define/private (change-to-nth-tab n) + (define/public (get-tab-count) (length tabs)) + (define/public (change-to-nth-tab n) (unless (< n (length tabs)) (error 'change-to-nth-tab "number too big ~s" n)) (change-to-tab (list-ref tabs n)))