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

2021年9月 (バージョン 1.61)

更新 1.61.1: この更新は、これらの問題に対処しています。

更新 1.61.2: この更新は、これらの問題に対処しています。

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


Visual Studio Code 2021年9月リリースへようこそ。このバージョンでは多くの更新があり、皆様に気に入っていただけることを願っています。主なハイライトをいくつかご紹介します。

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

このバージョンの新機能のハイライトを視聴するには、VS Codeチームのリリースパーティーをご覧ください。イベントの録画はYouTubeチャンネルでご覧いただけます。

Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。

ワークベンチ

新しいグループを作成せずにエディターを分割

新しいコマンドSplit in Group (⌘K ⇧⌘\ (Windows, Linux Ctrl+K Ctrl+Shift+\)) が追加され、2つ目のエディターグループを必要とせずにエディターを2つの側に分割できるようになりました。これにより、同じファイルを2つのエディターで並べて作業できます。また、短いビデオで示されているように、Toggle Layoutボタンで垂直分割と水平分割を切り替えることもできます。

分割を垂直または水平にしたい場合は、新しい設定workbench.editor.splitInGroupLayoutがあります。

キーバインディングでこの機能を使用するための新しいコマンドがあります。

  • workbench.action.splitEditorInGroup
  • workbench.action.toggleSplitEditorInGroup
  • workbench.action.joinEditorInGroup
  • workbench.action.toggleSplitEditorInGroupLayout

そして、両側を移動するには

  • workbench.action.focusFirstSideEditor
  • workbench.action.focusSecondSideEditor
  • workbench.action.focusOtherSideEditor

新しい色sideBySideEditor.borderは、片側と反対側を区切る境界線の色を設定します。

ロックされたエディターグループ

前回のマイルストーンで、実験的な新機能としてロックされたエディターグループを導入しました。このマイルストーンでは、設定エクスペリエンスが改善され、開いたときにグループを自動的にロックするエディターを簡単に選択できるようになりました。

Locked editor group setting

この設定はworkbench.editor.autoLockGroupsと名付けられました。同様に、エディターグループのロックに関連するコマンドも名前が変更され、実験的なものではなくなりました。

  • workbench.action.lockEditorGroup
  • workbench.action.unlockEditorGroup
  • workbench.action.toggleEditorGroupLock

装飾で削除済みおよび読み取り専用エディターを示す

開かれたエディターは、読み取り専用であるか、関連するリソースがディスクから削除されたかを示すことができます。この表示は、エディターのラベルに「deleted」および/または「readonly」を追加することで行われていましたが、かなりのスペースを必要としました。

VS Codeは、この目的のために装飾を使用するようになりました。

  • 削除されたリソースを持つエディターは、取り消し線と赤で表示されます。
  • 読み取り専用のリソースを持つエディターは、ロックアイコンで表示されます。

Editor readonly and deleted decorations

既存のグループにエディターを分割する

エディターを横に分割すると、VS Codeは既存のグループが横にあっても新しいエディターグループを開きます。しかし、エディターを既存のグループに分割したい場合があります。

これをサポートするために、新しいコマンドが追加されました。

  • workbench.action.splitEditorToPreviousGroup: 前のグループに分割。
  • workbench.action.splitEditorToNextGroup: 次のグループに分割。
  • workbench.action.splitEditorToAboveGroup: 現在のグループの上のグループに分割。
  • workbench.action.splitEditorToBelowGroup: 現在のグループの下のグループに分割。
  • workbench.action.splitEditorToLeftGroup: 現在のグループの左のグループに分割。
  • workbench.action.splitEditorToRightGroup: 現在のグループの右のグループに分割。
  • workbench.action.splitEditorToFirstGroup: 最初のグループに分割。
  • workbench.action.splitEditorToLastGroup: 最後のグループに分割。

差分エディターの短いラベル

2つのファイルを比較すると、ファイル名にワークスペース相対のフォルダパスがプレフィックスとして付加され、比較対象のファイル名が見づらくなっていました。

