Crockford 风格的上下文着色是不是在任何代码编辑器中实现?
Posted
技术标签:
【中文标题】Crockford 风格的上下文着色是不是在任何代码编辑器中实现?【英文标题】:Is Crockford style Context Coloring implemented in any code editor?Crockford 风格的上下文着色是否在任何代码编辑器中实现? 【发布时间】:2012-12-02 15:57:17 【问题描述】:我观看了 YUIConf 2012 上的一段视频,Douglas Crockford 发表了关于在 javascript 中实现 monad 的演讲。在这次演讲中,他给出了一个代码示例,该示例利用了他所谓的“上下文着色”,它摒弃了通过语言语法着色的想法,并为不同级别的范围引入了不同的颜色。这是视频特定部分的链接。
http://www.youtube.com/watch?feature=player_embedded&v=dkZFtimgAcM#t=15m58s
此上下文着色方案是否由任何 JavaScript 或任何语言的代码编辑器实现?
我使用 Sublime Text,这个编辑器和我遇到的所有其他代码编辑器一样,允许将颜色应用于语法。我不确定插件是否可以解决这个问题,或者是否必须从头开始设计编辑器以允许这种上下文着色方案。
【问题讨论】:
我也喜欢这个想法,但除了 VIM 和 Emacs 支持的“彩虹着色”之外,我没有找到任何答案。看起来 intellij 有兴趣添加它:youtrack.jetbrains.com/issue/WEB-2390 DC: "I wish someone would build an editor for me that does this type of coloring" - 好像还没有人做过 从 a11y 的角度来看,这听起来是个糟糕的主意。 因为从 a11y 的角度来看,语法着色是个好主意 ^o^// 不过说真的,如果实现不完美,我可以看到这会导致问题。使用正常的上下文着色,文字被着色,但系统不会尝试猜测变量的内容并适当地着色它们。上下文着色将不得不推断变量的范围,并且一旦猜错可能会非常痛苦。不过,祝你好运,我很想拥有一个经过验证的完美上下文着色插件! 【参考方案1】:Vim(GitHub):
Emacs(GitHub):
【讨论】:
【参考方案2】:现在有一个 sublime 的包:https://github.com/mazurov/sublime-levels
它还在http://mazurov.github.io/eslevels-demo/提供在线现场演示
【讨论】:
【参考方案3】:我刚刚看了他的视频,很棒。必须give it a try,或在GitHub上签出项目https://github.com/daniellmb/JavaScript-Scope-Context-Coloring。
【讨论】:
【参考方案4】:截至 2013 年 2 月 13 日,Crockford 已向 JSLint 添加了实验性上下文着色功能。
https://plus.google.com/118095276221607585885/posts/FzKnHk96m2C
【讨论】:
【参考方案5】:BlueJ 有它 (1) - 但它也可能没有。 javascript 中范围的上下文着色肯定会比任何其他语言(如此编辑器所使用的 java)更复杂。
写括号的人可能最终会这样做,因为他们崇拜 Crockford (2,3)
为什么不和他们一起帮助编写它,或者至少告诉他们这样做?
来源:
1) http://blogs.kent.ac.uk/mik/2010/05/bluej-3-0-whats-new/
2) https://github.com/adobe/brackets/issues/search?q=Crockford
3)http://www.adobe.com/devnet/html5/articles/bracket-code-architecture.html
【讨论】:
我不会说我们在 Brackets 团队“崇拜”Crockford :-) 不过,我们确实喜欢 linting。我们实际上希望使其可插入,甚至可能在未来将我们自己的编码风格转换为 JSHint。如果您想投票,可以使用user story。 很好,如果 jsbin 和 jsfiddle 可以做到,我相信 Adobe 的人可以!【参考方案6】:我不知道。这会很棒,但它需要一个特定于 JavaScript 的词法分析器,并且当出现任何语法错误时它可能无法工作。
【讨论】:
这确实更适合作为评论。以上是关于Crockford 风格的上下文着色是不是在任何代码编辑器中实现?的主要内容,如果未能解决你的问题,请参考以下文章