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

2020年5月 (バージョン 1.46)

バージョン1.46.1へのアップデート:このアップデートでは、これらの問題が解決されています。

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


Visual Studio Code 2020年5月リリースへようこそ。

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

アクセシビリティ

このマイルストーンでは、コミュニティから再び貴重なフィードバックをいただき、多くのアクセシビリティの問題を特定し、対処することができました。

  • ステータスバーがキーボードナビゲーションをサポートするようになりました。次のパートにフォーカスF6)でステータスバーにフォーカスが当たっている場合、矢印キーでのナビゲーションでステータスバーのエントリ間を移動できます。
  • キーボードを使って選択を開始および終了しやすくするために、4つの新しいコマンドが追加されました。
    • 選択アンカーを設定⌘K ⌘B(Windows、Linux Ctrl+K Ctrl+B
    • アンカーからカーソルまで選択⌘K ⌘K(Windows、Linux Ctrl+K Ctrl+K
    • 選択アンカーをキャンセルEscape
    • 選択アンカーへ移動
  • アクティビティバーのエントリにtabロールが追加され、適切なaria-expanded状態が設定されるようになりました。
  • エディターのAriaラベルが、pinnedpreviewreadonlyといったエディターの状態を適切に伝えるようになりました。

ワークベンチ

柔軟なレイアウト

これまでいくつかのイテレーションで、レイアウトをより柔軟にするための進捗をお知らせしてきました。今回のリリースで、これらの機能は一般的に利用できるようになりました。以下にこれらの機能の概要を示します。

サイドバーとパネル間のビューの移動

サイドバーのビューをパネルに配置したい、あるいはその逆をしたいと思うかもしれません。これを行うために、ビューのヘッダーまたはアイコンやタイトルでグループ全体を現在の場所からドラッグし、目的の場所に移動できるようになりました。キーボードからは、ビュー:ビューを移動workbench.action.moveView)とビュー:フォーカスされたビューを移動workbench.action.moveFocusedView)コマンドを使用できます。

以下は、検索をパネルにドラッグし、問題をサイドバーにドラッグするデモンストレーションです。

Moving Views Between Side Bar and Panel

検索をパネルに、問題をアクティビティバーにドラッグ

テーマ: GitHub Light

以前は、検索ビューをサイドバーからパネルに移動するための設定がありましたが、ドラッグアンドドロップで代替できるようになったため、その設定は廃止されました。

ビューのグループ化

異なる拡張機能から提供されたいくつかのビューをまとめたり、組み込みビューのデフォルトグループが自分には合わないと感じたりすることもあるでしょう。ビューを既存のグループに移動したり、選択したビューの新しいグループを作成したりできます。これはこれまでと同様にサイドバーとパネルの両方で機能します。以下にいくつかの例を示します。

Moving Timeline from Explorer to Source Control

Explorerからタイムラインビューをソース管理にドラッグ

Side By Side Debug Console and Watch View

実行サイドバーからウォッチビューをPanelのデバッグコンソールの横にドラッグ

Custom History Group

サイドバーとパネルにタイムラインとGitLensでカスタム履歴グループを作成

テーマ: GitHub Light

ビューの場所のリセット

ビューとビューのグループは、コンテキストメニューからデフォルトの場所にリセットできます。ビューがデフォルトの場所から移動されている場合、「場所をリセット」のエントリが表示され、元の場所に戻すことができます。また、すべてのビューとグループをデフォルトの場所に戻すためのコマンドとして、「ビュー:フォーカスされたビューの場所をリセット」(workbench.action.resetFocusedViewLocation)と「ビュー:ビューの場所をリセット」(workbench.action.resetViewLocations)があります。

ビューまたはビューコンテナーを提供する拡張機能作者向け

ビューがワークベンチ内で移動されると、デフォルトの場所以外にある場合はアイコンまたは追加のコンテキストを使用して、異なる表示が必要になることがあります。ビューを提供する際、作者はiconプロパティとcontextualTitleプロパティを提供できるようになりました。これらが提供されない場合、デフォルトで提供されたビューコンテナーのアイコンとタイトルが使用されます。

最後に、拡張機能作者は、ツリービュー拡張機能ガイドに記載されているように、activitybarではなくpanelに直接ビューコンテナーを提供できるようになりました。

タブのピン留め

コンテキストメニューまたは新しいコマンドworkbench.action.pinEditor⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter))を使用して、タブをピン留めできるようになりました。

Pin Tabs

テーマ: GitHub Light

ピン留めされたタブには、重要なファイルをマークするのに役立ついくつかの便利な機能があります。

  • ピン留めされたタブは、常にピン留めされていないタブの前に表示されます。
  • 多数のタブを開いていても、スクロールアウトしません。
  • その他を閉じる」などのコマンドを使用しても閉じません。
  • 開いているエディターの数の設定された制限を超えても閉じません。

タブをドラッグアンドドロップして、ピン留め状態を変更することもできます。

