2023年4月 (バージョン 1.78)
更新 1.78.1: この更新プログラムは、このセキュリティ問題に対処します。
更新 1.78.2: この更新プログラムは、これらの問題に対処します。
ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code 2023年4月版へようこそ。このバージョンには、皆様に気に入っていただけることを願う多くの更新が含まれています。主なハイライトの一部を次に示します。
- アクセシビリティの改善 - スクリーンリーダーのサポートが向上し、新しいオーディオキューが追加されました。
- 新しいカラーテーマ - 「モダン」ライトおよびダークカラーテーマが既定になりました。
- プロファイルテンプレート - Python、Java、データサイエンスなどのための組み込みテンプレート。
- ドラッグ&ドロップセレクター - アイテムリンクをエディターにどのように配置するかを選択します。
- スタンドアロンカラーピッカー - カラー形式を挿入または変更するためのカラーピッカーUI。
- ソース管理入力のクイックフィックス - 入力ボックスで直接、スペルミスやその他のエラーを修正します。
- Markdownへのビデオのドラッグ&ドロップ - Markdownファイルに簡単にビデオタグを追加します。
- ノートブックで画像を添付ファイルとして挿入 - 画像リンク、パス、または添付ファイルから選択します。
- Git LFS と VS Code for the Web - Git Large File Storage を使用するリポジトリで vscode.dev を使用します。
- VS Code Day 2023 - YouTubeプレイリストでセッションを振り返りましょう。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
アクセシビリティ
Aria の冗長性設定
スクリーンリーダーのユーザーは、"accessibility.verbosity.diff-editor"
および "accessibility.verbosity.terminal"
の設定を使用して、機能の aria-label
からヒントを除外することで、冗長性を減らすことができます。
クイックピックエクスペリエンスの改善と統一
以前は、アクセシビリティモードのユーザーは、コマンドパレットやその他のクイックピックを操作する際に異なる動作を経験していました。アクセシビリティモードでは、完全にアクセス可能にするために、クイックピックの最初の項目は選択されませんでした。今回のイテレーションでは、新しい動作を導入し、アクセス可能でかつ高速なクイックピックワークフローを提供することで、すぐにEnterを押せるようになりました。
注: このアプローチのトレードオフの1つは、クイックピックで項目が選択されている場合、ARIAの制限により、クイックピック入力ボックスへのARIAの変更を聞くことができないことです。これらの変更を聞くには、リストの項目が選択されていない状態になるまでShift + Tabを押します。
ターミナル
ターミナルアクセシブルバッファーの改善
- ⌥↓ (Windows、Linux Alt+Down) および ⌥↑ (Windows、Linux Alt+Up) を使用してコマンド間をジャンプします。
- 選択アンカーの設定、アンカーからカーソルまで選択、および ⇧PageUp (Windows、Linux Shift+PageUp) および ⇧PageDown (Windows、Linux Shift+PageDown) を介したページナビゲーションを使用します。
- 新しい場所に移動するコマンドを承認する前に、アクセシブルビューでシンボルへ移動 (⇧⌘O (Windows、Linux Ctrl+Shift+O)) を使用する際に位置をプレビューします。
- 動的な更新が行われている間、出力と対話します。
ターミナルアクセシビリティヘルプメニュー
ターミナルのアクセシビリティヘルプメニューが、矢印キーで操作できるようになりました。
差分エディターのオーディオキューの改善
VS Codeはオーディオキューをキャッシュするようになり、一度だけロードすればよくなったため、応答性が向上し、差分エディターで使用されるトーンが改善されました。
行/列へ移動のアナウンス
行/列へ移動... (⌃G (Windows、Linux Ctrl+G)) が呼び出された際、スクリーンリーダーが関連する行の内容を読み上げるようになりました。
Workbench
新しいデフォルトのカラーテーマ
新しい「Dark Modern」と「Light Modern」テーマが、「Dark+」と「Light+」に代わって、新しいデフォルトのダークとライトのカラーテーマになりました。
プロファイルテンプレート
プロファイルを使用すると、現在のプロジェクトやタスクに応じて、エディターの拡張機能、設定、UI レイアウトをすばやく切り替えることができます。プロファイルの利用を始めるのに役立つよう、さまざまなプログラミング言語やシナリオ向けに厳選されたプロファイルであるプロファイルテンプレートを提供しています。プロファイルテンプレートはそのまま使用することも、独自のワークフローに合わせてさらにカスタマイズするための出発点として使用することもできます。
プロファイルテンプレートは、プロファイル > プロファイルの作成... ドロップダウンから選択します。
プロファイルテンプレートを選択すると、設定、拡張機能、その他のデータをレビューし、新しいプロファイルに含めたくない個々の項目を削除できます。
テンプレートに基づいて新しいプロファイルを作成した後、設定、拡張機能、またはUIへの変更はプロファイルに保持されます。
グリフ余白装飾のレンダリング改善
今月、エディターの余白に表示される装飾のレンダリングを改善しました。ブレークポイントやスタックフレームポインターなどのデバッグ関連の装飾は、常にエディターの行番号の隣にレンダリングされます。追加の装飾は、デバッグ関連の装飾の左側にレンダリングされます。これにより、テストの装飾やブックマークなど、同じ行に他の装飾がある場合でも、ブレークポイントを表示できます。クリックがまだ個々の装飾にスコープされていないことに注意してください。
画像プレビューから画像をコピーする
⌘C (Windows、Linux Ctrl+C) を使用するか、プレビュー内で右クリックしてコピーを選択することで、組み込みの画像プレビューから画像をコピーできるようになりました。コピーされた画像データは、VS Code または他のアプリケーションに貼り付けることができます。
エディター
ドロップセレクター
VS Code では、Shift を押しながらドラッグ&ドロップすることで、ファイルやコンテンツをテキストエディターにドロップできます。今回の更新では、このコンテンツをファイルにどのように挿入するかを変更できる UI を追加しました。例えば、画像を Markdown ファイルにドロップした後、このコントロールを使って、Markdown 画像、画像へのワークスペース相対パス、画像へのフルパスのいずれを挿入するかを切り替えることができます。
ドロップセレクターコントロールは、コンテンツをドロップしたときに、複数の挿入方法がある場合に常に表示されます。このコントロールは、クリックするか、⌘. (Windows、Linux Ctrl+.) を使用して開くことができます。ドロップセレクターは、入力を開始するか、カーソルを挿入されたテキストの外に移動するとすぐに消えます。"editor.dropIntoEditor.showDropSelector": "never"
を使用して、ドロップセレクターコントロールを完全に無効にすることもできます。
VS Code には、一般的なコンテンツ形式をドロップするための組み込みの方法がいくつか含まれています。拡張機能は、DocumentDropEditProvider
API を使用して独自のドロップオプションを追加することもできます。
スタンドアロンカラーピッカー
色を挿入および置換するために、スタンドアロンのカラーピッカーを起動できるようになりました。カラーピッカーを開くには、コマンドパレットからスタンドアロンカラーピッカーを表示またはフォーカスを選択します。
拡張機能によって色や色の形式が提供されていない場合、カラーピッカーはCSS形式の色にフォールバックします。また、すべてのファイルタイプでCSS形式の色のインラインカラーデコレーターを視覚化できるようになりました。これらのデコレーターを表示するには、エディター: デフォルトカラーデコレーター (editor.defaultColorDecorators
) 設定を有効にします。
タイムゾーンオフセット用の新しいスニペット変数
新しいスニペット変数 CURRENT_TIMEZONE_OFFSET
が利用可能になりました。この変数は、現在のタイムゾーンオフセットを +HH:MM
または -HH:MM
形式 (例: -07:00
) で返します。これは、CURRENT_YEAR
、CURRENT_MONTH
、CURRENT_DAY_NAME
などの他の時間関連スニペット変数を補完します。
差分アルゴリズムの改善
VS Code では新しい差分アルゴリズムの改善を続け、古いアルゴリズムは非推奨となりました。古いアルゴリズムはまだ差分エディターの既定ですが、徐々に新しいアルゴリズムを既定として変更し、そのパフォーマンスを測定する予定です。
diffEditor.diffAlgorithm
を advanced
(新しい差分アルゴリズム) または legacy
(デフォルト) に設定することで、デフォルトを上書きできます。
新しいアルゴリズムは多くの場合でより良い差分を生成しますが、一部のドキュメントでは遅くなる可能性があります。
いくつか例を挙げます (レガシー vs. アドバンスト)
-
インデントを考慮して行挿入の差分を改善
-
スペースと区切り文字を考慮して単語挿入の差分を改善
-
差分の長さだけでなく、チャンクの数を最小限に抑えることで、より自然な差分を実現
-
単語の一部が大幅に変更された場合、文字レベルの差分を単語全体に拡張することでノイズを低減
ソースコードの差分作成、さらには差分の品質評価は難しい問題であり、まだ改善の余地があります。アルゴリズムがもっとうまくできると思う差分に遭遇した場合は、差分プレイグラウンドを試して、課題トラッカーにフィードバックやアイデアを共有してください。
インライン補完の改善
今回のイテレーションでインライン補完機能を書き換え、多くのバグを修正しました。
特に、単語の承認が複数行にわたって機能するようになり、新しいコマンド行の承認が追加されました。この機能をサポートするため、次の単語/行を承認する際に拡張機能に再度要求することはありません。これは、インライン補完プロバイダー拡張機能が、次の行のインライン補完を要求する際に、まったく異なる提案を報告することが多いためです。
拡張機能
拡張機能推奨通知の改善
拡張機能推奨通知に、推奨される拡張機能の発行元が表示されるようになりました。これにより、拡張機能をインストールする前に、より多くの情報に基づいた判断を下すことができます。以下の画像は、単一の拡張機能と複数の拡張機能の両方に推奨がある場合の新しい通知を示しています。
インストールされている非推奨の拡張機能に関する通知
非推奨の拡張機能がインストールされている場合、その旨を通知し、代替案を提案する通知が届くようになりました。これは、非推奨の拡張機能ごとに1回だけ表示されます。
ソース管理
ソース管理入力のクイックフィックス
コードアクションとクイックフィックスが、ソース管理のメッセージボックスでサポートされるようになりました。
例えば、Code Spell Checker 拡張機能は、ソース管理入力にスペル修正を追加します。拡張機能は、追加の修正とコードアクションを提供できます。
GitHub リポジトリのルールセット
VS Code では、git.branchProtection
設定を使用してブランチ保護を定義できます。今回のマイルストーンでは、最近発表されたGitHub リポジトリのルールセットを使用して、ブランチが保護されているかどうかを判断する新しい実験的な機能を追加しました。GitHub リポジトリのルールセットを使用している場合は、github.branchProtection
設定を使用してこの機能を有効にできます。
ノートブック
画像をノートブックにドラッグ&ドロップして添付ファイルを作成する
ノートブックの Markdown セルに画像ファイルをドラッグ&ドロップして、添付ファイルを作成できるようになりました。画像をドロップする際に、新しいドロップセレクターコントロールを使用して、画像を添付ファイルとして挿入を選択します。
これにより、画像へのリンクを追加するのではなく、ノートブックに画像を添付ファイルとして追加します。
ノートブックの出力スクロールの切り替え
コマンドノートブック: セル出力のスクロールを切り替え (⌘K Y (Windows、Linux Ctrl+K Y)) または切り詰めメッセージのリンクを使用して、個々のセルをスクロール可能な領域に出力を表示するように切り替えることができるようになりました。
検索コントロールの改善
ノートブックの検索コントロールが、デフォルトで視覚的に表示されているキーワードを検索するようになりました。ユーザーは、notebook.find.scope
設定を介して検索スコープ (Markdown ソース、Markdown プレビュー、コードソース、コード出力) を変更できます。さらに、一致するものを置換する場合、Markdown セルが編集可能なセルに変換されるため、置換を行うことができます。完了すると、セルは Markdown に戻され、プレビューが復元されます。
言語
Markdown ファイルにビデオをドラッグ&ドロップする
Markdown にビデオを挿入したいですか?エディターにドラッグして、Shift を押しながらファイルにドロップするだけです。
これにより、ビデオファイルを指す <video>
タグが挿入されます。VS Code のエクスプローラーまたはローカルのオペレーティングシステムからビデオをドラッグできます。
HTML内のJavaScriptスクリプトブロックに対する厳密なnullチェック
js/ts.implicitProjectConfig.strictNullChecks
設定を使用して、HTML スクリプトブロック内の JavaScript に対して厳密な null チェックを有効にできるようになりました。
厳密なnullチェックが有効になっている場合、ホバーやその他のIntelliSense機能は、型がnull許容である場合に表示されます。たとえば、el
が HTMLElement | null
の型を持つようになっていることに注目してください。これは、document.getElementById
がそのIDを持つ要素を見つけられない場合にnullを返すためです。
テスト
連続実行が個々のテストで有効にできるようになりました。これには、連続実行をサポートし、前回のイテレーションで確定した supportsContinuousRun
API を採用したテスト拡張機能が必要です。
Web 用 VS Code
Git Large File Storageにファイルをコミットする
Git Large File Storage (LFS) を使用すると、Git リポジトリに大きなファイルを効率的に保存できます。github.dev および vscode.dev は、GitHub でホストされているリポジトリの Git LFS にファイルをコミットすることをサポートするようになり、Git 用の LFS 拡張機能をローカルにインストールする必要なく、ブラウザーから簡単に更新できるようになりました。
github.dev および vscode.dev の LFS コミットサポートは、リポジトリのルートに .gitattributes
ファイルがすでに存在し、どのファイルタイプを Git LFS で保存するかを指定している場合に、すぐに機能します。初めて Git LFS のリポジトリをセットアップするには、Git LFS のドキュメントを参照してください。
リモート開発
Remote Development 拡張機能を使用すると、Dev Container、SSH を介したリモートマシン、リモートトンネル、またはLinux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。
新しい拡張機能の機能とバグ修正については、Remote Development のリリースノートで確認できます。
そして、VS Code Day のセッションどこでも VS Code で開発をご覧ください。
拡張機能への貢献
Python
Jupyter 拡張機能がデフォルトでインストールされなくなりました
Jupyter 拡張機能は、デフォルトで Python 拡張機能と一緒に自動的にインストールされなくなりました。この変更は、Dev Container ユーザーからのフィードバックに応じたものです。彼らは、Jupyter 拡張機能がデフォルトでインストールされていない、より高速なコンテナ作成プロセスを望んでいました。
Python 拡張機能のみをリストする Dev Container 定義があり、コンテナで Jupyter ノートブック機能を引き続き使用したい場合は、Jupyter 拡張機能 ID を devcontainer.json
ファイルに追加できます。
"customizations": {
"vscode": {
"extensions": ["ms-python.vscode-pylance", "ms-python.python", "ms-toolsai.jupyter"]
}
}
または、Python と Jupyter 拡張機能、およびその他の好きな拡張機能を含むプロファイルを作成することもできます。
microvenv を使用した環境作成コマンド
venv
パッケージがインストールされていない Python ディストリビューションを使用してPython: 環境を作成コマンドが呼び出された場合、Python 拡張機能はフォールバックとしてmicrovenvを使用するようになりました。これは、Unix ベースのシステムにプリインストールされている Python 環境にとって障害となる場合があります。
Microvenvは、Pythonプロジェクト用の仮想環境を作成するための最小限のアプローチを提供する軽量のPythonモジュールです。仮想環境のような従来の起動スクリプトは備えていませんが、venv
モジュールがPythonディストリビューションで利用できない場合に、分離された環境を作成するための良い代替手段を提供します。
環境の作成コマンドは、microvenv
を介して作成された環境にも pip
をインストールします。
フォーマッタ拡張機能の推奨
以前のリリースでは、Python ファイルのフォーマットをBlack Formatter および autopep8 の新しい拡張機能がLanguage Server Protocol (LSP) を介して Python 拡張機能と連携して提供することを発表しました。このリリースでは、Python 拡張機能の組み込みフォーマット機能を引き続き使用している場合、これらの新しい拡張機能をインストールするよう促す通知を表示します。
Python の実行アクションがサブメニューに移動
エディターを右クリックしたときに利用可能な Python コマンドを合理化するため、ターミナルで Python ファイルを実行 と Python ターミナルで選択/行を実行 コマンドが、Python を実行 エントリのサブメニュー項目になりました。
f-文字列の自動変換
新しい "python.analysis.autoFormatStrings"
設定が追加され、Pylance を使用する際に f-文字列の自動変換が有効になります。有効にすると、Pylance はクォート内で {
を挿入すると、文字列の先頭に自動的に f
を挿入します。
この設定のデフォルト値は現在無効になっていますが、肯定的なフィードバックがあれば、今後のリリースで有効になる予定です。この機能に関するコメントや提案がありましたら、お気軽にPylance GitHub リポジトリで共有してください。
パスを含む文字列でのコードナビゲーションが有効に
"python.analysis.gotoDefinitionInStringLiteral"
と呼ばれる別の新しい実験的設定があり、モジュールのような文字列リテラルからの定義へ移動を有効にします。これは、Django アプリケーションなどの Web アプリケーションで作業していて、文字列リテラルで定義されたモジュールやパスに移動したい場合に役立ちます。
この新しい設定は、先に述べた autoFormatStrings
設定と同様に、現在デフォルトで無効になっています。しかし、フィードバックに基づいて、今後のリリースでこの動作を有効にする予定です。最終的には、この設定を完全に削除する予定です。
Jupyter
再起動コマンド
Jupyter 拡張機能には、ユーザーがカーネルを再起動してセルを直接実行できる2つの新しいコマンドが含まれるようになりました。コマンドはカーネルを再起動してすべてのセルを実行とカーネルを再起動して選択したセルまで実行で、それぞれコマンドID jupyter.restartkernelandrunallcells
と jupyter.restartkernelandrunuptoselectedcell
を介してアクセスできます。
ビジー状態のリモート Jupyter カーネルへの再接続
以前のリリースでは、リモート Jupyter カーネルセッションに接続する際、Jupyter 拡張機能はカーネルがアイドル状態になるまで待機してから接続していました。カーネルが長時間実行される計算でビジー状態の場合、これは長い時間がかかる可能性がありました。このリリースでは、Jupyter 拡張機能はカーネルがビジー状態でもすぐに接続します。これにより、カーネルがビジー状態の間に中断できるようになります。
プラットフォーム固有の Jupyter 拡張機能
Jupyter 拡張機能は、プラットフォーム固有の拡張機能を出荷するようになり、各 VSIX は特定のプラットフォーム (Windows 64 ビット、Windows 32 ビット、Linux x64、Alpine x64、macOS Intel、macOS Apple Silicon など) 用にビルドされています。個々のプラットフォーム向けの Jupyter 拡張機能のダウンロードサイズが小さくなり、ダウンロード時間が短縮され、ディスクスペースの使用量が削減されました。
GitHub プルリクエストと課題
プルリクエストと課題の作業、作成、管理を可能にするGitHub プルリクエストと課題拡張機能に、さらなる進展がありました。主なハイライトは以下の通りです。
- プルリクエストにチームレビューアを追加できます。
- デフォルトブランチをチェックアウトできるすべての場所で、
git.pullBeforeCheckout
設定が尊重されるようになりました。 - GitHub のファイルレベルコメントがサポートされました。
その他のハイライトについては、拡張機能の0.64.0リリースの変更ログを確認してください。
GitHub Copilot
注: これらの機能は、GitHub Copilot Chat 拡張機能で利用できます。
チャットエディター
GitHub Copilot Chat の最初のイテレーションでは、サイドバーでのチャットセッションが可能になりました。今回、同じチャットビューをエディターとして開くことができるようになりました。これにより、チャットセッションの位置をウィンドウレイアウト内のどこでも好きな場所にカスタマイズできます。
チャットエディターを開くには、対話型セッション: エディターを開くコマンドを実行し、他のエディターと同様にエディターグループ間で移動できます。
追加のコードブロックコマンド
コードブロックツールバーに、新たに2つのコマンド「新規ファイルに挿入」と「ターミナルで実行」が追加されました。これらは既存のコマンド「コピー」と「カーソル位置に挿入」の隣にあり、Copilot から返されたコード提案に対して素早くアクションを実行するための追加オプションを提供します。
コードアクションとインラインチャット
エディターのチャットセッションは、クイックフィックスと統合されました。波線に電球が表示されたら、Copilot を使用して修正または説明するオプションがあります。
コードアクションに加えて、インラインチャットもエディターのコンテキストメニューから利用できるようになりました。
インラインチャットモード
インラインチャットのさまざまなモードを変更する設定 inlineChat.editMode
が追加されました。
オプションは次のとおりです
live
- AI が提案する変更をエディターに直接適用します (デフォルト)。livePreview
- 変更を適用しますが、埋め込み差分エディターでレンダリングします。preview
- 接続されていない埋め込み差分エディターで変更を表示します。
コマンドパレットの類似コマンド
Copilot の機能により、コマンドパレットで類似するコマンド結果を表示できるようになりました。これを有効にするには、アクティブな Copilot サブスクリプションがあり、チャットビューのプライベートプレビューに参加し、設定を適用する必要があります。
"workbench.commandPalette.experimental.useSemanticSimilarity": true
いくつか例を挙げます。
-
「自動保存をオンにする」が自動保存の切り替えとして解釈される。
-
「関数の追加」には、下部に拡張機能からの追加の結果が含まれます。
-
最後に、結果が何も見つからなかった場合、GitHub Copilot に質問することができます。これにより、フィルターボックスの内容が Copilot が処理する新しいチャットに送信されます。
この分野では引き続き改善を重ねていくので、ご期待ください!
プレビュー機能
TypeScript 5.1 サポート
このアップデートには、今後の TypeScript 5.1 リリースへのサポートが含まれています。TypeScript チームが現在取り組んでいることの詳細については、TypeScript 5.1 Beta ブログ記事とTypeScript 5.1 イテレーション計画を参照してください。エディターツールでの主なハイライトは以下の通りです。
- JSX タグのリンク編集サポート。
@param
JSDoc タグのスニペット補完。
TypeScript 5.1 ナイトリービルドの使用を開始するには、TypeScript Nightly 拡張機能をインストールします。
F2 を使用して一致する JSX タグの名前を変更する
JSX タグの名前変更をトリガーすると、VS Code はタグのすべての参照を更新しようとするのではなく、一致するタグのみの名前を変更するようになりました。
これには TypeScript 5.1+ が必要であり、HTML での名前変更の動作と一致します。
この動作は、javascript.preferences.renameMatchingJsxTags
および typescript.preferences.renameMatchingJsxTags
を使用して無効にできます。
拡張機能作成
ワークスペース編集で DataTransferFile から直接ファイルを作成できるようになりました
エディターへのドロップ API の主な用途の1つは、ドロップされたファイル/コンテンツをワークスペースに書き込むことです。しかし、以前の VS Code リリースでは、大きなファイルの場合、これがかなり遅くなる可能性がありました。これは、ファイルの内容がプロセス間で2回コピーされるためです。最初はレンダラーから拡張機能ホストにファイルの内容を読み取るため、次に拡張機能ホストからレンダラーにファイルを書き込むためです。
class CreateFileDropProvider implements vscode.DocumentDropEditProvider {
async provideDocumentDropEdits(
_document: vscode.TextDocument,
_position: vscode.Position,
dataTransfer: vscode.DataTransfer,
_token: vscode.CancellationToken
): Promise<vscode.DocumentDropEdit | undefined> {
const pngFile = dataTransfer.get('image/png')?.asFile();
if (!pngFile) {
return;
}
// Read file
// This results in the entire file contents being copied over to the extension host.
const contents = await pngFile.data();
// Now create a workspace edit that writes the file into the workspace
// This results in the same file contents from above being copied back again.
const additionalEdit = new vscode.WorkspaceEdit();
const path = vscode.Uri.joinPath(
vscode.workspace.workspaceFolders![0].uri,
'image.png'
);
additionalEdit.createFile(path, { contents });
const edit = new vscode.DocumentDropEdit(path.fsPath);
edit.additionalEdit = additionalEdit;
return edit;
}
}
これで、DataTransferFile
を WorkspaceEdit.createFile
に直接渡すことで、これらの余分なコピーを回避できるようになりました。
additionalEdit.createFile(path, { contents: pngFile });
これにより、特に大きなファイルを扱う場合に、パフォーマンスが大幅に向上するはずです。
resolveCodeAction で Code Action コマンドを解決する
CodeActionProvider
は、resolveCodeAction
で CodeAction
のコマンドを遅延解決できるようになりました。以前は、Code Action の編集のみが遅延解決可能でした。
コマンドの計算にコストがかかる場合、これにより CodeActionProvider
は、Code Action が適用されるまでこの作業を遅らせることができます。
editor/lineNumber/コンテキストメニュー
editor/lineNumber/context
メニューが正式にリリースされました。これにより、拡張機能の作者は、エディターの行番号とグリフ余白にアンカーされたコンテキストメニューにアクションを提供できるようになります。このメニューに提供されるアクションは、コマンド引数に行番号を受け取り、その when 句で editorLineNumber
コンテキストキーを参照できます。
認証APIの改善
認証セッションの優先順位がワークスペースごとに認識されるように
複数のアカウントで同時にサインインできる認証プロバイダー (Microsoft など) の場合、createIfNone: true
を指定して vscode.authentication.getSession
が呼び出されると、ユーザーに使用するアカウントを選択するよう求めるプロンプトが表示されます。
以前の動作
この優先設定は、ClearSessionPreference
フラグを指定して vscode.authentication.getSession
が呼び出されるまで記憶されます。
新しい動作
この優先設定は、そのワークスペースで ClearSessionPreference
フラグを指定して vscode.authentication.getSession
が呼び出されるまで、ワークスペースごとに記憶されます。
この動作は、拡張機能が異なるワークスペースで異なるアカウントを使用できるようにし、それらの設定を記憶できるようにするために導入されました。
注: 設定は拡張機能固有です。したがって、ある拡張機能が
vscode.authentication.getSession
を呼び出しても、別の拡張機能がvscode.authentication.getSession
を呼び出す際のセッション設定には影響しません。
デスクトップにおける Microsoft Sovereign Cloud のサポート
今回のイテレーションでは、新しい認証プロバイダー「Microsoft Sovereign Cloud
」をコア製品に導入しました。このプロバイダーは、Azure US Government、Azure China など、Microsoft Cloud for Sovereignty のユーザーを認証するためのものです。内部的には、Microsoft
認証プロバイダーとまったく同じように動作しますが、URL が異なります。この認証プロバイダーを使用したい場合、ユーザーに microsoft-sovereign-cloud.endpoint
の値を設定するよう誘導できます。この値にはいくつかのデフォルトがありますが、カスタムの Sovereign Cloud URL もサポートしています。
ほとんどのユーザーは Sovereign Cloud アカウントを持っていないことに注意してください。Sovereign Cloud をサポートしたい場合は、ユーザーが Sovereign Cloud を介してサインインできるようにすべきですが、ユーザーを混乱させないように、メインラインのワークフローの一部に含めないことをお勧めします。
提案されたAPI
すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。
- 試したい提案を見つけて、その名前を
package.json#enabledApiProposals
に追加します。 - 最新のvscode-dtsを使用して、
vscode-dts dev
を実行してください。これにより、対応するd.ts
ファイルがワークスペースにダウンロードされます。 - これで提案に対してプログラミングできます。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
複数の範囲をフォーマットする
DocumentRangeFormattingEditProvider
API には、複数の範囲を一度にフォーマットする機能をサポートするオプションの提案関数があります。この API を採用することで、プロバイダーは、言語サービスへの単一のリクエストだけで済むため、変更された範囲のフォーマットフローを改善できます。
ドキュメントドロップメタデータ
この新しい提案は、既存のエディターへのドロップAPIを強化し、新しいドロップセレクターをサポートします。プロバイダーはこれを使用して、より良いエディターへのドロップエクスペリエンスを提供できます。
この提案の最初の部分は、DocumentDropEdit
に label
プロパティを追加します。この人間が読めるラベルは編集内容を説明し、ドロップセレクターUIに表示されます。
2番目の部分は、registerDocumentDropEditProvider
に追加の metadata
引数を追加します。このメタデータ引数はプロバイダーを識別し、それが適用されるコンテンツの種類を VS Code に伝えます。
vscode.languages.registerDocumentDropEditProvider(
'markdown',
new InsertBase64ImageProvider(),
{
// Unique id that identities this provider
id: 'insertBase64Image',
// Array of mime types, such as `image/png` or `text/plain`, that this provider supports.
// You can also use wildcards, such as `image/*` which matches any image content that is dropped.
dropMimeTypes: ['image/*']
}
);
dropMimeTypes
配列は、関連するドロップコンテンツに対してのみプロバイダーが呼び出されるため、パフォーマンスの向上に役立ちます。
エンジニアリング
Electron 22 の更新
このマイルストーンでは、拡張機能ホストにカスタムアロケータを使用する実験を完了し、Electron 22 を VS Code デスクトップにバンドルする準備が整いました。Insiders ビルドで自己ホスティングし、早期フィードバックを提供してくださった皆様に感謝いたします。この更新には、Chromium 108.0.5359.215
および Node.js 16.17.1
が含まれています。
VS Code Day
VS Code Day 2023 YouTube プレイリストで、VS Code Day のすべてのハイライトを確認できます。そこには、GitHub Copilot、データサイエンス、TypeScript などのトピックに関するセッションに加え、Erich Gamma と Kai Maetzel による基調講演があり、チームがどのように VS Code を構築し、出荷しているかを説明しています。
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (スターボール)
- @tamuratak (田村 隆)
- @Kathund (Kath)
- @ArturoDent (ArturoDent)
プルリクエスト
vscode
への貢献者
- @a-stewart (Anthony Stewart): 非pngのコピーをサポートし、競合状態を避けるためにフォーカスを待つ PR #180322
- @andrewbranch (Andrew Branch): [typescript-language-features] 好みに応じて「定義へ移動」を「ソース定義へ移動」で置き換えるサポート PR #178840
- @c-claeys (Cristopher Claeys): multiRange フォーマットのサポートを追加 PR #163190
- @donaldnevermore (Donald33 Wang): カスタム switch-case インデントをサポート PR #179670
- @FlorentRevest (Florent Revest): デバッグセッション: キューを使用してデバッグ対象の状態が正しい順序で処理されるようにする PR #180410
- @gjsjohnmurray (John Murray): コメントにmax-heightを設定し、垂直スクロールを追加 (#_174629) PR #180044
- @hermannloose (Hermann Loose): 個々のコメントを下書きとしてマークすることを許可 PR #173305
- @iliazeus (Ilia Pozdnyakov): キーボードショートカットでF20-F24キーのサポートを追加 PR #179591
- @jeanp413 (Jean Pierre): リモート接続時に設定されたデフォルトシェルが使用されない問題を修正 PR #175844
- @jjaeggli (Jacob Jaeggli): アクセシビリティヘルプダイアログが支援技術のために意味論的マークアップを使用 PR #179726
- @KapitanOczywisty: PHP文法をフォークから更新 PR #180100
- @LakshyAAAgrawal (Lakshya A Agrawal): vscode.d.tsのタイプミスを修正 PR #177377
- @mahmoudsalah1993 (Mahmoud Salah): 単一のuserDataProfileContentH...を持つ場合にキーを正しく返す PR #178517
- @Mai-Lapyst: 任意のタスクを実行する際にonTaskType拡張機能がすべて誤って起動する問題を修正; #175821を修正 PR #178679
- @maxmmyron (Max): 修正: 差分エディターの矢印クリックでブレークポイントが有効になる PR #179130
- @mblout (Michael Blout): 呼び出しスタックの選択変更のためのデバッグAPIを追加 (63943) PR #179132
- @MonadChains (MonadChains): Issue 151220/現在のタイムゾーンオフセット変数を追加 PR #170518
- @simon04 (Simon Legner): terminalActions: "Open Last URL" PR #173217
- @SimonSiefke (Simon Siefke): 修正: mainThreadExtensionServiceでの拡張機能IDの表示 PR #179553
- @spahnke (Sebastian Pahnke): [Monaco] エディターの開く操作をインターセプトできるように、
monaco.editor.registerEditorOpener
メソッドを追加 PR #177064 - @sumneko (最萌小汐): Lua 文法を更新 PR #177798
- @tisilent (xie jialong 努力鸭): Fix #159471 PR #177961
- @tomheaton (Tom Heaton): フォルダが開いていない場合の
collapseAll
コマンドを修正 PR #180330 - @weartist (Han)
- 統合ターミナルと外部ターミナルの両方を開くサポートを追加... PR #168879
- breakpointWidgetが幅に自動調整されるようにサポートを追加... PR #179551
- #173481 のためにセルを削除する前に確認を追加 PR #179776
- @Wundero (Sam Riddle): 内部プロパティの代わりに定義済み変数を使用 PR #178701
- @yiliang114 (易良)
- fix: close #176763, vscode-web-playground の読み込み条件を修正 PR #176771
- chore: 間違ったサービス名を変更 PR #177954
- fix: タイプミス PR #179581
- @YinDongFang (dongfang): Firefox で「Window」キーが「unknown」として扱われる問題を修正 (#_175739) PR #175740
vscode-js-debug
への貢献者
vscode-json-languageservice
への貢献
vscode-pull-request-github
への貢献者
- @Balastrong (Leonardo Montini)
- @eastwood (Clinton Ryan): SSH設定ファイルが破損または不正な形式であるエラーを適切に処理する PR #4644
- @kabel (Kevin Abel)
- @ypresto (Yuya Tanaka): ワークスペース内のネストされたリポジトリで誤ったリポジトリURLを修正 (パーマリンクコピーを修正) PR #4711
monaco-editor
へのコントリビューション
- @dneto0 (David Neto): WebGPUシェーディング言語のトークナイザーとテストを追加 PR #3884
- @kisstkondoros (Tamas Kiss): OutlineAdapterのconvertメソッドにおける参照エラーを修正 PR #3924
- @tamayika: moduleResolutionをnode16に変更し、TS 5.0を採用 PR #3860
devcontainers/cli
への貢献
- @aaronlehmann (Aaron Lehmann): Docker認証ヘルパーのサポートを追加 PR #460