2024年6月 (バージョン 1.91)

アップデート 1.91.1: このアップデートでは、以下のissueに対処しています。

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Code 2024年6月リリースへようこそ。このバージョンには多くのアップデートが含まれており、皆様に気に入っていただけることを願っています。主なハイライトは次のとおりです。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.comUpdatesにアクセスしてください。Insidersの皆様: 最新機能をいち早く試してみませんか? 夜間のInsidersビルドをダウンロードして、最新のアップデートをいち早くお試しいただけます。

アクセシビリティ

エディターホバーのアクセシブルビュー

コーディング時のアクセシビリティを向上させるために、アクセシブルビューアクセシビリティヘルプメニューがエディターホバー情報の内容を表示できるようになりました。ホバーのフォーカスされた部分に応じて、フォーカスされた部分またはホバーコンテンツ全体に関する情報を表示します。

Accessible View showing the contents of the editor hover information.

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

The run and debug view showing a mix of regular text and underlined links.

ワークベンチ

ripgrep検索エンジンが使用するスレッド数を制限できる新しい設定 search.ripgrep.maxThreads を追加しました。この設定は、検索がコア製品で使用されているか、拡張機能API経由で使用されているかに関係なく適用されます。

スレッド数を設定するには、search.ripgrep.maxThreads をゼロ以外の値に設定します。この設定を特定の値に固定すると、ripgrepが遅くなる可能性があるため注意してください。

推測に使用できるエンコーディングの調整

新しい設定 files.candidateGuessEncodings を使用すると、files.autoGuessEncoding が有効になっている場合に考慮する必要があるエンコーディングのセットを設定できます。設定の順序が優先度を決定します。この機能により、検出可能なエンコーディングをより小さなセットに制限し、あるエンコーディングを別のエンコーディングよりも優先することができます。

プロファイルエディタープレビュー

このマイルストーンでは、プロファイルを一箇所で管理できる新しいプロファイルエディターを導入しました。このエクスペリエンスには、新しいプロファイルの作成、既存のプロファイルの編集と削除、および他のユーザーと共有するためのプロファイルのエクスポートとインポートが含まれます。新しいプロファイルを作成する際に、プロファイルをプレビューし、必要に応じてカスタマイズしてから保存できます。プロファイルエディターでは、特定のプロファイルで新しいウィンドウを開いたり、新しいウィンドウのデフォルトプロファイルとしてプロファイルを設定したりすることもできます。

Profiles Editor showing all user profiles and their settings.

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

Settings menu showing the Profiles menu item to open the Profiles Editor.

ぜひお試しいただき、このエクスペリエンスをさらに改善する方法についてフィードバックをお寄せください。

プロファイル付きの新しいウィンドウメニュー項目

プロファイルエディターに加えて、特定のプロファイルで新しいウィンドウを開くアクションを「ファイル」メニューに追加しました。「ファイル」>「プロファイル付きの新しいウィンドウ」メニューを使用して、特定のプロファイルで新しいウィンドウを開きます。

Screenshot of the File menu showing the New Window with Profile menu items.

拡張機能のインストールオプション

拡張機能をインストールする際により柔軟性を持たせるために、オプションを追加しました

  • 同期せずに拡張機能をインストールします。
  • 特定のバージョンの拡張機能をインストールします。以前は、特定のバージョンを選択する前に、まず拡張機能の最新バージョンをインストールする必要がありました。

これらのアクションは、拡張機能ビューの拡張機能のコンテキストメニューで使用できます

Context menu for the Extensions view, showing the additional install actions.

カスタムラベルでファイル拡張子にアクセスする

