2019年1月 (バージョン 1.31)

アップデート 1.31.1: このアップデートでは、以下の問題に対処しています。

ダウンロード: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball


Visual Studio Code の 2019 年 1 月リリースへようこそ。このバージョンには、多くの重要なアップデートが含まれており、皆様に気に入っていただけることを願っています。主なハイライトをいくつかご紹介します。

これらのリリースノートをオンラインで読むには、code.visualstudio.com更新情報 にアクセスしてください。
また、Cloud Developer Advocate の Brian Clark によるこの 1.31 リリースのハイライト動画もご覧ください。

リリースノートは、VS Code の重点分野に関連する以下のセクションにまとめられています。さらに、いくつかのアップデートがあります。

  • ワークベンチ - Zen モードで行番号を非表示、新しい Screencast モードでキー操作を表示。
  • エディター - スマート選択の改善、参照 CodeLens の位置調整。
  • 統合ターミナル - Windows での ConPTY サポート、検索の改善。
  • 拡張機能の作成 - 拡張機能の変更イベント、ブラウザーアクションでのリソースを開く。

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

拡張機能

拡張機能インストール時の再読み込み不要

VS Code の再読み込み (再起動) を強制することなく拡張機能をインストールできることは、最も多く投票された機能リクエストの 1 つであり、このリリースで実現しました。拡張機能をインストールまたは有効にする際に、VS Code を再読み込みする必要はなくなりました。

以下の例では、ユーザーが .vue ファイルを開いた後、Vetur 拡張機能をインストールするという推奨事項に従っています。Vetur 拡張機能によって提供される言語機能 (構文の色付け、診断エラーなど) は、推奨される拡張機能をインストールした直後に利用可能になることに注意してください。

Extensions no reload

アクティブ化されていない拡張機能をアンインストールまたは無効にする場合も、再読み込みは不要です。

注: 外部コントリビューション (他の拡張機能の拡張ポイントへのコントリビューション) のために再読み込みが必要な特定の拡張機能があります。これには、extensions.onDidChange イベントをリッスンすることによる、外部コントリビューションポイントの所有者からの採用が必要です。

ワークベンチ

新しいツリーウィジェット

ウィジェットのゲームを次のレベルに引き上げました。パフォーマンスの問題に対処し、ワークベンチのいくつかの領域でより多くの機能を提供できるように、新しいツリーウィジェットが作成されました。新しいツリーウィジェットは、高性能リストウィジェットを介した構成によって作成されました。このエンジニアリング作業とパフォーマンスの向上に関する個別のブログ投稿を作成する予定です。今のところ、機能に焦点を当てます。

注: 新しいツリーは、ファイルエクスプローラー、すべてのデバッグツリー、検索、およびピーク参照で採用されました。以下で説明する機能は、明示的に無効にされていない限り、これらの UI 領域のほとんどに適用されます。

改善されたキーボードナビゲーション

ツリーには、simplehighlight、および filter の 3 種類のキーボードナビゲーションがあります。highlightfilter の両方で、ツリーに入力すると、ツリーの上部にウィジェット (コントロール) が表示され、ツリーをナビゲートしていることを示します。

Keyboard navigation type filter

このウィジェットは、highlight モードと filter モードを切り替えるためにも使用できます。モードを切り替えるためのキーボードショートカットが必要な場合は、list.toggleFilterOnType コマンドを実行するようにキーバインディングを構成できます。ワークベンチ > リスト: キーボードナビゲーション (workbench.list.keyboardNavigation) 設定は、simple モードを含むデフォルトモードを設定します。simple モードでは、ツリー要素の最初の数文字を入力するだけで、その要素にフォーカスが移動します。

リスト/ツリーアクションに単一文字のキーバインディングを持つユーザーは、listAutomaticKeyboardNavigation コンテキストキーを利用することで、この機能を引き続き使用できます。たとえば、VIM 拡張機能は、自動キーボードナビゲーションを無効にするためにこのコンテキストキーを false に設定し、/ キーバインディングを list.toggleKeyboardNavigation コマンドに追加するため、ユーザーは / を入力してツリーをナビゲートできます。詳細については、VSCodeVIM プルリクエストを参照してください。

テーマ作成者は、次の新しいテーマキーを使用してウィジェットの色をカスタマイズできます。

  • listFilterWidget.background
  • listFilterWidget.outline
  • listFilterWidget.noMatchesOutline

注: これらのキーボードナビゲーションモードは、現在、解決済みのツリーノードでのみ機能します。たとえば、ファイルエクスプローラーでは、フォルダーが一度も展開されたことがない場合、ツリーはその子を検索しません。このエクスペリエンスを向上させるためのいくつかのオプションを検討しています。

階層的な全選択

ツリーで Ctrl+A (macOS では Cmd+A) を押すと、ツリーの選択が階層的に展開されるようになりました。

Hierarchical select all

カスタマイズ可能なインデント

