Racket 博士有自动完成功能吗?
Posted
技术标签:
【中文标题】Racket 博士有自动完成功能吗?【英文标题】:Is there an autocomplete for Dr. Racket? 【发布时间】:2017-01-22 19:04:48 【问题描述】:我通常使用 Sublime 文本编辑器和 gnome 终端来编辑和运行我的程序。出于教育目的,我正在使用 IDE Dr. Racket。
我找不到在键入时使用的自动完成功能。我在 google 和 Dr. Racket 的菜单上查看了这个。
例如,如果我正在调用一个已定义的函数,我想加速输入函数名称的过程。 我曾尝试使用 control + /,但它不能作为已定义变量和过程的自动完成功能。
编辑
@Sylwester,看,我用之前定义的名为 square 的函数进行了尝试。没用:
【问题讨论】:
正如我在回答中提到的那样,我不知道它使用哪个字典,而且即使在 RUN/语法检查之后,它也肯定不会接受像您square
这样的用户创建的程序。跨度>
【参考方案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,它从其他文件引入的绑定中获取。但老实说,我发现这个自动完成真的很慢而且不值得使用。以上是关于Racket 博士有自动完成功能吗?的主要内容,如果未能解决你的问题,请参考以下文章