September 2017 (version 1.17)

Visual Studio Code 2017 9 月のリリースへようこそ。今回のバージョンには数多くの重要な更新があり、ハイライトは次の通りです:

オンラインでリリースノートを確認するには code.visualstudio.comUpdates に移動してください。
Cloud Developer Advocate Brian Clark による 1.187release highlights video もご確認ください。

リリースノートは VS Code の重要な機能に関連する次のセクションに構成されています。多くの更新があります:

  • Workbench - Better macOS native tabs support, new editor label formats.
  • Editor - Snippet transforms, more Emmet preferences, optimized history navigation.
  • Languages - TypeScript 2.5.3, Extract Method triggers rename, language support in Markdown code blocks.
  • Extension Authoring - macOS Touch Bar support, styled completions and signature help text.

Insiders: できるだけ早く新しい新機能を確認したいですか?夜間に更新するInsiders buildをダウンロードすれば、最新のアップデートをすぐに試すことが可能です。

ワークベンチ

macOS Touch Bar サポート

macOS Touch Bar にアクションを表示する機能が追加されました。エディターの履歴を移動するアクションと、デバッガを制御する完全なデバッグ ツールバーを追加しています:

Touch Bar

拡張機能は新しい touchBar menu identifier を介して Touch Bar にコマンドを追加することができます。詳細については下記の Extension Authoring を参照してください。

macOS native window tab サポートの改善

macOS (Sierra) で "window.nativeTabs": true 設定を使用するとネイティブ ウィンドウ タブを有効にすることができます。今回のマイルストーンでは、ネイティブ タブの操作をよりしやすくしました。

Native Window Tabs

もう 1 つは、タブの最後で新しいウィンドウをタブとして開く “+” アクションに確認できます。またタブを管理するために一般的なアクションをウィンドウ メニューに追加しました。

Note: 現在 macOS High Sierra (10.13) でネイティブ タブは部分的にしかサポートされていません。私たちは修正に取り組んでいます。お楽しみに!

新しい Visual Studio Code のロゴ

私たちは VS Code のロゴと配色を更新しました。Stable はオレンジ色に、Insider は緑色になります。

ReleaseStableInsiders
macOS / LinuxmacOS stableWindows stable
WindowsmacOS insidersWindows insiders

Note: プラットホームによってはアプリケーション アイコンの OS キャッシュによって以前のロゴが表示される可能性があります。

編集メモ: Insider で変更が入った時点でいろいろな議論が既にされており、担当者が変更するつもりがないとも言っているのでこれで固定になると思っています。

–wait サポートの改善

VS Code はコマンド ラインから -wait 引数を指定して起動することにより開いているインスタンスが閉じられるまで待機できます。このマイルストーンでは開いているすべてのエディターが閉じられたときに呼び出しているプロセスを終了することで、この機能をより強力にしました。結果としてすでに開いているインスタンスから --wait を使うことができます。これはとても便利です。

Better --wait support

Note: デフォルトでは開かれたインスタンスを再利用するようになりました。これを避けるには -n 引数をコマンド ラインに追加します。

ファイル エンコードに関する新しい機能

言語ごとに files.encoding 設定に加え files.autoGuessEncoding 設定を構成できるようになりました。また VS Code では CP 850 と CP 865 エンコードもサポートするようにもなりました。

エディター ラベルを制御する新しい設定

新しい設定の workbench.editor.labelFormat はエディターの既定ラベルを調整します。可能値は short, medium, long, default です。デフォルトでエディターは同じ名前のエディターが開かれているときのみファイルパスに関する情報を表示します。ほかのオプションを使用することでエディターのラベルはパス情報を常に表示することが可能です。

Label Format

launch.json と tasks.json の ${workspaceFolder}

新しい置換変数 ${workspaceFolder} を導入しました。この変数は適切な launch.jsontasks.json を含むワークスペース フォルダーの絶対パスに置き換えられます。これは以前の ${workspaceRoot} と同じ効果がありますが、これからのマルチルート ワークスペースの構想ではもはや古い名前が十分でないと感じました。私たちは ${workspaceRoot} を非推奨にしていますが、後方互換性のためにまだサポートされます。変数置換の詳細についてはここを参照してください。

QuickOpen は ripgrep を使用します

