unite.vim で絞り込んだワードをコマンドとして実行する

LingrVim 部屋でこんな質問がありました。
http://i.gyazo.com/501a8ed2e9975af80d23b1565441d609.png
http://lingr.com/room/vim/archives/2014/07/21#message-19702876


unite.vim でこういうことをしたい場合は file/new みたいにプロンプトに入力したワードを候補として追加するのが普通かなーってことで簡単にやってみました。

[ソース]

let s:source = {
\   "name" : "command/new",
\}

function! s:source.change_candidates(args, context)
    let word = a:context.input
    if word == ""
        let word = "[new command]"
    else
        let word = ":" . word
    endif
    return [{
\       "word" : word,
\       "kind" : "command",
\       "action__command" : word,
\   }]
endfunction


call unite#define_source(s:source)
unlet s:source

[使い方]

" unite-history/command と併用して使用する場合
:Unite command/new history/command

" 上記で起動した場合に unite.vim で source 名を表示したくない場合は
" -hide-source-names
" を追加する
" :Unite command/new history/command -hide-source-names


これで絞り込みに使用したワードをコマンドとして実行する事が可能になります。