file_include.vim

『バッファがインクルードしているファイルの一覧を表示する』
を unite の source で書いてみました。


[file_include.vim]

function! unite#sources#file_include#define()
  return s:source
endfunction
let s:source = {
      \ 'name' : 'file_include',
      \}
function! s:source.gather_candidates(args, context)
    " from neocomplcache
    let files = neocomplcache#sources#include_complete#get_include_files(bufnr("%"))
    
    return map(files, '{
    \ "word" : v:val,
    \ "source" : "file",
    \ "kind" : "file",
    \ "action__path" : v:val
    \ }')
endfunction


[コマンド]

:Unite file_include


[出力]


neocomplcache の include_complete に『インクルードしているファイルを取得する』機能があるのでそれを使っています。
file_include.vim は結構適当に書いているので、vim script 的に間違ってるかも……。
とりあえず、これで動いてはいるみたいです。

課題

  • file の後ろの余白を何とかしたい(左寄せしたい)
  • ファイルの開きかたを選択(Windowやtab等)
  • 表示を絶対パスから相対パスに変更
  • ウィンドウのサイズに合わせて長さを調節(他のfileみたいに)

などなど
もしかしたら Unite 側でサポートしているかも知れませんが……。


あ、あと初めて Unite を使ってみたんですなかなかいい感じです。
今回みたいにユーザ側で source を追加できるの機能が思いのほか面白い。
(msvc みたいにコンパイルエラーを列挙して、エラー箇所にジャンプしたり、ブレークポイント一覧を出したり etc...)
うーん、夢は広がりますね。


[追記]
neocomplcache に file_include.vim を追加していただきました。
最新の neocomplcache を落として頂ければ、:Unite file_include を使用することが出来ます。


[参照]
http://d.hatena.ne.jp/thinca/20101105/1288896674
http://vim-users.jp/2011/01/hack197/