読者です 読者をやめる 読者になる 読者になる

perlapiのctags用ファイルを作るスクリプト

あけましておめでとうございます。今年もよろしくおねがいします。

正月ということでふだんなかなかできないことをやろうかなということでXS勉強中です。

XSにはあまり詳しくないのでCPANにある実例を色々読んだりしてるとperldoc引きまくりな刑になるわけですが、perlapiのperldocはとても長いのでperldocで読むのはあまり効率がよくないなぁと思ったのでvimからctagsでjumpするようにしてみました。キーワードの下でC-wC-]とかでjumpできるので個人的にはだいぶ効率あがる気がします。

他によい方法があるのかもしれないですが、

use strict;
use warnings;
use Path::Class;

my $perlapi = `perldoc -ml perlapi`;
chomp $perlapi;

my $io = file($perlapi)->openr;
my $line_number = 1;
my @lines;
while ( my $line = <$io> ) {
    if ( $line =~ /=item (.+)/ ) {
        my $keyword = $1;
        push @lines, "$keyword\t$perlapi\t$line_number\n";
    }
    $line_number++;
}

for my $line ( sort @lines ) {
    print $line;
}

こんな感じのてきとーなscriptを書いてやってxsモードのときにtagsに通すようにしています。

あと、perlapiだけだと微妙に足りないっぽいことが出てきたりするので、ppport用のtagsも作って同様にしています。

ctags  -f ppport.tags -language-force=c `perldoc -ml Devel::PPPort`

こんな感じのコマンドでいけるっぽい。

http://github.com/walf443/dotfiles/commit/195d86aafe731731028abf76d40e4ecabc81dedd

こんな感じに設定しています。