突出显示“&引用;在emacs的字符串中
我有点像EmacsNoob,但不太确定如何找到这个。我使用颜色主题,这是一个低对比度的主题,带有智能口音,以保持可读性。在vim版本中,它们所做的一件事是突出显示字符串分隔符(在某些语言中表示双引号和单引号),使其与字符串的其余部分不同,从而使它们更加突出 主题的emacs端口没有这个功能,但是我看到字体锁定机制出现了一些非常疯狂的事情(像这样),所以我认为这是可能的 那么有可能突出显示字符串delimeters吗?如果是这样,我应该在哪里寻找更多关于如何做的信息 编辑: 试图让Jon O.的答案起作用。首先我试过突出显示“&引用;在emacs的字符串中,emacs,font-lock,Emacs,Font Lock,我有点像EmacsNoob,但不太确定如何找到这个。我使用颜色主题,这是一个低对比度的主题,带有智能口音,以保持可读性。在vim版本中,它们所做的一件事是突出显示字符串分隔符(在某些语言中表示双引号和单引号),使其与字符串的其余部分不同,从而使它们更加突出 主题的emacs端口没有这个功能,但是我看到字体锁定机制出现了一些非常疯狂的事情(像这样),所以我认为这是可能的 那么有可能突出显示字符串delimeters吗?如果是这样,我应该在哪里寻找更多关于如何做的信息 编辑: 试图让Jon O.的答
(defface my-string-delimiter-face
'((t (:foreground "red" :weight bold)))
"My custom face for string delimiters")
(add-hook 'after-change-major-mode-hook
(lambda ()
(font-lock-add-keywords nil '(("\\s\"\\|\\s|" 0 solarized-string-delimiter-face t)))))
试图将其添加到每个模式中(不起作用)
然后我试着用
(font-lock-add-keywords 'emacs-lisp '(("\\s\"\\|\\s|" 0 solarized-string-delimiter-face t)))
为了让事情顺利进行,同样的事情(没有成功)您可以使用
字体锁定添加关键字来突出显示字符串分隔符,方法如下:
(font-lock-add-keywords 'foo-mode '(("\\s\"\\|\\s|" 0 'my-string-delimiter-face t)))
(defface my-string-delimiter-face
'((t (:foreground "red" :weight bold)))
"My custom face for string delimiters")
regexp“\\s\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/code>匹配一个字符,该字符必须具有语法类“字符串引号”(\\s\\\\\\\\\
部分)或“通用字符串分隔符”\s
匹配各种不同的字符语法类,您可以在Elisp手册中的(Elisp)语法表
和(Elisp)Regexp反斜杠
下阅读这些字符语法类
如果不进行字符串转义就可以看到它,那么阅读起来就容易一些:\s“\\\\s”
0
意味着将该面应用于整个匹配字符串,最后的t
使该面覆盖字符串上已经存在的任何面(因为许多模式将突出显示整个字符串,包括带有字体锁定字符串面的分隔符
或类似的分隔符)
'foo-mode
可以是任何模式的引用名称(例如'emacs-lisp-mode
,'php-mode
),或nil
,以使此更改缓冲区仅在当前缓冲区中本地。(在这种情况下,您可能应该将其放入要应用它的模式的模式挂钩中)
我的字符串分隔符面
可以是任何现有面,也可以通过执行以下操作来定义一个面:
(font-lock-add-keywords 'foo-mode '(("\\s\"\\|\\s|" 0 'my-string-delimiter-face t)))
(defface my-string-delimiter-face
'((t (:foreground "red" :weight bold)))
"My custom face for string delimiters")
对于一个冗长而杂乱无章的问题,回答得很好,但似乎无法让它正常工作(在问题的编辑中解释,因为这是一堆代码)感谢您的帮助!@MattBriggs:我想您可能需要在面名称(solarized string delimiter face
)之前加上引号。
)。我总是忘记这一点,因为默认字体锁定面既可以作为变量也可以作为引用符号。我编辑了我的答案以反映这一点——它现在似乎对我有用,对你有帮助吗?@MattBriggs:另外,在上面的第二个示例中,你需要编写(字体锁定添加关键字'emacs lisp mode…
,因为emacs lisp mode
是主要模式的全称。完全正确:D谢谢,伙计,我学到了很多emacs的知识,我很高兴我的主题看起来更像我习惯的主题!没问题,很高兴它很有用!