VS Codeのエージェントモードを拡張するには、を試してください!

2022年2月 (バージョン 1.65)

更新 1.65.1: この更新は、これらのセキュリティの問題に対応しています。

更新 1.65.2: この更新は、これらの問題に対応しています。

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


Visual Studio Code 2022年2月リリースへようこそ。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。

ワークベンチ

新しいエディター履歴ナビゲーション

VS Codeのエディター履歴ナビゲーション機能は、戻る進むなどの人気コマンドを駆動します。この機能の改善と機能追加のために、多数の機能リクエストが時間とともに蓄積されました。このマイルストーンで、これらのリクエストのほとんどに対応するために、エディター履歴ナビゲーションはゼロから書き直されました。

エディターグループを認識するナビゲーション

エディター履歴をナビゲートする際、エディターグループが考慮されるようになりました。エディター履歴を前後にナビゲートすると、以前の正確な状態にあったエディターグループのエディターがアクティブになり、フォーカスされます。エディターグループが削除されると、関連するすべての履歴エントリは破棄されます。

以下の短いビデオでは、最初の戻るでカーソルが新しいエディターグループに配置され、2番目の戻るナビゲーションで元のエディターグループに戻ります。

テーマ: GitHub Light

ナビゲーションをエディターグループまたはエディターにスコープ設定する新しい設定

新しい設定workbench.editor.navigationScopeにより、エディター履歴ナビゲーションをアクティブなエディターグループまたはエディターに限定できるようになりました。サポートされている値は次のとおりです。

  • default: エディターナビゲーションは、開いているすべてのエディターグループおよびエディターで機能します。
  • editorGroup: エディターナビゲーションは、アクティブなエディターグループの開いているエディターに限定されます。
  • editor: エディターナビゲーションは、アクティブなエディターに限定されます。

スコープをeditorGroupまたはeditorに設定すると、各エディターグループまたはエディターは独自のナビゲーションスタックを持ち、個別にナビゲートできます。

ノートブックのサポート

どのノートブックでも選択したセル間をナビゲートできるようになりました。テキストエディターでカーソル位置間をナビゲートできるのと同じように、エディター間でナビゲーションが機能します。

テーマ: GitHub Light

編集またはナビゲーションの場所をナビゲートする新しいコマンド

デフォルトでは、エディターナビゲーションの場所は、エディター間をナビゲートするときだけでなく、エディター内でナビゲートするとき (例えば、ノートブックセルを切り替えたり、テキストエディターで選択範囲を変更したりするとき) にも追加されます。記録される場所が多すぎると感じる場合、場所を以下のいずれかに減らす新しいコマンドが追加されました。

  • ナビゲーションの場所 - 例えば、定義へ移動を使用する場合。
  • 編集の場所 - エディターが変更されるたびに。例えば、テキストエディターで入力する場合。

これらのコマンドにお好みのキーバインドを割り当てて、それに応じてナビゲーションを変更できます。

編集場所のコマンド

  • workbench.action.navigateForwardInEditLocations - 編集場所を前に進む。
  • workbench.action.navigateBackInEditLocations - 編集場所を後ろに戻る。
  • workbench.action.navigatePreviousInEditLocations - 編集場所を前に戻る。
  • workbench.action.navigateToLastEditLocation - 最後の編集場所へ移動 (このコマンドは以前から存在)。

ナビゲーション場所のコマンド

  • workbench.action.navigateForwardInNavigationLocations - ナビゲーション場所を前に進む。
  • workbench.action.navigateBackInNavigationLocations - ナビゲーション場所を後ろに戻る。
  • workbench.action.navigatePreviousInNavigationLocations - ナビゲーション場所を前に戻る。
  • workbench.action.navigateToLastNavigationLocation' - 最後のナビゲーション場所へ移動。

キーバインドの割り当てをより強力にするために、関連するコンテキストキーが追加されました。

編集場所のコンテキストキー

  • canNavigateBackInEditLocations - 編集場所を後ろに戻ることが可能かどうか。
  • canNavigateForwardInEditLocations - 編集場所を前に進むことが可能かどうか。
  • canNavigateToLastEditLocation - 最後の編集場所へ移動することが可能かどうか。

