【问题标题】:Is there an autocomplete for Dr. Racket?Racket 博士有自动完成功能吗?
【发布时间】:2017-01-22 19:04:48
【问题描述】:

我通常使用 Sublime 文本编辑器和 gnome 终端来编辑和运行我的程序。出于教育目的,我正在使用 IDE Dr. Racket。

我找不到在键入时使用的自动完成功能。我在 google 和 Dr. Racket 的菜单上查看了这个。

例如,如果我正在调用一个已定义的函数,我想加速输入函数名称的过程。 我曾尝试使用 control + /,但它不能作为已定义变量和过程的自动完成功能。


编辑

@Sylwester,看,我用之前定义的名为 square 的函数进行了尝试。没用:

【问题讨论】:

  • 正如我在回答中提到的那样,我不知道它使用哪个字典,而且即使在 RUN/语法检查之后,它也肯定不会接受像您 square 这样的用户创建的程序。跨度>

标签: autocomplete ide racket dr.racket


【解决方案1】:

除了默认的自动完成之外,还有其他各种选项:

  • drcomplete 包提供了多种自动完成功能,
  • quickscript-extra 包包含dynamic-abbrev 脚​​本(根据文件内容自动完成)和complete-word 脚本(根据给定字典完成),
  • quickscript-competition-2020 包包含 fishy-completion 脚本(基于词法的补全)。

对于后两者,您可以在 DrRacket 的 Scripts 菜单中获得脚本条目,以及可以通过编辑脚本来更改的默认键绑定。 (另请注意,同时安装的其他脚本可以从Scripts|Manage|Disable scripts… 菜单中停用。)

【讨论】:

  • 由于 Racket 不是静态类型的,这些只是建议范围内的所有内容,还是他们能以某种方式找出哪些可能性在上下文中实际起作用?
  • @joseph 正如答案中提到的,fishy-completion 正在使用词汇信息。 dynamic-abbrev 是基于文件的内容,而不是词法上下文,而complete-word 是基于静态字典。对于DrComplete,这很复杂——参见README
【解决方案2】:

Linux 和 Windows

CTRL + /

Mac OSX

命令 + /

最后一个“键”本身可能不是一个按钮,如果是这样的话,它需要是组合成一个/。例如。在我的挪威键盘上 CTRL + SHIFT + 7 因为 SHIFT + 7 生成/

我不知道它从哪里得到它的匹配项,因为我看到它找到了fold,即使它在#lang racket 中没有被调用。它似乎也没有捕获用户过程。

此答案基于 2011 年 racket mailing list entry 的信息。DrRacket shotcuts 页面中没有记录,因此可能不受官方支持。

【讨论】:

  • IIRC,它从其他文件引入的绑定中获取。但老实说,我发现这个自动完成真的很慢而且不值得使用。
猜你喜欢
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2023-03-26
  • 2015-07-21
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多