Racket 公共小巴计划(球拍)

Racket 公共小巴计划(球拍),racket,Racket,有人知道如何或是否可能在drScheme/Racket中自动完成括号吗?DrRacket不会自动完成结束括号(我想这就是你要问的问题),但是它会插入正确的paren形状——因此您可以快速点击几次]],直到关闭正确的级别 但是作为旁注,如果你一直保持括号(各种形状)和双引号等的平衡,那么在任何sexpr语言(或者实际上是任何其他语言)中工作都要容易得多。DrRacket通过使Alt-(E/CODE)插入一对PARES并将光标放在中间。Emacs也一样,但是DrRacket有类似的方括号、大括号和双

有人知道如何或是否可能在drScheme/Racket中自动完成括号吗?DrRacket不会自动完成结束括号(我想这就是你要问的问题),但是它会插入正确的paren形状——因此您可以快速点击几次
]]
,直到关闭正确的级别


但是作为旁注,如果你一直保持括号(各种形状)和双引号等的平衡,那么在任何sexpr语言(或者实际上是任何其他语言)中工作都要容易得多。DrRacket通过使Alt-
(E/CODE)插入一对PARES并将光标放在中间。Emacs也一样,但是DrRacket有类似的方括号、大括号和双引号的键。这种工作方式非常有效,因为您不需要对PAREN进行计数,甚至可以查看高亮。--只要代码正确缩进(这意味着parens会逐渐消失,变成你没有意识到的东西)。

我同意Eli的观点,即始终保持parens平衡更容易,我想补充一点,即很容易实现内置行为,并从那里开始定制你想要的一切。在DrRacket via中“Edit/Keybindings/Add User defined Keybindings”(编辑/键绑定/添加用户定义的键绑定)您可以添加如下文件,该文件将绑定添加到“Control-#”以在光标处(或当前选择的周围,如果有)插入一对参数。之后,您必须重新启动DrRacket

#lang s-exp framework/keybinding-lang
(keybinding "c:#"
        (λ (text evt)
          (define a (send text get-start-position))
          (define b (send text get-end-position))
          (send text insert #\( a)
          (send text insert #\) (+ b 1))
          (send text move-position 'left)))