仅在DrRacket交互窗口中重新绑定键

仅在DrRacket交互窗口中重新绑定键,racket,Racket,我想重新绑定 C-up至“M-p:将先前输入的表达式向下移动到提示符” 及 C-down至“M-n:将表达式历史记录中当前表达式之后的表达式向下移动到提示符” Racket的行为不同于我的默认终端,我可以使用这些控件绑定滚动之前的表达式。racket给出了一些重新绑定的示例,但没有解释如何仅在“交互”窗口中重新绑定键,这正是此处需要的。它所做的是保持C-up和C-down的相同绑定,这意味着上下移动光标,这在编辑器窗口和交互提示中非常有用。但我不想这样,因为我看不出它的用途。这是我自己用的。请随

我想重新绑定

C-up
“M-p:将先前输入的表达式向下移动到提示符”

C-down
“M-n:将表达式历史记录中当前表达式之后的表达式向下移动到提示符”


Racket的行为不同于我的默认终端,我可以使用这些控件绑定滚动之前的表达式。racket给出了一些重新绑定的示例,但没有解释如何仅在“交互”窗口中重新绑定键,这正是此处需要的。它所做的是保持C-up和C-down的相同绑定,这意味着上下移动光标,这在编辑器窗口和交互提示中非常有用。但我不想这样,因为我看不出它的用途。

这是我自己用的。请随意调整:

#lang s-exp framework/keybinding-lang

(require drracket/tool-lib)

(define (register-repl key command command-fallback)
  (keybinding key (λ (ed evt)
                    (define canvas (send ed get-canvas))
                    (send (send ed get-keymap) call-function
                          (if (is-a? canvas drracket:unit:interactions-canvas%)
                              command
                              command-fallback)
                          ed evt #t))))

(register-repl "d:up" "put-previous-sexp" "beginning-of-file")
(register-repl "d:down" "put-next-sexp" "end-of-file")

这是我自己用的。请随意调整:

#lang s-exp framework/keybinding-lang

(require drracket/tool-lib)

(define (register-repl key command command-fallback)
  (keybinding key (λ (ed evt)
                    (define canvas (send ed get-canvas))
                    (send (send ed get-keymap) call-function
                          (if (is-a? canvas drracket:unit:interactions-canvas%)
                              command
                              command-fallback)
                          ed evt #t))))

(register-repl "d:up" "put-previous-sexp" "beginning-of-file")
(register-repl "d:down" "put-next-sexp" "end-of-file")