* 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.
This commit is contained in:
Dmitry Gutov 2014-05-06 03:18:18 +04:00
parent 6da8d06975
commit 4dd3c4d53a
4 changed files with 20 additions and 3 deletions

View file

@ -1,3 +1,10 @@
2014-05-05 Dmitry Gutov <dgutov@yandex.ru>
* 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.
2014-05-05 Glenn Morris <rgm@gnu.org>
* help-fns.el (describe-function-1): Test for an autoload before a

View file

@ -1804,9 +1804,10 @@ It will be properly highlighted even when the call omits parens.")
;; $' $" $` .... are variables.
;; ?' ?" ?` are character literals (one-char strings in 1.9+).
("\\([?$]\\)[#\"'`]"
(1 (unless (save-excursion
;; Not within a string.
(nth 3 (syntax-ppss (match-beginning 0))))
(1 (if (save-excursion
(nth 3 (syntax-ppss (match-beginning 0))))
;; Within a string, skip.
(goto-char (match-end 1))
(string-to-syntax "\\"))))
;; Part of symbol when at the end of a method name.
("[!?]"

View file

@ -1,3 +1,8 @@
2014-05-05 Dmitry Gutov <dgutov@yandex.ru>
* automated/ruby-mode-tests.el
(ruby-interpolation-after-dollar-sign): New test.
2014-05-05 Glenn Morris <rgm@gnu.org>
* automated/help-fns.el: New file.

View file

@ -452,6 +452,10 @@ VALUES-PLIST is a list with alternating index and value elements."
(ruby-assert-face "%w{foo #@bar}" 8 font-lock-string-face)
(ruby-assert-face "%s{foo #@bar}" 8 font-lock-string-face))
(ert-deftest ruby-interpolation-after-dollar-sign ()
(ruby-assert-face "\"$#{balance}\"" 2 'font-lock-string-face)
(ruby-assert-face "\"$#{balance}\"" 3 'font-lock-variable-name-face))
(ert-deftest ruby-no-unknown-percent-literals ()
;; No folding of case.
(ruby-assert-face "%S{foo}" 4 nil)