在迷你缓冲区中禁用公司模式

时间:2011-03-14 11:39:35

标签: emacs

我已将公司设置为全球负载:

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

问题是每次迷你缓冲区获得焦点时它会重新加载。有一种简单的方法可以禁用此行为吗?我想在每个文件缓冲区中启用它,但不是迷你缓冲区。

感谢。

更新

一些澄清。

首先,每当我切换到迷你缓冲区时,是什么让我认为company-mode会加载?好吧,每当我输入C-x的{​​{1}}时,迷你缓冲区都会显示“Pymacs loading ropemacs ......”并暂停一会儿。只有启用M-x才能观察到此行为,因此我将其归咎于global-company-mode

但是,为什么要责怪company company,对吧?所以我继续关闭{.1}}的加载,在我的.emacs文件中看起来像这样(直接从其安装说明中获取):

pymacs

在评论完最后一行并重新启动Emacs之后,即使全局启用pymacs,“Pymacs loading ropemacs ...”消息也消失了。但是,我仍然需要在(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) 工作之前手动评估company-mode

经过这个小小的调查,我想稍微改写原来的问题。我不熟悉Emacs中(company-mode)(global-company-mode t)的概念,所以我在这里征求意见:

我需要在.emacs文件中放置什么才能使require在每个文件缓冲区中自动打开(而不是在迷你缓冲区中),并启用Pymacs?

谢谢。

1 个答案:

答案 0 :(得分:4)

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

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

FWIW,你的代码对我来说有点奇怪。 let变量仅由以下行使用,因此实际上并不需要,除非有一些我不知道的自动行为,否则如果您可以成功调用global-company-mode,则自动加载必须是多余的没有类似的声明 - 可能是图书馆自己的自动加载评论已被处理,或者图书馆已经加载?