ピン留めされたタブは、スペースを節約するためにアイコンのサイズに視覚的に縮小されます(アイコンが無効になっている場合はファイル名の最初の文字が表示されます)。ピン留めされたタブにダーティインジケーターを表示したい場合は、workbench.editor.highlightModifiedTabs: trueを設定できます。

注:ピン留めされたタブの他の表示方法については、引き続き検討中です。ご意見がある場合は、セカンダリタブバーの表示に関する既存のissue、またはピン留めされたタブのより多くのコンテキストを表示する設定に関するissueで、ぜひアイデアを共有してください。

検索エディター

検索エディターの作成方法を構成するためのいくつかの新しいオプションがあります。

  • search.searchEditor.defaultNumberOfContextLines - 検索エディターがデフォルトで表示するコンテキスト行数を構成します。
  • search.searchEditor.reusePriorSearchConfiguration - 新しい検索エディターを作成する際に、最後にアクティブだった検索エディターの構成を再利用します。
  • キーバインド引数で検索エディター構成変数を渡すためのサポート(パラメーターの詳細)。

Explorerの自動表示フォーカス(スクロール強制なし)

explorer.autoReveal設定に新しいオプションfocusNoScrollが追加されました。このオプションを使用すると、Explorerはファイルを開くときに自動的にファイルを選択しますが、Explorerビューにファイルを表示するためにスクロールはしません。

リストとツリーのスムーズスクロール

workbench.list.smoothScrolling設定を有効にすると、スムーズスクロール機能を持たないハードウェア(例えば、Windowsのディスクリートマウスホイール)でも、リストやツリーでのスクロールがはるかにスムーズになります。

Smooth scrolling

サッシサイズ設定

新しい設定workbench.sash.sizeを使用して、ビューとエディター間のドラッグ領域のフィードバック領域サイズをピクセル単位で設定できるようになりました。マウスでビューのサイズを変更するのが難しいと感じる場合は、より大きな値を設定してください。

スクリーンキャストモードのフォントサイズ

新しいscreencastMode.fontSize設定により、スクリーンキャストモードで使用されるフォントサイズをピクセル単位で構成できます。

VS Codeは、ワークスペース内のGitHubリモートへのURLリンクを直接開くことを許可するようになりました。さらに、GitHubでサインインしている場合、GitHubプロファイル下のページへのすべてのリンクが信頼されます。

エディター

閉じられたファイルのクロスファイルUndo

ファイルが途中で閉じられていた場合でも、ファイルを超えて元に戻す(Undo)ことができるようになりました。編集されたファイルは再度開かれ、シンボルの名前変更のようなクロスファイル操作は、影響を受けるすべてのファイルで元に戻されます。

異常な行末記号

VS Codeは現在、CR (キャリッジリターン)、LF (ラインフィード)、およびCRLFを行末記号として認識しています。一部のプログラミング言語では、行末記号を構成するものが異なる定義を持っています。これは言語によって異なり、例えばLS (ラインセパレーター) やPS (パラグラフセパレーター) はC#やJavaScriptでは行末記号ですが、HTML、PHP、Javaではそうではありません。VS Codeが言語サーバーと通信する際、様々な概念が(line;char)座標を使用してVS Codeと言語サーバー間で通信されるため、これらの行末記号の違いは問題を引き起こす可能性があります。行末記号の定義が異なる場合、ファイルの行と位置のマッピングが異なる結果となる可能性があります。

ファイルを開く際、VS Codeは開かれたファイルにLSまたはPSが存在するかどうかをチェックし、これらの文字を削除する許可を求めるプロンプトを表示するようになりました。これらの異常な行末記号は実際にはまれであり、コピー&ペーストによって誤ってソースコードに挿入された可能性が高いです。

統合ターミナル

先月の統合ターミナルリンクプレビューが、古い実装を置き換えました。新しいリンク実装では、次のことが可能になります。

  • エディターのリンク検出を使用して、Webおよびfile://リンクの検出を改善。
  • フォルダーリンクのサポート。Explorerでフォルダーを開くか、新しいVS Codeウィンドウを開くことができます。
  • 異なるリンクタイプに対して異なるリンクアクションを実行し、ワークスペースを検索する「単語」リンクにフォールバックします(terminal.integrated.wordSeparators設定に基づく)。
  • エディターと同様のリンクハイライトとホバーエクスペリエンス。

Terminal with various links

テーマ:Topaz (Dim)

タスク

最近のタスクパフォーマンス改善に続き、ビルドタスクの実行は、拡張機能に常にタスクを要求しなくなりました。フォルダのtasks.jsonにデフォルトのビルドタスクが構成されている場合、ビルドタスクの実行は、デフォルトのビルドタスクを実行する前にすべての拡張機能からすべてのタスクを検索するのではなく、そのタスクのみを解決しようとします。

ソース管理

ターミナルで開く

ソース管理ビューのコンテキストメニューから、ターミナルでリポジトリを開けるようになりました。

Open in terminal from Source Control view

GitHubからリモートを追加

Git: リモートを追加...コマンドを使用して、GitHubリポジトリをローカルリポジトリにリモートとして追加できるようになりました。

Use Add Remote Command

