【问题标题】:How to do automatic expansion or autocomplete of functions and variables in a Clojure repl如何在 Clojure repl 中自动扩展或自动完成函数和变量
【发布时间】:2013-11-01 04:22:41
【问题描述】:

有没有办法像在 Common Lisp 中那样在 Clojure repl 中扩展当前命令?

例如说我输入了:

Math/

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

我正在使用 Clojure,因为低级 lisp 想知道如何从 Clojure 中的普通香草 repl 以及通过 swank slime 做到这一点。

【问题讨论】:

    标签: emacs autocomplete clojure slime


    【解决方案1】:

    又一次投票支持 Emacs 下的 clojure-mode 和 slime。特别是,如果您设置了auto-complete,那么您可以使用我的ac-slime 包在下拉列表中获取上下文感知选项卡完成。这是screencast showing it in action

    此外,关于 technomancy 对 hippie-expand 的评论,here's how to tie slime completion into hippie-expand

    更新:自 2012 年起,nreplnrepl.elac-nrepl 正在取代 slime 和 ac-slime;相同的功能,更小更简洁的代码库。

    Update2:自 2013 年 10 月起,nrepl.el 已重命名为 cider,并且它和 ac-nrepl 已移至 github 上的 clojure-emacs 组织。 nrepl 仍然作为服务器组件

    【讨论】:

    • 仍然是 2012 年中期使用 repl 的最有效方式,现在使用 Emacs24。
    【解决方案2】:

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

    可通过ELPA 获得。在installing ELPA 之后输入M-x package-list-packages,将光标放在需要的包附近,然后按i(已安装的包为红色)。您将需要包clojure-modeslimeslime-replswank-clojure。完成i-marks 后,按x 完成安装。最后,按M-x slime - Emacs 会告诉你,Clojure 没有安装,建议下载并使用最新版本。只是同意。

    你也可以用LeiningenintegrateEmacs。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-27
        • 1970-01-01
        相关资源
        最近更新 更多