quickrun.vim で msvc のバージョンを指定してコンパイルを行う
この記事は Vim Advent Calendar 2012 178日目の記事になります。
さて、今まで quickrun.vim で使用する msvc を動的に変更する場合、こんな感じで環境変数を変更するようにしていました。
しかし、Lingr でよさげなコードを見かけたのでこれをパクって quickrun-hook として書いてみました。
[ソースコード]
" quickrun-vcvarsall {{{ let s:hook = { \ "name" : "vcvarsall", \ "kind" : "hook", \ "config" : { \ "enable" : 0, \ "bat" : "", \ }, \} function! s:hook.on_module_loaded(session, context) if type(a:session.config.exec) == type([]) let a:session.config.exec[0] = join([self.config.bat, $PROCESSOR_ARCHITECTURE, '\&']) . a:session.config.exec[0] else let a:session.config.exec = join([self.config.bat, $PROCESSOR_ARCHITECTURE, '\&']) . a:session.config.exec endif endfunction call quickrun#module#register(s:hook, 1) unlet s:hook " }}} let g:quickrun_config = { \ "cpp/msvc2010" : { \ "command" : "cl", \ "exec" : ['%c %o %s', '%s:p:r.exe %a'], \ "cmdopt" : "/EHsc", \ "hook/output_encode/encoding" : "sjis", \ "hook/vcvarsall/enable" : 1, \ "hook/vcvarsall/bat" : shellescape($VS100COMNTOOLS . '..\..\VC\vcvarsall.bat'), \ }, \ \ "cpp/msvc2008" : { \ "command" : "cl", \ "exec" : ['%c %o %s', '%s:p:r.exe %a'], \ "cmdopt" : "/EHsc", \ "hook/output_encode/encoding" : "sjis", \ "hook/vcvarsall/enable" : 1, \ "hook/vcvarsall/bat" : shellescape($VS90COMNTOOLS . '..\..\VC\vcvarsall.bat'), \ }, \ \ "cpp/msvc2005" : { \ "command" : "cl", \ "exec" : ['%c %o %s', '%s:p:r.exe %a'], \ "cmdopt" : "/EHsc", \ "hook/output_encode/encoding" : "sjis", \ "hook/vcvarsall/enable" : 1, \ "hook/vcvarsall/bat" : shellescape($VS80COMNTOOLS . '..\..\VC\vcvarsall.bat'), \ }, \}
使用する vcvarsall.bat は各々の環境で設定して下さい。