2024年3月 (バージョン 1.88)
アップデート 1.88.1: このアップデートでは、これらの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code 2024年3月リリースへようこそ。このバージョンには多くのアップデートがあり、気に入っていただけることを願っています。主なハイライトの一部を以下に示します。
- 開いているエディターにカスタムラベルを適用する - 同じファイル名のエディターを区別します。
- ロックされたスクロール - 同期されたスクロールでエディターを並べて比較します。
- 拡張機能の更新の改善 - リロードせずに拡張機能を再起動し、VS Codeのリリースとともに拡張機能を更新します。
- テストカバレッジAPI - VS Codeでのネイティブコードカバレッジサポート。
- ミニマップの折りたたみマーカー - ミニマップからコードセクションを簡単に識別してナビゲートできます。
- クイック検索の改善 - 固定ファイルパス区切り文字と区切りボタン。
- Notebookセクション内のセルを実行 - Notebookセクション内のすべてのセルをすばやく実行します。
- Copilotの改善 - インラインチャットUI、コミットメッセージ、使用された参照が改善されました。
- Python自動検出の改善 - FlaskとDjangoの起動ファイルを検出し、Hatch環境を検出します。
- プレビュー: ターミナルインラインチャット - ターミナルから直接Copilotインラインチャット会話を開始します。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の アップデート をご覧ください。インサイダー: 新機能をいち早く試したいですか?夜間の インサイダー ビルドをダウンロードして、最新の更新プログラムが利用可能になり次第すぐに試すことができます。
アクセシビリティ
音声録音のサウンド
音声録音用の新しいアクセシビリティ信号サウンドを追加しました。
- 音声録音開始 - accessibility.signals.voiceRecordingStarted設定で構成。
- 音声録音終了 - accessibility.signals.voiceRecordingStopped設定で構成。
Diffエディターのアクセシビリティの改善
スクリーンリーダーを使用している場合、Diffエディターがアクティブなエディターになると通知されるようになりました。この動作はaccessibility.verbosity.diffEditorActive設定で無効にできます。
キーボードユーザー向けの便利なコマンドであるDiffエディター: サイドを切り替えるに関する情報も、アクセシビリティヘルプダイアログに追加しました。
アクセシビリティ信号は、Diffエディターの両側で機能するようになりました。以前は、変更された側でのみ利用可能でした。
アクセシブルビューチャットコードブロックコマンド
アクセシブルビューでチャットの応答を検査すると、チャットビューで利用可能なコードブロックコマンドとキーバインディングを使用できるようになりました。
これには、チャット: カーソルに挿入、チャット: ターミナルに挿入、チャット: 新しいファイルに挿入が含まれます。
ノートブックセルのariaラベルの更新
ノートブックセルのariaラベルは、セルが現在実行中か、実行待ちかを示すように更新されるようになりました。
Workbench
フローティングウィンドウでのカスタムエディターサポート
フローティングウィンドウでのエディターのオープンに対するサポートをカスタムエディターにまで拡張しました。また、一般的にwebview APIを使用するすべてのエディターも含まれます。これには、マークダウンプレビュー、ブラウザプレビュー、およびhex editorのような複雑なカスタムエディターが含まれます。
注: 技術的な制限により、webviewベースのエディターをウィンドウ間で移動するには、そのエディターのコンテンツをリロードする必要があります。以前に蓄積した状態を復元するのはエディターに委ねられます。場合によっては、初めてエディターを開いたかのように状態がリセットされることがあります。
開いているエディターのカスタムラベル
エディタータブと「開いているエディター」ビューの表示ラベルをカスタマイズできるようになりました。この機能は、同じファイル名を持つファイルのエディターを区別するのに役立ちます。
workbench.editor.customLabels.patterns設定の下にエントリを追加することで、これらのラベルを好みに合わせて調整できます。各エントリには、ファイルパスに一致するグロブパターンと、エディタータブの新しい名前を定義するテンプレートを含める必要があります。このカスタマイズは、ファイルのパスが指定されたパターンに一致する場合にのみ適用されます。パターンが一致するかどうかは、相対パスパターンとして定義されているか、絶対パスパターンとして定義されているかによって異なります。
テンプレートには、${filename}、${extname}、${dirname}、${dirname(N)}などの変数を組み込むことができ、これらはファイルのパスの値に動的に置き換えられます。
これらのカスタムラベルを有効または無効にするには、workbench.editor.customLabels.enabled設定を使用します。これにより、カスタムパターンを削除することなく、いつでも元のエディター名に切り替えることができます。
ロックされたスクロール
表示: エディター全体のスクロールをロックするコマンドを使用すると、すべての表示されているエディター間でスクロールを同期できるようになりました。これは、あるエディターでスクロールすると、他のすべてのエディターが同じ量だけスクロールし、すべてが整列された状態を維持することを意味します。この機能は、ファイルを並べて比較する必要がある場合に役立ちます。
ロックされたスクロールの有効化と無効化をより細かく制御したい場合は、特定のキーバインディングを押しているときにのみスクロール同期をアクティブにするように選択できます。workbench.action.holdLockedScrollingコマンドにキーボードショートカットを設定すると、必要なときにいつでもエディター全体のスクロールを一時的にロックできます。
アクティビティバーを下に配置
以前、サイドバーの上にアクティビティバーを移動するオプションを導入しました。今回、アクティビティバーを下に移動できるようになりました。これを行うには、workbench.activityBar.location設定をbottomに変更します。
また、アクティビティバーが上部に配置されたときの外観も改善し、インターフェイスの残りの部分と自然に調和するようにしました。

