vim-ref で perldoc その他を読む


2010-11-05_203439.png

vimプラグインでよりよいコーディングを
http://tech.kayac.com/archive/vim-plugin-coding.html

上のリンクを読んで、vim-ref を導入してみた。各種言語のドキュメントや、モジュールのソースが簡単に開けるようになって便利だ。詳しい使い方はリンク先を参照して貰うとして、Windows 版 Vim だと次のエラーが出てうまく使えないことがあった。

2010-11-05_193752.png

ref: perldoc: No documentation found for "モジュール名".

よくよく調べてみると、$HOME/vimfiles/autoload/ref/perldoc.vim に一部間違いがあったので次のように修正。

*** perldoc.vim.orig    2010-11-05 13:28:04.251766800 +0900
--- perldoc.vim 2010-11-05 13:32:48.729619800 +0900
***************
*** 229,239 ****


  function! s:modules_list(name)  " {{{2
!   let inc = ref#system(['perl', '-e', 'print join('':'', @INC)']).stdout
    let sep = '[/\\]'
    let files = {}
    let modules = []
!   for i in split(inc, ':')
      let f = split(glob(i . '/**/*.pm', 0), "\n")
      call filter(f, '!has_key(files, v:val)')
      for file in f
--- 229,240 ----


  function! s:modules_list(name)  " {{{2
!   let del = has('win32') ? ';' : ':'
!   let inc = ref#system(['perl', '-e', 'print join(''' . del . ''', @INC)']).stdout
    let sep = '[/\\]'
    let files = {}
    let modules = []
!   for i in split(inc, del)
      let f = split(glob(i . '/**/*.pm', 0), "\n")
      call filter(f, '!has_key(files, v:val)')
      for file in f

@INC に納められたパスを“:”でつないで変数に納め、それを後で split しているのだが、これが Windows におけるドライブパス(“C:”など)と誤爆してしまうようだ。正確には、gvim.exe を起動するとき、カレントディレクトリが Perl をインストールしたディレクトリと違うドライブにあるときに、この問題が顕在化する1

Vim を再起動後、-updatecache オプションを付けて起動すると変更が反映されているはずだ。

:Ref -updatecache perldoc Encode

  1. 例えば、Perl を C ドライブ、Vim を D ドライブにインストールして、エクスプローラーで gvim.exe をダブルクリックして起動した場合。 

2 thoughts on “vim-ref で perldoc その他を読む

コメントを残す