VS Codeのエージェントモードを拡張するには、を試してください!

2024年3月 (バージョン 1.88)

バージョン1.88.1へのアップデート:このアップデートは、これらの課題に対応しています。

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel シリコン | Linux: deb rpm tarball Arm snap


Visual Studio Codeの2024年3月リリースへようこそ。このバージョンには、気に入っていただけるであろう多くのアップデートが含まれており、主なハイライトをいくつかご紹介します。

これらのリリースノートをオンラインで読む場合は、code.visualstudio.com更新 にアクセスしてください。Insiders: 新しい機能をいち早く試したいですか?夜間ビルドの Insiders をダウンロードして、利用可能になり次第、最新のアップデートを試すことができます。

アクセシビリティ

音声録音のサウンド

音声録音の新しいアクセシビリティ信号サウンドを追加しました

  • 音声録音開始 - accessibility.signals.voiceRecordingStarted 設定で構成されます
  • 音声録音終了 - accessibility.signals.voiceRecordingStopped 設定で構成されます

diff エディターのアクセシビリティの改善

スクリーンリーダーを使用している場合、diff エディターがアクティブなエディターになると通知されるようになりました。この動作は accessibility.verbosity.diffEditorActive 設定で無効にできます。

また、キーボードユーザーに便利なコマンドである Diff エディター: サイドを切り替える に関する情報を、アクセシビリティヘルプダイアログ に追加しました。

アクセシビリティ信号 は、diff エディターの両側で機能するようになりました。以前は、変更された側でのみ利用可能でした。

アクセシブルビューのチャットコードブロックコマンド

アクセシブルビューでチャット応答を検査する際に、チャットビューで利用可能なコードブロックコマンドとキーバインディングを使用できるようになりました。

これには、チャット: カーソルに挿入チャット: ターミナルに挿入、および チャット: 新しいファイルに挿入 が含まれます。

ノートブックセルのARIAラベルの更新

ノートブックセルのARIAラベルが更新され、セルが現在実行中または実行保留中であるかを示すようになりました。

ワークベンチ

フローティングウィンドウでのカスタムエディターサポート

エディターをフローティングウィンドウで開くサポートをカスタムエディターに拡張し、一般的にwebview APIを使用するすべてのエディターに対応しました。これには、Markdownプレビュー、ブラウザプレビュー、およびhexエディターなどの複雑なカスタムエディターが含まれます。

注意: 技術的な制限により、webviewベースのエディターをウィンドウ間で移動するには、そのエディターの内容を再ロードする必要があります。以前に蓄積した状態を復元するかどうかは、エディターに委ねられています。場合によっては、初めてエディターを開いたときのように、状態がリセットされることがあります。

開いているエディターのカスタムラベル

エディタータブと開いているエディタービューの表示ラベルをカスタマイズできるようになりました。この機能は、同じファイル名を持つファイルのエディターを区別するのに役立ちます。

workbench.editor.customLabels.patterns 設定の下にエントリを追加することで、これらのラベルを好みに合わせて調整できます。各エントリには、ファイルパスに一致するグロブパターンと、エディタータブの新しい名前を定義するテンプレートを含める必要があります。このカスタマイズは、ファイルのパスが指定されたパターンに一致する場合にのみ適用されます。パターンが一致するかどうかは、相対パスパターンとして定義されているか絶対パスパターンとして定義されているかによって異なります。

テンプレートには、${filename}${extname}${dirname}、および ${dirname(N)} などの変数を組み込むことができ、これらはファイルのパスの値に動的に置き換えられます。

これらのカスタムラベルを有効または無効にするには、workbench.editor.customLabels.enabled 設定を使用します。これにより、カスタムパターンを削除することなく、いつでも元のエディター名に切り替えることができます。

スクロールロック

表示: エディター間のスクロールロックを切り替える」コマンドを使用すると、すべての表示されているエディター間でスクロールを同期できるようになりました。これにより、1つのエディターでスクロールすると、他のすべてのエディターが同じ量だけスクロールし、すべてが揃った状態を維持できます。この機能は、ファイルを並べて比較する必要がある場合に役立ちます。

スクロールロックの有効化と無効化をより詳細に制御したい場合は、特定のキーバインディングを押し続けているときにのみスクロール同期を有効にすることを選択できます。workbench.action.holdLockedScrolling コマンドのキーボードショートカットを設定すると、必要なときにいつでもエディター間のスクロールを一時的にロックできます。

