0

我在 Emacs 中使用rhtml 模式。

当我以这样的方式编写哈希时,它:key => "value":key被正确着色。

但是对于key: "value"风格,着色不起作用。只改变了的颜色:

我试着改变一下 rhtml-mode 。如果文本 if 包含在 <% %> 标记中,则该模式似乎在内部加载 ruby​​-mode。奇怪的是,当我在 ruby​​ 模式下编写哈希时,两种类型的写作都被正确着色。

我在 Emacs24 中使用默认的 ruby​​ 模式。

如何找到定义哈希键颜色的位置(按行号)?

4

1 回答 1

0

简短的回答:C-h vrhtml-in-erb-keywords。这将打开一个缓冲区,显示 rhtml 关键字的正则表达式。将有一个链接直接指向它在 elisp 文件中定义的位置。你可以在这里看到它的定义。

将以下内容添加到您的 .emacs 文件中:

(add-hook 'rhtml-mode
          (lambda ()
           (font-lock-add-keywords nil
            '(("\\([0-9a-zA-Z_]*:\\)" 1
              font-lock-constant-face t)))))

这将使 Emacs 将由 确定的颜色应用于font-lock-constant-face与 regexp 匹配的任何内容"\\([0-9a-zA-Z_]*:\\)"。这可能比您想要的更多,因此您可能需要对其进行微调。

我不确定是否有一种特别简单的方法可以准确找出给定关键字的颜色所在的位置。你总是可以M-xdescribe-face用你想要的信息来处理这个词。这将告诉您 Emacs 认为它​​应该如何着色 - 类似于font-lock-keyword-face. C-h vfont-lock-keyword会告诉你 Emacs 是如何决定的,但不是很有帮助。

最简单的方法可能只是打开您所在模式的源代码并在其中搜索它定义关键字的位置。您可以使用 打开源代码C-h frhtml-mode,这将打开一个带有源链接的帮助缓冲区。

于 2013-08-08T08:53:20.963 回答