2012-12-12 92 views
1

我編寫了一個elisp函數和幾個defvar,我使用它們交互地添加增強單元測試宏。由於它與Boost一起使用,它只會在C++模式下使用。目前它在我的init文件中,所以它總是以每種模式加載。將功能添加到emacs主模式

我該如何做到這一點,所以這個功能只能在C++模式下使用,就好像我將它添加到主模式本身一樣。

+0

這真的取決於你在說什麼。你想要代碼被延遲加載?你是否希望僅在C++模式下綁定到鍵的命令? –

回答

3

如果你想你寫在需要時只加載的代碼,你可以把它變成自己的文件(比如說boost-unit-test.el),並從.emacs您可以添加:

(eval-after-load "cc-mode" '(require 'boost-unit-test)) 

注,這假定該文件在您的load-path中,並且具有(provide 'boost-unit-test)作爲其中一行。

現在,一旦加載了這個文件,那些變量和那些命令就被全局定義了,這就是Emacs的方式。這與將代碼保留在.emacs文件中沒有區別。無論哪種方式,它只會被加載/評估一次(除非您強制加載多次 - 但您必須努力做到這一點)。

+0

這正是我所期待的。 –