ワークベンチ > ツリー: インデント (workbench.tree.indent) 設定を使用して、ワークベンチ全体のすべてのツリーのノードインデントをカスタマイズできるようになりました。

すべて展開/折りたたみ

ツリーノードを展開/折りたたむときに Alt キーを押すと、再帰的に動作するようになりました。再帰的な展開は、ツリーで以前に表示されたノードでのみ機能することに注意してください。たとえば、ファイルエクスプローラーは、ユーザーが以前に展開したことがないフォルダーを自動的に展開しません。

水平スクロール

ワークベンチ > ツリー: 水平スクロール (workbench.tree.horizontalScrolling) 設定により、エクスプローラー、検索、SCM、デバッグなど、より多くのツリーとリストで水平スクロールが有効になりました。

「問題」パネル

複数行メッセージ

「問題」パネルに、複数行の診断メッセージが個別の行で表示されるようになりました。以下の例は、TypeScript からの複数行のエラーメッセージがどのように表示されるかを示しています。

Problems panel multi-line messages

また、折りたたみ/展開ボタンまたは 問題: メッセージを単一行で表示 および 問題: メッセージを複数行で表示 コマンドを使用して、完全なメッセージの表示/非表示を切り替えることもできます。

キーボードショートカットを使用したコードアクションのトリガー

クイックフィックスコマンドと同じデフォルトのキーボードショートカット ⌘. (Windows, Linux Ctrl+.) を使用して、「問題」パネルからコードアクションをトリガーできるようになりました。

「移動」メニューの改善

移動」メニューにナビゲーションアクションを追加して、見つけやすくしました。

Go menu

エクスプローラーのコンテキストメニューに「切り取り」コマンドを追加

ユーザーからの要望に基づき、エクスプローラーのコンテキストメニューに「切り取り」コマンドを追加しました。

Cut command in context menu

高速スクロール

Alt キーを押すと、エディターとエクスプローラーで高速スクロールが有効になります。デフォルトでは、高速スクロールは 5 倍の速度倍率を使用しますが、エディター: 高速スクロール感度 (editor.fastScrollSensitivity) 設定で倍率を制御できます。

Zen モードで行番号を非表示

Zen モードをオンにすると、エディターの行番号も非表示になるようになりました。この動作は、zenMode.hideLineNumbers 設定で制御できます。

カスタムメニューを使用した Linux でのキーボードナビゲーションの追加

カスタムメニューは、Page Up/Down キーと Home/End キーを使用して、メニューの先頭または末尾にすばやくジャンプできるようになりました。

Windows/Linux でアプリケーションアイコンをダブルクリックして閉じる

技術的なトレードオフにより、デフォルトでは、Window および Linux のカスタムタイトルバーは、アプリケーションアイコンをダブルクリックしてウィンドウを閉じる機能を削除します。window.doubleClickIconToClose 設定を有効にすることで、この機能を取り戻すことができますが、この場所からウィンドウをドラッグしたり、Windows でシステムコンテキストメニューを取得したりすることはできなくなります。

エディタータブの閉じる順序

新しい設定 workbench.editor.focusRecentEditorAfterClose を使用すると、エディタータブが閉じられる順序を変更できます。デフォルトでは、タブは最近使用した順 (MRU) に閉じられます。この設定を変更すると、タブを右から左に閉じることができます。

新しいタイトル変数

window.title 設定内で使用できる 3 つの新しい変数があります。

  • ${activeFolderShort}: ファイルが含まれているフォルダーの名前。
  • ${activeFolderMedium}: ファイルが含まれているフォルダーのパス (ワークスペースフォルダーからの相対パス)。
  • ${activeFolderLong}: ファイルが含まれているフォルダーのフルパス。

出力パネル

出力パネルのスマートスクロール動作がより効率的になりました。出力パネル内の任意の場所をクリックするとスクロールがロックされ、最後の行をクリックするとロックが解除されます。

Screencast モード

VS Code に新しい Screencast モード が追加されました。これは、カーソル位置とキー操作を強調表示します。Screencast モード (開発者: Screencast モードの切り替え) は、デモンストレーションの目的で役立ちます。

Screencast mode

エディター

スマート選択

選択範囲の展開」および「選択範囲の縮小」の実装を「選択」メニューから改善しました。言語サーバーがセマンティクスの知識に基づいて選択ステップを指定できるように、API を追加するプロセスを進めています。さらに、デフォルトの実装も改善しました。

Smart selection

スマート選択が改善されるにつれて、今後もご期待ください。smart-select ラベルを使用して、私たちが取り組んでいる内容を確認してください。

参照履歴

参照ビューに 参照: 履歴を表示 コマンドが追加されました。以前の検索をすばやく再実行できる以前の検索を含むクイックピッカーが表示されます。

Reference search history

参照 CodeLens

参照 CodeLens を選択すると、ピークエディターが開きます。これは、references.preferredLocation 設定で制御できるようになりました。オプションは peekview であり、後者は新しいビューで参照を表示します。

