2021年8月 (バージョン 1.60)
アップデート 1.60.1: このアップデートでは、以下のissueに対処しています。
アップデート 1.60.2: このアップデートでは、以下のissueに対処しています。
ダウンロード: 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のUpdatesにアクセスしてください。
ライブにご参加ください。9月2日(木)午前8時(太平洋時間)、午後4時(ロンドン時間)に開催されるVS Codeチームのライブストリームで、このリリースの新機能のデモをご覧になり、ライブで質問をしてください。
Insiders: 最新機能をいち早く試してみたいですか?毎晩更新されるInsidersビルドをダウンロードして、最新のアップデートをすぐにお試しください。
ワークベンチ
自動言語検出
前回のリリースでは、タイトルなしのファイルに対して、コンテンツに基づいてファイルの言語モードを自動的に設定する実験的な機能を導入しました。自動言語検出機能は、機械学習を使用して言語を推測し、機械学習モデルは完全にローカルマシン上で実行されます。このモデルは、オープンソースのMLライブラリであるTensorflow.jsと、GitHubユーザー@yoeoによるGuesslangのMLモデルによって強化されています。
今回のリリースでは、自動言語検出をデフォルトで有効にし、ファイル拡張子がないファイルにも検出を拡張します。ノートブックでは、言語ピッカーを使用して言語検出を簡単に要求する方法を提供しています。
この機能を追加したのは、VS Codeの新規ユーザーの中には、言語モードの設定方法や、VS Codeの豊富な機能セット(言語の色分けや拡張機能の推奨事項)を利用するために言語モードが必要であることを知らない人がいることがわかったためです。新規ユーザーがVS Codeで利用可能な言語機能や拡張機能をすぐに確認できるようにすることで、エディターの立ち上げを支援します。
さらに、スクラッチパッドとしてタイトルなしのテキストエディターを使用するパワーユーザーは、言語モードを明示的に設定する必要がなくなり、ワークフローが効率化されることを期待しています。
以下は、自動言語検出によって可能になるいくつかの楽しいシナリオです。
オンラインから例をコピーして、タイトルなしのエディターに貼り付けます
テーマ: Panda Theme
"Pipe into code"言語検出(拡張子のないファイルの検出を示す)
テーマ: Panda Theme
ノートブック言語ピッカーの自動検出オプション
テーマ: Panda Theme
ターミナルエディターの確認ダイアログ
子プロセスが実行されているターミナルエディターを閉じるときに表示されるダイアログが、ターミナルエディター専用になり、「保存」する方法は提供されなくなります。
復元に失敗した場合でも、エディターを閉じずに開いたままにする
以前は、ウィンドウのリロード後またはアプリケーションの再起動後にエディターの復元に失敗した場合、エディターは正常にロードされるエディターが見つかるまで自動的に閉じられていました。この動作は、注意深く作成されたエディターレイアウトがエディターが閉じるために消えてしまうという、不満の残る結果につながりました。
今回のリリースでは、一度正常に開かれたエディターは、復元に失敗した場合でも閉じられなくなります。エディターは問題を指摘し、操作を再試行することを提案します。
設定エディターでのコードブロックの構文ハイライト
設定の説明にあるフェンス付きコードブロックが構文ハイライトされるようになりました。
設定エディターをサイドで開く
openToSide
引数を使用してキーバインドを構成することで、設定エディターをサイドグループで開くことができるようになりました。
{
"key": "cmd+,",
"command": "workbench.action.openSettings",
"args": {
"openToSide": true
}
}
これは、workbench.action.openSettingsJson
コマンドでも機能します。
エディター
高性能な括弧のペアの色分け
エディターは、ネイティブの括弧のペアの色分けをサポートするようになりました。
括弧のペアの色分けは、"editor.bracketPairColorization.enabled": true
を設定することで有効にできます。すべての色はテーマ化可能で、最大6色まで構成できます。
この機能を実装したのは、有名なBracket Pair Colorizer拡張機能(CoenraadS氏作)のパフォーマンスの問題に対処するためです。
これで、巨大なドキュメントの変更も即座に反映されるようになります。
オートコンプリートでのインラインサジェスト
インラインサジェストは、オートコンプリートウィジェットが表示されているときにサジェストプレビューを拡張できるようになりました。オートコンプリートウィジェットで選択されているサジェストがインライン補完プロバイダーによって拡張可能な場合、拡張機能は斜体で表示されます。Tab
キーを1回押すと、オートコンプリートサジェストのみが受け入れられます。Tab
キーを2回目に押すと、インラインサジェストが受け入れられます。
この機能を使用するには、サジェストプレビューを有効にする必要があります("editor.suggest.preview": true
)。
Peekビューのアップデート
Peekビューに視覚的なリフレッシュを与え、他のエディタービューとの整合性を図りました。
ターミナル
箱形描画文字とブロック要素文字のカスタムレンダリング
箱形描画文字とブロック要素文字は、GPUアクセラレーションがオンの場合(terminal.integrated.gpuAcceleration
)、フォントを使用する代わりに、ピクセルパーフェクトなカスタムグリフを使用するようになりました。これは、たとえば、ターミナルで行の高さや文字間隔を設定した場合でも、ボックスがギャップなしで描画されることを意味します。
これは、セクションの周りの箱形描画文字とチャートのブロック要素を示すターミナルアプリZenithの例です。
これは、"terminal.integrated.customGlyphs": false
を設定することで無効にできます。
特定のフォントでのアンダースコアのレンダリングを改善
ターミナルでのアンダースコアのレンダリング方法には、いくつかの過去からの問題がありましたが、そのほとんどはWebGLレンダラー(デフォルト)に切り替えることで修正されました。その例外の1つは、フォント内のアンダースコア文字が、Linux上のセルの境界よりも下に予期せず描画される場合でした。
下の行のアンダースコアがセルの下にレンダリングされている様子に注目してください。
これはほとんどの場合正常に機能しますが、キャンバスの境界外に描画されるため、最下行では失敗します。
このようなフォントを検出し、アンダースコアテクスチャをセルの境界内に収まるまで上にシフトすることで、この問題を回避するようになりました。このソリューションはキャンバスレンダラーにも適用され、以前は行のオーバーラップを避けるために行をクリップしていたため、どの行のアンダースコアも表示されませんでした。
ウィンドウのリロード後の再接続を高速化
以前は、ウィンドウをリロードすると、ターミナルのバッファーの状態を解析するのに最大300ミリ秒かかる可能性があり、破損の可能性もありました。複数のビジー状態のターミナルの場合、これはすぐに積み重なる可能性があります!これを修正するために、バッファーを復元する方法が、ptyホスト上の最近の生のターミナルイベントの多数の記録から、ptyホスト上にヘッドレスタミナルフロントエンドを維持し、すべてのデータをそこに書き込む方法に変更されました。
このアプローチにはいくつかの利点があります。
- 復元するスクロールバックの量を微調整できます。デフォルトは現在100で、速度とデータ量のバランスが取れています。スクロールバック量は、
terminal.integrated.persistentSessionScrollback
設定で変更できます。 - xterm.jsの高速パーサーのおかげで、これはCPU使用率への影響を最小限に抑え、ptyホストでの全体的なメモリ使用量を削減するはずです。
- ターミナルモードが明示的に復元されるようになり、以前は見逃されてバッファーの破損を引き起こす可能性があったものがなくなりました。
- ターミナルのバッファーは常にそのサイズと同期しているため、コストのかかるサイズ変更イベントを再生する必要はなくなりました。
- 復元は比較的迅速であるため、すべて単一フレームで処理されます。これは、貴重なCPU時間が部分的に復元されたターミナルのレンダリングに浪費され、さらに処理速度が低下することはないことを意味します。
この新しい実装がどの程度の高速化を提供するかは、ターミナルの数、ハードウェア、ターミナルバッファーサイズ、ターミナルで何が行われていたかなど、多くの要因に依存します。フルターミナルバッファーの復元の概算見積もりでは、約5〜10倍の高速化が得られるはずです。
また、新しいxterm-headlessパッケージをnpmで公開しましたので、ご自身のプロジェクトでこの作業を使用できます。
デバッグ
ウォッチビューで値を設定
ウォッチビューのコンテキストメニューの値の設定アクションを使用して、ウォッチビューで監視対象の式の値を設定できるようになりました。
値の設定を利用できるようにするには、デバッグ拡張機能をこの機能にオプトインする必要があります。今のところ、JS-debug、C#、およびC++拡張機能がこれをサポートしていますが、他のデバッグ拡張機能もすぐに続くことを期待しています。
マイナーなUIの改善
-
VS Codeは、変数ビュー、ウォッチビュー、およびデバッグホバーの値のリンクも検出するようになりました。変数の値がリンクの場合、それをクリックすることでリンクを簡単にたどることができます。
-
すでに実行中のデバッグセッションの別のインスタンスを開始すると、誤って2つのセッションを開始するのを防ぐためのモーダル確認ダイアログが表示されるようになりました。
-
エディターのブレークポイントガターで無効になっているブレークポイントをクリックすると、ブレークポイントが削除される代わりに有効になるようになりました。
-
デバッグセッションがアクティブな場合、行まで実行アクションがエディターのブレークポイントガターのコンテキストメニューで使用できるようになりました。
新しい設定
-
デバッグセッション中に誤ってウィンドウを閉じるのを避けたい場合は、新しい設定
debug.confirmOnExit
を有効にできます。これをalways
に設定すると、ウィンドウを閉じるときにデバッグセッションを停止することを確認するように求められます。 -
新しい設定
debug.console.acceptSuggestionOnEnter
は、デバッグコンソールでEnter
キーを押したときにサジェストを受け入れるかどうかを制御します。Enter
キーは、デバッグコンソールに入力されたものを評価するためにも使用されるため、このオプションにより、Enter
キーを押したときに何が起こるかをより細かく制御できるようになります。
JavaScriptデバッグ
レガシーノードデバッガーは廃止
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
起動タイプを使用できます。
async関数とNode.js内部でのステップ実行を改善
デバッガーのskipFilesを設定して、Node.jsの内部など、特定のコードへのステップインを回避できます。Node.jsの内部は、async関数をステップ実行するときによくヒットする可能性があります。
ただし、Node.jsは「ブラックボックス化」されたスクリプトを処理する場合、常に正しい動作を示すとは限らないため、今回のイテレーションでは、デバッガーに「合成ブラックボックス化」を導入しました。これにより、特にasync関数をステップ実行する場合に、Node.jsプログラムを操作する際の信頼性が大幅に向上するはずです。
次回のリリースでは、デバッガーがデフォルトでNode.jsの内部をスキップするようにする予定です。
インストーラー
サポートされているファイルタイプに対してVS Codeをデフォルトで登録
Windows 11では、メニューの先頭にプログラムから開くを配置し、開くとグループ化した新しいファイルエクスプローラーのコンテキストメニューが導入されています。このアップデートにより、利用可能なすべてのエディターを簡単に見つけて、デフォルトを変更できるようになります。
新しいベストプラクティスに従って、VS Codeのチェックボックス関連付けられたファイルタイプの編集にVS Codeを登録するが、Windowsインストール中にデフォルトでオンになるようになりました。また、関連付けられたファイルタイプのリストを見直し、頻繁に開かれるファイルタイプをさらに含めるように拡張しました。
Windows 11上のMicrosoft Store
今後のWindows 11では、新しいMicrosoft Storeがより従来のアプリケーションタイプとインストーラーをサポートできるようになります。Windows Insidersプログラムを通じてWindows 11をすでにテストしている場合は、ストアで検索することで、最新リリースの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倍以上のサイズです!これは転送する余分なバイト数が多く、受信者はその文字列をJSONとして解析してUint8Array
に変換する必要があります。この解析は、サイズが数十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))からファジー検索結果を除外する機能を追加しました。検索文字列を引用符で囲むことで除外できます。
これが役立つシナリオ
クエリが数文字しかない場合
結果の「乱雑さ」を軽減したい場合
この引用符の使用感は気に入っており、ほとんどの検索エンジンが同様のメカニズムを使用しているため直感的ですが、フィードバックをお待ちしております。issue #131431で議論されている他のアプローチも検討しています。
拡張機能への貢献
Jupyter
行ごとに実行
VS Codeは、Jupyterノートブックで行ごとに実行機能をサポートするようになりました。これは、セルのコードを1行ずつ実行できるシンプルなデバッグモードです。試してみるには、選択したカーネルとしてipykernel
v6以降がインストールされていることを確認し、行ごとに実行ボタンを選択します。
デバッグ
VS Codeのフルデバッグ機能を使用したJupyterノートブックのデバッグの実験的なサポートもあります。試してみるには、選択したカーネルとしてipykernel
v6以降がインストールされていることを確認し、"jupyter.experimental.debugging": true
を設定し、ブレークポイントを設定して、セルのデバッグコマンドを選択します。
Jupyterキーマップ
Jupyterクラシックキーバインドを個別のJupyter Keymap拡張機能に抽出しました。別のノートブックキーバインドセットをMarketplaceから使用する場合は、この拡張機能を無効にできます。
Python
刷新されたテストインターフェース
新しいテストAPIのおかげで、Python拡張機能はテスト機能を刷新しました。テストの検出、ナビゲーション、ステータスレンダリングのより安定したエクスペリエンスに加えて、テストの検索、テストの選択の実行、最後に実行されたテストの再実行などの新機能をお楽しみください!
エディターからターミナルでPythonファイルを実行およびデバッグ
Python拡張機能を使用すると、エディターから直接ターミナルでPythonファイルを実行およびデバッグできるようになりました。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues拡張機能で、すべてのコメントを展開および折りたたむ機能が要望に応えて利用可能になりました。すべてのコメントは、GitHub Pull Requests: すべてのコメントを展開およびGitHub Pull Requests: すべてのコメントを折りたたむコマンドを使用して展開および折りたたむことができます。展開/折りたたみ状態を制御する設定githubPullRequests.commentExpandState
もあります。最後に、コメントUI内からすべてのコメントを折りたたむこともできます。
すべての新機能とアップデートの詳細については、拡張機能の0.30.0の変更ログをご覧ください。
拡張機能の作成
Web拡張機能
VS Code がブラウザーで実行されている場合、拡張機能はブラウザーでも実行されている拡張機能ホストにロードされます。「Web 拡張機能ホスト」はブラウザーによって制約され、拡張機能はローカルファイルシステムやプラットフォーム機能にアクセスできません。拡張機能の作成者が Web 用 VS Code での実行をサポートするように拡張機能を更新するのを支援するために、Web 拡張機能の作成ガイドが用意されました。ここでは、Web で最適な拡張機能のタイプ、VS Code API へのアクセス方法、および仮想ファイルシステムの操作方法について学習します。
Web 拡張機能ガイドに加えて、yo code
拡張機能ジェネレーターに、Web 拡張機能を生成するオプションが追加され、コマンドラインから Web 拡張機能をテストするための @vscode/test-web
モジュールのサポートも含まれています。
Visual Studio Code for the Web をまだご覧になっていない場合は、GitHub リポジトリの <> Code タブで '.'
(ピリオドキー) を押すと、Web ベースの VS Code が起動し、ソースコードを閲覧および編集できます。
コマンドの短いタイトル
commands contribution point を使用すると、拡張機能は、タイトル、カテゴリ、アイコンなどのコマンドの UI プロパティを定義できます。一方、メニューはコマンドを表示する「場所」であり、メニューはコマンドの UI プロパティの一部または全部を表示する場合があります。たとえば、アイコンのみを表示するメニューもあれば、タイトルまたはカテゴリとタイトルを表示するメニューもあります。拡張機能の作成者として、グローバルメニューとローカルメニューの両方で適切に機能するコマンドタイトルを考えるのは難しい場合があります。たとえば、コマンドパレットはコンテキストメニューよりも多くの単語を表示できます。
異なるタイトルを許可するために、新しい shortTitle
プロパティが追加されました。これにより、コマンドは、UI に応じて適切に機能する短いタイトルを提供できます。たとえば、コマンドパレットでは Notebook: Clear All Cell Output、ノートブックツールバーでは短い Clear All などです。
環境名前空間にアプリケーションホストを追加
.env
名前空間に、アプリケーションホスト appHost
プロパティが含まれるようになりました。appHost
を使用すると、拡張機能の開発者は VS Code がホストされている環境を特定できます。例としては、desktop、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) 用に個別の拡張機能バージョンを作成できるようにする、プラットフォーム固有の拡張機能の開発を進めてきました。この機能に関して Marketplace チームと協力しており、ソリューションを最終決定しました。今月のマイルストーンでは、実装を開始し、間もなく拡張機能の作成者に提供する予定です。更新情報やフィードバックを提供するには、issue #23251 をフォローしてください。
更新された codicon
次の新しいアイコンが codicon ライブラリに追加されました。
folder-library
run-errors
ウォークスルーのコントリビューションの更新
テーマ対応 SVG をウォークスルーのステップメディアとして使用
ウォークスルーのステップで、media
オブジェクトに svg
プロパティを指定できるようになりました。SVG は、スケーリングのサポートが向上するだけでなく、テーマトークンへのアクセスも提供するため、メディアをワークベンチの他の部分に視覚的に合わせることができます。詳細については、webview コンテンツのテーマ設定に関するガイドを参照してください。
ウォークスルーの対象ファイルの宣言
ウォークスルーは、オプションの featuredFor
パラメーターをサポートするようになりました。このパラメーターは、特定のウォークスルーが適用されるファイルタイプをリストアップします。これらのファイルがワークスペースフォルダーで見つかった場合、ウォークスルーはより高い視覚的優先度でレンダリングされます。
タスクのデフォルトグループ API
TaskGroup
の isDefault
プロパティが最終決定されました。拡張機能は、タスクを取得し、タスクの group
の isDefault
プロパティを読み取って、タスクがそのグループのデフォルトであるかどうかを判断できるようになりました。
デバッガー拡張機能の作成
「DebugSessionOptions」の新しい「managedByParent」プロパティ
新しいフラグ managedByParent
が DebugSessionOptions
タイプに追加されました。startDebugging
API に渡されると、disconnect
や restart
などのライフサイクルリクエストを、新しく作成されたセッションと親セッションのどちらに送信するかを制御します。
Debug Adapter Protocol の「showUser」プロパティ
launch
リクエストが失敗した場合、VS Code はデバッグアダプターからのレスポンスと共に送信された showUser
プロパティを尊重するようになりました。showUser
プロパティが提供され、false の場合、VS Code はエラーを示すモーダルダイアログを表示しません。showUser
プロパティがない場合、または true
の場合、VS Code は以前と同じように動作し、エラーダイアログを表示します。
他の Debug Adapter Protocol (DAP) リクエストについては、変更はありません。showUser
が true
の場合、エラーは通知を使用して表示されます。それ以外の場合、ユーザーには何も表示されません。
VS Code は、「noDebug」デバッグセッションのブレークポイントを登録しなくなりました
DAP の launch
リクエストの noDebug
プロパティが true
に設定されている場合、VS Code はブレークポイント登録 DAP リクエスト (setBreakpoints
、setExceptionBreakpoints
、setDataBreakpoints
、setFunctionBreakpoints
、setInstructionBreakpoints
) を呼び出さなくなります。
VS Code は DAP の「setExpression」リクエストをサポートするようになりました
デバッグアダプターが setExpression
リクエストを実装している場合 (supportsSetExpression
capability が true
の場合)、VS Code は setExpression
を 2 つの状況で使用します。
- デバッグアダプターが
setVariable
リクエスト (supportsSetVariable
capability がないかfalse
) をサポートしておらず、変数がevaluateName
プロパティを持ち、編集可能 (VariablePresentationHint
のreadOnly
属性がtrue
ではない) な場合、VARIABLES ビューと WATCH ビューで変数の値を変更する場合。 - WATCH ビューで、ウォッチ式が編集可能 (
VariablePresentationHint
のreadOnly
属性がtrue
ではない) な場合、割り当て可能な式の値を変更する場合。
DAP エラーメッセージの「launch.json を開く」ボタンの抑制
Debug Adapter Protocol では、Message of an ErrorResponse が url
を返すことを許可しています。url
にはメッセージに関する追加情報があり、urlLabel
はユーザーに URL を開くための UI として表示されます。VS Code がモーダルダイアログでユーザーにメッセージを表示すると、urlLabel
でキャプションが付けられたボタンが表示されます。このリリースより前は、VS Code は launch.json を開く というキャプションのボタンも追加していました。メッセージの url
が 'command' スキーム (例: command:myExtension.fixError
) を使用している場合、そのボタンは追加されなくなりました。
Debug Adapter Protocol
新しい「memory」イベントがリリースされました
memory
イベントが完了し、Debug Adapter Protocol のバージョン 1.49 および対応する npm モジュールで利用できるようになりました。デバッグアダプターが initialize
リクエストの supportsMemoryEvent
capability に値 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 を使用すると、ターミナルが「操作された」かどうかをクエリできます。操作とは、データがプロセスに送信されたことを意味し、さまざまな理由で発生する可能性があります。主な理由はキーボード入力です。
QuickPickItems のボタン
QuickPickItem にボタンを追加および処理するための提案された API があります。これにより、拡張機能が Quick Pick でより豊富なユーザーインタラクションを提供できるようになることを期待しています。
ぜひ試してみて、ご意見をお聞かせください。注意すべき点の 1 つは、Quick Pick の スクロール位置に関する既知の問題が現在あり、この新しい提案された API によって増幅されると考えています。この問題に対処するための適切な API セットに取り組んでいます。ご意見をお聞かせください。issue で議論に参加してください。
テストタグ
テストタグ は、テストを整理する方法と、どのテストが実行可能かを示す方法の両方を提供する提案された API です。
エラー以外のテスト出力
テスト API はテスト失敗メッセージをサポートしていますが、以前は特定のテストケースにエラー以外の出力を関連付ける方法がありませんでした。これを実現する方法を評価しています。オプションの TestItem
と location
を TestRun.appendOutput
メソッドに渡すことで実現します。ご意見がありましたら、issue #129201 にフィードバックをお寄せください。
インライン補完プロバイダー: オートコンプリートウィジェットとのインタラクション
InlineCompletionContext
には、オートコンプリートウィジェットで現在選択されている候補の詳細を含む新しいフィールド selectedCompletionInfo
があります。また、ユーザーがオートコンプリートウィジェットで選択した項目を変更すると、InlineCompletionItemProvider
にインライン候補が要求されます。インライン候補が選択した候補項目を拡張する場合、拡張機能はイタリック体で表示されます。
エンジニアリング
RHEL7 および Centos7 ディストリビューションのサポートを修正
VS Code バージョン 1.53 では、ビルドイメージを更新して新しい Electron バージョンを使用するようにしました。これにより、一部のディストリビューションで rpm パッケージを破損させるネイティブモジュールの CXXABI 要件が変更されました issue #115784。Electron v13 への更新により、ランタイムと同じコンパイラツールチェーンを使用してネイティブモジュールをビルドできるようになりました。具体的には、Clang を使用し、ランタイムから libcxx を静的にリンクするようになりました。これにより、バイナリサイズがわずか約 10 MB 増加するだけで 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: デバッグセッションを再起動しても、args-list の要素が更新されない
- 121201: iPad でのメニュー選択が正しくレンダリングされない
- 124128: デバッグが停止しても、拡張機能開発ウィンドウが閉じられない
- 125259: デバッグが開始前に launch.json を保存しない
- 126102: SkipFiles は一時的にスキップするファイルを開き、速度低下を引き起こす
- 126911: 拡張機能のデバッグ: デバッグセッションを停止してもウィンドウが閉じられない
- 128484: デバッグ: 起動失敗時にモーダルダイアログを無効にするオプション
- 129019: 閉じた状態で開始されたツリービューは、コンテンツを表示するために別の更新 (または再オープン) が必要
- 129469: 設定エディターの入力ボックスを大きくすることができる
- 129645: 設定 UI でのコードブロック構文のハイライトを有効にする
- 129844: markdownEnumDescriptions が設定 UI で markdown <backtick>##<backtick> を削除せず、settings.json で ## を削除しない
- 130265: Node デバッガーが未処理の Promise rejection でブレークしない
謝辞
最後になりましたが、今月 VS Code に貢献してくださった以下の皆様に、心から感謝申し上げます。
Issue 追跡への貢献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- CodeCrazy-ywt (@CodeCrazy-ywt)
- Sandeep Rajakrishnan (@san-coding)
- ArturoDent (@ArturoDent)
vscode
への貢献
- @afonsomatos (Afonso Matos): Shadow Dom でドラッグ & ドロップが機能しない問題を修正 PR #131392
- @akosyakov (Anton Kosyakov): 開いているタブに個別のイベントループを使用 PR #126341
- @AkatQuas (Akat)
- コメントのタイプミスを修正、いくつかのメソッドの名前を変更 PR #130470
- fix(storage): メソッドのタイプミスを修正 PR #131051
- @chrisyeh96 (Christopher Yeh): KaTeX マクロをレンダー呼び出し間で永続化 PR #129747
- @Chigusa0w0 (Chigusa0w0): トラックパッドで低速で下にスクロールするときの奇妙な動作を修正 PR #131231
- @erha19 (Dan): fix: デバッグコンソールの変数出力の問題 PR #127132
- @Eskibear (Yan Zhang): 型階層のピーク PR #130922
- @gjsjohnmurray (John Murray)
- #126842 を修正。更新が成功した場合にエクスプローラーのルートフォルダーのエラーインジケーターをクリア PR #126843
- #129296 を修正。シンプルなファイルダイアログをナビゲートするときに、権限、クエリ、フラグメントを保持 PR #129310
- DA がコマンド (#_124020) を提供した場合、エラーダイアログの「launch.json を開く」コマンドを抑制 PR #130754
- workbench.editor.experimentalAutoLockGroups テキストを改善 PR #131157
- #131743 を修正。「Run to Line」を追加するときのみメニューセパレーターを追加 PR #131744
- @jeanp413 (Jean Pierre)
- リロード後の最初のターミナルの分割が非常に狭くなる場合がある問題を修正 PR #129668
- 無効なリンクを cmd+クリックして新しいファイルを作成すると、Markdown で機能しない問題を修正 PR #130815
- ノートブック UI がターミナル上に表示される問題を修正 PR #130854
- パラメーターヒントがリンクホバー色を使用する必要がある問題を修正 PR #130963
- 候補の詳細がリンクホバー色を使用する必要がある問題を修正 PR #130966
- @jihoon-ernesto: cmd+. → ctrl+c のターミナルキーバインドを追加して macOS Terminal に合わせる 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 (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 (Joshua O'Brien)
- @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): Vite での使用方法を ESM Integrate ドキュメントに追加 PR #2632
monaco-html
への貢献
- @Pranomvignesh (Pranom Vignesh): fix(workerManager.js) : ワーカーの存在チェックを追加 PR #15
monaco-languages
への貢献
- @ladyrick (LadyRick): fix(cpp): cpp 言語の整数サフィックスを修正 PR #156