racketgui:如何使用framework:text%摆脱Emacs键绑定

racketgui:如何使用framework:text%摆脱Emacs键绑定,racket,Racket,使用Racket GUI框架,我发现文本编辑器的默认键绑定与Emacs相同。也就是说:对于大多数应用来说是完全不合理的。为了激活上下文菜单复制/剪切/粘贴,我使用framework中的racket:text%。 Control+A不选择所有文本,但将插入符号移动到行首 如何摆脱这种疯狂并将Ctrl+A映射为全选 编辑:有人问我一个例子,它可以复制/粘贴到DrRacket中 #lang racket/gui (require framework) (define main-frame (new

使用Racket GUI框架,我发现文本编辑器的默认键绑定与Emacs相同。也就是说:对于大多数应用来说是完全不合理的。为了激活上下文菜单复制/剪切/粘贴,我使用framework中的racket:text%。 Control+A不选择所有文本,但将插入符号移动到行首

如何摆脱这种疯狂并将Ctrl+A映射为全选

编辑:有人问我一个例子,它可以复制/粘贴到DrRacket中

#lang racket/gui

(require framework)

(define main-frame (new frame%
                        [label  "Test Ctrl+A and Ctrl+E"]
                        [width  640]
                        [height 280]))

(define log-text (new editor-canvas%
                      [label  #f]
                      [vert-margin 10]
                      [parent main-frame]))

;; rich text editor
(define text-editor (new racket:text%))

(send log-text set-editor text-editor)
(send text-editor insert (format "Test Ctrl+A and Ctrl+E here"))

(send main-frame show #t)

编辑:在DrRacket Ctrl+A中,按预期选择所有文本。

Racket的GUI编辑器有一个键映射,可以使用set-keymap进行设置。在keymap:get editor中可以找到一个编辑器,该编辑器的keymap的Ctr+A绑定为select all。因此,如果您添加该行:

(send text-editor set-keymap (keymap:get-editor))
对于您的代码,它应该将键绑定从Ctr+A更改为行的开头,然后突出显示所有内容

#lang racket/gui

(require framework)

(define main-frame (new frame%
                        [label  "Test Ctrl+A and Ctrl+E"]
                        [width  640]
                        [height 280]))

(define log-text (new editor-canvas%
                      [label  #f]
                      [vert-margin 10]
                      [parent main-frame]))

;; rich text editor
(define text-editor (new racket:text%))
(send text-editor set-keymap (keymap:get-editor))

(send log-text set-editor text-editor)
(send text-editor insert (format "Test Ctrl+A and Ctrl+E here"))

(send main-frame show #t)

你能发布一个到目前为止你拥有的代码样本吗?很抱歉延迟了,这让suss出奇地恼火。希望这能有所帮助。奇怪的是:由于代码有了小小的改变,我们实际上失去了上下文菜单“复制/粘贴/全选”。