今回のリリースでは、両方のファイル名が同じでない限り、フォルダがラベルから非表示になり、通常のエディターラベルの動作に一致するようになりました。

両方のファイル名が同じ場合、フォルダの違いを示す説明が表示されます。

Diff editor comparing two files

macOS: ファイルメニューの変更

macOSでは、ファイルメニューから開く...メニュー項目を選択すると、ファイルとフォルダの両方を開くことができます。新規ユーザーにとっては、これは驚きかもしれませんが、人々はフォルダを開くためにワークスペースを開くコマンドを使おうとしました。これは.code-workspaceファイルを開くためのメニュー項目です。

混乱を避けるため、macOSのファイルメニューにわずかな調整を加えました。

  • 新しいエントリーフォルダを開く...でフォルダを開きます。
  • ワークスペースを開く...ファイルからワークスペースを開く...に名前が変更されました。

macOS File menu

テレメトリー設定

新しいテレメトリー設定telemetry.telemetryLevelが追加され、より高い構成粒度が提供され、ユーザーはエラーテレメトリーのみを送信し、一般的な使用状況データは送信しないかどうかを選択できるようになりました。値はonerroroffです。onerrorの値はクラッシュレポーターも有効にします。

既存のtelemetry.enableTelemetrytelemetry.enableCrashReporterの設定は、新しいtelemetry.telemetryLevel設定に置き換えられる予定ですが、引き続き尊重されます。

ミニマップの背景透過性

新しく追加されたminimap.foregroundOpacity色を使用して、ミニマップの背景不透明度をミニマップテキストの不透明度とは独立して構成できるようになりました。

ヘルプメニュー項目の更新

入門エクスペリエンスの継続的な改善に伴い、ヘルプメニュー項目がより一般的に使用される名前に更新されました。これは新規ユーザーからの学習に基づいたものですが、誰もがヘルプを見つけやすくなることを願っています。入門ビデオビデオチュートリアルに、インタラクティブプレイグラウンドエディタープレイグラウンドになりました。新しい名前は、ヘルプメニューとコマンドパレットの両方で見つけることができます。ヘルプメニューには、コマンドパレットを開くための追加のエントリーポイントとしてすべてのコマンドを表示エントリーもあります。

エディター

括弧ペアガイド

エディターは、基本的な括弧ペアガイドをサポートするようになりました。括弧ペアガイドは、括弧ペアの色付け機能と同じ色とアルゴリズムを使用します。括弧ペアのマッチングアルゴリズムは、最近の「括弧ペアの色付けが10,000倍高速に」というブログ記事で詳しく説明されています。

インデントガイドと同様に、アクティブな括弧ペアガイドが強調表示されます。

Bracket pair guides shown in the editor

括弧ペアガイドは、editor.guides.bracketPairs設定(デフォルトはfalse)を構成することで有効にできます。この機能は今後も反復開発を続け、次回のリリースでは垂直ガイドも検討します。

インデントガイド設定

editor.renderIndentGuideseditor.highlightActiveIndentGuideの設定は、editor.guides.indentationeditor.guides.highlightActiveIndentationに置き換えられました。

ソース管理

Gitリポジトリの「アクションボタン」を公開または同期

Git拡張機能は、ソース管理ビューに新しい「アクション」ボタンを追加し、プッシュされていない変更をより簡単に公開または同期できるようにしました。

New Source Control view Sync button

テーマ: Amethyst Theme

デフォルトでは、Git拡張機能は、プッシュされていないコミットがある場合は上記のように変更を同期ボタンを、ブランチがまだ公開されていない場合は変更を公開ボタンを追加します。さらに、ユーザーはgit.showUnpublishedCommitsButton設定を構成することでこの動作をカスタマイズできます。この設定はデフォルトでwhenEmptyに設定されており、プッシュされていないコミットがあり、ビューに他の変更がない場合にのみボタンが表示されます。

