に参加して、VS Code の AI 支援開発について学びましょう。

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月リリースへようこそ。このバージョンでは、皆様に気に入っていただける多くのアップデートが行われています。主なハイライトは以下の通りです。

これらのリリースノートをオンラインで読みたい場合は、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ファイルでjavascripttypescriptの言語設定を一緒にカスタマイズする方法を示しています。

"[javascript][typescript]": {
  "editor.maxTokenizationLineLength": 2500
}

自動2x2エディターグリッド

真の2x2グリッドエディターレイアウトは、ビュー: グリッドエディターレイアウト (2x2) コマンドを使用する場合にのみ可能でした。これで、エディターを手動で分割して2x2グリッドに到達するまで、同じレイアウトを取得でき、グリッドは自動的に真の2x2レイアウトにロックされます。

リストでのEscapeキーの処理の改善

リストやツリーでEscapeを押すと、選択がクリアされる前に単一の要素に縮小されるようになりました。

Web上での検索有効化

VS Codeがブラウザで実行されている場合、ウェブビュー内で検索コントロールがサポートされるようになりました(以下の例ではgithub.dev)。

Find widget on github.dev

現在のブラウザAPIの制限により、検索の動作がデスクトップとは少し異なります。例えば、ウェブではVS Codeは現在の検索結果のみをハイライトできます。デスクトップでは、現在のファイル内のすべての結果がハイライトされます。

スクリーンキャストモードでコマンド名を表示

スクリーンキャストモードでキーボードショートカットを介してコマンドをトリガーする際に、コマンド名を表示するオプションが追加されました。この動作を設定するには、Screencast Mode: Keyboard Shortcuts Format (screencastMode.keyboardShortcutsFormat) 設定を使用します。

Screencast mode with command names along with keystrokes

プレリリース拡張機能

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

Pre-Release install dropdown

テーマ: GitHub Light Theme

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

Pre-Release version indication

テーマ: GitHub Light Theme

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

Switch to Pre-Release version button

テーマ: GitHub Light Theme

検索アクションの更新

検索ビューの検索アクションが、エディターの検索アクションと同じスタイルを使用するようになりました。

ソース管理

クイック差分でのトリム空白の無視

左側のガターに表示されるSCMクイック差分機能が、scm.diffDecorationsIgnoreTrimWhitespace設定を使用して、トリム空白を無視するように設定できるようになりました。

ノートブック

ノートブックのフォントサイズを調整する

新しいnotebook.markup.fontSize設定により、ノートブックのMarkdownコンテンツのフォントサイズを制御できます。この設定のデフォルト値は、現在のエディターのフォントサイズの120%です。

Markdownセルでの構文ハイライト

VS Codeは、Markdownセル内のフェンス付きコードブロックの構文ハイライトをサポートするようになりました。

A fenced code block in a notebook with syntax highlighting

ノートブック内のMarkdownが、現在のワークスペース内の他のファイルにリンクできるようになりました。

/で始まるリンクはワークスペースのルートからの相対パスとして解決されます。./で始まるリンク、またはファイル名のみで始まるリンクは、現在のノートブックからの相対パスとして解決されます。

さらに、httpまたはhttpsを含むMarkdownテキストが自動的にリンクに変換されるようになりました。

A link automatically created from Markdown text

これは、JupyterLabのような他のノートブックレンダラーの動作と一致しています。

ノートブックツールバーラベルの動的な表示

ノートブックツールバーは、notebook.globalToolbarShowLabeldynamicに設定することで、エディターグループの幅に基づいてアクションのラベルを表示するかどうかを決定できます。最初に右端のアクショングループからラベルが非表示になり、次に左側のアクショングループから非表示になります。すべてのラベルが非表示になってもエディターグループが狭すぎる場合、アクションはオーバーフローメニューに移動されます。

notebook.globalToolbarShowLabelのその他の値は、alwaysneverになりました。

Editor

Unicodeハイライト

ソースコード内のすべての一般的な不可視文字がデフォルトでハイライトされるようになりました。

Unicode Highlighting Example: Invisible character is highlighted with hover explanation

さらに、ASCII文字と混同されやすい文字もハイライトされます。

Unicode Highlighting Example: Confusing character is highlighted with hover explanation

不可視または混同しやすいUnicode文字がUnicodeスプーフィング攻撃にどのように使用されるかについては、「The Invisible JavaScript Backdoor」ブログ投稿またはこのケンブリッジ大学の記事をご覧ください。

この機能は、フォントやロケール設定に依存するため、すべてのUnicodeスプーフィング攻撃を検出するわけではありません。また、曖昧な文字の検出はヒューリスティックに実行されます。安全のため、VS Codeのワークスペース信頼機能の制限付きモードを使用してソースコードをレビューする必要があります。すべての非ASCII文字は信頼されていないワークスペースでハイライトされます。

editor.unicodeHighlight.invisibleCharacterseditor.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 Scripts view with script details

