added alt-1 thru alt-9 as keyboard shortcuts to switch between tabs

svn: r18196
This commit is contained in:
Robby Findler 2010-02-19 23:15:29 +00:00
parent de859a8879
commit f7447ee6ae
2 changed files with 36 additions and 8 deletions

View File

@ -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)

View File

@ -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)))