restart.vim を使用する際の注意

プラグインを作っている時などによく restart.vim にお世話になっているのですが、次のようなコードが vimrc に書かれている場合、注意が必要になります。

let $PATH = $PATH . ";C:/cpp/boost"


vimrc 内で既存の環境変数にパスなどを足し込みたことはよくあると思います。
しかし、上記のコードが書かれている時に :Restart を行うと Vim がリスタートするたびに $PAHT にどんどんパスが足し込まれていってしまいます。
(これは restart.vim が現在の Vim のプロセスから新しい Vim を起動しているため。


これは次のように Vim の起動時にリスタートが行われたかどうかを判定して回避する事が出います。

" :Restart 時に変数の定義を行う
command! MyRestart call restart#restart(0, ["--cmd", "let g:restarted = 1"])

" この変数を使用して :Restart が行われたかどうかの判定を行う
if !exists("g:restarted")
    let $PATH = $PATH . ";C:/cpp/boost"
endif


上記のコードはリスタートがされなかった場合に処理を行っていますが、逆に、リスタートが行われた時の処理なんかも記述する事ができると思います。

[追記]

最新版では仕様が変更されました。
以下の設定で使用する事ができます。

" :Restart 時に変数の定義を行う
command! MyRestart Restart --cmd "let g:restarted = 1"

" この変数を使用して :Restart が行われたかどうかの判定を行う
if !exists("g:restarted")
    let $PATH = $PATH . ";C:/cpp/boost"
endif