Emacs设置哪个功能模式

时间:2009-11-13 17:57:38

标签: emacs elisp dot-emacs

我希望在打开Emacs时默认启用哪个功能模式。我已将以下行添加到我的.emacs文件中。

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

当我打开.cpp文件并导航到函数体时,我没有像我应该在底部的状态栏中看到函数名。如果我然后运行M-x which-function-mode,则消息是“禁用了哪个功能模式”,因此它看起来像我的.emacs文件中的行,但不是很有效。

我在.emacs文件中设置了错误的内容还是出现了其他问题?

3 个答案:

答案 0 :(得分:6)

不幸的是,setq不适用于此,因为这是一个函数,而不是变量。您需要使用'customize'来设置变量,或者调用'which-function-mode'函数传递't'的值。

'customize'是emacs现在处理大多数软件包功能的方式。经常做“M-x customize-apropos”后跟一个包的名称将为你提供该包的大部分配置选项。如果您知道配置参数的特定名称,还可以使用“customize-variable”转到该特定参数。请注意,'customize-variable'中的项目本身并不总是变量 - 通常自定义调用函数或执行一些其他活动来实际执行配置。

我想你可能想为此使用'自定义'。

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

应该给你以下内容:

alt text

将值切换为“on”,然后为当前会话设置并保存以供将来的会话使用。如果您不喜欢自定义,可以从.emacs中调用该函数:

(which-function-mode t)

这是在emacs 23,但我相信22应该是类似的....对于emacs 21,我不相信自定义在那里默认(这已经很长时间了,虽然所以我可能是错的),你可能不得不使用函数调用表单。

答案 1 :(得分:5)

您可能需要一个挂钩,以便在加载文件时自动启用which-func-mode

尝试类似:


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

答案 2 :(得分: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)))