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

2021年6月 (バージョン 1.58)

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

アップデート 1.58.2: このアップデートでは、以下の問題に対処しています。

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


Visual Studio Code 2021年6月リリースへようこそ。このバージョンには、皆さんが気に入っていただけるであろう多数のアップデートが含まれており、主なハイライトは次のとおりです。

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

太平洋時間7月13日火曜日の午前8時 (ロンドン時間午後4時) に開催されるVS Codeチームのライブストリームにぜひご参加ください。このリリースの新機能のデモをご覧いただき、ライブで質問できます。

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

Workbench

ワークスペースの信頼

ワークスペースの信頼機能は、1.57リリースで導入された大きな変更であり、開発者がソースを知らない場合でも、安全にコードを閲覧できることが重要だと私たちは考えています。このマイルストーンでは、お客様からのフィードバックを吸収し、問題の修正と提案のフォローアップに焦点を当ててきました。

ワークスペースの信頼をカスタマイズできるユーザー設定をユーザーが発見しやすくするために、ワークスペースの信頼エディターのヘッダーに新しい設定の構成アクションが追加されました。このアクションは、@tag:workspaceTrustでフィルターされた設定エディターを表示します。

Configure your settings action in the Workspace Trust editor

設定といえば、現在のウィンドウが制限モードであることを示すバナーが表示されるタイミングを設定する新しい設定が追加されました。security.workspace.trust.startupPrompt設定と同様に、新しいsecurity.workspace.trust.bannerを使用すると、ワークスペースの信頼機能に慣れて、制限モードで作業していることを思い出させる必要がない場合にバナーを無効にできます。デフォルトでは、このバナーはワークスペースごとに1回表示され、閉じるまで表示され続けます ("untilDismissed")。制限モードバナーを表示するその他のオプションは、"always""never"です。

ワークスペースの信頼の根拠と開発については、最近のワークスペースの信頼に関するブログ投稿で詳しく学ぶことができます。この投稿では、制限モードが意図しない、潜在的に悪意のあるコード実行からどのように保護するのに役立つか、そして迅速かつ安全に作業できるように開発マシンをセットアップするためのヒントが説明されています。

設定エディター

今回のイテレーションでは、設定エディターに、固定数のブールプロパティを持つ設定オブジェクトのサポートが追加され、プロパティがチェックボックスのリストとしてレンダリングされるようになりました。

Settings editor Boolean object renderer demo

また、今回のイテレーションでは、列挙型の配列に対する追加のサポートも追加され、編集モードでプレーンテキストボックスの代わりにドロップダウンが使用されるようになりました。

Settings editor enum array renderer demo

一時的なワークスペース

「一時的な」ワークスペースと呼ばれる新しい種類のワークスペースが追加され、通常のワークスペースとは異なる動作をします。具体的には、

  • VS Codeを再起動またはリロードしても、ワークスペースを再度開こうとしません。
  • 一時的として設定されたワークスペースは、最近開いたワークスペースのリストに表示されません。

ワークスペースの.code-workspaceファイルにtransientプロパティをtrueに設定することで、一時的なワークスペースを指定できます。

{
  "folders": [],
  "transient": true
}

設定の同期

設定の同期に、すべてのログと最終同期状態を含むトラブルシューティングビューが追加されました。このビューにアクセスするには、コマンド設定の同期: 同期されたデータを表示を実行し、ビューサブメニューを開いてトラブルシューティングにチェックを入れることで有効にできます。

Settings Sync Troubleshoot command in the Settings Sync view menu

テーマ: GitHub Light Theme

検索結果の最大数設定

新しい設定search.maxResultsが追加され、テキスト検索結果の最大数を設定できるようになりました。デフォルトは以前の10,000から20,000に増えました。非常に大量の検索結果を読み込む際に、多少の遅延が発生する場合があります。

統合ターミナル

エディター領域のターミナル

ターミナルはエディター領域内に作成または移動できるようになり、パネルの状態に関わらず永続的で表示され続ける多次元グリッドレイアウトが可能になりました。

エディター領域でターミナルを使用するには、いくつかのオプションがあります。

  • エディター領域にターミナルを作成コマンドで作成。
  • タブリストからエディターにターミナルをドラッグアンドドロップ。
  • ターミナルにフォーカスがある状態でターミナルをエディター領域に移動を実行。
  • ターミナルタブのコンテキストメニューでエディター領域に移動を選択。

