From 384483e26368137bc6d0ffc962235277b886eae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harald=20J=C3=B6rg?= Date: Fri, 22 Aug 2025 12:42:00 +0200 Subject: [PATCH] ; cperl-mode.el: Indent labels only in code (Bug#79271) * lisp/progmodes/cperl-mode.el (cperl-indent-line): Make sure that labels are indented in code only * test/lisp/progmodes/cperl-mode-resources/cperl-indents.erts: Two new testcases for non-indentable "labels" in a regex pattern and a qw list --- lisp/progmodes/cperl-mode.el | 1 + .../cperl-mode-resources/cperl-indents.erts | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index fdb841cfffd..be8f36def58 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -2726,6 +2726,7 @@ PARSE-DATA is used to save status between calls in a loop." (if (listp indent) (setq indent (car indent))) (cond ((and (looking-at (rx (sequence (eval cperl--label-rx) (not (in ":"))))) + (null (get-text-property (point) 'syntax-type)) (not (looking-at (rx (eval cperl--false-label-rx))))) (and (> indent 0) (setq indent (max cperl-min-label-indent diff --git a/test/lisp/progmodes/cperl-mode-resources/cperl-indents.erts b/test/lisp/progmodes/cperl-mode-resources/cperl-indents.erts index 3a779442a8a..65ce757d048 100644 --- a/test/lisp/progmodes/cperl-mode-resources/cperl-indents.erts +++ b/test/lisp/progmodes/cperl-mode-resources/cperl-indents.erts @@ -123,3 +123,25 @@ sub foo ( return $a + $b + $in1; } =-=-= + +Name: cperl-false-label-in-regex + +=-= +# -*- mode: cperl -*- +# John Ciolfi reported as Bug#79271 +my $str =~ s/^ + (Field1: [^\n]+) \s* + Field2: \s* (\S+) \s* + //xsm; +=-=-= + +Name: cperl-false-label-in-qw + +=-= +# Related to cperl-false-label-in-regex / Bug#79271 +my @chunks = qw( + sub + LABEL: + more words + ); +=-=-=