...
original commit: f0c615071e1e354f3412d82c2c5c9f7fea6975d7
This commit is contained in:
parent
6139674364
commit
a888199ce3
|
@ -195,10 +195,11 @@
|
||||||
[get-keymaps
|
[get-keymaps
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(list (keymap:get-global)))])
|
(list (keymap:get-global)))])
|
||||||
(inherit get-keymap)
|
(inherit set-keymap)
|
||||||
(sequence
|
(sequence
|
||||||
(apply super-init args)
|
(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))
|
(for-each (lambda (k) (send keymap chain-to-keymap k #f))
|
||||||
(get-keymaps))))))
|
(get-keymaps))))))
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
(unit/sig framework:frame^
|
(unit/sig framework:frame^
|
||||||
(import mred^
|
(import mred^
|
||||||
[group : framework:group^]
|
[group : framework:group^]
|
||||||
|
|
|
@ -218,6 +218,9 @@
|
||||||
(send-map-function-meta
|
(send-map-function-meta
|
||||||
make-meta-prefix-list
|
make-meta-prefix-list
|
||||||
|
|
||||||
|
aug-keymap%
|
||||||
|
aug-keymap<%>
|
||||||
|
|
||||||
setup-global
|
setup-global
|
||||||
setup-search
|
setup-search
|
||||||
setup-file
|
setup-file
|
||||||
|
|
|
@ -9,6 +9,57 @@
|
||||||
|
|
||||||
(rename [-get-file get-file])
|
(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)
|
(define (make-meta-prefix-list key)
|
||||||
(list (string-append "m:" key)
|
(list (string-append "m:" key)
|
||||||
(string-append "ESC;" key)))
|
(string-append "ESC;" key)))
|
||||||
|
@ -899,17 +950,17 @@
|
||||||
(add-pasteboard-keymap-functions keymap)
|
(add-pasteboard-keymap-functions keymap)
|
||||||
(add-text-keymap-functions keymap))
|
(add-text-keymap-functions keymap))
|
||||||
|
|
||||||
(define global (make-object keymap%))
|
(define global (make-object aug-keymap%))
|
||||||
(setup-global global)
|
(setup-global global)
|
||||||
(generic-setup global)
|
(generic-setup global)
|
||||||
(define (get-global) global)
|
(define (get-global) global)
|
||||||
|
|
||||||
(define file (make-object keymap%))
|
(define file (make-object aug-keymap%))
|
||||||
(setup-file file)
|
(setup-file file)
|
||||||
(generic-setup file)
|
(generic-setup file)
|
||||||
(define (-get-file) file)
|
(define (-get-file) file)
|
||||||
|
|
||||||
(define search (make-object keymap%))
|
(define search (make-object aug-keymap%))
|
||||||
(generic-setup search)
|
(generic-setup search)
|
||||||
(setup-search search)
|
(setup-search search)
|
||||||
(define (get-search) search)
|
(define (get-search) search)
|
||||||
|
|
|
@ -930,7 +930,7 @@
|
||||||
(map-meta "c:t" "transpose-sexp"))
|
(map-meta "c:t" "transpose-sexp"))
|
||||||
(send keymap map-function "c:c;c:b" "remove-parens-forward")))
|
(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)
|
(setup-keymap keymap)
|
||||||
(define (get-keymap) keymap)
|
(define (get-keymap) keymap)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user