4 terminals in the editor area are laid out in a 2 by 2 grid

新しいterminal.integrated.defaultLocation設定をeditorに設定すると、新しく作成されるターミナルがデフォルトでエディター領域に表示されるようになります。

キャンバスレンダラーの明示的な設定

以前のイテレーションでは、WebGLターミナルレンダラーをデフォルトで有効にし、terminal.integrated.rendererType設定をよりシンプルなterminal.integrated.gpuAccelerationに置き換えました。残念ながら、一部のマシンではWebGLでエクスペリエンスが低下し、利用可能な唯一のオプションはGPUアクセラレーションを完全に無効にして、はるかに遅いDOMベースのレンダラーに移行することでした。terminal.integrated.gpuAccelerationを明示的にcanvasに設定できるようになり、これらの環境ではこれが望ましい場合があります。

新しいterminal.integrated.showLinkHover設定を使用すると、ターミナル内のリンクホバーを無効にできます。ターミナルリンクのホバーが邪魔だと感じる場合に便利です。

Editor

エディターのスクロールバーのカスタマイズ

エディターのスクロールバーをカスタマイズするための新しい設定が追加されました。

  • editor.scrollbar.horizontaleditor.scrollbar.verticalを使用して、スクロールバーの表示設定を制御します。
  • editor.scrollbar.horizontalScrollbarSizeeditor.scrollbar.verticalScrollbarSizeを使用して、厚さを変更します。
  • editor.scrollbar.scrollByPageを使用して、クリックでページごとにスクロールするか、クリック位置にジャンプするか (デフォルトの動作) を決定します。

エディターの垂直スクロールバーの幅は30ピクセルに設定されています。

Vertical editor scroll bar width set to 30 pixels

言語

Markdownプレビューでの数式レンダリング

VS Codeの組み込みMarkdownプレビューは、KaTeXを使用して数式をレンダリングできるようになりました。

Math rendering in the built-in Markdown preview

インライン数式は単一のドル記号で囲みます。

Inline math: $x^2$

二重のドル記号で数式ブロックを作成できます。

Math block:

$$
\displaystyle
\left( \sum_{k=1}^n a_k b_k \right)^2
\leq
\left( \sum_{k=1}^n a_k^2 \right)
\left( \sum_{k=1}^n b_k^2 \right)
$$

"markdown.math.enabled": falseを設定すると、この機能を無効にできます。

Markdown数式の構文ハイライト

VS CodeはMarkdownソースでの数式のハイライトもサポートするようになりました。

Syntax highlighting of a math equation in a Markdown file

これは、通常のMarkdownファイルとノートブック内のMarkdownセルの両方で機能します。

TypeScript 4.3.5

TS 4.3.5をバンドルしました。このマイナーアップデートでは、JSXで自動インポートが機能しないなど、いくつかの重要なバグが修正されています。

デバッグ

ファイルごとに選択された環境を記憶

launch.jsonファイルなしでデバッグが開始されると、VS Codeはアクティブなエディターを調べ、エディターの言語モードに基づいてどのデバッグ拡張機能を使用するかを決定します。ただし、一部の言語では複数のデバッグ拡張機能が使用可能であり、その場合、VS Codeはそれらのいずれかを選択するよう促します。デバッグをよりスムーズにするために、VS Codeはファイルごとに選択されたデバッガーを記憶するようになりました。これにより、次回デバッグを開始する際に、プロンプトなしでセッションが開始されます。

以下の短いビデオでは、ユーザーが単一のJavaScriptファイルをデバッグするためにNode.jsデバッグ環境を選択し、そのファイルに対して新しいデバッグセッションが開始されると、その選択が記憶されることが示されています。

Debug is started first time and the environment prompt is presented. The next time there is no prompt when the debug session starts

デバッグコンソールのサジェスチョンがEnterで受け入れられなくなりました

デバッグコンソールのサジェスチョンは、Enterでは受け入れられず、Shift+EnterTabでのみ受け入れられるようになりました。以前は、デバッグコンソール入力にすでにタイプされた内容を評価したいだけのときに、誤ってサジェスチョンを受け入れてしまうことが簡単でした。

