に参加して、VS Code の AI 支援開発について学びましょう。

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更新 にアクセスしてください。

Workbench

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

VS Code のエディター履歴ナビゲーション機能は、Go BackGo Forward などの人気のあるコマンドを駆動します。この機能の改善と機能追加のために、長年にわたって多くの機能要求が蓄積されてきました。このマイルストーンで、エディター履歴ナビゲーションは、これらの要求のほとんどに対処するためにゼロから書き直されました。

エディターグループ対応のナビゲーション

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

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

テーマ: GitHub Light

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

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

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

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

ノートブックのサポート

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

テーマ: GitHub Light

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

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

  • ナビゲーション位置 - 例えば、Go to Definition を使用する場合。
  • 編集位置 - エディターが変更されるたび。例えば、テキストエディターで入力する場合。

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

編集位置のコマンド

  • 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

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

言語機能拡張の推奨事項は、推奨時にマーケットプレイスの他の主要な言語拡張機能を考慮するようになりました。たとえば、Apache NetBeans Java 拡張機能がインストールされている場合、VS Code は Java Extension Pack を推奨しません。

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

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

Editor

スニペットで囲む

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

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

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

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

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

コンテキスト Unicode 強調表示

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

以前は、const 文字列に複数の誤検出が表示されることがありました。

Screenshot of text with many false positives and one true positive

その後、紛らわしい文字のみが強調表示されるようになりました。

Screenshot of text with only one true positive

ターミナル

複数行ペースト警告

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

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

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

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

ソース管理

差分エディター管理

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

Git コマンド出力ログ

git コマンドを実行すると、stderr の内容がGit 出力ウィンドウに記録されます。新しい設定 git.commandsToLog を使用すると、stdout の内容がGit 出力ウィンドウに記録される 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

ローカルファイルとフォルダを再開する

ウェブファイルシステムアクセス 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 認証プロバイダー (設定同期で使用されているもの) を使用する方式に切り替えました。Azure Repo にアクセスする際に再度ログインを求められますが、保存されているすべての変更は維持されます。

拡張機能への貢献

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

以前は、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

プルリクエストと issue の作業、作成、管理を可能にする 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 がアクティブなエディターが変更されるたびにそれを表示および非表示にできるようにします。

インレイヒント

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

TypeScript inferred variable type  shown as inlay hint

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

  • インレイヒントにはツールチップとコマンドを含めることができます。
  • ヒントのラベルは複数の部分で構成でき、それぞれにツールチップとコマンドを含めることができます。
  • ラベル部分には、Go To Definition などの言語機能をこの部分で有効にするための関連するソースロケーションも指定できます。

ステータスバーのフォーカスボーダー

ステータスバーとステータスバーアイテムにフォーカスボーダーを追加することで、ステータスバーのナビゲーションをより簡単かつアクセスしやすくしました。

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

  • statusBar.focusBorder: フォーカス時のステータスバー全体のボーダーカラー。
  • statusBarItem.focusBorder: フォーカス時のステータスバーアイテムのボーダーカラー。

テストのリフレッシュアクションと sortText

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

さらに、TestItemファイル内の特定の場所にないアイテムのソート順を制御する sortText 属性を持つことができるようになりました。

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

コメント API では、各 Commenttimestamp を追加できるようになりました。このタイムスタンプは、コメントウィジェットとコメントビューに表示されます。デフォルトでは、タイムスタンプは相対時間(例: 「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
  • 改行
  • レコード-小
  • 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"
      }
    }
  }
}

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

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

ファイルアイコンテーマでは、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 拡張機能ホストにロードされます。詳細については、拡張機能ホストのドキュメントを参照してください。

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

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

"重要"な出力イベントのサポート

最近、デバッグアダプタプロトコルでは 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

提案されている MarkdownStringbaseUri プロパティを使用すると、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 v1.64 で ts-node デバッガーが正常に動作しない

ありがとうございます

最後に、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へのコントリビューション

© . This site is unofficial and not affiliated with Microsoft.