fisheva / Eva-Theme

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

修复泛型识别错误 #14

Closed archiewx closed 5 years ago

archiewx commented 5 years ago

image

这里死别有问题,如果这样: image 正常了。但是格式化程序不允许这样,所以进行了修复。

archiewx commented 5 years ago

我用的dark 主题,另外几个同理。

fisheva commented 5 years ago

能把你这个代码复制一份吗? 我对照代码, 再看你提交的主题修改才好看懂 你的修改改变了哪些内容。

archiewx commented 5 years ago
FutureBuilder<List<SaleOrderEntity>>(
                      future: _fetchList(),
                      builder: (BuildContext context, AsyncSnapshot snapshot) {
                        if (snapshot.hasData) {
                          return ListView(
                            padding: EdgeInsets.zero,
                            physics: AlwaysScrollableScrollPhysics(),
                            children: _fitWidgets(snapshot.data),
                          );
                        }
                        return CupertinoActivityIndicator();
                      },
                    ),

这段代码。

archiewx commented 5 years ago

双箭头位置

fisheva commented 5 years ago

我看懂您是把"keyword.operator.bitwise" 从#56B7C3变成#CF68E1。 但其实在这段代码里, 这二个颜色都不该是 >> 本应的颜色, 代码中的意思是二个闭合的尖括号(颜色本应和{} [] ()一致), 但VSCode把尖括号起始 << 识别成了二个 小于号, 把后半段 >> 识别成了位运算符号。

小于号 和 位运算符号 颜色为什么不同? 因为 小于号 涉及比较, 比较的结果肯定是一个布尔值, 所以给 小于号 的颜色与 false true相同; 而 位运算符号 与 + - * / 都是数字间的运算, 所以给它们归为一类颜色。

这个问题是VSCode本身字符识别算法的问题, 所以不能接受您这次修改建议。

不过您可以在VSCode设置里添加下列代码, 使其在您自己的电脑上, 看着颜色相同。 image image

"editor.tokenColorCustomizations":{
        "textMateRules": [
            {
                "scope":"keyword.operator.bitwise.dart",
                "settings": {
                    "foreground": "#CF68E1",
                }
            }
        ]
    },
fisheva commented 5 years ago

image 这个例子是本应是个 或|| 符号, 被VSCode识别成2个 位运算符号|, 从使用率来说, 肯定是 或|| 的使用率比位运算多。 如果按VSCode现有的算法, 将错就错把 dart文件里的位运算符号改成紫色, 那下面这张情况区分度又会下降(简单写的例子, 不一定恰切) image image

所以该不该将错就错, 我也挺纠结, 也许哪天心情偏向改变一点, 就把这条改了。

archiewx commented 5 years ago

OK。没事。的确是vscode 识别错误,不过两个箭头分开写不太舒服。合并到一起vscode 瞎识别的。好的。我在自己本地修改使用。

archiewx commented 5 years ago

image

加一个空格就可以识别了。但是vscode 这里格式化就消失了。就提交pr,其实很多知名主题都是这样做的,例如md, one-dart之类的都是这样处理的。

archiewx commented 5 years ago

二进制运算符,或者是 <xx<>>符号应该独立出来,我们编码里面称为位运算符和普通的>, < 区分开的