如何防止TextMate“匹配”//评论{(括号(在Javascript中)?

时间:2012-02-23 17:34:31

标签: javascript autocomplete syntax-highlighting textmate

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或我可以试图改善事态的东西?

1 个答案:

答案 0 :(得分:2)

  • 实际上,当您使用错误的回调 - 意大利面条代码时,JavaScript很难解析。我似乎记得TextMate的解析是基于regexp的。如果我是正确的那种系统不是很聪明或灵活。 FYI Vim表现出相同的行为。

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

  • 之前几点的必然结果是,您应该 - 至少 - 通过jslintjshint运行代码以发现错误。有一个名为“JavaScript Tools”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的语法定义。并建议您对Macromates的负责人进行更改。