VS Codeのエージェントモードを拡張するには、を試してください!

2022年4月 (バージョン 1.67)

アップデート 1.67.1: このアップデートは、このセキュリティ問題に対処します。

アップデート 1.67.2: このアップデートは、これらの問題に対処します。

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel シリコン | Linux: deb rpm tarball Arm snap


Visual Studio Code 2022年4月リリースへようこそ。このバージョンには多くのアップデートがあり、気に入っていただけることを願っています。主なハイライトの一部を以下に示します。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。

リリースパーティーを見る: VS Codeチームが新機能の一部について議論する様子をご覧ください。イベントの録画はYouTubeチャンネルでご覧いただけます。

ハイライトショート: 60秒しか時間がない場合は、4月のVS Codeリリースハイライトビデオで新機能をすばやく確認してください。

Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。

Workbench

エクスプローラーのファイルネスト

エクスプローラーは、ファイル名を基に関連ファイルをネストする機能をサポートするようになりました。この動作を制御するためのいくつかの設定があります。

  • explorer.fileNesting.enabled - ファイルネストが全体的に有効になっているかどうかを制御します。グローバルまたは特定のワークスペースで設定できます。
  • explorer.fileNesting.expand - ネストされたファイルが既定で展開されるかどうかを制御します。
  • explorer.fileNesting.patterns - ファイルがどのようにネストされるかを制御します。既定の構成はTypeScriptおよびJavaScriptプロジェクトのネストインテリジェンスを提供しますが、独自のプロジェクト構造に合わせてこれを変更することを推奨します。いくつかの例を以下に示します。

既定の構成

.js and .min.js files nested under .ts file, tsconfig.test.json nested under tsconfig.json, package-lock.json nested under package.json

ファイルがディレクトリ名に一致する場合のindex.tsの下のネスト ("index.ts": "${dirname}.ts")

in directory named SomeFolder, SomeFolder.ts is nested under index.ts

異なるファイルと同じ名前を持つが、追加のセグメントを持つファイルのネスト ("*": "${basename}.*.${extname}")

file1.test.myext is nested under file1.myext, file2.spec.other is nested under file2.other

テーマ: GitHub Light High Contrast

ファイルネストは、いくつかのイテレーションにわたって実験的な設定として利用可能でした。ファイル操作を除いて、動作はほとんど変更されていません。実験的な設定explorer.experimental.fileNesting.operateAsGroupは、折りたたまれたときにネストをグループとして扱い、それ以外の場合は単一のエンティティとして扱うという方式に置き換えられました。これは、ファイルのネストされたスタック全体をコピー、切り取り、ドラッグ、または削除したい場合、ネストを折りたたんでから単一のエンティティとして操作できることを意味します。ネストされた要素が展開されている場合、選択は通常どおりに動作します。

設定エディターの検索フィルターボタン

設定エディターの検索コントロールの右側に関数ボタンが追加されました。このボタンをクリックすると、検索結果を絞り込むために検索クエリに適用できるフィルターのリストが表示されます。

テーマ: Light Pink

設定エディターの言語フィルターインジケーター

設定エディターの言語フィルターは、言語フィルターが適用されたときに、どの言語が操作されているかをより明確に示すためにスコープテキストを変更するようになりました。上記の短いビデオでは、Markdown言語フィルター (@lang:markdown) がフィルターされた設定に適用されている様子が示されています。

参考までに、言語フィルターが適用されている場合、設定の値を変更すると、その言語にのみその設定の値が変更されます。言語固有の設定は、settings.json言語識別子によってスコープが指定されます。

  "[markdown]": {
      "editor.wordBasedSuggestions": "off"
  }

リファクタリング後にファイルを保存

名前変更などのリファクタリングは、多くの場合、複数のファイルを変更し、保存されていない変更 (ダーティ) を残します。外部開発ツールでは通常、これらのファイルを保存する必要があります。このワークフローを容易にするため、files.refactoring.autoSaveという新しい設定が追加され、既定でtrueになり、リファクタリングの一部であったファイルを自動的に保存するかどうかを制御します。

エディターの制限からダーティエディターを除外

新しい設定workbench.editor.limit.excludeDirtyは、開いているエディターの最大数が、設定された制限に数える際にダーティエディターを除外するかどうかを制御します。この設定は既定で無効になっています (false)。

