🚀 VS Code で で入手しましょう!

2022年3月 (バージョン 1.66)

アップデート 1.66.1: このアップデートでは、これらのissueに対処しています。

アップデート 1.66.2: このアップデートでは、これらのセキュリティissueに対処しています。

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


Visual Studio Code 2022 年 3 月リリースへようこそ。このバージョンには多くのアップデートが含まれており、きっと気に入っていただけると思います。主なハイライトをいくつかご紹介します。

これらのリリースノートをオンラインで読むには、Updates (code.visualstudio.com) にアクセスしてください。

リリースイベントをご覧ください: VS Code チームが新機能について議論する様子をご覧ください。イベントの録画は YouTube チャンネルでご覧いただけます。

ハイライト (ショート): 60 秒だけ時間がある場合は、3 月の VS Code リリースハイライトビデオで新機能を手早くチェックしてください。

Insiders: 最新機能をいち早く試したいですか? 毎晩更新される Insiders ビルドをダウンロードして、最新のアップデートをいち早くお試しください。

アクセシビリティ

VS Code を最もアクセシブルなエディターの一つにするために、チームは懸命に取り組んでいます。今回のリリースには、ユーザビリティとアクセシビリティを向上させるためのいくつかの改善が含まれています。

ワークベンチ

ローカル履歴

ファイルのローカル履歴が タイムライン ビューで利用できるようになりました。設定に応じて、エディターを保存するたびに、新しいエントリがリストに追加されます。

各ローカル履歴エントリには、エントリが作成された時点でのファイルの内容がすべて含まれており、場合によっては、よりセマンティックな情報 (リファクタリングを示すなど) を提供できます。

エントリから以下の操作が可能です。

  • ローカルファイルまたは以前のエントリとの変更を比較します。
  • 内容を復元します。
  • エントリを削除または名前変更します。

ローカル履歴を操作するための新しいグローバルコマンドがあります。

  • workbench.action.localHistory.create - アクティブなファイルの新しい履歴エントリをカスタム名で作成します。
  • workbench.action.localHistory.deleteAll - すべてのファイルのすべての履歴エントリを削除します。
  • workbench.action.localHistory.restoreViaPicker - すべてのファイルから復元する履歴エントリを検索します。

これらのコマンドにはデフォルトのキーバインドはありませんが、独自のキーボードショートカットを追加できます。

ローカル履歴を操作するための新しい設定もあります。

  • workbench.localHistory.enabled - ローカル履歴を有効または無効にします (デフォルト: true)。
  • workbench.localHistory.maxFileSize - ローカル履歴エントリを作成する際のファイルサイズ制限 (デフォルト: 256 KB)。
  • workbench.localHistory.maxFileEntries - ファイルごとのローカル履歴エントリの制限 (デフォルト: 50)。
  • workbench.localHistory.exclude - ローカル履歴から特定のファイルを除外するためのグロブパターン。
  • workbench.localHistory.mergeWindow - ローカルファイル履歴の最後のエントリにそれ以降の変更が追加される間隔 (秒単位) (デフォルト 10 秒)。

タイムラインビューのツールバーにある新しいフィルターアクションを使用すると、個々のプロバイダーを有効または無効にできます。

Timeline filter drop down with Git History unchecked and Local History checked

注: ローカル履歴エントリは、VS Code の使用方法に応じて異なる場所に保存されます。ローカルファイルを開くと、エントリはローカルユーザーデータフォルダーに永続化され、リモートファイルを開くと、リモートユーザーデータフォルダーに保存されます。ファイルシステムが利用できない場合 (たとえば、VS Code for Web を使用する場合など)、エントリは IndexedDB に保存されます。

設定エディター

言語フィルター

設定エディターの検索ボックスに @lang:languageId と入力すると、ID languageId の言語に設定できるすべての設定を表示および編集できるようになりました。これにより、ユーザーは言語固有の設定 (言語オーバーライドとも呼ばれます) を表示できます。

これらのオーバーライドは、ギアアイコンをクリックして設定をリセットするまで構成されたままになることに注意してください。

以下の短いビデオでは、CSS 言語オーバーライド設定の可能性をすべて表示するために、言語フィルターが @lang:css に設定されています。

テーマ: ライトピンク

ワークスペースとフォルダーの設定の保持

