7

我使用 marmalade repo 安装了自动完成功能。一切安装正确,在移动东西之后,我设法启动并自动更正运行,而我的 init.el 中的以下代码没有任何错误:

;; auto-complete
(add-to-list 'load-path "~/.emacs.d/elpa/auto-complete")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/elpa/auto-complete/dict")
(ac-config-default)

现在我可以在 Emacs Lisp 中使用自动完成功能,而不会出现任何问题,但是每当我使用任何其他模式时,例如 Java、C 或 C++,它都无法正常工作。

我也安装了 yasnippet(它工作得很好),不确定这是否与它有关。这是我的 init.el 中的相关代码:

;;yasnippet
(add-to-list 'load-path
              "~/.emacs.d/plugins/yasnippet")
(require 'yasnippet)
(yas-global-mode 1)

我正在学习 Emacs,目前我还是个菜鸟。我一直在查看所有文档和 SO,但没有找到任何东西。我真的很感激这方面的任何帮助。

4

2 回答 2

6

您可能需要添加完成源。这是我的配置中的内容:

(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))

更新ac-config-default应该涵盖这一点,但如果这些模式没有激活自动完成功能,请尝试将以下内容放入您的 init.el 中:

(dolist (m '(c-mode c++-mode java-mode))
  (add-to-list 'ac-modes m))

(global-auto-complete-mode t)

更新 2 :我已经发布了一个要点,它可以调整您的 init.el 以使用package-install.

我不知道您引用的是哪个版本的自动完成功能,但最新版本对我来说效果很好。

具有工作自动完成功能的 C 模式

于 2013-02-03T21:01:57.410 回答
0

我和你有完全相同的问题。Emacs-Lisp 与自动完成完美结合,但 C、C++ 不起作用。在尝试了各种组合之后,我发现从 .emacs 中注释掉 yasnippet 可以解决我的问题。希望这可以帮助你。我的自动完成版本是 1.3.1。

于 2013-03-10T01:40:41.270 回答