また、新しい設定npm.scriptExplorerExcludeが追加され、NPMスクリプトビューから除外するスクリプトを指定できるようになりました。

言語

TypeScript 4.5

VS CodeにはTypeScript 4.5が同梱されるようになりました。このアップデートには、多くの新しい言語機能、ツール改善、バグ修正が含まれています。

TypeScript 4.5の詳細については、TypeScriptブログをご覧ください。

メソッドシグネチャの補完

メソッドシグネチャ補完により、メソッドのオーバーライドやインターフェースメソッドの実装を素早く行えます。この機能では、クラス本体内にいるときに、スーパークラスなどのメソッドの候補が受け入れられると、メソッドのシグネチャ全体が挿入されます。

TypeScript を書いている場合、候補を受け入れると、シグネチャで参照されている型の必要なすべてのインポートも追加されます。

この機能にはワークスペース内にTypeScript 4.5が必要です。typescript.suggest.classMemberSnippets.enabledjavascript.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 language selector

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://.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内での直接テストの実行について説明しています。

Extension Pack for Java walkthrough

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のみがサポートされます。

ステータスバーの言語項目は、これらの状況を示すように更新されます。

Limited support for Python in an untrusted workspace

モジュール名の変更リファクタリング

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つのファイルがあります。

各提案には一意の名前があり、提案されたAPIを使用したい拡張機能は、それらの名前をpackage.jsonにリストする必要があります。package.jsonenableProposedApiプロパティは、新しいenabledApiProposalsに置き換えられ、これは提案名の文字列配列であり、IntelliSenseと検証のサポートがあります。

IntelliSense when authoring the enabledApiProposals property

API提案の更新されたフローは次のようになります。

  1. 試したい提案を見つけて、その名前をpackage.json#enabledApiProposalsに追加します。
  2. 最新のvscode-dtsを使用して、vscode-dts devを実行してください。これにより、対応するd.tsファイルがワークスペースにダウンロードされます。
  3. これで提案に対してプログラミングできます。

詳細な移行ガイドとサンプル移行は、issue #136964に記載されています。また、提案されたAPIの使用に関する制限は変更されていません。提案されたAPIを使用する拡張機能は公開できず、そのまま使用することもできません。

Quick Pick APIの改善

今回のイテレーションでは、VS CodeのQuickPickに関するいくつかのAPIを確定しています。

QuickPickItemのインラインボタン

豊富な入力エクスペリエンスを提供できることは、私たちの拡張APIの目標であり、VS CodeのQuick Pickの使い慣れた操作を使用することで、強力でありながらシンプルなUIフローが可能になります。一つの追加として、拡張機能が個々のQuickPickItemにボタンを追加できるようになりました。

QuickPickItem buttons

ボタンをクリックすると、QuickPickオブジェクトに存在するonDidTriggerItemButtonイベントがトリガーされます。皆様の拡張機能でこれらのボタンがどのように活用されるかを楽しみにしています。

アイテム更新時のスクロール位置維持機能

QuickPickItemにボタンを追加する機能に加えて、アイテムを更新するときにスクロール位置を維持したい場合もあるでしょう。これは、次のような拡張機能の一般的なユースケースです。

  • 「リストからこのアイテムを削除」を実装する(例:Ctrl/Cmd + P x QuickPickItemButton)。
  • 「この項目を何らかの方法で切り替える」を実装する(例:「スニペットを挿入」コマンド)。
  • Quick Pick でアイテムを非同期でロードする。

window.createQuickPick()から返されるQuickPickオブジェクトのkeepScrollPositionプロパティを使用すると、Quick Pickのスクロール位置(cursorTop)がリストの先頭に戻るかどうかを制御できます。

認証APIの改善

今回のイテレーションでは、VS Codeの認証に関連するいくつかのAPIを確定しています。

新しいセッションの作成を強制する

authentication.getSession()を使用してセッションを取得した場合、一部のリソースでは有効でも他のリソースでは無効な場合があります。この状況は、再度サインインフローを実行することで修正できます。

例としては、GitHubのシングルサインオンのセキュリティアサーションマークアップ言語 (SAML) のサポートがあります。デフォルトでは、repoスコープで生成されたトークンは、自身の個人リポジトリにアクセスする能力を持ちます。ただし、GitHubのシングルサインオンが有効になっている組織にいる場合、その組織内のリポジトリにアクセスする能力をセッションに明示的に付与する必要があります。

この例では、GitHub 認証プロバイダーは、アクセスしようとしているものに対して適切に SAML 化されたトークンとそうでないトークンの違いを認識できないため、その動作を修正するために、新しいセッションの作成を強制できるようになりました。

AuthenticationGetSessionOptionsforceNewSessionプロパティが追加され、ユーザーに再度サインインを要求できるようになりました。これをtrueに設定すると、ユーザーは次のように表示されます。

Forcing sign in

ユーザーにさらに詳細なメッセージを表示したい場合は、detail文字列を含むオブジェクトを指定することもできます。

拡張機能がセッションを保持している場合、サイレントにセッションを取得する

よく見られるパターンとして、一部の拡張機能は、アクティベート時に利用可能な認証セッションがあるかどうかを確認します。セッションがあれば、それを使用してデータを事前にロードしたり、他のタスクを事前に実行したりして、後のパフォーマンスを向上させます。この欠点は、ユーザーがその拡張機能に認証セッションへのアクセスを許可していない場合、アカウントメニューにバッジが表示され、メニュー項目にユーザーにサインインを促す項目が追加されることでした。

これは一部のケースでは問題ありませんが、他のケースでは望ましくなく、ユーザーにとって画面が煩雑になります。これを解決するために、AuthenticationGetSessionOptionssilentという新しいプロパティが追加されました。これにより、拡張機能がセッションを要求したことを示す表示なしにセッションを要求できます。そうすることで、拡張機能はセッションを取得できる場合に必要なことを実行できますが、取得できない場合はユーザーを煩わせることはありません。

: このAPIは、過去に拡張機能がセッションへのアクセスを許可されている場合にのみ認証済みセッションを返します(つまり、「信頼された拡張機能」です)。ユーザーが同意していないセッションが拡張機能に与えられることは決してありません。

設定エディタの改善

順序付けされた設定

個々の設定は、orderフィールドを使用して順序付けできるようになりました。順序付けされた設定は、同じカテゴリ内の順序付けされていない設定よりも常に前に表示され、順序は相対的です。

グループ化されていないカテゴリのサポート

設定は、特定のカテゴリではなく、メインの拡張機能ヘッダーの下にグループ化することもできます。そのためには、カテゴリのタイトルのいずれかを拡張機能の表示名と同じに設定します。

下の例で、Conf > Language: Show Size 設定がConfiguration Sample ヘッダーの直下にあることに注目してください。

Settings appearing directly under the extension header

数値と整数オブジェクトのサポート

Null許容でない数値/整数値を持つオブジェクトが設定エディターでサポートされるようになりました。

An object setting in the Settings editor with number/integer values

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.jsonconfigurationDefaults貢献ポイントを介して、他の登録済み構成のデフォルトをオーバーライドできるようになりました。たとえば、次のスニペットは、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では、「実行制御」要求(continuenextstepInstepOutstepBackreverseContinue)はすべて単一のスレッドで動作するが、実装はスレッド引数を無視してすべてのスレッドで動作することを選択できると規定されていました。この曖昧な「単一スレッド」のセマンティクスはあまり有用ではないため、通常、デバッグアダプターはより有用なものを実装しています。

  • 現在のスレッドをステップ実行しながら、他のスレッドを再開して自由に実行できるようにする「ステップ」要求。
  • すべてのスレッドを再開する「続行」要求。

現在の仕様は実行制御要求にとって実用的ではないため、すべての実行制御要求(continuenextstepInstepOutstepBackreverseContinue)の仕様を、一般的に実装されているものと一致するように変更しました。

さらに、一部のデバッグアダプターには、「代替セマンティクス」として、stepまたはcontinueが現在のスレッドのみで動作し、他のすべてのスレッドを中断状態に保つ必要がある場合があります。この「代替動作」のために、すべての実行制御要求に新しいオプションのsingleThreadプロパティが追加されました。対応する新しい機能supportsSingleThreadExecutionRequestsは、デバッグアダプターによって、実行制御要求がsingleThreadプロパティをサポートしていることをクライアントに示すために使用されなければなりません。

提案された拡張API

すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。

  1. 試したい提案を見つけて、その名前をpackage.json#enabledApiProposalsに追加します。
  2. 最新のvscode-dtsを使用して、vscode-dts devを実行してください。これにより、対応するd.tsファイルがワークスペースにダウンロードされます。
  3. これで提案に対してプログラミングできます。

提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。

QuickPickItemの区切り線

今回のイテレーションでは、拡張機能が提案されたAPI(vscode.proposed.quickPickSeparators.d.ts)を介してQuick Pickに区切り線(「カテゴリ」とも呼ばれます)を追加する機能が導入されました。これは、項目をグループ化したり、項目間に少し間隔を設けたりするのに役立ちます。

Quick Pick separators

既存のQuick Pickに区切り線を追加するには、既存の項目リストに新しいQuickPickItemを追加し、QuickPickItemkindプロパティを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日まで)

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-codiconsへの貢献

vscode-css-languageserviceへの貢献者

vscode-eslintへの貢献者

vscode-extension-samplesへの貢献

  • @memeplex: エディタアクティベーション時に装飾を遅延させない PR #535

vscode-html-languageserviceへの貢献

vscode-json-languageserviceへの貢献

vscode-languageserver-nodeへの貢献者

vscode-pull-request-githubへの貢献者

vscode-vsceへのコントリビューション

language-server-protocolへの貢献者

monaco-editorへのコントリビューション

© . This site is unofficial and not affiliated with Microsoft.