スニペットの説明

長い説明を持つスニペットを作成する場合、以前は長い単一の文字列を記述する必要がありました。body のように配列を使用するためのサポートはありませんでした。これが変更され、長い説明を文字列配列を使用して記述できるようになりました。

{
  "prefix": "happy",
  "body": "#Happy Coding!",
  "description": ["First Line", "Second Line", "Third Line"]
}

レガシー検索モードの削除

20 リリース前に、VS Code での検索に ripgrep を使用し始めました。古い Node.js ベースの検索実装は、search.useLegacySearch 設定の背後でまだ利用可能でした。しかし、Marie Kondo が言うように、喜びをもはやもたらさないものを整理する必要があります。後方参照や先読みなどの正規表現機能を使用している場合は、search.usePCRE2 設定をオンにしてください。

JSON として設定を編集するためのシンプルなテキストエディターの使用

同様のテーマで、設定 UI が数リリース前から導入されているため、JSON 設定の編集エクスペリエンスの簡素化を検討しています。settings.json ファイルを開いて JSON として設定を編集する場合、または設定 UI の {} ボタンをクリックするか、基本設定: ユーザー設定を開く (JSON) コマンドを呼び出す場合は、以前使用していた分割 JSON エディターではなく、シンプルな JSON エディターが表示されます。基本設定: デフォルト設定を開く (JSON) コマンドを使用すると、デフォルト設定のリストをまだ確認できます。

左側にデフォルト設定がある分割 JSON エディターが本当に必要な場合は、workbench.settings.useSplitJSON 設定を有効にすることで復元できます。必要に応じて JSON として設定を常に編集できることに注意してください。

拡張機能のネットワークプロキシサポート

Http: プロキシサポート (http.proxySupport) 設定により、デフォルトで、すべての拡張機能のネットワークプロキシサポートが有効になりました。

HTTP Proxy Support

言語

TypeScript 3.3

TypeScript 3.3.1 が同梱されるようになりました。この TypeScript アップデートにより、いくつかの重要なバグ修正と polish がもたらされます。

markdown.previewFrontMatter 設定の削除

markdown.previewFrontMatter 設定が削除されました。Markdown プレビューは、YAML フロントマターを常に非表示にするようになりました (これは markdown.previewFrontMatter のデフォルト設定でした)。

Markdown yaml PreambleGitHub Markdown Preview などの Markdown 拡張機能は、プレビューでフロントマターをテーブルとしてレンダリングします。

セマンティック選択

セマンティック選択が、HTML、CSS/LESS/SCSS、および JSON で利用可能になりました。

HTML, CSS, and JSON semantic selection

統合ターミナル

リフローサポート

ターミナルは、水平方向にサイズ変更されると、行を折り返したり、折り返しを解除したりするようになりました。

Text reflowing in the terminal

Windows での ConPTY サポート

Windows ConPTY API を介してターミナルプロセスを管理することが、Windows Insiders ファストリング (ビルド番号 18309+) でオプトインオプションとして利用できるようになりました。

{
  "terminal.integrated.windowsEnableConpty": true
}

これにより、Windows コンソールチームによって提供される ConPTY システムがターミナルのバックエンドとして使用されます。これを有効にすると、Windows ターミナルの多くの問題、特に色サポート、インタラクティブアプリケーション、および VT シーケンスをネイティブにサポートするシェルに関する問題が修正されるはずです。

WSL ターミナルでの 256 ANSI カラーサポートの前後の様子を以下に示します。

256 colors without ConPTY don't work

256 colors with ConPTY do work

Linux および macOS では、ターミナルは、ターミナルの初期ディレクトリではなく、現在の作業ディレクトリを基準にしてリンクを解決するようになりました。

After navigating into a directory, links relative to that path will work

ターミナルでの検索の改善

ターミナルでの検索で、インクリメンタルな「タイプアズユーファインド」検索と、1 行に複数の用語を検索する機能がサポートされるようになりました。

commandsToSkipShell 設定の改善

以前は、terminal.integrated.commandsToSkipShell 設定は、ターミナルによる評価をスキップし、代わりに VS Code によって処理されるすべてのコマンドのリストでした。これを変更するには、設定ファイルに 100 以上のコマンドのリストが必要になるため、扱いにくかったです。これが、追加と削除のリストに変更されるようになりました。デフォルトリストへの変更のみを含めます。

{
  "terminal.integrated.commandsToSkipShell": [
    // Make ctrl+n open a new file when the terminal is focused
    "workbench.action.files.newUntitledFile",
    // Send ctrl+e to the terminal
    "-workbench.action.quickOpen"
  ]
}

新しいバッファー実装の有効化

v1.29 で導入された TypedArray/ArrayBuffer ベースのターミナルバッファー がオンになり、古い実装が削除されました。これにより、ターミナルのスループットが大幅に向上し、メモリフットプリントが大幅に削減されるはずです。