設定エディターのワークスペースとフォルダーの設定は、ユーザーが手動でリセットするまで保持されるようになりました。この変更は、ユーザーが設定のデフォルト値と同じワークスペース設定値を明示的に指定したいが、ユーザー設定値とは異なる場合に役立ちます。以前は、ユーザーはこの値を設定するためにワークスペース設定 JSON ファイルを開く必要がありました。

以下は、設定エディターの [ワークスペース] タブでエディターのタブサイズが設定され、ワークスペースの settings.json ファイルに自動的に追加される様子です。

テーマ: ライトピンク

プライマリ通知ボタン

通知の最初のボタンが、他のボタンと区別するためにプライマリカラーで表示されるようになりました。これは、ダイアログと同じパターンに従います。

Notification where first button is displayed as green primary color

テーマ: GitHub ダーク

エディターの新しいコンテキストキー

エディターがエディターグループの最初または最後であるかどうかを示す新しいコンテキストキーがあります。

  • activeEditorIsFirstInGroup - アクティブなエディターがグループの最初のエディターであるかどうか。
  • activeEditorIsLastInGroup - アクティブなエディターがグループの最後のエディターであるかどうか。

これらのコンテキストキーは、when 句を使用してキーボードショートカットを条件付きで有効にするために使用できます。

デフォルトのバイナリエディター

新しい設定 workbench.editor.defaultBinaryEditor を使用すると、バイナリファイルの警告を回避し、バイナリファイルが検出されたときに選択したエディタータイプを自動的に開くことができます。設定エディターのドロップダウンまたは settings.json の IntelliSense からデフォルトのバイナリエディター ID を選択できます。

よりスムーズな認証エクスペリエンス

GitHub と Microsoft の両方の認証フローがよりスムーズになっていることに気付くかもしれません。

  • GitHub 認証の場合、最初の [続行] ページを削除したため、ログインエクスペリエンスが 1 ステップ少なくなりました。
  • Microsoft 認証の場合、設定同期や別の拡張機能で Microsoft に既にログインしている場合は、VS Code からログアウトする回数を最小限に抑えるように努めています。

CLI からプレリリース拡張機能と通常拡張機能をまとめてインストール

VS Code は、コマンドラインからプレリリース拡張機能と通常拡張機能をまとめてインストールすることをサポートするようになりました。たとえば、次のコマンドライン命令は、GitHub.vscode-pull-request-github 拡張機能のプレリリースバージョンと GitHub.remotehub 拡張機能のリリースバージョンをインストールします。

code --install-extension GitHub.vscode-pull-request-github@prerelease --install-extension GitHub.remotehub

プラットフォーム固有の拡張機能のアップデートの改善

VS Code は、プラットフォーム固有の拡張機能を、より具体的なターゲットプラットフォームバージョンにアップデートすることをサポートするようになりました。たとえば、Windows 64 ビットで、Windows 32 ビット用の C/C++ 拡張機能をインストールしていて、Marketplace に Windows 64 ビット用の同じバージョンの拡張機能がある場合、VS Code は拡張機能を自動的に 64 ビットバージョンにアップデートします。

オーディオキューの改善

新しい設定 audioCues.volume (0 ~ 100、デフォルトは 50) を使用して、オーディオキューの音量を制御できます。折りたたみ領域のオーディオキューも更新されました。

サイドパネルとサイドバーの新しい名前

2 つ前のリリースで、サイドパネルを導入しました。当時、ターミナルを含む下部パネルをサイドに移動する機能を削除し、新しい一貫性のあるコマンドを優先しました。ユーザーからのフィードバックを聞いた結果、この決定によって重要なワークフローが壊れてしまったことが判明し、その変更を元に戻すことにしました。

これにより、ワークベンチのサイドに配置できるパネルとサイドパネルの 2 つのパネルが残りました。これを考慮し、新しいサイドパネルの方向性をより良く反映するために、サイドバーとサイドパネルの両方の名前を更新することにしました。サイドバーは UI でプライマリサイドバーと呼ばれるようになり、サイドパネルはセカンダリサイドバーと呼ばれるようになります。

  • サイドバー -> プライマリサイドバー
  • サイドパネル -> セカンダリサイドバー

これらの名前は、エディター全体のメニューとコマンドに反映されます。ただし、既存のキーバインドを壊さないように、コマンド ID は変更されていません。

Command Palette drop down displaying both primary and secondary focus side bar commands

モーション軽減モード