タイムラインに「コミットされていない変更」を戻す

先月ローカル履歴機能を導入した際、重複しているように感じられたため、Gitタイムラインプロバイダーからコミットされていない変更エントリを削除しました。しかし、一部のユーザーはこのタイムラインエントリに真の価値を見出しており、新しいgit.timeline.showUncommitted設定を適切に構成することで、これを元に戻すことができるようになりました。

開くのに失敗した場合の新しいエディタープレースホルダー

エディターを開くのに失敗した場合、VS Codeは通知を表示しなくなり、以前に開いたエディターを表示します。代わりに、エラーメッセージと、場合によってはエラーを解決するためのアクションを含む汎用プレースホルダーが表示されます。

言語ステータスの改善

言語ステータス項目は、フォーマッターの競合を表示するようになりました。これは、ある言語に複数のフォーマッターがインストールされているが、そのいずれも既定のフォーマッターとして構成されていない場合に発生します。また、重大なステータスを含む場合、言語ステータス項目がより目立つようになりました。

さらに、言語ステータス項目は、ドキュメントが現在設定されている言語とは異なる言語であると疑われる場合に、言語を切り替えるヒントを表示するようになりました。これは無題のエディターとノートブックセルにのみ適用され、workbench.editor.languageDetectionHints設定で構成できます。以下に、さまざまな言語でセルを実行できるHandy Dandy Notebookでこれが実演されています。

テーマ: GitHub Light High Contrast

無効または互換性のない拡張機能を表示

拡張機能ビューは、インストール済み拡張機能リストに、無効または互換性のない拡張機能をエラー状態で表示するようになりました。たとえば、VS Codeのバージョンが1.67.0-insiderで、VS Codeバージョン1.68.0を必要とする拡張機能をインストールしている場合、互換性のないエラー状態でリストに表示されます。

Incompatible extension details shown in the Extensions view item hover

終了前に確認

新しい設定window.confirmBeforeCloseは、アプリケーションを終了する前に確認ダイアログを表示するように構成できます。

キーバインディングが使用されたときに確認ダイアログを表示するkeyboardOnly、またはマウスを使用して終了する場合でも常に表示するalwaysのいずれかを選択できます。

: この設定はまったく新しいものではなく、VS Code for Webでは以前から利用可能でした。

comments.openViewの既定値

comments.openViewの古い既定値はfileで、コメントのあるファイルを開くたびにコメントビューが開きました。コメントビューのノイズを減らすため、新しい既定値はfirstFileになり、セッション中にコメントのあるファイルを初めて開いたときにのみコメントビューが開くようになりました。

複数行コメント

舞台裏では、VS CodeはコメントUXが完成して以来、複数行コメントをサポートしていましたが、複数行コメントはUIに表示されませんでした。これで、複数行コメントを表示したり残したりできるようになりました。

新しいウィンドウでURIを処理

VS Code URIにクエリパラメータwindowId=_blankが含まれている場合、VS Codeはそれを新しいウィンドウで処理します。例: vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git&windowId=_blank

エディター

括弧ペアのカラー化が既定で有効に

1.60リリースで導入された新しい括弧ペアのカラー化機能に対する肯定的なフィードバックを受けて、既定で括弧ペアのカラー化を有効にしました。

Side by side comparison with bracket pair colorization on and off

括弧ペアのカラー化は、"editor.bracketPairColorization.enabled"falseに設定することで無効にできます。

括弧ペアのカラー化は、特定の言語のみ無効にすることもできます。

"[typescript]": {
  "editor.bracketPairColorization.enabled": false,
},

TextMate文法でトークンをアンバランスとしてマーク可能に

これまで、TextMate文法は、シェルスクリプトのcase文の閉じ括弧のように、特定の括弧をアンバランスとしてマークできませんでした。

Old behavior where unbalanced brackets not detected

括弧ペアのマッチングとカラー化をより堅牢にするため、TextMate文法は、特定のトークン内の括弧がマッチングされるべきではないことを表現できるようになりました。拡張機能のpackage.jsoncontributesセクションで、提供される文法は、balancedBracketScopes (既定は["*"]) およびunbalancedBracketScopes (既定は[]) プロパティを使用して、括弧マッチングのスコープを含めたり除外したりできます。