デバッグとタスク

カスタムコマンドユーザー入力変数

最後のマイルストーンで導入された 入力変数 は、タスクまたはデバッグ構成でユーザー入力を求める強力なメカニズムです。当初、promptString および pickString 入力変数を利用できるようにしました。

このマイルストーンでは、入力変数が補間されるときに任意のコマンドを実行する新しいタイプの入力変数 command を導入します。コマンドは拡張機能によって提供される可能性があるため、ユーザー入力変数を新しい実装で拡張できるようになりました。

次の例は、特定のフォルダーで見つかったすべてのテストケースのリストからユーザーがテストケースを選択できるようにするデバッグ構成で、タイプ command のユーザー入力変数を使用する方法を示しています。一部の拡張機能が、構成可能な場所にあるすべてのテストケースを検索し、ピッカー UI を表示してそのうちの 1 つを選択する extension.mochaSupport.testPicker コマンドを提供していると想定されています。

{
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Test",
      "program": "${workspaceFolder}/${input:pickTest}"
    }
  ],
  "inputs": [
    {
      "id": "pickTest",
      "type": "command",
      "command": "extension.mochaSupport.testPicker",
      "args": {
        "testFolder": "${workspaceFolder}/tests"
      }
    }
  ]
}

タスク出力の分割ターミナルサポート

新しいターミナルを作成する代わりに、分割ターミナルパネルに出力を表示するようにタスクを構成できるようになりました。タスク構成は、presentation セクションの group 属性を使用して、タスクの出力が表示される場所を定義できます。

以下の 2 つのタスクの両方を実行すると、分割ターミナルに表示されるため、両方を同時に確認できます。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Task One",
      "type": "shell",
      "command": "echo One && sleep 5000",
      "problemMatcher": [],
      "presentation": {
        "group": "groupA"
      }
    },
    {
      "label": "Task Two",
      "type": "shell",
      "command": "echo Two && sleep 5000",
      "problemMatcher": [],
      "presentation": {
        "group": "groupA"
      }
    }
  ]
}

Split terminal tasks

プレビュー機能

プレビュー機能はリリース準備ができていませんが、使用するのに十分な機能があります。開発中の初期段階でのフィードバックをお待ちしています。

ワークベンチのグリッドレイアウト

ワークベンチレイアウトは、エディター自体で使用されているのと同じグリッドレイアウトを使用するように再設計されています。ここで行われている作業は、ワークベンチレイアウトを長期的に維持するためのエンジニアリング作業を簡素化するだけでなく、新しいエクスペリエンスを可能にするのにも役立ちます。

このマイルストーンでは、新しいグリッドレイアウトでより簡単に実現できること、つまりエディター領域の切り替えを示すために、そのようなエクスペリエンスの 1 つを出荷しています。実験的なグリッドレイアウトが有効になっている ("workbench.useExperimentalGridLayout": true) 場合、コードエディターを非表示にする新しいコマンド エディター領域の切り替え があります。これにより、以下に示すように、エディター領域全体を占有する VS Code ターミナルパネルを作成できます。

Terminal only window

ターミナルから code file.txt を使用してファイルを開くと、予想どおりにエディターがポップアップ表示されます。この機能はまだ開発中であり、既知の問題がありますが、ぜひチェックして問題を提出してください。この作業に関する問題の最新情報を このクエリ で入手できます。

HTML および CSS カスタムデータサポート

この機能はプレビュー段階であるため、設定、コントリビューションポイント、およびデータ形式は変更される可能性があります。

Custom data

今日、フロントエンド開発者は多くの場合、HTML/CSS のスーパーセットでコーディングします。

  • Web Components を使用すると、<my-button type="alert"></my-button> などのカスタム HTML 要素を使用できます。
  • PostCSS を使用すると、size などのカスタム CSS プロパティと、:any-link などのまだ標準化されていない CSS 機能を使用できます。
  • さまざまなフレームワークにより、ソース HTML/CSS でさらに優れた柔軟性が実現します。

このイテレーションでは、1.30 で導入された HTML カスタムデータサポート を改善し、CSS カスタムデータサポートを追加しました。

  • html.experimental.customData または css.experimental.customData を使用して、カスタムデータをロードします。(html.experimental.custom.tags および html.experimental.custom.attributes は削除されました。)
  • または、contributes.html.experimental.customData または contributes.css.experimental.customData を使用して、JSON を拡張機能にバンドルします。
  • 最後に、vscode-html-languageservice または vscode-css-languageservice を使用する言語サーバーを作成する場合は、カスタムデータを使用して言語サービスを作成できます。

カスタムデータは、VS Code の HTML/CSS の理解を強化します。たとえば、これらの HTML/CSS JSON コントリビューションを使用すると、VS Code はカスタム HTML タグ/属性および CSS プロパティ/pseudoClass の補完とホバーを提供できます。

