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

2020年3月 (バージョン 1.44)

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

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

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


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

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

Insiders: 新しい機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、最新のアップデートが利用可能になったらすぐに試すことができます。Visual Studio Codeの最新ニュース、アップデート、コンテンツについては、Twitter @codeをフォローしてください!

アクセシビリティ

このマイルストーンでは、コミュニティから多くのフィードバックをいただき、多くのアクセシビリティの問題を特定し、対処することができました。

  • Diffビューのアクセシビリティが向上しました。アクセシブルDiffビューで変更点を移動するにはF7および⇧F7 (Windows、LinuxではShift+F7)を使用し、現在の変更をステージ、アンステージ、または元に戻すには、選択範囲をステージ/アンステージ/元に戻すコマンドを使用します。
  • ウィジェット全体でより適切な役割が使用されるようになりました。SuggestウィジェットとQuick Pickにはlistboxロール、静的リストにはlist、WelcomeビューやMarkdownプレビューのような読み取り専用コンテンツにはdocumentが使用されます。
  • Quick Pickウィジェットの動作を調整しました。
  • 現在の行のCodeLensは、現在の行のCodeLensコマンドを表示コマンドでQuick Pickに表示できるようになりました。

タイムラインビュー

タイムラインビューはプレビュー版から正式版になり、デフォルトで有効になっています。これは、ファイルの時系列イベント (例: Gitコミット、ファイルの保存、テストの実行など) を視覚化するための統合ビューです。タイムラインビューは、デフォルトで現在アクティブなエディタのタイムラインを自動的に更新します。このデフォルトの動作は、ビューツールバーの目のアイコンを切り替えることで制御できます。また、他のビューと同様に、タイムラインビューは入力中に検索またはフィルタリングをサポートしています。

タイムラインビューは、デフォルトではファイルエクスプローラーの下部に折りたたまれています。タイムラインの境界線を選択すると、タイムラインビューが展開されます。

Collapsed Timeline view

このリリースでは、組み込みのGit拡張機能が、指定されたファイルのGitコミット履歴を提供するタイムラインソースを提供します。コミットを選択すると、そのコミットによって導入された変更のdiffビューが開きます。コンテキストメニューには、コミットIDをコピーコミットメッセージをコピーのコマンドが用意されています。また、ファイルエクスプローラーのコンテキストメニューには、選択したファイルのタイムラインを素早く表示するための新しいタイムラインを開くコマンドもあります。

タイムラインビューの動作はこちらです。

Timeline view

テーマ: Dark Amethyst

追加のタイムラインソースは拡張機能によって提供されることができ (ただし、APIはまだ提案段階です)、それらは統合されたタイムラインビューに表示されます。拡張機能は、タイムラインビューと個々のタイムライン項目にメニュー項目を提供することもできます。また、ビューに含めるソースを簡単に選択することもできます。

Workbench

クイックオープンの再構築

クイックオープン (⌘P (Windows、LinuxではCtrl+P)) コントロールは、以前のバージョンのツリーウィジェットを使用していたため、今回のイテレーションで、VS Code UIの他の部分で既に採用されている最新のリストコントロールを使用するように移行されました。機能的には、すべてのコマンドは以前と同じように動作するため、違いは感じられないはずです。

この機会に、いくつか便利な機能を追加しました。

Quick Open

ファイルからシンボルへナビゲート

ファイル結果のシンボルに移動するには、@と入力するだけで続けることができます。現在選択されているファイルに対して、すべてのシンボルが表示され、エディターがバックグラウンドで開き、アクティブなシンボルを表示します。以下のビデオでは、@の後に:を付けてシンボルをカテゴリ別にグループ化できることも示しています。

Quick Open navigate to symbols

複数のクエリをスペースで区切って結果をフィルタリング

ファイル検索で結果が多すぎる場合は、スペースを入力した後に追加の検索パターンを追加できます。たとえば、<ファイル名> <フォルダー名>のように続けて入力すると、フォルダーで結果を絞り込むことができます。

Quick Open filtering

注: これは、エディタ (⇧⌘O (Windows、LinuxではCtrl+Shift+O)) およびワークスペース (⌘T (Windows、LinuxではCtrl+T)) のシンボルピッカーでも機能します。スペース文字の後のテキストは、そのシンボルのコンテナでフィルタリングするために使用されます。

プロバイダー切り替え時に入力が保持される

Quick Openを表示したまま別のプロバイダー (例えば、ファイル検索からシンボル検索へ) に切り替えると、VS Codeは入力されたフィルターを適用し、新しいプロバイダーにもそれを使用します。これにより、以前ファイル検索で使用した入力内容をシンボル検索で素早く再利用できます。

