emacs忽略关键字后的突出显示

emacs忽略关键字后的突出显示,emacs,colors,highlight,Emacs,Colors,Highlight,我正在为emacs开发一个pamcrash-mode.el来简化我的生活。突出显示单个短语可以通过使用 defvar-pamcrash-u红 '名称传感器数据检查单元标题时间包括' defvar pamcrash docu '自动基准基础变量BASISVAR。资料 比尔贝特贝斯雷邦历史版本卡本奇 defvar pamcrash字体锁定默认值 ` ,regexp opt pamcrash-keywords_red。字体锁定警告面 ,regexp opt pamcrash docu'单词。字体锁定注

我正在为emacs开发一个pamcrash-mode.el来简化我的生活。突出显示单个短语可以通过使用

defvar-pamcrash-u红 '名称传感器数据检查单元标题时间包括' defvar pamcrash docu '自动基准基础变量BASISVAR。资料 比尔贝特贝斯雷邦历史版本卡本奇 defvar pamcrash字体锁定默认值 ` ,regexp opt pamcrash-keywords_red。字体锁定警告面 ,regexp opt pamcrash docu'单词。字体锁定注释面 定义派生模式pamcrash模式基本模式PAM崩溃模式 setq字体锁定默认值pamcrash字体锁定默认值 提供“pamcrash”模式 但是,Pam崩溃文件中的某些行如下所示:

    NAME This is a string including the keyword SENSOR
    NAME This is a string including the keyword Autor

SENSOR/Autor通常是关键字,必须突出显示,但此处有字符串的一部分,不应突出显示。如何停用名称后关键字的颜色对比?

我认为应该限制相关正则表达式仅在关键字处于正确位置或上下文时匹配,而不是专门停用名称关键字后的传感器/自动高亮显示

例如,如果名称和传感器关键字应出现在行首,请在正则表达式中强制此约束。例如,您可以像这样构建匹配的正则表达式:

defvar pamcrash字体锁定默认值 ` ,concat^[:space:][]*regexp opt pamcrash-keywords_red。字体锁定警告面 ,concat^[:space:][]*regexp opt pamcrash docu'字。字体锁定注释面
尝试在规则之前添加以下规则:

("\\<NAME\\> *\\(.*\\)" 1 font-lock-string-face)
其中keep表示如果已经有一个颜色读取:字符串颜色,那么它不应该改变它


注意:这不应与字体锁根据语法表中的信息执行的语法着色混淆。

如果切换到ViM,则有完整的pamcrash语法可用。

通常,字符串应在关键字之前突出显示,以便关键字突出显示过程将跳过字符串内容。有一个通用的语法规则可以用来匹配字符串吗?嗨,Francesco,谢谢你的快速回复,很抱歉我耽搁了。不幸的是,你的提示不起作用。要么什么都没发生。。。在该行下方,regexp opt pamcrash-keywords_red。字体锁定警告面,否则什么都不会发生。我编辑了答案,以便更清楚地说明concat^[:space:]*应该如何集成到代码中。
( ,(regexp-opt pamcrash-keywords_red 'words) 0 font-lock-warning-face keep)
( ,(regexp-opt pamcrash-docu 'words) 0 font-lock-comment-face keep)