Ich versuche, der Pod-Dokumentation für Perl-Skripte eine Kommentarfunktion hinzuzufügen, und ich möchte Pod-Kommentare mit einem besonderen Gesicht hervorheben. Ein einfacher Prototyp eines Perl-Skripts könnte sein:
#! /usr/bin/env perl
use strict;
use warnings;
print "Hello\n"; # a Perl comment /* hello */
__END__
=head1 SYNOPSIS
my_program <arg1> [OPTIONS]
/* this is a Pod comment */
Wie wir sehen, wird ein Pod-Kommentar /* */
wie in der Programmiersprache C angezeigt . Nur der Teil unter der Zeile __END__
ist jedoch die Pod-Dokumentation. Der Teil über dieser Zeile ist regulärer Perl-Code. Wenn ich nun versuche, dem Pod-Kommentar eine Syntaxhervorhebung hinzuzufügen, indem ich zum Beispiel (aufgerufen von cperl-mode-hook
):
(font-lock-add-keywords nil '(("\\(/\\*.*?\\*/\\)" 1 'font-lock-warning-face t)))
Ich erhalte Folgendes cperl-mode
als Hauptmodus:
Pod-Kommentare werden daher auch in einem regulären Perl-Kommentar hervorgehoben (ein Perl-Kommentar beginnt mit einem #
Zeichen), was nicht erwünscht ist (Pod-Kommentare sollten nur in Pod-Abschnitten hervorgehoben werden, nicht im regulären Perl-Code).
Der Einfachheit halber können wir für diese Frage davon ausgehen, dass die Pod-Dokumentation auf das Ende des Dokuments beschränkt ist, beginnend mit den Zeilen nach dem __END__
Tag. Ist es möglich, die Position des aktuellen Kommentars zu überprüfen und diese mit der Position der __END__
Zeile in Beziehung zu setzen und anhand dieser Informationen zu bestimmen, ob wir uns in einem Pod-Block befinden oder nicht (und dann nur dann eine Syntaxhervorhebung hinzuzufügen, wenn wir uns in einem Pod-Block befinden)? beim Ausführen des Schriftsperrcodes?
pod-mode
Hauptmodus gibt, der für die Pod-Kommentarbereiche geeignet wäre, ist er mmm-mode
möglicherweise anwendbar. Ich bin mir nicht sicher, ob das der Fall ist. Wahrscheinlich benötigen Sie hier nur eine zusätzliche Font-Lock-Konfiguration.
mmm-mode
aber ich denke, dies könnte die Lösung für Sie sein.