2024年6月(バージョン 1.91)
アップデート 1.91.1:このアップデートは、以下の問題に対処します。
ダウンロード:Windows:x64 Arm64 | Mac:ユニバーサル Intel シリコン | Linux:deb rpm tarball Arm snap
Visual Studio Code の2024年6月リリースへようこそ。このバージョンには多くのアップデートがあり、気に入っていただけることを願っています。主なハイライトの一部を以下にご紹介します。
- プレビュー:受信/送信変更グラフ - ソース管理ビューで受信および送信の変更を視覚化します。
- Python 環境 - python-environment-tools による環境検出の強化。
- ネイティブ REPL でのスマート送信 - ネイティブ REPL でコードチャンクをスムーズに実行します。
- GitHub Copilot 拡張性 - VS Code Stable でチャットおよび言語モデル API を利用可能。
- プレビュー:プロファイルエディター - プロファイルを一か所で管理します。
- カスタムタブラベル - より多くの変数オプションと複数の拡張機能のサポート。
- TypeScript 5.5 - 正規表現およびその他の言語機能の構文チェック。
- JavaScript デバッガー - JavaScript デバッグ中にシャドウされた変数を検査します。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の アップデート をご覧ください。インサイダー: 新機能をいち早く試したいですか?夜間の インサイダー ビルドをダウンロードして、最新の更新プログラムが利用可能になり次第すぐに試すことができます。
アクセシビリティ
エディターホバーのアクセシブルビュー
コーディング時のアクセシビリティを向上させるため、アクセシブルビューとアクセシビリティヘルプメニューで、エディターのホバー情報を表示できるようになりました。ホバーのフォーカスされている部分に応じて、フォーカスされている部分またはホバーのコンテンツ全体に関する情報が表示されます。

リンクの下線
ワークベンチでリンクを通常のテキストと区別しやすくするために、設定 accessibility.underlineLinks を有効にしてリンクに下線を引くことができます。

Workbench
検索
ripgrep 検索エンジンが使用するスレッド数を制限できる新しい設定 search.ripgrep.maxThreads を追加しました。この設定は、検索がコア製品によって使用されるか、拡張機能 API を介して使用されるかに関わらず適用されます。
search.ripgrep.maxThreads をゼロ以外の値に設定して、スレッド数を構成します。この設定を特定の値に固定すると ripgrep の速度が低下する可能性があるため、注意してください。
推測のために許可されるエンコーディングを調整
新しい設定 files.candidateGuessEncodings を使用すると、files.autoGuessEncoding が有効になっている場合に考慮すべきエンコーディングのセットを構成できます。構成の順序が優先度を決定します。この機能を使用すると、検出できる可能性のあるエンコーディングをより小さなセットに制限し、あるエンコーディングを別のエンコーディングよりも優先させることができます。
プロファイルエディターのプレビュー
このマイルストーンでは、プロファイルを1か所で管理できる新しいプロファイルエディターを導入しました。このエクスペリエンスには、新しいプロファイルの作成、既存のプロファイルの編集と削除、および他のユーザーと共有するためのプロファイルのインポートとエクスポートが含まれます。新しいプロファイルを作成する際には、プロファイルを保存する前にプレビューし、必要に応じてカスタマイズできます。プロファイルエディターでは、特定のプロファイルで新しいウィンドウを開いたり、新しいウィンドウのデフォルトプロファイルとしてプロファイルをセットアップしたりすることもできます。

プロファイルエディターは、workbench.experimental.enableNewProfilesUI 設定の背後にある実験的機能として利用できます。有効にすると、ウィンドウの左下隅にある設定ギアアイコンからプロファイルエディターにアクセスできます。

ぜひ試してみて、このエクスペリエンスをさらに改善するためのフィードバックをお寄せください。
「プロファイル付き新規ウィンドウ」メニュー項目
プロファイルエディターに加えて、「ファイル」メニューに特定のプロファイルで新しいウィンドウを開くアクションを追加しました。「ファイル」>「プロファイル付き新規ウィンドウ」メニューを使用して、特定のプロファイルで新しいウィンドウを開きます。

