[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 8dc2372: cperl-mode: Indentation of ')' follows customisation
From: |
Lars Ingebrigtsen |
Subject: |
master 8dc2372: cperl-mode: Indentation of ')' follows customisation |
Date: |
Mon, 9 Nov 2020 09:29:49 -0500 (EST) |
branch: master
commit 8dc237270f88a6abce4df9a1235b38288792ab71
Author: Harald Jörg <haj@posteo.de>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
cperl-mode: Indentation of ')' follows customisation
* lisp/progmodes/cperl-mode.el (cperl-style-alist): Add
cperl-close-paren-offset to the settings for PBP style.
* test/lisp/progmodes/cperl-mode-tests.el (cperl-bug19709):
New test to verify correct indentation of closing parentheses (Bug#19709).
* test/lisp/progmodes/cperl-mode-resources/cperl-bug-19709.pl:
New test case with code from the bug report.
* test/lisp/progmodes/cperl-mode-resources/cperl-indent-styles.pl:
Add a new test clause for cperl-close-paren-offset.
---
lisp/progmodes/cperl-mode.el | 1 +
.../cperl-mode-resources/cperl-bug-19709.pl | 25 ++++++++++++++
.../cperl-mode-resources/cperl-indent-styles.pl | 10 ++++++
test/lisp/progmodes/cperl-mode-tests.el | 38 ++++++++++++++++++++++
4 files changed, 74 insertions(+)
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 6178cdf..d5b3002 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -5983,6 +5983,7 @@ else
(cperl-continued-brace-offset . 0)
(cperl-label-offset . -2)
(cperl-continued-statement-offset . 4)
+ (cperl-close-paren-offset . -4)
(cperl-extra-newline-before-brace . nil)
(cperl-extra-newline-before-brace-multiline . nil)
(cperl-merge-trailing-else . nil)
diff --git a/test/lisp/progmodes/cperl-mode-resources/cperl-bug-19709.pl
b/test/lisp/progmodes/cperl-mode-resources/cperl-bug-19709.pl
new file mode 100644
index 0000000..f7c51a2
--- /dev/null
+++ b/test/lisp/progmodes/cperl-mode-resources/cperl-bug-19709.pl
@@ -0,0 +1,25 @@
+# -------- bug#19709: input --------
+my $a = func1(
+ Module::test()
+ );
+
+my $b = func2(
+ test()
+);
+
+my $c = func3(
+ Module::test(),
+);
+# -------- bug#19709: expected output --------
+my $a = func1(
+ Module::test()
+);
+
+my $b = func2(
+ test()
+);
+
+my $c = func3(
+ Module::test(),
+);
+# -------- bug#19709: end --------
diff --git a/test/lisp/progmodes/cperl-mode-resources/cperl-indent-styles.pl
b/test/lisp/progmodes/cperl-mode-resources/cperl-indent-styles.pl
index 0832f86..371b19b 100644
--- a/test/lisp/progmodes/cperl-mode-resources/cperl-indent-styles.pl
+++ b/test/lisp/progmodes/cperl-mode-resources/cperl-indent-styles.pl
@@ -42,3 +42,13 @@ die "This world is backwards";
}
}
# -------- PBP uncuddle else: end --------
+
+# -------- PBP closing paren offset: input --------
+my $a = func1(
+ Module::test()
+ );
+# -------- PBP closing paren offset: expected output --------
+my $a = func1(
+ Module::test()
+);
+# -------- PBP closing paren offset: end --------
diff --git a/test/lisp/progmodes/cperl-mode-tests.el
b/test/lisp/progmodes/cperl-mode-tests.el
index effebc8..bd8a1a9 100644
--- a/test/lisp/progmodes/cperl-mode-tests.el
+++ b/test/lisp/progmodes/cperl-mode-tests.el
@@ -249,6 +249,44 @@ Perl is not Lisp: An open paren in column 0 does not start
a function."
(setq got (concat "test case " name ":\n" (buffer-string)))
(should (equal got expected))))))))
+(ert-deftest cperl-bug19709 ()
+ "Verify that indentation of closing paren works as intended.
+Note that Perl mode has no setting for close paren offset, per
+documentation it does the right thing anyway."
+ (let ((file (ert-resource-file "cperl-bug-19709.pl")))
+ (with-temp-buffer
+ (insert-file-contents file)
+ (goto-char (point-min))
+ (while (re-search-forward
+ (concat "^# ?-+ \\_<\\(?1:.+?\\)\\_>: input ?-+\n"
+ "\\(?2:\\(?:.*\n\\)+?\\)"
+ "# ?-+ \\1: expected output ?-+\n"
+ "\\(?3:\\(?:.*\n\\)+?\\)"
+ "# ?-+ \\1: end ?-+")
+ nil t)
+ (let ((name (match-string 1))
+ (code (match-string 2))
+ (expected (match-string 3))
+ got)
+ (with-temp-buffer
+ (insert code)
+ (funcall cperl-test-mode)
+ (setq-local
+ ;; settings from the bug report
+ cperl-indent-level 4
+ cperl-indent-parens-as-block t
+ cperl-close-paren-offset -4
+ ;; same, adapted for per-mode
+ perl-indent-level 4
+ perl-indent-parens-as-block t)
+ (goto-char (point-min))
+ (while (null (eobp))
+ (cperl-indent-command)
+ (next-line))
+ (setq expected (concat "test case " name ":\n" expected))
+ (setq got (concat "test case " name ":\n" (buffer-string)))
+ (should (equal got expected))))))))
+
(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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 8dc2372: cperl-mode: Indentation of ')' follows customisation,
Lars Ingebrigtsen <=