Emacs自动补全未显示结果。

5

我在Linux上使用最新稳定版的Emacs(24.3),并在elpa中运行最新版本的auto-complete。以下是我的Emacs初始化文件设置:

(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
(require 'auto-complete-config)
(setq-default ac-sources
          '(
        ac-source-filename
        ac-source-abbrev 
        ac-source-dictionary
        ac-source-words-in-same-mode-buffers))
(ac-config-default)

如果我在一个缓冲区(比如 Python 缓冲区)中输入:/home/james/.em,我希望自动完成能够提供如下建议:
.emacs
.emacs.d

但是它没有显示任何内容。其他文件也出现了同样的情况。

有时候我会看到建议或弹出菜单会出现,但其他时候则不会。

你有什么想法吗?


你在哪里输入“/home/james/.em”?我不认为自动完成在迷你缓冲区中起作用。也许你正在寻找“M-x ido-mode”? - Ista
感谢@Ista。它在Python缓冲区中(尽管我尝试过其他缓冲区,例如带有.emacs的缓冲区)。我更新了原始帖子。 - Amelio Vazquez-Reina
你找过ido-mode了吗? - Arpit Rawat
@ArpitRawat 我使用 helm(以前称为anything)代替。但这有什么关系吗? - Amelio Vazquez-Reina
1个回答

4

ac-config-default设置了不包括ac-source-filename的源列表。在setq-default ac-sources之后调用此函数将它们重置为默认值。Auto-complete手册建议使用mode-hooks来设置特定模式下所需的源。手册中的示例是:

(defun my-ac-emacs-lisp-mode ()
  (setq ac-sources '(ac-source-symbols ac-source-words-in-same-mode-buffers)))

(add-hook 'emacs-lisp-mode-hook 'my-ac-emacs-lisp-mode)

将这个适应于python-mode应该很容易。或者你可以通过先调用ac-config-default来全局覆盖设置,即:

(require 'auto-complete-config)
(ac-config-default)
(setq-default ac-sources
          '(
        ac-source-filename
        ac-source-abbrev 
        ac-source-dictionary
        ac-source-words-in-same-mode-buffers))

这样setq-default ac-sources将覆盖由ac-config-default设置的源,而不是相反。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接