Estoy tratando de agregar una función de comentarios a la documentación de Pod para los scripts de Perl, y me gustaría resaltar los comentarios de Pod con una cara especial. Un simple prototipo de script Perl podría ser:
#! /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 */
Como vemos, un comentario de Pod está rodeado /* */
como en el lenguaje de programación C. Sin embargo, solo la parte debajo de la línea __END__
es la documentación del Pod. La parte sobre esa línea es el código Perl normal. Ahora, si trato de agregar resaltado de sintaxis al comentario de Pod usando, por ejemplo (llamado desde cperl-mode-hook
):
(font-lock-add-keywords nil '(("\\(/\\*.*?\\*/\\)" 1 'font-lock-warning-face t)))
Obtengo lo siguiente usando cperl-mode
como modo principal:
Por lo tanto, los comentarios de Pod se resaltan también en un comentario de Perl normal (un comentario de Perl comienza con un #
carácter), lo que no se desea (los comentarios de Pod solo se deben resaltar en las secciones de Pod, no en el código de Perl normal).
Para simplificar, para esta pregunta, podemos suponer que la documentación del Pod se limita al final del documento, comenzando con las líneas después de la __END__
etiqueta. ¿Es posible verificar la posición del comentario actual y relacionarlo con la posición de la __END__
línea, y a partir de esa información determinar si estamos dentro de un bloque Pod o no (y luego agregar resaltado de sintaxis solo si estamos dentro de un bloque Pod) cuando se ejecuta el código de bloqueo de fuente?
pod-mode
modo principal que sería adecuado para las regiones de comentarios Pod, entonces mmm-mode
podría ser aplicable. No estoy seguro de que sea así. Probablemente lo que necesita aquí es solo una configuración adicional de bloqueo de fuente.
mmm-mode
pero creo que esta podría ser la solución para ti.