gpt4 book ai didi

emacs - 在 emacs 的字符串中突出显示 ""

转载 作者:行者123 更新时间:2023-12-04 00:46:52 24 4
gpt4 key购买 nike

我有点 emacs 菜鸟,但不太确定如何找到它。我用 solarized light颜色主题,这是一个具有智能口音的低对比度主题,以保持可读性。他们在 vim 版本中做的一件事是突出显示字符串定界符(在某些语言中表示双引号和单引号)与字符串的其余部分不同,以使它们更加突出。

主题的 emacs 端口没有这个,但是我看到字体锁定机制发生了一些非常疯狂的事情(比如 http://www.emacswiki.org/emacs/HexColour ),所以我认为这是可能的。

那么是否可以突出显示字符串分隔符?如果是这样,我应该在哪里寻找有关如何操作的更多信息?

编辑:

试图让 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)))))

试图将它添加到每个模式(没有用)

然后我尝试用

替换钩子(Hook)表达式
(font-lock-add-keywords 'emacs-lisp '(("\\s\"\\|\\s|" 0 solarized-string-delimiter-face t)))

试图让事情正常工作,同样的事情(没有工作)

最佳答案

您可以使用 font-lock-add-keywords通过执行以下操作来突出显示字符串分隔符:

(font-lock-add-keywords 'foo-mode '(("\\s\"\\|\\s|" 0 'my-string-delimiter-face t)))

正则表达式 "\\s\"\\|\\s|"匹配单个字符,该字符必须具有语法类“字符串引号”(\\s\" 部分)或“通用字符串定界符”(\\s| 部分)。 \s匹配各种不同的字符语法类,您可以在 (elisp)Syntax Tables 下的 Elisp 手册中阅读有关内容和 (elisp)Regexp Backslash .

如果你看到它没有字符串转义,它会更容易阅读:\s"\|\s|

0表示将面应用于整个匹配的字符串,t最后使这个面覆盖字符串中已经存在的任何面(因为许多模式将突出显示整个字符串,包括带有 font-lock-string-face 或类似的分隔符)

'foo-mode可以是任何模式的引用名称(例如 'emacs-lisp-mode'php-mode )或 nil仅在当前缓冲区中进行此更改缓冲区本地。 (在那种情况下,你应该把它放在你想要应用它的模式的模式 Hook 中)

my-string-delimiter-face可以是任何现有的面孔,或者您可以通过执行以下操作来定义一个面孔:

(defface my-string-delimiter-face
'((t (:foreground "red" :weight bold)))
"My custom face for string delimiters")

关于emacs - 在 emacs 的字符串中突出显示 "",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7968346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com