エディター履歴を最近使用した順にソート

新しい設定"search.quickOpen.history.filterSortOrder": "recency"により、検索を開始した場合でも、エディター履歴を最近開いた項目順にソートできます。デフォルトでは、エディター履歴の結果は、使用されたフィルターパターンに基づいて関連性順にソートされます。

エディターを横に開く新しいコマンド

新しいコマンドworkbench.action.alternativeAcceptSelectedQuickOpenItemを使用すると、Quick Openからファイルやシンボルを横に開くための追加のキーボードショートカットを追加できます。デフォルトでは、Ctrl+Enter (macOS: Cmd+Enter) は、現在のエディターグループではなく、新しいエディターグループでファイルを横に開きます。

拡張機能パックの表示の改善

拡張機能ビューで拡張機能パックを識別するために、拡張機能パックに含まれる拡張機能の数を示す数値バッジが追加されました。

Extension Pack number of extensions badge

テーマ: GitHub Sharp (カスタマイズ付き)

拡張機能の詳細ページには、拡張機能パックにバンドルされているすべての拡張機能が表示されるようになりました。

Extension Pack details page showing bundled extensions

テーマ: GitHub Sharp (カスタマイズ付き)

エディタータブのスクロールバーの高さ調整

新しい設定workbench.editor.titleScrollbarSizingにより、エディタータブとブレッドクラムのスクロールバーのサイズを大きくできます。これにより、開いているエディターの長いリストをスクロールしやすくなります。

より大きなスクロールバーにするにはlargeに設定します。

Large scrollbar

ファイルエクスプローラーで隠しファイルを表示可能に

ファイルが隠しファイル (files.exclude設定経由) であっても、エディターで開かれて表示されている場合、そのファイルは親チェーンとともにファイルエクスプローラーに表示されます。これらのファイルとその親は、ファイルがエディター領域に表示されている間は、ファイルエクスプローラーで薄暗い色で表示されます。

ビュー: 再オープン

新しいビュー: 再オープンコマンドを使用すると、現在アクティブなファイルを別のカスタムエディターで再オープンできます。

Using the Reopen With command with the custom editor example extension

このコマンドを使用して、VS Codeの標準テキストエディターとカスタムエディターを切り替えたり、リソースの複数のカスタムエディターを切り替えたりできます。

workbench.editorAssociations 設定

カスタムエディターについても、新しいworkbench.editorAssociations設定により、特定のファイルに使用するエディターを設定できます。

以下の例では、.catScratchで終わるすべてのファイルを、拡張機能サンプルからカスタムテキストエディターの例を使用して開くように設定しています。

"workbench.editorAssociations": [
  {
    "viewType": "catCustoms.catScratch",
    "filenamePattern": "*.catScratch"
  }
]

ビューに進行状況が表示されるようになりました

カスタムビューの進行状況表示を変更し、ビューコンテナの最上部ではなく、各ビュー自体に表示されるようになりました。これにより、長時間実行される操作とその進行状況がより直接的に関連付けられます。拡張機能がビューにカスタム進行状況を表示するための新しいAPIオプションも追加されました。

GitLens拡張機能ビューの進行状況表示

View progress indication

新しいデフォルトの等幅フォント

VS Code UIで使用される等幅フォントを更新しました。

