Tôi đang cố gắng thêm một tính năng bình luận vào tài liệu Pod cho các tập lệnh Perl và tôi muốn đánh giá cao các bình luận Pod với một khuôn mặt đặc biệt. Một kịch bản Perl nguyên mẫu đơn giản có thể là:
#! /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 */
Như chúng ta thấy, một nhận xét Pod bị bỏ qua /* */
như trong ngôn ngữ lập trình C. Tuy nhiên, chỉ có phần bên dưới dòng __END__
là tài liệu Pod. Phần trên dòng đó là mã Perl thông thường. Bây giờ, nếu tôi cố gắng thêm đánh dấu cú pháp vào nhận xét Pod bằng ví dụ (được gọi từ cperl-mode-hook
):
(font-lock-add-keywords nil '(("\\(/\\*.*?\\*/\\)" 1 'font-lock-warning-face t)))
Tôi nhận được sau đây bằng cách sử dụng cperl-mode
như chế độ chính:
Vì vậy, các bình luận Pod cũng được tô sáng trong một bình luận Perl thông thường (một bình luận Perl bắt đầu bằng một #
ký tự), điều này không mong muốn (các bình luận Pod chỉ nên được tô sáng trong các phần Pod, không phải trong mã Perl thông thường).
Để đơn giản, đối với câu hỏi này, chúng tôi có thể giả sử rằng tài liệu Pod được giới hạn ở cuối tài liệu, bắt đầu bằng các dòng sau __END__
thẻ. Có thể kiểm tra vị trí của nhận xét hiện tại và liên kết vị trí đó với vị trí của __END__
dòng và từ thông tin đó xác định xem chúng ta có ở trong khối Pod hay không (và sau đó thêm tô sáng cú pháp chỉ khi chúng ta ở trong khối Pod) Khi chạy mã khóa phông chữ?
pod-mode
chế độ chính phù hợp với các vùng nhận xét Pod, thì mmm-mode
có thể áp dụng. Tôi không chắc đó là trường hợp. Có lẽ những gì bạn cần ở đây chỉ là cấu hình khóa chữ bổ sung.
mmm-mode
nhưng tôi nghĩ đây có thể là giải pháp cho bạn.