我认为修改 font lock 不应该是首先考虑,解决问题思路应该是这样的:
-
先检查 lsp 是否安装&配置正确。
如果 lsp 配置都不正确了,此时修改 font lock 就舍本求末了。
-
是否 ls 本身的 bug。
如果 ls 安装&配置正确且已经启用,
#if ...
条件成立,其包裹的代码是可以跳转和高亮的。我之前也遇到类似问题:
#if
条件成立,代码仍然是灰色 -->> 幫忙改進 C++ LSP 體驗 #58,选用正确 libclang 重编之后就正常了 -->> 幫忙改進 C++ LSP 體驗 #63。 虽然不完全一样,但说明 ls 存在 bug 的可能性。按理说,只要修改源代码&存盘,ls 立即就会解析。可以编译 debug 版本,把 log 抓出来看看,ls 是否有立即响应代码变更。
APPEND 2018-09-06 18.40.43
把以前的测试代码翻出来,录了一组动图: