* lisp/progmodes/ruby-mode.el (ruby-parse-partial): No error when end
authorDmitry Gutov <dgutov@yandex.ru>
Fri, 20 Jul 2012 11:10:25 +0000 (07:10 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 20 Jul 2012 11:10:25 +0000 (07:10 -0400)
up inside string symbol literal.
* test/automated/ruby-mode-tests.el: New file with one test.

Fixes: debbugs:11923

lisp/ChangeLog
lisp/progmodes/ruby-mode.el
test/ChangeLog
test/automated/ruby-mode-tests.el [new file with mode: 0644]

index 8edae88..d7cb05c 100644 (file)
@@ -1,3 +1,8 @@
+2012-07-20  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (ruby-parse-partial): No error when end
+       up inside string symbol literal (bug#11923).
+
 2012-07-20  Eli Zaretskii  <eliz@gnu.org>
 
        * startup.el (fancy-startup-text): Read the whole tutorial, not
index 5d79437..091a7b7 100644 (file)
@@ -594,7 +594,7 @@ and `\\' when preceded by `?'."
         (goto-char pnt))
        ((looking-at ":\\(['\"]\\)")
         (goto-char (match-beginning 1))
-        (ruby-forward-string (buffer-substring (match-beginning 1) (match-end 1)) end))
+        (ruby-forward-string (match-string 1) end t))
        ((looking-at ":\\([-,.+*/%&|^~<>]=?\\|===?\\|<=>\\|![~=]?\\)")
         (goto-char (match-end 0)))
        ((looking-at ":\\([a-zA-Z_][a-zA-Z_0-9]*[!?=]?\\)?")
index f82a395..db8380c 100644 (file)
@@ -1,3 +1,7 @@
+2012-07-20  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * automated/ruby-mode-tests.el: New file with one test.
+
 2012-07-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * indent/shell.sh: Add test case for ${#VAR}.
diff --git a/test/automated/ruby-mode-tests.el b/test/automated/ruby-mode-tests.el
new file mode 100644 (file)
index 0000000..1a91f51
--- /dev/null
@@ -0,0 +1,39 @@
+;;; ruby-mode-tests.el --- Test suite for ruby-mode
+
+;; Copyright (C) 2012  Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ruby-mode)
+
+(ert-deftest indent-line-after-symbol-made-from-string-interpolation ()
+  "It can indent the line after symbol made using string interpolation."
+  (let ((initial-content "def foo(suffix)\n  :\"bar#{suffix}\"\n")
+        (expected-content "def foo(suffix)\n  :\"bar#{suffix}\"\n  "))
+    (with-temp-buffer
+      (insert initial-content)
+      (ruby-indent-line) ; Doesn't rely on text properties or the syntax table.
+      (let ((buffer-content (buffer-substring-no-properties (point-min)
+                                                            (point-max))))
+        (should (string= buffer-content expected-content))))))
+
+(provide 'ruby-mode-tests)
+
+;;; ruby-mode-tests.el ends here