首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs中的font-lock和字符串文字着色之间的冲突

Emacs中的font-lock和字符串文字着色之间的冲突
EN

Stack Overflow用户
提问于 2013-09-11 03:10:54
回答 1查看 382关注 0票数 1

在Emacs中,我正在编写一个PHP文件,它混合了PHP和非PHP代码,它将处于C++模式。我希望PHP代码被突出显示与链接粉红色的背景,以便使它在视觉上突出。

为此,我使用了font-lock设置:

代码语言:javascript
复制
(make-face 'font-lock-special-macro-face)
(set-face-background 'font-lock-special-macro-face "pink")
(defun add-custom-keyw()
  "adds a few special keywords for c and c++ modes"
  ;
  (font-lock-add-keywords nil
   '(
     ("<\\?[^\\?]*\\?>" . 'font-lock-special-macro-face )
     ; more of those would go here
    )
  )
)
(setq font-lock-multiline t)
(add-hook 'c++-mode-hook 'add-custom-keyw)

正则表达式匹配典型的PHP标记及其包含的文本。但是,如果PHP块的主体中有任何字符串文字,则突出显示将失败。我认为这是因为上面定义的表面与字符串文字的颜色冲突,默认情况下字符串文字是彩色文本。

我应该怎么做才能解决这个问题?如果可能的话,我想保留两种配色方案(突出显示和彩色字符串文字)。

下面是一个示例:

代码<?= $className ?>以粉色背景突出显示。

代码<?= inputs_to_vector($factors, 'factors') ?>没有突出显示的背景,字符串文本'factors'以红色文本显示。

无论使用的是前导标记<?还是<?=,都会发生这种情况。

EN

回答 1

Stack Overflow用户

发布于 2013-09-11 05:59:13

试着用这个来代替你的性生活:

代码语言:javascript
复制
 '("<\\?[^\\?]*\\?>" 0 font-lock-special-macro-face t)
                                                    ^

最后一部分,t意味着这个突出显示应该覆盖相同文本的任何现有突出显示。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18727019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档