vital.vim icon indicating copy to clipboard operation
vital.vim copied to clipboard

[RFC] Neovim サポートに関する方針を決めたい

Open lambdalisue opened this issue 7 years ago • 7 comments

現在 vital.vim はテストが Vim 8 のみで行われており Neovim に関係するモジュール(例: lambdalisue/vital-System-Job)などの公式へのバックポートが難しい状態です。

個人的には Neovim と Vim の差異を吸収する上記のようなモジュールもとても便利なので vital.vim 本体でも Neovim をサポートできると良いなと感じています。 そこで Neovim に関してどういう扱いをするかに関して広く意見を拝聴したいと考えています。

とりあえず問題点として

  1. 現存する vital.vim のモジュールは Neovim でも動くのか?
    1. 上記が動くと仮定した場合、動かなくなるような変更を認めるか?
    2. 上記が動かないと仮定した場合、動くように治すべきか?
  2. Neovim でしか動かないようなモジュールを認めるか?
  3. Vim でしか動かないようなモジュールを認めるか?
  4. サポートする Neovim の最低バージョンはどれか?

などがあると思います。皆さんのご意見よろしくお願いします。ちなみに個人的には

  1. vital.vim が提供するものは Neovim でも可能な限り動くべきである
  2. Neovim でしか動かないモジュールはドキュメントに書けば良い(基本的には Vim でも動くように頑張る)
  3. Vim でしか動かないモジュールはドキュメントに書けば良い(基本的には Neovim でも動くように頑張るが lambda など今後 Neovim でもサポートされることが濃厚なものに関しては一時的に Neovim はサポートしない状態でもよしとする)

って感じです。なお themis.vim は Neovim でも動くことが証明されています(例: https://github.com/lambdalisue/gina.vim )

lambdalisue avatar Feb 12 '17 18:02 lambdalisue

現在 vital.vim はテストが Vim 8 のみで行われており

Neovim でもテストするのはありかもしれないですね
手元で少しやってみたいと思います。

Neovim でしか動かないモジュールはドキュメントに書けば良い(基本的には Vim でも動くように頑張る)

必要なら、Neovim なネームスペースを切ってもいいんじゃないかなと思います。

raa0121 avatar Apr 12 '17 07:04 raa0121

Vimネームスペースもあるみたいだし、NeoVim.System.JobみたいなNeoVim以下のネームスペースに、VimとNeoVimの互換性問題 及び NeoVim特有の機能、を入れるという意見を投じます ><

aiya000 avatar May 09 '17 14:05 aiya000

個人的な話ですが Neovim ネームスペースだと Neovim 固有の機能っぽいなーと感じるので避けたいです

lambdalisue avatar May 10 '17 16:05 lambdalisue

確かに。
そもそも互換性問題が生まれるのはNeoVimがあるから……ってことでNeoVimネームスペースに置いてもいいかな、と考えていたんですが、そしたらそもそもCompatible的なの作った方が良さそう。

aiya000 avatar May 10 '17 16:05 aiya000

んー System.Job に限れば Compat ではない気がします。System.Job は(差異を吸収するためとはいえ)新しいインターフェースで job を使いやすくしているものなので。

また Neovim 専用モジュールのために Neovim ネームスペースを作ると仮定すると

  1. Vim でしか動かないものが Vim 以下に入らないのは気持ち悪い
  2. Vim 空間にあるものは Vim でしか動かないという訳ではない

の二点から気持ち悪いなーという感覚です。なので個人的にはネームスペースで切るよりどちらでも動くことを期待する+難しい場合はドキュメントに記載とかがいいかなーと思います。

lambdalisue avatar May 11 '17 04:05 lambdalisue

互換性を最も重きにおいたモジュールでないのであれば、確かにそれがよさそう :cat:

完全に私的な考えですが
互換性を最も重きにおくモジュールであればCompat
NeoVimのみでしか動かないモジュールはNeoVim
二次的な機能としてNeoVim対応がなされているモジュールは各位最適な場所に

っていうのが、区分けできていいんじゃないかなーと思います :thinking:

僕はNeoVimがVimの仕様を追っている、かつNeoVimはVimにない仕様も持つ……という状況を鑑みるに
Vim⊂NeoVim
という構造を見いだしてます。(job等、厳密には違うけど)
故に
vital ⊂ (vital + NeoVim名前空間)
っていうのは不自然でないと思ってます :cat:

aiya000 avatar May 16 '17 04:05 aiya000

vital全体がneovimサポートをどうするかという本issueの本題からは外れますが、冒頭で言及されてる vital-System-Job 自体は便利そうなので、それは単独でvitalにpullreqほしい気持ちです。 (vital-System-Jobモジュールのhelpで、vim8とneovimサポートしてることを明記する感じで。)

ujihisa avatar May 20 '17 08:05 ujihisa