Emacs在python模式下禁用自动完成

时间:2014-07-17 23:11:18

标签: emacs

我正在使用Emacs 24并希望在python模式下禁用自动完成模式,因此它不会与jedi冲突。我该怎么做呢(遗憾的是我不知道Emacs Lisp)。以下是我在init.el中自动完成的当前设置:

;; auto-complete settings
(require 'auto-complete)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(require 'auto-complete-config)
(ac-config-default)
; Start auto-completion after 2 characters of a word
(setq ac-auto-start 2)
; case sensitivity is important when finding matches
(setq ac-ignore-case nil)

感谢。

2 个答案:

答案 0 :(得分:5)

(ac-config-default)打开global-auto-complete-mode,停止在python模式下调用(auto-complete-mode),你可以为它写一个建议。

(defadvice auto-complete-mode (around disable-auto-complete-for-python)
  (unless (eq major-mode 'python-mode) ad-do-it))

(ad-activate 'auto-complete-mode)

此外我不确定这是你想要的,因为Jedi使用自动完成模式,因为Dmitry在评论中指出,不应该有冲突。

答案 1 :(得分:0)

我认为我有一个类似的问题:我的黄色Jedi弹出窗口具有特定于Python的内容,而灰色弹出窗口则从更一般的自动完成功能中接管了。因此,我可以选择非Python相关的选项,但不能选择特定于Python的选项。

对我帮助的是确保在Python模式下禁用了自动完成模式:

(add-hook 'python-mode-hook (lambda () (auto-complete-mode -1)))