GitHubに公開する際に.gitignoreを生成

ワークスペースをGitHubに公開する際に、.gitignoreファイルを生成できるようになりました。ワークスペースをGitHubに公開する際、リポジトリに含めるファイルを選択するよう促され、含まれないファイルは.gitignoreファイルに追加されます。

Select which files to include in the repository

入力フィールドのフォントファミリー

Scm: Input Font Family 設定を使用して、ソース管理入力フィールドで使用されるフォントファミリーをカスタマイズできるようになりました。この設定は以下の値をサポートします。

  • default - ワークベンチのユーザーインターフェースのフォントファミリー。
  • editor - Editor: Font Family 設定で指定されたフォントファミリー。
  • font family name - 入力フィールドで使用するフォントファミリーの名前(例:Cascadia Code)。

進行中のリベースを中止

Git: リベースを中止コマンドを使用して、進行中のリベース操作を中止できるようになりました。

デバッグ

自動デバッグ構成の改善

このマイルストーンでは、自動デバッグ構成のエクスペリエンスを改善しました。

  • 前回のマイルストーンでは、拡張機能作者が現在のプロジェクトを分析し、デバッグ構成を自動的に提供できる機能が導入されました。これらのデバッグ構成は動的に作成されるため、launch.json構成ファイルには表示されません。これはすぐに機能する限りは良いのですが、追加の引数を追加するなど、構成を変更する必要がある場合があります。自動デバッグ構成をlaunch.jsonに保存して編集できるようにするオプションが追加されました。これを行うには、デバッグ:デバッグを選択して開始クイックピックの自動デバッグ構成の末尾にある歯車ボタンを使用します。

    Selecting Edit automatic debug configuration in launch

  • 「実行とデバッグ」スタートビューからすべての自動デバッグ構成を表示できるようになりました。

    Automatic debug configs in start view

  • デバッグドロップダウンで、以前選択した自動デバッグ構成が記憶されるようになりました。

ステップインターゲット

多くの入れ子になった関数呼び出しを含むステートメントにデバッグでステップインするのは、実際には興味のない関数をステップ実行しなければならない可能性があるため、苦痛な場合があります。このシナリオを改善するために、デバッグアダプタプロトコルは、興味のある関数に直接ステップインするためのUIを表示する「ステップインターゲット」機能をサポートしています。

このマイルストーンでは、VS Codeがこの機能を使用し始めました。デバッグがステートメントで停止すると、コンテキストメニューに新しいアクション「ステップインターゲット」が表示されます。このアクションは、現在のスタックフレームで利用可能なすべてのターゲット(通常は関数)のリストを表示します。そのうちの1つを選択すると、そのターゲットにステップインします。

各スタックフレームは独自のターゲットのセットを持つことができることに注意してください。したがって、ステップインターゲットアクションの結果は、CALL STACKビューで現在選択されているフレームに依存します。

Step into targets in context menu

今のところ、Mock Debug拡張機能のみが(偽の)ステップインターゲットをサポートしていますが、まもなく他のデバッグ拡張機能(Juliaデバッガなど)も追随する予定です。

言語

TypeScript 3.9

VS CodeにはTypeScript 3.9.4が含まれるようになりました。この主要なTSアップデートでは、新しいツール機能、パフォーマンスの改善、多数のバグ修正が提供されます。TS 3.9の詳細については、TypeScriptブログを参照してください。

CommonJSの自動インポート

VS CodeがCommonJSスタイルのJavaScriptモジュールで作業していることを検出すると、自動インポートimportではなくrequireを使用するようになりました。

Auto imports using 'require' in a JS file

リファクタリングで改行を保持

JavaScriptとTypeScriptのリファクタリング(メソッドへの抽出新しいファイルへ移動など)は、リファクタリングされたソースコードの元のフォーマットを保持しようとします。これには、選択範囲内の改行も含まれます。

The 'extract method' refactoring preserving newlines

不足しているインポートをすべて追加するソースアクション

VS Codeは長い間、JavaScriptまたはTypeScriptファイル内の不足しているインポートをすべて追加するクイックフィックスをサポートしてきました。今回のイテレーションでは、新しい「不足しているインポートをすべて追加」ソースアクションを導入し、ファイル内のどこからでもこれをトリガーできるようにしました。

Adding imports using a source action

これにより、「不足しているインポートをすべて追加」のキーバインドを設定することもできます。

{
  "key": "ctrl+shift+i",
  "command": "editor.action.sourceAction",
  "args": {
    "kind": "source.addMissingImports",
    "apply": "first"
  }
}

または、保存時に「不足しているインポートをすべて追加」を有効にすることも可能です。

"editor.codeActionsOnSave": [
    "source.addMissingImports"
]

ワークスペース内のJS/TSシンボルへ移動に開いているすべてのプロジェクトが含まれる

デフォルトでは、JavaScriptとTypeScriptのワークスペースシンボル検索は、開いているすべてのjsconfigおよびtsconfigプロジェクトを検索するようになりました。以前は、フォーカスされたファイルが属するプロジェクトの検索結果のみが含まれていました。

