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

2019年7月 (バージョン 1.37)

バージョン 1.37.1 の更新: この更新により、これらの問題が解決されます。

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


Visual Studio Code の 2019年7月リリースへようこそ。今回のバージョンには、皆さんに気に入っていただけるであろう多数の更新が含まれており、主なハイライトは以下のとおりです。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。
この 1.37 リリースのハイライト動画は、Developer Advocate のBrian Clark が提供しています。

Insiders: 新しい機能をいち早く試したいですか?夜間のInsiders ビルドをダウンロードして、最新の更新が利用可能になり次第お試しいただけます。Visual Studio Code の最新ニュース、更新、コンテンツについては、Twitter @code をフォローしてください!

ワークベンチ

新しい製品アイコン

すべての製品アイコンをスタイル、色、サイズが統一されるように更新しました。様々なイテレーションを経て、コミュニティの皆さんのフィードバックがプロセス全体を通して非常に役立ちました。

: これは Octicons の使用には適用されません。Octicons はステータスバーとクイックピックに表示されます。

VS Code product icons

設定エディターでの文字列配列のサポート

設定エディターで文字列配列の設定を編集できるようになりました。「項目の追加」ボタンをクリックすると、新しい文字列を追加するための入力ボックスが表示されます。

Settings UI for array-of-string settings

拡張機能の作成者は、`type` と `items` キーを含む構成を提供することで、このサポートを有効にできます。

{
  "type": "array",
  "items": {
    "type": "string"
  }
}

設定ファイルからの警告を削除

`settings.json` ファイルで、不明な設定やサポートされていない設定に対する警告が表示されなくなります。代わりに、アクティブでない設定は、未使用のソースコードと同様にフェード表示され、ホバーするとその理由が説明されます。さらに、現在無効になっている拡張機能の設定に対する警告も表示されません。

Faded unused settings

検索結果をエクスプローラーで表示

検索ビューのファイルコンテキストメニューに、ファイルエクスプローラーでそのファイルに移動するための「エクスプローラーで表示」コマンドが追加されました。

Reveal in Explorer command in search result

検索正規表現機能

1.29 リリースで、検索に PCRE2 正規表現エンジンを使用させる設定 `search.usePCRE2` を追加しました。これにより、後方参照先読みアサーションなどの高度な正規表現機能で検索できるようになりました。ripgrep の上流での作業のおかげで、特別な設定を有効にすることなくこれらの機能を使用できるようになりました。正規表現が Rust 正規表現エンジンでサポートされていない機能を使用している場合、ripgrep は自動的に PCRE2 エンジンにフォールバックし、`search.usePCRE2` は非推奨になりました。念のため、開いているエディターはエディターの JavaScript ベースの検索を使用して検索されるため、VS Code は JavaScript で有効な正規表現のみをサポートしています。

NPM スクリプトエクスプローラーが既定で表示されるように

以前は、NPM スクリプトエクスプローラーを表示するには設定 `npm.enableScriptExplorer` を有効にする必要があり、これは見つけにくいものでした。ワークスペースのルートに `package.json` ファイルがある場合、NPM スクリプトエクスプローラーはファイルエクスプローラーで折りたたまれた状態で表示されるようになりました。

NPM Scripts Explorer collapsed

ワークスペースのルートに `package.json` がない場合でも、設定を使用して NPM スクリプトエクスプローラーを有効にすることができます。エクスプローラーを非表示にしたい場合は、そのタイトルを右クリックしてコンテキストメニューから「非表示」を選択できます。

focusedView コンテキストキー

新しいキーバインドの `when` 句コンテキストキー `focusedView` が追加され、指定されたビューがフォーカスされているときにコマンドを表示または有効にできるようになりました。

"when": "focusedView == nodeDependencies"

アクセシビリティの改善

ワークベンチ全体のアクセシビリティの問題を修正しました。修正された問題の完全なリストは、GitHub で「accessibility」ラベルで確認できます。

ツリービューに新しいツリーウィジェットを採用

ツリービューを提供する拡張機能は、新しいツリーウィジェットの体験を得られるようになります。このツリーウィジェットは、パフォーマンスの向上に加え、キーボードナビゲーション、フィルタリング、カスタムインデント、水平スクロールなどが改善されています。お気に入りの拡張機能にカスタムツリービューがある場合、組み込みの VS Code エクスプローラーに以前追加されたものと同じ UX 改善が見られるはずです。

エディター

選択範囲の空白文字を表示

The `editor.renderWhitespace` 設定が `selection` オプションをサポートするようになりました。このオプションを設定すると、空白文字は選択されたテキスト上でのみ表示されます。

Whitespace rendered on selection

これは、エディター全体を空白文字で埋めることなく、空白文字を素早く確認するのに便利です。

ミニマップの検索結果の視認性向上

