Hack #197: unite.vim の source を作成する
Posted at 2011/01/30ツイート
大変便利な plugin であるところの unite.vim ですが、自分で source (表示する候補) を作成出来ると更に便利になることは疑いようがありません。
source を作成する
source の定義に最低限必要なのは、名前と、辞書変数のリストを返す関数を持ったオブジュクトです 例えば以下の様に書きます
let s:unite_hacks = {'name': 'hacks'}
function! s:unite_hacks.gather_candidates(args, context)
# 辞書変数のリストを返す処理
endfunction
あとはこれを登録する必要があります。
source を登録する
作成した source を登録する方法は2種類あります。
1つ目の方法は unite#define_source を使用する方法です。 先程の source を登録するには以下の様にします。
call unite#define_source(s:unite_hacks)
2つ目の方法は autoload/unite/sources/ に配置する方法です。 例えば先程の sources を登録するには、 hacks.vim と言う名前で上記ディレクトリに保存します。 そして以下のコードを hacks.vim に加えます。
function! unite#sources#hacks#define() "{{{
return s:unite_hacks
endfunction "}}}
candidate のリストって何
肝になる gather_candidates の返り値について説明します。
candidate とは候補ウィンドウ (unite が表示するリスト表示画面) に表示するリストの要素です。 1 つの candidate は以下の情報を持ちます。
- word
- 画面に表示される候補を表す文字列。候補の絞り込みに使われる
- addr
- 画面に表示される候補を表す文字列。word より優先されるが、候補の絞り込みには使われない
- source
- 候補が所属する source 名
- kind
- 候補が所属する kind 名。省略すると”common”となる
- source__{name}
- source 独自の付加情報。source 側で自由に使用できる
- action__{name}
- action が使用する付加情報
平たく言うと、word に指定した文字列がリストに表示され、その candidate を選択した時の動作を kind で指定します。
具体的には以下のように書きます。
function! s:unite_hacks.gather_candidates(args, context)
return [
\ { 'word': 'Hack#1', 'source': 'hacks', 'kind': 'word' },
\ { 'word': 'Hack#2', 'source': 'hacks', 'kind': 'word' },
\ ]
endfunction
使う
作成した source は
:Unite hacks
として標準添付の source と同様に使用出来ます。l
詳しくは :help unite-create-source を参照してください
source をたくさん書いて新学期はモテモテですね。
Sixeightもどる
blog comments powered by Disqus