この動作はtypescript.workspaceSymbols.scope設定によって制御され、TS 3.9+が必要です。以前の動作に戻し、現在のプロジェクトのみを検索するには、"typescript.workspaceSymbols.scope": "currentProject"を設定します。

不足しているインポートのクイックフィックスが推奨としてマーク可能に

JavaScriptとTypeScriptの不足しているインポートの追加クイックフィックスが、エラーに対する推奨される修正としてマークできるようになりました。これにより、⌥⌘. (Windows, Linux Shift+Alt+.) を使用して、1回のキー操作で不足しているインポートを追加できます。

不足しているインポートの追加は、有効なインポートが1つしかない場合にのみ推奨される修正としてマークされることに注意してください。プロジェクト内に複数のインポートの可能性がある場合は、通常のコードアクションメニューを使用してどのインポートを使用するかを選択する必要があります。また、JavaScriptで不足しているインポートの追加クイックフィックスを有効にするには、タイプチェックを有効にする必要があります。

JSONオフラインモード

新しい設定json.schemaDownload.enableを使用して、JSON拡張機能がhttpおよびhttpsからJSONスキーマをフェッチすることを許可するかどうかを制御できます。

現在のエディターがダウンロードできないスキーマを使用しようとすると、ステータスバーに警告の三角形が表示されます。その場合、検証、コード補完、ホバーなどのスキーマベースの機能は制限されます。

JSON warning triangle

ブラウザーのサポート

タブタイトルにデバッグ停止インジケーター

ブラウザで拡張機能をデバッグする際、デバッグ対象の拡張機能は新しいブラウザータブに表示され、デバッガータブは非アクティブ化(非表示)されます。デバッグ対象が何らかの理由で停止した場合、例えばブレークポイントにヒットした場合、デバッガータブをアクティブ化することはできません(ブラウザはこのためのAPIを提供していないため)。これにより、デバッグ対象の拡張機能が停止したことを発見することはほとんど不可能になります。

この問題を軽減するために、タブのタイトルを更新して、赤い丸のインジケーター🔴(ブレークポイントに似たもの)を含めるようになりました。デバッガータブがアクティブ化されるとすぐに、赤い点​​は削除されます。

Debuggee stopped indicator in web view

統合ターミナルからVS Codeを実行する

ブラウザでVS Codeを実行している統合ターミナルを開くと、codeと入力して、ブラウザ内で機能するいくつかの便利なコマンドにアクセスできます。

Terminal Remote

今回のイテレーションでは、多くのオプションのサポートを拡大しました。

  • --goto 特定の行でファイルを開く
  • --diff 2つのファイルを比較する
  • --wait プログラムにファイルが閉じるのを待たせる
  • --add 現在のワークスペースにフォルダを追加する

たとえば、GitHub Codespacesでは、これによりブラウザベースのVS CodeをGitのエディタとして使用できます。

VS Code Git Editor in Browser

テーマ: GitHub Light

ファイル/フォルダーのアップロード

VS Codeでは、ファイルをファイルエクスプローラーにドロップしてアップロードできます。今回のイテレーションでは、この機能を改善し、フォルダーをドロップして、すべての子フォルダーとファイルを含むフォルダーをアップロードできるようになりました。これは時間がかかる操作になる可能性があるため、ステータスバーに進行状況が表示され、必要に応じて操作をキャンセルできます。

Drag files into File Explorer

アカウント管理

以前のリリースでは、設定同期機能のプレビューと並行して、新しいアカウント管理UIのプレビューを導入しました。今回、このUIがデフォルトで表示されるようになりました。新しい提案された認証プロバイダーAPIを使用する拡張機能は、ここでサインインを要求でき、アカウントを表示したり、拡張機能のアクセスを管理したりできます。現在、このAPIを使用している拡張機能は限られていますが、APIが安定したら採用を増やすように取り組んでいきます。

プレビュー機能

プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。

設定の同期

この数ヶ月間、VS Codeの設定をマシン間で同期するサポートに取り組んできました。この機能はInsidersリリースでプレビューとして利用可能です。

今回のマイルストーンでは、設定同期の管理と診断のサポートを強化しました。

同期されたマシンビュー

VS Codeの設定を同期しているマシンのリストを表示する「同期されたマシン」ビューを追加しました。使用しているVS Codeの種類(InsidersまたはStable)とプラットフォームに基づいてデフォルトの名前が提供されますが、ビュー内のマシンエントリで利用できる編集アクションを使用して、いつでも名前を更新できます。

Synced Machines view

テーマ: GitHub Sharp (カスタマイズ付き)

コマンドパレットから「設定同期:同期データを表示」コマンドを使用して、このビューを開くことができます。

同期データビュー

同期データビューに次の機能強化を追加しました。

  • データが同期されているマシンを確認できるようになりました。
  • ビュー内のデータエントリで利用可能な復元アクションを使用して、特定の状態に復元できます。
  • ビューヘッダーのその他のアクション...)ボタンの下にある同期データをリセットアクションを使用して、クラウド上のデータをリセットできます。

