[RFC]Windows で環境変数 HOME の設定をやめたい #1024

Closed
mattn opened this Issue Feb 8, 2017 · 25 comments

Comments

Projects
None yet
4 participants
@mattn
Member

mattn commented Feb 8, 2017

Windows 版の vim は起動後に内部的に $HOME を $USERPROFILE に設定します。

これにより誤動作を起こすツール類があります。例えば $HOME が設定されている場合は UNIX 的に動作し、設定されていない場合は Windows 的に動作するといった物です。

Vim script から参照する為に内部的に設定されていても良いとは思うのですが、起動前は設定されていなかったというフラグ(を追加したい)を見て、system() や :! 時に消す動作になって欲しいと思っています。

@koron

This comment has been minimized.

Show comment
Hide comment
@koron

koron Feb 8, 2017

Member

そもそもどうして Vim は $HOME を設定しているんですかね?

~ の展開では $USERPROFILE にすれば良いんですよね?
ただ互換性を考えると $HOME が設定されていればソレを、
されていなければ $USERPROFILE というふうにするんでしょうか…

Member

koron commented Feb 8, 2017

そもそもどうして Vim は $HOME を設定しているんですかね?

~ の展開では $USERPROFILE にすれば良いんですよね?
ただ互換性を考えると $HOME が設定されていればソレを、
されていなければ $USERPROFILE というふうにするんでしょうか…

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Feb 8, 2017

Member

個人的な推測では expand('$HOME') みたいな事をやってるプラグイン(例: Dr なんとか)があるので、いまさら消すのは難しいので vim から抜ける時(system() or :!) の時に元に戻してあげる(消す)のが良いのかなーと思っています。

Member

mattn commented Feb 8, 2017

個人的な推測では expand('$HOME') みたいな事をやってるプラグイン(例: Dr なんとか)があるので、いまさら消すのは難しいので vim から抜ける時(system() or :!) の時に元に戻してあげる(消す)のが良いのかなーと思っています。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Feb 8, 2017

Member

知らなかった。
他には、LANG, MYGVIMRC, MYVIMRC, VIM, VIMRUNTIME などが設定されているようですね。

Member

k-takata commented Feb 8, 2017

知らなかった。
他には、LANG, MYGVIMRC, MYVIMRC, VIM, VIMRUNTIME などが設定されているようですね。

@mattn

This comment has been minimized.

Show comment
Hide comment
Member

mattn commented Aug 6, 2017

@mattn

This comment has been minimized.

Show comment
Hide comment
@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 28, 2017

Member

おや、リンクがない。 vim/vim#2013

Member

k-takata commented Aug 28, 2017

おや、リンクがない。 vim/vim#2013

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 28, 2017

Member

今日のruntime fileの更新で、ヘルプが修正されてますね。
vim/vim@c572da5#diff-ab1a6feaee576c9e64826bf9649453b6R70

- For Win32, $HOME is set by Vim if needed, see |$HOME-windows|.

vim/vim@c572da5#diff-9314fb84f930a1648810c882e8247e6fR423

							*$HOME-windows*
On MS-Windows, if $HOME is not defined as an environment variable, then
at runtime Vim will set it to the expansion of $HOMEDRIVE$HOMEPATH.

現状維持?

Member

k-takata commented Aug 28, 2017

今日のruntime fileの更新で、ヘルプが修正されてますね。
vim/vim@c572da5#diff-ab1a6feaee576c9e64826bf9649453b6R70

- For Win32, $HOME is set by Vim if needed, see |$HOME-windows|.

vim/vim@c572da5#diff-9314fb84f930a1648810c882e8247e6fR423

							*$HOME-windows*
On MS-Windows, if $HOME is not defined as an environment variable, then
at runtime Vim will set it to the expansion of $HOMEDRIVE$HOMEPATH.

現状維持?

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 28, 2017

Member

えーw

Member

mattn commented Aug 28, 2017

えーw

@Shougo

This comment has been minimized.

Show comment
Hide comment
@Shougo

Shougo Aug 28, 2017

Member

仕様としてドキュメント化されてしまった?
プルリクエストはクローズされてないのでまだ可能性はあるのだろうか。

