fisheva / Eva-Theme

A comfortable and semantic theme.
https://marketplace.visualstudio.com/items?itemName=fisheva.eva-theme
MIT License
452 stars 38 forks source link

2.6.3版本C/C++宏的颜色为函数蓝,不是变量白 #124

Closed Jin-Whu closed 4 months ago

Jin-Whu commented 4 months ago

Screenshot

image

Code Snippet

Notes

fisheva commented 4 months ago

我的显示是 WX20240522-010039@2x

解决方式:请在设置里搜索enhancedColorization,禁用 C_Cpp: Enhanced Colorization 选项。 WX20240522-005214@2x

如果不禁用C_Cpp: Enhanced Colorization 选项,而把你说的位置改为变量色,那会把应该显示函数色的地方也变成变量色。 WX20240522-005544@2x

Jin-Whu commented 4 months ago

C_Cpp: Enhanced Colorization禁用了的

fisheva commented 4 months ago

按下Ctrl+Shift+P(Windows)或Command+Shift+P(Mac), 选择检查TM作用域。查看 BUFFSIZE 的Scopes值,截图发下

Jin-Whu commented 4 months ago

image

fisheva commented 4 months ago

在VSCode的settings.json里添加以下设置,试下能不能把字体颜色样式改过来

"editor.tokenColorCustomizations": {
    "[Eva Dark Bold]": {
        "textMateRules": [
            {
                "scope": "entity.name.function.preprocessor.c,",
                "settings": {
                    "foreground": "#B0B7C3",
                    "fontStyle": ""
                },
            },
        ],
    },
},
Jin-Whu commented 4 months ago

试过上述方法没有效果,目前回退到2.6.0版本显示正常

fisheva commented 4 months ago

是一小个版本一小个版本回退的吗?试过2.6.2和2.6.1吗?

Jin-Whu commented 4 months ago

目前试了2.6.2,2.6.1,2.6.0,宏变量和宏函数都是显示为白色

fisheva commented 4 months ago

semantic token起作用时,宏变量和宏函数被定义的scope值是一样的,颜色必然一样,您希望改成都显示成白色吗?

Jin-Whu commented 4 months ago

宏变量和宏函数如果能分别显示不一样的颜色更好,目前更新到2.6.3,使用semantic token可以起到改变macro颜色的效果,但是宏变量和宏函数的颜色是一样的

image

image

fisheva commented 4 months ago
"editor.semanticHighlighting.enabled": false,
"C_Cpp.enhancedColorization": "disabled"

在关闭上述二个选项的前提下,我的显示就是这样

WX20240522-010039@2x

Jin-Whu commented 4 months ago

上述两个选项关闭后,仍不起作用 image image

fisheva commented 4 months ago

截图看下关闭后 BUFFSIZE SQR 4个地方的 scopes值,每个 scopes显示都截全 企业微信截图_20240522173037

Jin-Whu commented 4 months ago

关闭后,仍然会显示semantic token type,该区域显示比较大,textmate scope区域无法截图完整 image image image image

fisheva commented 4 months ago
"editor.semanticHighlighting.enabled": false,
"C_Cpp.enhancedColorization": "disabled"

在这二项都已经禁用的前提下,还有semantic token,我只能猜测您还有别的插件给这些字符加上了semantic token,影响了它们的显示。

关闭VSCode,找到您的VSCode插件文件夹,先把除Eva Theme的其它插件挪出来,启动VSCode,看显示效果(如果这一步就显示错误,跟我说)。

再关闭VSCode,挪一半插件回来,启动VSCode,看显示效果。

如此反复,如果某次挪回插件后,发现显示出错了,说明问题插件就在刚刚挪进去的那批。

最终找出问题插件。

Jin-Whu commented 4 months ago

确定了是clangd插件添加了semantic token,禁用clangd插件后,宏变量和宏函数分别显示为白色和蓝色

Jin-Whu commented 4 months ago

现在C/C++开发,clangd插件可以提供比微软的C/C++插件更好的语法解析功能,作者的主题能适配clangd插件吗?

fisheva commented 4 months ago

抱歉,我不懂C/C++,日常也使用不到。着色时只是找篇教程把所有示例代码复制放到VSCode里看Scopes值着色。

我建议您去搜下,或去clangd插件仓库issue问下是否有设置选项可以像 "C_Cpp.enhancedColorization": "disabled" 一样关闭掉该插件的semantic token。

适配clangd得靠日常使用者,在发现字符配色和样式不对时,尝试添加编写scopes规则将其修正,提pull request。这是个日积月累打补丁的过程。

fisheva commented 4 months ago

尝试添加编写scopes规则时,可以先在settings.json里像下面这样看效果

  "editor.tokenColorCustomizations": {
      "[Eva Dark Bold]": {
          "textMateRules": [
              {
                  "scope": "entity.name.function.preprocessor.c,",
                  "settings": {
                      "foreground": "#B0B7C3",
                      "fontStyle": ""
                  },
              },
          ],
      },
  },
Jin-Whu commented 4 months ago

好的,谢谢

Jin-Whu commented 4 months ago

使用如图所示的设置,semantic token不起作用了 image image

fisheva commented 4 months ago

"[c]"有父级属性吗,还是直接写在settings.json下?

Jin-Whu commented 4 months ago

在settings.json里面使用editor.semanticHighlighting.enabled: false不起作用,必须在language下指定才起作用

fisheva commented 4 months ago

新知识get, 谢谢分享!