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

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

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

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

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


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

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

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

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

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

ワークベンチ

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

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

  • 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": "${dirname}.ts")にindex.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はコメントUIが確定されて以来、複数行コメントをサポートしていましたが、複数行コメントは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

括弧ガイドの改善

水平括弧ガイドが、折り返された行を適切にサポートするようになりました。また、1行しかまたがらない括弧ペアは、独自の水平括弧ガイドを持ちます。

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 Repositories拡張機能とAzure Repos拡張機能に採用されました。

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

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

デバッグ

遅延変数の自動展開

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

遅延変数の新しいボタン

テキストリンクボタンを、「目」のアイコンの付いた実際のボタンに更新しました。「目」のアイコンも、より目に似た外観に更新されました。

A button to expand a lazy variable

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

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

言語

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)または[link text](/path/to/file#some-header)#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

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

VS Code for the Webは、リモートリポジトリを開くピッカーを使用する際に、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カーネル処理に多くの更新が行われました。

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

Python

言語サーバーの変更時にリロード不要

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

Blackフォーマッター拡張機能

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

isortによるインポートの整理

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

リモート開発

リモート開発拡張機能の作業が引き続き行われています。これにより、コンテナ、リモートマシン、またはLinux用Windowsサブシステム(WSL)をフル機能の開発環境として使用できます。

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

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

プルリクエストやイシューの作業、作成、管理を可能にするGitHub Pull Requests and Issues拡張機能の作業は引き続き進行中です。このリリースの主なハイライトは以下のとおりです。

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

その他のハイライトについては、拡張機能の0.42.0リリース変更履歴をご覧ください。

プレビュー機能

設定プロファイル

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

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

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

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

設定プロファイルファイルをクラウドでホストできます。たとえば、パブリックなGitHub gistとして保存し、URLを他のユーザーと共有できます。URLを提供することで、設定プロファイルファイルをインポートできます。

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

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

TypeScript 4.7サポート

このアップデートには、今後のTypeScript 4.7リリースへのサポートが含まれています。TypeScriptチームが現在取り組んでいることの詳細は、TypeScript 4.7イテレーションプランを参照してください。いくつかのハイライト:

  • 新しいソース定義へ移動コマンドを使用して、ライブラリ関数のJavaScript実装に直接ジャンプします。この機能の詳細とフィードバックの共有については、TypeScriptイシュー #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を作成する際に推奨されるすべきこととすべきでないことについて議論し、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 は、デバッガが切断されたときにデバッグ対象を終了するかどうかを示します。

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

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

A dropdown with extra disconnection commands

言語サーバープロトコル

ノートブックとプル診断のサポートは、提案状態から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

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

拡張機能の新しいローカライズパイプライン

VS Codeは、言語パックをインストールすることで有効にできる、いくつかの表示言語をサポートしています。これらはVS Code自体とVS Codeに組み込まれた拡張機能をローカライズするのに非常に役立ちます。今回のイテレーションで、チームが所有する組み込みでない拡張機能をローカライズするための標準化作業を開始しました。この取り組みの結果は、GitHub RepositoriesAzure Repos拡張機能の共通依存拡張機能であるRemote Repositoriesがこの標準化に最初に取り組んだ拡張機能として、目にすることになるでしょう。

次のイテレーションでは、この標準化作業を継続し、さらに多くの拡張機能をオンボードしていきます。現在、Python拡張機能が進行中で、GitHub RepositoriesとAzure Reposがそれに続く予定です。私たちは、チームが所有するすべての拡張機能がローカライズされ、将来作成される新しい拡張機能も容易にオンボードできるようになることを目指しており、英語を母国語としないユーザーもVS Codeで素晴らしい体験ができるようにしたいと考えています。

ドキュメント

VS CodeのRust

VS CodeにおけるRustプログラミング言語のサポートについて、rust-analyzer拡張機能を用いた新しいVisual Studio CodeのRustトピックが追加されました。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をcapabilitiesに追加 PR #1440
    • 不足しているリンク可能なタイプを追加 PR #1441
    • kindにFoldingRangeKindを使用 PR #1450

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