* lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): Never
authorDmitry Gutov <dgutov@yandex.ru>
Tue, 13 Nov 2012 03:07:09 +0000 (07:07 +0400)
committerDmitry Gutov <dgutov@yandex.ru>
Tue, 13 Nov 2012 03:07:09 +0000 (07:07 +0400)
font-lock the beginning of singleton class as heredoc.

* test/automated/ruby-mode-tests.el (ruby-heredoc-font-lock)
(ruby-singleton-class-no-heredoc-font-lock): New tests.

lisp/ChangeLog
lisp/progmodes/ruby-mode.el
test/ChangeLog
test/automated/ruby-mode-tests.el

index 92f3343..d04c42d 100644 (file)
        (advice-add): Use them.
        (advice-member-p): Correctly handle macros.
 
+2012-11-13  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (ruby-font-lock-keywords): Never
+       font-lock the beginning of singleton class as heredoc.
+
 2012-11-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * emacs-lisp/gv.el (gv-define-simple-setter): One more fix (bug#12871).
index 67f25ed..9d2c6fa 100644 (file)
@@ -1551,7 +1551,8 @@ See `font-lock-syntax-table'.")
           ruby-keyword-end-re)
          2)
    ;; here-doc beginnings
-   (list ruby-here-doc-beg-re 0 'font-lock-string-face)
+   `(,ruby-here-doc-beg-re 0 (unless (ruby-singleton-class-p (match-beginning 0))
+                               'font-lock-string-face))
    ;; variables
    '("\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(nil\\|self\\|true\\|false\\)\\>"
      2 font-lock-variable-name-face)
index 4a9d215..ad13611 100644 (file)
@@ -1,3 +1,8 @@
+2012-11-13  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * automated/ruby-mode-tests.el (ruby-heredoc-font-lock)
+       (ruby-singleton-class-no-heredoc-font-lock): New tests.
+
 2012-11-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * automated/advice-tests.el: New tests.
index 8da0041..741692a 100644 (file)
@@ -76,6 +76,14 @@ VALUES-PLIST is a list with alternating index and value elements."
   (ruby-assert-state "foo <<asd\n" 3 ?\n)
   (ruby-assert-state "class <<asd\n" 3 nil))
 
+(ert-deftest ruby-heredoc-font-lock ()
+  (let ((s "foo <<eos.gsub('^ *', '')"))
+    (ruby-assert-face s 9 'font-lock-string-face)
+    (ruby-assert-face s 10 nil)))
+
+(ert-deftest ruby-singleton-class-no-heredoc-font-lock ()
+  (ruby-assert-face "class<<a" 8 nil))
+
 (ert-deftest ruby-deep-indent ()
   (let ((ruby-deep-arglist nil)
         (ruby-deep-indent-paren '(?\( ?\{ ?\[ ?\] t)))