3

我希望在打开 Emacs 时默认启用 which-function-mode。我已将以下几行添加到我的 .emacs 文件中。

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

当我打开一个 .cpp 文件并导航到一个函数的主体时,我没有在底部的状态栏中看到我应该看到的函数名称。如果我然后运行 ​​Mx which-function-mode,则消息是“禁用了哪个功能模式”,所以看起来我的 .emacs 文件中的行占用了但不太工作。

我是在我的 .emacs 文件中设置了错误的东西还是有其他问题?

4

3 回答 3

6

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

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

我认为您可能想为此使用“自定义”。

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

应该给你类似以下的东西:

替代文字

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

(which-function-mode t)

这是在 emacs 23 中,但我相信 22 应该是相似的....对于 emacs 21,我不相信自定义默认情况下在那里(已经很长时间了,虽然我可能是错的),你可能必须改用函数调用形式。

于 2009-11-13T19:41:12.607 回答
5

which-func-mode每当您加载文件时,您可能需要一个挂钩来自动打开。

尝试类似:


(add-hook 'c++-mode-hook '(lambda () (which-func-mode t)))
于 2009-11-13T18:02:44.547 回答
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)))

于 2014-11-30T04:20:32.847 回答