2022年11月 (バージョン 1.74)
更新 1.74.1: この更新プログラムでは、これらの問題が解決されています。
更新 1.74.2: この更新プログラムでは、これらの問題が解決されています。
更新 1.74.3: この更新プログラムでは、このセキュリティ上の問題が解決されています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code 2022年11月リリースへようこそ。このバージョンには、皆さんが気に入るであろう多くの更新が含まれています。主なハイライトをいくつかご紹介します。
- エクスプローラーの自動表示をカスタマイズ - エクスプローラーでどのファイルをスクロールして表示するかを決定します。
- アクティビティバーとパネルのバッジを非表示 - 状態バッジを切り替えて、エディターの UI を簡素化します。
- ノートブックと差分ビューの音声キュー - セルの実行結果、追加または削除された行の音声。
- マージエディターの元に戻す/やり直し - マージ競合のアクションをすばやく元に戻したり再適用したりできます。
- 安全でないリポジトリを管理 - 自分が所有していないフォルダーでの Git 操作を防止します。
- JavaScript console.profile の収集 - VS Code で表示するための CPU プロファイルを簡単に作成できます。
- return から定義へ移動 - JavaScript/TypeScript 関数の先頭にジャンプします。
- リモートトンネル - SSH を必要とせずに、どのマシンにも接続を作成できます。
- Jupyter notebook の「自分のコードのみ」デバッグ - Python ライブラリコードへのステップインを回避します。
- Dev Container GPU サポート - Dev Container を作成する際に GPU を要求します。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
アクセシビリティ
ノートブック実行時の音声キュー
ノートブックのセルが実行を完了したときに、音声キューが鳴るようになりました。セルが正常に実行されたか、失敗したかを示すために、キューは異なります。
差分レビューモードの音声キュー
差分エディターで次の差分へ移動がトリガーされると、カーソルが挿入された行にあるか、削除された行にあるかを示す特定の音声キューが再生されます。
利用可能な音声キューについて興味がある場合は、ヘルプ: 音声キューのリストドロップダウンからそれらを聞くことができます。
キーボードで操作可能な設定エディターのインジケーター、ホバー、リンク
設定エディターのインジケーター、ホバー、リンクがキーボードで操作できるようになりました。一部のリンクのスタイルも、設定エディター全体での一貫性を向上させるために調整されています。
設定エディターのインジケーターホバーは、タブストップとキーボードフォーカスの維持に関して、はるかに優れた動作をするようになりました。この改善された動作はまだ試験的であり、現在は VS Code 全体のすべてのホバーではなく、設定エディターのインジケーターホバーのみで有効になっています。
テーマ: Light Pink (vscode.dev でプレビュー)
ワークベンチ
エクスプローラーの自動表示ロジックのカスタマイズ
非常に多くの支持を得ていた問題 #87956 (「特定のフォルダーごとに explorer.autoReveal を設定できるようにする」) は、新しい設定 explorer.autoRevealExclude
の導入によって修正されました。この設定を使用すると、自動表示が有効になっている場合 (explorer.autoReveal
、デフォルト true
)、エクスプローラーで自動表示されるファイルを構成できます。autoRevealExclude
設定は、ファイルの除外にglob パターンを使用し、files.exclude
と同様に when 句を介した兄弟マッチングもサポートします。
デフォルト値は node と bower モジュールを除外します。
{
"explorer.autoRevealExclude": {
"**/node_modules": true,
"**/bower_components": true
}
}
ビューコンテナごとのバッジを非表示にする
ビューコンテナを右クリックしてビューコンテナを非表示にできたのと同様に、コンテナのバッジ (アクティビティバー、パネル、セカンダリサイドバーに表示) を非表示にできるようになりました。バッジは、特定のビューコンテナの数値、アイコン、または進行状況インジケーター (例: ソース管理ビューの保留中の変更数) を表示することがよくあります。
マージエディター
このリリースでは、マージエディターに対するいくつかの改善とバグ修正が含まれています。主なハイライトは次のとおりです。
- 元に戻す/やり直しが、競合の処理済み状態を追跡するようになりました。
- 入力ビューの無視アクションは、結果ビューの処理済みとしてマークアクションの代わりに、ベースバージョンを受け入れるために使用できます。
- 両側で同じ変更は、自動的に解決されるようになりました。
git blame
機能を提供する拡張機能は、incoming、current、および base エディターで動作するようになりました。
ディスク上の拡張機能をインストールする
開発者: 場所から拡張機能をインストール... コマンドを使用して、ローカルディスクドライブ上にある拡張機能をインストールできるようになりました。このコマンドは、拡張機能の .vsix
ファイルの場所を選択するためのプラットフォームフォルダーダイアログを開きます。
エディター
CJK 文字の新しい単語区切りオプション
新しい設定 editor.wordBreak
を使用すると、CJK 文字の後に折り返し点を挿入しないようにすることができます。keepAll
で設定すると、折り返しアルゴリズムは CJK 文字の後のテキストを同じ行に保持しようとします。この設定は、他のスクリプトの文字には影響しません。
OpenType フォントの新しいフォント設定
OpenType フォントバリエーションをサポートする一部の新しいフォントは、フォントウェイト軸などの特定の軸を調整して、font-weight
CSS プロパティでは設定できないフォントウェイトを実現できます。CSS では、これは font-variation-settings
プロパティで実現されます。そのようなフォントを使用している場合、editor.fontVariations
を true
に設定できるようになり、VS Code はフォントウェイトの設定に "wght"
表示軸を使用します。フォントが他の軸をサポートしている場合、例えば "editor.fontVariations": "'ital' 0.5"
のように直接設定することも可能です。
新しいインデントサイズ設定
新しい設定 editor.indentSize
が導入され、インデントサイズ (インデントを構成するスペースの数) をタブサイズ (タブ文字を表示するために使用されるスペースの数) から切り離すことができるようになりました。これは、タブとスペースのインデントが混在するファイルを扱う場合に便利で、手動のインデント設定を使用している場合にのみ適用できます。
以下は構成例です。
"editor.detectIndentation": false,
"editor.insertSpaces": true,
"editor.tabSize": 8,
"editor.indentSize": 2
インライン補完を部分的に受け入れるコマンド
コマンドインライン提案の次の単語を受け入れる (editor.action.inlineSuggest.acceptNextWord
) は、現在のインライン提案の次の単語/非単語セグメントを受け入れるために使用できます。現在、インライン提案の最初の行の一部のみを受け入れることができます。このコマンドはまだ開発中であり、将来のリリースに向けて、代替の分割ルールと共にキーボードショートカットを検討しています。
ソース管理
安全でない Git リポジトリを管理する
VS Code はすべての Git 操作を実行するために git.exe
を使用します。Git 2.35.2 以降、リポジトリが潜在的に安全でないと見なされるため、現在のユーザー以外のユーザーが所有するフォルダー内のリポジトリで Git 操作を実行することはできなくなりました。
このリリース以降、潜在的に安全でないリポジトリを開こうとすると、VS Code はソース管理ビューにウェルカムビューとエラー通知を表示します。ウェルカムビューと通知の両方に、潜在的に安全でないリポジリポジトリのリストを確認し、それらを安全とマークして開くことができる安全でないリポジトリを管理コマンドが表示されます。安全でないリポジトリを管理コマンドは、コマンドパレットでも利用できます。リポジトリを安全とマークすると、リポジトリの場所が safe.directory
Git 設定に追加されます。
オプティミスティックなユーザーインターフェースの更新
Git 操作を実行した後、ソース管理ビューが更新される前にデータモデルを更新するために一連の git
コマンド (例: git status
) が実行されます。これらのコマンドの実行に数秒かかるシナリオ (例: 大規模なモノレポを扱う場合) があり、ソース管理ビューが更新されるまでに遅延が発生していました。
このマイルストーンでは、git status
が完了する前に、一部の Git 操作 (ステージ、アンステージ、変更の破棄、コミット) についてソース管理ビューがオプティミスティックに更新されるように変更を加え、より機敏なソース管理ビューを実現しました。
新しい機能はデフォルトで有効になっていますが、git.optimisticUpdate: false
を使用して無効にすることができます。
コミットアクションボタンの改善
コミットアクションボタンがセカンダリコミットコマンド (例: コミット & 同期) を実行している場合、ボタンのラベルが実行中のコマンドを正しく反映するようになりました。コミットボタンは、進行状況を示すアニメーションも表示します。
ターミナル
ターミナルクイックフィックスの改善
ターミナルクイックフィックスは、エディターでのエクスペリエンスと連携するために、コードアクションコントロールで表示されるようになりました。
ターミナルドロップダウンのタスクアクション
タスクの実行とタスクの構成コマンドがターミナルドロップダウンに表示され、発見しやすさとアクセスしやすさが向上しました。
リモート開発
リモートトンネルが、VS Code Stable でプレビュー機能として利用可能になりました。リモートトンネルを使用すると、どのデバイスからでも、どこからでも VS Code を使って安全にマシンにアクセスできます。リモートトンネルアクセスを有効にするには、次のいずれかの方法でできます。
- アカウントメニューまたはコマンドパレットからリモートトンネルアクセスをオンにするを選択します。
- VS Code がインストールされ、PATH が通っているマシンから
code tunnel
を実行します。 - 新しい VS Code CLI をダウンロードし、
./code tunnel
を実行します。
トンネルアクセスがオンになると、vscode.dev を使用するか、VS Code デスクトップ内からRemote - Tunnels 拡張機能を使用して、任意のデバイスからマシンに接続できます。
詳細については、機能を発表するブログ投稿またはリモートトンネルのドキュメントを確認してください。
テーマ: Codesong (vscode.dev でプレビュー)
注: スタンドアロンの
code-server
CLI を使用していた場合、代わりに VS Code CLI (最新の VS Code デスクトップまたは上記のスタンドアロンダウンロードを介して) を使用する必要があります。
デバッグ
JavaScriptデバッグ
console.profile のサポート
JavaScript デバッガーが console.profile
をサポートするようになりました。デバッガーで実行すると、console.profile()
と console.profileEnd()
の間のコードの CPU プロファイルが収集されます。
console.profile();
doSomeExpensiveWork();
console.profileEnd();
結果として生成された .cpuprofile
ファイルはワークスペースフォルダーに保存され、VS Code の組み込みのプロファイルビューアーを使用して開いて表示できます。
ネストされたソースマップのサポート
特にモノレポのセットアップでは、ソースコードが一度コンパイルされてから、再度再コンパイルまたはバンドルされることがあります。多くの場合、これにより、結果のバンドルのソースマップが最初のステップで作成されたコンパイル済みファイルを参照することになります。
JavaScript デバッガーはソースマップを自動的に再帰的に解決するようになり、追加の手順なしで元のソースファイルをデバッグできるようになりました。
serverReadyAction に killOnServerStop プロパティが追加されました
serverReadyAction の launch.json
機能を使用すると、ユーザーは Web サーバーを起動するデバッグセッションを開始し、サーバーが起動したら、そのサーバーの URL に移動したブラウザーのデバッグを自動的に開始できます。新しいプロパティ killOnServerStop
が追加され、これを true
に設定すると、サーバーのデバッグセッションが停止したときに、新しいブラウザーデバッグセッションが自動的に停止するようになります。
例
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/app.js",
"serverReadyAction": {
"pattern": "listening on port ([0-9]+)",
"uriFormat": "https://:%s",
"action": "debugWithEdge",
"killOnServerStop": true
}
}
上記の例では、元の Launch Program
デバッグセッションが停止すると、自動的に開始された Edge デバッグセッションも停止します。
フォーカスされているデバッグセッションの例外ブレークポイントの表示
以前は、2 種類の異なるデバッグセッションを実行している場合の例外ブレークポイントの管理がうまくいきませんでした。今回、呼び出し履歴ビューでデバッグセッションにフォーカスが当てられると、そのセッションのデバッグタイプに対応する正しいブレークポイントのセットが表示されるようになりました。
コメント
comments.visible
新しい設定 comments.visible
を使用すると、エディターのコメント機能 (コメントバーとエディター内のコメントピークビュー) をオフにできます。セッション中にエディターのコメント機能のオン/オフを切り替えるには、コメント: エディターのコメント機能を切り替えるコマンドを引き続き使用できます。コメントビューでコメントを選択すると、常にコメント機能がオンになります。
コメントビューのバッジ
コメントビューには、未解決のコメントの数のバッジが表示されます。
タスク
問題マッチングの「search」ファイルロケーションメソッド
以前は、問題マッチングは fileLocation
プロパティを介して、問題のあるファイルをどこで探すかを正確に知る必要がありました。サポートされていたメソッドは、absolute
、relative
、または autoDetect
(まず相対パスをチェックし、失敗した場合に絶対パスを探す) でした。
しかし、ネストされたサブディレクトリに存在するスクリプトを使用するワークスペースでは、異なるスクリプトが統一された方法 (例えば、ワークスペースのベースディレクトリからの相対パス) でファイルパスを報告することがめったになかったため、タスクの設定が困難でした。
この問題を解決するために、search
という新しいファイルロケーションメソッドが追加されました。このメソッドを使用すると、再帰的なファイルシステム検索が実行され、キャプチャされたパスがすべて特定されます。
以下の例は、search
ファイルロケーションメソッドの設定方法を示しています (ただし、すべてのパラメーターはオプションです)。
"problemMatcher": {
// ...
"fileLocation": [
"search",
{
"include": [ // Optional; defaults to ["${workspaceFolder}"]
"${workspaceFolder}/src",
"${workspaceFolder}/extensions"
],
"exclude": [ // Optional
"${workspaceFolder}/extensions/node_modules"
]
}
],
// ...
}
注意: ユーザーは時間のかかるファイルシステム検索 (例: node_modules
ディレクトリ内を検索する) を引き起こさないように注意し、exclude
プロパティを適切に設定してください。
言語
TypeScript 4.9
VS Code は TypeScript 4.9 を同梱するようになりました。この主要なアップデートには、satisfies
オペレーターや自動アクセサーなどの新しい TypeScript 言語機能が導入されています。ツール側では、ファイル監視の改善や、その他多くの修正と改善が行われています。
このアップデートの詳細については、TypeScript 4.9 のアナウンスをご覧ください。
return で定義へ移動
JavaScript と TypeScript は、return
キーワードで定義へ移動を実行して、リターン元の関数の先頭にすばやくジャンプする機能をサポートするようになりました。これは、長く、複雑な、または深くネストされた関数を扱う場合に役立ちます。これには定義へ移動コマンド/キーバインディング (F12) を使用するか、単に return
キーワード上で Cmd/Alt + クリック
を行うことができます。
ノートブック
カーネルピッカーの実験: 最近使用したカーネル
最近使用したカーネルをピッカーの最上部に表示する新しいノートブックカーネルピッカーが追加されました。これはオプトインの実験機能であり、notebook.kernelPicker.type
設定を mru
に設定することで有効にできます。
使用されていないカーネルは、セカンダリピッカーの別のカーネルを選択...に移動されます。このピッカーは、最新のJupyter 拡張機能がインストールされている場合、すべてのカーネルをそのソース (例: Jupyter カーネル、Python 環境など) ごとにグループ化します。
皆様からのフィードバックをお待ちしております。VS Code リポジトリで課題を作成してください。
Web 用 VS Code
ソース管理
VS Code for the Web は、GitHub および Azure Repos リポジトリを編集する際に以下の設定をサポートするようになりました。
"git.branchRandomName.enabled"
- VS Code for the Web でブランチを作成するときにランダムなブランチ名を生成します。"git.branchRandomName.dictionary"
- VS Code for the Web でブランチを作成するときに、ランダムなブランチ名を生成するための単語辞書を指定します。"git.closeDiffOnOperation"
- コミット、変更のステージング、アンステージングなどのソース管理操作を実行した後、差分エディターを閉じます。
さらに、VS Code for the Web では、保護されたブランチについてステータスバーとブランチピッカーにロックアイコンが表示され、VS Code デスクトップのエクスペリエンスと統一されました。
最後に、VS Code for the Web のソース管理アクションボタンを使用して、変更を直接リポジトリのリモートにコミットしてプッシュできるようになりました。
コミットする前に変更を検証したい場合は、アクションボタンのドロップダウンにあるセカンダリの作業を続行...アクションを使用して、作業中の変更を別の開発環境に持ち運ぶこともできます。
作業を続行の改善
GitHub または Azure Repos リポジトリにいる場合、作業中の変更を特定の開発環境に持ち運ぶための便利なワンステップコマンドがコマンドパレットで利用できるようになりました。
- 新しい Codespace で作業を続行する
- ローカルクローンで作業を続行する
- VS Code デスクトップのリモートリポジトリで作業を続行する
また、作業中の変更をクラウドに保存することに関連することを明確にするために、編集セッションをクラウドの変更に名称変更しました。
拡張機能への貢献
Jupyter
ノートブックセルのデバッグのための「自分のコードのみ」
「自分のコードのみ」デバッグ機能を使用すると、デバッガーが Python ライブラリのコードをステップ実行するか、または自分のソースコードのみをステップ実行するかを決定できます。これはノートブックセルのデバッグ時にデフォルトで有効になっていますが、"jupyter.debugJustMyCode": false
を設定することで無効にし、ライブラリコードをステップ実行できるようにすることができます。最高の体験を得るためには、環境内の debugpy を >=1.6.3
にアップグレードしてください。以前は、debugJustMyCode
設定は対話型ウィンドウでデバッグする場合にのみ適用されていましたが、現在はノートブックエディターでも利用できるようになりました。
ノートブックセルのデバッグセッションの再起動をサポート
デバッグツールバーの再起動コマンドは、現在のデバッグセッションを再起動します。以前は、ノートブックのデバッグセッションでエラーが発生していましたが、現在はサポートされています。残念ながら、対話型ウィンドウでは適切にサポートできません。
この機能は、デバッグし、セルを編集し、その後デバッグセッションを再起動して編集を適用した状態で再度セルをデバッグするワークフローで特に便利です。
リモート開発拡張機能
リモート開発拡張機能を使用すると、コンテナ、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。このリリースのハイライトは次のとおりです。
- Dev Container の GPU サポート
- Dev Container の Cygwin / Git Bash ソケット転送
- Remote - Tunnels 拡張機能 - SSH を必要とせずにリモートマシンに接続します。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。
GitHub Pull Requests and Issues
プルリクエストとイシューの作業、作成、管理ができるGitHub Pull Requests and Issues 拡張機能は、さらに進歩しました。主なハイライトは次のとおりです。
- パーマリンクコマンドのノートブックサポート。
- プルリクエストのチェックステータス (継続的インテグレーション (CI) の進行中、レビューが必要、CI 失敗など) がプルリクエストツリービューに表示されます。
- PR の vscode.dev リンクは、プルリクエスト概要からコピーできます。
- プルリクエストの次の差分へ移動コマンドは、チェックアウトされた PR のファイル全体で次の差分に移動します。
その他のハイライトについては、拡張機能の0.56.0 リリース変更ログをご覧ください。
プレビュー機能
プロファイル
この数か月間、コミュニティからの最も人気のある要望の 1 つである VS Code のプロファイルのサポートに取り組んできました。この機能は、workbench.experimental.settingsProfiles.enabled
設定を介してプレビューで利用できます。ぜひ試して、vscode リポジトリで課題を作成するか、課題 #116740 にコメントしてフィードバックをお寄せください。
プロファイルの共有
プロファイルを GitHub に gist としてエクスポートして共有できるようになりました。VS Code は GitHub アカウントを使用して秘密の gist を作成し、他のユーザーと共有するためのリンクを提供します。そのリンクを開くと、VS Code は共有プロファイルをインストールするかどうかを尋ねます。プロファイルをエクスポートまたはインポートする際に、VS Code はプレビューを表示するため、エクスポートまたはインポートするデータをそれぞれ確認して選択できます。
GitHub にプロファイルをエクスポートし、そのリンクをコピーして他のユーザーと共有するビデオです。
このビデオは、共有リンクを開いてプロファイルをインポートする方法を示しています。
拡張機能の署名と検証
11月中旬から、Visual Studio Marketplace にアップロードされたすべての VS Code 拡張機能は、VS Marketplace によって署名されます。このプロセスはリポジトリ署名と呼ばれます。すべての拡張機能のインストールと更新で、VS Code は拡張機能パッケージの署名を検証します。署名と署名検証により、拡張機能パッケージの整合性と信頼性を保証できます。
署名検証は現在、VS Code Insiders でのみ行われています。問題に気づいた場合は、vscode リポジトリで課題を作成してお知らせいただくか、extensions.verifySignature
を false
に設定することで署名検証をオプトアウトできます。今後数か月以内に VS Code Stable で署名検証を有効にするよう取り組んでいます。
リポジトリ署名とは別に、拡張機能発行者の署名についても作業を開始しています。
Web での Python 実行
実験的 - Web 用 Python 拡張機能にデバッグサポートを追加しました。デバッガーは以下の機能をサポートしています。
- ブレークポイントの設定
- 関数のステップインとステップアウト
- モジュールをまたがるデバッグ
- デバッグコンソールでの変数の評価
- 統合ターミナルでのプログラムのデバッグ
以下のスクリーンショットは、Hello World
プログラムのデバッグを示しています。
注意: 拡張機能を使用するには、ブラウザーの URL に引き続き ?vscode-coi=
というクエリパラメーターを追加する必要があります。
拡張機能作成
宣言された拡張機能のコントリビューションに対する暗黙的なアクティベーションイベント
このマイルストーンでは、拡張機能が package.json
で特定の拡張機能のコントリビューションを宣言している場合、アクティベーションイベントを明示的にリストする必要があるという要件を削除しました。
以前は、拡張機能が package.json
ファイルでコマンド mycommand
を提供すると宣言した場合、コマンドが正常に実行されるように、package.json
の activationEvents
フィールドに対応する onCommand:mycommand
アクティベーションイベントもリストする必要がありました。これは面倒でエラーが発生しやすく、大きな package.json
ファイルにつながる可能性がありました。
VS Code は、以下の拡張機能コントリビューションポイントについて、アクティベーションイベントを自動的に設定するようになりました。
コントリビューションポイント | 推測されるアクティベーションイベント |
---|---|
コマンド |
onCommand |
authentication |
onAuthenticationRequest |
言語 |
onLanguage |
customEditors |
onCustomEditor |
views |
onView |
拡張機能の作成者は、これらの推測されるアクティベーションイベントを拡張機能から安全に削除できるようになりました。削除する場合は、拡張機能が以前のバージョンの VS Code と互換性があると見なされないように、VS Code エンジンの要件を更新してください。
"engines": {
"vscode": "^1.74.0"
},
ログ出力チャンネル
このマイルストーンでは、LogOutputChannel API を確定しました。この API を使用して、拡張機能からのメッセージをログに記録するために使用されるログ出力チャネルを作成できるようになりました。
また、アプリケーションの現在のログレベルを示し、アプリケーションのログレベルが変更されたときにイベントを発生させるために、env
名前空間のlogLevel
プロパティとonDidChangeLogLevel
イベントを確定しました。
すべての Web ビューの一貫したオリジン
前回のイテレーションでの作業に引き続き、VS Code のすべての Web ビューはカスタムオリジンを維持しようとします。1.74 では、これはカスタムエディターで使用される Web ビューにも拡張されます。
これにより、Web ビューのコンテンツがより多くの場合でキャッシュできるようになり、パフォーマンスが向上します。詳細と拡張機能作成者として注意すべき事項については、以前のリリースノートを参照してください。
拡張機能の README でのビデオタグのサポート
拡張機能は README で <video>
タグを使用できるようになりました。ビデオは VS Code Marketplace と VS Code の拡張機能ビューページの両方でサポートされています。.gif
と比較して、ビデオファイルは高品質で、多くの場合サイズも小さくなります。音声を含めることもできます!
VS Code 自体では特定のビデオおよびオーディオ形式のみがサポートされていることに注意してください。現在、<video>
の src
と poster
には相対パスではなく、フルパスを使用する必要があります。
コメントスレッドの追加アクション
新しいメニューの場所 comments/commentThread/additionalActions
により、拡張機能はコメントスレッドに常に表示されるボタンを提供できるようになりました。
vsce から @vscode/vsce への名称変更
VS Code の拡張機能マネージャーである vsce ツールは、@vscode/vsce に名称変更されました。これは、このツールをライブラリとして使用している人にとっては破壊的変更です。CLI ツールは引き続き vsce
と呼ばれ、npm install -g @vscode/vsce
でインストールできます。
デバッグアダプタープロトコル
デバッグアダプタープロトコルにいくつかの明確化と新しいプロパティが追加されました。
- The
DataBreakpointInfo
request has a new optionalframeId
property. Clients can use this flag to specify which stack frame contains aname
variable. readMemory
リクエストのファイル末尾の動作が指定されるようになりました。
エンジニアリング
プロパティとメソッドの名前マングリング
当社の製品ビルドは、プロパティとメソッドの名前をマングルするようになりました。これにより、メインバンドルのサイズが約 13% (-1.5 MB) 削減され、コードの読み込み時間が約 5% 短縮されました。
GitHub & Microsoft 認証拡張機能のバンドルサイズ改善
これらの 2 つの拡張機能のバンドルサイズは、提供される機能と、多くの場合 (vscode.dev など) 起動時にどれほど重要であるかを考慮すると、望ましいサイズよりも大きくなっていました。このマイルストーンでは、これらの拡張機能のサイズを減らすことに注力し、その結果は次のとおりです。
- GitHub 認証: 93 KB -> 64.9 KB
- Microsoft 認証: 97 KB -> 57.7 KB
これは、次のことによって達成されました。
- Node.js と Web で容易に利用できる機能を提供する Node モジュールに依存しない (およびバンドルしない) ようにしました (例: Crypto.randomUUID() を優先して
uuid
を削除)。 node-fetch
を Node.js と Web の両方で使用するのではなく、Node.js でのみ使用するようにしました。- サイズが大幅に縮小された
@vscode/extension-telemetry
の最新バージョンを採用しました。
このプロセスで機能が失われることはなく、これらの拡張機能はサイズが縮小されたため、より高速にフェッチされ、読み込まれるようになりました。
Electron サンドボックスの旅
Electron のサンドボックスを有効にするための進捗状況については、最近のブログ記事「VS Code をプロセスサンドボックスへ移行する」をご覧ください。この詳細な記事では、技術のタイムラインを提示し、VS Code のサンドボックス化をサポートするために行われた段階的な変更について説明しています。
VS Code のサンドボックスモードを試したい場合は、設定で "window.experimental.useSandbox": true
を設定できます。機能的な違いはほとんどないはずですが、問題が見つかった場合はお知らせください。
Windows でのウィンドウコントロールオーバーレイがデフォルトで再有効化されました
ウィンドウコントロールオーバーレイ (WCO) がデフォルトで再有効化されました。以前は 8 月に有効になっていましたが、右から左へ記述するシステム言語を使用しているユーザーにとって間違った側にレンダリングされ、ファイルと編集メニュー項目を覆い隠してしまうため、再度無効化されていました。
主な問題は、VS Code がアプリケーションのロケールを Electron に渡していなかったため、Electron が WCO をどこに配置するかを決定するためにシステムロケールを使用していたことでした。しかし、VS Code は Electron の app.getLocale()
API に依存してシステム言語を取得し、推奨する言語パックを決定していました。そして、アプリケーションのロケールを Electron に渡すと、app.getLocale()
がシステム言語ではなく同じロケールを返すという結果になっていました。
この問題を修正するために、Electron に新しい app.getPreferredSystemLanguages()
API を追加しました。これにより、Electron にロケールを渡した後でも、VS Code の言語パック推奨機能に使用するシステム言語を取得しつつ、WCO を右側に保持できるようになりました。
組み込み拡張機能が vscode-nls の代わりに新しい l10n API を使用するようになりました
先月、新しいローカリゼーション (l10n) API を安定化させました。今月は、Microsoft/vscode リポジトリにあるすべての拡張機能でその API を採用しました。言語サーバーを vscode-nls
の代わりに @vscode/l10n
を使用するように移行する必要があるほか、チームが所有する他のいくつかの拡張機能 (JS Debug、Python、Jupyter Notebooks など) もありますが、すべての拡張機能に対して単一のローカリゼーションストーリーへと正しい方向に進んでいます。
注目すべき修正点
- 166171 拡張機能のヒントモーダルにあるデフォルトのスクロールバーを削除します。
- microsoft/vscode-jupyter#11745 変数ビューアーが低速化と不安定性の原因となる
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
プルリクエスト
vscode
への貢献者
- @Albert-cord: feat: wordBreak editorOption を追加し、lineBreakComputer 関数で使用 PR #156242
- @andschwa (アンディ・ジョーダン): Windows PowerShell でのシェル統合をサポート PR #167023
- @babakks (ババク・K・シャンディス)
- 🐛 マルチルートワークスペースで新しいターミナルを作成する際に CWD エントリが繰り返される問題を修正 PR #153204
- 🎁 デバッグ構成に
killOnServerStop
を追加 PR #163779 - 🎁 タスクのファイルロケーションメソッドに
search
を追加 PR #165156 - 💄 デバッグモードの URI/リンクホバーにファイルシステムパスを含める PR #165709
- 🔨 コマンドパレットに「Focus Breadcrumb」を追加 PR #166461
- @CGNonofr (ロイク・マンジョンジャン): スタンドアロン構成: リソースと言語を使用 PR #146522
- @chengluyu (ルユ・チェン): 可変フォントをサポート (#_153291) PR #153968
- @cmarincia (カタリン・マリーンシア): editor.fontFamily に文字列リストオプションを追加 PR #164289
- @d0ggie (ペッカ・セッパネン): ブラケット一致 CSS 構文を復元 (#_166109) PR #166141
- @dmartzol (ダニエル・マルティネス・オリヴァス)
- css ルールを links.ts から links.css に移動 PR #166258
- css ルールを移動 PR #166532
- @ecstrema (レミ・マルシェ): エディターの状態変更、一致後の改行 PR #166283
- @felixlheureux (フェリックス・ルウルー): undefined または null の場合に値を空文字列にリセット PR #165721
- @g1eny0ung (ユー・ヤン): fix: 置換入力でのテキストオーバーレイ PR #162036
- @GauravB159 (ガウラヴ・バーグチャンダーニ)
- エディタースクロールバーに CSS 変数を使用 PR #165464
- テーマ参加者リファクタリングを登録 PR #165576
- @gjsjohnmurray (ジョン・マレー): IW コマンドパレットエントリのテキストを修正 (#_164860) PR #164863
- @guttyon: 入力メソッドの傍受を一時的に無効にします。 PR #159699
- @HiDeoo: vscode.d.ts の QuickPickItem JSDoc リンクを修正 PR #164474
- @hughlilly (ヒュー・リリー)
- Markdown 言語プレビュー設定の説明 PR #165109
files.exclude
の説明にexplorer.excludeGitIgnore
に関する記述を追加 PR #165111
- @jasonwilliams (ジェイソン・ウィリアムズ): 間違ったタスクグループを実行していた #154064 を修正 PR #164983
- @JayBazuzi (ジェイ・バズージ): 2番目の管理者インスタンスを起動したときのエラーメッセージを変更 PR #166146
- @Jaykul (ジョエル・ベネット): PowerShell 統合スクリプト #165022 を修正 PR #165023
- @jeanp413 (ジャン・ピエール)
Terminal: Focus Terminal Tabs view
コマンドが機能しない問題を修正 PR #164408- デフォルトのビルドタスクでタスクの再接続ステータスが機能しない問題を修正 PR #165110
- ターミナルの検索ウィジェットが結果数を表示しない問題を修正 PR #166902
- @jkei0: css ルールを selections.ts から selections.css に移動 PR #166407
- @jzyrobert (ロバート・ジン): explorer.autorevealExclude 設定を追加 PR #136905
- @laurentlb (ローラン・ルブラン)
- コメントビュー: 未解決のコメント数を示すバッジを追加 PR #164743
- テレメトリー: コマンド実行時間をログに記録 PR #165599
- @LoopThrough-i-j (デバヤン・ガングリー): 修正: 新しい md ファイルが上部にスクロールする問題を修正。 PR #164999
- @MarkZuber (マーク・ズーバー): Array.isArray をチェックするように bootstrap-node.js を更新 PR #165289
- @marrej (マーカス・レヴァイ): CommentThread に追加アクションを追加 PR #162750
- @Mingpan: 並列差分ビューの矢印を修正 PR #165423
- @miyaokamarina (宮岡 マリナ): Markdown プレビューで Unicode の改行を前処理しない PR #166026
- @MonadChains (モナドチェインズ)
- セル実行完了時の音声キューを実装 PR #165442
- カスタム zsh_history が無視される問題を修正 PR #166813
- @mustard-mh (フイウェン): タスクステータスが正しくない問題を修正 #163393 PR #163952
- @n-gist (n-gist): スニペット上書き機能を修正 PR #165871
- @najmiehsa
- registerThemingParticipant の代わりに CSS 変数を使用 - ミニマップビューパーツ PR #165465
- registerThemingParticipant の代わりに CSS 変数を使用 - ルーラービューパーツ PR #165466
- @nisargjhaveri (ニサルグ・ジャヴェリ): 複数のデバッガーからの異なる例外ブレークポイントを同時に表示できるようにする PR #158355
- @Okeanos (ニコラス・グロッテンディエク): Windows での Git Bash 統合を改善 (#_151105) PR #165428
- @pafernandez-oesia: #165480 を修正 PR #165486
- @pingren (ピング): ノートブックプレビューでの KaTeX 方程式の番号付けを修正 PR #156276
- @prashantvc (プラシャント・チョラチャグッダ): 拡張機能検索テレメトリの sessionId を machineId に変更 PR #166355
- @QaidVoid: registerThemingParticipant を削減 PR #165575
- @r3m0t (トマー・チャチャム)
- autoLockGroups 設定 UI のチェックボックスを修正 (#164367 を修正) PR #164369
- TestItem.error と TestItem.sortText の更新を修正 (#166190 を修正) PR #166191
- @ramoncorominas (ラモン・コロミナス): messages.es.isl を更新してコンテキストメニューのホットキーを追加 PR #166010
- @rwe (ロバート・エステル)
- shellIntegrationAddon.ts: VSCodeOScPt のメッセージのみをデコードし、iTerm2 はデコードしない PR #165579
- shellIntegration.fish: "E" (実行されたコマンド) および "P" (プロパティ KV) コードの値をエスケープ PR #165631
- shellIntegration-bash.sh: "E" (実行されたコマンド) および "P" (プロパティ KV) コードの値をエスケープ PR #165632
- shellIntegration-rc.zsh: "E" (実行されたコマンド) および "P" (プロパティ KV) コードの値をエスケープ PR #165633
- shellIntegration.ps1: "E" (実行されたコマンド) および "P" (プロパティ KV) コードの値をエスケープ PR #165634
- shellIntegrationAddon: 破損した
deserializeMessage()
実装を修正 + テストを追加 PR #165635
- @sandersn (ネイサン・シブリー・サンダース): webServer を TypeScript から VS Code にコピー PR #165771
- @SethFalco (セス・ファルコ): feat: マルチカーソル制限の設定を追加 PR #149703
- @SphinxKnight (スフィンクスナイト): Nit: Tip ブロックのケースを修正 PR #165223
- @ssigwart (スティーブン・シグワート): JSDoc 付きコードを貼り付けたときに不要な余分なスペースが入る問題を修正 PR #136579
- @Timmmm (ティム): スティッキータブオプションを修正 PR #157543
- @weartist (ハン)
- #165169 の css ルールを移動 PR #165595
- #165169 css ルールを hover.ts から hover.css に移動 PR #166095
- css ルールを inPlaceReplace.ts から inPlaceReplace.css に移動 PR #166098
- アダプター CSS 変数 PR #166279
- diffEditor 用の css 変数を移動 PR #166467
- @yiliang114 (易良):
remote/web/package.json
のbrowser
フィールドの文字列のみを使用 PR #165163 - @zeroimpl (ダニエル・フィオーリ): タブサイズとインデントサイズを分離 PR #155450
- @zhuowei: webview: PWA の webview で Ctrl+W と Ctrl+N を無視 PR #164981
vscode-css-languageservice
への貢献者
- @babakks (ババク・K・シャンディス): ✋ ベンダー固有の疑似要素を持つコンテキストで不足している標準プロパティを無視 PR #303
- @johnsoncodehk (ジョンソン・チュー)
vscode-eslint
への貢献者
- @aleclarson (アレック・ラーソン): 複数行の下線を防ぐオプションを導入 PR #1528
- @MariaSolOs (マリア・ホセ・ソラーノ): ルールを無効にする際に -- をチェック PR #1506
- @uhyo (uhyo): Flat Config の実験的サポートを追加 PR #1522
vscode-js-debug
への貢献者
- @xai (オラフ・レッセンニッヒ): fix: ランチャーでプラットフォームが推奨するケースを使用 PR #1449
vscode-json-languageservice
への貢献
vscode-pull-request-github
への貢献者
- @joshuaobrien (ジョシュア・オブライエン): TimelineEvent の型を絞り込み、タグ付きユニオンとして扱えるようにする PR #4160
debug-adapter-protocol
への貢献者
- @sztomi (タマシュ・セレイ): sdks.md を更新 - dap-rs を含む PR #349
- @WardenGnaw (アンドリュー・ワン): EvaluateArguments コンテキスト変数を列挙型の最後に移動 PR #346
devcontainers/cli
への貢献
- @amurzeau (アレクシス・ミューゾー): Windows での Cygwin / Git Bash ソケット転送を処理 PR #82
- @natescherer (ネイト・シェラー): devcontainer build に --output オプションを追加 PR #166
- @stuartleeks (スチュアート・リークス): --additional-features オプションを追加 PR #171
- @chris-major-improbable (クリス・メジャー): GPU 要件と NVIDIA 拡張機能の自動検出 PR #173
- @davidwallacejackson (デイビッド・ジャクソン): 機能権限を正規化 PR #233