ワークベンチは、OS のモーション軽減設定が有効になっている場合、アニメーションを軽減してレンダリングすることをサポートするようになりました。これは、workbench.reduceMotion 設定 (値は onoff、またはデフォルトの auto) でオーバーライドまたは無効にできます。

コメント

コメント UI は、GitHub Pull Requests and Issues 拡張機能によって、issue やプルリクエストにコメントを追加するために広く使用されていますが、どの拡張機能でも採用できます。

コメントビューの検出

コメントを含むファイルを開くと、コメント ビューが表示されます。これは、comments.openView 設定で制御できます。

コメント追加の検出

コメントを追加できる行の任意の部分にカーソルを合わせると、左側のガターに [+] 記号が表示されるようになりました。

コメントのアクセシビリティの改善

コメントのアクセシビリティに関するいくつかの改善点があります。

  • コメント可能な範囲にいる場合にコメントを作成するためのコマンド [現在の行にコメントを追加]。
  • コメントスレッドの aria ラベル。コメントの数とスレッドのラベルが含まれています。
  • [次のコメントスレッドに移動] コマンドは、コメントスレッドコントロールにフォーカスを移動します。
  • 新しい [前のコメントスレッドに移動] コマンド。
  • 次および前のコマンドのキーボードショートカット: Alt+F9 および Shift+Alt+F9

ターミナル

すべての一致箇所を表示

ターミナルで検索すると、検索用語のすべてのインスタンスが強調表示されるようになりました。現在選択されている一致箇所にも特定の色が強調表示され、これは個別にカスタマイズできます。

強調表示色の外観は、terminal.findMatch で始まる色のカスタマイズを使用して微調整できます。

A yellow border is shown around all matches except for the currently selected one, which has a red border.

スクロールバーのアノテーション

アノテーションがターミナルのスクロールバーに表示され、バッファー内の注目点を示します。

たとえば、検索結果には、スクロールバーに対応するアノテーションがあります。

The terminal scroll bar displaying brown annotations for find matches within a file

シェル統合のプレビュー機能が有効になっている場合、実行される各コマンドに対してスクロールバーにアノテーションが表示されます。

Commands are run and corresponding annotations appear in the scroll bar

コマンドナビゲーションの改善

あまり知られていない機能ですが、ターミナル内のコマンド間をすばやく移動する機能がしばらく前からあります。元々、これは Enter キーが押されたタイミングに基づいていましたが、シェル統合が有効になっている場合は、シェル統合の知識を使用して、より確実に正しい行を識別するようにアップグレードされます。さらに、コマンド間をジャンプするときに UI フィードバックが表示されるようになりました。

この機能には、次のキーバインドからアクセスできます。

  • macOS: Cmd+Up/Down
  • Linux/Windows: Ctrl+Up/Down (新規)

Shift キーを押したままにすると、ターミナル内のコマンド間で選択できます。

コピーされたテキストは HTML スタイルを保持

ターミナルからリッチテキストをコピーするには、[ターミナル: HTML として選択範囲をコピー] コマンドを実行するか、ターミナルのコンテキストメニューエントリ [HTML としてコピー] を使用します。

最小コントラスト比のデフォルトが変更されました

terminal.integrated.minimumContrastRatio 設定はしばらく前から存在しており、背景色に基づいてターミナルの前景色を動的に変更します。今回のリリースでは、テーマに関係なくターミナルをアクセス可能にするために、デフォルトを 4.5 (WCAG AA) に変更しました。これが色に問題を引き起こす場合は、"terminal.integrated.minimumContrastRatio": 1 を設定して機能を無効にできます。

ソース管理

ソース管理リポジトリビュー

以前は、ソース管理リポジトリビューのリポジトリは、複数のリポジトリを持つフォルダー/ワークスペースを開くときに検出された順にソートされていました。検出順序は変化する可能性があり、リポジトリがランダムな順序で表示されるため、これは問題がありました。今回のマイルストーンでは、ソース管理リポジトリビューのリポジトリは常に名前でソートされます。

エディター

インライン補完としてのクイックサジェスト

editor.quickSuggestions 設定で、構成値として inline を受け入れるようになりました。inline に設定すると、クイックサジェスト (IntelliSense) は、入力時にサジェストウィジェットを表示せず、ゴーストテキストとして補完を表示します。

テーマ: GitHub ライト

カーソルインデックスのスニペット変数

新しいスニペット変数 $CURSOR_INDEX$CURSOR_NUMBER があります。これらは、それぞれのカーソルのインデックスを評価します。後者は 1 から始まり、前者は 0 から始まります。これらの変数の力は、複数のカーソルとの組み合わせにあります。

