2012-02-23 71 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的負責人提出您的修改建議。