QuickOpen (⌘P (Windows, Linux Ctrl+P)) はユーザーの入力フィルターを適用する前に ripgrep を使用してファイル名の完全なリストを取得するようになりました。Windows ユーザーは大規模なフォルダー上でパフォーマンスが向上するはずです。これは以前にリスト ファイル名を増やすために find を使用していた Linux と macOS と同等です。

エディター

折りたたみ

折りたたみで region marker がサポートされるようになりました。マーカーは言語構成で言語によって定義されます。

現在、次の言語でマーカーが定義されています:

  • TypeScript/JavaScript: //#region and //#endregion and //region and //endregion
  • C#: #region and #endregion
  • C/C++: #pragma region and #pragma endregion
  • F#: //#region and //#endregion
  • Powershell: #region and #endregion
  • VB: #Region and #End Region

Region Folding

各言語にはマーカー用のスニペットも用意されています。表示するには ‘#’ を入力してコード補完を呼び出します。

使用している言語用に region marker を構成するには、言語拡張機能の提供者に問い合わせてください。

オフサイド言語で折りたたみ

コード ブロックの off-side rule に従う言語では、空の行はその次の折りたたみ領域に属します。

原文: In languages that follow the off-side rule for code blocks, empty lines belong to the next folding region.

Off-side Folding

設定は言語設定で構成され、次の言語で有効になります:

Python, Yaml, Pug, Markdown, Clojure, CoffeeScript, FSharp

スニペット セレクター

Insert Snippet コマンドで表示されるスニペット ピッカーのドロップダウンは、User SnippetsExtension Snippets の 2 つのスニペット グループで表示されるようになりました。ユーザー定義のスニペットはリストの上に表示され、お気に入りのスニペットに素早くアクセスできます。

Snippet Buckets

スニペット変換

VS Code スニペット エンジンは変数の変換(Transformations)をサポートするようになりました。Transformations は値を挿入する前に変数の値を変更できます。フォーマットは var_name/regular_expression/format_string/options です。次のサンプルはファイル名から派生した public Java class を作成するスニペットの例です。

"Public Class": {
"prefix": "pclass",
"body": [
"public class ${1:${TM_FILENAME/(.*)\\.java/${1:/capitalize}/}} {",
"\tpublic $1 (${2:params}) {",
"\t\t$0",
"\t}",
"}"
],
"description": "New public class"
}

${TM_FILENAME/(.*)\\.java/${1:/capitalize}/} が新しい部分です:

  1. TM_FILENAME の値を解決します。例:myClass.java
  2. 正規表現 /(.*)\\.java を使用してそこで .java で終わるベース名の一致グループを作成します。例:myClass
  3. 最初に一致するグループの値をとり、大文字ではじめさせ (/capitalize)、それを挿入します (MyClass)。

詳細については snippet grammar を参照してください。

Lightbulb の改善

  • 新しい editor.lightbulb.enabled 設定はエディターでコード アクションを有効または無効にします。デフォルト値は true です。
  • コード アクション メニューはデフォルトで最初のエントリーが選択され実行しやすくなります。

履歴の移動を改善

VS Code にはファイル内またはファイル間のエディターの履歴を移動するためのコマンドがあります (workbench.action.navigateBack, workbench.action.navigateForward)。このマイルストーンの間に履歴で不要なつっかえを減らすためにエクスペリエンスを微調整しました:

  • We now require a minimum distance of 10 lines from one selection to another to add a new entry to history (previously we required a distance of 5 lines).
  • Navigating less than 10 lines replaces the last history stop within the file with that location and thus avoids introducing unwanted stops.

In addition, we no longer center the selection vertically when navigating unless the selection is outside of the view. これにより移動中コンテキストに居続けることが容易になります。

警告色のカラーリング

情報を区別するために、警告破線に違う配色を使用できるようになりました:

Snippet Buckets

Emmet preferences <a id=emmet-preferences”>

Emmet 2.0Emmet Preferences サポートをより追加し続けました。前回のリリースで追加した設定に加え 次を用意しています:

  • bem.elementSeparator
  • bem.modifierSeparator
  • filter.commentBefore
  • filter.commentTrigger
  • filter.commentAfter

filter.commentAfter プリファランスのフォーマットは Emmet 2.0 とは異なりシンプルです。

たとえば、古いフォーマットの代わりに

