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

2020年2月 (バージョン 1.43)

アップデート 1.43.1: このアップデートでは、これらの問題が解決されています。

アップデート 1.43.2: このアップデートでは、これらの問題が解決されています。

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


Visual Studio Code 2020年2月版へようこそ。このバージョンには、気に入っていただけるであろう多数のアップデートが含まれており、主なハイライトをいくつかご紹介します。

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

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

Workbench

検索エディター

Insidersでいくつかの反復を経て安定化した後、検索エディターをリリースします。これにより、ワークスペースの検索結果を、構文のハイライト表示とオプションの周辺コンテキスト行を完備したフルサイズのエディターで表示できます。これはしばらくの間、強く要望されていた機能です。

以下は、コンテキストとして一致の前後2行のテキストを含む「SearchEditor」という単語の検索結果です。

検索エディター テーマ: A Touch of Lilac、フォント: Hasklig

検索エディターでは、F12などのGo to Definitionアクションを使用して結果に移動できます。これにより、現在のエディターグループでソースロケーションが開かれます。または、⌘K F12 (Windows, Linux Ctrl+K F12)を使用して、サイドのエディターでロケーションを開くこともできます。さらに、search.searchEditor.doubleClickBehaviour設定で設定可能であり、ダブルクリックでオプションでソースロケーションを開くことができます。

Search Editor definition reveals

新しい検索エディターは、Search Editor: Open New Search Editorコマンド、または検索ビュー上部のOpen New Search Editorボタンで開くことができます。または、結果ツリー上部に追加されたOpen in Editorリンク、またはSearch Editor: Open Results in Editorコマンドを使用して、既存の検索ビューの結果を検索エディターにコピーすることもできます。

: 検索エディターで行った編集をソースファイルに同期するには、実験的なSearch Editor: Apply Changes拡張機能を試すことができます。

Search Editor: Apply Changes extension

ドラッグ可能なサッシュコーナー

2つの直交するサッシュの交差部分を掴んでドラッグすることで、同時にサイズを変更できることをご存知でしたか?これはすでにエディターのサッシュで機能していましたが、エディターとビューの間のエッジでも機能するようになりました。

Draggable sash corners

テーマ: GitHub Sharp、フォント: Fira Code

公証されたmacOSビルド

macOS版Visual Studio CodeはAppleによって公証されたため、以下のダイアログが表示されることはなくなります。

macOS missing notarization warning

詳細については、調査イシューAppleの開発者向けドキュメントを参照してください。

進行状況通知

このリリース以降、長時間実行される操作を示す通知の動作が少し変更されました。

  • 操作がキャンセルされたかどうかについて誤った印象を与えていたため、一般的な閉じるボタンは提供されなくなりました。通知を非表示にするには、引き続きEscキーを押すことができます。
  • 通知が非表示になっている間も操作が進行中の場合は、ステータスバーに操作の進行状況が表示されます。

この変更により、通知を閉じた後も操作(長時間実行される保存操作など)がバックグラウンドで継続して実行されていることを知ることができます。

以下では、キャンセルボタンが選択されるまで操作がまだ実行されています。

Progress Notification

テーマ: 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リポジトリをクローンして作業を開始するよう提案します。

File Explorer Welcome view

テーマ: GitHub Sharp

ソース管理ウェルカムビュー

新しいウェルカムビューのインフラストラクチャのおかげで、ソース管理ビューは、これまで空だった特定の状況に対して、より良いエクスペリエンスを提供するようになりました。たとえば、Gitがインストールされていない場合に、フォルダーを開いたり、リポジトリをクローンしたり、Gitをインストールしたりするようにユーザーをガイドできるようになりました。

Source Control Welcome view

テーマ: GitHub Sharp

Editor

ミニマップのサイズ

ミニマップが垂直方向のスペースをどのように使用するかを制御する新しい設定editor.minimap.sizeがあります。

  • proportional(デフォルト)に設定されている場合、各行はeditor.minimap.scaleに応じてミニマップ内で一定量の垂直スペースを取得します。たとえば、高DPIモニターで、設定されたスケールが1(デフォルト)の場合、各行はミニマップで4pxを取得します。したがって、100行のファイルの場合、ミニマップでレンダリングされる行の高さは400pxになり、1000行のファイルの場合は4000pxになります。これは、大きなファイルの場合、現在のファイルがスクロールされるとミニマップもスクロールされることを意味します。
  • fitに設定されている場合、ミニマップの高さはエディターの高さよりも大きくならないように制限されます。したがって、ファイルに多数の行がある場合、それらはサンプリングされ、ミニマップにはそのサブセットのみがレンダリングされるため、ミニマップをスクロールする必要はありません。
  • fillに設定されている場合、ミニマップの高さは常にエディターの高さと同じになります。大きなファイルの場合、これは行をサンプリングすることで達成されますが、小さなファイルの場合、これは各行に垂直方向のスペースを多く確保することで達成されます(行をストレッチします)。

