に参加して、VS Code の AI 支援開発について学びましょう。

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

更新 1.61.1: この更新では、これらの課題に対処します。

更新 1.61.2: この更新では、これらの課題に対処します。

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap


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

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

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

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

Workbench

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

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

分割を垂直または水平のどちらかにしたい場合は、新しい設定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カラーを使用すると、ミニマップの背景の不透明度をミニマップのテキストの不透明度とは独立して設定できるようになりました。

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

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

Editor

括弧ペアガイド

エディターは基本的な括弧ペアガイドをサポートするようになりました。括弧ペアガイドは、括弧ペアのカラーリング機能と同じ色とアルゴリズムを使用します。括弧ペアの照合アルゴリズムについては、最近の「括弧ペアのカラーリングが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 nightly ビルドの使用を開始するには、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.dev および github.dev で plotly、vega、latex などの Notebook 出力を表示できるようになりました。

Python

新しい Python ウォークスルー

Python 拡張機能は、VS Code での Python の使用開始エクスペリエンスを向上させるために、基本的なセットアップ手順を含むウォークスルーを提供するようになりました。

New Python walkthrough

デバッグエクスペリエンスの改善

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

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

GitHub Pull Requests and Issues

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

リモート開発

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

バージョン 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プロパティを使用すると、ウェブビュー内のフォームを有効または無効にできます。後方互換性のため、enableScriptsを既に設定している場合、enableFormsはデフォルトで true になります。それ以外の場合は false になります。

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

ターミナル状態

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

テストデータでのウェブ拡張機能テストの実行

@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

  • beaker-stop
  • bracket-dot
  • bracket-error
  • bracket
  • debug-continue-small
  • graph-line
  • graph-scatter
  • pie-chart

Visual Studio Code 向け Webview UI Toolkit

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

Webview Toolkit component artwork

ライブラリの機能は次のとおりです。

  • Visual Studio Code のデザイン言語を実装: エディターの残りの部分と一貫したルックアンドフィールを持つ拡張機能を作成します。
  • カラーテーマの自動サポート: すべてのコンポーネントはテーマを念頭に置いて設計されており、現在のエディターテーマを自動的に表示します。
  • 任意の技術スタックを使用: ライブラリは一連のウェブコンポーネントとして出荷されるため、開発者は拡張機能が構築されている技術スタック (React、Vue、Svelte など) に関係なくツールキットを使用できます。
  • すぐに利用できるアクセシビリティ: すべてのコンポーネントには、ウェブ標準に準拠した 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 拡張機能はこの新しいプロパティを使用して、プッシュされていない変更がある場合に発行または同期ボタンを表示します。

Language Server Protocol

新しいバージョンのLanguage Server Protocolが、対応する npm モジュールとともに公開されました。この新しいバージョンには、型階層の提案実装が含まれています。

エンジニアリング

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

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

DOMPurify は適切にメンテナンスされており、すぐに信頼された型に準拠しています。この切り替えにより、ユーザーの保護が強化され、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: [trivial] settings>files: 除外パターンを (空白) に変更しても削除できない
  • 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 (Burke Holland)
    • Fixes #2259 PR #2909
    • アップストリームのリモートリンクタイプを尊重 PR #2929
    • PR タイトルが折り返されたときにボタンサイズが正しくない PR #2966
    • フォーカスされていないときにアサイニーにフォーカス境界線が使用される PR #2967
    • コミット作成選択の水平パディングが高すぎる PR #2970
    • Fixes Tick SVG doesn't look right #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への貢献

© . This site is unofficial and not affiliated with Microsoft.