{
  "version": 1,
  "tags": [
    {
      "name": "my-button",
      "description": "My button",
      "attributes": [
        {
          "name": "type",
          "description": "My button type",
          "values": [{ "name": "alert" }]
        }
      ]
    }
  ]
}
{
  "version": 1,
  "properties": [
    {
      "name": "my-size",
      "description": "Compiles down to `width` and `height`. See details at https://github.com/postcss/postcss-size."
    }
  ],
  "pseudoClasses": [
    {
      "name": ":my-link",
      "description": ":any-link pseudo class. See details at https://preset-env.cssdb.org/features#any-link-pseudo-class."
    }
  ]
}

上記のサンプルは octref/simple-customdata で入手でき、よりフル機能のサンプルは octref/svg-data で入手できます。

これらのガイドでは、データ形式と、設定および拡張機能コントリビューションポイントを介してデータ形式を使用する方法について説明します。

拡張機能の作成

拡張機能の変更イベント

extensions.all 配列が変更されたときに発生する新しいイベント extensions.onDidChange が追加されました。これは、拡張機能がインストール、アンインストール、有効化、または無効化された場合に発生する可能性があります。「拡張機能インストール時の再読み込み不要」セクションを参照してください。

/**
 * An event which fires when `extensions.all` changes. This can happen when extensions are
 * installed, uninstalled, enabled or disabled.
 */
export const onDidChange: Event<void>;

: 新しいコントリビューションポイントを導入する拡張機能の作成者は、このイベントをリッスンし、ワークベンチの状態をそれに応じて更新する必要があります。

ブラウザーでリソースを開く

いくつかの拡張機能が opnopen などの node モジュールを使用してブラウザーで URL を開いていることがわかりました。この機能への要望を考慮して、新しい API vscode.env.openExternal を追加しました。これは URL を予期しており、Web サイトリンク、メールリンク、またはアプリケーション URL ハンドラーを開くために使用できます。また、PDF ファイルなどのデフォルトアプリで開くために、ファイル URL も受け入れられます。

// open default browser
await vscode.env.openExternal(
  vscode.Uri.parse('https://github.com/microsoft/vscode/issues/66741')
);

: 現在 opn または open モジュールを使用している拡張機能の作成者は、この新しい API に切り替える必要があります。

グローバルストレージパス

拡張機能には、書き込み/読み取りアクセス権を持つローカルディレクトリを指すグローバルストレージパス ExtensionContext.globalStoragePath が提供されるようになりました。これは、すべてのワークスペースからアクセスできる大きなファイルを保存する必要がある場合に適したオプションです。

/**
 * An absolute file path in which the extension can store global state.
 * The directory might not exist on disk and creation is
 * up to the extension. However, the parent directory is guaranteed to be existent.
 *
 * Use [`globalState`](#_ExtensionContext.globalState) to store key value data.
 */
globalStoragePath: string;

VS Code は、拡張機能が削除されたときにこのパスのクリーンアップを処理します。

: 現在、ワークスペース間で状態を保存するためにカスタムファイルシステムロケーションを使用している拡張機能の作成者は、この新しい API に切り替える必要があります。

CodeActionKind.intersects

CodeActionKind.intersects メソッドは、CodeActionProvider がそのコードアクションを計算する価値があるかどうかを確認するのに役立ちます。

import * as vscode from 'vscode';

export class OrganizeImportsProvider implements vscode.CodeActionProvider {
    public provideCodeActions(
        document: vscode.TextDocument,
        range: vscode.Range,
        context: vscode.CodeActionContext,
        token: vscode.CancellationToken
    ): vscode.CodeAction[] {
        // Only return organize imports actions if they were explicitly requested
        // We can check this using `intersects`.
        if (!context.only || !vscode.CodeActionKind.SourceOrganizeImports.intersects(context.only)) {
            // Organize imports actions were not requested
            return [];
        }

        // Organize imports was requested
        ...
    }
}

contributes.resourceLabelFormatters

拡張機能は、ワークベンチのすべての場所で URI を表示する方法を指定するリソースラベルフォーマッターを提供できるようになりました。たとえば、拡張機能がスキーム remotehub を持つ URI のフォーマッターを提供する方法を次に示します。

"contributes": {
   "resourceLabelFormatters": [
        {
            "scheme": "remotehub",
            "formatting": {
                "label": "${path}",
                "separator": "/",
                "workspaceSuffix": "GitHub"
            }
        }
    ]
}

これは、スキーム remotehub を持つすべての URI が、URI の path セグメントのみを表示することによってレンダリングされ、区切り文字が / になることを意味します。remotehub URI を持つワークスペースは、ラベルに GitHub サフィックスが付きます。

キーバインディングに引数を追加

package.json でキーバインディングを定義するときに、引数を定義できるようになりました。実行時に、これらの引数がコマンドに渡されます。

以下のサンプルでは、{foo: 1, bar: 2} です。