アクティビティバーを下部に配置

以前、アクティビティバーをサイドバーの上部に移動するオプションを導入しました。今回は、アクティビティバーを下部に移動することも可能になりました。これを行うには、workbench.activityBar.location 設定を bottom に変更します。

アクティビティバーを上部に配置した場合の見た目と操作性も改善し、インターフェースの残りの部分と自然に調和するようにしました。

Three screenshots, showing the different Activity Bar positions: on the left side, at the top, and at the bottom

検索エディターのシングルクリック動作

search.searchEditor.singleClickBehaviour 設定を構成して、検索エディターのエントリをシングルクリックしたときに何が起こるかを決定できるようになりました。現在、この設定は Peek Definition を開くことのみをサポートしています。

クイック検索の改善

固定ファイルパス

クイック検索では、ファイル名区切り文字が固定され、検索結果がどのファイルに関連付けられているかがより明確になりました。これは、ファイル内に検索語句が多数出現する場合に役立ちます。

ファイルパス区切りボタン

特定のファイルのファイル結果にカーソルを合わせるか、結果まで矢印キーで移動すると、ファイルパス区切り文字にもボタン(たとえば、ファイルを開くボタン)が表示されるようになりました。

クイックピック区切り文字ナビゲーションのキーバインディング

クイックピック内で区切り文字間を移動できるようにすると便利だというフィードバックをいただきました。このイテレーションでは、まさにそのためのキーバインディングを追加しました。WindowsとLinuxではAlt+Up/Downを、macOSではCmd+Up/Downを使用できます。この例のビデオでは、アクティブな項目が次のように移動する様子を見ることができます。

  • コマンドパレットの最近使用した項目その他のコマンドの区切り文字間
  • クイック検索のファイルパス区切り文字間

クイックピックの無効なチェックボックス項目

このイテレーションでは、クイックピックに無効な項目が表示される場合がより明確になりました。この例は、「信頼済み拡張機能の管理」クイックピックで見つけることができます。これは、ログインしているアカウントのいずれかからアクセスできます。

The Manage Trusted Extensions quick pick with some items disabled

拡張機能の更新の改善

拡張機能を再起動する

拡張機能が更新された際、ウィンドウを再読み込みする代わりに拡張機能を再起動できるようになりました。

Restart extensions instead of reloading the window

注: WSL、SSH、Dev Containerなどのリモートサーバーに接続している場合、拡張機能を更新するには引き続きウィンドウを再読み込みする必要があります。

VS Codeの更新とともに拡張機能を更新する

拡張機能の自動更新が有効になっている場合、VS Codeは、アップデートが利用可能な新しいバージョンのVS Codeと互換性のある拡張機能を更新するようになりました。新しいバージョンの拡張機能が現在のバージョンのVS Codeと互換性がない場合、新しいバージョンの拡張機能はVS Codeを更新した後にのみ有効になります。

コメント返信へジャンプ

コメントビューのコメントスレッドのコンテキストメニューに、コメントスレッドが返信を許可する場合に「返信」アクションが含まれるようになりました。これにより、返信入力ボックスにすばやくジャンプして返信を入力できます。

Comments view context menu with a Reply action

エディター

ミニマップのセクションヘッダー

ミニマップが、TypeScript の //#regionMARK: を使用するコメントなど、折りたたみマーカーで定義されたセクションを認識し、レンダリングするようになりました。これにより、大きなファイルをすばやくスキャンして移動できます。

Screenshot that shows folding marker regions defined in the editor in the minimap

リファクタリングプレビューのキーバインディング

