2020年3月 (バージョン 1.44)
Update 1.44.1: このアップデートは、セキュリティ上の問題に対応しています。
Update 1.44.2: このアップデートは、これらの問題に対応しています。
ダウンロード: Windows: x64 | Mac: Intel | Linux: deb rpm tarball snap
Visual Studio Code 2020年3月版へようこそ。このバージョンには、皆さんに気に入っていただけるような多数のアップデートが含まれており、主なハイライトは次のとおりです。
- アクセシビリティの向上 - 差分ビューのナビゲーションがより容易になり、UIコントロールの役割指定がより明確になりました。
- タイムラインビュー - Gitコミット履歴などの時系列イベントをVS Code内から確認できます。
- ファイルのクイックオープンを改善 - ファイルからシンボルへのスムーズな移動、フォルダー名によるファイルのフィルター機能。
- 拡張機能パックの表示 - 拡張機能パックに何がバンドルされているかを素早く確認できます。
- 元に戻す/やり直しスタックの保持 - 再度開かれたファイルでも元に戻す/やり直しスタックが保持されます。
- リモート開発 - Pull Requestをコンテナーに直接チェックアウト、Kubernetesのサポート。
- 設定の同期プレビュー - 設定の同期により、スニペットとUI状態を複数のマシン間で共有できるようになりました。
- 新しいPythonチュートリアル - Pythonコンテナーの作成とデータサイエンスモデルの構築に関するチュートリアル。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
Insiders: 新しい機能をできるだけ早く試したいですか?夜間ビルドのInsidersビルドをダウンロードして、利用可能になり次第最新のアップデートを試すことができます。Visual Studio Codeの最新ニュース、アップデート、コンテンツについては、Twitterの@codeをフォローしてください!
アクセシビリティ
今回のマイルストーンでは、コミュニティから多くの素晴らしいフィードバックをいただきました。これにより、多くのアクセシビリティ問題を特定し、対処することができました。
- 差分ビューのアクセシビリティが向上しました。F7と⇧F7 (Windows, Linux Shift+F7)を使用してAccessible Diff Viewerの変更をナビゲートし、Stage / Unstage / Revert Selected Rangesコマンドを使用して現在の変更をステージング、アンステージング、または元に戻すことができます。
- ウィジェット全体でより適切なロールが使用されるようになりました。SuggestウィジェットとQuick Pickには
listbox
ロールが、静的リストにはlist
が、WelcomeビューやMarkdownプレビューなどの読み取り専用コンテンツにはdocument
が使用されます。 - Quick Pickウィジェットの動作を調整しました。
- 現在の行のCodeLensは、Show CodeLens Commands For Current LineコマンドでQuick Pickに表示できるようになりました。
タイムラインビュー
タイムラインビューはプレビュー版から正式リリースされ、デフォルトで有効になりました。これは、ファイルの時系列イベント (例: Gitコミット、ファイルの保存、テスト実行など) を視覚化するための統合ビューです。タイムラインビューは、デフォルトで現在アクティブなエディターのタイムラインを表示するように自動的に更新されます。ビューツールバーの目のアイコンを切り替えることで、このデフォルトの動作を制御できます。また、他のビューと同様に、タイムラインビューは入力しながら検索またはフィルターする機能をサポートしています。
タイムラインビューは、デフォルトでファイルエクスプローラーの下部に折りたたまれています。Timelineのサッシュを選択すると、タイムラインビューが展開されます。
今回のリリースでは、組み込みのGit拡張機能が、指定されたファイルのGitコミット履歴を提供するタイムラインソースを提供します。コミットを選択すると、そのコミットによって導入された変更の差分ビューが開きます。コンテキストメニューには、Copy Commit ID (コミットIDをコピー) およびCopy Commit Message (コミットメッセージをコピー) のコマンドがあります。また、ファイルエクスプローラーのコンテキストメニューには新しいOpen Timelineコマンドがあり、選択したファイルのタイムラインを素早く表示できます。
タイムラインビューの動作はこちらです
テーマ: Dark Amethyst
追加のタイムラインソースは、拡張機能によって提供される可能性があります(ただし、APIはまだ提案段階です)。これらは統合されたタイムラインビューに表示されます。拡張機能は、タイムラインビューおよび個々のタイムラインアイテムにメニュー項目を提供することもできます。ビューに含めるソースを簡単に選択することもできます。
Workbench
クイックオープンの書き換え
Quick Open (⌘P (Windows, Linux Ctrl+P)) コントロールは、以前のツリーウィジェットバージョンを使用していましたが、今回のイテレーションで、VS Code UIの他の部分で既に採用されている最新のリストコントロールを使用するように移行されました。機能的には、すべてのコマンドは以前と同様に動作するため、違いはわからないはずです。
この機会に、皆さんが役立つと思われるいくつかの機能を追加しました。
ファイルからシンボルへの移動
ファイル検索結果のシンボルへは、@
を入力するだけで続けて移動できるようになりました。現在選択されているファイルについて、すべてのシンボルが表示され、エディターがバックグラウンドで開き、アクティブなシンボルを表示します。以下のビデオでは、@
の後に:
を続けることで、シンボルをカテゴリ別にグループ化できることも示されています。
複数のクエリをスペースで区切って結果をフィルターする
ファイル検索の結果が多すぎる場合、スペースを入力した後にさらに検索パターンを追加できます。例えば、<ファイル名> <フォルダー名>
のように続けて入力することで、フォルダーによる結果の絞り込みが可能です。
注: これはエディター (⇧⌘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
) を使用すると、現在のエディターグループではなく、新しいエディターグループのサイドでファイルが開きます。
拡張機能パックの表示改善
拡張機能ビューで拡張機能パックを識別するために、拡張機能パックに含まれる拡張機能の数を示す数字バッジが表示されるようになりました。
テーマ: GitHub Sharp (カスタマイズ付き)
拡張機能の詳細ページに、拡張機能パックにバンドルされているすべての拡張機能が表示されるようになりました。
テーマ: GitHub Sharp (カスタマイズ付き)
エディタータブのスクロールバーの高さ調整
新しい設定workbench.editor.titleScrollbarSizing
により、エディタータブとブレッドクラムのスクロールバーのサイズを大きくできます。これにより、開いているエディターの長いリストをスクロールしやすくなります。
より大きなスクロールバーにするにはlarge
に設定します
ファイルエクスプローラーで隠しファイルを表示可能
ファイルが非表示 (設定files.exclude
による) であっても、エディターで開いて表示されている場合、そのファイルは親チェーンとともにファイルエクスプローラーに表示されます。これらのファイルとその親は、エディター領域で表示されている限り、薄暗い色でファイルエクスプローラーに表示されます。
ビュー: 別のもので再度開く
新しいView: Reopen withコマンドを使用すると、現在アクティブなファイルを別のカスタムエディターで再度開くことができます。
このコマンドを使用すると、VS Codeの標準テキストエディターとカスタムエディターを切り替えたり、リソースに対して複数のカスタムエディターを切り替えたりすることができます。
workbench.editorAssociations 設定
カスタムエディターについても、新しいworkbench.editorAssociations
設定を使用すると、特定のファイルにどのエディターを使用するかを設定できます。
以下の例では、.catScratch
で終わるすべてのファイルを、拡張機能サンプルにある例のカスタムテキストエディターを使用して開くように設定しています。
"workbench.editorAssociations": [
{
"viewType": "catCustoms.catScratch",
"filenamePattern": "*.catScratch"
}
]
ビューに進行状況が表示されるようになりました
カスタムビューの進行状況表示を変更し、ビューコンテナーの上部ではなく、各ビュー自体に表示されるようになりました。これにより、長時間実行される操作とその進行状況との間に、より直接的な関連付けが可能になります。また、拡張機能がビューにカスタム進行状況を表示するための新しいAPIオプションも追加されました。
GitLens拡張機能ビューでの進行状況表示はこちらで確認できます
新しいデフォルトの等幅フォント
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
ファイルを再度開いたときに元に戻すスタックを保持
ファイルが閉じられたときに、VS Codeはファイルの元に戻す/やり直しスタックを保持するようになりました。ファイルが再度開かれた際に、閉じられた後で内容が変更されていなければ、元に戻す/やり直しスタックが復元されます。
これは、workbench.editor.limit.value
設定で開くエディターの数を制限している場合や、作業中のファイルを誤って閉じてしまった場合に非常に便利です。
保存時のコードアクションの明確な順序付け
editor.codeActionsOnSave
を、順序通りに実行するコードアクションの配列に設定できるようになりました。これにより、特定のコードアクションが、競合する可能性のある別のコードアクションの前または後に常に実行されることを保証できます。
以下のeditor.codeActionsOnSave
は、インポートの整理が完了したら、常にインポートの整理の後にすべて修正を実行します。
"editor.codeActionsOnSave": [
"source.organizeImports",
"source.fixAll"
]
Next Find Matchにeditor.wordSeparatorsを使用
コマンド選択範囲を次の検索一致に追加 (⌘D (Windows, Linux Ctrl+D)) が、設定editor.wordSeparators
を尊重するようになりました。以前は、このコマンドは現在のファイルの言語で定義された単語の定義を使用していました。
デバッグ
呼び出しスタックビューの改善
CALL STACKビューは、異なる種類のオブジェクト (セッション、プロセス、スレッド、スタックフレーム、区切り要素) を表示し、異なる種類に対して異なるアクションを提供するため、複雑なビューです。オブジェクトの種類を区別し、サポートされるインタラクションを理解しやすくするために、いくつかの視覚的な改善を開始しました。
- デバッグセッションにアイコンが追加されました。
- クリック可能な要素にはリンクの色が使用されます。
- 区切り要素と表示要素が小さくなりました。
新しいデバッグコンソールアイコン
デバッグコンソールに新しいアイコンを導入し、デバッグコンソールビューがパネルから移動された場合にもアクティビティバーで使用されるようになりました。
デバッグ拡張機能の進行状況フィードバックUI
VS Codeは、前回のマイルストーンでDebug Adapter Protocol (DAP) に提案された「進行状況イベント」をサポートするようになりました。進行状況イベントにより、デバッグ拡張機能は長時間実行される操作についてユーザーにフィードバックを提供できます。
VS CodeのデバッグUIは、2つの場所で進行状況のフィードバックを表示します。
- デバッグビューの上部にプログレスバーとして表示されます。
- 「サイレント通知」として表示されます。これは、進行状況がステータスバーに「サイレント」(ユーザーを中断することなく)に表示され、クリックすることで通知として開くことができることを意味します。通知にはより詳細な情報が表示され、基になる長時間実行操作のキャンセルを許可します(操作がキャンセルをサポートしている場合)。
短い操作でのちらつきを避けるため、進行状況UIは0.5秒の遅延後にのみ開始されます。
以下のビデオは、Mock Debug(本日時点で唯一対応しているデバッグ拡張機能)での(シミュレートされた)長時間実行操作の新しい進行状況UIを示しています。他のデバッグ拡張機能もすぐに進行状況のサポートを採用することを期待しています。
デバッグコンソールでのコード補完選択
前回のマイルストーンでは、Debug Adapter Protocolの「completion」リクエストに選択制御を追加しました。このリリースにより、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.js
がsrc/component/index
に短縮されます。js
- ファイル拡張子 (.js
) を含め、完全なパスを使用します。
タスク
タスククイックピックの高速化
以前のタスククイックピックは、選択するタスクのリストを表示する前に、すべてのタスク提供拡張機能からすべてのタスクを取得していました。現在、VS Codeはクイックピックのドロップダウンを表示する前に、追加の拡張機能タスクを取得しないため、はるかに高速になりました。拡張機能が提供するタスクも、要求されたときにのみ取得されるため、拡張機能ホストの負担が軽減されます。
以下では、TypeScriptが提供するtsc
タスクは、ユーザーがtypescript拡張機能を選択した後にのみ取得されます。
テーマ: One Dark Pro
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
設定の同期
ここ数ヶ月間、VS Codeの設定、拡張機能、キーボードショートカットを複数のマシン間で同期する機能のサポートに取り組んでおり、この機能はInsidersリリースでプレビュー版として利用できます。
今回のマイルストーンでは、ユーザーのスニペットとその他のUI状態の同期を追加しました。
テーマ: GitHub Sharp (カスタマイズ付き)
現在、以下のUI状態が同期されます。
- 表示言語
- アクティビティバーのエントリ
- パネルのエントリ
- ビューのレイアウトと表示設定
- 最近使用したコマンド
- 「再度表示しない」通知
注: 現時点では、ユーザー言語スニペットのみが同期されます。グローバルスニペットのサポートは次のマイルストーンで追加される予定です。
また、データの復元やトラブルシューティングに役立つリモートおよびローカルの同期バックアップビューを追加しました。これらのビューには、Preferences Sync: Show Remote Backup (設定の同期: リモートバックアップを表示) およびPreferences Sync: Show Local Backup (設定の同期: ローカルバックアップを表示) コマンドを使用してアクセスできます。
テーマ: GitHub Sharp (カスタマイズ付き)
詳細については、設定の同期ドキュメントをご覧ください。
アカウント管理
認証プロバイダーを提供する拡張機能は、設定ギアの上にある新しいAccounts (アカウント) コンテキストメニューにアカウントが表示されるようになりました。現在サインインしているすべてのアカウントを表示したり、サインアウトしたり、信頼できる拡張機能を管理したりできます。ここからMicrosoftアカウントにサインインすることも、設定同期を開始する別の方法です。
テーマ: Pop Light (カスタマイズ済み)
新しいJavaScriptデバッガー
今月も引き続き、新しいJavaScriptデバッガーの開発を進めています。これはInsidersではデフォルトでインストールされており、VS Code StableではMarketplaceからインストールできます。既存の起動構成でdebug.javascript.usePreview
設定を有効にすることで、使用を開始できます。今月追加された新機能の一部をご紹介します。
デバッグターミナルでのリンク処理
デバッグターミナル (Debug: Create JavaScript Debug Terminal) を使用して、任意のNode.jsプロセスを自動的にデバッグできるようになりました。また、リンクをCmd/Ctrl+クリック
すると、ブラウザーのデバッグを開始するリンクもデバッガーが処理するようになり、設定は不要です。
テーマ: Earthsong、フォント: Fira Code
ウォッチとデバッグコンソールで$returnValueを参照
呼び出しスタックで利用可能な場合、関数の$returnValue
をデバッグコンソールとウォッチ式で参照できるようになりました。
TypeScript 3.9 Betaのサポート
今回のイテレーションでは、新しいTypeScript 3.9 Betaの機能のサポートを追加しました。TypeScript 3.9の主なハイライトは次のとおりです。
// @ts-expect-error
ディレクティブの提案機能。- 改行と書式設定をより適切に保持するリファクタリング。
- JavaScriptの自動インポートで、一般的なJSスタイルのインポート (
require(...)
) を追加できるようになりました。
新しいTypeScript 3.9の機能は、TypeScript Nightly拡張機能をインストールすることで今日から試すことができます。TypeScript 3.9ベータ版で何かバグに遭遇した場合は、フィードバックをお寄せください!
ビュー配置の柔軟性の向上
いくつかのイテレーションにわたり、個々のビューを移動できるようにすることでレイアウトの柔軟性を向上させる作業を行ってきました。今回のイテレーションでは、機能を追加するだけでなく、エクスペリエンスも洗練させました。
新しいドラッグアンドドロップ体験
アクティビティバーのアイコン、パネル、およびサイドバー内のビューのドラッグアンドドロップはシンプルでしたが、曖昧な点がありました。それらのアイテムを実際にドロップしたときに何が起こるか正確に知るのは難しい場合があります。新しいエクスペリエンスは、明確さを改善し、私たちが途中で有効にする新機能を強調することを目的としています。
以下では、ユーザーはまずサイドバー内のビューの順序を並べ替え、次にパネル内のタブとアクティビティバー内のアイコンの順序を並べ替えます。
1つのパネルに複数のビュー
1つのパネル内に複数のビューを表示して、水平方向のスペースをより有効に活用できるようになりました。一般的なリクエストの1つに、ターミナルと問題ビューを同時に表示したいというものがあります。これは、以下に示すようにターミナルを問題ビューにドラッグすることで実現できます。
新しいサイドバーグループの作成とパネルの移動
ビューを新しいサイドバーグループに移動できるようになり、アクティビティバーに新しいアイコンエントリが作成されます。組み込みパネルも例外ではなく、既存のサイドバーエントリまたは独自の新しいエントリに移動できるようになりました。
次のビデオでは、ユーザーがターミナルをアクティビティバーにドラッグし、それによってターミナルのアイコンとサイドバー内のターミナル用のスペースが作成される様子が示されています。次に、ユーザーは出力ビューをターミナルサイドバー内にドロップします。最後に、アウトラインビューがエクスプローラーからアクティビティバーに移動され、独自のサイドバー領域が作成されます。
パネルへのビューコンテナーの貢献
拡張機能がビューをパネルに直接貢献するために必要なすべての機能が揃いました。これは、今日のActivity Barと同様に、ツリービューAPIガイドに文書化されています。この機能はまだプレビュー段階であり、安定版とみなされるまでツリービューのドキュメントにはこれらの変更が反映されないことに注意してください。ただし、試すには、ドキュメントのスニペットを以下のように更新してください。
"contributes": {
"viewsContainers": {
"panel": [
{
"id": "package-explorer",
"title": "Package Explorer",
"icon": "media/dep.svg"
}
]
}
}
ビュー移動のためのコマンド
最後に、キーボードでビューを移動し、レイアウトをリセットするための新しいコマンドがあります。コマンドView: Move Focused View (workbench.action.moveFocusedView
) は、今回のイテレーションの新機能をサポートするように更新されました。コマンドView: Reset Focused View Location (workbench.action.resetFocusedViewLocation
) は、個々のビューをデフォルトの位置に戻すために追加されました。
パネルとカスタムビュー用のアクティビティバーアイコン
柔軟なレイアウトの導入により、デフォルトのパネルビューがアクティビティバーに移動した際に専用のアイコンが表示されるようになりました。また、複数のビューを組み合わせた場合のカスタムビュー用の(デフォルト)アイコンもあります。
同期された領域 (Synced Regions)
昨年11月に導入されたミラーカーソル機能を、同期された領域 (Synced Regions) と呼ばれる新しい実装で改善しました。現在この機能はHTMLで利用可能で、以下のいずれかの方法で試すことができます。
- HTMLタグ上でコマンドOn Type Rename Symbolを実行する (デフォルトでにバインドされています)。
editor.renameOnType
設定をオンにして、カーソルをHTMLタグに移動する。
赤い領域が同期された領域 (Synced Regions) です。名前が示すように、ある領域での変更は他の領域に同期されます。このモードを終了するには、カーソルを領域外に移動するか、ESC
キーを押します。また、任意の領域で空白文字で始まるコンテンツを入力または貼り付けると、このモードは終了します。
JSX、XML、あるいはTypeScriptのローカル変数など、他の言語でもこの入力時リネーム機能を利用できるようにするAPIの提供を期待しています。
拡張機能への貢献
リモート開発
コンテナー、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できるようにするリモート開発拡張機能の開発が引き続き進められています。
1.44の機能ハイライトは以下の通りです
- 開発コンテナー: PRをコンテナーに直接チェックアウト。
- 開発コンテナー: Kubernetesコンテナーアタッチのサポート。
- 開発コンテナー: 実験的なWSL 2 Dockerエンジンサポート。
リモート開発リリースノートで、新しい拡張機能とバグ修正について学ぶことができます。
拡張機能作成
ウェルカムビューコンテンツAPI
一部のビューで、拡張機能から提供されるウェルカムコンテンツがサポートされるようになりました。詳細については、元のイシューを参照してください。拡張機能が提供するビューでこの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プラグインのREADMEを参照してください。
ファイルシステムエラーコード
エラーを識別する文字列であるFileSystemError#code
を追加しました。ファイルシステムエラーがファクトリ関数を通じて作成された場合、code
はその関数の名前になります。例えば、FileSystemError.FileNotFound(msg).code === 'FileNotFound'
です。
StatusBarItem.commandの引数
StatusBarItem.command
が、コマンドIDだけでなく完全なCommand
オブジェクトを受け入れるようになりました。これにより、ステータスバーアイテムがアクティブ化されたときに、拡張機能がコマンドに引数を渡すことができます。
カスタムテキストエディター
カスタムテキストエディターを使用すると、拡張機能はVS Codeの標準エディターを、特定のテキストベースのリソースに対応したカスタムのウェブビューベースのビューに置き換えることができるようになりました。潜在的な使用例としては、次のものが挙げられます。
- シェーダーや
.obj
ファイルなどのアセットのプレビュー。 - XAMLなどのマークアップ言語向けのWYSIWYGエディターの作成。
- JSONやCSVなどのデータファイルの代替的なインタラクティブビューの提供。
カスタムエディターのドキュメントでは、新しいカスタムテキストエディターAPIの使用方法と、新しいエディターがVS Codeで適切に動作することを確認する方法について説明しています。また、カスタムエディターの拡張機能サンプルも必ずご確認ください。
次のイテレーションでは、カスタムエディターをバイナリファイルもサポートするように拡張する、完全なカスタムエディター提案を最終決定したいと考えています。
ビューレベルの進行状況表示
window.withProgress
APIのProgressOptions.location
に、特定のビューで進行状況を表示できるようにする新しいオプションを追加しました。使用するには、ProgressOptions.location = { viewId: <view-id> };
と設定します。ここで<view-id>
は進行状況を表示したいビューのIDを指定します。この動作に関する短いビデオは、上記のビュー進行状況セクションにあります。
拡張機能ビューのコンテキストメニューのwhen-clauseコンテキスト
拡張機能ビューのコンテキストメニューに、拡張機能の識別子を含む新しいextension
when-clauseコンテキストを追加しました。
例
"extension/context": [
{
"command": "gitlens.showSettingsPage",
"group": "2_configure",
"when": "extension == eamodio.gitlens && extensionStatus == installed",
}
]
新しいCodicons
Codiconライブラリに以下のアイコンを追加しました。
- account
- bell-dot
- debug-console
- library
- output
- run-all
- sync-ignored
組み込み言語サーバー作成のためのドキュメント
組み込みプログラミング言語用の言語サーバーを作成することは、通常の言語サーバーを作成するよりも複雑です。今日の組み込み言語の人気の高まりを受けて、言語拡張機能のセクションに組み込み言語のトピックを追加しました。このドキュメントには、組み込み言語サーバーを構築するための2つのアプローチ(言語サービスとリクエスト転送)を示す2つのサンプルが含まれています。組み込み言語のドキュメントを確認することから始めるか、直接2つのサンプルに進んでください。
Debug Adapter Protocol
新しい進行状況イベント
Debug Adapter Protocolでの進行状況報告のサポートが確定しました。デバッグアダプターは、長時間実行されるデバッグアダプター操作の進行状況を表示するために、進行状況イベント (progressStart
、progressUpdate
、およびprogressEnd
) をフロントエンドクライアントに送信できるようになりました。progressStart
イベントはキャンセル可能としてマークすることができ、クライアントにキャンセルUIを表示させ、cancel
リクエストを送信させることができます。サポートされているデバッグアダプターで進行状況イベントを有効にするには、フロントエンドクライアントがinitialize
リクエストに新しいclient機能supportsProgressReporting
を含める必要があります。
詳細については、対応するDAPの機能リクエストを参照してください。VS Codeは、このマイルストーンから進行状況イベントをサポートしています。
「evaluate」リクエストのクリップボードコンテキスト値
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が処理します。これらはオプションでウィンドウのリロード後も保持でき、ウィンドウがロードされた直後に作成されたターミナルが拡張機能ホストの起動をブロックすることなく、代わりに最後に既知のバージョンを使用するように配慮されています。これらの永続化されたコレクションは、コレクションを破棄するか、新しい非永続的なコレクションを作成するか、拡張機能がアンインストールされたときに削除できます。
これらの環境変更をユーザーに、「古い」ターミナル環境を更新できる何らかのインジケーターを通じて表示することが計画されていますが、これはまだ進行中です。イシュー #46696で議論を追うことができます。
ブラウザーのサポート
リモートインジケーター
ブラウザーでVS Codeを使用している場合、リモートインジケーターが表示されるようになりました。これにより、接続されているリモート環境がわかり、拡張機能がリモートに関連する追加コマンドを追加できるようになります。この変更により、ステータスバーからOpen in Desktopリンクが削除され、リモートピッカーに移動されます。
注: 現在、VS CodeはブラウザーからSSH、コンテナー、WSLなどの異なるリモートに接続することをサポートしていません。
ナビゲーションリンク
新しいメニュー位置により、ブラウザーで実行中の拡張機能が左上のハンバーガーメニューにリンクを提供できるようになりました。
エンジニアリング
VS CodeはES6にコンパイル
VS Codeは完全にES6を採用しました。TypeScriptのおかげで、私たちは長い間ES6構文を使用してきましたが、現在はターゲットランタイムもES6をサポートしていることを前提としています。これにより、Strings#endsWith
のようなES6の「グローバル」を使用したり、ジェネレーター関数やシンボルなどの新しい言語機能を使用したりできます。
GitHub Actionsによるイシュートリアージの自動化
今回のイテレーションでは、既存のトリアージ自動化をGitHub AppsからGitHub Actionsに移行しました。これにより、vscodeリポジトリでのログ取得や開発速度の向上といった利点が得られました。さらに、修正がVS Code Insidersにプルされた際にイシューの作成者に通知するActionなど、いくつかの新しい自動化を追加し、作成者が修正が効果的かどうかを迅速に確認できるようにしました。
私たちが使用するActionsの全セットは、MITライセンスの下でGitHubで公開されています。
ドキュメントと拡張機能
Python
2つの新しいPythonチュートリアルがあります
- コンテナー内のPython - DockerコンテナーでPythonアプリケーションを構築する方法を学びます。
- データサイエンスのためのPython - Pythonのデータサイエンスライブラリを使用して機械学習モデルを作成します。
C++
C++拡張機能のチュートリアルが書き直され、LinuxでC++を使用するための新しいチュートリアルが追加されました。
Docker拡張機能
Microsoft Docker拡張機能のバージョン1.0が利用可能になりました。この拡張機能は、プロジェクトにDockerファイルを追加し、Dockerイメージをビルドしてデバッグでき、コンテナーやイメージを簡単に開始、停止、検査、削除するためのエクスプローラーを含んでいます。
Azure拡張機能
VS Code内からAzureアセットを直接操作するための2つの新しい拡張機能があります。
-
Azure Virtual Machines - 事前設定されたSSHアクセスを持つUbuntu仮想マシンを作成し、Remote-SSH拡張機能を使用して接続できます。
-
Azure Resource Groups - すべてのAzureリソースを表示し、Azureビューでそれらに素早く移動できます。
注目すべき修正点
- 75932: デバッグの読み込みに失敗しました: プロセスピッカーに失敗しました (画面サイズ131072x1が不正です、問題が発生する可能性があります)
- 84271: 最近開いたファイル (クイックピック) からファイルを削除する「x」を追加
- 89658: デバッグアダプターが見つかりません
- 92381: ワークスペースにフォルダーを追加して繰り返し削除すると、「フォルダーをワークスペースに追加」プロンプトが重複する
- 93344: ウェルカムビューがスクロールするべき
- 93634: 進行状況: ウィンドウの進行状況がサイレント通知の進行状況に変わるようにする
ありがとうございます
最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!
問題追跡への貢献者
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- José Vilmar Estácio de Souza (@jvesouza)
- joanmarie (@joanmarie)
vscode
への貢献者
- Andrew Branch (@andrewbranch): [typescript-language-features] importModuleSpecifierEnding preferenceの追加 PR #90405
- Andy Barron (@AndyBarron): editor.codeActionsOnSave: オブジェクトと配列の両方の構成をサポート PR #92681
- Benny Neugebauer (@bennyn): プロキシ認証ウィンドウオプションの型付けを修正 PR #91954
- Benno (@blueworrybear): #91296を更新し、複数のワークスペースルートを許可 PR #92082
- Charles Gagnon (@Charles-Gagnon): 入力ボックスメッセージを常に表示するよう警告 PR #92531
- Gustavo Sampaio (@GustavoKatel): キーボードショートカットでCodeLensを簡単に選択 PR #91232
- Huachao Mao (@Huachao): 「extension」のタイポを修正 PR #93178
- Hyun Sick Moon (@hyun6): タイポを修正 PR #93291
- Ilia Pozdnyakov (@iliazeus)
- @jaqra: 検索ビューの「検索詳細の切り替え」パディングを修正 PR #91429
- Jean Pierre (@jeanp413)
- Jonas Dellinger (@JohnnyCrazy): タイトル領域のスクロールバーを大きくできるようにする PR #92720
- @nrayburn-tech: monaco editorのautomaticLayoutにResizeObserverを使用 PR #93630
- Raul Piraces Alastuey (@piraces): デバッグコンソールの履歴エントリナビゲーションで余分なナビゲートが発生する問題を修正 PR #93125
- Robert Rossmann (@robertrossmann): 設定エディターのセクション見出しでテーマのテキスト色を継承 PR #93605
- Sharak (@SharakPL): WebViewの幅の修正 PR #93085
- Tobias Hernstig (@thernstig): .npmrcファイルの関連付けをiniファイルとして追加 PR #92397
- Matej Urbas (@urbas)
- Alvaro Videla (@videlalvaro)
- David Teller (@Yoric): #91913を修正: ファイルウォッチャーから/.hg/store/を除外 PR #91941
常にフィードバックを提供してくれるアクセシビリティコミュニティに感謝します!いくつか例を挙げると
- Florian Bejers (@zersiax)
- José Vilmar Estácio de Souza (@jvesouza)
- Andy Borka (@ajborka)
- Dickson Tan (@Neurrone)
- Joan Marie (@joanmarie)
- Pawel Lurbanski (@pawelurbanski)
- Bryan Duarte (@RedEyeDragon)
- Alex Hall (@mehgcap)
- Michał Zegan (@webczat)
- Nolan Darilek (@ndarilek)
- Alexander Epaneshnikov (@alex19EP)
- Marco Zehe (@MarcoZehe)
- Leonard de Ruijter (@leonardder)
- Ivan Fetch (@ivanfetch)
vscode-vsce
へのコントリビューション
- Bob Brown (@bobbrow): 情報メッセージのためにconsole.warnをconsole.logに変更 PR #434
- James George (@jamesgeorge007)
language-server-protocol
への貢献者
- Aleksey Kladov (@matklad): セクションへのリンクを追加 PR #942
vscode-languageserver-node
への貢献者
- Remy Suen (@rcjsuen): 型と修飾子の記述を修正 PR #588
- Tom Raviv (@tomrav): text-documentパッケージのreadmeにあるnpmバッジを修正 PR #592
- Heejae Chang (@heejaechang):
vscode-generator-code
への貢献者
- Sibiraj (@sibiraj-s): 非推奨の
useColors
mocha apiを削除 PR #196
vscode-loader
への貢献
- Roberto Araujo (@Roberto-Araujo): document.headの代わりにheadを使用 PR #26
localization
への貢献
800人以上のCloud + AI LocalizationコミュニティメンバーがMicrosoft Localization Community Platform (MLCP) を使用しており、そのうち約170人がVisual Studio Codeに積極的に貢献しています。新しい翻訳の提供、翻訳への投票、またはプロセスの改善提案など、皆様のご貢献に感謝いたします。
こちらに貢献者のスナップショットがあります。貢献者名リストを含むプロジェクトの詳細については、プロジェクトサイト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.
- 日本語 (日本) Ikko Ashimine, Aya Tokura, Takayuki Fuwa, ちゃん きさらぎ, 住吉 貴志, Koichi Makino, Yoshihisa Ozaki, TENMYO Masakazu.
- 韓国語 (韓国) 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.