前回のリリースで、ミニマップ (コードアウトライン) に検索装飾を導入しました。これらの装飾は見えにくかったため、今回のイテレーションでは視認性を高めることに取り組みました。ミニマップでは行全体が低い不透明度でハイライトされ、実際のマッチは高い不透明度で表示されるようになりました。

Minimap search results

新しい `minimap.findMatchHighlight` テーマカラーを使用して、装飾の色を変更することもできます。

検索と置換で大文字/小文字を保持

エディターの検索ウィジェットでの置換時に大文字/小文字を保持できるようになりました。この機能は、エディターの置換入力ボックスで大文字/小文字保持オプション (「AB」ボタン) がオンになっている場合に有効になります。

Preserve Case button

現在、VS Code は「すべて大文字」、「すべて小文字」、および「タイトルケース」の保持のみをサポートしています。

Preserve case example

検索ウィジェットのボタン切り替えアクティブ状態

検索ウィジェットのボタン切り替えアクティブ状態に塗りつぶしの背景を追加し、アクティブな切り替えにフォーカスしているかどうかを簡単に判別できるようにしました。これは、検索ビュー、検索と置換、ターミナル検索に表示されます。

この更新により、切り替えアクティブ状態の背景色を制御するための新しいテーマカラー `inputOption.activeBackground` が導入されました。この色は `focusBorder` を再利用するため、既定でテーマとより良く連携します。また、`inputOption.activeBorder` の既定値を透明に設定し、境界線がフォーカスにのみ使用されるようにしました。

Button toggle active state

情報カラーの更新

警告カラーの統一に続いて、`editorInfoForeground` と `editorInfoBorder` も他の情報診断カラーと一致するように更新しました。この更新された色は、Peek エラービューとエディターの波線で確認できます。

Info display colors

統合ターミナル

検索 UX の改善

以前は、ターミナル内での検索はターミナルのビューポートの上部から開始され、下方向に検索していました。下部に達すると、上部に折り返していました。新しい動作は他のいくつかのターミナルエミュレーターと一致しており、バッファの下部から上方向に検索を開始するため、混乱の少ない体験となります。

Terminal search now searches upwards by default

ターミナルのアクセシビリティの改善

ターミナルに、スクリーンリーダー使用時におよびを介して便利な行ナビゲーションを可能にする行ナビゲーションモードが搭載されました。このモードはで解除できます。

キーバインドをカスタマイズしたい場合の新しいコマンドです。

workbench.action.terminal.navigationModeExit
workbench.action.terminal.navigationModeFocusNext
workbench.action.terminal.navigationModeFocusPrevious

その他のアクセシビリティの改善も行われました。

  • 空行に明示的な文字列ではなく、非改行スペース文字が使用されるようになり、スクリーンリーダーが適切にアナウンスできるようになりました。
  • スクリーンリーダーは、文字が入力および削除されたときにアナウンスするようになりました。一部動作しないケースもありますが、ほとんどのケースはカバーされています。

設定で解決される変数

変数を以下の設定内で使用できるようになりました。

terminal.integrated.cwd
terminal.integrated.shell.<platform>
terminal.integrated.shellArgs.<platform>

たとえば、現在のファイルのフォルダーでターミナルを開くために拡張機能は不要になり、この設定を追加するだけでよくなりました。

"terminal.integrated.cwd": "${fileDirname}"

エラー報告と診断の改善

以前は、ターミナルが不正な構成で起動した場合、プロセスがエラーコードで終了したことのみを示していました。現在では、いくつかの一般的なシナリオに対する解決策をユーザーに案内する、より良いエラーメッセージが提供されるようになりました。

Using an invalid shell setting will tell you the shell is invalid

言語

SCSS @import のナビゲーションを改善

VS Code は以前、SCSS インポートを静的に解決していました。たとえば、`@import './foo'` は `_foo.scss` に解決されていました。しかし、SCSS はインポートの解決方法においてより柔軟であり、`./foo` を以下の5つの場所のいずれかに解決することを許可しています。

  • foo.scss
  • _foo.scss
  • foo/index.scss
  • foo/_index.scss
  • foo.css

VS Code は、解決されたファイルがディスク上に存在する場合、`@import './foo'` をこれらの場所のいずれかに解決するようになりました。リンクが `/` で終わる場合、`/index.scss` または `/_index.scss` のいずれかにのみ解決されることに注意してください。リンクが `.css` や `.scss` などのサフィックスで終わる場合、VS Code は代替ファイル場所を試行しません。

CSS プロパティ値の補完を改善

CSS の補完機能が、あまり一般的でない値を含む、追加の 754 の CSS プロパティ値について詳細なドキュメントを提供するようになりました。

CSS property value completion documentation

JavaScript および TypeScript の構文のみの機能をより迅速に利用

