'this is a test'
'is this a test?'
"Can this be a test"
:'this is an error?'
def bar
@help
end
end
I have a very hacked fix in ruby-font-lock-syntactic-keywords
for
;; the last $', $", $ in the respective string is not variable ;; the last ?', ?", ? in the respective string is not ascii code
("\(^\|[[ \t\n<+(,=:]\)\(['"]\\)\\(\\\\.\\|\\2\\|[^'\"\n\\]\)*?\\?[?$]\(\2\)"
(2 (7 . nil))
(4 (7 . nil)))
by adding : in the above matches with space tabs L etc...
See the attached patch
I am not sure this is the proper fix, but it fixes the above example.
=begin
I found another related parse error. Unfortunately, I am not sure how to fix this one.
This is a multi line string that starts on one line and ends on a different line with a ?
Such as:
x = 'What do you think about this long
text today ?'
I found another related parse error. Unfortunately, I am not sure how to fix this one.
This is a multi line string that starts on one line and ends on a different line with a ?
Such as:
x = 'What do you think about this long
text today ?'
def foo
end
In this case it is because it sees ?' or ?" and interprets that as the character notation (I have no idea what this is called). Putting a backslash in front of the ? fixes the problem locally.
There are a lot of different things that can trip up ruby-mode when inside a string. I tripped on one today with a multiline string with "def" in it:
eval "
def xxx
yyy
end
"
Notice that tab will indent up to the yyy as if it is actual code, not string content.
BTW, I'm using version 1.0 of ruby-mode.el as supplied in emacs 24.0.50. It may be more up to date in the ruby distro, but afaik, it should be shifting to emacs for distribution.