unite-alias 作った

寒いね。冬だね。寒い冬は家にこもって unite の source でも作ろうね。

さて、今回は unite-alias という source を作りました。これは、既存の source について引数つきで別名を与えるというものです。何を言っているのかよくわからないですね。実例を挙げましょう。

使い方

.vimrc には以下のように alias を記述します。

let g:unite_source_alias_aliases = {
\   'memo' : {
\     'source': 'file_rec',
\     'args': '~/Dropbox/memo',
\   },
\ }

このように設定しておくと

:Unite memo

としたときに、実際には file_rec に対して args として ['~/Dropbox/memo'] を渡した状態として実行され、その結果が候補として表示されます。ただし候補に表示される source の名前は memo となります。

作った目的

単純に
:Unite memo
としたときに
~/Dropbox/memo
以下を列挙して欲しかっただけです。完全に専用で unite-memo を作っても良かったんですが、もうちょっと汎用的に使えるようにこのような形にしてみました。

もう少し付け加えると、実は memo ディレクトリを開く key mapping も設定しているのですが、案外 key mapping はすぐに忘れてしまうので、わかりやすい名前なら覚えておけるだろうという魂胆です。source にしてしまえば :Unite と入力してタブを押せば名前が補完されるから覚えておく必要も無いですしね。

誤算

args を有効に利用している source が今のところ file_rec しか無いんじゃないか疑惑。まあぼくは今のところ特定ディレクトリに対して file_rec が使えれば十分なので問題ないわけだけど。他の source で args をどのような役割で使うことができたら便利なのかも思いつかないし。

あと、gather_candidates するときに file_rec の gather_candidates を実行する必要があって、そのために file_rec source を取得したかったんだけど、その方法がおそらく無かった。結局 unite.vim のソースの一部をコピーしたりしたけどあまり良くない感じ。これは改善を考える。