前回のリリースで、VS Code の JavaScript および TypeScript 言語機能を支える TypeScript サーバーを構文サーバーとセマンティックサーバーに分割する実験的な設定を追加しました。

VS Code 1.37 では、分割されたサーバーが既定で有効になりました。これにより、大規模な JavaScript および TypeScript プロジェクトにおいて、コード折りたたみやドキュメントアウトラインなどの構文ベースの操作がより迅速に利用できるようになるはずです。

タスク

TypeScript 検出タスクの警告

前回のリリースで、TypeScript タスクの自動検出が、`tsconfig` パスにおける OS 固有のパス区切り文字の使用から、よりクロスプラットフォームに優しい `/` へと変更されました。`tsconfig` パスに `\\` が含まれている場合、VS Code は警告を表示するようになりました。

{
  "type": "typescript",
  "tsconfig": "src\\tsconfig.json", // This will cause a warning to show. It should be "tsconfig": "src/tsconfig.json"
  "option": "watch",
  "problemMatcher": [
    "$tsc-watch"
  ]
}

タスクおよびデバッグ構成用の `${relativeFileDirname}` 変数

新しい変数 `${relativeFileDirname}` は、現在開いているファイルのディレクトリのワークスペースフォルダーからの相対パスに解決されます。この変数はタスクおよびデバッグ構成 (`tasks.json` および `launch.json`) で使用できます。

resolveTask のサポート

タスクプロバイダーは、`resolveTask` を実装して、タスクを提供する拡張機能のオーバーヘッドを削減できるようになりました。`resolveTask` は `provideTasks` の後に呼び出されるため、拡張機能に `provideTasks` と自動検出を無効にする設定がある場合 (組み込みの gulp 拡張機能のように)、ユーザーが `tasks.json` であなたのタスクのいずれかを参照している場合でも、`resolveTask` が呼び出され、拡張機能はその単一のタスクを返すことができます。

拡張機能への貢献

リモート開発 (プレビュー)

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

以下を説明する最近の2つのブログ記事も参照できます。

Java がスマート選択をサポート

Microsoft Java 拡張機能が、スマートセマンティック選択をサポートするようになりました。ソースコード内のキャレット位置のセマンティック情報に基づいて、選択範囲を拡大または縮小できます。

  • 選択範囲を拡大するには、⌃⇧⌘→ (Windows, Linux の場合は Shift+Alt+Right) を使用します。
  • 選択範囲を縮小するには、⌃⇧⌘← (Windows, Linux の場合は Shift+Alt+Left) を使用します。

拡張機能作成

vscode.workspace.fs

拡張機能がファイルやフォルダーを読み書きし、管理するための新しい API があります。これは Node.js のfs ファイルシステムモジュールの代替であり、さらに重要なことに、SSH や WSL リモートファイルシステムなどの貢献されたファイルシステムからのファイルアクセスを可能にします。

以下はファイルへの書き込み方法を示すスニペットです。より多くの使用例はfsconsumer-sampleで確認できます。

const writeStr = '1€ is 1.12$ is 0.9£';
const writeBytes = Buffer.from(writeStr, 'utf8');

await vscode.workspace.fs.writeFile(someUri, writeBytes);

行動喚起: 現在 Node.js の `fs` モジュールを使用している拡張機能の場合、新しい `vscode.workspace.fs` API への移行を検討してください。

DiagnosticsTag.Deprecated

診断タグを使用すると、拡張機能の作成者はエディター内の診断の表現を豊かにすることができます。このリリースでは `DiagnosticTag.Deprecated` が追加され、エディターは取り消し線でレンダリングします。

Strikeout Deprecated decoration

上の画像にある診断は、以下に示す `validate` 関数によって作成されています。`diag.tags = [vscode.DiagnosticTag.Deprecated];` の行が非推奨タグを追加します。

let diagnostics = vscode.languages.createDiagnosticCollection('Sample Errors');
let validate = (editor: vscode.TextEditor | undefined) => {
  if (!editor) {
    return;
  }
  let result: vscode.Diagnostic[] = [];
  for (let line = 0; line < editor.document.lineCount; line++) {
    let pos = 0;
    while ((pos = editor.document.lineAt(line).text.indexOf('guys', pos)) >= 0) {
      let diag = new vscode.Diagnostic(
        new vscode.Range(line, pos, line, pos + 'guys'.length),
        'This is deprecated, use "folks", "people", or "you all" instead.'
      );
      diag.severity = vscode.DiagnosticSeverity.Warning;
      diag.tags = [vscode.DiagnosticTag.Deprecated];
      result.push(diag);
      pos += 'guys'.length;
    }
  }
  diagnostics.set(editor.document.uri, result);
};

vscode.workspace.workspaceFile