"grammars": [{
    "language": "shellscript",
    "scopeName": "source.shell",
    "path": "./syntaxes/shell-unix-bash.tmLanguage.json",
    "balancedBracketScopes": [ "*" ],
    "unbalancedBracketScopes": [ "meta.scope.case-pattern.shell" ]
}],

この機能により、シェルスクリプトの文法は、case文の)がマッチングされるべきではないことを示すことができるようになりました。

New behavior correctly skipping a bracket that isn't matched

新しい括弧マッチングアルゴリズム

括弧マッチングは、括弧カラー化と同じデータ構造を使用するようになりました。これにより、精度とパフォーマンスが向上します。

古い括弧マッチングの動作 (色とハイライトの装飾が一致していないことに注意してください)

Old behavior with incorrect bracket matching

新しい括弧マッチングの動作

New behavior with correct bracket matching

括弧ガイドの改善

水平方向の括弧ガイドが、折り返された行を適切にサポートするようになりました。また、単一行にまたがる括弧ペアには、独自の水平方向の括弧ガイドが付きます。

Horizontal bracket guides displayed for wrapped lines

水平方向の括弧ガイドは既定で無効になっており、"editor.guides.bracketPairsHorizontal": trueで有効にできます。

今回のリリースでは、"editor.guides.highlightActiveIndentation"が値"always"を受け入れるようになりました。alwaysに設定すると、アクティブな括弧ペアがすでに存在する場合でも、インデントガイドが強調表示されます。

インレイヒントの切り替え

インレイヒントは、ソースコード内に直接追加情報を表示する優れた方法です。しかし、時には実際のソースコードだけを見たい場合もあります。インレイヒントをすばやく非表示にするために、editor.inlayHints.enabled設定が変更されました。onoffに加えて、onUnlessPressedoffUnlessPressedの値も追加されました。on/offUnlessPressedの値は、Ctrl+Altが押され続けている間、インレイヒントを非表示または表示します。

エディター > インレイヒント: 有効な値

  • on - インレイヒントが有効です。
  • off - インレイヒントが無効です。
  • onUnlessPressed - インレイヒントがCtrl+Altで表示/非表示になります。
  • offUnlessPressed - インレイヒントがCtrl+Altで非表示/表示になります。

インラインサジェストの改善

先月、クイックサジェストに👻 ゴーストテキスト (薄い色付け) を使用する機能を追加しました。リマインダー: editor.quickSuggestions設定にはinlineを使用する必要があります。この分野でいくつかの磨き上げを行い、特にトリガー文字とTypeScriptの「引数付き関数を補完」がサポートされるようになりました。

.のようなトリガー文字を入力したときにIntelliSenseを無効にするには、"editor.suggestOnTriggerCharacters": falseを設定します。TypeScriptの関数呼び出し補完を有効にするには、"typescript.suggest.completeFunctionCalls": trueを使用します。

エディターにテキストをドラッグアンドドロップ

他のアプリケーションからテキストエディターにテキストをドラッグアンドドロップできるようになりました。たとえばmacOSでは、絵文字パネルから絵文字をテキストエディターにドロップできます。

ドラッグ中、点線カーソルはテキストがどこに挿入されるかを示します。

ターミナル

検索結果数

ターミナルで検索する場合、結果の数と現在選択されている一致のインデックスが「検索」コントロールに表示されるようになりました。

Text is searched for in the terminal and the Find control is labeled match 12 of 14 to indicate that match 12 is currently selected

ソース管理

ソース管理リポジトリビュー

このマイルストーンで、ソース管理リポジトリビューに表示されるリポジトリの既定のソート順を制御するための新しい設定scm.repositories.sortOrderを導入しました。リポジトリは、検出された順序、名前、およびフルパスでソートできます。ソート順の変更は、ソース管理リポジトリビューの... ビューとその他のアクションメニューと、ソース管理ビューの... > ビューとソート > リポジトリメニューを使用して行えます。

以下の短いビデオは、SCM > リポジトリ: ソート順設定が既定でdiscovery time(リポジトリが選択された時刻)であり、ソース管理ビューでもソート順を変更できることを示しています。

