cc-mode里#ifdef宏里的内容都是和comment一样的颜色,如何highlight呢?

我最近一直使用doom-emacs, 看源码时发现如果代码里有#if, #ifdef宏包含的内容都是灰色的,和注释一个颜色,如何让它显亮呢? 这样的设置有点蠢,因为宏定义是外部传入或者config里定义的,emacs为何要做决定是否正常代码还是宏内无效代码呢,如果是’#if 0’就算了,其他的它也乱搞。 看了下原生的emacs, 不会默认灰色,应该是哪个设置生效的。

请问有知道的朋友吗?谢谢!

lsp server会读你的 compile_commands.json,会反应到你当前的代码中。emacs默认确实不会

光标放在灰色区域,然后 C-u C-x = , 看看输出,估计是使用的 face 是 ccls-skipped-range-face ,推测是 ccls 认为该区域被预处理过滤掉了。如果是的话,检查 ccls 配置吧。

谢谢, (setq ccls-enable-skipped-ranges nil) 可以生效