bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#5757: String literal parse problem in ruby-mode


From: Pål de Vibe
Subject: bug#5757: String literal parse problem in ruby-mode
Date: Mon, 4 Apr 2011 09:25:25 -0430

Hi. This wasn't really a proposed fix but more a hint to help debugging. I haven't had time to really study the code. Thanks for the feedback.

On Mon, Apr 4, 2011 at 9:23 AM, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
> Could you help review Pål de Vibe's proposed fix to the following
> problem in Emacs ruby-mode?  Thanks.

His proposed fix is not correct: in ruby (like in Elisp) ?<char> is used
for chars (including ?' and ?") and $' and $" are also special vars, so
his fix just disables the special treatment of ?.
For Emacs-24, we use a different chunk of code which doesn't suffer from
this problem (mostly calling syntax-ppss to determine if we're inside
a string).


       Stefan


> Pål de Vibe <pauldevibe@yahoo.no> writes:

>>> ruby-mode will misunderstand a ruby double-quoted string literal which
>>> contains a single quote and ends with a question mark.  It thinks that
>>> the string literal is unterminated, which contaminates the syntax
>>> highlighting for the remainder of the buffer.
>>>
>>> Example ruby code which will demonstrate the problem:
>>>
>>> ["Is 'this' a string?"], [:something, :else]
>>>
>>> If there's anything between the question mark and the terminating
>>> double-quote, the string will be correctly interpreted.
>>
>> Line 1185:
>> ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[?$]\\([#\"'`]\\)" 3 (1 . nil))
>>
>> A workaround (with, to me, uknown consequences) is to remove the
>> question mark from the line, like this:
>>
>> ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[$]\\([#\"'`]\\)" 3 (1 . nil))





reply via email to

[Prev in Thread] Current Thread [Next in Thread]