サジェスチョンを受け入れる方法としてTabキーをより見つけやすくするために、VS Codeのデバッグコンソール入力にヒントのステータスバー("挿入(Tab)")が追加されました。

Debug console input box showing a Status bar rendered in the bottom that says "Insert (Tab)"

拡張機能への貢献

Jupyterインタラクティブウィンドウ

私たちはノートブックエコシステムの上に組み込みのインタラクティブウィンドウエクスペリエンスを提供するための作業を開始しており、Jupyter拡張機能はjupyter.enableNativeInteractiveWindowという設定の背後でそれを採用しました。この機能が有効になっている場合、Jupyter拡張機能は、Pythonファイルからコードを実行したり、コマンドパレットから直接起動したりするときに、Webビュー実装の代わりに組み込みエディターを開きます。組み込みエディターは、ワークベンチと深く統合されているため、カスタマイズされたキーバインディング/キーマップや言語拡張機能で動作します。

Jupyter built-in interactive window demo

Jupyterノートブックのデバッグ

Jupyterノートブックでのデバッグをサポートする作業を進めてきました。これにより、ノートブックセルにブレークポイントを設定したり、セルをステップバイステップで実行したり、その他のすべてのVS Codeデバッガー機能を使用したりできます。これは実験的な機能ですが、"jupyter.experimental.debugging": trueを設定し、選択したカーネルにipykernelバージョン6をインストールし、ノートブックツールバーのデバッグボタンをクリックすることで試すことができます。

Jupyter debugging

リモートリポジトリ

今回のイテレーションでは、Remote Repositories拡張機能のバグ修正といくつかのパフォーマンス改善、およびGitHub Pull Requests and Issues拡張機能とのより良い統合に主に焦点を当てました。さらに、Remote ExplorerRemote Repositoriesビューからリモートリポジトリを削除できるようになり、行範囲を含む\blob URLを開くサポートが改善されました。

GitHub Pull Requests and Issues

今回のイテレーションでのGitHub Pull Requests and Issues拡張機能の焦点はバグの修正でした。変更ログでハイライトを確認してください。

リモート開発

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

1.58の主な機能ハイライトは以下のとおりです。

  • 転送ポートに対してブラウザーを一度だけ開くオプション。
  • キャッシュされたイメージに対するdevcontainer.jsonのサポート。
  • Dev Containersが「hostRequirements」をチェックするようになりました。

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

ライブプレビュー

私たちはLive Preview拡張機能を開発しました。これはWeb開発のプレビューのためにローカルサーバーをホストします!🎉

エディター内ブラウザープレビュー、ライブプレビューの更新 (ファイル変更時または保存時)、マルチルートサポートなど、様々な機能が備わっています!

Live Preview Quick Walkthrough

この拡張機能にはLive Previewタスクもあり、永続的なサーバーを実行し、サーバーのトラフィックとその関連ファイルを表示できます。

Live Preview Tasks

その機能の詳細については、Marketplaceで確認するか、リポジトリをチェックしてください。

プレビュー機能

TypeScript 4.4のサポート

このリリースには、次期TypeScript 4.4リリースの初期サポートが含まれています。TypeScript 4.4の新しい言語機能と改善点については、TypeScriptブログで詳しく読むことができます。

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

TypeScript 4.4でバグが発生した場合は、フィードバックをお寄せください。

ターミナルをウィンドウ間で移動

ターミナル: セッションのデタッチで一つのウィンドウからデタッチし、ターミナル: セッションにアタッチで別のウィンドウにアタッチすることで、ターミナルをウィンドウ間で移動できるようになりました。将来的には、これによりウィンドウ間のドラッグアンドドロップも可能になるはずです!

拡張機能作成

詳細な補完項目ラベル

より詳細で構造化された補完項目ラベルをサポートするための新しいAPIを追加しました。項目ラベルにはvscode.CompletionItemLabel型を使用できるようになり、ラベル、詳細、説明を指定できます。

これらの新しいプロパティにより、言語拡張機能はシグネチャや修飾子を表示できるだけでなく、他の補完プロバイダーもこれを利用できます。例えば、GitHub Pull Request and Issues拡張機能は、エイリアスとともにフルネームを表示するようになりました。

Completion for Github aliases with full names

モーダルメッセージの詳細

