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 博士有自动完成功能吗?的主要内容,如果未能解决你的问题,请参考以下文章

硒可以处理自动完成吗?

iPhone UIWebView - 可以在输入文本字段上关闭自动完成功能吗?

知道为啥这个 Jquery 自动完成功能不起作用吗?

具有自动完成功能的 InputMask

包含文件的 NetBeans 自动完成功能不起作用?

Eclipse CDT 自动完成功能不起作用