2023年4月 (バージョン 1.78)
更新 1.78.1: この更新は、このセキュリティ問題に対処します。
更新 1.78.2: この更新は、これらの問題に対処します。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code 2023年4月リリースへようこそ。このバージョンには多くの更新があり、気に入っていただけることを願っています。主なハイライトは以下の通りです。
- アクセシビリティの改善 - スクリーンリーダーのサポートの改善、新しいオーディオキュー。
- 新しいカラーテーマ - 「モダン」なライトおよびダークカラーテーマがデフォルトになりました。
- プロファイルテンプレート - Python、Java、データサイエンスなどの組み込みテンプレート。
- ドロップセレクター - アイテムリンクをエディターに配置する方法を選択できます。
- スタンドアロンカラーピッカー - カラー形式の挿入または変更を行うカラーピッカーUI。
- ソース管理入力のクイックフィックス - 入力ボックスでスペルミスやその他のエラーを修正。
- Markdownのドラッグ&ドロップ動画 - Markdownファイルに簡単に動画タグを追加。
- ノートブックで画像を添付ファイルとして挿入 - 画像リンク、パス、または添付ファイルを選択。
- Git LFSとWeb用VS Code - 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)を使用してコマンド間をジャンプします。
- Set Selection Anchor、Select from Anchor to Cursor、および⇧PageUp (Windows, Linux Shift+PageUp)と⇧PageDown (Windows, Linux Shift+PageDown)によるページナビゲーションを使用します。
- 新しい場所に移動するコマンドを承認する前に、Accessible Viewでシンボルに移動 (⇧⌘O (Windows, Linux Ctrl+Shift+O))を使用する際に位置をプレビューします。
- 動的な更新が発生している間に出力と対話します。
ターミナルアクセシビリティヘルプメニュー
ターミナルのアクセシビリティヘルプメニューが、矢印キーでナビゲートできるようになりました。
差分エディターのオーディオキューの改善
VS Codeはオーディオキューをキャッシュするようになったため、一度だけロードすればよくなり、応答性が向上しました。また、差分エディターで使用されるトーンも改善されました。
行/列への移動のアナウンス
行/列へ移動... (⌃G (Windows, Linux Ctrl+G))が呼び出されると、スクリーンリーダーが関連する行の内容を読み上げるようになりました。
ワークベンチ
新しいデフォルトのカラーテーマ
新しい「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のExplorerまたはローカルオペレーティングシステムからビデオをドラッグできます。
HTML内のJavaScriptスクリプトブロックに対する厳密なヌルチェック
js/ts.implicitProjectConfig.strictNullChecks
設定を使用して、HTMLスクリプトブロック内のJavaScriptに対して厳密なヌルチェックを有効にできるようになりました。
厳密なヌルチェックが有効になっている場合、ホバーやその他のIntelliSense機能は、型がヌル許容であるかどうかを示します。たとえば、el
がHTMLElement | null
の型を持つようになったことに注目してください。これは、document.getElementById
がそのIDを持つ要素を見つけられない場合にヌルを返すためです。
テスト
連続実行が個々のテストで有効になりました。これには、連続実行をサポートし、前回のイテレーションで確定された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 コミットのサポートは、リポジトリのルートに、どのファイルタイプを Git LFS で保存するかを指定する .gitattributes
ファイルが既に存在する場合にすぐに利用できます。Git LFS を初めてリポジトリに設定するには、Git LFS ドキュメントを参照してください。
リモート開発
リモート開発拡張機能を使用すると、開発コンテナ、SSH またはリモートトンネル経由のリモートマシン、またはLinux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートをご覧ください。
また、VS Code Day のセッション「VS Code でどこでも開発」もチェックしてください。
拡張機能への貢献
Python
Jupyter 拡張機能がデフォルトでインストールされなくなりました
Jupyter 拡張機能は、Python 拡張機能と同時にデフォルトで自動インストールされなくなりました。この変更は、Jupyter 拡張機能がデフォルトでインストールされない、より高速なコンテナー作成プロセスを望んでいた開発コンテナーユーザーからのフィードバックに応えて行われました。
Python 拡張機能のみをリストする開発コンテナー定義があり、コンテナーで 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 プロジェクトの仮想環境を作成するための最小限のアプローチを提供します。仮想環境のような従来の起動スクリプトは備えていませんが、Python ディストリビューションで venv
モジュールが利用できない場合に、分離された環境を作成するための良い代替手段を提供します。
環境を作成コマンドは、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 Pull Requests と Issues
プルリクエストと課題の作成、管理、作業ができるGitHub Pull Requests and Issues拡張機能に、さらに進展がありました。主なハイライトは次のとおりです。
- プルリクエストにチームレビュアーを追加できるようになりました。
- デフォルトブランチをチェックアウトできるすべての場所で、
git.pullBeforeCheckout
設定が尊重されるようになりました。 - GitHubのファイルレベルのコメントがサポートされています。
その他のハイライトについては、拡張機能の0.64.0リリースに関する変更履歴を確認してください。
GitHub Copilot
注意: これらの機能は、GitHub Copilot Chat 拡張機能で利用可能です。
チャットエディター
GitHub Copilot Chat の最初のイテレーションでは、サイドバーでのチャットセッションが可能になりました。今回、同じチャットビューをエディターとして開くことをサポートします。これにより、チャットセッションの位置をウィンドウレイアウト内の任意の場所にカスタマイズできます。
チャットエディターは、コマンドInteractive Session: Open Editorを実行して開くことができ、他のエディターと同様にエディターグループ間を移動できます。
追加のコードブロックコマンド
コードブロックツールバーに、新しいコマンド新しいファイルに挿入とターミナルで実行が追加されました。これらは既存のコマンドコピーとカーソル位置に挿入の隣にあり、Copilotから返されたコード提案に対して迅速にアクションを実行するための追加オプションを提供します。
コードアクションとインラインチャット
エディターのチャットセッションが、クイックフィックスと統合されるようになりました。波線に対して電球を選択すると、Copilotを使用して修正または説明するオプションが表示されます。
コードアクションに加えて、インラインチャットもエディターのコンテキストメニューから利用できるようになりました。
インラインチャットモード
インラインチャットのさまざまなモードを変更する設定: inlineChat.editMode
が追加されました。
オプションは次のとおりです
live
- AI による提案された変更をエディターに直接適用します (デフォルト)。livePreview
- 変更を適用しますが、埋め込みの差分エディターでレンダリングします。preview
- 変更を分離された埋め込みの差分エディターで表示します。
コマンドパレットの類似コマンド
Copilot の機能により、コマンドパレットで類似のコマンド結果が表示されるようになりました。これを有効にするには、アクティブな Copilot サブスクリプションを持ち、チャットビューのプライベートプレビューに参加し、設定を適用する必要があります。
"workbench.commandPalette.experimental.useSemanticSimilarity": true
いくつか例を挙げます。
-
"turn on autosave" が自動保存の切り替えとして解釈される
-
"add function" に、拡張機能からの貢献を含む追加の結果が下部に表示される
-
最後に、結果がない場合は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 でコードアクションコマンドを解決する
CodeActionProvider
が resolveCodeAction
で CodeAction
のコマンドを遅延解決できるようになりました。以前は、コードアクションの編集のみが遅延解決できました。
コマンドの計算にコストがかかる場合、これにより CodeActionProvider
は、コードアクションが適用されるまでこの作業を延期できます。
エディター/行番号/コンテキストメニュー
editor/lineNumber/context
メニューが完成しました。これにより、拡張機能の作者は、エディターの行番号とグリフマージンに固定されたコンテキストメニューにアクションを貢献できます。このメニューに貢献されたアクションは、コマンド引数に行番号を受け取り、when
句で editorLineNumber
コンテキストキーを参照できます。
認証APIの改善
認証セッションの優先順位がワークスペースごとに認識されるように
複数のアカウントで同時にサインインすることをサポートする認証プロバイダー (Microsoft など) の場合、vscode.authentication.getSession
がcreateIfNone: true
で呼び出されると、ユーザーは使用するアカウントを選択するように求められます。
以前の動作
この優先順位は、vscode.authentication.getSession
がClearSessionPreference
フラグ付きで呼び出されるまで記憶されます。
新しい動作
この優先順位は、そのワークスペースでvscode.authentication.getSession
がClearSessionPreference
フラグ付きで呼び出されるまで、ワークスペースごとに記憶されます。
この動作は、拡張機能が異なるワークスペースで異なるアカウントを使用できるようにし、それらの優先順位が記憶されるようにするために導入されました。
注: この優先順位は拡張機能固有です。したがって、ある拡張機能が
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 Desktop にバンドルする準備ができました。Insiders ビルドで自己ホストし、早期フィードバックを提供してくださった皆様に感謝いたします。この更新には、Chromium 108.0.5359.215
および Node.js 16.17.1
が含まれています。
VS Code Day
VS Code Day 2023 の YouTube プレイリストですべてのハイライトを視聴できます。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): コメントに最大高さを設定し、垂直スクロールを追加 (#_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): 修正: diff エディタの矢印クリックでブレークポイントが有効になる 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 努力鸭): #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 (易良)
- 修正: #176763 をクローズ、vscode-web-playground の読み込み条件を変更 PR #176771
- chore: 間違ったサービス名を変更 PR #177954
- 修正: タイポ 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