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

更新 1.88.1: この更新では、これらの問題に対処しています。

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap


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

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

アクセシビリティ

音声録音のサウンド

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

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

差分エディターのアクセシビリティの向上

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

キーボードユーザーに役立つコマンドである差分エディター: 左右を入れ替えに関する情報も、アクセシビリティヘルプダイアログに追加しました。

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

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

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

これらには、チャット: カーソル位置に挿入チャット: ターミナルに挿入チャット: 新規ファイルに挿入が含まれます。

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

ノートブックセルの Aria ラベルが、セルが現在実行中または実行保留中の場合にインジケーターを表示するように更新されました。

ワークベンチ

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

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

注: 技術的な制限により、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 設定を構成して、検索エディターエントリをシングルクリックしたときに何が起こるかを決定できるようになりました。現在、この設定は [定義をピーク] を開くことのみをサポートしています。

クイック検索の改善

固定ファイルパス

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

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

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

クイックピッカー区切りナビゲーションキーバインド

クイックピッカーで区切り文字間をナビゲートできると便利だというフィードバックをいただきました。今回のイテレーションでは、これを実現するためのキーバインドを追加しました。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) もワークベンチで [リファクタリングプレビュー] パネルを開きます。

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

差分エディターに、ステージおよび元に戻すコントロール用の別のガターが追加されました。これらのアクションを使用すると、変更されたコードブロックをステージングまたは元に戻すことができます。

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

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

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

名前変更候補の動作

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

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

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

  •  FILE  パス:行:列

ターミナルスティッキースクロール透明度サポート

ターミナルのスティッキースクロールが透明度をサポートするようになりました。テーマは、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+A および Ctrl+C キーバインドを使用して選択およびコピーできます。
  • スクロール可能な出力は、キーボードで および キーバインドを使用してスクロールできます。
  • スクロール可能な出力の先頭と末尾へのスクロールは、キーボードで Ctrl+Home および Ctrl+End キーバインドを使用して実現できます (macOS では Cmd+Up および Cmd+Down)。
  • 現在の選択ポイントから出力の先頭または末尾までの出力を選択することは、キーボードで Ctrl+Shift+Up および Ctrl+Shift+End キーバインドを使用して実現できます (macOS では Shift+Cmd+Up および Shift+Cmd+Down)。

セルのエラー診断

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

セクションでセルを実行

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

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

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

ノートブックのアウトラインビューで使用できるフィルターが追加され、Markdown ヘッダー、コードセル、およびコードセルシンボルの包含を制御できます。フィルターは、次の設定に対応しています。

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

閉じる際にインタラクティブウィンドウを保存するかどうかを確認するプロンプト

interactiveWindow.promptToSaveOnClose 設定を有効にすると、インタラクティブウィンドウを閉じる際にコンテンツを保存するかどうかを確認するプロンプトが表示され、作業内容が失われないようにします。現在サポートされているファイル形式は .ipynb のみです。

リモート開発

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

ハイライト:

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

これらの機能の詳細については、リモート開発リリースノートを参照してください。

拡張機能への貢献

VS Code Speech

遅延アクティベーション

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

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

デフォルトでは、VS Code speech 拡張機能は、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 を使用し、関心のあるスコープが複数ある場合、説明するシンボルまたはブロックスコープを明確にするためのプロンプトのサポートを追加しました。

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 Debugger拡張機能は、ワークスペースのルートまたは1レベル下のサブディレクトリにある manage.py または app.py ファイルを探します。 Flaskの場合、拡張機能はFlaskアプリケーションの宣言(例:app = Flask())を含む wsgi.pyapp.py、または init.py ファイルを探します。

これらのファイルがプロジェクトで見つからない場合でも、ファイルが存在しない可能性があっても、ドロップダウンには対応するプロジェクトタイプの Default オプションが表示されます。

Hatch環境の検出

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

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

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

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

問題の報告コマンドの改善

Python および Python Debugger 拡張機能により、リポジトリへの問題報告がより簡単になりました! 問題の報告 コマンド(workbench.action.openIssueReporter)を使用して問題を提出すると、ほとんどの面倒な作業はすでに完了しており、チームが遭遇している問題を効率的にトリアージできるように、追加情報の入力を求められるだけです。

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

GitHubプルリクエスト

プルリクエストとIssueの作業、作成、および管理を可能にする GitHub Pull Requests 拡張機能でさらに進捗がありました。 新機能は次のとおりです。

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

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

Jupyter

セル実行分析の改善

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

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

拡張機能の作成

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

前回のイテレーションで、VS CodeのIssue Reporter経由でGitHubに送信する際に、拡張機能が追加データまたはテンプレートを提供する方法を最終決定しました。 拡張機能は、ヘルプ: 問題の報告... コマンドからアクセスできるコマンドを提供できます。 拡張機能を選択すると、提供されたコマンドが実行されます。 これが拡張機能でどのように機能するかについての詳細は、問題報告のドキュメント/リリースノート を参照してください。

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

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

プレビュー機能

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

新しい設定 terminal.integrated.rescaleOverlappingGlyphs が利用可能になり、後続のセルと重なり合うグリフを再スケーリングします。 これは、曖昧な幅の文字を対象としており、フォントグリフがバックアップpty/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

再スケーリングが発生するタイミングのルールはまだ調整されており、将来的に安定したらデフォルトで有効にすることを検討しています。 これを試してみて、再スケーリングされるべきではない文字が再スケーリングされている場合は、Issueを作成 してください。

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

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

この機能を使用するには、ワークスペース内の .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リポジトリ にIssueを作成してフィードバックをお知らせください。

提案された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のLearn Moreプロパティ

今回のイテレーションでは、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の貢献者の皆様に心から 感謝申し上げます

Issueトラッキング

Issueトラッキングへの貢献

プルリクエスト

vscode への貢献

vscode-css-languageservice への貢献

vscode-eslint への貢献

vscode-extension-samples への貢献

vscode-hexeditor への貢献

vscode-js-debug への貢献

vscode-json-languageservice への貢献

vscode-pull-request-github への貢献

vscode-pylint への貢献

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