2011-03-02 38 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