ワークスペースファイルの場所を返す新しいワークスペースプロパティ `workspace.workspaceFile` があります。例: `file:///Users/name/Development/myProject.code-workspace` または、タイトルなしでまだ保存されていないワークスペースの場合は `untitled:1555503116870`。

開かれているワークスペースによって、値は次のようになります。

  • ワークスペースが開かれていないか、単一のフォルダーが開かれている場合は `undefined`。
  • ワークスペースファイルのパスは `Uri` として。

ワークスペースがタイトルなしの場合、返される URI は `untitled:` スキームを使用します。

ワークスペースファイルの場所の一つの使い方は、`vscode.openFolder` コマンドを呼び出して、閉じた後にワークスペースを再度開くことです。

vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);

注: `workspace.workspaceFile` の場所を使用して構成データをファイルに直接書き込むことは推奨されません。代わりに `workspace.getConfiguration().update()` メソッドを使用してください。このメソッドは、単一のフォルダーが開かれている場合でも、タイトルなしまたは保存されたワークスペースでも機能します。

vscode.env.shell

提案されていた `vscode.env.shell` API が安定版になりました。これは `terminal.integrated.shell.` 設定の代わりに、ターミナルのデフォルトシェルを取得するために使用すべきです。

const shell = vscode.env.shell;
if (shell.search(/(powershell|pwsh)/i) !== -1) {
  // Do something special that PowerShell needs
}

when 句での OR のサポート

`when` 句が期待される様々な貢献ポイントで、論理 OR (`||`) を使用できるようになりました。

たとえば、メニュー貢献を追加する場合

"contributes": {
  "menus": {
    "editor/title": [{
      "command": "showPreviewToSide",
      "when": "editorLangId == markdown || editorLangId == html",
      "group": "navigation"
    }]
  }
}

AND `&&` 演算子は OR `||` よりも高い優先順位を持ちます。

アクティブな入力オプション用の新しいテーマカラー

新しい色 `inputOption.activeBackground` が追加され、入力フィールドのアクティブ化されたオプションの背景色を制御できるようになりました。この色は `focusBorder` を再利用するため、既定でテーマとより良く連携します。また、`inputOption.activeBorder` の既定値を透明に設定し、境界線がフォーカスにのみ使用されるようにしました。

拡張機能の統合テスト実行前に拡張機能をインストール

`vscode-test@1.1.0` を使用すると、拡張機能の作成者はダウンロードした VS Code のコピーの CLI パスを解決し、そのパスを拡張機能の管理に使用できます。

const cp = require('child_process');
const { downloadAndUnzipVSCode, resolveCliPathFromExecutablePath } = require('vscode-test');

(async () => {
  const vscodeExecutablePath = await downloadAndUnzipVSCode('1.36.0');
  const cliPath = resolveCliPathFromExecutablePath(vscodeExecutablePath);

  cp.spawnSync(cliPath, ['--install-extension', '<EXTENSION-ID-OR-PATH-TO-VSIX>'], {
    encoding: 'utf-8',
    stdio: 'inherit'
  });
})();

詳細については、更新された拡張機能テストのドキュメントを参照してください。

Linux で拡張機能統合テストを実行するための Travis CI スクリプトの更新

拡張機能の統合テストに推奨される構成 (以下を参照) は、最新の Travis CI Linux 環境では動作しない可能性があります。

if [ $TRAVIS_OS_NAME == "linux" ]; then
  export CXX="g++-4.9" CC="gcc-4.9" DISPLAY=:99.0;
  sh -e /etc/init.d/xvfb start;
  sleep 3;
fi

代わりに、以下の Xvfb スクリプトを使用できるようになりました。

if [ $TRAVIS_OS_NAME == "linux" ]; then
  export DISPLAY=':99.0'
  /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
fi

詳細については、更新された継続的インテグレーションのドキュメントを参照してください。

提案された拡張API

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

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

提案APIを使用する拡張機能は公開できないことに注意してください。次回のリリースでは互換性のない変更が行われる可能性があり、既存の拡張機能を壊すことは決して望ましくありません。

拡張機能ターミナル

昨年導入された提案されていた TerminalRenderer API は大幅な変更を経て、「拡張機能ターミナル」に有利な形で非推奨となりました。新しい API はターミナルの実際の動作とより密接に連携しており、拡張機能は *nix スタイルの pty に似た `Pseudoterminal` オブジェクトを実装するようになりました。

現在の提案は以下のとおりです。

export namespace window {
  export function createTerminal(options: ExtensionTerminalOptions): Terminal;
}

export interface ExtensionTerminalOptions {
  name: string;
  pty: Pseudoterminal;
}

