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/