【问题标题】:How can I color certain things in Emacs?如何在 Emacs 中为某些内容着色?
【发布时间】:2009-05-17 21:26:58
【问题描述】:

我在 emacs 中编写 Django/Python,我希望像 {% comment %} FOO {% endcomment %} 这样的东西变成橙色。

如何为重要的 Django 模板标签设置一些颜色?

【问题讨论】:

    标签: python django emacs syntax-highlighting


    【解决方案1】:

    您可以使用django-modeMuMaMo 等专用模式。

    如果您想要一些非常基本的东西,并且假设您在 html-mode 中进行编辑,您可以尝试以下操作:

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

    (只需将以上行添加到您的.emacsinit.el,然后对其进行评估或重新启动emacs)。

    【讨论】:

    • 请注意,如果您在编辑时添加了新标签,则需要重新评估函数 (M-x django-highlight-cmets) 以突出显示新标签。在 html-mode 中添加 font-lock 关键字似乎是一个更好的选择。
    • 至少在 Emacs 23 预测试(23.0.93.1,这是我测试解决方案的地方),no 需要重新评估。稍后输入的任何完整的 cmets(如 {% ... %})也会立即突出显示。但是,我确实同意您的观点:作为一个长期解决方案,定义关键字或使用识别语法的“适当”模式(django、MuMaMo 等)肯定会更好。
    【解决方案2】:

    这就是我所做的。它比上面的代码更通用一点,它使用了内置的字体锁定机制。

    (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)))
    

    【讨论】:

    【解决方案3】:

    Herearesomelinks。我在谷歌上找到了它们。似乎没有一个完全完整的“官方”解决方案可以解决这个问题,但有一些可能非常有用的替代品可供使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 2014-05-15
      • 1970-01-01
      • 2017-03-25
      相关资源
      最近更新 更多