に参加して、VS Code の AI 支援開発について学びましょう。

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

アップデート 1.88.1: このアップデートでは、これらの問題に対処しています。

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


Visual Studio Code 2024年3月リリースへようこそ。このバージョンには多くのアップデートがあり、気に入っていただけることを願っています。主なハイライトの一部を以下に示します。

これらのリリースノートをオンラインで読みたい場合は、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に変更します。

また、アクティビティバーが上部に配置されたときの外観も改善し、インターフェイスの残りの部分と自然に調和するようにしました。

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

Editor

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

ミニマップは、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 でプレビュー)

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

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

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+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)

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

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ファイルを参照して、ワークスペースに適切なインタープリターを自動的に選択します。

Issue Reporterコマンドの改善

PythonPython 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+)は通常複数のセルを占めるため、この設定が有効になっている場合は水平方向に再スケーリングされます。

再スケーリングなし

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は、この拡張機能をExtensionsビューのワークスペース推奨セクションに表示し、そこからユーザーがインストールできます。VS Codeは、この拡張機能をそのワークスペースにのみインストールします。また、ユーザーがこの拡張機能をインストールして実行する前にワークスペースを信頼する必要があります。

たとえば、VS Codeリポジトリ内のvscode-selfhost-test-provider拡張機能を考えてみましょう。この拡張機能はテスト機能を提供し、コントリビューターがワークスペース内で直接テストを表示および実行できるようにします。以下のスクリーンショットは、Extensionsビューのワークスペース推奨セクションに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への貢献

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

© . This site is unofficial and not affiliated with Microsoft.