我在Emacs中使用rhtml-mode。
当我以:key => "value"
的方式编写哈希时,:key
已正确着色。
但是使用key: "value"
样式,着色不起作用。仅更改:
的颜色。
我试着改变一下rhtml模式。如果文本if被括在< %%>中,则该模式似乎在内部加载ruby-mode。标签。 奇怪的是,当我在ruby模式下编写Hash时,两种类型的写入都被正确着色。
我在Emacs24中使用默认的ruby-mode。
如何找到定义Hash键颜色的位置(按行号)?
答案 0 :(得分:0)
答案简短: C-h v rhtml-in-erb-keywords
。这将打开一个缓冲区,显示rhtml关键字的正则表达式。将直接指向elisp文件中定义的链接。您可以看到其定义here。
将以下内容添加到.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
确定的着色应用于与正则表达式"\\([0-9a-zA-Z_]*:\\)"
匹配的任何颜色。这可能比您想要的更多,因此您可能需要对其进行微调。
我不确定是否有一种特别简单的方法可以找到确切找到给定关键字的颜色的位置。您可以随时使用您想要信息的单词上的 M-x describe-face
。这将告诉您Emacs如何认为应该着色 - 类似于font-lock-keyword-face
。 C-h v font-lock-keyword
会告诉你Emacs是如何决定的,但不是以非常有用的方式。
最简单的方法可能只是打开您所在模式的源代码,然后搜索它定义关键字的位置。您可以使用 C-h f rhtml-mode
打开源代码,这将打开一个包含指向源的链接的帮助缓冲区。