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

アップデート 1.66.1: このアップデートは、これらの問題に対応しています。

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

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


Visual Studio Code の 2022年3月リリースへようこそ。このバージョンには多くのアップデートが含まれています。主なハイライトは以下の通りです。

これらのリリースノートをオンラインで読みたい場合は、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 - ローカル履歴から特定のファイルを除外するための Glob パターン。
  • workbench.localHistory.mergeWindow - 以降の変更をローカルファイル履歴の最後のエントリに追加する間隔(秒単位、デフォルト 10秒)。

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

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

注: ローカル履歴エントリは、VS Code の使用状況に応じて異なる場所に保存されます。ローカルファイルを開く場合、エントリはローカルのユーザーデータフォルダーに保存され、リモートファイルを開く場合はリモートのユーザーデータフォルダーに保存されます。ファイルシステムが利用できない場合(Web 版 VS Code を使用している特定の場合など)は、エントリは IndexedDB に保存されます。

設定エディター

言語フィルター

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

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

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

テーマ: Light Pink

ワークスペースおよびフォルダー設定の保持

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

以下の例では、エディターのタブサイズが設定エディターの「ワークスペース」タブで設定されており、ワークスペースの settings.json ファイルに自動的に追加されています。

テーマ: Light Pink

プライマリ通知ボタン

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

Notification where first button is displayed as green primary color

テーマ: GitHub Dark

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

エディターがエディターグループの最初か最後かを示す新しいコンテキストキーが追加されました。

  • 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 は、プラットフォーム固有の拡張機能を、より具体的なターゲットプラットフォームバージョンにアップデートすることをサポートしました。たとえば、64ビット版 Windows を使用していて、32ビット版 Windows 用の C/C++ 拡張機能をインストールしており、マーケットプレイスに同じバージョンの 64ビット版 Windows 用拡張機能がある場合、VS Code は自動的に 64ビット版にアップデートします。

オーディオ キューの改善

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

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

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

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

  • サイドバー (Side Bar) -> プライマリ サイドバー (Primary Side Bar)
  • サイドパネル (Side Panel) -> セカンダリ サイドバー (Secondary Side Bar)

これらの名称はエディター内のメニューやコマンドに反映されますが、既存のキーバインドが壊れないよう、コマンド 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 拡張機能によって課題やプルリクエストにコメントを追加するために広く使用されていますが、どの拡張機能でも採用できます。

コメントビューの発見しやすさ

コメントが含まれているファイルを開くと、コメントビューが表示されるようになります。これは設定 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+上/下
  • Linux/Windows: Ctrl+上/下 (新規)

ターミナル内でコマンド間の選択を行うには、Shift キーを押し続けます。

コピーされたテキストが HTML スタイリングを保持

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

最小コントラスト比のデフォルトを変更

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

ソース管理

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

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

エディター

インライン補完としてのクイック候補

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

テーマ: GitHub Light

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

新しいスニペット変数 $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 が追加されました。

Web 版 VS Code

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

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

リモートリポジトリ

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

以前は、Azure Repos 拡張機能は GitHub Repositories 拡張機能に直接依存していました。Azure Repos と GitHub Repositories は現在、共通の拡張機能である Remote Repositories に依存しており、GitHub と Azure Repos で共通のワークフローをサポートしています。以前 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)。

同じ設定が lessscss にも存在します。

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 を使用したリンティング用の新しい Microsoft Pylint 拡張機能が登場しました。この拡張機能は、Language Server Protocol を利用してリンティングをサポートします。

Pylint 拡張機能には、pylint を介して報告される問題の重大度レベルを調整するための追加構成が用意されています。

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

注: Python 拡張機能でも Pylint を有効にしている場合、「問題」パネルに同じ問題に対して2つのエントリが表示されることがあります。その場合は "python.linting.pylintEnabled": false を設定することで、内蔵のリンティング機能を無効にできます。

Jupyter

このマイルストーンでは、Jupyter 拡張機能にいくつかの改善が行われました。

カーネルサポート

カーネルの起動が以下のように改善されました

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

データビューアー

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

Named indexes support in Jupyter extension Data Viewer

新しい Jupyter ノートブック

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

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

リモート開発

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

1.66 の機能ハイライトには以下が含まれます

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

拡張機能の新機能やバグ修正については、リモート開発のリリースノートをご覧ください。

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能の開発は継続されており、プルリクエストや課題の作成、管理が可能です。ハイライトについては、拡張機能の 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 は、インレイ ヒントを不要にするために必要な編集を行うために使用されるべきです。たとえば、推論された型を表すヒントをダブルクリックすると、その型アノテーションが挿入されるようにします。

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

このマイルストーンでは、カスタム言語 ID で出力チャネルを作成するための createOutputChannel API を確定しました。これにより、言語 ID を渡すことで、トークンや構文の色付け、CodeLens などの機能を出力チャネルに追加できるようになります。

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

カラーテーマでベーステーマ (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

Type Hierarchy、インライン値、およびインレイ ヒントのサポートが、3.17 リリースの準備のために提案(proposed)状態から外されました。ライブラリの新しいネクストバージョンが公開されました。

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

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

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

  • terminate リクエストと disconnect リクエストの曖昧さを解消するために、それらのドキュメントを改善しました。
  • evaluate リクエストの context 引数に variables という値が文書化されました。VS Code は、「変数」ビューのコンテキストで evaluate リクエストが呼び出されるたびに、この文書化されていなかった値を使用していました。context 引数は string 型であり、variables の値はドキュメントに記載されただけなので、クライアントやデバッグアダプター側で変更は不要です。

提案中の拡張機能API

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

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

提案されたAPIを使用した拡張機能は発行できません。次回のリリースで互換性のない変更が含まれる可能性があり、既存の拡張機能を壊すことは望ましくありません。

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

InputBox API (window.showInputBox および window.createInputBox) は、ユーザーの入力を検証するメカニズムを提供しています。今回のイテレーションでは、重大度(severity)を表示するための提案された 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 はノートブックが変更されるたびに発生します。たとえば、セルの追加や削除、セル自体の変更、メタデータの変更などです。

Tabs API の形状確定

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

インライン補完

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

エディターへのドロップ

提案された text editor drop API を使用すると、拡張機能でテキストエディターへのドロップを処理できます。これらのドロップイベントは、VS Code 内から(VS Code のエクスプローラーからテキストエディターへファイルをドラッグするなど)、または OS から VS Code へファイルをドロップすることで発生します。

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

Markdown ファイルにドロップしたときにリンクを生成する実験的なサポートが含まれています。また、API の使用例として Markdown 拡張機能のソースを確認できます。

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

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

エンジニアリング

Electron 17 へのアップデート

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

この取り組みに関わったすべての方々に感謝します。また、Insiders 版を使用してフィードバックを提供してくれたコミュニティのおかげで、自信を持ってこのアップデートをリリースすることができました。

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

ワークスペースの切り替えやワークスペースのリロードなどの操作が高速になります。また、このアップデートにより、Chromium のバージョンが 98.0.4758.109 に、Node.js のバージョンが 16.13.0 に上がります。

次は何?

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

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

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

内蔵拡張機能の帯域外リリースのサポート

マーケットプレイスで入手可能な内蔵拡張機能が、通常のリリースサイクルとは別に(帯域外で)リリースできるようになり、VS Code が新しいバージョンを検出してアップデートするようになりました。これにより、これらの拡張機能でもプレリリース版がサポート可能になります。

ドキュメント

VS Code での R

R 拡張機能を使用した VS Code での 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 Glob パターン **/p*/foo/ap に誤って一致する
  • 144783 編集されていない設定リストウィジェットの項目に最大幅が設定されていないように見える
  • 145243 小さい画面で設定の目次(toc)のサイズ変更ができない
  • 145572 設定ボックスが設定項目と重なることがある

ありがとうございます

最後になりましたが、VS Code への貢献者の方々に心から感謝いたします。

Web 拡張機能

コードをWeb 拡張機能として実行できるようにしてくれた拡張機能の作者の方々(以下のリストは2022年3月1日から3月27日の間のものです)

イシュートラッキング

イシュートラッキングへの貢献

プルリクエスト

vscodeへの貢献

vscode-css-languageserviceへの貢献

vscode-js-debug への貢献

vscode-languageserver-nodeへの貢献

vscode-vsceへの貢献

debug-adapter-protocolへの貢献

language-server-protocolへの貢献

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