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

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

更新 1.67.1: この更新プログラムは、このセキュリティ問題に対処します。

更新 1.67.2: この更新プログラムは、これらの問題に対処します。

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル 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": "${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 はコメント 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

Editor

括弧ペアの色付けがデフォルトで有効に

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

Side by side comparison with bracket pair colorization on and off

括弧ペアの色付けは、"editor.bracketPairColorization.enabled"false に設定することで無効にできます。

括弧ペアの色付けは、特定の言語に対してのみ無効にすることもできます。

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

TextMate 文法はトークンを不均衡としてマーク可能

以前は、TextMate 文法は、シェルスクリプトのケースステートメントの閉じ括弧のように、特定の括弧を不均衡としてマークできませんでした。

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" ]
}],

この機能により、シェルスクリプトの文法は、ケースステートメントの)が一致すべきではないことを示すことができるようになりました。

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 があります。

遅延変数の新しいボタン

テキストリンクボタンを「目」のコディコン付きの実際のボタンに更新しました。「目」のコディコンもより目のような外観に更新されました。

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) または [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

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

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

拡張機能への貢献

Java

インレイヒント

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

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

  • literals - リテラル引数に対してのみパラメータ名ヒントを有効にする (デフォルト)。
  • all - リテラルおよび非リテラル引数に対してパラメータ名ヒントを有効にする。
  • none - パラメータ名ヒントを無効にする。

遅延変数解決

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

Jupyter

Jupyter PowerToys 拡張機能

Jupyter PowerToys 拡張機能の発表に興奮しています。この拡張機能は、Jupyter ノートブックを操作するための実験的な機能を提供します。最初のリリースでは、以下の機能のプロトタイプを作成しました。

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

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

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

Web拡張機能

Jupyter 拡張機能は、vscode.dev で使用するためのウェブ拡張機能としてインストールできるようになりました。現在、機能は、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 フォーマッター拡張機能

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

isortによるインポート整理

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

リモート開発

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

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

GitHub Pull Requests and Issues

引き続き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 issue #49003 でフィードバックを共有してください。
  • オブジェクトメンバーとしてのメソッド補完のためのスニペット。
  • グループを考慮したインポートの整理.

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

拡張機能作成

タブ API

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

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

ノートブック関連の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

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 スモークテストにも使用できるようになりました。これで、Trace Viewerを使用して、失敗したスモークテストを事後的に診断できることを嬉しく思います。

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

VS Code は、言語パックをインストールすることで有効にできる多数の表示言語をサポートしています。これらは、VS Code 自体と VS Code に組み込まれた拡張機能をローカライズするのに最適です。今回のイテレーションでは、チームが所有する組み込み以外の拡張機能のローカライズの標準化作業を開始しました。この取り組みの結果は、GitHub リポジトリAzure Repos 拡張機能の共通依存拡張機能であるRemote Repositoriesがこの取り組みに参加した最初の拡張機能であることからわかります。

次のイテレーションでは、この標準化作業を継続し、さらに多くの拡張機能をオンボードしていきます。現在、Python 拡張機能が進行中であり、GitHub Repositories と Azure Repos がすぐにそれに続きます。私たちは、チームが所有するすべての拡張機能がローカライズされ、将来作成される新しい拡張機能も簡単にオンボードできるようになり、英語を母国語としないユーザーでも 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 ターミナルでのパワーライン記号の色が間違っている
  • 146977 macOS の Info.plist でフォルダサポートを宣言
  • 147104 GitHubへのログインが完了できない

ありがとうございます

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

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へのコントリビューション

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