たとえば、以下のスニペットは、各カーソルに順序付きリスト項目を追加します。

"ordered_list": {
  "scope": "markdown",
  "prefix": "ol",
  "body": [
    "$CURSOR_NUMBER. $0"
  ],
  "description": "Add ordered list"
}

更新されたソース管理デコレーター

アクセシビリティのためにソース管理デコレーターをより見やすくするために、変更された行の新しいパターンを追加し、すべてのデコレーターのコントラストを高めました。

括弧のペアの色分け

新しい設定 editor.bracketPairColorization.independentColorPoolPerBracketType があります。true に設定すると、各括弧タイプ ({ ... } または ( ... )) は、色分けに独自の色プールを使用します。したがって、異なるタイプのネストされた括弧は同じ色になります。

A screenshot that demonstrates independent color pools turned on

A screenshot that demonstrates independent color pools turned off

言語検出の改善

前回のイテレーションでは、開いたファイルタイプを考慮する新しい言語検出戦略を利用するかどうかを設定する workbench.editor.historyBasedLanguageDetection 設定を追加しました。この設定はデフォルトで有効になり、この戦略からの結果にさらに優先順位を与える新しい設定 workbench.editor.preferHistoryBasedLanguageDetection が追加されました。

VS Code for the Web

フォルダーのドラッグアンドドロップ

vscode.dev または insiders.vscode.dev で開いたブラウザーウィンドウに、Web File System Access API をサポートするブラウザーを使用して、ローカルファイルとフォルダーをドラッグアンドドロップして、コンテンツにアクセスできるようになりました。これは、エディター領域とファイルエクスプローラーの両方にドロップした場合に機能します。

リモートリポジトリ

拡張機能のリファクタリング

以前は、Azure Repos 拡張機能は GitHub Repositories 拡張機能に直接依存していました。Azure Repos と GitHub Repositories は、GitHub および Azure Repos 全体で共通のワークフローをサポートする共通の拡張機能である Remote Repositories に依存するようになりました。GitHub Repositories 拡張機能によって以前に公開されていたすべての API は、Remote Repositories によって公開されるようになりました。

リポジトリの同期のリマインダー

コミットされていない変更があるリポジトリを再度開くと、デフォルトでは、Remote Repositories はリポジトリの最新バージョンを表示しません。リポジトリを GitHub または Azure Repos の最新の状態に保つために、リポジトリを手動で同期するためのダイアログが表示されるようになりました。このダイアログは、remoteHub.uncommittedChangesOnEntry 設定を使用して制御できます。

Reminder to sync your repository

テーマ: One Monokai

Azure Repos

今回のマイルストーンでは、Azure Repos でホストされているリポジトリに対する変更を編集およびコミットする機能を有効にしています。また、Azure Repos のプルリクエストを作成、更新、および開くための基本的な機能も追加しました。

ノートブック

スクロールバーの検索デコレーション

ノートブックの検索結果がスクロールバーにレンダリングされるようになりました。

インタラクティブウィンドウにフォーカスを移動

インタラクティブウィンドウにフォーカスを移動するための 2 つの新しいコマンドがあります。

  • interactive.input.focus - インタラクティブウィンドウの入力エディターにフォーカスを移動します。
  • interactive.history.focus - インタラクティブウィンドウの履歴にフォーカスを移動します。

これらのコマンドにはデフォルトのキーバインドはありませんが、独自のキーボードショートカットを追加できます。

デバッグ

JavaScript デバッグ

JavaScript デバッガーは、ヒーププロファイルの収集と視覚化をサポートするようになりました。ヒーププロファイルを使用すると、メモリが時間とともにどこに、どの程度割り当てられているかを確認できます。これらは、[デバッグ: パフォーマンスプロファイルの作成] コマンドのオプションとして追加されました。このコマンドは、[呼び出し履歴] ビューの記録 ⏺ ボタンからもアクセスできます。

Example of the Flame Chart visualizer showing a memory profile for vscode. One cell is hovered over, showing that 33KB of memory was allocated in "ipc.ts".

言語

CSS フォーマッター

