2022年4月 (バージョン 1.67)

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

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

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


Visual Studio Code 2022 年 4 月リリースへようこそ。このバージョンでは多くのアップデートがあり、きっと気に入っていただけると思います。主なハイライトをいくつかご紹介します。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.comUpdates をご覧ください。

リリースパーティーを見る: VS Code チームが新機能について議論する様子をご覧ください。イベントの 録画 は、YouTube チャンネルでご覧いただけます。

ハイライト動画 (ショート): 60 秒しか時間がない場合は、4 月の VS Code リリースハイライト ビデオで新機能を手早く確認してください。

Insiders: 最新機能をいち早く試したいですか? 最新のアップデートが利用可能になり次第試せる、Insiders ビルドをダウンロードできます。

ワークベンチ

エクスプローラーのファイルのネスト化

エクスプローラーが、名前を基に関連ファイルをネストすることをサポートするようになりました。この動作を制御するための設定がいくつかあります。

  • explorer.fileNesting.enabled - ファイルのネスト化を全体的に有効にするかどうかを制御します。グローバルに設定することも、特定のワークスペースに対して設定することもできます。
  • explorer.fileNesting.expand - ネストされたファイルをデフォルトで展開するかどうかを制御します。
  • explorer.fileNesting.patterns - ファイルをどのようにネストするかを制御します。デフォルト構成は、TypeScript および JavaScript プロジェクトのネストインテリジェンスを提供しますが、プロジェクトの構造に合わせて変更することをお勧めします。いくつかの例:

デフォルト構成

.js and .min.js files nested under .ts file, tsconfig.test.json nested under tsconfig.json, package-lock.json nested under package.json

ファイルがディレクトリの名前と一致する場合の index.ts のネスト ("index.ts": "${dirname}.ts")

in directory named SomeFolder, SomeFolder.ts is nested under index.ts

異なるファイルと同じ名前を持ち、セグメントが追加されたファイルのネスト ("*": "${basename}.*.${extname}")

file1.test.myext is nested under file1.myext, file2.spec.other is nested under file2.other

テーマ: GitHub Light High Contrast

ファイルのネスト化は、いくつかのイテレーションで実験的な設定を通じて利用可能でした。現在の動作は、ファイル操作を除いてほとんど変更されていません。実験的な設定 explorer.experimental.fileNesting.operateAsGroup は削除され、ネストが折りたたまれている場合はグループとして扱い、それ以外の場合は単一のエンティティとして扱うように変更されました。これは、ネストされたファイルスタック全体をコピー、切り取り、ドラッグ、または削除する場合は、ネストを折りたたんで単一のエンティティとして操作できることを意味します。ネストされた要素が展開されている場合、選択は通常どおりに動作します。

設定エディターの検索フィルターボタン

設定エディターの検索コントロールに、右側にじょうごボタンが追加されました。ボタンをクリックすると、検索クエリに適用して結果を絞り込むことができるフィルターのリストが表示されます。

テーマ: Light Pink

設定エディターの言語フィルターインジケーター

設定エディターの言語フィルターは、言語フィルターが適用されたときに、どの言語が操作されているかをより明確に示すように、スコープテキストを変更するようになりました。上記の短いビデオは、フィルター処理された設定に Markdown 言語フィルター (@lang:markdown) が適用されている様子を示しています。

参考までに、言語フィルターが適用されている場合、設定の値を変更すると、その言語の設定の値のみが変更されます。 言語固有の設定 は、言語識別子 によって settings.json でスコープ設定されます。

  "[markdown]": {
      "editor.wordBasedSuggestions": "off"
  }

リファクタリング後にファイルを保存

リネームなどのリファクタリングは、多くの場合、複数のファイルを変更し、それらを未保存の変更 (ダーティ) のままにします。外部開発ツールでは通常、これらのファイルを保存する必要があります。このワークフローを簡単にするために、デフォルトで true に設定されている新しい設定 files.refactoring.autoSave が追加されました。これは、リファクタリングの一部であったファイルを自動的に保存するかどうかを制御します。

エディター制限でダーティエディターを除外

新しい設定 workbench.editor.limit.excludeDirty は、構成された制限に対してカウントする場合に、開いているエディターの最大数にダーティエディターを含めるかどうかを制御します。この設定はデフォルトで無効 (false) になっています。