ナビゲーション場所のコンテキストキー

  • canNavigateBackInNavigationLocations - ナビゲーション場所を後ろに戻ることが可能かどうか。
  • canNavigateForwardInNavigationLocations - ナビゲーション場所を前に進むことが可能かどうか。
  • canNavigateToLastNavigationLocation - 最後のナビゲーション場所へ移動することが可能かどうか。

新しいレイアウトコントロールオプション

前回のマイルストーンで、タイトルバーに実験的なレイアウトコントロールを導入しました (workbench.experimental.layoutControl.enabledtrueに設定することで有効になります)。このコントロールのアクションは便利ですが、クリックが多すぎるというフィードバックをいただきました。そのため、設定workbench.experimental.layoutControl.typeで誰でも試せるようにいくつかのUIオプションを追加しています。この設定には以下のオプションがあります。

  • menu: メニューを開く単一ボタンの以前の動作 (デフォルト)。
  • toggles: パネル、サイドバー、サイドパネルを切り替える3つのボタンを表示する新しいオプション。
  • both: トグルボタンの後にメニューボタンを表示する新しいオプションで、カスタマイズレイアウトのクイックピックにかなり素早くアクセスできます。

下の画像は、layoutControl.typebothに設定され、3つのトグルボタンとメニューのドロップダウンが表示されていることを示しています。

Layout control with type set to both to show toggle buttons and menu dropdown

ライトハイコントラストテーマ

エディターの可読性を向上させるため、新しいライトハイコントラストテーマが追加されました。

VS Code using Light High Contrast theme

オーディオキュー

今回のリリースで、警告、インライン提案、デバッガーのブレークポイントヒットのためのオーディオキューを含む、新しいオーディオキューが追加されました。サウンドは調整され、個別のaudioCues.*設定を優先して、一般的な設定audioCues.enabledは非推奨になりました。

A screenshot of all available audio cue enablement settings

lineHasWarningを除くすべてのオーディオキューは、スクリーンリーダーユーザー向けにデフォルトで有効になっています (設定値はauto)。

新しいオーディオキューコマンドヘルプ: オーディオキューを一覧表示は、利用可能なすべてのオーディオキューを一覧表示し、リストを移動しながら各オーディオキューを聞くことができ、現在有効になっているキューを確認できます。

Audio cue help command dropdown with the warning and breakpoint audio cues enabled

問題と検索結果のドラッグアンドドロップ

問題、検索、または参照の結果をエディターにドラッグアンドドロップできるようになり、ファイルを開いて結果の位置を表示できるようになりました。これは、新しいエディターグループを開始したり、既存のエディターグループに結果をドロップしたりする場合に便利です。

設定エディターの分割ビュー

設定エディターでは、目次と設定リストを分離するために、調整可能な分割ビューが使用されるようになりました。

自動言語検出の改善

新しい設定workbench.editor.historyBasedLanguageDetectionが有効になっている場合、無題のエディターは、エディターの履歴と現在のワークスペースの内容を考慮に入れた、改良された自動言語検出アルゴリズムを使用します。新しいアルゴリズムは、以前よりもはるかに少ないテキスト入力で検出結果を提供します。

以下は、JavaScript、TypeScript、Markdown、Python、PHP、C++ (さらに多くの言語がサポートされています) を横断してこれを使用する例です。

テーマ: GitHub Light + HC Customizations

言語拡張機能の推奨事項の改善

言語機能拡張の推奨事項は、推奨時にMarketplaceの他の著名な言語拡張機能を考慮に入れるようになりました。例えば、Apache NetBeans Java拡張機能がインストールされている場合、VS CodeはJava Extension Packを推奨しません。

拡張機能ツリーのホバーのキーボードショートカット

拡張機能によって提供されるカスタムツリービューでホバーを表示するには、キーボードショートカットCtrl/Cmd+K, Ctrl/Cmd+Iを使用できます。

エディター

スニペットで囲む

現在の選択範囲をスニペットで囲む新しいコマンドが追加されました。テキストを選択し、コマンドパレットからスニペットで囲むコマンドを呼び出し (⇧⌘P (Windows、Linux Ctrl+Shift+P))、ドロップダウンからスニペットを選択します。

以下の短いビデオでは、選択したメソッドがtry/catchスニペットで囲まれています。

TM_SELECTED_TEXTまたはSELECTION変数を使用する適用可能なスニペットはすべて、スニペットで囲むクイックピックのドロップダウンで利用できます。カスタムユーザーまたはプロジェクトのスニペットも含まれます。