interface Pseudoterminal {
  onDidWrite: Event<string>;
  onDidOverrideDimensions?: Event<TerminalDimensions | undefined>;
  onDidClose?: Event<void>;
  open(initialDimensions: TerminalDimensions | undefined): void;
  close(): void;
  handleInput?(data: string): void;
  setDimensions?(dimensions: TerminalDimensions): void;
}

主な変更点は以下のとおりです。

  • 拡張機能ターミナルは、異なるオプションオブジェクトを使用するだけで、通常のターミナルとほぼ同じ方法で作成されるようになりました。これにより、`TerminalRenderer.terminal` を介した `Terminal` オブジェクトへの紛らわしいアクセスもなくなります。
  • OS プロセスという概念と、終了コードを返す必要がなくなりました。`Pseudoterminal` は単にターミナルを閉じることができ、すべてのエラー表示/通知は拡張機能によって処理されます。
  • `Pseudoterminal.open` は、初期寸法が利用可能な場合 (ターミナルパネルが以前に表示されていた場合) に呼び出されます。

ここに、入力した内容をエコーバックするシンプルなターミナルの例を示します。

const writeEmitter = new vscode.EventEmitter<string>();
let line = '';
const pty = {
  onDidWrite: writeEmitter.event,
  open: () => writeEmitter.fire('Type and press enter to echo the text\r\n\r\n'),
  close: () => {},
  handleInput: (data: string) => {
    if (data === '\r') {
      writeEmitter.fire(`\r\necho: "${line}"\r\n\n`);
      line = '';
    } else {
      line += data;
      writeEmitter.fire(data);
    }
  }
};
const terminal = vscode.window.createTerminal({ name: `My Extension REPL`, pty });
terminal.show();

この機能を安定させ、非推奨のターミナルレンダラーを比較的迅速に、おそらく v1.38 と v1.39 の間で削除したいと考えています。

vscode.CustomExecution2

この API は `vscode.CustomExecution` の進化版です。新しい改善された `vscode.Pseudoterminal` を使用して、タスクプロバイダーが、スクリプトやプロセスを実行するだけでなく、拡張機能内のコードがターミナルを完全に制御できるタスクを作成できるようにします。

export class CustomExecution2 {
  /**
   * @param process The [Pseudoterminal](#_Pseudoterminal) to be used by the task to display output.
   * @param callback The callback that will be called when the task is started by a user.
   */
  constructor(callback: (thisArg?: any) => Thenable<Pseudoterminal>);

  /**
   * The callback used to execute the task. Cancellation should be handled using
   * [Pseudoterminal.close](#_Pseudoterminal.close). When the task is complete fire
   * [Pseudoterminal.onDidClose](#_Pseudoterminal.onDidClose).
   */
  callback: (thisArg?: any) => Thenable<Pseudoterminal>;
}

vscode.commands.onDidExecuteCommand

コマンドが実行されるたびに発生する新しいイベントがあり、そのペイロードはコマンドと引数を識別します。

export interface CommandExecutionEvent {
  command: string;
  arguments: any[];
}
export namespace commands {
  /**
   * An event that is emitted when a [command](#_Command) is executed.
   */
  export const onDidExecuteCommand: Event<CommandExecutionEvent>;
}

Webview.toWebviewResource および Webview.cspSource

以前に提案されていた Webview.resourceRoot API が再設計されました。

現在、ウェブビューには2つの提案されているプロパティがあります。

  • `Webview.toWebviewResource` - ローカルファイルシステムの URI を、ウェブビュー内で使用できる形式に変換します。

    デスクトップ版 VS Code では、`file:` URI を `vscode-resource:` URI に変換します。

  • `Webview.cspSource` - ウェブビューリソースのコンテンツセキュリティポリシーソース。

    デスクトップ版 VS Code では、これは文字列 `vscode-resource:` になります。

const panel = vscode.window.createWebviewPanel(
  CatCodingPanel.viewType,
  'Cat Coding',
  vscode.ViewColumn.One,
  {
    // Restrict the webview to only loading local content from our extension's `media` directory.
    localResourceRoots: [vscode.Uri.file(path.join(extensionPath, 'media'))]
  }
);

const imagePath = vscode.Uri.file(path.join(extensionPath, 'media'));

panel.html = `<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src ${
      panel.webview.cspSource
    } https:;">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cat Coding</title>
</head>
<body>
    <img src="${panel.webview.toWebviewResource(imagePath)}/cat.gif" width="300" />
</body>
</html>`;

エンジニアリング

VS Code コードベースでの `suppressImplicitAnyIndexErrors` の削除

VS Code のソースに対して厳密な null チェックを有効にしたとき、TypeScript コンパイラで `"suppressImplicitAnyIndexErrors": true` もオンにしました。この設定により、値の型に明示的にインデックスアクセスシグネチャがない場合でも、値に対してブラケットアクセス演算子を使用することが許可されます。

