2011-03-14 45 views
1

我已经建立了公司在全球范围内加载这样的:禁止公司模式小缓冲区

(let ((company-path "path/to/company")) 
    (add-to-list 'load-path company-path) 
    (autoload 'company-mode "company" nil t) 
    (global-company-mode t)) 

的问题是,它重新加载每个迷你缓冲区中获得焦点的时间。有没有简单的方法来禁用此行为?我想让它在每个文件缓冲区中启用,但不是minibuffer。

谢谢。

更新:

一些澄清。

首先,什么让我觉得company-mode加载每次我切换到minibuffer?那么,每次我输入的M-x时,小缓冲区都会显示“Pymacs loading ropemacs ...”并挂起一瞬间。只有启用global-company-mode才能观察到此行为,所以我将其归咎于company

但是,为什么如果它说pymacs指责company,对不对?所以我去及关闭的pymacs看起来像这样在我的.emacs文件加载(从它的安装说明,直取):

(defun load-pymacs() 
    "Self-explanatory." 
    (add-to-list 'load-path (make-plugin-path "Pymacs")) 
    (autoload 'pymacs-apply "pymacs") 
    (autoload 'pymacs-call "pymacs") 
    (autoload 'pymacs-eval "pymacs" nil t) 
    (autoload 'pymacs-exec "pymacs" nil t) 
    (autoload 'pymacs-load "pymacs" nil t)) 
; make-plugin-path is a function defined somewhere else in my .emacs file. 

(load-pymacs) 

注释掉最后一行并重新启动的Emacs,在“Pymacs加载后ropemacs ...“消息即使全球启用company-mode也不见了。但是,在(global-company-mode t)工作之前,我仍然需要手动评估(company-mode)

经过这个小调查后,我想重新解释一下原来的问题。我不熟悉的require并在Emacs autoload的概念,所以我要求的意见在这里:

究竟是什么,我需要在我的.emacs文件放置,使company中的每个文件自动开启缓冲区(而不是在minibuffer中)并且启用了Pymacs?

谢谢。

回答

4

你有最新版本吗?我很好奇,所以我通过安装ELPA软件包(列为0.5版本)并启用global-company-mode来试用它,并且它不会在小型缓冲区中为我激活。 ELPA包也负责自动加载。

如果仍然存在问题,则可以使用minibuffer-setup-hook(在minibuffer获得焦点时调用),以便在该缓冲区中关闭公司模式。

FWIW,你的代码对我来说看起来有点奇怪。 let变量只用于以下行,因此并非真正需要,除非有一些我不知道的自动加载行为,如果您可以在没有类似声明的情况下成功调用global-company-mode,则自动加载必须是多余的 - 大概是图书馆自己的自动加载评论已被处理,或图书馆已被加载?

+0

感谢您链接到ELPA。我已经做了更多的调查,并更详细地解释了这个问题。如果你看看它,我将不胜感激。谢谢。 – 2011-03-15 09:51:51