2020年4月 (バージョン 1.45)

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

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


Visual Studio Code 2020年4月リリースへようこそ。このバージョンには、皆様に気に入っていただける多くのアップデートが含まれています。主なハイライトは次のとおりです。

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

Insiders: 最新機能をいち早く試してみませんか? nightly Insiders (英語) ビルドをダウンロードして、最新のアップデートをいち早くお試しください。また、Visual Studio Code の最新ニュース、アップデート、コンテンツについては、Twitter @code (英語) をフォローしてください!

アクセシビリティ

このマイルストーンでは、コミュニティから素晴らしいフィードバックをいただき、多くのアクセシビリティに関する issue (英語)を特定し、対処することができました。

  • ワークベンチ間のナビゲーションを容易にするために、次のパートへフォーカス (F6) および 前のパートへフォーカス (⇧F6 (Windows, Linux Shift+F6)) コマンドを導入しました。
  • ステータス バーがアクセシブルになり、フォーカスすると、スクリーン リーダーがその内容を読み取ることができます。
  • オープン エディター、ブレッドクラム、問題ビューなど、ワークベンチ内のすべてのリストおよびツリー ウィジェットに適切な ARIA ラベルを導入しました。

私たちのチームの最優先事項の 1 つは、Visual Studio Code をよりアクセシブルな製品にし、すべてのユーザーのエクスペリエンスを向上させることです。そのため、VS Code アクセシビリティに関する新しい Gitter チャンネル (英語)を作成しました。ユーザーの皆様には、ぜひご参加いただき、フィードバック、問題提起、アクセシビリティに関するプラクティスの共有をお願いいたします。

ワークベンチ

マウスホイールを使用したタブの切り替え

マウスホイールを使用してエディター タブ上をスクロールする場合、現在、タブを切り替えることはできず、表示範囲外のタブを表示することしかできません。新しい設定 workbench.editor.scrollToSwitchTabs を使用すると、アクティブなエディター タブを切り替えるように動作を変更できます。

下の例では、カーソルがエディター タブ領域にあるときに、ユーザーがマウスホイールをスクロールすると、アクティブなエディターが変更されます。

Changing editor tabs using the mouse wheel

注: Shift キーを押しながらスクロールすると、反対の動作になります (たとえば、scrollToSwitchTabs 設定がオフの場合でも、エディター タブを切り替えることができます)。

カスタム ウィンドウ タイトル セパレーター

新しい設定 window.titleSeparator を使用すると、ウィンドウ タイトルで使用される区切り文字を変更できます。デフォルトでは、ダッシュ '-' が使用されます。

Window title separator using dash

デフォルト テーマのサイド バー セクション ヘッダーの更新

デフォルトのダークおよびライト テーマのサイド バー セクション ヘッダーのスタイルを更新しました。背景を透明にし、各ヘッダーに境界線を表示するようになりました。

下の例では、オープン エディター セクション ヘッダーには背景色がなく、VSCODE および アウトライン ヘッダーには上境界線があります。

Side Bar section headers

エディター

より高速な構文強調表示

VS Code の構文強調表示は、Text Mate Grammar (英語) を解釈することによって実行されます。これらのグラマーは正規表現で記述されており、oniguruma 正規表現ライブラリ (英語)を使用して評価できます。これまで、このような正規表現を評価するために 2 つの異なるライブラリを使用してきました。1 つは VS Code デスクトップ用 (ネイティブ ノード モジュール)、もう 1 つはブラウザー内の VS Code 用 (Web Assembly バイナリ) です。

TextMate インタープリターでの使用に最適化された専用の Web Assembly バインディングを作成しました。インナーループでのメモリー割り当てを回避し、数か月前に oniguruma に追加された新しい API を採用することで、以前のアプローチよりも高速で、通常のプログラミング ファイルの強調表示で最大 3 倍のパフォーマンスを実現するバリアントを作成することができました。詳細と測定については、pull request #95958 (英語) を参照してください。

セマンティック トークン スタイリング

ユーザー設定でセマンティック テーマ ルールをカスタマイズできるようになりました。セマンティック カラーリングは TypeScript および JavaScript で利用可能で、Java および C++ のサポートが開発中です。組み込みテーマではデフォルトで有効になっており、テーマ拡張機能で採用され始めています。

editor.semanticTokenColorCustomizations 設定を使用すると、ユーザーはデフォルトのテーマ ルールをオーバーライドし、テーマをカスタマイズできます。

Semantic token color customization

上記の設定は、Default Dark+ テーマを変更します。パラメーターに新しいスタイル (イタリック体と新しい色) を適用し、デフォルト ライブラリ (たとえば、PromiseMap、およびそれらのプロパティ) からすべてのシンボルに下線を引きます。

