Emacs 设置 which-function-mode

3

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

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

当我打开一个.cpp文件并导航到函数体时,我在底部状态栏中没有看到函数名,就像应该看到的那样。如果我运行M-x which-function-mode,消息是“Which-Function mode disabled”,因此看起来我的.emacs文件中的行有效,但不完全工作。
我是设置了错误的内容在我的.emacs文件中吗?还是其他什么地方出了问题?
3个回答

6
很遗憾,setq不能用于此,因为这是一个函数,而不是一个变量。您需要使用“customize”来设置变量,或者调用“which-function-mode”函数并传递值“t”。
“自定义”是Emacs如今处理大多数包功能配置的方式。通常,使用'M-x customize-apropos',然后跟随包的名称将为您提供大部分该包的配置选项。如果您知道配置参数的特定名称,还可以使用“customize-variable”转到该特定参数。请注意,“customize-variable”中的项目并不总是变量本身 - 通常,自定义调用函数或执行其他活动以实际执行配置。
我认为您可能想要使用“customize”来完成此操作。
M-x customize-variable<RET>
which-function-mode

你应该得到类似以下的东西:

alt text

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

(which-function-mode t)

这是针对Emacs 23的,但我认为22应该类似。对于Emacs 21,我不认为默认情况下有自定义功能(虽然很久以前了,所以我可能错了),你可能需要使用函数调用形式。


谢谢您的解释,非常有帮助。将其设置在我的自定义文件中运行得很好。 - Stephen Burke

5

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

尝试以下代码:


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

1
在你的init.el或者任何存储emacs配置的地方,只需添加以下一行代码:(which-function-mode 1)。它仅适用于编程模式和org模式。我仅在.txt文件中测试过以确保其不会出现。如果需要细分,请执行以下操作:(add-hook 'python-mode-hook (lambda() (which-function-mode 1)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接