検索エディターのシングルクリック動作
search.searchEditor.singleClickBehaviour設定を構成して、検索エディターのエントリをシングルクリックしたときに何が起こるかを決定できるようになりました。現在、この設定はPeek Definitionのオープンのみをサポートしています。
クイック検索の改善
固定ファイルパス
クイック検索では、検索結果がどのファイルに関連付けられているかをより明確にするために、ファイル名区切り文字が固定されるようになりました。これは、ファイル内に検索語が多数出現する場合に役立ちます。
ファイルパス区切りボタン
特定のファイルのファイル結果にカーソルを合わせたり、結果に矢印で移動したりすると、ファイルパス区切り文字にもボタン(たとえば、ファイルを開くボタン)が表示されます。
クイックピック区切り文字ナビゲーションキーバインディング
クイックピック内で区切り文字間を移動できると便利だというフィードバックをいただきました。今回のイテレーションでは、これを行うためのキーバインディングを追加しました。WindowsとLinuxではAlt+Up/Down、macOSではCmd+Up/Downを使用できます。この例のビデオでは、アクティブなアイテムが次のように移動する様子を見ることができます。
- コマンドパレットの「最近使用したコマンド」と「その他のコマンド」の区切り文字間
- クイック検索のファイルパス区切り文字間
クイックピックの無効なチェックボックスアイテム
今回のイテレーションでは、クイックピックが無効なアイテムを表示する際に、それがより明確になるようにしました。この例は、「信頼できる拡張機能の管理」クイックピックで見つけることができます。これは、ログインしている任意のアカウントでアクセスできます。

拡張機能の更新の改善
拡張機能の再起動
拡張機能が更新されたときに、ウィンドウをリロードすることなく拡張機能を再起動できるようになりました。

注: WSLやSSH、Dev Containerなどのリモートサーバーに接続している場合は、拡張機能を更新するためにウィンドウをリロードする必要があります。
VS Codeのアップデートによる拡張機能の更新
拡張機能の自動更新が有効になっている場合、VS Codeは、利用可能な新しいバージョンのVS Codeと互換性のある拡張機能を更新するようになりました。拡張機能の新しいバージョンが現在のVS Codeのバージョンと互換性がない場合、拡張機能の新しいバージョンはVS Codeを更新した後にのみ有効になります。
コメントの返信にジャンプ
コメントビューのコメントスレッドのコンテキストメニューに、コメントスレッドが返信を許可している場合に「返信」アクションが含まれるようになりました。これにより、返信入力ボックスにすばやくジャンプして返信を入力できます。

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

リファクタリングプレビューのキーバインディング
名前変更シンボルリファクタリング(F2)の編集プレビューのキーバインディングを更新し、コードアクションなどの他のコンテキストでのリファクタリングのプレビューとの一貫性を維持しました。編集は⌘Enter (Windows, Linux Ctrl+Enter)(以前はShift + Enter)を使用してプレビューできるようになりました。
コードアクションの上にカーソルを置くと、⌘Enter (Windows, Linux Ctrl+Enter)でワークベンチにリファクタリングプレビューパネルも開きます。
Diffエディターのステージ/元に戻す選択ボタン
Diffエディターには、ステージと元に戻すコントロール用の独立したガターが追加されました。これらのアクションにより、変更されたコードブロックをステージまたは元に戻すことができます。
変更の一部をテキスト選択すると、これらのボタンを使用して選択された変更(選択内のすべての変更された文字)をステージまたは元に戻すことができます。

