2020年5月 (バージョン 1.46)
バージョン1.46.1へのアップデート:このアップデートでは、これらの問題が解決されています。
ダウンロード:Windows:x64 Arm64 | Mac:Intel | Linux:deb rpm tarball snap
Visual Studio Code 2020年5月リリースへようこそ。
- アクセシビリティの改善 - ステータスバーのナビゲーション、キーボードでのテキスト選択の簡素化。
- 柔軟なビューとパネルのレイアウト - サイドバーとパネルでビューを移動およびグループ化。
- ピン留めされたエディタータブ - タイトルバーにエディターをピン留めして、よく使うファイルをすぐに使えるようにする。
- GitHubからのリモートを追加 - ローカルリポジトリにGitHubリモートを追加。
- 自動デバッグ構成の改善 - 生成されたデバッグ構成を保存および変更。
- JavaScript CommonJSの自動インポート - 自動インポートでCommonJSモジュールに
require
を使用するようになった。 - JS/TSのリファクタリングで改行を保持 - リファクタリング操作中にフォーマットを保持。
- 設定同期プレビュー - 好みを管理するための新しい「同期されたマシン」ビューと「データ」ビュー。
- GitHub Issue Notebooks - GitHubのissueクエリを実行し、結果をカスタムNotebookに表示。
- Windows ARM64サポート - 新しいVS Code Insiders ARM64ビルドが利用可能に。
- Build 2020でのVS Code - ヒントとテクニック、リモート開発、VS Codeの歴史に関する講演。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
アクセシビリティ
このマイルストーンでは、コミュニティから再び貴重なフィードバックをいただき、多くのアクセシビリティの問題を特定し、対処することができました。
- ステータスバーがキーボードナビゲーションをサポートするようになりました。次のパートにフォーカス(F6)でステータスバーにフォーカスが当たっている場合、矢印キーでのナビゲーションでステータスバーのエントリ間を移動できます。
- キーボードを使って選択を開始および終了しやすくするために、4つの新しいコマンドが追加されました。
- 選択アンカーを設定(⌘K ⌘B(Windows、Linux Ctrl+K Ctrl+B))
- アンカーからカーソルまで選択(⌘K ⌘K(Windows、Linux Ctrl+K Ctrl+K))
- 選択アンカーをキャンセル(Escape)
- 選択アンカーへ移動
- アクティビティバーのエントリに
tab
ロールが追加され、適切なaria-expanded
状態が設定されるようになりました。 - エディターのAriaラベルが、
pinned
、preview
、readonly
といったエディターの状態を適切に伝えるようになりました。
ワークベンチ
柔軟なレイアウト
これまでいくつかのイテレーションで、レイアウトをより柔軟にするための進捗をお知らせしてきました。今回のリリースで、これらの機能は一般的に利用できるようになりました。以下にこれらの機能の概要を示します。
サイドバーとパネル間のビューの移動
サイドバーのビューをパネルに配置したい、あるいはその逆をしたいと思うかもしれません。これを行うために、ビューのヘッダーまたはアイコンやタイトルでグループ全体を現在の場所からドラッグし、目的の場所に移動できるようになりました。キーボードからは、ビュー:ビューを移動(workbench.action.moveView
)とビュー:フォーカスされたビューを移動(workbench.action.moveFocusedView
)コマンドを使用できます。
以下は、検索をパネルにドラッグし、問題をサイドバーにドラッグするデモンストレーションです。
検索をパネルに、問題をアクティビティバーにドラッグ
テーマ: GitHub Light
以前は、検索ビューをサイドバーからパネルに移動するための設定がありましたが、ドラッグアンドドロップで代替できるようになったため、その設定は廃止されました。
ビューのグループ化
異なる拡張機能から提供されたいくつかのビューをまとめたり、組み込みビューのデフォルトグループが自分には合わないと感じたりすることもあるでしょう。ビューを既存のグループに移動したり、選択したビューの新しいグループを作成したりできます。これはこれまでと同様にサイドバーとパネルの両方で機能します。以下にいくつかの例を示します。
Explorerからタイムラインビューをソース管理にドラッグ
実行サイドバーからウォッチビューをPanelのデバッグコンソールの横にドラッグ
サイドバーとパネルにタイムラインとGitLensでカスタム履歴グループを作成
テーマ: GitHub Light
ビューの場所のリセット
ビューとビューのグループは、コンテキストメニューからデフォルトの場所にリセットできます。ビューがデフォルトの場所から移動されている場合、「場所をリセット」のエントリが表示され、元の場所に戻すことができます。また、すべてのビューとグループをデフォルトの場所に戻すためのコマンドとして、「ビュー:フォーカスされたビューの場所をリセット」(workbench.action.resetFocusedViewLocation
)と「ビュー:ビューの場所をリセット」(workbench.action.resetViewLocations
)があります。
ビューまたはビューコンテナーを提供する拡張機能作者向け
ビューがワークベンチ内で移動されると、デフォルトの場所以外にある場合はアイコンまたは追加のコンテキストを使用して、異なる表示が必要になることがあります。ビューを提供する際、作者はicon
プロパティとcontextualTitle
プロパティを提供できるようになりました。これらが提供されない場合、デフォルトで提供されたビューコンテナーのアイコンとタイトルが使用されます。
最後に、拡張機能作者は、ツリービュー拡張機能ガイドに記載されているように、activitybar
ではなくpanel
に直接ビューコンテナーを提供できるようになりました。
タブのピン留め
コンテキストメニューまたは新しいコマンドworkbench.action.pinEditor
(⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter))を使用して、タブをピン留めできるようになりました。
テーマ: GitHub Light
ピン留めされたタブには、重要なファイルをマークするのに役立ついくつかの便利な機能があります。
- ピン留めされたタブは、常にピン留めされていないタブの前に表示されます。
- 多数のタブを開いていても、スクロールアウトしません。
- 「その他を閉じる」などのコマンドを使用しても閉じません。
- 開いているエディターの数の設定された制限を超えても閉じません。
タブをドラッグアンドドロップして、ピン留め状態を変更することもできます。
ピン留めされたタブは、スペースを節約するためにアイコンのサイズに視覚的に縮小されます(アイコンが無効になっている場合はファイル名の最初の文字が表示されます)。ピン留めされたタブにダーティインジケーターを表示したい場合は、workbench.editor.highlightModifiedTabs: true
を設定できます。
注:ピン留めされたタブの他の表示方法については、引き続き検討中です。ご意見がある場合は、セカンダリタブバーの表示に関する既存のissue、またはピン留めされたタブのより多くのコンテキストを表示する設定に関するissueで、ぜひアイデアを共有してください。
検索エディター
検索エディターの作成方法を構成するためのいくつかの新しいオプションがあります。
search.searchEditor.defaultNumberOfContextLines
- 検索エディターがデフォルトで表示するコンテキスト行数を構成します。search.searchEditor.reusePriorSearchConfiguration
- 新しい検索エディターを作成する際に、最後にアクティブだった検索エディターの構成を再利用します。- キーバインド引数で検索エディター構成変数を渡すためのサポート(パラメーターの詳細)。
Explorerの自動表示フォーカス(スクロール強制なし)
explorer.autoReveal
設定に新しいオプションfocusNoScroll
が追加されました。このオプションを使用すると、Explorerはファイルを開くときに自動的にファイルを選択しますが、Explorerビューにファイルを表示するためにスクロールはしません。
リストとツリーのスムーズスクロール
workbench.list.smoothScrolling
設定を有効にすると、スムーズスクロール機能を持たないハードウェア(例えば、Windowsのディスクリートマウスホイール)でも、リストやツリーでのスクロールがはるかにスムーズになります。
サッシサイズ設定
新しい設定workbench.sash.size
を使用して、ビューとエディター間のドラッグ領域のフィードバック領域サイズをピクセル単位で設定できるようになりました。マウスでビューのサイズを変更するのが難しいと感じる場合は、より大きな値を設定してください。
スクリーンキャストモードのフォントサイズ
新しいscreencastMode.fontSize
設定により、スクリーンキャストモードで使用されるフォントサイズをピクセル単位で構成できます。
信頼済みリンク保護
VS Codeは、ワークスペース内のGitHubリモートへのURLリンクを直接開くことを許可するようになりました。さらに、GitHubでサインインしている場合、GitHubプロファイル下のページへのすべてのリンクが信頼されます。
エディター
閉じられたファイルのクロスファイルUndo
ファイルが途中で閉じられていた場合でも、ファイルを超えて元に戻す(Undo)ことができるようになりました。編集されたファイルは再度開かれ、シンボルの名前変更のようなクロスファイル操作は、影響を受けるすべてのファイルで元に戻されます。
異常な行末記号
VS Codeは現在、CR (キャリッジリターン)、LF (ラインフィード)、およびCRLFを行末記号として認識しています。一部のプログラミング言語では、行末記号を構成するものが異なる定義を持っています。これは言語によって異なり、例えばLS (ラインセパレーター) やPS (パラグラフセパレーター) はC#やJavaScriptでは行末記号ですが、HTML、PHP、Javaではそうではありません。VS Codeが言語サーバーと通信する際、様々な概念が(line;char)
座標を使用してVS Codeと言語サーバー間で通信されるため、これらの行末記号の違いは問題を引き起こす可能性があります。行末記号の定義が異なる場合、ファイルの行と位置のマッピングが異なる結果となる可能性があります。
ファイルを開く際、VS Codeは開かれたファイルにLSまたはPSが存在するかどうかをチェックし、これらの文字を削除する許可を求めるプロンプトを表示するようになりました。これらの異常な行末記号は実際にはまれであり、コピー&ペーストによって誤ってソースコードに挿入された可能性が高いです。
統合ターミナル
リンクサポートの改善
先月の統合ターミナルリンクプレビューが、古い実装を置き換えました。新しいリンク実装では、次のことが可能になります。
- エディターのリンク検出を使用して、Webおよび
file://
リンクの検出を改善。 - フォルダーリンクのサポート。Explorerでフォルダーを開くか、新しいVS Codeウィンドウを開くことができます。
- 異なるリンクタイプに対して異なるリンクアクションを実行し、ワークスペースを検索する「単語」リンクにフォールバックします(
terminal.integrated.wordSeparators
設定に基づく)。 - エディターと同様のリンクハイライトとホバーエクスペリエンス。
テーマ:Topaz (Dim)
タスク
最近のタスクパフォーマンス改善に続き、ビルドタスクの実行は、拡張機能に常にタスクを要求しなくなりました。フォルダのtasks.json
にデフォルトのビルドタスクが構成されている場合、ビルドタスクの実行は、デフォルトのビルドタスクを実行する前にすべての拡張機能からすべてのタスクを検索するのではなく、そのタスクのみを解決しようとします。
ソース管理
ターミナルで開く
ソース管理ビューのコンテキストメニューから、ターミナルでリポジトリを開けるようになりました。
GitHubからリモートを追加
Git: リモートを追加...コマンドを使用して、GitHubリポジトリをローカルリポジトリにリモートとして追加できるようになりました。
GitHubに公開する際に.gitignoreを生成
ワークスペースをGitHubに公開する際に、.gitignore
ファイルを生成できるようになりました。ワークスペースをGitHubに公開する際、リポジトリに含めるファイルを選択するよう促され、含まれないファイルは.gitignore
ファイルに追加されます。
入力フィールドのフォントファミリー
Scm: Input Font Family 設定を使用して、ソース管理入力フィールドで使用されるフォントファミリーをカスタマイズできるようになりました。この設定は以下の値をサポートします。
default
- ワークベンチのユーザーインターフェースのフォントファミリー。editor
- Editor: Font Family 設定で指定されたフォントファミリー。font family name
- 入力フィールドで使用するフォントファミリーの名前(例:Cascadia Code
)。
進行中のリベースを中止
Git: リベースを中止コマンドを使用して、進行中のリベース操作を中止できるようになりました。
デバッグ
自動デバッグ構成の改善
このマイルストーンでは、自動デバッグ構成のエクスペリエンスを改善しました。
-
前回のマイルストーンでは、拡張機能作者が現在のプロジェクトを分析し、デバッグ構成を自動的に提供できる機能が導入されました。これらのデバッグ構成は動的に作成されるため、
launch.json
構成ファイルには表示されません。これはすぐに機能する限りは良いのですが、追加の引数を追加するなど、構成を変更する必要がある場合があります。自動デバッグ構成をlaunch.json
に保存して編集できるようにするオプションが追加されました。これを行うには、デバッグ:デバッグを選択して開始クイックピックの自動デバッグ構成の末尾にある歯車ボタンを使用します。 -
「実行とデバッグ」スタートビューからすべての自動デバッグ構成を表示できるようになりました。
-
デバッグドロップダウンで、以前選択した自動デバッグ構成が記憶されるようになりました。
ステップインターゲット
多くの入れ子になった関数呼び出しを含むステートメントにデバッグでステップインするのは、実際には興味のない関数をステップ実行しなければならない可能性があるため、苦痛な場合があります。このシナリオを改善するために、デバッグアダプタプロトコルは、興味のある関数に直接ステップインするためのUIを表示する「ステップインターゲット」機能をサポートしています。
このマイルストーンでは、VS Codeがこの機能を使用し始めました。デバッグがステートメントで停止すると、コンテキストメニューに新しいアクション「ステップインターゲット」が表示されます。このアクションは、現在のスタックフレームで利用可能なすべてのターゲット(通常は関数)のリストを表示します。そのうちの1つを選択すると、そのターゲットにステップインします。
各スタックフレームは独自のターゲットのセットを持つことができることに注意してください。したがって、ステップインターゲットアクションの結果は、CALL STACKビューで現在選択されているフレームに依存します。
今のところ、Mock Debug拡張機能のみが(偽の)ステップインターゲットをサポートしていますが、まもなく他のデバッグ拡張機能(Juliaデバッガなど)も追随する予定です。
言語
TypeScript 3.9
VS CodeにはTypeScript 3.9.4が含まれるようになりました。この主要なTSアップデートでは、新しいツール機能、パフォーマンスの改善、多数のバグ修正が提供されます。TS 3.9の詳細については、TypeScriptブログを参照してください。
CommonJSの自動インポート
VS CodeがCommonJSスタイルのJavaScriptモジュールで作業していることを検出すると、自動インポートはimport
ではなくrequire
を使用するようになりました。
リファクタリングで改行を保持
JavaScriptとTypeScriptのリファクタリング(メソッドへの抽出や新しいファイルへ移動など)は、リファクタリングされたソースコードの元のフォーマットを保持しようとします。これには、選択範囲内の改行も含まれます。
不足しているインポートをすべて追加するソースアクション
VS Codeは長い間、JavaScriptまたはTypeScriptファイル内の不足しているインポートをすべて追加するクイックフィックスをサポートしてきました。今回のイテレーションでは、新しい「不足しているインポートをすべて追加」ソースアクションを導入し、ファイル内のどこからでもこれをトリガーできるようにしました。
これにより、「不足しているインポートをすべて追加」のキーバインドを設定することもできます。
{
"key": "ctrl+shift+i",
"command": "editor.action.sourceAction",
"args": {
"kind": "source.addMissingImports",
"apply": "first"
}
}
または、保存時に「不足しているインポートをすべて追加」を有効にすることも可能です。
"editor.codeActionsOnSave": [
"source.addMissingImports"
]
ワークスペース内のJS/TSシンボルへ移動に開いているすべてのプロジェクトが含まれる
デフォルトでは、JavaScriptとTypeScriptのワークスペースシンボル検索は、開いているすべてのjsconfig
およびtsconfig
プロジェクトを検索するようになりました。以前は、フォーカスされたファイルが属するプロジェクトの検索結果のみが含まれていました。
この動作はtypescript.workspaceSymbols.scope
設定によって制御され、TS 3.9+が必要です。以前の動作に戻し、現在のプロジェクトのみを検索するには、"typescript.workspaceSymbols.scope": "currentProject"
を設定します。
不足しているインポートのクイックフィックスが推奨としてマーク可能に
JavaScriptとTypeScriptの不足しているインポートの追加クイックフィックスが、エラーに対する推奨される修正としてマークできるようになりました。これにより、⌥⌘. (Windows, Linux Shift+Alt+.) を使用して、1回のキー操作で不足しているインポートを追加できます。
不足しているインポートの追加は、有効なインポートが1つしかない場合にのみ推奨される修正としてマークされることに注意してください。プロジェクト内に複数のインポートの可能性がある場合は、通常のコードアクションメニューを使用してどのインポートを使用するかを選択する必要があります。また、JavaScriptで不足しているインポートの追加クイックフィックスを有効にするには、タイプチェックを有効にする必要があります。
JSONオフラインモード
新しい設定json.schemaDownload.enable
を使用して、JSON拡張機能がhttp
およびhttps
からJSONスキーマをフェッチすることを許可するかどうかを制御できます。
現在のエディターがダウンロードできないスキーマを使用しようとすると、ステータスバーに警告の三角形が表示されます。その場合、検証、コード補完、ホバーなどのスキーマベースの機能は制限されます。
ブラウザーのサポート
タブタイトルにデバッグ停止インジケーター
ブラウザで拡張機能をデバッグする際、デバッグ対象の拡張機能は新しいブラウザータブに表示され、デバッガータブは非アクティブ化(非表示)されます。デバッグ対象が何らかの理由で停止した場合、例えばブレークポイントにヒットした場合、デバッガータブをアクティブ化することはできません(ブラウザはこのためのAPIを提供していないため)。これにより、デバッグ対象の拡張機能が停止したことを発見することはほとんど不可能になります。
この問題を軽減するために、タブのタイトルを更新して、赤い丸のインジケーター🔴(ブレークポイントに似たもの)を含めるようになりました。デバッガータブがアクティブ化されるとすぐに、赤い点は削除されます。
統合ターミナルからVS Codeを実行する
ブラウザでVS Codeを実行している統合ターミナルを開くと、code
と入力して、ブラウザ内で機能するいくつかの便利なコマンドにアクセスできます。
今回のイテレーションでは、多くのオプションのサポートを拡大しました。
--goto
特定の行でファイルを開く--diff
2つのファイルを比較する--wait
プログラムにファイルが閉じるのを待たせる--add
現在のワークスペースにフォルダを追加する
たとえば、GitHub Codespacesでは、これによりブラウザベースのVS CodeをGitのエディタとして使用できます。
テーマ: GitHub Light
ファイル/フォルダーのアップロード
VS Codeでは、ファイルをファイルエクスプローラーにドロップしてアップロードできます。今回のイテレーションでは、この機能を改善し、フォルダーをドロップして、すべての子フォルダーとファイルを含むフォルダーをアップロードできるようになりました。これは時間がかかる操作になる可能性があるため、ステータスバーに進行状況が表示され、必要に応じて操作をキャンセルできます。
アカウント管理
以前のリリースでは、設定同期機能のプレビューと並行して、新しいアカウント管理UIのプレビューを導入しました。今回、このUIがデフォルトで表示されるようになりました。新しい提案された認証プロバイダーAPIを使用する拡張機能は、ここでサインインを要求でき、アカウントを表示したり、拡張機能のアクセスを管理したりできます。現在、このAPIを使用している拡張機能は限られていますが、APIが安定したら採用を増やすように取り組んでいきます。
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
設定の同期
この数ヶ月間、VS Codeの設定をマシン間で同期するサポートに取り組んできました。この機能はInsidersリリースでプレビューとして利用可能です。
今回のマイルストーンでは、設定同期の管理と診断のサポートを強化しました。
同期されたマシンビュー
VS Codeの設定を同期しているマシンのリストを表示する「同期されたマシン」ビューを追加しました。使用しているVS Codeの種類(InsidersまたはStable)とプラットフォームに基づいてデフォルトの名前が提供されますが、ビュー内のマシンエントリで利用できる編集アクションを使用して、いつでも名前を更新できます。
テーマ: GitHub Sharp (カスタマイズ付き)
コマンドパレットから「設定同期:同期データを表示」コマンドを使用して、このビューを開くことができます。
同期データビュー
同期データビューに次の機能強化を追加しました。
- データが同期されているマシンを確認できるようになりました。
- ビュー内のデータエントリで利用可能な復元アクションを使用して、特定の状態に復元できます。
- ビューヘッダーのその他のアクション(...)ボタンの下にある同期データをリセットアクションを使用して、クラウド上のデータをリセットできます。
テーマ: GitHub Sharp (カスタマイズ付き)
異なるマシンからのデータと同期しようとしているかどうかを確認し、適切なアクションを実行できるようにすることで、同期をオンにする際のより多くの支援を提供するようになりました。
- ローカルを置換 - 現在のマシン上のデータをクラウドから同期されたデータに置き換えます。
- マージ - 現在のマシン上のデータをクラウドから同期されたデータとマージします。
- 同期データを表示 - 同期データビューを開いて、クラウドから同期されたデータを表示します。
新しいJavaScriptデバッガー
今月も新しいJavaScriptデバッガーの開発を継続しました。5月中旬から、Insidersではデフォルトのデバッガーとなり、今回のリリースではVS Code Stableに同梱されています(ただし、デフォルトでは有効になっていません)。既存の起動構成でdebug.javascript.usePreview
設定を有効にすることで、使用を開始できます。
今月の進捗は、主に既存機能の磨き上げと安定化に重点が置かれました。
- ブラウザデバッグのマルチタブ対応: ブラウザやウェブビューを実行しているときに、複数のタブにアタッチできるようになりました。デフォルトでは、js-debugは
urlFilter
に一致するすべてのタブにアタッチします。ブラウザにアタッチするときは、以前のデバッガーのように単一のタブに接続するために、起動構成で"targetSelection": "pick"
を設定できます。 - タブの曖昧さ解消の改善: デバッグセッション名が複数のタブをより正確に区別するようになりました。さらに、コールスタックビューのデバッグセッションのコンテキストメニューにタブにフォーカスアクションを追加しました。これにより、正しいページを見ていることを確認できます。
- ゲッターの自動展開オプション: Chromeの動作に合わせて、変数の表示やデバッグコンソールに表示される際、プロパティゲッターはデフォルトでは評価されません。
debug.javascript.autoExpandGetters
オプションを設定することで、この動作を構成できるようになりました。 - webpackバンドルの一部の種類のパフォーマンス改善: 特定の種類のwebpackバンドル(
eval
ソースマップでビルドされたもの)が、js-debugで低速に実行されていました。これは解消されました。
TS 4.0 ナイトリービルドのサポート
VS Code 1.46には、TypeScript 4.0ナイトリービルドのプレビューサポートが含まれています。ナイトリービルドには、リファクタリングのためのより柔軟な選択など、現在積極的に取り組んでいるいくつかの新しいツール機能のサポートが含まれています。
TypeScript Nightly拡張機能をインストールすることで、今日からTypeScript 4.0ナイトリービルドを試すことができます。フィードバックを共有し、TypeScript 4.0でバグが発生した場合はお知らせください。
拡張機能への貢献
ノートブック
クイックアウトライン
GitHub Issue NotebooksのようなNotebook拡張機能は、クイックアウトラインをサポートするようになりました。kb('workbench.action.gotoSymbol')
を押すか、エディターでシンボルへ移動コマンドを使用して、現在のNotebookのすべてのMarkdownおよびコードセルのプレビューを表示できます。
テーマ: GitHub Theme
エラーとシンボルナビゲーション
F8
とすべての参照を検索の動作を改善しました。すべてのコードナビゲーションジェスチャーは、Notebooks以外と同じくらい自然に感じられるはずです。例えば、問題ビューは、Notebookごとにグループ化されたすべてのセルのすべてのエラーを表示するようになり、セルごとではありません。
テーマ: GitHub Theme
セルの結合/分割
セルをすばやく結合したり、小さなフラグメントに分割したりするための2つのコマンドセットを導入しました。
維持されたノートブック
ピン留めされた、またはダーティなNotebookエディターがワークスペースに永続化されるようになりました。これにより、Notebookがバックグラウンドに移動されたり、別のエディターグループに移動されたりしても、ユーザーはNotebookの作業状態を失うことはありません。
統合されたUndo/Redoスタック
Notebookセルを操作したり、Notebookセルの内容を変更したりするユーザー操作は、同じUndo/Redoスタックで追跡されるようになりました。
GitHubプルリクエストと課題
プルリクエストと課題の作業、作成、管理を可能にするGitHub Pull Requests and Issues拡張機能の作業が継続しています。今回のリリースでのいくつかのアップデートには以下が含まれます。
- 課題ホバーにおけるラベルの改善。
- 課題とユーザーのサジェスチョンは、コメントとプレーンテキストでのみトリガーされるようになりました。
- 新しい課題エディターで、担当者とラベルを設定できるようになりました。
すべての新機能とアップデートについては、拡張機能の0.17.0の完全な変更ログを参照してください。
リモート開発
コンテナ、リモートマシン、またはLinux用Windowsサブシステム(WSL)をフル機能の開発環境として使用できるようにするリモート開発拡張機能の作業が継続しています。
1.46の新しい機能には以下が含まれます。
- 開発コンテナ:GPG転送のサポート。
- 開発コンテナ:Dockerボリュームの検査のサポート。
- 開発コンテナ:新しい
devcontainer.json
コマンドプロパティ。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。
Hexエディター
バイナリエディターのサポートでカスタムエディターAPIが完成したため、ネイティブな16進編集体験を提供するために16進エディター拡張機能を開発しました。
この拡張機能はまだ開発中で、現在はファイルを16進数として開いてナビゲートすることのみをサポートしています。ナビゲーションエクスペリエンスの改善に引き続き取り組み、その後編集のサポートに移行します。拡張機能を試してフィードバックを提供したり、vscode-hexeditorリポジトリに対して問題を報告したりできます。
拡張機能作成
ファイルパスの大文字と小文字の区別
VS CodeがケースインセンシティブなファイルシステムでパスとURIを処理する方法に関するいくつかのバグを修正しました。このリリース以前は、大文字と小文字が異なるパスは同じドキュメントを開かず、別々の、接続されていないドキュメントを開いていました。この動作はしばしば混乱を引き起こし、時にはデータ損失につながりました。
しかし、これらのバグを修正する中で、openTextDocument
関数の動作が変更されました。この関数は、渡されたURIとは異なる大文字と小文字のURIを持つドキュメントを返すことができるようになりました。これは、拡張機能がTextDocument#uriを真実の源として使用すべきであり、要求したURIではないことを意味します。
以下のサンプルは新しい動作を示しています。
// case-insensitive file system
const uriA = vscode.Uri.file('/foo/bar.code');
const docA = await vscode.workspace.openTextDocument(uriA);
const uriB = vscode.Uri.file('/foo/BAR.code');
const docB = await vscode.workspace.openTextDocument(uriB);
assert.ok(docA === docB); // same document
assert.ok(docB.uri.toString() === uriA.toString()); // uriA is used, NOT uriB
assert.ok(docB.uri.toString() !== uriB.toString());
新しいデバッグコンソールテーマカラー
デバッグコンソールビューのスタイル設定のための新しい色があります。
debugConsole.infoForeground
: デバッグコンソール内の情報メッセージのフォアグラウンドカラーdebugConsole.warningForeground
: デバッグコンソール内の警告メッセージのフォアグラウンドカラーdebugConsole.errorForeground
: デバッグコンソール内のエラーメッセージのフォアグラウンドカラーdebugConsole.sourceForeground
: デバッグコンソール内のソースファイル名のフォアグラウンドカラーdebugConsoleInputIcon.foreground
: デバッグコンソール入力マーカーアイコンのフォアグラウンドカラー
新しい入力テーマカラー
入力用の新しいカラーテーマオプションも追加されました。inputOption.activeForeground
を介して、アクティブな入力オプションのフォアグラウンドカラーを設定できます。これらは、検索ビューと検索ウィジェット(エディタ、ターミナル、デバッグコンソール)に表示されます。
新しいcodiconアイコン
私たちのcodiconライブラリに以下の新しいアイコンを追加しました。
server-process
server-environment
record
pass
stop-circle
play-circle
プロバイダーはジェネリック型を使用
vscode.d.ts
の型定義では、2段階のプロバイダー(個別の「提供」と「解決」メソッドを持つもの)がすべてジェネリックになりました。これは、「提供」呼び出しの結果が「解決」呼び出しに渡されることをより明確にすることを目的としています。
例えば、以下はDocumentLinkProvider
の新しいジェネリック定義です。
export interface DocumentLinkProvider<T = DocumentLink> {
provideDocumentLinks(
document: TextDocument,
token: CancellationToken
): ProviderResult<T[]>;
resolveDocumentLink?(link: T, token: CancellationToken): ProviderResult<T>;
}
すべてのプロバイダーはデフォルトのジェネリック引数を持っているので、この変更によって既存の拡張機能でエラーが発生することはありません。以前に「resolve」を実装する際にキャストや型チェックを使用していた場合は、代わりにジェネリックプロバイダーを使用するようにコードを更新することを検討してください。
class MyDocLinkProvider implements DocumentLinkProvider<MyDocumentLink> {
provideDocumentLinks(document: TextDocument, token: CancellationToken): MyDocumentLink[] { ... }
resolveDocumentLink(link: MyDocumentLink, token: CancellationToken): MyDocumentLink { ... }
}
ウェブビューでのテーマ固有CSSの記述
ウェブビューのbody要素に、現在アクティブなテーマのフルネームを格納するvscode-theme-name
という新しいデータ属性が追加されました。これにより、ウェブビュー内でテーマ固有のCSSを記述できるようになります。
body[data-vscode-theme-name="One Dark Pro"] {
background: hotpink;
}
VS Codeで利用可能なテーマの数を考えると、テーマ固有のCSSは例外的な場合にのみ記述するようにしてください。通常のウェブビューは、代わりに.vscode-light
と.vscode-dark
クラス名とVS Code CSS変数を使用して、ユーザーが選択したテーマに適応するCSSを記述すべきです。
カスタムバイナリエディタ
カスタムバイナリエディターのAPIが完成しました。カスタムエディターAPIを使用すると、拡張機能は、VS Codeのデフォルトのテキストエディターを置き換えるか、ユーザーが切り替えられるカスタムのウェブビューベースのエディターを作成できます。これは、画像や3DモデルなどのアセットファイルをVS Code内で直接プレビューしたり、特定のファイルタイプ用のより専門的な編集インターフェイスを構築したりするのに使用できます。新しいバイナリカスタムエディターAPIを使用すると、テキストベース以外のファイル形式の読み書きエディターも構築できるようになりました。
カスタムエディター拡張機能ガイドでは、APIについてさらに詳しく説明しています。また、テキストおよびバイナリファイル形式の両方のカスタムエディターの例を含むカスタムエディター拡張機能サンプルも参照してください。
resolveCompletionItem の緩和
CompletionItemProvider#resolveCompletionItem 関数を使用すると、プロバイダーは補完に詳細なデータを遅延的に追加できます。この「遅延」データはオプションであり、補完の挿入動作を変更してはなりません。拡張機能は引き続きadditionalTextEdits
を埋めることができます。補完が挿入された後に追加の編集が到着した場合でも、エディターはそれらを適用しようとします。これは追加の編集にのみ適用され、提供された後は変更してはならないメインの編集(insertText
)には適用されないことに注意してください。
onStartupFinishedアクティベーションイベント
既存の*
アクティベーションイベントと同様に、新しいアクティベーションイベントが追加されました。新しいonStartupFinished
アクティベーションイベントは、拡張機能がVS Codeの起動後すぐにアクティブ化されることを望むが、起動の一部としてはアクティブ化されない場合に使用すべきです。
環境変数コレクション
ExtensionContext.EnvironmentVariableCollection
APIは安定版となり、拡張機能がターミナル環境に貢献できるようになりました。
const collection = context.environmentVariableCollection;
const separator = process.platform === 'win32' ? ';' : ':';
collection.prepend('PATH', `/foo${separator}`);
collection.replace('JAVA_HOME', '/bar');
これらのコレクションは拡張機能およびワークスペース固有であり、複数の拡張機能間の競合をVS Codeが処理します。ウィンドウのリロード後も永続化されるため、ウィンドウのロード直後に作成されたターミナルは、拡張機能ホストの起動を待つことなく、最後に認識されたバージョンを使用します。これらの永続化されたコレクションは、コレクションを破棄するか、拡張機能がアンインストールされたときに削除されます。
コレクションが変更されると、ターミナルにインジケーターが表示されます。このインジケーターがアクティブな変更すべてに表示されるか、または「古い」ターミナルのみに表示されるかは、terminal.integrated.environmentChangesIndicator
設定によって定義されます。このAPIは、VS Codeを認証プロバイダーにするために、組み込みのGit拡張機能によっても使用されるようになりました。
デバッグアダプタプロトコル
新しい命令ブレークポイント
新しい「命令」ブレークポイントタイプが追加され、メモリアドレスの命令でブレークできるようになりました。メモリアドレスは、evaluate
、variables
、stackTrace
、およびgotoTargets
要求からオプションで利用できるシンボリック形式で指定されます。対応する機能supportsInstructionBreakpoints
は、デバッグアダプタが命令ブレークポイントをサポートしているかどうかを示します。
「ステップ粒度」のサポート
ステップ要求next
、stepIn
、stepOut
、stepBack
に、要求が「ステートメント」、「行」、または「命令」のいずれをステップ実行するかを制御するための新しいオプションのgranularity
引数が追加されました。対応する機能supportsSteppingGranularity
は、デバッグアダプタがこの機能をサポートしているかどうかを示します。
提案された拡張API
各マイルストーンには新しい提案された API があり、拡張機能の作成者はそれらを試すことができます。いつものように、皆様のフィードバックをお待ちしております。提案された API を試すには、次の手順を実行する必要があります。
- 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
- 拡張機能の
package.json
ファイルに次の行が必要です:"enableProposedApi": true
。 - 最新バージョンのvscode.proposed.d.tsファイルをプロジェクトのソース場所にコピーします。
提案APIを使用する拡張機能は公開できないことに注意してください。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊したくありません。
Git拡張機能API
組み込みのGit拡張機能は、拡張機能が使用できるAPIを提供しています。既存のAPIは、Repository
のlog
結果を取得する方法を公開していました。更新されたAPIでは、log
をpath
で制約できるようになりました。
export interface LogOptions {
readonly maxEntries?: number;
readonly path?: string;
}
export interface Repository {
log(options?: LogOptions): Promise<Commit[]>;
}
また、BranchQuery
に基づいてgetBranches
を行うGit拡張機能APIも追加されました。
export interface BranchQuery {
readonly remote?: boolean;
readonly contains?: string;
}
export interface Repository {
getBranches(query: BranchQuery): Promise<Ref[]>;
}
アクセシビリティ情報
スクリーンリーダーをサポートするために、TreeItem
、StatusBarItem
、およびTimelineItem
要素にAccessibilityInformation
を追加しました。AccessibilityInformation
には、label
とrole
が含まれています。label
はスクリーンリーダーによって読み上げられ、role
は要素のアクセシビリティ特性を記述します。
エンジニアリング
Windows ARM64 インサイダー
Insidersダウンロードページで、ARM 64ビット版Windows用の新しい公式インサイダービルドが利用可能です。
これらのビルドはMicrosoft Surface Pro Xで動作します。ぜひ試して、ご意見をお聞かせください。
問題診断のための--crash-reporter-directory引数
新しいコマンドライン引数--crash-reporter-directory
を使用すると、クラッシュレポートを保存したいローカルフォルダを渡すことができます。これは拡張機能ホスト内のクラッシュにも機能し、VS Codeがクラッシュして問題を報告したい場合にいつでも使用できます。
プリロードスクリプト
特定のElectron APIをウィンドウに公開するために、VS CodeにElectronのpreload
スクリプトを追加しました。これは、完全にサンドボックス化されたウィンドウに向けた最初のステップの1つです。進捗はissue #92164に記載されています。
拡張機能サンプルがESLintを使用するように変更
すべての拡張機能サンプルが、非推奨となったTSLintではなくESLintをリンティングに使用するように更新されました。もしあなたの拡張機能がまだTSLintを使用している場合は、TSLintからESLintへの移行ガイドと、新しく更新された拡張機能サンプルを参考に、ESLintへの移行方法を確認してください。
GitHubトリアージ拡張機能
Chromiumベースのブラウザ向けに拡張機能を作成しました。これは、GitHubでの課題のトリアージを支援するもので、担当者、ラベル、マイルストーン、およびトリアージGitHub Actionsをトリガーするために使用するさまざまな特殊コメントの単一のファジーフィルター可能なメニューを提供します。コードはGitHubでオープンソース化されています。
ドキュメントと拡張機能
BuildでのVisual Studio Code
VS CodeチームはMicrosoft Build 2020カンファレンスで発表し、VS Codeのセッションとオンライン講演の概要は、このVS Code at Buildブログ記事で確認できます。
VS Codeチームメンバーによるいくつかの講演
- VS Codeのヒントとテクニック - VS Codeでの生産性を高める20のヒントとテクニック。
- すべてのVisual Studio CodeユーザーがGitHubについて知っておくべきこと - PRとIssuesのためのVS CodeのGitHub統合について学びます。
- Visual Studio Codeによるリモート開発 - Visual Studio Codeが開発者がどこからでもリモートで作業できるようにする方法を学びます。
- Visual Studio Codeの歴史 - VS Codeがどのように始まり、今日まで進化してきたかについて学びます。
Azure拡張機能
VS Code内から直接Azureアセットを操作およびデプロイするための新しい拡張機能がいくつかあります。
- Azure Static Web Apps - VS Codeから直接Azure Static Web Appsを作成および管理します。
- Azure Databases - Azureでグローバルに分散されたマルチモデルデータベースを作成、閲覧、更新します。
新しいコマンド
キー | コマンド | コマンドID |
---|---|---|
⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) | エディターをピン留め | workbench.action.pinEditor |
⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) | エディターのピン留めを解除 | workbench.action.unpinEditor |
注目すべき修正点
- 10144: Linuxでsystem-uiをフォントとして使用
- 63068: macOSのDockアイコンが非常に小さい
- 69163: サイドバーでアクティブファイルを公開すると例外がスローされる
- 95367: 無効なframeIdに対してDAP "evaluate"リクエストが発行される
- 95856: 行へ移動に「filename.extension:line number」形式を含めるべき
- 96713: コールスタックアクションビューからセッションを停止すると常にアクティブなセッションに移動する
- 96914: アウトラインが表示されているとタイピングが遅い
- 96987: Orcaがブレークポイントビューの行番号を読み上げない
- 97444: デバッグウォッチから長い値をコピーすると部分的な値が貼り付けられる
- 97471: デバッグホバーが狭すぎて横スクロールが無用
- 97731: VS Codeがタイピングとスクロール中にフリーズする
- 96643: タスク(およびTaskExecution)がonDid(Start|End)Taskコールバックで === にならない
ありがとうございます
最後に、今月 VS Code に貢献してくださった以下の皆様に、心からの感謝を申し上げます。
問題追跡への貢献者
- ジョン・マレー(@gjsjohnmurray)
- アンドリー・ディエーエフ (@IllusionMH)
- アレクサンダー(@usernamehw)
- サイモン・チャン(@yume-chan)
- アルトゥーロ・デント(@ArturoDent)
vscode
への貢献者
- アレックス・ストルニック(@AlexStrNik)
- アンドリュー・ブランチ (@andrewbranch): 提案:TS Serverを --inspect-brk で起動できるようにする PR #98340
- クリストス・パッパス(@ChrisPapp)
- @D-to-the-K: Monaco Monarch言語定義におけるUnicode対応正規表現のサポート PR #98447
- リック・ファン・ガレン (@DCKcode): Containerfileのサポート PR #93184
- ポール (@DFineNormal): snippets.contribution.tsのスペルミスを修正 PR #98396
- マット・ペンリス (@elmpp): スキーム付きファイルパスのVsCodeResourceを作成 PR #94986
- HaoboGu (@HaoboGu): #98102 を修正 PR #98127
- HiDeoo (@HiDeoo): vscode.d.tsのtypoを修正 PR #98692
- イリア・ポズニャコフ (@iliazeus): 追加
:行 gotoパターン #95856 PR #96535 - アンドリー・ディエーエフ (@IllusionMH): デバッグアイコンを修正。テキストの代わりにCodiconsを使用 PR #98716
- Jack Works (@Jack-Works): typescript.code-snippetsを更新 PR #98521
- @Jagua: json-language server readmeのインデントとtypoを修正 PR #97812
- ヤニス・ガリス (@JanisGailis): Monokai Dimmedテーマにターミナルカラーを追加 PR #98323
- ジャン=ピエール(@jeanp413)
- パンくずリストが表示されている状態でタブを切り替えるときにエディターの高さが間違っている問題を修正 PR #97502
- ワークスペースファイルに起動構成を作成するオプションを追加 PR #97321
- 新規ファイル/フォルダを編集中にフォルダの折りたたみアクションをクリックした後のエクスプローラーの空のアイテムを修正 PR #96853
- ワークスペースレベルのタスクにキーバインドを割り当てても機能しない問題を修正 PR #97380
- flipNode中にレイアウトを呼び出さないようにする PR #92004
- デバッグドロップダウンでdropdown.backgroundカラーを使用する PR #96576
- デバッグドロップダウンコンテナでdropdown.backgroundカラーを使用する PR #96996
- ジョン・キーチ (@jkeech): ウェブビュー上の古いCSSスタイルプロパティをクリアする PR #96665
- ジョン・ブラックボーン (@johnbillion): *.ts.mapファイルをJSONとして扱う PR #98409
- ロバート・ジン (@jzyrobert): #84696 git add/revertをsplitInChunksを使用するように変更 PR #84843
- ダニー・リン (@kdrag0n): macOSの暗いテキスト選択カーソルを復元し、修正 PR #96947
- レイラ・ピアソン (@leilapearson): エクスプローラーのファイル名ソート順の特殊ケースを修正。 PR #97200
- リセイン (@lissein): titleBarテーマカラーのコメントを修正 PR #97360
- マックス (@MaxGyver83): Neoキーボードレイアウト(レイヤー4)の矢印キーをエクスプローラービューで機能させる PR #98269
- アラスデア・マクリー (@penx): CSS - 親フォルダーでnodeモジュール解決を検索 PR #81555
- ピーター・ファン・デル・ポール (@petevdp): インライン差分エディターを中央に配置できるようにする。 PR #97311
- パスカル・フォン・カイ (@pfongkye): fix: 新しいコマンドstageAllMerge PR #97349
- ジェームズ・コス (@phuein): 表示されたファイルにスクロールしないオプション。 PR #96890
- ジャック・プラッテン (@plttn): タイプミスを修正 PR #97198
- @ricksentam: ビルドを変更 PR #98857
- ロバート・ロスマン(@robertrossmann)
- shskwmt (@shskwmt): Feature #94173: 提案挿入時のスクロール PR #94327
- スティーブン・ハーマンズ (@steven166): ブラウザワークベンチでのD&Dによるフォルダアップロード PR #97347
- ラフール・カディアン (@znck): feat: 他の拡張機能の言語プロバイダー登録にconfigNamespaceを使用 PR #95621
- ヤクブ・トラッド (@Dzejkop): 検索エディタ: デフォルトのコンテキスト表示値プロパティを追加 PR #97920
language-server-protocol
への貢献者
- (@KamasamaK)
- クヌート・アルドリン (@zub): 'aritfacts'のスペルを修正 PR #980
- レミー・スエン (@rcjsuen): "revers"を"reverse"に修正 PR #995
- スティーブン・カルト (@SKalt): スティッキーテーブルヘッダーを使用 PR #1000
vscode-generator-code
への貢献者
- アレクセイ・エリザロフ (@beautyfree): fix: ダークテーマの無効なjson PR #207
vscode-vsce
へのコントリビューション
- オーウェン・ファレル (@owenfarrell): 環境変数からのPAT注入をサポート PR #447
debug-adapter-protocol
への貢献者
- @auott
- ヴィタリー・アキモフ (@awto): adapters.mdにおけるEffectful JavaScriptデバッガーの参照 PR #113
- @tomcec: adapters.mdを更新 PR #115
- アンドリュー・ワン (@WardenGnaw): C/C++ DAPメンテナーを更新 PR #117
- FW (@fwcd): Kotlin Debug Adapterを追加 PR #120
vscode-js-debug
への貢献者
- ヴァディム・オクン (@cbmd):
npm
のみでなく、選択したパッケージマネージャーで実行する可能性を追加。 PR #459
localization
への貢献
私たちは過去1年間、皆様からのフィードバックに熱心に耳を傾け、VS Codeのローカライズ開発に貢献できる、より信頼性が高くインタラクティブなプラットフォームを提供する時期が来たと判断しました。このことを念頭に置き、オープンソースのローカライズプロジェクト向けにMicrosoftコミュニティローカライズプログラムを別のプラットフォームで継続する目的で、4月最初の週にMicrosoftローカライズコミュニティプラットフォーム(MLCP)を正式に廃止しました。
新しいコミュニティプラットフォームに関する発表については、数週間以内にWikiページにご注目ください。このプラットフォーム移行に関する疑問については、FAQページも参照してください。