"keybindings": {
  "key": "cmd+i",
  "command": "myCommand",
  "args": {
    "foo": 1,
    "bar": 2
  }
}

createTerminal 環境の完全な制御

新しい設定 TerminalOptions.strictEnv を true に設定すると、ターミナル環境に一切変更を加えず、代わりに拡張機能によって渡されたとおりに正確に使用されます。

// This will create a terminal whose environment only contains the single value
// FOO=BAR.
const terminal = createTerminal({
  name: 'Test terminal',
  env: {
    FOO: 'BAR'
  },
  strictEnv: true
});

Node.js のアップデート

VS Code が実行されている Electron のバージョンが更新され、Node.js が 8.9 から 10.2.0 に更新されました。すべての拡張機能が、この新しいバージョンの Node.js で実行されるようになります。Node.js 10 での非推奨の一覧については、Node v10.0.0 非推奨 を参照してください。

Octicons の更新

Octicons のバージョンを 8.3.0 に更新し、次のアイコンをサポートするようになりました。

Octicons update

  • $(arrow-both)
  • $(bold)
  • $(color-mode)
  • $(eye-closed)
  • $(fold-down)
  • $(fold-up)
  • $(grabber)
  • $(italic)
  • $(kebab-horizontal)
  • $(kebab-vertical)
  • $(note)
  • $(organization-filled)
  • $(person-filled)
  • $(project)
  • $(request-changes)
  • $(screen-full)
  • $(screen-normal)
  • $(smiley)
  • $(tasklist)
  • $(text-size)
  • $(unverified)
  • $(verified)

サポートするアイコンの完全なリストを表示するには、ドキュメントを参照してください。変更の詳細なリストについては、Octicon 変更ログを参照してください。

提案された拡張機能 API

すべてのマイルストーンには、新しい提案された API が付属しており、拡張機能の作成者はそれらを試すことができます。いつものように、フィードバックをお待ちしています。提案された API を試すには、次のことを行う必要があります。

  • 提案された API は頻繁に変更されるため、Insiders を使用する必要があります。
  • 拡張機能の package.json ファイルに、"enableProposedApi": true という行が必要です。
  • vscode.proposed.d.ts ファイルの最新バージョンをプロジェクトにコピーします。

提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的な変更を加える可能性があり、既存の拡張機能を破壊することは決して望ましくありません。

SignatureHelpContext.activeSignatureHelp

提案された SignatureHelpContext.activeSignatureHelp フィールドは、以前にアクティブだったシグネチャを追跡します。

import * as vscode from 'vscode';

class MySignatureHelpProvider implements vscode.SignatureHelpProvider {
    provideSignatureHelp(
        document: vscode.TextDocument,
        position: vscode.Position,
        token: vscode.CancellationToken,
        context: vscode.SignatureHelpContext
    ): vscode.ProviderResult<vscode.SignatureHelp> {
        // The active signature help when this provider was triggered or undefined if
        // no signature help was active.
        console.log(context.activeSignatureHelp);

        ...
    }
}

プロバイダーは、これを使用して、シグネチャヘルププロバイダーが再トリガーされる前に選択されていたオーバーロードを追跡できます。

自動修正と CodeAction.isPreferred

Code Action API は、VS Code のクイックフィックス (エディターに表示される電球) を強化します。特定のエラーに対するクイックフィックスが多数存在する可能性がありますが、多くの場合、これらのクイックフィックスの 1 つが問題に対する最も合理的な修正です。たとえば、スペルミスを修正することは、通常、新しいフィールドを生成するよりも可能性の高い修正です。

The fix spelling Quick Fix is usually more reasonable than generating properties

提案された API を使用することで、拡張機能は CodeActionisPreferred を設定して、それが根本的な問題に対する最も合理的な修正であることを示すことができます。優先される修正は、自動修正 コマンド (⌥⌘. (Windows, Linux Shift+Alt+.)) を使用して自動的に適用できます。

After applying an auto fix to the error

優先されるクイックフィックスは、一般的に次のようになります。

  • 根本的なエラーを正しく修正する (そして抑制しない)。
  • エラーに対する合理的な修正である。
  • 予期せずに広範な操作を実行しない。

リファクタリング コードアクションは、最も妥当なリファクタリングであることを示すために、優先とマークすることもできます。たとえば、複数の定数の抽出リファクタリングが利用可能な場合でも、多くの場合、ユーザーは最も近いローカルへの抽出のみを望んでいます。そのリファクタリング コードアクションが isPreferred とマークされている場合、ユーザーはそれに対して単一のキーバインドを設定できます。

{
  "key": "ctrl+shift+r ctrl+e",
  "command": "editor.action.codeAction",
  "args": {
    "kind": "refactor.extract.constant",
    "preferred": true
  }
}

すべてのソース アクションを修正

