Python 2を使っていたら警告を出す #1008

Open
koron opened this Issue Jan 9, 2017 · 16 comments

Projects

None yet

3 participants

@koron
Member
koron commented Jan 9, 2017 edited

提案の内容

Python 2.7 (以下Py2) は2020年3月末で一切のサポートが終わります
それにともなってVimでもサポートを切るべきですが、
ぎりぎりになってわたわたするよりも、
いまから移行を促すのが好ましいでしょう。

スムーズな移行を迎えるために、以下の機能を追加することを提案します。

  • Py2 を使っているVim scriptファイルの一覧を表示するコマンドを追加する
  • Py2 を使っていたら起動時に1回だけ警告メッセージをだす
    • 上記のコマンドに言及すべき
@koron
Member
koron commented Jan 9, 2017 edited

if_python.c の DoPytCommand() 、もしくはその呼出箇所でチェックするのが良さそう。

:source 中かどうかは sourcing_name (from globals.h) をチェックすれば良い。
sourcing_lnum も見れば何行目で使ってるかもわかる。

@koron
Member
koron commented Jan 9, 2017

とりあえず内部的に必要なものを覚えてるところまでは作った。
まだ起動テストすらしていないけど、あとは表示部分。

https://gist.github.com/koron/90f6b56b73c211e059a3b8ab1db335a9

@koron
Member
koron commented Jan 9, 2017 edited

:py2usingfrom コマンドでPython2を使ってるVim script 一覧を見れるようにした。
コマンド名が野暮ったいのはあとで変えてもらおうという意図。
残るは自動的に警告を出す機能。
nopy2warn オプションも作って出さない選択肢も用意したいが…
そもそもどのタイミングで出すかが問題かもなぁ。

https://gist.github.com/koron/90f6b56b73c211e059a3b8ab1db335a9

@koron koron self-assigned this Jan 9, 2017
@koron koron added a commit to koron/vim-kaoriya-patches that referenced this issue Jan 9, 2017
@koron koron python2 warn patch e965eb0
@kamichidu

これって、vimがpy2にリンクしていた場合に警告を出すだけでは不十分なんでしょうか?
実際にVim Scriptで利用されているかいないかに関わらず、

  1. py2つきでビルドされていたら起動時に警告
  2. py2なしでビルドされていたら警告なし

としたほうがわかりやすい気がします。

と、書いてて思い至りましたが、この意見はvimを自分でビルドして使っている人間の意見ですね...
板汚しすみません、無視してください...

@koron
Member
koron commented Jan 10, 2017

自分でコンパイルしている場合にもあてはまります。

というのは、いきなりPy2切ってしまったら、
そうとは知らずにPy2に依存しているプラグインを使ってる人は困惑します。
それは自分でコンパイルしているかそうじゃないかには関係ありません。

大事なのは自分のワークフローがVimのPy2機能に依存しているかどうかを、
なんらかの形で可視化する手段を用意して、いずれ来る Xday に備えられるようにすること、です。
(あきらめるか、対策するかは問わないわけですがw)

@koron
Member
koron commented Jan 10, 2017 edited

なお、Python2 を使ったファイルを一覧できるようにしたのは、そのプラグインに対して Py3 へ移行するようユーザーがアクションを取れるようにするため、です。

@koron koron added a commit to koron/vim-kaoriya that referenced this issue Jan 10, 2017
@koron koron python2-warn patch 50f9c36
@koron
Member
koron commented Jan 15, 2017

パッチ更新: https://gist.github.com/koron/90f6b56b73c211e059a3b8ab1db335a9

とりあえず以下のことをやった。

  1. python2 が使われていたら、1回だけ警告を表示する
  2. その警告は 'set nopy2warn' オプションで表示しないようにできる
  3. :py2usingfrom で Python 2.x を使ってるスクリプトの一覧を表示する
  4. :py2usingfrom'py2warn' の簡易なヘルプ
@koron
Member
koron commented Jan 15, 2017

とりあえず当初やりたかったことは全部やったので送ります。

@h-east
Member
h-east commented Jan 15, 2017

@koron たしか、オプションに数字を使っちゃいけなかったはず。'py2warn'

@koron
Member
koron commented Jan 15, 2017

@h-east オプション名も同様です。

コマンド名が野暮ったいのはあとで変えてもらおうという意図。

@h-east
Member
h-east commented Jan 15, 2017

仕様的にダメという意味で言ってます。

@koron
Member
koron commented Jan 15, 2017

PoC なので許せ、と言っています。

@koron
Member
koron commented Jan 15, 2017

PoC なので許せ、と言っています。

もうちょい丁寧に説明すると pywarnpytwowarn だと
「Python 2 に対して警告を出したいんだ」及び「その警告を抑制するオプションを作りたいんだ」
というコンセプトが薄まるので、py2warn のままで出しました。

@koron
Member
koron commented Jan 15, 2017

https://groups.google.com/d/msg/vim_dev/ubExx0E3LI0/3eFiW01GCAAJ

Can be useful, if the user cares about avoiding Python 2.
But it should not warn by default.

It should be possible to add a flag in scriptitem_T. And the line
number would be useful too. The sourcing_lnum has the value.

  1. デフォルトはオフにすべき
  2. scriptitem_T にフラグを追加するのが良さそう
  3. 何行目で使ってるかもわかると良さそう(sourcing_lnum に入ってる)
@koron
Member
koron commented Jan 15, 2017 edited

1 と 2 は納得できる。3は複数箇所あった場合、1つでよいか?


まぁ、まずは1つで良いか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment