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

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

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

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

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | 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 を最も利用しやすいエディターの1つにするために懸命に取り組んでいます。このリリースには、使いやすさとアクセシビリティを向上させるためのいくつかの改善が含まれています。

ワークベンチ

ローカル履歴

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

各ローカル履歴のエントリには、そのエントリが作成された時点のファイルの全内容が含まれており、場合によってはより多くの意味情報を提供できます (たとえば、リファクタリングを示します)。

エントリから次のことができます

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

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

  • 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 - ローカルファイル履歴の最後のエントリにさらに変更が追加される秒単位の間隔 (デフォルト 10s)。

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

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 は、プラットフォーム固有の拡張機能を、より特定のターゲットプラットフォームバージョンに更新するようになりました。たとえば、Windows 64ビットを使用しており、Windows 32ビット用のC/C++拡張機能をインストールしており、Marketplace にWindows 64ビット用の同じバージョンの拡張機能がある場合、VS Code は拡張機能を自動的に64ビットバージョンに更新します。

オーディオキューの改善

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

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

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

これにより、パネルとサイドパネルという2つのパネルが残り、両方ともワークベンチの側面に配置できるようになりました。この状況を考慮し、新しいサイドパネルの方向性をよりよく反映するために、サイドバーとサイドパネルの両方の命名を更新することにしました。サイドバーは UI で「Primary Side Bar (プライマリサイドバー)」と、サイドパネルは「Secondary Side Bar (セカンダリサイドバー)」と呼ばれるようになります。

  • サイドバー -> Primary Side Bar (プライマリサイドバー)
  • サイドパネル -> 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+F9Shift+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 は、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 デバッガーは、ヒーププロファイルの収集と視覚化をサポートするようになりました。ヒーププロファイルを使用すると、時間の経過とともにどこにどれだけのメモリが割り当てられているかを確認できます。これらは、デバッグ: パフォーマンスプロファイルの取得コマンドのオプションとして追加されており、CALL STACK ビューのレコード ⏺ ボタンからもアクセスできます。

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 ファイルという新しいコマンドを使用するか、Get Started ページ新しいファイル...項目を使用します。

Pylint 拡張機能

pylintを使用した linting のための新しい Microsoft Pylint 拡張機能が利用できるようになりました。この拡張機能は、linting サポートを提供するために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回表示されることがあります。組み込みの linting 機能を無効にするには、"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

リモート開発

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

1.66 の機能ハイライトは次のとおりです。

  • "開発コンテナで開く" バッジ - リポジトリのユーザーをカスタム開発コンテナで開き直すように誘導します。
  • Remote - SSH 拡張機能は、リモートの Apple Silicon/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.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 のサポート

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

Debug Console example displaying detail field

Language Server Protocol

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

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

Debug Adapter Protocol

私たちはDebug Adapter Protocolのいくつかのドキュメントの問題に対処しました。

  • terminatedisconnectリクエストを明確にするために、それらのドキュメントを改善しました。
  • 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 のイシューを介して提供できます。タブ 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 に、Node.js のバージョンも 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 拡張機能には、コード補完や linting などの豊富な言語機能、統合された R ターミナル、専用のワークスペース、データ、プロットビューアが含まれています。

R Extension for Visual Studio Code details pane

開発コンテナのブログ投稿

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

注目すべき修正点

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

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

Web拡張機能

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-js-debugへの貢献者

vscode-languageserver-nodeへの貢献者

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

debug-adapter-protocolへの貢献者

language-server-protocolへの貢献者