如何为Emacs文件设置语法高亮

4

我的.emacs文件就像是为我提供指引的地图,我在其中引用了许多文件。它们的扩展名为.emacs,例如:

 fileName.emacs

问题在于只有~/.emacs文件有语法高亮。
我想要所有以.emacs结尾的源文件都有语法高亮。
你怎样才能让所有的.emacs源文件都有语法高亮呢?
2个回答

13

是的。我假设这些是Lisp文件,因此在查看这些文件时需要Emacs自动处于Lisp模式。有两个解决方案:

  1. 最简单的方法是将扩展名更改为.el。默认情况下,这些文件将以Lisp模式打开。

  2. 如果出于某种原因你确实想要使用.emacs扩展名,你需要将以下内容添加到~/.emacs文件的任何位置:

    (setq auto-mode-alist 
          (append '((".*\\.emacs\\'" . lisp-mode))
                  auto-mode-alist))
    
    auto-mode-alist 是 Emacs 用来确定使用哪个 major mode 的列表。每个条目都是一个列表,第一项是 Emacs 用于测试文件名的正则表达式,如果为真,则使用第三项中给出的模式。

    (我不知道第二项是什么,我从未使用过它。)

    我强烈建议选择选项1。


1
@masi 在被接受的答案中,你应该使用emacs-lisp-mode而不是lisp-mode,因为所有这些文件都将是elisp,而不是lisp。这种区别很小,可能没有什么重大意义,但是Emacs的开发人员一定有某种原因编写了单独的emacs-lisp-mode,对吧? - vedang
3
"第二项" 是指创建一个字面上带引号的 cons 对象的符号。cons 是列表的底层构造块。'(a . (b . nil))、(cons 'a (cons 'b nil))、'(a b)' 和 (list a b) 是四种表示相同字面列表的不同方式。 - Justin Smith
我在我的 ~/.emacs 文件中有以下行: (setq auto-mode-alist (append '((".*\\.bashrc__common\\'" . sh-mode)) auto-mode-alist)). 但是,当我打开自定义文件 ~/.bashrc__common 时,仍然无法获得语法突出显示,即使我在 ~/.emacs 文件中不包括该文件,而在 ~/.bashrc 上却可以。为什么会这样呢? - HelloGoodbye

8
您可以在文件的第一行中设置模式:
;-*-Lisp-*-

这是一条Lisp的注释,但当它被读入缓冲区时会导致Emacs切换到Lisp模式 (参考)。


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