下の例では、すべてのテーマにセマンティック スタイリングを追加します。

"editor.semanticTokenColorCustomizations": {
    "enabled": true, // enable semantic highlighting for all themes
    "rules": {
        // different color for all constants
        "property.readonly": "#35166d",

        // make all symbol declarations bold
        "*.declaration": { "bold": true }
    }
}

セマンティック トークンのテーマ設定の詳細については、セマンティック強調表示ガイド (英語)を参照してください。

Default Dark+ テーマの定数の新しい色

Default Dark+ および Default Light+ テーマでは、定数の色が書き込み可能な変数とは異なる色合いで表示されるようになりました。

下の例では、htmlMode および range 定数が result 変数とは異なる色になっていることに注目してください。

Default Dark+ テーマ

Constant color in the Dark+ theme

Default Light+ テーマ

Constant color in the Light+ theme

永続的なアンドゥの無効化

前回のマイルストーンでは、ファイルを閉じて再度開いたときにアンドゥ/リドゥ スタックが永続化されるように変更しました。誰もがこの新機能を望んでいるわけではなかったため、永続的なアンドゥを無効にする設定 files.restoreUndoStack が追加されました。

統合ターミナル

プロンプト関連のいくつかのコマンドの削除

次のコマンドが削除されました。

  • workbench.action.terminal.deleteWordLeft
  • workbench.action.terminal.deleteWordRight
  • workbench.action.terminal.deleteToLineStart
  • workbench.action.terminal.moveToLineStart
  • workbench.action.terminal.moveToLineEnd

これらのコマンドは、ターミナルが使用するコマンド キーバインドに基づいた最善の推測である特定の文字シーケンスをターミナルに送信することで機能していました。これらのコマンドの問題点は、ブラックボックスであり、その動作を理解するには、文字どおり vscode コードベースを検索する必要があったことです。これらは、汎用的な方法で同じことを行う workbench.action.terminal.sendSequence コマンドのカスタム キーバインドに置き換えられました。

これらは高度なキーボード ショートカットであり、引数が含まれているため、キーボード ショートカット UI で全体を表示することはできませんが、基本設定: デフォルトのキーボード ショートカットを開く (JSON) コマンドを実行すると、JSON 定義を表示できます。

Terminal sendSequence keybindings JSON

PowerShell での複数行テキストの貼り付けのサポート

VS Code は常にテキストを入力と同じ方法で送信していたため、PowerShell では複数行の貼り付けは機能しませんでした。上記で説明したように、いくつかのキーバインドが workbench.action.terminal.sendSequence コマンドを使用するように変更され、Windows 専用の新しいキーバインドが追加されたことに気付いたかもしれません。

{ "key": "ctrl+v",                "command": "workbench.action.terminal.sendSequence",
                                     "when": "terminalFocus && !accessibilityModeEnabled && terminalShellType == 'pwsh'",
                                     "args": {"text":"\u0016"} },

この新しいキーバインドは、Ctrl+V を表すテキストを PowerShell に直接送信します。これは、PSReadLine によって拾われ、適切に処理されます。

以前

Terminal paste error before

以後

Terminal paste correctly after

テーマ: Sapphire (Dim) (英語)

ダブルクリック ワード選択の制御

新しい terminal.integrated.wordSeparators 設定を使用すると、ターミナルでダブルクリックしたときに単語を区切るために使用される区切り文字をカスタマイズできます。

デフォルトの区切り文字は次のとおりです。

  "terminal.integrated.wordSeparators": " ()[]{}',\"`─"

デバッグ

自動デバッグ構成

VS Code でのデバッグのセットアップは、ユーザーが新しいデバッグ構成を作成 (または少なくともニーズに合わせてテンプレートを変更) する必要があるため、困難な作業になる可能性があります。デバッグ エクスペリエンスを簡素化するための継続的な取り組みにおいて、デバッグ拡張機能の作成者が現在のプロジェクトを分析し、追加のユーザー構成を必要としない高品質のデバッグ構成を自動的に提供する手段を提供する新機能を追加しました。

ビルド タスクが提供される方法と同様に、自動デバッグ構成は、デバッグ ビューの構成ドロップダウンと デバッグの選択と開始 クイック ピックの適切なデバッガー (フォルダー アイコン) の下にグループ化されます。デバッガーが選択されると、VS Code は利用可能なすべての自動構成を表示します。構成を選択すると、新しいデバッグ セッションが開始されます。

