有没有办法像在 Common Lisp 中那样在 Clojure repl 上扩展当前命令?
例如说我输入了:
Math/
我希望 tab 键扩展到该命名空间中的所有可用变量和函数。
我正在使用 Clojure,因为劣质 lisp 想知道如何从 Clojure 中的普通香草 repl 以及通过 swank slime 做到这一点。
有没有办法像在 Common Lisp 中那样在 Clojure repl 上扩展当前命令?
例如说我输入了:
Math/
我希望 tab 键扩展到该命名空间中的所有可用变量和函数。
我正在使用 Clojure,因为劣质 lisp 想知道如何从 Clojure 中的普通香草 repl 以及通过 swank slime 做到这一点。
又一票支持 Emacs 下的 clojure-mode 和 slime。特别是,如果您设置了auto-complete,那么您可以使用我的ac-slime包在下拉列表中获取上下文感知选项卡完成。这是一个截屏视频,展示了它的实际应用。
而且,除了 technomancy 对 hippie-expand 的评论之外,这里是如何将粘液完成与 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
和. 完成-marks 后,按完成安装。最后,按- Emacs 会提示,Clojure 没有安装并建议下载和使用最新版本。只是同意。slime-repl
swank-clojure
i
x
M-x slime
Clojure 中的原版 repl 相当残缺。它甚至没有历史。除了最原始的任务之外,避免使用它。我不认为你可以在 suber-lisp 中得到这个,但在 slime repl 中你可以使用 TAB 来完成这样的事情。在激活了粘液的 clojure 模式缓冲区中,它是 M-TAB,或者您可以将其绑定到嬉皮扩展功能中。