2021年11月(バージョン 1.63)
Update 1.63.1: このアップデートでは、これらのセキュリティ問題に対処しています。
Update 1.63.2: このアップデートでは、これらの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code 2021年11月リリースへようこそ。このバージョンには多くのアップデートが含まれており、きっとご満足いただけると思います。主なハイライトは以下のとおりです。
- マーケットプレイスのテーマプレビュー - カラーテーマをインストールせずに試すことができます。
- 問題ナビゲーションの順序を設定 - 重大度またはファイル位置で次のエラーまたは警告に移動します。
- 画面キャストモードでコマンド名を表示 - キーボードショートカットとともにコマンド名を表示します。
- ノートブックの改善 - Markdownフォントサイズの調整、ファイルとURLのリンクサポートの改善。
- 不可視のUnicodeのハイライト - 不可視または紛らわしいUnicode文字をハイライトします。
- TypeScriptメソッドの補完 - インターフェースとオーバーライドメソッドをすばやく入力します。
- プレリリース拡張機能 - 拡張機能の新機能と修正を早期に試すことができます。
- 新しいJavaウェルカムエクスペリエンス - VS CodeでJavaを構成および学習するのに役立ちます。
- vscode.dev向けの拡張機能の増加 - VS Code for the Webの最近の追加機能を確認してください。
- SSHサーバー上のコンテナで作業 - 新しいリモート - SSH コンテナ内で再度開くコマンド。
これらのリリースノートをオンラインで読むには、更新情報(code.visualstudio.com)にアクセスしてください。
VS Codeチームのリリースパーティーで、このバージョンの新機能のハイライトをご覧ください。イベントの録画は、YouTubeチャンネルでご覧いただけます。
Insiders: 新機能をいち早く試したいですか? nightly Insidersビルドをダウンロードして、最新のアップデートが利用可能になり次第お試しください。
ワークベンチ
インストール前にテーマをプレビュー
マーケットプレイスで利用可能なテーマを、インストールする前にプレビューできるようになりました。[カラーテーマ]ドロップダウンリスト(⌘K ⌘T (Windows、Linux Ctrl+K Ctrl+T))から、[追加のカラーテーマを参照]を選択して、マーケットプレイスのテーマを一覧表示します。VS Code UIは、ドロップダウンリストをナビゲートすると、カラーテーマをプレビュー表示します。
テーマエントリでEnterキーを押して拡張機能をインストールします。
問題ナビゲーションの順序を設定
[次の問題へ移動](⌥F8 (Windows、Linux Alt+F8))および[前の問題へ移動](⇧⌥F8 (Windows、Linux Shift+Alt+F8))ナビゲーションの順序を定義できるようになりました。以前のバージョンでは、ナビゲーションの順序は重大度に基づいており、最初にエラー、次に警告、そして残りの問題へと進んでいました。新しい[問題: 並び替え順序](problems.sortOrder
)設定を使用すると、問題の重大度
または位置
で問題をナビゲートできます。"problems.sortOrder": "position"
を使用すると、5行目の警告は13行目のエラーよりも前に表示されます。
複数の言語に固有のエディター設定
複数の言語に対して、言語固有のエディター設定を一度に構成できるようになりました。次の例は、settings.json
ファイルでjavascript
言語とtypescript
言語の設定をまとめてカスタマイズする方法を示しています。
"[javascript][typescript]": {
"editor.maxTokenizationLineLength": 2500
}
自動2x2エディターグリッド
真の2x2グリッドエディターレイアウトは、[表示: グリッドエディターレイアウト (2x2)]コマンドを使用した場合にのみ可能でした。エディターを手動で分割して2x2グリッドに到達するまで分割すると、同じレイアウトを取得できるようになり、グリッドは自動的に真の2x2レイアウトにロックされます。
リストでのEscape処理の改善
リストとツリーでEscapeキーを押すと、選択範囲が単一の要素に縮小されてからクリアされるようになりました。
Webで検索が有効
VS Codeがブラウザで実行されている場合(以下の例ではgithub.dev)、Webビュー内で検索コントロールがサポートされるようになりました。
現在のブラウザAPIの制限により、検索の動作はデスクトップの場合とは少し異なります。たとえば、Webでは、VS Codeは現在の検索結果のみをハイライト表示できます。デスクトップでは、現在のファイル内のすべての結果がハイライト表示されます。
画面キャストモードでコマンド名を表示
画面キャストモードでキーボードショートカットを介してコマンドをトリガーするときに、コマンド名を表示するように選択できるようになりました。この動作を設定するには、[画面キャストモード: キーボードショートカット形式](screencastMode.keyboardShortcutsFormat
)設定を使用します。
プレリリース拡張機能
VS Codeは、拡張機能のプレリリースバージョンをサポートするようになり、プレリリースバージョンをインストールして、拡張機能からの最新の最先端機能を試すことができます。VS Codeは、プレリリースバージョンをインストールするために、拡張機能の[インストール]ドロップダウンメニューに[プレリリースバージョンのインストール]オプションを追加で表示します。
テーマ: GitHub Light Theme
インストールすると、拡張機能のプレリリースバージョンを使用しているかどうかがインジケーターで明確になります。
テーマ: GitHub Light Theme
すでにインストール済みの拡張機能のプレリリースバージョンがある場合は、簡単に切り替えることができます。
テーマ: GitHub Light Theme
更新された検索アクション
検索ビューの検索アクションは、エディターの検索アクションと同じスタイルを使用するようになりました。
ソース管理
クイックdiffで末尾の空白を無視
scm.diffDecorationsIgnoreTrimWhitespace
設定を使用して、左側のガターに表示されるSCMクイックdiff機能で末尾の空白を無視するように構成できるようになりました。
ノートブック
ノートブックでフォントサイズを調整
新しいnotebook.markup.fontSize
設定を使用すると、ノートブックMarkdownコンテンツのフォントサイズを制御できます。この設定のデフォルトは、現在のエディターのフォントサイズの120%です。
Markdownセルでの構文ハイライト
VS Codeは、Markdownセル内のフェンス付きコードブロックの構文ハイライトをサポートするようになりました。
ノートブックのファイルリンク
ノートブック内のMarkdownで、現在のワークスペース内の他のファイルにリンクできるようになりました。
/
で始まるリンクは、ワークスペースルートを基準に解決されます。./
で始まるリンク、またはファイル名だけで始まるリンクは、現在のノートブックを基準に解決されます。
ベアhttp(s)リンクノートブック
さらに、http
またはhttps
を含むMarkdownテキストは、自動的にリンクに変換されるようになりました。
これは、JupyterLabなどの他のノートブックレンダラーの動作と一致します。
ノートブックツールバーラベルの動的な可視性
notebook.globalToolbarShowLabel
をdynamic
に設定することにより、ノートブックツールバーは、アクションのラベルをエディターグループの幅に基づいて表示するかどうかを決定できます。最初に右端のアクショングループからラベルを非表示にし、次に左側のアクショングループからラベルを非表示にします。すべてのラベルが非表示になってもエディターグループが狭すぎる場合は、アクションがオーバーフローメニューに移動されます。
notebook.globalToolbarShowLabel
のその他の値は、always
とnever
になりました。
エディター
Unicodeのハイライト
ソースコード内のすべての一般的でない不可視文字が、デフォルトでハイライト表示されるようになりました。
さらに、ASCII文字と混同される可能性のある文字もハイライト表示されます。
不可視または紛らわしいUnicode文字をUnicodeスプーフィング攻撃にどのように使用できるかについては、「The Invisible JavaScript Backdoor」ブログ記事またはケンブリッジ大学の記事をご覧ください。
この機能は、フォントとロケールの設定に依存するため、考えられるすべてのUnicodeスプーフィング攻撃を検出するわけではないことに注意してください。また、あいまいな文字の検出はヒューリスティックに行われます。安全を期すために、VS Codeのワークスペースの信頼制限付きモードを使用してソースコードを確認する必要があります。信頼されていないワークスペースでは、すべての非ASCII文字がハイライト表示されるためです。
設定editor.unicodeHighlight.invisibleCharacters
、editor.unicodeHighlight.ambiguousCharacters
、またはeditor.unicodeHighlight.nonBasicASCII
をfalse
に設定すると、対応する機能を無効にできます。
個々の文字をハイライト表示から除外したり、コメントまたはテキスト内の文字を次の設定で除外したりできます。
editor.unicodeHighlight.allowedCharacters
- ハイライト表示しない特定の文字のリスト。editor.unicodeHighlight.includeComments
- コメント内の文字のハイライト表示を有効にします。
さらに、Markdownドキュメントはデフォルトでハイライト表示されません。
複数のホバープロバイダー
ドキュメントに複数のホバープロバイダーがある場合、プロバイダーの1つが結果を返すとすぐにホバーが表示され、残りのプロバイダーの結果が届くと更新されます。
以前 | 以後 |
---|---|
タスク
automationProfile設定
古い設定terminal.integrated.automationShell.*
は非推奨となり、新しいterminal.integrated.automationProfile.*
設定が追加されました。これにより、シェル、アイコン、色、シェル引数など、タスクに使用されるターミナルのプロパティをより自由に指定できます。
gulpfile.tsのサポート
組み込みのgulp拡張機能が、gulpfile.ts
ファイルからのタスクの検出をサポートするようになりました。
NPMスクリプトビューの改善
NPMスクリプトビューに、スクリプトに関する詳細情報が表示されるようになりました。
また、NPMスクリプトビューから除外するスクリプトを指定できる新しい設定npm.scriptExplorerExclude
もあります。
言語
TypeScript 4.5
VS Codeには、TypeScript 4.5が付属するようになりました。このアップデートでは、多くの新しい言語機能と、ツール改善およびバグ修正がもたらされています。
TypeScript 4.5の詳細については、TypeScriptブログをご覧ください。
メソッドシグネチャの補完
メソッドシグネチャの補完を使用すると、メソッドをすばやくオーバーライドし、インターフェースメソッドを実装できます。この機能を使用すると、クラス本体内にあるときに、スーパー クラスからのメソッドなどのメソッドの候補は、受け入れられるとメソッドのシグネチャ全体を挿入します。
TypeScriptを記述している場合、候補を受け入れると、シグネチャで参照されている型の必要なインポートもすべて追加されます。
この機能には、ワークスペースにTypeScript 4.5が必要であり、typescript.suggest.classMemberSnippets.enabled
およびjavascript.suggest.classMemberSnippets.enabled
を使用して有効/無効にできます。
JSX属性の補完
JavaScriptおよびTypeScriptでJSX属性を補完する場合、VS Codeは属性値を自動的に挿入するようになりました。
これらの補完の動作は、javascript.preferences.jsxAttributeCompletionStyle
およびtypescript.preferences.jsxAttributeCompletionStyle
を使用して構成できます。
設定値として可能なのは、
auto
- 属性のスタイルをその型に基づいて推測します。文字列はattr=""
を使用し、他の型はattr={}
を使用します。braces
- 常に中かっこを使用します。None
- 属性名のみを補完します。
古いTSバージョンでのセマンティックハイライトの削除
このアップデートでは、ワークスペースでTypeScript 4.1以前を使用している場合のセマンティックハイライトのサポートが削除されました。
TypeScript 4.2では、セマンティックハイライトがネイティブにサポートされるようになりました。以前のバージョンでは、セマンティックハイライトはVS Codeによって提供されるTypeScript言語プラグインとして実装されていました。プラグインを削除すると、保守および出荷するコードの量が削減されます。
Markdownプレビューカスタムエディター
[開き方]コマンドを使用して、MarkdownファイルをテキストではなくMarkdownプレビューとして表示するようにできます。
[Markdown: プレビューを開く]コマンドとは異なり、[開き方]は新しいエディタータブを開きませんが、代わりに、すでに開いているエディタータブの表示方法を変更します。ファイルをデフォルトのテキストビューに戻すには、再度[開き方]を使用します。
さらに、workbench.editorAssociations
設定を使用して、すべてのMarkdownファイルを自動的にプレビューとして開くようにVS Codeを構成できるようになりました。
"workbench.editorAssociations": {
"*.md": "vscode.markdown.preview.editor"
}
Markdownプレビューの増分更新
組み込みのMarkdownプレビューは、入力時に以前よりインテリジェントに自身を更新するようになりました。すべての更新でMarkdownプレビュードキュメント全体を置き換える代わりに、プレビューはDOM diffingを使用して、変更されたプレビュードキュメント内の要素のみを置き換えるようになりました。これにより、入力中に時々発生していたちらつきが軽減されます。
JSON言語インジケーター
JSONファイルで編集している場合、コンテンツが1つ以上のJSONスキーマに対して検証されたかどうかを示す言語インジケーター{}
が表示されるようになりました。インジケーターにカーソルを合わせると、検証状態とスキーマを開くためのリンクが表示されます。
JSONスキーマキャッシュ
スキーマストア(json.schemastore.org)からのJSONスキーマがローカルにキャッシュされるようになりました。これにより、ネットワーク帯域幅が節約され、オフラインでの作業に役立ちます。
Emmet [タグの削除]コマンドの改善
[Emmet: タグの削除]コマンドは、タグが削除前の行にある場合、タグを含む行と、該当する場合は余分な空行を削除するようになりました。また、削除するタグの間に空行がある場合、残りの行を適切に再インデントするようになりました。
VS Code for the Web
Azure Repos
今回のマイルストーンでは、Azure DevOpsエンジニアリングチームと協力して、Azure Reposの[ファイル]ハブに新しいキーボードショートカットを追加しました。[ファイル]ハブでリポジトリを閲覧しているときに、.
キーを押すと、https://vscode.devでリポジトリを開くことができます。
また、Azure Reposリポジトリへの新しいエントリポイントを追加しました。リモートピッカーの[リモートリポジトリを開く...]メニュー項目の下にある新しい[Azure Reposからリポジトリを開く...]メニュー項目を使用して、https://vscode.dev内からAzure Reposリポジトリに接続できるようになりました。
さらに、レガシーAzure DevOps URL形式(たとえば、https://<org>.visualstudio.com
)を使用して、URLの先頭にhttps://vscode.dev
を付けることで、vscode.devでAzure Reposリポジトリを開くことができるようになりました。
改善された[リモート]メニュー
3つの追加コマンドが[リモート]メニューに表示されるようになりました。
- [リモートワークスペースを閉じる] - ワークスペースを空のワークスペースに変更します。
- [Visual Studio Codeをダウンロード] - https://vscode.dokyumento.jp/downloadに移動します。
- [リポジトリへ移動] - ソース管理ホストWebサイトでリポジトリを開きます。たとえば、GitHubリポジトリの場合はhttps://github.comなどです。
拡張機能への貢献
Java
Extension Pack for Javaには、VS CodeでJavaを構成および学習するのに役立つ製品内ウェルカムエクスペリエンスが追加されました。チュートリアルでは、Javaランタイムと役立つフレームワークのインストール、プロジェクトのオープンとデバッグ、およびVS Code内でのテストの直接実行について説明します。
Javaのチュートリアルとユーザーガイド(https://vscode.dokyumento.jp/docs/java)も確認して、開始に役立ててください。
Jupyter
パフォーマンスの改善
Jupyterカーネル、特にPython
の起動に、多くのパフォーマンス改善が加えられました。以前にノートブックを開いたことがあるユーザーは、カーネルの起動時に2倍の高速化を実感できます。Python
カーネルの再起動も高速になるはずです。
パフォーマンスを向上させるために行われた変更の詳細については、次の問題を確認してください。
- ノートブックの起動エクスペリエンスを向上させるためのカーネルの事前ウォーミングのサポート。(#7903)
- CondaなどのPython環境のアクティブ化の高速化。(#8342)
- Jupyterの起動時にデフォルトカーネルを起動しないようにします。(#8185)
- IPyKernelを一度見つけたら、再度検索しないようにします。(#8196)
- カーネルの起動に
Jupyter
ランタイムが不要な場合は、Jupyter
パッケージを不必要に検索しないようにします。(#8350、#8352)
カーネル障害の処理の改善
Pythonパッケージのインストール時に!pip install
の使用に関する警告とともに、クイックフィックスが追加されました。クイックフィックスは、ユーザーが適切なコマンド%pip install
を選択するのに役立ちます。
実行中にカーネルの起動または停止に失敗した場合に、より適切で意味のあるエラーメッセージを提供するように、いくつかの改善が行われました。エラーは、問題を修正する方法の手順とともに、セルの出力に表示されるようになりました。これにより、ユーザーは問題を認識し、VS Codeの右下に表示されるエラーを見逃した場合でも、問題を修正できます。
Python
信頼されていないワークスペースと仮想ワークスペースの限定的なサポート
Python拡張機能は、信頼されていないワークスペース(「ワークスペースの信頼」を参照)または仮想ファイルシステム(たとえば、リモートGitHubリポジトリが開かれている場合)での限定的なサポートを提供するようになりました。このような場合、部分的なIntelliSenseのみが提供され、拡張機能の他の機能は利用できません。
- ホバー、同じファイル補完、およびprintなどの組み込みの補完は利用できますが、拡張機能は現在開いているファイルでのみ動作するように制限されています。
- 信頼されていないワークスペースの場合、Pylance言語サーバーのみがサポートされます。
- 仮想ワークスペースの場合、JediとPylanceのみがサポートされます。
[ステータスバー]の言語項目が更新され、これらの状況を示すようになりました。
モジュールの名前変更リファクタリング
PythonおよびPylance拡張機能を使用して、モジュールの名前をより簡単に変更できるようになりました。Pythonモジュールの名前を変更すると、コード全体でインポートと参照をすべて変更するかどうかを選択するように求められます。不明な場合は、最初に変更がどのように表示されるかをプレビューできます。自信がある場合は、[リファクタリングを適用]を選択するか、提案された変更を適用しない場合は[リファクタリングを破棄]を選択できます。
リモート開発
コンテナ、リモートマシン、またはWindows Subsystem for Linux(WSL)をフル機能の開発環境として使用できるようにするRemote Development拡張機能の作業が継続されています。
1.63の機能のハイライトには、以下が含まれます。
- SSHサーバーで作業しているときに、[コンテナ内で再度開く]コマンドを使用してコンテナ内のフォルダーを開くことができるようになりました。
- 改善されたポート転送セキュリティにより、安全でないポートが回避されます。
- 構成可能なWSL接続方法により、
wsl.exe
またはソケット接続を使用してサーバーと通信できます。 - 高度なコンテナ構成ビデオでは、プロジェクトのデフォルトの場所を変更する方法と、Windowsでパフォーマンスを向上させる方法について説明します。
新しい拡張機能とバグ修正については、Remote Developmentリリースノートをご覧ください。
GitHub Pull Requests and Issues
プルリクエストとIssueの作成、管理を可能にするGitHub Pull Requests and Issues拡張機能の作業が継続されています。拡張機能の0.34.0リリースのハイライトについては、changelogをご覧ください。
拡張機能の作成
更新されたAPI提案構造
API提案の管理方法を変更しました。以前は、すべての提案を含む単一のファイルvscode.proposed.d.ts
がありました。このファイルは大きくなり、拡張機能が使用している提案と、特定の提案がすでに安定版APIに含まれているかどうかを判断するのが困難でした。提案ごとにファイルが作成されるようになりました。
例:
vscode.proposed.languageStatus.d.ts
- 言語ステータス項目の提案。vscode.proposed.tabs.d.ts
- エディタータブとタブグループの提案されたAPI。
各提案には一意の名前があり、提案されたAPIを使用したい拡張機能は、それらの名前をpackage.json
にリストする必要があります。package.json
のenableProposedApi
プロパティは、新しいenabledApiProposals
に置き換えられました。これは、提案名の文字列配列であり、IntelliSenseと検証のサポートがあります。
API提案の更新されたフローは次のようになります。
- 試したい提案を見つけて、その名前を
package.json#enabledApiProposals
に追加します。 - 最新のvscode-dtsを使用して、
vscode-dts dev
を実行します。対応するd.ts
ファイルがワークスペースにダウンロードされます。 - 提案に対してプログラミングできるようになりました。
詳細な移行ガイドと移行例については、issue #136964をご覧ください。また、提案されたAPIの使用に関する制限は変更されていないことに注意してください。提案されたAPIを使用する拡張機能は公開できず、そのまま使用することはできません。
クイックピックAPIの改善
このイテレーションでは、VS Codeのクイックピック用のいくつかのAPIを最終決定しています。
QuickPickItemインラインボタン
豊富な入力エクスペリエンスを提供することは、拡張機能APIの目標であり、VS Codeのクイックピックの使いやすさを利用することで、強力でありながらシンプルなUIフローが可能になります。1つの追加機能として、拡張機能でQuickPickItem
の個々のボタンを追加できるようになりました。
ボタンをクリックすると、QuickPick
オブジェクトに存在するonDidTriggerItemButton
イベントがトリガーされます。拡張機能でこれらのボタンをどのように使用するかを楽しみにしています。
アイテムを更新するときにスクロール位置を保持する機能
QuickPickItem
にボタンを追加する機能に加えて、アイテムを更新するときにスクロール位置を保持することもできます。これは、「リストからこのアイテムを削除する」(たとえば、Ctrl/Cmd + P x
QuickPickItemButton)を実装したい拡張機能の一般的なユースケースです。
- 「リストからこのアイテムを削除する」(たとえば、Ctrl/Cmd + P
x
QuickPickItemButton)を実装します。 - 「このアイテムを何らかの方法で切り替える」(「スニペットを挿入」コマンドなど)を実装します。
- クイックピックでアイテムを非同期的にロードします。
window.createQuickPick()
から返されるQuickPick
オブジェクトのkeepScrollPosition
プロパティを使用すると、クイックピックのスクロール位置(cursorTop
)をリストの先頭に戻すかどうかを制御できます。
認証APIの改善
このイテレーションでは、VS Codeの認証に関連するいくつかのAPIを最終決定しています。
新しいセッションの作成を強制する
authentication.getSession()
を使用してセッションを取得する場合、一部のリソースでは有効であるが、他のリソースでは有効でない場合があり、サインインフローを再度実行することで、この状況を修正できる場合があります。
例として、GitHub Single Sign OnのSecurity Assertion Markup Language(SAML)サポートがあります。デフォルトでは、repo
スコープで生成されたトークンは、独自の個人用リポジトリにアクセスできます。ただし、GitHubのシングルサインオンが有効になっている組織に所属している場合は、その組織のリポジトリにアクセスする機能をセッションに明示的に許可する必要があります。
この例では、GitHub認証プロバイダーは、アクセスしようとしているものに対して適切にSAML処理されているトークンとそうでないトークンの違いを認識できません。そのため、その動作を修正するために、新しいセッションの作成を強制できるようになりました。
AuthenticationGetSessionOptions
には、ユーザーに再度サインインするように求めるforceNewSession
プロパティが含まれるようになりました。これをtrue
に設定すると、ユーザーには次のように表示されます。
よりわかりやすいメッセージをユーザーに表示する場合は、detail
文字列を持つオブジェクトを指定することもできます。
拡張機能がセッションを持っている場合は、サイレントにセッションを取得します。
一般的によく見られるパターンは、一部の拡張機能がアクティブ化されると、認証セッションが利用可能かどうかを確認することです。利用可能な場合は、それを使用してデータをプリロードし、後でパフォーマンスを向上させるために他のタスクを事前に実行します。これの欠点は、ユーザーがその拡張機能に認証セッションへのアクセスを許可していない場合、アカウントメニューにバッジが表示され、ユーザーにサインインを求めるメニューに項目が追加されることです。
これは一部のケースでは問題ありませんが、他のケースでは望ましくなく、ユーザーの画面を乱雑にします。これを支援するために、AuthenticationGetSessionOptions
にはsilent
という新しいプロパティがあり、拡張機能が要求したことを示すことなくセッションを要求できます。これにより、拡張機能はセッションを取得できる場合は必要なことを実行できますが、できない場合はユーザーに煩わされることはありません。
注: このAPIは、拡張機能が過去にセッションへのアクセスをすでに許可されている場合(つまり、「信頼できる拡張機能」である場合)にのみ、認証されたセッションを返します。拡張機能には、ユーザーが同意しなかったセッションは決して付与されません。
設定エディターの改善
順序付けられた設定
個々の設定は、order
フィールドで順序付けできるようになりました。順序付けられた設定は、常に同じカテゴリ内の順序付けられていない設定よりも前に表示され、順序付けは相対的です。
グループ化されていないカテゴリのサポート
設定は、特定のカテゴリではなく、メインの拡張機能ヘッダーの下にグループ化することもできます。これを行うには、カテゴリの1つのカテゴリタイトルを拡張機能の表示名と同じに設定します。
以下の例では、[構成サンプル]ヘッダーの直下に[Conf] > [言語: サイズを表示]設定があることに注意してください。
数値オブジェクトと整数オブジェクトのサポート
null許容でない数値/整数値を持つオブジェクトが、[設定]エディターでサポートされるようになりました。
executeCommandの新しい型シグネチャ
以前のバージョンのVS Codeでは、vscode.commands.executeCommand
は、常に未定義の可能性のある値のPromiseを返すように型付けされていました。
export function executeCommand<T>(command: string, ...rest: any[]): Thenable<T | undefined>;
ただし、すべてのコマンドがundefined
を返せるわけではありません。たとえば、アイテムの配列を返すコマンドは、通常、結果がない場合はundefined
ではなく空の配列を返します。このような場合、タイプコレクトコードを記述するには、醜いキャストを使用するか、不要なチェックを追加する必要がありました。
これを修正するために、executeCommand
の型指定をより明示的に更新しました。
export function executeCommand<T = unknown>(command: string, ...rest: any[]): Thenable<T>;
これは、コマンドが undefined
を返す可能性がある場合、型パラメータの一部として | undefined
を明示的に渡す必要があることを意味します。
vscode.commands.executeCommand<vscode.CallHierarchyItem | undefined>('vscode.prepareCallHierarchy', ...);
この変更は executeCommand
の型定義にのみ影響し、この関数の動作は変更しません。
exactOptionalPropertyTypes のための vscode.d.ts の更新
TypeScript の exactOptionalPropertyTypes
厳密性オプションをより良くサポートするために、vscode.d.ts
の型定義を更新しました。この作業には以下が含まれます。
- どのオプションのプロパティに
undefined
を代入できるかを明確にしました。 ?
と| undefined
の使用方法について、より一貫性を持たせました。
拡張機能で exactOptionalPropertyTypes
を使用している場合は、vscode.d.ts
の型定義に関する問題が発生した場合にお知らせください。
URI からの HTML カスタムデータ
カスタムデータを使用すると、ユーザーと拡張機能は新しい HTML タグと属性で HTML 言語サポートを拡張できます。
このリリースでは、HTML カスタムデータコントリビューションはドキュメント URI も受け入れるようになりました。ドキュメント URI を使用して、TextDocumentContentProvider からのドキュメントを介してランタイム時にカスタムデータを提供できます。
構成のデフォルトの上書き
package.json
の configurationDefaults
コントリビューションポイントを通じて、他の登録済み構成のデフォルトを上書きできるようになりました。たとえば、次のスニペットは、files.autoSave
設定のデフォルトの動作を、フォーカスが変更されたときにファイルを自動保存するように上書きします。
"configurationDefaults": {
"files.autoSave": "onFocusChange"
}
注: application
スコープまたは machine
スコープを持つ構成は上書きできません。
出力チャネルのコンテンツの置換
このマイルストーンでは、OutputChannel
オブジェクトの新しい replace
API が、出力チャネルのコンテンツを置換できるようになりました。
/**
* Replaces all output from the channel with the given value.
*
* @param value A string, falsy values will not be printed.
*/
replace(value: string): void;
workspaceContains のタイムアウト
グロブパターンで workspaceContains:
アクティベーションイベントを使用すると、VS Code はワークスペース内でファイル名検索を開始し、指定されたグロブパターンに一致するファイル名を検索します。一致するファイル名が見つかるとすぐに、拡張機能がアクティブ化されます。7 秒以内に一致するファイル名が見つからない場合、VS Code は検索をキャンセルし、拡張機能はアクティブ化されなくなります。
プレリリース拡張機能の公開
VS Code は、拡張機能の作成者が --pre-release
フラグを渡すことで、vsce
を介して拡張機能のプレリリース版を公開することをサポートするようになりました。これは、プレリリース版をインストールすることを選択したユーザーに最新機能を提供し、公式拡張機能リリース前に早期フィードバックを得ることができることを意味します。
vsce publish --pre-release
VS Code マーケットプレイスは、拡張機能のバージョンとして major.minor.patch
のみをサポートしており、semver
プレリリースタグはまだサポートしていません。したがって、拡張機能では、リリースバージョンには major.EVEN_NUMBER.patch
、プレリリースバージョンには major.ODD_NUMBER.patch
を使用することをお勧めします。例: リリースには 0.2.*
、プレリリースには 0.3.*
。VS Code は、利用可能な最も高いバージョンに拡張機能を自動更新するため、ユーザーがプレリリースバージョンを選択した場合でも、より高いバージョンでリリースされた拡張機能があれば、そのユーザーはリリースバージョンに更新されます。
プレリリース拡張機能の詳細については、プレリリース拡張機能のトピックを参照してください。
Language Server Protocol
対応する npm モジュールとともに、Language Server Protocol の新しい次期バージョンが公開されました。さまざまな小さな改善に加えて、新しいバージョンにはインライン値の提案された実装が含まれています。
Debug Adapter Protocol
出力イベントの新しい重要なカテゴリ
Debug Adapter Protocol の Output
イベントは、デバッギーの stdout および stderr ストリームと、デバッガーからデバッグコンソールへの情報メッセージを送信するために使用されます。このメッセージのストリームはユーザーが処理するには大量になる可能性があり、重要なものが見過ごされる可能性があります。このため、新しいカテゴリ important
が Output
イベントに追加されました。これは、デバッグアダプターが目立つ必要があり、ユーザーに見過ごされない重要なメッセージを表示するために使用できます。important
カテゴリは、クライアントが高視認性の UI (たとえば、ポップアップ通知など) で重要な情報を表示するためのヒントです。このカテゴリはヒントであるため、クライアントはヒントを無視して default
カテゴリ (console
) を想定する場合があります。
実行制御リクエストの明確化と改善
以前は、Debug Adapter Protocol は、すべての「実行制御」リクエスト (continue
、next
、stepIn
、stepOut
、stepBack
、reverseContinue
) が単一のスレッドで動作すると規定していましたが、実装はスレッド引数を無視してすべてのスレッドで動作することを決定できるとしていました。この曖昧な「単一スレッド」セマンティクスは実際には役に立たないため、通常、デバッグアダプターはより便利なものを実装しています。
- 他のスレッドを再開して自由に実行できるようにしながら、現在のスレッドをステップ実行する「step」リクエスト。
- すべてのスレッドを再開する「continue」リクエスト。
現在の仕様は実行制御リクエストには非現実的であるため、すべての実行制御リクエスト (continue
、next
、stepIn
、stepOut
、stepBack
、reverseContinue
) の仕様を、通常実装されているものと一致するように変更しました。
さらに、一部のデバッグアダプターには、「代替セマンティクス」が必要です。このセマンティクスでは、step
または continue
は現在のスレッドでのみ動作しますが、他のすべてのスレッドは中断状態に保たれます。この「代替動作」のために、新しいオプションの singleThread
プロパティがすべての実行制御リクエストに追加されました。対応する新しい機能 supportsSingleThreadExecutionRequests
は、実行制御リクエストが singleThread
プロパティをサポートしていることをクライアントに示すために、デバッグアダプターで使用する必要があります。
提案された拡張機能API
すべてのマイルストーンには、新しい提案された API が付属しており、拡張機能の作成者はそれらを試すことができます。いつものように、フィードバックをお待ちしています。提案された API を試す手順は次のとおりです。
- 試したい提案を見つけ、その名前を
package.json#enabledApiProposals
に追加します。 - 最新のvscode-dtsを使用して、
vscode-dts dev
を実行します。対応するd.ts
ファイルがワークスペースにダウンロードされます。 - 提案に対してプログラミングできるようになりました。
提案された API を使用する拡張機能を公開することはできません。次期リリースで破壊的変更が発生する可能性があり、既存の拡張機能を破壊することは決して望ましくありません。
QuickPickItem セパレーター
今回のイテレーションでは、拡張機能が提案された API (vscode.proposed.quickPickSeparators.d.ts
) を介して、Quick Pick にセパレーター (「カテゴリ」とも呼ばれます) を追加する機能を導入しています。これは、アイテムをグループ化したり、アイテム間に少しスペースを空けたりするのに役立ちます。
既存の Quick Pick にセパレーターを追加するには、既存のアイテムリストに新しい QuickPickItem
を追加し、QuickPickItem
の kind
プロパティを指定して、QuickPickItemKind.Separator
に設定します。
上記の例では、次のオブジェクトをアイテムリストに追加します。
{
label: 'APIs',
kind: QuickPickItemKind.Separator
}
kind
プロパティを指定しない場合、または QuickPickItemKind.Default
に設定した場合、アイテムは通常の QuickPickItem
として扱われます。
この API に関するフィードバックは、issue #74967 で提供してください。
注目すべき修正
- 5989 openssh を使用したリモート Windows マシンでタスクを実行できない
- 45629 Mac での Google 日本語入力 (IME) - サジェストがテキストと重なる
- 131345 デフォルト設定の非推奨警告で
\n
が json を壊す - 133521 nvm が既にインストールされているのにインストールを要求する
- 133623 フォーカスされたスレッドがもはや存在しない場合、デバッグツールバーが更新されない
- 134254 韓国語を入力できない。自己分割または欠落
- 134429 Zlib エラー: 無効な距離が遠すぎる
- 135838 より長い名前の別のファイルが存在する場合、ファイルを保存できない
- 136684 コールスタックアイテムが正しいコンテンツでタブを開かない
- 137012 VS Code 1.62.2(Universal) で js/jsx ファイルの Emmet が機能しない
- 138153 パフォーマンス: _removePropertiesWithPossibleUserInfo がレンダラーのロードコストの約 10% を占める
- 138302 パフォーマンス: 拡張機能が登録された後にのみエディター構成を更新する
- 138517 vscode.dev がプライベートリポジトリでブランチを切り替えられない
謝辞
最後に重要なことですが、VS Code のコントリビューターに感謝申し上げます。
Web 拡張機能
コードを Web 拡張機能として実行する拡張機能を有効にした拡張機能の作成者 (以下のリストは 11 月 2 日から 12 月 6 日の間)
- Material Icon Theme (lit fork) (abschill)
- Base64 Utils (Adrientoub)
- LS-Club (AdvantiSS)
- Apollo Workbench (Apollo GraphQL)
- A-SOUL 鼓励师 (AS042971)
- Django (Baptiste Darthenay)
- TOML Language Support (be5invis)
- Simple React Snippets (Burke Holland)
- MASM/TASM (clcxsrolau)
- Tree (CTC)
- Tree (Insiders) (CTC)
- Structured Data Templates (Daniel G. Taylor)
- Notepad Notebook (Devon7925)
- Of course I still log you (Diego Perez)
- Hello, DotNetJS! (Elringus)
- Excel Viewer (GrapeCity)
- FTL XML (hahn-kev)
- ECL Language (HPCC Systems)
- Graphviz Previewer Web (IJMacD)
- ImJoy (ImJoy Team)
- InterSystems ObjectScript (InterSystems Developer Community)
- Shader Toy (Web) (Jackson Kearl)
- Dark Light (Jakka Prihatna)
- React Native Mockups Explorer (jamsch)
- Quote List (jmviz)
- Vue Language Features (Volar) (Johnson Chu)
- Code Runner for Web (Jun Han)
- GZDoom ZScript (kaptainmicila)
- nginx.conf hint (Liu Yue)
- Loadmill (Loadmill)
- UUID Generator (ludwhe)
- CSS Formatter (Martin Aeschlimann)
- SnowScript JS (Mauricio Rojas)
- HLASM Browser dev (mbali)
- Template String Converter (meganrogge)
- Micro Focus COBOL (Micro Focus)
- Micro Focus Enterprise (Micro Focus)
- Cursor Align (Mike Moore)
- Cursor Trim (Mike Moore)
- Multi-Cursor Search (Mike Moore)
- numeric (neal.bkn)
- Toast (Nick Bradley)
- steris (numso)
- N/A (Orta)
- Wurst language support (peterzeller)
- ShowFlags (PEW's Corner)
- Folder Archiver (Philip Damianik)
- ZIP archive type (Philip Damianik)
- Open In Webview Web Extension (Project μ)
- Replace On (rioj7)
- Select By (rioj7)
- Powercursor (Rishov Sarkar)
- BrightScript Language (RokuCommunity)
- Script Assets (Saige)
- LinkMe (saswatbh)
- Drawing Editor (Seflless)
- Azure ML Remote Web (sevillal)
- vscode-cml (sevillal)
- Reflow Paragraph (Stephen Sigwart)
- Neon Dark Theme (Sudhan)
- Japanese Word Handler (Suguru Yamamoto)
- tldraw (tldraw)
- vscodevim-sneak-fork (vscodevim-sneak-fork)
- Expression2-LS (Vurv78)
- Weigl WEM | Script (Weigl Control LLC)
- GreyScript (WyattL)
- mplstyle (Matplotlib) (yy0931)
- OverPy (Zezombye)
- COBOL Folding (zokugun)
- Explicit Folding (zokugun)
- Zokugun Themes (zokugun)
Issue 追跡
Issue 追跡への貢献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- CodeCrazy-ywt (@CodeCrazy-ywt)
- Simon Chan (@yume-chan)
- ArturoDent (@ArturoDent)
- Lemmingh (@Lemmingh)
プルリクエスト
vscode
への貢献
- @adaex (Aex): 最新の seti-ui アイコンテーマへの更新 PR #136375
- @alex-brs: build/npm/preinstall: node バージョンのエラーメッセージを修正 PR #136794
- @filiptronicek (Filip Troníček): 引数
connectionToken
をconnection-token
にリネーム PR #136620 - @gjsjohnmurray (John Murray)
- QuickDiff の準備中にアクティビティバーの SCM に進行状況インジケーターを追加 PR #136969
- 設定の説明から単語が欠落 (fix #137027) PR #137028
- Accounts からの静かなログインで競合するスコープと commandId を回避 (fix #137601) PR #137613
- @grandeljay (Jay): PHP ステートメントから括弧を削除 PR #137447
- @Gvozd (Gvozd): 133348 エディターで検索を開いたときの oom を修正 PR #136554
- @jeanp413 (Jean Pierre)
- リモートターミナルエラーを修正: コマンド $setUnicodeVersion が見つかりません PR #136171
- リモートターミナルのタイトルがリロード時に復元されない問題を修正 PR #136176
- エラーを修正: ターミナルタブの名前を変更するときに再帰的なスプライスを実行できません PR #136177
- vscode サーバーを手動でビルドするときにファイルが不足する問題を修正 PR #137570
- @jherchen (Johannes Herchen): preinstall スクリプトを修正 PR #136638
- @JustinGrote (Justin Grote): booleanRegex を修正して 'true' および 'false' のみを正しく一致させる PR #137822
- @jzyrobert (Robert Jin): html-language-features のドキュメントとタスクを yarn に更新 PR #136543
- @laurentlb (Laurent Le Brun): 'expandLineSelection' を適切なアクションにする PR #135917
- @MalikIdreesHasanKhan (Malik Idrees Hasan Khan): タイプミスを修正 PR #135729
- @mamphis (Mattis Wacker): アクティブなデバッグ行 + ブレークポイントグリフの欠落を修正 PR #137471
- @mkantor (Matt Kantor): ドキュメントコメントのいくつかのタイプミスを修正 PR #137810
- @orange4glace: #fix: 108459 PR #108666
- @parched (James Duley): タスク構成エラーメッセージの文法を修正 PR #137898
- @pdrgds (Pedro Guedes): fix #131458 PR #136625
- @PEZ (Peter Strömberg)
- オプションを追加: スクリーンキャストオーバーレイにコマンドを含める PR #126742
- ショートカットキーのみを表示する設定を尊重する PR #136251
- @pohzipohzi (Zi How Poh): 次/前の問題にジャンプするためのオプションを追加 PR #135736
- @Pranomvignesh (Pranom Vignesh): キーバインディングのタイトルを修正 PR #123071
- @rudavko (Andrii): 既存の utils 関数を使用してコードの重複を削除 PR #137016
- @RyanAfrish7 (Afrish Khan S): マークダウンの img href を file から vscode-file に変更 PR #136687
- @SeriousBug (Kaan Genç): 拡張機能が組み込みのマークダウンプレビューボタンを無効にできるようにする PR #136273
- @sijakret: html-language-features: customData.html のテキストドキュメントプロバイダーサポート PR #137557
- @smcenlly (Simon McEnlly): 出力チャネル: 出力チャネルのレンダリングを改善する新しい replaceAll API PR #136402
- @suzmue (Suzy Mueller): フォーカスされたスレッドが存在しない場合はクリアする PR #133637
vscode-codicons
への貢献
- @Profesor08:
newline
アイコンを追加 PR #91
vscode-css-languageservice
への貢献
- @avigoldman (Avi Goldman):
kind
プロパティを尊重する PR #254
vscode-eslint
への貢献
- @asingh04 (Abhishek Singh): 既存の disable rule コメントを処理する PR #1261
vscode-extension-samples
への貢献
vscode-html-languageservice
への貢献
- @gustavnikolaj (Gustav Nikolaj): すべての src および href 属性で補完をトリガー PR #117
- @jzyrobert (Robert Jin): 属性タグの自動補完を追加 PR #116
vscode-json-languageservice
への貢献
- @gjsjohnmurray (John Murray): ホスト名、ipv4、ipv6 形式を検証 (#_100) PR #118
- @mati-o (Mati O): $ref を $id に修正 PR #107
- @Relequestual (Ben Hutton): JSON Schema draft 2020-12 はまだサポートされていないことを通知 PR #117
vscode-languageserver-node
への貢献
- @CodingDoll: engines フィールド node 14+ を修正 PR #862
- @fvclaus: 範囲が定義されていない場合、SymbolInformation の場所が失われる PR #849
- @hamirmahal (Hamir Mahal)
- @robertoaloi (Roberto Aloi): エラーメッセージのタイプミスを修正 PR #866
vscode-pull-request-github
への貢献
- @38elements (38elements)
- @burkeholland (Burke Holland): gist リポジトリを開くとフェッチエラーが発生する PR #2933
- @emtei (Mateusz Stopka): クローズまたはマージされた PR に対してレビューモードをアクティブ化しない PR #3021
- @taisph (Tais P. Hansen): bash で引用符が必要な生成されたブランチ名を修正 PR #3084
vscode-vsce
への貢献
- @microhobby (Matheus Castello):
libsecret
をDockerfile
に追加し、README
に依存関係を記載 PR #646
language-server-protocol
への貢献
- @doriath (Tomasz Zurkowski): 名前変更リクエストへの応答を明確にする PR #616
- @yxrkt: ResponseMessage.result は配列型にできる PR #1012
monaco-editor
への貢献
- @activeguild (j1ngzoue): 'browser-ems-vite-react' サンプルを追加 PR #2767
- @emojiiii (C.Y.Kun): ウェブサイトのプレイグラウンド上のいくつかのエラーを修正 PR #2779
- @MasterOdin (Matthew Peveler)
- @milahu: monaco.d.ts へのリンクを修正 PR #2769
- @Pranomvignesh (Pranom Vignesh): Semantic Tokens Provider のサンプルがドキュメントで壊れている PR #2764
- @rramo012 (Rafael Ramos): ドキュメントのリンクを修正 PR #2748