この新しいアクションボタンは、ソース管理拡張機能の新しい提案APIとして利用可能です。詳細については、以下の提案APIセクションをご覧ください。

最後に、ユーザーは新しいscm.showActionButton設定を介して、ソース管理ビュー内のすべてのアクションボタンの表示を完全に無効にできます。これは、ソース管理拡張機能の動作を上書きします。

変更されたファイルの表示制限の増加

このリリース以前は、Git拡張機能にはソース管理ビューに表示できる変更数のハードコードされた制限が5000でした。この制限は、VS CodeがGitによって報告されたすべての変更を処理する間、ユーザーが長時間待つことを防ぐためでした。この制限は現在10,000変更に増加され、ユーザーが制限をカスタマイズできるようにする新しいgit.statusLimit設定が追加されました(必要に応じてリポジトリごとに)。この設定を0に設定して制限を完全に無効にすることもできますが、変更が多い場合は更新に時間がかかる可能性があることに注意してください。

さらに、制限を超過した場合に、入力ボックスに以下の警告インジケータを追加しました。

New warning indicator, which reads "Too many changes were detected. Only the first 10,000 changes will be shown below"

ターミナル

固定寸法

ターミナル: 固定寸法を設定コマンド (workbench.action.terminal.setDimensions) を介して、ターミナルの寸法を静的に設定できるようになりました。これは、行の折り返しがぎこちなかったり、邪魔になったりする場合に便利です。

このコマンドは、好みの幅や高さを入力できるプロンプトを表示します。

Terminal Set Fixed Dimensions column width prompt

カスタムのタイトルと説明

ターミナルの名前は通常、関連付けられているプロセス名であり、ターミナルを区別するのが難しい場合があります。

terminal.integrated.tabs.titleterminal.integrated.tabs.description設定で、変数を使ってタイトルと説明の両方を設定できるようになりました。

現在のデフォルト値は以下のとおりです。

{
  "terminal.integrated.tabs.title": "${process}",
  "terminal.integrated.tabs.description": "${task}${separator}${local}${separator}${cwdFolder}"
}

利用可能な変数は以下のとおりです。

  • ${cwd} - ターミナルの現在の作業ディレクトリ
  • ${cwdFolder} - ターミナルの現在の作業ディレクトリ。
  • ${workspaceFolder} - ターミナルが起動されたワークスペース。
  • ${local} - リモートワークスペースにおけるローカルターミナルを示す。
  • ${process} - ターミナルプロセスの名前。
  • ${separator} - 値を持つ変数または静的テキストに囲まれている場合にのみ表示される条件付き区切り文字 (" - ")。
  • ${sequence} - プロセスによってxterm.jsに提供される名前。
  • ${task} - このターミナルがタスクに関連付けられていることを示す。

絵文字IME

macOSの入力メソッドエディタ (IME) で絵文字がサポートされるようになりました。

Dialog showing Emojis available in the Integrated Terminal for IME on macOS

Altバッファアクティブコンテキストキー

nanoのような一部のターミナルUIアプリケーションは、VS Codeワークベンチによって消費されるキーボードショートカットを使用するため、VS Codeに統合されている場合に機能が制限されます。新しいwhen節コンテキストキーであるTerminalContextKeys.altBufferActiveは、altバッファがアクティブな場合にキーバインディングをワークベンチではなくターミナルに送ることで、この問題を回避します。

言語

新しいJavaScriptおよびTypeScript言語ステータスアイテム

現在のTypeScriptバージョンとIntelliSenseの状態が、言語ステータスバーアイテムに表示されるようになりました。

The JavaScript and TypeScript IntelliSense status item showing config file and TypeScript version

以前は、TypeScriptのバージョンは常にステータスバーに表示されていました。バージョンをピン留めすることで、以前の動作に戻すことができます。

言語ステータス項目は、現在のファイルのjsconfig/tsconfigも表示し、現在部分モードにいるかどうかを示します。

無題ファイル間のIntelliSense

