2021年8月 (バージョン 1.60)
バージョン1.60.1へのアップデート: このアップデートでは、これらの問題に対処しています。
バージョン1.60.2へのアップデート: このアップデートでは、これらの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code 2021年8月版へようこそ。このバージョンには、皆様に気に入っていただけるであろう多くのアップデートが含まれています。主なハイライトは以下の通りです。
- 自動言語検出 - VS Codeにペーストした際にプログラミング言語が検出されます。
- 高速な括弧の組の色付けを内蔵 - 大規模ファイルでも高速な括弧の組の一致と色付け。
- 設定エディターのコードブロックのシンタックスハイライト - 設定説明のコードブロックに対する豊富なシンタックスハイライト。
- カスタムターミナルグリフのレンダリング - ボックス描画文字やブロック要素文字の表示を改善。
- ウォッチビューでのデバッグ値の設定 - デバッグセッション中にウォッチ値を変更。
- ノートブックの改善 - Markdownリンクナビゲーション、大規模出力の高速レンダリング。
- JavaScript/TypeScriptインレイヒント - パラメーター名や型のインラインヒントなど。
- ロックされたエディターグループのプレビュー - エディターグループをロックすることで、好みのエディターレイアウトを維持できます。
- Python拡張機能のテストアップデート - テストの検出、ナビゲーション、ステータスのサポートを改善。
- Web拡張機能の作成者ガイド - ブラウザーでVS Code用に拡張機能を更新する方法を学びます。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
9月2日木曜日太平洋時間午前8時(ロンドン時間午後4時)に開催されるVS Codeチームのライブストリームにご参加ください。このリリースにおける新機能のデモをご覧いただき、ライブで質問をすることができます。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
ワークベンチ
自動言語検出
前回のリリースでは、無題のファイルに対して、その内容に基づいてファイルの言語モードを自動的に設定する実験的な機能を導入しました。自動言語検出機能は、機械学習を使用して言語を推測し、機械学習モデルはすべてお使いのマシン上でローカルに実行されます。このモデルは、オープンソースのMLライブラリであるTensorflow.jsと、GitHubユーザー@yoeoによるGuesslangのMLモデルによって駆動されています。
このリリースでは、自動言語検出をデフォルトで有効にし、ファイル拡張子のないファイルも検出対象に含めるように拡張しています。ノートブックでは、言語ピッカーを使用して簡単に言語検出を要求する方法を提供します。
VS Codeの新規ユーザーの中には、言語モードの設定方法を知らず、VS Codeの豊富な機能セット(言語の色付けや拡張機能の推奨)を得るためにこれが必要であることを知らない人がいることが判明したため、この機能を追加しました。新規ユーザーがVS Codeで利用可能な言語機能や拡張機能を迅速に確認できるようにすることで、エディターを使いこなせるようになるのを支援します。
さらに、無題のテキストエディターをスクラッチパッドとして使用するパワーユーザーは、明示的に言語モードを設定する必要がなくなるため、ワークフローが合理化されることを期待しています。
以下は、自動言語検出によって可能になったいくつかの面白いシナリオです。
オンラインから例を取得し、無題のエディターに貼り付けます
テーマ: Panda Theme
"コードへのパイプ"言語検出(拡張子なしファイルの検出のデモンストレーション)
テーマ: Panda Theme
ノートブックの言語ピッカーにある自動検出オプション
テーマ: Panda Theme
ターミナルエディターの確認ダイアログ
実行中の子プロセスを持つターミナルエディターを閉じるときに表示されるダイアログは、ターミナルエディター専用になり、「保存」する方法は提供されなくなります。
復元に失敗したエディターは閉じずに開いたままにする
これまで、ウィンドウのリロード後やアプリケーションの再起動後にエディターの復元に失敗すると、正常に読み込まれるエディターが見つかるまで、そのエディターは自動的に閉じられていました。この動作は、エディターが閉じることによって、苦労して作成したエディターレイアウトが失われるという、不満の残る結果につながっていました。
このリリースでは、一度正常に開いたエディターは、復元に失敗しても閉じません。エディターは問題を示し、操作を再試行するオプションを提供します。
設定エディターにおけるコードブロックのシンタックスハイライト
設定の説明にあるフェンス付きコードブロックがシンタックスハイライトされるようになりました。
設定エディターをサイドに開く
openToSide
引数を使用してキーバインディングを設定することで、設定エディターをサイドグループで開くことが可能になりました。
{
"key": "cmd+,",
"command": "workbench.action.openSettings",
"args": {
"openToSide": true
}
}
これはworkbench.action.openSettingsJson
コマンドでも機能します。
エディター
高性能な括弧の色付け
エディターがネイティブの括弧の色付けをサポートするようになりました
括弧のペアの色付けは、"editor.bracketPairColorization.enabled": true
を設定することで有効にできます。すべての色はテーマ設定可能で、最大6色まで設定できます。
この機能は、CoenraadSによる有名なBracket Pair Colorizer拡張機能のパフォーマンス問題を解決するために実装されました。
これで、巨大なドキュメントの変更も即座に反映されます。
オートコンプリートでのインライン候補
オートコンプリートウィジェットが表示されているとき、インライン候補は候補プレビューを拡張できるようになりました。オートコンプリートウィジェットで選択された候補がインライン補完プロバイダーによって拡張できる場合、その拡張は斜体で表示されます。Tab
キーを1回押すと、オートコンプリート候補のみが受け入れられます。2回目にTab
キーを押すと、インライン候補が受け入れられます。
この機能を使用するには、サジェストプレビューが有効になっている必要があります ("editor.suggest.preview": true
)。
更新されたピークビュー
ピークビューを視覚的に刷新し、他のエディタービューと統一しました。
ターミナル
ボックス描画とブロック要素文字のカスタムレンダリング
GPUアクセラレーションがオンの場合(terminal.integrated.gpuAcceleration
)、ボックス描画文字とブロック要素文字はフォントを使用する代わりに、ピクセルパーフェクトなカスタムグリフを使用するようになりました。これにより、例えば、ターミナルで行の高さや文字間隔を設定した場合でも、ボックスに隙間なく描画されます。
以下は、ターミナルアプリZenithの例です。これは、セクションの周りのボックス描画文字と、チャートのブロック要素を示しています。
これは"terminal.integrated.customGlyphs": false
を設定することで無効にできます。
特定のフォントのアンダースコアのレンダリングの改善
ターミナルでのアンダースコアのレンダリングにはいくつかの歴史的な問題があり、そのほとんどはWebGLレンダラー(デフォルト)に切り替えることで修正されました。これには1つの例外があり、Linuxではフォントのアンダースコア文字がセルの境界より下に予期せず描画されるという問題でした。
下の行のアンダースコアがセルの下にレンダリングされていることに注目してください
これはほとんどの場合で問題なく機能しますが、下の行ではキャンバスの境界外に描画されるため失敗します。
この問題を回避するために、現在ではそのようなフォントを検出し、アンダースコアのテクスチャをセルの境界内に収まるまで上にシフトさせるようにしています。この解決策は、行の重複を避けるために行をクリップする方法が原因で、以前はどの行にもアンダースコアが表示されなかったキャンバスレンダラーにも適用されます。
ウィンドウのリロード後の再接続が高速化
以前は、ウィンドウをリロードすると、ターミナルのバッファの状態を解析するのに最大300msかかることがあり、破損の可能性もありました。複数のビジーなターミナルでは、これがすぐに積もり積もってしまいます!これを解決するために、バッファを復元する方法が、ptyホストで多数の最近の生のターミナルイベントを記録するのではなく、ptyホスト上にヘッドレスターミナルフロントエンドを維持し、そこにすべてのデータを書き込むように変更されました。
このアプローチにはいくつかの利点があります。
- 復元するスクロールバックの量を細かく調整できます。デフォルトは100で、速度とデータ量のバランスが取れています。スクロールバック量は
terminal.integrated.persistentSessionScrollback
設定で変更できます。 - xterm.jsの高速パーサーのおかげで、CPU使用率への影響は最小限に抑えられ、ptyホスト上の全体的なメモリ使用量も削減されるはずです。
- 以前見落とされ、バッファ破損の原因となる可能性があったターミナルモードが明示的に復元されるようになりました。
- ターミナルのバッファは常にそのサイズと同期しているため、高コストなリサイズイベントを再生する必要がなくなりました。
- 復元は比較的迅速なので、すべてが1つのフレームで処理されます。これにより、部分的に復元されたターミナルのレンダリングに貴重なCPU時間を浪費したり、さらに速度を低下させたりすることがなくなります。
この新しい実装による速度向上は、ターミナルの数、ハードウェア、ターミナルのバッファサイズ、ターミナルで何が起こっていたかなど、多くの要因に依存します。完全なターミナルバッファの復元の概算では、約5~10倍の速度向上が期待できます。
また、新しいxterm-headlessパッケージをnpmに公開しましたので、ご自身のプロジェクトでこの作業をご利用いただけます。
デバッグ
WATCHビューで値を設定する
コンテキストメニューの値の設定アクションを使用して、WATCHビューで監視対象の式の値を設定できるようになりました。
値の設定が利用可能になるには、デバッグ拡張機能がこの機能を有効にする必要があります。現時点では、JS-debug、C#、C++の各拡張機能がこれをサポートしていますが、他のデバッグ拡張機能もすぐにこれに追随すると予想されます。
UIの軽微な改善
-
VS Codeは、VARIABLESビュー、WATCHビュー、およびデバッグホバーでも値のリンクを検出するようになりました。変数の値がリンクの場合、クリックしてそのリンクをたどることが容易になります。
-
すでに実行中のデバッグセッションの別のインスタンスを開始する場合、誤って2つのセッションを開始することを防ぐために、モーダル確認ダイアログが表示されるようになりました。
-
エディターのブレークポイントガッターで無効なブレークポイントをクリックすると、ブレークポイントが削除される代わりに有効になります。
-
デバッグセッションがアクティブな場合、行まで実行アクションがエディターのブレークポイントガッターのコンテキストメニューで利用できるようになりました。
新しい設定
-
デバッグセッション中に誤ってウィンドウを閉じないようにしたい場合は、新しい設定
debug.confirmOnExit
を有効にできます。これをalways
に設定すると、ウィンドウを閉じるときにデバッグセッションを停止するかどうかを確認するプロンプトが表示されます。 -
新しい設定
debug.console.acceptSuggestionOnEnter
は、デバッグコンソールでEnter
キーを押したときに候補を受け入れるかどうかを制御します。Enter
キーはデバッグコンソールに入力された内容を評価するためにも使用されるため、このオプションはユーザーにEnter
キーを押したときに何が起こるかについてより良い制御を提供します。
JavaScriptデバッグ
従来のNodeデバッガーが廃止
VS Codeには以前からNode.jsデバッガーが組み込まれており、個別のChromeデバッガーも公開されていました。昨年、Node.jsとChrome向けの新しいデバッガーを導入し、VS Code 1.47(2020年7月)以降は、"オプトアウト"オプション付きでデフォルトとなっていました。
今回のリリースで、古いデバッガーは製品から削除され、Marketplaceでは非推奨としてマークされました。新しいJavaScriptデバッガーをオプトアウトしなかったVS Codeユーザーの大多数にとっては、何も変更はありません。
たとえば、Node.js 6プログラムをデバッグするために古いデバッガーが必要な場合は、[非推奨] Node Debugまたは[非推奨] Debugger for Chrome拡張機能をインストールし、それぞれlegacy-node
またはlegacy-chrome
の起動タイプを使用できます。
非同期関数およびNode.js内部におけるステップ実行の改善
デバッガーのskipFilesを設定することで、特定のコード(非同期関数のステップ実行時によくヒットするNode.js内部など)へのステップインを回避できます。
しかし、Node.jsは「ブラックボックス化された」スクリプトを扱う際に常に正しい動作を示すわけではないため、今回のイテレーションではデバッガーに「合成ブラックボックス化」を導入しました。これにより、Node.jsプログラムを扱う際の信頼性が大幅に向上するはずです。特に非同期関数にステップインする場合に顕著です。
次回のリリースでは、デバッガーがNode.js内部をデフォルトでスキップするようにする予定です。
インストーラー
サポートされているファイルタイプにVS Codeをデフォルトで登録
Windows 11では、[ファイルを開く]がメニューの先頭に、[開く]とグループ化された新しいファイルエクスプローラーのコンテキストメニューが導入されました。この更新により、利用可能なすべてのエディターを簡単に見つけて、デフォルトを変更できるようになります。
新しいベストプラクティスに従い、Windowsインストール中にVS Codeのチェックボックス「VS Codeを関連付けられたファイルタイプの編集エディターとして登録する」がデフォルトでチェックされるようになりました。また、関連付けられたファイルタイプのリストを見直し、よく開かれるファイルタイプをさらに含めるように拡張しました。
Windows 11のMicrosoft Store
間もなくリリースされるWindows 11では、新しいMicrosoft Storeが、より従来のアプリケーションタイプやインストーラーをサポートできるようになります。Windows Insiderプログラムを通じてすでにWindows 11をテストしている場合は、Storeで検索することで、VS Codeの最新リリースを今すぐインストールできます。インストールすると、当社のウェブサイトからユーザーインストールとして利用できるものと同じVS Codeが利用でき、アップデートはこれまでと同様にアプリ内で処理されます。
ノートブック
Markdownセル間のリンク
ノートブックがMarkdownセル間のリンクをサポートするようになりました。
Markdownセル内のヘッダーへのリンクは、以下を使用して作成できます。
[Link text](#_header-slug)
header-slug
はヘッダーの小文字のテキストで、スペースや特殊文字は-
に置き換えられます。上記の例のリンクは、ヘッダー# Header Slug
に移動します。
大規模な出力に対するパフォーマンスの向上
ノートブックで大規模な出力を扱う方法を最適化し、パフォーマンスを大幅に向上させました。
舞台裏では、VS Codeはノートブックの出力をUint8Arraysを使用してバイナリデータとして保存します。以前は、拡張機能ホストプロセスとレンダラープロセス間で出力データを転送する際、データはまず数値の配列に変換され、その後JSONにシリアル化されていました。
これがパフォーマンスに悪影響を及ぼす理由を理解するには、テキストHello Code!
を出力するノートブックを考えてみましょう。これは内部的にUint8Array
として保存されます。
new Uint8Array([72, 101, 108, 108, 111, 32, 67, 111, 100, 101, 33]);
そのデータは11バイト長です。古い実装では、バイナリデータをJSON文字列に変換していました。
'[72,101,108,108,111,32,67,111,100,101,33]';
この文字列は41バイト長で、元のデータの3.5倍以上のサイズです!転送する余分なバイトが非常に多く、受信側は再びUint8Array
に変換するためにその文字列をJSONとして解析する必要があります。この解析は、数MBサイズのノートブック出力の場合、重大なボトルネックになる可能性があります。
新しい実装では、ノートブックの出力は転送中にバイナリデータとして保持されます。この実装の詳細については、プルリクエストで詳しく読むことができます。
この修正により、大規模な出力が保存されたノートブックの読み込みが大幅に改善され、実行中にノートブックが大規模な出力を生成する際のパフォーマンスも向上しました。
onNotebookアクティベーションイベントの改善
VS Codeは、ワークスペースでノートブックが開かれたときにonNotebook:{type}
およびonNotebook:*
イベントを発行し、ノートブック拡張機能がこれらのイベントをリッスンしたときにアクティブ化できるようにします。以前は、VS Codeはファイルをオープンする前に、これらの2つのイベントをリッスンするすべての拡張機能がアクティブになるのを待っていましたが、現在では、特定のノートブックのシリアライザーが登録されるのを待つだけになりました。たとえば、ユーザーが新しいワークスペースでipynb
ファイルを開くと、組み込みのipynb
シリアライザー拡張機能がアクティブ化され、ファイルはすぐに開かれます。同時に、VS Codeは他のすべての拡張機能、たとえばJupyter、.NET Interactive、またはJulia拡張機能にアクティベーションイベントを発行します。他の拡張機能のアクティベーションは、高速なノートブックのオープンを保証するためにファイル操作を遅らせることはありません。
ノートブックレイアウトのカスタマイズ
エディターツールバーから直接、ノートブックのレイアウト設定をカスタマイズできるようになりました。
言語機能
TypeScript 4.4
VS CodeはTypeScript 4.4をバンドルするようになりました。このアップデートには、静的ブロックや新しい厳密性オプションを含む、いくつかの新しい言語機能と改善のサポートが含まれています。また、新しいツール改善といくつかの重要なバグ修正も追加されています。
TypeScript 4.4の詳細については、TypeScriptブログをご覧ください。
JavaScriptおよびTypeScriptのインレイヒント
TypeScript 4.4で最も重要な新しいツール機能は、インレイヒントのサポートです。インレイヒントは、ソースコードにインラインで追加情報を表示し、コードの動作を理解するのに役立ちます。
例えば、パラメーター名のインレイヒントは、関数呼び出しにおけるパラメーター名を表示します。
これにより、各引数の意味を一目で理解でき、ブール値のフラグを取る関数や、混同しやすいパラメーターを持つ関数に特に役立ちます。
パラメータ名のヒントを有効にするには、javascript.inlayHints.parameterNames.enabled
またはtypescript.inlayHints.parameterNames.enabled
を設定します。可能な値は3つです。
none
- パラメーターのインレイヒントを無効にします。literals
- リテラル(文字列、数値、ブール値)のみのインレイヒントを表示します。all
- すべての引数に対してインレイヒントを表示します。
さらに、VS CodeはJavaScriptおよびTypeScriptコード内の暗黙的な型情報を表示するインレイヒントも提供します。
変数型のインレイ ヒント は、明示的な型アノテーションを持たない変数の型を表示します。
設定 - javascript.inlayHints.variableTypes.enabled
と typescript.inlayHints.variableTypes.enabled
プロパティ型のインレイ ヒント は、明示的な型アノテーションを持たないクラス プロパティの型を表示します。
設定 - javascript.inlayHints.propertyDeclarationTypes.enabled
および typescript.inlayHints.propertyDeclarationTypes.enabled
パラメーター型のヒント は、暗黙的に型付けされたパラメーターの型を表示します。
設定 - javascript.inlayHints.parameterTypes.enabled
および typescript.inlayHints.parameterTypes.enabled
戻り値の型インレイ ヒント は、明示的な型アノテーションを持たない関数の戻り値の型を表示します。
設定 - javascript.inlayHints.functionLikeReturnTypes.enabled
および typescript.inlayHints.functionLikeReturnTypes.enabled
私たちはインレイヒントの改善を続ける予定ですので、新しい機能に関するフィードバックがあれば、ぜひ共有してください!
JavaScriptファイルにおけるスペル提案
VS CodeがJavaScriptファイルでの簡単なスペルミスを検出するようになりました。
スペル提案は、それが実際の誤りであるという確信がかなり高い場合、つまりIntelliSenseエンジンが理解できないコードパターンではない場合にのみ表示されます。この詳細については、この機能を追加したPRで詳しく読むことができます。
これらの提案は、以下のように設定することで無効にすることもできます。
"javascript.suggestionActions.enabled": false
より包括的なチェックを行うには、JavaScriptコードで完全なセマンティックチェックを有効にすることを試してください。これにより、より多くのエラーを検出できるだけでなく、いくつかの便利なクイックフィックスも有効になります。
typescript.tsserver.useSyntaxServer
新しいtypescript.tsserver.useSyntaxServer
設定を使用すると、TypeScriptがコードの折りたたみなどの構文関連の操作を迅速に処理するために専用のサーバーを起動するかどうかを制御できます。これは、現在非推奨のtypescript.tsserver.useSeparateSyntaxServer
設定を置き換えます。
可能な値は次のとおりです。
auto
- 完全なサーバーと、構文操作専用の軽量なサーバーの両方を起動します。構文サーバーは、コードの折りたたみなどの構文操作を高速化し、プロジェクトのロード中にIntelliSenseを提供するために使用されます。(デフォルト)always
- すべてのIntelliSense操作を処理するために軽量の構文サーバーを使用します。この構文サーバーは、開いているファイルに対してのみIntelliSenseを提供できます。never
- 専用の構文サーバーを使用しません。すべてのIntelliSense操作を処理するために単一のサーバーを使用します。
プレビュー機能
ロックされたエディターグループ
エディター領域にターミナルが導入されたことで、ターミナルエディターがファイルエディターに簡単に、あるいは誤って置き換えられてしまうことに不満を感じているユーザーからの報告を受けました。デフォルトでは、ファイルは常にアクティブなエディターグループで開かれるため、ターミナルがアクティブな場合でも、ファイルが開かれてターミナルが隠れてしまいます。
ロックされたエディターグループは、この問題に対処する新しい方法を提供します。これはターミナルだけでなく、どのエディターにも適用されます。複数のエディターグループを開いている場合、新しいコマンドまたは「...」オーバーフローメニューのいずれかを使用して、ロックできるようになりました。
ロックされたグループは、ロックされていないグループとは異なる動作をします。
- 新しいエディターは、ユーザーによって明示的に移動されない限り(例:ドラッグ&ドロップ)、ロックされたグループでは開きません。
- エディターがロックされたグループをスキップして開く場合、それは最後に使用されたロック解除されたグループで開かれるか、ロックされたグループの横に新しいグループが作成されます。
- エディターグループのロック状態は、再起動後も保持され、復元されます。
- 空のグループもロックできるため、より安定したエディターレイアウトが可能です。
- ロックされたグループは、アクションツールバー(右上)にロックアイコンで示されます。
ロックされたエディターグループが実際にどのように動作するかを示す以下のデモをご覧ください。Markdownプレビューがアクティブであっても、新しいファイルは左側のエディターグループで開かれます。
この機能のために追加されたコマンドは以下の通りです。
workbench.action.experimentalLockEditorGroup
workbench.action.experimentalUnlockEditorGroup
workbench.action.experimentalToggleEditorGroupLock
新しいコンテキストキーactiveEditorGroupLocked
が利用可能になり、グループのロック状態に応じてコマンドを条件付きでバインドできます。
注:関連する設定とコマンドは、ロックされたエディターグループのデザインが最終決定されるまで実験的なものです。この新機能に関するフィードバックをお待ちしておりますので、問題の報告をためらわないでください。
エディターグループの自動ロック
新しいロックされたエディターグループの概念に基づいて、新しいworkbench.editor.experimentalAutoLockGroups
設定により、開いたときにグループを自動的にロックするエディターを選択できます。これは、エディターが空または新しいグループで最初に開かれた場合にのみ適用されます。
ターミナルは、新しいグループを自動的にロックするようにデフォルトで設定されています。以下の短いビデオでは、ターミナルがアクティブであっても、ターミナルから選択されたファイルは左側のエディターグループで開かれます。
Markdownプレビューでグループを自動的にロックしたい場合は、experimentalAutoLockGroups
設定にmainThreadWebview-markdown.preview: true
を追加できます。
次のマイルストーンでは、設定のUXを改善し、エディターの識別子を知らなくてもエディターを選択できるようにする予定です。関連する設定とコマンドは、ロックされたエディターグループのデザインが最終決定されるまで実験的なものです。繰り返しになりますが、皆様のフィードバックをお待ちしております。
「ファイル名で検索」クイックピックにおける引用符のサポート
今回のイテレーションでは、「ファイル名で検索」クイックピック(⌘P(Windows、Linux Ctrl+P))において、検索文字列を引用符で囲むことでファジー検索結果を除外する機能を追加しました。
これが特に役立つシナリオ
クエリが数文字しかない場合
結果の「ごちゃごちゃ感」を減らしたい場合
私たちはこの引用符を使った検索体験を気に入っており、ほとんどの検索エンジンが同様のメカニズムを使用しているため直感的に感じられますが、皆様からのフィードバックをお待ちしております。また、イシュー #131431で議論されている他のアプローチも検討しています。
拡張機能への貢献
Jupyter
行ごとの実行
VS CodeがJupyterノートブックで行ごとの実行機能をサポートするようになりました。これは、セルのコードを1行ずつ実行できるシンプルなデバッグモードです。試すには、選択したカーネルとしてipykernel v6+がインストールされていることを確認し、行ごとの実行ボタンを選択します。
デバッグ
VS Codeの完全なデバッグ機能を使用してJupyterノートブックをデバッグするための実験的なサポートも利用できます。試すには、選択したカーネルとしてipykernel
v6+がインストールされていることを確認し、"jupyter.experimental.debugging": true
を設定し、ブレークポイントを設定し、セルをデバッグコマンドを選択します。
Jupyterキーマップ
Jupyterの従来のキーバインディングは、独立したJupyterキーマップ拡張機能に抽出されました。Marketplaceから別のノートブックキーバインディングのセットを使用したい場合は、この拡張機能を無効にすることができます。
Python
テストインターフェースの刷新
新しいテストAPIのおかげで、Python拡張機能がそのテスト機能を刷新しました。テストの検出、ナビゲーション、ステータスのレンダリングがより安定した体験となり、さらにテスト検索、テストの選択実行、最後に実行したテストの再実行などの新機能も利用できるようになりました!
エディターからターミナルでPythonファイルを実行・デバッグする
Python拡張機能を使用して、エディターから直接ターミナルでPythonファイルを実行およびデバッグできるようになりました。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues拡張機能で、すべてのコメントを展開・折りたたみできる待望の機能が利用可能になりました。すべてのコメントは、GitHub Pull Requests: Expand All CommentsおよびGitHub Pull Requests: Collapse All Commentsコマンドで展開・折りたたむことができます。また、展開・折りたたみ状態を制御する設定githubPullRequests.commentExpandState
もあります。最後に、コメントUI内からすべてのコメントを折りたたむこともできます。
すべての新機能とアップデートについては、拡張機能の0.30.0リリースの完全な変更履歴をご覧ください。
拡張機能作成
Web拡張機能
VS Codeがブラウザで実行されている場合、拡張機能はブラウザ内で実行されている拡張機能ホストに読み込まれます。「ウェブ拡張機能ホスト」はブラウザによって制約されており、拡張機能はローカルファイルシステムやプラットフォーム機能にアクセスできません。拡張機能開発者がVS Code for webで実行できるように拡張機能を更新するのに役立つウェブ拡張機能作成ガイドが利用可能になりました。ここでは、ウェブ上で最も効果的に機能する拡張機能の種類、VS Code APIへのアクセス方法、仮想ファイルシステムの使用方法について学習できます。
Web拡張機能ガイドに加えて、yo code
拡張機能ジェネレーターにWeb拡張機能をスキャフォールドするオプションが追加され、コマンドラインからWeb拡張機能をテストするための@vscode/test-web
モジュールもサポートされるようになりました。
Web版のVisual Studio Codeをまだお試しでない方は、GitHubリポジトリの< > Codeタブで「.」(ピリオドキー)を押すと、ソースコードの閲覧と編集ができるWebベースのVS Codeが起動します。
コマンドの短いタイトル
コマンドの貢献ポイントでは、拡張機能がタイトル、カテゴリ、アイコンなどのコマンドのUIプロパティを定義できます。一方、メニューはコマンドを表示する「場所」であり、メニューはコマンドのUIプロパティの一部またはすべてを表示することができます。たとえば、アイコンのみをレンダリングするメニューもあれば、タイトルまたはカテゴリとタイトルをレンダリングするメニューもあります。拡張機能の作成者にとっては、グローバルメニューとローカルメニューの両方で同様に機能するコマンドタイトルを考案することは困難です。たとえば、コマンドパレットはコンテキストメニューよりも多くの単語を表示できます。
異なるタイトルを可能にするために、新しいshortTitle
プロパティが追加されました。これにより、コマンドはUIに応じて適切に機能する短いタイトルを提供できます。たとえば、コマンドパレットではノートブック: すべてのセル出力をクリア、ノートブックツールバーでは短いすべてクリアなどです。
アプリケーションホストが環境名前空間に追加されました
.env
名前空間にアプリケーションホストappHost
プロパティが含まれるようになりました。appHost
により、拡張機能開発者はVS Codeがホストされている環境を判別できます。例としては、デスクトップ、GitHub Codespaces、github.dev、vscode.devなどがあります。
ノートブックレンダラーのRendererContext.workspace.isTrusted
ノートブックレンダラーに渡されるコンテキストオブジェクトの新しいworkspace.isTrusted
プロパティにより、拡張機能作成者は現在のワークスペースが信頼されているかどうかを確認できます。
import type { ActivationFunction } from 'vscode-notebook-renderer';
export const activate: ActivationFunction<void> = (ctx) => {
return {
renderOutputItem: (outputInfo, element) => {
if (ctx.workspace.isTrusted) {
// Render normally. Still take precautions to avoid script injection and
// only enable as much functionality as your renderer needs.
} else {
// Only render safe content. Always make sure it has been properly sanitized.
}
}
}
};
プラットフォーム固有の拡張機能
プラットフォーム固有の拡張機能(Windows、macOS、Linuxなどの異なるプラットフォーム向けに個別の拡張機能バージョンを作成できる)について、進展がありました。イシュー #23251では、マーケットプレイスチームと協力してこの機能に取り組み、解決策を最終決定しました。このマイルストーンでは、実装を開始し、間もなく拡張機能作成者に提供する予定です。更新情報やフィードバックについては、イシュー #23251をフォローしてご提供ください。
更新された codicon
以下の新しいアイコンがcodiconライブラリに追加されました。
folder-library
run-errors
ウォークスルー貢献の更新
ウォークスルーのステップメディアとしてテーマ設定可能なSVGの使用
ウォークスルーのステップは、media
オブジェクトにsvg
プロパティを指定できるようになりました。スケーリングサポートの向上に加え、SVGはテーマトークンへのアクセスを提供し、メディアがワークベンチの他の部分と視覚的に調和するようにできます。詳細については、ウェブビューコンテンツのテーマ設定に関するガイドを参照してください。
ウォークスルーに関心のあるファイルの宣言
ウォークスルーはオプションのfeaturedFor
パラメータをサポートするようになりました。これは、特定のウォークスルーが適用されるファイルタイプを列挙します。これらのファイルがワークスペースフォルダーで見つかった場合、ウォークスルーはより高い視覚的優先度でレンダリングされます。
タスクのデフォルトグループAPI
TaskGroup
のisDefault
プロパティが確定しました。拡張機能はタスクを取得し、そのタスクのgroup
のisDefault
プロパティを読み取って、タスクがそのグループのデフォルトであるかどうかを判断できるようになりました。
デバッガー拡張機能の作成
「DebugSessionOptions」に新しい「managedByParent」プロパティを追加
新しいフラグmanagedByParent
がDebugSessionOptions
型に追加されました。startDebugging
APIに渡されると、disconnect
やrestart
などのライフサイクルリクエストが新しく作成されたセッションに送信されるか、その親セッションに送信されるかを制御します。
デバッグアダプタープロトコルの「showUser」プロパティ
launch
リクエストが失敗した場合、VS Codeはデバッグアダプターからの応答とともに送信されたshowUser
プロパティを尊重するようになりました。showUser
プロパティが提供され、false
の場合、VS Codeはエラーを含むモーダルダイアログを表示しません。showUser
プロパティが欠落しているか、true
の場合、VS Codeは以前と同様に動作し、エラーダイアログを表示します。
その他のデバッグアダプタープロトコル(DAP)リクエストについては、変更はありません。showUser
がtrue
の場合、エラーは通知を使用して表示されます。それ以外の場合、ユーザーには何も表示されません。
VS Codeは「noDebug」デバッグセッションのブレークポイントを登録しなくなりました。
DAPのlaunch
リクエストのnoDebug
プロパティがtrue
に設定されている場合、VS Codeはブレークポイントを登録するDAPリクエスト(setBreakpoints
、setExceptionBreakpoints
、setDataBreakpoints
、setFunctionBreakpoints
、setInstructionBreakpoints
)を呼び出さなくなります。
VS CodeがDAPの「setExpression」リクエストをサポート
デバッグアダプターがsetExpression
リクエストを実装している場合(supportsSetExpression
機能がtrue
)、VS Codeは以下の2つの状況でsetExpression
を使用します。
- VARIABLESビューとWATCHビューにおいて、変数の値を変更する場合。デバッグアダプターが
setVariable
リクエストをサポートしていない(supportsSetVariable
機能がないかfalse
)場合、かつ変数がevaluateName
プロパティを持ち、編集可能である場合(VariablePresentationHint
のreadOnly
属性がtrue
ではない場合)。 - WATCHビューで、代入可能な式の値を変更する場合、監視式が編集可能である場合(
VariablePresentationHint
のreadOnly
属性がtrue
でない場合)。
DAPエラーメッセージの「launch.jsonを開く」ボタンの抑制
デバッグアダプタープロトコルでは、ErrorResponseのMessageがurl
(メッセージに関する追加情報が見つかる場所)と、ユーザーにURLを開くためのUIとして提示されるurlLabel
を返すことを許可しています。VS Codeがモーダルダイアログでユーザーにメッセージを表示する場合、urlLabel
をキャプションとするボタンが表示されます。このリリース以前は、VS Codeはlaunch.jsonを開くというキャプションのボタンも追加していました。メッセージのurl
が「command」スキーム(例:command:myExtension.fixError
)を使用している場合、このボタンは追加されなくなりました。
デバッグアダプタープロトコル
新しい「memory」イベントがリリースされました
memory
イベントが完成し、Debug Adapter Protocolのバージョン1.49および対応するnpmモジュールで利用可能になりました。デバッグアダプターがinitialize
リクエストのsupportsMemoryEvent
機能に対してtrue
の値を受け取った場合、デバッグアダプターはmemory
イベントを発行して、一部のメモリ範囲が更新されたことを示すことができます。
提案された拡張API
各マイルストーンには新しい提案された API があり、拡張機能の作成者はそれらを試すことができます。いつものように、皆様のフィードバックをお待ちしております。提案された API を試すには、次の手順を実行する必要があります。
- 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
- 拡張機能の
package.json
ファイルに次の行が必要です:"enableProposedApi": true
。 - 最新バージョンのvscode.proposed.d.tsファイルをプロジェクトのソース場所にコピーします。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
タイプ階層のサポート
シンボルのスーパークラスとサブクラスを提供するTypeHierarchyProviderのAPI提案があります。このAPIは試用可能で、問題が見つかった場合や提案がある場合は、VS Codeリポジトリに入力できます。
どこでもターミナルを作成
提案されたターミナルロケーションAPIにより、パネル内とエディター領域の両方でターミナル分割を作成できます。
ターミナルが「操作された」かどうかのクエリとイベント
Terminal.stateとwindow.onDidChangeTerminalStateの新しい提案されたAPIにより、ターミナルが「操作された」かどうかをクエリできるようになりました。操作とは、プロセスにデータが送信されたことを意味し、さまざまな理由で発生する可能性がありますが、主なものはキーボード入力です。
QuickPickItemのボタン
QuickPickItemにボタンを追加および処理するための提案されたAPIがあります。これにより、拡張機能がQuick Pickとのより豊富なユーザーインタラクションを提供できるようになることを期待しています。
ぜひお試しいただき、ご意見をお聞かせください。ただし、現時点ではQuick Pickのスクロール位置に関する既知の問題があり、この新しい提案されたAPIによってこの問題がさらに強調される可能性があることに注意してください。この問題に対処するための適切なAPIセットに取り組んでいます。ご意見がある場合は、イシューでご意見をお寄せください。
テストタグ
テストタグは、テストを整理する方法と、実行可能なテストを示す方法の両方を提供する提案されたAPIです。
エラー以外のテスト出力
テストAPIはテスト失敗メッセージをサポートしていますが、これまで特定テストケースにエラー以外の出力を関連付ける方法がありませんでした。この問題を解決するため、オプションのTestItem
とlocation
をTestRun.appendOutput
メソッドに渡す方法を検討しています。何かご意見がありましたら、イシュー #129201にフィードバックをお願いします!
インライン補完プロバイダー:オートコンプリートウィジェットとの相互作用
InlineCompletionContext
に新しいフィールドselectedCompletionInfo
が追加され、オートコンプリートウィジェットで現在選択されている候補の詳細が含まれるようになりました。また、ユーザーがオートコンプリートウィジェットで選択された項目を変更するたびに、InlineCompletionItemProvider
はインライン候補を要求されます。インライン候補が選択された候補項目を拡張する場合、その拡張は斜体で表示されます。
エンジニアリング
RHEL7およびCentos7ディストリビューションのサポートの修正
VS Codeバージョン1.53では、新しいElectronバージョンを使用するためにビルドイメージを更新したことで、ネイティブモジュールのCXXABI要件が変更され、一部のディストリビューションでrpmパッケージが破損するという問題 #115784が発生しました。Electron v13への更新により、ネイティブモジュールをランタイムと同じコンパイラツールチェーンでビルドできるようになり、特にClangを使用し、ランタイムのlibcxxを静的にリンクするようになりました。これにより、バイナリサイズが約10MBとわずかに増加するだけでCXXABI要件を回避し、これらのディストリビューションのサポートを復活させることができます。Insidersでのテストにご協力いただき、ご辛抱いただきありがとうございました。
ドキュメント
VS CodeでのJulia
新しいVS CodeでのJuliaトピックは、Julia拡張機能によるVS CodeでのJuliaプログラミング言語のサポートについて説明しています。Julia拡張機能には、コード補完、コードナビゲーション、デバッグなどの豊富な言語機能に加えて、統合されたREPLとプロットナビゲーターが含まれています。
Azure Machine Learning
VS CodeのAzure Machine Learning概要を読むと、Azure Machine Learning拡張機能がAzure Machine Learningクラウドベースの機械学習モデルをVS Codeから直接操作できるようにする方法を学ぶことができます。
注目すべき修正点
- 82489: 「AltGr」キー使用時のキーボード入力が不正
- 115945: デバッグツールバーがドッキングされている場合に、コントリビュートされたコマンドが欠落する
- 118196: デバッグセッションを再起動しても引数リストの要素が更新されない
- 121201: iPadでメニュー選択が正しくレンダリングされない
- 124128: デバッグ停止時に拡張機能開発ウィンドウが閉じない
- 125259: デバッグ開始前にlaunch.jsonが保存されない
- 126102: SkipFilesがスキップするファイルを一時的に開くため、速度が低下する
- 126911: 拡張機能デバッグ: デバッグセッションを停止してもウィンドウが閉じない
- 128484: デバッグ:起動失敗時のモーダルダイアログを無効にするオプション
- 129019: 閉じた状態で起動したツリービューは、コンテンツを表示するために別の更新(または再開)が必要
- 129469: 設定エディターの入力ボックスを大きくできる
- 129645: 設定UIでコードブロックのシンタックスハイライトを有効にする
- 129844: markdownEnumDescriptionsが設定UIでMarkdownの「`##`」を削除せず、settings.jsonでも「##」を削除しない
- 130265: Nodeデバッガーが未処理のPromise拒否で停止しない
ありがとうございます
最後に、今月 VS Code に貢献してくださった以下の皆様に、心からの感謝を申し上げます。
問題追跡への貢献者
- ジョン・マレー (@gjsjohnmurray)
- アンドリー・ディーエフ (@IllusionMH)
- コードクレイジー-ywt (@CodeCrazy-ywt)
- サンディープ・ラジャクリシュナン (@san-coding)
- アルトゥーロ・デント (@ArturoDent)
vscode
への貢献者
- @afonsomatos (Afonso Matos): シャドウDOMでドラッグ&ドロップが機能しない問題を修正 PR #131392
- @akosyakov (Anton Kosyakov): 開いているタブに別のイベントループを使用 PR #126341
- @AkatQuas (Akat)
- コメントのいくつかのタイプミスを修正、いくつかのメソッド名を変更 PR #130470
- fix(storage): fix method typo PR #131051
- @chrisyeh96 (Christopher Yeh): KaTeXマクロをレンダリング呼び出し全体で永続化 PR #129747
- @Chigusa0w0 (Chigusa0w0): トラックパッドで低速で下にスクロールするときの奇妙な動作を修正 PR #131231
- @erha19 (Dan): fix: デバッグコンソール変数出力の問題 PR #127132
- @Eskibear (Yan Zhang): タイプ階層をピーク PR #130922
- @gjsjohnmurray (ジョン・マレー)
- #126842を修正。エクスプローラーのルートフォルダのエラーインジケーターを、リフレッシュが成功したときにクリアする PR #126843
- fix #129296 シンプルなファイルダイアログをナビゲートするときに権限、クエリ、フラグメントを保持 PR #129310
- DAがコマンドを提供した場合のエラーダイアログにおける「launch.jsonを開く」コマンドの抑制 (#_124020) PR #130754
- workbench.editor.experimentalAutoLockGroupsのテキストを改善 PR #131157
- fix #131743 「行まで実行」を追加するときのみメニュー区切り線を追加 PR #131744
- @jeanp413 (ジャン・ピエール)
- リロード後の最初のターミナル分割が異常に狭い問題を修正 PR #129668
- markdownで無効なリンクをcmd+クリックして新しいファイルを作成する機能が機能しない問題を修正 PR #130815
- ノートブックUIがターミナルの上に表示される問題を修正 PR #130854
- パラメータヒントがリンクホバー色を使用すべき問題を修正 PR #130963
- サジェストの詳細がリンクホバー色を使用すべき問題を修正 PR #130966
- @jihoon-ernesto: macOSターミナルに合わせるため、cmd+. → ctrl+cのターミナルキーバインディングを追加 PR #131025
- @jsjoeio (Joe Previte): feat: asWebviewUriテストにポート名を追加 PR #131447
- @Kingwl (Wenlu Wang): インレイヒントによる折りたたみ範囲の修正 PR #130399
- @lezgomatt (Matthew Go): カスタムセレクトボックスのホバースタイルを修正 PR #129970
- @nickofolas: ステータスバーの文法問題を修正 PR #131271
- @nrayburn-tech (Nicholas Rayburn): #124276 Markdownファイルリクエストをバッチ処理 PR #124545
- @remcohaszing (Remco Haszing): window.MonacoEnvironmentを定義 PR #128949
- @sdissegna-maystreet: [#131407] ブラウザにおけるサービスワーカーのバージョンチェックを修正 PR #131408
- @spahnke (Sebastian Pahnke): [スタンドアロンエディター]
CodeActionProvider
を登録する際に、提供されるコードアクションの種類をリストアップするサポートを追加 PR #131254 - @spasche (Sylvain Pasche): ターミナルを分割する際にURIオーソリティをベースからコピー、#127811を修正 PR #130291
- @ssigwart (Stephen Sigwart): マッチする括弧の方向を選択するように更新 PR #128931
- @suzmue (Suzy Mueller): スレッドを応答順にソート PR #128686
- @threeal (Alfi Maulana): feat: .tppと.txxをc++拡張機能として追加 PR #130101
- @tony-xia (トニー・シャ)
- メソッド名を更新 PR #129224
- 変数名を更新 PR #129226
- @vagusX (vagusX): fix: vscode.FileDecoration apiの不要なpriorityフィールドを削除 PR #129501
- @xgdgsc: 無効なブレークポイントをクリックすると削除ではなく有効になる #125904 PR #125931
- @xisui-MSFT
- 逆アセンブリビューでフォーカスされたスタックフレームの色を修正 PR #129721
- 逆アセンブリビューでイベントリスナーをrenderTemplateに移動 PR #129734
- 逆アセンブリビューのアクセシビリティを改善 PR #129788
- 逆アセンブリが利用できない場合に特別なエントリを追加 PR #129797
- @yannickowow (Yanis HAMITI): [debugService #113742] デバッグセッション終了時の変数表示 PR #131016
- @yash112-lang (Yash Singhal): 垂直方向の配置を修正 PR #130327
vscode-generator-code
への貢献者
- @octref (Pine): ローカル開発のヒントを追加 PR #296
vscode-js-debug
への貢献者
- @Manish-Giri (Manish Giri): userDataDirオプションのドキュメントを更新 PR #1078
vscode-pull-request-github
への貢献者
- @joshuaobrien (ジョシュア・オブライアン)
- @RishabhKothaari (Rishab): ビューにPRのレビュー状態を通知する PR #1833
debug-adapter-protocol
への貢献者
- @robertoaloi (Roberto Aloi): Erlangアダプターを追加 PR #202
language-server-protocol
への貢献者
- @okuramasafumi (OKURA Masafumi): 最新バージョンは3.16になりました PR #1321
- @OliverKovacs (Oliver Kovacs): タイプミスを修正 PR #1332
- @vintagedave (David Millington): 言語によるアルファベット順ソートを調整 PR #1323
- @Wilfred (Wilfred Hughes): honorsChangeAnnotations説明のタイプミスを修正 PR #1322
monaco-editor
へのコントリビューション
- @SpaceComet: ウェブサイトプレイグラウンドの小さな更新 PR #2616
- @thien-do (Thien Do): ESM Integrate docにViteとの使用法を追加 PR #2632
monaco-html
への貢献
- @Pranomvignesh (Pranom Vignesh): fix(workerManager.js) : ワーカーの存在チェックを追加 PR #15
monaco-languages
への貢献
- @ladyrick (LadyRick): fix(cpp): cpp言語整数サフィックスを修正 PR #156