Synced Data view

テーマ: GitHub Sharp (カスタマイズ付き)

異なるマシンからのデータと同期しようとしているかどうかを確認し、適切なアクションを実行できるようにすることで、同期をオンにする際のより多くの支援を提供するようになりました。

  • ローカルを置換 - 現在のマシン上のデータをクラウドから同期されたデータに置き換えます。
  • マージ - 現在のマシン上のデータをクラウドから同期されたデータとマージします。
  • 同期データを表示 - 同期データビューを開いて、クラウドから同期されたデータを表示します。

Replace or Merge pop-up

新しいJavaScriptデバッガー

今月も新しいJavaScriptデバッガーの開発を継続しました。5月中旬から、Insidersではデフォルトのデバッガーとなり、今回のリリースではVS Code Stableに同梱されています(ただし、デフォルトでは有効になっていません)。既存の起動構成でdebug.javascript.usePreview設定を有効にすることで、使用を開始できます。

今月の進捗は、主に既存機能の磨き上げと安定化に重点が置かれました。

  • ブラウザデバッグのマルチタブ対応: ブラウザやウェブビューを実行しているときに、複数のタブにアタッチできるようになりました。デフォルトでは、js-debugはurlFilterに一致するすべてのタブにアタッチします。ブラウザにアタッチするときは、以前のデバッガーのように単一のタブに接続するために、起動構成で"targetSelection": "pick"を設定できます。
  • タブの曖昧さ解消の改善: デバッグセッション名が複数のタブをより正確に区別するようになりました。さらに、コールスタックビューのデバッグセッションのコンテキストメニューにタブにフォーカスアクションを追加しました。これにより、正しいページを見ていることを確認できます。
  • ゲッターの自動展開オプション: Chromeの動作に合わせて、変数の表示やデバッグコンソールに表示される際、プロパティゲッターはデフォルトでは評価されません。debug.javascript.autoExpandGettersオプションを設定することで、この動作を構成できるようになりました。
  • webpackバンドルの一部の種類のパフォーマンス改善: 特定の種類のwebpackバンドル(evalソースマップでビルドされたもの)が、js-debugで低速に実行されていました。これは解消されました。

TS 4.0 ナイトリービルドのサポート

VS Code 1.46には、TypeScript 4.0ナイトリービルドのプレビューサポートが含まれています。ナイトリービルドには、リファクタリングのためのより柔軟な選択など、現在積極的に取り組んでいるいくつかの新しいツール機能のサポートが含まれています。

TypeScript Nightly拡張機能をインストールすることで、今日からTypeScript 4.0ナイトリービルドを試すことができます。フィードバックを共有し、TypeScript 4.0でバグが発生した場合はお知らせください。

拡張機能への貢献

ノートブック

クイックアウトライン

GitHub Issue NotebooksのようなNotebook拡張機能は、クイックアウトラインをサポートするようになりました。kb('workbench.action.gotoSymbol')を押すか、エディターでシンボルへ移動コマンドを使用して、現在のNotebookのすべてのMarkdownおよびコードセルのプレビューを表示できます。

Notebook quick outline preview list

テーマ: GitHub Theme

エラーとシンボルナビゲーション

F8すべての参照を検索の動作を改善しました。すべてのコードナビゲーションジェスチャーは、Notebooks以外と同じくらい自然に感じられるはずです。例えば、問題ビューは、Notebookごとにグループ化されたすべてのセルのすべてのエラーを表示するようになり、セルごとではありません。

Problems panel with errors grouped by notebook

テーマ: GitHub Theme

セルの結合/分割

セルをすばやく結合したり、小さなフラグメントに分割したりするための2つのコマンドセットを導入しました。

Running Join and Split Notebook cells commands

テーマ:GitHub Dark Theme

維持されたノートブック

ピン留めされた、またはダーティなNotebookエディターがワークスペースに永続化されるようになりました。これにより、Notebookがバックグラウンドに移動されたり、別のエディターグループに移動されたりしても、ユーザーはNotebookの作業状態を失うことはありません。

Persisted Notebook

テーマ:GitHub Dark Theme

統合されたUndo/Redoスタック

Notebookセルを操作したり、Notebookセルの内容を変更したりするユーザー操作は、同じUndo/Redoスタックで追跡されるようになりました。

Show tracking of Unified Undo/Redo stack

テーマ:GitHub Dark Theme

GitHubプルリクエストと課題

プルリクエストと課題の作業、作成、管理を可能にするGitHub Pull Requests and Issues拡張機能の作業が継続しています。今回のリリースでのいくつかのアップデートには以下が含まれます。

  • 課題ホバーにおけるラベルの改善。
  • 課題とユーザーのサジェスチョンは、コメントとプレーンテキストでのみトリガーされるようになりました。
  • 新しい課題エディターで、担当者とラベルを設定できるようになりました。

すべての新機能とアップデートについては、拡張機能の0.17.0の完全な変更ログを参照してください。

リモート開発