すべての無題のJavaScriptおよびTypeScriptファイルは、同じプロジェクトの一部として扱われるようになりました。これにより、ある無題ファイルで定義されたグローバルシンボルが、他のファイルでも提案として表示されるようになります。

これは、ワークスペース内のディスク上のファイルの動作とよりよく一致します。無題のファイルにimportまたはexportを追加すると、モジュールになり、他のファイルからグローバル変数が非表示になります。

ウェブ上のファイル間のIntelliSense

VS Codeがブラウザで実行されている場合、vscode.devまたはgithub.dev上のJavaScriptおよびTypeScriptファイル間でIntelliSenseが動作するようになりました。

Cross file JavaScript IntelliSense on github.dev

VS Codeがブラウザで実行されている場合、現在開いているファイルにのみアクセスできるため、VS Codeは自動インポートなどのプロジェクト全体のIntelliSense機能を提供できないことに注意してください。

JSXタグのより一貫した折りたたみ

JavaScriptまたはTypeScriptでJSXタグを折りたたむと、VS Codeは閉じタグを引き続き表示するようになりました。

Folding in JSX

これはHTMLでの折りたたみ動作と一致します。

プレビュー機能

TypeScript 4.5のサポート

この更新には、間もなくリリースされるTypeScript 4.5の初期サポートが含まれています。新しい言語およびツール機能の詳細については、TypeScript 4.5ベータ版の発表記事をご覧ください。いくつかのツールのハイライトは以下の通りです。

  • JSX属性補完の初期サポート。
  • 参照CodeLensのより正確な参照カウント。

TypeScript 4.5のナイトリービルドの使用を開始するには、TypeScript Nightly拡張機能をインストールしてください。

TypeScript 4.5でバグが発生した場合は、ぜひフィードバックをお寄せください。

アプリケーション再起動時のターミナルセッションの復元

VS Codeウィンドウが閉じられると、ターミナルプロセスは破棄されます。このリリースでは、バッファを記録および復元し、それを使用してプロセスを再作成するための新しいオプトイン設定があります。これを有効にするには、terminal.integrated.persistentSessionReviveProcessを設定します。

The terminal buffer gets restored on application restart with a message indicating when the snapshot was taken

コンテンツ幅にターミナルサイズを切り替える

ターミナルの幅を、コンテンツ全体に合わせるか、行を折り返すか、⌥Z (Windows, Linux Alt+Z)で切り替えるか、タブのコンテキストメニューアクションコンテンツ幅にサイズを切り替えるで切り替えることができます。

これはエディターで行の折り返しを切り替えるのと似ており、キーバインディングも共有しています。

拡張機能への貢献

Jupyter

目次

Jupyter Notebookの目次には、コマンドパレットのJupyter: 目次を表示コマンドからアクセスできるようになりました。この機能は、ノートブックツールバーのアイコンからもアクセスできます。

この機能はVS Code内のすべてのノートブックに適用されるため、ファイルエクスプローラーのアウトラインビューからアクセスできます。

新しいファイルメニューから新しいノートブックを作成する

ファイル > 新しいファイル... メニュー項目を使用して、新しいJupyter Notebookを作成できるようになりました。このメニューは、ウェルカムページの新しいファイル...項目またはコマンドパレットからもアクセスできます。

デバッグ

VS CodeはJupyter Notebookの完全なデバッグ機能をサポートするようになりました。試すには、選択したカーネルとしてipykernel v6+がインストールされていることを確認し、ブレークポイントを設定して、セルをデバッグコマンドを選択します。

リモートデバッグ

リモートカーネルを使用して行ごとに実行し、Jupyter Notebookをデバッグすることもできます。試すには、Jupyter: 接続するローカルまたはリモートJupyterサーバーを指定するコマンドでリモートカーネルに接続し、選択したカーネルとしてipykernel v6+がインストールされていることを確認し、通常通り行ごとに実行またはデバッグを使用します。

レンダラー拡張機能を分離

