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

2020年3月 (バージョン 1.44)

バージョン1.44.1アップデート: このアップデートでは、セキュリティ問題に対処しました。

バージョン1.44.2アップデート: このアップデートでは、以下の問題に対処しました。

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


Visual Studio Code 2020年3月版へようこそ。このバージョンでは、多くのアップデートがあり、気に入っていただけることを願っています。主なハイライトは以下の通りです。

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

Insiders: 新機能をできるだけ早く試したいですか?毎晩のInsidersビルドをダウンロードして、利用可能になり次第最新のアップデートを試すことができます。そして、最新のVisual Studio Codeのニュース、アップデート、コンテンツについては、Twitterで@codeをフォローしてください!

アクセシビリティ

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

  • Diffビューのアクセシビリティが向上しました。F7⇧F7 (Windows, Linux Shift+F7)を使用してアクセシブルDiffビューアーの変更をナビゲートし、Stage / Unstage / Revert Selected Rangesコマンドを使用して現在の変更をステージ、アンステージ、または元に戻すことができます。
  • ウィジェット全体でより良い役割が使用されるようになりました。SuggestウィジェットとQuick Pickには`listbox`ロールが、静的リストには`list`が、WelcomeビューやMarkdownプレビューなどの読み取り専用コンテンツには`document`が使用されます。
  • クイックピックウィジェットの動作を調整しました。
  • 現在の行のCodeLensは、Show CodeLens Commands For Current Lineコマンドを使用してクイックピックに表示できるようになりました。

タイムラインビュー

タイムラインビューはプレビュー版から正式版となり、デフォルトで有効になりました。これは、ファイルの時系列イベント(Gitコミット、ファイル保存、テスト実行など)を視覚化するための統合ビューです。タイムラインビューは、デフォルトで現在アクティブなエディタのタイムラインを表示するように自動的に更新されます。このデフォルトの動作は、ビューツールバーの目のアイコンを切り替えることで制御できます。また、他のビューと同様に、タイムラインビューは入力しながらの検索またはフィルタリングをサポートしています。

タイムラインビューは、デフォルトでファイルエクスプローラーの下部に折りたたまれています。タイムラインの境界線を選択すると、タイムラインビューが展開されます。

Collapsed Timeline view

このリリースでは、組み込みのGit拡張機能が、指定されたファイルのGitコミット履歴を提供するタイムラインソースを提供します。コミットを選択すると、そのコミットによって導入された変更のdiffビューが開きます。コンテキストメニューには、コミットIDをコピーおよびコミットメッセージをコピーするコマンドがあります。また、ファイルエクスプローラーのコンテキストメニューには、新しいタイムラインを開くコマンドがあり、選択したファイルのタイムラインを素早く表示できます。

これが実際に動作しているタイムラインビューです

Timeline view

テーマ: Dark Amethyst

追加のタイムラインソースは拡張機能によって提供され(ただしAPIはまだ提案段階)、統合されたタイムラインビューに表示されます。拡張機能は、タイムラインビューおよび個々のタイムライン項目にメニュー項目を提供することもできます。また、ビューに含めるソースを簡単に選択することもできます。

ワークベンチ

クイックオープンを書き換えました

Quick Open (⌘P (Windows, Linux Ctrl+P)) コントロールは以前のツリーウィジェットのバージョンを使用していましたが、このイテレーションでは、VS Code UIの他の部分で既に利用されている最新のリストコントロールを使用するように移行されました。機能的には、すべてのコマンドは以前と同じように動作するため、違いに気づくことはないはずです。

私たちはこの機会に、いくつか役立つかもしれない機能を追加しました。

Quick Open

ファイルからシンボルへナビゲート

`@`を入力するだけで、ファイル結果のシンボルへ続けてナビゲートできるようになりました。現在選択されているファイルについて、すべてのシンボルが表示され、エディターがバックグラウンドで開き、アクティブなシンボルが明らかになります。以下のビデオでは、`@`の後に`:`を続けることで、シンボルをカテゴリ別にグループ化できることも示しています。

Quick Open navigate to symbols

複数のクエリをスペースで区切って結果をフィルタリング

ファイル検索で結果が多すぎる場合、スペースを入力した後に検索パターンを追加することができます。例えば、`<ファイル名> <フォルダ名>`と続けて入力することで、フォルダによる結果を絞り込むことができます。

Quick Open filtering

