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

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 イベントをリッスンすることによる外部の貢献ポイント所有者からの採用が必要です。

Workbench

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

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

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

キーボードナビゲーションの改善

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

Keyboard navigation type filter

このウィジェットを使用して、highlight モードと filter モードを切り替えることもできます。モードを切り替えるキーボードショートカットが必要な場合は、list.toggleFilterOnType コマンドを実行するキーバインドを設定できます。ワークベンチ > リスト: キーボードナビゲーション (workbench.list.keyboardNavigation) 設定は、ツリー要素の最初の数文字を入力するだけでその要素にフォーカスする 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

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

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

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

Goメニューの改善

Go メニューに、より多くのナビゲーションアクションが追加され、見つけやすくなりました。

Go menu

エクスプローラーコンテキストメニューの切り取りコマンド

多数のリクエストに基づいて、エクスプローラーのコンテキストメニューに切り取りコマンドを追加しました。

Cut command in context menu

高速スクロール

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

Zenモードが行番号を非表示に

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

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

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

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

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

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

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

新しいタイトル変数

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

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

出力パネル

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

スクリーンキャストモード

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

Screencast mode

Editor

スマート選択

選択メニューの選択範囲の拡大選択範囲の縮小の実装の改善に取り組みました。言語サーバーがセマンティクス知識に基づいて選択ステップを指定できる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 の背後で引き続き利用可能でした。しかし、マリー・コンドーが言うように、もはや喜びをもたらさないものは整理しなければなりません。後方参照や先読みなどの正規表現機能を使用している場合は、search.usePCRE2 設定をオンにしてください。

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

同様のテーマで、設定UIがいくつかリリースされてから、JSON設定の編集エクスペリエンスを簡素化することを検討しています。settings.json ファイルを開くか、設定UIの {} ボタンをクリックするか、Preferences: Open User Settings (JSON) コマンドを呼び出すことで、JSONとして設定を編集すると、以前の分割JSONエディターではなく、シンプルなJSONエディターが表示されます。Preferences: Open Default Settings (JSON) コマンドを使用して、デフォルト設定のリストを引き続き表示できます。

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

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

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

HTTP Proxy Support

言語

TypeScript 3.3

TypeScript 3.3.1 を同梱するようになりました。このTypeScriptアップデートには、いくつかの重要なバグ修正と改良が含まれています。

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 fast ring (ビルド番号18309+) でオプトインオプションとして利用できるようになりました。

{
  "terminal.integrated.windowsEnableConpty": true
}

これにより、Windows Consoleチームが提供する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

ターミナル検索の改善

ターミナルの検索は、増分的な「入力しながら検索」機能と、単一の行で複数の用語を検索する機能をサポートするようになりました。

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ベースのターミナルバッファが有効になり、古い実装は削除されました。これにより、ターミナルのスループットが大幅に向上し、メモリ使用量も大幅に削減されるはずです。

デバッグとタスク

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

前のマイルストーンで導入された入力変数は、タスクまたはデバッグ構成でユーザー入力を要求するための強力なメカニズムです。最初に、promptStringpickString 入力変数が利用可能になりました。

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

次の例は、特定のフォルダーで見つかったすべてのテストケースのリストからユーザーがテストケースを選択できるようにするデバッグ構成で、command 型のユーザー入力変数を使用する方法を示しています。何らかの拡張機能が、構成可能な場所にあるすべてのテストケースを特定し、それらのいずれかを選択するためのピッカーUIを表示する 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)、コードエディターを非表示にする新しいコマンドToggle Editor Areaがあります。これにより、以下に示すように、エディター領域全体を占める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 は削除されました。)
  • または、JSONを contributes.html.experimental.customData または contributes.css.experimental.customData とともに拡張機能にバンドルします。
  • 最後に、vscode-html-languageservice または vscode-css-languageservice を使用する言語サーバーを記述している場合は、カスタムデータを使用して言語サービスを作成できます。

カスタムデータは、VS Code のHTML/CSSの理解を強化します。たとえば、これらのHTML/CSS JSONの貢献により、VS CodeはカスタムHTMLタグ/属性およびCSSプロパティ/擬似クラスの補完とホバーを提供できます。