Member

Shougo commented Aug 28, 2017

仕様としてドキュメント化されてしまった?
プルリクエストはクローズされてないのでまだ可能性はあるのだろうか。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 29, 2017

Member

これにより誤動作を起こすツール類があります。

具体的にはどういうものがありますか? $HOME の有無で動作を変えるようなツールの方が行儀が悪いという気もしなくもないですが。

個人的な推測では expand('$HOME') みたいな事をやってるプラグイン(例: Dr なんとか)があるので、いまさら消すのは難しいので

今のPRでは消しちゃってるようですが、問題なし?

Member

k-takata commented Aug 29, 2017

これにより誤動作を起こすツール類があります。

具体的にはどういうものがありますか? $HOME の有無で動作を変えるようなツールの方が行儀が悪いという気もしなくもないですが。

個人的な推測では expand('$HOME') みたいな事をやってるプラグイン(例: Dr なんとか)があるので、いまさら消すのは難しいので

今のPRでは消しちゃってるようですが、問題なし?

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 29, 2017

Member

消すというより、値が空にならない様にしてます。

条件 vim内の$HOME 外部コマンド上の%HOME%
HOME を設定せずに vim を起動 HOME=USERPROFILE HOME未設定
HOME を設定して vim を起動 HOME=設定値 HOME=設定値
Member

mattn commented Aug 29, 2017

消すというより、値が空にならない様にしてます。

条件 vim内の$HOME 外部コマンド上の%HOME%
HOME を設定せずに vim を起動 HOME=USERPROFILE HOME未設定
HOME を設定して vim を起動 HOME=設定値 HOME=設定値
@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 29, 2017

Member

emacs がそれです。あと msys/mingw だと mingw32-make すると msys のシェルが起動しますが、その際に HOME があると問題が起きる事があります。そういったアプリケーションが

cmd.exe → それ

cmd.exe → vim.exe → :terminal → それ

で動作が変わってしまうのは問題あると思っています。

Member

mattn commented Aug 29, 2017

emacs がそれです。あと msys/mingw だと mingw32-make すると msys のシェルが起動しますが、その際に HOME があると問題が起きる事があります。そういったアプリケーションが

cmd.exe → それ

cmd.exe → vim.exe → :terminal → それ

で動作が変わってしまうのは問題あると思っています。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 29, 2017

Member

消すというより、値が空にならない様にしてます。

PRのコード差分を軽く見ただけではそういう動作だとは気づきませんでした。(Bramの言っているように必要なコードを削除しちゃってるのではという感想。)
表の通りであれば、Bramの要求通りの動作だと思いますが、Bramにも伝わっていないようなので、そこの動作を説明した方がよいと思います。

Member

k-takata commented Aug 29, 2017

消すというより、値が空にならない様にしてます。

PRのコード差分を軽く見ただけではそういう動作だとは気づきませんでした。(Bramの言っているように必要なコードを削除しちゃってるのではという感想。)
表の通りであれば、Bramの要求通りの動作だと思いますが、Bramにも伝わっていないようなので、そこの動作を説明した方がよいと思います。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 29, 2017

Member

ヘルプは $HOME が設定されていなかったら、$HOMEDRIVE$HOMEPATH を見ると書かれていますが、その部分のコードを削除してしまって本当に問題ない?
$USERPROFILE を見るという点はヘルプに追記が必要でしょう。

あと、vim_setenvを削除しても問題がないのは、Vimの内部ではhomedir_envが $HOME として扱われているからでしょうか?

Member

k-takata commented Aug 29, 2017

ヘルプは $HOME が設定されていなかったら、$HOMEDRIVE$HOMEPATH を見ると書かれていますが、その部分のコードを削除してしまって本当に問題ない?
$USERPROFILE を見るという点はヘルプに追記が必要でしょう。

あと、vim_setenvを削除しても問題がないのは、Vimの内部ではhomedir_envが $HOME として扱われているからでしょうか?

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 29, 2017

Member

はい。たぶん次の bram からの返信で HOMEDRIVE HOMEPATH にするか USERPROFILE にするかの議論をしたいと思ってるのでそれまで変更は待つつもりです。