次のスクリーン キャストは、新しい JavaScript デバッガー (プレビュー) および教育用モック デバッグの機能を示しています。

Automatic debug configurations

デバッグ クイック ピックは、クイック オープン (⌘P (Windows, Linux Ctrl+P)) で 'debug ' (スペース付き) と入力するか、デバッグ: デバッグの選択と開始 コマンドをトリガーすることで開くことができます。

次のマイルストーンでは、自動デバッグ構成を launch.json に簡単に追加して、さらに構成できるように UI を追加する予定です。

タスク

より高速なクイック ピックの無効化

バージョン 1.44 では、レイアウトを変更して高速化することで、タスク: タスクの実行 コマンドを実行したときに表示されるタスク ピッカーを改善しました。ただし、より高速なクイック ピックでは、実行するタスクによっては、タスク ピッカーが 2 レベル深くなります。以前の UI が必要な場合は、task.quickOpen.showAll 設定を使用して、より高速なピッカーを無効にできるようになりました。

実行時に保存

以前は、タスクが実行されると、ダーティ エディターは常にすべて保存されていました。タスクの実行時にエディターを保存したくない場合は、task.saveBeforeRun でその動作を構成できるようになりました。

言語

TypeScript ステータス バー エントリーの機能強化

TypeScript ファイルにフォーカスしている場合、VS Code はステータス バーに現在の TypeScript バージョンを表示します。

TypeScript version status bar entry

バージョンをクリックすると、現在の TypeScript プロジェクトに適したコマンドが表示されるようになりました。

TypeScript project commands

TypeScript のワークスペース バージョンに切り替えるようにユーザーに促す

新しい typescript.enablePromptUseWorkspaceTsdk 設定を使用すると、TypeScript のワークスペース バージョンに切り替えるかどうかをユーザーに尋ねるプロンプトが表示されます。

Prompt shown when opening a workspace with local TypeScript version

プロンプトを有効にするには、プロジェクトのワークスペース設定として "typescript.enablePromptUseWorkspaceTsdk": true および typescript.tsdk を含めます。

Markdown ファイル内のエディター リンクと Markdown プレビュー内のリンクがフォルダーを指すことができるようになりました。これらのリンクのいずれかをクリックすると、ターゲット フォルダーが VS Code のファイル エクスプローラーに表示されます。

ソース管理

GitHub リポジトリの GitHub 認証

VS Code には、GitHub リポジトリに対する自動 GitHub 認証が追加されました。システムにクレデンシャル マネージャーを構成しなくても、パブリックおよびプライベート リポジトリとの間でクローン、プル、プッシュを実行できるようになりました。統合ターミナルで呼び出された Git コマンド (例: git push) でさえ、GitHub アカウントに対して自動的に認証されるようになりました。

git.githubAuthentication 設定を使用して GitHub 認証を無効にできます。また、git.terminalAuthentication 設定を使用してターミナル認証統合を無効にすることもできます。

Git コミット入力ボックスの非表示

新しい設定 git.showCommitInput を使用すると、Git リポジトリのコミット入力ボックスを非表示にできます。

インライン diff が編集可能に

ファイル内の変更をプレビューするときに、クイック diff エディター内で編集できるようになりました。

Editable inline diff

プレビュー機能

プレビュー機能はリリース準備が整っていませんが、使用するのに十分な機能があります。開発中のため、早期のフィードバックをお待ちしております。

設定の同期

過去数か月にわたって、マシン間で VS Code の設定を同期するための作業を進めてきました。この機能は、Insiders (英語) リリースでプレビュー版として利用できます。

GitHub アカウントでサインインして、VS Code の設定を同期できるようになりました。

Settings Sync Sign in with GitHub

テーマ: GitHub Sharp with Customizations

グローバル スニペットの同期もサポートされるようになりました。

新しい JavaScript デバッガー

今月も、新しい JavaScript デバッガーの開発を継続しました。Insiders にはデフォルトでインストールされており、VS Code stable のMarketplace (英語)からインストールできます。debug.javascript.usePreview 設定を有効にすることで、既存の起動構成で使用を開始できます。

今月追加された新機能の一部を以下に示します。

プロファイリングのサポート

コール スタック ビューの新しい プロファイル ボタンをクリックするか、デバッグ: パフォーマンス プロファイルの取得 コマンドを使用することで、Node.js またはブラウザー アプリケーションから CPU プロファイルをキャプチャできます。実行すると、プロファイルの実行時間を [停止するまで]、[時間指定]、または [別のブレークポイントにヒットするまで] から選択できます。