注: これは、エディターのシンボルピッカー (⇧⌘O (Windows, Linux Ctrl+Shift+O)) とワークスペースのシンボルピッカー (⌘T (Windows, Linux Ctrl+T)) にも適用されます。スペース文字の後のテキストは、そのシンボルのコンテナによるフィルタリングに使用されます。

プロバイダー切り替え時に入力が保持される

Quick Open を表示したまま別のプロバイダー (例えば、ファイル検索からシンボル検索へ) に切り替えると、VS Code は入力されたフィルタを適用し、新しいプロバイダーで使用します。これにより、以前ファイル検索で使用した入力内容をシンボル検索で素早く再利用できます。

エディター履歴を最も最近使用した順に並べ替え

新しい設定`"search.quickOpen.history.filterSortOrder": "recency"`により、検索を開始した場合でも、エディター履歴を最近開いた項目でソートできるようになりました。デフォルトでは、エディター履歴の結果は、使用されたフィルタパターンに基づいて関連性でソートされます。

横にエディターを開く新しいコマンド

新しいコマンド`workbench.action.alternativeAcceptSelectedQuickOpenItem`を使用すると、Quick Openからファイルやシンボルを横に開くための追加のキーボードショートカットを追加できます。デフォルトでは、`Ctrl+Enter` (macOS: `Cmd+Enter`) は、現在のエディターグループではなく、新しいエディターグループでファイルを横に開きます。

拡張パックの表示の改善

拡張機能ビューで拡張機能パックを識別するために、拡張機能パックに含まれる拡張機能の数を示す番号バッジが追加されました。

Extension Pack number of extensions badge

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

拡張機能の詳細ページには、拡張機能パックにバンドルされているすべての拡張機能が表示されるようになりました。

Extension Pack details page showing bundled extensions

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

エディタータブのスクロールバーの高さ調整

新しい設定`workbench.editor.titleScrollbarSizing`を使用すると、エディタータブとパンくずリストのスクロールバーのサイズを大きくできます。これにより、開いているエディターの長いリストをスクロールしやすくなります。

スクロールバーを大きくするには`large`に設定します

Large scrollbar

ファイルエクスプローラーで隠しファイルを表示可能に

ファイルが隠されていても(`files.exclude`設定により)、エディターで開いて表示されている場合、そのファイルは親チェーンと共にファイルエクスプローラーに表示されます。これらのファイルとその親は、エディター領域でファイルが表示されている間、ファイルエクスプローラーで薄暗い色で表示されます。

ビュー: 別の方法で再度開く

新しいビュー: 別の方法で再度開くコマンドを使用すると、現在アクティブなファイルを別のカスタムエディターで再度開くことができます。

Using the Reopen With command with the custom editor example extension

このコマンドを使用して、VS Codeの標準テキストエディタとカスタムエディタを切り替えたり、リソースの複数のカスタムエディタを切り替えたりできます。

workbench.editorAssociations 設定

カスタムエディターについても、新しい`workbench.editorAssociations`設定により、特定のリソースに使用するエディターを設定できるようになりました。

以下の例では、`.catScratch`で終わるすべてのファイルを、拡張機能サンプルから取得したカスタムテキストエディターの例を使用して開くように設定しています。

"workbench.editorAssociations": [
  {
    "viewType": "catCustoms.catScratch",
    "filenamePattern": "*.catScratch"
  }
]

ビューの進捗がビュー自体に表示されるようになりました

カスタムビューの進捗表示を、ビューコンテナの最上部ではなく、ビュー自体に表示するように変更しました。これにより、実行時間の長い操作とその進捗との間により直接的な関連性が生まれます。また、拡張機能がビューにカスタム進捗を表示するための新しいAPIオプションも追加されました。

GitLens拡張機能ビューにプログレス表示がされているのが分かります。

View progress indication

新しいデフォルトのモノスペースフォント

VS Code UIで使われるモノスペースフォントを更新しました。

