是否有更好的方法让emacs自动完成插件知道库(例如ring,compojure)关键字?

时间:2013-02-06 11:06:42

标签: emacs clojure autocomplete

我正在使用emacs自动完成插件,实际上我正在使用Emacs Live(https://github.com/overtone/emacs-live),后者又使用自动完成功能。 自动完成确实有效,但它只知道/ dict / xxx文件中的关键字列表。 当我使用lein将libs添加到当前项目时(例如ring,compojure),它根本不起作用。 我是否必须列出libs到/ dict目录中的所有关键字以使自动完成知道它们? 或者有没有办法让自动填充每次使用lein添加新的lib时都知道关键字(就像在Java IDE中发生的那样)?

2 个答案:

答案 0 :(得分:1)

Emacs live仍然使用Swank与Clojure对话,对吧?您可以尝试使用nrepl替代Swank,它提供了自动完成java库。

您是正确的,有点涉及向自动填充添加其他来源。有一个名为ac-sources的变量,您可以自定义该变量以添加完成源。有关内置的​​here的信息。

这是我在init.el中的内容:

(set-default 'ac-sources
             '(ac-source-abbrev
               ac-source-dictionary
               ac-source-yasnippet
               ac-source-words-in-buffer
               ac-source-words-in-same-mode-buffers
               ac-source-semantic))

这会使自动填充功能对您更有用。

答案 1 :(得分:1)

克里斯巴雷特的回答让你几乎到了那里。

从melpa安装nrepl和ac-nrepl,然后将其放入init:

(require 'nrepl)
(require 'ac-nrepl)

(add-hook 'nrepl-mode-hook 'ac-nrepl-setup)
(add-hook 'nrepl-interaction-mode-hook 'ac-nrepl-setup)
(eval-after-load "auto-complete"
  '(add-to-list 'ac-modes 'nrepl-mode))

使用M-x nrepl-jack-in通过自动完成和文档提示将您的emacs会话挂钩到您的clojure项目。