ここでは、サイズがproportionalからfitに変更され、その後、小さなファイルでfitからfillに変更されています。

Minimap size

ミニマップの背景色とスライダーの色

ミニマップとそのスライダーをカスタマイズするための新しい色が追加されました。新しい色の1つはminimap.backgroundで、この色が透明(#RRGGBBAAのアルファチャンネルを低くする)に定義されると、ミニマップは透明にレンダリングされます。

Transparent minimap

{
  "workbench.colorCustomizations": {
    "minimap.background": "#00000055"
  }
}

列選択モード

選択 > 列選択モード メニュー項目からアクセスできる、新しいグローバルトグルが追加されました。このモードに入ると、ステータスバーに表示されるように、マウスジェスチャーと矢印キーで列選択が作成されます。

Column selection

ステータスバーから列選択モードを無効にすることもできます。

選択範囲に空白を表示

editor.renderWhitespace設定のデフォルト値がnoneからselectionに変更されました。デフォルトで、ハイライトされたテキストに空白文字がレンダリングされるようになります。

ここでは、タブとスペースの空白文字が選択された領域に表示されています。

Render whitespace characters on selection

Go to Definitionマウスジェスチャーの動作をより細かく制御できるようになりました。デフォルトでは、マウスによるGo to Definitionは別のエディターを開きますが、新しい設定editor.definitionLinkOpensInPeektrueにすることで、ジェスチャーはPeekビューで開くようになります。

Definition with mouse in Peek

折りたたまれた行のどこでも展開

新しい設定Editor: Unfold On Click After End of Line (editor.unfoldOnClickAfterEndOfLine) が追加されました。これは、折りたたまれた行の右側の空白スペース (...の後) をクリックしたときに何が起こるかを制御します。trueに設定すると、折りたたまれた行のテキストのどこでもクリックでき、正確に省略記号 (...) を選択することを気にする必要がありません。デフォルトでは、このオプションはオフです。

folded line with ellipses

複数ファイルにわたるテキスト編集の元に戻す

複数ファイルに影響する名前変更やコードアクションを元に戻す際、VS Codeは影響を受けたすべてのファイルでの変更を元に戻すことを許可するようになりました。

ファイル間の編集を元に戻す際にプロンプトが表示されます。

Undo across files prompt

: ファイルの名前変更などのファイル操作はまだサポートされていません。例えば、Javaでクラス名を変更する(ファイル名も変更される)場合、ファイル間の元に戻す機能はまだサポートされていません。

異なる色の複数のルーラー

既存のeditor.rulers設定が拡張され、カスタムカラーを持つルーラーを定義できるようになりました。以下のスクリーンショットでは、80列目にマゼンタのルーラー、90列目に赤色のルーラーがあります。

Colored rulers

{
  "editor.rulers": [
    { "column": 80, "color": "#ff00ff" },
    { "column": 90, "color": "#ff0000" }
  ]
}

エディターの上下のパディング

editor.padding.topeditor.padding.bottomを使用することで、エディターの上下に空白(ピクセル数)を確保できるようになりました。

こちらが上部に50ピクセルのパディングが設定されたエディターです。

editor.padding.top set to 50 pixels

{
  "editor.padding.top": 50
}

スクロールの主要軸

最新のタッチパッドを使用して垂直方向にスクロールしようとすると、同時に水平方向にもスクロールしてしまうことがよくあります。新しい設定editor.scrollPredominantAxis(デフォルトはtrue)が追加され、「斜め」スクロールがブロックされるようになりました。これにより、スクロールジェスチャーは(絶対スクロールデルタの最大値に基づいて)垂直方向または水平方向のいずれかに強制され、決して斜めにはなりません。

LinuxでのShift+Insert

1.42では、Shift+Insertが選択クリップボードからの貼り付けに修正されました。これは既存の指の動きを壊すという多くのフィードバックを受け、Shift+Insertを以前と同様に通常のクリップボードからの貼り付けに戻すことにしました。

アクセシビリティ

Linuxスクリーンリーダーサポート

コミュニティの協力により、VS CodeをLinux上でOrcaスクリーンリーダーで利用できるようにする作業を進めています。OrcaとChromiumは現在もスクリーンリーダーのサポートに取り組んでいるため、この機能を完全に動作させるにはいくつかの事項が必要です。

  • Orcaの最新バージョンをmasterから使用していることを確認してください。手順はissue #91063にあります。
  • VS Codeで"editor.accessibilitySupport": "on"の設定がされていることを確認してください。これは設定から行うか、Show Accessibility Helpコマンドを実行して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の新しいテンプレート文字列への変換リファクタリングを使用すると、文字列の連結をテンプレート文字列にすばやく変換できます。

Converting string concatenation to a template string

JavaScriptおよびTypeScriptの呼び出し階層サポート

TypeScript 3.8では、JavaScriptおよびTypeScriptで呼び出し階層がサポートされます。

Viewing incoming calls using call hierarchy in a TypeScript file

IntelliSenseがhttpおよびhttpsリンクのJS Doc @linkインラインタグをレンダリングするようになりました。以下の例の画像では、lightbulb menu@linkがホバーでどのようにレンダリングされているかに注目してください。

A hover with a rendered @link JSDoc tag

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でプログラムを実行する方法を見つけるのに苦労していることが明らかになりました。その理由の一つは、既存の「デバッグ」機能がプログラムの「実行」とは関連付けられないことです。そのため、UIで「実行」をより目立つようにしています。

  • メインメニューのデバッグ実行メニューになりました。
  • 実行とデバッグビューが実行ビューになり、対応するアクティビティバーのアイコンには、小さな「バグ」の装飾が付いた大きな「再生」アイコンが表示されるようになりました。

Run and Debug Activity Bar icon

デバッグコンソールグループ化

VS Codeのデバッグコンソールが出力グループ化をサポートするようになりました。デバッグ拡張機能は、デバッグコンソール出力が共通の親の下にグループ化されるべきタイミングを示すことができます。今のところ、Mock Debug拡張機能のみが出力グループ化を実装していますが、まもなく他のデバッグ拡張機能もこれに続くでしょう - 特にJavaScriptデバッガーがそうです。

Debug Console grouping

デバッグコンソールの履歴候補を無効にする

新しいdebug.console.historySuggestions設定により、デバッグコンソールの履歴候補をオフにできるようになりました。デフォルトでは、履歴候補はオンです。

統合ターミナル

Unicode 11 のサポート

ターミナル内の文字幅が、デフォルトでUnicode 11の幅に設定されるようになりました。これにより、ほとんどのユーザーにとって、絵文字がワイド文字として正しく表示されるようになります。

Emojis are correctly wide characters

Alt+クリックでナビゲートプロンプトのサポートが向上

ターミナルには、セルをAlt+クリックするとカーソルがそのセルに移動する機能があります。これまでシェルのプロンプト内では、行が折り返されていても単一行でのみ機能していました。これが改善され、完全に折り返された行でも機能するようになりました。

Alt+クリックで折り返された行を移動できる テーマ: 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に適用できます。

以下のビデオでは、新しいマシンに拡張機能と設定をローカルで適用する方法を示しています。

Bootstrap VS Code using Settings Sync

現在、設定、キーボードショートカット、拡張機能、表示言語が同期されていますが、さらに多くの追加を計画しています。提案されている設定同期機能のリストを確認できます。

マシン設定(machineまたはmachine-overridableスコープを持つもの)はデフォルトでは同期されません。設定エディターから、またはsync.ignoredSettings設定を使用して、このリストの設定を追加または削除することもできます。

無視された設定 テーマ: GitHub Sharp

キーボードショートカットは、デフォルトでプラットフォームごとに同期されます。キーボードショートカットがプラットフォームに依存しない場合は、sync.keybindingsPerPlatform設定を無効にすることで、プラットフォーム間で同期できます。

すべての組み込みおよびインストール済み拡張機能は、そのグローバルな有効化状態とともに同期されます。拡張機能ビューから、またはsync.ignoredExtensions設定を使用して、拡張機能の同期をスキップできます。

無視された拡張機能 テーマ: GitHub Sharp

設定同期は、同期中に設定とキーバインディングの競合を検出する機能をサポートしています。競合は、左側に受信(リモート)変更、右側にローカル変更があるdiffエディターを使用して表示されます。右側のエディターで編集し、エディターで提供されるアクションを使用して変更をマージすることで、競合を解決できます。

ここでは、Accept RemoteアクションでリモートのcolorTheme設定値が選択されています。

設定同期の競合処理 テーマ: GitHub Sharp、GitHub Sharp Dark

設定同期のアクティビティは、ログ(同期)出力ビューで監視できます。同期中に変更されるたびに、すべてのローカル設定が過去30日間ディスクにバックアップされます。コマンドSync: Open Local Backups Folderを使用して、バックアップの場所に移動し、以前の設定を取得できます。

設定同期ログ テーマ: GitHub Sharp

いつでも、現在のVS CodeインスタンスまたはすべてのVS Codeインストールで同期をオフにできます。すべての同期を無効にすることを選択した場合、データはクラウドから削除されます。

Turn off Settings Sync

注: 設定同期は、Microsoftアカウントを使用してVS Codeの設定を同期のために保存するため、この機能を使用するにはアカウントが必要です。詳細については、設定同期のドキュメントを参照してください。

タイムラインビュー

このイテレーションでは、新しいタイムラインビューの開発を継続しました。これは現在、Insidersエディションでデフォルトで有効になっており、Stable版では以下の設定で有効にできます。

"timeline.showView": true

以下に、ファイルのGitコミット履歴を表示するタイムラインビューを示します。

Timeline view

テーマ: Dark Amethyst

ページングサポート(上記のさらに読み込むアクションを介して)が追加され、右側には相対的なタイムスタンプが追加されました。拡張機能は、タイムラインビューと個々のタイムライン項目にもメニュー項目を貢献できます。上記のスクリーンショットでは、組み込みのGit拡張機能がコミットIDをコピーコミットメッセージをコピーコマンドを貢献しています。

新しいJavaScriptデバッガー

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

プリティプリント

Animation of VS Code asking whether to pretty-print a minified file when the debugger steps into it. Selecting "yes" formats the file and moves the debugger into the new beautified code.

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

デバッガーがファイルをプリティプリントできるようになり、特にミニファイされたソースを扱う場合に便利です。ミニファイされていると思われるファイルにステップインまたは開くとプロンプトが表示され、Debug: Pretty print for debuggingコマンドで手動でプリティプリントをトリガーすることもできます。

Neverを選択するか、設定debug.javascript.suggestPrettyPrintingfalseに変更することで、提案プロンプトをオフにできます。

Microsoft Edge と WebView2 のサポート

新しいMicrosoft Edgeブラウザの起動をサポートするようになりました。デバッグタイプをchromeまたはpwa-chromeからpwa-msedgeに変更して試してください。chromeと同じすべての設定をサポートしています。

これにより、デスクトップWindowsアプリケーションでのWebView2コントロールのサポートが提供されます。セットアップ方法については、webviewデモをご覧ください。

Image showing the debugger paused at a breakpoint for code running in a native window's WebView.

リモートデバッグ

GitHub CodespacesRemote SSHなどのリモートワークスペースから、新しいデバッガーでブラウザのソースコードをデバッグできるようになりました。これを設定するには、Webサーバーをポート転送するか(またはシンプルな静的Webサーバーを使用)、転送されたポートを指す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はビューをパネルに再配置する機能の一部を公開しました。今回のリリースでは、このエクスペリエンスがさらに多くのビューに拡張されました。デバッグ/実行ビューや新しいタイムラインビューなど、多くのビューを移動できるようになりました。また、サイドバーの他のビューにビューを移動することもできます。たとえば、開いているエディタービューをソース管理ビューに移動したい場合があるかもしれません。これらはすべて、ビューをドラッグして、アクティビティバーまたはパネルの目的の場所にドロップすることで実行できます。

以下のアニメーションは、開いているエディタービューを別のビューに移動し、次にパネルに移動する様子を強調しています。

Moving views around

テーマ: 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デバッガーが評価し、その結果をホバーに表示します。正規表現は設定可能ではないため、すべての言語が正しく処理されるわけではありません(または可能な範囲で完全に処理されるわけではありません)。#84044#89603#89332の問題は、典型的な問題を説明しています。

このマイルストーンでは、デバッグホバーの動作を制御するための新しい拡張APIを導入しました。

EvaluatableExpressionProviderは、言語に対して登録でき、VS Codeデバッガーがアクティブなデバッグセッションに対して評価する、マウスの下の式を提供します。

以下は、getWordRangeAtPosition APIに基づいた(シンプルな)実装を示す、Mock debugサンプルからの簡単な例です。

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エラーメッセージを表示します。

Showing the '.disabled' error in the editor

さらに、発見性を高めるために、無効なコードアクションはリファクタリングおよびソースアクションコンテキストメニューで薄暗く表示されます。

A '.disabled' Code Action in the Refactor menu

無効なアクションはトップレベルの電球メニューには表示されません。

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を完成させました。これにより、拡張機能の作成者は、ワークスペース編集の変更、特に適用前にレビューが必要な変更を分類できます。

Debug Adapter Protocol

出力イベントでのグループ化のサポート

関連するメッセージをグループ化することで出力ログを整理するために、outputイベントにオプションのgroup属性が追加されました。groupの可能な値は、グループを展開して開く場合はstartstartCollapsed、グループを閉じる場合はendです。

注: このリリース以降、VS CodeはこのDAP拡張機能をサポートしています。

補完項目によるカーソル配置を許可

補完項目にオプションのselectionStartおよびselectionLength属性が追加されました。これらの属性により、補完テキストが挿入された後、クライアントの現在の選択(またはキャレット位置)を制御できます。

注: VS CodeはまだこのDAP拡張機能をサポートしていません。次期リリースで計画されています。

提案: 進捗イベント

デバッグアダプタープロトコルに進捗イベントを追加する提案について、いくつかの進捗がありました。興味がある方は、このDAP機能要求に関する議論に貢献できます。

Language Server Protocol

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をデータモデルとして使用するため、savebackup、その他の操作を自分で実装する必要がありません。これにより、リソースのカスタムエディターと、同じリソースのテキストエディターとの間でライブ同期を簡単に行うこともできます。
  • バイナリ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")
        }
      }
    ]
  };
  ...
}

