Перепривязывать ключи только в окне взаимодействий DrRacket - PullRequest
1 голос
/ 17 октября 2019

Я хотел бы повторно привязать

C-up к "M-p : bring the previously entered expression down to the prompt"

и

C-down к "M-n : bring the expression after the current expression in the expression history down to the prompt"

Ракетка ведет себяв отличие от моего терминала по умолчанию, где я могу использовать эти привязки элементов управления для прокрутки предыдущих выражений. Ракетка manual дает несколько примеров повторных привязок, но не объясняет, как связать ключ только в окне взаимодействий , что здесь необходимо. Что он делает, так это сохраняет одинаковую привязку для C-up и C-down, чтобы означать перемещение курсора вверх и вниз, как это полезно в окне редактора в приглашении к взаимодействию. Но я не думаю, что хочу этого, так как не вижу смысла в этом.

1 Ответ

0 голосов
/ 17 октября 2019

Это то, что я имею для себя. Не стесняйтесь адаптировать его:

#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")
...