アクセシブルなインレイヒント

インレイヒントは、推論された変数の型のように、ソースコード内に付加情報を示します。スクリーンリーダーユーザー向けに、この機能を支援する新しいコマンドが追加されました。コマンドパレットからインレイヒント付きで行を読み上げるを選択すると、エディターが現在の行をヒントを交えながら読み上げます。

コンテキストに応じたUnicodeハイライト

偽陽性を減らすため、周囲の文字が非ASCIIスクリプトであることを視覚的に示す場合、曖昧なUnicode文字や見えないUnicode文字はハイライトされなくなりました。したがって、信頼されたワークスペースでは、見えない文字、またはASCII文字と混同される可能性のある文字のみがハイライトされます。この例外は、少なくとも1文字がASCII文字と混同されない非ASCII文字の単語に含まれる文字です。

以前はconst stringで複数の誤検出が見られました。

Screenshot of text with many false positives and one true positive

その後、紛らわしい文字のみが強調表示される。

Screenshot of text with only one true positive

ターミナル

複数行貼り付け警告

シェルが複数行をサポートしないターミナルに複数行を貼り付ける際に、デフォルトでダイアログが表示されるようになりました。この警告は、ブラケット貼り付けモードと、Ctrl+Vを直接シェルに渡す場合のPowerShellで表示されます。ダイアログには、この機能を簡単に無効にするための次回から表示しないチェックボックスがあります。

今回のリリースでは、ターミナルリンクの実装が大幅にリファクタリングされました。これにより、機能の保守性が簡素化され、改善されただけでなく、以下の点ももたらされました。

  • リンクのハイライトが再び機能するようになりました。
  • 解決済みリンクのキャッシュにより、特定のリンクが表示されるまでの遅延が減少しました。
  • ワークスペース検索リンクは、検証済みリンクと同じコードで処理されるようになり、一貫性が向上し、行/列の認識が改善されました。
  • いくつかのバグ修正。

前回バージョンで導入された最後のファイルリンクを開くおよび検出されたリンクを開く...コマンドは、フォルダーを除外するようになり、より便利になりました。

ソース管理

差分エディターの管理

このマイルストーンでは、差分エディターの管理に役立つ変更を加えました。コマンドパレットに新しいコマンドGit: すべての差分エディターを閉じるが追加され、開いているすべての差分エディターを閉じることができます。また、変更がstash、コミット、破棄、ステージ、またはアンステージされたときに差分エディターを自動的に閉じる新しい設定git.closeDiffOnOperationも追加されました。

Gitコマンド出力のログ記録

gitコマンドを実行すると、stderrの内容はGit出力ウィンドウにログ記録されます。新しい設定git.commandsToLogが追加され、Git出力ウィンドウstdoutの内容がログ記録されるGitコマンドのリストを指定できます。

デバッグ

遅延変数

変数の値にアクセスすると、副作用があったり、コストがかかる場合があります。VS Codeの汎用デバッガーは、ユーザーがオンデマンドで変数の値を取得するためのボタンを表示できるようになりました。これは、新しい「遅延」変数機能をサポートするデバッグ拡張機能で利用できます。現在、これは組み込みのJavaScriptデバッガーによってプロパティゲッターにのみ実装されていますが、他のデバッガー拡張機能もすぐにこれに追随すると予想しています。

タスク

タスクで使用できる新しいプラットフォーム非依存のuserHome変数が追加されました。

{
  "label": "Test Home",
  "type": "shell",
  "command": "ls ${userHome}"
}

ノートブック

組み込み出力レンダラーの更新

テキスト、画像、HTML、コードレンダラーをVS Codeコアから組み込みの出力レンダラー拡張機能に移動しました。この変更により、VS Codeはこれらの出力タイプでテキストを検索できるようになりました。

以下の短いビデオでは、itemを検索すると、最初はコードセルに3つの結果が表示されますが、セルの出力も含むようにフィルターできます。

ノートブックのセルボタンのスクロール追従

コードセルを下にスクロールすると、実行ボタンとセルツールバーが画面の上部に固定されるようになりました。これにより、長いコードセルで作業しているときのアクセスが向上します。

テーマ: Dracula

言語

TypeScript 4.6

