Vscode-theme-onedark: 修复 VSCode 1.9 中新范围的主题

创建于 2017-02-03  ·  17评论  ·  资料来源: akamud/vscode-theme-onedark

VSCode 1.9 完全改变了它处理 tmTheme 范围以进行着色的方式。

整个主题目前已被打破,几乎需要从零开始重新完成。

更多信息: https :

new-version-broken

最有用的评论

对于等待的任何人,我相信 1.1.0 版现在具有与 1.9 版之前相同的颜色。 你可以在 VSCode Marketplace 上更新。

一些语言通过新的范围得到了改进,例如 Ruby 和 JS/TS,但如果您发现任何不一致,特别是在 1.9 之前不存在的不一致,请报告。

我相信现在唯一缺少的语言是那些依赖于我在 1.9 之前支持的 VSCode 插件的语言,比如 Rust。 我将在一周内处理它们,并在它们发布时关闭此问题。

谢谢你的耐心:)

所有17条评论

我会尽快处理这个问题。 抱紧大家,给您带来的不便深表歉意:(

我刚刚发布了 1.0.0 版,它对 1.9 版的支持很少。

一些语言在 VS Code 中没有很好的支持,并且不允许很好的着色(例如 Java)。

我面前还有很多工作要做。 我相信我可以实现与 1.9 之前相同的支持,与上一个版本相比,目前某些语言(例如 Python)仍然非常糟糕。 我很抱歉,我正在努力。

随着我的进步,我会更新这个问题。

对于等待的任何人,我相信 1.1.0 版现在具有与 1.9 版之前相同的颜色。 你可以在 VSCode Marketplace 上更新。

一些语言通过新的范围得到了改进,例如 Ruby 和 JS/TS,但如果您发现任何不一致,特别是在 1.9 之前不存在的不一致,请报告。

我相信现在唯一缺少的语言是那些依赖于我在 1.9 之前支持的 VSCode 插件的语言,比如 Rust。 我将在一周内处理它们,并在它们发布时关闭此问题。

谢谢你的耐心:)

我发现以下不一致。

语言:JavaScript

前:
screen shot 2017-02-07 at 7 33 48 pm

后:
screen shot 2017-02-07 at 7 34 08 pm

问题似乎与括号和其中的代码有关。

示例代码是

export default class Definition {
    constructor(def) {
        if (invalidParams(def)) {
            throw new Error('Invalid arguments provided to Lang constructor');
        }

        this.__def = def instanceof Map ? def : new Map(def);
    }

    clone = () => new Definition(new Map(this.__def));

    extend = (def) => {
        if (invalidParams(def)) {
            throw new Error(`extend requires Map`);
        }

        const extendedLang = new Map(this.__def);

        for (const [key, value] of def) {
            extendedLang.set(key, value);
        }

        return new Definition(extendedLang);
    }
}

感谢举报!

今晚我会看看这个,然后给你回复。

固定的。 我会坚持到我完成剩余的工作,这样我就不会每天用新版本淹没用户(过去收到了一些抱怨)。 这将在 1.2.0 版中发布

为了比较,

原子:
screen shot 2017-02-07 at 23 35 12

代码:
screen shot 2017-02-07 at 23 35 56

不幸的是,如果不一起更改许多其他项目的颜色,就无法选择constructor关键字……JS 中的 Const 声明也有同样的问题,它们没有唯一的作用域。 如果 VSCode 有所改进,我将更新修复此问题。

再次感谢您的贡献:)

感谢您的快速周转!

但是有一个问题:const 声明在 1.9 之前可以正常工作,而且如果您看一下, for循环中的 const 声明工作正常。 那么为什么不是上面的那个呢?

for 循环中的[key, value]数组变量声明,所以 VSCode 为它们提供了唯一的作用域,我使用了它。

尽管extendedLang const 被检测为常规变量。 如下图所示:

screen shot 2017-02-07 at 23 48 59

这是它拥有的最具体的范围。 正如您所看到的,其他作用域都没有将其检测为const声明。 所以如果我现在给它上色,每个变量也会变成红色。
当我遇到这些冲突时,我必须做出选择,因此通常最常见的范围或更容易吸引眼睛的颜色会获胜。 在这种情况下,变量更常见,使它们红色以匹配常量会导致与 Atom 原始主题的更多差异。

至于为什么这以前有效,VSCode 现在公开的作用域与以前的版本完全不同,在这种情况下,可能我有办法区分变量声明和常量。

您可以看到常量和变量现在具有完全相同的作用域:
screen shot 2017-02-07 at 23 56 35

Atom 公开了一个constant.other.js范围,因此它可以提供自定义着色。

谢谢详细的解释!

您可以选择一致地为所有变量类型着色吗? (我猜是红色的)

我尽量遵循 Atom 主题。 Atom 不会为变量( varlet )着色,它们是灰色的。 所以我会保持这种状态。

原子:
screen shot 2017-02-09 at 00 09 26

如果你愿意,你总是可以 fork 项目并定制它,它是 MIT 许可的:)

无论如何,这是一个错误:
image
代码:

import * as styles from './mission.scss';

export default function MissionIcon({ key, title }) {
    return <i class={classnames(
        styles['mission__icon'],
        {
            [styles['mission__icon-letter']]: title.match(A_HEBREW_LETTER),
            [styles['mission__icon-first']]: !key,
        }
    )}>{title}</i>;
}

谢谢!

你能提供更多信息吗? 这是JS文件还是TS文件? 这是反应吗?

image
另一个错误:

  • 黄色的大括号和分号
  • 灰色装饰器@
  • 变量着色不一致(或者是因为它们“成为”键吗?)
    代码:
@connect(
    ({ artists }) => ({ artists }),
    dispatch => bindActionCreators({ getArtists, getArtist, addArtist, editArtist, removeArtist }, dispatch)
)
export default class AdminArtists extends Component {

    componentWillMount = () => {
        this.props.getArtists();
    }

    render = () => {
        console.log(this.props.artists);
        return <div>

        </div>;
    }
}

@akamud这是 JS React

我将创建一个新问题来跟踪此 JS React 问题。

请使用 #36 来关注这个讨论。

1.2.0 版现在对插件的支持与以前相同。

如果您发现任何其他不一致之处,请创建一个新问题。

此页面是否有帮助?
0 / 5 - 0 等级