拡張機能のインストールオプション
拡張機能をインストールする際の柔軟性を高めるために、さらにオプションを追加しました。
- 拡張機能を同期せずにインストールします。
- 特定のバージョンの拡張機能をインストールします。以前は、特定のバージョンを選択する前に、まず最新バージョンの拡張機能をインストールする必要がありました。
これらのアクションは、拡張機能ビューの拡張機能のコンテキストメニューから利用できます。

カスタムラベルでファイル拡張子にアクセス
カスタムラベルを定義する際に、${extname(N)} 構文を使用して個々のファイル拡張子にアクセスできる柔軟性が増しました。さらに、${extname(N)} は逆順でファイル拡張子をキャプチャするための負のインデックスもサポートしています。ファイル拡張子全体を取得するには、${extname} を使用します。
例:ファイル tests/editor.test.ts の場合
- ${filename}=>- editor
- ${extname}=>- test.ts
- ${extname(0)}=>- ts
- ${extname(1)}=>- test
- ${extname(-1)}=>- test
- ${extname(-2)}=>- ts
複数の拡張機能からのカスタムラベルパターンをマージ
2つの拡張機能が、それぞれの configurationDefaults で設定 workbench.editor.customLabels.patterns のデフォルト設定を提供する場合、提供されたパターンは結合されます。
|  |  | 
| 拡張機能1によるデフォルトの貢献 | 拡張機能2によるデフォルトの貢献 | 
|  | 
| 結果のカスタムラベルパターン | 
テーマの色を解除
テーマが気に入らない色や境界線を設定している場合、default を使用して元の値に戻すことができるようになりました。
  "workbench.colorCustomizations": {
      "diffEditor.removedTextBorder": "default"
  }
折りたたみプレースホルダーの色の変更
折りたたみプレースホルダー(省略記号)に、editor.foldPlaceholderForeground の色でテーマを設定できるようになりました。
Editor
保存時のコードアクション
editor.codeActionsOnSave 設定を使用すると、ファイルを保存するときに自動的に適用される一連のコードアクション(インポートの整理など)を構成できます。ワークスペースファイルとアクティブな拡張機能に基づいて利用可能なコードアクションのリストを提供することで、この設定を構成するための IntelliSense を改善しました。
注:現時点では
trueとfalseも有効な設定ですが、これらはexplicit、always、neverに置き換えられて非推奨となる予定であることに注意してください。例については、保存時のコードアクションドキュメントを参照してください。
読み取り専用ファイルステータスを素早くオフに
files.readonlyInclude 設定を介してファイルを読み取り専用として構成した場合、読み取り専用エディターメッセージからファイルの読み取り専用ステータスを素早く切り替えることができるようになりました。

ソース管理
受信/送信変更グラフのプレビュー
受信および送信の変更を代替的に視覚化することを検討してきました。このマイルストーンには、グラフを使用して受信および送信の変更を視覚化する実験的な機能が含まれています。グラフには、現在のブランチ、現在のブランチのアップストリームブランチ、およびオプションのベースブランチが含まれます。グラフのルートは、これらのブランチの共通の祖先です。
scm.experimental.showHistoryGraph 設定を使用すると、この新しい視覚化を有効にできます。この視覚化で利用可能な機能を改善および拡張し続けているので、ぜひ試してみて、ご意見をお聞かせください。