"コミットされていない変更" をタイムラインに戻す

先月 ローカル履歴 機能を紹介した際、Git タイムラインプロバイダーから コミットされていない変更 エントリを削除しました。これは少し冗長に感じられたためです。ただし、一部のユーザーはこのタイムラインエントリに真の価値を見出しており、新しい git.timeline.showUncommitted 設定を適宜構成することで、これを復活させることができます。

オープンに失敗した場合の新しいエディタープレースホルダー

エディターのオープンに失敗した場合、VS Code は通知を表示したり、以前に開いていたエディターを表示したりしなくなりました。代わりに、エラーメッセージと、場合によってはエラーを解決するためのアクションを含む、一般的なプレースホルダーが表示されます。

言語ステータスの改善

言語ステータスアイテムにフォーマッターの競合が表示されるようになりました。これは、言語に対して複数のフォーマッターがインストールされているにもかかわらず、デフォルトのフォーマッターとして構成されているものがない場合に発生します。また、言語ステータスアイテムは、重大なステータスが含まれている場合、より目立つようになります。

さらに、言語ステータスアイテムは、ドキュメントが現在設定されている言語とは異なる言語である疑いがある場合に、言語を切り替えるためのヒントを表示するようになりました。これは、タイトルなしのエディターとノートブックセルにのみ適用され、workbench.editor.languageDetectionHints 設定で構成できます。以下は、Handy Dandy Notebook での実演です。これは、さまざまな言語でのセルの実行をサポートしています。

テーマ: GitHub Light High Contrast

無効または互換性のない拡張機能を表示

拡張機能ビューに、エラー状態の インストール済み 拡張機能リストに無効または互換性のない拡張機能が表示されるようになりました。たとえば、VS Code バージョンが 1.67.0-insider で、VS Code バージョン 1.68.0 を必要とする拡張機能をインストールした場合、互換性のないエラー状態でリストに表示されます。

Incompatible extension details shown in the Extensions view item hover

終了前の確認

新しい設定 window.confirmBeforeClose を構成して、アプリケーションを終了する前に確認ダイアログを表示できます。

キーバインドを使用したときに確認ダイアログを表示するには keyboardOnly を選択するか、マウスを使用して終了する場合でも always を選択できます。

: この設定は完全に新しいものではなく、VS Code for Web でしばらくの間利用可能でした。

comments.openView のデフォルト値

comments.openView の古いデフォルト値は file でした。これにより、コメント付きのファイルが開かれるたびにコメントビューが開いていました。コメントビューをあまりノイズの多いものにしないために、新しいデフォルトは firstFile です。これにより、コメントビューは、セッション中にコメント付きのファイルが最初に開かれたときにのみ開きます。

複数行コメント

裏側では、VS Code はコメント UX が最終決定されてから複数行コメントをサポートしていましたが、複数行コメントは UI に表示されることはありませんでした。複数行コメントを表示および残すことができるようになりました。

新しいウィンドウで URI を処理

VS Code URI にクエリパラメーター windowId=_blank が含まれている場合、VS Code は新しいウィンドウで処理します。例: vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git&windowId=_blank

エディター

括弧のペアの色分けがデフォルトで有効

1.60 リリース で導入された新しい括弧のペアの色分け機能の肯定的なフィードバックを考慮して、括弧のペアの色分けをデフォルトで有効にしました。

Side by side comparison with bracket pair colorization on and off

括弧のペアの色分けは、"editor.bracketPairColorization.enabled"false に設定することで無効にできます。

括弧のペアの色分けは、特定の言語でのみ無効にすることもできます。

"[typescript]": {
  "editor.bracketPairColorization.enabled": false,
},

TextMate グラマーはトークンをアンバランスとしてマーク可能

以前は、TextMate グラマーは、シェルスクリプトの case ステートメントの閉じ括弧のように、特定の括弧を アンバランス としてマークできませんでした。

Old behavior where unbalanced brackets not detected

括弧のペアのマッチングと色分けをより堅牢にするために、TextMate グラマーのコントリビューションは、特定のトークン内の括弧をマッチングしないように表現できるようになりました。拡張機能の package.jsoncontributes セクションでは、提供されるグラマーは、括弧のマッチングにスコープを含めるか除外するために、プロパティ balancedBracketScopes (デフォルトは ["*"]) および unbalancedBracketScopes (デフォルトは []) を使用できます。

