Closed Jin-Whu closed 4 months ago
我的显示是
解决方式:请在设置里搜索enhancedColorization,禁用 C_Cpp: Enhanced Colorization 选项。
如果不禁用C_Cpp: Enhanced Colorization 选项,而把你说的位置改为变量色,那会把应该显示函数色的地方也变成变量色。
C_Cpp: Enhanced Colorization禁用了的
按下Ctrl+Shift+P(Windows)或Command+Shift+P(Mac), 选择检查TM作用域。查看 BUFFSIZE 的Scopes值,截图发下
在VSCode的settings.json里添加以下设置,试下能不能把字体颜色样式改过来
"editor.tokenColorCustomizations": {
"[Eva Dark Bold]": {
"textMateRules": [
{
"scope": "entity.name.function.preprocessor.c,",
"settings": {
"foreground": "#B0B7C3",
"fontStyle": ""
},
},
],
},
},
试过上述方法没有效果,目前回退到2.6.0版本显示正常
是一小个版本一小个版本回退的吗?试过2.6.2和2.6.1吗?
目前试了2.6.2,2.6.1,2.6.0,宏变量和宏函数都是显示为白色
semantic token起作用时,宏变量和宏函数被定义的scope值是一样的,颜色必然一样,您希望改成都显示成白色吗?
宏变量和宏函数如果能分别显示不一样的颜色更好,目前更新到2.6.3,使用semantic token可以起到改变macro颜色的效果,但是宏变量和宏函数的颜色是一样的
"editor.semanticHighlighting.enabled": false,
"C_Cpp.enhancedColorization": "disabled"
在关闭上述二个选项的前提下,我的显示就是这样
上述两个选项关闭后,仍不起作用
截图看下关闭后 BUFFSIZE SQR 4个地方的 scopes值,每个 scopes显示都截全
关闭后,仍然会显示semantic token type,该区域显示比较大,textmate scope区域无法截图完整
"editor.semanticHighlighting.enabled": false,
"C_Cpp.enhancedColorization": "disabled"
在这二项都已经禁用的前提下,还有semantic token,我只能猜测您还有别的插件给这些字符加上了semantic token,影响了它们的显示。
关闭VSCode,找到您的VSCode插件文件夹,先把除Eva Theme的其它插件挪出来,启动VSCode,看显示效果(如果这一步就显示错误,跟我说)。
再关闭VSCode,挪一半插件回来,启动VSCode,看显示效果。
如此反复,如果某次挪回插件后,发现显示出错了,说明问题插件就在刚刚挪进去的那批。
最终找出问题插件。
确定了是clangd插件添加了semantic token,禁用clangd插件后,宏变量和宏函数分别显示为白色和蓝色
现在C/C++开发,clangd插件可以提供比微软的C/C++插件更好的语法解析功能,作者的主题能适配clangd插件吗?
抱歉,我不懂C/C++,日常也使用不到。着色时只是找篇教程把所有示例代码复制放到VSCode里看Scopes值着色。
我建议您去搜下,或去clangd插件仓库issue问下是否有设置选项可以像 "C_Cpp.enhancedColorization": "disabled"
一样关闭掉该插件的semantic token。
适配clangd得靠日常使用者,在发现字符配色和样式不对时,尝试添加编写scopes规则将其修正,提pull request。这是个日积月累打补丁的过程。
尝试添加编写scopes规则时,可以先在settings.json里像下面这样看效果
"editor.tokenColorCustomizations": {
"[Eva Dark Bold]": {
"textMateRules": [
{
"scope": "entity.name.function.preprocessor.c,",
"settings": {
"foreground": "#B0B7C3",
"fontStyle": ""
},
},
],
},
},
好的,谢谢
使用如图所示的设置,semantic token不起作用了
"[c]"有父级属性吗,还是直接写在settings.json下?
在settings.json里面使用editor.semanticHighlighting.enabled: false不起作用,必须在language下指定才起作用
新知识get, 谢谢分享!
Screenshot
Code Snippet
Notes