in reply to Re: Writing Perl with Emacs: Are there perl-mode users around?
in thread Writing Perl with Emacs: Are there perl-mode users around?

> weird color-highlighting for @arrays and %hashes

Some background:

The "faces" (emacs lingo for text style) for arrays and hashes are specific to cperl-mode, while all other faces are standard (c-mode has no need for sigils)

This means if you load-theme another "theme" (the default is commonly known as "fruit salad") standards like font-lock-constant-face are covered, while cperl-array-face is often forgotten and still looks weird.

I think I customized cperl-hash-face etc at some point to be derived from standard faces like font-lock-variable-name-face

But recently I got bitten again when giving a talk, where reveal.js was taking the highlighting of code from emacs and arrays looked "weird" again.

Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^3: Writing Perl with Emacs: Are there perl-mode users around?
by haj (Vicar) on Sep 27, 2023 at 21:27 UTC

    The "special" faces in cperl-mode are one of the things which seem to annoy perl-mode users. I didn't expect many of them here, in a Perl-only forum, but they contribute to the discussion in the Emacs lists. Some of the themes which ship with Emacs (e.g. the Modus themes by Protesilaos Stavrou) map these faces to standard faces, which makes them look "nice" in light and dark mode, but they are somewhat ... inconsistent. And none of the themes takes cperl-nonoverridable-face into consideration.

    As a part of the merge of Perl modes, the faces might undergo some refactoring anyway: cperl-hash-face and cperl-array-face will probably indeed end up as inheriting from font-lock-variable-name-face with some extra decoration (perl-mode uses underline for both hashes and arrays, I'd like to keep them distinguishable). The comments by LanX and Smonff suggest that I can get away with that. :-) cperl-nonoverridable-face will inherit from whatever is used for overridable builtins (font-lock-builtin-face comes into mind).

    Some "standard" faces are not (yet) used by cperl-mode, and Emacs 29.1 brings more standard faces which make sense for cperl-mode.

    All that will take some time, though.

      By the way, I suggested your post on blogs.perl.org as a Perl Weekly Newsletter entry, so it will bring some more people into the discussion loop, hopefully.

      🌸