如何知道emacs真模式名称?

时间:2015-01-10 11:55:03

标签: emacs

有时我会将配置选项从Internet复制到我的.emacs。有时他们不工作。

(add-hook 'laTeX-mode-hook 'turn-on-flyspell)

不起作用:

(add-hook 'LaTeX-mode-hook 'turn-on-flyspell)

(注意Latex中的大写字母)。但是,

(add-hook 'flyspell-mode-hook 'flyspell-buffer)

是对的。虽然Emacs在下方栏中显示“Fly”,但 M - : major-mode显示乳胶模式而不是乳胶模式。

我如何知道如何编写emacs模式名称?

2 个答案:

答案 0 :(得分:3)

听起来你实际上对模式的名称更感兴趣' 钩子变量而不是模式本身。

您有几种选择。我将根据发现flyspell-mode-hook

的建议做一些建议
  • M-x apropos-variable RET flyspell RET,然后在结果缓冲区中搜索hook
  • C-h v flyspell-,然后制表符完成
    • 每当你进入迷你缓冲区标签时,尝试
    • 是件好事
  • M-x find-function flyspell-mode RET会打开flyspell的源代码,然后您可以搜索hook
  • 如果您已配置Emacs以完成Emacs Lisp的完成,则只需输入

    即可
    (add-hook 'flyspell-
    

    进入.emacs缓冲区并让Emacs建议有效完成

  • Helmido等工具可以简化查找过程的过程

使用find-function技术和latex-mode(我完成标签),我发现我的Emacs版本调用了LaTeX模式函数latex-mode。搜索LaTeX-向我显示LaTeX-modelatex-mode的别名。

答案 1 :(得分:1)

您使用 M - : major-mode是好的,并为您提供正确的主要模式名称(即模式功能的符号名称)。

我不相信有一个标准功能可以列出当前缓冲区启用的次要模式的符号名称,但是你可以看到所有(已加载)次要模式带有 Ch v minor-mode-list的模式符号,因此如果您发现需要,则验证名称并不难。

模式 hook 的符号名称实际上是模式的符号名称,后缀为-hook

次要模式还(另外)还有-on-hook-off-hook

钩子变量在不使用时不一定存在,但是这个命名在标准宏中是硬编码的,用于定义模式(并在适当的时间运行它们的钩子);并且不使用这些宏的模式总是遵循相同的约定,以确保一致性。