diffEditor.renderGutterMenuをfalseに設定することで、diffエディターのガターを非表示にできます。
名前変更候補の動作
名前変更候補の使用フローをクイックピックのフローと一致するように改善しました。リストから名前変更候補を選択すると、入力値がそれに応じて更新され、候補をさらに変更できるようになります。

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

テーマ: GitHub Sharp (vscode.devでプレビュー)
ターミナル
デバッグターミナルでのシェル統合
ユーザーと拡張機能に強化された機能を提供するために、デバッグ時に起動されるターミナルでシェル統合が自動的に有効になりました。
最近のコマンドの実行の改善
シェル統合を搭載した最近のコマンドの実行(⌃⌥R (Windows, Linux Ctrl+Alt+R))は、可能であれば、コマンドが最後に実行された場所にスクロールして表示するようになりました。コマンドを実行するか、クイックピックをキャンセルすると、ターミナルは以前の状態に戻ります。
テーマ: Sapphire (vscode.dev でプレビュー)
検出されたリンクを開く機能の改善
検出されたリンクを開くコマンド(⇧⌘O (Windows, Linux Ctrl+Shift+O))は、エディターでリンク結果をプレビューし、ターミナルでリンク元をハイライトするようになりました。
さらに、重複するリンクはリストから除外され、すべてのリンクが一貫した形式で表示されるようになりました。

単語リンクの追加コンテキスト
単語リンクはterminal.integrated.wordSeparators設定で定義され、ファイル/フォルダ/URIが見つからない場合のフォールバックとなります。アクティブ化されると、これらのリンクには、検索で発生する行と列の情報が追加されるように、周囲の追加コンテキストが含まれるようになりました。
スクリーンショットでは、リンクterminalLinkParsingが選択されていますが、結果の検索にはリンクの次の行番号も含まれていることに注意してください。

新しいリンク形式
以下のリンク形式がターミナルで検出されるようになりました。パスにスペースが含まれていても検出されます。
- ファイル パス:行:列
ターミナルスティッキースクロール透過性サポート
ターミナルでのスティッキースクロールが透過性をサポートするようになりました。テーマは、terminalStickyScroll.backgroundテーマカラーを透明値に設定するか、settings.jsonでオーバーライドを指定することで、これを利用できます。例えば、
{
  "workbench.colorCustomizations": {
    "[Default Dark Modern]": {
      "terminalStickyScroll.background": "#181818c0"
    }
  }
}
これにより、スティッキースクロールの背景が透明になり、背後のテキストが透けて見えるようになります。

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

同様に、カバレッジ付きで実行するための新しいキーバインディングがあります。例えば、すべてのテストをカバレッジ付きで実行するにはCtrl+; Ctrl+Shift+A、最後のテストセットをカバレッジ付きで実行するにはCtrl+; Ctrl+Shift+Lです。
カバレッジ情報はデフォルトで行番号のオーバーレイとして表示されますが、インラインカバレッジの切り替えを切り替えることで、ソースファイルの完全な詳細情報を確認できます。

