From c28662a8dc4fefae711b21fcb7a71e871e37d1e6 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Fri, 20 Jul 2012 07:10:25 -0400 Subject: [PATCH] * lisp/progmodes/ruby-mode.el (ruby-parse-partial): No error when end up inside string symbol literal. * test/automated/ruby-mode-tests.el: New file with one test. Fixes: debbugs:11923 --- lisp/ChangeLog | 5 +++++ lisp/progmodes/ruby-mode.el | 2 +- test/ChangeLog | 4 ++++ test/automated/ruby-mode-tests.el | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 test/automated/ruby-mode-tests.el diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8edae88c1da..d7cb05c0664 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-07-20 Dmitry Gutov + + * progmodes/ruby-mode.el (ruby-parse-partial): No error when end + up inside string symbol literal (bug#11923). + 2012-07-20 Eli Zaretskii * startup.el (fancy-startup-text): Read the whole tutorial, not diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 5d79437c3c2..091a7b74df2 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -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]*[!?=]?\\)?") diff --git a/test/ChangeLog b/test/ChangeLog index f82a395e548..db8380cfb27 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,7 @@ +2012-07-20 Dmitry Gutov + + * automated/ruby-mode-tests.el: New file with one test. + 2012-07-17 Stefan Monnier * 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 index 00000000000..1a91f518b92 --- /dev/null +++ b/test/automated/ruby-mode-tests.el @@ -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 . + +;;; 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 -- 2.11.4.GIT