有没有办法在Clojure repl中扩展当前命令,就像我能在Common Lisp中做的那样?
例如说我输入了:
Math/
我希望tab键扩展到该命名空间中的所有可用变量和函数。
我正在使用Clojure作为劣质lisp想知道如何从Clojure中的普通香草代表和swank slime中做到这一点。
答案 0 :(得分:19)
在Emacs下支持clojure模式和粘液的另一个投票。特别是,如果您设置auto-complete,则可以使用我的ac-slime包在下拉列表中获取上下文感知选项卡。这是一个screencast showing it in action。
此外,还有技术人员关于嬉皮士扩展的评论here's how to tie slime completion into hippie-expand。
更新:截至2012年,nrepl,nrepl.el和ac-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-mode
,slime
,slime-repl
和swank-clojure
。完成i
- 标记后,按x
完成安装。最后,按M-x slime
- Emacs将告知,未安装Clojure并建议下载并使用最新版本。只是同意。
答案 2 :(得分:2)
Clojure的香草代表非常残缺;它甚至都没有历史。除了最原始的任务外,避免使用它。我不认为你可以在inferior-lisp中得到这个,但是在slime repl中你可以使用TAB来完成这样的事情。在使用粘液的clojure模式缓冲区中激活它的是M-TAB,或者你可以将它绑定到你的嬉皮扩展功能中。