比如下面这段代码
#ifdef (CONFIG_ARM64_64K_PAGES)
#define pud_sect(pud) (0)
#define pud_table(pud) (1)
#else
#define pud_sect(pud) ((pud_val(pud) & PUD_TYPE_MASK) == \
PUD_TYPE_SECT)
#define pud_table(pud) ((pud_val(pud) & PUD_TYPE_MASK) == \
PUD_TYPE_TABLE)
#endif
如果CONFIG_ARM64_64K_PAGES为真,那么#else后面的就灰色显示,#else前面的就正常显示。
如果CONFIG_ARM64_64K_PAGES为假,那么#else后面的就正常显示,#else前面的就灰色显示。
今天在同事vscode上看到一个这个功能,感觉很好用,不知道emacs有没有办法实现。
Google到hide-ifdef-mode
模式,但是enable后显示好像没什么变化。
我记得之前用 Spacemacs 时,有个项目正确生成了 compile_commands.json,language server 用的是 ccls,看到过这样的效果。
Youmu
3
要用 hideif 的话得自己用 hide-ifdef-define
来添加对应的宏定义,或者也可以自己写个简单的读取函数从 compile_commands.json 里解析出来新定义的宏。
如果你用 ccls 的话是自带了这个功能。变灰度的区域叫做 skipped region, ccls 开启 semantic highlight 即可。
多谢,目前用的clangd,不知道它有没有这个功能。
多谢,目前用的clangd,不知道有没有这个功能。
Youmu
6
clangd 目前还没有这个功能哦,现在这个功能是 ccls 独家的