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

はわわーっ

はわわわわっ

[vim] プラグインがインストールされているか調べる

vim

プラグインがインストールされているか調べる関数を書いてみた。
runtimepath の中から plugin/plugin_name.vim か autoload/plugin_name.vim を探すだけ。

function! s:has_plugin(plugin)
  for path in split(&runtimepath, ',')
    let ret = filereadable(path . '/plugin/' . a:plugin . '.vim')
    \   || filereadable(path . '/autoload/' . a:plugin . '.vim')
    if ret 
      break
    endif
  endfor
  return ret
endfunction

最初はこんな感じにして runtimepath でループしてたんだけど、globpath() を使うとかっこよくかけそうだったので直してみた。

function! s:has_plugin(plugin)
  return !empty(globpath(&runtimepath, 'plugin/' . a:plugin . '.vim'))
  \   || !empty(globpath(&runtimepath, 'autoload/' . a:plugin . '.vim'))
endfunction

globpath() は該当するファイルが無いときには空文字列を返すので、それを使って判別するようにした。
自分はこれで満足してるんだけど、unite とか neocomplcache のソースだけのものはこれだと判別されない。