2020年2月 (バージョン 1.43)
アップデート 1.43.1: このアップデートでは、これらのissueに対処しています。
アップデート 1.43.2: このアップデートでは、これらのissueに対処しています。
ダウンロード: Windows: x64 | Mac: Intel | Linux: deb rpm tarball snap
Visual Studio Code 2020年2月リリースへようこそ。このバージョンには多くのアップデートが含まれており、きっと気に入っていただけると思います。主なハイライトをいくつかご紹介します。
- 検索エディター - グローバル検索の結果をフルサイズのエディターで検索および保存します。
- ドラッグ可能なサッシュコーナー - サッシュコーナーをドラッグしてエディターレイアウトを簡単に変更できます。
- Linuxスクリーンリーダーのサポート - VS CodeがOrcaスクリーンリーダーをサポートするようになりました。
- ミニマップのサイズオプション - ミニマップの垂直レイアウトをフィットまたはフィルする新しいオプション。
- 列選択モード - 列モードの切り替えにより、テキストのブロックをすばやく選択できます。
- 選択範囲の空白文字の表示 - 選択したテキストでのみ空白文字をレンダリングします。
- テンプレート文字列への変換 - 連結をJavaScript/TypeScriptテンプレート文字列に変換します。
- JS/TSコール階層ビュー - 関数へのすべての呼び出しまたは関数からのすべての呼び出しを確認し、呼び出し元の呼び出し元までドリルダウンします。
- リモート開発 - WindowsおよびmacOS SSHホスト、SSH接続共有のサポート。
- 設定同期プレビュー - 設定同期を使用すると、マシン間で設定とキーバインドを共有できます。
これらのリリースノートをオンラインで読みたい場合は、アップデート(code.visualstudio.com)にアクセスしてください。
Insiders: 最新機能をいち早く試してみたいですか?毎晩更新されるInsidersビルドをダウンロードして、最新のアップデートをすぐに試すことができます。また、Visual Studio Codeの最新ニュース、アップデート、コンテンツについては、Twitter @codeをフォローしてください!
ワークベンチ
検索エディター
Insidersで数回のイテレーションを安定させた後、ワークスペースの検索結果をフルサイズのエディターで表示できる検索エディターを出荷しています。構文の強調表示と、オプションの周囲のコンテキスト行が付属しています。これはしばらくの間、非常に要望の多かった機能でした。
以下は、コンテキストのマッチの前後に2行のテキストを含む単語「SearchEditor」の検索です。
テーマ: A Touch of Lilac、フォント: Hasklig
検索エディターでは、定義へ移動アクションを使用して結果をナビゲートできます。たとえば、F12を使用して現在のエディターグループでソースの場所を開いたり、⌘K F12 (Windows、Linux Ctrl+K F12)を使用してサイドエディターで場所を開いたりできます。さらに、ダブルクリックでオプションでソースの場所を開くことができ、search.searchEditor.doubleClickBehaviour
設定で構成できます。
新しい検索エディターを開くには、検索エディター: 新しい検索エディターを開くコマンドを使用するか、検索ビューの上部にある新しい検索エディターを開くボタンを使用します。または、検索ビューから既存の結果を検索エディターにコピーするには、結果ツリーの上部に追加されたエディターで開くリンク、または検索エディター: エディターで結果を開くコマンドを使用します。
注意: 実験的なSearch Editor: Apply Changes拡張機能を試して、検索エディターで行った編集をソースファイルに同期させることができます。
ドラッグ可能なサッシュコーナー
2つの直交するサッシュの交点を掴んでドラッグすることで、それらを同時にサイズ変更できることをご存知でしたか?これはすでにエディターサッシュで機能していましたが、エディターとビュー間のエッジでも機能するようになりました。
テーマ: GitHub Sharp、フォント: Fira Code
公証されたmacOSビルド
macOS版Visual Studio CodeはAppleによって公証されるようになったため、次のダイアログが表示されなくなります。
詳細については、調査issueとAppleの開発者向けドキュメントをお読みください。
進行状況通知
長時間実行される操作を示す通知は、このリリースからわずかに異なる動作をします。
- 操作がキャンセルされたかどうかについて誤った印象を与えるため、一般的な閉じるボタンはもう提供されません。 Escキーを押して通知を非表示にすることはできます。
- 通知は、操作がまだ進行中の間に通知が非表示になっている場合は常に、ステータスバーに操作の進行状況を示します。
後の変更は、通知を閉じても、(長時間実行される保存操作など)操作がバックグラウンドで実行され続けていることを知るのに役立ちます。
以下では、キャンセルボタンが選択されるまで操作は実行され続けます。
テーマ: Dracula Official、フォント: Fira Code
無題のエディター
新しい設定workbench.editor.untitled.labelFormat
を使用すると、無題のエディターがファイルの内容をタイトルとして使用するかどうかを制御できます。使用可能な値はcontent
またはname
です。以前の動作では、無題のエディターにはUntitled-1などの短いタイトルが付いていましたが、'workbench.editor.untitled.labelFormat': 'name'
を設定してください。
テキストを無題のエディターに貼り付けると、VS Codeはテキストの最初の行から言語モードを自動的に検出するようになりました。たとえば、最初の行に一般的なXMLヘッダー<?xml version="1.0" encoding="UTF-8"?>
が含まれている場合、XMLを貼り付けると、貼り付け時にXMLモードが自動的に設定されます。
アプリケーションリンクを介してワークスペースを開く
VS Codeは、プロトコルリンク(例: vscode://file/<file-path>
)を介したファイルを開くことをサポートしています。このマイルストーンでは、フォルダーまたはワークスペースを開くことを含むようにサポートを拡張しました。
フォルダーまたはワークスペースの構文は、ファイルの場合と同じです。
vscode://file/<path>
vscode-insiders://file/<path>
ウェルカムビュー
ウェルカムビューはワークベンチへの新しい追加機能であり、表示する意味のあるコンテンツがない場合に、ユーザーがコンテンツを作成したり、VS Codeを構成したりするための開始エクスペリエンスをビューが作成できるようにします。一部のビューはすでにこのインフラストラクチャを採用しています。たとえば、ファイルエクスプローラーは、フォルダーを開いたり、Gitリポジトリを複製したりして、開始できるようにします。
テーマ: GitHub Sharp
ソース管理ウェルカムビュー
新しいウェルカムビューインフラストラクチャのおかげで、ソース管理ビューは、それ以外の場合は空に見える特定の状況に対して、より良いエクスペリエンスを提供するようになりました。たとえば、インストールが検出されない場合、ユーザーにフォルダーを開いたり、リポジトリを複製したり、Gitをインストールしたりするように指示できます。
テーマ: GitHub Sharp
エディター
ミニマップのサイズ
ミニマップが垂直スペースをどのように使用するかを制御する新しい設定editor.minimap.size
があります。
proportional
(デフォルト)に設定すると、各行はeditor.minimap.scale
に応じて、ミニマップで一定量の垂直スペースを取得します。たとえば、高DPIモニターでは、スケールが1
(デフォルト)に構成されている場合、各行はミニマップで4pxを取得します。したがって、100行のファイルの場合、ミニマップでレンダリングされる行の高さは400px、1000行のファイルの場合、4000pxになります。つまり、大きなファイルの場合、現在のファイルがスクロールされると、ミニマップもスクロールされます。fit
に設定すると、ミニマップの高さはエディターの高さよりも大きくならないように制限されます。したがって、ファイルに多くの行がある場合、それらはサンプリングされ、ミニマップにサブセットのみがレンダリングされるため、ミニマップをスクロールする必要はありません。fill
に設定すると、ミニマップの高さは常にエディターの高さになります。大きなファイルの場合、これも行をサンプリングすることで実現されますが、小さなファイルの場合、これは各行により多くの垂直スペースを予約すること(行をストレッチすること)によって実現されます。
ここでは、サイズがproportional
からfit
に変更され、次に小さいファイルでfit
からfill
に変更されています。
ミニマップの背景色とスライダーの色
ミニマップとそのスライダーをカスタマイズするための新しい色が追加されました。新しい色の1つはminimap.background
で、色が透明になるように定義されている場合(#RRGGBBAAアルファチャネルを下げる)、ミニマップは透明にレンダリングされます。
{
"workbench.colorCustomizations": {
"minimap.background": "#00000055"
}
}
列選択モード
選択 > 列選択モードメニュー項目からアクセスできる新しいグローバルトグルがあります。このモードに入ると、ステータスバーに示されているように、マウスジェスチャと矢印キーは列選択を作成します。
ステータスバーから列選択モードを無効にすることもできます。
選択範囲の空白文字の描画
editor.renderWhitespace
設定のデフォルト値がnone
からselection
に変更されました。空白文字は、デフォルトで強調表示されたテキストにレンダリングされるようになりました。
ここでは、選択された領域にタブとスペースの空白文字が表示されています。
ピークの定義リンク
定義へ移動マウスジェスチャの動作をより詳細に制御できるようになりました。デフォルトでは、マウスによる定義へ移動は別のエディターを開きますが、新しい設定editor.definitionLinkOpensInPeek
をtrue
にすると、ジェスチャはピークビューで開きます。
折りたたまれた行のどこからでも展開
新しい設定エディター: 行末後のクリックで展開 (editor.unfoldOnClickAfterEndOfLine
) は、折りたたまれた行の右側の空白スペース(...
の後)をクリックしたときに何が起こるかを制御します。 true
に設定すると、折りたたまれた行のテキストの後ろの任意の場所をクリックでき、省略記号(...
)を正確に選択することを気にする必要はありません。デフォルトでは、このオプションはオフです。
複数ファイルにわたるテキスト編集を元に戻す
複数ファイルに影響を与える名前の変更またはコードアクションを元に戻す場合、VS Codeは、影響を受けたすべてのファイルで変更を元に戻すことを許可するようになりました。
クロスファイル編集を元に戻すときにプロンプトが表示されます。
注意: ファイル名の変更など、ファイル操作はまだサポートされていません。たとえば、Javaでクラス名を変更する場合(ファイル名も変更される場合)、クロスファイル元に戻すではまだサポートされていません。
異なる色を持つ複数のルーラー
既存のeditor.rulers
設定が拡張され、カスタムカラーを持つルーラーを定義できるようになりました。次のスクリーンショットでは、80列にマゼンタルーラー、90列に赤ルーラーがあります。
{
"editor.rulers": [
{ "column": 80, "color": "#ff00ff" },
{ "column": 90, "color": "#ff0000" }
]
}
エディターの上部と下部のパディング
editor.padding.top
とeditor.padding.bottom
を使用して、エディターの上部または下部に空白スペース(ピクセル数)を予約できるようになりました。
これは、上部パディングが50ピクセルのエディターです。
{
"editor.padding.top": 50
}
主な軸のスクロール
最新のタッチパッドを使用して垂直方向にスクロールしようとすると、ファイルも水平方向にスクロールすることがよくあります。 「対角線」スクロールをブロックする新しい設定editor.scrollPredominantAxis
(デフォルトでtrueに設定)が追加されました。これにより、スクロールジェスチャは垂直または水平(最大の絶対スクロールデルタに基づく)のいずれかになり、対角線になることはありません。
LinuxでのShift+Insert
1.42では、Shift+Insert
は選択クリップボードから貼り付けるように変更されました。これは既存の筋肉の記憶を壊しているという多くのフィードバックを受け取ったため、以前と同様にShift+Insert
を通常のクリップボードから貼り付けるようにロールバックすることにしました。
アクセシビリティ
Linuxスクリーンリーダーのサポート
コミュニティの助けを借りて、VS CodeをLinuxでOrcaスクリーンリーダーでアクセスできるように取り組んできました。 OrcaとChromiumは現在もスクリーンリーダーのサポートに積極的に取り組んでいるため、これを完全に機能させるためにはいくつかのことが必要です。
- マスターからOrcaの最新バージョンを使用していることを確認してください。手順はissue #91063にあります。
- VS Codeで設定
"editor.accessibilitySupport": "on"
になっていることを確認してください。設定を使用するか、アクセシビリティヘルプを表示コマンドを実行し、Ctrl+Eを押してスクリーンリーダー最適化モードをオンにすることで、これを行うことができます。
その設定を有効にすると、VS CodeはOrcaスクリーンリーダーで動作するはずです。
言語
TypeScript 3.8.3
VS CodeはTypeScript 3.8.3をバンドルするようになりました。このメジャーアップデートでは、ECMAScriptプライベートフィールド、トップレベルawait式、およびexport * as ns構文を含む新しい言語機能、および多くのツール機能と改善がサポートされています。このアップデートでは、多くの重要なバグも修正されています。
TypeScript 3.8の詳細については、TypeScriptブログをお読みください。
テンプレート文字列への変換リファクタリング
JavaScriptおよびTypeScriptの新しいテンプレート文字列への変換リファクタリングを使用すると、文字列連結をテンプレート文字列にすばやく変換できます。
JavaScriptおよびTypeScriptのコール階層のサポート
TypeScript 3.8は、JavaScriptおよびTypeScriptでコール階層のサポートをもたらします。
http(s) @link JSDocインラインタグのサポート
IntelliSenseは、httpおよびhttpsリンクのJS Doc @linkインラインタグをレンダリングするようになりました。以下の例の画像では、lightbulb menu
の@link
がどのようにホバーでレンダリングされているかに注目してください。
URLへの@link
は、JavaScriptとTypeScriptの両方で機能し、ホバー、候補の詳細、およびシグネチャヘルプでクリック可能なリンクとしてレンダリングされます。
TypeScriptセマンティックハイライト
セマンティックハイライトが、TypeScriptとJavaScriptでデフォルトでオンになりました。セマンティックハイライトは、TypeScript言語サーバーによって提供され、TextMate文法に基づく構文ハイライトの上に重ねられます。デフォルトの構文(TextMate)ハイライターは、多くのトークンをvariables
として分類しますが、これらは名前空間、クラス、パラメーターなどに解決されるようになりました。
セマンティックハイライトは、次の設定によって制御されます。
"editor.semanticHighlighting.enabled": true
JSONスキーマ
ファイル名をスキーマに関連付ける場合、除外パターンも使用できるようになりました。除外パターンは「!」で始まります。一致するには、少なくとも1つのパターンが一致する必要があり、最後の一致パターンは除外パターンであってはなりません。
"json.schemas": [
{
"fileMatch": [
"/receipts/*.json",
"!/receipts/*.excluded.json"
],
"url": "./receipts.schema.json"
}
]
デバッグ
UIで「実行」がより目立つように
ユーザー調査により、新しいユーザーがVS Codeでプログラムを実行する方法を見つけるのが難しいことが明らかになりました。理由の1つは、既存の「デバッグ」機能が、プログラムを「実行」することに関連付けられていないことです。そのため、「実行」をUIでより目立つようにしています。
- メインメニューのデバッグが実行メニューになりました。
- 実行とデバッグビューが実行ビューになり、対応するアクティビティバーアイコンに、小さな「バグ」装飾が付いた大きな「再生」アイコンが表示されるようになりました。
デバッグコンソールのグループ化
VS Codeデバッグコンソールは、出力グループ化をサポートするようになりました。デバッグ拡張機能は、デバッグコンソール出力を共通の親の下にグループ化する必要がある場合に示すことができます。今のところ、Mock Debug拡張機能のみが出力グループ化を実装していますが、すぐに他のデバッグ拡張機能が続くでしょう。最も注目すべきはJavaScriptデバッガーです。
デバッグコンソール履歴候補を無効にする
新しいdebug.console.historySuggestions
設定を使用して、デバッグコンソールの履歴候補をオフにできるようになりました。デフォルトでは、履歴候補はオンになっています。
統合ターミナル
Unicode 11のサポート
ターミナル内の文字の幅は、デフォルトでUnicode 11の幅になりました。これはほとんどの人にとって、絵文字がワイド文字として正しく表示されるようになることを意味します。
プロンプトサポートをナビゲートするためのAlt+クリックの改善
ターミナルには、セルをAlt+クリック
するとカーソルがそのセルに移動する機能があります。これまで、シェルのプロンプトでは、これが機能するのは1行のみで、折り返されていても機能しませんでした。これは、完全に折り返された行で機能するように改善されました。
テーマ: Sapphire
これはWindowsではまだ正しく機能しない可能性がありますが、ConPTYへの最近の変更により、将来的にはこれが改善されるはずです。
タスク
タスククイックピックの更新
タスクの実行コマンドが実行されたときに表示されるタスククイックピックが更新され、どのタスクプロバイダーがまだ実行されているかが表示されるようになりました。そのプロバイダーからのタスクが必要ない場合は、検出を停止ボタンをクリックすると、これまでに検出されたタスクがすぐに表示されるため、遅いタスクプロバイダーを待つ必要はありません。
テーマ: One Dark Pro、フォント: Fira Code
タスクインスタンスの制限
タスク"runOptions"
に、許可されるタスクのインスタンス数を指定する"instanceLimit"
が含まれるようになりました。デフォルトの"instanceLimit"
は1です。
promptStringパスワード入力
"promptString"
ユーザー入力タイプは"password": true
を持つことができ、これにより、ドロップダウン入力ボックスに入力された内容がパスワードのように隠されます。
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用するのに十分な機能があります。開発中の早期フィードバックをお待ちしております。
設定同期
過去数か月間、マシン間でVS Codeの設定、拡張機能、キーボードショートカットを同期することをサポートするために取り組んできました(人気のある機能リクエスト#2743)。このマイルストーンでは、この機能が次の1.44.0 Insiderリリースからのプレビューの準備ができたことを発表できてうれしく思います。これで、すべてのマシンのすべてのVS Codeインストールで設定を同期させることができます。また、最小限の労力で、新しいマシンで個人設定を使用してVS Codeをブートストラップすることもできます。
次のビデオは、新しいマシンに拡張機能と設定をローカルに適用する方法を示しています。
現在、設定、キーボードショートカット、拡張機能、表示言語が同期されていますが、さらに追加する予定です。提案された設定同期機能のリストを確認できます。
(machine
またはmachine-overridable
スコープを持つ)マシン設定は、デフォルトでは同期されません。設定エディターまたはsync.ignoredSettings
設定を使用して、このリストで設定を追加または削除することもできます。
テーマ: GitHub Sharp
キーボードショートカットは、プラットフォームごとにデフォルトで同期されます。キーボードショートカットがプラットフォームに依存しない場合は、設定sync.keybindingsPerPlatform
を無効にすることで、プラットフォーム間で同期できます。
すべての組み込みおよびインストールされた拡張機能は、グローバルな有効化状態とともに同期されます。拡張機能ビューまたはsync.ignoredExtensions
設定を使用して、拡張機能の同期をスキップできます。
テーマ: GitHub Sharp
設定同期は、同期中に設定とキーバインドの競合を検出することをサポートしています。競合は、左側に受信(リモート)変更、右側にローカル変更がある差分エディターを使用して表示されます。右側のエディターで編集し、エディターで提供されるアクションを使用して変更をマージすることで、競合を解決できます。
ここでは、リモートのcolorTheme
設定値がリモートを承認アクションで選択されています。
テーマ: GitHub Sharp、GitHub Sharp Dark
設定同期アクティビティは、ログ (同期) 出力ビューで監視できます。すべてのローカル設定は、同期中に変更されるたびに、過去30日間ディスクにバックアップされます。 同期: ローカルバックアップフォルダーを開くコマンドを使用して、バックアップの場所に移動し、古い設定を取得できます。
テーマ: GitHub Sharp
いつでも、現在のVS CodeインスタンスまたはすべてのVS Codeインストールで同期をオフにすることができます。すべての同期を無効にすることを選択すると、データはクラウドから削除されます。
注意: 設定同期はMicrosoftアカウントを使用して、同期のためにVS Code設定を保存するため、この機能を使用するにはアカウントが必要です。詳細については、設定同期ドキュメントを参照してください。
タイムラインビュー
このイテレーションでは、新しいタイムラインビューの開発を継続しています。現在、Insidersエディションでデフォルトで有効になっており、次の設定を介してStableで有効にできます。
"timeline.showView": true
以下は、タイムラインビューがファイルのGitコミット履歴を表示している様子です。
テーマ: Dark Amethyst
ページングサポート(上に示されているさらに読み込むアクションを介して)を追加し、右側に相対タイムスタンプを追加しました。拡張機能は、タイムラインビューだけでなく、個々のタイムラインアイテムにもメニュー項目を提供できます。上記のスクリーンショットでは、組み込みのGit拡張機能がコミットIDをコピーおよびコミットメッセージをコピーコマンドを提供しています。
新しいJavaScriptデバッガー
今月は、新しいJavaScriptデバッガーの開発を継続しています。 Insidersにはデフォルトでインストールされており、VS Code StableのMarketplaceからインストールできます。 debug.javascript.usePreview
設定を有効にすることで、既存の起動構成で使用を開始できます。今月追加した新機能のいくつかを次に示します。
プリティプリント
テーマ: Earthsong、フォント: Fira Code
デバッガーは、特にminifyされたソースを扱う場合に便利な、ファイルをプリティプリントできるようになりました。 minifyされたように見えるファイルにステップインまたはオープンするとプロンプトが表示され、デバッグ: デバッグ用にプリティプリントコマンドを使用して手動でプリティプリントをトリガーすることもできます。
しないを選択するか、設定debug.javascript.suggestPrettyPrinting
をfalse
に変更することで、提案プロンプトをオフにすることができます。
Microsoft EdgeとWebView2のサポート
新しいMicrosoft Edgeブラウザーの起動をサポートするようになりました。試してみるには、デバッグタイプをchrome
またはpwa-chrome
からpwa-msedge
に変更するだけです。 chrome
と同じ構成設定をすべてサポートしています。
これに伴い、デスクトップWindowsアプリケーションのWebView2コントロールのサポートが追加されました。設定方法については、webviewデモをご覧ください。
リモートデバッグ
新しいデバッガーで、GitHub CodespacesやRemote SSHなどのリモートワークスペースからブラウザーソースコードをデバッグできるようになりました。これを設定するには、Webサーバーをポートフォワードするか(または単純な静的Webサーバーを使用)、次にフォワードされたポートを指すchrome
またはpwa-msedge
起動構成を作成します。
例:
{
"version": "0.2.0",
"configurations": [
{
"type": "pwa-msedge",
"request": "launch",
"name": "Debug my App",
"url": "http://localhost:5000" // <- debug an app forwarded on port 5000
}
]
}
デバッグセッションを起動すると、ブラウザーがマシンで開き、通常どおりVS Codeからデバッグできます。
より多くのビューが移動可能に
前回のリリースでは、VS Codeはビューをパネルに再配置することを少しだけ紹介しました。このリリースでは、このエクスペリエンスがさらに多くのビューに拡張されました。デバッグ/実行ビューや新しいタイムラインビューなどのビューを移動できるようになりました。また、サイドバーの他のビューにビューを移動することもできます。たとえば、エディターを開くビューをソース管理ビューに移動したい場合があります。これらすべては、ビューをドラッグしてアクティビティバーまたはパネルの目的の場所にドロップすることで実行できます。
次のアニメーションは、エディターを開くビューを別のビューに移動し、次にパネルに移動することを強調表示しています。
テーマ: Horizon Bright、フォント: Cascadia Code
キーボードでビューの移動を簡単にするための新しいコマンドも導入しました: ビュー: フォーカスされたビューを移動 (workbench.action.moveFocusedView
)。
これはプレビュー機能であるため、修正できない状態になった場合は、すべてのビューを元の場所に戻すコマンドがあります: ビュー: ビューの場所をリセット (workbench.action.resetViewLocations
)。
拡張機能への貢献
リモート開発
リモート開発拡張機能の開発が継続されています。これにより、コンテナー、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。
1.43の機能ハイライトは次のとおりです。
- アプリケーションリンクを介してリモートワークスペースを開きます。
- Remote - SSH: WindowsおよびmacOS SSHホストのサポート。
- Remote - SSH: デフォルトで接続共有がオン。
- WSL: 最近のWSL 2でのDockerの使用ブログ投稿をご覧ください。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートをご覧ください。
Vetur
Vue.jsのVetur拡張機能に、テンプレート補間の自動補完機能が改善されました。変更履歴は、0.24.0リリースにあります。
拡張機能の作成
デバッガー拡張機能API
デバッグウェルカムビュー
ウェルカムビューコンテンツAPIセクションで説明したように、debug
ビューがウェルカムビューコンテンツのコントリビューションに対して開かれるようになりました。これらの追加機能は、プログラムの実行またはデバッグを簡素化する特定の機能を初心者に案内するために使用できます。
ビューが多すぎるウェルカムビューコンテンツのコントリビューションによって乱雑にならないようにするために、個々のコントリビューションは、現在アクティブな言語でのみ有効にすることをお勧めします。これを容易にするために、デバッガーが使用された最後のアクティブなエディター言語に設定される新しいコンテキストキーdebugStartLanguage
を導入しました。
たとえば、デバッガーがPythonをターゲットにしている場合は、debugStartLanguage == "python"
の場合にのみウェルカムビューコンテンツを提供します。デバッガーが複数の言語をターゲットにしている場合は、OR演算子(||
)を使用して複数の条件を組み合わせることができます。
新しいデバッグホバーAPI
今日、VS Codeのデバッグホバーは、マウスの下にある式を見つけるために正規表現ベースのヒューリスティックを使用します。VS Codeデバッガーはそれを評価し、結果をホバーに表示します。正規表現は構成可能ではないため、すべての言語が正しく処理されるわけではありません(または、可能な範囲まで処理されません)。 Issues #84044、#89603、および#89332は、典型的な問題を説明しています。
このマイルストーンでは、デバッグホバーの動作を制御するための新しい拡張機能APIを導入しました。
EvaluatableExpressionProvider
は、言語に対して登録して、VS Codeデバッガーがアクティブなデバッグセッションに対して評価するマウスの下の式を提供できます。
以下は、Mock debugサンプルからの簡単な例で、getWordRangeAtPosition
APIに基づく(単純な)実装を示しています。
vscode.languages.registerEvaluatableExpressionProvider('markdown', {
provideEvaluatableExpression(
document: vscode.TextDocument,
position: vscode.Position
): vscode.ProviderResult<vscode.EvaluatableExpression> {
const wordRange = document.getWordRangeAtPosition(position);
if (wordRange) {
return new vscode.EvaluatableExpression(wordRange);
}
return undefined; // nothing evaluatable found under mouse
}
});
空白文字のエスケープを廃止
VS CodeデバッガーUIは、デバッグ拡張機能またはデバッグアダプターから受信した空白文字をエスケープまたは引用符で囲むことを行わなくなりました。たとえば、DAP変数またはDAP出力イベントで受信したすべての文字列は、変更なしでUIに表示されます。
これは、VS Codeにデータを送信する前に空白文字をエスケープする必要があるかどうかを決定するのは、デバッグ拡張機能またはデバッグアダプター次第であることを意味します。詳細については、issue #73845をご覧ください。
CodeAction.disabled
CodeAction.disabled
プロパティを使用すると、拡張機能は、特定のCodeAction
がユーザーの現在の選択に対して不可能な理由をVS Codeに伝えることができます。これは、リファクタリングに特に役立ちます。
これは、Code Actionサンプル拡張機能で.disabled
を使用する例です。
import * as vscode from 'vscode';
export class Emojizer implements vscode.CodeActionProvider {
public provideCodeActions(
document: vscode.TextDocument,
range: vscode.Range
): vscode.CodeAction[] | undefined {
const action = new vscode.CodeAction(
`Convert to ${emoji}`,
vscode.CodeActionKind.Refactor.append('emojize')
);
if (!this.isAtStartOfSmiley(document, range)) {
// Tell the user why our action is not available
action.disabled = { reason: 'Selection is not currently on a :)' };
return [action];
}
action.edit = new vscode.WorkspaceEdit();
action.edit.replace(
document.uri,
new vscode.Range(range.start, range.start.translate(0, 2)),
'😀'
);
return action;
}
}
ユーザーがキーバインドを介して無効になっているCode Actionを適用しようとすると、VS Codeは.disabled
エラーメッセージをユーザーに表示します。
さらに、検出可能性を高めるために、無効になっているCode Actionは、リファクタリングおよびソースアクションコンテキストメニューでフェードアウト表示されます。
無効になっているアクションは、トップレベルの電球メニューには表示されないことに注意してください。
Terminal.exitStatus
拡張機能は、ターミナルが終了したかどうか、および終了した場合、どの終了コードが使用されたか(もしあれば)を判断できるようになりました。
window.onDidCloseTerminal(t => {
if (t.exitStatus && t.exitStatus.code) {
vscode.window.showInformationMessage(`Exit code: ${t.exitStatus.code}`);
}
});
診断エラーへのリンクの追加
提案された診断リンクAPIをStableに昇格させました。
class Diagnostic {
...
/**
* A code or identifier for this diagnostic.
* Should be used for later processing, e.g. when providing [code actions](#_CodeActionContext).
*/
code?: string | number | {
/**
* A code or identifier for this diagnostic.
* Should be used for later processing, e.g. when providing [code actions](#_CodeActionContext).
*/
value: string | number;
/**
* A target URI to open with more information about the diagnostic error.
*/
target: Uri;
};
}
ワークスペース編集メタデータ
WorkspaceEditEntryMetadata
APIを確定しました。これにより、拡張機能の作成者は、ワークスペース編集の変更を分類できます。特に、変更を適用する前にレビューが必要かどうかを分類できます。
デバッグアダプタープロトコル
出力イベントでのグループ化のサポート
関連するメッセージをグループ化して出力ログを整理するために、オプションのgroup
属性がoutput
イベントに追加されました。 group
の可能な値は、グループを展開または折りたたんで開くstart
とstartCollapsed
、およびグループを閉じるend
です。
注: このリリースから、VS Code はこの DAP の機能強化をサポートします。
補完項目によるカーソル配置の許可
オプションのselectionStart
属性とselectionLength
属性が補完項目に追加されました。これらの属性を使用すると、補完テキストが挿入された後、クライアントの現在の選択範囲(またはキャレット位置)を制御できます。
注: VS Code はまだこの DAP の機能強化をサポートしていません。次期リリースで計画されています。
提案: Progress events
Debug Adapter Protocol にprogress eventsを追加する提案に関して、いくつかの進展がありました。ご興味のある方は、このDAP 機能リクエストに関する議論にご参加ください。
言語サーバープロトコル
Language Server Protocol のバージョン 3.16 の作業が開始されました。
新しいバージョンには、以下の提案されたサポートが含まれています
- 補完項目の挿入/置換編集。
- 診断に関する構造コード(例:リンクのサポート)。
- シンボル情報とドキュメントシンボルのタグサポート。
提案された拡張機能API
すべてのマイルストーンには、新しい提案されたAPIが付属しており、拡張機能の作成者はそれらを試すことができます。 いつもどおり、フィードバックをお待ちしております。提案されたAPIを試すために行う必要があることは次のとおりです
- 提案されたAPIは頻繁に変更されるため、Insiders を使用する必要があります。
- 拡張機能の
package.json
ファイルに次の行が必要です:"enableProposedApi": true
。 - vscode.proposed.d.tsファイルの最新バージョンをプロジェクトのソースの場所にコピーします。
提案されたAPIを使用する拡張機能は公開できないことに注意してください。 次のリリースで破壊的な変更がある可能性があり、既存の拡張機能を破壊することは決して望ましくありません。
カスタムエディターAPI
今回のイテレーションでも、カスタムエディターAPIの提案の作業を継続しました。 注目すべき変更点は次のとおりです
- APIメソッドの名前をより短く、より一貫性のあるものに変更しました。
CustomTextEditorProvider
を導入することにより、テキストファイル用のカスタムエディターの作成を簡素化しました。 このカスタムエディターは、データモデルとしてVS Codeの通常のTextDocument
を使用するため、save
、backup
、およびその他の操作を自分で実装する必要はありません。 これにより、リソースのカスタムエディターと、同じリソースのテキストエディターとの間でライブ同期を簡単に行うこともできます。- バイナリ
CustomEditor
が動作するモデルを格納するためのCustomDocument
を導入しました。 リソースごとに1つのCustomDocument
がありますが、ユーザーはそのリソースで複数のカスタムエディターを開くことができます。
カスタムエディターAPIの提案について、引き続きテストを実施し、フィードバックをお寄せください。 APIの詳細はまだ変更される可能性がありますが、現在の提案は、私たちが間もなく最終決定したいと考えているものを反映していると考えています。
CodeActionProviderMetadata.documentation
Code Action のドキュメントを拡張機能がどのように提供するかを標準化することに関する以前の提案を改訂しました。 更新された提案では、ドキュメントはCodeActionProviderMetadata
タイプのdocumentation
プロパティを使用して提供されるようになりました。
たとえば、組み込みの JavaScript および TypeScript 拡張機能がドキュメントを提供する方法を次に示します
class TypeScriptRefactorProvider implements vscode.CodeActionProvider {
public static readonly metadata: vscode.CodeActionProviderMetadata = {
providedCodeActionKinds: [ vscode.CodeActionKind.Refactor ],
documentation: [
{
kind: vscode.CodeActionKind.Refactor,
// This command opens a webpage when executed
command: {
command: LearnMoreAboutRefactoringsCommand.id,
title: localize('refactor.documentation.title', "Learn more about JS/TS refactorings")
}
}
]
};
...
}
ドキュメントは、ユーザーがリファクタリングを要求するたびに、メインの Code Action リストの後にレンダリングされます
Issue #86788 は、提案のステータスを追跡します。
Welcome View Content API
特定のビューで、拡張機能から提供されたウェルカムコンテンツがサポートされるようになりました。 詳細については、元の issue を参照してください。
この API を採用したビューは次のとおりです
explorer
- エクスプローラーscm
- ソース管理debug
- 実行/デバッグ
例として、explorer
ウェルカムビューでリポジトリをクローンする Git 拡張機能からのウェルカムビューコンテンツの提供を次に示します
テーマ: GitHub Sharp
OpenDialogOptions および SaveDialogOptions title
OpenDialogOptions
と SaveDialogOptions
の両方に、提案された title
プロパティがあります。 title
が表示されるかどうかはプラットフォームに依存しますが、プラットフォームが title
を表示する場合、[保存] または [開く] ダイアログの上に表示されます。 たとえば、組み込みコマンドの ワークスペース: ワークスペースを別名で保存... は、タイトルを ワークスペースを保存 に設定します。
エンジニアリング
Electron 7.0 アップデート
このマイルストーンでは、VS Code に Electron 7 をバンドルする調査を完了しました。 これは主要な Electron リリースであり、Chromium 78.0.3904.130 および Node.js 12.8.1 が付属しています。
HDR ディスプレイの場合
高ダイナミックレンジ(HDR)ディスプレイを使用しているWindowsユーザーからの問題をissue #88491で追跡しています。VS Code がくすんで使い物にならないように見えるという問題です。 これは、78.0.3904.130 のすべての Chromium ベースのアプリケーションの問題であり、この問題は Chromium 81 のより新しいバージョンで修正されています。VS Code は Electron 9 にアップグレードするとこの修正プログラムを取得しますが、Chromium 78 に修正プログラムをバックポートできなかった技術的な理由があります。
それまでの間、この問題に対する一時的な回避策があります
- コマンドパレットを開きます(⇧⌘P (Windows、Linux Ctrl+Shift+P))。
- [Preferences: Configure Runtime Arguments] コマンドを実行します。
- このコマンドを実行すると、ランタイム引数を構成するための
argv.json
ファイルが開きます。 デフォルトの引数がすでにいくつか存在する可能性があります。 "disable-color-correct-rendering": true
を"disable-color-correct-rendering": false
に編集します。- VS Code を再起動します。
注: 問題が発生している場合を除き、この設定は編集しないでください。
macOS で Chromium のデフォルトのカラー補正を sRGB にオーバーライドし、代わりにディスプレイの色空間を使用できるように、このデフォルトのランタイム引数を追加しました。 これにより、issue #84154 のような問題を回避できますが、HDR ディスプレイでは機能しません。
"strict": true
VS Code を最初にリリースしたとき、TypeScript はまだ新しい急速に進化している言語であり、おそらく今日では当然のことと思われている、厳密な null チェックなど、役立つ型安全チェックがいくつか欠落していました。 過去数年間で、TypeScript チームは、TypeScript コンパイラーをより「厳密」にする多くのオプションを導入しました。 これらの厳密なオプションは、多くの一般的なプログラミングミスをキャッチし、エラーのクラス全体を排除できます。 厳密モードの利点は十分に文書化されており、VS Code コードベースで厳密モードを有効にすることを長年望んでいました。 ただし、VS Code のコアコードベースを構成する約 50 万行のソースコードで数千のエラーを修正する必要があることを考えると、そうすることはほとんど不可能に思えました。
それでも、厳密モードの価値は非常に大きいため、時間がかかってもそれに向けて取り組む価値があると判断しました。 そこで、過去 2 年間以上にわたり、コードベースを厳密モードに準拠するように段階的に更新してきました。 この作業はすべて、段階的に、開発ブランチで直接行ったため、厳密モードに関連するすべての修正により、コードベースがすべての人にとって少し安全になりました。 厳密な null チェックを有効にすることは、おそらくプロセスの中で最も複雑な部分であり、その達成方法をブログ投稿で文書化しました。
今回のイテレーションでは、最後に残った厳密モードオプションである strictFunctionTypes
をついに有効にしました。 これが完了すると、かなりあっけないコミットで、コードベース全体の厳密モードが有効になりました。
厳密モードを有効にすることは、VS Code コアチームの全員と多くのコミュニティメンバーが貢献した長い道のりでした。 ただし、この作業を段階的に行うことで、初日からこのハードワークの恩恵を受けることができました。 今後、厳密モードはコーディングのベストプラクティスを促進し、リファクタリングをより安全にし、最終的にはより速く、より少ないバグで出荷できるようになるはずです。
CI ビルドパフォーマンスの向上
VS Code は継続的インテグレーションビルドにAzure Pipelinesを使用しており、最近ビルドパフォーマンスを大幅に向上させました。 詳細については、Improving CI Build Timesブログ投稿をご覧ください。
ブラウザに対するテストの実行
このマイルストーンでは、すべてのテスト(ユニット、統合、スモーク)を、Chrome、Firefox、Safari などのブラウザでのカバレッジを向上させるPlaywrightライブラリを活用して、ブラウザで実行できるようにしました。 これらのテストを実行する方法については、VS Code Tests READMEを参照してください。
注目すべき修正
- 61491: SCM: ビューレットは「リポジトリなし」メッセージを改善する必要があります
- 74782: 調査: macOS の公証
- 82828: autoReveal は、エクスプローラーで常に中央に移動することなく、ファイル名がどこにあるかを強調表示します
- 8641: macOS: マウスボタン 4 と 5 で履歴をナビゲートできるようにします
- 87767: VSCode デバッグの再起動が機能しなくなりました
- 88038: 自動的に実行されるデバッガーコマンドでシェル履歴を汚染しないでください
- 89230: エディターにフォーカスがある場合、「グループ」が読み上げられます
- 89699: 戻る/進む: 選択範囲を保持します
- 89989: Web: ファイルを新しいウィンドウで開くことを許可します
- 90075: エクスプローラー: ダングリングシンボリックリンクをサポートします
- 90240: Zen モードをオフにした後、行番号が非表示になります
- 90876: リスト項目にはロール 'listitem' が必要です
- 91166: [問題] パネルが開いている場合、アラートが冗長すぎます。
- 91238: 統合ターミナルでコードが機能しません
ありがとうございました
最後になりましたが、VS Code をさらに良くするためにご協力いただいた次の皆様に、心から感謝申し上げます!
issue 追跡への貢献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Alexander (@usernamehw)
- ArturoDent (@ArturoDent)
- Gama11 (@Gama11)
vscode
への貢献
- @alpalla: #32264 の修正 - 同じタスクの N インスタンスを許可する PR #89872
- Baibhav Vatsa (@BaibhaVatsa): tsconfig.base.json から冗長なフラグを削除する PR #91050
- Bailey Herbert (@baileyherbert)
- @bepvte: 「Contributions」を「Feature Contributions」に名前変更する PR #89842
- @bolinfest
- Brett Cannon (@brettcannon): コマンドドキュメントの複数形の修正 PR #89959
- Dor Mesica (@dormesica): ターミナルでアクティブなファイルを実行するときに引用符で囲まれていない問題を修正する PR #90847
- Evan Krause (@evangrayk): エディター以外の Webview で壊れていた元に戻す/やり直すを修正する PR #89961
- Ian MacFarlane (@eyeino): 新しい git ブランチを作成するときの言語を明確にする PR #90160
- John Murray (@gjsjohnmurray)
- lipgloss (@gloss-water): テーマ: ミニマップの不透明度のワークベンチ構成オプションを追加する PR #58324
- Michael Gubik (@gubikmic): 主要な軸のみをスクロールする(スクロールドリフトを防ぐ) PR #70047
- Gustavo Cassel (@GustavoASC)
- @Helloimbob: csh スクリプトを shellscript として自動検出する PR #90960
- Jean Pierre (@jeanp413)
- Jonas Littorin (@jlittorin): タイプ「promptString」の入力変数に password 属性を追加しました。 PR #90482
- John Blackbourn (@johnbillion): .envrc ファイルを Shell スクリプトとして扱う PR #90825
- Josh Goldberg (@JoshuaKGoldberg): ドキュメントのタイプミス: insertSpaces に ` が欠落している PR #90374
- @LadyCailin: 強調表示された行がスコープの開始/終了である場合、インデントを 1 つ右に移動する PR #77762
- Maik Riechert (@letmaik): ドキュメント: package.json フィールド名 "extensionDependency" を修正する PR #90103
- Gordey (@lgordey): 設定 UI: 同期設定の区切り文字を追加する PR #91461
- Alex SK (@lxsk): #21849 の修正: ミニマップ: ドキュメント全体を表示する PR #74425
- Dan (@mallardduck): 異なる色の複数のルーラーのサポートを追加する PR #88453
- Rasmus (@neonsea): デバッガーコマンドでシェル履歴を汚染しないようにする PR #88041
- @nrayburn-tech
- Przemek Adamczewski (@padamczewski): 修正: マルチカーソルコピー行を n 回 (#_40646) PR #52645
- Peter Shinners (@PeterShinners):
task.autoDetect
説明の文法修正 PR #90117 - PM Extra (@PMExtra): JsonValidation の小さなバグを修正する PR #91237
- Ron Buckton (@rbuckton): TS 呼び出し階層でのファイルの表示を改善するために、オフバイワンのタイプミスを修正する PR #89822
- Robert Rossmann (@robertrossmann): スタイル diff エディターのスクロール可能なビューポートを他のスクロールバーと同様にスタイル設定する PR #89660
- Oğuzhan Eroğlu (@rohanrhu): End キーの状態の動作を記憶する機能を追加しました PR #88664
- Michael Scovetta (@scovetta): #90555 の修正 (resetLocal() は何も実行しません) PR #90556
- Sergio Schvezov (@sergiusens): Snap の修正 PR #91182
- Matthew Spencer (@sirmspencer): サイドバーを閉じる新しいアクションを追加する PR #90404
- Konstantin Solomatov (@solomatov): 拡張機能の疑似ターミナルでのリンク処理を修正する PR #88458
- 태재영 (@TroyTae): フロントマターの終わりをトリプルドットでサポートする PR #90122
- Victor Gomes (@vhpgomes): smartSelect の修正 PR #90736
- Waldemar Kornewald (@wkornewald): 上部(署名ではなく中央の本文)に近い位置に表示する PR #80727
- @zhengjiaqi: エディターアクションの実行サポートパラメーター PR #87677
- Jiayue. Zhang (@zjysdhr): #88294 commit インターフェースに commitData を追加する PR #89005
vscode-eslint
への貢献
- Yosuke Ota (@ota-meshi): 新しい eslint suggestions API をサポートするために追加する PR #814
- Krasimir Nedelchev (@kaykayehnn): タイプミスを修正する PR #900
language-server-protocol
への貢献
- Lars Hvam (@larshp) 仕様 3.15、タイプミスを修正する PR #912
- Maxim Reznik (@reznikmm):
- specification-3-15.md マークダウン形式を修正する PR #913
- 3.15 で余分な foldingRangeProvider 定義を削除する PR #914
- 3.15 で余分な ExecuteCommandOptions 定義を削除する PR #915
- 3.15 マークダウンで ts を typescript に置き換える PR #916
- 重複した TextDocumentRegistrationOptions を削除する PR #917
- 3.15 に選択範囲関連の機能を追加する PR #918
- 3.15 に workspaceFolders/configuration/window を追加する PR #930
- Christian Tietze (@DivineDominion) タイプミスを修正する PR #921
- Kun Ren (@renkun-ken) タイプミスを修正する PR #922
vscode-js-debug
への貢献
- SantoJambit (@SantoJambit): codelens のルートレベルの scripts プロパティのみを取得する PR #351
vscode-languageserver-node
への貢献
- @Razzeee タイプミスを修正する PR #574
- Remy Suen (@rcjsuen): セマンティックトークンファイルの名前のタイプミスを修正する PR #583
vscode-css-languageservice
への貢献
- Jorge del Casar (@jorgecasar): SCSS での @apply ルールの解析のサポートを追加する PR #194
- Denis Malinochkin (@mrmlnc): SCSS/Less ミックスインの提案参加者を使用する機能 PR #201
- Will Bender (@Ragnoroct): ルールセット後の scss オートコンプリートを修正する PR #188
vscode-vsce
への貢献
- Robert Holt (@rjmholt): パッケージステップで issue リンクの展開を停止するために --noGitHubIssueLinking を追加する PR #424
localization
への貢献
マイクロソフト ローカリゼーション コミュニティ プラットフォーム (MLCP) を使用している 800 人を超える Cloud + AI ローカリゼーション コミュニティ メンバーがおり、Visual Studio Code には約 170 人のアクティブなコントリビューターがいます。 新しい翻訳の提供、翻訳への投票、またはプロセス改善の提案など、皆様のご貢献に感謝いたします。
コントリビューターのスナップショットを次に示します。 コントリビューター名リストを含むプロジェクトの詳細については、プロジェクトサイト(https://aka.ms/vscodeloc)をご覧ください。
- 中国語 (簡体字、中国) Yizhi Gu, Tingting Yi, Charles Dong, Justin Liu, 斌 项, ick, paul cheung, CHEN Shihuan, 普鲁文, 张锐, Zhiqiang Li, Joel Yang.
- 中国語 (繁体字、台湾) Yi-Jyun Pan, 高民 林.
- デンマーク語 (デンマーク) Lasse Stilvang.
- オランダ語 (オランダ) Koen Williame.
- 英語 (イギリス) Martin Littlecott, Henry Dearn, carlos baltazar.
- フィンランド語 (フィンランド) Feetu Nyrhinen.
- フランス語 (フランス) Thierry DEMAN-BARCELÒ, Antoine Griffard, Rodolphe NOEL, Younes ZOBAIRI.
- ドイツ語 (ドイツ) Philip Kneifeld, Raphael Höser, nick rauch.
- ヒンディー語 (インド) KRISHNA TANDON, Alish Vagadiya.
- ハンガリー語 (ハンガリー) Levente Borbély.
- インドネシア語 (インドネシア) Eriawan Kusumawardhono, Riwut Libinuko.
- イタリア語 (イタリア) Luigi Bruno.
- 日本語 (日本) TENMYO Masakazu, Koichi Makino.
- 韓国語 (韓国) 강 성원, Hongju, 관우 정.
- ラトビア語 (ラトビア) Andris Vilde, Atis Straujums.
- ポーランド語 (ポーランド) Makabeus Orban, Mariusz Wachowski.
- ポルトガル語 (ブラジル) Marcondes Alexandre, Arthur Lima, Marcelo Fernandes, Roberto Fonseca, Yuri Dantas, Luiz Gustavo Nunes, Thiago Takehana.
- ポルトガル語 (ポルトガル) Diogo Barros.
- ルーマニア語 (ルーマニア) LaServici.
- ロシア語 (ロシア) Andrey Veselov, Vadim Svitkin, Дмитрий Кирьянов.
- スペイン語 (スペイン、国際ソート) Ricardo Estrada Rdez, Alvaro Enrique Ruano.
- タミル語 (インド) Vijay Rajasekar, Selvakumarasamy G, Pandidurai R.
- トルコ語 (トルコ) Mehmet Yönügül.
- ベトナム語 (ベトナム) Hiếu Nguyễn, Van-Tien Hoang, Vương.