"emmet.preferences": {
"filter.commentAfter": "\n<!-- /<%= attr('id', '#') %><%= attr('class', '.') %> -->"
}

次を使用するかもしれません

"emmet.preferences": {
"filter.commentAfter": "\n<!-- /[#ID][.CLASS] -->"
}

統合ターミナル

新しいレンダリング エンジン

統合ターミナルは状況に応じて約 5 ~ 45 倍速く描画する新しい canvas ベースのレンダリング エンジンを使用するようになりました。この変更により、入力レイテンシ、消費電力、ターミナルのフレーム レートが大幅に向上します。

60 FPS is now possible in the terminal

詳細については blog post で詳しく読むことができます。

デバッグ

デバッグ コンソール メッセージにソースの場所を表示

デバッグ コンソールの出力メッセージで右側に originating source location を表示するようになりました:

Output message show their source location

このオリジナルをクリックするとエディターでソース ファイルが開きます。

Note: 次のデバッガは既にこの機能をサポートしています:

私たちはこの機能を多くのデバッグ拡張機能が採用することを期待しています。

Node Debugging デバッグ

WSL 対応の第一歩

Bartosz Sosnowski (@bzoz) による PR のおかげで、Node.js デバッガ (このマイルストーンでは “legacy” プロトコルのみ) は Windows Subsystem for Linux (WSL) で Node.js のアプリケーションの起動とデバッグをサポートするようになりました。

この機能を使用すると Linux subsystem on Windows で実行されるように useWSL フラグをデバッグ構成に追加することができます。このフラグは WSL で Node.js ランタイムを起動するだけでなく、WSL と Windows 間で正しくパスをパップするようにデバッガを構成します。

次は WSL で hello.js をデバッグするための最も簡単なデバッグ構成です:

{
"type": "node",
"request": "launch",
"name": "Launch in WSL",
"useWSL": true,
"program": "${workspaceFolder}/hello.js"
}

stdout/stderr から直接出力表示

console.log ではなく process.stdout.write を使用して stdout ストリームへの直接書き込みを行う Node.js ロギング ライブラリーがいくつかあります。これは高速ですが Node のデバッグ ソケットから送信されるものではなかったため、新しい ‘inspector’ プロトコルでデバッグする際にこれらのメッセージがデバッグ コンソールに表示されませんでした。

Vakhurin Sergey (@igelbox) からの PR #138 は、stdout/stderr 出力をデバッグ コンソールに表示するようデバッグ アダプターに指示する "outputCapture": "std" 起動構成オプションを追加しました。

タスク

タスクにマルチ フォルダー サポートを追加しました。複数のフォルダーを持つワークスペースを作成すると、タスク バージョン “2.0.0” を使用しているすべてのワークスペース フォルダーのタスクが収集され、対応する Run コマンドで表示します。起動構成は同じワークスペース フォルダーからタスクを preLaunch タスクとして参照することもできます。

Task Multi Root

Gulp, Grunt, Jake, npm のタスク自動検出はマルチルート ワークスペースもサポートするようになりました。また task contribution API は異なるワークスペース フォルダーに対するタスク貢献をサポートするように拡張されました。

なおマルチ フォルダー サポートは Insiders ビルドである櫃夜があります。

言語

TypeScript 2.5.3

VS Code に TypeScript 2.5.3 が含まれるようになりました。この更新ではメソッドの抽出リファクタリングやいくつかの重要な修正や改善が行われています。

JavaScript と TypeScript で import パスの候補

JavaScript と TypeScript は VS Code 1.9 以降の importパスに対して IntelliSense を提供しています。しかし、import を入力している間に手動で IntelliSense をトリガする必要があったためこの機能について知らなかった可能性がありました。VS Code 1.17 を使用すると importrequire パスの入力を始めると自動的に module とパスの提案を表示します:

Dark+ と Light+ テーマのカラライゼーション

改善

VS Code のビルトインの Dark+ と Light+ テーマでは、正規表現コンポーネントのハイライトより簡単に識別されるようになりました:

Dark+ colorization of a JavaScript regular expression

format string と string interpolation のカラライゼーションもいくつかの言語で改善されました。

Python:

Dark+ colorization of Python format string

Ruby:

Dark+ colorization of ruby string interpolation

メソッドの抽出時に名前変更

JavaScript と TypeScript のメソッドや関数の抽出リファクタリングは、抽出されたメソッドや関数で自動的に名前変更をトリガーするようになりました。