モーダルの情報、警告、エラーメッセージを表示するためのAPIが、詳細の提供をサポートするようになりました。詳細テキストは、実際のメッセージの下に、より目立たないようにレンダリングされます。

A modal dialog with details

上記のダイアログは、以下のコードスニペットで生成されています。詳細テキストはモーダルメッセージ (modal: true) のみでサポートされていることに注意してください。

vscode.window.showInformationMessage('This is the message', {
  modal: true,
  detail:
    'This is the detail. Rendered less prominent, but with more space for, well, details.'
});

ターミナルプロファイルの提供

ターミナルプロファイルは拡張機能によって提供できるようになり、プロファイルピッカーに表示されます。

A contributed profile will show up along side detected and configured terminal profiles

ターミナルプロファイルを提供するには、3つのことを行う必要があります。

まず、package.jsonに貢献を追加します。

"contributes": {
  "terminal": {
    "profiles": [
      {
        "title": "Custom Profile",
        "id": "custom_profile"
      }
    ]
  },
}

次に、ユーザーがプロファイルを要求したときに拡張機能がアクティブ化されるように、アクティベーションイベントを追加します。

"activationEvents": [
  "onTerminalProfile:custom_profile"
]

最後に、ターミナルを作成するために使用されるオプションのセットを返すターミナルプロファイルプロバイダーを登録します。オプションは、標準のプロセスベースのTerminalOptionsか、カスタムのExtensionTerminalOptionsのいずれかです。

vscode.window.registerTerminalProfileProvider('custom_profile', {
  provideTerminalProfile() {
    return {
      options: {
        name: 'Profile from extension',
        shellPath: 'cmd.exe'
      }
    };
  }
});

ExtensionTerminalOptionsベースのターミナル名の変更

新しいPseudoterminal.onDidChangeNameイベントにより、ExtensionTerminalOptionsで作成されたターミナルの名前を変更できるようになりました。

const writeEmitter = new vscode.EventEmitter<string>();
const nameEmitter = new vscode.EventEmitter<string>();
const pty = {
  onDidWrite: writeEmitter.event,
  onDidChangeName: nameEmitter.event,
  open: () => writeEmitter.fire('Press and key to set the terminal title'),
  close: () => {
    /* noop*/
  },
  handleInput: (data: string) => {
    writeEmitter.fire(`Set title to "${data}"`);
    nameEmitter.fire(data);
  }
};
const terminal = (<any>vscode.window).createTerminal({ name: `My Extension REPL`, pty });
terminal.show();

拡張機能APIを介して作成されたターミナルのアイコンを設定

window.createTerminaliconPathを受け入れるようになり、ターミナルタブにアイコンを関連付けることができるようになりました。

const term = vscode.window.createTerminal({
  name: `Serve`,
  iconPath: new vscode.ThemeIcon('server-process')
});
term.show();

The iconPath will show up next to the terminal's name

保存されたMementoキーの列挙

保存されたMementoキーのセットを列挙するための新しいMemento.keys() APIが追加されました。このAPIは、以前に保存されたデータを扱いやすくし、保存されたデータを移行する必要がある場合に役立ちます。

Language Server Protocol

言語サーバープロトコルの新しいバージョンと、対応するnpmモジュールが公開されました。このバージョンには、診断プルモデル仕様の最終提案が含まれています。

Debug Adapter Protocol

「メモリ書き込み」リクエストと「メモリ変更」イベントの進捗

VS Codeのデバッグエクスペリエンスの将来のバージョンでメモリビューアを統合する予定です。このサポートのために、Debug Adapter Protocolには以前からReadMemoryリクエストが存在していました。現在、対応するWriteMemoryリクエストとMemoryイベントに取り組んでいます。WriteMemoryリクエストには最終提案があり、次回のマイルストーンでDAPに追加される予定です。Memoryイベントの提案はまだ議論中です。デバッグ拡張機能の作成者でこれらのDAPプロトコル追加に興味がある方は、フィードバックをいただけると幸いです。

提案された拡張API

各マイルストーンには新しい提案された API があり、拡張機能の作成者はそれらを試すことができます。いつものように、皆様のフィードバックをお待ちしております。提案された API を試すには、次の手順を実行する必要があります。

  • 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
  • 拡張機能のpackage.jsonファイルに次の行が必要です: "enableProposedApi": true
  • 最新バージョンのvscode.proposed.d.tsファイルをプロジェクトのソース場所にコピーします。

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

