automatic.vim に preset を実装した

automatic.vim に preset という機能を実装しました。
例えば『unite.vim が開かれた場合に』という設定は、

" unite.vim が開かれた場合にサイズや位置を変更する
let g:automatic_config = [
\   {
\       "match" : {
\           "autocmd_history_pattern" : 'BufWinEnterFileType\(CursorMoved\|CursorMovedI\)$',
\           "filetype" : "unite",
\       },
\       "set" : {
\           "height" : "40%",
\           "move" : "bottom",
\       },
\   },
\]


というような "match" で定義することができます。
しかし、こういう決まりきっている設定をユーザ側がいちいち設定するのは手間、設定がちょっと複雑です。


と、いう事でこういう決まりきった設定をプラグイン側で用意して、ユーザ側で簡単に設定できるような機能と実装しました。
上記のような『unite.vim が開かれた場合に』という設定は

" unite.vim が開かれた場合にサイズや位置を変更する
" "match" にプラグイン側で定義されている設定名を設定する
let g:automatic_config = [
\   {
\       "match" : "unite_split"
\       "set" : {
\           "height" : "40%",
\           "move" : "bottom",
\       },
\   },
\]


このように "match" に "unite_split" と設定する事で再現する事ができます。
また、他の "match" と組み合わせる場合には、

" unite-file が開かれた場合にサイズや位置を変更する
" 他の unite-source にはマッチしない
" "preset" にプラグイン側で定義されている設定名を設定する
let g:automatic_config = [
\   {
\       'match' : {
\           "preset" : "unite",
\           "unite_sources" : ["file"],
\       },
\       "set" : {
\           "height" : "40%",
\           "move" : "bottom",
\       },
\   },
\]


というように "preset" で記述する事ができます。
これでだいぶすっきりしましたね。
他にも設定できる "preset" はいくつかあるんですが、まだ少ないので
『こういうのがほしい!』
みたいな要望があれば教えてもらえると助かります!