カスタムラベルを定義する場合、`${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 のデフォルト構成を提供する場合、提供されたパターンはマージされます。

"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout"
}
"workbench.editor.customLabels.patterns" : {
  "**/components/**/index.tsx": "${dirname} - Component"
}
拡張機能1によるデフォルトの貢献 拡張機能2によるデフォルトの貢献
"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout",
  "**/components/**/index.tsx": "${dirname} - Component"
}
結果のカスタムラベルパターン

テーマカラーを未設定にする

テーマが気に入らない色または境界線を設定している場合、`default` を使用して元の値に戻すことができます

  "workbench.colorCustomizations": {
      "diffEditor.removedTextBorder": "default"
  }

折りたたみプレースホルダーの色を変更する

折りたたみプレースホルダー(省略記号)を色 editor.foldPlaceholderForeground でテーマ設定できるようになりました。

エディター

保存時のコードアクション

editor.codeActionsOnSave 設定を使用すると、ファイルを保存するときに自動的に適用されるコードアクションのセットを設定できます。たとえば、インポートを整理するなどです。ワークスペースファイルとアクティブな拡張機能に基づいて利用可能なコードアクションのリストを提供することにより、この設定を構成するためのIntelliSenseを改善しました。

: 現時点では truefalse は依然として有効な構成ですが、explicitalwaysnever に置き換えられる予定であることに注意してください。例については、コードアクションの保存に関するドキュメントを参照してください。

読み取り専用ファイルの状態をすばやくオフにする

files.readonlyInclude 設定を通じてファイルを読み取り専用として構成した場合、読み取り専用エディターメッセージからファイルの読み取り専用状態をすばやく切り替えることができます。

Read-only editor message enabling you to toggle the read-only status.

ソース管理

受信/送信の変更グラフプレビュー

受信と送信の変更の代替視覚化の使用を検討してきました。このマイルストーンには、グラフを使用して受信と送信の変更を視覚化する実験的な機能が含まれています。グラフには、現在のブランチ、現在のブランチの上流ブランチ、およびオプションのベースブランチが含まれています。グラフのルートは、これらのブランチの共通の祖先です。

この新しい視覚化を有効にするには、scm.experimental.showHistoryGraph 設定を使用します。ぜひお試しいただき、この視覚化で利用できる機能を継続的に改善および拡張していく上で、ご意見をお聞かせください。

Source control view showing a graph visualization of the incoming and outgoing changes.

ノートブック

テキスト選択で検索

ノートブック検索コントロールに、テキスト選択とセル選択のための「選択範囲内を検索」が追加されました。この動作はデフォルトで有効になっており、コントロール内のボタンで制御できます。選択のコンテキストに基づいて、このボタンを切り替えると、検索クエリが選択された1つまたは複数のセル、またはセル内の行にスコープされます。

コンテキストメニューからテキスト出力をコピーまたは開く

ノートブックでテキスト出力を操作する場合、テキスト出力のコンテキストメニューを使用して、出力値をコピーしたり、新しいエディターで出力を開いたりできるようになりました。この機能により、大きなストリーミング出力を確認しやすくなります。

ターミナル

コピーアンドペーストエスケープシーケンス (OSC 52) のサポート

Operating System Command (OSC) 52 エスケープシーケンスがサポートされるようになりました。これはターミナルで実行されているものなら何でも使用できますが、主なユースケースは tmux のクリップボードアクセスです。

新しいカスタムグリフ

ターミナルは、ブランチ、行番号、およびロックPowerlineシンボルのカスタムグリフをサポートするようになりました。サポートしている他のカスタムグリフと同様に、これらのシンボルはGPUアクセラレーションが有効になっている場合、フォントを設定する必要なく機能します。

Characters 0xe0a0, 0xe0a1 and 0xe0a2 render with their Powerline symbols.

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

The new symbols scale vertically and horizontally when a custom font size, line height or letter spacing is used.

デバッグ

JavaScriptデバッガー

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

JavaScript code snippet that shows an overlay with the value of shadowed variables.

テーマ: Codesong (vscode.devでプレビュー)

言語

TypeScript 5.5

TypeScript 5.5が含まれるようになりました。このメジャーアップデートには、多くの新しい言語機能とツール改善が含まれています。このリリースの詳細については、TypeScript 5.5のブログ記事をご覧ください。

正規表現の構文チェック

TypeScript 5.5のおかげで、JavaScriptおよびTypeScriptの正規表現リテラルの多くの構文エラーを報告するようになりました。これには、閉じられていないグループ、不正な後方参照、または無効なエスケープなどのエラーが含まれます

Editor showing a regex error for an invalid group caused by an extra parenthesis.

Editor showing a regex error for an invalid escape sequence

詳細については、TypeScript 5.5のブログ記事をご覧ください

拡張機能への貢献

GitHub Copilot

コンパクトなインラインチャット

インラインチャットのレンダリングがよりコンパクトになり、提案を読みやすく理解しやすくなりました。また、inlineChat.experimental.textButtons を介して有効にできるボタンテキストのよりナラティブなスタイルも試しています。

Sample of more compact inline chat in the editor.

ターミナルの初期ヒント

インラインチャットを見つけやすくするために、ターミナルに新しいヒントが表示されます。

The terminal will say "Press Ctrl+I to ask GitHub Copilot to do something. Start typing to dismiss"

このヒントは、Copilot拡張機能がインストールされており、まだ操作が行われていない単一のターミナルがある場合にのみ表示されます。メッセージを右クリックすると、メッセージを完全に非表示にできます。メッセージは、ターミナルのインラインチャットを初めて使用した後にも非表示になります。

コードブロックを適用

チャットビューのコードブロックの「エディターに適用」コマンドは、言語モデルを使用して、現在のエディターに変更を適用するための最良のアプローチを決定します。

Chat view showing the Apply In Editor command for a code block in a chat response.

Python

python-environment-toolsを使用したPython環境の検出

グローバルPythonインストールとPython仮想環境の検出速度を大幅に向上させるように設計された新しいツール、python-environment-toolsをご紹介できることを嬉しく思います。このツールはRustを使用して、迅速かつ正確な検出プロセスを保証します。

現在、この新機能をテストしており、既存のサポートと並行して実行して、Python拡張機能での新しい検出パフォーマンスを評価しています。そのため、「Python Locator」という新しいログチャネルが表示され、この新しいツールでの検出時間が表示されます。

この機能強化は、VS CodeでのPythonサポートのパフォーマンスと効率を最適化するための継続的な取り組みの一部です。この機能、継続的な作業の詳細、およびフィードバックを提供するには、python-environment-tools repoにアクセスしてください。

ネイティブREPLでのスマート送信

Python拡張機能は、スマート送信VS CodeネイティブREPLで有効にしました。

以前は、Pythonコードの行にカーソルを置いてShift+Enterを押すと、Python拡張機能は、複数行コマンドの一部であるなどの理由で失敗する場合でも、ネイティブREPLに正確な行の内容を送信していました。

現在、Shift+Enterは、ネストされていないシナリオでは最小限の実行可能コードを送信し、ネストされたシナリオでは最上位のコードブロックを送信します。これにより、ユーザーはShift+Enterをファイル全体で素早く実行して、最小限の労力で最大の実行可能コードを実行できます。

reStructuredTextドックストリングのサポート

Pylanceは、カーソルを合わせたときにreStructuredTextドキュメント文字列(ドックストリング)をレンダリングするサポートを追加しました!

この機能は初期段階にあり、現在フラグの後ろに隠されており、さまざまなSphinx、GoogleDoc、およびEpytextシナリオを効果的に処理できるように取り組んでいます。お試しいただくには、実験的な設定 python.analysis.supportRestructuredText を有効にしてください。

Docstring displayed when hovering over the panel module.

この変更をお試しいただき、問題やフィードバックをPylance GitHubリポジトリに報告してください。

: この設定は実験的なものであり、この新機能を安定化してデフォルトで有効にするため、将来削除される可能性があります。

GitHubプルリクエストとIssue

プルリクエストとIssueの作業、作成、および管理を可能にする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

テスト実行からデバッグセッションを開始する拡張機能は、DebugSessionOptions にその実行を渡せるようになりました。渡されると、デバッグセッションの再起動などのライフサイクルアクションも新しいテスト実行を作成します。

Debug Adapter Protocol

Debug Adapter Protocolにいくつかの注目すべき変更が加えられました。

  • 新しい Scope.presentationHint = returnValue オプションによる戻り値の表記。
  • evaluate リクエストへのソースロケーションの追加。VS Codeはこれを実装し、ホバーとインライン値を評価するときに場所を渡します。

提案されたAPI

言語モデルのツールと関数

ツールまたは関数の呼び出しを可能にするAPI提案を追加しました。APIには2つの主要な部分があります

  1. 拡張機能が「ツール」を登録する機能。ツールは、言語モデルで使用されることを目的とした機能の一部です。たとえば、ファイルのGit履歴を読み取るなどです。

  2. 言語モデルがツールをサポートするメカニズム。たとえば、拡張機能がリクエストを行うときにツールを渡し、言語モデルがツール呼び出しをリクエストし、拡張機能がツール呼び出しの結果を返信するなどです。

提案は vscode.proposed.lmTools.d.ts として見つけることができます。

: APIはまだ活発に開発中であり、変更される可能性があります。また、VS Codeには妥当なデフォルトツールが付属する予定です。

認証 getSessionsgetAccounts になりました

マルチアカウント認証プロバイダーをサポートしていますが、常に欠けていたのは、すべてのセッションを取得し、特定のセッションに対してアクションを実行する機能です。以前は、これを解決しようとする 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)と、出荷するAsynchronous Module Definition(AMD)ローダーの依存関係を削除し始めました。将来の目標は、ECMAScript Modules(ESM)ローディングを使用し、AMDを完全に削除することです。この方向に進むために、AMDローダープラグインの依存関係を削除します。動作に違いは見られず、これまでサポートしてきたすべての翻訳は、Webとデスクトップの両方で引き続きサポートされます。

注目すべき修正

ありがとうございます

最後になりましたが、VS Codeの貢献者の皆様に心から感謝申し上げます

Issue追跡

Issue追跡への貢献

プルリクエスト

vscode への貢献

vscode-css-languageservice への貢献

vscode-extension-samples への貢献

vscode-html-languageservice への貢献

vscode-languageserver-node への貢献

vscode-python-tools-extension-template への貢献

node-jsonc-parser への貢献

  • @Vbbab: ビジターがコールバックを停止できるようにする PR #88