Jupyter Notebookのレンダラーは別の拡張機能(Jupyter Notebook Renderers)に分割され、ユーザーはvscode.devgithub.devでplotly、vega、latexなどのノートブック出力を表示できるようになりました。

Python

新しいPythonチュートリアル

Python拡張機能は、VS CodeでのPythonの入門エクスペリエンスを向上させるための基本的な設定手順を含むチュートリアルを提供しています。

New Python walkthrough

デバッグ体験の改善

launch.json設定ファイルのないワークスペースで作業する場合、Python拡張機能は、Pythonファイルまたはプロジェクトのデバッグを開始するたびにデバッガー設定メニューを表示していました。これは、カスタム引数(Flask、Django、FastAPIなど)を使用するWebアプリケーションをデバッグする場合に特に煩わしいことがありました。

デバッグを開始するたびに設定を選択する必要がなくなり、最初に行った選択がセッションの残りの部分で再利用されるようになりました。

GitHubプルリクエストと課題

プルリクエストや課題の作業、作成、管理ができるGitHub Pull Requests and Issues拡張機能の開発が継続されています。ハイライトについては、拡張機能の0.31.0リリースの変更履歴をご確認ください。

リモート開発

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

バージョン1.61の主な機能は以下の通りです。

  • フォワードされたポートのDNS名。
  • コンテナの追加機能の簡単選択。
  • Dev Containers拡張機能はWSLでCLIコマンドを実行可能。

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

拡張機能作成

プラットフォーム固有の拡張機能

拡張機能は、VS Codeがサポートする各プラットフォーム(Windows、Linux、macOS)に対して異なるVSIXを公開できるようになりました。VS Codeバージョン1.61.0から、VS Codeは現在のプラットフォームに一致する拡張機能パッケージを探します。バージョン1.99.0から、vsce拡張機能公開ツールは、プラットフォーム固有の拡張機能の公開をサポートしています。

プラットフォーム固有の拡張機能は、拡張機能にプラットフォーム固有のライブラリや依存関係がある場合に便利です。プラットフォームパッケージに含める正確なバイナリを制御できます。一般的な使用例は、拡張機能がネイティブノードモジュールを使用する場合です。

これに関する詳細は、プラットフォーム固有の拡張機能ドキュメントで確認できます。

テストタグと非エラー出力

今月、新しいテストAPIに基づいて構築された拡張機能向けの追加APIが出荷されました。

  • テストタグを使用すると、特定のテストが実行できるかどうか、どのように実行できるか、または実行できないかを設定できます。

  • 非エラー出力を使用すると、追加のコンソール出力を特定のテストケースに関連付けることができます。

    出力からのメッセージは、失敗メッセージと同様にインラインで表示されます。

    Image showing "hello world" displayed inline beside a console.log statement

ファイルシステムプロバイダーがファイルを読み取り専用として宣言できるようにする

ファイルシステムプロバイダーは、FileStatオブジェクトの新しいpermissionsプロパティをFilePermission.Readonlyに設定することで、個々のファイルを読み取り専用としてマークできるようになりました。読み取り専用ファイルは編集できません。

注:すべてのファイルを読み取り専用として扱う必要がある場合は、registerFileSystemProviderを呼び出す際に既存のisReadonlyオプションを使用できます。

設定エディタの拡張機能カテゴリ

設定エディタは、カテゴリがある場合に拡張機能のcontributes.configurationエンドポイントのサブツリーを表示するようになりました。

複数のカテゴリを作成するには、contributes.configurationが設定の配列を受け入れ、各設定のtitleキーがセクションの見出しとして使用されます。また、サブツリー内でカテゴリを並べ替えることができるorderフィールドもあります。

New Setting editor table of contents showing CSS language features having its own subtree

タイプ階層

型階層プロバイダーを追加するためのAPI提案が最終決定されました。

WebviewOptions.enableForms

