2011-03-14 44 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