ノートブック
テキスト選択範囲内で検索
ノートブックの検索コントロールに、テキスト選択およびセル選択のための「選択範囲内で検索」機能が追加されました。この動作はデフォルトで有効になっており、コントロール内のボタンで制御できます。選択範囲のコンテキストに基づいて、このボタンを切り替えることで、検索クエリが1つまたは複数の選択されたセル、またはセル内の行にスコープされます。
コンテキストメニューからテキスト出力をコピーまたは開く
ノートブックでテキスト出力を操作する際に、テキスト出力のコンテキストメニューを使用して、出力値をコピーしたり、新しいエディターで出力を開いたりできるようになりました。この機能により、大規模なストリーミング出力を簡単に確認できます。
ターミナル
コピー&ペーストエスケープシーケンス (OSC 52) のサポート
OSC (Operating System Command) 52 エスケープシーケンスがサポートされました。これはターミナルで実行されているあらゆるものに使用できますが、主なユースケースは tmux のクリップボードアクセスです。
新しいカスタムグリフ
ターミナルは、ブランチ、行番号、およびロックの Powerline シンボルのカスタムグリフをサポートするようになりました。GPU アクセラレーションが有効になっている場合、他のカスタムグリフと同様に、これらのシンボルはフォントを設定する必要なく機能します。

これらのシンボルは、フォントサイズ、行の高さ、または文字間隔が調整された場合でも、セルと完璧にスケーリングします。

デバッグ
JavaScriptデバッガー
JavaScript デバッガーは、プログラムのスコープに基づいて、シャドウされた変数をホバー時およびインライン値(debug.inlineValues 設定で有効)で正しい値で表示するようになりました。

テーマ: Codesong (vscode.devでプレビュー)
言語
TypeScript 5.5
TypeScript 5.5 を含むようになりました。このメジャーアップデートには、多くの新しい言語機能とツール改善が含まれています。このリリースに関する詳細は、TypeScript 5.5 ブログ記事をご覧ください。
正規表現の構文チェック
TypeScript 5.5 のおかげで、JavaScript と TypeScript の正規表現リテラルにおける多くの構文エラーが報告されるようになりました。これには、未閉じのグループ、誤った逆参照、無効なエスケープなどのエラーが含まれます。


詳細については、TypeScript 5.5 ブログ記事をご覧ください。
拡張機能への貢献
GitHub Copilot
コンパクトなインラインチャット
インラインチャットのレンダリングがよりコンパクトになり、提案を読みやすく理解しやすくなりました。inlineChat.experimental.textButtons を介して有効にできる、より物語的なスタイルのボタンテキストも試しています。

ターミナルの初期ヒント
インラインチャットの発見を助けるための新しいヒントがターミナルに表示されます。

このヒントは、Copilot 拡張機能がインストールされており、インタラクションのない単一のターミナルがある場合にのみ表示されます。メッセージを右クリックするだけで、メッセージを永続的に閉じることができます。また、ターミナルのインラインチャットを初めて使用すると、メッセージは閉じられます。
コードブロックを適用
チャットビューのコードブロックにある「エディターに適用」コマンドは、言語モデルを使用して、現在のエディターに変更を適用するための最適なアプローチを決定します。

Python
python-environment-tools を使用した Python 環境検出
グローバルな Python インストールと Python 仮想環境の検出速度を大幅に向上させるために設計された新しいツール、python-environment-tools をご紹介できることを嬉しく思います。このツールは Rust を使用して、迅速かつ正確な検出プロセスを保証します。
現在、Python 拡張機能における新しい検出パフォーマンスを評価するため、既存のサポートと並行してこの新機能をテストしています。そのため、この新しいツールを使用した検出時間を示す Python Locator という新しいログチャネルが表示されます。
この機能強化は、VS Code での Python サポートのパフォーマンスと効率を最適化するための継続的な取り組みの一部です。この機能、進行中の作業、およびフィードバックの提供に関する詳細については、python-environment-tools リポジトリをご覧ください。
ネイティブ REPL でのスマート送信
Python 拡張機能で、VS Code ネイティブ REPL でのスマート送信が有効になりました。
以前は、Python コードの行にカーソルを置いて Shift+Enter を押すと、Python 拡張機能は、たとえそれが複数行コマンドの一部であるために失敗する場合でも、正確な行の内容をネイティブ REPL に送信していました。
現在、Shift+Enter は、非ネスト化シナリオでは最小限の実行可能コードを送信し、ネスト化シナリオでは最上位のコードブロックを送信します。これにより、ユーザーはファイルを素早く Shift+Enter することで、最小限の労力で最大限の実行可能コードを実行できます。
reStructuredText ドキュメント文字列のサポート
Pylance は、ホバー時に reStructuredText ドキュメント文字列(docstrings)をレンダリングする機能をサポートするようになりました!
この機能は初期段階であり、さまざまな Sphinx、GoogleDoc、および Epytext のシナリオを効果的に処理することを保証するために取り組んでいる間、現在はフラグの背後にあります。試すには、実験的な設定 python.analysis.supportRestructuredText を有効にすることができます。

