2020年2月 (バージョン 1.43)
更新 1.43.1: この更新では、これらの問題が解決されています。
更新 1.43.2: この更新では、これらの問題が解決されています。
ダウンロード: 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で何度か安定化の反復作業を行った後、ワークスペース検索結果を構文ハイライトとオプションの周辺コンテキスト行を備えた全画面エディターで表示できる検索エディターをリリースします。これは、長らく要望の多かった機能です。
以下は、「SearchEditor」という単語の検索結果で、コンテキストとして一致の前後に2行のテキストが表示されています。
テーマ: A Touch of Lilac, フォント: Hasklig
検索エディターでは、定義へ移動アクションを使用して結果に移動できます。たとえば、現在のエディターグループでソースの場所を開くにはF12、サイドのエディターで場所を開くには⌘K F12 (Windows、Linux Ctrl+K F12)を使用します。さらに、ダブルクリックでソースの場所を開くこともできます。これは、search.searchEditor.doubleClickBehaviour
設定で設定可能です。
新しい検索エディターは、検索エディター: 新しい検索エディターを開くコマンド、または検索ビュー上部の新しい検索エディターを開くボタンを使用して開くことができます。また、検索ビューの既存の結果を検索結果ツリーの上部に追加されたエディターで開くリンク、または検索エディター: エディターで結果を開くコマンドを使用して、検索エディターにコピーすることもできます。
注: 検索エディターで行った編集をソースファイルに同期するには、試験的な検索エディター: 変更を適用拡張機能を試すことができます。
ドラッグ可能なサッシの角
2つの直交するサッシの交差点を掴んでドラッグすることで、同時にサイズ変更できることをご存知でしたか?これはエディターのサッシですでに機能していましたが、エディターとビューの間の境界線でも機能するようになりました。
テーマ: GitHub Sharp、フォント: Fira Code
公証されたmacOSビルド
macOS版Visual Studio CodeはAppleによって公証されたため、以下のダイアログが表示されなくなります。
詳細については、調査の問題と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のインストールが検出されない場合に、ユーザーにフォルダーを開くかリポジトリをクローンするか、Gitをインストールするように案内できるようになりました。
テーマ: GitHub Sharp
エディター
ミニマップのサイズ
新しい設定editor.minimap.size
が追加され、ミニマップが垂直方向の空間をどのように使用するかを制御します。
proportional
(既定値)に設定すると、各行はeditor.minimap.scale
に応じてミニマップ内で一定量の垂直方向の空間を占めます。たとえば、高DPIモニターでスケールを1
(既定値)に設定した場合、各行はミニマップ内で4pxを占めます。したがって、100行のファイルの場合、ミニマップでレンダリングされる行の高さは400pxになり、1000行のファイルの場合は4000pxになります。これは、大きなファイルの場合、現在のファイルがスクロールされるにつれてミニマップもスクロールすることを意味します。fit
に設定すると、ミニマップの高さはエディターの高さより大きくならないように制限されます。そのため、ファイルに多くの行がある場合でも、それらはサンプリングされ、ミニマップにレンダリングされるのは一部のみとなり、ミニマップをスクロールする必要はありません。fill
に設定すると、ミニマップの高さは常にエディターの高さになります。大きなファイルの場合、これも行をサンプリングすることで達成されますが、小さなファイルの場合、各行により多くの垂直方向の空間を予約する(行を伸ばす)ことで達成されます。
ここでは、サイズがproportional
からfit
に変更され、その後、より小さなファイルではfit
からfill
に変更されています。
ミニマップの背景とスライダーの色
ミニマップとそのスライダーをカスタマイズするための新しい色が追加されました。新しい色の一つはminimap.background
で、色が透明に定義されると(#RRGGBBAAアルファチャネルを下げると)、ミニマップは透明にレンダリングされます。
{
"workbench.colorCustomizations": {
"minimap.background": "#00000055"
}
}
列選択モード
新しいグローバル切り替え機能が、選択 > 列選択モードメニュー項目からアクセスできるようになりました。このモードに入ると、ステータスバーに表示されるように、マウスジェスチャと矢印キーで列選択が作成されます。
ステータスバーから列選択モードを無効にすることもできます。
選択範囲に空白を表示
editor.renderWhitespace
設定の既定値がnone
からselection
に変更されました。空白文字は、既定でハイライトされたテキストに表示されるようになりました。
ここでは、選択された領域にタブとスペースの空白文字が表示されています。
Peekでの定義リンク
定義へ移動マウスジェスチャの動作をより詳細に制御できるようになりました。デフォルトでは、マウスによる定義へ移動は別のエディターを開きますが、新しい設定editor.definitionLinkOpensInPeek
をtrue
にすると、ジェスチャはPeekビューで開かれます。
折りたたまれた行のどこからでも展開
新しい設定エディター: 行末のクリックで展開(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.0Insiderリリースからこの機能がプレビューとして利用可能になることをお知らせできることを嬉しく思います。これで、すべてのマシン上のすべてのVS Codeインストールで設定を同期できるようになります。また、最小限の労力で、新しいマシンにVS Codeを個人的な設定でブートストラップすることもできます。
以下のビデオでは、新しいマシンに拡張機能と設定をローカルで適用する方法を示しています。
現在、設定、キーボードショートカット、拡張機能、表示言語が同期されますが、今後さらに追加する予定です。提案されている設定同期機能のリストを確認できます。
マシン設定(machine
またはmachine-overridable
スコープを持つもの)はデフォルトでは同期されません。このリストに設定を追加または削除するには、設定エディターを使用するか、sync.ignoredSettings
設定を使用します。
テーマ: GitHub Sharp
キーボードショートカットは、デフォルトでプラットフォームごとに同期されます。キーボードショートカットがプラットフォームに依存しない場合は、sync.keybindingsPerPlatform
設定を無効にすることで、プラットフォーム間で同期できます。
すべての組み込みおよびインストールされた拡張機能は、そのグローバルな有効状態とともに同期されます。拡張機能の同期は、拡張機能ビューから、またはsync.ignoredExtensions
設定を使用してスキップできます。
テーマ: GitHub Sharp
設定同期は、同期中に設定とキーバインドの競合を検出する機能をサポートしています。競合は、左側に受信(リモート)変更、右側にローカル変更がある差分エディターを使用して表示されます。右側のエディターで編集し、エディターで提供されるアクションを使用して変更をマージすることで、競合を解決できます。
ここでは、リモートを受け入れるアクションでリモートのcolorTheme
設定値が選択されています。
テーマ: GitHub Sharp, GitHub Sharp Dark
設定同期のアクティビティは、ログ(同期)出力ビューで監視できます。すべてのローカル設定は、同期中に変更されるたびに、過去30日間ディスクにバックアップされます。コマンドSync: Open Local Backups Folderを使用してバックアップの場所に行き、古い設定を取得できます。
テーマ: GitHub Sharp
いつでも、現在のVS CodeインスタンスまたはすべてのVS Codeインストールで同期をオフにできます。すべての同期を無効にすることを選択すると、データはクラウドから削除されます。
注意: 設定同期は、VS Codeの設定を同期するためにMicrosoftアカウントを使用するため、この機能を使用するにはアカウントが必要です。詳細については、設定同期ドキュメントを参照してください。
タイムラインビュー
このイテレーションでは、新しいタイムラインビューの開発を継続しました。Insidersエディションではデフォルトで有効になり、Stableでは以下の設定で有効にできます。
"timeline.showView": true
以下では、タイムラインビューがファイルのGitコミット履歴を表示しています。
テーマ: Dark Amethyst
ページング機能(上記に示すさらに読み込むアクションを介して)が追加され、右側に相対的なタイムスタンプが追加されました。拡張機能は、タイムラインビューと個々のタイムライン項目にもメニュー項目を提供できます。上記のスクリーンショットでは、組み込みのGit拡張機能がコミットIDをコピーとコミットメッセージをコピーのコマンドを提供しています。
新しいJavaScriptデバッガー
今月も新しいJavaScriptデバッガーの開発を継続しました。Insidersにはデフォルトでインストールされており、VS Code Stableではマーケットプレイスからインストールできます。既存の起動構成でこのデバッガーを使用するには、debug.javascript.usePreview
設定を有効にします。今月追加された新機能の一部を以下に示します。
プリティプリント
テーマ: Earthsong、フォント: Fira Code
デバッガでファイルをプリティプリントできるようになりました。これは、ミニファイされたソースを扱う場合に特に便利です。ミニファイされていると思われるファイルをステップインまたは開くとプロンプトが表示され、デバッグ: デバッグ用にプリティプリントコマンドを使用して手動でプリティプリントをトリガーすることもできます。
提案プロンプトをオフにするには、しないを選択するか、設定debug.javascript.suggestPrettyPrinting
をfalse
に変更します。
Microsoft EdgeとWebView2のサポート
新しいMicrosoft Edgeブラウザーの起動をサポートするようになりました。デバッグタイプをchrome
またはpwa-chrome
からpwa-msedge
に変更して試してみてください。chrome
と同じすべての設定をサポートしています。
これにより、デスクトップWindowsアプリケーションにおけるWebView2コントロールのサポートが追加されます。設定方法については、当社のwebviewデモをご覧ください。
リモートデバッグ
GitHub CodespacesやRemote SSHのようなリモートワークスペースから、新しいデバッガーでブラウザのソースコードをデバッグできるようになりました。これを設定するには、ウェブサーバーをポート転送するか(またはシンプルな静的ウェブサーバーを使用)、転送されたポートを指すchrome
またはpwa-msedge
の起動構成を作成します。
例
{
"version": "0.2.0",
"configurations": [
{
"type": "pwa-msedge",
"request": "launch",
"name": "Debug my App",
"url": "https://:5000" // <- debug an app forwarded on port 5000
}
]
}
デバッグセッションを起動すると、マシン上でブラウザが開き、通常通りVS Codeからデバッグできます。
より多くのビューが移動可能に
前回のリリースでは、VS Codeはビューをパネルに再配置する機能を少しだけ紹介しました。今回のリリースでは、このエクスペリエンスがさらに多くのビューに拡張されました。デバッグ/実行ビューや新しいタイムラインビューなど、より多くのビューを移動できるようになりました。また、サイドバーの他のビューにビューを移動することもできます。たとえば、開いているエディタービューをソース管理ビューに移動したい場合などです。これらはすべて、ビューをドラッグしてアクティビティバーまたはパネル内の目的の場所にドロップすることで行えます。
以下のアニメーションは、開いているエディタービューを別のビューに移動し、次にパネルに移動する様子を強調しています。
テーマ: Horizon Bright, フォント: Cascadia Code
また、キーボードでのビュー移動を容易にする新しいコマンド「ビュー: フォーカスされたビューを移動」(workbench.action.moveFocusedView
)も導入しました。
これはプレビュー機能であるため、修正できない状態になった場合は、すべてのビューを元の場所にリセットするコマンドがあります:ビュー: ビューの場所をリセット(workbench.action.resetViewLocations
)。
拡張機能への貢献
リモート開発
コンテナ、リモートマシン、またはLinux用Windowsサブシステム (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デバッガーが評価し、その結果をホバーで表示します。正規表現は設定できないため、すべての言語が正しく処理されるわけではありません(または、可能な最大限の範囲で処理されません)。#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に伝えることができるようになりました。これは、リファクタリングにとって特に便利です。
私たちのコードアクションサンプル拡張機能で.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;
}
}
ユーザーが無効なコードアクションをキーバインドを介して適用しようとすると、VS Codeはユーザーに.disabled
エラーメッセージを表示します。
さらに、発見性を向上させるため、無効なコードアクションはリファクタリングおよびソースアクションコンテキストメニューで薄く表示されます。
無効なアクションは、最上位の電球メニューには表示されないことに注意してください。
ターミナル.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が最終決定されました。これにより、拡張機能の作成者は、ワークスペース編集の変更を分類できます。特に、変更を適用する前にレビューする必要があるかどうかを分類できます。
デバッグアダプタープロトコル
出力イベントでのグループ化のサポート
関連するメッセージをグループ化して出力ログを整理するために、output
イベントにオプションのgroup
属性が追加されました。group
の可能な値は、グループを展開して開く場合はstart
とstartCollapsed
、グループを閉じる場合はend
です。
注: このリリース以降、VS CodeはこのDAP拡張機能をサポートしています。
補完項目によるカーソル配置の許可
オプションのselectionStart
とselectionLength
属性が補完項目に追加されました。これらの属性により、補完テキストが挿入された後にクライアントの現在の選択範囲(またはキャレット位置)を制御できます。
注: VS CodeはまだこのDAP拡張機能をサポートしていません。次期リリースで計画されています。
提案: 進行状況イベント
デバッグアダプタープロトコルに進行状況イベントを追加する提案について、進展がありました。興味のある方は、このDAP機能リクエストでの議論にご参加ください。
言語サーバープロトコル
言語サーバープロトコルバージョン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 Actionsのドキュメントを提供する方法を標準化する、以前の提案を見直しました。更新された提案では、ドキュメントは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")
}
}
]
};
...
}
ユーザーがリファクタリングを要求すると、ドキュメントはメインのコードアクションリストの後にレンダリングされます。
Issue #86788が提案のステータスを追跡しています。
ウェルカムビューコンテンツAPI
特定のビューが、拡張機能から提供されたウェルカムコンテンツをサポートするようになりました。詳細については、元の問題を参照してください。
このAPIを採用したビューは次のとおりです。
explorer
- ファイルエクスプローラーscm
- ソース管理debug
- 実行/デバッグ
例として、Git拡張機能からのウェルカムビューコンテンツの貢献で、explorer
ウェルカムビューでリポジトリをクローンする方法を示します。
テーマ: GitHub Sharp
OpenDialogOptions と SaveDialogOptions のタイトル
OpenDialogOptions
とSaveDialogOptions
の両方に、提案されているtitle
プロパティがあります。title
が表示されるかどうかはプラットフォームに依存しますが、プラットフォームがtitle
を表示する場合、SaveまたはOpenダイアログの上に表示されます。たとえば、組み込みコマンドWorkspaces: Save Workspace As...はタイトルをSave Workspaceに設定します。
エンジニアリング
Electron 7.0へのアップデート
このマイルストーンで、VS CodeにElectron 7をバンドルする探索作業を完了しました。これは主要なElectronリリースであり、Chromium 78.0.3904.130とNode.js 12.8.1が付属しています。
HDRディスプレイ用
issue #88491で、高ダイナミックレンジ(HDR)ディスプレイを使用しているWindowsユーザーから、VS Codeが暗くて使い物にならないという問題が報告されています。これは、Chromiumベースのすべてのアプリケーション(78.0.3904.130)で発生する問題であり、より新しいバージョンの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 を再起動します。
注: 問題が発生している場合を除き、この設定を編集しないでください!
このデフォルトのランタイム引数を追加したのは、Chromiumのデフォルトの色補正をsRGBからオーバーライドして、代わりにmacOSのディスプレイカラースペースを使用できるようにするためです。これにより、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を使用しており、最近ビルドパフォーマンスを大幅に改善しました。これについては、ブログ記事CIビルド時間の改善で詳しく学ぶことができます。
ブラウザに対するテストの実行
このマイルストーンでは、Playwrightライブラリを活用することで、すべてのテスト(ユニット、統合、スモーク)をブラウザで実行できるようにしました。これにより、Chrome、Firefox、Safariなどのブラウザでのカバー率が向上します。これらのテストの実行方法については、VS CodeテストREADMEを参照してください。
注目すべき修正点
- 61491: SCM: ビューレットは「リポジトリなし」メッセージを改善すべき
- 74782: 調査: macOS公証
- 82828: explorerでautoRevealが常に中央に移動せずにファイル名がどこにあるかをハイライトするように
- 8641: macOS: マウスボタン4と5で履歴をナビゲートできるようにする
- 87767: VSCodeのデバッグ再起動が動作しなくなった
- 88038: 自動実行されるデバッガコマンドでシェル履歴を汚染しない
- 89230: エディターがフォーカスされているときに「グループ」が読み取られる
- 89699: 前に戻る/進む: 選択範囲を保持する
- 89989: Web: 新しいウィンドウでファイルを開くことを許可する
- 90075: Explorer: ぶら下がりシンボリックリンクをサポート
- 90240: Zenモードをオフにすると行番号が見えなくなる
- 90876: リスト項目はロール 'listitem' を持つべき
- 91166: 問題パネルが開いているときにアラートが冗長すぎる。
- 91238: 統合ターミナルでコードが機能しない
ありがとうございます
最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!
問題追跡への貢献者
- ジョン・マレー(@gjsjohnmurray)
- アンドリー・ディエイエフ(@IllusionMH)
- アレクサンダー(@usernamehw)
- アルトゥーロ・デント(@ArturoDent)
- Gama11 (@Gama11)
vscode
への貢献者
- @alpalla: Fixes #32264 - 同じタスクのNインスタンスを許可 PR #89872
- Baibhav Vatsa (@BaibhaVatsa): tsconfig.base.jsonから冗長なフラグを削除 PR #91050
- ベイリー・ハーバート(@baileyherbert)
- @bepvte: 「Contributions」を「Feature Contributions」に改名 PR #89842
- @bolinfest
- Brett Cannon (@brettcannon): コマンドドキュメントの複数形を修正 PR #89959
- Dor Mesica (@dormesica): ターミナルでアクティブファイルを引用符で囲まずに実行する問題を修正 PR #90847
- Evan Krause (@evangrayk): エディター以外のウェブビューで元に戻す/やり直す機能が壊れていたのを修正 PR #89961
- Ian MacFarlane (@eyeino): 新しいgitブランチ作成時の言語を明確化 PR #90160
- ジョン・マレー(@gjsjohnmurray)
- lipgloss (@gloss-water): テーマ設定: ミニマップの不透明度を設定するワークベンチ設定オプションを追加 PR #58324
- Michael Gubik (@gubikmic): 主要な軸のみスクロール(スクロールのずれを防止) PR #70047
- グスタヴォ・カッセル(@GustavoASC)
- @Helloimbob: cshスクリプトをシェルスクリプトとして自動検出 PR #90960
- ジャン・ピエール(@jeanp413)
- Jonas Littorin (@jlittorin): タイプ「promptString」の入力変数にパスワード属性を追加しました。 PR #90482
- John Blackbourn (@johnbillion): .envrcファイルをシェルスクリプトとして扱う PR #90825
- Josh Goldberg (@JoshuaKGoldberg): Docs typo: insertSpacesに`がありません PR #90374
- @LadyCailin: ハイライトされた行がスコープの開始/終了の場合、インデントを1つ右に移動 PR #77762
- Maik Riechert (@letmaik): ドキュメント: package.jsonのフィールド名「extensionDependency」を修正 PR #90103
- Gordey (@lgordey): 設定UI: 同期設定の区切り文字を追加 PR #91461
- Alex SK (@lxsk): fix #21849: ミニマップ: ドキュメント全体を表示 PR #74425
- Dan (@mallardduck): 異なる色の複数のルーラーのサポートを追加 PR #88453
- Rasmus (@neonsea): デバッガコマンドでシェル履歴を汚染しないようにする PR #88041
- @nrayburn-tech
- Przemek Adamczewski (@padamczewski): fix: マルチカーソルで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): Issue #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): Fix #88294 Add commitData in commit interface PR #89005
vscode-eslint
への貢献者
- 大田 陽介 (@ota-meshi): 新しいeslint suggestions APIをサポート PR #814
- Krasimir Nedelchev (@kaykayehnn): スペルミスを修正 PR #900
language-server-protocol
への貢献者
- Lars Hvam (@larshp) 仕様3.15、スペルミス修正 PR #912
- マキシム・レズニック(@reznikmm):
- Christian Tietze (@DivineDominion) スペルミス修正 PR #921
- Kun Ren (@renkun-ken) スペルミス修正 PR #922
vscode-js-debug
への貢献者
- SantoJambit (@SantoJambit): codelensのルートレベルスクリプトプロパティのみを取得 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のmixinに提案参加者を使用する機能 PR #201
- Will Bender (@Ragnoroct): ルールセット後のscssオートコンプリートを修正 PR #188
vscode-vsce
へのコントリビューション
- Robert Holt (@rjmholt): パッケージステップでissueリンクの展開を停止する--noGitHubIssueLinkingを追加 PR #424
localization
への貢献
Cloud + AI Localizationコミュニティメンバーは800名を超え、Microsoft Localization Community Platform (MLCP) を利用しており、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。
- ドイツ語(ドイツ) フィリップ・クナイフェルド、ラファエル・ヘザー、ニック・ラウフ。
- ヒンディー語(インド) KRISHNA TANDON、Alish Vagadiya。
- ハンガリー語(ハンガリー) レヴェンテ・ボルベリー。
- インドネシア語 (インドネシア) Eriawan Kusumawardhono, Riwut Libinuko.
- イタリア語(イタリア) ルイージ・ブルーノ。
- 日本語(日本) 天明 正和、牧野 浩一。
- 韓国語(韓国) 강 성원、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。