You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[RFC] Let users write :packadd volt in his/her vimrc #118
Activity
[-]Let users write `:packadd volt` in his/her vimrc[/-][+][RFC] Let users write `:packadd volt` in his/her vimrc[/+]tyru commentedon Dec 19, 2017
@Warashi @thinca ユーザの立場としてこの変更はどう思うのか、意見をお聞きしたいです。
tyru commentedon Dec 19, 2017
ちなみに以前の挙動 (インストール等の度にいちいちファイルをコピーする) も設定ファイル (
$VOLTPATH/config.json) で選択できるようにする予定です。Warashi commentedon Dec 20, 2017
profile機能を使うユーザ向けにはマジックコメント同様に自動で追加してあげればいいんじゃないですかね
ところで、
packadd voltを書くと$VOLTPATH/repos/<repos>がrtpに追加されるってのはvolt側で追加するってことですよね?.vim/pack/volt/start/system/plugin/bundled_plugconf.vimでその処理をやるってのはだめなんでしょうかWarashi commentedon Dec 20, 2017
bundled_plugconf.vimと書きましたが、もちろん同ディレクトリの別ファイルでいいですtyru commentedon Dec 20, 2017
.vim/pack/volt/start/system/plugin/bundled_plugconf.vim で rtp に追加したとしてもプラグインが読み込まれないんです。
具体的には以下のような順番みたいです(もしかしたら 2 と 3 逆かもしれませんが、要するに
bundled_plugconf.vim でやっても手遅れ)。
~/.vim/pack/*/start/*の読み込みtyru commentedon Dec 20, 2017
上述のタイミングの問題があるので、「profile 機能を使うユーザは書かなくてもいい、けど profile 機能を使わないユーザは書かないとダメ」みたいになるので一貫性がないかなーと
tyru commentedon Dec 20, 2017
@rhysd さんに Twitter で「シンボリックリンク張っちゃダメなんでしょうか?」と言われたので、考えた際のメモを載せておきます。
volt build は現在以下の 1 の方法でプラグインを読み込んでいるが、何もわざわざコピーしなくてもいい。
いくつか方法が考えられるが、以下の 4 をデフォルトの動作としたい。
しかし Vim script のトランスパイルを考えた際にトランスパイルした Vim script を読み込むためにコピーした方が嬉しいこともある。
よって今の挙動も後々設定ファイルで選択できるようにする。
$VOLTPATH/repos/<repos>から~/.vim/pack/volt/opt/<repos>にコピーする~/.vim/pack/volt/opt/<repos>に symlink を作る$VOLTPATH/repos/<repos>を rtp に加えて直接 :source する:sourceしてるので遅い (はず):packadd voltと書いてもらう~/.vim/pack/volt/start/_volt_started/plugin/started.vimの行う処理let g:volt_source_repos = 1~/.vim/pack/volt/opt/volt/plugin/startup.vimの行う処理g:volt_source_reposが zero なら以下を行うset rtp+=$VOLTPATH/repos/<repos>autocmd VimEnter * call s:config_xxx()g:volt_source_reposが non-zero なら以下を行うset rtp+=$VOLTPATH/repos/<repos>:so $VOLTPATH/repos/<repos>/plugin/**/*.vim[WARN] Please write "packadd volt" in your vimrc.[WARN] Load plugins directly... (very slow))autocmd VimEnter * call s:config_xxx()Warashi commentedon Dec 20, 2017
「profile 機能を使うユーザは書かなくてもいい、けど profile 機能を使わないユーザは書かないとダメ」みたいになりますが、
volt profile newした後にpackadd voltを書き忘れる事故が発生しそうなので自動で書いといて欲しいと思いますね。tyru commentedon Dec 20, 2017
ふーむ確かにそれもそうですね…
のような内容で
~/.vim/vimrcをインストールした方が良さそうですね。すでに
:packadd voltが$VOLTPATH/rc/<profile>/vimrc.vimに書かれてた場合も考慮して、2回:packadd voltが vimrc に書かれていても何もしないようにします。tyru commentedon Dec 20, 2017
↑のメモを少しだけ更新しました。
tyru commentedon Dec 20, 2017
ref #93
Warashi commentedon Dec 20, 2017
~/.vim/pack/volt/opt/<repos>に symlink を作るとbareリポジトリをサポートできないとのことですが、ディレクトリ階層はvoltで作ってやって、各ファイルのsymlinkをつくるようにしてやればできる気がします。あと、windowsでも
mklinkとかいうsymlinkを作るコマンドがあった気がしますが、それは使えないんですかね?tyru commentedon Dec 21, 2017
bare リポジトリにはプラグインのファイルはないので、どこかにワークツリーを復元してそこへの symlink を作るという意味でしょうか?
ちなみにもう bare リポジトリをサポートする必要がほぼ無いと思うので、サポートを辞めてもいいかな、とは思っています。
確かに Windows でも mklink を使ったり Win32API を直接呼び出すという手もありそうです。
Warashi commentedon Dec 21, 2017
bare リポジトリの意味をあんまりわからずにコメントしてました。コピーする元があるならそこへのsimlink作れば良いかな、と。よく考えてみるとワークツリーを復元する必要がありそうで面倒ですね。
サポート切ってしまってよいなら切るのも一つの手段だと思います。
tyru commentedon Dec 31, 2017
#157 で
~/.vim/pack/volt/optに symlink 貼る実装をしてみて分かったことが2つあります…os.Symlink()を使えないと思い込んでましたが、普通に Windows でも使えました~/.vim/pack/volt/opt/以下に symlink を貼っても Vim の package は runtimepath に追加してくれない (無視される)tyru commentedon Dec 31, 2017
良いニュースがあります!
~/.vim/pack/volt/start/じゃないから自動的に読み込まれないだけでした!!!(アホ)tyru commentedon Jan 1, 2018
すみません、本件は #157 でデフォルトでシンボリックリンクを貼るようにしてとりあえずは速度改善したことと、なるべくならユーザに必要な設定を書かせたくないという理由から、閉じることにします。
ちなみに
mklinkコマンドを起動するようにしました(Windows API でジャンクションを作るのはちょっと面倒くさい…)$VOLTPATH/config.tomlに以下のように書くと以前のシンボリックリンクを貼らない挙動に戻ります。