この変更を試して、Pylance GitHub リポジトリで問題やフィードバックを報告してください。
注:この設定は実験的なものであり、この新機能が安定し、デフォルトで有効になるにつれて、将来的に削除される可能性があります。
GitHub Pull Requests and Issues
GitHub Pull Requests 拡張機能は、プルリクエストや課題の作業、作成、管理を可能にし、さらなる進歩を遂げました。新しい機能には以下が含まれます。
- チェックアウトされた PR のコミットサブツリーにコミット日付が表示されます。
- 多数のバグ修正。
その他のハイライトについては、拡張機能の 0.92.0 リリースの変更ログを参照してください。
ESLint
ESLint 拡張機能は、フラット設定ファイル形式をサポートするようになりました。この拡張機能は引き続き eslintrc ファイルをサポートしており、eslint.useFlatConfig 設定を使用して、どの設定ファイル形式を使用するかを制御できます。
eslintrc ファイル形式の非推奨化と削除に関する ESLint の計画を理解するには、ESLint フラット設定ロールアウト計画を参照してください。
拡張機能作成
チャットと言語モデル API
先月、拡張機能がチャットに参加し、言語モデルにアクセスできるようにする API を完成させましたが、これらは VS Code Insiders でのみ利用可能でした。このリリースでは、これらの API は VS Code Stable で完全に利用可能になりました。
これらの API の詳細と、初期採用者がどのように使用しているかについては、発表ブログ記事をご覧ください。
開始するには、拡張機能サンプルとチャット拡張機能ドキュメントにアクセスしてください。
オブジェクト設定のデフォルト値の処理
複数の拡張機能が同じオブジェクト設定にデフォルト値を提供する場合、これらのデフォルト値は結合されるようになりました。これにより、拡張機能間の競合が防止されます。
DebugSessionOptions.testRun API の完成
テスト実行からデバッグセッションを開始する拡張機能は、vscode.debug.startDebugging を呼び出すときに、その実行を DebugSessionOptions に渡すことができるようになりました。渡されると、デバッグセッションの再起動などのライフサイクルアクションも新しいテスト実行を作成します。
Debug Adapter Protocol
Debug Adapter Protocol にいくつか注目すべき変更が加えられました。
- 新しい Scope.presentationHint = returnValueオプションによる戻り値の表記。
- evaluateリクエストへのソースロケーションの追加。VS Code はこれを実装し、ホバーやインライン値を評価するときにロケーションを渡します。
提案されたAPI
言語モデルのツールと関数
ツールまたは関数の呼び出しを可能にする API 提案を追加しました。この API には2つの主要な部分があります。
- 
拡張機能が「ツール」を登録する機能。ツールとは、言語モデルによって使用されることを意図した機能の一部です。たとえば、ファイルの Git 履歴を読み取るなどです。 
- 
言語モデルがツールをサポートするための仕組み。たとえば、リクエストを行うときに拡張機能がツールを渡し、言語モデルがツールの呼び出しを要求し、拡張機能がツールの呼び出しの結果を返すなどです。 
提案は vscode.proposed.lmTools.d.ts として見つけることができます。
注: この API はまだ活発に開発中であり、変更される可能性があります。また、VS Code には適切なデフォルトツールが付属する予定です。
認証 getSessions が getAccounts に変更
私たちは複数のアカウント認証プロバイダーをサポートしていますが、常に欠けていたのは、すべてのセッションを取得し、特定のセッションに対してアクションを実行する機能でした。以前は、これを解決しようとする getSessions API の提案がありましたが、実験と人気のある認証ライブラリからのインスピレーションを受けて、問題を解決するために異なるアプローチを取っています。
以前提案されていた getSessions API から、「アカウント」と「セッション」の概念を分離するアプローチに変更しました。
認証セッションを使用しようとする拡張機能の作成者は、次のコードを実行して、ユーザーがログインしているアカウントの AuthenticationSessionAccountInformation を取得できます。
const accounts = vscode.authentication.getAccounts('microsoft');
そこから、これらのアカウントを使用して、それらのアカウントに特化したセッションを発行できます。
const session = vscode.authentication.getSession('microsoft', scopes, {
  account: accounts[0]
});
注:これを機能させるには、認証プロバイダーが新しいパラメーターを処理する必要があります。これについては、以下の API 提案で読むことができます。
これにより、複数の認証セッションをはるかに明確に処理できるようになり、以前はサポートできなかったさまざまなシナリオを処理できるようになると考えています。
提案は、この提案の以前の名前を使用した vscode.proposed.authGetSessions.d.ts として見つけることができます。これは、この提案に依存する既存のコードを壊さないためです。
コメントスレッドの表示
コメントを提供する拡張機能が、エディターで自身のコメントスレッドを表示できるようにする API 提案を追加しました。この API は、スレッドを表示するときにフォーカスを維持するか、スレッドの返信ボックスにフォーカスするかを選択するオプションを提供します。
提案は vscode.proposed.commentReveal.d.ts で利用できます。
属性付きテストカバレッジ
テストごとにテストカバレッジを関連付けることを可能にするAPIに取り組んでいます。これにより、ユーザーはどのテストがどのコードを実行したかを確認でき、エディターに表示されるカバレッジとテストカバレッジビューに表示されるカバレッジの両方をフィルタリングできます。
詳細と更新については、vscode#212196 を確認してください。
エンジニアリング
NLSとAMDローダーの分離
このマイルストーンでは、VS Code のコアネイティブ言語サポート (NLS) と、出荷している非同期モジュール定義 (AMD) ローダーとの依存関係を削除し始めました。将来の目標は、ECMAScript モジュール (ESM) ローディングを使用し、AMD を完全に廃止することです。この方向で進むために、AMD ローダープラグインの依存関係を削除します。動作に違いは気づかないはずで、私たちがサポートしていたすべての翻訳は、ウェブとデスクトップの両方で引き続きサポートされます。
注目すべき修正点
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @shelvesdragon (Shelves The Dragon)
- @starball5 (スターボール)
- @spartanatreyu (Jayden Pearse)
- @RedCMD (RedCMD)
プルリクエスト
vscodeへの貢献者
- @bsShoham (Shoham Ben Shitrit): カスタムラベルでの extname(N)テンプレートの使用を許可 PR #213033
- @CGNonofr (Loïc Mangeonjean): プロファイル変更時の設定マーカーの更新 PR #214353
- @cobey (Cody Beyer)
- py と js 用の AI およびベクトル DB ライブラリを含むようにファイルを更新 PR #216771
- js 用の auzre AI パッケージタグ付けを追加 PR #216857
- タグ付けに不足している azure AI py パッケージを追加 PR #216861
 
