[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 101a3b7: Suppress a misleading message when closing a paren in a
From: |
Lars Ingebrigtsen |
Subject: |
master 101a3b7: Suppress a misleading message when closing a paren in a regex |
Date: |
Fri, 30 Oct 2020 08:24:09 -0400 (EDT) |
branch: master
commit 101a3b78309dff5a7466094a893c5582093a6533
Author: Harald Jörg <haj@posteo.de>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Suppress a misleading message when closing a paren in a regex
* lisp/progmodes/cperl-mode.el (cperl-forward-re): Suppress an
error message about "End of string/RE not found" when we are
at the end of a narrowed buffer where the end of a RE is
temporarily unavailable (Bug#37127).
* test/lisp/progmodes/cperl-mode-tests.el (cperl-bug37127):
Add a test to verify that the message is suppressed when
inappropriate, but appears when the RE *is* incomplete.
---
lisp/progmodes/cperl-mode.el | 7 +++++++
test/lisp/progmodes/cperl-mode-tests.el | 29 +++++++++++++++++++++++++++++
2 files changed, 36 insertions(+)
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index ebbea6b..94f42cb 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -3225,6 +3225,13 @@ modify syntax-type text property if the situation is too
hard."
(and cperl-brace-recursing
(or (eq ostart ?\{)
(eq starter ?\{)))
+ ;; If we are at the end of a narrowed buffer, then a
+ ;; scan error should not be reported to the user.
+ ;; This situation actually happens when a closing
+ ;; paren is entered in a regular expression.
+ ;; Reported in Bug#37127.
+ (and (eobp) (buffer-narrowed-p)
+ (equal (car bb) 'scan-error))
(message
"End of `%s%s%c ... %c' string/RE not found: %s"
argument
diff --git a/test/lisp/progmodes/cperl-mode-tests.el
b/test/lisp/progmodes/cperl-mode-tests.el
index 9b486ae..75010f7 100644
--- a/test/lisp/progmodes/cperl-mode-tests.el
+++ b/test/lisp/progmodes/cperl-mode-tests.el
@@ -220,4 +220,33 @@ point in the distant past, and is still broken in
perl-mode. "
(should (equal (nth 3 (syntax-ppss)) nil))
(should (equal (nth 4 (syntax-ppss)) t))))))
+(ert-deftest cperl-bug37127 ()
+ "Verify that closing a paren in a regex goes without a message.
+Also check that the message is issued if the regex terminator is
+missing."
+ (let (collected-messages)
+ ;; Part one: Regex is ok, no messages
+ (ert-with-message-capture collected-messages
+ (with-temp-buffer
+ (insert "$_ =~ /(./;")
+ (cperl-mode)
+ (goto-char (point-min))
+ (search-forward ".")
+ (let ((last-command-event ?\)))
+ (cperl-electric-rparen 1)
+ (cperl-find-pods-heres (point-min) (point-max) t)))
+ (should (string-equal collected-messages "")))
+ ;; part two: Regex terminator missing -> message
+ (ert-with-message-capture collected-messages
+ (with-temp-buffer
+ (insert "$_ =~ /(..;")
+ (goto-char (point-min))
+ (cperl-mode)
+ (search-forward ".")
+ (let ((last-command-event ?\)))
+ (cperl-electric-rparen 1)
+ (cperl-find-pods-heres (point-min) (point-max) t)))
+ (should (string-match "^End of .* string/RE"
+ collected-messages)))))
+
;;; cperl-mode-tests.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 101a3b7: Suppress a misleading message when closing a paren in a regex,
Lars Ingebrigtsen <=