2020/01/01(Wed) に
python2 のサポートが終了しました。が、今の所私の周辺で問題は発生していません。
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 パターンマッチに使う記号なので \ でエスケープします。
さて、実行結果は以下のようになりました。
前後のソースを読んではいないので、 現段階では対応が必要かもしれない plugin 一覧とします。
一時的に python2 provider を無効にする
Neovim で :help provider とすると、各 provider の説明が確認できます。
その中には 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」で検索をかけてみます。
お試しでインストールすると、ほぼ同じ動作。ということで VimCalc3 に乗り換えます。
gundo.vim 対応: let g:gundo_prefer_python3 = 1
さて、二度目も安直に「gundo.vim python3」でググります。
- let g:gundo_prefer_python3 = 1
と書くことで python3 を利用するようです。動作確認もできたので、 gundo.vim はそのまま使う事にします。
まとめ
これで Neovim がいつ python2 provider を消しても大丈夫になりました。
蛇足ですが、対応した2つのプラグインは利用頻度が低く、 LazyLoad していました。
なので、仮に Neovim が python2 provider を消したとしても、気付くのに時間がかかった可能性は十分にあります。
それを排除できたので、備えあれば何とやら、ですね。