エディター装飾の改善

前回のマイルストーンでは、変更された行の装飾のパターンを採用することで、追加/変更された行のエディター装飾のアクセシビリティを向上させました。今回のマイルストーンでは、ユーザーがエディター装飾のパターンを切り替えることができる新しい設定scm.diffDecorationsGutterPatternを追加しました。

この設定は、変更された行の装飾にはパターンを使用しますが、追加された行には使用しないのが既定です。

"scm.diffDecorationsGutterPattern": {
    "added": false,
    "modified": true
}

パフォーマンスの改善

git.untrackedChanges設定をhiddenにしているユーザーは、大規模なリポジトリで作業する際にパフォーマンスが向上します。これは、git statusを呼び出す際に-unoパラメータを渡すことで実現されます。

リモートソースプロバイダーAPIの拡張

Git拡張機能APIは、リモートソースプロバイダーを登録または表示する拡張機能が、リモートソースに関するより豊富な情報を提供できるようにするようになりました。

リモートソースプロバイダーは、個々のリモートソースの説明とアイコンを設定できるようになりました。さらに、プロバイダーはオプションで最近のリモートソースを指定できます。これらは、ピッカーのトップレベルに表示され、簡単にアクセスでき、タイムスタンプが提供されている場合はタイムスタンプでソートされます。

拡張されたAPIは、組み込みのGitHub拡張機能、およびgithub.devvscode.devGitHubリポジトリおよびAzure Repos拡張機能によって採用されました。

SSHを使用してGitHubからクローン

新しい設定github.gitProtocolにより、GitHubからリポジトリをクローンする際の既定のプロトコルを変更できます。既定値はhttpsですが、sshに変更できます。

デバッグ

遅延変数を自動展開

数ヶ月前、デバッガーの変数ビューで「遅延」変数をボタンクリックで展開するサポートを追加しました。クリックなしで遅延変数を自動的に展開するための新しい設定debug.autoExpandLazyVariablesが追加されました。

遅延変数用の新しいボタン

テキストリンクボタンを、「目」のcodiconが付いた実際のボタンに更新しました。「目」のcodiconも、より目らしく見えるように更新されました。

A button to expand a lazy variable

Shift+クリックでブレークポイントを無効化

ブレークポイント (または条件付きブレークポイント、ログポイント) をShift+クリックすることで、無効にしたり、再度有効にしたりできるようになりました。

言語

VS CodeのエクスプローラーからMarkdownエディターにファイルをドラッグアンドドロップすることで、Markdownリンクをすばやく作成できるようになりました。Markdownエディター上にファイルをドラッグしている間、Shiftキーを押しながらドロップすると、エディターにドロップされ、それへのリンクが作成されます。

ファイルが画像のように見える場合、VS Codeは自動的にMarkdown画像を挿入します。それ以外の場合は、通常のMarkdownリンクが追加されます。

これは、Webブラウザから画像をドラッグアンドドロップするなど、他のアプリケーションから一部の種類のファイルをドラッグする場合にも機能します。

このドロップ動作は、"markdown.editor.drop.enabled": falseを設定することで無効にできます。

Markdown: ヘッダーへのすべての参照を検索

VS Codeは、Markdownファイルのヘッダーに対してすべての参照を検索を実行する機能をサポートするようになりました。これにより、現在のワークスペース内で特定のヘッダーが使用されているすべての場所 (他のMarkdownファイルからのリンクを含む) を確認できます。

