2021年11月 (バージョン 1.63)
アップデート 1.63.1: このアップデートでは、これらのセキュリティ問題に対処しています。
アップデート 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 Reopen in Container コマンド。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
このバージョンの新機能のハイライトを視聴するには、VS Codeチームのリリースパーティーをご覧ください。イベントの録画はYouTubeチャンネルでご覧いただけます。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
Workbench
インストール前のテーマのプレビュー
マーケットプレイスで利用可能なテーマをインストール前にプレビューできるようになりました。カラーテーマのドロップダウンメニュー(⌘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)設定を使用すると、問題のseverity(重大度)またはposition(位置)のいずれかで問題をナビゲートできます。"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)。

現在のブラウザAPIの制限により、検索の動作がデスクトップとは少し異なります。例えば、ウェブではVS Codeは現在の検索結果のみをハイライトできます。デスクトップでは、現在のファイル内のすべての結果がハイライトされます。
スクリーンキャストモードでコマンド名を表示
スクリーンキャストモードでキーボードショートカットを介してコマンドをトリガーする際に、コマンド名を表示するオプションが追加されました。この動作を設定するには、Screencast Mode: Keyboard Shortcuts Format (screencastMode.keyboardShortcutsFormat) 設定を使用します。

プレリリース拡張機能
VS Codeは拡張機能のプレリリースバージョンをサポートするようになり、ユーザーはそれらをインストールして、拡張機能の最新の最先端機能を試すことができます。VS Codeは、プレリリースバージョンをインストールするための拡張機能のインストールドロップダウンメニューに、追加のプレリリースバージョンをインストールオプションを表示します。

テーマ: GitHub Light Theme
インストールされると、インジケータによって拡張機能のプレリリースバージョンを使用していることが明確に示されます。

テーマ: GitHub Light Theme
既にインストールされている拡張機能のプレリリースバージョンがある場合、簡単に切り替えることができます。

テーマ: GitHub Light Theme
検索アクションの更新
検索ビューの検索アクションが、エディターの検索アクションと同じスタイルを使用するようになりました。
ソース管理
クイック差分でのトリム空白の無視
左側のガターに表示されるSCMクイック差分機能が、scm.diffDecorationsIgnoreTrimWhitespace設定を使用して、トリム空白を無視するように設定できるようになりました。
ノートブック
ノートブックのフォントサイズを調整する
新しいnotebook.markup.fontSize設定により、ノートブックのMarkdownコンテンツのフォントサイズを制御できます。この設定のデフォルト値は、現在のエディターのフォントサイズの120%です。
Markdownセルでの構文ハイライト
VS Codeは、Markdownセル内のフェンス付きコードブロックの構文ハイライトをサポートするようになりました。

ノートブック内のファイルリンク
ノートブック内のMarkdownが、現在のワークスペース内の他のファイルにリンクできるようになりました。
/で始まるリンクはワークスペースのルートからの相対パスとして解決されます。./で始まるリンク、またはファイル名のみで始まるリンクは、現在のノートブックからの相対パスとして解決されます。
生のhttp(s)リンクノートブック
さらに、httpまたはhttpsを含むMarkdownテキストが自動的にリンクに変換されるようになりました。

これは、JupyterLabのような他のノートブックレンダラーの動作と一致しています。
ノートブックツールバーラベルの動的な表示
ノートブックツールバーは、notebook.globalToolbarShowLabelをdynamicに設定することで、エディターグループの幅に基づいてアクションのラベルを表示するかどうかを決定できます。最初に右端のアクショングループからラベルが非表示になり、次に左側のアクショングループから非表示になります。すべてのラベルが非表示になってもエディターグループが狭すぎる場合、アクションはオーバーフローメニューに移動されます。
notebook.globalToolbarShowLabelのその他の値は、alwaysとneverになりました。
Editor
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 ドキュメントはデフォルトではハイライトされません。
複数のホバープロバイダー
ドキュメントに複数のホバープロバイダーがある場合、いずれかのプロバイダーが結果を返すとすぐにホバーが表示され、残りのプロバイダーの結果が届き次第更新されるようになりました。
| 以前 | 以後 |
|---|---|
タスク
automationProfile設定
古い設定terminal.integrated.automationShell.*は非推奨となり、新しいterminal.integrated.automationProfile.*設定が追加されました。これにより、シェル、アイコン、色、シェル引数など、タスクに使用されるターミナルのプロパティを指定する自由度が向上します。
gulpfile.tsのサポート
組み込みの gulp 拡張機能が、gulpfile.ts ファイルからのタスク検出をサポートするようになりました。
NPMスクリプトビューの改善
NPMスクリプトビューにスクリプトに関する詳細情報が表示されるようになりました。