.mac { --monaco-monospace-font: "SF Mono", Monaco, Menlo, Courier, monospace; }
.windows { --monaco-monospace-font: Consolas, "Courier New", monospace; }
.linux { --monaco-monospace-font: "Ubuntu Mono", "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace; }

この変更は、エディターのフォント選択には影響しません。

Editor

ファイルを再開する際にUndoスタックを保持

VS Codeは、ファイルを閉じてもファイルの元に戻す/やり直すスタックを保持するようになりました。ファイルが再開されたとき、閉じられてから内容が変更されていなければ、元に戻す/やり直すスタックが復元されます。

これは、workbench.editor.limit.value設定で開いているエディターの数を制限している場合や、作業中のファイルを誤って閉じてしまった場合に非常に便利です。

保存時のコードアクションの明示的な順序付け

editor.codeActionsOnSaveに、実行するコードアクションの配列を順序どおりに設定できるようになりました。これにより、特定のコードアクションが、それに競合する可能性のある別のコードアクションの前に、または後に、常に実行されることを保証できます。

以下のeditor.codeActionsOnSaveは、常にインポートの整理を実行し、その後にインポートの整理が完了したらすべて修正を実行します。

"editor.codeActionsOnSave": [
    "source.organizeImports",
    "source.fixAll"
]

次の検索一致に editor.wordSeparators を使用

次の検索一致に選択範囲を追加 (⌘D (Windows、LinuxではCtrl+D)) コマンドが、editor.wordSeparators設定を尊重するようになりました。以前は、このコマンドは現在のファイルの言語で定義された単語の定義を使用していました。

デバッグ

呼び出しスタックビューの改善

CALL STACKビューは、異なる種類のオブジェクト (セッション、プロセス、スレッド、スタックフレーム、区切り要素) を表示し、異なる種類に対して異なるアクションを提供する複雑なビューです。オブジェクトの種類を区別しやすく、サポートされている相互作用を理解しやすくするために、いくつかの視覚的な改善を開始しました。

  • デバッグセッションにはアイコンが装飾されるようになりました。
  • クリック可能な要素はリンクの色を使用します。
  • 区切り要素と表示要素が小さくなりました。

Call Stack

新しいデバッグコンソールアイコン

デバッグコンソールに新しいアイコンを導入し、パネルからデバッグコンソールビューが移動された場合はアクティビティバーでも使用するようにしました。

Debug Console icon

デバッグ拡張機能の進行状況フィードバックUI

VS Codeは、前回のマイルストーンでDebug Adapter Protocol (DAP) に提案された「進行状況イベント」をサポートするようになりました。進行状況イベントにより、デバッグ拡張機能は長時間実行される操作についてユーザーにフィードバックを提供できます。

VS CodeデバッグUIは、進行状況フィードバックを2か所で表示します。

  • デバッグビューの上部にプログレスバーとして表示されます。
  • 「サイレント通知」として表示されます。これは、ステータスバーに進行状況が「サイレント」に表示され (ユーザーを中断することなく)、クリックすることで通知として開くことができることを意味します。通知にはより詳細な情報が表示され、基になる長時間実行中の操作のキャンセル (操作がキャンセルをサポートしている場合) を許可します。

短い操作でのちらつきを避けるため、進行状況UIは0.5秒の遅延後にのみ開始されます。

以下のビデオは、Mock Debug (現時点で唯一サポートされているデバッグ拡張機能) における (シミュレートされた) 長時間実行操作の新しい進行状況UIを示しています。他のデバッグ拡張機能もすぐに進行状況サポートを採用すると予想されます。

Debug progress UI

デバッグコンソールのコード補完選択

前回のマイルストーンで、Debug Adapter Protocolの「補完」リクエストに選択コントロールを追加しました。このリリースでは、VS Codeはプロトコル追加を完全にサポートし、補完項目が挿入された後にデバッグ拡張機能が選択 (または挿入点) を調整できるようになりました。

統合ターミナル

メニューバーのニーモニックがターミナルをスキップできるようにする

新しい設定terminal.integrated.allowMenubarMnemonicsが有効になっている場合、Altを使用したすべてのキーストロークはターミナルをスキップし、VS Codeのキーバインディングマネージャーによって処理されるため、ターミナル内のAltホットキーを犠牲にして、すべてのメニューニーモニックが機能します。この設定はデフォルトで無効になっています。

言語

JavaScriptの自動インポートスタイル

新しいjavascript.preferences.importModuleSpecifierEnding設定により、VS Codeの自動インポートが使用するインポートのスタイルを制御できます。これは、ネイティブES6モジュールをサポートするブラウザのようなプラットフォーム向けにコードを記述する場合に役立ちます。

可能な値は次のとおりです。

  • auto - デフォルト。プロジェクトのjsconfigを使用して、使用するインポートスタイルを決定します。
  • minimal - Node.jsスタイルのインポートを使用します。これにより、src/component/index.jsのインポートがsrc/componentに短縮されます。
  • index - パスのindex部分も含まれます。これにより、src/component/index.jssrc/component/indexに短縮されます。
  • js - ファイル拡張子 (.js) を含むフルパスを使用します。

タスク

タスククイックピックの高速化

以前は、タスククイックピックは、タスクリストを表示する前に、すべてのタスク提供拡張機能からすべてのタスクを取得していました。現在、VS Codeはクイックピックドロップダウンを表示する前に、追加の拡張機能タスクを取得しないため、はるかに高速になりました。拡張機能によって提供されるタスクも、要求されたときにのみ取得されるため、拡張機能ホストの負担が軽減されます。

以下に、TypeScriptが提供するtscタスクが、ユーザーがtypescript拡張機能を選択した後にのみ取得される様子を示します。

Task Quick Pick

テーマ: One Dark Pro

プレビュー機能

プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。

設定の同期

この数ヶ月間、VS Codeの設定、拡張機能、キーボードショートカットをマシン間で同期するサポートに取り組んできました。この機能は、Insidersリリースでプレビューとして利用可能です。

このマイルストーンでは、ユーザーコードスニペットとその他のUI状態の同期を追加しました。

Settings Sync configuration

テーマ: GitHub Sharp (カスタマイズ付き)

現在、以下のUI状態が同期されます。

  • 表示言語
  • アクティビティバーのエントリ
  • パネルのエントリ
  • ビューのレイアウトと表示
  • 最近使用したコマンド
  • 「次回から表示しない」通知

注: 現在、ユーザー言語スニペットのみが同期されます。グローバルスニペットのサポートは次のマイルストーンで追加されます。

また、データ復元とトラブルシューティングに役立つリモートおよびローカルの同期バックアップビューも追加しました。これらのビューには、設定同期: リモートバックアップを表示および設定同期: ローカルバックアップを表示コマンドを使用してアクセスできます。

Settings Sync backups view

テーマ: GitHub Sharp (カスタマイズ付き)

詳細については、設定同期のドキュメントを参照してください。

アカウント管理

認証プロバイダーを提供する拡張機能は、設定ギアの上にある新しいアカウントコンテキストメニューにアカウントが表示されるようになりました。現在サインインしているすべてのアカウントを表示し、それらからサインアウトし、信頼できる拡張機能を管理できます。ここからMicrosoftアカウントにサインインすることも、設定同期を開始する別の方法です。

Accounts context menu

テーマ: カスタマイズされたPop Light

新しいJavaScriptデバッガー

今月も新しいJavaScriptデバッガの開発を進めました。これはInsidersではデフォルトでインストールされており、VS Code Stableではマーケットプレイスからインストールできます。debug.javascript.usePreview設定を有効にすることで、既存の起動構成で使い始めることができます。今月追加された新機能の一部を以下に示します。

デバッグターミナルでのリンク処理

デバッグターミナル (デバッグ: JavaScriptデバッグターミナルを作成) を使用して、任意のNode.jsプロセスを自動的にデバッグできます。現在、デバッガーは、リンクをCmd/Ctrl+クリックするだけでブラウザのデバッグを開始するリンクも処理します。設定は不要です。

Animation showing clicking on a link in the debug terminal, Chrome opening, and hitting a breakpoint

テーマ: Earthsong、フォント: Fira Code

ウォッチとデバッグコンソールで $returnValue を参照

コールスタックで利用可能な場合、デバッグコンソールとウォッチ式で関数の$returnValueを参照できるようになりました。

Screenshot showing $returnValue being referenced in the Debug Console and Watch expression

TypeScript 3.9 Betaのサポート

このイテレーションでは、新しいTypeScript 3.9 Beta機能のサポートを追加しました。TypeScript 3.9の主なハイライトは次のとおりです。

  • // @ts-expect-errorディレクティブの提案。
  • 改行と書式設定をより適切に維持するリファクタリング。
  • JavaScriptの自動インポートで、一般的なJSスタイルのインポート (require(...)) を追加できるようになりました。

TypeScript Nightly拡張機能をインストールすることで、今日の新しいTypeScript 3.9機能を試すことができます。フィードバックを共有し、TypeScript 3.9ベータ版でバグが発生した場合はお知らせください!

ビュー配置の柔軟性の向上

いくつかのイテレーションにわたり、個々のビューを移動できるようにすることで、レイアウトの柔軟性を向上させることに取り組んできました。このイテレーションでは、機能を追加しただけでなく、エクスペリエンスも磨き上げました。

新しいドラッグアンドドロップエクスペリエンス

アクティビティバーのアイコン、パネル、サイドバー内のビューのドラッグアンドドロップはシンプルでしたが、あいまいでした。それらのアイテムを実際にドロップしたときに何が起こるかを正確に知ることは困難でした。新しいエクスペリエンスは、明確さを向上させ、私たちが道中で有効にする新機能を強調することを目的としています。

以下に、ユーザーが最初にサイドバー内でビューの順序を変更し、次にパネル内でタブの順序を変更し、アクティビティバー内でアイコンの順序を変更する様子を示します。

New Drag and Drop experience

単一のパネルに複数のビュー

水平方向のスペースをより有効に活用するために、1つのパネル内に複数のビューを表示できるようになりました。よくあるリクエストの1つは、ターミナルと問題ビューを同時に見ることです。これは、以下に示すようにターミナルを問題ビューにドラッグすることで実現できます。

Terminal and Problems view side by side

新しいサイドバーグループの作成とパネルの移動

ビューを新しいサイドバーグループに移動し、アクティビティバーに新しいアイコンエントリを作成できるようになりました。組み込みのパネルも例外ではなく、既存のサイドバーエントリまたは独自の新しいエントリに移動できます。

次のビデオでは、ユーザーがターミナルをアクティビティバーにドラッグし、ターミナルアイコンとサイドバーのターミナル用のスペースを作成する様子を示しています。次に、ユーザーはターミナルサイドバー内にアウトプットをドロップします。最後に、アウトラインがエクスプローラーからアクティビティバーに移動され、独自のサイドバー領域が作成されます。

Dragging views into the Activity Bar

パネルへのビューコンテナの提供

拡張機能がビューをパネルに直接提供するために必要なすべてが揃いました。これは、現在アクティビティバーで行われているのと同様で、ツリービューAPIガイドに記載されています。この機能はまだプレビュー段階であり、安定版とみなされるまではツリービューのドキュメントにはこれらの変更が反映されないことに注意してください。ただし、試すには、ドキュメントのスニペットを以下のように更新してください。

"contributes": {
  "viewsContainers": {
    "panel": [
      {
        "id": "package-explorer",
        "title": "Package Explorer",
        "icon": "media/dep.svg"
      }
    ]
  }
}

ビュー移動コマンド

最後に、キーボードでビューを移動したり、レイアウトをリセットしたりするための新しいコマンドが追加されました。コマンドビュー: フォーカスされているビューを移動 (workbench.action.moveFocusedView) は、今回のイテレーションの新しい機能をサポートするように更新されました。コマンドビュー: フォーカスされているビューの位置をリセット (workbench.action.resetFocusedViewLocation) は、個々のビューをデフォルトの位置に戻すために追加されました。

パネルおよびカスタムビュー用のアクティビティバーアイコン

フレキシブルレイアウトの導入により、デフォルトのパネルビューがアクティビティバーに移動した際に専用のアイコンが用意されました。複数のビューを組み合わせる場合にも、カスタムビュー用の(デフォルトの)アイコンが用意されています。

Panel view icons

同期された領域

昨年11月に導入されたミラーカーソル機能が、同期された領域と呼ばれる新しい実装で改善されました。現在この機能はHTMLで利用可能で、以下のいずれかの方法で試すことができます。

  • HTMLタグ上でオンタイプ名前変更シンボルコマンドを実行する (デフォルトではにバインドされています)。
  • editor.renameOnType設定をオンにして、カーソルをHTMLタグに移動する。

HTML rename on type

赤い領域は同期された領域です。名前が示すように、ある領域での変更は他の領域にも同期されます。このモードを終了するには、カーソルを領域外に移動するか、ESCを押します。さらに、任意の領域で空白文字で始まるコンテンツを入力または貼り付けると、このモードは終了します。

このタイプオンリネームエクスペリエンスをJSX、XML、あるいはTypeScriptのローカル変数などの他の言語で利用できるようにするAPIの提供を楽しみにしています。

拡張機能への貢献

リモート開発

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

1.44の機能ハイライトは以下の通りです。

  • 開発コンテナ: PRを直接コンテナにチェックアウト。
  • 開発コンテナ: Kubernetesコンテナアタッチサポート。
  • 開発コンテナ: 実験的なWSL 2 Dockerエンジンサポート。

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

拡張機能作成

ウェルカムビューコンテンツAPI

一部のビューが、拡張機能から提供されるWelcomeコンテンツをサポートするようになりました。詳細については、元のIssueを参照してください。拡張機能が提供するビューでこのAPIを使用する方法の詳細については、ツリービューのドキュメントを読むことができます。

このAPIは前回のマイルストーンで提案として追加され、今回最終決定されました。

セマンティックトークンプロバイダーAPI

セマンティックトークンプロバイダーAPIが最終決定されました。

セマンティックトークンのテーマサポート

カラーテーマは、TypeScriptのような言語拡張機能が報告するセマンティックトークンを色付けするためのルールを記述できるようになりました。

"semanticHighlighting": true,
"semanticTokenColors": {
    "variable.declaration.readonly:java": { "foreground": "#00ff00" "fontStyle": "bold" }
}

上記のルールは、Javaにおける読み取り専用変数のすべての宣言を緑色で太字にするように定義しています。

詳細については、セマンティックハイライトのWikiページを参照してください。

TypeScriptセマンティックトークンの改善

Typescript Language Serverからより多くのセマンティックトークンタイプが返されるようになりました。カラーテーマは、これらの新しいトークンタイプをスタイリングに利用できます。

  • JavaScriptのデフォルトライブラリのすべてのシンボルには、defaultLibrary修飾子が付きます。
  • コールバックである関数パラメーターはfunctionに分類されます。

TypeScript言語サーバーから返されるすべてのセマンティックトークンタイプと修飾子の概要については、TypeScript Semantic Highlighting plugin READMEを参照してください。

ファイルシステムエラーコード

エラーを識別する文字列であるFileSystemError#codeを追加しました。ファイルシステムエラーがファクトリ関数のいずれかを介して作成されると、codeはその関数の名前になります。たとえば、FileSystemError.FileNotFound(msg).code === 'FileNotFound'のようになります。

StatusBarItem.commandの引数

StatusBarItem.commandは、コマンドIDだけでなく、完全なCommandオブジェクトを受け入れるようになりました。これにより、ステータスバーアイテムがアクティブ化されたときに、拡張機能がコマンドに引数を渡すことができます。

カスタムテキストエディタ

カスタムテキストエディターを使用すると、拡張機能はVS Codeの標準エディターを、特定のテキストベースのリソース用のカスタムwebviewベースのビューに置き換えることができます。潜在的なユースケースには、以下が含まれます。

  • シェーダーや.objファイルなどのアセットのプレビュー。
  • XAMLなどのマークアップ言語用のWYSIWYGエディターの作成。
  • JSONやCSVなどのデータファイルの代替のインタラクティブなビューの提供。

カスタムエディターのドキュメントでは、新しいカスタムテキストエディターAPIの使用方法と、新しいエディターがVS Codeでうまく機能することを確認する方法について説明しています。また、カスタムエディター拡張機能のサンプルも必ず確認してください。

The custom editor example extension

次のイテレーションでは、カスタムエディターをバイナリファイルもサポートするように拡張する、完全なカスタムエディター提案を最終決定したいと考えています。

ビューレベルの進行状況表示

window.withProgress APIのProgressOptions.location新しいオプションを追加し、特定のビューに進行状況を表示できるようになりました。使用するには、ProgressOptions.location = { viewId: <ビューID> };を設定します。ここで、<ビューID>は進行状況を表示したいビューのIDを指定します。これの動作を示す短いビデオは、上記のビュー進行状況セクションにあります。

拡張機能ビューコンテキストメニューのwhen句コンテキスト

拡張機能ビューのコンテキストメニューに、拡張機能の識別子を含む新しいextensionwhen句コンテキストを追加しました。

  "extension/context": [
      {
          "command": "gitlens.showSettingsPage",
          "group": "2_configure",
          "when": "extension == eamodio.gitlens && extensionStatus == installed",
      }
  ]

新しいCodicons

Codiconライブラリに以下のアイコンを追加しました。

  • アカウント
  • ベル・ドット
  • デバッグコンソール
  • ライブラリ
  • アウトプット
  • run-all
  • 同期無視

New codicons

組み込み言語サーバーの記述に関するドキュメント

組み込みプログラミング言語用の言語サーバーの記述は、プレーンな言語サーバーの記述よりも複雑です。今日の組み込み言語の人気を考えると、言語拡張機能セクションに組み込み言語トピックを追加しました。このドキュメントには、組み込み言語サーバーを構築するための2つのアプローチ、すなわち言語サービスとリクエスト転送を説明する2つのサンプルが含まれています。組み込み言語のドキュメントを確認するか、2つのサンプルに直接アクセスしてください。

Debug Adapter Protocol

新しい進捗イベント

Debug Adapter Protocolにおける進捗レポートのサポートを最終決定しました。デバッグアダプターは、長時間実行されるデバッグアダプター操作の進捗を表示するために、進捗イベント (progressStartprogressUpdate、およびprogressEnd) をフロントエンドクライアントに送信できるようになりました。progressStartイベントは、クライアントがキャンセルUIを表示し、cancelリクエストを送信するように、キャンセル可能としてマークできます。サポートするデバッグアダプターで進捗イベントを有効にするには、フロントエンドクライアントはinitializeリクエストに新しいクライアント機能supportsProgressReportingを含める必要があります。

詳細については、対応するDAP機能リクエストを参照してください。VS Codeは、このマイルストーンから進捗イベントをサポートしています。

「評価」リクエストのクリップボードコンテキスト値

DAPクライアント (フロントエンド) は、変数や式の値をクリップボードにコピーするときにevaluateリクエストを使用します。このシナリオをデバッグアダプターが検出できるように、evaluateリクエストに渡されるcontext引数の値セットに新しい値clipboardが追加されました。後方互換性を確保するため、クライアントは、デバッグアダプターがsupportsClipboardContext機能を返す場合にのみ、新しい値を渡すことができます。

Language Server Protocol

Language Server Index Format 仕様の新しいバージョン (0.5.0) が公開されました。このバージョンは、モノカーを使用してプロジェクトダンプ間の参照結果のリンクをサポートしています。さらに、LSPクライアント (6.2.0-next.2) およびサーバー (6.2.0-next.2) ライブラリの新しいバージョンが公開されています。

提案された拡張API

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

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

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

この新しいAPIにより、拡張機能はターミナルでクリックされたリンクを傍受して処理できます。

window.registerTerminalLinkHandler({
  handleLink((terminal, link) => {
    if (link === 'https://vscode.dokyumento.jp') {
      window.showInformationMessage('Handled');
      return true;
    }
    return false;
  });
});

ターミナル環境に貢献

この新しいAPIにより、拡張機能はターミナル起動時に環境変数を変更できるようになります。

const collection = window.getEnvironmentVariableCollection(true);
const separator = process.platform === 'win32' ? ';' : ':';
collection.prepend('PATH', `/foo${separator}`);
collection.replace('JAVA_HOME', '/bar');

これらのコレクションは拡張機能とワークスペース固有のものであり、VS Codeは複数の拡張機能間の競合の対処方法を処理します。これらはオプションでウィンドウの再読み込み間で保持でき、ウィンドウの読み込み直後に作成されたターミナルが拡張機能ホストの起動をブロックせず、代わりに最後に認識されたバージョンを使用するように配慮されています。これらの永続化されたコレクションは、コレクションを破棄するか、新しい非永続化コレクションを作成するか、または拡張機能がアンインストールされたときに削除できます。

これらの環境変更を「古い」ターミナル環境を更新できるインジケーターを介してユーザーに表示する計画ですが、これはまだ進行中です。Issue #46696で議論を追跡できます。

ブラウザーのサポート

リモートインジケーター

ブラウザでVS Codeを使用している場合、リモートインジケーターが表示されるようになりました。これにより、接続しているリモート環境がわかり、拡張機能がリモートに関連付けられた追加コマンドを追加できるようになります。この変更により、デスクトップで開くリンクはステータスバーから削除され、リモートピッカーに移動します。

注: 現在、VS CodeはブラウザからSSH、コンテナ、WSLなどの別のリモートへの接続をサポートしていません。

Web remote indicator

新しいメニューの場所により、ブラウザで実行されている拡張機能が左上のハンバーガーメニューにリンクを提供できるようになりました。

Web navigational links

エンジニアリング

VS CodeはES6にコンパイル

VS CodeはES6を完全に採用しました。TypeScriptのおかげで、ES6構文は長い間使用していましたが、ターゲットランタイムもES6をサポートしていると仮定するようになりました。これにより、Strings#endsWithのようなES6の「グローバル」を使用したり、ジェネレーター関数やシンボルなどの新しい言語機能を使用したりできます。

GitHub Actionsによる課題トリアージの自動化

今回のイテレーションでは、既存のトリアージ自動化をGitHub AppsからGitHub Actionsに移行しました。これにより、vscodeリポジトリでログを取得できるなど、いくつかのメリットがあり、開発速度も向上しました。さらに、いくつかの新しい自動化を追加しました。例えば、修正がVS Code Insidersにプルされたときに課題の作成者に通知するアクションにより、作成者が修正が効果的であるかどうかを迅速に確認できるようになりました。

私たちが使用しているActionsの全セットは、MITライセンスの下でGitHubで公開されています。

ドキュメントと拡張機能

Python

Pythonチュートリアルが2つ追加されました。

C++

C++拡張機能チュートリアルが書き直され、LinuxでのC++の使用に特化した新しいチュートリアルが追加されました。

Docker拡張機能

Microsoft Docker拡張機能のバージョン1.0が利用可能になりました。この拡張機能は、Dockerファイルをプロジェクトに追加したり、Dockerイメージをビルドおよびデバッグしたりでき、コンテナやイメージを簡単に開始、停止、検査、削除するためのエクスプローラーも含まれています。

Docker extension

Azure拡張機能

VS Code内からAzureアセットを直接操作するための2つの新しい拡張機能が追加されました。

  • Azure仮想マシン - 構成済みのSSHアクセスを持つUbuntu仮想マシンを作成し、Remote-SSH拡張機能を使用して接続できます。

  • Azureリソースグループ - すべてのAzureリソースを表示し、Azureビューでそれらにすばやく移動できます。

Azure Virtual Machines extension

注目すべき修正点

  • 75932: デバッグの読み込みに失敗しました: プロセス選択に失敗しました (画面サイズ131072x1が偽です。問題が発生する可能性があります)
  • 84271: 最近開いたファイルからファイルを削除する「x」を追加 (クイックピック)
  • 89658: デバッグアダプターが見つかりません
  • 92381: ワークスペースにフォルダを追加して繰り返し削除すると、「ワークスペースにフォルダを追加」プロンプトが重複する
  • 93344: ウェルカムビューはスクロールすべき
  • 93634: 進捗: ウィンドウの進捗をサイレント通知の進捗にする

ありがとうございます

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

問題追跡への貢献者

vscodeへの貢献者

常にフィードバックを提供してくださるアクセシビリティコミュニティに感謝します!一部の名前を挙げます。

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

language-server-protocolへの貢献者

vscode-languageserver-nodeへの貢献者

vscode-generator-codeへの貢献者

vscode-loaderへの貢献

localizationへの貢献

Microsoft Localization Community Platform (MLCP) を利用する Cloud + AI Localization コミュニティメンバーは 800 人を超え、Visual Studio Code には約 170 人のアクティブなコントリビューターがいます。新しい翻訳の提供、翻訳への投票、プロセス改善の提案など、皆様のご貢献に感謝いたします。

貢献者の概要はこちらです。貢献者名リストを含むプロジェクトの詳細については、https://aka.ms/vscodeloc のプロジェクトサイトをご覧ください。

  • 中国語 (簡体字、中国) Tingting Yi, Yizhi Gu, Charles Dong, Justin Liu, Joel Yang, Tony Xia, 朱知阳, meng shao, 普鲁文, paul cheung, 张锐, Yiting Zhu, Nong Zhichao, Liam Kennedy, 武 健, Zhao Liguo, 宁 倬, Bochen Wang, 一斤瓜子, 顺 谭, 云 何, Yun Liu, yungkei fan。
  • 中国語 (繁体字、台湾) 船長, Winnie Lin, 予 恆。
  • チェコ語 David Knieradl。
  • デンマーク語 (デンマーク) Javad Shafique, Lasse Stilvang。
  • 英語 (イギリス) Martin Littlecott, Oren Recht, Faris Ansari。
  • フィンランド語 (フィンランド) Teemu Sirkiä。
  • フランス語 (フランス) Antoine Griffard, Thierry DEMAN-BARCELÒ, Rodolphe NOEL, Nathan Bonnemains。
  • ヘブライ語 (イスラエル) Chayim Refael Friedman, Asaf Amitai。
  • インドネシア語 (インドネシア) Gerry Surya, Laurensius Dede Suhardiman。
  • イタリア語 (イタリア) Alessandro Alpi, Riccardo Cappello。
  • 日本語 (日本) 芦嶺 一行, 戸倉 絢, 不破 孝之, ちゃん きさらぎ, 住吉 貴志, 牧野 浩一, 尾崎 義久, 天明 正和。
  • 韓国語 (韓国) Kyunghee Ko, June Heo。
  • ノルウェー語 (ノルウェー) Torbjørn Viem Ness。
  • ポーランド語 (ポーランド) Makabeus Orban, Kacper Łakomski。
  • ポルトガル語 (ブラジル) Alessandro Trovato, Marcelo Fernandes, Arthur Lima, Luciana de Melo, Luiz Gustavo Nunes。
  • ポルトガル語 (ポルトガル) Pedro Filipe。
  • ロシア語 (ロシア) Andrey Veselov, Vadim Svitkin, Минаков Антон。
  • スペイン語 (スペイン、国際ソート) Sifredo Da Silva, Ariel Costas Guerrero, David Roa, Abdón Rodríguez P., Luis Manuel, Carlos A. Echeverri V。
  • スウェーデン語 (スウェーデン) Per Ragnar Edin。
  • タミル語 (インド) krishnakoumar c。
  • トルコ語 (トルコ) Umut Can Alparslan, Mehmet Yönügül。
  • ウクライナ語 (ウクライナ) Nikita Potapenko。
  • ベトナム語 (ベトナム) Hieu Nguyen Trung。

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