- @dangerman (Anees Ahee): 開発コンテナーで node 20 を使用 PR #215434
- @francescov1 (Francesco Virga): 再帰トグルを追加 PR #212218
- @franciscacarneiro (Francisca Carneiro): #182308 を修正:検索パネルで PageUp を押してもレイアウトが変わらなくなりました。PR #213067
- @gabritto (Gabriela Araujo Britto): [typescript-language-features] TypeScript の領域ベースのセマンティック診断 PR #208713
- @gjsjohnmurray (John Murray): マルチプロバイダータイムラインで正しくページング(#213452 を修正) PR #213453
- @grgar (George Garside): 拡張機能マーケットプレイスの README で、マージされたテーブルセルがマージされていない状態でレンダリングされる問題を修正 PR #211666
- @hecticme (H. Ngọc Minh): fix: クリック時にアクティビティバーのフォーカスボーダーを表示しない PR #217837
- @its-meny: fix: Markdown の見出し付き引用符が正しくレンダリングされない PR #205227
- @jakebailey (Jake Bailey): tsc -p ./src を修正、no-default-lib を削除 PR #216760
- @jeanp413 (Jean Pierre): サーバーレス環境でタスクを構成すると、タスクファイル全体が削除される問題を修正 PR #215810
- @mohankumarelec: 現在すでに存在する NO_PROXY 環境変数の値と同じ http.noProxy 設定を追加 PR #211958
- @mtbaqer (Mohammad Baqer): collapsedText をテーマ対応にする PR #173203
- @powersagitar: C++20 モジュールインターフェースユニットのファイル拡張子を追加 PR #214800
- @r-sargento (Rafael Sargento): vscode の表示変数型設定を実装 (#_210258) PR #214315
- @rehmsen (オーレ)
- CellComment 再利用時のコメントスレッドリークを修正。PR #214589
- #214589 の2つのバグを修正し、#213535 を修正。PR #218357
 
- @remcohaszing (レムコ・ハズイング)
- removeChildを- removeに置き換え PR #213465
- 選択ボックスが開かない問題を修正 PR #214348
 
- @SimonSiefke (サイモン・シーフケ)
- 機能:electron File.path を electron webUtils に置き換え PR #213031
- 設定でカラーキーを補完するときに、現在の値を入力する PR #213451
- 機能:ripgrep のスレッド数を設定可能にする PR #213511
- 機能:設定でカラーテーマ値を未設定にすることを許可 PR #213512
- 設定エディターのメモリリークを修正 PR #216763
- fix: SettingTreeRenderers における潜在的なメモリリーク PR #216768
- fix: SettingEnumRenderer の renderElement 関数で、templateDisposables の代わりに elementDisposables にディスポーザブルを追加する PR #216855
 
- @swordensen (Michael Sorensen): #182449 を修正:ドラッグアンドドロップイベント中に Shift を押すと webview が再度有効になる PR #209211
- @Timmmm (Tim Hutt): ターミナルで列番号付きのリンクを開く問題を修正 PR #210898
- @tisilent (xiejialong): IFindInFilesArgs に showIncludesExcludes を追加 PR #212347
- @werat (Andy Hippo): エラーメッセージ形式の修正 PR #214900
- @xiaoxianBoy (Snoppy): chore: スペルミスを修正 PR #216562
- @y0sh1ne (y0sh1ne): language-configuration.json を更新(#215999 を修正) PR #216394
- @yutotnh (yutotnh): エンコーディングを推測する際に、候補となるエンコーディングのリストを指定する機能を追加 (#_36951) PR #208550
vscode-css-languageserviceへの貢献者
- @wkillerud (William Killerud): feat: Sass pkg:インポーターのサポートを追加 PR #384
vscode-extension-samplesへの貢献
- @AllanJard (Allan Jardine): #863 を修正 - 言語を自動的に開始 PR #864
vscode-html-languageserviceへの貢献
- @johnsoncodehk (Johnson Chu): voidElementsの遅延評価 PR #187
vscode-languageserver-nodeへの貢献者
- @remcohaszing (Remco Haszing): 診断収集のフォールバックとしてクライアント ID を使用 PR #1445
vscode-python-tools-extension-template への貢献
- @caelean (Caelean Barnes): README でファイルパスを一貫して参照 PR #208
node-jsonc-parserへの貢献