:NeoBundle 時にも on_source でプラグインの初期化処理をする

元々 neobundle.vim の機能としては実装されていたんですがちょっと使い勝手をよくして頂いたので覚書。
さて、少し前までは以下のコードでは問題がありました。

" 元々 :NeoBundleLazy を設定していたが何らかの理由で後から :NeoBundle をする事になってしまった
NeoBundle "Shougo/vimshell"
" NeoBundleLazy "Shougo/vimshell", { 'autoload' : { 'commands' :  [ "VimShell" ] } }


let s:bundle = neobundle#get("vimshell")

" 本来であれば最初の :VimShell コマンドが呼び出された時に処理されていたが
" 既に :NeoBundle されてしまっているので neobundle.vim から呼び出されることはない
" (=正しく初期化されない)
function! s:bundle.hooks.on_source(bundle)
    let g:vimshell_split_command = "split"
    let g:vimshell_prompt = $VIMUSERNAME."% "
endfunction
unlet s:bundle


上記のようにあとからプラグインの読み込みのタイミングを変更する事はままあるかと思います。
上記のコードの場合、最後に

call neobundle#call_hook("on_source")


で明示的に on_source の処理を呼び出す必要がありました。
本来であればこれで解決するのですが、neobundle.vim 側で自動的に呼び出すようにして頂いたので上記のような問題は既に解消されました。
これで後から読み込みのタイミングを変更しても問題なく初期化を行うことが出来ます。
また :NeoBundle や :NeoBundleLazy でプラグインを読み込む設定を行なっていないのであれば初期化処理が呼ばれることもありません。
これは大きな利点ですね。