vim-users.jp

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