WebviewOptionsの新しいenableFormsプロパティにより、Webview内のフォームを有効または無効にできます。後方互換性のため、enableScriptsがすでに設定されている場合、enableFormsはデフォルトでtrueになります。それ以外の場合は、デフォルトでfalseになります。

ウェブビューコンテンツで必要ない限り、フォームを無効にすることをお勧めします。

ターミナル状態

Terminalオブジェクトに新しいstateプロパティが公開されました。対応するwindow.onDidChangeTerminalStateイベントに加えて、ユーザーがターミナルと対話したかどうかを示します。たとえば、拡張機能は、ユーザーがターミナルと対話するまでアクションを実行しないように待機する場合があります。

テストデータでのWeb拡張機能テストの実行

@vscode/test-web nodeモジュールは、Chromium、Firefox、またはWebkitでWeb拡張機能をテストするためのCLIとAPIを提供します。

このマイルストーンで新しく追加されたのは、テストデータでVS Code for the Webを開くためのオプションfolderPathです。インメモリファイルシステムには、指定された場所のリソースが含まれているため、テストは作業するファイルを持つことができます。

vscode-test-web --browserType=chromium --extensionDevelopmentPath=$extensionLocation $testDataLocation

更新された codicon

以下の新しいアイコンが、当社のcodiconライブラリに追加されました。

List of codicon icons that were added

  • ビーカー停止
  • ブラケットドット
  • ブラケットエラー
  • ブラケット
  • デバッグ継続小
  • グラフライン
  • グラフ散布
  • 円グラフ

Visual Studio Code用Webview UIツールキット

Visual Studio Code用Webview UIツールキットは、Visual Studio CodeでWebviewベースの拡張機能を構築するためのコンポーネントライブラリです。

Webview Toolkit component artwork

ライブラリの機能は以下の通りです。

  • Visual Studio Codeのデザイン言語を実装: エディターの他の部分と一貫したルック&フィールを持つ拡張機能を作成できます。
  • カラーテーマの自動サポート: すべてのコンポーネントはテーマを念頭に置いて設計されており、現在のエディターテーマを自動的に表示します。
  • 任意の技術スタックを使用: ライブラリはWebコンポーネントのセットとして提供されるため、開発者は拡張機能がどのような技術スタック(React、Vue、Svelteなど)で構築されていてもツールキットを使用できます。
  • すぐに使用できるアクセシビリティ: すべてのコンポーネントには、Web標準に準拠したARIAラベルとキーボードナビゲーションが付属しています。

仮想ワークスペース拡張機能ガイド

VS Codeが仮想環境で実行されている場合に、拡張機能の作成者が拡張機能をテストして更新するのに役立つ新しい仮想ワークスペース拡張機能ガイドがあります。独自の仮想ファイルシステムを作成するGitHub Repositoriesなどの拡張機能の導入や、VS Codeがブラウザで実行されるvscode.devgithub.devのような新しいワークフローにより、拡張機能はディスク上のファイルシステムやプラットフォーム機能に直接アクセスできると仮定できなくなりました。

仮想ワークスペース拡張機能ガイドは以下をカバーします。

  • 変更なしで仮想ワークスペースで拡張機能が動作するかどうか。
  • ディスク上のファイルシステムなしで仮想ワークスペースで動作するように拡張機能を更新する方法。
  • 仮想ワークスペースで実行されているときにVS Codeに拡張機能を有効または無効にする方法を通知する方法。

提案された拡張API

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

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

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

TaskPresentationOptionsのcloseプロパティ

tasks.jsonスキーマ内のpresentationプロパティであるcloseプロパティが、TaskPresentationOptions APIで利用可能になりました。これは、タスクの完了時にターミナルを閉じるかどうかを制御することで、一致するtasks.jsonプロパティと同じように機能します。

タブAPI

タブを読み取りおよび操作するための提案APIがあります。これにより、裏にtextDocumentがない場合に開いているリソースのリストにアクセスしたいなどの一般的な機能要求がブロック解除されます。このAPIに関するフィードバックは、Issue #133532で提供できます。

