aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Gutov2014-05-06 03:18:18 +0400
committerDmitry Gutov2014-05-06 03:18:18 +0400
commit4dd3c4d53af81b017363cb778ac6fd5abea2d132 (patch)
treefafb9f8f9a770822ffac65fe5f1aa9f9c20992c0
parent6da8d069757fd26ee537704a9f0dea24dc5e00b8 (diff)
downloademacs-4dd3c4d53af81b017363cb778ac6fd5abea2d132.tar.gz
emacs-4dd3c4d53af81b017363cb778ac6fd5abea2d132.zip
* lisp/progmodes/ruby-mode.el (ruby-syntax-propertize-function):
Backtrack one char if the global/char-literal var matcher hits inside a string. The next char could be the beginning of an expression expansion. * test/automated/ruby-mode-tests.el (ruby-interpolation-after-dollar-sign): New test.
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/progmodes/ruby-mode.el7
-rw-r--r--test/ChangeLog5
-rw-r--r--test/automated/ruby-mode-tests.el4
4 files changed, 20 insertions, 3 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 3bbacb85e97..7c838a61fe5 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12014-05-05 Dmitry Gutov <dgutov@yandex.ru>
2
3 * progmodes/ruby-mode.el (ruby-syntax-propertize-function):
4 Backtrack one char if the global/char-literal var matcher hits
5 inside a string. The next char could be the beginning of an
6 expression expansion.
7
12014-05-05 Glenn Morris <rgm@gnu.org> 82014-05-05 Glenn Morris <rgm@gnu.org>
2 9
3 * help-fns.el (describe-function-1): Test for an autoload before a 10 * help-fns.el (describe-function-1): Test for an autoload before a
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index 912736707ef..74edf7a680f 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -1804,9 +1804,10 @@ It will be properly highlighted even when the call omits parens.")
1804 ;; $' $" $` .... are variables. 1804 ;; $' $" $` .... are variables.
1805 ;; ?' ?" ?` are character literals (one-char strings in 1.9+). 1805 ;; ?' ?" ?` are character literals (one-char strings in 1.9+).
1806 ("\\([?$]\\)[#\"'`]" 1806 ("\\([?$]\\)[#\"'`]"
1807 (1 (unless (save-excursion 1807 (1 (if (save-excursion
1808 ;; Not within a string. 1808 (nth 3 (syntax-ppss (match-beginning 0))))
1809 (nth 3 (syntax-ppss (match-beginning 0)))) 1809 ;; Within a string, skip.
1810 (goto-char (match-end 1))
1810 (string-to-syntax "\\")))) 1811 (string-to-syntax "\\"))))
1811 ;; Part of symbol when at the end of a method name. 1812 ;; Part of symbol when at the end of a method name.
1812 ("[!?]" 1813 ("[!?]"
diff --git a/test/ChangeLog b/test/ChangeLog
index a02b8e80395..0a3e89e7385 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
12014-05-05 Dmitry Gutov <dgutov@yandex.ru>
2
3 * automated/ruby-mode-tests.el
4 (ruby-interpolation-after-dollar-sign): New test.
5
12014-05-05 Glenn Morris <rgm@gnu.org> 62014-05-05 Glenn Morris <rgm@gnu.org>
2 7
3 * automated/help-fns.el: New file. 8 * automated/help-fns.el: New file.
diff --git a/test/automated/ruby-mode-tests.el b/test/automated/ruby-mode-tests.el
index f6fddb5ef4c..0ad5650cd77 100644
--- a/test/automated/ruby-mode-tests.el
+++ b/test/automated/ruby-mode-tests.el
@@ -452,6 +452,10 @@ VALUES-PLIST is a list with alternating index and value elements."
452 (ruby-assert-face "%w{foo #@bar}" 8 font-lock-string-face) 452 (ruby-assert-face "%w{foo #@bar}" 8 font-lock-string-face)
453 (ruby-assert-face "%s{foo #@bar}" 8 font-lock-string-face)) 453 (ruby-assert-face "%s{foo #@bar}" 8 font-lock-string-face))
454 454
455(ert-deftest ruby-interpolation-after-dollar-sign ()
456 (ruby-assert-face "\"$#{balance}\"" 2 'font-lock-string-face)
457 (ruby-assert-face "\"$#{balance}\"" 3 'font-lock-variable-name-face))
458
455(ert-deftest ruby-no-unknown-percent-literals () 459(ert-deftest ruby-no-unknown-percent-literals ()
456 ;; No folding of case. 460 ;; No folding of case.
457 (ruby-assert-face "%S{foo}" 4 nil) 461 (ruby-assert-face "%S{foo}" 4 nil)