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月リリースへようこそ。このバージョンには多くのアップデートがあり、気に入っていただけることを願っています。主なハイライトの一部を以下にご紹介します。
- マーケットプレイスでのテーマのプレビュー - Color Theme をインストールせずに試すことができます。
- 「問題」ナビゲーション順序の設定 - 重大度またはファイル位置で次のエラーまたは警告に移動します。
- スクリーンキャストモードでのコマンド表示 - キーボードショートカットとともにコマンド名を表示します。
- ノートブックの改善 - Markdown のフォントサイズ調整、ファイルおよび URL リンクのサポート向上。
- 不可視 Unicode のハイライト表示 - 不可視または混同しやすい Unicode 文字をハイライト表示します。
- TypeScript メソッドの補完 - インターフェースおよびオーバーライドメソッドを素早く入力できます。
- プレリリース拡張機能 - 拡張機能の新しい機能や修正を早期に試すことができます。
- 新しい Java ウェルカムエクスペリエンス - VS Code で Java を設定し、学習するのに役立ちます。
- vscode.dev 用のその他の拡張機能 - VS Code for the Web の最近の追加機能を確認してください。
- SSH サーバー上のコンテナーで作業 - 新しい Remote - SSH Reopen in Container コマンド。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
VS Code チームのリリースパーティーで、このバージョンの新機能のハイライトを視聴できます。イベントの録画は、弊社の YouTube チャンネルでご覧いただけます。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
ワークベンチ
インストール前のテーマプレビュー
マーケットプレイスで利用可能なテーマをインストール前にプレビューできるようになりました。カラーテーマのドロップダウン (⌘K ⌘T (Windows, Linux Ctrl+K Ctrl+T)) から、追加のカラーテーマを参照... を選択すると、マーケットプレイスのテーマが一覧表示されます。ドロップダウンを操作すると、VS Code の UI がカラーテーマをプレビューします。
テーマエントリで Enter を押すと、拡張機能がインストールされます。
「問題」ナビゲーション順序の設定
Go to Next Problem (⌥F8 (Windows, Linux Alt+F8)) および Go to Previous Problem (⇧⌥F8 (Windows, Linux Shift+Alt+F8)) のナビゲーション順序を定義できるようになりました。以前のバージョンでは、ナビゲーションの順序は重大度に基づいており、最初にエラー、次に警告、そして残りの順でした。新しい Problems: Sort Order (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)、webview 内で検索コントロールがサポートされるようになりました。
現在のブラウザ API の制限により、検索はデスクトップとは少し異なる動作をします。例えば、Web では 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
です。
エディター
Unicode のハイライト表示
ソースコード内のすべての一般的でない不可視文字が、デフォルトでハイライト表示されるようになりました。
さらに、ASCII 文字と混同されやすい文字もハイライト表示されます。
「The Invisible JavaScript Backdoor」ブログ記事またはケンブリッジ大学の記事で、不可視または混同しやすい Unicode 文字が Unicode スプーフィング攻撃にどのように使用されるかについて読むことができます。
この機能は、フォントやロケール設定に依存するため、すべての可能な 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: Open Preview コマンドとは異なり、Reopen With は新しいエディタータブを開くのではなく、既に開いているエディタータブの表示方法を変更します。ファイルをデフォルトのテキストビューに戻すには、再度Reopen Withを使用します。
さらに、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 Remove Tag コマンドの改善
Emmet: Remove Tag コマンドは、削除前にタグが単独の行にある場合、タグのある行と、該当する場合は余分な空白行も削除するようになりました。また、削除されるタグの間に空白行がある場合でも、残りの行が適切に再インデントされるようになりました。
Web 用 VS Code
Azure Repos
このマイルストーンでは、Azure DevOps エンジニアリングチームと協力して、Azure Repos のファイルハブに新しいキーボードショートカットを追加しました。ファイルハブでリポジトリを参照しているときに、.
キーを押すことでhttps://vscode.devでリポジトリを開くことができます。
また、Azure Repos リポジトリへの新しいエントリポイントも追加されました。これで、リモートピッカーのOpen Remote Repositories... メニュー項目の下にある新しいOpen Repository from Azure Repos... メニュー項目を使用して、https://vscode.dev内から Azure Repos リポジトリに接続できるようになりました。
さらに、従来の Azure DevOps URL 形式 (例: https://<org>.visualstudio.com
) の 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 のチュートリアルとユーザーガイドは、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 サーバーで作業している際に、Reopen in Container コマンドを使用してコンテナー内のフォルダーを開くことができるようになりました。
- 転送ポートのセキュリティが改善され、安全でないポートが回避されます。
- 設定可能な WSL 接続方法により、
wsl.exe
またはソケット接続を使用してサーバーと通信できます。 - プロジェクトのデフォルトの場所を変更する方法や、Windows でパフォーマンスを向上させる方法を網羅した高度なコンテナー構成ビデオ。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートをご覧ください。
GitHub Pull Requests and Issues
プルリクエストとissueの作成、管理、作業を可能にするGitHub Pull Requests and Issues拡張機能の開発は継続中です。ハイライトについては、拡張機能の0.34.0リリースの変更ログをご覧ください。
拡張機能作成
更新された 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 の QuickPick 用にいくつかの API を最終決定しています。
QuickPickItem インラインボタン
豊富な入力エクスペリエンスを提供することは、当社の拡張機能 API の目標であり、VS Code の Quick Pick の親しみやすさを使用することで、強力でありながらシンプルな UI フローが可能になります。追加された点の1つは、拡張機能が個々のQuickPickItem
にボタンを追加できるようになったことです。
ボタンをクリックすると、QuickPick
オブジェクトに存在するonDidTriggerItemButton
イベントがトリガーされます。拡張機能でこれらのボタンがどのように使用されるかを楽しみにしています。
項目の更新時にスクロール位置を維持する機能
QuickPickItem
にボタンを追加する機能に加えて、項目を更新する際にスクロール位置を維持したい場合もあるでしょう。これは、次のような拡張機能の一般的なユースケースです。
- 「この項目をリストから削除する」を実装する (例: Ctrl/Cmd + P
x
QuickPickItemButton)。 - 「この項目を何らかの方法で切り替える」を実装する (例: 「スニペットを挿入」コマンド)。
- Quick Pick で項目を非同期的に読み込む。
window.createQuickPick()
から返されるQuickPick
オブジェクトのkeepScrollPosition
プロパティを使用すると、Quick Pick のスクロール位置 (cursorTop
) がリストの先頭に戻るかどうかを制御できます。
認証 API の改善
今回のイテレーションでは、VS Code の認証に関連するいくつかの API を最終化しています。
新しいセッションの強制的な作成
authentication.getSession()
を使用してセッションを取得した場合、一部のリソースでは有効でも、他のリソースでは有効でない場合があります。サインインフローを再度実行することで、この状況を修正できます。
例としては、GitHub Single Sign On の Security Assertion Markup Language (SAML) サポートが挙げられます。デフォルトでは、repo
スコープで生成されたトークンは、自身の個人リポジトリにアクセスする機能を持っています。しかし、GitHub の Single Sign On が有効になっている組織に属している場合、その組織内のリポジトリにアクセスする機能をセッションに明示的に付与する必要があります。
この例では、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 の更新
TypeScript のexactOptionalPropertyTypes
厳密性オプションをより適切にサポートするために、vscode.d.ts
の型定義を更新しました。この作業には以下が含まれます。
- どのオプションプロパティに
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 は、拡張機能の作者がvsce
を通じて--pre-release
フラグを渡すことで、拡張機能のプレリリース版を公開することをサポートするようになりました。これにより、最新の機能をプレリリース版をインストールすることを選択したユーザーに提供し、公式リリース前に早期のフィードバックを得ることができます。
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
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
- 設定の説明から単語が欠落していたのを修正 (issue #137027 を修正) PR #137028
- アカウントからの静かなログインで競合するスコープと commandIds を避ける (issue #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: #修正: 108459 PR #108666
- @parched (James Duley): タスク設定のエラーメッセージの文法を修正。 PR #137898
- @pdrgds (Pedro Guedes): issue #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): Markdown の img href をファイルから vscode-file に変更 PR #136687
- @SeriousBug (Kaan Genç): 拡張機能が組み込みの Markdown プレビューボタンを無効にできるようにする 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): 既存の無効化ルールコメントを処理 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):
libsecret
をDockerfile
に追加し、README
に依存関係を記載 PR #646
language-server-protocol
への貢献者
- @doriath (Tomasz Zurkowski): rename リクエストへの応答を明確にする。 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 Sample が壊れている PR #2764
- @rramo012 (Rafael Ramos): ドキュメントリンクを修正 PR #2748