gpt4 book ai didi

javascript - 如何防止 TextMate 来自 "matching"//注释 {( 括号(在 Javascript 中)?

转载 作者:行者123 更新时间:2023-11-29 15:01:34 26 4
gpt4 key购买 nike

TextMate 在 Javascript 语句中“解析”当前“上下文”的方式存在缺陷。我喜欢编辑器...但我讨厌在日常的括号匹配中手动地保持警惕

见下文 - Textmate 错误地“看到”了注释行中的括号,并将它们与未注释代码“匹配”!

wrong Context, dumbie!

这是代码,如果你关闭了图像,或者使用 Lynx,或者像那样疯狂的东西......

$('.parishilton').live( 'fartOn', function() {
sexy = $('#thatshot').fadeOut('fast');
/** $('shouldnt').matchThis(function(){ */
// $('or').thisOneEither(function(){
}); // Textmate thinks I should be here!
}); // Me too!
}); // ONLY this one should "match".

这在使用内置 ++B 以突出显示当前范围,以及在使用插入点通过它们时 - 这会“弹出”不正确匹配(注释)的括号。 (无法截图,抱歉)

Xcode 在匹配上下文和识别语法方面做得更好。但我可以说 - 它在这方面也很挣扎。 (通过这种结构的片状折叠等可以证明。)至少 Xcode 知道这是错误的.. 哪里 ™ 会让你继续......认为一切都很好..即使你的括号很严重 f* %#@*d.

难道 Javascript 很难让语法分析器“确定”发生了什么吗?我可以使用“更好”的注释语法吗?在上面的示例中,我尝试了 C 风格的 /** comment *///comment 符号……但两者似乎都有相同的缺点?

或者这只是 TextMate 中执行不力的情况?如果是这样,是否有 plist 或我可以用来尝试改善事态的东西?

最佳答案

  • JavaScript 确实很难解析,尤其是当您使用像示例中那样充满错误的回调代码时。我似乎记得 TextMate 的解析是基于正则表达式的。如果我是对的,那种系统不是很智能或灵活。仅供引用 Vim 表现出相同的行为。

  • TextMate 根本不进行语法检查。它不会在每次按键时通过构建过程或某些静态分析工具运行您的代码。这就是为什么它不善于发现和显示错误。 TextMate 不是 IDE,它是文本编辑器。

  • 前面几点的必然结果是您应该 - 至少 - 通过 jslintjshint 运行您的代码以发现错误。有一个名为“JavaScript 工具”IIRC 的包。一旦您知道问题出在哪里(根据您选择的 SA 工具),您就可以修复它们,而无需依赖 TextMate 有限的语法检查能力。此步骤(语法检查)是任何严肃编码的关键部分 - 无论您的专业水平高低 - 您都可以将其自动化。

    就是说,如果您编写大量这样的代码,jslint 可能不足以满足您的需求。这是通过 syntastic 运行 jslint 后 Vim 中代码的屏幕截图:

    enter image description here

    这里一次发现一个错误。修复代码肯定是一个漫长而乏味的过程。当然,它并不总是这样,但它可以而且确实会发生。

    前所未有的语法检查,也不是 TextMate 整体设计的一部分。

    我不知道 TM2 的计划是什么(失去耐心,切换到 Vim)。也许实时语法检查正在进行中,也许不是。我不知道,也不关心。

  • 如果您不喜欢 TextMate 设计的那一部分,一个选择是放弃它并使用像 Eclipse 或 Komodo 或 NetBeans 或 WebStorm 或 Aptana 这样的 IDE ......这些程序通常运行各种专门为防止此类问题而键入的后台进程。这是您在 Eclipse 中的代码的屏幕截图:

    Eclipse

    如您所见,Eclipse 不会将光标处的括号与任何内容匹配,它会在您有孤立的括号和分号时显示有用的警告。

    $ideName 显然不如 TextMate 性感,但在那种情况下它肯定更强大。

    想一想。

  • 第二种选择是使用 TextMate 自己的“Bundle Editor”来改变 JavaScript 的语法定义。并向 M​​acromates 的负责人提出你的改变。

关于javascript - 如何防止 TextMate 来自 "matching"//注释 {( 括号(在 Javascript 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com