ref.vim に perldoc を追加した

最近ネタ切れ気味なのでたまには更新情報なんぞを。
ref.vim の perldoc 用のソースを作りました。これで ref.vim で perldoc が見れます。

GitHub - thinca/vim-ref: Integrated reference viewer.

で、ここで話が終わっちゃうのもあれなんでもう少し。

モジュールのソースの表示

Vim で perldoc を閲覧するものの一つとして id:secondlife さんの perldoc.vim がありますが、これの機能に s で perldoc とモジュールのソースコードをトグルするって機能があります。
作ってる最中は当然のように既存のスクリプトであるこれとかを参考にしていたわけだけど、この機能を入れようかすごく迷った。と言うのも、ref.vim は汎用的なインターフェースにしたいので。
入れられなくもないけど、とりあえず今回は見送った。けど、代わりに適当に変数を定義することにしたので、それでとりあえず実現はできます。

augroup vimrc-plugin-ref
  autocmd!
  autocmd FileType ref nnoremap <silent> <buffer> <expr> s
  \ b:ref_source ==# 'perldoc' ?
  \ (b:ref_perldoc_mode ==# 'module' ? ":\<C-u>Ref perldoc -m " .
  \                                b:ref_perldoc_word . "\<CR>" :
  \  b:ref_perldoc_mode ==# 'source' ? ":\<C-u>Ref perldoc " .
  \                                b:ref_perldoc_word . "\<CR>" :
  \ 's') : 's'
augroup END

な、なんだこのキモい設定は…。

ハイライトについて

perldoc に限らず ref のソースを作る際に苦労するのが、補完関数とハイライト。どちらも必須じゃないんだけど、やっぱりあった方が嬉しいよね。

LWP のページを見ている様子。これだけ見ると結構いけてるように見えるけど、正体はインデント量固定でハイライトしているのでページによっては全然ハイライトされなかったり変にハイライトされてしまう。
ページによってインデント量がまちまちでうまくいかなかった…。もっといい方法があれば誰か教えてください。
あとはperlコードの部分以外はタイトル部分と""部分くらいしかハイライトしてない。他にどこがハイライトされると嬉しいのかいまいちピンとこない。