好的标签完成意味着使用反射或其他任何动态生成(不需要在某处预先定义完成的预定列表),并且知道在特定的地方可以做什么和不能做什么。
就像在(.<TAB> x)
中一样,我将得到x的方法列表,在(println <TAB>)
中我得到了本地和全局定义的列表,在(Math/<TAB>
中我得到了数学函数列表。
例如,我喜欢 Tab 在ghci(Haskell)或ipython中的工作方式。
答案 0 :(得分:7)
答案 1 :(得分:4)
这当然是可能的,并且有几种工具正朝着这个方向发展。最新版本的clojure包含一个“开发模式”选项,可以更轻松地构建此类工具;例如,它关闭本地清除以帮助调试,并且目的是最终能够导出有关编译过程的更多信息以供IDE和相关工具使用。这被广泛认为是改善Clojure生态系统的一个领域,根据我的观察,一些非常聪明的人正在研究它。
答案 2 :(得分:1)
Eclipse CounterClockwise REPL的当前测试版大大改进了代码完成,并涵盖了所有情况,包括Java完成。当然不是独立的命令行REPL。然而,Clojure是一种动态语言,它对类型的完成有限制,在Haskell等强类型语言中更容易。
答案 3 :(得分:1)
我正在使用Emacs作为Slime和Emacs auto-complete的编辑器,并且所有这些功能都适用于Emacs中的Repl:Java类和字段的自动完成,自动完成以及Clojure函数的文档。不幸的是,如果您不使用Emacs作为编辑器/ IDE,那将无效。
答案 4 :(得分:0)
看起来IClojure或多或少做得很好。它的灵感和看起来像IPython并提供标签完成(不完整,提到3个案例中的2个)并帮助在控制台中开发Clojure。虽然不是很稳定。