組み込みの CSS 拡張機能にフォーマッターが付属するようになりました。フォーマッターは CSS、LESS、SCSS で動作します。これは、JS Beautify ライブラリによって実装されており、次の設定が付属しています。

  • css.format.enable - デフォルトの CSS フォーマッターを有効/無効にします。
  • css.format.newlineBetweenRules - ルールセットを空白行で区切ります。
  • css.format.newlineBetweenSelectors - セレクターを改行で区切ります。
  • css.format.spaceAroundSelectorSeparator - セレクターセパレーター '>'、'+'、'~' の周囲にスペース文字を確保します (例: a > b)。

同じ設定は less および scss にも存在します。

HTML の JavaScript セマンティックハイライト

HTML ファイル内の JavaScript ソースのセマンティックハイライトを、通常の .js ファイルで表示されるものと一致させました。

これにより、コードの色の一貫性が高まるだけでなく、以前は欠落していた重要なセマンティック情報 (読み取り専用型の強調表示など) も追加されます。

TypeScript 4.6.3

VS Code に TypeScript 4.6.3 がバンドルされるようになりました。このマイナーアップデートでは、いくつかの重要なバグが修正されています。

Markdown では、リンクテキストがリンク定義 ID と一致する場合に、省略記法を使用してリンクを作成できます。たとえば、[my fancy link] は、my fancy link リンク定義 (例: [my fancy link]: https://example.com) を使用します。これらの省略記法リンクが VS Code のエディターでクリック可能になりました。

エディターでは、これらのリンクをクリックするとリンク定義に移動します。Markdown プレビューでは、リンクは代わりにリンク先に移動します。

reStructuredText 文法

reStructuredText (rst) ファイルの構文強調表示のための組み込み拡張機能が追加されました。

reStructuredText example showing syntax highlighting

拡張機能への貢献

Python

ステータスバーのインタープリター表示の変更

Python 拡張機能は、他の言語との一貫性を保つために、選択された Python インタープリター情報をステータスバーの右側、[Python] 言語ステータス項目の横に移動しました。ステータスバーを整理する目的で、Python ファイルまたは settings.json ファイルが現在開かれている場合にのみ表示されるようになりました。

Python interpreter information displayed towards the right of the Status bar

新しい Python ファイルコマンド

空の Python ファイルを作成する 2 つのより高速な方法が追加されました。新しいコマンド [Python: 新しい Python ファイル] を使用するか、入門ページの [新しいファイル...] 項目を使用します。

Pylint 拡張機能

pylint を使用した lint 用の新しい Microsoft Pylint 拡張機能が追加されました。この拡張機能は、Language Server Protocol を利用して lint サポートを提供します。

Pylint 拡張機能は、pylint 経由で報告された問題の重大度レベルを調整するための追加の構成を提供します。

{
    "convention": "Information",
    "error": "Error",
    "fatal": "Error",
    "refactor": "Hint",
    "warning": "Warning",
    "info": "Information",
    "W0611": "Error",
    "unused-import": "Error"
}

注: Python 拡張機能で Pylint が有効になっている場合、[問題] パネルに同じ問題のエントリが 2 つ表示される場合があります。組み込みの lint 機能を無効にするには、"python.linting.pylintEnabled": false を設定します。

Jupyter

今回のマイルストーンでは、Jupyter 拡張機能にいくつかの改善がありました。

カーネルサポート

カーネルの起動が改善されました:

  • より多くのconda 環境のサポート。
  • すべてのプラットフォームでの .env ファイルのサポート。

データビューアー

DataFrame および Series の名前付きインデックスが、データビューアーでサポートされるようになりました。

Named indexes support in Jupyter extension Data Viewer

新しい Jupyter ノートブック

新しい Jupyter ノートブックの作成が、[新しいファイル...] メニューに統合されました。

New File... drop down with option to create a new Jupyter notebook

リモート開発

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

1.66 の機能ハイライト:

  • [Dev Container で開く] バッジ - リポジトリのユーザーをカスタム開発コンテナーで再度開くように誘導します。
  • Remote - SSH 拡張機能は、リモートの Apple Silicon/M1/ARM64 マシンに接続できるようになりました。

新しい拡張機能の機能とバグ修正については、Remote Development リリースノートをご覧ください。

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能の開発が継続されています。これにより、プルリクエストと issue の作業、作成、および管理を行うことができます。拡張機能のハイライトについては、拡張機能の changelog for the 0.40.0 リリースをご覧ください。

プレビュー機能

ターミナルシェル統合

シェル統合は、主に信頼性の向上と上記のターミナルセクションで説明したデコレーションの改善という形で、今回のリリースでも改善が続けられています。

ハイライトを以下に示します。

  • コマンドデコレーションが、エディターと同様にスクロールバーに表示されるようになりました。
  • コマンドデコレーションは、ウィンドウのリロード (またはデタッチ/アタッチ) を超えて復元される必要があります。
  • Windows でターミナルのサイズを変更する際のコマンドの追跡が改善されました。
  • [ターミナル: クリア] VS Code コマンドと clear シェルコマンドの処理が改善されました。
  • zsh 右プロンプトのサポート。
  • bash の $PROMPT_COMMAND 変数のより多くの形式を処理します。
  • PSReadLine が有効になっていない場合でも pwsh をサポートします。
  • シェル初期化スクリプトは、設定が有効になっている場合でも、既知の問題がある場合や特別な処理が必要な場合に、$VSCODE_SHELL_INTEGRATION 変数を設定解除することで、シェル統合をオプトアウトできるようになりました。

TypeScript 4.7 のサポート

今回のアップデートには、今後の TypeScript 4.7 リリースの初期サポートが含まれています。TypeScript チームが現在取り組んでいる内容の詳細については、TypeScript 4.7 イテレーション計画をご覧ください。

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

エクスプローラーのファイルのネスト

今回のイテレーションでは、エクスプローラーでのファイルのネストのサポートに取り組み続けました。この作業の一環として、ネストされたファイルの移動、名前変更、削除のサポートを改良し、ネストの親への編集を子にも適用するかどうかを設定する explorer.experimental.fileNesting.operateAsGroup 設定を追加しました。

さらに、ファイルのネストの構成言語を拡張して、より多くの展開パターンを含めました。以前は、子パターン内の $(capture) は、親パターン内の * によって消費されたテキストに展開されていました。現在、パターンで $(basename)$(extname)、および $(dirname) の追加サポートがあります。これにより、* -> $(basename).*.$(dirname) などのパターンを使用して、[追加されたセグメント] を持つすべてのファイルを単一のベースファイルの下にネストできます。

拡張機能の作成

ノートブック対応のドキュメントセレクター

vscode.DocumentSelector タイプへの追加を完了しました。このタイプを使用すると、[定義へ移動] などの言語機能を特定のドキュメントに関連付けることができ、UI を駆動し、対応するプロバイダーに結果が要求されるかどうかを決定します。拡張機能がノートブックタイプを絞り込むことができる新しいプロパティを追加しました。たとえば、{ language: 'python', notebookType: 'jupyter-notebook'} は、Jupyter ノートブックに埋め込まれたすべての Python ドキュメントをターゲットにします。

インレイヒントに編集を適用可能

InlayHint 型に、オプションの遅延読み込み可能な textEdits プロパティを持たせることができるようになりました。textEdits が設定されたインレイヒントは、ダブルクリックで適用されます。textEdits は、インレイヒントを不要にするために必要な編集を行うために使用されるべきです。例えば、推論された型を表すヒントをダブルクリックすると、その型注釈が挿入されるべきです。

カスタム言語 ID を持つ出力チャネル

このマイルストーンでは、カスタム言語 ID を持つ出力チャネルを作成するための createOutputChannel API を最終決定しました。これにより、言語 ID を渡すことで、トークンやシンタックスカラーリング、CodeLens 機能を Output チャネルに提供できるようになります。

カラーテーマの種類: ハイコントラストライト

カラーテーマ は、ベーステーマ (uiTheme) として hc-light を指定できるようになりました。ベーステーマは、カラーテーマで定義されていないすべての色に使用されます。

VS Code API では、ColorTheme.kindHighContrastLight の値を持つことができるようになりました。

カラーコントリビューション用のハイコントラストライトテーマ

カラーコントリビューション は、ハイコントラストライトテーマ (highContrastLight) も定義できるようになりました。指定しない場合、light カラーがデフォルトとして使用されます。

NODE_MODULE_VERSION と Node.js API の更新

ネイティブ Node モジュールを使用する拡張機能の作成者向けに、今回のリリースでは Node.js のバージョンが 14.16.0 から 16.13.0 に引き上げられました。これにより、使用している API 抽象化レイヤーによっては、モジュールのコンパイルに影響がある可能性があります。

デスクトップ リモート
NODE_MODULE_VERSION / process.versions.modules 101 93
Node-API / process.versions.napi 8 8

ツリーのドラッグアンドドロップ API

新しく最終決定された TreeDragAndDropController API により、拡張機能が提供するツリービューでドラッグアンドドロップをサポートできます。ツリービューのサンプル に、この API の使用方法の例があります。

デバッガー拡張機能の作成

CompletionItem.detail のサポート

先月、デバッグアダプタープロトコルに CompletionItem オブジェクトへの detail プロパティが追加されました。このプロパティは、VS Code でサポートされるようになりました。デバッグコンソールのサジェストウィジェットで詳細を確認できます。

Debug Console example displaying detail field

Language Server Protocol

型階層、インライン値、およびインレイヒントのサポートは、3.17 リリースに向けて提案状態から移行されました。ライブラリの新しい次期バージョンが公開されています。

LSP のメタモデル の最初のバージョンが、JSON スキーマ または TypeScript 型定義 として対応するスキーマと共に公開されています。メタモデルには、指定されたリクエストと通知、およびそれらのパラメータ型、戻り値の型、部分的な戻り値の型、登録オプションに関する情報が含まれています。また、定義されたすべての構造と列挙型も含まれています。

Debug Adapter Protocol

デバッグアダプタープロトコル のドキュメントに関するいくつかの問題に対処しました。

  • terminate リクエストと disconnect リクエストを区別するために、ドキュメントを改善しました。
  • evaluate リクエストの context 引数に値 variables がドキュメント化されました。VS Code は、VARIABLES ビューのコンテキストで evaluate リクエストが呼び出されるたびに、このドキュメント化されていない値を使用していました。context 引数は string 型であり、variables 値はドキュメントで言及されているだけであるため、クライアントとデバッグアダプターに必要な変更はありません。

提案された拡張機能 API

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

  1. 試したい提案を見つけ、その名前を package.json#enabledApiProposals に追加します。
  2. 最新の vscode-dts を使用して、vscode-dts dev を実行します。対応する d.ts ファイルがワークスペースにダウンロードされます。
  3. これで、提案に対してプログラミングできるようになります。

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

InputBox の検証メッセージの重要度

InputBox API (window.showInputBox および window.createInputBox 経由) は、ユーザーの入力を検証するメカニズムを提供します。今回のイテレーションでは、重要度を表示するための提案 API で拡張しています。

例えば、ユーザーの入力に基づいて情報メッセージを表示したい場合、検証メッセージは次を返すことができます。

{
  content: 'this is an info message';
  severity: InputBoxValidationSeverity.Info;
}

これは次のようになります。

Input box with 'this is an info message' severity message

この提案の詳細については、inputBoxSeverity を参照してください。

ノートブックドキュメントの変更イベント

ノートブックドキュメントの変更イベントに関する新しい提案があります。これは notebookDocumentEvents として利用可能であり、次の 2 つのイベントが含まれています。

  • vscode.workspace.onDidSaveNotebookDocument は、ノートブックが保存されるたびに発生します。
  • vscode.workspace.onDidChangeNotebookDocument は、ノートブックが変更されるたびに発生します。例えば、セルが追加または削除された場合、セル自体が変更された場合、またはメタデータが変更された場合などです。

タブ API の形状の最終決定

タブ API は、次のマイルストーンで最終決定に近づいており、現在、形状がほとんど変更されずに安定した状態になっています。2022 年 4 月のイテレーションは、この API の形状と機能に関するフィードバックを提供する最後の機会となります。フィードバックは、GitHub issues から提供できます。タブ API を使用すると、開いているタブ、その場所の読み取り、およびタブを閉じることができます。

インライン補完

次の数回のリリースでの最終決定に向けて、インライン補完の作業を継続しました。インライン補完は、スニペットまたはテキスト置換を提案するために使用できるようになりました (以前は、テキスト挿入のみがサポートされていました)。

エディターへのドロップ

提案された テキストエディタードロップ API を使用すると、拡張機能はテキストエディターへのドロップを処理できます。これらのドロップイベントは、VS Code 内 (VS Code のエクスプローラーからテキストエディターへのファイルのドラッグなど) から発生する場合もあれば、オペレーティングシステムから VS Code へのファイルのドロップによって生成される場合もあります。

新しい API を試すには、"workbench.experimental.editor.dragAndDropIntoEditor.enabled": true を設定する必要があります。これを有効にすると、Shift キーを押しながらドラッグアンドドロップすることで、エディターにドロップできます。

Markdown ファイルにドロップした場合にリンクを生成する実験的なサポートを含めました。API の使用例については、Markdown 拡張機能のソース を参照することもできます。

解決済み/未解決のコメント

コメントスレッドに 解決済みまたは未解決の状態を設定する ための新しい提案があります。状態を指定するコメントスレッドには、追加の UX 処理が適用されます。

エンジニアリング

Electron 17 のアップデート

このマイルストーンでは、VS Code に Electron v17 を搭載して出荷できることを嬉しく思います。これは、以前に採用した Electron v13 からのメジャーアップデートであり、Electron の プロセス再利用アーキテクチャ を活用しています。過去 1 年間にわたり、この新しいアーキテクチャに向けて、ワークベンチとの相互作用とライフサイクルに関連するコアサービスの一部を再実装し、段階的に変更をロールアウトしてきました。

この取り組みに関与したすべての人々、特に Insiders でセルフホスティングを行い、フィードバックを提供して、このアップデートを自信を持って出荷できるようにしてくれたコミュニティに感謝します。

この変更は VS Code ユーザーにとってどのような意味がありますか?

ワークスペースの切り替えやワークスペースの再読み込みなどの操作が高速になるはずです。今回のアップデートでは、Chromium のバージョンも 98.0.4758.109 に、Nodejs のバージョンも 16.13.0 に引き上げました。

次は何ですか?

Electron の新しい リリースケイデンス に基づいて、Electron バージョンの採用を継続します。また、ワークベンチのサンドボックス化 にも積極的に取り組んでおり、次のステップは、Node.js ホストサービスとサンドボックス化されたワークベンチ 間の通信チャネルを改善することです。これにより、新しいアーキテクチャをさらに簡素化できます。

RPM パッケージの必要条件リストの改善

Chromium で行われた作業に触発され、ビルドプロセス の一部として、rpm パッケージに必要な依存関係を計算するようになりました。これにより、新しいランタイムやネイティブモジュールを採用する際に、最新の依存関係リストを提供できます。次のマイルストーンでは、debian パッケージにも同様の変更を導入する予定です。

組み込み拡張機能のアウトオブバンドリリースをサポート

Marketplace で利用可能な組み込み拡張機能は、アウトオブバンドでリリースできるようになり、VS Code は新しいバージョンを検出し、拡張機能を更新します。これにより、これらの拡張機能はプレリリースもサポートできるようになります。

ドキュメント

VS Code における R

Visual Studio Code における R という新しいトピックで、R 拡張機能 を使用した VS Code での R プログラミング言語 のサポートについて説明しています。R 拡張機能には、コード補完やリンティングなどの豊富な言語機能に加えて、統合された R ターミナル、専用のワークスペース、データ、プロットビューアーが含まれています。

R Extension for Visual Studio Code details pane

開発コンテナーのブログ記事

使いやすいプログラミング環境を作成するための開発コンテナーの使用に関する Burke Holland の最近のブログ記事を見逃した場合は、「チュートリアルの問題」 を確認してください。このブログ記事では、Laravel が事前構成済みの Docker コンテナーを使用して、PHP フレームワークチュートリアルのランタイムと依存関係を提供する方法について説明しています。

注目すべき修正

  • 117674 デバッグコンソールがコンテンツを折り返すときに自動スクロールが時々停止する
  • 138963 デバッグが開始されると、デバッグコンソールが正常に動作しない
  • 142754 VS Code ターミナルでの Emacs の使用が壊れている
  • 143513 contributes.configuration 項目は、検索ボックスが空の場合にのみビューで "order" 属性を尊重する
  • 144458 グロブパターン **/p*/foo/ap に誤って一致する
  • 144783 編集されていない設定リストウィジェット項目に最大幅がないように見える
  • 145243 小さい画面で設定目次のサイズを変更できない
  • 145572 設定ボックスが設定に重なる可能性がある

謝辞

最後に、しかし決して少なくないこととして、VS Code のコントリビューターに心から感謝申し上げます。

Web 拡張機能

Web 拡張機能 としてコードを実行する拡張機能を有効にした拡張機能作成者 (以下のリストは 2022 年 3 月 1 日から 2022 年 3 月 27 日の間)

Issue tracking

Issue tracking への貢献

プルリクエスト

vscode への貢献

vscode-css-languageservice への貢献

vscode-js-debug への貢献

vscode-languageserver-node への貢献

vscode-vsce への貢献

debug-adapter-protocol への貢献

language-server-protocol への貢献