コンテナ、リモートマシン、またはLinux用Windowsサブシステム(WSL)をフル機能の開発環境として使用できるようにするリモート開発拡張機能の作業が継続しています。

1.46の新しい機能には以下が含まれます。

  • 開発コンテナ:GPG転送のサポート。
  • 開発コンテナ:Dockerボリュームの検査のサポート。
  • 開発コンテナ:新しいdevcontainer.jsonコマンドプロパティ。

新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。

Hexエディター

バイナリエディターのサポートでカスタムエディターAPIが完成したため、ネイティブな16進編集体験を提供するために16進エディター拡張機能を開発しました。

Hex Editor

この拡張機能はまだ開発中で、現在はファイルを16進数として開いてナビゲートすることのみをサポートしています。ナビゲーションエクスペリエンスの改善に引き続き取り組み、その後編集のサポートに移行します。拡張機能を試してフィードバックを提供したり、vscode-hexeditorリポジトリに対して問題を報告したりできます。

拡張機能作成

ファイルパスの大文字と小文字の区別

VS CodeがケースインセンシティブなファイルシステムでパスとURIを処理する方法に関するいくつかのバグを修正しました。このリリース以前は、大文字と小文字が異なるパスは同じドキュメントを開かず、別々の、接続されていないドキュメントを開いていました。この動作はしばしば混乱を引き起こし、時にはデータ損失につながりました。

しかし、これらのバグを修正する中で、openTextDocument関数の動作が変更されました。この関数は、渡されたURIとは異なる大文字と小文字のURIを持つドキュメントを返すことができるようになりました。これは、拡張機能がTextDocument#uriを真実の源として使用すべきであり、要求したURIではないことを意味します。

以下のサンプルは新しい動作を示しています。

// case-insensitive file system

const uriA = vscode.Uri.file('/foo/bar.code');
const docA = await vscode.workspace.openTextDocument(uriA);

const uriB = vscode.Uri.file('/foo/BAR.code');
const docB = await vscode.workspace.openTextDocument(uriB);

assert.ok(docA === docB); // same document
assert.ok(docB.uri.toString() === uriA.toString()); // uriA is used, NOT uriB
assert.ok(docB.uri.toString() !== uriB.toString());

新しいデバッグコンソールテーマカラー

デバッグコンソールビューのスタイル設定のための新しい色があります。

  • debugConsole.infoForeground: デバッグコンソール内の情報メッセージのフォアグラウンドカラー
  • debugConsole.warningForeground: デバッグコンソール内の警告メッセージのフォアグラウンドカラー
  • debugConsole.errorForeground: デバッグコンソール内のエラーメッセージのフォアグラウンドカラー
  • debugConsole.sourceForeground: デバッグコンソール内のソースファイル名のフォアグラウンドカラー
  • debugConsoleInputIcon.foreground: デバッグコンソール入力マーカーアイコンのフォアグラウンドカラー

新しい入力テーマカラー

入力用の新しいカラーテーマオプションも追加されました。inputOption.activeForegroundを介して、アクティブな入力オプションのフォアグラウンドカラーを設定できます。これらは、検索ビューと検索ウィジェット(エディタ、ターミナル、デバッグコンソール)に表示されます。

Input option foreground color

テーマ:GitHub Dark Theme

新しいcodiconアイコン

私たちのcodiconライブラリに以下の新しいアイコンを追加しました。

  • server-process
  • server-environment
  • record
  • pass
  • stop-circle
  • play-circle

New available icons

テーマ:GitHub Dark Theme

プロバイダーはジェネリック型を使用

vscode.d.tsの型定義では、2段階のプロバイダー(個別の「提供」と「解決」メソッドを持つもの)がすべてジェネリックになりました。これは、「提供」呼び出しの結果が「解決」呼び出しに渡されることをより明確にすることを目的としています。

例えば、以下はDocumentLinkProviderの新しいジェネリック定義です。

export interface DocumentLinkProvider<T = DocumentLink> {
  provideDocumentLinks(
    document: TextDocument,
    token: CancellationToken
  ): ProviderResult<T[]>;

  resolveDocumentLink?(link: T, token: CancellationToken): ProviderResult<T>;
}

すべてのプロバイダーはデフォルトのジェネリック引数を持っているので、この変更によって既存の拡張機能でエラーが発生することはありません。以前に「resolve」を実装する際にキャストや型チェックを使用していた場合は、代わりにジェネリックプロバイダーを使用するようにコードを更新することを検討してください。

class MyDocLinkProvider implements DocumentLinkProvider<MyDocumentLink> {

  provideDocumentLinks(document: TextDocument, token: CancellationToken): MyDocumentLink[] { ... }

  resolveDocumentLink(link: MyDocumentLink, token: CancellationToken): MyDocumentLink { ... }
}

ウェブビューでのテーマ固有CSSの記述

ウェブビューのbody要素に、現在アクティブなテーマのフルネームを格納するvscode-theme-nameという新しいデータ属性が追加されました。これにより、ウェブビュー内でテーマ固有のCSSを記述できるようになります。

body[data-vscode-theme-name="One Dark Pro"] {
    background: hotpink;
}