プロファイルが終了すると、ワークスペース フォルダーに保存され、VS Code で開かれます。安定版ビルドを実行している場合は、ビジュアライザー拡張機能 (英語)をインストールして表示する必要があります。Insiders では、拡張機能はすでに組み込まれています。プロファイルを開くと、関数レベルおよび特定の「ホット」ラインのパフォーマンス情報を含む CodeLens がファイルに追加されます。他の多くのツールでキャプチャされたプロファイルとは異なり、記録されたプロファイルはソースマップを認識します。

Animation showing the process of taking a profile

テーマ: Earthsong、フォント: Fira Code

自動アタッチの統合

debug.javascript.usePreview がオンになっている場合、VS Code の自動アタッチ (英語)は、すべてのターミナルをデバッグ ターミナルと同様に動作させる js-debug によって提供される新しいメソッドを使用します。

既存のデバッガーに対する自動アタッチの改善点

  • デバッガーはすぐにアタッチされるため、プログラムの早い段階でブレークポイントにヒットできます。
  • 子プロセスは自動的にデバッグされます。
  • 自動アタッチ中のプロセスポーリングのオーバーヘッドはありません。

[変数] ビューからの複雑な値のコピー

以前は、VS Code の [変数] ビューからオブジェクトなどの複雑な値をコピーしようとすると、データが切り捨てられたり、不完全になることがよくありました。VS Code と js-debug の変更により、完全な値をコピーできるようになりました。

Animation showing copying and pasting a very large array

製品アイコン テーマ

Visual Studio Code には、ビューやエディターで使用される一連の組み込みアイコンが含まれていますが、ホバー、ステータス バー、および拡張機能でも使用できます。これらのアイコンは、UI 全体でファイル名の横に表示されるファイル アイコンとは対照的に、製品アイコンです。

VS Code に付属する製品アイコンは、Codicon アイコン フォント (英語)に含まれており、デフォルトの製品アイコン テーマに使用されます。拡張機能は、これらのアイコンを再定義し、VS Code に新しい外観を与える新しい製品アイコン テーマを提供できるようになりました。

Custom product icon themes

製品アイコン テーマ (英語)のドキュメントには詳細が記載されており、製品アイコン テーマのサンプル (英語)があります。

すべてのオープン プロジェクトにわたる TypeScript/JavaScript シンボル検索

TypeScript 3.9 以降を使用する場合、VS Code のワークスペース シンボル検索 (英語)には、デフォルトですべての開いている JavaScript および TypeScript プロジェクトの結果が含まれるようになりました。以前は、現在アクティブなファイルのプロジェクトのみを検索していました。

これは、新しい "typescript.workspaceSymbols.scope" 設定によって制御されます。以前の動作に戻すには、"typescript.workspaceSymbols.scope": "currentProject" を設定します。

ターミナル内のリンクが大幅に改善され、基盤となるシステムが、より堅牢な実装に変更され、次のことが可能になりました。

  • より優れた Web および file:// リンク検出のためのエディターのリンク検出の使用。
  • エクスプローラーでフォルダーを開くか、新しい VS Code ウィンドウを開くかのいずれかのフォルダー リンクのサポート。
  • terminal.integrated.wordSeparators 設定に基づいて、ワークスペースを検索する「単語」リンクにフォールバックする、さまざまなリンク タイプに対するさまざまなリンク アクション。
  • エディターと同様のリンクの強調表示とホバー エクスペリエンス。

Terminal with various links

テーマ: Topaz (Dim) (英語)

既知の問題のリストは、このクエリ (英語)で入手できます。

動的なビュー アイコンとタイトル

このマイルストーンでは、レイアウトをより柔軟にするための作業を継続しました。ワークベンチ内でビューを移動すると、アクティビティ バーに新しいアイコンを作成したり、パネルに新しいタブを作成したりできます。これらの新しく作成されたビュー コンテナーに何が保持されているかを理解しやすくするために、ロジックを更新して理解しやすくしました。

カスタム コンテナーがある場合、最初の表示されるビューからタイトルとアイコンを継承します。これにより、ビューを再配置することで変更できます。組み込みまたは拡張機能のコンテナーの場合、可能な限りこのアイコンを保持しようとします。下の例では、新しいビューがビュー コンテナーの一番上に配置されると、そのアイコンとタイトルが更新されます。

Dynamic icons and titles

最後に、カスタム コンテナーを、含まれているすべてのビューと一緒に一度に移動できるようになりました。下の短いビデオは、ターミナルと出力ビューの組み合わせをアクティビティ バーにドラッグする様子を示しています。

Moving whole View Containers

拡張機能への貢献