開始するには、カーソルをヘッダー自体、またはヘッダーへのリンクのフラグメント部分 (例: [link text](#_some-header)内の#some-headerまたは[link text](/path/to/file#some-header)) に置き、すべての参照を検索コマンドを実行します。

Finding all references to a Markdown header

これにより、参照ビューにすべての参照が表示されます。別のビューを希望する場合は、参照をピークまたは参照へ移動コマンドも使用できます。

VS Codeは、現在のファイル内の参照リンクへのすべての参照を検索することもサポートしています。これは、以下のものにサポートされています。

  • [some text][ref]ref
  • 省略形リンク[ref]ref
  • リンク定義[ref]: http://example.comref

Finding all places a Markdown link reference is used

Markdown: ファイルへのすべての参照を検索

また、現在のワークスペース内の特定のMarkdownファイルへのすべての参照を検索できるようになりました。ここでも、ファイル間のリンクが含まれます。

これはいくつかの方法でトリガーできます。

  • 現在のMarkdownファイルへの参照を検索するには、Markdown: ファイル参照を検索コマンドを使用します。
  • エクスプローラーでMarkdownファイルへの参照を検索するには、右クリックしてファイル参照を検索コマンドを実行します。
  • [text](/link/to/file.md)のように、Markdownファイルへのリンクのファイル部分ですべての参照を検索を実行します。

これにより、特定のファイルが参照されているすべての場所がリストアップされ、そのファイル内のヘッダーへの参照も含まれます。

Markdown: URLへのすべての参照を検索

最後に、現在のワークスペースで特定のURLが使用されているすべての場所を検索することもサポートしています。

Finding all places where a URL is used in Markdown files

Markdown: ヘッダーの名前変更

Markdownファイルでヘッダーを変更して、その結果、すべてのリンクが誤って壊れてしまったという経験はありませんか?そのような場合に、Markdownの新しい名前変更サポートが役立ちます。

開始するには、カーソルをヘッダーに置いてF2を押し、名前変更を開始します。ヘッダーの新しいテキストを入力し、Enterを押して確定します。これにより、現在のヘッダーが更新されるだけでなく、現在のワークスペース内のすべての既知のリンクも更新されます。

ヘッダー自体、またはヘッダーへのリンクのヘッダーコンポーネントで名前変更をトリガーできます。例えば、[link text](#_some-header)または[link text](/path/to/file#some-header)内のsome-header

Markdownの参照リンクの名前を変更することもできます。これにより、現在のMarkdownファイル内のすべての参照リンクが更新されます。

Renaming a Markdown link reference using F2

Markdown: ファイルの名前変更

新しいMarkdownの名前変更サポートの締めくくりとして、Markdownリンク内のファイルパスでF2を使用することで、ディスク上のファイルの名前を変更し、それへのすべてのMarkdown参照を更新できるようになりました。

Renaming a file by pressing F2 on the file path in a link

現在、ファイルの名前変更は、テキストエディター内のファイルへのリンクでF2を使用する場合にのみサポートされています。今後のイテレーションでは、エクスプローラーで名前変更がトリガーされたときにリンクを更新するサポートも計画しています。

JSON

新しい設定json.validate.enableでJSON検証をオフにできます。

Web 用 VS Code

リモートリポジトリピッカーを開く

Web版VS Codeは、リモートリポジトリを開くピッカーを使用する際にwindow.openFoldersInNewWindow設定を尊重するようになりました。これにより、ピッカーの動作が他のVS Codeバージョンと整合し、新しいウィンドウで開くクイックピックアイテムボタンが置き換えられます。

拡張機能への貢献

Java

インレイヒント

Extension Pack for Javaに含まれるJava言語サービスは、メソッドシグネチャのパラメーター名を表示するインレイヒントをサポートするようになりました。

Javaパラメーター名インレイヒントには3つのモードがあります。

  • literals - リテラル引数に対してのみパラメーター名ヒントを有効にします (既定)。
  • all - リテラル引数と非リテラル引数の両方に対してパラメーター名ヒントを有効にします。
  • none - パラメーター名ヒントを無効にします。

遅延変数解決

Debugger for Java拡張機能は、'遅延'変数をサポートするようになりました。この機能により、デバッガーUIを明示的に展開して値を確認するまで、高コストな変数の操作を遅延させることができます。

Jupyter

Jupyter PowerToys拡張機能

Jupyterノートブックを操作するための実験的機能を提供するJupyter PowerToys拡張機能を発表できることを嬉しく思います。最初のリリースでは、以下の機能をプロトタイプ化しました。

  • カーネル管理パネル
  • コンテキストヘルプ
  • 実行グループ化

ぜひこれらを試していただき、ご意見をお聞かせください。いつかサポートされる機能に磨き上げていきたいと考えています!

詳細については、vscode-jupyter-powertoysリポジトリのREADMEを参照してください。

Web拡張機能

Jupyter拡張機能は、vscode.devで使用するためのWeb拡張機能としてインストールできるようになりました。現在の機能は、httpsを必要としないJupyterサーバーで実行されるノートブック (.ipynbファイル) のサポートに限定されています。

機能を試してみたい場合は、ローカルマシンからJupyterを起動してください。

jupyter --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net

そして、Jupyter: 接続するJupyterサーバーを指定コマンドを使用して接続します。

今後のリリースでは、ブラウザで実行する際の機能がさらに有効になります。

  • 「https」ベースのサーバー
  • IntelliSense
  • データ表示
  • 変数表示
  • インタラクティブウィンドウ
  • IPyWidgets
  • プロット表示
  • エクスポート

Jupyterカーネルの処理

Jupyterカーネルの処理には多くのアップデートが行われました。

  • カーネルがクラッシュしたときにそれをより明確にするため、拡張機能がセル出力にこの情報を表示するようになりました。
  • 実行中に特定の既知のエラーが検出された場合、セル出力にトラブルシューティングのガイダンスが表示されるようになりました。
  • カーネル実行の問題を解決することは、複雑で時間のかかるプロセスになる可能性があります。より早く解決策を見つけるのに役立つことを願って、当社のwikiにトラブルシューティングセクションをまとめました。GitHub Discussionsフォーラムも、ヘルプを得るための素晴らしいリソースとなります。

Python

言語サーバー変更時の再読み込みなし

Python拡張機能は、python.languageServer設定の値を更新し、VS Codeを再読み込みすることなく言語サーバーを自動的に再起動する機能をサポートするようになりました。

Black Formatter拡張機能

blackフォーマッターを使用してPythonのフォーマットサポートを提供するBlack Formatter拡張機能が利用可能になりました。拡張機能のプレリリース版がインストールできます。

isortによるインポート整理

isortライブラリを使用してインポートの整理を提供する新しいisort拡張機能。拡張機能のプレリリース版が利用可能です。

リモート開発

コンテナー、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できるリモート開発拡張機能の作業が継続されています。

リモート開発リリースノートで新しい拡張機能の機能とバグ修正について学ぶことができます。

GitHubプルリクエストとイシュー

プルリクエストとイシューの作業、作成、管理を可能にするGitHub Pull Requests and Issues拡張機能の作業が継続されています。今回のリリースのハイライトには以下が含まれます。

  • 複数行コメント
  • コミットの変更をツリーで表示

その他のハイライトについては、拡張機能の0.42.0の変更ログをご確認ください。

プレビュー機能

設定プロファイル

このマイルストーンで、設定、拡張機能、UIカスタマイズのコレクションである設定プロファイルを導入しました。VS Codeをカスタマイズした場合、カスタマイズ内容を「設定プロファイル」ファイル (mysetup.code-profile) としてエクスポートし、コンピュータに保存して他のユーザーと共有できるようになりました。

以下の短いビデオは、VS Codeから設定プロファイルをエクスポートする様子を示しています。

設定プロファイルファイルをインポートして、カスタマイズを復元することもできます。

以下は、設定プロファイルをVS Codeにインポートする様子を示しています。

設定プロファイルファイルをクラウドにホストできます。例えば、公開GitHub gistとして保存し、URLを他の人と共有できます。URLを提供することで、設定プロファイルファイルをインポートできます。

注: 現在、設定プロファイルには以下のUIカスタマイズのみが含まれています。今後さらに追加される予定です。

  • ステータスバー項目の表示/非表示
  • アクティビティバー、下部パネル、サイドパネルの項目の表示/非表示と順序
  • ビューの表示/非表示、場所、順序

TypeScript 4.7のサポート

このアップデートには、次期TypeScript 4.7リリースがサポートされています。TypeScriptチームが現在取り組んでいることの詳細については、TypeScript 4.7イテレーション計画を参照してください。主なハイライトの一部を以下に示します。

  • 新しいソース定義へ移動コマンドを使用して、ライブラリ関数のJavaScript実装に直接ジャンプできます。この機能の詳細とフィードバックの共有については、TypeScript issue #49003を参照してください。
  • オブジェクトメンバーとしてメソッドを補完するためのスニペット。
  • グループを考慮したインポート整理.

TypeScript 4.7のナイトリービルドの使用を開始するには、TypeScript Nightly拡張機能をインストールしてください。

拡張機能作成

タブAPI

タブAPIの読み取り専用部分 (タブを閉じることもサポートされています) を完成させ、最も多く賛成票が寄せられた問題の1つであるmicrosoft/vscode#15178の完了をマークしました。これにより、グループの数、開いているタブ、アクティブなタブ、タブが表すエディターの種類などの情報が公開されます。詳細はvscode.d.tsファイルにあり、APIへのエントリーポイントはwindow.tabGroupsです。

ノートブックの変更と保存イベント

ノートブック関連の2つのイベントが完成しました。

  • vscode.workspace.onDidSaveNotebookDocument - ノートブックが保存されるたびに発生するイベント。
  • vscode.workspace.onDidChangeNotebookDocument - ノートブックが変更されるたびに発生するイベント。これには、セル追加や削除のような構造変更や、出力やメタデータの変更のようなセル変更も含まれます。

非再帰的ワークスペースファイルウォッチャーのサポート

以前のマイルストーンでは、createFileSystemWatcher APIが、開いているワークスペース内にフォルダがない限り、ディスク上の任意のフォルダを監視するために使用できることを発表しました。この制限を緩和し、開いているワークスペース内でも、どこでも非再帰的なファイルウォッチャーを許可するようになりました。非再帰的なウォッチャーには、除外設定 (files.watcherExclude) が適用されないため、サブスクライブしたパスに対してのみファイルウォッチャーがイベントを発行することを確認できるという利点があります。

拡張機能用のカスタム除外ルールを持つ再帰ウォッチャーの完全なサポートに取り組んでいますので、続報にご期待ください!

UX ガイドライン

拡張機能作成者向けのUXガイドラインは、独自の目次を持つように再構成され、VS Codeのさまざまなユーザーインターフェース要素を使用するためのベストプラクティスを見つけることができます。特定のトピックでは、拡張機能のUIを作成する際の推奨されるDo's and Don't'sについて議論されており、これによりVS Codeにシームレスに統合されます。

Command Palette UX Guidelines on code.visualstudio.com

拡張機能のテスト実行

以前は、テスト実行が完了するとすぐにVS Codeは拡張ホストプロセスを終了していました。現在、拡張機能テストを実行する場合、VS Codeはまず通常のdeactivateフローを実行し、その後で終了します。これにより、プロセスを生成する拡張機能がより適切に後片付けできるようになります。

カスタムツリーへのファイルのドロップ

最近完成したツリーのドラッグアンドドロップAPIに基づいて、text/uri-list MIMEタイプを使用して、OSから拡張機能のツリービューにファイルをドロップする基本的なサポートが追加されました。

デバッガー拡張機能の作成

supportSuspendDebuggeeとsupportTerminateDebuggeeのUI

disconnectリクエストには、クライアントが切断時にデバッギーに何が起こるかを制御できる2つの追加オプションがあります。

  • suspendDebuggeeは、切断後もデバッギーが中断状態のままであるべきかどうかを示します。
  • terminateDebuggeeは、デバッガーが切断されたときにデバッギーが終了されるべきかどうかを示します。

デバッグアダプターは、supportSuspendDebuggeeおよびsupportTerminateDebuggeeの機能を使用して、これらのオプションをサポートしていることを示すことができます。サポートされている場合、デバッグツールバーの停止ボタンの横に、追加の切断コマンドを含むドロップダウンが表示されます。

たとえば、「起動」タイプのデバッグセッションで、両方の機能をサポートするデバッグアダプターの場合、既定のツールバーボタンは通常の停止ボタンになりますが、ドロップダウンには切断 (terminateDebuggee: false) と切断して中断 (terminateDebuggee: false, suspendDebuggee: true) が含まれます。

A dropdown with extra disconnection commands

Language Server Protocol

ノートブックとプル診断のサポートは、提案された状態から移動され、3.17リリースの出荷準備が整いました。対応するクライアントライブラリとサーバーライブラリの新しいバージョンがnpmに公開されています。

提案されたAPI

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

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

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

エディターにドロップ

提案されているテキストエディターのドロップAPIを使用すると、拡張機能がテキストエディターへのドロップを処理できます。これらのドロップイベントは、VS Code内からのもの (VS Codeのエクスプローラーからテキストエディターにファイルをドラッグするなど) である場合もあれば、オペレーティングシステムからファイルをVS Codeにドロップすることによって生成される場合もあります。

今回のイテレーションでは、このAPIをプロバイダーベースのモデルに切り替えました。また、このAPIの使用方法を示す新しい拡張機能のサンプルも作成しました。

ビューのバッジ

ビューにバッジを追加するための新しい提案が試用可能になりました。VS Codeコアが提供するビューでのバッジの動作と同様に、拡張機能はこのAPI提案を使用してビューに数字バッジを追加できます。

エンジニアリング

ElectronスモークテストのためのPlaywright

私たちは長い間、WebベースのスモークテストにPlaywrightを使用してきました。しかし、Electronベースのスモークテストは、まだ独自のカスタムソリューションに依存していました。PlaywrightのElectronサポートにより、Webベースのスモークテストコードのほとんどを再利用し、Electronスモークテストにも使用できるようになりました。現在、失敗したスモークテストの事後診断にトレースビューアを使用できるようになったことを嬉しく思います。

拡張機能のための新しいローカライゼーションパイプライン

VS Codeは、言語パックをインストールすることで有効にできる、多くの表示言語をサポートしています。これらは、VS Code自体とVS Codeに組み込まれている拡張機能をローカライズするのに最適です。今回のイテレーションでは、チームが所有する組み込みでない拡張機能をローカライズするための標準化の取り組みを開始しました。GitHubリポジトリAzureリポジトリ拡張機能において、その共通依存拡張機能であるリモートリポジトリがこの標準化に最初に乗った拡張機能であるため、この取り組みの結果を見ることができるでしょう。

次回のイテレーションでは、この標準化の取り組みを継続し、さらに多くの拡張機能を取り込みます。Python拡張機能は現在進行中であり、GitHubリポジトリとAzureリポジトリがすぐに続きます。私たちは、チームが所有するすべての拡張機能がローカライズされ、将来作成される新しい拡張機能も簡単に取り込めるようにし、英語を母国語としないユーザーでもVS Codeで素晴らしい体験ができるようにしたいと考えています。

ドキュメント

VS CodeでのRust

Visual Studio CodeでのRustという新しいトピックでは、Rustプログラミング言語のVS Codeでのサポートについて、rust-analyzer拡張機能を使って説明しています。rust-analyzer拡張機能には、コード補完、リンティング、リファクタリング、デバッグなどの豊富な言語機能が含まれています。

rust-analyzer extension for Visual Studio Code details pane

注目すべき修正点

  • 114844 クラッシュダイアログから以前のセッションのエディターの復元をスキップできるようにする
  • 127936 起動時にファイルに言語固有の設定としてfiles.encodingを設定できるようにする
  • 138461 Reactファイル内の[ ]ペア内でのEmmetオートコンプリートが正しくない
  • 139392 最近のプロジェクトのクリアの確認
  • 139950 ブレークポイントにヒットしたとき、キャレット (カーソル) はその行に移動すべき
  • 145265 Windowsのターミナルがcmd /Cを使用し、渡された引数が破損する
  • 146406 ターミナルのPowerline記号の色が間違っている
  • 146977 macOSのInfo.plistでフォルダサポートを宣言する
  • 147104 GitHubへのログインを完了できない

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

Web拡張機能

Web拡張機能としてコードを実行する拡張機能を有効にした拡張機能作成者 (以下のリストは2022年3月28日から2022年5月1日までのもの)

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-generator-codeへの貢献者

vscode-js-debugへの貢献者

  • @timvahlbrock
    • feat: ソースマップロード時にpathMappingを適用 PR #1241
    • feat: ホバー評価のタイムアウトを構成可能に PR #1243

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

  • @hoontae24: Github Enterprise URLのコピーされたパーマリンクをサポート PR #3460

debug-adapter-protocolへの貢献者

language-server-protocolへの貢献者

  • @KamasamaK
    • workspace.inlineValueを機能に追加 PR #1440
    • いくつかの欠落しているリンク可能な型を追加 PR #1441
    • kindにFoldingRangeKindを使用 PR #1450

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