テーマ: Codesong (vscode.devでプレビュー)
テストカバレッジを使用するには、拡張機能が新しいAPIを実装している必要があります。Test Runner for Javaやnode:test runnerなどの一部の拡張機能はすでにこれをサポートしています。Javaのテストカバレッジについては、チームの12月および1月のアップデートで詳しく説明されています。
拡張機能の作成者は、テストAPIドキュメントでテストカバレッジAPIの詳細を確認できます。
テストメッセージの色コードサポート
テストが失敗したときに表示されるようなテキスト形式のテストメッセージを、生の「印刷不可能な」データコードを表示するのではなく、色付けするためにターミナルの色コードを解析するようになりました。
言語
TypeScript 5.4
VS CodeにはTypeScript 5.4が含まれるようになりました。この主要なアップデートは、型チェックとIntelliSenseに新しい改善をもたらし、いくつかのバグ修正が含まれています。詳細については、TypeScript 5.4リリースブログ投稿を参照してください。
Markdownでの画像とリンクのよりスマートな挿入
Markdownファイルに画像やファイルをドロップまたは貼り付けると、VS Codeは自動的にMarkdown画像またはリンク構文を挿入します。Markdown構文をサポートしないコードブロックやその他のコンテキストに挿入する際には、この動作をスマートに無効にするようになりました。
ドロップ/貼り付けウィジェットを使用すると、いつでもMarkdown構文の挿入に戻すことができます。この動作は、markdown.editor.drop.enabledおよびmarkdown.editor.filePaste.enabled設定を使用して構成できます。
ノートブック
ノートブック出力でのキーボードショートカット
ノートブック出力で一部の標準キーボードショートカットをサポートするようになりました。
- 出力は、それぞれCtrl+AおよびCtrl+Cキーバインディングでキーボードで選択およびコピーできます。
- スクロール可能な出力は、それぞれUpおよびDownキーバインディングでキーボードでスクロールできます。
- スクロール可能な出力の上下へのスクロールは、それぞれ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のみです。
リモート開発
リモート開発拡張機能を使用すると、開発コンテナー、SSH 経由のリモートマシン、リモートトンネル、またはWindows 用 Linux サブシステム (WSL) をフル機能の開発環境として使用できます。
主なハイライトは次のとおりです。
- 拡張サポート付きディストリビューション用の代替サーバーダウンロード
- URIクエリ文字列に基づくポートフォワーディング
- Dev Containers拡張機能がDockerを自動的に起動する
- グループポリシーによるDev Tunnelsおよびポートフォワーディングへのアクセス制限
これらの機能の詳細については、リモート開発リリースノートをご覧ください。
拡張機能への貢献
VS Code Speech
遅延アクティベーション
VS Code Speech拡張機能は、VS Codeで音声認識サービスが要求された場合にのみアクティブ化されるようになりました。これにより、拡張機能が拡張機能ホストの起動時間に悪影響を与えることがなくなります。
表示言語をデフォルトの音声言語として使用する
デフォルトでは、VS Code音声拡張機能は、VS Codeの表示言語を音声言語として使用し、その言語がサポートされている場合は対応するモデルを選択するようになりました。
accessibility.voice.speechLanguage設定の場合、autoが新しいデフォルトです。
GitHub Copilot
インラインチャットの改善
インラインチャットがフローティングコントロールとして起動するようになり、より軽量になりました。最初の要求の後、コントロールはより多くのスペースを占めるように展開されます。また、チャットビューやクイックチャットなど、他のチャットエクスペリエンスとの一貫性を高めるためにレンダリングも調整しました。
 テーマ: GitHub Light Colorblind (Beta)
 テーマ: GitHub Light Colorblind (Beta)
再実行とフィードバックのコントロールを再配置し、差分表示の切り替えコントロールを「承認」ボタンと「破棄」ボタンの横でより目立つようにしました。
 テーマ: GitHub Light Colorblind (Beta)
 テーマ: GitHub Light Colorblind (Beta)
ノートブックカーネルの状態をコンテキストとして
ノートブック内にいる場合、カーネルの状態(例えば、変数や利用可能なパッケージ)がインラインチャットのコンテキストとして自動的に含まれるようになりました。これにより、Copilotはノートブックの現在の状態を使用して、より関連性の高い補完を提供できます。
テーマ: GitHub Dark
コミットメッセージ生成の改善
生成されるコミットメッセージの品質を向上させるために、リポジトリの直近10件のコミットメッセージと現在のユーザーの直近10件のコミットメッセージも追加のコンテキストとして含めるようになりました。
ワークスペース作成の改善
@workspace /newコマンドは、チャットプロンプトに適切な一致が検出された場合、GitHubリポジトリから厳選されたサンプルプロジェクトを提案として提供するようになりました。

@workspace /newコマンドも、コンテキストと履歴をより効果的に管理するために強化されました。これにより、フォローアップクエリを尋ねることで、提案されたワークスペースの構造とファイルの内容を調整できます。例えば、「JavaScriptの代わりにTypeScriptを使用する」や「Bootstrapも追加する」などです。
@terminal /explain スラッシュコマンド
新しい@terminal /explainスラッシュコマンドが利用可能になりました。これはコマンドやエラーの解説に最適化されています。/explainがない場合、@terminalは修正を提案するように最適化されています。このスラッシュコマンドは、Copilotを使用して説明するクイックフィックスまたは選択範囲を説明するアクションで使用されます。

