【问题标题】:Atom, incorrect highlighting of nested JSX elementsAtom,嵌套的 JSX 元素不正确的突出显示
【发布时间】:2018-04-10 19:24:21
【问题描述】:

向使用 atom 的 react/react-native 开发人员提出的问题。我在带有嵌套 JSX 元素和 language-babel 包的编辑器中出现了奇怪的行为。看看截图。当自闭合组件<Scene/>写在斜线前没有空格时,父级的开始和结束标记的高亮是可以的,但是当你添加一个空格(<Scene />)时效果不好。 我试图弄清楚它是原子问题还是语言问题,所以我可以在 github 上打开一个问题。我最好的猜测是,问题在于语言 babel,因为代码折叠/展开在这两种情况下都可以正常工作。 有任何想法吗?

【问题讨论】:

    标签: react-native atom-editor jsx


    【解决方案1】:

    我认为这是language-babel 包中的问题。具体在grammars/Babel Language.jsonjsx-tag-element-name下:

    "end": "\\s*(?<=</)((\\4)|\\2)(>)|(/>)|((?<=</)[\\S ]*?)>",
    

    通过这个正则表达式的大约 2/3,你会发现:

    |(/>)|
    

    这表示作为一种替代选择,结尾可以是/&gt;。请注意,此处不允许有空格。这与您所看到的一致。

    我认为解决方法是将正则表达式的那部分修改为

    |(/\\s*>)|
    

    换句话说,让完整的正则表达式为:

    \\s*(?<=</)((\\4)|\\2)(>)|(/\\s*>)|((?<=</)[\\S ]*?)>
    

    【讨论】:

    • 我更改了Babel Language.json 中的表达式,但行为仍然相同。可悲的是,我对正则表达式的了解还很基础,但我明白你的逻辑。谢谢你。我会继续挖掘。
    • @DavidGevorgyan 更改后您是否重新加载了 Atom?我不确定 Atom 在运行后做了多少缓存。
    • 我做到了。其实我是在全新的atom安装上测试过,修改json文件后删除~/.config/Atom/Cache目录。
    猜你喜欢
    • 2014-02-27
    • 1970-01-01
    • 2017-11-03
    • 2019-07-18
    • 2021-09-19
    • 1970-01-01
    • 2013-02-21
    • 2015-10-11
    • 1970-01-01
    相关资源
    最近更新 更多