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 ノートブックの「Just My Code」デバッグ - Python ライブラリコードへのステップインを回避します。
- Dev Container GPU サポート - Dev Container の作成時に GPU を要求します。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
アクセシビリティ
ノートブック実行時の音声キュー
ノートブックセルの実行が完了したときに、音声キューが再生されるようになりました。キューは、セルが正常に実行されたか、失敗したかを示すために異なります。
差分レビューモードの音声キュー
差分エディターで次の差分へ移動がトリガーされると、カーソルが挿入された行にあるか削除された行にあるかを示す特定の音声キューが再生されます。
利用可能な音声キューに興味がある場合は、ヘルプ: 音声キューの一覧表示ドロップダウンから聞くことができます。
キーボードで操作可能な設定エディターのインジケーター、ホバー、リンク
設定エディターのインジケーター、ホバー、リンクがキーボードで操作できるようになりました。設定エディター全体での一貫性を高めるため、一部のリンクのスタイルも調整されています。
設定エディターのインジケーターホバーは、タブストップとキーボードフォーカスの維持に関して、はるかに優れた動作をするようになりました。この改善された動作はまだ試験的であり、現在は VS Code 全体のすべてのホバーではなく、設定エディターのインジケーターホバーのみで有効になっています。
テーマ: Light Pink (vscode.devでプレビュー)
ワークベンチ
カスタムエクスプローラーの自動表示ロジック
多くの投票があったissue #87956 (「explorer.autoReveal を特定のフォルダーごとに設定できるようにする」) は、新しい設定 explorer.autoRevealExclude
の導入によって修正されました。この設定により、自動表示が有効になっている場合 (explorer.autoReveal
、デフォルト true
) に、エクスプローラーで自動表示されるファイルを構成できます。autoRevealExclude
設定は、ファイルの除外にグロブパターンを使用し、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
という新しい設定があり、インデントサイズ (インデントを構成するスペースの数) をタブサイズ (Tab 文字のレンダリングに使用されるスペースの数) から分離できます。これは、タブとスペースが混在するインデントを使用するファイルを扱う場合に便利で、手動インデント設定を使用する場合にのみ実行できます。
以下は設定例です。
"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 デスクトップ内からリモート - トンネル拡張機能を使用して、任意のデバイスからマシンに接続できます。
詳細については、機能の発表に関するブログ記事またはリモートトンネルのドキュメントを確認してください。
テーマ: 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
を使用して、エディターコメント機能 (コメントバーとエディター内のコメント Peek ビュー) をオフにすることができます。セッション中にエディターコメント機能をオン/オフするには、引き続きコメント: エディターコメント機能を切り替えるコマンドを使用できます。コメントビューでコメントを選択すると、常にコメント機能がオンになります。
コメントビューのバッジ
コメントビューには、未解決のコメントの数のバッジが表示されます。
タスク
問題マッチャーの「検索」ファイル場所メソッド
以前は、問題マッチャーは 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 Desktop のリモートリポジトリで作業を続ける
また、作業中の変更をクラウドに保存することを示すために、編集セッションをクラウドの変更に改名しました。
拡張機能への貢献
Jupyter
ノートブックセルのデバッグのための「Just My Code」
「Just My Code」デバッグ機能を使用すると、デバッガーが Python ライブラリのコードをステップ実行するか、独自のソースコードのみをステップ実行するかを決定できます。これは、ノートブックセルをデバッグする際にデフォルトで有効になっていますが、"jupyter.debugJustMyCode": false
を設定して無効にし、ライブラリコードをステップ実行することもできます。最適なエクスペリエンスを得るには、環境内の debugpy を >=1.6.3
にアップグレードしてください。以前は、debugJustMyCode
設定はインタラクティブウィンドウでのデバッグでのみ尊重されていましたが、ノートブックエディターでも利用できるようになりました。
ノートブックセルデバッグセッションの再起動をサポート
デバッグツールバーの再起動コマンドは、現在のデバッグセッションを再起動します。以前は、これはノートブックデバッグセッションでエラーをスローしていましたが、現在はサポートされています。残念ながら、インタラクティブウィンドウでは適切にサポートできません。
この機能は、セルをデバッグし、セルを編集し、デバッグセッションを再起動して編集を適用した状態で再度セルをデバッグするというワークフローで特に役立ちます。
リモート開発拡張機能
リモート開発拡張機能を使用すると、コンテナー、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。このリリースのハイライトは次のとおりです。
- Dev Container GPU サポート
- Dev Container Cygwin / Git Bash ソケット転送
- リモート - トンネル拡張機能 - SSH を必要とせずにリモートマシンに接続します。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。
GitHub のプルリクエストと課題
プルリクエストと課題の作業、作成、管理ができるGitHub のプルリクエストと課題拡張機能の進捗がありました。主なハイライトは次のとおりです。
- パーマリンクコマンドのノートブックサポート。
- プルリクエストのチェックステータス (継続的インテグレーション (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 実行
Experimental - Python for the Web 拡張機能にデバッグサポートを追加しました。デバッガーは以下の機能をサポートしています。
- ブレークポイントの設定
- 関数のステップインとステップアウト
- モジュール間のデバッグ
- デバッグコンソールでの変数の評価
- 統合ターミナルでのプログラムのデバッグ
以下のスクリーンショットは、Hello World
プログラムのデバッグを示しています。
注意: この拡張機能を使用するには、ブラウザの URL に ?vscode-coi=
というクエリパラメータを追加する必要があります。
拡張機能作成
宣言された拡張機能の貢献に対する暗黙的なアクティベーションイベント
このマイルストーンでは、拡張機能が package.json
で特定の拡張機能の貢献を宣言している場合、アクティベーションイベントを明示的にリストする必要がなくなりました。
以前は、拡張機能が package.json
ファイルでコマンド mycommand
を提供すると宣言した場合、コマンドが正常に実行されるためには、package.json
の activationEvents
フィールドにそれに対応する onCommand:mycommand
アクティベーションイベントもリストする必要がありました。これは面倒でエラーが発生しやすく、大きな package.json
ファイルにつながる可能性がありました。
VS Code は、以下の拡張機能の貢献ポイントに対してアクティベーションイベントを自動的に入力するようになりました。
貢献ポイント | 推論されるアクティベーションイベント |
---|---|
コマンド |
onCommand |
認証 |
onAuthenticationRequest |
言語 |
onLanguage |
customEditors |
onCustomEditor |
ビュー |
onView |
拡張機能の作成者は、これらの推論されたアクティベーションイベントを拡張機能から安全に削除できるようになりました。そうする場合は、拡張機能が以前のバージョンの VS Code と互換性がないと見なされないように、VS Code エンジン要件を更新してください。
"engines": {
"vscode": "^1.74.0"
},
ログ出力チャンネル
このマイルストーンで、LogOutputChannel API を完成させました。この API を使用して、拡張機能からのメッセージをログに記録するために使用されるログ出力チャネルを作成できるようになりました。
また、アプリケーションの現在のログレベルを示し、アプリケーションのログレベルが変更されたときにイベントを発生させるために、env
名前空間のlogLevel プロパティとonDidChangeLogLevel イベントも完成させました。
すべてのウェブビューで一貫したオリジン
前回のイテレーションでの作業に引き続き、VS Code のすべてのウェブビューはカスタムオリジンを維持しようとします。バージョン 1.74 では、これはカスタムエディターで使用されるウェブビューにも適用されます。
これにより、ウェブビューコンテンツがより多くのケースでキャッシュできるようになり、パフォーマンスが向上します。詳細と拡張機能の作成者として注意すべき点については、以前のリリースノートを参照してください。
拡張機能の 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
でインストールできます。
デバッグアダプタープロトコル
デバッグアダプタープロトコルにいくつかの明確化と新しいプロパティが追加されました。
DataBreakpointInfo
リクエストに新しいオプションのframeId
プロパティが追加されました。クライアントはこのフラグを使用して、name
変数を含むスタックフレームを指定できます。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 で容易に利用可能な機能を提供するノードモジュールに依存しなくなりました (たとえば、
uuid
をCrypto.randomUUID()に置き換えました)。 - Node.js と Web の両方で
node-fetch
を使用する代わりに、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: Add wordBreak editorOption and use it to lineBreakComputer function PR #156242
- @andschwa (Andy Jordan): Support shell integration in Windows PowerShell PR #167023
- @babakks (Babak K. Shandiz)
- 🐛 Fix repeated CWD entries when creating new terminal in multi-root workspace PR #153204
- 🎁 Add
killOnServerStop
to debug configuration PR #163779 - 🎁 Add
search
to file location methods in tasks PR #165156 - 💄 Include file system path in debug mode's URI/link hovers PR #165709
- 🔨 Add "Focus Breadcrumb" to command palette PR #166461
- @CGNonofr (Loïc Mangeonjean): Standalone configuration: use resource and language PR #146522
- @chengluyu (Luyu Cheng): Support variable fonts (#_153291) PR #153968
- @cmarincia (Catalin Marincia): Add list of strings option to editor.fontFamily PR #164289
- @d0ggie (Pekka Seppänen): Restore bracket match CSS syntax (#_166109) PR #166141
- @dmartzol (Daniel Martinez Olivas)
- Moves css rules from links.ts to links.css PR #166258
- moves css rules PR #166532
- @ecstrema (Rémi Marche): Editor state change, break after match PR #166283
- @felixlheureux (Felix L'Heureux): Reset value to an empty string when undefined or null PR #165721
- @g1eny0ung (Yue Yang): fix: text overlay in replace input PR #162036
- @GauravB159 (Gaurav Bhagchandani)
- Use css variables for editor scrollbar PR #165464
- Register theme participant refactoring PR #165576
- @gjsjohnmurray (John Murray): Fix text of IW command palette entries (#_164860) PR #164863
- @guttyon: Temporarily disable input method interception. PR #159699
- @HiDeoo: Fix QuickPickItem JSDoc links in vscode.d.ts PR #164474
- @hughlilly (Hugh Lilly)
- Markdown lang preview settings description PR #165109
- adds to
files.exclude
desc re:explorer.excludeGitIgnore
PR #165111
- @jasonwilliams (Jason Williams): fix #154064 which was running the wrong taskgroups PR #164983
- @JayBazuzi (Jay Bazuzi): Change error message when launching a second admin instance PR #166146
- @Jaykul (Joel Bennett): Fix the PowerShell integration script #165022 PR #165023
- @jeanp413 (Jean Pierre)
- Fixes
Terminal: Focus Terminal Tabs view
command not working PR #164408 - Fixes task reconnection status does not work for default build task PR #165110
- Fixes terminal find widget not showing result count PR #166902
- Fixes
- @jkei0: Move css rules from selections.ts to selections.css PR #166407
- @jzyrobert (Robert Jin): Add explorer.autorevealExclude setting PR #136905
- @laurentlb (Laurent Le Brun)
- Comments view: add badge with the number of unresolved comments PR #164743
- Telemetry: log command execution time PR #165599
- @LoopThrough-i-j (Debayan Ganguly): Fix: New md file scrolls to Top. PR #164999
- @MarkZuber (Mark Zuber): Update bootstrap-node.js to check for Array.isArray PR #165289
- @marrej (Marcus Revaj): Add additional actions to CommentThread PR #162750
- @Mingpan: Fix arrows in side-by-side diff view PR #165423
- @miyaokamarina (Marina Miyaoka): Do not preprocess Unicode newlines in Markdown preview PR #166026
- @MonadChains (MonadChains)
- Implement Audio cues on cell execution completed PR #165442
- Fix custom zsh_history ignored PR #166813
- @mustard-mh (Huiwen): Fix tasks status incorrect #163393 PR #163952
- @n-gist (n-gist): Fix snippet overtyping feature PR #165871
- @najmiehsa
- Use CSS variables over registerThemingParticipant - minimap viewparts PR #165465
- Use CSS variables over registerThemingParticipant - rulers viewparts PR #165466
- @nisargjhaveri (Nisarg Jhaveri): Allow different exception breakpoints from multiple debuggers to be shown at once PR #158355
- @Okeanos (Nikolas Grottendieck): improve Git Bash integration on Windows (#_151105) PR #165428
- @pafernandez-oesia: Fix #165480 PR #165486
- @pingren (Ping): Fix KaTeX equation numbering in notebook preview PR #156276
- @prashantvc (Prashant Cholachagudda): Change sessionId with machineId for extension search telemetry PR #166355
- @QaidVoid: Reduce registerThemingParticipant PR #165575
- @r3m0t (Tomer Chachamu)
- Corrected checkboxes on autoLockGroups settings UI (Fixes #164367) PR #164369
- Correct updates to TestItem.error and TestItem.sortText (Fixes #166190) PR #166191
- @ramoncorominas (Ramón Corominas): Update messages.es.isl to add context menu hotkey PR #166010
- @rwe (Robert Estelle)
- shellIntegrationAddon.ts: only decode messages for VSCodeOScPt, not iTerm2 PR #165579
- shellIntegration.fish: escape values in "E" (executed command) and "P" (property KV) codes PR #165631
- shellIntegration-bash.sh: escape values in "E" (executed command) and "P" (property KV) codes PR #165632
- shellIntegration-rc.zsh: escape values in "E" (executed command) and "P" (property KV) codes PR #165633
- shellIntegration.ps1: escape values in "E" (executed command) and "P" (property KV) codes PR #165634
- shellIntegrationAddon: fix broken
deserializeMessage()
implementation + add tests PR #165635
- @sandersn (Nathan Shively-Sanders): Copy webServer from Typescript to VS Code PR #165771
- @SethFalco (Seth Falco): feat: add setting for multi cursor limit PR #149703
- @SphinxKnight (SphinxKnight): Nit: fix Tip blocks case PR #165223
- @ssigwart (Stephen Sigwart): Fix unwanted extra spaces when pasting code with JSDoc PR #136579
- @Timmmm (Tim): Fix sticky tabs option PR #157543
- @weartist (Han)
- Move css rules for #165169 PR #165595
- #165169 Move css rules from hover.ts into hover.css PR #166095
- Move css rules from inPlaceReplace.ts into inPlaceReplace.css PR #166098
- Adapter css variables PR #166279
- move css variables for diffEditor PR #166467
- @yiliang114 (易良): Only use string of the
remote/web/package.json
browser
field PR #165163 - @zeroimpl (Daniel Fiori): Separate tab size and indent size PR #155450
- @zhuowei: webview: ignore Ctrl+W and Ctrl+N in webview for PWA PR #164981
vscode-css-languageservice
への貢献者
- @babakks (Babak K. Shandiz): ✋ Ignore missing standard properties in contexts with vendor-specific pseudo-elements PR #303
- @johnsoncodehk (Johnson Chu)
vscode-eslint
への貢献者
- @aleclarson (Alec Larson): Introduce option to prevent underlining multiple lines PR #1528
- @MariaSolOs (Maria José Solano): Check for -- when disabling rules PR #1506
- @uhyo (uhyo): Add Experimental support of Flat Config PR #1522
vscode-js-debug
への貢献者
- @xai (Olaf Lessenich): fix: use platform preferred case in launcher PR #1449
vscode-json-languageservice
への貢献
vscode-pull-request-github
への貢献者
- @joshuaobrien (Joshua O'Brien): Narrow types in TimelineEvent so that it may be treated as a tagged union PR #4160
debug-adapter-protocol
への貢献者
- @sztomi (Tamás Szelei): Update sdks.md - include dap-rs PR #349
- @WardenGnaw (Andrew Wang): Move EvaluateArguments context variables to end of enums PR #346
devcontainers/cli
への貢献
- @amurzeau (Alexis Murzeau): Handle Cygwin / Git Bash sockets forwarding on Windows PR #82
- @natescherer (Nate Scherer): Add --output option to devcontainer build PR #166
- @stuartleeks (Stuart Leeks): Add --additional-features option PR #171
- @chris-major-improbable (Chris Major): GPU requirement and auto-detect NVIDIA extensions PR #173
- @davidwallacejackson (David Jackson): Normalize feature permissions PR #233