VSCodeのv1.90.0から、大量のtsxファイルを含むReactの開発環境でgit checkoutなどの一度に大きくワークツリーを変更するコマンドを実行すると、ターミナルの入力やエディタの保存などが反映されない不具合が続いていた。

対処法

setting.jsonの、typescript.tsserver.experimental.useVsCodeWatcherfalse に変更する

{
  "typescript.tsserver.experimental.useVsCodeWatcher": false,
}

発生タイミング

https://github.com/microsoft/vscode/commit/2188b46e88231fb80a67d8790ea6906796cc31d1

このコミットで useVsCodeWatcher が experimental から削除されると同時にデフォルト値が trueになっていることもわかる。

このタイミングは、この不具合が起こり始めたバージョン v1.90.0とも一致する

余談 (WSL での VSCodeビルド方法)

ググっても解決策がよくわからなかったので、VSCodeのソースをgithubからクローンしてきて、git bisectでこの変更を見つけた。その時の備忘録

環境構築

あまり環境を汚したくなかったので、新たにWSL Ubuntu-22.04をインストールしてから開始した。

インストールするものはここに書いてあるが、現時点ではこんなコマンド (Linuxのところを参照)

https://github.com/microsoft/vscode/wiki/How-to-Contribute#prerequisites

sudo apt-get update
sudo apt-get install build-essential g++ libx11-dev libxkbfile-dev libsecret-1-dev libkrb5-dev python-is-python3
sudo apt-get install make

もしかしたらこっちもやったほうがいいかも

 sudo apt install python3 python-is-python3 libsecret-1-dev libxss1 libx11-dev libxkbfile-dev libasound2 libgtk-3-0 libgdk-pixbuf2.0-0 libnss3 libxtst6 libxi6 libxdamage1 libxcursor1 libxcomposite1 libx11-xcb1 libgbm1

ビルドと実行

最初に以下2つのコマンドを別々に走らせてビルドする

yarn watch
yarn watch-web

次にcode-serverを起動する

./scripts/code-server.sh --connection-token dev-token --port 8080

そしたらブラウザから、localhost:8080/?tkn=dev-token にアクセスすることでWeb版のVSCodeが使える