7

好的选项卡完成意味着使用反射或其他方式动态生成(不需要在某处预定义的完成列表),并且知道在特定位置可以遵循什么,不遵循什么。

就像(.<TAB> x)我会得到 x 的方法列表一样,我会得到(println <TAB>)本地和全局定义(Math/<TAB>的列表,我会得到数学函数的列表......

例如,我喜欢Tabghci (Haskell) 或 ipython 中的工作方式。

4

5 回答 5

8

查看回复以获得比默认更好的 REPL。它涵盖了您提到的三个用例中的两个,而没有涉及 Java 实例方法完成。

如果您使用leiningenlein repl v2+,它是命令调用的默认 REPL 。

于 2012-08-09T05:49:07.563 回答
4

这当然是可能的,并且一些工具正在朝着这个方向发展。最新版本的 clojure 包含一个“开发模式”选项,可以更轻松地构建此类工具;例如,它关闭本地清除以帮助调试,其目的是最终能够导出更多关于编译过程的信息,以供 IDE 和相关工具使用。这被广泛认为是改进 Clojure 生态系统的一个领域,根据我的观察,有几个非常聪明的人正在研究它。

于 2012-08-08T23:51:02.853 回答
1

我将 Emacs 用作具有 Slime 和Emacs auto-complete的编辑器,并且使所有这些功能都适用于 Emacs 中的 Repl:Java 类和字段的自动完成、自动完成以及 Clojure 函数的文档。不幸的是,如果您不使用 Emacs 作为编辑器/IDE,这将不起作用。

于 2012-08-09T13:15:02.857 回答
1

当前 Eclipse CounterClockwise REPL 的 beta 版本大大改进了代码完成,并涵盖了您的所有案例,包括 Java 完成。除了当然不是独立的命令行 REPL。Clojure 是一种动态语言,但是它对类型完成有限制,这在 Haskell 等强类型语言中要容易得多。

于 2012-08-09T08:08:53.833 回答
0

看起来IClojure或多或少地做得很好。它受到启发,看起来像 IPython,并提供选项卡完成(不完整,提到 3 个案例中的 2 个)并帮助在控制台中开发 Clojure。虽然不是很稳定。

于 2012-08-19T03:44:26.973 回答