aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDmitry Gutov2012-11-14 16:17:21 +0400
committerDmitry Gutov2012-11-14 16:17:21 +0400
commitc62792e7dfa403db8c36cb92f32fb69258a199ef (patch)
treeb66f89060cd2f882a04b508896cbbbd424b08412 /test
parent710f581278f6eaea5dbc5c0bcc7c206be9690746 (diff)
downloademacs-c62792e7dfa403db8c36cb92f32fb69258a199ef.tar.gz
emacs-c62792e7dfa403db8c36cb92f32fb69258a199ef.zip
* lisp/progmodes/ruby-mode.el
(ruby-syntax-propertize-function): After everything else, search for expansions in string literals, mark their insides as whitespace syntax and save match data for font-lock. (ruby-font-lock-keywords): Highlight just the 2nd group from expression expansion matches. (ruby-match-expression-expansion): Use the match data saved to the text property in ruby-syntax-propertize-function. * test/automated/ruby-mode-tests.el Change direct font-lock face references to var references. (ruby-interpolation-suppresses-syntax-inside): New test. (ruby-interpolation-inside-percent-literal-with-paren): New failing test.
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog4
-rw-r--r--test/automated/ruby-mode-tests.el30
2 files changed, 27 insertions, 7 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index 5a796408a3b..f11325d0318 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -3,6 +3,10 @@
3 * automated/ruby-mode-tests.el (ruby-indent-singleton-class): Pass. 3 * automated/ruby-mode-tests.el (ruby-indent-singleton-class): Pass.
4 (ruby-indent-inside-heredoc-after-operator) 4 (ruby-indent-inside-heredoc-after-operator)
5 (ruby-indent-inside-heredoc-after-space): New tests. 5 (ruby-indent-inside-heredoc-after-space): New tests.
6 Change direct font-lock face references to var references.
7 (ruby-interpolation-suppresses-syntax-inside): New test.
8 (ruby-interpolation-inside-percent-literal-with-paren): New
9 failing test.
6 10
72012-11-13 Dmitry Gutov <dgutov@yandex.ru> 112012-11-13 Dmitry Gutov <dgutov@yandex.ru>
8 12
diff --git a/test/automated/ruby-mode-tests.el b/test/automated/ruby-mode-tests.el
index 7d633be0f53..ad48413b030 100644
--- a/test/automated/ruby-mode-tests.el
+++ b/test/automated/ruby-mode-tests.el
@@ -80,7 +80,7 @@ VALUES-PLIST is a list with alternating index and value elements."
80 80
81(ert-deftest ruby-heredoc-font-lock () 81(ert-deftest ruby-heredoc-font-lock ()
82 (let ((s "foo <<eos.gsub('^ *', '')")) 82 (let ((s "foo <<eos.gsub('^ *', '')"))
83 (ruby-assert-face s 9 'font-lock-string-face) 83 (ruby-assert-face s 9 font-lock-string-face)
84 (ruby-assert-face s 10 nil))) 84 (ruby-assert-face s 10 nil)))
85 85
86(ert-deftest ruby-singleton-class-no-heredoc-font-lock () 86(ert-deftest ruby-singleton-class-no-heredoc-font-lock ()
@@ -262,19 +262,35 @@ VALUES-PLIST is a list with alternating index and value elements."
262 (should (string= "foo do |b|\n b + 1\nend" (buffer-string))))) 262 (should (string= "foo do |b|\n b + 1\nend" (buffer-string)))))
263 263
264(ert-deftest ruby-recognize-symbols-starting-with-at-character () 264(ert-deftest ruby-recognize-symbols-starting-with-at-character ()
265 (ruby-assert-face ":@abc" 3 'font-lock-constant-face)) 265 (ruby-assert-face ":@abc" 3 font-lock-constant-face))
266 266
267(ert-deftest ruby-hash-character-not-interpolation () 267(ert-deftest ruby-hash-character-not-interpolation ()
268 (ruby-assert-face "\"This is #{interpolation}\"" 15 268 (ruby-assert-face "\"This is #{interpolation}\"" 15
269 'font-lock-variable-name-face) 269 font-lock-variable-name-face)
270 (ruby-assert-face "\"This is \\#{no interpolation} despite the #\"" 270 (ruby-assert-face "\"This is \\#{no interpolation} despite the #\""
271 15 'font-lock-string-face) 271 15 font-lock-string-face)
272 (ruby-assert-face "\n#@comment, not ruby code" 5 'font-lock-comment-face) 272 (ruby-assert-face "\n#@comment, not ruby code" 5 font-lock-comment-face)
273 (ruby-assert-state "\n#@comment, not ruby code" 4 t) 273 (ruby-assert-state "\n#@comment, not ruby code" 4 t)
274 (ruby-assert-face "# A comment cannot have #{an interpolation} in it" 274 (ruby-assert-face "# A comment cannot have #{an interpolation} in it"
275 30 'font-lock-comment-face) 275 30 font-lock-comment-face)
276 (ruby-assert-face "# #{comment}\n \"#{interpolation}\"" 16 276 (ruby-assert-face "# #{comment}\n \"#{interpolation}\"" 16
277 'font-lock-variable-name-face)) 277 font-lock-variable-name-face))
278
279(ert-deftest ruby-interpolation-suppresses-syntax-inside ()
280 (let ((s "\"<ul><li>#{@files.join(\"</li><li>\")}</li></ul>\""))
281 (ruby-assert-state s 8 nil)
282 (ruby-assert-face s 9 font-lock-string-face)
283 (ruby-assert-face s 10 font-lock-variable-name-face)
284 (ruby-assert-face s 41 font-lock-string-face)))
285
286(ert-deftest ruby-interpolation-inside-percent-literal-with-paren ()
287 :expected-result :failed
288 (let ((s "%(^#{\")\"}^)"))
289 (ruby-assert-face s 3 font-lock-string-face)
290 (ruby-assert-face s 4 font-lock-variable-name-face)
291 (ruby-assert-face s 10 font-lock-string-face)
292 ;; It's confused by the closing paren in the middle.
293 (ruby-assert-state s 8 nil)))
278 294
279(ert-deftest ruby-add-log-current-method-examples () 295(ert-deftest ruby-add-log-current-method-examples ()
280 (let ((pairs '(("foo" . "#foo") 296 (let ((pairs '(("foo" . "#foo")