Member

mattn commented Aug 29, 2017

はい。たぶん次の bram からの返信で HOMEDRIVE HOMEPATH にするか USERPROFILE にするかの議論をしたいと思ってるのでそれまで変更は待つつもりです。

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 29, 2017

Member

あと、vim_setenvを削除しても問題がないのは、Vimの内部ではhomedir_envが $HOME として扱われているからでしょうか?

はい。設定しない事が大事だと思っていて、たとえばこれ vimproc でも影響がでるはずです。

Member

mattn commented Aug 29, 2017

あと、vim_setenvを削除しても問題がないのは、Vimの内部ではhomedir_envが $HOME として扱われているからでしょうか?

はい。設定しない事が大事だと思っていて、たとえばこれ vimproc でも影響がでるはずです。

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 29, 2017

Member

影響が出ると言ったのは、現状 HOME がらみで起きている問題が(もしまだsetenvし続けるのであれば)今回の修正でも直らないという意味です。なのでsetenvをやめたい。

Member

mattn commented Aug 29, 2017

影響が出ると言ったのは、現状 HOME がらみで起きている問題が(もしまだsetenvし続けるのであれば)今回の修正でも直らないという意味です。なのでsetenvをやめたい。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 29, 2017

Member

あと、$HOME の中に他の変数への参照が含まれていた場合の処理を削除しているのはどういう理由でしょうか。

Member

k-takata commented Aug 29, 2017

あと、$HOME の中に他の変数への参照が含まれていた場合の処理を削除しているのはどういう理由でしょうか。

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 29, 2017

Member

なおして HOMEDRIVE HOMEPATH 優先、USERPROFILE は fallback にしました。

Member

mattn commented Aug 29, 2017

なおして HOMEDRIVE HOMEPATH 優先、USERPROFILE は fallback にしました。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 30, 2017

Member

8.0.1012
https://groups.google.com/d/topic/vim_dev/VdcmP0TwPwo/discussion
マージはされましたが、ヘルプの修正が必要だと思います。
USERPROFILE も見るようにした点と、子プロセスには渡さないようにした点の2点?

Member

k-takata commented Aug 30, 2017

8.0.1012
https://groups.google.com/d/topic/vim_dev/VdcmP0TwPwo/discussion
マージはされましたが、ヘルプの修正が必要だと思います。
USERPROFILE も見るようにした点と、子プロセスには渡さないようにした点の2点?

@mattn

This comment has been minimized.

Show comment
Hide comment
Member

mattn commented Aug 30, 2017

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 31, 2017

Member

https://groups.google.com/d/topic/vim_dev/uaPmkEhTjeg/discussion

Just as the comment says, now _viminfo cannot be saved on Windows.

$HOME\_viminfo ではなく、$VIM\_viminfo に保存されている?

Member

k-takata commented Aug 31, 2017

https://groups.google.com/d/topic/vim_dev/uaPmkEhTjeg/discussion

Just as the comment says, now _viminfo cannot be saved on Windows.

$HOME\_viminfo ではなく、$VIM\_viminfo に保存されている?

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 31, 2017

Member

ex_cmds.c の viminfo_filename() で mch_getenv() を使って $HOME を見て _viminfo の位置を決めている。
vim_getenv() には "HOME" を特別扱いするコードがあるが、それはここでは使っていない。

Member

k-takata commented Aug 31, 2017

ex_cmds.c の viminfo_filename() で mch_getenv() を使って $HOME を見て _viminfo の位置を決めている。
vim_getenv() には "HOME" を特別扱いするコードがあるが、それはここでは使っていない。

@k-takata

This comment has been minimized.

Show comment
Hide comment
Member

k-takata commented Aug 31, 2017

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Sep 24, 2017

Member

ヘルプも直ったようなので閉じます。
vim/vim@37c64c7#diff-9314fb84f930a1648810c882e8247e6fR426

Member

k-takata commented Sep 24, 2017

ヘルプも直ったようなので閉じます。
vim/vim@37c64c7#diff-9314fb84f930a1648810c882e8247e6fR426

@k-takata k-takata closed this Sep 24, 2017

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