リッチなステータスバーホバー

ステータスバー項目でリッチなホバーをサポートするための新しい提案されたAPIがあります。試すには、StatusBarItem.tooltip2MarkdownStringを提供してください。

Rich Status bar hover

  • MarkdownString.supportThemeIconsがtrueの場合、$(iconName)構文でアイコンを使用できます。
  • MarkdownStringが信頼されている場合、コマンドリンクも追加できます。構文: ([test](command:vscode.newWindow))

テスト

テストAPIの最終化への取り組みが続いています。今回のイテレーションでは、拡張機能ホストの他のAPIのスタイルにより良く合うように、テストAPIの一部をリファクタリングしました。最終化プロセスとAPIの変更について追跡するには、issue #122208をフォローしてください。

我々が予見する主な変更点は、「実行構成」の提供方法です。これらのランナーAPIの進捗を追跡または意見を述べるには、issue #127096をフォローしてください。

最後に、テストカバレッジの調査と初期実装を開始しました。これは数週間以内にUIに表示される予定です。

インラインサジェスチョン

インラインサジェスチョンAPIにより、拡張機能はサジェスチョンウィジェットから分離されたインラインサジェスチョンを提供できます。インラインサジェスチョンは、すでに受け入れられたかのようにグレーの色でレンダリングされます。ユーザーはTabキーでサジェスチョンを切り替えたり、受け入れたりできます。

vscode.languages.registerInlineCompletionItemProvider(
  { pattern: '**' },
  {
    provideInlineCompletionItems: async (document, position) => {
      return [{ text: '< 2) {\n\treturn 1;\n\t}' }];
    }
  }
);

Inline suggestions in the editor

エンジニアリング

ES2020

TypeScriptプロジェクトを更新し、Promise.allSettledString.replaceAllなどの最新のJavaScript APIを使用できるようになりました。また、よりモダンなJavaScriptであるES2020を出力するようになり、メインバンドルの全体的なサイズがわずかに削減されました。

Electron サンドボックスサポートの進捗

今回のマイルストーンでは、VS CodeウィンドウでElectronのサンドボックスおよびコンテキスト分離機能を有効にする準備を継続しました。

具体的には

  • VS Codeウィンドウを開くために必要なリソースをロードする際のNode.js依存関係を削除しました。
  • 非推奨のwebviewコンポーネントにより近い動作を得るために、iframe要素に検索機能を追加し、将来的にwebviewを廃止できるようにしました。この機能は、settings.jsonファイルで"webview.experimental.useIframes": trueを設定することで有効にできます。

ドキュメント

データサイエンスのチュートリアルとトピック

データサイエンスのチュートリアルとトピックは、https://vscode.dokyumento.jpの目次で独自のセクションになりました。Jupyter NotebooksPythonインタラクティブウィンドウの使用に関するチュートリアル、さらにはタイタニック号の乗客データを分析するデータサイエンスチュートリアルを見つけることができます。

Data Science table of contents on code.visualstudio.com

注目すべき修正点

  • 120956: iPad: エディター外でコンテキストメニューをトリガーできない
  • 122448: 依存関係が無効になっている場合、拡張機能を自動的に無効にする
  • 124169: アクティブなデバッグ行をインデントしないようにする
  • 125144: スレッドが停止しなくなったときに、フォーカスが自動的に別のスレッドに渡されない
  • 125528: ブレークポイントビューで停止しなくなったブレークポイントの選択を解除する
  • 126211: デバッガー経由で起動されたNodeプロセスがVS Code終了時に強制終了されない
  • 126702: macOS: コマンドラインcode .が機能しない
  • 127716: デバッグホバー: キーボードでプロパティを検索できるようにする

ありがとうございます

最後に、今月 VS Code に貢献してくださった以下の皆様に、心からの感謝を申し上げます。

問題追跡への貢献者

vscodeへの貢献者

vscode-extension-samplesへの貢献

vscode-html-languageserviceへの貢献

vscode-js-debugへの貢献者

vscode-languageserver-nodeへの貢献者

language-server-protocolへの貢献者

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

monaco-languages への貢献

monaco-typescriptへの貢献