...
original commit: f0c615071e1e354f3412d82c2c5c9f7fea6975d7
This commit is contained in:
parent
6139674364
commit
a888199ce3
|
@ -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))))))
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
(unit/sig framework:frame^
|
||||
(import mred^
|
||||
[group : framework:group^]
|
||||
|
|
|
@ -218,6 +218,9 @@
|
|||
(send-map-function-meta
|
||||
make-meta-prefix-list
|
||||
|
||||
aug-keymap%
|
||||
aug-keymap<%>
|
||||
|
||||
setup-global
|
||||
setup-search
|
||||
setup-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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user