Neovim で :checkhealth を実行していると、まだ python2 provider が有効な事にふと気付きました。
「いつか python2 provider も消えるのだろうな」と悠長に考えたのが1つ目の感想。
「python2 に依存した plugin があったらマズいのでは」と思って焦ったのが2つ目の感想。
「問題は発生していない」と思っているけれど、本当にそうなのか念のために確認+対応したログです。
環境
- OS: macOS Mojave 10.14.6
- Neovim: 0.4.3
- Python2: 2.7.16 (system builtin)
- Python3: 3.7.6 (installed by homebrew)
has('python') している plugin が無いか確認
私は Neovim の plugin management に dein を使っています。
そして、plugin の install 先は ~/.config/nvim/dein を指定しているので、その先に cd して grep をかけてみます。
- $ cd ~/.config/nvim/dein/repos/github.com
- $ egrep 'has\(.python.\)' -R .
egrep のオプションの -R は、指定したディレクトリを起点に recursive に探索してくれます。
そして、渡しているディレクトリは '.' なので、 カレントディレクトリ以下の全てのファイルを対象にできます。
egrep で指定した正規表現は 'has\(.python.\)' です。これは
- まず、 vim/neovim で特定の feature が有効か確認する方法として 'has' function があります。
- そして python2 provider が有効かどうかは has('python') の実行結果で分かります。
- 加えて考慮する事として、python を括る文字が ' と " のどちらかの問題があります。
- これは面倒なので . にしました。 ['"] 2つなどでもOKです。
- 最後に、'()' は egrep パターンマッチに使う記号なので \ でエスケープします。
さて、実行結果は以下のようになりました。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
~/.config/nvim/dein/repos/github.com $ egrep 'has\(.python.\)' -R . | |
./atton/gundo.vim/autoload/gundo.vim:elseif has('python')" | |
./Shougo/denite.nvim/test/.themisrc: call themis#log('has("python"): ' . has('python')) | |
./tyru/open-browser.vim/autoload/vital/_openbrowser/Web/HTTP.vim: if !has('python') | |
./gregsexton/VimCalc/plugin/vimcalc.vim:if has('python') | |
./gregsexton/VimCalc/plugin/vimcalc.vim: if has('python') != 1 | |
./gregsexton/VimCalc/plugin/vimcalc.vim:if has('python') | |
./haya14busa/dein-command.vim/autoload/vital/_dein_command/Web/HTTP.vim: if !has('python') |
前後のソースを読んではいないので、 現段階では対応が必要かもしれない plugin 一覧とします。
一時的に python2 provider を無効にする
Neovim で :help provider とすると、各 provider の説明が確認できます。
その中には provider を無効化する方法も存在しており、 python2 の場合は
その中には provider を無効化する方法も存在しており、 python2 の場合は
- let g:loaded_python_provider = 0
と ~/.config/nvim/init.vim に書くと無効化できます。
なお、この状態で :checkhealth を実行すると
- - INFO: Disabled (g:loaded_python_provider=0).
と表示されます。
さて、これで仮に python2 provider が消えた時状態を再現できました。
先程 egrep で見付けたプラグインの動作確認を行なった結果、
VimCalc 対応: VimCalc -> VimCalc3
安直に「VimCalc python3」で検索をかけてみます。
そうすると、fedorenchik/VimCalc3 が見付かりました。なお、 fork 元は本家の gregsexton/VimCalc です。
お試しでインストールすると、ほぼ同じ動作。ということで VimCalc3 に乗り換えます。
gundo.vim 対応: let g:gundo_prefer_python3 = 1
さて、二度目も安直に「gundo.vim python3」でググります。
そうすると bitbucket の issue のページがヒットしました。どうやら既に対応済みだったらしく
- let g:gundo_prefer_python3 = 1
と書くことで python3 を利用するようです。動作確認もできたので、 gundo.vim はそのまま使う事にします。
まとめ
これで Neovim がいつ python2 provider を消しても大丈夫になりました。
蛇足ですが、対応した2つのプラグインは利用頻度が低く、 LazyLoad していました。
なので、仮に Neovim が python2 provider を消したとしても、気付くのに時間がかかった可能性は十分にあります。
それを排除できたので、備えあれば何とやら、ですね。
0 件のコメント:
コメントを投稿