TypeScript watch ビルド タスクの自動検出

TypeScript は通常のビルド タスクとともににプロジェクト内の tsconfig.json ファイルにウォッチ タスクを自動的に作成するようになりました:

Build and watch tasks for a tsconfig.json file

JavaScript と TypeScript IntelliSense の Markdown サポート

JavaScript や TypeScript の提案とパラメーター ヒントが Markdown コンテンツを表示するようになりました。

Markdown in TypeScript suggestion documentation

JSX 言語スコープの改善

JSX タグ内の javaScript 式は javaScript 言語として正しくマークされるようになりました。これにより、ブラケット マッチングやコード コメントなどの基本的な言語機能に関するバグが修正されます。

Markdown コード ブロックでの言語サポート

Markdown ファイルの囲まれたコード ブロックはその内容に言語モードを設定できるようになりました。つまり、ブラケット マッチングやコード コメントなどの基本的な言語機能では、Markdown の言語設定ではなくコード ブロックの言語設定を使用するようになります。

Commenting and other basic editor features now use the language settings from the fenced code block's language

Markdown 参照リンクの検出

参照リンクと参照リンクの定義はエディターでリンクとして検出されるようになりました:

Some text with a [link][link definition] in it
[link definition]: /path/to/link

link definition をクリックすると [link definition]: に移動します。/path/to/link がリンクとして検出されています。

CSS 言語の改善

ビルトイン CSS/LESS/SCSS 言語サーバーが更新され、次の機能がサポートされるようになりました:

  • @supports ルールの検証と補完
  • クエリと @import のサポート
  • contain といくつかの flex プロパティのサポート

R 言語の改善

R 言語はここで公開されている文法に基づいてシンタックス ハイライトを改善しました。

ソース管理

マルチ SCM サポートの改善

ソース管理プロバイダー UX で継続的な繰り返しにより master-detail の実装が可能になりました。

multiple scm providers

複数の利用可能なリポジトリーがあるとき、新しい SOURCE CONTROL PROVIDERS で概要を表示します。これらは、いくつかの SCM プロバイダーで提供することができます。たとえば Git リポジトリーと TFS ワークスペースを並べて表示することができるのです。このビューでリポジトリーを選択することで強調表示されます。複数のリポジトリーを選択するには ctrl+clickshift+click を使用します。これらは分割された下のビューに表示されます。

パフォーマンスの向上

ソース コントロール 拡張機能の API と UI についてはかなりのパフォーマンス向上がありました。全体的にエクスペリエンスは多くのオプジェクトを持つリポジトリーではるかにスムーズです。

Git stash コマンド

前回のリリースでこれを見逃したかもしれませんが、Krzysztof Cieślak (@Krzysztof-Cieslak) からの PR のおかげで、 VS Code には Source Control ビューの More (…) ドロップダウンで Git stash コマンドがあります。

git stash commands

新しいドキュメント

Java 言語サポート

新しい Java 言語のトピックでは、VS Code で優れた Java code intelligence とデバッグ サポートのために Java Extension Pack をインストールして使用する方法について説明しています。

ヒントとコツ

VS Code を使用してすばやく生産的になれるよう Tips and Tricks トピックを追加しました。これには VS Code チームが日常的に使用するお気に入りの機能とキーボード ショートカットが含まれています。

デバッグのレシピ

様々なデバッグ シナリオのために recipes に取り組んでおり、これらをガイドする新しいトピックと役立つブログ記事のリンクを提供する新しいトピックを追加しました。React, Angular, Electron や Docker のようなラインタイムのデバッグ フレームについては Debugging Recipes を参照してください。

Keyboard Shortcut Cheat Sheet の更新

キーボード ショートカット PDF を更新して Open User Settings (⌘, (Windows, Linux Ctrl+,)), Open Keyboard Shortcuts (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)) といった便利なコマンドのキーバインドを追加しました。

拡張機能オーサリング

拡張機能作成者のためのマルチ ルート ガイド

すべてのユーザーにマルチルート サポートを提供するときは非常に近いです。すべての VS Code コア機能 [SCM, Settings, Debug, Tasks, …] と拡張機能 [HTML, JS/TS, ESLint, Docker, …] はマルチルートのコンセプトをサポートするようになりました。