また、新しい設定npm.scriptExplorerExcludeが追加され、NPMスクリプトビューから除外するスクリプトを指定できるようになりました。
言語
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プレビューカスタムエディター
再開 (Reopen With) コマンドを使用して、MarkdownファイルをテキストとしてではなくMarkdownプレビューとして表示できるようになりました。
Markdown: プレビューを開くコマンドとは異なり、再開コマンドは新しいエディタータブを開かず、既に開いているエディタータブの表示方法を変更します。再度再開コマンドを使用して、ファイルをデフォルトのテキストビューに戻すことができます。
さらに、workbench.editorAssociations設定を使用して、任意のMarkdownファイルをプレビューとして自動的に開くようにVS Codeを設定できるようになりました。
"workbench.editorAssociations": {
"*.md": "vscode.markdown.preview.editor"
}
Markdownプレビューの増分更新
組み込みのMarkdownプレビューは、入力中に以前よりもインテリジェントに更新されるようになりました。更新ごとにMarkdownプレビュードキュメント全体を置き換えるのではなく、プレビューはDOM差分を使用して、変更されたプレビュー内の要素のみを置き換えます。これにより、入力中に時々発生していたちらつきが軽減されます。
JSON言語インジケーター
JSONファイルを編集しているとき、コンテンツが1つ以上のJSONスキーマに対して検証されたかどうかを示す言語インジケーター{}が表示されるようになりました。インジケーターにカーソルを合わせると、検証状態とスキーマを開くリンクが表示されます。

