2009-11-13 75 views
3

我想在打開Emacs時默認啓用which-function-mode。我已將以下行添加到我的.emacs文件中。Emacs設置哪個函數模式

(setq which-func-mode t) 
(setq which-function-mode t) 

當我打開.cpp文件並導航到一個函數體,我不是在底部的狀態欄中像我應該看到函數名。如果我然後運行M-x which-function-mode,則消息是「禁用哪種功能模式」,因此它看起來像我的.emacs文件中的行需要但不是很有效。

我在我的.emacs文件中設置了錯誤的東西還是出現其他問題?

回答

6

不幸的是setq不會爲這方面的工作,因爲這是一個功能,而不是一個變量。您需要使用'customize'來設置變量,或者調用傳遞't'值的'which-function-mode'函數。

'自定義'是emacs現在處理大多數軟件包配置功能的方式。通常在執行'M-x customize-apropos'後面加上軟件包的名稱將爲您提供該軟件包的大部分配置選項。如果您知道配置參數的具體名稱,則還可以使用'customize-variable'轉到該特定參數。請注意,'customize-variable'中的項目本身並不總是變量 - 通常會自定義調用函數或執行其他一些活動來實際執行配置。

我想你可能想使用'自定義'。

M-x customize-variable<RET> 
which-function-mode 

應該給你類似以下內容:

alt text

切換到「開」,則當前會話設置的值,並保存爲將來的會話。如果你不喜歡定製,你可以調用該函數從你的.emacs:

(which-function-mode t) 

這是在Emacs 23,但我相信22應該是相似的....爲Emacs 21,我不我相信定製是在默認情況下(這已經很長時間了,儘管我可能是錯的),你可能不得不使用函數調用形式。

+0

感謝您的解釋,即幫助。在我的自定義文件中設置它工作正常。 – 2009-11-15 18:34:20

5

您可能需要掛鉤才能在加載文件時自動打開which-func-mode

試着這麼做:


(add-hook 'c++-mode-hook '(lambda() (which-func-mode t))) 
1

In your init.el or wherever you store your emacs configuration simply place the following line:

(which-function-mode 1)

它只應該預設電臺模式和組織模式。我只在一個.txt文件中進行了測試,以確保它沒有出現。如果你需要的粒度做這樣的事情:

(add-hook 'python-mode-hook (lambda() (which-function-mode 1)))