🚀 VS Codeでで入手しましょう!

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

Update 1.65.1: このアップデートでは、これらのセキュリティ問題に対処しています。

Update 1.65.2: このアップデートでは、これらの問題に対処しています。

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


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

これらのリリースノートをオンラインで読むには、Updatescode.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.enabled は非推奨となり、個別の audioCues.* 設定が推奨されるようになりました。

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

アクセス可能なインレイヒント

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

コンテキストユニコードの強調表示

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

以前は、const 文字列に複数の誤検出が表示されていました。

Screenshot of text with many false positives and one true positive

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

Screenshot of text with only one true positive

ターミナル

複数行貼り付けの警告

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

ターミナルリンクの実装は、このリリースで大規模なリファクタリングが行われました。これにより、機能の保守性が簡素化および改善されましたが、次の機能ももたらされました。

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

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

ソース管理

Diff エディターの管理

このマイルストーンでは、Diff エディターの管理に役立つ変更を加えました。コマンドパレットに、開いているすべての Diff エディターを閉じるために使用できる新しいコマンド Git: すべての Diff エディターを閉じる があります。また、変更がスタッシュ、コミット、破棄、ステージング、またはアンステージングされたときに Diff エディターを自動的に閉じる新しい設定 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.quoteStyletypescript.preferences.quoteStyle
  • javascript.preferences.importModuleSpecifiertypescript.preferences.importModuleSpecifier
  • javascript.preferences.importModuleSpecifierEndingtypescript.preferences.importModuleSpecifierEnding
  • javascript.preferences.jsxAttributeCompletionStyletypescript.preferences.jsxAttributeCompletionStyle
  • javascript.preferences.renameShorthandPropertiestypescript.preferences.renameShorthandProperties
  • javascript.preferences.useAliasesForRenamestypescript.preferences.useAliasesForRenames
  • javascript.suggest.enabledtypescript.suggest.enabled
  • javascript.suggest.completeJSDocstypescript.suggest.completeJSDocs
  • javascript.suggest.jsdoc.generateReturnstypescript.suggest.jsdoc.generateReturns
  • javascript.autoClosingTagstypescript.autoClosingTags

新しい Lua 構文強調表示文法

VS Code には、Lua ファイルの構文強調表示のための、新しく、より適切に保守されている Lua 文法があります。新しい文法は積極的に保守されており、古い文法に存在していた問題を修正し、新しい Lua トークンをサポートしています。

VS Code for the Web

ローカルファイルとフォルダーを再オープン

最近開いたローカルファイルとフォルダーのリストは、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 認証プロバイダーの使用に切り替えました。Azure Repo にアクセスすると、再度ログインするように求められますが、保存された変更はすべて保持されます。

拡張機能への貢献

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

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

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

テーマ: Codesong

これは、次の 3 つの値のいずれかを取ることができる hexeditor.inspectorType 設定を使用して構成できます。

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

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能の作業が継続されています。これにより、プルリクエストと issue の作業、作成、および管理を行うことができます。拡張機能のハイライトについては、拡張機能の 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 を追加できるようになりました。このタイムスタンプは、コメントウィジェットとコメントビューに表示されます。デフォルトでは、タイムスタンプは相対時間(たとえば、「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 を、デフォルトアイコン定義とともに定義しています。アイコンは、指定されたフォント文字のアイコンフォントで定義されています。

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

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

  "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 で VS Code for the Web でリモートでインストールされた Web 拡張機能を実行する

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

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

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

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

最近、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

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

  • 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 アプリケーション のトピックでは、Extension Pack for Java を使用して、VS Code で JavaFX、AWT、および Swing アプリケーションを開発する方法について説明しています。

注目すべき修正

  • 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 日までのものです)

Issue tracking

Issue tracking への貢献

プルリクエスト

vscode への貢献

vscode-css-languageservice への貢献

vscode-languageserver-node への貢献

debug-adapter-protocol への貢献

language-server-protocol への貢献

monaco-editor への貢献