ユーザーがリファクタリングを要求すると、ドキュメントは主要なコードアクションリストの後にレンダリングされます。

The JS/TS Code Action documentation entry

Issue #86788が提案のステータスを追跡しています。

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

一部のビューが、拡張機能から提供されるウェルカムコンテンツをサポートするようになりました。詳細については、元のイシューを参照してください。

このAPIを採用しているビューは以下の通りです。

  • explorer - ファイルエクスプローラー
  • scm - ソース管理
  • debug - 実行/デバッグ

例として、Git拡張機能からexplorerウェルカムビューへのリポジトリクローンに関するウェルカムビューコンテンツの寄与を以下に示します。

Explorer Welcome view

テーマ: GitHub Sharp

OpenDialogOptions と SaveDialogOptions のタイトル

OpenDialogOptionsSaveDialogOptionsの両方に、提案されたtitleプロパティがあります。titleが表示されるかどうかはプラットフォームに依存しますが、プラットフォームがtitleを表示する場合、それは保存または開くダイアログの上に表示されます。たとえば、組み込みコマンドワークスペース: ワークスペースを別名で保存...は、タイトルをワークスペースを保存に設定します。

エンジニアリング

Electron 7.0へのアップデート

このマイルストーンでは、Electron 7をVS Codeにバンドルするための探索を完了しました。これはElectronのメジャーリリースであり、Chromium 78.0.3904.130とNode.js 12.8.1が付属しています。

