如何在Clojure repl中自动扩展或自动完成函数和变量

时间:2010-11-27 00:50:52

标签: emacs autocomplete clojure slime

有没有办法在Clojure repl中扩展当前命令,就像我能在Common Lisp中做的那样?

例如说我输入了:

Math/

我希望tab键扩展到该命名空间中的所有可用变量和函数。

我正在使用Clojure作为劣质lisp想知道如何从Clojure中的普通香草代表和swank slime中做到这一点。

3 个答案:

答案 0 :(得分:19)

在Emacs下支持clojure模式和粘液的另一个投票。特别是,如果您设置auto-complete,则可以使用我的ac-slime包在下拉列表中获取上下文感知选项卡。这是一个screencast showing it in action

此外,还有技术人员关于嬉皮士扩展的评论here's how to tie slime completion into hippie-expand

更新:截至2012年,nreplnrepl.elac-nrepl正在取代粘液和粉尘;相同的功能,更小,更清晰的代码库。

Update2:截至2013年10月nrepl.el已重命名为cider,而ac-nrepl已移至github上的clojure-emacs组织。 nrepl仍然是服务器组件

答案 1 :(得分:3)

您是否为Emacs尝试了 Clojure模式?它具有自动完成功能(建议显示在新窗口中,如果只有一个可能的选项,它用于扩展名称),突出显示和许多其他不错的功能(不仅仅是CL,但也不少)。

可通过ELPA获取。在installing ELPA类型M-x package-list-packages之后,将光标设置在所需的包附近并按i(已安装的包为红色)。您需要包clojure-modeslimeslime-replswank-clojure。完成i - 标记后,按x完成安装。最后,按M-x slime - Emacs将告知,未安装Clojure并建议下载并使用最新版本。只是同意。

您还可以使用integrate Leiningen Emacs。

答案 2 :(得分:2)

Clojure的香草代表非常残缺;它甚至都没有历史。除了最原始的任务外,避免使用它。我不认为你可以在inferior-lisp中得到这个,但是在slime repl中你可以使用TAB来完成这样的事情。在使用粘液的clojure模式缓冲区中激活它的是M-TAB,或者你可以将它绑定到你的嬉皮扩展功能中。