VS CodeにはTypeScript 4.6が搭載されるようになりました。この更新には、多くの新しい言語機能、ツール改善、バグ修正が含まれています。TypeScript 4.6の詳細については、TypeScriptブログを参照してください。

JavaScriptファイルでの構文エラー報告

TypeScript 4.6のおかげで、VS CodeはJavaScriptファイルでいくつかの一般的な構文エラーを報告するようになりました。これには、解析エラー、ブロックスコープ変数の無効な再宣言が含まれます。

Detecting a redeclaration of a const variable in a JavaScript file

以前は、これらのエラーはJavaScriptでセマンティックチェックを有効にした場合にのみ報告されていました。

このエラー報告は、以下の設定で無効にできます。

"javascript.validate.enable": false

JS/TSの設定を言語ごとにさらに構成可能に

JavaScriptとTypeScriptの多くの設定が、言語固有の設定として構成できるようになりました。言語固有の設定は、例えばjavascriptjavascriptreactで異なる設定が必要な場合に便利です。

新しく言語固有で有効になった設定は以下の通りです。

  • javascript.preferences.quoteStyle, typescript.preferences.quoteStyle
  • javascript.preferences.importModuleSpecifier, typescript.preferences.importModuleSpecifier
  • javascript.preferences.importModuleSpecifierEnding, typescript.preferences.importModuleSpecifierEnding
  • javascript.preferences.jsxAttributeCompletionStyle, typescript.preferences.jsxAttributeCompletionStyle
  • javascript.preferences.renameShorthandProperties, typescript.preferences.renameShorthandProperties
  • javascript.preferences.useAliasesForRenames, typescript.preferences.useAliasesForRenames
  • javascript.suggest.enabled, typescript.suggest.enabled
  • javascript.suggest.completeJSDocs, typescript.suggest.completeJSDocs
  • javascript.suggest.jsdoc.generateReturns, typescript.suggest.jsdoc.generateReturns
  • javascript.autoClosingTags, typescript.autoClosingTags

新しいLua構文ハイライト文法

VS Codeには、Luaファイルの構文ハイライトのために、より良く保守された新しいLua文法が搭載されました。新しい文法は活発に保守されており、古い文法に存在していた問題を修正し、新しいLuaトークンをサポートしています。

Web 用 VS Code

ローカルファイルとフォルダーを再度開く

最近開いたローカルファイルとフォルダーのリストは、Web File System Access APIをサポートするブラウザーでvscode.devまたはinsiders.vscode.devにアクセスする際に利用できるようになりました。ローカルファイルを選択するとエディターで開かれ、ローカルフォルダーを選択するとその内容を表示するようにファイルエクスプローラーが更新されます。内容が表示される前に、ブラウザーからローカルファイルアクセスを確認するよう求められる場合があります。

リモートリポジトリ

GitHubリポジトリ

今回のマイルストーンでは、vscode.devおよびgithub.devでGitHubリポジトリを編集する際のマージ競合解決が改善されました。エディターにマージ競合の装飾が表示され、現在の変更を受け入れる取り込まれた変更を受け入れる、または両方の変更を受け入れるのオプションが利用できるようになりました。

また、ソース管理ビューには、マージ競合を含むファイルに対する変更をステージングアクションも追加されました。

さらに、vscode.devおよびgithub.devでGitHubリポジトリ内の特定のフォルダー下のすべての変更を簡単にステージングおよびアンステージングできるようになりました。これを行うには、ソース管理ビューを右クリックしてツリーで表示を選択します。

テーマ: One Monokai

ワークスペース検索とすべての参照を検索は、以前のように部分的な結果をデフォルトで提供するのではなく、リポジトリの完全なコピーをダウンロードしてインデックス化するようになりました。

このインデックス作成機能を構成するためのいくつかの設定があります。

  • remoteHub.indexing.verboseDownloadNotification - ダウンロード通知をポップアップとして表示するか (デフォルト)、ステータスバーに表示するかを制御します。
  • remoteHub.indexing.maxIndexSize - ダウンロードするインデックスのサイズ制限を制御します。この制限を超えると、ダウンロードはキャンセルされ、部分的な結果が提供されます。この設定を空のままにすると、リポジトリをダウンロードせず、常に部分的な結果を使用します。

Azure Repos

