2011-03-02 40 views
1

問題是,當我嘗試使用「< <」運算符時,ruby模式認爲這是一個錯誤,下面的所有代碼都失去了語法高亮,類似的情況丟失括號或報價。無論如何解決這個?? Emacs 22 23都適用。ruby​​模式下的emacs語法高亮將無法使用「<<」運算符

如下圖所示:

enter image description here

+0

你能發表一個簡短的例子嗎? – Lindydancer 2011-03-02 11:49:06

+0

我看了一下(在Emacs 23.2中),在'<<'運算符後面的'ruby-mode'中我看不到任何語法突出問題。但是,也許你的代碼有一些特殊的功能會引發一個錯誤?所以你需要發佈你的例子。 (但你可以先嚐試升級。) – 2011-03-02 13:04:01

+0

我安裝了Cocoa emacs 23和Aqua-emacs。全部都一樣。我檢查了打包的ruby-mode.el並將其替換爲最新版本,並將其重新字節編譯爲ruby-mode.elc。沒有任何作品。如果還沒有人能弄清楚這一點,我會放棄emacs並回到textmate。我是認真的。 – lkahtz 2011-03-02 16:44:45

回答

0

終於讓我找到自己的答案,解釋如下:

http://www.ruby-forum.com/topic/95762

這是因爲Ruby語言的語法歧義,這使得目前的ruby-mode.el無法區分使用「< <」的用法。

關閉上述討論結束後,甚至馬茲自己站了起來說:

|Steve, in that case Emacs ruby-mode is incorrect. 

Maybe Ruby is too smart for this issue, since it's difficult for 
editors to determine here-doc from shift operators without serious 
parsing. 

       matz. 

古怪的紅寶石模式的語法高亮其他一些討論:http://www.ruby-forum.com/topic/119917

這需要我三個小時,eerrrr ...我想我會堅持textX,尤其是ruby/RoR/Sinatra開發,直到出現一些嚴重的ruby模式。

0

起初,我沒有設法在這裏重複這個問題。過了一段時間,我意識到我有一箇舊版本,從2007年開始,在我的載入路徑中。 (它錯了一行。)也許你可以使用它作爲臨時解決方案?

請將此作爲bug提交給Emacs團隊,因爲Emacs能夠着色比此更復雜的構造。 (跳過包含掛鉤設置的部分,因爲它是無關緊要的)。

+0

謝謝老兄。我會提交這個。希望看到一些詞法分析改進來解決這個問題... – lkahtz 2011-03-03 08:50:46

2

與其放棄emacs(如果你堅持使用它,它不僅僅是一個編輯器,還有IDE),也許你會放棄emacs可以開始在你的令牌之間插入空格?不幸的是,即使對於方法和單例,在'< <'之後排除空白似乎也有事實上的紅寶石風格。

+0

謝謝。現在我一直在使用emacs並在<< operand之前和之後插入空格。現在我很喜歡它~~ – lkahtz 2011-04-08 15:15:22