VS Codeで利用可能なテーマの数を考えると、テーマ固有のCSSは例外的な場合にのみ記述するようにしてください。通常のウェブビューは、代わりに.vscode-light.vscode-darkクラス名とVS Code CSS変数を使用して、ユーザーが選択したテーマに適応するCSSを記述すべきです。

カスタムバイナリエディタ

カスタムバイナリエディターのAPIが完成しました。カスタムエディターAPIを使用すると、拡張機能は、VS Codeのデフォルトのテキストエディターを置き換えるか、ユーザーが切り替えられるカスタムのウェブビューベースのエディターを作成できます。これは、画像や3DモデルなどのアセットファイルをVS Code内で直接プレビューしたり、特定のファイルタイプ用のより専門的な編集インターフェイスを構築したりするのに使用できます。新しいバイナリカスタムエディターAPIを使用すると、テキストベース以外のファイル形式の読み書きエディターも構築できるようになりました。

A custom editor for binary files

カスタムエディター拡張機能ガイドでは、APIについてさらに詳しく説明しています。また、テキストおよびバイナリファイル形式の両方のカスタムエディターの例を含むカスタムエディター拡張機能サンプルも参照してください。

resolveCompletionItem の緩和

CompletionItemProvider#resolveCompletionItem 関数を使用すると、プロバイダーは補完に詳細なデータを遅延的に追加できます。この「遅延」データはオプションであり、補完の挿入動作を変更してはなりません。拡張機能は引き続きadditionalTextEditsを埋めることができます。補完が挿入されたに追加の編集が到着した場合でも、エディターはそれらを適用しようとします。これは追加の編集にのみ適用され、提供された後は変更してはならないメインの編集(insertText)には適用されないことに注意してください。

onStartupFinishedアクティベーションイベント

既存の*アクティベーションイベントと同様に、新しいアクティベーションイベントが追加されました。新しいonStartupFinishedアクティベーションイベントは、拡張機能がVS Codeの起動後すぐにアクティブ化されることを望むが、起動の一部としてはアクティブ化されない場合に使用すべきです。

環境変数コレクション

ExtensionContext.EnvironmentVariableCollection APIは安定版となり、拡張機能がターミナル環境に貢献できるようになりました。

const collection = context.environmentVariableCollection;
const separator = process.platform === 'win32' ? ';' : ':';
collection.prepend('PATH', `/foo${separator}`);
collection.replace('JAVA_HOME', '/bar');

これらのコレクションは拡張機能およびワークスペース固有であり、複数の拡張機能間の競合をVS Codeが処理します。ウィンドウのリロード後も永続化されるため、ウィンドウのロード直後に作成されたターミナルは、拡張機能ホストの起動を待つことなく、最後に認識されたバージョンを使用します。これらの永続化されたコレクションは、コレクションを破棄するか、拡張機能がアンインストールされたときに削除されます。

コレクションが変更されると、ターミナルにインジケーターが表示されます。このインジケーターがアクティブな変更すべてに表示されるか、または「古い」ターミナルのみに表示されるかは、terminal.integrated.environmentChangesIndicator設定によって定義されます。このAPIは、VS Codeを認証プロバイダーにするために、組み込みのGit拡張機能によっても使用されるようになりました。

デバッグアダプタプロトコル

新しい命令ブレークポイント

新しい「命令」ブレークポイントタイプが追加され、メモリアドレスの命令でブレークできるようになりました。メモリアドレスは、evaluatevariablesstackTrace、およびgotoTargets要求からオプションで利用できるシンボリック形式で指定されます。対応する機能supportsInstructionBreakpointsは、デバッグアダプタが命令ブレークポイントをサポートしているかどうかを示します。

「ステップ粒度」のサポート

ステップ要求nextstepInstepOutstepBackに、要求が「ステートメント」、「行」、または「命令」のいずれをステップ実行するかを制御するための新しいオプションのgranularity引数が追加されました。対応する機能supportsSteppingGranularityは、デバッグアダプタがこの機能をサポートしているかどうかを示します。

提案された拡張API

各マイルストーンには新しい提案された API があり、拡張機能の作成者はそれらを試すことができます。いつものように、皆様のフィードバックをお待ちしております。提案された API を試すには、次の手順を実行する必要があります。

  • 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
  • 拡張機能のpackage.jsonファイルに次の行が必要です: "enableProposedApi": true
  • 最新バージョンのvscode.proposed.d.tsファイルをプロジェクトのソース場所にコピーします。

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

Git拡張機能API

組み込みのGit拡張機能は、拡張機能が使用できるAPIを提供しています。既存のAPIは、Repositorylog結果を取得する方法を公開していました。更新されたAPIでは、logpathで制約できるようになりました。

export interface LogOptions {
  readonly maxEntries?: number;
  readonly path?: string;
}
export interface Repository {
  log(options?: LogOptions): Promise<Commit[]>;
}

また、BranchQueryに基づいてgetBranchesを行うGit拡張機能APIも追加されました。