このマイルストーンでは、Azure Reposのサポートを特定のAzure DevOps認証プロバイダーから汎用Microsoft認証プロバイダー(Settings Syncで使用)に切り替えました。Azure Repoにアクセスする際に再度ログインを求められますが、保存された変更はすべて保持されます。

拡張機能への貢献

Hex Editorデータインスペクターの改善

以前は、Hex Editor拡張機能は常にデータインスペクターをサイドバーに表示し、Hexエディターが表示されるたびにそれを表示していました。しかし、一部のユーザーはこれを煩わしいと感じ、デバッガー用のメモリインスペクターとの統合が特に中断的なエクスペリエンスを引き起こしていました。現在、データインスペクターは検査されたバイトの右側に表示されます。エディターが狭すぎる場合は、データインスペクターはホバーウィジェット内に表示されます。

Image showing the Data Inspector to the right side of the hex bytes

テーマ: Codesong

これは、hexeditor.inspectorType設定を通じて設定でき、以下の3つの値のいずれかを取ることができます。

  • aside - データインスペクターを横に表示します。
  • hover - エディターの幅に関係なく、ホバー時のみデータインスペクターを表示します。
  • sidebar - データインスペクターを以前のようにサイドバーに表示します。

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues拡張機能の開発は継続されており、プルリクエストやイシューの作業、作成、管理が可能です。ハイライトについては、この拡張機能の0.38.0リリース向け変更ログを確認してください。

プレビュー機能

ターミナルシェル統合

ターミナルにおけるシェル統合は、当初前回のリリースで導入され、今月も多くの改善が施されました。改めて説明すると、この機能はVS Codeが以前はほとんど不明だったターミナル内で何が起こっているかについて、追加の洞察を得ることを可能にします。この機能はまだ実験的と見なされており、terminal.integrated.shellIntegration.enabled設定を通じてオプトインできます。

今回のリリースでの最大の変更点は、シェル統合によって検出されたコマンドが、「ガター」として左側に装飾を表示するようになったことです。コマンド装飾はバッファを視覚的に区切り、シェル統合機能を使用する情報とアクションへのアクセスを提供します。コマンド装飾には、コマンドの終了コードによって決定されるエラー、成功、デフォルトの3種類があります。

A command succeeds and a success decoration is placed to the left of the prompt. A command fails and an error decoration is placed to the left of the prompt. A placeholder decoration is to the left of no-op commands and the current command before it's been executed.

装飾をクリックすると、そのコマンドに特有のアクションがメニューに表示され、現在のところコマンドの再実行出力のコピーが含まれます。

Command decoration context menu showing Re-run Command and Copy Output actions

装飾にカーソルを合わせると、コマンドに関する情報(実行されてからの時間や関連する終了コードなど)が表示されます。

Command decoration hover displaying Show Command Actions option and information that the command executed 3 minutes ago and returned failed exit code 127

terminal.integrated.shellIntegration.decorationsEnabledfalseに設定することで、装飾を無効にできます。個々のアイコンはterminal.integrated.shellIntegration.decorationIcon*設定で構成でき、これらの新しいテーマキーで色を設定できます。

  • terminalCommandDecoration.successBackground
  • terminalCommandDecoration.errorBackground
  • terminalCommandDecoration.defaultBackground

その他の主な変更点は次のとおりです。

  • 有効化設定がterminal.integrated.shellIntegration.enabledに名前変更されました。
  • すべてのサポート対象シェルでシェル統合を有効にするメカニズムがより信頼できるようになりました。
  • リモート接続されたウィンドウ (SSH、WSL、コンテナ) を使用している場合でも、シェル統合が動作するようになりました。
  • 行継続 (例: $PS2) がすべてのサポート対象シェルで動作するようになりました。
  • 「スキップされた」コマンドは特別にマークされるようになりました。例えば、Ctrl+Cを使用した後や、空のコマンドを実行した後などです。
  • 最近のコマンドを実行および最近のディレクトリへ移動コマンドは、セッション間で履歴を保存するようになりました。履歴の保存は、terminal.integrated.shellIntegration.history設定で構成できます。

ESLint

ESLint拡張機能は、ESLintで検証できるセルを含むノートブックドキュメントの予備的なサポートが追加されました。このサポートは、拡張機能のプレリリースバージョンでのみ利用可能です。

拡張機能作成

言語ステータス項目

