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

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

アップデート 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 - ローカル履歴から特定のファイルを除外するためのグロブパターン。
  • 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-bitを使用していてWindows 32-bit用の C/C++ 拡張機能をインストールしており、マーケットプレイスにWindows 64-bit用の同じバージョンの拡張機能がある場合、VS Codeは自動的に拡張機能を64-bit版にアップデートします。

音声キューの改善

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

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

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

これにより、パネルとサイドパネルの2つのパネルが残り、どちらもワークベンチの側面に配置できるようになりました。これを考慮し、新しいサイドパネルの方向性をより適切に反映させるために、サイドバー(Side Bar)とサイドパネル(Side Panel)の両方の名称を更新することに決定しました。サイドバーは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 拡張機能によって、IssuesやPull Requestsにコメントを追加するために広く使用されていますが、任意の拡張機能でも採用できます。

コメントビューの検出可能性

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

コメント追加の検出可能性

これで、コメントを追加できる行の任意のパーツにマウスオーバーすると、左側のガターに “+” シンボルが表示されるようになります。

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

コメントのアクセシビリティがいくつか改善されました:

  • コメント可能な範囲にいる場合にコメントを作成するための Add Comment on Current Line コマンド。
  • コメントの数とスレッドのラベルを含む、コメントスレッド用のARIAラベル。
  • Go to Next Comment Thread コマンドは、コメントスレッドコントロールにフォーカスを合わせます。
  • 新しい Go to Previous Comment Thread コマンド。
  • 次および前のコマンドのキーボードショートカット: 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スタイリングを保持

ターミナルからリッチテキストをコピーするには、Terminal: Copy Selection as HTML コマンドを実行するか、ターミナルのコンテキストメニューエントリ Copy as HTML を使用します。

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

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

ソース管理

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

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

エディター

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

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ファイルシステムアクセス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デバッガーがヒーププロファイルの収集と視覚化をサポートするようになりました。ヒーププロファイルを使用すると、時間の経過とともにどこに、どれだけのメモリが割り当てられているかを確認できます。これらは、Debug: Take Performance Profile コマンドのオプションとして追加されており、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 libraryによって実装されており、次の設定が用意されています:

  • 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: New Python File という新しいコマンドを使用するか、スタートページNew File... 項目を使用します。

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が有効になっている場合、Problems パネルに同じ問題の2つのエントリが表示されることがあります。"python.linting.pylintEnabled": false を設定することで、組み込みのリンティング機能を無効にできます。

Jupyter

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

カーネルのサポート

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

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

データビューア

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

Named indexes support in Jupyter extension Data Viewer

新しいJupyterノートブック

新しいJupyterノートブックの作成が New File... メニューに統合されました。

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

リモート開発

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

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

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

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

GitHub Pull Requests and Issues

プルリクエストやIssueの作業、作成、管理を行える GitHub Pull Requests and Issues 拡張機能の開発が継続されています。ハイライトを確認するには、拡張機能の 0.40.0リリースの変更履歴をチェックしてください。

プレビュー機能

ターミナルシェル統合

今回のリリースでも、シェル統合は、主に信頼性の向上や、上記のTerminal セクションで説明した装飾の改善の形で、さらなる改善が見られます。

ハイライトは以下のとおりです:

  • エディターと同様に、コマンドの装飾がスクロールバーに表示されるようになりました。
  • コマンドの装飾は、ウィンドウの再読み込み(またはデタッチ/アタッチ)をまたいで復元されます。
  • Windowsでターミナルのサイズを変更する際のコマンドの追跡が改善されました。
  • VS Codeコマンドの Terminal: Clear およびシェルコマンドの 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 型への追加を最終決定しました。この型を使用すると、Go to Definition などの言語機能を特定のドキュメントに関連付けることができ、UIを駆動し、対応するプロバイダーに結果を要求するかどうかを決定します。拡張機能がノートブックのタイプを絞り込むことを可能にする新しいプロパティを追加しました。たとえば、{ language: 'python', notebookType: 'jupyter-notebook'} は、Jupyterノートブックに埋め込まれているすべてのPythonドキュメントをターゲットにします。

インレイヒントに編集を含めることが可能に

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

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

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

カラーテーマの種類: High Contrast Light

カラーテーマで、ベーステーマ (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のサポート

先月、Debug Adapter Protocolは 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を使用してプログラムを作成できます。

提案された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 は、ノートブックが変更されるたびに発生します。たとえば、セルが追加または削除されたとき、セル自体が変更されたとき、またはメタデータが変更されたときです。

Tabs APIの形状の最終決定

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

インライン補完

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

エディターへのドロップ

提案中の text editor drop 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バージョンの採用を継続します。また、ワークベンチのサンドボックス化に向けても積極的に取り組んでおり、次のステップはNode.jsホストサービスとサンドボックス化されたワークベンチ間の通信チャネルを改善することであり、これにより新しいアーキテクチャをさらに簡素化できるようになります。

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

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

組み込み拡張機能の帯域外リリースのサポート

マーケットプレイスで入手可能な組み込み拡張機能を帯域外でリリースできるようになり、VS Codeが新しいバージョンを検出して拡張機能をアップデートできるようになりました。これにより、これらの拡張機能でプレリリースもサポートできるようになります。

ドキュメント

VS CodeでのR

R拡張機能を使用したVS CodeでのRプログラミング言語のサポートについて説明する、新しいVisual Studio 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日までの期間)

イシュートラッキング

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

プルリクエスト

vscodeへの貢献

vscode-css-languageserviceへの貢献

vscode-js-debug への貢献

vscode-languageserver-nodeへの貢献

vscode-vsceへの貢献

debug-adapter-protocolへの貢献

language-server-protocolへの貢献

© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.