diff options
| author | Dmitry Gutov | 2012-11-14 16:17:21 +0400 |
|---|---|---|
| committer | Dmitry Gutov | 2012-11-14 16:17:21 +0400 |
| commit | c62792e7dfa403db8c36cb92f32fb69258a199ef (patch) | |
| tree | b66f89060cd2f882a04b508896cbbbd424b08412 /test | |
| parent | 710f581278f6eaea5dbc5c0bcc7c206be9690746 (diff) | |
| download | emacs-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/ChangeLog | 4 | ||||
| -rw-r--r-- | test/automated/ruby-mode-tests.el | 30 |
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 | ||
| 7 | 2012-11-13 Dmitry Gutov <dgutov@yandex.ru> | 11 | 2012-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") |