{
  "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で利用できます。

これらのガイドは、データ形式と、設定および拡張機能の貢献ポイントを通じてそれらを使用する方法について説明しています。

  • HTMLカスタムデータを使用するためのガイド
  • CSSカスタムデータを使用するためのガイド

拡張機能作成

拡張機能の変更イベント

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を想定しており、ウェブサイトのリンク、メールのリンク、またはアプリケーション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 がCode Actionを計算する必要があるかどうかをチェックするのに役立ちます。

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 deprecationsを参照してください。

更新された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 changelogを参照してください。

提案された拡張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

推奨されるクイックフィックスは、一般的に次のとおりである必要があります。

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

リファクタリングCode Actionも、最も合理的なリファクタリングであることを示すために preferred としてマークできます。たとえば、複数の定数を抽出リファクタリングが利用可能であっても、ユーザーは多くの場合、最も近いローカルに抽出したいだけです。そのリファクタリングCode Actionが 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 拡張機能は、この提案されているソースCode Actionの種類を使用して、保存時にすべての修正と自動修正を実装しています。

Debug Adapter Protocol

データブレークポイントのデバッグアダプタープロトコル案

データブレークポイント (別名「ウォッチポイント」) に関する進行中の作業のフォローアップステップとして、データブレークポイントのデバッグアダプタープロトコルの設計においていくつかの進捗がありました。提案された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 は今日のようなものではありませんでした。たとえば、ネイティブのプロミスはなく、チームは非同期作業のために WinJS.Promise を使用することにしました。今日、状況は異なります。ネイティブのプロミスは本物であり、WinJS.Promise は廃止されています。昨年の半ばに、コードベースから WinJS.Promise を削除する取り組みを開始し、12月に完了しました。

厳密なnullチェック

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

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

拡張機能への貢献

私たちのチームは、いくつかの VS Code 拡張機能を維持または貢献しています。特に今月は以下です。

TSLint のサポート

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

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

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

Stylus言語のサポート

Stylus言語拡張機能は、vscode-css-languageservice から厳選されたデータを使用して、ステータス警告と構文ドキュメントを含む最新の補完を提供できるようになりました。

Stylus completion

GitHubプルリクエスト

このマイルストーンでは、GitHubプルリクエスト拡張機能の改善作業を続けました。

以下にいくつかの新機能を示します。

  • GitHub レビューをサポート。コメントを個別に追加するだけでなく、レビューにグループ化できるようになりました。
  • ワークスペースが GitHub リポジトリである場合、Live Share セッションに参加すると、拡張機能がシームレスに動作します。
  • GraphQL をプロジェクトに徐々に導入した結果、説明ビューでプルリクエストの詳細情報が表示されるようになり、拡張機能全体のパフォーマンスが向上しました。
  • プルリクエストをマージする際に、マージコミットを作成Squash and Merge、またはRebase and Mergeを選択できるようになりました。
  • パフォーマンスの改善。プルリクエストの閲覧、ファイルの変更、プルリクエストのチェックアウト時にGitHubへのAPI呼び出しとgit操作の両方を削減し、特に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 の下の新しいページに移動されました。

更新された拡張機能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: nodeクラスターフォークプロセスでautoAttachChildProcessesによるstopOnEntryデバッグが尊重されない
  • 66302: Ctrl + L はデフォルトでreplをクリアするようにバインドされるべき
  • 66681: 「比較のために選択」および「選択と比較」コマンドが仮想ドキュメントに対して表示されない

このリリースには、Microsoft Security Response Center CVE-2019-0728 のセキュリティアップデートも含まれています。

ありがとうございます

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

課題追跡への貢献。寄せられた課題の管理にご協力いただける場合は、Community Issue Tracking ページをご覧ください。

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への貢献

Microsoft Localization Community Platform (MLCP) を使用している Cloud + AI Localization コミュニティメンバーは600人以上おり、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。
© . This site is unofficial and not affiliated with Microsoft.