リモート開発

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

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

  • Dev Containers: コンテナー構成の推奨事項を提供します。
  • Dev Containers: WSL 2 Docker および Podman エンジンをサポートします。
  • Dev Containers: ローカルおよびコンテナー フォルダー用の新しい devcontainer.json 変数。

新しい拡張機能の機能とバグ修正については、Remote Development リリース ノート (英語)を参照してください。

GitHub Pull Requests and Issues

以前は「GitHub Pull Requests」という名前だったGitHub Pull Requests and Issues 拡張機能 (英語)を使用すると、VS Code 内からプル リクエストを管理およびレビューできます。1 年以上前から (英語)。拡張機能が拡張され、GitHub Issues のサポートが含まれるようになりました。

Issue のサポートには、以下が含まれます。

  • #-参照された issue と @-メンションされたユーザーのホバー。
  • issue とユーザーのインライン補完候補。
  • カスタム クエリを使用できる [Issues] ビュー。
  • issue の作業を開始するアクション。ブランチを作成し、コミット メッセージを設定します。

新しいリポジトリ サポートもあります。

下の短いビデオは、GitHub に新しいプライベート リポジトリを発行する様子を示しています。ファイルが正常にアップロードされたら、GitHub でリポジトリを閲覧するオプションもあります。

Publish repository

詳細については、最近のGitHub Issues Integration (英語)ブログ投稿とGitHub の操作 (英語)ドキュメントを参照してください。

GitHub Issue Notebook

VS Code チームは、Notebooks のネイティブ サポートに取り組んでいます。最近使用されている最も人気のある Notebooks は Jupyter Notebooks であり、調査中に、偏りがなく、さまざまなスタイルの Notebooks をサポートする Notebook ソリューションを構築する方法を検討し始めました。

それらの Notebooks の 1 つは、GitHub Issue Notebooks 拡張機能 (英語)です。これにより、issue とプル リクエストの検索を管理し、結果をインラインでレンダリングできます。

GitHub Issue Notebook

この拡張機能はまだ開発中であり、VS Code Insiders でのみ動作しますが、これを使用すると、Notebooks を直接体験し、フィードバックを提供できます。

拡張機能の作成

エディター タブの新しいテーマの色

ワークベンチ エディター タブのテーマをさらに設定するために、新しい色が追加されました。

  • tab.unfocusedInactiveBackground: フォーカスされていないグループのアクティブでないタブの背景色
  • tab.hoverForeground: ホバー時のタブの前景色
  • tab.unfocusedHoverForeground: フォーカスされていないグループのホバー時のタブの前景色

エディター タイトル境界線の新しいテーマの色

既存の色 editorGroupHeader.tabsBorder は、エディター タブの下、ブレッドクラムの上に境界線をレンダリングするように変更されました。新しい色 editorGroupHeader.border を使用すると、エディター グループ ヘッダーの下 (たとえば、ブレッドクラムが有効になっている場合はブレッドクラムの下) に境界線をレンダリングして、editorGroupHeader.tabsBorder の以前の動作を復元できます。

vscode NPM モジュールの非推奨化とアーカイブ

2019 年 6 月に、event-stream インシデントに照らして、vscode モジュールを @types/vscode と vscode-test に分割しました (英語)。今日、minimist のセキュリティ警告 (英語)により、mocha@5.2.0 に依存し、したがって minimist@0.0.8 に依存する vscode にまだ依存している拡張機能に対してセキュリティ警告が発生しました。残念ながら、mocha@5.2.0 は更新を受信しなくなり、新しい mocha バージョンにアップグレードすると、既存の機能が破損します。

不要な依存関係を削除した vscode の新しいバージョンを公開しました。また、リポジトリ (英語)をアーカイブし、NPM のvscode モジュール (英語)を非推奨にしました。@types/vscode および vscode-test移行してください (英語)

新しい補完項目種別

issue とユーザーを表す 2 つの新しいエントリが vscode.CompletionItemKind に追加されました。これらは、たとえば、TODO タグを追加するときにユーザー名を提案するために使用できます。

URI の操作

vscode.Uri.joinPath ユーティリティを追加しました。これは、既存の URI にパス セグメントを結合して新しい URI を作成するファクトリ関数です。Node.js の path.join ユーティリティの URI 版と考えてください。

拡張機能の場合、VS Code は拡張機能がインストールされている URI を Extension.extensionUri および ExtensionContext.extensionUri 経由で公開します。join ユーティリティを使用すると、拡張機能のリソースの URI を作成できるようになりました。

例:

const fileUri = vscode.Uri.joinPath(context.extensionUri, './file.png');
const bytes = await vscode.workspace.fs.readFile(fileUri);

debug/callstack/context メニュー インライン グループ