"grammars": [{
    "language": "shellscript",
    "scopeName": "source.shell",
    "path": "./syntaxes/shell-unix-bash.tmLanguage.json",
    "balancedBracketScopes": [ "*" ],
    "unbalancedBracketScopes": [ "meta.scope.case-pattern.shell" ]
}],

この機能を使用すると、シェルスクリプトのグラマーは、case ステートメントの ) をマッチングしないように指示できるようになりました。

New behavior correctly skipping a bracket that isn't matched

新しい括弧マッチングアルゴリズム

括弧のマッチングで、括弧の色分けと同じ データ構造 が使用されるようになりました。これにより、精度とパフォーマンスの両方が向上します。

古い括弧マッチングの動作 (色とハイライト装飾が一致しないことに注意してください)

Old behavior with incorrect bracket matching

新しい括弧マッチングの動作

New behavior with correct bracket matching

括弧ガイドの改善

水平括弧ガイドが、折り返し行を適切にサポートするようになりました。また、単一行にまたがる括弧ペアには、独自の水平括弧ガイドが表示されます。

Horizontal bracket guides displayed for wrapped lines

水平括弧ガイドはデフォルトで無効になっており、"editor.guides.bracketPairsHorizontal": true で有効にできます。

このリリースでは、"editor.guides.highlightActiveIndentation" が値 "always" を受け入れるようになりました。always に設定すると、アクティブな括弧ペアが既に存在する場合でも、インデントガイドが強調表示されます。

インレイヒントの切り替え

インレイヒントは、ソースコード内に直接追加情報を表示する優れた方法です。ただし、実際のソースコードだけを見たい場合もあります。インレイヒントをすばやく非表示にするために、editor.inlayHints.enabled 設定が変更されました。onoff に加えて、値 onUnlessPressedoffUnlessPressed もあります。on/offUnlessPressed 値は、Ctrl+Alt が押されている間、インレイヒントを非表示または表示にします。

エディター › インレイヒント: 有効

  • on - インレイヒントが有効になっています。
  • off - インレイヒントが無効になっています。
  • onUnlessPressed - インレイヒントは表示され、Ctrl+Alt で非表示になります。
  • offUnlessPressed - インレイヒントは非表示になり、Ctrl+Alt で表示されます。

インライン提案の改善

先月、👻 ゴーストテキスト (薄い色) をクイックサジェストに使用する機能を追加しました。リマインダー: editor.quickSuggestions 設定に inline を使用する必要があります。この領域でいくつかの改良を行いました。特に、トリガー文字と TypeScript の「引数付きの関数を補完する」がサポートされるようになりました。

. などのトリガー文字を入力するときに IntelliSense を無効にするには、"editor.suggestOnTriggerCharacters": false を設定します。TypeScript 関数呼び出しの補完を有効にするには、"typescript.suggest.completeFunctionCalls": true を使用します。

エディターへのテキストのドラッグ & ドロップ

他のアプリケーションからテキストエディターにテキストをドラッグ & ドロップできるようになりました。たとえば macOS では、絵文字パネルからテキストエディターに絵文字をドロップできます。

ドラッグ中、点線のカーソルはテキストが挿入される場所を示します。

ターミナル

検索結果数

ターミナルで検索する場合、検索結果数と現在選択されている一致インデックスが検索コントロールに表示されるようになりました。

Text is searched for in the terminal and the Find control is labeled match 12 of 14 to indicate that match 12 is currently selected

ソース管理

ソース管理リポジトリビュー

このマイルストーンでは、ソース管理リポジトリ ビューに表示されるリポジトリのデフォルトのソート順序を制御する新しい設定 scm.repositories.sortOrder を導入しました。リポジトリは、検出された順序、名前、およびフルパスでソートできます。ソート順序の変更は、ソース管理リポジトリ ビューの ... ビューとその他のアクション メニューと、ソース管理 ビューの ... > 表示とソート > リポジトリ メニューを使用して行うことができます。

以下の短いビデオは、SCM > リポジトリ: ソート順序 設定がデフォルトで 検出時間 (リポジトリが選択された時間) になっており、ソース管理ビューでソート順序を変更することもできることを示しています。

エディター装飾の改善

