Perlスクリプトのポッドドキュメントにコメント機能を追加しようとしています。ポッドのコメントを特別な顔で強調したいと思います。単純なプロトタイプPerlスクリプトは次のようになります。
#! /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 */
ご覧の/* */
ように、Cプログラミング言語の場合と同様に、Podコメントの後に続きます。ただし、__END__
境界より下の部分のみがポッドのドキュメントです。その行の上の部分は通常のPerlコードです。ここで、たとえば(fromから呼び出されるcperl-mode-hook
)を使用して、Podコメントに構文の強調表示を追加しようとすると、次のようになります。
(font-lock-add-keywords nil '(("\\(/\\*.*?\\*/\\)" 1 'font-lock-warning-face t)))
私はcperl-mode
メジャーモードとして以下を使用しています:
そのため、Podコメントは通常のPerlコメント(Perlコメントが#
文字で始まる)でも強調表示されますが、これは望ましくありません(Podコメントは、通常のPerlコードではなく、Podセクションでのみ強調表示する必要があります)。
簡単にするために、この質問では、ポッドのドキュメントがドキュメントの最後に限定され、__END__
タグの後の行から始まると想定できます。現在のコメントの位置を確認し、それを__END__
行の位置に関連付けることができます。その情報から、Podブロック内にあるかどうかを判断します(そして、Podブロック内にある場合のみ構文の強調表示を追加します)フォントロックコードを実行するとき?
pod-mode
ポッドのコメント領域に適したメジャーモードがある場合は、mmm-mode
適用できる可能性があります。それが事実かどうかはわかりません。おそらくここで必要なのは、追加のfont-lock構成だけです。
mmm-mode
いませんが、これがあなたのための解決策になると思います。