言語ステータス項目のAPIが確定しました。このAPIは、アクティブなエディターの言語固有の情報を表示します。これはプロジェクトやツールセットのバージョンに関する一般的な情報であるだけでなく、エラーや警告も表示できます。

JSON language status item linking to schema used for validation

このAPIはステータスバーAPIに似ており、vscode.languages.createLanguageStatusItem(...)を介してアクセスできます。言語ステータス項目は、アクティブなエディターが変更されるたびにVS Codeが表示および非表示できるように、ドキュメントセレクターを使用して作成する必要があります。

インレイヒント

インレイヒントプロバイダーAPIが正式に公開されました。これにより、ソースコードに追加情報を埋め込むことができます。下の画像は、TypeScriptが推論された型にインレイヒントを追加した様子を示しています。

TypeScript inferred variable type  shown as inlay hint

このAPIはInlayHintsProviderを中心に構築されています。InlayHintオブジェクトを提供し、いくつかの興味深い機能があります。

  • インレイヒントには、ツールチップとコマンドを含めることができます。
  • ヒントのラベルは複数の部分で構成でき、それぞれの部分にツールチップとコマンドを含めることができます。
  • ラベルの部分には、関連するソース位置を含めることもでき、その部分の定義へ移動などの言語機能を有効にします。

ステータスバーのフォーカス境界線

ステータスバーとステータスバー項目にフォーカス境界線を追加することで、ステータスバーのナビゲーションがより簡単でアクセスしやすくなりました。

テーマ作成者は、2つの新しいテーマカラーを設定することで、境界線の色をカスタマイズできます。

  • statusBar.focusBorder: フォーカスされた際のステータスバー全体の境界線の色。
  • statusBarItem.focusBorder: フォーカスされた際のステータスバー項目の境界線の色。

テストの更新アクションとsortText

TestControllerインターフェースに標準の更新ハンドラーを追加する提案が確定しました。拡張機能がこのプロパティにメソッドを割り当てると、VS Codeはテストエクスプローラービューに「更新」アイコンを表示します。

さらに、TestItem現在ファイル内に特定の場所を持たない項目の並び順を制御するsortText属性を持つことができます。

コメントのタイムスタンプ

Comments APIでは、各Commenttimestampを追加できるようになりました。このタイムスタンプは、CommentsウィジェットとCommentsビューに表示されます。デフォルトでは、タイムスタンプは相対時間(例:「2週間前」)として表示されますが、ユーザー設定comments.useRelativeTimeを使用して正確な時間を表示することもできます。タイムスタンプのホバーは常に正確な時間になります。

vscode-testパッケージの名前が@vscode/test-electronに変更されました

vscode-testパッケージの名前が@vscode/test-electronに変更されました。拡張機能の作成者は、そのパッケージを含んでいる場合、拡張機能のpackage.jsonファイルのdevDependenciesのエントリを更新する必要があります。@vscode/test-electronパッケージは、VS Code拡張機能の統合テストの実行に役立ちます。詳細については、vscode-testリポジトリを参照してください。

更新された codicon

以下の新しいアイコンが、当社のcodiconライブラリに追加されました。

  • arrow-circle-down
  • arrow-circle-left
  • arrow-circle-right
  • arrow-circle-up
  • error-small
  • indent
  • layout-activitybar-left
  • layout-activitybar-right
  • layout-centered
  • layout-menubar
  • layout-panel-center
  • layout-panel-justify
  • layout-panel-left
  • layout-panel-right
  • layout-panel
  • layout-sidebar-left
  • layout-sidebar-right
  • layout-statusbar
  • layout
  • newline
  • record-small
  • target

Preview of updated icons

アイコン貢献ポイントが確定

アイコン貢献ポイントにより、拡張機能はIDとデフォルトアイコンを指定して新しいアイコンを定義できるようになりました。アイコンIDは、拡張機能(またはその拡張機能に依存する他の拡張機能)によって、ThemeIconが使用できる場所ならどこでもnew ThemeIcon("iconId")、Markdown文字列 ($(iconId))、および特定の貢献ポイントのアイコンとして使用できます。

製品アイコンテーマは、アイコンIDを知っていればアイコンを再定義できます。