前回のマイルストーンでは、変更された行デコレーターのパターンを採用することで、追加/変更された行のエディターデコレーターのアクセシビリティを改善しました。このマイルストーンでは、エディターデコレーターのパターンを切り替えることができる新しい設定 scm.diffDecorationsGutterPattern を追加しました。

設定は、変更された行の装飾にはパターンを使用しますが、追加された行にはパターンを使用しないようにデフォルト設定されています。

"scm.diffDecorationsGutterPattern": {
    "added": false,
    "modified": true
}

パフォーマンスの向上

git.untrackedChanges 設定を hidden に設定しているユーザーは、大規模なリポジトリを操作する際にパフォーマンスが向上します。これは、git status を呼び出すときに -uno パラメーターを渡すことで実現されます。

拡張されたリモートソースプロバイダー API

Git 拡張機能 API により、リモートソースプロバイダー を登録または表示する拡張機能が、リモートソースに関するより豊富な情報を提供できるようになりました。

リモートソースプロバイダーは、個々のリモートソースの説明とアイコンを設定できるようになりました。さらに、プロバイダーはオプションで 最近使用した リモートソースを指定できます。これらは、簡単にアクセスできるようにピッカーの最上位に表示され、タイムスタンプが提供されている場合はタイムスタンプでソートされます。

拡張された API は、組み込みの GitHub 拡張機能だけでなく、GitHub Repositories および Azure Repos 拡張機能でも採用されています (github.dev および vscode.dev)。

SSH を使用した GitHub からのクローン

新しい設定 github.gitProtocol を使用すると、GitHub からリポジトリをクローンするときのデフォルトプロトコルを変更できます。値はデフォルトで https ですが、ssh に変更できます。

デバッグ

遅延変数を自動展開

数か月前、デバッガーの変数ビューで [展開] ボタンをクリックして「遅延」変数を展開するサポートを追加しました。新しい設定 debug.autoExpandLazyVariables は、クリックなしで遅延変数を自動的に展開します。

遅延変数の新しいボタン

テキストリンクボタンを「目」の codicon を使用した実際のボタンに更新しました。「目」の codicon も、より目に見えるように更新されました。

A button to expand a lazy variable

Shift キーを押しながらクリックしてブレークポイントを無効にする

ブレークポイント (または条件付きブレークポイント、またはログポイント) を Shift+クリック して無効にしたり、再度有効にしたりできるようになりました。

言語

VS Code のエクスプローラーから Markdown エディターにファイルをドラッグ & ドロップすることで、Markdown リンクをすばやく作成できるようになりました。ファイルを Markdown エディター上にドラッグ中に Shift キーを押したままにすると、エディターにドロップしてファイルへのリンクを作成できます。

ファイルが画像のように見える場合、VS Code は自動的に Markdown 画像を挿入します。それ以外の場合は、通常の Markdown リンクが追加されます。

これは、Web ブラウザーから画像をドラッグ & ドロップするなど、他のアプリケーションから一部のタイプのファイルをドラッグする場合にも機能します。

このドロップ動作を無効にするには、"markdown.editor.drop.enabled": false を設定します。

Markdown: ヘッダーへのすべての参照を検索

VS Code は、Markdown ファイルでヘッダーの すべての参照を検索 を実行することをサポートするようになりました。これにより、現在のワークスペース内で特定のヘッダーが使用されているすべての場所 (他の Markdown ファイルからのリンクを含む) を確認できます。

