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