例如,假设我已经键入了:
Math/
我希望通过按tab键来展开该命名空间中所有可用的变量和函数。
我正在使用Clojure作为inferior-lisp,并想知道如何在Clojure的普通vanilla repl以及通过swank slime实现此目的。
Math/
我希望通过按tab键来展开该命名空间中所有可用的变量和函数。
我正在使用Clojure作为inferior-lisp,并想知道如何在Clojure的普通vanilla repl以及通过swank slime实现此目的。
又有一票支持在Emacs下使用clojure-mode和slime。 特别是,如果您设置了auto-complete,那么您可以使用我的ac-slime包,在下拉列表中获得上下文感知的制表符补全。 这里是一个演示录像。
并且,根据technomancy的评论,这里是如何将slime的完成绑定到hippie-expand中的。
更新:从2012年开始,nrepl、nrepl.el和ac-nrepl正在取代slime和ac-slime;相同的功能,更小更简洁的代码库。
更新2:截至2013年10月,nrepl.el已更名为cider,它和ac-nrepl已经移至github上的clojure-emacs组织。 nrepl仍然是服务器组件。
你尝试过Emacs的Clojure模式吗?它具有自动完成功能(建议会显示在新窗口中,如果只有一个可能的选项,则用于展开名称),高亮和许多其他不错的功能(不比CL差,但也不会更多)。
它可以通过ELPA获得。安装完ELPA后,键入M-x package-list-packages
,将光标置于所需程序包附近,然后按i
(已安装的程序包为红色)。您需要安装clojure-mode
、slime
、slime-repl
和swank-clojure
程序包。完成标记i
后,按x
以完成安装。最后,按M-x slime
- Emacs会告诉您Clojure未安装,并建议下载和使用最新版本。只需同意即可。
在Clojure中,原始的repl功能十分有限,甚至没有历史记录。除了最基本的任务之外,应该尽量避免使用它。我认为你无法在inferior-lisp中获得这个功能,但是在slime repl中,你可以使用TAB键来完成类似的操作。在启用了slime的clojure-mode缓冲区中,可以使用M-TAB键,或将其与hippie-expand函数绑定。