これは、TypeScript が捕捉できたはずのエラーを容易に隠蔽してしまう可能性があるため、問題があります。

const map = new Map()
map.set('property', true);

...

if (map['property']) { // This is not an TS error but it does not do what you want!
    doImportantStuff();
}

今回のイテレーションでは、`suppressImplicitAnyIndexErrors` の回避策を削除し、それが抑制していた約 250 のエラーを修正しました。最も一般的な修正は、明示的なインデックスシグネチャを追加することと、オブジェクトリテラルを使用する代わりにマップの保存に適切な `Map` 型を使用することの2つでした。

グリッドベースのワークベンチレイアウトの進捗

今回のマイルストーンでは、いくつかのマイルストーンで開始された、ワークベンチのグリッドベースレイアウトに関する取り組みを再開しました。初期ソリューションが完了すれば、新しいバージョンのワークベンチは同様に機能するはずですが、新しいレイアウトオプションや機能の追加に対してより柔軟になります。

新しくテストしている動作の1つは、ターミナルを一番上までドラッグしてエディターを完全に非表示にする機能です。今のところ、このレイアウトは `workbench.useExperimentalGridLayout` というフラグの後ろにあります。前回のマイルストーンで Insiders ではデフォルトで有効にしましたが、次回のマイルストーンでも引き続き有効にします。

iframe ベースのウェブビューの継続的な調査

VS Code のウェブビューをホストするために通常の iframe を使用する調査を継続しました。その一環として、すべての iframe ベースのウェブビューをユニークなオリジンでロードすることをサポートするようになりました。これにより、複数の拡張機能からのウェブビューが互いに影響し合わないことが保証されます。

デスクトップ版 VS Code で iframe ベースのウェブビューを有効にするには、設定で `"webview.experimental.useExternalEndpoint": true` を指定します。iframe ベースのウェブビューの使用には、現在インターネット接続が必要であることに注意してください。iframe ベースのウェブビューはまだ実験段階ですが、iframe ベースのウェブビューを使用して実行した場合に動作しない拡張機能の部分について、ウェブビュー拡張機能の作成者からのフィードバックをいただけると幸いです。

新しいドキュメント

リモート開発チュートリアル

リモート開発拡張機能を使用して Visual Studio Code を実行する方法を順を追って説明する、新しい入門チュートリアルがあります。

  • SSH 経由のリモート - SSH 経由で Visual Studio Code を使用してリモートマシンや仮想マシンに接続します。
  • WSL での作業 - Windows Subsystem for Linux で Visual Studio Code を実行します。
  • 開発コンテナ - Docker コンテナ内で Visual Studio Code を実行します。

注目すべき修正点

  • 422: 最大化されたウィンドウを復元する際にウィンドウサイズを保持する
  • 70371: 大規模ファイルで Emmet のタブ補完が遅い
  • 76922: サイドバービューの順序がすべてのウィンドウで保持される
  • 76989: 拡張機能のデバッグで拡張機能の無効化が機能しない
  • 77110: デバッグ統合ターミナルサポートがデフォルトターミナルを取得しない
  • 77926: 「string;」と入力すると「strings;」が挿入される場合がある

ありがとうございます

最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!

vscodeへの貢献者

問題追跡への貢献者

受信した問題の管理にご協力いただける場合は、コミュニティ問題追跡ページをご覧ください。

language-server-protocolへの貢献者

debug-adapter-protocolへの貢献者

vscode-generator-codeへの貢献者

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

inno-updaterへの貢献

localizationへの貢献

800 を超えるCloud + AI Localization コミュニティメンバーが Microsoft Localization Community Platform (MLCP) を利用しており、そのうち約 100 名が Visual Studio Code に積極的に貢献しています。新しい翻訳の提供、翻訳への投票、プロセス改善の提案など、皆様の貢献に感謝いたします。