提案されている source.fixAll CodeActionKind は、ファイル内のエラーを自動修正できる拡張機能の規約を確立します。この新しいソース アクションの種類は、インポートの整理に似ており、すべてのアクションを修正するためのキーバインドを構成したり、保存時の自動修正を有効にしたりすることが容易になります。

// On save, run both fixAll and organizeImports source actions
"editor.codeActionsOnSave": {
    "source.fixAll": true,
    "source.organizeImports": true,
}

TSLint 拡張機能 は、提案されているこのソース コードアクションの種類を既に使用して、すべて修正と保存時の自動修正を実装しています。

デバッグ アダプター プロトコル

データ ブレークポイントに関する提案されたデバッグ アダプター プロトコル

データ ブレークポイント (別名「ウォッチポイント」) に関する進行中の作業のフォローアップ ステップとして、データ ブレークポイントのデバッグ アダプター プロトコルの設計において進捗がありました。提案された DAP の変更は、こちらのブランチにあり、対応する TypeScript API は、データ ブレークポイントの提案にあります。

デバッガー拡張機能でデータ ブレークポイントのサポートに関心がある場合は、提案をご覧ください。そしてフィードバックをお寄せください。

ライブ テーマ編集

カラー テーマ拡張機能を開発する際、拡張機能開発ホスト ウィンドウで色の変更がライブで適用されるのを確認できます。

live theme editing

ファイル アイコン テーマでも同様に機能します。

エンジニアリング

Electron 3.0 の更新と Electron 4.0 の調査

このマイルストーンでは、Electron 3 を VS Code にバンドルする調査を完了し、安定版でこの Electron バージョンを初めて出荷しました。これは主要な Electron リリースであり、Chrome 66 と Node.js 10.x (現在のバージョンである Chrome 61 と Node.js 8.x に比べて大幅な進歩) が付属しています。

同時に、Electron 4 への更新の調査を開始しました。これはまもなく Insiders にプッシュしたいと考えています。

パフォーマンス情報の改善

このリリースでは、開発者: 起動パフォーマンス コマンドの出力がエディターに表示されるようになり、DevTools には表示されなくなりました。これにより、読みやすくなり、すばやくアクセスできるようになりました。さらに、情報に関する多くの問題が修正されました。

WinJS.Promise の削除 ✅

VS Code が開始されたとき、JavaScript は今日のようなものではありませんでした。たとえば、ネイティブ Promise が存在しなかったため、チームは非同期処理に WinJS.Promise を使用することにしました。今日、状況は異なっています。ネイティブ Promise は現実のものとなり、WinJS.Promise は廃止されました。昨年の半ばに、コードベースから WinJS.Promise を削除する取り組みを開始し、12 月に完了しました。

厳密な null チェック

メインの VS Code コードベースの厳密な null チェックの作業を継続しました。皆様のご協力のおかげで、このマイルストーンでは、多数のテスト ファイルに対して厳密な null チェックを有効にすることができ、多数のエラーを排除することができました。

次のマイルストーンでも厳密な null チェックの取り組みを継続します。

拡張機能への貢献

私たちのチームは、多数の VS Code 拡張機能を保守または貢献しています。今月特に注目すべきは

TSLint のサポート

新しい TSLint 拡張機能は、source.fixAll コードアクションを使用して、保存時の自動修正をサポートするようになりました。

"editor.codeActionsOnSave": {
    "source.fixAll": true
}

非推奨の TSLint (eg2.tslint) 拡張機能のすべてのユーザーは、新しい TSLint 拡張機能に移行することをお勧めします。

Stylus 言語サポート

Stylus 言語拡張機能 は、vscode-css-languageservice のキュレーションされたデータを使用して、ステータス警告と構文ドキュメントを備えた最新の補完を提供します。

Stylus completion

GitHub Pull Requests

このマイルストーンでは、GitHub Pull Requests 拡張機能の改善に取り組み続けました。

以下に新機能の一部を示します

  • GitHub レビューのサポート。コメントを個別にではなく、レビューにグループ化できるようになりました。
  • ワークスペースが GitHub リポジトリの場合、Live Share セッションに参加すると、拡張機能がシームレスに動作します。
  • プロジェクトに GraphQL を段階的に導入したため、説明ビューにはプルリクエストの詳細情報が表示されるようになり、拡張機能の全体的なパフォーマンスが向上しました。
  • プルリクエストをマージするときに、マージコミットを作成Squash してマージ、または Rebase してマージ を選択できるようになりました。
  • パフォーマンスの向上。プルリクエスト、ファイルの変更の参照、プルリクエストのチェックアウトを行う際の GitHub および git 操作への API 呼び出しを削減しました。これにより、特に Windows で拡張機能の応答が速くなります。

拡張機能の完全なリリースノートは、vscode-pull-request-github releases で読むことができます。

新しいドキュメント

Python Jupyter Notebooks

新しい Jupyter Notebooks の操作トピックでは、VS Code 内から Jupyter Notebooks を開いたり、デバッグしたり、エクスポートしたりする方法について説明しています。

