Open5

VSCode LiveShare と格闘する

erukitierukiti

VSCode には、LiveShare というとても便利な機能がある。オンラインモブプロなんかをやるときに必須となるのだけど、色々と問題が多いので、それらを解決していきたい。

  • Format Document が効かない(Macなら CMD + Shift + F)
    • 効かないけど代替案はある
  • Goto Definition が効かない(F12)
  • .gitignore に設定されているファイルを、リモートで参照できない
    • .vsls.json というファイルを置けば参照できるようになる
erukitierukiti

Format Document (prettier)が効かない件。

  • ホスト側がやる限りは成功する
  • リモート側がやると Extension 'Prettier - Code formatter' cannot format '/internal/cli/cli.ts' のようなメッセージが出て失敗する。

気になるのは[Bug] VS Live Share double format on save event · Issue #541 · MicrosoftDocs/live-shareというもの。むしろ逆に format on save が多重実行されてた?

ホスト側で format on save を設定していれば、リモートからでも問題なくフォーマットできるのでは?実際やってみると、リモートから save すると、フォーマットが実行される。

結論: ホスト側で適切な format 設定と format on save を設定しておけば、保存時にフォーマットされる。

まぁ、手動で Format Document を実行するより、モブプロとかペアプロしてるときは、適時 save をすると良い(むしろ、auto save で良い)ということだろう。

format on save の設定は好みが分かれそうだけど、モブセッションのときは重要。

erukitierukiti

Goto Definition が効かない件。

F12 を押したり、コンテキストメニューで Goto Definition を実行すると、定義元にジャンプできるのだが、リモートだとできない。

  • ホスト側で、F12 などを押すと、正しい挙動をする(定義元に飛ぶ)
  • リモートで、F12 などを押すと、Cannot read property 'startLineNumber' of undefined という JavaScript でよく見かけるタイプのエラーが生じる

Cannot read property 'startLineNumber' of undefined - Google 検索 で検索して、github.com › live-share › issues なのがいきなりあるので、もうこれだわー。

Go to Definition Error: "Cannot read property 'startLineNumber' of undefined" · Issue #3570 · MicrosoftDocs/live-share

とりあえず、バグとして認識はしてるけど、まだ誰も手を付けてない感じなのかな

erukitierukiti

これ、昨日調べたらリモートからでもF12が効いたような気がした

erukitierukiti

.gitignore に登録されたファイルを参照できない件

liveshare .gitignore - Google 検索を見ると、まぁ 【Tips】VSCode Live Share で.gitignore に記述したファイルが共有されない - Qiita というそのものズバリな記事がヒット。

プロジェクトルートに .vsls.json というファイル名で、

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"none"
}

を設定すると、.gitignore のファイルを参照できるようになった。

もう一つ考えつく解決方法としては、セッションの間だけ .gitignore を消したり、.gitignore を編集するという方法だが、セッションの途中で commit をしようとしたときに困るのを考えると .vsls.json を追加するのが無難ではありそう。

結論: .vsls.json を置く