Vimのプラグインマネージャープラグインの dein.vim のアップデートがあったようで色々 warningが出てたので.vimrcをアップデートした部分の話。
- プラグインのアップデート。
- [dein] Dictionary type of build is no longer supported
- cache->state, begin/endの位置の変更
- on_iにおけるエラー?
プラグインのアップデート。
deinでプラグインをアップデートするには
:call dein#update()
で、dein自身も含め全プラグインがアップデートされます。
[dein] Dictionary type of build is no longer supported
Vimで非同期コマンドを実装するためのライブラリである vimproc はインストール時にコンパイルする必要がありますが、 各環境でコンパイルの仕方が違うため、
1 2 3 4 5 6 7 |
|
こんな感じで環境ごとにビルド方法を指定したりしていました。 (NeoBundle時代から。)
この辞書型の指定が出来なくなりました。
vim-jp – Ling: rhttp://lingr.com/room/vim/archives/2016/04/02
なのでシンプルに
1
|
|
と変更。 deinの機能をシンプルにしようとする方向だと思います。
vimprocのMakefile
を見るとこの中でOSのチェックなどを行ってるので、
基本、make
が使えるなら単にmake
だけすれば良いはずで、
少なくともcygwin
、mac
、linux
の場合は特に問題がありません。
unix
の場合も大概make
でOK。
Windowsの場合にちょっと微妙ですが、 自分の環境ではCygwinのHomeの.vimを使うので Cygwin様にコンパイルしたものがあってそれがそのまま問題なく使えるので 今のところ問題はありません。
Windowsで純粋にVimだけ使う場合にどうなるのかちょっと分かりませんが 取り敢えず自分では問題がないのでこの変更で。
cache->state, begin/endの位置の変更
次に、
[dein] dein#load_cache() is deprecated.
[dein] Please use dein#load_state() instead.
[dein] dein#save_cache() is deprecated.
[dein] Please use dein#save_state() instead.
なメッセージが出てきたので、
dein#load_cache
を
dein#load_state(s:dein_dir)
に、
save_cache()
を
save_state()
に。load_state
の方はload_cache
と違ってパスを引数として渡すのが必須になっています。
これは下のbegin
との位置関係にも関係してきますが、
begin
に与えるパスと同じにしておけばこれまでの引数を与えなかった場合と
同じ位置にstate
を置けます。
この変更後、
[dein] Invalid begin/end block usage.
と言われたのでhelpを見てみると、
1 2 3 4 5 6 7 |
|
な感じの例があります。
これまでは、
1 2 3 4 5 6 7 |
|
こんな感じでbegin
、end
はcache
の外側に居ましたが、
state
を使う場合はその中に入れる様になっています。
begin
がload_state
より後に来る様になるので、
load_state
の時点でパスを教えてあげる必要が出てくる様になったみたいです。
なのでhelpに従ってbegin
とend
の位置を移動。
on_iにおけるエラー?
上のアップデート後、Vimを立ち上げると、
Error detected while processing function dein#autoload#_on_i:
line 5:
E218: autocommand nesting too deep
Press ENTER or type command to continue
No matching autocommands
Press ENTER or type command to continue
Error detected while processing function neosnippet#init#_initialize[3]..<SNR>86_initialize_others:
line 47:
E218: autocommand nesting too deep
Press ENTER or type command to continue
No matching autocommands
Press ENTER or type command to continue
こんなエラーが。on_i
は
neocomplete.vim
で使っています。
neosnippet.vim の方では使ってません。
なんだろう、
このエラーで調べてみましたが、特に他に問題にしてる人はまだ居ない感じで、 ちょっと困ってましたが、単に、
:call dein#clear_state()
して立ち上げ直したら治りました。
上のエラーは単に 古いキャッシュと新しいメソッドが変なconflictをしてたんだと思います。
どうしてもダメなら~/.vim/deinとか消して全部入れなおせば治るかも。