"contributes": {
  "icons": {
    "distro-ubuntu": {
      "description": "Ubuntu icon",
      "default": {
        "fontPath": "./distroicons.woff",
        "fontCharacter": "\\E001"
      }
    },
    "distro-fedora": {
      "description": "Ubuntu icon",
      "default": {
        "fontPath": "./distroicons.woff",
        "fontCharacter": "\\E002"
      }
    }
  }
}

上記の例では、拡張機能が2つの新しいアイコンID distro-ubuntudistro-fedoraを、デフォルトのアイコン定義とともに定義しています。アイコンは、指定されたフォント文字のアイコンフォントで定義されています。

ファイルアイコンテーマ: ファイル関連付けにおけるフォルダー名のサポート

ファイルアイコンテーマにおいて、folderNamesfolderNamesExpandedfileNamesfileExtensionsの関連付けにフォルダー名を含めることができるようになりました。

  "fileNames": {
    "system/win.ini": "_win_ini_file"
  },

system/win.iniは、関連付けがsystemフォルダー内のwin.iniというファイルを直接照合することを意味します。

  "fileExtensions": {
    "system/ini": "_ini_file"
  },

system/iniは、関連付けがsystemフォルダー内の*.iniというファイルを直接照合することを意味します。

  "folderNames": {
    ".vscode/extensions": "_vscode_folder"
  },

Codespaces を使用して Web 用 VS Code でリモートインストールされた Web 拡張機能を実行する

Codespaces を使用した Web 用 VS Code は、リモートインストールされたWeb 拡張機能を Web 拡張機能ホストで実行することをサポートするようになりました。たとえば、GitHub Codespace に Vim 拡張機能がインストールされている場合 (devcontainer.json ファイルの構成による)、ブラウザーで Codespace を開くと Vim が Web 拡張機能ホストにロードされます。詳細については、拡張機能ホストのドキュメントを参照してください。

注: このような拡張機能によるWebワーカーのロードに関して、現在既知の制限事項があります。詳細については、イシューを参照してください。

デバッガー拡張機能の作成

「重要」出力イベントのサポート

最近、Debug Adapter ProtocolはOutputイベントにimportantカテゴリを追加しました。このカテゴリは、ユーザーが見落とすべきではない、目立つべきイベントをマークします。VS Codeは、importantカテゴリのメッセージに対して通知ポップアップを表示するようになりました。これらは引き続きデバッグコンソールにもログ記録されます。

「遅延」変数のサポート

一部の変数は動的であり、値を取得するためにコードを実行する必要があります。デバッグアダプターは、値の取得に副作用があったり、コストがかかる可能性があるため、それらの完全な値を自動的に取得したくない場合があります。

一部のデバッグアダプターは、この問題を、「コストのかかる変数」をユーザーが明示的に「展開」して値をフェッチする必要があるプレースホルダーオブジェクトとして表現することで対処してきました。VS Codeの組み込みjs-debugはこのアプローチをJS/TSのゲッターに使用しています。

class Person {
  name = 'Danny';
  get email(): string {
    return 'foo@example.bar';
  }
  get address(): Address {
    return new Address();
  }
}
class Address {
  street = 'Main Street';
  city = 'Zurich';
}

以下のスクリーンキャストは、中間オブジェクトが効果的なデータ構造を理解することを困難にしていることを示しています。

このリリースでは、中間オブジェクトをコンパクトな形式で表示し、完全な値を要求するための(...)ボタンを備えるようにVS Codeを改善しました。

デバッグアダプターは、lazyプロパティを持つVariablePresentationHintを追加することで、変数に対してこの新しい表示スタイルを要求できます(DAPの追加を参照)。クライアントがlazyフラグをサポートしていない場合、変数は以前と同じように表示されます。

Language Server Protocol

Language Server Protocolの次のバージョンが、対応するnpmモジュールとともに公開されました。新しいバージョンには以下の変更が含まれています。

  • LSP型からVS Code型への変換、およびその逆の変換が完全に非同期になりました。この変更により、拡張機能ホストをブロックする可能性のある大量のデータストリームの変換が回避されます。これはライブラリにおけるAPIの破壊的変更であることに注意してください(詳細についてはREADME.mdを参照してください)。プロトコル自体の後方互換性には影響しません。
  • ノートブックドキュメントの提案された実装が強化されました。これにより、完全なミドルウェアとプロバイダーのサポートが提供されます。

Debug Adapter Protocol

