original commit: f0c615071e1e354f3412d82c2c5c9f7fea6975d7
This commit is contained in:
Robby Findler 2000-02-19 00:30:19 +00:00
parent 6139674364
commit a888199ce3
5 changed files with 62 additions and 6 deletions

View File

@ -195,10 +195,11 @@
[get-keymaps
(lambda ()
(list (keymap:get-global)))])
(inherit get-keymap)
(inherit set-keymap)
(sequence
(apply super-init args)
(let ([keymap (get-keymap)])
(let ([keymap (make-object keymap:aug-keymap%)])
(set-keymap keymap)
(for-each (lambda (k) (send keymap chain-to-keymap k #f))
(get-keymaps))))))

View File

@ -1,3 +1,4 @@
(unit/sig framework:frame^
(import mred^
[group : framework:group^]

View File

@ -218,6 +218,9 @@
(send-map-function-meta
make-meta-prefix-list
aug-keymap%
aug-keymap<%>
setup-global
setup-search
setup-file

View File

@ -9,6 +9,57 @@
(rename [-get-file get-file])
(define aug-keymap<%> (interface () get-chained-keymaps get-map-function-table))
(define aug-keymap%
(class* keymap% (aug-keymap<%>) args
(private
[chained-keymaps null])
(public
[get-chained-keymaps
(lambda ()
chained-keymaps)])
(rename [super-chain-to-keymap chain-to-keymap])
(override
[chain-to-keymap
(lambda (keymap prefix?)
(super-chain-to-keymap keymap prefix?)
(set! chained-keymaps
(if prefix?
(cons keymap chained-keymaps)
(append chained-keymaps (list keymap)))))])
(private [function-table (make-hash-table)])
(public [get-function-table (lambda () function-table)])
(rename [super-map-function map-function])
(override
[map-function
(lambda (keyname fname)
(super-map-function keyname fname)
(hash-table-put! function-table (string->symbol keyname) fname))])
(public
[get-map-function-table
(lambda ()
(let ([table (make-hash-table)])
(hash-table-for-each
function-table
(lambda (keyname fname) (hash-table-put! table keyname fname)))
(for-each
(lambda (chained-keymap)
(when (is-a? chained-keymap aug-keymap<%>)
(hash-table-for-each
(send chained-keymap get-map-function-table)
(lambda (keyname fname)
(unless (hash-table-get table keyname (lambda () #f))
(hash-table-put! table keyname fname))))))
chained-keymaps)
table))])
(sequence
(apply super-init args))))
(define (make-meta-prefix-list key)
(list (string-append "m:" key)
(string-append "ESC;" key)))
@ -899,17 +950,17 @@
(add-pasteboard-keymap-functions keymap)
(add-text-keymap-functions keymap))
(define global (make-object keymap%))
(define global (make-object aug-keymap%))
(setup-global global)
(generic-setup global)
(define (get-global) global)
(define file (make-object keymap%))
(define file (make-object aug-keymap%))
(setup-file file)
(generic-setup file)
(define (-get-file) file)
(define search (make-object keymap%))
(define search (make-object aug-keymap%))
(generic-setup search)
(setup-search search)
(define (get-search) search)

View File

@ -930,7 +930,7 @@
(map-meta "c:t" "transpose-sexp"))
(send keymap map-function "c:c;c:b" "remove-parens-forward")))
(define keymap (make-object keymap%))
(define keymap (make-object keymap:aug-keymap%))
(setup-keymap keymap)
(define (get-keymap) keymap)