[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Enhancing cperl-mode
From: |
Harald Jörg |
Subject: |
Re: Enhancing cperl-mode |
Date: |
Mon, 19 Jun 2023 16:41:22 +0000 |
Corwin Brust <corwin@bru.st> writes:
> Wonderful seeing this.. we are clearly thinking along very similar
> lines! --more--
:D
> I'd be very happy to defer to your efforts; if you would like to take
> the lead on this I'm happy to help all I can, like please absorb what
> you will from my version. As you can see, I've not even bothered to
> fix trivial things like line length in my rush to see the new keywords
> "light up" :)
I'll then happily take your patch as an additional check list that I
haven't missed anything!
> [...]
>> Also, I've been dreaming of adding support for Perl's syntax
>> extensions as minor modes which can be activated on top of perl-mode and
>> cperl-mode.
>
> I have the same theory/vision.
>
> I have long term vision/hopes, and too, I've also been of adding
> support for syntax.pm keywords via minor-modes, probably via some new
> hooks? I have the idea of a "amada" of cperl-syntax-FOO minor modes
> mirroring the CPAN modules using syntax.pm.
...or more generally, stuff like Moose where the "keywords" (has,
extends etc) technically are imported subroutines, but they "feel" like
keywords.
> I hooks call while
> setting up font-locking could be a feasible way, but I'm still trying
> to parse the parsing (sorry if I crashed ur tokenizer there). More
> specifically, I'm not clear on the interaction/use subrs vs calling
> hooks to add/tweak font-locking and what all, exactly, is happening at
> compile time. (Is this effectively impossible? Will we wreck
> performance?)
>
> I do know I haven't found an incantation to make updating the
> font-lock setup "live"; I have to re-launch Emacs as I go to test
> these changes.
For font-locking, there are two mechanisms which can be used by minor
mode hooks: First, there's font-lock-add-keyword /
font-lock-remove-keyword which works for all, well, "keywords" (which
most of the syntax extensions provide). Second, the MATCHER in
font-lock can be a function (as already used in the ominous
cperl-fontify-update) which can work on variables which in turn can be
modified by minor modes, or even hooked into. So yes, it can be done
"live", but it needs preparation. I made a proof-of-concept, but the
implementation is crap. It still hangs around at
https://github.com/HaraldJoerg/cperl-mode/, but I more or less stopped
working on it when I started to contribute to the savannah repository.
Open a file which uses Moose, or Zydeco, or Function::Parameters, or any
of the keyword sets it understands... and it automatically highlights
the extensions. Instead of minor modes it uses commands
cperl-activate-keyword-set, cperl-deactivate-keyword-set, and
cperl-reset-keyword-sets. This is a bad idea, but back then I didn't
understand minor modes.
I'm a bit stuck with indentation, where the code in cperl-mode is
messy. Keywords that are followed by a { code block } sometimes need a
semicolon, and sometimes they don't, and cperl-mode needs to understand
this in order to decide whether the next line is a continuation line or
a new statement.
> Excited to hear the extent you'd like to work on this!
I am interested to work on this, only have been distracted a lot by
non-elisp projects. The upcoming Perl 5.38 made me re-activate my elisp
activities. I'm also interested to get cperl-mode published via ELPA,
so that it can be used once Perl 5.38 is out.
--
Cheers,
haj
Re: Does Emacs need two Perl modes?, Richard Stallman, 2023/06/19