2020年5月 (バージョン 1.46)
アップデート 1.46.1: このアップデートでは、これらのissueに対処しています。
ダウンロード: 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 - Tips&Tricks、リモート開発、および VS Code の歴史に関する講演。
これらのリリースノートをオンラインで読むには、Updates (code.visualstudio.com) にアクセスしてください。
アクセシビリティ
このマイルストーンでは、コミュニティから役立つフィードバックを再びいただき、多くのアクセシビリティに関する issueを特定して対処することができました。
- ステータスバーがキーボードナビゲーションをサポートするようになりました。次のパートにフォーカス (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
以前は、検索ビューをサイドバーからパネルに移動するための設定がありましたが、ドラッグアンドドロップが代わりに使用できるようになったため、その設定は廃止されました。
ビューのグループ化
異なる拡張機能からのいくつかのビューをグループ化したり、組み込みビューのデフォルトグループが自分に合わないと感じる場合もあるでしょう。ビューを既存のグループに移動したり、選択したビューの新しいグループを作成したりできます。これは、以前と同様にサイドバーとパネル全体で機能します。以下に、いくつかの例を示します。
エクスプローラーからソース管理へのタイムラインビューのドラッグ
実行サイドバーからパネルのデバッグコンソールの隣にウォッチビューをドラッグ
サイドバーとパネルにタイムラインと 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 でアイデアを共有してください。
検索エディター
検索エディターの作成方法を構成するためのいくつかの新しいオプションがあります。
search.searchEditor.defaultNumberOfContextLines
- 検索エディターがデフォルトで表示するコンテキスト行数を構成します。search.searchEditor.reusePriorSearchConfiguration
- 新しい検索エディターを作成するときに、最後にアクティブだった検索エディターの構成を再利用します。- キーバインディング引数で検索エディターの構成変数を渡すためのサポート (パラメーターの詳細)。
スクロールを強制せずにエクスプローラーの自動表示にフォーカス
explorer.autoReveal
設定に新しいオプション focusNoScroll
があります。このオプションを使用すると、エクスプローラーはファイルを開くときに自動的にファイルを選択しますが、エクスプローラービューでファイルを表示するためにスクロールしません。
リストとツリーのスムーズスクロール
workbench.list.smoothScrolling
設定を有効にすると、スムーズスクロールのないハードウェア(たとえば、Windows のディスクリートマウスホイール)でリストとツリーのスクロールがはるかにスムーズになります。
サッシュサイズの構成
workbench.sash.size
設定を使用して、ビュー/エディター間のドラッグ領域のフィードバック領域サイズをピクセル単位で構成できるようになりました。マウスを使用してビューのサイズを変更するのが難しいと感じる場合は、より大きな値を設定してください。
スクリーンキャストモードのフォントサイズ
新しい screencastMode.fontSize
設定を使用すると、スクリーンキャストモードで使用されるフォントサイズをピクセル単位で構成できます。
信頼されたリンク保護
VS Code は、ワークスペース内の GitHub リモートへの URL リンクを直接開くことを許可するようになりました。さらに、GitHub でサインインしている場合は、GitHub プロファイルの下のページへのすべてのリンクが信頼されます。
エディター
閉じたファイルに対するファイル間のアンドゥ
ファイルが途中で閉じられた場合でも、ファイル間でアンドゥを実行できるようになりました。編集されたファイルが再度開かれ、名前の変更記号などのファイル間の操作は、影響を受けるすべてのファイルでアンドゥされます。
異常な行末記号
VS Code は現在、CR(キャリッジリターン)、LF(ラインフィード)、および CRLF を行末記号として認識しています。一部のプログラミング言語では、行末記号の定義が異なります。これは言語によって異なり、たとえば LS(行区切り記号)と PS(段落区切り記号)は C# および JavaScript では行末記号ですが、HTML、PHP、Java では行末記号ではありません。これらの行末記号の違いは、VS Code が言語サーバーと通信するときに問題を引き起こす可能性があります。これは、さまざまな概念が (行;文字)
座標を使用して VS Code と言語サーバー間で通信されるためです。行末記号の定義が異なる場合、ファイル内の行と場所のマッピングが異なる可能性があります。
ファイルを開くと、VS Code は開いたファイルに LS または PS が存在するかどうかを確認し、これらの文字を削除する許可を求めるプロンプトを表示します。これらの異常な行末記号は実際にはまれであり、コピーアンドペーストを介して誤ってソースコードに挿入される可能性が最も高いです。
統合ターミナル
リンクサポートの改善
先月の統合ターミナルのリンクプレビューが、古い実装に置き換わりました。新しいリンク実装により、次のことが可能になりました。
- エディターのリンク検出を使用して、Web および
file://
リンクの検出を改善しました。 - エクスプローラーでフォルダーを開くか、新しい VS Code ウィンドウを開く、フォルダーリンクのサポート。
- さまざまなリンクタイプに対するさまざまなリンクアクション。ワークスペースを検索する「単語」リンクにフォールバックします (
terminal.integrated.wordSeparators
設定に基づく)。 - エディターと同様のリンクの強調表示とホバーエクスペリエンス。
テーマ: Topaz (Dim)
タスク
最近のタスクパフォーマンスの改善に続いて、ビルドタスクの実行は、拡張機能にタスクを常に要求しなくなりました。フォルダーの tasks.json
にデフォルトのビルドタスクが構成されている場合、ビルドタスクの実行は、デフォルトのビルドタスクを実行する前にすべての拡張機能からすべてのタスクを検索するのではなく、そのタスクの解決のみを試みます。
ソース管理
ターミナルで開く
ソース管理ビューのコンテキストメニューから、ターミナルでリポジトリを開くことができるようになりました。
GitHub リモートの追加
Git: リモートの追加... コマンドを使用して、GitHub リポジトリをローカルリポジトリのリモートとして追加できるようになりました。
GitHub に公開するときに .gitignore を生成する
ワークスペースを GitHub に公開するときに .gitignore
ファイルを生成できるようになりました。ワークスペースを GitHub に公開するときに、リポジトリに含めるファイルを選択するように求められ、含まれていないファイルは .gitignore
ファイルに追加されます。
入力フィールドのフォントファミリー
Scm: 入力フォントファミリー設定を使用して、ソース管理入力フィールドで使用されるフォントファミリーをカスタマイズできるようになりました。設定は次の値をサポートしています。
default
- ワークベンチユーザーインターフェイスフォントファミリー。editor
- エディター: フォントファミリー設定で指定されたフォントファミリー。font family name
- 入力フィールドで使用されるフォントファミリーの名前 (例:Cascadia Code
)。
進行中のリベースを中止する
Git: リベースを中止コマンドを使用して、進行中のリベース操作を中止できるようになりました。
デバッグ
自動デバッグ構成の改善
このマイルストーンでは、自動デバッグ構成のエクスペリエンスを改善しました。
-
前回のマイルストーンでは、拡張機能の作成者が現在のプロジェクトを分析し、デバッグ構成を自動的に提供できるようにする機能を導入しました。これらのデバッグ構成は動的に作成されるため、
launch.json
構成ファイルには表示されません。これは、すぐに使用できる場合は優れていますが、追加の引数を追加するなど、構成を変更する必要がある場合があります。編集するために開くために、自動デバッグ構成をlaunch.json
に保存するオプションが追加されました。これを行うには、デバッグ: デバッグの選択と開始クイックピックの自動デバッグ構成の最後にあるギアボタンを使用します。 -
実行とデバッグの開始ビューからすべての自動デバッグ構成を表示できるようになりました。
-
デバッグドロップダウンで、以前に選択した自動デバッグ構成が記憶されるようになりました。
ステップインターゲット
多数のネストされた関数呼び出しを含むステートメントをデバッグすると、関心のない関数をステップスルーしなければならない場合があるため、苦痛になる可能性があります。このシナリオを改善するために、Debug Adapter Protocol は、関心のある関数に直接ステップインするための UI を表示する「ステップインターゲット」機能をサポートしています。
このマイルストーンでは、VS Code はこの機能の使用を開始しました。デバッグがステートメントで停止すると、コンテキストメニューに新しいアクション ステップインターゲット が表示されます。このアクションは、現在のスタックフレームで使用可能なすべてのターゲット (通常は関数) のリストを表示します。それらの 1 つを選択すると、そのターゲットにステップインします。
すべてのスタックフレームに独自のターゲットセットを含めることができることに注意してください。したがって、ステップインターゲットアクションの結果は、コールスタックビューで現在選択されているフレームによって異なります。
今のところ、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 つしかない場合のみであることに注意してください。プロジェクトに複数の潜在的なインポートがある場合は、通常のアクションメニューを使用して、使用するインポートを選択する必要があります。また、JavaScript で 不足しているインポートの追加 クイックフィックスを有効にするには、型チェックを有効にする必要があります。
JSON オフラインモード
新しい設定 json.schemaDownload.enable
を使用すると、JSON 拡張機能が http
および https
から JSON スキーマをフェッチすることを許可するかどうかを制御できます。
現在のエディターがダウンロードできないスキーマを使用しようとすると、ステータスバーに警告三角形が表示されます。検証、コード補完、ホバーなどのスキーマベースの機能は制限されます。
ブラウザーのサポート
タブタイトルにデバッグ停止インジケーター
ブラウザーで拡張機能をデバッグする場合、デバッグされた拡張機能は、デバッガータブを非アクティブ化 (非表示) にする新しいブラウザータブに表示されます。デバッグ対象が何らかの理由で停止した場合 (たとえば、ブレークポイントにヒットした場合)、デバッガータブをアクティブ化することはできません (ブラウザーがこれを行うための API を提供していないため)。これにより、デバッグされた拡張機能が停止したことを発見することがほぼ不可能になります。
この問題を軽減するために、タブタイトルを更新して、赤い円のインジケーター 🔴 (ブレークポイントに似ています) を含めるようになりました。デバッガータブがアクティブ化されるとすぐに、赤い点が削除されます。
統合ターミナルから VS Code を実行する
ブラウザーで実行されている VS Code で統合ターミナルを開くと、code
と入力して、ブラウザーで動作するいくつかの便利なコマンドにアクセスできます。
今回のイテレーションでは、多くのオプションのサポートを拡張しました。
- 特定の行でファイルを開くための
--goto
- 2 つのファイルを比較するための
--diff
- プログラムがファイルを閉じるのを待機するための
--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
設定を有効にすることで、既存の起動構成で使用を開始できます。
今月の進捗状況は、主に既存の機能の洗練と安定化に焦点が当てられました。
- ブラウザーデバッグの複数タブサポート: ブラウザーまたは WebView の実行時に、複数のタブにアタッチできるようになりました。デフォルトでは、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 4.0 ナイトリービルドを試すには、TypeScript Nightly 拡張機能をインストールしてください。フィードバックを共有し、TypeScript 4.0 でバグが発生した場合はお知らせください。
拡張機能への貢献
Notebooks
クイックアウトライン
GitHub Issue Notebooksなどの Notebook 拡張機能は、クイックアウトラインをサポートするようになりました。kb('workbench.action.gotoSymbol')
を押すか、エディターでシンボルへ移動 コマンドを使用して、現在の Notebook のすべての Markdown およびコードセルプレビューを表示します。
テーマ: GitHub Theme
エラーとシンボルのナビゲーション
F8
と すべての参照の検索 の動作を改善しました。すべてのコードナビゲーションジェスチャーは、Notebook の外部で行うのと同じくらい自然に感じるはずです。たとえば、問題ビューには、セルごとではなく、Notebook ごとにグループ化されたすべてのセルのすべてのエラーが表示されるようになりました。
テーマ: GitHub Theme
セルの結合/分割
セルをすばやく結合またはセルをより小さなフラグメントに分割するための 2 組のコマンドを導入しました。
テーマ: GitHub Dark Theme
保持された Notebook
ピン留めされた、またはダーティな Notebook エディターは、ワークスペースで永続化されるようになったため、Notebook がバックグラウンドに移動されたり、別のエディターグループに移動されたりしても、ユーザーは Notebook の作業状態を失うことはありません。
テーマ: GitHub Dark Theme
統合されたアンドゥ/リドゥスタック
Notebook セルの操作または Notebook セルコンテンツの変更のユーザー操作が、同じアンドゥ/リドゥスタックで追跡されるようになりました。
テーマ: GitHub Dark Theme
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues 拡張機能の開発が継続されています。この拡張機能を使用すると、プルリクエストと issue の作業、作成、および管理を行うことができます。このリリースのいくつかのアップデートには、次のようなものがあります。
- issue ホバーのラベルの改善。
- issue とユーザーの提案は、コメントとプレーンテキストでのみトリガーされるようになりました。
- 新しい issue エディターでは、担当者とラベルを設定できます。
すべての新機能とアップデートの詳細については、拡張機能の 0.17.0 リリース用の完全な変更ログを参照してください。
リモート開発
Remote Development extensions の開発が継続されています。これにより、コンテナー、リモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。
1.46 の新機能は次のとおりです。
- Dev Containers: GPG 転送のサポート。
- Dev Containers: Docker ボリュームの検査のサポート。
- Dev Containers: 新しい
devcontainer.json
コマンドプロパティ。
新しい拡張機能とバグ修正の詳細については、リモート開発リリースノートを参照してください。
Hex Editor
バイナリエディターのサポートでカスタムエディター API が最終決定されたため、ネイティブの 16 進数編集エクスペリエンスを提供するためにHex Editor 拡張機能を開発しました。
この拡張機能はまだ開発中であり、現在、ファイルのオープンと 16 進数としてのナビゲーションのみをサポートしています。ナビゲーションエクスペリエンスの開発を続け、その後編集のサポートに進みます。拡張機能を試してみて、vscode-hexeditor リポジトリに対してフィードバックを提供するか、issue を提出してください。
拡張機能の作成
ファイルパスのケーシング
VS Code が大文字と小文字を区別しないファイルシステムでパスと URI を処理する方法に関するいくつかのバグを修正しました。このリリースより前は、ケーシングが異なるパスは同じドキュメントを開きませんでしたが、分離された切断されたドキュメントを開いていました。その動作はしばしば混乱を引き起こし、時にはデータ損失を引き起こしました。
ただし、これらのバグを修正する際に、openTextDocument
関数の動作が変更されました。この関数は、渡された URI とは異なるケーシングの URI を持つドキュメントを返すことができるようになりました。つまり、拡張機能はリクエストされた URI ではなく、TextDocument#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
を使用して、アクティブな入力オプションの前景色を設定できます。これらは、検索ビューと検索ウィジェット(エディター、ターミナル、デバッグコンソール)に表示されます。
テーマ: GitHub Dark Theme
新しい codicon アイコン
以下の新しいアイコンを codicon ライブラリに追加しました。
server-process
server-environment
record
pass
stop-circle
play-circle
テーマ: GitHub Dark Theme
プロバイダーはジェネリック型を使用します
vscode.d.ts
の型定義が更新され、'provide' メソッドと 'resolve' メソッドを持つ 2 段階のプロバイダーがすべてジェネリックになりました。これは、'provide' 呼び出しの結果が 'resolve' 呼び出しに渡されることをより明確にするためです。
たとえば、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 { ... }
}
Webview でのテーマ固有の CSS の記述
Webview の body
要素に、現在アクティブなテーマのフルネームを格納する新しいデータ属性 vscode-theme-name
が追加されました。これにより、webview でテーマ固有の CSS を記述できます。
body[data-vscode-theme-name="One Dark Pro"] {
background: hotpink;
}
VS Code で利用可能なテーマの数を考えると、テーマ固有の CSS は例外的な場合にのみ記述する必要があることに注意してください。通常の webview では、代わりに .vscode-light
および .vscode-dark
クラス名と VS Code CSS 変数 を使用して、ユーザーが選択したテーマに適応する CSS を記述する必要があります。
カスタムバイナリエディター
カスタムバイナリエディターの API が完成しました。カスタムエディター API を使用すると、拡張機能は、VS Code のデフォルトのテキストエディターを置き換えるか、ユーザーが切り替えることができるカスタム webview ベースのエディターを作成できます。これは、画像や 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 は、組み込みの Git 拡張機能でも使用され、VS Code を認証プロバイダーとして機能させます。
Debug Adapter Protocol
新しい命令ブレークポイント
新しい「命令」ブレークポイントタイプが追加され、メモリアドレスの命令でブレークできるようになりました。メモリアドレスは、evaluate
、variables
、stackTrace
、および gotoTargets
リクエストからオプションで利用可能なシンボリック形式で指定されます。対応する機能 supportsInstructionBreakpoints
は、デバッグアダプターが命令ブレークポイントをサポートしているかどうかを示します。
「ステップ実行の粒度」のサポート
新しいオプションの granularity
引数が、ステップ実行リクエスト next
、stepIn
、stepOut
、stepBack
に追加されました。これは、リクエストが「ステートメント」、「行」、または「命令」のいずれをステップ実行するかを制御するためのものです。対応する機能 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
Windows for ARM 64-bit 用の新しい公式 Insider ビルドが、Insiders ダウンロードページ で入手できます。
これらのビルドは Microsoft Surface Pro X で動作しますので、ぜひ試してみて、感想をお聞かせください。
問題診断のための --crash-reporter-directory
引数
新しいコマンドライン引数 --crash-reporter-directory
を使用すると、クラッシュレポートを保存したいローカルフォルダーを渡すことができます。これは拡張機能ホストでのクラッシュにも対応しており、VS Code がクラッシュしていて問題を報告したい場合にいつでも使用できます。
Preload スクリプト
特定の Electron API をウィンドウに公開するために、Electron preload
スクリプトを VS Code に追加しました。これは、完全にサンドボックス化されたウィンドウへの最初のステップの 1 つです。進捗状況は issue #92164 に概説されています。
拡張機能のサンプルが ESLint を使用するようになりました
拡張機能のサンプル はすべて更新され、現在非推奨となっている TSLint の代わりに ESLint を lint に使用するようになりました。拡張機能でまだ TSLint を使用している場合は、TSLint から ESLint への移行ガイド と、新しく更新された拡張機能のサンプルを参照して、ESLint への移行方法を確認できます。
GitHub トリアージ拡張機能
GitHub での問題のトリアージを支援するために、chromium ベースのブラウザー用の拡張機能を作成しました。これは、担当者、ラベル、マイルストーン、およびトリアージ GitHub Actions をトリガーするために使用するさまざまな特別なコメントの単一のあいまい検索可能なメニューを提供します。コードを GitHub で オープンソース化しました。
ドキュメントと拡張機能
Build における Visual Studio Code
VS Code チームは Microsoft Build 2020 カンファレンスで発表を行い、VS Code セッションとオンライントークの概要をこの VS Code at Build ブログ記事で確認できます。
VS Code チームメンバーによるいくつかの講演
- VS Code Tips and Tricks - VS Code で生産性を向上させるための 20 のヒントとトリック。
- すべての Visual Studio Code ユーザーが GitHub について知っておくべきこと - PR と issue のための 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: Use system-ui as font on Linux
- 63068: macOS dock icon is minuscule
- 69163: Reveal Active File in Side Bar is throwing an exception
- 95367: DAP "evaluate" request issued for invalid frameId
- 95856: Go To Line should include "filename.extension:line number" format
- 96713: Stopping a session from call stack actions view always goes to the active session
- 96914: Typing is laggy when outline is visible
- 96987: Orca does not read the line number in the breakpoint view
- 97444: Copying a long value from debug watch results in pasting partial value
- 97471: Debug hover is too narrow and horizontal scrolling useless
- 97731: VS code freezes when typing and scrolling
- 96643: Tasks (and TaskExecutions) are not === in the onDid(Start|End)Task callbacks
ありがとうございました
最後になりましたが、今月 VS Code に貢献してくださった以下の皆様に心から感謝申し上げます。
Issue トラッキングへの貢献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Alexander (@usernamehw)
- Simon Chan (@yume-chan)
- ArturoDent (@ArturoDent)
vscode
への貢献
- AlexStrNik (@AlexStrNik)
- Andrew Branch (@andrewbranch): 提案: --inspect-brk で TS Server を起動できるようにする PR #98340
- Christos Pappas (@ChrisPapp)
- @D-to-the-K: Monaco Monarch 言語定義での Unicode 対応正規表現のサポート PR #98447
- Rick van Galen (@DCKcode): Containerfile のサポート PR #93184
- Paul (@DFineNormal): snippets.contribution.ts のスペルミスを修正 PR #98396
- matt penrice (@elmpp): スキーム化されたファイルパス用の VsCodeResource を作成 PR #94986
- HaoboGu (@HaoboGu): #98102 を修正 PR #98127
- HiDeoo (@HiDeoo): vscode.d.ts のタイプミスを修正 PR #98692
- Ilia Pozdnyakov (@iliazeus): :line
:line goto パターン #95856 を追加 PR #96535 - Andrii Dieiev (@IllusionMH): デバッグアイコンを修正。テキストの代わりに Codicons を使用 PR #98716
- Jack Works (@Jack-Works): typescript.code-snippets を更新 PR #98521
- @Jagua: json-language server readme のインデントとタイプミスを修正 PR #97812
- Jānis Gailis (@JanisGailis): Monokai Dimmed テーマにターミナルカラーを追加 PR #98323
- Jean Pierre (@jeanp413)
- パンくずリストが表示されている状態でタブを切り替えると、エディターの高さが間違っている問題を修正 PR #97502
- ワークスペースファイルに起動構成を作成するオプションを追加 PR #97321
- 新しいファイル/フォルダーを編集中に [フォルダーを折りたたむ] アクションをクリックした後、エクスプローラーで空の項目が表示される問題を修正 PR #96853
- ワークスペースレベルのタスクへのキーバインドの割り当てが機能しない問題を修正 PR #97380
- flipNode 中にレイアウトを呼び出すのを回避 PR #92004
- デバッグドロップダウンで dropdown.background カラーを使用 PR #96576
- デバッグドロップダウンコンテナーで dropdown.background カラーを使用 PR #96996
- John Keech (@jkeech): webview の古い CSS スタイルプロパティをクリア PR #96665
- John Blackbourn (@johnbillion): *.ts.map ファイルを JSON として扱う PR #98409
- Robert Jin (@jzyrobert): #84696 git add/revert が splitInChunks を使用するように変更 PR #84843
- Danny Lin (@kdrag0n): macOS ダークテキスト選択カーソルを復元および修正 PR #96947
- Leila Pearson (@leilapearson): エクスプローラーでのファイル名ソート順のエッジケースを修正。 PR #97200
- Lissein (@lissein): titleBar テーマカラーのコメントを修正 PR #97360
- Max (@MaxGyver83): Neo キーボードレイアウト (レイヤー 4) の方向キーをエクスプローラービューで動作するようにする PR #98269
- Alasdair McLeay (@penx): CSS - node モジュール解決のために親フォルダーを検索 PR #81555
- Pieter Vanderpol (@petevdp): インライン diff エディターを中央揃えできるようにする。 PR #97311
- Pascal Fong Kye (@pfongkye): 修正: 新しいコマンド stageAllMerge PR #97349
- James Koss (@phuein): [表示されたファイルまでスクロールする] オプションを削除。 PR #96890
- Jack Platten (@plttn): タイプミスを修正 PR #97198
- @ricksentam: ビルドを変更 PR #98857
- Robert Rossmann (@robertrossmann)
- shskwmt (@shskwmt): 機能 #94173: サジェスト挿入時にスクロール PR #94327
- Steven Hermans (@steven166): ブラウザワークベンチで D&D 経由でフォルダーをアップロード PR #97347
- Rahul Kadyan (@znck): 機能: 他の拡張機能の言語プロバイダーを登録するために configNamespace を使用 PR #95621
- Jakub Trąd (@Dzejkop): 検索エディター: デフォルトのコンテキスト表示値プロパティを追加 PR #97920
language-server-protocol
への貢献
- (@KamasamaK)
- Knut Aldrin (@zub): 'aritfacts' のスペルを修正 PR #980
- Remy Suen (@rcjsuen): "revers" のタイプミスを "reverse" に修正 PR #995
- Steven Kalt (@SKalt): 固定テーブルヘッダーを使用 PR #1000
vscode-generator-code
への貢献
- Alexey Elizarov (@beautyfree): 修正: ダークテーマの無効な JSON PR #207
vscode-vsce
への貢献
- Owen Farrell (@owenfarrell): 環境変数からの PAT の注入をサポート PR #447
debug-adapter-protocol
への貢献
- @auott
- Vitalii Akimov (@awto): adapters.md に効果的な JavaScript デバッガーの参照を追加 PR #113
- @tomcec: adapters.md を更新 PR #115
- Andrew Wang (@WardenGnaw): C/C++ DAP メンテナーを更新 PR #117
- FW (@fwcd): Kotlin デバッグアダプターを追加 PR #120
vscode-js-debug
への貢献
- Vadym Okun (@cbmd):
npm
のみではなく、選択したパッケージマネージャーで実行できる機能を追加。 PR #459
localization
への貢献
過去 1 年間、皆様からのフィードバックに真摯に耳を傾け、VS Code のローカライズ開発に貢献できる、より信頼性が高くインタラクティブなプラットフォームを提供する時期が来たと判断しました。これを踏まえ、Microsoft Community Localization Program をオープンソースのローカライズプロジェクト向けの代替プラットフォームで継続する目的で、4 月の第 1 週に Microsoft Localization Community Platform (MLCP) を正式に廃止しました。
新しいコミュニティプラットフォームに関する発表については、今後の数週間で Wiki ページにご注目ください。このプラットフォームの移行に関する回答については、FAQ ページもご覧ください。