在Emacs font-lock-mode中对字符串文字中的变量引用进行Fontifying

时间:2008-10-25 14:18:16

标签: emacs font-lock

当我在Emacs ruby​​-mode中键入以下代码时,“#{foo}”会以与封闭字符串不同的颜色显示。我如何在自己的Emacs模式下执行此操作?我试图破译ruby模式的源代码,但在合理的时间内无法理解它。

"a #{foo} a"

2 个答案:

答案 0 :(得分:5)

终于明白了。答案是,fontification规则中的“override”参数应设置为t,这意味着给定的face将覆盖字符串face。有关详细信息,请参阅变量“font-lock-keywords”的文档。这是一个例子:

(define-derived-mode temp-mode fundamental-mode "Temp"
  "Temporary major mode."
  (set (make-local-variable 'font-lock-defaults)
       '((temp-mode-font-lock-keywords) nil nil nil nil)))

(defconst temp-mode-font-lock-keywords
  (list (list "$[A-Za-z0-9]+" 0 font-lock-variable-name-face t)))

答案 1 :(得分:1)

搜索ruby-mode.el设置font-lock-syntactic-keywords的位置:

(setq ruby-font-lock-syntactic-keywords
  '(
    ;; #{ }, #$hoge, #@foo are not comments
    ("\\(#\\)[{$@]" 1 (1 . nil))

以下是类似font-lock-keywords变量的一些文档,您应该使用它来完成相同类型的fontification。