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

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

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

Update 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をフォローしてください!

アクセシビリティ

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

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

タイムラインビュー

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

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

Collapsed Timeline view

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

タイムラインビューの動作はこちらです

Timeline view

テーマ: Dark Amethyst

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

Workbench

クイックオープンの書き換え

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による) であっても、エディターで開いて表示されている場合、そのファイルは親チェーンとともにファイルエクスプローラーに表示されます。これらのファイルとその親は、エディター領域で表示されている限り、薄暗い色でファイルエクスプローラーに表示されます。

ビュー: 別のもので再度開く

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

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; }

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

Editor

ファイルを再度開いたときに元に戻すスタックを保持

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

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

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

editor.codeActionsOnSaveを、順序通りに実行するコードアクションの配列に設定できるようになりました。これにより、特定のコードアクションが、競合する可能性のある別のコードアクションの前または後に常に実行されることを保証できます。

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

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

Next Find Matchにeditor.wordSeparatorsを使用

コマンド選択範囲を次の検索一致に追加 (⌘D (Windows, Linux Ctrl+D)) が、設定editor.wordSeparatorsを尊重するようになりました。以前は、このコマンドは現在のファイルの言語で定義された単語の定義を使用していました。

デバッグ

呼び出しスタックビューの改善

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

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

Call Stack

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

デバッグコンソールに新しいアイコンを導入し、デバッグコンソールビューがパネルから移動された場合にもアクティビティバーで使用されるようになりました。

Debug Console icon

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

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

VS CodeのデバッグUIは、2つの場所で進行状況のフィードバックを表示します。

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

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

以下のビデオは、Mock Debug(本日時点で唯一対応しているデバッグ拡張機能)での(シミュレートされた)長時間実行操作の新しい進行状況UIを示しています。他のデバッグ拡張機能もすぐに進行状況のサポートを採用することを期待しています。

Debug progress UI

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

前回のマイルストーンでは、Debug Adapter Protocolの「completion」リクエストに選択制御を追加しました。このリリースにより、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.jssrc/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状態が同期されます。

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

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

また、データの復元やトラブルシューティングに役立つリモートおよびローカルの同期バックアップビューを追加しました。これらのビューには、Preferences Sync: Show Remote Backup (設定の同期: リモートバックアップを表示) およびPreferences Sync: Show Local Backup (設定の同期: ローカルバックアップを表示) コマンドを使用してアクセスできます。

Settings Sync backups view

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

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

アカウント管理

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

Accounts context menu

テーマ: Pop Light (カスタマイズ済み)

新しいJavaScriptデバッガー

今月も引き続き、新しいJavaScriptデバッガーの開発を進めています。これはInsidersではデフォルトでインストールされており、VS Code StableではMarketplaceからインストールできます。既存の起動構成でdebug.javascript.usePreview設定を有効にすることで、使用を開始できます。今月追加された新機能の一部をご紹介します。

デバッグターミナルでのリンク処理

デバッグターミナル (Debug: Create JavaScript Debug Terminal) を使用して、任意の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の自動インポートで、一般的なJSスタイルのインポート (require(...)) を追加できるようになりました。

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

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

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

新しいドラッグアンドドロップ体験

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

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

New Drag and Drop experience

1つのパネルに複数のビュー

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

Terminal and Problems view side by side

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

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

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

Dragging views into the Activity Bar

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

拡張機能がビューをパネルに直接貢献するために必要なすべての機能が揃いました。これは、今日のActivity Barと同様に、ツリービューAPIガイドに文書化されています。この機能はまだプレビュー段階であり、安定版とみなされるまでツリービューのドキュメントにはこれらの変更が反映されないことに注意してください。ただし、試すには、ドキュメントのスニペットを以下のように更新してください。

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

ビュー移動のためのコマンド

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

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

柔軟なレイアウトの導入により、デフォルトのパネルビューがアクティビティバーに移動した際に専用のアイコンが表示されるようになりました。また、複数のビューを組み合わせた場合のカスタムビュー用の(デフォルト)アイコンもあります。

Panel view icons

同期された領域 (Synced Regions)

昨年11月に導入されたミラーカーソル機能を、同期された領域 (Synced Regions) と呼ばれる新しい実装で改善しました。現在この機能はHTMLで利用可能で、以下のいずれかの方法で試すことができます。

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

HTML rename on type

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

JSX、XML、あるいはTypeScriptのローカル変数など、他の言語でもこの入力時リネーム機能を利用できるようにするAPIの提供を期待しています。

拡張機能への貢献

リモート開発

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

1.44の機能ハイライトは以下の通りです

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

リモート開発リリースノートで、新しい拡張機能とバグ修正について学ぶことができます。

拡張機能作成

ウェルカムビューコンテンツAPI

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

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

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

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

セマンティックトークンに対するテーマサポート

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

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

上記のルールは、Javaの読み取り専用変数のすべての宣言を緑色で太字にするよう定義しています。

セマンティックハイライトのWikiページには、さらに詳細な情報があります。

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

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

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

TypeScript言語サーバーによって返されるすべてのセマンティックトークンタイプと修飾子の概要については、TypeScript Semantic HighlightingプラグインのREADMEを参照してください。

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

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

StatusBarItem.commandの引数

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

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

カスタムテキストエディターを使用すると、拡張機能はVS Codeの標準エディターを、特定のテキストベースのリソースに対応したカスタムのウェブビューベースのビューに置き換えることができるようになりました。潜在的な使用例としては、次のものが挙げられます。

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

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

The custom editor example extension

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

ビューレベルの進行状況表示

window.withProgress APIのProgressOptions.locationに、特定のビューで進行状況を表示できるようにする新しいオプションを追加しました。使用するには、ProgressOptions.location = { viewId: <view-id> };と設定します。ここで<view-id>は進行状況を表示したいビューの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つのサンプルに進んでください。

Debug Adapter Protocol

新しい進行状況イベント

Debug Adapter Protocolでの進行状況報告のサポートが確定しました。デバッグアダプターは、長時間実行されるデバッグアダプター操作の進行状況を表示するために、進行状況イベント (progressStartprogressUpdate、およびprogressEnd) をフロントエンドクライアントに送信できるようになりました。progressStartイベントはキャンセル可能としてマークすることができ、クライアントにキャンセルUIを表示させ、cancelリクエストを送信させることができます。サポートされているデバッグアダプターで進行状況イベントを有効にするには、フロントエンドクライアントがinitializeリクエストに新しいclient機能supportsProgressReportingを含める必要があります。

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

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

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

Language Server Protocol

Language Server Index Formatの仕様の新しいバージョン (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を使用している場合、リモートインジケーターが表示されるようになりました。これにより、接続されているリモート環境がわかり、拡張機能がリモートに関連する追加コマンドを追加できるようになります。この変更により、ステータスバーからOpen in Desktopリンクが削除され、リモートピッカーに移動されます。

注: 現在、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 - 事前設定されたSSHアクセスを持つUbuntu仮想マシンを作成し、Remote-SSH拡張機能を使用して接続できます。

  • Azure Resource Groups - すべてのAzureリソースを表示し、Azureビューでそれらに素早く移動できます。

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への貢献

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

こちらに貢献者のスナップショットがあります。貢献者名リストを含むプロジェクトの詳細については、プロジェクトサイト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.