HDRディスプレイ向け

issue #88491で、高ダイナミックレンジ(HDR)ディスプレイを使用しているWindowsユーザーから、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 を再起動します。

注: 問題が発生していない限り、この設定を編集しないでください!

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: Viewlet は「リポジトリなし」メッセージを改善すべき
  • 74782: 調査: macOS 公証
  • 82828: explorer で filename を常に中央に移動させずに、その場所をハイライトする autoReveal
  • 8641: macOS: マウスボタン4と5で履歴をナビゲートできるようにする
  • 87767: VSCodeデバッグ再開が動作しなくなった
  • 88038: 自動実行されるデバッガーコマンドでシェル履歴を汚染しない
  • 89230: エディターがフォーカスされたときに「グループ」が読み込まれる
  • 89699: 戻る/進む: 選択範囲を保持する
  • 89989: Web: ファイルを新しいウィンドウで開くことを許可する
  • 90075: Explorer: ぶら下がりシンボリックリンクのサポート
  • 90240: Zenモード解除後、行番号が非表示になる
  • 90876: リスト項目は 'listitem' ロールを持つべき
  • 91166: 問題パネルが開いているときの警告が多すぎる。
  • 91238: 統合ターミナルでコードが機能しない

ありがとうございます

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

問題追跡への貢献者

vscodeへの貢献者

vscode-eslintへの貢献者

language-server-protocolへの貢献者

vscode-js-debugへの貢献者

vscode-languageserver-nodeへの貢献者

vscode-css-languageserviceへの貢献者

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

localizationへの貢献

Microsoft Localization Community Platform (MLCP) を利用する Cloud + AI Localization コミュニティメンバーは 800 人を超え、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。
  • 日本語(日本) 天明 正和、牧野 浩一。
  • 韓国語(韓国) 강 성원、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。

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