VS Code は、debug/callstack/context メニュー inline グループへのコントリビューションをサポートするようになりました。このグループにコントリビューションされたコマンドは、ユーザーがデバッグ セッション要素にホバーすると、コール スタックにインラインでレンダリングされます。

Call Stack inline contribution

新しいデバッグ テーマの色

デバッグ ビューのスタイル設定用の新しい色があります。

  • debugView.exceptionLabelForeground: デバッガーが例外で中断したときに [コール スタック] ビューに表示されるラベルの前景色
  • debugView.exceptionLabelBackground: デバッガーが例外で中断したときに [コール スタック] ビューに表示されるラベルの背景色
  • debugView.stateLabelForeground: [コール スタック] ビューに表示される現在のセッションまたはスレッドの状態を示すラベルの前景色
  • debugView.stateLabelBackground: [コール スタック] ビューに表示される現在のセッションまたはスレッドの状態を示すラベルの背景色
  • debugView.valueChangedHighlight: デバッグ ビュー (たとえば、[変数] ビュー) で値の変更を強調表示するために使用される色
  • debugTokenExpression.name: デバッグ ビュー (たとえば、[変数] ビューまたは [ウォッチ] ビュー) に表示されるトークン名の前景色
  • debugTokenExpression.value: デバッグ ビューに表示されるトークン値の前景色
  • debugTokenExpression.string: デバッグ ビュー内の文字列の前景色
  • debugTokenExpression.boolean: デバッグ ビュー内のブール値の前景色
  • debugTokenExpression.number: デバッグ ビュー内の数値の前景色
  • debugTokenExpression.error: デバッグ ビュー内の式エラーの前景色

ソース管理

リソースを開くコマンドへの新しい preserveFocus 引数

SourceControlResourceState.command コマンドを呼び出すと、追加の preserveFocus: boolean 引数が渡されます。これにより、拡張機能の作成者はより優れたユーザー エクスペリエンスを提供できます。

入力テキストの MIME タイプ

ソース管理入力テキストには、専用の MIME タイプ text/x-scm-input が追加されました。

入力ボックスの表示/非表示の制御

拡張機能は、SourceControlInputBox.visible プロパティを使用して、リポジトリごとにソース管理入力ボックスの表示/非表示を制御できるようになりました。

Git

リモート ソース プロバイダー

Git 拡張機能 API を使用すると、他の拡張機能がリモート ソースを提供 (英語)して、Git: クローン コマンドに参加できるようになりました。

次に、GitHub Pull Requests and Issues 拡張機能 (英語)による例を示します。

Clone from GitHub

クレデンシャル プロバイダー

Git 拡張機能 API が拡張され、拡張機能が認証クレデンシャルを提供 (英語)して、ワークベンチおよび統合ターミナル内で HTTPS Git リポジトリに対して呼び出された Git コマンドを認証できるようになりました。

SignatureInformation.activeParameter

SignatureInformation の新しい activeParameter プロパティを使用すると、すべての署名に対してアクティブなパラメーターを個別に指定できます。指定した場合、これはトップレベルの SignatureHelp.activeParameter プロパティをオーバーライドします。

EventEmitter の厳密な null 修正

VS Code 1.44 以前では、EventEmitter.fire の引数はオプションです。

// Valid in VS Code 1.44
const emitter = new EventEmitter<number>();

emitter.event((x: number) => console.log(x));

// Calling fire with no argument was valid but resulted in the `x` above being `undefined`
emitter.fire();

これは厳密な null チェック (英語)に違反していましたが、コンパイル エラーは発生しませんでした。

VS Code 1.45 では、fire に引数が必要になりました。ソース コードで引数なしで .fire() を呼び出すことができるようにするには、new EventEmitter<void> を使用します。

Language Server Protocol

仕様の 3.16 バージョン (英語)の作業が開始されました。最初のステップとして、コール階層のサポートが提案された状態から移行しました。3.16 仕様はまだ最終版ではなく、フィードバックによっては変更される可能性があることに注意してください。

提案された拡張機能 API

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

  • 提案された API は頻繁に変更されるため、Insiders を使用する必要があります。
  • 拡張機能の package.json ファイルに次の行を含める必要があります: "enableProposedApi": true
  • 最新バージョンの vscode.proposed.d.ts ファイルをプロジェクトのソースの場所にコピーしてください。

提案されたAPIを使用する拡張機能を公開することはできませんのでご注意ください。次期リリースで破壊的な変更が入る可能性があり、既存の拡張機能を壊すことは決して望んでいません。

ターミナル環境への貢献

