Emacs如何在python-mode下禁用自动补全功能

8

我正在使用Emacs 24,想要在python-mode模式下禁用自动完成模式,以免与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)

感谢您的选择。

什么是冲突?Jedi.el本身使用auto-complete-mode。如果你禁用它,它将无法显示补全。 - Dmitry
除了Dmitry的评论外,我看不出python-mode.el和jedi之间有任何冲突。 - Andreas Röhler
2个回答

6

(ac-config-default)会开启global-auto-complete-mode,如果你想在Python模式下停止调用(auto-complete-mode),可以为其编写通知(advice)。

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

(ad-activate 'auto-complete-mode)

我不确定这是否符合您的要求,因为正如Dmitry在评论中指出的那样,Jedi使用auto-complete-mode,所以不应该存在冲突。


5

我认为我有类似的问题:我的Python黄色Jedi弹出窗口被更普遍的自动补全功能的灰色弹出窗口取代了。因此,我可以选择非Python相关选项,但不能选择Python特定的选项。

对我有帮助的是确保在Python模式下禁用自动补全模式:

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

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