在 Emacs 字体锁定模式中对字符串文字内的变量引用进行字体化

发布于 2024-07-07 17:01:47 字数 159 浏览 13 评论 0原文

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

"a #{foo} a"

When I type the following code in Emacs ruby-mode, the "#{foo}" is fontified in a different color than the enclosing string. How do I do this in my own Emacs mode? I tried to decipher the ruby-mode source code but couldn't understand it in a reasonable amount of time.

"a #{foo} a"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

荒岛晴空 2024-07-14 17:01:47

终于想通了。 答案是字体化规则中的“override”参数应该设置为t,这意味着给定的面孔将覆盖字符串面孔。 有关详细信息,请参阅变量“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)))

Finally figured it out. The answer is that the "override" parameter in a fontification rule should be set to t, which means that the given face will override the string face. See the documentation for the variable "font-lock-keywords" for details. Here's an example:

(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)))
枕花眠 2024-07-14 17:01:47

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

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

这里有一些类似的文档 font-lock-keywords 变量,您应该使用它来完成相同类型的字体化。

Search for where ruby-mode.el sets font-lock-syntactic-keywords:

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

Here's some documentation on the similar font-lock-keywords variable, which is what you should use to accomplish the same type of fontification.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文