Subject: bug#30549: closed (Re: bug#30549: 25.2; perl-mode: font lock improvement)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 03 Mar 2018 11:10:02 +0000

Your bug report

#30549: 25.2; perl-mode: font lock improvement

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
30549: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=30549
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#30549: 25.2; perl-mode: font lock improvement
From: Eli Zaretskii <[email-masked]>
To: Evgeni Kolev <[email-masked]>
Cc: [email-masked]
Date: Sat, 03 Mar 2018 13:09:11 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Evgeni Kolev <[email-masked]>
> Date: Tue, 20 Feb 2018 18:19:55 +0200
> 
> I'm reporting an issue with perl-mode's font lock for perl keywords, and
> suggesting a fix.
> 
> To reproduce:
> 
> - emacs -Q
> - clear the scratch buffer
> - M-x perl-mode
> - enter the following text:
> 
>     use Fake;
>     my $use = 123;
>     my $var = 123;
> 
> - observe the issue: `$use` is incorrectly highlighted - it should be
> highlighted with the same color as `$var`, but it's highlighted with the
> same color as `use` (on the first line).
> 
> The fix I suggest is borrowed from cperl-mode - extend the font lock regex
> to *not* match keywords if they start with a perl sigil.

Thanks, pushed to the master branch.

In the future, please accompany your contributions with a Git log
message formatted like ChangeLog, see CONTRIBUTE for the details.

Subject: 25.2; perl-mode: font lock improvement
From: Evgeni Kolev <[email-masked]>
To: [email-masked]
Date: Tue, 20 Feb 2018 18:19:55 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

I'm reporting an issue with perl-mode's font lock for perl keywords, and
suggesting a fix.

To reproduce:

- emacs -Q
- clear the scratch buffer
- M-x perl-mode
- enter the following text:

    use Fake;
    my $use = 123;
    my $var = 123;

- observe the issue: `$use` is incorrectly highlighted - it should be
highlighted with the same color as `$var`, but it's highlighted with the
same color as `use` (on the first line).

The fix I suggest is borrowed from cperl-mode - extend the font lock regex
to *not* match keywords if they start with a perl sigil.

The diff is below, please let me know if it can be improved. I've signed
the copyright assignment.

>From 8d1977cfc6c4884b231270c33c3bdabbd16b14aa Mon Sep 17 00:00:00 2001
From: Evgeni Kolev <[email-masked]>
Date: Tue, 20 Feb 2018 18:14:29 +0200
Subject: [PATCH] lisp/progmodes/perl-mode.el: keyword regex must not match
 sigils

---
 lisp/progmodes/perl-mode.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index 9948078..c1d94ac 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -165,7 +165,7 @@ perl-font-lock-keywords-1
     ;; Fontify function and package names in declarations.
     ("\\<\\(package\\|sub\\)\\>[ \t]*\\(\\sw+\\)?"
      (1 font-lock-keyword-face) (2 font-lock-function-name-face nil t))
-    ("\\<\\(import\\|no\\|require\\|use\\)\\>[ \t]*\\(\\sw+\\)?"
+    ("\\(^\\|[^$@%&\\]\\)\\<\\(import\\|no\\|require\\|use\\)\\>[
\t]*\\(\\sw+\\)?"
      (1 font-lock-keyword-face) (2 font-lock-constant-face nil t)))
   "Subdued level highlighting for Perl mode.")

--
2.9.0