開始するには、カーソルをヘッダー自体またはヘッダーへのリンクのフラグメント部分 (たとえば、[リンクテキスト](#_some-header) または [リンクテキスト](/path/to/file#some-header)#some-header) に置き、すべての参照を検索 を実行します。

Finding all references to a Markdown header

これにより、参照ビューにすべての参照が表示されます。別のビューを好む場合は、参照のプレビュー コマンドまたは 参照へ移動 コマンドを使用することもできます。

VS Code は、現在のファイル内の 参照リンク へのすべての参照の検索もサポートしています。これは、以下でサポートされています。

  • [テキスト][ref]ref
  • ショートハンドリンク [ref]ref
  • リンク定義 [ref]: http://example.comref

Finding all places a Markdown link reference is used

Markdown: ファイルへのすべての参照を検索

現在のワークスペース内の特定の Markdown ファイルへのすべての参照を検索することもできるようになりました。これもファイル間のリンクを含みます。

これは、いくつかの方法でトリガーできます。

  • 現在の Markdown ファイルへの参照を検索するには、Markdown: ファイル参照を検索 コマンドを使用します。
  • エクスプローラーで Markdown ファイルへの参照を検索するには、ファイルを右クリックして ファイル参照を検索 コマンドを実行します。
  • [テキスト](/link/to/file.md) など、Markdown ファイルへのリンクのファイル部分で すべての参照を検索 を実行します。

これにより、特定のファイルが参照されているすべての場所 (そのファイル内のヘッダーへの参照を含む) がリストされます。

Markdown: URL へのすべての参照を検索

最後に、現在のワークスペースで特定の URL が使用されているすべての場所の検索もサポートしています。

Finding all places where a URL is used in Markdown files

Markdown: ヘッダーの名前変更

Markdown ファイルでヘッダーを変更して、誤ってそのヘッダーへのすべてのリンクを壊してしまったことに気付いたことはありませんか? それが、Markdown の新しい名前変更サポートが役立つ場所です。

開始するには、カーソルをヘッダーに置き、F2 キーを押して名前変更を開始します。ヘッダーの新しいテキストを入力し、Enter キーを押して確定します。これにより、現在のヘッダーと、現在のワークスペース内の既知のすべてのリンクが更新されます。

ヘッダー自体またはヘッダーへのリンクのヘッダーコンポーネントで、名前変更をトリガーできます。たとえば、[リンクテキスト](#_some-header) または [リンクテキスト](/path/to/file#some-header)some-header

Markdown で参照リンクの名前を変更することもできます。これにより、現在の Markdown ファイル内のすべての参照リンクが更新されます。

Renaming a Markdown link reference using F2

Markdown: ファイルの名前変更

新しい Markdown の名前変更サポートを締めくくりとして、Markdown リンクのファイルパスで F2 キーを使用して、ディスク上のファイルの名前を変更し、それへのすべての Markdown 参照を更新できるようになりました。

Renaming a file by pressing F2 on the file path in a link

現在、ファイルの名前変更は、テキストエディター内のファイルへのリンクで F2 キーを使用する場合にのみサポートされています。今後のイテレーションでは、エクスプローラーで名前変更がトリガーされたときにリンクを更新するサポートも計画しています。

JSON

新しい設定 json.validate.enable を使用すると、JSON 検証をオフにできます。

VS Code for the Web

リモートリポジトリピッカーを開く

VS Code for the Web は、リモートリポジトリを開く ピッカーを使用すると、window.openFoldersInNewWindow 設定を尊重するようになりました。これにより、ピッカーの動作が他のバージョンの VS Code と一致し、新しいウィンドウで開く クイックピックアイテムボタンが置き換えられます。

拡張機能への貢献

Java

インレイヒント

Extension Pack for Java に含まれる Java 言語サービスが、メソッドシグネチャのパラメーター名を表示する インレイヒント をサポートするようになりました。

Java パラメーター名インレイヒントには、3 つのモードがあります。

  • literals - リテラル引数のみにパラメーター名ヒントを有効にします (デフォルト)。
  • all - リテラル引数と非リテラル引数の両方にパラメーター名ヒントを有効にします。
  • none - パラメーター名ヒントを無効にします。

遅延変数解決

Debugger for Java 拡張機能が、「遅延」変数 のサポートをサポートするようになりました。この機能を使用すると、高価な変数の操作を、デバッガー UI を明示的に展開して値を確認するまで延期できます。

Jupyter

Jupyter PowerToys 拡張機能

Jupyter ノートブックの操作に関する実験的な機能を提供する Jupyter PowerToys 拡張機能の発表に興奮しています。最初のリリースでは、次の機能をプロトタイプ化しました。

  • カーネル管理パネル
  • コンテキストヘルプ
  • 実行グループ化

これらの機能を試して、ご意見をお聞かせください。いつかサポートされている機能に磨きをかけられるように!

詳細については、vscode-jupyter-powertoys リポジトリの README を参照してください。

Web 拡張機能

Jupyter 拡張機能を、vscode.dev で使用するための Web 拡張機能としてインストールできるようになりました。機能は現在制限されており、https を必要としない Jupyter サーバーで実行されるノートブック (.ipynb ファイル) のみがサポートされています。

機能を試してみたい場合は、ローカルマシンから Jupyter を起動します。

jupyter --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net

そして、コマンド Jupyter: 接続用の Jupyter サーバーを指定 を使用して接続します。

今後のリリースでは、ブラウザーで実行する場合に、より多くの機能を有効にする予定です。以下を含みます。

  • 'https' ベースのサーバー
  • IntelliSense
  • データ表示
  • 変数表示
  • インタラクティブウィンドウ
  • IPyWidgets
  • プロット表示
  • エクスポート

Jupyter カーネルの処理

Jupyter カーネルの処理に多くのアップデートが行われました。

  • カーネルがクラッシュしたときに、より明確にするために、拡張機能はセル出力にこの情報を表示するようになりました。
  • 実行中に特定の既知のエラーが検出された場合、セル出力にトラブルシューティングガイダンスが表示されるようになりました。
  • カーネル実行の問題の解決は、トリッキーで時間がかかるプロセスになる可能性があります。問題解決を迅速に進めるのに役立つことを願って、wiki に トラブルシューティングセクション をまとめました。また、GitHub Discussions フォーラム は、ヘルプを得るための優れたリソースになります。

Python

言語サーバーの変更時にリロードなし

Python 拡張機能が、python.languageServer 設定の値を更新し、VS Code をリロードせずに言語サーバーを自動的に再起動することをサポートするようになりました。

Black Formatter 拡張機能

black フォーマッターを使用して Python のフォーマットサポートを提供する Black Formatter 拡張機能が登場しました。拡張機能のプレリリースバージョンをインストールできます。

isort を使用したインポート整理

isort ライブラリを使用してインポート整理を提供する、新しい isort 拡張機能。拡張機能のプレリリースバージョンが利用可能です。

リモート開発

Remote Development 拡張機能 の作業が続けられています。これにより、コンテナー、リモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。

新しい拡張機能の機能とバグ修正については、Remote Development リリースノート を参照してください。

GitHub Pull Requests and Issues

プルリクエストとイシューの作成、および管理を可能にする GitHub Pull Requests and Issues 拡張機能の作業が続けられています。このリリースのハイライトは次のとおりです。

  • 複数行コメント
  • ツリーでのコミット変更の表示

その他のハイライトについては、拡張機能の 0.42.0 リリースの変更ログ を確認してください。

プレビュー機能

設定プロファイル

このマイルストーンでは、設定、拡張機能、および UI カスタマイズのコレクションである 設定プロファイル を導入しました。VS Code をカスタマイズした場合、カスタマイズを設定プロファイルファイル (mysetup.code-profile) にエクスポートしてコンピューターに保存し、他のユーザーと共有できるようになりました。

次の短いビデオは、VS Code からの設定プロファイルのエクスポートを示しています。

設定プロファイルファイルをインポートして、カスタマイズを復元することもできます。

以下は、VS Code への設定プロファイルのインポートを示しています。

設定プロファイルファイルをクラウドでホストしたり (たとえば、パブリック GitHub gist として保存したり)、URL を他のユーザーと共有したりできます。URL を指定することで、設定プロファイルファイルをインポートできます。

注: 現時点では、次の UI カスタマイズのみが設定プロファイルに含まれています。今後さらに追加される予定です。

  • ステータスバーアイテムの表示
  • アクティビティバー、ボトムパネル、サイドパネルのアイテムの表示と順序
  • ビューの表示、場所、および順序

TypeScript 4.7 のサポート

このアップデートには、今後の TypeScript 4.7 リリースのサポートが含まれています。TypeScript チームが現在取り組んでいる内容の詳細については、TypeScript 4.7 イテレーション計画 を参照してください。いくつかのハイライト:

  • 新しい ソース定義へ移動 コマンドを使用して、ライブラリ関数の JavaScript 実装に直接ジャンプします。この機能の詳細とフィードバックの共有については、TypeScript issue #49003 を参照してください。
  • オブジェクトメンバーとしてメソッドを補完するためのスニペット。
  • グループ対応のインポートの整理.

TypeScript 4.7 ナイトリービルドの使用を開始するには、TypeScript Nightly 拡張機能をインストールします。

拡張機能の作成

タブ API

タブ API の読み取り専用側(タブを閉じる機能もサポートされています)が完成し、最も多く投票された課題の一つである microsoft/vscode#15178 が完了しました。これにより、グループ数、開いているタブ、アクティブなタブ、タブが表すエディターの種類などの情報が公開されます。詳細については、vscode.d.ts ファイル内の window.tabGroups を API のエントリポイントとして参照してください。

ノートブックの変更および保存イベント

2 つのノートブック関連イベントが完成しました。

  • vscode.workspace.onDidSaveNotebookDocument - ノートブックが保存されるたびに発生するイベント。
  • vscode.workspace.onDidChangeNotebookDocument - ノートブックが変更されるたびに発生するイベント。これには、セルの追加や削除などの構造的な変更だけでなく、出力やメタデータの変更などのセルの変更も含まれます。

非再帰的なワークスペースファイルウォッチャーのサポート

以前のマイルストーンでは、発表したように、createFileSystemWatcher API を使用して、フォルダーが開いているワークスペース内になければ、ディスク上の任意のフォルダーを監視できます。この制限が緩和され、開いているワークスペース内であっても、任意の場所で非再帰的なファイルウォッチャーを使用できるようになりました。非再帰的なウォッチャーの利点は、除外設定(files.watcherExclude)が適用されないため、ファイルウォッチャーがサブスクライブしたパスに対してのみイベントを発行することを保証できることです。

拡張機能向けのカスタム除外ルールを備えた再帰的なウォッチャーの完全サポートに取り組んでいますので、今後の情報にご期待ください!

UX ガイドライン

拡張機能作成者向けの UX ガイドライン が改訂され、独自の目次が追加されました。ここでは、さまざまな VS Code ユーザーインターフェース要素を使用する際のベストプラクティスを見つけることができます。特定のトピックでは、拡張機能の UI を作成する際に推奨される「行うべきこと」と「避けるべきこと」について説明し、VS Code にシームレスに統合できるようにしています。

Command Palette UX Guidelines on code.visualstudio.com

拡張機能テストの実行

以前は、VS Code はテスト実行が完了するとすぐに拡張機能ホストプロセスを終了していました。拡張機能テストの実行時、VS Code は最初に通常の deactivate フローを実行し、その後でのみ終了するようになりました。これにより、プロセスを生成する拡張機能は、より適切に後処理を実行できます。

カスタムツリーへのファイルのドロップ

最近完成したツリーのドラッグアンドドロップ API を基に、OS からのファイルを text/uri-list MIME タイプを使用して拡張機能ツリービューにドロップするための基本的なサポートが追加されました。

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

supportSuspendDebuggee および supportTerminateDebuggee の UI

disconnect リクエストには、クライアントがデバッグを停止したときにデバッギーに何が起こるかを制御できるようにする 2 つの追加オプションがあります。

  • suspendDebuggee は、デバッグ停止後にデバッギーを中断状態のままにするかどうかを示します。
  • terminateDebuggee は、デバッガーが切断されたときにデバッギーを終了するかどうかを示します。

デバッグアダプターは、機能 supportSuspendDebuggee および supportTerminateDebuggee を使用して、これらのオプションをサポートしていることを通知できます。サポートされている場合、デバッグツールバーの停止ボタンの横にドロップダウンが表示され、追加の切断コマンドが表示されます。

たとえば、「launch」タイプのデバッグセッションでは、両方の機能をサポートするデバッグアダプターの場合、デフォルトのツールバーボタンは通常の 停止 ボタンになりますが、ドロップダウンには 切断 (terminateDebuggee: false) および 切断して中断 (terminateDebuggee: false, suspendDebuggee: true) が含まれます。

A dropdown with extra disconnection commands

Language Server Protocol

ノートブックとプル診断のサポートは、提案状態から移行され、3.17 リリースで出荷できるようになりました。対応するクライアントおよびサーバーライブラリの新しいバージョンが npm に公開されています。

提案された API

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

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

提案 API を使用する拡張機能を公開することはできません。次期リリースで重大な変更が発生する可能性があり、既存の拡張機能を破壊することは決して望ましくありません。

エディターへのドロップ

提案されている テキストエディタードロップ API を使用すると、拡張機能はテキストエディターへのドロップを処理できます。これらのドロップイベントは、VS Code 内(VS Code のエクスプローラーからテキストエディターへのファイルのドラッグなど)から発生することも、オペレーティングシステムから VS Code へのファイルのドロップによって生成することもできます。

今回のイテレーションでは、この API をプロバイダーベースのモデルに切り替えました。また、この API の使用方法を示す 新しい拡張機能サンプル を作成しました。

ビューのバッジ

ビューにバッジを追加する ための新しい提案が試せるようになりました。VS Code コアによって提供されるビューでバッジが機能するのと同様に、拡張機能はこの API 提案を使用して、ビューに数値バッジを追加できます。

エンジニアリング

Electron スモークテスト用の Playwright

私たちは長い間、ウェブベースのスモークテストに Playwright を使用してきました。しかし、Electron ベースのスモークテストは、依然として独自のカスタムソリューションに依存していました。Playwright の Electron サポート により、ウェブベースのスモークテストコードのほとんどを再利用し、Electron スモークテストにも使用できるようになりました。トレースビューアー を使用して、失敗したスモークテストを事後分析で診断できるようになったことを嬉しく思います。

拡張機能の新しいローカライズパイプライン

VS Code は、言語パックをインストールすることで有効にできる多くの 表示言語 をサポートしています。これらは、VS Code 自体と VS Code に組み込まれた拡張機能をローカライズするのに最適です。今回のイテレーションでは、チームが所有する組み込みではない拡張機能をローカライズするための標準化作業を開始しました。この取り組みの成果は、共通の依存関係拡張機能である Remote Repositories が最初に取り組み始めた拡張機能である GitHub Repositories および Azure Repos 拡張機能で確認できます。

次回のイテレーションでは、この標準化作業を継続し、より多くの拡張機能をオンボードする予定です。Python 拡張機能が現在進行中であり、GitHub Repositories と Azure Repos がすぐに続きます。チームが所有するすべての拡張機能がローカライズされ、将来作成される新しい拡張機能が簡単にオンボードできるようになり、英語を母語としないユーザーも VS Code で素晴らしい体験ができるようにしたいと考えています。

ドキュメント

VS Code の Rust

VS Code での Rust プログラミング言語 のサポートについて説明する新しいトピック「VS Code の Rust」が公開されました。rust-analyzer 拡張機能を使用します。rust-analyzer 拡張機能には、コード補完、linting、リファクタリング、デバッグなど、豊富な言語機能が含まれています。

rust-analyzer extension for Visual Studio Code details pane

注目すべき修正

  • 114844 クラッシュダイアログから以前のセッションからエディターを復元するのをスキップできるようにする
  • 127936 起動時にファイルの言語固有の設定として files.encoding を設定できるようにする
  • 138461 React ファイルの [ ] ペア内の Emmet オートコンプリートが間違っている
  • 139392 最近使用したプロジェクトのクリアの確認
  • 139950 ブレークポイントにヒットした場合、カレット(カーソル)をその行に移動する必要がある
  • 145265 Windows のターミナルが cmd /C を使用しており、渡された引数が破損する
  • 146406 ターミナルの Powerline シンボルの色が間違っている
  • 146977 macOS の Info.plist でフォルダーサポートを宣言する
  • 147104 GitHub へのログインを完了できない

ありがとうございました

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

ウェブ拡張機能

コードを ウェブ拡張機能 として実行できるようにした拡張機能の作成者(以下のリストは 2022 年 3 月 28 日から 2022 年 5 月 1 日の間です)

Issue tracking

Issue tracking への貢献

プルリクエスト

vscode への貢献

vscode-css-languageservice への貢献

vscode-generator-code への貢献

vscode-js-debug への貢献

  • @timvahlbrock
    • feat: sourcemap のロード時に pathMapping を適用する PR #1241
    • feat: ホバー評価のタイムアウトを構成可能にする PR #1243

vscode-pull-request-github への貢献

  • @hoontae24: Github Enterprise URL のコピーされたパーマリンクをサポートする PR #3460

debug-adapter-protocol への貢献

language-server-protocol への貢献

  • @KamasamaK
    • workspace.inlineValue を機能に追加する PR #1440
    • いくつかのリンク可能な型を追加する PR #1441
    • 種類に FoldingRangeKind を使用する PR #1450

monaco-editor への貢献