unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Protesilaos Stavrou <info@protesilaos.com>
To: Lars Ingebrigtsen <larsi@gnus.org>
Cc: 45840@debbugs.gnu.org
Subject: bug#45840: 28.0.50; [PATCH] Remove hardcoded underline for perl-mode variables
Date: Tue, 19 Jan 2021 09:07:27 +0200	[thread overview]
Message-ID: <87a6t51k28.fsf@protesilaos.com> (raw)
In-Reply-To: <87o8hlmo7h.fsf@gnus.org> (Lars Ingebrigtsen's message of "Tue, 19 Jan 2021 07:32:18 +0100")

[-- Attachment #1: Type: text/plain, Size: 1172 bytes --]

On 2021-01-19, 07:32 +0100, Lars Ingebrigtsen <larsi@gnus.org> wrote:

> Protesilaos Stavrou <info@protesilaos.com> writes:
>
>> The attached patch merely assigns font-lock-variable-name-face while
>> removing the hardcoded underline property.
>>
>> If you think that the underline should remain in place, then I can
>> provide another patch that would add a new face which would inherit from
>> font-lock-variable-name-face and add an underline accordingly.
>
> The comment here mentions this:
>
>      ;; Additionally underline non-scalar variables.  Maybe this is a bad idea.
>      ;;'("[$@%*][#{]?\\(\\sw+\\)" 1 font-lock-variable-name-face)
>      ("[$*]{?\\(\\sw+\\(::\\sw+\\)*\\)" 1 font-lock-variable-name-face)
>      ("\\([@%]\\|\\$#\\)\\(\\sw+\\(::\\sw+\\)*\\)"
>       (2 (cons font-lock-variable-name-face '(underline))))
>
> And it is a bad idea to hard-code this, but having different faces here
> makes sense, I think.  So could you whip up another patch to add the new
> face, as you suggested?

Thank you, Lars!  Please find attached the new patch.  I also added a
NEWS entry.  Feel free to edit it as you will.

-- 
Protesilaos Stavrou
protesilaos.com

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Add-perl-non-scalar-variable-face-to-perl-mode.patch --]
[-- Type: text/x-patch, Size: 2443 bytes --]

From 161ba7a2a406122c95ab0bb41d1b1bc9bde2d565 Mon Sep 17 00:00:00 2001
From: Protesilaos Stavrou <info@protesilaos.com>
Date: Tue, 19 Jan 2021 09:04:17 +0200
Subject: [PATCH] Add 'perl-non-scalar-variable' face to perl-mode

* lisp/progmodes/perl-mode.el (perl-non-scalar-variable): Define new
face.
(perl-font-lock-keywords-2): Apply 'perl-non-scalar-variable' face.

* etc/NEWS: Document the new face.
---
 etc/NEWS                    |  6 ++++++
 lisp/progmodes/perl-mode.el | 11 +++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index d632283e7f..8fc5f3e046 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -352,6 +352,12 @@ When emacsclient connects, Emacs will (by default) output a message
 about how to exit the client frame.  If 'server-client-instructions'
 is set to nil, this message is inhibited.
 
+** Perl mode
+
+---
+*** New face 'perl-non-scalar-variable'.
+This is used to fontify non-scalar variables.
+
 ** Python mode
 
 *** 'python-shell-interpreter' now defaults to python3 on systems with python3.
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index 2a2a4978c6..d047dd543c 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -95,6 +95,12 @@ perl
   :prefix "perl-"
   :group 'languages)
 
+(defface perl-non-scalar-variable
+  '((t :inherit font-lock-variable-name-face :underline t))
+  "Face used for non-scalar variables."
+  :version "28.1"
+  :group 'perl)
+
 (defvar perl-mode-abbrev-table nil
   "Abbrev table in use in perl-mode buffers.")
 (define-abbrev-table 'perl-mode-abbrev-table ())
@@ -187,11 +193,12 @@ perl-font-lock-keywords-2
      ;;
      ;; Fontify function, variable and file name references.
      ("&\\(\\sw+\\(::\\sw+\\)*\\)" 1 font-lock-function-name-face)
-     ;; Additionally underline non-scalar variables.  Maybe this is a bad idea.
+     ;; Additionally fontify non-scalar variables.  `perl-non-scalar-variable'
+     ;; will underline them by default.
      ;;'("[$@%*][#{]?\\(\\sw+\\)" 1 font-lock-variable-name-face)
      ("[$*]{?\\(\\sw+\\(::\\sw+\\)*\\)" 1 font-lock-variable-name-face)
      ("\\([@%]\\|\\$#\\)\\(\\sw+\\(::\\sw+\\)*\\)"
-      (2 (cons font-lock-variable-name-face '(underline))))
+      (2 'perl-non-scalar-variable))
      ("<\\(\\sw+\\)>" 1 font-lock-constant-face)
      ;;
      ;; Fontify keywords with/and labels as we do in `c++-font-lock-keywords'.
-- 
2.30.0


  reply	other threads:[~2021-01-19  7:07 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-13 13:46 bug#45840: 28.0.50; [PATCH] Remove hardcoded underline for perl-mode variables Protesilaos Stavrou
2021-01-19  6:32 ` Lars Ingebrigtsen
2021-01-19  7:07   ` Protesilaos Stavrou [this message]
2021-01-19  7:11     ` Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87a6t51k28.fsf@protesilaos.com \
    --to=info@protesilaos.com \
    --cc=45840@debbugs.gnu.org \
    --cc=larsi@gnus.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).