如何在Emacs中为某些元素着色?

4 投票
3 回答
924 浏览
提问于 2025-04-15 11:39

我在emacs里用Django/Python编程,想让像{% comment %} FOO {% endcomment %}这样的代码变成橙色。

我该怎么设置一些颜色,让重要的Django模板标签显示出来呢?

3 个回答

1

在这里有一些链接,这个还有这个以及这个最后这个。我是在谷歌上找到的。看起来没有一个完全完整的“官方”解决方案来解决这个问题,但有一些可能相当好用的替代方案可以选择。

3

我这样做。这段代码比上面的代码更通用一些,并且使用了内置的字体高亮机制。

(defvar django-tag-face (make-face 'django-tag-face))
(defvar django-variable-face (make-face 'django-variable-face))
(set-face-background 'django-tag-face "Aquamarine")
(set-face-foreground 'django-tag-face "Black")
(set-face-background 'django-variable-face "Plum")
(set-face-foreground 'django-variable-face "Black")


(font-lock-add-keywords
 'html-mode
 '(("\\({%[^%]*%}\\)" 1 django-tag-face prepend)
   ("\\({{[^}]*}}\\)" 1 django-variable-face prepend)))
6

你可以使用一些专门的模式,比如 django-mode 或者 MuMaMo

如果你想要一些非常基础的功能,并且假设你是在 html-mode 下编辑,你可以试试下面的代码:

(defun django-highlight-comments ()
  (interactive "p")
  (highlight-regexp "{%.*?%}" 'hi-orange))
(add-hook 'html-mode-hook 'django-highlight-comments)

(只需把上面的代码添加到你的 .emacsinit.el 文件中,然后执行一下或者重启 emacs 就可以了。)

撰写回答