MarkdownString.supportHtml

MarkdownStringの新たに提案されたsupportHtmlプロパティにより、Markdownテキスト内に表示される生のHTMLの安全なサブセットのレンダリングが可能になります。

supportHtmlプロパティのデフォルトはfalseです。無効になっている場合、VS CodeはMarkdownテキスト内に表示される生のHTMLタグをすべて削除します。

コントローラーレンダラースクリプトがJavaScriptモジュールを使用するようになりました

NotebookController.rendererScriptsにより、ノートブックコントローラーは、任意のレンダラーが実行される前に、一連のJavaScriptファイルをノートブックにプリロードできます。これらのスクリプトは、ノートブックを初期化したり、レンダラーが依存するグローバルシンボルを定義したりできます。

レンダラースクリプトは、以前は通常のJavaScriptファイルでした。これらのスクリプトは、VS Codeがエクスポートするグローバルシンボルを使用して、VS Code固有のAPIを呼び出すことができました。

このグローバルシンボルは発見しにくく、VS Codeがレンダラースクリプト自体をあまり制御できませんでした。これを修正するために、レンダラースクリプトは、activate関数をエクスポートするJavaScriptモジュールを使用するようになりました。この関数にはVS Code APIが渡されます。

interface KernelPreloadContext {
    readonly onDidReceiveKernelMessage: Event<unknown>;
    postKernelMessage(data: unknown): void;
}

export function activate(ctx: KernelPreloadContext): Promise<void> | undefined {
    ...
}

この変更は、NotebookControllerからのレンダラースクリプトと、提供されたノートブックレンダラーによって提供されるレンダリングスクリプトをより適切に整合させます。

Quick PickのkeepScrollPositionプロパティ

window.createQuickPick()から取得するQuickPickオブジェクトのkeepScrollPositionプロパティが、提案APIとして追加されました。これにより、Quick Pickのスクロール位置(cursorTop)がリストの先頭に戻るかどうかを制御できます。

このAPIのいくつかのユースケースを以下に示します。

  • 提案されているQuickPickItemButton APIを使用して「リストからこのアイテムを削除する」オプションを実装する(例:Ctrl/Cmd + P x QuickPickItemButton)。
  • 提案されているQuickPickItemButton APIを使用して「このアイテムを何らかの方法で切り替える」オプションを実装する(例:スニペットを挿入コマンド)。
  • Quick Pickでアイテムを非同期で読み込む場合(例:setInterval.itemsプロパティを再割り当てしてアイテムをリストに追加する際に、スクロールが先頭にジャンプしないようにする)。

スクロール位置を制御する機能がなければ、これらの操作のすべてがQuick Pickのスクロール位置をリストの先頭に強制的にジャンプさせてしまいます。keepScrollPositionを使用すると、拡張機能の作成者はこの動作を制御できます。

SourceControl.actionButton

ソース管理APIに、SourceControlオブジェクトのactionButtonプロパティが追加され、SCMプロバイダーが入力ボックスの下に「アクション」ボタンを条件付きで表示できるようになりました。たとえば、Git拡張機能はこの新しいプロパティを使用して、プッシュされていない変更がある場合に公開または同期ボタンを表示します。

言語サーバープロトコル

言語サーバープロトコルの新しい次期バージョンが、対応するnpmモジュールとともに公開されました。新バージョンには、型階層の提案実装が含まれています。

エンジニアリング

レンダリングされたHTMLのサニタイズにDOMPurifyに切り替え

メインのワークベンチでレンダリングされるHTMLをサニタイズするために、内部的にDOMPurifyを使用するように切り替えました。これは主に、レンダリングされたMarkdownのサニタイズに使用されます。

DOMPurifyはよくメンテナンスされており、Trusted Typesに最初から準拠しています。この切り替えにより、ユーザーを保護し、MarkdownString.supportHtmlなどの機能を有効にする際に、より確信を持てるようになりました。

Big Sur CLIでopenコマンドを使用する

