2022年2月 (バージョン 1.65)
更新 1.65.1: この更新は、これらのセキュリティの問題に対応しています。
更新 1.65.2: この更新は、これらの問題に対応しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code 2022年2月リリースへようこそ。
- 新しいエディター履歴ナビゲーション - 「戻る/進む」履歴をエディターグループまたは単一のエディターにスコープ設定。
- ライトハイコントラストテーマ - VS Codeエディターの視認性を高めるライトテーマ。
- 新しいオーディオキュー - 警告、インライン提案、ブレークポイントヒットのためのオーディオキュー。
- 問題と検索結果のドラッグアンドドロップ - 結果を新規または既存のエディターグループにドラッグ。
- ソース管理の差分エディターの管理 - Git操作後に差分エディターを自動的に閉じる。
- デバッガーの遅延変数評価 - JavaScript/TypeScriptのプロパティゲッターの遅延評価。
- プレビュー: ターミナルシェル統合 - ターミナルコマンドの再実行、コマンドステータスの装飾。
- Web 用 VS Code - 最近使用したローカルファイルとフォルダーを再度開く、Git統合の改善。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
ワークベンチ
新しいエディター履歴ナビゲーション
VS Codeのエディター履歴ナビゲーション機能は、戻るや進むなどの人気コマンドを駆動します。この機能の改善と機能追加のために、多数の機能リクエストが時間とともに蓄積されました。このマイルストーンで、これらのリクエストのほとんどに対応するために、エディター履歴ナビゲーションはゼロから書き直されました。
エディターグループを認識するナビゲーション
エディター履歴をナビゲートする際、エディターグループが考慮されるようになりました。エディター履歴を前後にナビゲートすると、以前の正確な状態にあったエディターグループのエディターがアクティブになり、フォーカスされます。エディターグループが削除されると、関連するすべての履歴エントリは破棄されます。
以下の短いビデオでは、最初の戻るでカーソルが新しいエディターグループに配置され、2番目の戻るナビゲーションで元のエディターグループに戻ります。
テーマ: GitHub Light
ナビゲーションをエディターグループまたはエディターにスコープ設定する新しい設定
新しい設定workbench.editor.navigationScope
により、エディター履歴ナビゲーションをアクティブなエディターグループまたはエディターに限定できるようになりました。サポートされている値は次のとおりです。
default
: エディターナビゲーションは、開いているすべてのエディターグループおよびエディターで機能します。editorGroup
: エディターナビゲーションは、アクティブなエディターグループの開いているエディターに限定されます。editor
: エディターナビゲーションは、アクティブなエディターに限定されます。
スコープをeditorGroup
またはeditor
に設定すると、各エディターグループまたはエディターは独自のナビゲーションスタックを持ち、個別にナビゲートできます。
ノートブックのサポート
どのノートブックでも選択したセル間をナビゲートできるようになりました。テキストエディターでカーソル位置間をナビゲートできるのと同じように、エディター間でナビゲーションが機能します。
テーマ: GitHub Light
編集またはナビゲーションの場所をナビゲートする新しいコマンド
デフォルトでは、エディターナビゲーションの場所は、エディター間をナビゲートするときだけでなく、エディター内でナビゲートするとき (例えば、ノートブックセルを切り替えたり、テキストエディターで選択範囲を変更したりするとき) にも追加されます。記録される場所が多すぎると感じる場合、場所を以下のいずれかに減らす新しいコマンドが追加されました。
- ナビゲーションの場所 - 例えば、定義へ移動を使用する場合。
- 編集の場所 - エディターが変更されるたびに。例えば、テキストエディターで入力する場合。
これらのコマンドにお好みのキーバインドを割り当てて、それに応じてナビゲーションを変更できます。
編集場所のコマンド
workbench.action.navigateForwardInEditLocations
- 編集場所を前に進む。workbench.action.navigateBackInEditLocations
- 編集場所を後ろに戻る。workbench.action.navigatePreviousInEditLocations
- 編集場所を前に戻る。workbench.action.navigateToLastEditLocation
- 最後の編集場所へ移動 (このコマンドは以前から存在)。
ナビゲーション場所のコマンド
workbench.action.navigateForwardInNavigationLocations
- ナビゲーション場所を前に進む。workbench.action.navigateBackInNavigationLocations
- ナビゲーション場所を後ろに戻る。workbench.action.navigatePreviousInNavigationLocations
- ナビゲーション場所を前に戻る。workbench.action.navigateToLastNavigationLocation'
- 最後のナビゲーション場所へ移動。
キーバインドの割り当てをより強力にするために、関連するコンテキストキーが追加されました。
編集場所のコンテキストキー
canNavigateBackInEditLocations
- 編集場所を後ろに戻ることが可能かどうか。canNavigateForwardInEditLocations
- 編集場所を前に進むことが可能かどうか。canNavigateToLastEditLocation
- 最後の編集場所へ移動することが可能かどうか。
ナビゲーション場所のコンテキストキー
canNavigateBackInNavigationLocations
- ナビゲーション場所を後ろに戻ることが可能かどうか。canNavigateForwardInNavigationLocations
- ナビゲーション場所を前に進むことが可能かどうか。canNavigateToLastNavigationLocation
- 最後のナビゲーション場所へ移動することが可能かどうか。
新しいレイアウトコントロールオプション
前回のマイルストーンで、タイトルバーに実験的なレイアウトコントロールを導入しました (workbench.experimental.layoutControl.enabled
をtrue
に設定することで有効になります)。このコントロールのアクションは便利ですが、クリックが多すぎるというフィードバックをいただきました。そのため、設定workbench.experimental.layoutControl.type
で誰でも試せるようにいくつかのUIオプションを追加しています。この設定には以下のオプションがあります。
menu
: メニューを開く単一ボタンの以前の動作 (デフォルト)。toggles
: パネル、サイドバー、サイドパネルを切り替える3つのボタンを表示する新しいオプション。both
: トグルボタンの後にメニューボタンを表示する新しいオプションで、カスタマイズレイアウトのクイックピックにかなり素早くアクセスできます。
下の画像は、layoutControl.type
がboth
に設定され、3つのトグルボタンとメニューのドロップダウンが表示されていることを示しています。
ライトハイコントラストテーマ
エディターの可読性を向上させるため、新しいライトハイコントラストテーマが追加されました。
オーディオキュー
今回のリリースで、警告、インライン提案、デバッガーのブレークポイントヒットのためのオーディオキューを含む、新しいオーディオキューが追加されました。サウンドは調整され、個別のaudioCues.*
設定を優先して、一般的な設定audioCues.enabled
は非推奨になりました。
lineHasWarning
を除くすべてのオーディオキューは、スクリーンリーダーユーザー向けにデフォルトで有効になっています (設定値はauto
)。
新しいオーディオキューコマンドヘルプ: オーディオキューを一覧表示は、利用可能なすべてのオーディオキューを一覧表示し、リストを移動しながら各オーディオキューを聞くことができ、現在有効になっているキューを確認できます。
問題と検索結果のドラッグアンドドロップ
問題、検索、または参照の結果をエディターにドラッグアンドドロップできるようになり、ファイルを開いて結果の位置を表示できるようになりました。これは、新しいエディターグループを開始したり、既存のエディターグループに結果をドロップしたりする場合に便利です。
設定エディターの分割ビュー
設定エディターでは、目次と設定リストを分離するために、調整可能な分割ビューが使用されるようになりました。
自動言語検出の改善
新しい設定workbench.editor.historyBasedLanguageDetection
が有効になっている場合、無題のエディターは、エディターの履歴と現在のワークスペースの内容を考慮に入れた、改良された自動言語検出アルゴリズムを使用します。新しいアルゴリズムは、以前よりもはるかに少ないテキスト入力で検出結果を提供します。
以下は、JavaScript、TypeScript、Markdown、Python、PHP、C++ (さらに多くの言語がサポートされています) を横断してこれを使用する例です。
テーマ: GitHub Light + HC Customizations
言語拡張機能の推奨事項の改善
言語機能拡張の推奨事項は、推奨時にMarketplaceの他の著名な言語拡張機能を考慮に入れるようになりました。例えば、Apache NetBeans Java拡張機能がインストールされている場合、VS CodeはJava Extension Packを推奨しません。
拡張機能ツリーのホバーのキーボードショートカット
拡張機能によって提供されるカスタムツリービューでホバーを表示するには、キーボードショートカットCtrl/Cmd+K, Ctrl/Cmd+I
を使用できます。
エディター
スニペットで囲む
現在の選択範囲をスニペットで囲む新しいコマンドが追加されました。テキストを選択し、コマンドパレットからスニペットで囲むコマンドを呼び出し (⇧⌘P (Windows、Linux Ctrl+Shift+P))、ドロップダウンからスニペットを選択します。
以下の短いビデオでは、選択したメソッドがtry/catchスニペットで囲まれています。
TM_SELECTED_TEXT
またはSELECTION
変数を使用する適用可能なスニペットはすべて、スニペットで囲むクイックピックのドロップダウンで利用できます。カスタムユーザーまたはプロジェクトのスニペットも含まれます。
アクセシブルなインレイヒント
インレイヒントは、推論された変数の型のように、ソースコード内に付加情報を示します。スクリーンリーダーユーザー向けに、この機能を支援する新しいコマンドが追加されました。コマンドパレットからインレイヒント付きで行を読み上げるを選択すると、エディターが現在の行をヒントを交えながら読み上げます。
コンテキストに応じたUnicodeハイライト
偽陽性を減らすため、周囲の文字が非ASCIIスクリプトであることを視覚的に示す場合、曖昧なUnicode文字や見えないUnicode文字はハイライトされなくなりました。したがって、信頼されたワークスペースでは、見えない文字、またはASCII文字と混同される可能性のある文字のみがハイライトされます。この例外は、少なくとも1文字がASCII文字と混同されない非ASCII文字の単語に含まれる文字です。
以前はconst stringで複数の誤検出が見られました。
その後、紛らわしい文字のみが強調表示される。
ターミナル
複数行貼り付け警告
シェルが複数行をサポートしないターミナルに複数行を貼り付ける際に、デフォルトでダイアログが表示されるようになりました。この警告は、ブラケット貼り付けモードと、Ctrl+V
を直接シェルに渡す場合のPowerShellで表示されます。ダイアログには、この機能を簡単に無効にするための次回から表示しないチェックボックスがあります。
ターミナルリンクの改善
今回のリリースでは、ターミナルリンクの実装が大幅にリファクタリングされました。これにより、機能の保守性が簡素化され、改善されただけでなく、以下の点ももたらされました。
- リンクのハイライトが再び機能するようになりました。
- 解決済みリンクのキャッシュにより、特定のリンクが表示されるまでの遅延が減少しました。
- ワークスペース検索リンクは、検証済みリンクと同じコードで処理されるようになり、一貫性が向上し、行/列の認識が改善されました。
- いくつかのバグ修正。
ファイルリンクを開くコマンドの改善
前回バージョンで導入された最後のファイルリンクを開くおよび検出されたリンクを開く...コマンドは、フォルダーを除外するようになり、より便利になりました。
ソース管理
差分エディターの管理
このマイルストーンでは、差分エディターの管理に役立つ変更を加えました。コマンドパレットに新しいコマンドGit: すべての差分エディターを閉じるが追加され、開いているすべての差分エディターを閉じることができます。また、変更がstash、コミット、破棄、ステージ、またはアンステージされたときに差分エディターを自動的に閉じる新しい設定git.closeDiffOnOperation
も追加されました。
Gitコマンド出力のログ記録
gitコマンドを実行すると、stderr
の内容はGit出力ウィンドウにログ記録されます。新しい設定git.commandsToLog
が追加され、Git出力ウィンドウにstdout
の内容がログ記録されるGitコマンドのリストを指定できます。
デバッグ
遅延変数
変数の値にアクセスすると、副作用があったり、コストがかかる場合があります。VS Codeの汎用デバッガーは、ユーザーがオンデマンドで変数の値を取得するためのボタンを表示できるようになりました。これは、新しい「遅延」変数機能をサポートするデバッグ拡張機能で利用できます。現在、これは組み込みのJavaScriptデバッガーによってプロパティゲッターにのみ実装されていますが、他のデバッガー拡張機能もすぐにこれに追随すると予想しています。
タスク
タスクで使用できる新しいプラットフォーム非依存のuserHome
変数が追加されました。
{
"label": "Test Home",
"type": "shell",
"command": "ls ${userHome}"
}
ノートブック
組み込み出力レンダラーの更新
テキスト、画像、HTML、コードレンダラーをVS Codeコアから組み込みの出力レンダラー拡張機能に移動しました。この変更により、VS Codeはこれらの出力タイプでテキストを検索できるようになりました。
以下の短いビデオでは、item
を検索すると、最初はコードセルに3つの結果が表示されますが、セルの出力も含むようにフィルターできます。
ノートブックのセルボタンのスクロール追従
コードセルを下にスクロールすると、実行ボタンとセルツールバーが画面の上部に固定されるようになりました。これにより、長いコードセルで作業しているときのアクセスが向上します。
テーマ: Dracula
言語
TypeScript 4.6
VS CodeにはTypeScript 4.6が搭載されるようになりました。この更新には、多くの新しい言語機能、ツール改善、バグ修正が含まれています。TypeScript 4.6の詳細については、TypeScriptブログを参照してください。
JavaScriptファイルでの構文エラー報告
TypeScript 4.6のおかげで、VS CodeはJavaScriptファイルでいくつかの一般的な構文エラーを報告するようになりました。これには、解析エラー、ブロックスコープ変数の無効な再宣言が含まれます。
以前は、これらのエラーはJavaScriptでセマンティックチェックを有効にした場合にのみ報告されていました。
このエラー報告は、以下の設定で無効にできます。
"javascript.validate.enable": false
JS/TSの設定を言語ごとにさらに構成可能に
JavaScriptとTypeScriptの多くの設定が、言語固有の設定として構成できるようになりました。言語固有の設定は、例えばjavascript
とjavascriptreact
で異なる設定が必要な場合に便利です。
新しく言語固有で有効になった設定は以下の通りです。
javascript.preferences.quoteStyle
,typescript.preferences.quoteStyle
javascript.preferences.importModuleSpecifier
,typescript.preferences.importModuleSpecifier
javascript.preferences.importModuleSpecifierEnding
,typescript.preferences.importModuleSpecifierEnding
javascript.preferences.jsxAttributeCompletionStyle
,typescript.preferences.jsxAttributeCompletionStyle
javascript.preferences.renameShorthandProperties
,typescript.preferences.renameShorthandProperties
javascript.preferences.useAliasesForRenames
,typescript.preferences.useAliasesForRenames
javascript.suggest.enabled
,typescript.suggest.enabled
javascript.suggest.completeJSDocs
,typescript.suggest.completeJSDocs
javascript.suggest.jsdoc.generateReturns
,typescript.suggest.jsdoc.generateReturns
javascript.autoClosingTags
,typescript.autoClosingTags
新しいLua構文ハイライト文法
VS Codeには、Luaファイルの構文ハイライトのために、より良く保守された新しいLua文法が搭載されました。新しい文法は活発に保守されており、古い文法に存在していた問題を修正し、新しいLuaトークンをサポートしています。
Web 用 VS Code
ローカルファイルとフォルダーを再度開く
最近開いたローカルファイルとフォルダーのリストは、Web File System Access APIをサポートするブラウザーでvscode.devまたはinsiders.vscode.devにアクセスする際に利用できるようになりました。ローカルファイルを選択するとエディターで開かれ、ローカルフォルダーを選択するとその内容を表示するようにファイルエクスプローラーが更新されます。内容が表示される前に、ブラウザーからローカルファイルアクセスを確認するよう求められる場合があります。
リモートリポジトリ
GitHubリポジトリ
今回のマイルストーンでは、vscode.devおよびgithub.devでGitHubリポジトリを編集する際のマージ競合解決が改善されました。エディターにマージ競合の装飾が表示され、現在の変更を受け入れる、取り込まれた変更を受け入れる、または両方の変更を受け入れるのオプションが利用できるようになりました。
また、ソース管理ビューには、マージ競合を含むファイルに対する変更をステージングアクションも追加されました。
さらに、vscode.devおよびgithub.devでGitHubリポジトリ内の特定のフォルダー下のすべての変更を簡単にステージングおよびアンステージングできるようになりました。これを行うには、ソース管理ビューを右クリックしてツリーで表示を選択します。
テーマ: One Monokai
ワークスペース検索とすべての参照を検索は、以前のように部分的な結果をデフォルトで提供するのではなく、リポジトリの完全なコピーをダウンロードしてインデックス化するようになりました。
このインデックス作成機能を構成するためのいくつかの設定があります。
remoteHub.indexing.verboseDownloadNotification
- ダウンロード通知をポップアップとして表示するか (デフォルト)、ステータスバーに表示するかを制御します。remoteHub.indexing.maxIndexSize
- ダウンロードするインデックスのサイズ制限を制御します。この制限を超えると、ダウンロードはキャンセルされ、部分的な結果が提供されます。この設定を空のままにすると、リポジトリをダウンロードせず、常に部分的な結果を使用します。
Azure Repos
このマイルストーンでは、Azure Reposのサポートを特定のAzure DevOps認証プロバイダーから汎用Microsoft認証プロバイダー(Settings Syncで使用)に切り替えました。Azure Repoにアクセスする際に再度ログインを求められますが、保存された変更はすべて保持されます。
拡張機能への貢献
Hex Editorデータインスペクターの改善
以前は、Hex Editor拡張機能は常にデータインスペクターをサイドバーに表示し、Hexエディターが表示されるたびにそれを表示していました。しかし、一部のユーザーはこれを煩わしいと感じ、デバッガー用のメモリインスペクターとの統合が特に中断的なエクスペリエンスを引き起こしていました。現在、データインスペクターは検査されたバイトの右側に表示されます。エディターが狭すぎる場合は、データインスペクターはホバーウィジェット内に表示されます。
テーマ: Codesong
これは、hexeditor.inspectorType
設定を通じて設定でき、以下の3つの値のいずれかを取ることができます。
aside
- データインスペクターを横に表示します。hover
- エディターの幅に関係なく、ホバー時のみデータインスペクターを表示します。sidebar
- データインスペクターを以前のようにサイドバーに表示します。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues拡張機能の開発は継続されており、プルリクエストやイシューの作業、作成、管理が可能です。ハイライトについては、この拡張機能の0.38.0リリース向け変更ログを確認してください。
プレビュー機能
ターミナルシェル統合
ターミナルにおけるシェル統合は、当初前回のリリースで導入され、今月も多くの改善が施されました。改めて説明すると、この機能はVS Codeが以前はほとんど不明だったターミナル内で何が起こっているかについて、追加の洞察を得ることを可能にします。この機能はまだ実験的と見なされており、terminal.integrated.shellIntegration.enabled
設定を通じてオプトインできます。
今回のリリースでの最大の変更点は、シェル統合によって検出されたコマンドが、「ガター」として左側に装飾を表示するようになったことです。コマンド装飾はバッファを視覚的に区切り、シェル統合機能を使用する情報とアクションへのアクセスを提供します。コマンド装飾には、コマンドの終了コードによって決定されるエラー、成功、デフォルトの3種類があります。
装飾をクリックすると、そのコマンドに特有のアクションがメニューに表示され、現在のところコマンドの再実行と出力のコピーが含まれます。
装飾にカーソルを合わせると、コマンドに関する情報(実行されてからの時間や関連する終了コードなど)が表示されます。
terminal.integrated.shellIntegration.decorationsEnabled
をfalse
に設定することで、装飾を無効にできます。個々のアイコンはterminal.integrated.shellIntegration.decorationIcon*
設定で構成でき、これらの新しいテーマキーで色を設定できます。
terminalCommandDecoration.successBackground
terminalCommandDecoration.errorBackground
terminalCommandDecoration.defaultBackground
その他の主な変更点は次のとおりです。
- 有効化設定が
terminal.integrated.shellIntegration.enabled
に名前変更されました。 - すべてのサポート対象シェルでシェル統合を有効にするメカニズムがより信頼できるようになりました。
- リモート接続されたウィンドウ (SSH、WSL、コンテナ) を使用している場合でも、シェル統合が動作するようになりました。
- 行継続 (例:
$PS2
) がすべてのサポート対象シェルで動作するようになりました。 - 「スキップされた」コマンドは特別にマークされるようになりました。例えば、
Ctrl+C
を使用した後や、空のコマンドを実行した後などです。 - 最近のコマンドを実行および最近のディレクトリへ移動コマンドは、セッション間で履歴を保存するようになりました。履歴の保存は、
terminal.integrated.shellIntegration.history
設定で構成できます。
ESLint
ESLint拡張機能は、ESLintで検証できるセルを含むノートブックドキュメントの予備的なサポートが追加されました。このサポートは、拡張機能のプレリリースバージョンでのみ利用可能です。
拡張機能作成
言語ステータス項目
言語ステータス項目のAPIが確定しました。このAPIは、アクティブなエディターの言語固有の情報を表示します。これはプロジェクトやツールセットのバージョンに関する一般的な情報であるだけでなく、エラーや警告も表示できます。
このAPIはステータスバーAPIに似ており、vscode.languages.createLanguageStatusItem(...)
を介してアクセスできます。言語ステータス項目は、アクティブなエディターが変更されるたびにVS Codeが表示および非表示できるように、ドキュメントセレクターを使用して作成する必要があります。
インレイヒント
インレイヒントプロバイダーAPIが正式に公開されました。これにより、ソースコードに追加情報を埋め込むことができます。下の画像は、TypeScriptが推論された型にインレイヒントを追加した様子を示しています。
このAPIはInlayHintsProvider
を中心に構築されています。InlayHint
オブジェクトを提供し、いくつかの興味深い機能があります。
- インレイヒントには、ツールチップとコマンドを含めることができます。
- ヒントのラベルは複数の部分で構成でき、それぞれの部分にツールチップとコマンドを含めることができます。
- ラベルの部分には、関連するソース位置を含めることもでき、その部分の定義へ移動などの言語機能を有効にします。
ステータスバーのフォーカス境界線
ステータスバーとステータスバー項目にフォーカス境界線を追加することで、ステータスバーのナビゲーションがより簡単でアクセスしやすくなりました。
テーマ作成者は、2つの新しいテーマカラーを設定することで、境界線の色をカスタマイズできます。
statusBar.focusBorder
: フォーカスされた際のステータスバー全体の境界線の色。statusBarItem.focusBorder
: フォーカスされた際のステータスバー項目の境界線の色。
テストの更新アクションとsortText
TestController
インターフェースに標準の更新ハンドラーを追加する提案が確定しました。拡張機能がこのプロパティにメソッドを割り当てると、VS Codeはテストエクスプローラービューに「更新」アイコンを表示します。
さらに、TestItem
は現在ファイル内に特定の場所を持たない項目の並び順を制御するsortText
属性を持つことができます。
コメントのタイムスタンプ
Comments APIでは、各Comment
にtimestamp
を追加できるようになりました。このタイムスタンプは、CommentsウィジェットとCommentsビューに表示されます。デフォルトでは、タイムスタンプは相対時間(例:「2週間前」)として表示されますが、ユーザー設定comments.useRelativeTime
を使用して正確な時間を表示することもできます。タイムスタンプのホバーは常に正確な時間になります。
vscode-testパッケージの名前が@vscode/test-electronに変更されました
vscode-test
パッケージの名前が@vscode/test-electron
に変更されました。拡張機能の作成者は、そのパッケージを含んでいる場合、拡張機能のpackage.json
ファイルのdevDependencies
のエントリを更新する必要があります。@vscode/test-electronパッケージは、VS Code拡張機能の統合テストの実行に役立ちます。詳細については、vscode-testリポジトリを参照してください。
更新された codicon
以下の新しいアイコンが、当社のcodiconライブラリに追加されました。
arrow-circle-down
arrow-circle-left
arrow-circle-right
arrow-circle-up
error-small
indent
layout-activitybar-left
layout-activitybar-right
layout-centered
layout-menubar
layout-panel-center
layout-panel-justify
layout-panel-left
layout-panel-right
layout-panel
layout-sidebar-left
layout-sidebar-right
layout-statusbar
layout
newline
record-small
target
アイコン貢献ポイントが確定
アイコン貢献ポイントにより、拡張機能はIDとデフォルトアイコンを指定して新しいアイコンを定義できるようになりました。アイコンIDは、拡張機能(またはその拡張機能に依存する他の拡張機能)によって、ThemeIcon
が使用できる場所ならどこでもnew ThemeIcon("iconId")
、Markdown文字列 ($(iconId)
)、および特定の貢献ポイントのアイコンとして使用できます。
製品アイコンテーマは、アイコンIDを知っていればアイコンを再定義できます。
"contributes": {
"icons": {
"distro-ubuntu": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E001"
}
},
"distro-fedora": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E002"
}
}
}
}
上記の例では、拡張機能が2つの新しいアイコンID distro-ubuntu
とdistro-fedora
を、デフォルトのアイコン定義とともに定義しています。アイコンは、指定されたフォント文字のアイコンフォントで定義されています。
ファイルアイコンテーマ: ファイル関連付けにおけるフォルダー名のサポート
ファイルアイコンテーマにおいて、folderNames
、folderNamesExpanded
、fileNames
、fileExtensions
の関連付けにフォルダー名を含めることができるようになりました。
"fileNames": {
"system/win.ini": "_win_ini_file"
},
system/win.ini
は、関連付けがsystem
フォルダー内のwin.ini
というファイルを直接照合することを意味します。
"fileExtensions": {
"system/ini": "_ini_file"
},
system/ini
は、関連付けがsystem
フォルダー内の*.ini
というファイルを直接照合することを意味します。
"folderNames": {
".vscode/extensions": "_vscode_folder"
},
Codespaces を使用して Web 用 VS Code でリモートインストールされた Web 拡張機能を実行する
Codespaces を使用した Web 用 VS Code は、リモートインストールされたWeb 拡張機能を Web 拡張機能ホストで実行することをサポートするようになりました。たとえば、GitHub Codespace に Vim 拡張機能がインストールされている場合 (devcontainer.json
ファイルの構成による)、ブラウザーで Codespace を開くと Vim が Web 拡張機能ホストにロードされます。詳細については、拡張機能ホストのドキュメントを参照してください。
注: このような拡張機能によるWebワーカーのロードに関して、現在既知の制限事項があります。詳細については、イシューを参照してください。
デバッガー拡張機能の作成
「重要」出力イベントのサポート
最近、Debug Adapter ProtocolはOutput
イベントにimportant
カテゴリを追加しました。このカテゴリは、ユーザーが見落とすべきではない、目立つべきイベントをマークします。VS Codeは、important
カテゴリのメッセージに対して通知ポップアップを表示するようになりました。これらは引き続きデバッグコンソールにもログ記録されます。
「遅延」変数のサポート
一部の変数は動的であり、値を取得するためにコードを実行する必要があります。デバッグアダプターは、値の取得に副作用があったり、コストがかかる可能性があるため、それらの完全な値を自動的に取得したくない場合があります。
一部のデバッグアダプターは、この問題を、「コストのかかる変数」をユーザーが明示的に「展開」して値をフェッチする必要があるプレースホルダーオブジェクトとして表現することで対処してきました。VS Codeの組み込みjs-debugはこのアプローチをJS/TSのゲッターに使用しています。
class Person {
name = 'Danny';
get email(): string {
return 'foo@example.bar';
}
get address(): Address {
return new Address();
}
}
class Address {
street = 'Main Street';
city = 'Zurich';
}
以下のスクリーンキャストは、中間オブジェクトが効果的なデータ構造を理解することを困難にしていることを示しています。
このリリースでは、中間オブジェクトをコンパクトな形式で表示し、完全な値を要求するための(...)ボタンを備えるようにVS Codeを改善しました。
デバッグアダプターは、lazy
プロパティを持つVariablePresentationHint
を追加することで、変数に対してこの新しい表示スタイルを要求できます(DAPの追加を参照)。クライアントがlazy
フラグをサポートしていない場合、変数は以前と同じように表示されます。
Language Server Protocol
Language Server Protocolの次のバージョンが、対応するnpmモジュールとともに公開されました。新しいバージョンには以下の変更が含まれています。
- LSP型からVS Code型への変換、およびその逆の変換が完全に非同期になりました。この変更により、拡張機能ホストをブロックする可能性のある大量のデータストリームの変換が回避されます。これはライブラリにおけるAPIの破壊的変更であることに注意してください(詳細についてはREADME.mdを参照してください)。プロトコル自体の後方互換性には影響しません。
- ノートブックドキュメントの提案された実装が強化されました。これにより、完全なミドルウェアとプロバイダーのサポートが提供されます。
Debug Adapter Protocol
Debug Adapter Protocolにいくつかの新しいプロパティが追加されました。
- 新しいブール型プロパティ
lazy
がVariablePresentationHint
に追加されました。クライアントは、オプションのフラグを使用して、特定のジェスチャーで値をフェッチできるUIで変数を表示できます。 - 新しいオプションの文字列プロパティ
detail
がCompletionItem
に追加されました。この人間が読める文字列により、クライアントは型情報やシンボル情報など、項目に関する追加情報を表示できます。このプロパティはまだVS Codeではサポートされていません。
提案された拡張API
すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。
- 試したい提案を見つけて、その名前を
package.json#enabledApiProposals
に追加します。 - 最新のvscode-dtsを使用して、
vscode-dts dev
を実行してください。これにより、対応するd.ts
ファイルがワークスペースにダウンロードされます。 - これで提案に対してプログラミングできます。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
タイムライン項目におけるMarkdownホバー
TimelineProvider
によって提供される項目は、ツールチップのコンテンツを提供するために使用されるdetail
プロパティでMarkdownをサポートできるようになりました。
ノートブックを認識するドキュメントセレクター
vscode.DocumentSelector
型を使用すると、定義へ移動などの言語機能を特定のドキュメントに関連付けることができます。これはUIを駆動し、対応するプロバイダーに結果を要求するかどうかを決定します。拡張機能がノートブックの型も選択できる新しいAPI提案が追加されました。例えば、{ language: 'python', notebookType: 'jupyter-notebook'}
は、Jupyterノートブックに埋め込まれたすべてのPythonドキュメントを対象とします。これが現在の提案です。ぜひ試してみて、ご意見をお聞かせください。
カスタム言語IDを持つ出力チャンネル
一部の拡張機能は、独自のテキストドキュメント (読み取り専用) であることを前提に、出力チャンネルでトークンまたは構文のカラーリングやCodeLens機能を定義できます。すべての出力チャンネルが同じ言語IDを共有しているため、これらのカスタマイズが他の出力チャンネルに誤って適用される可能性があります。拡張機能の作成者が言語ごとにカスタマイズを定義できるように、カスタム言語IDを持つ出力チャンネルを作成するという機能リクエストがありました。そこで、このマイルストーンでは、カスタム言語IDを持つ出力チャンネルを作成する提案を導入しました。ぜひお試しいただき、フィードバックをお寄せください。
MarkdownString.baseUri
MarkdownString
の提案されたbaseUri
プロパティを使用すると、Markdown内の相対リンクや画像の解決基準となるベースURIを指定できます。このプロパティは、HTMLの<base>
要素と非常によく似た動作をします。
baseUri
が/
で終わる場合、それはディレクトリとみなされ、Markdown内の相対パスはそのディレクトリに対する相対パスとして解決されます。
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/dir/');
// Here 'link' in the rendered Markdown resolves to '/path/to/dir/file.js'
baseUri
がファイルの場合、Markdown内の相対パスはそのファイルの親ディレクトリに対する相対パスとして解決されます。
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/otherFile.js');
// Here 'link' in the rendered Markdown resolves to '/path/to/file.js'
新しいドキュメント
Java GUIアプリケーション
新しいJava GUIアプリケーションのトピックでは、VS CodeでJavaFX、AWT、Swingアプリケーションを開発するためにJava用拡張機能パックを使用する方法を説明しています。
注目すべき修正点
- 107748 ボイスオーバーが、設定が同期されないために無視されることを読み上げない
- 123399 EmmetがjsxおよびhtmlファイルでタグAを持つクラスを追加しない。
- 141680 設定で@tagsを検索するのが遅い
- 141977 設定エディター: フォルダーアクション項目がkeyupを適切に処理しない
- 142040 プレリリースをサポートする拡張機能の「別のバージョンをインストール」アクションを改善する。
- 142462 書き込みロックがクリアされないとファイル書き込みがハングする可能性がある
- 142641 ts-nodeデバッガーがv1.64で正常に動作しない
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
Web拡張機能
Web拡張機能としてコードを実行する拡張機能を有効にした拡張機能の作成者 (以下のリストは2022年2月1日から2022年2月28日の間)
- Var Style (allen)
- helloworld-web-sample (Andrey Belym)
- asciidoctor.asciidoctor-vscode (asciidoctor)
- Gitignore Adder (beatrix)
- gkauthentication-test (BranchCreation SLU)
- Racket Helpers (Calvin-LL)
- PHP Tools (DEVSENSE)
- Naninovel (Elringus)
- Pitoco Extension (Feodrippe)
- feodrippe.feodrippe-helloworld-minimal-sample-test-web (Feodrippe)
- Simple React Snippets for Typescript (Giovanni Fu Lin)
- GitKraken Authentication (GitKraken)
- groog (groogle)
- ModalKeys (haberdashPI)
- VDM VSCode (Jonas Rask)
- cis-algorithm (kimjihu)
- Markdown (Pandoc Flavored) (Kolen Cheung)
- zyname - this is for testing and will be deleted soon (leodevbro)
- Snippet Copy (Lukas Spieß)
- PHP import checker (Marabesi)
- VSCode Language JSONata (Markus Gutbrod)
- Babel JavaScript (Michael McDermott)
- Create Project (Public Theta)
- Dynamic Theme (Rody Davis)
- Router Generator (Rody Davis)
- Chimera Theme (roydukkey)
- Qiita Markdown Preview (Ryoji Kato)
- Kestrel (SenseTime)
- Test token (sevillal)
- Sourcegraph (Sourcegraph)
- Rewrap (stkb)
- wav-preview (sukumo28)
- Pandoc (TANIGUCHI Masaya)
- Hex Viewer (Tao Cumplido)
- Time Link Bundle (Web version) (Time Link)
- DCC Websocket (virgilsisoe)
- VSC+ (Vrej)
問題追跡
問題追跡への貢献者
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
プルリクエスト
vscode
への貢献者
- @aminya (Amin Yahyaabadi): fix: tasks/commonの正規表現を簡素化 PR #142899
- @Balastrong (Leonardo)
- オーバーロードカウンターツールチップの不透明度を増加 PR #141828
- 必要に応じてデコード前後にフラグメントを確認して要素検出を修正 PR #141848
- @BMBurstein (Baruch): ブラケットガイド設定の説明を修正 PR #143722
- @Bruce-Hopkins (Bruce Hopkins): ユーザーホーム変数を追加 PR #141902
- @caioagiani (Caio Agiani): スペルミスを修正 PR #141959
- @CGNonofr (ロイク・マンジョンジャン)
- すべての言語機能登録関数でlanguageIdをlanguageSelectorに置換 PR #143610
- getWorker関数がプロミスを返すことを許可 PR #143611
- @ChaseKnowlden: Lua Grammarを更新 PR #142107
- @divinity76: ルートには--no-sandboxが必要なようです PR #137125
- @efcoyote (coyote): 最新のseti-uiバージョンに更新 PR #141931
- @enticies (enticies): エラーメッセージのタイプミスを修正 PR #142054
- @g-plane (Pig Fang): "pnpm-lock.yaml"をデフォルトのファイルネストパターンに追加 PR #142375
- @gjsjohnmurray (John Murray)
- window.createOutputChannel APIにオプションのlanguageIdを追加 (#_19561) PR #140876
testing.openTesting
設定テキストを修正 (#_142306) PR #142314
- @haykam821: 画像プレビューの透明背景がスケーリングの影響を受けないようにする PR #141667
- @heartacker: 数学スニペットを追加 PR #142697
- @icepaq (Anton): onWebviewPanelでのオートコンプリートアクティベーションイベント PR #141752
- @jeanp413 (Jean Pierre)
- WebviewElement::streamToBufferを修正 PR #142288
- 拡張ビューでIDで拡張機能をクエリすると、常に拡張エディターで安定版バージョンがレンダリングされる問題を修正 PR #143481
- @JJRcop (Jonathan Rubenstein): サポートされているバージョンにVS 2022を追加 PR #142667
- @LuanVSO (Luan Vitor Simião Oliveira)
- psreadlineがシェル統合で動作しない問題を修正 PR #142211
- shellintegration.ps1を修正 PR #142217
- @michaelkuhn (Michael Kuhn): いくつかのSolarizedの色を修正 PR #142670
- @neeleshb (Neelesh Bodas): 「前の問題へ移動」のラベルが間違っていたのを修正 PR #143823
- @satokaz (Kazuyuki Sato): MarkdownパスIntelliSenseのヘッダー提案をデコード PR #142392
- @SNDST00M (M.U.N.I.N): ファイルアイコンテーマにオプションのディレクトリ構文を追加 PR #140079
- @stefanhaller (Stefan Haller): #142028を修正 PR #142930
- @surajteggi: タイプミスを修正 PR #142185
- @thebinarysearchtree (Andrew Jones): インデントを修正 PR #141997
- @weartist (Han): VSCodeターミナルでmultiLinePasteWarningを実装し、#122683を修正 PR #141822
- @y-tsutsu (y-tsutsu)
- コマンドパレットで翻訳された名前と元の名前の両方を表示するコマンド。 PR #142524
- アクションカテゴリを修正 PR #142911
- @Yash621 (Yash Goel): 設定同期に重複ログインがあるのを修正 PR #142340
- @zardoy (Vitaly): tsconfig.extendsの正しいリンクパスを解決 PR #141062
vscode-css-languageservice
への貢献者
vscode-languageserver-node
への貢献者
- @dsherret (David Sherret): feat: childProcess.spawnが失敗した際のより詳細なエラー PR #888
debug-adapter-protocol
への貢献者
- @apupier (Aurélien Pupier): Apache Camel用デバッグアダプターを追加 PR #245
- @eshelyaron (Eshel Yaron): SWI-Prolog DAP実装をadapters.mdに追加 PR #248
- @hyangah (Hyang-Ah Hana Kim): sdks.mdを更新 * go-dapを含める PR #241
- @lukaszsamson (Łukasz Samson): Elixir DAP実装へのリンクを追加 PR #243
- @Ricbet (John): OpenSumiをImplementations toolsに追加 PR #247
language-server-protocol
への貢献者
- @zwpaper (Wei Zhang): 一貫性のために言語IDを使用 PR #1409
monaco-editor
へのコントリビューション
- @Dan1ve (Daniel Veihelmann): ViteサンプルコードをFirefox互換にする PR #2991
- @philipturner (Philip Turner): Swiftに
@noDerivative
修飾子を追加 PR #2957