2012-02-23 81 views
3

TextMate“解析”当前“上下文”的方式 - 在Javascript语句中 - 存在缺陷热爱编辑 ..但是我讨厌不得不在我天到一天托架匹配所以手动警惕如何防止TextMate“匹配”//评论{(括号(使用Javascript))

见下 - 一种方案,其中的TextMate错误地“看到”在括号注释行,和“匹配它们“与无关注代码!

wrong Context, dumbie!

下面是代码,如果你有图片显示功能,或使用山猫,或者疯狂的东西,像..

$('.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知道这是错误的,其中as™会让你继续前进......思考一切都很好......即使你的括号严重不足f*%#@*d

Javascript是否很难让语法分析器“知道肯定”发生了什么?对于我可以使用的评论是否有“更好”的语法?在上面的例子中,我已经尝试了C风格的/** comment */以及// comment符号......但是两者似乎都有同样的缺点?

或者这仅仅是TextMate中糟糕实现的一个例子吗?如果是这样,是否有plist或我可以尝试改善事态的东西?

+1

不是听起来像一个巨魔,但我的建议是切换到SublimeText 2.我用的TextMate _years_和喜爱它,直到textmate2测试版出来了,这是可怕的缓慢和laggy(有一件事我会不能在编辑中容忍)。看到我觉得没有体面的后续行动,我开始看看其他编辑,并遇到了SublimeText。它感觉像一个_lot_一样,只是更好。有一些波兰语缺乏textmate,但它正在积极开发,速度非常快,可以使用许多textmate插件,语法文件等。 – 2012-02-23 18:37:38

回答

2
  • JavaScript可能很难解析,实际上,特别是当您使用错误缠身的回调 - 意大利面代码就像您的示例。我似乎记得TextMate的解析是基于正则表达式的。如果我是正确的那种系统不是很聪明或灵活。 FYI Vim表现出相同的行为。

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

  • 前面几点的推论是,您应该 - 至少 - 通过jslintjshint运行您的代码以发现错误。有一个名为“JavaScript工具”IIRC的软件包。一旦你知道问题出在哪里 - 根据你选择的SA工具,你可以修复它们而不依赖于TextMate有限的语法检查功能。这一步(语法检查)是任何严肃编码的重要组成部分 - 无论您的专业知识水平如何高低,您都可以将其自动化。

    这就是说,如果你写了很多这样的代码,jslint可能不是足够为您的需要。这里是Vim的代码,通过syntastic运行jslint后的截图:

    enter image description here

    错误被发现一次一个,在这里。修复你的代码肯定是一个漫长而无聊的过程。当然,这并不总是这样,但它可以 - 也确实 - 发生。

    语法检查从未如此,也不是TextMate整体设计的一部分。

    我不知道什么是计划TM2(失去耐心,切换到Vim)。也许活的语法检查在管道中,也许不是。我不知道,我也不在乎。

  • 如果您不喜欢TextMate设计的那一部分,可以选择放弃它并使用Eclipse,Komodo或NetBeans或WebStorm或Aptana等IDE。该程序通常运行各种背景当你键入专门的过程来防止这种问题。这里是你的代码的截图在Eclipse:

    Eclipse

    正如你所看到的,Eclipse不支架在光标与任何匹配,它显示了你有孤儿括号和分号有用的警告。

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

    想一想。

  • 第二种选择是使用TextMate自己的“Bundle Editor”来改变JavaScript的语法定义。并向Macromates的负责人提出您的修改建议。