export interface BranchQuery {
  readonly remote?: boolean;
  readonly contains?: string;
}
export interface Repository {
  getBranches(query: BranchQuery): Promise<Ref[]>;
}

アクセシビリティ情報

スクリーンリーダーをサポートするために、TreeItemStatusBarItem、およびTimelineItem要素にAccessibilityInformationを追加しました。AccessibilityInformationには、labelroleが含まれています。labelはスクリーンリーダーによって読み上げられ、roleは要素のアクセシビリティ特性を記述します。

エンジニアリング

Windows ARM64 インサイダー

Insidersダウンロードページで、ARM 64ビット版Windows用の新しい公式インサイダービルドが利用可能です。

これらのビルドはMicrosoft Surface Pro Xで動作します。ぜひ試して、ご意見をお聞かせください。

Windows ARM64

問題診断のための--crash-reporter-directory引数

新しいコマンドライン引数--crash-reporter-directoryを使用すると、クラッシュレポートを保存したいローカルフォルダを渡すことができます。これは拡張機能ホスト内のクラッシュにも機能し、VS Codeがクラッシュして問題を報告したい場合にいつでも使用できます。

プリロードスクリプト

特定のElectron APIをウィンドウに公開するために、VS CodeにElectronのpreloadスクリプトを追加しました。これは、完全にサンドボックス化されたウィンドウに向けた最初のステップの1つです。進捗はissue #92164に記載されています。

拡張機能サンプルがESLintを使用するように変更

すべての拡張機能サンプルが、非推奨となったTSLintではなくESLintをリンティングに使用するように更新されました。もしあなたの拡張機能がまだTSLintを使用している場合は、TSLintからESLintへの移行ガイドと、新しく更新された拡張機能サンプルを参考に、ESLintへの移行方法を確認してください。

GitHubトリアージ拡張機能

Chromiumベースのブラウザ向けに拡張機能を作成しました。これは、GitHubでの課題のトリアージを支援するもので、担当者、ラベル、マイルストーン、およびトリアージGitHub Actionsをトリガーするために使用するさまざまな特殊コメントの単一のファジーフィルター可能なメニューを提供します。コードはGitHubでオープンソース化されています。

Screenshot of Extension

ドキュメントと拡張機能

BuildでのVisual Studio Code

VS CodeチームはMicrosoft Build 2020カンファレンスで発表し、VS Codeのセッションとオンライン講演の概要は、このVS Code at Buildブログ記事で確認できます。

VS Codeチームメンバーによるいくつかの講演

Azure拡張機能

VS Code内から直接Azureアセットを操作およびデプロイするための新しい拡張機能がいくつかあります。

  • Azure Static Web Apps - VS Codeから直接Azure Static Web Appsを作成および管理します。
  • Azure Databases - Azureでグローバルに分散されたマルチモデルデータベースを作成、閲覧、更新します。

Azure Databases extension

新しいコマンド

キー コマンド コマンドID
⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) エディターをピン留め workbench.action.pinEditor
⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) エディターのピン留めを解除 workbench.action.unpinEditor

注目すべき修正点

  • 10144: Linuxでsystem-uiをフォントとして使用
  • 63068: macOSのDockアイコンが非常に小さい
  • 69163: サイドバーでアクティブファイルを公開すると例外がスローされる
  • 95367: 無効なframeIdに対してDAP "evaluate"リクエストが発行される
  • 95856: 行へ移動に「filename.extension:line number」形式を含めるべき
  • 96713: コールスタックアクションビューからセッションを停止すると常にアクティブなセッションに移動する
  • 96914: アウトラインが表示されているとタイピングが遅い
  • 96987: Orcaがブレークポイントビューの行番号を読み上げない
  • 97444: デバッグウォッチから長い値をコピーすると部分的な値が貼り付けられる
  • 97471: デバッグホバーが狭すぎて横スクロールが無用
  • 97731: VS Codeがタイピングとスクロール中にフリーズする
  • 96643: タスク(およびTaskExecution)がonDid(Start|End)Taskコールバックで === にならない

ありがとうございます

最後に、今月 VS Code に貢献してくださった以下の皆様に、心からの感謝を申し上げます。

問題追跡への貢献者

vscodeへの貢献者

language-server-protocolへの貢献者

vscode-generator-codeへの貢献者

vscode-vsceへのコントリビューション

debug-adapter-protocolへの貢献者

vscode-js-debugへの貢献者

localizationへの貢献

私たちは過去1年間、皆様からのフィードバックに熱心に耳を傾け、VS Codeのローカライズ開発に貢献できる、より信頼性が高くインタラクティブなプラットフォームを提供する時期が来たと判断しました。このことを念頭に置き、オープンソースのローカライズプロジェクト向けにMicrosoftコミュニティローカライズプログラムを別のプラットフォームで継続する目的で、4月最初の週にMicrosoftローカライズコミュニティプラットフォーム(MLCP)を正式に廃止しました。

新しいコミュニティプラットフォームに関する発表については、数週間以内にWikiページにご注目ください。このプラットフォーム移行に関する疑問については、FAQページも参照してください。