私たちは拡張機能をマルチルート ワークスペースを準備するための方法についてのガイドを作成しました。詳細については Adopting Multi Root Workspace APIs ガイドを参照してください。議論済みのすべての API は安定しており現在利用可能であると考えられています。ただしマルチルート ワークスペースは VS Code Insider リリースでのみ有効です。

拡張機能の作成者ガイドは次を説明しています:

  • Basic APIs
  • Settings
  • Impact on extensions that have a language client/server model

このガイドに加え新しい API を使用する samples repository には新しいサンプルがあります。 フォルダー名が ‘multi’ のサンプルを検索してください (例: basic-multi-root-sample

ファイルの保存/開くダイアログ

拡張機能 API には拡張機能がファイルやフォルダーを保存したり開いたりするためのダイアログを表示する新しい 2 つの関数があります。次のスニペットには画像ファイルを選択するダイアログが表示されます。

vscode.window.showOpenDialog({
canSelectMany: true,
filters: { 'Images': ['png', 'jpg'] }
}).then(result => {
if (result) {
console.log(`${result.length} files have been selected`);
}
});

補完と署名のヘルプを改善

CompletionItemsSignatureHelp の API を拡張してこれらのドキュメントは MarkdownString として提供できるようになりました。これにより fancy rendering、埋め込みコード スニペット、ドキュメントへのリンクが可能になります。私たちの TypeScript と JavaScript 拡張機能はすでに MarkdownString を使用しています。

const item = new vscode.CompletionItem('Pretty');
item.documentation = new vscode.MarkdownString('*Hello*, `World`');

CompletionContext

CompletionItemProvider.provideCompletionItems は新しい CompletionContext パラメーターを使用して提供しています。このコンテキストには補完プロバイダーがどのようにトリガーされたかに関する情報が含まれています:

interface CompletionContext {
/**
* How the completion was triggered.
*/
readonly triggerKind: CompletionTriggerKind;
/**
* Character that triggered the completion item provider.
* `undefined` if provider was not triggered by a character.
* The trigger character is already in the document when the completion provider is triggered.
*/
readonly triggerCharacter?: string;
}

Touch Bar サポート

拡張機能は macOS で Touch Bar にコマンドを提供できるようになりました。新しい menu identifier touchBar はこの目的のために追加されています:

"contributes": {
"menus": {
"touchBar": [
{
"command": "markdown.showPreview",
"when": "editorLangId == markdown",
"group": "navigation"
}
]
}
}

常にコマンド コンテキストは現在のアクティブなファイルで、when に基づきコマンドを動的に表示および非表示にすることができます。これはラベルまたはアイコンのどちらかを持つことができます。コマンドがアイコンを提供する場合 touch bar のスペースはとても限られているためラベルは表示されません。

Note: 現在コマンドのアイコンは PNG ファイルである必要があります。SVG はサポートされません。

‘active’ ビュー列を参照

エディターのレイアウトは 1, 2, 3 列に機能し showTextDocument 関数をしようするときは列を設定できます。ただし、現在アクティブな列を参照したいときがしばしばあります。これを簡単にするために、新しいシンボル列 ViewColumn.Active を追加しました。これは常に現在アクティブなカラムのドキュメントを表示しその列が何であるかを把握するのを助けます。

貢献者の Eric Amodio (@eamodio) に感謝します。

MarkedString vs MarkdownString

このリリースでは MarkedStrings のコマンド リンクを使用できないことに注意してください。これがあなたの拡張機能へ影響を与える場合、私達から既にコンタクトがされている可能性があります。新しい MarkdownString を使用してこれを信頼できるものとしてマークしてください。詳細と背景はここで確認してください。

新しいソース管理メニュー

scm/sourceControl menu id を使用して Source Control ビューの新しい SOURCE CONTROL PROVIDERS セクションでインライン ソース管理プロバイダーにコマンドを提供できるようになりました。現在、context menu commands のみがサポートされています。

タスク貢献 API

Task API は異なるワークスペース フォルダーに貢献しているタスクをサポートするように拡張されました。拡張機能でタスクを作成するコンストラクターには、タスクがグローバル、ユーザー ローカル、ワークスペース フォルダーに属するかを特定する追加の引数があります。コンストラクタのシグネチャは次のようになります:

export class Task {
/**
* Creates a new task.
*
* @param definition The task definition as defined in the taskDefinitions extension point.
* @param target Specifies the task's target. It is either a global or a workspace task
* or a task for a specific workspace folder.
* @param name The task's name. Is presented in the user interface.
* @param source The task's source (e.g. 'gulp', 'npm', ...) presented in the user interface.
* @param execution The process or shell execution.
* @param problemMatchers the names of problem matchers to use, like '$tsc'
* or '$eslint'. Problem matchers can be contributed by an extension using
* the `problemMatchers` extension point.
*/
constructor(taskDefinition: TaskDefinition, target: WorkspaceFolder | TaskScope.Global | TaskScope.Workspace, name: string, source: string, execution?: ProcessExecution | ShellExecution, problemMatchers?: string | string[]);
}

デバッグAPIの更新

vscode.startDebug コマンドは非推奨です

7 月のリリースで適切な vscode.debug.startDebugging(...) APIの導入により、vscode.startDebug コマンドを使用してデバッグ セッションを開始する必要はなくなりました。私たちは 8 月に vscode.startDebug コマンドを非推奨にしています。10 月にこれを削除する計画です。この機能を取りやめることが難しい場合はここにコメントしてください。

Command vscode.workbench.customDebugRequest は非推奨です

7 月のリリースで適切な DebugSession.customRequest(...) API の導入により、vscode.workbench.customDebugRequest コマンドを使用してカスタム リクエストをデバッグ アダプターに送る必要はなくなりました。8 月に vscode.workbench.customDebugRequest は非推奨になりました。10 月にこれを削除する計画です。この機能を取りやめることが難しい場合はここにコメントしてください。

package.jsonでのデバッグ貢献

新しいアクティブ化イベント onDebug

新しいデバッグ API を使用するには VS Code が必要なとき利用するために、拡張機能は早期に DebugConfigurationProvider を登録する必要があります。通常 DebugConfigurationProvider は拡張機能の activate 関数に登録されるので、新しい onDebug アクティブ化イベントを導入しています。これはちょうどデバッグが開始する (例: 起動構成の設定やデバッグ セッションの起動) 前に発火します。

拡張機能が DebugConfigurationProvider を登録している場合は package.json の activationEvents 貢献に onDebug があることを確認してください。

アクティブ化イベント onDebug:type は非推奨です

DebugConfigurationProvider API の導入により、(‘type’ が debug type な) onDebug:type アクティブ化イベントを正しくサポートすることが難しくなりました。代わりに新しく導入されたアクティブ化イベント onDebug を使用することをお勧めします。

9 月のマイルストーンで onDebug:type のアクティブ化イベントを非推奨にし、10 月の更新でこれを削除する計画です。この機能を取りやめることが難しい場合はここにコメントしてください。

package.json で debuggers.startSessionCommand` を使用することは非推奨です

DebugConfigurationProvider 型で resolveDebugConfiguration メソッドを導入すると、debuggers 貢献ポイントで startSessionCommand を貢献する必要がなくなりました。したがって 8 月のリリースで startSessionCommand コマンドを非推奨にし 10 月に削除する予定です。この機能を取りやめることが難しい場合はここにコメントしてください。

package.jsondebuggers.initialConfigurations を使用することは非推奨です

DebugConfigurationProvider 型で provideDebugConfigurations メソッドを導入すると、debuggers 貢献ポイントで debuggers.initialConfigurations を貢献する必要がなくなりました。したがって 8 月のマイルストーンで、コマンド ID を指定する機能を非推奨にし 10 月に削除する予定です(しかし JSON オブジェクトリテラルへの貢献サポートは続きます)。この機能を取りやめることが難しい場合はここにコメントしてください。

Debug Adapter Protocol

BreakpointEventremoved reason をサポートします

BreakpointEventreason 属性の値に removed reason が追加されました。この追加により、デバッグ アダプターはそのクライアント(フロントエンド)にブレークポイントが削除されたことを通知できます。

Please note: このリリースでは VS Code がブレークポイントの new, changed, removed reason を完全にサポートするようになりました。以前までの VS Code では changed (or updated) breakpoint イベントのみをサポートしていました。breakpoint イベントが reason に正しい値を使用していることを確認してください。

Locale をデバッグ アダプターに渡すことができます

オプションでデバッグ アダプター プロトコルのクライアント(フロントエンド)は、現在の Locale をデバッグ アダプターに渡すことができるため、クライアントに渡された視覚的ユーザー情報(例: エラー メッセージ)に対して正しい変換を選択できます。initialize リクエストにはオプションの locale 属性がでました。

プレビュー: Remote File System API

私たちは “リモート ファイル システム”のサポートを模索している最中です。新しい API を使用するとファイルやフォルダーをエクスプローラーに追加したり、ファイル/フォルダーの作成、削除、移動、コピー、ファイルの読み書きをしたりできます。目標はリモート ソースからのアイテムが表示され、ローカル ディスクと同じような動作をすることです。

次のスクリーンキャプチャではディスク上のファイルのように Azure のファイルが表示されています。

File With Changes from Ftp

これに慣れるには proposed-apis を参照し、さらに重要な ftp-sample を確認してください。私たちは API の更新と洗練にあわせてこのサンプルを最新の状態に保ちます。

プレビュー: Multi Root Workspaces

Note: マルチルート機能は安定版で利用できるまでは Insider ビルドでのみ使用可能です。試すには https://code.visualstudio.com/insiders から Insiders ビルドを入手してください。

1 つの VS Code インスタンスで複数のフォルダー(issue #396)を開くために対応を進めてきました。これまでのリリースではこの機能のプレビューが用意されました(1.14.0 release notes, 1.15.0 release notes, 1.16.0 release notes)。

今回のマイルストーンではウィンドウの再読み込みを行わずにワークスペースに移行することにフォーカスをあてて、マルチルート ワークスペースに対応する拡張機能用の API をさらに導入しました。

ウィンドウを再読み込みせずにワークスペースに入る

これまではワークスペースを作成/保存、ワークスペースにフォルダーを追加するときにウィンドウ全体をリロードする必要がありました。このウィンドウのリロードが必要なくなりマルチルートのエクスペリエンスがよりスムーズになりました。

拡張機能の推奨事項

拡張機能の推奨事項のサポートをマルチルート ワークスペースに拡張しました。すべてのルート フォルダーから拡張機能の推奨事項は統合され表示されます。また Extensions: Configure Recommended Extensions (Workspace) コマンドを使用してマルチルート ワークスペース用の推奨事項を構成することもできます。これによりワークスペース構成ファイルが開き extensions/recommendations セレクションに推奨事項を入力することができます。

Extension Recommendations

新しい API: Workspace Folder Picker

VS Code でのマルチルート サポートの到来により、拡張機能が特定の WorkspaceFolder をユーザーに尋ねたいときがあることに気が付きました。新しい提案 API showWorkspaceFolderPick メソッドはピッカーを開き結果を返します。

Workspace Folder Picker

新しい API: RelativePattern

特定の WorkspaceFolder へのファイル パスを簡単にフィルタリングできるように、新しい RelativePattern タイプを追加し、次の場所でサポートしました:

  • workspace.createFileSystemWatcher
  • workspace.findFiles(include, exclude)
  • DocumentFilter#pattern

タイプは次のようなクラスです:

/**
* A relative pattern is a helper to construct glob patterns that are matched
* relatively to a base path. The base path can either be an absolute file path
* or a [workspace folder](#WorkspaceFolder).
*/
class RelativePattern {
/**
* A base file path to which this pattern will be matched against relatively.
*/
base: string;
/**
* A file glob pattern like `*.{ts,js}` that will be matched on file paths
* relative to the base path.
*
* Example: Given a base of `/home/work/folder` and a file path of `/home/work/folder/index.js`,
* the file glob pattern will match on `index.js`.
*/
pattern: string;
/**
* Creates a new relative pattern object with a base path and pattern to match. This pattern
* will be matched on file paths relative to the base path.
*
* @param base A base file path to which this pattern will be matched against relatively.
* @param pattern A file glob pattern like `*.{ts,js}` that will be matched on file paths
* relative to the base path.
*/
constructor(base: WorkspaceFolder | string, pattern: string)
}

次の呼び出しを介して相対パターンを作成できます:

// Construct a relative pattern for the first root folder
const relativePattern = new vscode.RelativePattern(vscode.workspace.workspaceFolders[0], '*.ts');

RelativePattern が使用されるとき、ファイル パスはパターンの基本パスに対して相対的にマッチングされます。たとえば /home/work/folder の基本パスと /home/work/folder/index.ts のファイルパスが与えられた場合 RelativePattern 内のパターンは index.ts に一致します。

賢いワークスペース ファイル形式の保存

ワークスペース ファイルをディスクで保存するとき、ファイルが既にスラッシュを使用している場合には Windows 上でパスに普通のスラッシュを使用することをお勧めします。(編集メモ: バックスラッシュを使用している場合?)これにより Windows と他のプラットホーム間でワークスペース ファイルを簡単に共有できるようになります。

さらに、ワークスペース ファイル内のコメントを保存できるようになりました。JSON はファイル内のコメントを許可していませんが、VS Code 設定に使用しているのと同じ JSON パーサーを使用することで、コメントを許可し、エラートレラントを高めました。たとえば、末尾のカンマでワークスペース ファイル全体が無効になることはありません。

ワークスペースのフォルダー名

構成ファイル内の各フォルダーに name プロパティを割り当てることができるようになりました。この名前はエクスプローラーで表示され同じベース名を持つ複数のワークスペース フォルダーで使用されます。

エンジニアリング

問題管理の自動化

私たちは Probot インスタンスの使用範囲をメイン リポジトリー超えて拡張しました。これを使用して私たちの拡張機能と他のリポジトリーで issue の自動アサインと “needs more info” の自動クローズをするようになります。

注目の変更

  • 27285: Onedrive 配下にあるフォルダーを開くことができません
  • 25934: 高 DPI の外部モニターで VS Code がちらつく
  • 35148: VS Code がオフスクリーンで開きます
  • 22696: Cmd-A は保存dialogの save-as フィールドで選択できません

Thank You

最後になりましたが、VS Code をより良いものへするために協力してくれた次の方々に多大なる感謝を込めて:

vscodeへの貢献:

vscode-eslint: への貢献:

language-server-protocolへの貢献:

vscode-node-debug への貢献:

vscode-node-debug2 への貢献:

vscode-generator-code への貢献:

vscode-github-issues-prs への貢献:

vscode-recipes への貢献:

localization への貢献:

Transifex でコミュニティーによる多言語化を開始してから 6 ヶ月です。現在 Transifex の VS Code project チームには 400 人以上のメンバーがいます。新しい翻訳の提供、翻訳への投票、プロセスの改善案による貢献に感謝します。

このリリースでトップ貢献者のスナップショットです。貢献者のリストを含むプロジェクトの詳細については https://aka.ms/vscodeloc を参照してください。

  • French: Antoine Griffard.
  • Italian: Aldo Donetti, Piero Azi, Giuliano Latini.
  • German: LosSandreas, Carsten Kneip, Christian Gräfe, Dejan Dinic, Levin Rickert.
  • Spanish: Raul Rama, Carlos Mendible, Roberto Fonseca, Jorge Serrano Pérez, David Triana, José M. Aguilar, Andy Gonzalez.
  • Japanese: EbXpJ6bp, Yuichi Nukiyama, Yuki Ueda, tanaka_733, Kyohei MORIYAMA, Yosuke Sano.
  • Chinese (Simplified): Joel Yang, YingFeng, pluwen, Shawn Dai, Wang Weixuan, 林昊.
  • Chinese (Traditional): Winnie Lin, Duran Hsieh, Ke-Hsu Chen, Poy Chang.
  • Korean: HANSEULMARO KIM.
  • Portuguese (Brazil): Roberto Fonseca, Bruno Sonnino, Danilo Dantas, Alessandro Fragnani, Andy Gonzalez.
  • Hungarian: Tar Dániel, Attila Csaba Kiss.
  • Turkish: Adem Coşkuner.
  • Czech: Vojtěch Habarta, Frantisek Veris, Vít Staniček.
  • Dutch: Gerald Versluis, Maarten van Stam, Sander van de Velde, Armand Duijn, Splinter Suidman, Geert van der Cruijsen, Peter Hut.
  • Indonesian: Joseph Aditya P G, Herman Prawiro.
  • Polish: Wojciech Maj, Patryk Adamczyk.
  • Swedish: Joakim Olsson, Christian Svensson.
  • Bengali: Ferdous Ahmed, Reaz Patwary.
  • Vietnamese: Thanh Phu.

8f52355d86afd5ebb6295f70d19832512de7f59e