2024年3月 (バージョン 1.88)
バージョン1.88.1へのアップデート:このアップデートは、これらの課題に対応しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Codeの2024年3月リリースへようこそ。このバージョンには、気に入っていただけるであろう多くのアップデートが含まれており、主なハイライトをいくつかご紹介します。
- カスタムエディターラベルの適用 - 同じファイル名のエディターを区別します。
- ロックされたスクロール - 同期されたスクロールでエディターを並べて比較します。
- 拡張機能の更新の改善 - ウィンドウを再ロードせずに拡張機能を再起動し、VS Codeのリリースと同時に拡張機能を更新します。
- テストカバレッジAPI - VS Codeでのネイティブコードカバレッジのサポート。
- ミニマップ内の折りたたみマーカー - ミニマップからコードセクションを簡単に特定し、移動します。
- クイック検索の改善 - 固定ファイルパス区切り文字と区切りボタン。
- ノートブックのセクション内でセルを実行 - ノートブックのセクション内のすべてのセルをすばやく実行します。
- Copilotの改善 - インラインチャットUI、コミットメッセージ、および使用された参照の改善。
- Pythonの自動検出の改善 - Flask & Djangoの起動ファイルを検出し、Hatch環境を検出します。
- プレビュー: ターミナルインラインチャット - ターミナルから直接Copilotインラインチャットの会話を開始します。
これらのリリースノートをオンラインで読む場合は、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
に変更します。
アクティビティバーを上部に配置した場合の見た目と操作性も改善し、インターフェースの残りの部分と自然に調和するようにしました。
検索エディターのシングルクリック動作
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を更新した後にのみ有効になります。
コメント返信へジャンプ
コメントビューのコメントスレッドのコンテキストメニューに、コメントスレッドが返信を許可する場合に「返信」アクションが含まれるようになりました。これにより、返信入力ボックスにすばやくジャンプして返信を入力できます。
エディター
ミニマップのセクションヘッダー
ミニマップが、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でプレビュー)
検出されたリンクを開く機能の改善
検出されたリンクを開くコマンド(⇧⌘G(Windows、LinuxではCtrl+Shift+G))は、エディターでリンク結果をプレビューし、ターミナルでリンク元をハイライトするようになりました。
さらに、重複するリンクはリストからフィルタリングされ、すべてのリンクは一貫した形式で表示されるようになりました。
ワードリンクの追加コンテキスト
ワードリンクは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のキーバインディングでキーボードで選択およびコピーできます。
- スクロール可能な出力は、それぞれ上と下のキーバインディングでキーボードでスクロールできます。
- スクロール可能な出力の先頭と末尾へのスクロールは、それぞれ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
のみです。
リモート開発
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)
再実行とフィードバックのコントロールを再配置し、差分表示の切り替えコントロールを「承認」と「破棄」ボタンの横でより目立つようにしました。
テーマ: 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
ファイルを参照して、ワークスペースに適したインタプリタを自動的に選択します。
課題報告コマンドの改善
Python と Python 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.enabled
とnotebook.consolidatedRunButton
の設定を有効にします。
拡張機能作成
拡張機能のバグ報告に Issue Reporter コマンドを使用する
前回のイテレーションでは、VS CodeのIssue Reporterを介してGitHubに提出する際に、拡張機能が追加データやテンプレートを提供する方法を完成させました。拡張機能は、ヘルプ: 課題報告...コマンドからアクセスできるコマンドを提供できます。拡張機能を選択すると、貢献されたコマンドが実行されます。この機能が拡張機能でどのように機能するかの詳細については、課題報告ドキュメント/リリースノートをご確認ください!
さらに、インストールされているすべての拡張機能は、クイックオープンを介して迅速に報告できます。クイックオープン(⌘P(Windows、LinuxではCtrl+P))にissue
と入力すると、インストールされている拡張機能を迅速に選択または検索して報告できます。
一部の拡張機能は、この新しい課題報告フローの利用に移行し始め、コマンドパレットに直接寄与されるカスタムの課題報告...
コマンドは不要になります。
プレビュー機能
ターミナルでの重なり合うグリフのスケーリング調整
新しい設定terminal.integrated.rescaleOverlappingGlyphs
が利用可能になりました。これは、後続のセルと重なるグリフをスケーリング調整します。これは、バッキングのpty/Unicodeバージョンが想定する文字幅とフォントグリフが一致しない曖昧な幅の文字を対象としています。たとえば、ほとんどのフォントでは、ローマ数字のUnicode文字(U+2160+
)は通常複数のセルを占めるため、この設定を有効にすると水平方向にスケーリング調整されます。
リスケールなし
リスケールあり
リサイズが発生する条件のルールはまだ調整中であり、将来的に安定したらデフォルトで有効にすることを検討しています。この機能を試してみて、リサイズされるべきではない文字がリサイズされているのを見つけた場合は、課題を作成してください。
ローカルワークスペース拡張機能
ワークスペースに直接拡張機能をパッケージ化できる新しいプレビュー機能を導入できることを嬉しく思います。この機能は、特定のワークスペースのニーズに対応し、よりパーソナライズされた開発エクスペリエンスを提供するために設計されています。
この機能を使用するには、ワークスペース内の.vscode/extensions
フォルダーに拡張機能をパッケージ化する必要があります。VS Codeは、拡張機能ビューのワークスペースの推奨事項セクションにこの拡張機能を表示し、そこからユーザーがインストールできます。VS Codeは、この拡張機能をそのワークスペースに対してのみインストールします。また、ユーザーがこの拡張機能をインストールして実行する前にワークスペースを信頼する必要があります。
例えば、VS Codeリポジトリにあるvscode-selfhost-test-provider
拡張機能をご覧ください。この拡張機能はテスト機能をプラグインし、コントリビューターがワークスペース内で直接テストを表示および実行できるようにします。以下のスクリーンショットは、拡張機能ビューのワークスペース推奨事項セクションにある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 (ジョン・マレー)
- @IllusionMH (アンドリー・ディーイェフ)
- @RedCMD (レッドCMD)
- @starball5 (スターボール)
- @the-coder-o (アブドゥル・バシット)
- @ArturoDent (アルトゥーロ・デント)
プルリクエスト
vscode
への貢献者
- @333fred (フレッド・シルバーバーグ): 文字列または正規表現の一部である場合に空白をトリミングしない PR #198164
- @89netraM (モルテン・オスベリ): 間隔設定の最終行番号をレンダリングする PR #207227
- @a-stewart (アンソニー・スチュワート)
- QuickAccessでプレフィックスを変更したときにカーソルがジャンプしないようにする - v2 PR #204702
- nls.mock.tsでILocalizedStringをエクスポートする PR #206449
- @akbyrd (アダム・バード)
- 複数のカーソルがある場合のプライマリカーソルとセカンダリカーソルの色を個別に実装する PR #181991
- editor.action.focusNextCursorを、すべてのカーソルではなくプライマリカーソルを表示するように変更する PR #182148
- @AndreasBackx (アンドレアス・バックス): スムーズスクロールLinux Waylandを修正 PR #205122
- @andrewbranch (アンドリュー・ブランチ): [typescript-language-features] Windowsで動作するようにautoImportFileExcludePatterns形式を修正 PR #202762
- @andyscho (アンディ・シェーンベルガー): onDidChangeSelectedNotebooksのカーネル購読者は1つだけ PR #204417
- @BABA983 (BABA): テストサイドバーの再試行色を改善 PR #207949
- @BrandonXLF (ブランドン・ファウラー): ターミナルタブの画像アイコンのCSSコンテンツをオーバーライドする PR #207220
- @BrookMaoDev (ブルック・マオ): editor.useTabStops設定の説明を改善 PR #206552
- @btwiuse: cli:
code serve-web
コマンドに--server-base-pathフラグを追加 PR #207932 - @BusinessDuck (ドミトリー・ユーロフ): ブラウザの自動入力フォームイベントで「e.getModifierState is not a function」エラーを修正 PR #206883
- @cchanche (クレマン・シャンチェヴリエ): ターミナルのリサイズ方向 PR #205015
- @CGNonofr (ロイク・マンジョンジャン)
- キーボードレイアウト検出の修正 PR #205193
- 直接bodyにない場合のフルスクリーンコンテナの寸法検出を修正 PR #205884
- @cpendery (チャップマン・ペンデリー)
- 修正:ターミナルの提案をファジースコアでソートするようにする PR #208486
- 修正:キーバインディングがシェルに送信されるときにターミナルの提案を表示しないようにする PR #208523
- 修正:完了受け入れ時にサジェストウィジェットが持続する PR #208524
- @deyihu (hu de yi): エディターの貼り付けイベント結果はClipboardEventを返す PR #192732
- @dgileadi (デビッド・ギレディ): Xcodeのようなミニマップセクションヘッダーを導入 PR #190759
- @futurist (ジェームズ・ヤン): feat: IPCServerにipcLoggerとtimeoutDelayを追加 PR #193896
- @gjsjohnmurray (ジョン・マレー): 出力ビューからチャンネルのログレベルを設定可能にする PR #205159
- @harbin1053020115 (エルミン・ゼム): 修正: 組み込みのウォークスルーが存在しない場合、初回起動時に最初の拡張機能ウォークスルーを選択する。 PR #207303
- @hickford (M・ヒックフォード): 行のソート: 何も選択されていない場合はすべての行をソートする。 PR #200325
- @hsfzxjy (謝 景怡)
- 設定エディターリストアイテムのオーバーフローを修正 PR #206681
- ガターのミドルクリックでログポイントを追加 PR #206684
- @IncognitaDev (ルイス・ソウザ): Feat: CaseActionsにPascalCaseを追加 PR #206259
- @its-miroma (ミロマ): デフォルトのYAML拡張機能の変更 PR #206447
- @jeanp413 (ジャン・ピエール): パンくずリストウィジェットが正しくリサイズされない問題を修正 PR #200591
- @jeremy-rifkin (ジェレミー・リフキン): monarch機能を拡張して、ルール内で状態アクセスを許可する PR #183463
- @jhasse (ヤン・ニクラス・ハッセ): LineCommentCommandでtabSizeではなくindentSizeを使用する PR #193811
- @Krzysztof-Cieslak (クリストフ・チエシラク)
- インライン編集での削除箇所のレンダリングにおける1つずれたエラーを修正 PR #205890
- インライン編集 - ぼかし時に進行中のリクエストをキャンセルするようにする PR #206430
- インライン編集 - 新しい編集を要求する前に受け入れを完了するようにする PR #206525
- @lusingander (藤本 恭介):
editor.cursorSurroundingLinesStyle
設定の壊れた説明を修正 PR #201482 - @mahmoudsalah1993 (マフムード・サラ): diffエディターの場合、変更されたエディターを解決してcでテストを実行できるようにする... PR #206026
- @marrej (マーカス・レヴァイ): # インライン補完ハンドルに部分的な受け入れタイプを追加 PR #202668
- @mkasenberg: searchEditor: シングルクリックでピーク表示するオプションを追加 PR #204413
- @mroch (マーシャル・ロシュ): 「Extension [object Object] is not known」を修正 PR #207764
- @NriotHrreion (ノア・ハルレオン): ホバーウィジェットの予期しない位置を修正 PR #205502
- @orgads (オルガド・シャネー)
- トンネル: ポートマッピングのルックアップをクエリ文字列にも拡張 (その2) PR #204807
- トンネル: ポートマッピングの単体テストを再追加 PR #207249
- @PmcFizz (フィズ): IActionDescriptor.precondition desc を更新 PR #176124
- @raphaelgpalma (ラファエル・パルマ): 文法エラーの修正:「But allow them if the are made from inside an…」 PR #207584
- @rehmsen (オーレ): ブラウザのサイドバイサイドビューでも
resource
テレメトリーをログ記録する。 PR #208196 - @russelldavis (ラッセル・デイビス): javascriptとtypescriptのdecreaseIndentPatternを修正 PR #201425
- @samdenty (サム・デンティ): feat(web/lifecycleService): correct startupKind PR #206563
- @Sidebail (ヴラディミール・ヴァツリン): ファイル相対パスリンクの修正 PR #181475
- @SimonSiefke (サイモン・シーフケ): fix: notebook baseCellViewModelにおけるメモリリーク PR #205499
- @solimant: GitHubブランド名の大文字小文字を尊重する PR #208503
- @thegecko (ロブ・モラン): Web拡張機能ホストが起動したときにextensionPathsを更新 PR #193849
- @vinistock (ヴィニシウス・ストック): Rubyコメントの
in
とwhen
の字下げが意図せず削除される問題を修正 PR #206132 - @yamachu (山田 裕介): 検索結果で一番深いディレクトリにあるファイルを表示するように修正 PR #206609
- @Yesterday17 (イエスタデイ17): GestureEventをノードの深さ順にディスパッチする PR #200612
- @yiliang114 (易良): webviewでコピー/切り取りコマンドが機能しない問題を修正 PR #206529
- @yutotnh (yutotnh): 単語操作での単語ロケールの認識をサポートする (#_50045) PR #203605
vscode-css-languageservice
への貢献者
- @balaji-sivasakthi (バラジ・シヴァサクティ): feat: scssのホバーツールチップをサポート PR #367
vscode-eslint
への貢献者
- @JoshuaKGoldberg (ジョシュ・ゴールドバーグ ✨): feat: eslint.probe設定でjson, json5, jsoncをサポート PR #1787
- @remcohaszing (レムコ・ハズイング)
vscode-extension-samples
への貢献
- @juliankasimir (ジュリアン・カシミール): feat(lang): showQuickPick関数でドイツ語を英語に置き換える PR #983
vscode-hexeditor
への貢献
vscode-js-debug
への貢献者
- @Beanyy: 説明が設定されていない場合、リモートオブジェクトの数値0の書式設定を修正 PR #1968
- @mdh1418 (ミッチェル・ファン): [CDP] DotnetDebuggerエラーイベントのテレメトリーを送信 PR #1961
- @relief-melone (リリーフ・メロン): ビルドにプロキシサポートを追加 PR #1965
vscode-json-languageservice
への貢献
- @denisw (デニス・ワシントン): ネストされた末尾のコンマがある場合のソートエラーを修正 PR #223
vscode-pull-request-github
への貢献者
- @ipcjs (ipcjs): fix:
review.openLocalFile
がキーボードからトリガーされるのをサポートするようにする。 PR #5840 - @mohamedamara1 (モハメド・アマラ): IssueOverviewPanelのIDを修正 PR #5822
vscode-pylint
への貢献
- @MGasiewski: ティルダをホーム環境に置き換えるロジックを追加 PR #524
vscode-python-debugger
への貢献者
- @bersbersbers:
launch.json
スキーマを更新 PR #243 - @StephanTLavavej (ステファン・T・ラヴァヴェイ): タイプミスを修正 PR #217
debug-adapter-protocol
への貢献者
- @andyw8 (アンディ・ウェイト): Ruby LSP用アダプタリストを更新 PR #471
- @svaante (ダニエル・ペッターソン): Emacs dapeパッケージを実装ツールセクションに追加 PR #469
inno-updater
への貢献
- @ChayimFriedman2 (チャイム・ラファエル・フリードマン): 不要な
unsafe impl Send
を削除 PR #25
language-server-protocol
への貢献者
- @asukaminato0721 (明日香みなと)
- @iliaamiri (イリア・アベディアミリ): サマリー段落の小さなタイプミス PR #1903
- @lukaskesch (ルーカス・ケッシュ): footer.htmlの著作権年を2024年に更新 PR #1909
- @MariaSolOs (マリア・ホセ・ソラーノ): 診断メッセージでのMarkupContentサポートの仕様 PR #1905
- @oliviacrain (オリビア・クライン): rnix-lspのサーバーエントリを削除 PR #1902
monaco-editor
へのコントリビューション
- @jeremy-rifkin (ジェレミー・リフキン): C++生文字列リテラルのハイライトのバグを修正 PR #4436
node-pty
への貢献