Project

General

Profile

Actions

Bug #3320

closed

Feature #5142: Remove ruby-mode.el from ruby's repo

emacs ruby-mode.el font-lock fails on symboled string ending with ?

Bug #3320: emacs ruby-mode.el font-lock fails on symboled string ending with ?

Added by zev (Zev Blut) over 15 years ago. Updated almost 13 years ago.

Status:
Third Party's Issue
Target version:
ruby -v:
1.9.2 (trunk and 1.8.7)+
Backport:
[ruby-core:30315]

Description

=begin
Fontification breaks when emacs sees a symbol like
:'this is a symbol?'

example code:

class EmacsExample
:symbol

'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.

Thanks,
Zev
=end


Files

ruby-mode.el.patch (1.63 KB) ruby-mode.el.patch zev (Zev Blut), 05/20/2010 12:21 AM

Related issues 2 (0 open2 closed)

Related to Ruby - Feature #6823: Where/how should ruby-mode issues be reported?Closedmatz (Yukihiro Matsumoto)Actions
Has duplicate Ruby - Bug #4398: Highlighting of "'?" in EmacsThird Party's Issuenobu (Nobuyoshi Nakada)Actions

Updated by zev (Zev Blut) over 15 years ago Actions #1

=begin

=end

Updated by zev (Zev Blut) over 15 years ago Actions #2

=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 ?'

def foo
end


=end

Updated by zenspider (Ryan Davis) over 15 years ago Actions #3

=begin

On May 20, 2010, at 06:18 , Zev Blut wrote:

Issue #3320 has been updated by Zev Blut.

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.

=end

Updated by akr (Akira Tanaka) over 14 years ago Actions #4

  • Project changed from 8 to Ruby
  • Category deleted (misc)
  • Assignee set to nobu (Nobuyoshi Nakada)

Updated by nahi (Hiroshi Nakamura) over 14 years ago Actions #5

  • Target version set to 1.9.3

Updated by kosaki (Motohiro KOSAKI) over 14 years ago Actions #6 [ruby-core:37982]

  • Status changed from Open to Assigned

Updated by kosaki (Motohiro KOSAKI) about 14 years ago Actions #7 [ruby-core:38311]

  • Target version changed from 1.9.3 to 1.9.4

ETIMEOUT. ruby-mode.el never be release stopper.

Updated by naruse (Yui NARUSE) about 14 years ago Actions #8

  • Parent task set to #5142

Updated by dgutov (Dmitry Gutov) almost 13 years ago Actions #9 [ruby-core:50539]

All examples in this bug work fine for me with ruby-mode from the Emacs tree.
Not sure when they were fixed.

Updated by nobu (Nobuyoshi Nakada) almost 13 years ago Actions #10

  • Status changed from Assigned to Third Party's Issue
Actions

Also available in: PDF Atom