JSONスキーマのキャッシュ
スキーマストア(json.schemastore.org)からのJSONスキーマがローカルにキャッシュされるようになりました。これにより、ネットワーク帯域幅が節約され、オフラインでの作業に役立ちます。
Emmetタグ削除コマンドの改善
Emmet: タグを削除コマンドは、タグが削除前にそれ自身の行にあった場合、タグを含む行と、該当する余分な空行を削除するようになりました。また、削除されるタグの間に空行がある場合でも、残りの行を適切に再インデントするようになりました。
Web 用 VS Code
Azure Repos
このマイルストーンでは、Azure DevOpsエンジニアリングチームと協力して、Azure Reposのファイルハブに新しいキーボードショートカットを追加しました。ファイルハブでリポジトリを参照しているときに、.を押すとhttps://vscode.devでリポジトリを開くことができます。
また、Azure Reposリポジトリへの新しいエントリポイントも追加しました。リモートピッカーのリモートリポジトリを開く...メニュー項目から、新しいAzure Reposからリポジトリを開く...メニュー項目を使用して、https://vscode.dev内からAzure Reposリポジトリに接続できるようになりました。
さらに、レガシーAzure DevOps URL形式(例:https://)のAzure Reposリポジトリを、URLの前にhttps://vscode.devを付けることで、vscode.devで開くことができるようになりました。
リモートメニューの改善
リモートメニューに3つの追加コマンドが表示されるようになりました。
- リモートワークスペースを閉じる - ワークスペースを空のワークスペースに変更します。
- Visual Studio Codeをダウンロード - https://vscode.dokyumento.jp/downloadに移動します。
- リポジトリに移動 - ソース管理ホストのウェブサイトでリポジトリを開きます (例: GitHubリポジトリの場合はhttps://github.com)。
拡張機能への貢献
Java
Extension Pack for Javaに、VS CodeでJavaを設定し、学習するのに役立つ製品内ウェルカムエクスペリエンスが追加されました。ウォークスルーでは、Javaランタイムと便利なフレームワークのインストール、プロジェクトのオープンとデバッグ、VS Code内での直接テストの実行について説明しています。

Javaを始めるのに役立つ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) をフル機能の開発環境として使用できます。
1.63の主要機能ハイライト
- SSHサーバー上で作業している際に、コンテナで再度開くコマンドを使ってコンテナ内のフォルダを開くことができるようになりました。
- 転送ポートのセキュリティが改善され、安全でないポートが回避されます。
- 設定可能なWSL接続方法により、サーバーとの通信に
wsl.exeまたはソケット接続を使用できます。 - コンテナの高度な設定に関するビデオでは、プロジェクトのデフォルトの場所を変更する方法やWindowsでのパフォーマンスを向上させる方法を解説しています。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートをご覧ください。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues拡張機能の開発が継続されており、プルリクエストやイシューの作業、作成、管理が可能です。ハイライトについては、拡張機能の0.34.0リリース用の変更ログを確認してください。
拡張機能作成
API提案構造の更新
API提案の管理方法を変更しました。以前は、すべての提案を含む単一のファイルvscode.proposed.d.tsがありました。このファイルは肥大化し、拡張機能がどの提案を使用しているか、特定の提案がすでに安定したAPIに含まれているかを判断するのが困難でした。現在、提案ごとに1つのファイルがあります。
例
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を使用する拡張機能は公開できず、そのまま使用することもできません。
Quick Pick APIの改善
今回のイテレーションでは、VS CodeのQuickPickに関するいくつかのAPIを確定しています。
QuickPickItemのインラインボタン
豊富な入力エクスペリエンスを提供できることは、私たちの拡張APIの目標であり、VS CodeのQuick Pickの使い慣れた操作を使用することで、強力でありながらシンプルなUIフローが可能になります。一つの追加として、拡張機能が個々のQuickPickItemにボタンを追加できるようになりました。

ボタンをクリックすると、QuickPickオブジェクトに存在するonDidTriggerItemButtonイベントがトリガーされます。皆様の拡張機能でこれらのボタンがどのように活用されるかを楽しみにしています。
アイテム更新時のスクロール位置維持機能
QuickPickItemにボタンを追加する機能に加えて、アイテムを更新するときにスクロール位置を維持したい場合もあるでしょう。これは、次のような拡張機能の一般的なユースケースです。
- 「リストからこのアイテムを削除」を実装する(例:Ctrl/Cmd + P
xQuickPickItemButton)。 - 「この項目を何らかの方法で切り替える」を実装する(例:「スニペットを挿入」コマンド)。
- Quick Pick でアイテムを非同期でロードする。
window.createQuickPick()から返されるQuickPickオブジェクトのkeepScrollPositionプロパティを使用すると、Quick Pickのスクロール位置(cursorTop)がリストの先頭に戻るかどうかを制御できます。
認証APIの改善
今回のイテレーションでは、VS Codeの認証に関連するいくつかのAPIを確定しています。
新しいセッションの作成を強制する
authentication.getSession()を使用してセッションを取得した場合、一部のリソースでは有効でも他のリソースでは無効な場合があります。この状況は、再度サインインフローを実行することで修正できます。
例としては、GitHubのシングルサインオンのセキュリティアサーションマークアップ言語 (SAML) のサポートがあります。デフォルトでは、repoスコープで生成されたトークンは、自身の個人リポジトリにアクセスする能力を持ちます。ただし、GitHubのシングルサインオンが有効になっている組織にいる場合、その組織内のリポジトリにアクセスする能力をセッションに明示的に付与する必要があります。
この例では、GitHub 認証プロバイダーは、アクセスしようとしているものに対して適切に SAML 化されたトークンとそうでないトークンの違いを認識できないため、その動作を修正するために、新しいセッションの作成を強制できるようになりました。
AuthenticationGetSessionOptionsにforceNewSessionプロパティが追加され、ユーザーに再度サインインを要求できるようになりました。これをtrueに設定すると、ユーザーは次のように表示されます。

ユーザーにさらに詳細なメッセージを表示したい場合は、detail文字列を含むオブジェクトを指定することもできます。
拡張機能がセッションを保持している場合、サイレントにセッションを取得する
よく見られるパターンとして、一部の拡張機能は、アクティベート時に利用可能な認証セッションがあるかどうかを確認します。セッションがあれば、それを使用してデータを事前にロードしたり、他のタスクを事前に実行したりして、後のパフォーマンスを向上させます。この欠点は、ユーザーがその拡張機能に認証セッションへのアクセスを許可していない場合、アカウントメニューにバッジが表示され、メニュー項目にユーザーにサインインを促す項目が追加されることでした。
これは一部のケースでは問題ありませんが、他のケースでは望ましくなく、ユーザーにとって画面が煩雑になります。これを解決するために、AuthenticationGetSessionOptionsにsilentという新しいプロパティが追加されました。これにより、拡張機能がセッションを要求したことを示す表示なしにセッションを要求できます。そうすることで、拡張機能はセッションを取得できる場合に必要なことを実行できますが、取得できない場合はユーザーを煩わせることはありません。
注: このAPIは、過去に拡張機能がセッションへのアクセスを許可されている場合にのみ認証済みセッションを返します(つまり、「信頼された拡張機能」です)。ユーザーが同意していないセッションが拡張機能に与えられることは決してありません。
設定エディタの改善
順序付けされた設定
個々の設定は、orderフィールドを使用して順序付けできるようになりました。順序付けされた設定は、同じカテゴリ内の順序付けされていない設定よりも常に前に表示され、順序は相対的です。
グループ化されていないカテゴリのサポート
設定は、特定のカテゴリではなく、メインの拡張機能ヘッダーの下にグループ化することもできます。そのためには、カテゴリのタイトルのいずれかを拡張機能の表示名と同じに設定します。
下の例で、Conf > Language: Show Size 設定がConfiguration Sample ヘッダーの直下にあることに注目してください。

数値と整数オブジェクトのサポート
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の更新
vscode.d.tsの型定義を更新し、TypeScriptのexactOptionalPropertyTypes厳密オプションをより適切にサポートするようにしました。この作業には以下が含まれます。
- どのオプションプロパティに
undefinedを割り当てられるかを明確にする。 ?と| undefinedの使い分けをより一貫させる。
拡張機能でexactOptionalPropertyTypesを使用している場合は、vscode.d.tsの型定義で問題が発生した場合はお知らせください。
URIからのHTMLカスタムデータ
カスタムデータを使用すると、ユーザーと拡張機能は新しいHTMLタグと属性でHTML言語サポートを拡張できます。
このリリースでは、HTMLカスタムデータ貢献もドキュメント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のタイムアウト
globパターンとworkspaceContains:アクティベーションイベントを使用する場合、VS Codeはワークスペース内でファイル名検索を開始し、提供されたglobパターンに一致するファイル名を探します。一致するファイル名が見つかり次第、拡張機能がアクティベートされます。7秒以内に一致するファイル名が見つからなかった場合、VS Codeは検索をキャンセルし、拡張機能はアクティベートされません。
プレリリース版拡張機能の公開
VS Codeは、拡張機能の作者が--pre-releaseフラグを渡すことで、vsceを介して拡張機能のプレリリース版を公開することをサポートするようになりました。これにより、最新機能をプレリリース版のインストールを選択したユーザーに提供し、正式な拡張機能リリース前に早期のフィードバックを得ることができます。
vsce publish --pre-release
VS Code Marketplaceは、拡張機能のバージョンにmajor.minor.patchのみをサポートしており、まだsemverプレリリースタグをサポートしていません。そのため、リリースバージョンにはmajor.EVEN_NUMBER.patchを、プレリリースバージョンにはmajor.ODD_NUMBER.patchを使用することをお勧めします。たとえば、リリースには0.2.*、プレリリースには0.3.*を使用します。VS Codeは拡張機能を利用可能な最新バージョンに自動更新するため、ユーザーがプレリリースバージョンを選択した場合でも、より高いバージョンでリリースされた拡張機能がある場合、そのユーザーはリリースされたバージョンに更新されます。
プレリリース版の拡張機能に関する詳細情報は、プレリリース拡張機能のトピックに記載されています。
Language Server Protocol
Language Server Protocolの新しい次のバージョンが、対応するnpmモジュールとともに公開されました。いくつかの小さな改善に加えて、新しいバージョンにはインライン値の提案された実装が含まれています。
Debug Adapter Protocol
Outputイベントの新しい重要なカテゴリ
Debug Adapter ProtocolのOutputイベントは、デバッグ対象のstdoutおよびstderrストリーム、およびデバッガーからの情報メッセージをデバッグコンソールに送信するために使用されます。このメッセージのストリームは、ユーザーが処理するには多く、重要なものが見過ごされてしまう可能性があります。このため、Outputイベントに新しいカテゴリimportantが追加されました。これはデバッグアダプターが、ユーザーに見過ごされてはならない重要なメッセージを目立つように表示するために使用できます。importantカテゴリは、クライアントが重要な情報を非常に視認性の高いUI(ポップアップ通知など)で表示するためのヒントです。このカテゴリはヒントであるため、クライアントはこのヒントを無視してdefaultカテゴリ(console)を想定する場合があります。
実行制御要求の明確化と改善
以前のDebug Adapter Protocolでは、「実行制御」要求(continue、next、stepIn、stepOut、stepBack、reverseContinue)はすべて単一のスレッドで動作するが、実装はスレッド引数を無視してすべてのスレッドで動作することを選択できると規定されていました。この曖昧な「単一スレッド」のセマンティクスはあまり有用ではないため、通常、デバッグアダプターはより有用なものを実装しています。
- 現在のスレッドをステップ実行しながら、他のスレッドを再開して自由に実行できるようにする「ステップ」要求。
- すべてのスレッドを再開する「続行」要求。
現在の仕様は実行制御要求にとって実用的ではないため、すべての実行制御要求(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エラー: invalid distance too far back
- 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)
問題追跡
問題追跡への貢献者
- 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
- アカウントからのサイレントログインでの競合するスコープとコマンドIDを回避(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): docコメント内のいくつかのタイプミスを修正 PR #137810
- @orange4glace: #fix: 108459 PR #108666
- @parched (James Duley): タスク構成エラーメッセージの文法を修正。 PR #137898
- @pdrgds (Pedro Guedes): #131458を修正 PR #136625
- @PEZ (Peter Strömberg)
- オプションの追加: スクリーンキャストオーバーレイにコマンドを含める PR #126742
- ショートカットキーのみ表示する設定を尊重する PR #136251
- @pohzipohzi (Zi How Poh): 次/前の問題にジャンプするためのオプションを追加 PR #135736
- @Pranomvignesh (Pranom Vignesh): キーバインディングタイトルを修正 PR #123071
- @rudavko (Andrii): 既存のユーティリティ関数を使用してコードの重複を削除 PR #137016
- @RyanAfrish7 (Afrish Khan S): Markdownのimg hrefをファイルからvscode-fileに変更 PR #136687
- @SeriousBug (Kaan Genç): 拡張機能が組み込みのMarkdownプレビューボタンを無効にできるようにする PR #136273
- @sijakret: html-language-features: customData.htmlのテキストドキュメントプロバイダーサポート PR #137557
- @smcenlly (Simon McEnlly): output channel: output channelのレンダリングを改善するための新しい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): 既存の無効化ルールコメントを処理する 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: rangeが定義されていない場合、SymbolInformationのLocationが失われる 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):
Dockerfileにlibsecretを追加し、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