]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix perl-mode indentation after a hanging paren
authorMauro Aranda <maurooaranda@gmail.com>
Thu, 20 Oct 2022 11:41:42 +0000 (08:41 -0300)
committerStefan Kangas <stefankangas@gmail.com>
Wed, 6 Sep 2023 22:13:53 +0000 (00:13 +0200)
* lisp/progmodes/perl-mode.el (perl-hanging-paren-p): Allow
comments.  (Bug#34245)
* test/lisp/progmodes/perl-mode-tests.el (perl-test-bug-34245): New
test.

lisp/progmodes/perl-mode.el
test/lisp/progmodes/perl-mode-tests.el

index ab6333e4b2394c91780cc86855cecdef6dc7a92e..aa130966d7543ef47b52e5c99b075234bb328b01 100644 (file)
@@ -968,7 +968,7 @@ changed by, or (parse-state) if line starts in a quoted string."
 
 (defun perl-hanging-paren-p ()
   "Non-nil if we are right after a hanging parenthesis-like char."
-  (and (looking-at "[ \t]*$")
+  (and (looking-at "[ \t]*\\(?:#.*\\)?$")
        (save-excursion
         (skip-syntax-backward " (") (not (bolp)))))
 
index 3757ac2554750f570a47557a1356e8a4f523f463..a47a6722e20931a6b41943582915cc6eaef74869 100644 (file)
     (font-lock-ensure (point-min) (point-max))
     (should (equal (get-text-property 4 'face) 'font-lock-variable-name-face))))
 
+(ert-deftest perl-test-bug-34245 ()
+  "Test correct indentation after a hanging paren, with and without comments."
+  (with-temp-buffer
+    (perl-mode)
+    (insert "my @foo = (\n\"bar\",\n\"baz\",\n);")
+    (insert "\n\n")
+    (insert "my @ofoo = (\t\t# A comment.\n\"obar\",\n\"obaz\",\n);")
+    (indent-region (point-min) (point-max))
+    (goto-char (point-min))
+    (forward-line)
+    (skip-chars-forward " \t")
+    (should (equal (current-column) perl-indent-level))
+    (search-forward "# A comment.")
+    (forward-line)
+    (skip-chars-forward " \t")
+    (should (equal (current-column) perl-indent-level))))
+
 ;;;; Re-use cperl-mode tests
 
 (defvar cperl-test-mode)