Debug Adapter Protocolにいくつかの新しいプロパティが追加されました。

  • 新しいブール型プロパティlazyVariablePresentationHintに追加されました。クライアントは、オプションのフラグを使用して、特定のジェスチャーで値をフェッチできるUIで変数を表示できます。
  • 新しいオプションの文字列プロパティdetailCompletionItemに追加されました。この人間が読める文字列により、クライアントは型情報やシンボル情報など、項目に関する追加情報を表示できます。このプロパティはまだVS Codeではサポートされていません。

提案された拡張API

すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。

  1. 試したい提案を見つけて、その名前をpackage.json#enabledApiProposalsに追加します。
  2. 最新のvscode-dtsを使用して、vscode-dts devを実行してください。これにより、対応するd.tsファイルがワークスペースにダウンロードされます。
  3. これで提案に対してプログラミングできます。

提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。

タイムライン項目におけるMarkdownホバー

TimelineProviderによって提供される項目は、ツールチップのコンテンツを提供するために使用されるdetailプロパティでMarkdownをサポートできるようになりました。

ノートブックを認識するドキュメントセレクター

vscode.DocumentSelector型を使用すると、定義へ移動などの言語機能を特定のドキュメントに関連付けることができます。これはUIを駆動し、対応するプロバイダーに結果を要求するかどうかを決定します。拡張機能がノートブックの型も選択できる新しいAPI提案が追加されました。例えば、{ language: 'python', notebookType: 'jupyter-notebook'}は、Jupyterノートブックに埋め込まれたすべてのPythonドキュメントを対象とします。これが現在の提案です。ぜひ試してみて、ご意見をお聞かせください。

カスタム言語IDを持つ出力チャンネル

一部の拡張機能は、独自のテキストドキュメント (読み取り専用) であることを前提に、出力チャンネルでトークンまたは構文のカラーリングやCodeLens機能を定義できます。すべての出力チャンネルが同じ言語IDを共有しているため、これらのカスタマイズが他の出力チャンネルに誤って適用される可能性があります。拡張機能の作成者が言語ごとにカスタマイズを定義できるように、カスタム言語IDを持つ出力チャンネルを作成するという機能リクエストがありました。そこで、このマイルストーンでは、カスタム言語IDを持つ出力チャンネルを作成する提案を導入しました。ぜひお試しいただき、フィードバックをお寄せください。

MarkdownString.baseUri

MarkdownStringの提案されたbaseUriプロパティを使用すると、Markdown内の相対リンクや画像の解決基準となるベースURIを指定できます。このプロパティは、HTMLの<base>要素と非常によく似た動作をします。

baseUri/で終わる場合、それはディレクトリとみなされ、Markdown内の相対パスはそのディレクトリに対する相対パスとして解決されます。

const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/dir/');
// Here 'link' in the rendered Markdown resolves to '/path/to/dir/file.js'

baseUriがファイルの場合、Markdown内の相対パスはそのファイルの親ディレクトリに対する相対パスとして解決されます。

const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/otherFile.js');
// Here 'link' in the rendered Markdown resolves to '/path/to/file.js'

新しいドキュメント

Java GUIアプリケーション

新しいJava GUIアプリケーションのトピックでは、VS CodeでJavaFX、AWT、Swingアプリケーションを開発するためにJava用拡張機能パックを使用する方法を説明しています。

注目すべき修正点

  • 107748 ボイスオーバーが、設定が同期されないために無視されることを読み上げない
  • 123399 EmmetがjsxおよびhtmlファイルでタグAを持つクラスを追加しない。
  • 141680 設定で@tagsを検索するのが遅い
  • 141977 設定エディター: フォルダーアクション項目がkeyupを適切に処理しない
  • 142040 プレリリースをサポートする拡張機能の「別のバージョンをインストール」アクションを改善する。
  • 142462 書き込みロックがクリアされないとファイル書き込みがハングする可能性がある
  • 142641 ts-nodeデバッガーがv1.64で正常に動作しない

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

Web拡張機能

Web拡張機能としてコードを実行する拡張機能を有効にした拡張機能の作成者 (以下のリストは2022年2月1日から2022年2月28日の間)

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-languageserver-nodeへの貢献者

debug-adapter-protocolへの貢献者

language-server-protocolへの貢献者

monaco-editorへのコントリビューション