From 161ba7a2a406122c95ab0bb41d1b1bc9bde2d565 Mon Sep 17 00:00:00 2001 From: Protesilaos Stavrou 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