.mac { --monaco-monospace-font: "SF Mono", Monaco, Menlo, Courier, monospace; }
.windows { --monaco-monospace-font: Consolas, "Courier New", monospace; }
.linux { --monaco-monospace-font: "Ubuntu Mono", "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace; }

この変更は、エディターのフォント選択には影響しません。

エディター

ファイルを再度開いても元に戻すスタックを保持

VS Codeは、ファイルを閉じたときにファイルの元に戻す/やり直すスタックを保持するようになりました。ファイルが再度開かれ、閉じる前と内容が変更されていない場合、元に戻す/やり直すスタックが復元されます。

`workbench.editor.limit.value`設定で開いているエディターの数を制限している場合や、作業中のファイルを誤って閉じてしまった場合に、これは非常に便利です。

保存時のコードアクションの明示的な順序付け

`editor.codeActionsOnSave`を、順序どおりに実行するCode Actionsの配列に設定できるようになりました。これにより、特定のCode Actionが、競合する可能性のある他のCode Actionの前後で常に実行されることを保証できます。

以下の`editor.codeActionsOnSave`は、インポートの整理が完了したら、常にインポートの整理、次にすべてを修正を実行します。

"editor.codeActionsOnSave": [
    "source.organizeImports",
    "source.fixAll"
]

次を検索する際に editor.wordSeparators を使用する

Add Selection to Next Find Matchコマンド (⌘D (Windows, Linux Ctrl+D)) が、`editor.wordSeparators`設定を尊重するようになりました。以前は、このコマンドは現在のファイルの言語によって定義された単語定義を使用していました。

デバッグ

コールスタックビューの改善

CALL STACKビューは、さまざまな種類のオブジェクト(セッション、プロセス、スレッド、スタックフレーム、区切り要素)を表示し、さまざまな種類に対して異なるアクションを提供するため、複雑なビューです。オブジェクトの種類を区別し、それらがサポートするインタラクションを理解しやすくするために、いくつかの視覚的な改善を開始しました。

  • デバッグセッションにはアイコンが装飾されるようになりました。
  • クリック可能な要素はリンクの色を使用します。
  • より小さな区切り要素と表示要素。

Call Stack

新しいデバッグコンソールアイコン

デバッグコンソールに新しいアイコンを導入し、パネルからデバッグコンソールビューを移動した際にアクティビティバーでもこのアイコンを使用するようにしました。

Debug Console icon

デバッグ拡張機能の進捗フィードバックUI

VS Codeは、前回のマイルストーンで提案されたデバッグアダプタープロトコル(DAP)の「進捗イベント」をサポートするようになりました。進捗イベントにより、デバッグ拡張機能は実行時間の長い操作に対するフィードバックをユーザーに提供できます。

VS CodeのデバッグUIは、2か所で進捗フィードバックを表示します

  • デバッグビューの上部にプログレスバーとして表示。
  • 「サイレント通知」として表示されます。これは、ステータスバーに(ユーザーを中断することなく)「サイレントに」進捗が表示され、クリックすることで通知として開くことができることを意味します。通知にはより詳細な情報が表示され、(操作がキャンセルをサポートしている場合)基となる長時間実行操作のキャンセルが可能です。

短い操作でのちらつきを避けるため、進捗UIは0.5秒の遅延後にのみ開始されます。

以下のビデオは、Mock Debug(現在のところ唯一のサポートするデバッグ拡張機能)における(シミュレートされた)長時間実行操作の新しい進捗UIを示しています。他のデバッグ拡張機能もすぐに進捗サポートを導入すると予想されます。

Debug progress UI

デバッグコンソールでのコード補完選択

前回のマイルストーンで、デバッグアダプタープロトコルの「補完」要求に選択制御を追加しました。このリリースでは、VS Codeはプロトコル追加を完全にサポートし、補完項目が挿入された後、デバッグ拡張機能が選択(または挿入点)を調整できるようになりました。

統合ターミナル

メニューバーのニーモニックがターミナルをスキップできるようにする

新しい設定`terminal.integrated.allowMenubarMnemonics`が有効になっている場合、`Alt`を使用するすべてのキーストロークはターミナルをスキップし、VS Codeのキーバインディングマネージャーによって処理されるため、ターミナル内の`Alt`ホットキーを犠牲にして、すべてのメニューニーモニックが機能します。この設定はデフォルトで無効になっています。

言語

JavaScriptの自動インポートスタイル

新しい`javascript.preferences.importModuleSpecifierEnding`設定により、VS Codeの自動インポートが使用するインポートのスタイルを制御できます。これは、ネイティブES6モジュールをサポートするブラウザなどのプラットフォーム向けにコードを記述する場合に役立ちます。

可能な値は次のとおりです。

  • auto - デフォルト。プロジェクトのjsconfigを使用して、使用するインポートスタイルを決定します。
  • minimal - Node.jsスタイルのインポートを使用します。これにより、`src/component/index.js`のインポートが`src/component`に短縮されます。
  • index - パスの一部である`index`も含めます。これにより、`src/component/index.js`が`src/component/index`に短縮されます。
  • js - ファイル拡張子(`.js`)を含むフルパスを使用します。

タスク

タスククイックピックの高速化

タスククイックピックは、以前はタスクのリストを表示する前に、すべてのタスク提供拡張機能からすべてのタスクを取得していました。現在、VS Codeはクイックピックドロップダウンを表示する前に、追加の拡張機能タスクをフェッチしないため、はるかに高速になりました。拡張機能によって提供されるタスクも、要求されたときにのみフェッチされるため、拡張機能ホストの負荷が軽減されます。

以下のTypeScriptで提供される`tsc`タスクは、ユーザーがtypescript拡張機能を選択した後にのみフェッチされます。

Task Quick Pick

テーマ:One Dark Pro

プレビュー機能

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

設定の同期

この数か月間、VS Codeの設定、拡張機能、キーボードショートカットをマシン間で同期する作業を進めてきました。この機能は、Insidersリリースでプレビュー版として利用可能です。

このマイルストーンでは、ユーザーのスニペットとより多くのUI状態の同期が追加されました。

Settings Sync configuration

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

現在、以下のUIの状態が同期されます。

  • 表示言語
  • アクティビティバーのエントリ
  • パネルエントリ
  • ビューのレイアウトと表示
  • 最近使用したコマンド
  • 「再度表示しない」通知

注: 現在、ユーザー言語スニペットのみが同期されます。グローバルスニペットのサポートは次のマイルストーンで追加されます。

また、データ復元とトラブルシューティングを支援するためのリモートおよびローカル同期バックアップビューも追加しました。これらのビューは、コマンド設定同期: リモートバックアップを表示設定同期: ローカルバックアップを表示を使用してアクセスできます。

Settings Sync backups view

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

詳細については、設定同期のドキュメントをご覧ください。

アカウント管理

認証プロバイダーを提供する拡張機能は、設定ギアの上にある新しいアカウントコンテキストメニューにそのアカウントが表示されるようになりました。現在サインインしているすべてのアカウントを表示したり、サインアウトしたり、信頼できる拡張機能を管理したりできます。ここからMicrosoftアカウントにサインインすることも、設定同期を開始する別の方法です。

Accounts context menu

テーマ:Pop Light with Customizations

新しいJavaScriptデバッガー

今月も、新しいJavaScriptデバッガーの開発が進みました。これはInsidersではデフォルトでインストールされており、VS Code Stableではマーケットプレイスからインストールできます。`debug.javascript.usePreview`設定を有効にすることで、既存の起動設定で使用を開始できます。今月追加された新機能の一部を以下に示します。

デバッグ端末でのリンク処理

デバッグターミナル(デバッグ: JavaScriptデバッグターミナルを作成)を使用すると、任意のNode.jsプロセスを自動的にデバッグできます。また、デバッガーはリンクをCmd/Ctrl+クリックすると、ブラウザをデバッグするリンクも自動的に処理します。設定は不要です。

Animation showing clicking on a link in the debug terminal, Chrome opening, and hitting a breakpoint

テーマ: Earthsong、フォント: Fira Code

ウォッチとデバッグコンソールで$returnValueを参照する

コールスタックで利用できる場合、デバッグコンソールとウォッチ式で関数の`$returnValue`を参照できるようになりました。

Screenshot showing $returnValue being referenced in the Debug Console and Watch expression

TypeScript 3.9 Betaのサポート

このイテレーションでは、新しいTypeScript 3.9 Betaの機能をサポートしました。TypeScript 3.9のハイライトの一部は次のとおりです。

  • // @ts-expect-errorディレクティブの提案。
  • 改行と書式設定をより適切に保持するリファクタリング。
  • JavaScriptの自動インポートで、Common JSスタイルのインポート(`require(...)`)が追加できるようになりました。

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

ビュー配置の柔軟性の向上

私たちは、個々のビューを移動できるようにすることで、レイアウトの柔軟性を向上させるために、いくつかのイテレーションにわたって作業してきました。このイテレーションでは、新機能を追加するだけでなく、エクスペリエンスも磨き上げました。

新しいドラッグ&ドロップ体験

サイドバー内でのアクティビティバーアイコン、パネル、ビューのドラッグ&ドロップは簡単でしたが、曖昧でした。これらのアイテムを実際にドロップしたときに何が起こるか正確に知ることは難しい場合がありました。新しいエクスペリエンスは、明確さを改善し、私たちが途中で有効にする新機能を強調することを目的としています。

以下に、ユーザーがサイドバー内でビューの順序を並べ替え、次にパネル内でタブを、アクティビティバー内でアイコンの順序を並べ替える様子を示します。

New Drag and Drop experience

単一パネル内の複数ビュー

水平方向のスペースをより有効に活用するため、1つのパネル内に複数のビューを持つことができるようになりました。よくあるリクエストの1つは、ターミナルと問題ビューを同時に見ることです。これは、以下に示すようにターミナルを問題ビューにドラッグすることで実現できます。

Terminal and Problems view side by side

新しいサイドバーグループの作成とパネルの移動

ビューを新しいサイドバーグループに移動して、アクティビティバーに新しいアイコンエントリを作成できるようになりました。組み込みのパネルも例外ではなく、既存のサイドバーエントリまたは独自の新しいエントリに移動できます。

次のビデオは、ユーザーがターミナルをアクティビティバーにドラッグすると、ターミナルアイコンとサイドバーにターミナル用のスペースが作成される様子を示しています。次に、ユーザーは出力をターミナルサイドバー内にドロップします。最後に、アウトラインがエクスプローラーからアクティビティバーに移動され、独自のサイドバー領域が作成されます。

Dragging views into the Activity Bar

パネルへのビューコンテナの貢献

現在、拡張機能がビューをパネルに直接提供するために必要なものがすべて揃っています。これは、現在アクティビティバーで可能なのと同様で、ツリービューAPIガイドに記載されています。この機能はまだプレビュー段階であり、安定版とみなされるまではツリービューのドキュメントにこれらの変更は反映されません。ただし、試すには、ドキュメントのスニペットをこれに更新してください。

"contributes": {
  "viewsContainers": {
    "panel": [
      {
        "id": "package-explorer",
        "title": "Package Explorer",
        "icon": "media/dep.svg"
      }
    ]
  }
}

ビュー移動用のコマンド

最後に、キーボードでビューを移動したり、レイアウトをリセットしたりするための新しいコマンドが追加されました。ビュー: フォーカスされているビューを移動コマンド(`workbench.action.moveFocusedView`)は、今回のイテレーションの新機能をサポートするように更新されました。ビュー: フォーカスされているビューの位置をリセットコマンド(`workbench.action.resetFocusedViewLocation`)は、個々のビューをデフォルトの位置に戻すために追加されました。

パネルとカスタムビューのアクティビティバーアイコン

柔軟なレイアウトの導入により、デフォルトのパネルビューがアクティビティバーに移動した際に、専用のアイコンが割り当てられるようになりました。複数のビューを結合する際には、カスタムビュー用の(デフォルトの)アイコンも用意されています。

Panel view icons

同期された領域

昨年11月に導入されたミラーカーソル機能が、同期領域という新しい実装によって改善されました。現在この機能はHTMLで利用可能であり、以下のいずれかの方法で試すことができます。

  • HTMLタグ上でOn Type Rename Symbolコマンドを実行する(デフォルトでにバインドされています)。
  • `editor.renameOnType`設定をオンにし、カーソルをHTMLタグに移動します。

HTML rename on type

赤い領域は同期領域です。名前が示すように、1つの領域での変更は他の領域に同期されます。このモードを終了するには、カーソルを領域外に移動するか、`ESC`を押します。さらに、いずれかの領域で空白文字から始まるコンテンツを入力または貼り付けると、このモードは終了します。

このタイプ時リネーム体験をJSX、XML、あるいはTypeScriptのローカル変数など、他の言語でも利用できるようにするAPIの提供を楽しみにしています。

拡張機能への貢献

リモート開発

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

1.44 の主要な新機能は次のとおりです。

  • Dev Containers: PR をコンテナに直接チェックアウト。
  • Dev Containers: Kubernetesコンテナへのアタッチをサポート。
  • Dev Containers: 実験的なWSL 2 Dockerエンジンサポート。

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

拡張機能作成

ようこそビューコンテンツAPI

一部のビューは、拡張機能から提供されたウェルカムコンテンツをサポートするようになりました。詳細については、元の問題を参照してください。拡張機能によって提供されるビューでこのAPIを使用する方法の詳細については、ツリービューのドキュメントを読むことができます。

このAPIは、前回のマイルストーンで提案されたものとして追加され、今回正式に決定されました。

セマンティックトークンプロバイダーAPI

セマンティックトークンプロバイダーAPIが正式にリリースされました。

セマンティックトークンのテーマサポート

カラーテーマは、TypeScriptのような言語拡張機能によって報告されたセマンティックトークンを色付けするルールを記述できるようになりました。

"semanticHighlighting": true,
"semanticTokenColors": {
    "variable.declaration.readonly:java": { "foreground": "#00ff00" "fontStyle": "bold" }
}

上記のルールは、Javaにおける読み取り専用変数のすべての宣言を緑色かつ太字で着色することを定義しています。

Semantic Highlighting Wiki Pageに詳細情報があります。

TypeScriptセマンティックトークンの改善

より多くのセマンティックトークンタイプがTypeScript Language Serverによって返されるようになりました。カラーテーマはこれらの新しいトークンタイプを利用してスタイリングできます。

  • JavaScriptのデフォルトライブラリのすべてのシンボルには、`defaultLibrary`修飾子が付きます。
  • コールバックである関数パラメーターは`function`として分類されます。

TypeScript言語サーバーから返されるすべてのセマンティックトークンタイプと修飾子の概要については、TypeScript Semantic Highlighting plugin READMEをお読みください。

ファイルシステムエラーコード

FileSystemError#codeを追加しました。これはエラーを識別する文字列です。ファイルシステムエラーがファクトリ関数を介して作成されると、`code`はその関数の名前になります。例えば、`FileSystemError.FileNotFound(msg).code === 'FileNotFound'`となります。

StatusBarItem.command の引数

`StatusBarItem.command`が、コマンドIDだけでなく、完全な`Command`オブジェクトを受け入れるようになりました。これにより、ステータスバーアイテムがアクティブ化されたときに、拡張機能がコマンドに引数を渡すことができます。

カスタムテキストエディタ

カスタムテキストエディターを使用すると、拡張機能はVS Codeの標準エディターを、特定のテキストベースのリソース用のカスタムwebviewベースのビューに置き換えることができます。潜在的なユースケースには、以下が含まれます。

  • シェーダーや`.obj`ファイルなどのアセットのプレビュー。
  • XAMLなどのマークアップ言語用のWYSIWYGエディターの作成。
  • JSONやCSVなどのデータファイルの代替のインタラクティブなビューの提供。

カスタムエディターのドキュメントでは、新しいカスタムテキストエディターAPIの使用方法と、新しいエディターがVS Codeで適切に動作するようにする方法が説明されています。カスタムエディター拡張機能サンプルも必ず確認してください。

The custom editor example extension

次回のイテレーションでは、カスタムエディターをバイナリファイルもサポートするように拡張する完全なカスタムエディター提案を最終化したいと考えています。

ビューレベルの進捗表示

`window.withProgress` APIの`ProgressOptions.location`に、特定のビューに進捗を表示できるようにする新しいオプションを追加しました。使用するには、`ProgressOptions.location = { viewId: };`を設定します。ここで``は、進捗を表示したいビューのIDを指定します。この動作を示す短いビデオが、上記のビューの進捗セクションにあります。

拡張機能ビューのコンテキストメニューwhen-clauseコンテキスト

拡張機能ビューのコンテキストメニューに、拡張機能の識別子を含む新しい`extension`when-clauseコンテキストを追加しました。

  "extension/context": [
      {
          "command": "gitlens.showSettingsPage",
          "group": "2_configure",
          "when": "extension == eamodio.gitlens && extensionStatus == installed",
      }
  ]

新しいCodicons

Codiconライブラリに以下のアイコンを追加しました。

  • account
  • bell-dot
  • debug-console
  • library
  • output
  • run-all
  • sync-ignored

New codicons

組み込み言語サーバーの記述に関するドキュメント

組み込みプログラミング言語用の言語サーバーの記述は、プレーンな言語サーバーの記述よりも複雑です。今日、組み込み言語が普及していることを鑑み、言語拡張機能のセクションに組み込み言語トピックを追加しました。このドキュメントには、組み込み言語サーバーを構築するための2つのアプローチ(言語サービスとリクエスト転送)を示す2つのサンプルが含まれています。組み込み言語のドキュメントを確認するか、直接2つのサンプルに進んでください。

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

新しいプログレスイベント

デバッグアダプタープロトコルにおける進捗レポートのサポートを正式に決定しました。デバッグアダプターは、長時間実行されるデバッグアダプター操作の進捗を表示するために、進捗イベント(`progressStart`、`progressUpdate`、`progressEnd`)をフロントエンドクライアントに送信できるようになりました。`progressStart`イベントはキャンセル可能とマークすることができ、クライアントがキャンセルUIを表示し、`cancel`リクエストを送信するようにします。サポートするデバッグアダプターで進捗イベントを有効にするには、フロントエンドクライアントは`initialize`リクエストに新しいクライアント機能`supportsProgressReporting`を含める必要があります。

詳細については、対応するDAP機能リクエストを参照してください。VS Codeは、このマイルストーンから進捗イベントをサポートします。

"evaluate"リクエストのクリップボードコンテキスト値

DAPクライアント(フロントエンド)は、変数や式の値をクリップボードにコピーする際に`evaluate`リクエストを使用します。このシナリオをデバッグアダプターが検出できるように、`evaluate`リクエストに渡される`context`引数の値セットに新しい値`clipboard`が追加されました。後方互換性を確保するため、クライアントは、デバッグアダプターが`supportsClipboardContext`機能を返す場合にのみ、新しい値を渡すことが許可されます。

言語サーバープロトコル

言語サーバーインデックス形式の新しいバージョン(0.5.0)の仕様が公開されました。このバージョンは、モノカーを使用してプロジェクトダンプ間で参照結果をリンクすることをサポートしています。さらに、LSPクライアント(6.2.0-next.2)とサーバー(6.2.0-next.2)ライブラリの新しいバージョンが公開されています。

提案された拡張API

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

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

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

この新しいAPIにより、拡張機能はターミナルでクリックされたリンクを傍受し、処理できるようになります。

window.registerTerminalLinkHandler({
  handleLink((terminal, link) => {
    if (link === 'https://vscode.dokyumento.jp') {
      window.showInformationMessage('Handled');
      return true;
    }
    return false;
  });
});

端末環境への貢献

この新しいAPIにより、拡張機能はターミナル起動時に環境変数を変更できるようになります。

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

これらのコレクションは拡張機能とワークスペースに特化しており、複数の拡張機能間の競合はVS Codeが処理します。ウィンドウのリロード後もオプションで永続化でき、ウィンドウがロードされた直後に作成されたターミナルが拡張機能ホストの起動をブロックせず、代わりに最後に知られたバージョンを使用するように注意が払われています。これらの永続化されたコレクションは、コレクションを破棄するか、新しい非永続化コレクションを作成するか、または拡張機能がアンインストールされたときに削除できます。

これらの環境変更を「古い」端末環境を更新できるインジケーターを通じてユーザーに表示する計画ですが、これはまだ進行中です。問題 #46696で議論を追うことができます。

ブラウザーのサポート

リモートインジケーター

ブラウザでVS Codeを使用している場合、リモートインジケーターが表示されるようになりました。これにより、接続しているリモート環境がわかり、拡張機能がリモートに関連付けられた追加コマンドを追加できるようになります。この変更により、デスクトップで開くリンクはステータスバーから削除され、リモートピッカーに移動します。

注: VS Codeは現在、ブラウザからSSH、コンテナ、WSLなどの別のリモートへの接続をサポートしていません。

Web remote indicator

新しいメニューの場所により、ブラウザで実行されている拡張機能が左上のハンバーガーメニューにリンクを提供できるようになりました。

Web navigational links

エンジニアリング

VS Code は ES6 にコンパイルされます

VS Code は全面的に ES6 を採用しました。TypeScript のおかげで、長い間 ES6 構文を使用してきましたが、ターゲットランタイムも ES6 をサポートしていると仮定するようになりました。これにより、`Strings#endsWith` のような ES6 の「グローバル」を使用できるようになり、ジェネレーター関数やシンボルなどの新しい言語機能も使用できるようになります。

GitHub Actionsによる課題トリアージの自動化

このイテレーションでは、既存のトリアージ自動化をGitHub AppsからGitHub Actionsに移行しました。これにより、vscodeリポジトリでログを取得できるようになったり、開発速度が向上したりといったメリットがありました。さらに、いくつか新しい自動化を追加しました。例えば、修正がVS Code Insidersにプルされた際に課題の作成者に通知するActionなどがあり、作成者が修正が効果的かどうかを素早く検証できるようになりました。

私たちが使用するActionsの完全なセットは、MITライセンスの下でGitHubでリリースされています。

ドキュメントと拡張機能

Python

2つの新しいPythonチュートリアルがあります。

C++

C++拡張機能のチュートリアルが書き直され、LinuxでのC++の使用に特化した新しいチュートリアルが追加されました。

Docker拡張機能

Microsoft Docker拡張機能のバージョン1.0が利用可能になりました。この拡張機能は、プロジェクトにDockerファイルを追加したり、Dockerイメージをビルドおよびデバッグしたり、コンテナやイメージを簡単に起動、停止、検査、削除するためのエクスプローラーを含んでいます。

Docker extension

Azure拡張機能

VS Code内からAzureアセットを直接操作するための2つの新しい拡張機能が利用可能です。

Azure Virtual Machines extension

注目すべき修正点

  • 75932: デバッグの読み込みに失敗しました: プロセスピッカーに失敗しました (131072x1の画面サイズはデタラメです。問題が発生する可能性があります)
  • 84271: 最近開いたファイル(クイックピック)からファイルを削除する「x」を追加
  • 89658: デバッグアダプターが見つかりません
  • 92381: ワークスペースにフォルダを追加したり削除したりを繰り返すと、「ワークスペースにフォルダを追加」プロンプトが重複する
  • 93344: ウェルカムビューはスクロールすべき
  • 93634: 進捗:ウィンドウの進捗をサイレント通知の進捗に変える

ありがとうございます

最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!

問題追跡への貢献者

vscodeへの貢献者

常にフィードバックを提供してくれる私たちのアクセシビリティコミュニティ!いくつか例を挙げると:

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

language-server-protocolへの貢献者

vscode-languageserver-nodeへの貢献者

vscode-generator-codeへの貢献者

vscode-loaderへの貢献

localizationへの貢献

Microsoft Localization Community Platform(MLCP)を利用するCloud + AI Localizationコミュニティメンバーは800人以上おり、Visual Studio Codeに積極的に貢献しているのは約170人です。新しい翻訳の提供、翻訳への投票、プロセス改善の提案など、皆様の貢献に感謝いたします。

以下に貢献者のスナップショットを示します。貢献者名リストを含むプロジェクトの詳細については、プロジェクトサイトhttps://aka.ms/vscodelocをご覧ください。

  • 中国語 (簡体字, 中国) Tingting Yi, Yizhi Gu, Charles Dong, Justin Liu, Joel Yang, Tony Xia, 朱知阳, meng shao, 普鲁文, paul cheung, 张锐, Yiting Zhu, Nong Zhichao, Liam Kennedy, 武 健, Zhao Liguo, 宁 倬, Bochen Wang, 一斤瓜子, 顺 谭, 云 何, Yun Liu, yungkei fan.
  • 中国語 (繁体字, 台湾) 船長, Winnie Lin, 予 恆.
  • チェコ語 David Knieradl.
  • デンマーク語 (デンマーク) Javad Shafique, Lasse Stilvang.
  • 英語 (イギリス) Martin Littlecott, Oren Recht, Faris Ansari.
  • フィンランド語 (フィンランド) Teemu Sirkiä.
  • フランス語 (フランス) Antoine Griffard, Thierry DEMAN-BARCELÒ, Rodolphe NOEL, Nathan Bonnemains.
  • ヘブライ語 (イスラエル) Chayim Refael Friedman, Asaf Amitai.
  • インドネシア語 (インドネシア) Gerry Surya, Laurensius Dede Suhardiman.
  • イタリア語 (イタリア) Alessandro Alpi, Riccardo Cappello.
  • 日本語 (日本) Ikko Ashimine, Aya Tokura, Takayuki Fuwa, ちゃん きさらぎ, 住吉 貴志, Koichi Makino, Yoshihisa Ozaki, TENMYO Masakazu.
  • 韓国語 (韓国) Kyunghee Ko, June Heo.
  • ノルウェー語 (ノルウェー) Torbjørn Viem Ness.
  • ポーランド語 (ポーランド) Makabeus Orban, Kacper Łakomski.
  • ポルトガル語 (ブラジル) Alessandro Trovato, Marcelo Fernandes, Arthur Lima, Luciana de Melo, Luiz Gustavo Nunes.
  • ポルトガル語 (ポルトガル) Pedro Filipe.
  • ロシア語 (ロシア) Andrey Veselov, Vadim Svitkin, Минаков Антон.
  • スペイン語 (スペイン、国際ソート) Sifredo Da Silva, Ariel Costas Guerrero, David Roa, Abdón Rodríguez P., Luis Manuel, Carlos A. Echeverri V.
  • スウェーデン語 (スウェーデン) Per Ragnar Edin.
  • タミル語 (インド) krishnakoumar c.
  • トルコ語 (トルコ) Umut Can Alparslan, Mehmet Yönügül.
  • ウクライナ語 (ウクライナ) Nikita Potapenko.
  • ベトナム語 (ベトナム) Hieu Nguyen Trung.