JavaScript と TypeScript のドキュメントの改善

JavaScript および TypeScript の記事を更新して、最新の状態にし、より役立つ情報を提供できるようにしました。

JavaScript および TypeScript ページでは、VS Code がこれらの言語に提供する機能の概要を説明しています。これらの機能の詳細な説明とチュートリアルは、目次の Node.js / JavaScript および TypeScript の下の新しいページに移動しました。

更新された Extension API ドキュメント

拡張機能の作成者向けに、VS Code API ドキュメントが書き直され、独自の目次に移動されました。

API TOC on VS Code website

ここでは、次の記事を見つけることができます

注目すべき修正

  • 7570: VS Code がオフラインで開かない
  • 14372: 拡張機能: 無効化状態をウィンドウ間で伝達する必要がある
  • 34396: シングル CPU VM での高 CPU 使用率
  • 58167: OS を再開すると、ターミナルとミニマップの復元テクスチャが破損する
  • 59794: editor.accessibilitySupport が 'auto' に設定されている場合、ターミナル スクリーン リーダーのサポートが機能しない
  • 61649: デバッグで未定義のプロパティ 'onError' を読み取ることができない
  • 63832: 拡張機能をデバッグするときに lsp サーバーにアタッチできない
  • 64948: GDB C/C++ デバッガーが起動せず、エラーが発生する
  • 65697: autoAttachChildProcesses を使用したデバッグ stopOnEntry が、ノード クラスターのフォークされたプロセスで尊重されない
  • 66302: Ctrl + L はデフォルトで repl をクリアするようにバインドする必要がある
  • 66681: 「比較用に選択」および「選択したものと比較」コマンドが仮想ドキュメントに表示されない

このリリースには、Microsoft Security Response Center CVE-2019-0728 のセキュリティ更新プログラムも含まれています。

謝辞

最後に、しかし決して重要でないわけではありませんが、VS Code をさらに改善するためにご協力いただいた次の皆様に、心から感謝申し上げます!

Issue トラッキングへの貢献。受信 Issue の管理にご協力いただける場合は、コミュニティ Issue トラッキング ページをご覧ください。

vscode への貢献

vscode-eslint への貢献

language-server-protocol への貢献

vscode-languageserver-node への貢献

debug-adapter-protocol への貢献

vscode-vsce への貢献

vscode-json-languageservice への貢献

  • @abc-55: コメントは許可されているが、末尾のカンマは許可されていない場合のバグを修正 PR #35

vscode-css-languageservice への貢献

vscode-html-languageservice への貢献

vscode-generator-code への貢献

vscode-recipes への貢献

localization への貢献

600人以上のCloud + AI LocalizationコミュニティメンバーがMicrosoft Localization Community Platform (MLCP) を利用しており、Visual Studio Codeには100人以上のアクティブなコントリビューターがいます。

新しい翻訳の提供、翻訳への投票、またはプロセス改善の提案など、皆様からの貢献に感謝いたします。

こちらはコントリビューターのスナップショットです。コントリビューター名リストを含むプロジェクトの詳細については、プロジェクトサイト(https://aka.ms/vscodeloc)をご覧ください。

  • ブルガリア語: Любомир Василев。
  • チェコ語: Samuel Tulach。
  • デンマーク語: Johan Fagerberg。
  • オランダ語: Jos Verlinde,Eric Algera。
  • フィンランド語: Petri Niinimäki, Valtteri Vatanen。
  • フランス語: Mohamed Sahbi, Thomas Gouthière。
  • ドイツ語: Frank Lindecke,Hans Meiser,Jakob von der Haar,Sebastian Seidl。
  • ヘブライ語: Kyle Orin。
  • ヒンディー語: Satish Yadav,nirav adatiya,shaswat rungta,Dhanvi Kapila。
  • ハンガリー語: Péter Nagy。
  • 中国語 (簡体字): 福永 叶, Xiangrui Kong, Licheng Ren, Young Bige, 文 陈, Y F, 彦佐 刘, 九鼎 谭。
  • インドネシア語: Azhe Kun。
  • イタリア語: Michael Longo。
  • 日本語: nh,Masakazu TENMYO, 裕子 知念。
  • 韓国語: SeungJin Jeong。
  • ノルウェー語: Stephan Eriksen。
  • ポーランド語: grzegorz m, Jakub Jedryszek。
  • ポルトガル語 (ブラジル): Bruno Talanski, Alan Willian, Letticia Nicoli, Alessandro Fragnani, Cynthia Zanoni。
  • ポルトガル語 (ポルトガル): Vitor Barbosa。
  • スペイン語: Engel Aguilar, José María Aguilar, julian3xl, Alvaro Enrique Ruano, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta。
  • タミル語: Mani M。
  • トルコ語: Muhammed Emin TİFTİKÇİ。
  • ウクライナ語: Did Kokos。
  • ベトナム語: Việt Anh Nguyễn。