From 1a5a05cf6f68277c142fe3753581d3b0c6470156 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Thu, 12 May 2016 03:18:45 +0300 Subject: [PATCH] Do not mistake colon at the end of regexp for slash symbol * lisp/progmodes/ruby-mode.el (ruby-syntax-propertize): Check the parse state in the "Symbols with special characters" rule (bug#23515). --- lisp/progmodes/ruby-mode.el | 4 +++- test/automated/ruby-mode-tests.el | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 972bf99145e..cd3b04de712 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -1858,7 +1858,9 @@ It will be properly highlighted even when the call omits parens.") (string-to-syntax "'")))) ;; Symbols with special characters. ("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\)\\)" - (3 (string-to-syntax "_"))) + (3 (unless (nth 8 (syntax-ppss (match-beginning 3))) + (goto-char (match-end 0)) + (string-to-syntax "_")))) ;; Part of method name when at the end of it. ("[!?]" (0 (unless (save-excursion diff --git a/test/automated/ruby-mode-tests.el b/test/automated/ruby-mode-tests.el index 7e85fb83edd..52126a3bdf1 100644 --- a/test/automated/ruby-mode-tests.el +++ b/test/automated/ruby-mode-tests.el @@ -146,6 +146,9 @@ VALUES-PLIST is a list with alternating index and value elements." (ert-deftest ruby-slash-char-literal-is-not-mistaken-for-regexp () (ruby-assert-state "?/" 3 nil)) +(ert-deftest ruby-regexp-is-not-mistaken-for-slash-symbol () + (ruby-assert-state "x = /foo:/" 3 nil)) + (ert-deftest ruby-indent-simple () (ruby-should-indent-buffer "if foo -- 2.39.2