プレビュー: ターミナルインラインチャット
このリリースでは、ターミナルインラインチャットのプレビューが利用可能になりました。これにより、ターミナルから直接Copilotの機能に便利にアクセスできます。
ターミナルインラインチャットは、terminal.integrated.experimentalInlineChat設定で有効にできます。ターミナルでインラインチャットを呼び出すには、⌘I (Windows, Linux Ctrl+I)キーバインディングを使用します。

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

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

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

詳細を見るボタンは、認証要件に関するドキュメントに移動します。
変数の参照
チャット応答の使用された参照セクションには、使用されたコンテキストに関する情報が表示されます。以前は、このセクションには暗黙的に引き込まれたコンテキストのみが表示されていました。しかし、今では、チャットプロンプトで明示的に言及した変数(例: #fileや#editor)も表示されるようになりました。使用された参照から変数が欠落している場合、それは言語モデルのコンテキストウィンドウに対して大きすぎるために無視されたことを示している可能性があります。

セカンダリチャット送信アクション
チャットビューのチャット送信ボタンに、より多くのアクションに簡単にアクセスできるドロップダウンが追加されました。
- @workspaceに送信は、ワークスペースの内容に関する質問に役立つ@workspaceチャット参加者にクエリを送信します。
- 新しいチャットに送信は、新しい空のチャットを開始し、クエリを送信します。

Copilot: Explain Thisを使用する際のスコープ選択
アクティブなエディターで選択なしで/explainを使用し、複数の関心のあるスコープがある場合、説明するシンボルまたはブロックスコープを明確にするためのプロンプトのサポートを追加しました。

この動作は現在、github.copilot.chat.scopeSelection設定の背後にあるオプトインです。
Python
FlaskおよびDjango向けデバッグ構成選択の改善
FlaskおよびDjangoアプリの起動構成作成がより簡単になりました!Webアプリのlaunch.jsonを作成する際、ワークスペース内の可能な起動ファイルを検出するための改善が行われました。
Djangoの場合、Pythonデバッガー拡張機能は、ワークスペースのルートまたは1レベル下のサブディレクトリでmanage.pyまたはapp.pyファイルを探します。Flaskの場合、拡張機能は、Flaskアプリケーションの宣言(例: app = Flask())を含むwsgi.py、app.py、またはinit.pyファイルを探します。
これらのファイルがプロジェクトで見つからない場合でも、ドロップダウンには対応するプロジェクトタイプのデフォルトオプションが表示されます。
Hatch環境の検出
Hatch環境は、Venv、Conda、Poetryなどの他の一般的な環境と同様に、デフォルトで検出されアクティブ化されるようになりました。さらに、Hatchの場合、明示的な環境識別子が登録されていない場合でも、拡張機能は環境ロケーターから環境タイプ(Hatch)を判断できます。
pipenv、pyenv、Poetryプロジェクトの自動環境選択
ワークスペースにpipenv、pyenv、またはPoetry環境が含まれている場合、対応する環境がワークスペースに自動的に選択されるようになりました。以前は、拡張機能はこれらの環境を正しく検出しましたが、デフォルトのグローバルインタープリターを選択していたため、ワークスペースに適切な環境を手動で選択する必要がありました。
現在、Python拡張機能は、環境と対応する構成ファイルの存在に基づいて、アクティブ化された環境を推測します。たとえば、pyenvの場合、拡張機能は.python-versionファイルを参照して、ワークスペースに適切なインタープリターを自動的に選択します。
Issue Reporterコマンドの改善
PythonとPython Debugger拡張機能は、私たちのリポジトリに問題を報告しやすくしました!Issue Reporterコマンド(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.enabledおよびnotebook.consolidatedRunButton設定を有効にします。
拡張機能作成
拡張機能のバグ報告にIssue Reporterコマンドを使用する
前回のイテレーションで、VS CodeのIssue Reporter経由でGitHubに提出する際に、拡張機能が追加データやテンプレートを提供する方法を完成させました。拡張機能は、ヘルプ: 問題を報告...コマンドからアクセスできるコマンドを提供できます。その拡張機能を選択すると、貢献されたコマンドが実行されます。この機能が拡張機能とどのように連携するかについての詳細は、問題報告のドキュメント/リリースノートをご確認ください!
さらに、インストールされているすべての拡張機能は、クイックオープンを介して迅速に報告できます。クイックオープン(⌘P (Windows, Linux Ctrl+P))でissue と入力することで、インストールされている拡張機能を迅速に選択または検索して報告できます。
特定の拡張機能は、この新しい問題報告フローの利用に移行を開始し、コマンドパレットに直接貢献されるカスタムのReport Issue...コマンドは不要になります。
プレビュー機能
ターミナルでの重複グリフのスケーリング
新しい設定terminal.integrated.rescaleOverlappingGlyphsが利用可能になり、これは後続のセルと重なるグリフを再スケーリングします。これは、基盤となるpty/unicodeバージョンが認識する文字とフォントグリフが一致しない可能性のある曖昧な幅の文字をカバーすることを意図しています。例えば、ほとんどのフォントでは、ローマ数字のUnicode文字(U+2160+)は通常複数のセルを占めるため、この設定が有効になっている場合は水平方向に再スケーリングされます。
再スケーリングなし

再スケーリングあり

再スケーリングのルールはまだ調整中であり、将来的に安定したらデフォルトで有効にすることを検討しています。この機能を試してみて、再スケーリングされるべきではない文字が再スケーリングされている場合は、問題を報告してください。
ローカルワークスペース拡張機能
ワークスペースに直接拡張機能をパッケージ化できるこの新しいプレビュー機能をご紹介できることを嬉しく思います。この機能は、特定のワークスペースのニーズに対応し、よりカスタマイズされた開発エクスペリエンスを提供するために設計されています。
この機能を使用するには、ワークスペース内の.vscode/extensionsフォルダに拡張機能をパッケージ化する必要があります。VS Codeは、この拡張機能をExtensionsビューのワークスペース推奨セクションに表示し、そこからユーザーがインストールできます。VS Codeは、この拡張機能をそのワークスペースにのみインストールします。また、ユーザーがこの拡張機能をインストールして実行する前にワークスペースを信頼する必要があります。
たとえば、VS Codeリポジトリ内のvscode-selfhost-test-provider拡張機能を考えてみましょう。この拡張機能はテスト機能を提供し、コントリビューターがワークスペース内で直接テストを表示および実行できるようにします。以下のスクリーンショットは、Extensionsビューのワークスペース推奨セクションにvscode-selfhost-test-provider拡張機能が表示され、インストールできることを示しています。

この機能は、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の「詳細を見る」プロパティ
今回のイテレーションでは、AuthenticationForceNewSessionOptionsにlearnMoreプロパティを指定できるようにする新しい提案されたAPIを追加しました。これは、オプションでforceNewSessionプロパティを指定してgetSessionを呼び出す場合、認証を要求する理由についてユーザーが詳しく知るためのURIを含めることができるという考えです。その例を次に示します。

コードでの表示は次のとおりです。
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プロパティにより、コメントビューでコメントスレッドを古くなったものとしてマークできるようになりました。

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

エンジニアリング
Electron 28へのアップデート
今回のイテレーションでは、安定版リリースユーザー向けにElectron 28へのアップデートを推進しています。このアップデートには、Chromium 120.0.6099.291とNode.js 18.18.2が含まれています。Insidersビルドでセルフホストし、早期のフィードバックを提供してくださった皆様に感謝いたします。
注目すべき修正点
- 204886 シンプルなファイルピッカーで、異なるパスだが同じ名前のファイルを開くのが失敗する
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @RedCMD (RedCMD)
- @starball5 (スターボール)
- @the-coder-o (Abdul basit)
- @ArturoDent (ArturoDent)
プルリクエスト
vscodeへの貢献者
- @333fred (Fred Silberberg): 文字列または正規表現の一部である場合に空白をトリミングしない PR #198164
- @89netraM (Mårten Åsberg): 間隔設定の最終行番号をレンダリングする PR #207227
- @a-stewart (Anthony Stewart)
- QuickAccessでプレフィックスを変更する際にカーソルがジャンプするのを停止 - v2 PR #204702
- nls.mock.tsにILocalizedStringをエクスポートする PR #206449
 
- @akbyrd (Adam Byrd)
- 複数のカーソルが存在する場合のプライマリカーソルとセカンダリカーソルに別々の色を実装する PR #181991
- editor.action.focusNextCursorを、すべてのカーソルではなくプライマリカーソルを表示するように変更する PR #182148
 
- @AndreasBackx (Andreas Backx): スムーズスクロールLinux Waylandを修正。 PR #205122
- @andrewbranch (Andrew Branch): [typescript-language-features] autoImportFileExcludePatterns形式をWindowsで動作するように修正 PR #202762
- @andyscho (Andy Schoenberger): onDidChangeSelectedNotebooksのカーネルの購読者は1つだけ PR #204417
- @BABA983 (BABA): より良いテストサイドバーの再試行色 PR #207949
- @BrandonXLF (Brandon Fowler): ターミナルタブ画像アイコンのCSSコンテンツをオーバーライド PR #207220
- @BrookMaoDev (Brook Mao): editor.useTabStops設定の説明を改善 PR #206552
- @btwiuse: cli: code serve-webコマンドに--server-base-pathフラグを追加 PR #207932
- @BusinessDuck (Dmitriy Yurov): ブラウザの自動入力フォームイベントで'e.getModifierState is not a function'エラーを修正 PR #206883
- @cchanche (Clément Chanchevrier): ターミナルのリサイズ方向 PR #205015
- @CGNonofr (ロイク・マンジョンジャン)
- キーボードレイアウト検出を修正 PR #205193
- fullscreenコンテナの寸法検出を修正、bodyに直接ない場合 PR #205884
 
- @cpendery (Chapman Pendery)
- fix: ターミナル候補をファジースコアでソート PR #208486
- fix: キーバインディングがシェルに送信されるときにターミナル候補を表示しない PR #208523
- fix: 補完承認時にサジェストウィジェットが残る問題を修正 PR #208524
 
- @deyihu (hu de yi): エディターの貼り付けイベント結果をClipboardEventとして返す PR #192732
- @dgileadi (David Gileadi): Xcodeのようなミニマップセクションヘッダーを導入 PR #190759
- @futurist (James Yang): feat: IPCServerにipcLoggerとtimeoutDelayを追加 PR #193896
- @gjsjohnmurray (John Murray): 出力ビューからチャネルログレベルを設定可能にする PR #205159
- @harbin1053020115 (ermin.zem): fix: 組み込みのウォークスルーがない場合、初回起動時に最初の拡張機能ウォークスルーを選択する。 PR #207303
- @hickford (M Hickford): 行をソート: 何も選択されていない場合はすべての行をソート。 PR #200325
- @hsfzxjy (Xie Jingyi)
- 設定エディタのリストアイテムオーバーフローを修正 PR #206681
- ガターの中央クリックにログポイントを追加 PR #206684
 
- @IncognitaDev (Luis Sousa): Feat: CaseActionsにPascalCaseを追加 PR #206259
- @its-miroma (Miroma): デフォルトのYAML拡張機能を変更 PR #206447
- @jeanp413 (Jean Pierre): ブレッドクラムウィジェットが正しくリサイズされない問題を修正 PR #200591
- @jeremy-rifkin (Jeremy Rifkin): ルール内で状態アクセスを許可するようにMonarchの機能を拡張 PR #183463
- @jhasse (Jan Niklas Hasse): LineCommentCommandでtabSizeではなくindentSizeを使用する PR #193811
- @Krzysztof-Cieslak (Krzysztof Cieślak)
- インライン編集での削除のレンダリングにおけるオフバイワンエラーを修正 PR #205890
- インライン編集 - ぼかし時に進行中のリクエストをキャンセルするように確認 PR #206430
- インライン編集 - 新しい編集を要求する前に承認を確定するように確認 PR #206525
 
- @lusingander (Kyosuke Fujimoto): editor.cursorSurroundingLinesStyle設定の破損した説明を修正 PR #201482
- @mahmoudsalah1993 (Mahmoud Salah): diffエディターの場合、変更されたエディターを解決してcでテストを実行できるようにする... PR #206026
- @marrej (Marcus Revaj): # インライン補完ハンドルに部分的な受け入れタイプを追加 PR #202668
- @mkasenberg: searchEditor: シングルクリックでピークするオプションを追加 PR #204413
- @mroch (Marshall Roch): "拡張機能 [object Object] は不明です" を修正 PR #207764
- @NriotHrreion (NoahHrreion): ホバーウィジェットの予期しない位置を修正 PR #205502
- @orgads (Orgad Shaneh)
- トンネル: クエリ文字列に対してもポートマッピング検索を拡張(2回目) PR #204807
- トンネル: ポートマッピングのユニットテストを再追加 PR #207249
 
- @PmcFizz (Fizz): IActionDescriptor.preconditionの説明を更新 PR #176124
- @raphaelgpalma (Raphael Palma): 文法エラーを修正: 'But allow them if the are made from inside an…' PR #207584
- @rehmsen (Ole): ブラウザのサイドバイサイドビューでもresourceテレメトリをログに記録する。 PR #208196
- @russelldavis (Russell Davis): javascriptとtypescriptのdecreaseIndentPatternを修正 PR #201425
- @samdenty (Sam Denty): feat(web/lifecycleService): correct startupKind PR #206563
- @Sidebail (VLADIMIR VATSURIN): ファイル相対パスリンクを修正 PR #181475
- @SimonSiefke (Simon Siefke): fix: ノートブックbaseCellViewModelのメモリリーク PR #205499
- @solimant: GitHubブランド名の大文字小文字を尊重する PR #208503
- @thegecko (Rob Moran): Web拡張機能ホストが起動したときにextensionPathsを更新する PR #193849
- @vinistock (Vinicius Stock): Rubyコメントのinとwhenのインデント解除における偶発的なインデント解除を修正 PR #206132
- @yamachu (Yusuke Yamada): 検索結果で最も深いディレクトリのファイルを表示するように修正 PR #206609
- @Yesterday17 (Yesterday17): ジェスチャーイベントをノードの深さ順にディスパッチする PR #200612
- @yiliang114 (易良): webviewでコピー/カットコマンドが機能しない問題を修正 PR #206529
- @yutotnh (yutotnh): 単語操作における単語ロケールの認識サポートを追加 (#_50045) PR #203605
vscode-css-languageserviceへの貢献者
- @balaji-sivasakthi (Balaji Sivasakthi): feat: scssのホバーツールチップをサポート PR #367
vscode-eslintへの貢献者
- @JoshuaKGoldberg (Josh Goldberg ✨): feat: eslint.probe設定でjson, json5, jsoncをサポート PR #1787
- @remcohaszing (レムコ・ハズイング)
vscode-extension-samplesへの貢献
- @juliankasimir (Julian Kasimir): feat(lang): showQuickPick関数でドイツ語を英語に置き換える PR #983
vscode-hexeditorへの貢献
vscode-js-debugへの貢献者
- @Beanyy: 説明が設定されていない場合のリモートオブジェクトの数値0の書式設定を修正 PR #1968
- @mdh1418 (Mitchell Hwang): [CDP] DotnetDebuggerエラーイベントのテレメトリを送信する PR #1961
- @relief-melone (Relief.Melone): ビルドにプロキシサポートを追加 PR #1965
vscode-json-languageserviceへの貢献
- @denisw (Denis Washington): 入れ子になった末尾カンマの場合のソートエラーを修正 PR #223
vscode-pull-request-githubへの貢献者
- @ipcjs (ipcjs): fix: review.openLocalFileがキーボードからトリガーされるようにする。 PR #5840
- @mohamedamara1 (Mohamed Amara): IssueOverviewPanelのIDを修正 PR #5822
vscode-pylintへの貢献
- @MGasiewski: チルダをホーム環境に置換するロジックを追加 PR #524
vscode-python-debuggerへの貢献者
- @bersbersbers: launch.jsonスキーマを更新 PR #243
- @StephanTLavavej (Stephan T. Lavavej): タイポを修正 PR #217
debug-adapter-protocolへの貢献者
- @andyw8 (Andy Waite): Ruby LSPのアダプタリストを更新 PR #471
- @svaante (Daniel Pettersson): 実装ツールセクションにEmacs dapeパッケージを追加 PR #469
inno-updaterへの貢献
- @ChayimFriedman2 (Chayim Refael Friedman): 不要なunsafe impl Sendを削除 PR #25
language-server-protocolへの貢献者
- @asukaminato0721 (Asuka Minato)
- @iliaamiri (Ilia Abedianamiri): 要約段落の小さな誤字 PR #1903
- @lukaskesch (Lukas Kesch): footer.htmlの著作権表示年を2024年に更新 PR #1909
- @MariaSolOs (Maria José Solano): 診断メッセージにおけるMarkupContentサポートの仕様 PR #1905
- @oliviacrain (Olivia Crain): rnix-lspのサーバーエントリを削除 PR #1902
monaco-editorへのコントリビューション
- @jeremy-rifkin (Jeremy Rifkin): C++生文字列リテラルのハイライトのバグを修正 PR #4436
node-ptyへの貢献