この新しい提案されたAPIは、拡張機能の作者がターミナル環境に貢献できるように先月導入されました。今月は主に、この機能の上にいくつかのUIを適用し、磨きをかける作業を行ってきました。ターミナルの環境が「古い」状態になると警告アイコンが表示されるようになり、何が変更されるのかを説明するリッチホバーが表示され、便利な「ターミナルを再起動」アクションが含まれています。変更がアクティブな場合は情報アイコンも利用できますが、デフォルトでは無効になっています。

Terminal stale environment warning

デバッグ構成を動的に提供する

ワークスペースまたはプロジェクトで見つかった情報に基づいて、デバッグ構成を動的に追加する方法をデバッグ拡張機能の作者に提供するために、デバッグ拡張機能APIを更新しました。これらのデバッグ構成は、launch.json からの静的なデバッグ構成が表示されるのと同じUIの場所に表示されます。

今リリースでは、動的なデバッグ構成は、デバッグビューの構成ドロップダウンと「デバッグの選択と開始」クイックピックに表示されます。将来のリリースでは、「Welcome」ビューにも表示することを検討しています。

新しいAPIは、既存の DebugConfigurationProviderprovideDebugConfigurations メソッドに基づいています。今リリースまで、provideDebugConfigurations は、新しく作成された launch.json にコピーされる初期の「静的な」デバッグ構成を提供するためにVS Codeによって呼び出されていました。新しいAPIでは、DebugConfigurationProvider は、新しいオプションの triggerKind 引数に DebugConfigurationProviderTriggerKind.Dynamic の値を渡すことで、「動的な」ケースのために vscode.debug.registerDebugConfigurationProvider を介して登録できるようになりました。この新しい登録により、VS Codeは、すべてのデバッグ構成のリストがUIに表示されようとするときはいつでも provideDebugConfigurations メソッドを呼び出すようになります。

この新しいAPIを利用する拡張機能を適切なタイミングでアクティブ化するために、新しいアクティベーションイベント onDebugDynamicConfigurations:<debug type> が導入されました。<debug type> は必須であり、動的なデバッグ構成が指定されているデバッガーを示します。

使用例は Mock Debug にあります。

バイナリカスタムエディターAPI

このイテレーションでは、バイナリカスタムエディターの提案されたAPIを安定化に向けて再構築することに時間を費やしました。念のためですが、カスタムエディターを使用すると、拡張機能はVS Codeの通常のテキストエディターの代わりに独自のエディターユーザーインターフェースを提供できます。テキストベースのファイル用のカスタムエディターのサポートはすでに安定化しています。提案されたAPIは、カスタムエディターを画像や16進ダンプなどのバイナリファイル形式に拡張します。

A custom editor for binary files

このAPIに関するフィードバックをお待ちしています。次回のイテレーションで最終決定できればと思っています。カスタムエディター拡張機能のサンプル を確認して、バイナリファイル用のカスタムエディターの実装例をご覧ください。カスタムエディターAPI のドキュメントでも、バイナリファイル用のカスタムエディターについて説明するようになりました。

このAPIがうまく機能するかどうか、またはカスタムエディターの実装で問題が発生した場合は お知らせください

エンジニアリング

ネイティブイテレーター

パフォーマンスを高速化するために、ネイティブES6イテレーターを使用するようになりました。詳細については、issue #94540 を参照してください。

コンパイルデーモン

deemon ユーティリティのおかげで、セルフホストコンパイルタスクをバックグラウンドプロセスとして実行するようになりました。VS Codeを再起動しても実行し続けます。

自動化されたissue分類

issueトリアージフローをGitHub Actionsに移行する作業を継続しており、issueの自動分類のためのActionsを作成しました。これらのActionsは、すべてのissueを自動的にダウンロードし、機械学習モデルを生成して、スケジュールに基づいてissueを機能領域に分類することで機能します。すべてのアクションの完全な実装は、GitHub Triage Actions リポジトリにあります。

新しいドキュメント

Docker Compose

Microsoft Docker拡張機能 が、複数のDockerコンテナを簡単に操作するために、Docker Composeファイルをプロジェクトに追加するのにどのように役立つかを説明する新しい Docker Compose トピックがあります。

Javaトピック

Javaトピックが更新され、Java拡張機能 を使用したJavaソースコードのLintingRefactoring に関する新しいトピックが含まれています。

GitHub

拡張されたGitHub統合により、VS Code内からGitHubを使用する方法を示す新しい Working with GitHub トピックがあります。