macOS Big Surでは、コマンドラインから起動された場合に、VS Codeを起動するためにopenコマンドを使用するようになりました。この変更により、VS CodeはmacOS Dockから起動されたかのように開くことができ、エンタイトルメントに関するいくつかの問題が解決されます。

ファイル監視の変更

ディスク上のファイルやフォルダの変更を検出するために使用されるファイルウォッチャーが、サポートされているすべてのプラットフォーム(Windows、Linux、macOS)を処理でき、異なるプラットフォーム用に異なるウォッチャーを維持するオーバーヘッドを削減するライブラリに変更されました。このライブラリをすべてのプラットフォームでデフォルトで有効にする予定です。今回のイテレーションでは、WindowsとmacOSで有効にし、まもなくLinuxでも有効にする予定です。

新しいウォッチャーは起動時に高速化され、大規模なフォルダでのCPUサイクル消費が減少するはずです。このライブラリを使用するデメリットの1つは、macOSでファイルウォッチャーがワークスペース内のシンボリックリンクフォルダを自動的に検出できなくなったことです。このような設定を使用している場合は、新しいfiles.watcherInclude設定を使用して、ファイル監視に含めるシンボリックリンクパスを明示的に追加できます。良い点としては、この新しい設定をWindowsで使用して、ワークスペース内のシンボリックリンクフォルダを明示的に含めることができます。これは以前のWindowsでは不可能でした。

日々の作業で違いに気づくことはないはずですが、ファイル監視が機能しない場合は、問題を報告してください。問題が発生した場合に古いウォッチャーを有効にするfiles.legacyWatcher設定があります。

ドキュメント

高度なコンテナー構成

Dev Containers拡張機能の高度なコンテナ設定をカバーする新しいセクションがあります。

コンテナのドキュメントで、以下を学ぶことができます。

高度なコンテナ設定ドキュメントには、開発コンテナの設定に関するヒントやコード例、短いYouTubeビデオが含まれています。

注目すべき修正点

  • 69665: OSがスリープ状態から復帰すると、ターミナルが破損したテクスチャを表示することがある
  • 130407: [軽微] settings>files: excludeを変更パターンとして(空白)を削除できない
  • 133149: 情報/警告レベルの問題でタスクターミナルが失敗とマークされる。
  • 133567: アクセシビリティ: 参照を見つけるトップレベルのツリーノードのラベルがすべて「true」と読まれる
  • 133910: シェル環境の解決に失敗したりタイムアウトした場合にエラーを表示する
  • 133976: プロトコルURL経由で.code-workspaceを開くことを許可する

ありがとうございます

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

問題追跡への貢献者

vscodeへの貢献者

vscode-eslintへの貢献者

vscode-html-languageserviceへの貢献

vscode-json-languageserviceへの貢献

vscode-languageserver-nodeへの貢献者

vscode-pull-request-githubへの貢献者

  • @burkeholland (バーク・ホーランド)
    • Fixes #2259 PR #2909
    • 上流のリモートリンクタイプを尊重する PR #2929
    • PRタイトルが折り返されたときにボタンサイズが正しくない PR #2966
    • フォーカスされていないときにアサイニーにフォーカス境界線が使用される PR #2967
    • コミット選択の水平方向のパディングが高すぎる PR #2970
    • Tick SVGが正しく見えない問題 #2950を修正 PR #2971
    • 小さなタブでPR作成後x分が途切れる PR #2985
    • 小文字のブランチ名 PR #2986
    • スキップされたステータスチェックが保留中として表示される PR #3005
  • @lgarron (Lucas Garron): GitHubパーマリンク: 範囲が1行の場合、行番号を重複排除する。 PR #2980
  • @moshfeu (Mosh Feu): fix: 保留中のチェックの「表示」ボタン/リンクにアクセスできるようにする PR #2972

vscode-references-viewへの貢献

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

language-server-protocolへの貢献者

monaco-editor-webpack-pluginへの貢献