貢献者のスナップショットを以下に示します。貢献者名リストを含むプロジェクトの詳細については、プロジェクトサイト https://aka.ms/vscodeloc をご覧ください。

  • ボスニア語: Ismar Bašanović, Ernad Husremovic.
  • ブルガリア語: Hristiqn Hristov, Иван Иванов, Любомир Василев, Gheorghi Penkov.
  • チェコ語: Tadeáš Cvrček, Daniel Padrta, David Jareš, Jan Hajek, Jakub Stibůrek, Michal Franc, Jan Kos, Radim Hampl, Jiří Hofman, Samuel Tulach, Jan Brudný.
  • デンマーク語: René Pape, Lasse Stilvang, Allan Kimmer Jensen, Lars Vange Jørgensen, Alexander Matzen, Martin Liversage, Johan Fagerberg, Thomas Larsen, Anders Lund, Anton Ariens.
  • オランダ語: Leroy Witteveen, Maxim Janssens, Luc Sieben, Hans Zoons, Jos Verlinde, Eric Algera, Damien van Gageldonk, Maxim Van Damme, Sven Klaasen, Tom Meulemans, Sujith Quintelier.
  • 英語 (イギリス): Martin Littlecott, Alexander Ogilvie, Tobias Collier, William Wood, Fabio Zuin, Mohit Nain, Dan Jacobs, Sulkhan Ninidze, Giorgi Jambazishvili, alshyab wa3ed, YASHU MITTAL, Tejas kale, Mohammad Idrees, Chris Dias.
  • フィンランド語: Petri Niinimäki, Kiti Suupohja, Lasse Leppänen, Sebastian de Mel, Riku Riikonen, Valtteri Vatanen.
  • フランス語: Antoine Griffard, Thierry DEMAN-BARCELÒ, Corwin D'Ambre, Mohamed Sahbi, Rodolphe NOEL, Maxime Coquerel, Steven Dugois, Cédric M., Michael VAUDIN, Bastien Boussouf, franto.
  • ドイツ語: Julian Pritzi, Jakob von der Haar, Frank Lindecke, Dejan Dinic, Florian Erbs, Patrick Burke, Mario Koschischek, Florian Berger, Christof Opresnik, Hans Meiser, Carsten Kneip, Ettore Atalan, Thorsten Hans, Meghana Garise, Sebastian Seidl.
  • ギリシャ語: Δημήτρης Παπαϊωάννου, Sotiris Koukios-Panopoulos, Jim Spentzos, Θοδωρής Τσιρπάνης, Stratos Kourtzanidis, Charalampos Fanoulis, John D, Vassilis Vouvonikos.
  • ヘブライ語: חיים לבוב, Shalom Craimer, Matan Amos, Eyal Ellenbogen, Snir Broshi, Kyle Orin.
  • ヒンディー語: Satish Yadav, Amit Gusain, Sanyam Jain, Abhirav Kushwaha, Ashok Kumar Rathore, nirav adatiya, Rajeev Desai, shaswat rungta, Kumar Vaibhav, Pramit Das, Jagjeet Singh, Pratishek PII, Kiren Paul, Chethana S, Kishan K, Dhanvi Kapila.
  • ハンガリー語: Levente Borbély, Péter Nagy, Levente Hallai Seiler, Dániel Tar, Richard Borcsik, Boldi Kemény.
  • 中国語 (簡体字): Tingting Yi, 斌 项, paul cheung, Yiting Zhu, 建东 薛, feiyun0112 feiyun0112, Joel Yang, 刘瑞恒 刘瑞恒, Edi Wang, Junzhe Liu, Dave Young, 张锐, Yizhi Gu, Fan Su, 昊宇 周, Justin Liu, Pluwen, Tony Xia, Yu Zhang, XIANG ZUO, 少民 谈, 彦佐 刘, Zhiqiang Li, 福永 叶, G.Y. Z, Hao Hu, 志乐 龚, meng shao, Horie Yuan, Xiangrui Kong, Liam Kennedy, 王文杰, 赵畅畅, 松陽 樊, anson zhang, Young Bige, Shi Liu, Wang Debang, Jessica Zhang, Licheng Ren, 驰 雷, sun qing, xiong Fu, Lynne Dong, zhao yu, 吉姆 舒, 红东 黄, 游 尤, 剑秋 陶, Hanlin Yang, , bh wu, Bravo Yeung, Michael Zhang, Hanyu ZHANG, Y F, WangCG duoduobear, ziqiang sun, 越 郑, 正元 刘, Jiang LI, 擎 钟, peng wei, 涛 徐, 逍遥 许, Charles Lee, 瑜 周, WL, 偉 全, rsy iridescent, Simon Chan, 海龙 黄, 仁松 陈, Jieting Xu, panda small, 翼 张, Chen Yang, Wang Weixuan, 舜杰 杨, Ludi Fang, 雨齐 刘, 建 周, 涛 罗, cuibty wong, 立飞 李, LI ZHAO, 九鼎 譚.
  • 中国語 (繁体字): 謝政廷, Winnie Lin, LikKee 沥祺 Richie, Martin Lau, Jeremy, 奕濬 潘, 小克, 煾 雪.
  • インドネシア語: Jakka Prihatna, Septian Adi, Arif Fahmi, Laurensius Dede Suhardiman, maziyank, Heston Sinuraya, Hendra Widjaja, Don Nisnoni, Rachmat Wahidi, Franky So, Bervianto Leo Pratama, Eriawan Kusumawardhono, Rifani Arsyad, Afnizar Nur Ghifari, Christian Elbrianno, Pradipta Hendri, Azhe Kun.
  • イタリア語: Alessandro Alpi, Bruni Luca, Luigi Bruno, Andrea Dottor, Riccardo Cappello, Aldo Donetti, andrea falco, Emanuele Meazzo, Michael Longo, Marco Dal Pino.
  • 日本語: EbXpJ6bp -, nh, Kyohei Uchida, Yoshihisa Ozaki, Hasefumi, TENMYO Masakazu, Takayuki Fuwa, Michihito Kumamoto, Koichi Makino, Seiji Momoto, Aya Tokura, Yosuke Sano, Makoto Sakaguchi, Kyohei Moriyama, 裕子 知念, Rie Moriguchi, Fujio Kojima, 美穂 山本, taniokae, 太郎 西岡, Hiroomi Kurosawa, Kazuya Ujihara, Yasuaki Matsuda.
  • 韓国語: Hongju, 우현 조, Jong Heun Shin, 형섭 이, Kyunghee Ko, Youngjae Kim, siin lee, Jae Yong Kum, Hoyeon Han, Kevin Lee, SeungJin Jeong, Hong Kwon.
  • ラトビア語: Kaspars Bergs, Andris Vilde.
  • リトアニア語: Andrius Svylas, Augustas Grikšas, Tautvydas Derzinskas, Karolis Kundrotas, Martynas J..
  • ノルウェー語: Andreas Rødland, Cookius Monsterius, Dag H. Baardsen, Ole Kristian Losvik, Stephan Eriksen.
  • ポーランド語: Warchlak, Wojciech Maj, Marcin Weksznejder, Rafał Całka, Tomasz Świstak, Tomasz Wiśniewski, Marek Biedrzycki, Szymon Seliga, Michal Szulc, Jakub Żmidziński, Bartek PL, Igor 05, Rafał Wolak, Tomasz Chojnacki, Piotr Grędowski, Czech Kaczmarek, Artur Pelczar, Marcin Floryan, Paweł Modrzejewski, Jakub Jedryszek, ‎Michał Stojke, Artur Zdanowski.
  • ポルトガル語 (ブラジル): Alessandro Trovato, Thiago Dupin Ugeda, Weslei A. de T. Marinho, Rafael Lima Teixeira, Gerardo Magela Machado da Silva, Marcos Albuquerque, Loiane Groner, Alessandro Fragnani, Judson Santiago, Andrei Bosco, Fábio Corrêa, Roberto Fonseca, Fabio Lux, Emmanuel Gomes Brandão, Guilherme Pais, Rodrigo Vieira, André Gama.
  • ポルトガル語 (ポルトガル): Ana Rebelo, Nuno Carapito, Pedro Daniel, Pedro Teixeira, João Carvalho, Diogo Barros, José Rodrigues, Sandro Pereira, Vitor Barbosa, Tiago Antunes.
  • ルーマニア語: Mihai Marinescu, Stefan Gabos, Alexandru Staicu.
  • ロシア語: Andrey Veselov, Дмитрий Кирьянов, michael v, Иван Лещенко, nata kazakova, Анатолий Калужин, Валерий Батурин, Эдуард Тихонов.
  • セルビア語: Milos Zivkovic, Radovan Skendzic.
  • スペイン語: Andy Gonzalez, Alvaro Enrique Ruano, Engel Aguilar, Carlos Mendible, José María Aguilar, David Fernández Aldana, Ricardo Rubio, Thierry DEMAN, julian3xl, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta, Jorge Serrano Pérez, Ricardo Estrada Rdez.
  • スウェーデン語: Johan Spånberg, Notetur Nomen.
  • タミル語: Merbin J Anselm, Kondasamy Jayaraman, Mani M, Boopesh Kumar, Vignesh Rajendran, Jeyanthinath Muthuram, Jaganathan B, Nithun Harikrishnan, Purusothaman Ramanujam, Krishna Pravin, Jeffin R P, Karunakaran Samayan, Vetri ..
  • トルコ語: Meryem Aytek, BlueAngel-MG, Fıratcan Sucu, Ahmetcan Aksu, Ömer Sert, Mehmet Yönügül, Anıl MISIRLIOĞLU, Sinan Açar, Misir Jafarov, Umut Can Alparslan, Yakup Ad, Hüseyin Fahri Uzun, S. Ferit Arslan, Mesut Pişkin, Okan Çetin, Bruh Moment, Muhammed Emin TİFTİKÇİ, Burak Göksel.
  • ウクライナ語: Dmytro Kutianskyi, Arthur Murauskas, Sviatoslav Ivaskiv, Yaroslav Y, George Molchanyuk, Did Kokos, Alexander Varchenko, Вадим Шашков, Евгений Коростылёв.
  • ベトナム語: Khôi Phạm, Van-Tien Hoang, Belikhun, Việt Anh Nguyễn, Spepirus Shouru, Vuong Bui, Chủ Tất.