声明应该打开emacs文件的模式

时间:2010-03-07 17:35:12

标签: emacs

如何在文件中编写应在emacs中打开此特定文件的模式?例如,假设我有一个名为“foo”的脚本。在foo的主体中,我想提出类似的内容:

# sh-mode
# rest of my script here...

到emacs时,在emacs中打开“foo”时应该使用“sh-mode”。注意,我不想通过.emacs的文件扩展名来执行此操作。这里的要点是“foo”的文件名没有说明它是什么类型的文件 - 我希望从文件本身中指定它。有没有办法做到这一点?

感谢。

4 个答案:

答案 0 :(得分:23)

我通常会添加以下内容:

# -*- mode: sh -*-

位于文件顶部。有关详细信息,请参阅emacs documentation

答案 1 :(得分:7)

另请注意,如果第一行是hash-bang注释,Emacs也会正确识别文件的类型,例如

#!/bin/sh

答案 2 :(得分:4)

您可以指定emacs在任何文件的第一行或第二行中使用的文件局部变量(以及更多)。

有关详细信息,请参阅:http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables

因此,对于您的情况,您可以使用:

# -*- mode: sh; -*-

享受!

答案 3 :(得分:2)

另见magic-mode-alist。

magic-mode-alist is a variable defined in `files.el'.

Documentation:
Alist of buffer beginnings vs. corresponding major mode functions.
Each element looks like (REGEXP . FUNCTION) or (MATCH-FUNCTION . FUNCTION).
After visiting a file, if REGEXP matches the text at the beginning of the
buffer, or calling MATCH-FUNCTION returns non-nil, `normal-mode' will
call FUNCTION rather than allowing `auto-mode-alist' to decide the buffer's
major mode.

If FUNCTION is nil, then it is not called.  (That is a way of saying
"allow `auto-mode-alist' to decide for these files.")