「シンボルの名前変更」リファクタリング(F2)の編集プレビューのキーバインディングを、コードアクションなどの他のコンテキストでのリファクタリングのプレビューと一貫性を保つように更新しました。編集は⌘Enter(Windows、LinuxではCtrl+Enter(以前はShift + Enter)でプレビューできるようになりました。

コードアクションにカーソルを合わせると、⌘Enter (Windows、Linux Ctrl+Enter) でワークベンチにリファクタリングプレビューパネルも開きます。

Diff エディターのステージ/元に戻す選択ボタン

diff エディターに、ステージ元に戻す コントロール用の別個のガターが追加されました。これらのアクションにより、変更されたコードブロックをステージしたり、元に戻したりできます。

変更の一部をテキスト選択した場合、これらのボタンを使用すると、選択した変更(選択範囲内のすべての変更された文字)をステージまたは元に戻すことができます。

Video that shows the gutter buttons in the diff editor to stage or revert changes

diffEditor.renderGutterMenufalseに設定することで、diffエディターのガターを非表示にすることができます。

名前変更候補の動作

名前変更候補の使用フローがクイックピックのフローと一致するように改善されました。リストから名前変更候補を選択すると、入力値がそれに応じて更新され、候補をさらに変更できるようになります。

Video of the Rename control that updates the input with the focused rename suggestion

ソース管理

着信変更のファイルデコレーション

リモートからの変更をマージ/リベースする際の潜在的な競合を回避するために、着信変更があり、フェッチされたもののまだマージ/リベースされていないすべてのファイルにファイルデコレーションを表示するようになりました。この機能を利用するには、git.autofetchgit.decorations.enabledの両方の設定を有効にする必要があります。

Source Control incoming changes file decorators in the explorer view and in the editor tabs

テーマ: GitHub Sharp (vscode.devでプレビュー)

ターミナル

デバッグターミナルでのシェル統合

ユーザーと拡張機能に強化された機能を提供するために、デバッグ時に起動されるターミナルでシェル統合が自動的に有効になりました。

最近のコマンドの実行の改善

シェル統合を利用した最近のコマンドを実行⌃⌥R(Windows、LinuxはCtrl+Alt+R)は、可能な場合はコマンドが最後に実行された場所にスクロールして表示するようになりました。コマンドを実行するかクイックピックをキャンセルすると、ターミナルは以前の状態に戻ります。

テーマ: Sapphire (vscode.devでプレビュー)

検出されたリンクを開くコマンド(⇧⌘G(Windows、LinuxではCtrl+Shift+G)は、エディターでリンク結果をプレビューし、ターミナルでリンク元をハイライトするようになりました。

さらに、重複するリンクはリストからフィルタリングされ、すべてのリンクは一貫した形式で表示されるようになりました。

When 3 yarn.lock links are printed with the same line and column numbers, they will all be merged into a single detected link

ワードリンクterminal.integrated.wordSeparators設定で定義されており、ファイル/フォルダー/URIが見つからない場合のフォールバックとして機能します。有効化されると、これらのリンクには、検索時に行と列の情報を追加するための周囲の追加コンテキストが含まれるようになりました。

スクリーンショットでは、terminalLinkParsingリンクが選択されていますが、結果の検索にはリンクに続く行番号も含まれていることに注目してください。

Activating a "terminalLinkParsing" link when followed by "line 24" will include the 24 line number in the search

以下のリンク形式は、パスにスペースが含まれていても、ターミナルで検出されるようになりました。

  •  ファイル  パス:行:列

ターミナルのスティッキースクロール透明度対応

ターミナルのスティッキースクロールが透明度をサポートするようになりました。テーマはterminalStickyScroll.backgroundテーマカラーを透明な値に設定するか、settings.jsonでオーバーライドを指定することでこれを使用できます。たとえば、

{
  "workbench.colorCustomizations": {
    "[Default Dark Modern]": {
      "terminalStickyScroll.background": "#181818c0"
    }
  }
}

これにより、スティッキースクロールの背景が透明になり、背後のテキストが透けて見えるようになります。

The Sticky Scroll background can now be transparent, allowing the text behind to shine through

テスト

テストカバレッジ

このイテレーションでは、テストカバレッジAPIが完成し、VS Codeでネイティブなカバレッジサポートが提供されました。テストシステムがサポートしている場合、新しいカバレッジ付きで実行ボタンを使用してカバレッジを取得できます。

Screenshot showing the Run With Coverage button in the Test explorer view

カバレッジ付きで実行するための新しいキーバインディングも同様に追加されています。例えば、すべてのテストをカバレッジ付きで実行するCtrl+; Ctrl+Shift+Aや、最後のテストセットをカバレッジ付きで実行するCtrl+; Ctrl+Shift+Lなどがあります。

カバレッジ情報は、デフォルトでは行番号に重ねて表示されますが、インラインカバレッジの切り替えでソースファイルの完全な詳細情報を表示できます。

Screenshot showing the Test Coverage view in the Test Explorer view and color overlays in the editor

テーマ: Codesong (vscode.devでプレビュー)

テストカバレッジを使用するには、拡張機能が新しいAPIを実装している必要があります。Test Runner for Javanode:test runner など、一部の拡張機能はすでにサポートしています。Java のテストカバレッジの詳細については、チームの 12月1月 の更新を参照してください。

拡張機能の作成者は、テストAPIドキュメントでテストカバレッジAPIの詳細を確認できます。

テストメッセージでの色コードのサポート

生の「印刷できない」データコードを表示する代わりに、テストが失敗したときに表示されるようなテキストテストメッセージを色付けするために、ターミナルの色コードを解析するようになりました。

言語

TypeScript 5.4

VS CodeにはTypeScript 5.4が組み込まれました。このメジャーアップデートでは、型チェックとIntelliSenseの新しい改善、およびいくつかのバグ修正が含まれています。詳細については、TypeScript 5.4リリースブログ記事を参照してください。

Markdownファイルに画像やファイルをドラッグ&ドロップまたは貼り付けると、VS Codeは自動的にMarkdownの画像またはリンク構文を挿入します。Markdown構文をサポートしないコードブロックなどのコンテキストに挿入する場合は、この動作をスマートに無効にするようになりました。

ドロップ/ペーストウィジェットを使用することで、Markdown構文の挿入にいつでも戻すことができます。markdown.editor.drop.enabledおよびmarkdown.editor.filePaste.enabled設定を使用して、この動作を構成できます。

ノートブック

ノートブック出力でのキーボードショートカット

ノートブック出力でいくつかの標準的なキーボードショートカットをサポートするようになりました。

  • 出力は、それぞれCtrl+ACtrl+Cのキーバインディングでキーボードで選択およびコピーできます。
  • スクロール可能な出力は、それぞれのキーバインディングでキーボードでスクロールできます。
  • スクロール可能な出力の先頭と末尾へのスクロールは、それぞれCtrl+HomeCtrl+Endのキーバインディング(macOSではCmd+UpCmd+Down)でキーボードで実行できます。
  • 現在の選択ポイントから出力の先頭または末尾まで出力選択は、それぞれCtrl+Shift+UpCtrl+Shift+Endのキーバインディング(macOSではShift+Cmd+UpShift+Cmd+Down)でキーボードで実行できます。

セルエラー診断

拡張機能が失敗したセルのエラー詳細を提供できるようになり、セル内にエラー診断が表示されます。セルコンテナにフォーカスがある状態で、notebook.cell.openFailureActions (⌘. (Windows, Linux Ctrl+.)) はそのエラーのクイックアクションメニューにジャンプします。診断は、クイックアクションを提供する言語モデルが利用可能な場合にのみ表示されます。

セクション内のセルを実行

ノートブックで関連するセルをより簡単に実行できるように、Markdownセクションヘッダーでグループ化されたセルを「セクション内のセルを実行」アクションで実行できるようになりました。このアクションは、ノートブックのアウトラインビューとスティッキースクロール要素で利用できます。

スティッキースクロール要素内では、選択したヘッダーを右クリックし、コンテキストメニューのアクションからセクションを実行します。アウトラインビュー内では、ホバーまたは選択時に表示されるツールバーアイコンを選択し、表示されたアクションから単一のセルまたはセルのセクションを実行します。

アウトラインビューでのフィルターサポート

ノートブックのアウトラインビューでフィルターが利用できるようになり、Markdownヘッダー、コードセル、コードセルシンボルの含めるかどうかを制御できます。フィルターは以下の設定に対応しています。

  • notebook.outline.showMarkdownHeadersOnly
  • notebook.outline.showCodeCells
  • notebook.outline.showCodeCellSymbols

インタラクティブウィンドウ終了時の保存プロンプト

interactiveWindow.promptToSaveOnClose設定を有効にすると、インタラクティブウィンドウを閉じる際にコンテンツの保存を促され、作業内容が失われるのを防ぎます。現在サポートされているファイル形式は.ipynbのみです。

リモート開発

Remote Development 拡張機能を使用すると、Dev Container、SSH経由のリモートマシンまたはRemote Tunnels、あるいはWindows Subsystem for Linux (WSL)をフル機能の開発環境として使用できます。

主なハイライトは次のとおりです。

  • 拡張サポート付きディストリビューション用の代替サーバーダウンロード
  • URIクエリ文字列に基づくポート転送
  • Dev Containers拡張機能によるDockerの自動起動
  • グループポリシーによるDev Tunnelsとポート転送へのアクセス制限

これらの機能の詳細については、Remote Development リリースノートをご覧ください。

拡張機能への貢献

VS Code Speech

遅延起動

VS Code Speech拡張機能は、VS Codeで音声テキスト変換サービスが要求された場合にのみアクティブ化されるようになりました。これにより、拡張機能が拡張機能ホストの起動時間に悪影響を与えないことが保証されます。

表示言語をデフォルトの音声言語として使用

デフォルトでは、VS Code音声拡張機能は、VS Codeの表示言語を音声言語として使用し、その言語がサポートされている場合は対応するモデルを選択するようになりました。

accessibility.voice.speechLanguage設定では、autoが新しいデフォルト値です。

GitHub Copilot

インラインチャットの改善

インラインチャットがフローティングコントロールとして起動するようになり、より軽量になりました。最初の要求の後、コントロールは展開してより多くのスペースを占めるようになります。また、チャットビューやクイックチャットなどの他のチャットエクスペリエンスとの一貫性を高めるために、レンダリングを調整しました。

エディターテキストの上にフローティングするコンテンツウィジェットとしてのインラインチャット テーマ: GitHub Light Colorblind (Beta)

再実行とフィードバックのコントロールを再配置し、差分表示の切り替えコントロールを「承認」と「破棄」ボタンの横でより目立つようにしました。

Copilotインラインチャットのスクリーンショット。再配置されたコントロールが表示されています。 テーマ: GitHub Light Colorblind (Beta)

コンテキストとしてのノートブックカーネル状態

ノートブックにいる場合、カーネルの状態(変数や利用可能なパッケージなど)がインラインチャットのコンテキストとして自動的に含まれるようになりました。これにより、Copilotはノートブックの現在の状態を使用して、より関連性の高い補完を提供できるようになります。

テーマ: GitHub Dark

コミットメッセージ生成の改善

生成されるコミットメッセージの品質を向上させるため、リポジトリの直近10件のコミットメッセージと、現在のユーザーの直近10件のコミットメッセージも追加のコンテキストとして含めるようになりました。

ワークスペース作成の改善

@workspace /new コマンドは、チャットプロンプトに適した一致が検出された場合、GitHubリポジトリから厳選されたサンプルプロジェクトを提案として提供するようになりました。

Chat view with @workspace /new that provides a link to a sample project

@workspace /new コマンドは、コンテキストと履歴をより効果的に管理するために強化されました。これにより、フォローアップクエリを尋ねることで、提案されたワークスペースの構造やファイルの内容を調整できます。たとえば、「JavaScriptではなくTypeScriptを使用する」や「bootstrapも追加する」などです。

@terminal /explain スラッシュコマンド

新しい@terminal /explainスラッシュコマンドが利用可能になり、コマンドやエラーの説明に最適化されています。/explainがない場合、@terminalは修正の提案に最適化されます。このスラッシュコマンドは、Copilotを使用して説明クイックフィックスまたは選択範囲を説明アクションで使用されます。

Using the explain using copilot quick fix will ask copilot "@terminal /explain #terminalLastCommand"

プレビュー: ターミナルインラインチャット

このリリースでは、ターミナルインラインチャットのプレビューが利用可能になり、Copilotの機能をターミナルから直接便利に利用できるようになりました。

ターミナルインラインチャットは、terminal.integrated.experimentalInlineChat設定で有効にできます。ターミナルでインラインチャットを呼び出すには、⌘I(Windows、LinuxはCtrl+Iキーバインディングを使用します。

Opening terminal inline chat will open and focus an input box similar to inline chat in the editor

ターミナルインラインチャットは、統合ターミナルのシェルとその内容に関するコンテキストを持つ@terminalチャット参加者を使用します。

You can ask complex questions like "list the top 5 largest files in the src directory"

コマンドが提案されたら、⌘Enter(Windows、LinuxではCtrl+Enterを使用してターミナルでコマンドを実行するか、⌥Enter(Windows、LinuxではAlt+Enterを使用してターミナルにコマンドを挿入します。コマンドは、実行する前にCopilotの応答で直接編集することもできます(現在のWindows&LinuxではCtrl+downTabTab、macOSではCmd+downTabTab)。

Complex queries are OS and shell-specific

認証フローの明確化

認証に関する明確さは非常に重要です。当社は、どのように認証を行い、何を要求するのかを明確にしたいと考えています。VS Codeでプライベートリポジトリを開き、このシナリオに適した認証がない場合、認証ダイアログが表示されます。このダイアログには、認証が必要な理由の説明と、これらの要件の詳細を確認するための詳細はこちらボタンがあります。

Screenshot of a modal window that's asking to authenticate with GitHub and that contains a Learn more button

詳細はこちらボタンをクリックすると、認証要件に関するドキュメントに移動します。

変数参照

チャット応答の使用された参照セクションは、使用されたコンテキストに関する情報を提供します。以前は、このセクションには暗黙的に取り込まれたコンテキストのみが表示されていました。しかし、今では、#file#editor のようにチャットプロンプトで明示的に言及した変数も表示されます。使用された参照に変数がない場合、それは言語モデルのコンテキストウィンドウに対して大きすぎるために無視されたことを示している可能性があります。

Screenshot of a chat response, showing the '#file' variable in the Used references section

二次チャット送信アクション

チャットビューでは、チャット送信ボタンにドロップダウンが追加され、より多くのアクションに簡単にアクセスできるようになりました。

  • @workspace に送信 は、ワークスペースの内容に関する質問に役立つ @workspace チャット参加者にクエリを送信します。
  • 新しいチャットに送信 は、新しい空のチャットを開始し、クエリを送信します。

Screenshot of the chat submit dropdown options

Copilot: Explain This 使用時のスコープ選択

アクティブエディターで何も選択せずに/explainを使用し、複数の関心のあるスコープがある場合、どのシンボルまたはブロックスコープを説明するかを明確にするためのプロンプトをサポートするようになりました。

Screenshot of the scope selection quick pick when the scope for /explain is unclear

この動作は現在、github.copilot.chat.scopeSelection 設定を介してオプトインです。

Python

FlaskとDjangoのデバッグ設定選択の改善

FlaskとDjangoアプリの起動設定の作成がさらに簡単になりました!Webアプリのlaunch.jsonを作成する際に、ワークスペース内の可能な起動ファイルを検出するための改善が行われました。

Djangoの場合、Pythonデバッガ拡張機能は、ワークスペースのルートまたは1レベル下のサブディレクトリでmanage.pyまたはapp.pyファイルを検索します。Flaskの場合、拡張機能は、Flaskアプリケーションの宣言(例:app = Flask())を含むwsgi.pyapp.py、またはinit.pyファイルを検索します。

それらのファイルがプロジェクトで見つからない場合でも、対応するプロジェクトタイプのデフォルトオプションがドロップダウンに表示されます。

Hatch環境の検出

Hatch環境は、Venv、Conda、Poetryなどの他の一般的な環境と同様に、デフォルトで検出およびアクティブ化されるようになりました。さらに、Hatchの場合、明示的な環境識別子が登録されていない場合でも、拡張機能は環境ロケーターから環境タイプ(Hatch)を判断できます。

pipenv、pyenv、Poetryプロジェクトの自動環境選択

ワークスペースにpipenv、pyenv、またはPoetry環境が含まれている場合、対応する環境がワークスペースに自動的に選択されるようになりました。以前は、拡張機能はこれらの環境を正しく検出しましたが、デフォルトのグローバルインタプリタを選択していたため、ワークスペースに適切な環境を手動で選択する必要がありました。

現在、Python拡張機能は、環境と対応する設定ファイルの存在に基づいて、アクティブ化された環境を推測します。たとえば、pyenvの場合、拡張機能は.python-versionファイルを参照して、ワークスペースに適したインタプリタを自動的に選択します。

課題報告コマンドの改善

PythonPython Debugger 拡張機能は、リポジトリに課題を報告するのをより簡単にしました!課題報告コマンド(workbench.action.openIssueReporter)で課題を提出すると、ほとんどの重労働はすでに完了しており、チームが遭遇している問題を効率的にトリアージできるように、追加情報のみが求められます。

@vscode-python または @vscode-python-debuggerヘルプ: 課題報告コマンドを使用して課題を提出するには、拡張機能ドロップダウンからそれぞれPythonまたはPython Debuggerを選択します。

GitHubプルリクエスト

GitHub Pull Requests拡張機能は、プルリクエストや課題の作業、作成、管理を可能にし、さらに進歩しました。新機能には以下が含まれます。

  • コメントビューでは、古いコメントが現在のコメントとは異なる表示になります。
  • githubPullRequests.createDefaultBaseBranchの新しいauto値は、フォークリポジトリのベースブランチとしてアップストリームのデフォルトブランチを使用します。
  • コメントビューのコメントスレッドには、インラインアクション(解決/未解決、古いコメントの「HEADとの差分コメント」)とコンテキストメニューアクションがあります。

その他のハイライトについては、拡張機能の0.86.0リリースの変更ログを確認してください。

Jupyter

セル実行分析の改善

最新のPylanceプレリリースにより、Jupyterセルの依存関係分析が向上しました。以前のセルで定義されたモジュールをインポートするセルがある場合に特に役立つ、モジュールインポートを理解するようになりました。

この機能を有効にするには、VS Code Insidersに最新のPylanceプレリリースをインストールし、jupyter.executionAnalysis.enablednotebook.consolidatedRunButtonの設定を有効にします。

拡張機能作成

拡張機能のバグ報告に Issue Reporter コマンドを使用する

前回のイテレーションでは、VS CodeのIssue Reporterを介してGitHubに提出する際に、拡張機能が追加データやテンプレートを提供する方法を完成させました。拡張機能は、ヘルプ: 課題報告...コマンドからアクセスできるコマンドを提供できます。拡張機能を選択すると、貢献されたコマンドが実行されます。この機能が拡張機能でどのように機能するかの詳細については、課題報告ドキュメント/リリースノートをご確認ください!

さらに、インストールされているすべての拡張機能は、クイックオープンを介して迅速に報告できます。クイックオープン(⌘P(Windows、LinuxではCtrl+P)にissue と入力すると、インストールされている拡張機能を迅速に選択または検索して報告できます。

一部の拡張機能は、この新しい課題報告フローの利用に移行し始め、コマンドパレットに直接寄与されるカスタムの課題報告...コマンドは不要になります。

プレビュー機能

ターミナルでの重なり合うグリフのスケーリング調整

新しい設定terminal.integrated.rescaleOverlappingGlyphsが利用可能になりました。これは、後続のセルと重なるグリフをスケーリング調整します。これは、バッキングのpty/Unicodeバージョンが想定する文字幅とフォントグリフが一致しない曖昧な幅の文字を対象としています。たとえば、ほとんどのフォントでは、ローマ数字のUnicode文字(U+2160+)は通常複数のセルを占めるため、この設定を有効にすると水平方向にスケーリング調整されます。

リスケールなし

Before the glyphs for Ⅷ and Ⅻ depending on the font would always overlap the following cells

リスケールあり

After the glyphs for Ⅷ and Ⅻ depending on the font are rescaled horizontally to fit a single cell

リサイズが発生する条件のルールはまだ調整中であり、将来的に安定したらデフォルトで有効にすることを検討しています。この機能を試してみて、リサイズされるべきではない文字がリサイズされているのを見つけた場合は、課題を作成してください。

ローカルワークスペース拡張機能

ワークスペースに直接拡張機能をパッケージ化できる新しいプレビュー機能を導入できることを嬉しく思います。この機能は、特定のワークスペースのニーズに対応し、よりパーソナライズされた開発エクスペリエンスを提供するために設計されています。

この機能を使用するには、ワークスペース内の.vscode/extensionsフォルダーに拡張機能をパッケージ化する必要があります。VS Codeは、拡張機能ビューのワークスペースの推奨事項セクションにこの拡張機能を表示し、そこからユーザーがインストールできます。VS Codeは、この拡張機能をそのワークスペースに対してのみインストールします。また、ユーザーがこの拡張機能をインストールして実行する前にワークスペースを信頼する必要があります。

例えば、VS Codeリポジトリにあるvscode-selfhost-test-provider拡張機能をご覧ください。この拡張機能はテスト機能をプラグインし、コントリビューターがワークスペース内で直接テストを表示および実行できるようにします。以下のスクリーンショットは、拡張機能ビューのワークスペース推奨事項セクションにあるvscode-selfhost-test-provider拡張機能と、それをインストールする機能を示しています。

Local Workspace Extension

この機能は、extensions.experimental.supportWorkspaceExtensionsを介してInsidersリリースでプレビューとして利用できます。ぜひお試しいただき、VS Codeリポジトリに課題を作成してフィードバックをお聞かせください。

提案されたAPI

ターミナルシェル統合API

シェル統合が有効化されたターミナルから提供される情報の一部にアクセスできる、新しい提案APIが利用可能になりました。このAPIを使用すると、ターミナルで実行されているコマンドの着信データと終了コードをリッスンできます。また、プロンプトが利用可能になるのを待ってからコマンドを送信することで、さまざまなシェルの設定で発生する可能性のある競合/レースコンディションを修正するのに役立つ、より信頼性の高いコマンド実行方法も導入されています。

Terminal.shellIntegration.executeCommand提案の使用例を次に示します。

// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidActivateTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
  if (terminal === myTerm) {
    const command = shellIntegration.executeCommand('echo "Hello world"');
    const code = await command.exitCode;
    console.log(`Command exited with code ${code}`);
  }
}));

// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
  if (!myTerm.shellIntegration) {
    myTerm.sendText('echo "Hello world"');
    // Without shell integration, we can't know when the command has finished or what the
    // exit code was.
  }
}, 3000);

コマンドのデータストリームをリッスンする例を次に示します。

// Create a terminal and log all data via console.log
const myTerm = window.createTerminal();
window.onDidStartTerminalShellExecution(execution => {
  if (execution.terminal === myTerm) {
    const stream = execution.createDataStream();
    for await (const data of stream) {
      console.log(data);
    }
  }
});

新しいAPIはこちらで確認できます。

認証APIの「詳細はこちら」プロパティ

このイテレーションでは、AuthenticationForceNewSessionOptionslearnMoreプロパティを指定できる新しい提案APIを追加しました。オプションでforceNewSessionプロパティを指定してgetSessionを呼び出す場合、認証を要求する理由についてユーザーが詳細を知るためのURIを含めることができるという考えです。その様子を以下に示します。

Screenshot of a modal window that's asking to authenticate with GitHub and that contains a Learn more button

コードでの表示は次のとおりです。

vscode.authentication.getSession('github', ['repo'], {
  forceNewSession: {
    detail: l10n.t('To show you more relevant Copilot Chat results, we need permission to read the contents of your repository on GitHub.'),
    learnMore: Uri.parse('https://aka.ms/copilotRepoScope')
  };
});

新しいAPIはこちらで確認できます。

古いコメント

新しいコメントスレッドのapplicabilityプロパティにより、コメントビューでコメントスレッドを古いものとしてマークできるようになりました。

Outdated comment in the Comments view

APIの提案はこちらで確認できます。

コメントビューメニュー

commentsView/commentThread/context提案メニューにより、コメントビューのコメントスレッドの右クリックコンテキストメニューにアクションを追加できるようになりました。通常と同様にinlineグループも尊重され、アクションはコメントビューにインラインで表示されます。

Example of an inline action in the Comments view

エンジニアリング

Electron 28へのアップデート

今回のイテレーションでは、Electron 28へのアップデートを安定版リリースユーザーに展開します。このアップデートには、Chromium 120.0.6099.291とNode.js 18.18.2が含まれています。Insidersビルドで自己ホストし、早期のフィードバックを提供してくださった皆様に感謝いたします。

注目すべき修正点

  • 204886 簡易ファイルピッカーで、異なるパスだが同じ名前のファイルを開くと失敗する

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-eslintへの貢献者

vscode-extension-samplesへの貢献

vscode-hexeditorへの貢献

vscode-js-debugへの貢献者

vscode-json-languageserviceへの貢献

vscode-pull-request-githubへの貢献者

vscode-pylintへの貢献

  • @MGasiewski: ティルダをホーム環境に置き換えるロジックを追加 PR #524

vscode-python-debuggerへの貢献者

debug-adapter-protocolへの貢献者

inno-updaterへの貢献

language-server-protocolへの貢献者

monaco-editorへのコントリビューション

node-ptyへの貢献

  • @kkocdko (kkocdko)
    • chore: 非推奨のAPI process.binding を削除 PR #653
    • fix: macOSビルドエラーを修正するためにnode-gypをアップグレード PR #673