注目すべき修正

  • 46886: デバッグサイドバーでブレークポイントセクションのサイズを変更できない
  • 85344: VSCodeでリンクをクリックするとFirefoxがクラッシュする。
  • 86425: 統合ターミナルの幅が狭すぎる
  • 90714: デバッグコンソールのフォントサイズ設定を入力フィールドに適用する
  • 90734: 外部ターミナルとしてのWindows Terminalがワークスペースディレクトリで起動しない
  • 93973: [SSH] サイドバーで自動的に表示が機能しない
  • 94574: 中央揃えレイアウト:差分エディターを表示するときに全幅を使用する
  • 94982: Bashデバッグがバージョン1.44.0で開始しない
  • 95108: serverReadyAction debugWithChrome が突然動作しなくなった
  • 95319: getWordRangeAtPosition が拡張機能ホストをフリーズさせる可能性がある

ありがとうございました

最後になりましたが、VS Codeをさらに良くするために協力してくれた以下の皆様に、心から感謝申し上げます!

issue追跡への貢献

vscode への貢献

vscode-json-languageservice への貢献

vscode-html-languageservice への貢献

language-server-protocol への貢献

debug-adapter-protocol への貢献

vscode-generator-code への貢献

vscode-textmate への貢献

vscode-vsce への貢献

localization への貢献

Microsoft Localization Community Platform (MLCP) を使用している Cloud + AI Localization コミュニティメンバーは 800 人を超え、Visual Studio Code には 170 人以上のアクティブなコントリビューターがいます。新しい翻訳の提供、翻訳への投票、プロセスの改善提案など、皆様のご貢献に感謝いたします。

こちらはコントリビューターのスナップショットです。コントリビューター名リストを含むプロジェクトの詳細については、プロジェクトサイト(https://aka.ms/vscodeloc)をご覧ください。

  • 中国語 (簡体字、中国) Tingting Yi, Yizhi Gu, Charles Dong, Justin Liu, Joel Yang, Tony Xia, 朱知阳, meng shao, 普鲁文, paul cheung, 张锐, Yiting Zhu, Nong Zhichao, Liam Kennedy, 武 健, Zhao Liguo, 宁 倬, Bochen Wang, 一斤瓜子, 顺 谭, 云 何, Yun Liu, yungkei fan, 杨 越鹏.
  • 中国語 (繁体字、台湾) 船長, Winnie Lin, 予 恆, TingWen Su.
  • チェコ語 David Knieradl.
  • デンマーク語 (デンマーク) Javad Shafique, Lasse Stilvang.
  • 英語 (イギリス) Martin Littlecott, Oren Recht, Faris Ansari.
  • フィンランド語 (フィンランド) Teemu Sirkiä.
  • フランス語 (フランス) Antoine Griffard, Thierry DEMAN-BARCELÒ, Rodolphe NOEL, Nathan Bonnemains.
  • ヘブライ語 (イスラエル) Chayim Refael Friedman, Asaf Amitai.
  • ハンガリー語 Bucsai László.
  • インドネシア語 (インドネシア) Gerry Surya, Laurensius Dede Suhardiman.
  • イタリア語 (イタリア) Alessandro Alpi, Riccardo Cappello.
  • 日本語 (日本) Ikko Ashimine, Aya Tokura, Takayuki Fuwa, ちゃん きさらぎ, 住吉 貴志, Koichi Makino, Yoshihisa Ozaki, TENMYO Masakazu.
  • 韓国語 (韓国) Kyunghee Ko, June Heo.
  • ノルウェー語 (ノルウェー) Torbjørn Viem Ness.
  • ポーランド語 (ポーランド) Makabeus Orban, Kacper Łakomski, Karol Szapsza.
  • ポルトガル語 (ブラジル) Alessandro Trovato, Marcelo Fernandes, Arthur Lima, Luciana de Melo, Luiz Gustavo Nunes.
  • ポルトガル語 (ポルトガル) Pedro Filipe, António Pereira.
  • ロシア語 (ロシア) Andrey Veselov, Vadim Svitkin, Минаков Антон.
  • スペイン語 (スペイン、国際ソート) Sifredo Da Silva, Ariel Costas Guerrero, David Roa, Abdón Rodríguez P., Luis Manuel, Carlos A. Echeverri V, A. Jesus Flores A., Ricardo Estrada Rdez, Alfonso Jesus Flores.
  • スウェーデン語 (スウェーデン) Per Ragnar Edin.
  • タミル語 (インド) krishnakoumar c.
  • トルコ語 (トルコ) Umut Can Alparslan, Mehmet Yönügül.
  • ウクライナ語 (ウクライナ) Nikita Potapenko, igor oleynik.
  • ベトナム語 (ベトナム) Hieu Nguyen Trung, LN Quang.