2018年11月 (バージョン 1.30)
更新 1.30.2: この更新は、これらの課題に対処します。
更新 1.30.1: この更新は、これらの課題に対処します。
ダウンロード: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball
Visual Studio Code 2018年11月リリースへようこそ。このバージョンには、皆さんに気に入っていただけるであろう重要なアップデートが多数含まれており、主なハイライトの一部を以下にご紹介します。
- 複数行検索の改善 - 正規表現を使わずに複数行検索パターンを簡単に作成できます。
- Linuxでのカスタムタイトルバー - カスタムタイトルバーとメニューバーがLinuxでデフォルトになりました。
- 参照ビュー - すべての参照検索ビューに最近の検索履歴が含まれるようになりました。
- スニペットコメント変数 - スニペット変数が言語に応じて正しいコメントを挿入するようになりました。
- JS/TSコールバック表示の改善 - 匿名コールバックのコンテキストを表示できるようになりました。
- JSDoc Markdown強調表示 - JSDoc内のMarkdownコードブロックのシンタックスハイライトが含まれます。
- デバッグ初期設定の簡素化 - 初期起動設定のデフォルト値の改善とクイックピックUI。
- フォルダーを開いたときにタスクを実行 - プロジェクトフォルダーを初めて開いたときに実行するタスクを設定します。
- 拡張機能のバージョンを選択 - Marketplace拡張機能の以前のバージョンをインストールします。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
リリースノートは、VS Codeの重点分野に関連する以下のセクションにまとめられています。さらに詳しい更新は以下の通りです。
- ワークベンチ - メニュースクロールとオーバーフロー処理の改善、settings.jsonをワンクリックで開く。
- 言語 - JS/TSのリネームが分割代入を処理するようになり、不足している 'new' クイックフィックスを追加。
- デバッグ - デバッグコンソールを削除、VS Codeプロセスエクスプローラーから直接デバッグ。
- タスク - タスクターミナルをクリア、タスク変数のユーザー入力、前回のタスクコマンドを再実行。
- 拡張機能の作成 - 宣言への移動のサポート、新しいシグネチャヘルプのコンテキスト。
Insiders: 新しい機能をできるだけ早く見たいですか?毎日のInsidersビルドをダウンロードして、利用可能になり次第最新のアップデートを試すことができます。Visual Studio Codeの最新ニュース、アップデート、コンテンツについては、Twitterで@codeをフォローしてください!
Workbench
複数行検索入力
先月、複数行検索のサポートを追加しました。今月は、検索UXを改善して使いやすくしました。正規表現を書かなくても、複数行のテキストで検索できるようになりました。検索ボックスでShift+Enterを入力すると改行が挿入され、検索ボックスが拡大して完全な複数行クエリが表示されます。エディターから複数行選択をコピーして検索ボックスに貼り付けることもできます。

Linuxでのカスタムタイトルバーとメニューバーがデフォルトに
いくつかのリリースにわたって、カスタムタイトルバーとメニューバーを介してWindows上のメニューのアクセシビリティとテーマ性を改善してきました。Linuxではオプションで利用可能でしたが、このリリースではデフォルトで有効になります。

ネイティブタイトルバーを使用するには、window.titleBarStyleをnativeに設定します。
スクロール可能なメニュー
カスタムメニューバーが有効な場合、メニューはVS Codeウィンドウ内にレンダリングされるように制限されます。以前は、メニューがウィンドウの境界線によって切れてしまう可能性がありました。この問題は、必要に応じてコンテキストメニューをスクロール可能にすることで解決されました。

メニューバーのオーバーフローメニュー
メニューバーとウィンドウタイトルを両方表示するのにウィンドウ幅が足りない場合、メニューバーには新しいオーバーフローメニュー (...) も表示されます。

設定エディターのアクションの移動
設定エディターのアクション (settings.jsonを開く、変更された設定を表示など) は、設定エディター内の...メニューからエディターのタイトルバーに移動されました。これにより、他のエディタータイプと一貫性が保たれ、settings.jsonを開くは、中括弧{}ボタンでワンクリックでアクセスできるようになりました。キーボードショートカットエディターも同様の変更を行っています。

参照ビュー
参照ビューが洗練され、プレビュー機能ではなくなりました。現在、2つのコマンドがあります。
- 参照ビューを開くすべての参照を検索。
- ピークビューで参照を開く参照をピーク。
参照ビューは起動時に非表示ですが、一度使用すると表示されたままになります。すべての検索結果がクリアされると、以前の検索履歴が表示されます。

ビューの上部には結果の概要が表示され、結果をクリアしてコピーするためのコンテキストメニューがあります。多くのバグが修正され、全体的な安定性が向上しました。
Editor
スニペットコメント変数
現在の言語に応じて、行コメントまたはブロックコメントを挿入する新しいスニペット変数が追加されました。ブロックコメントにはBLOCK_COMMENT_STARTとBLOCK_COMMENT_ENDを使用し、それ以外の場合はLINE_COMMENTを使用します。
以下のスニペットは、JavaScriptファイルには/* Hello World */を、HTMLファイルには<!-- Hello World -->を挿入します。
{
"hello": {
"scope": "javascript,html",
"prefix": "hello",
"body": "$BLOCK_COMMENT_START Hello World $BLOCK_COMMENT_END"
}
}
宣言と定義
これまで、VS Codeは記号の定義を表示するためのコマンド、例えば定義へ移動や定義をピークを提供していました。これは、一部の言語が他の言語よりも厳密に記号の宣言と定義を区別するという事実を考慮していませんでした。この問題を修正し、記号の宣言のためのコマンド宣言へ移動と宣言をピークが追加されました。

宣言へ移動のような言語機能に必要なデータは拡張機能によって計算され、新しいAPIが提供されています。これについては拡張機能の作成セクションで読むことができます。
スムーズなカーソルアニメーション
カーソルが移動するたびにトランジションアニメーションを有効にする新しい設定editor.cursorSmoothCaretAnimationが追加されました。
Git 統合
デフォルトのクリックアクションの変更
ソース管理ビューでファイルをクリックしたときのデフォルトアクションを変更できるようになりました。デフォルトでは、VS Codeは差分ビューを開きますが、git.openDiffOnClickをfalseに設定することで、ファイルは通常のエディターで開かれます。
コミット時にプッシュまたは同期
新しい設定git.postCommitCommandにより、コミット後にリポジトリをプッシュまたは同期できるようになりました。利用可能な値はnone (デフォルト)、push、およびsyncです。
言語
TypeScript 3.2
VS Codeには、TypeScript 3.2.2が含まれるようになりました。このリリースでは、bind、call、およびapplyの厳密な型付けやBigIntサポートなど、いくつかのエキサイティングな新言語機能が導入されています。TypeScriptのアップデートには、いくつかの重要なバグ修正と新しいツール機能および改善も含まれています。
JavaScriptおよびTypeScriptコールバックの表示の改善
以前のJavaScriptおよびTypeScriptの匿名コールバックはすべて、アウトラインビュー、ブレッドクラムビュー、およびドキュメントシンボルリストで<function>としてラベル付けされていました。これにより、どの関数を本当に探しているのかを区別することができませんでした。

TypeScript 3.2以降では、VS Codeはコールバック関数に対してより多くのコンテキストを表示し、それらを区別できるようになりました。

JS/TS分割代入を適切に処理する名前変更
名前変更はJavaScriptおよびTypeScriptの分割代入を処理し、必要に応じてエイリアスを導入するようになりました。

不足している新しいJS/TSクイックフィックスの追加
クラスをインスタンス化するときにnewを忘れてしまいましたか?TypeScript 3.2は、役立つ新しいクイックフィックスを提供します。

このクイックフィックスは、TypeScriptと型チェックされたJavaScriptで機能します。
JS/TSパス候補のファイルアイコン
VS Code 1.29での作業に基づいて、IntelliSenseウィジェットはJavaScriptおよびTypeScriptのパス候補にファイルアイコンを表示するようになりました。
![]()
JSDocコメント内のMarkdown要素の強調表示
JSDocブロック内のフェンス付きコードブロックやその他のMarkdown要素が、シンタックスハイライトされるようになりました。

このインライン強調表示は、ホバーとIntelliSenseドキュメントのJSDocのVS CodeのMarkdownレンダリングとより一致します。
デバッグ
デバッグ初期設定の簡素化
このマイルストーンでは、最も人気のあるデバッグ拡張機能用に生成されるlaunch.jsonファイルを簡素化することを目指しました。私たちの目標は、ユーザーがデバッグを開始して設定しやすくすることでした。これは、不要な起動構成属性を非表示にし、初期のlaunch.jsonを生成する際のユーザーインタラクションを改善するためにクイックピックUIを使用することを意味しました。この取り組みの詳細については、課題 #62851で確認できます。
デバッグコンソールの削除
前回のマイルストーン以降、複数のデバッグセッションをデバッグする際に、セッションごとに複数のデバッグコンソールを表示するようになりました。今回、対応するセッションがアクティブでなくなった場合に、そのデバッグコンソールの内容をクリアすることで、これらのコンソールを削除できるようになりました。デバッグコンソールのライフサイクルを管理するための明示的なコマンドは追加しませんでした。これは、現在の方法がより直感的で使いやすいと信じているためです。
デバッグ構成のユーザー入力変数の改善
ユーザー入力を促すlaunch.json変数の概念を改善し、一般化しました。詳細はタスクセクションで確認できます。
プロセスエクスプローラーからのデバッグ
VS Codeプロセスエクスプローラー (開発者: プロセスエクスプローラーを開く) から、デバッグコンテキストメニューアクションを使用してNode.jsプロセスをデバッグできるようになりました。
以下では、統合ターミナルから開始されたNode.jsプロセスへのアタッチの様子を確認できます。

Node/Chrome デバッグ
smartStepがデフォルトで有効に
数リリース前、smartStepの動作を変更して、より便利にしました。smartStepを使用すると、特にTypeScriptにおいてデバッグ体験が大幅に向上するため、常に有効になるように動作を変更しました。
localRootの自動デフォルト値
Node.jsリモートデバッグシナリオにおいて、デバッグ設定属性localRootが自動的に${workspaceFolder}にデフォルト設定されるようになり、remoteRootのみを指定すればよくなりました。
タスク
フォルダーを開く際に実行
フォルダーを開くたびに常に実行するタスクがある場合、その"runOn"プロパティを設定することで、フォルダーを開いたときに自動的に実行するように構成できます。VS Codeリポジトリの新しい厳密なnullチェックを誰も破らないようにするために、これが役立つことがわかりました。"runOn": "folderOpen"を追加することで、タスクの自動実行を許可しているすべてのユーザーは、厳密なnullチェックに違反したときにマーカーを受け取ります。
{
"type": "npm",
"script": "strict-null-check-watch",
"label": "TS - Strict Null Checks",
"isBackground": true,
"problemMatcher": {
"base": "$tsc-watch",
"owner": "typescript-strict-null",
"applyTo": "allDocuments"
},
"runOptions": {
"runOn": "folderOpen"
}
}
タスクターミナルのクリア
タスクを実行する前にターミナルをクリアするには、タスクのpresentationオプションを"clear": trueで構成できます。
{
"type": "gulp",
"task": "tslint",
"label": "Run tslint",
"presentation": {
"clear": true
}
}
タスクの再実行
タスクは、タスク: 前回のタスクを再実行コマンド (workbench.action.tasks.reRunTask) を使用して再実行できるようになりました。デフォルトでは、再実行タスクは入力を含む実行変数を再評価します。前回の実行ですでに評価された変数を使用するには、"reevaluateOnRerun"オプションを構成します。
{
"type": "gulp",
"task": "tslint",
"label": "Run tslint",
"runOptions": {
"reevaluateOnRerun": false
}
}
タスクおよびデバッグ設定のユーザー入力変数の改善
長らくVS Codeは、${variableName}構文を通じてtasks.jsonとlaunch.jsonでの変数置換をサポートしていました。
launch.jsonでは、ユーザー入力プロンプトを表示する変数 (例: Quick Pickベースのプロセス選択を開く${command:pickNodeProcess}) を使用することも可能でした。この機能はtasks.jsonでは利用できず、コマンドベースの変数には他の制限もありました (課題#9297、#9544、#30588を参照)。
このマイルストーンでは、ユーザー入力変数が一般化され、改善され、launch.jsonおよびtasks.jsonで利用できるようになりました。この作業により、コマンド構文もtasks.jsonに導入されました。
ユーザー入力変数について、新しい変数カテゴリinputを導入しました。これにより、${input:variableName}という構文になります。この単純な構文では、ユーザーに意味のあるUIを提示するのに十分ではないため、launch.jsonとtasks.jsonに新しいinputsセクションを導入し、追加の構成属性を指定できるようにしました。
Angular CLIを使用した例

以下は、サポートされている属性のリストです。
id- これらの属性が使用される対応する変数名。type- ユーザー入力ウィジェットの種類。このリリースでは、promptString(文字列入力ボックス用) とpickString(文字列クイックピック用) がサポートされています。description- ユーザーに表示される説明テキスト。default- ユーザーがEnterを押すだけで使用されるデフォルト値。
最初の例では、タスク構成 (tasks.json) でユーザー入力変数を使用する方法を示します。
{
"tasks": [
{
"label": "Echo input",
"type": "shell",
"command": "echo ${input:echoPrompt}"
}
],
"inputs": [
{
"id": "echoPrompt",
"description": "Please enter a value",
"default": "default echo text",
"type": "promptString"
}
]
}
別の例では、デバッグ構成 (launch.json) で2つのオプションの中から選択するためのユーザー入力変数を示します。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/${input:pickProgram}"
}
],
"inputs": [
{
"id": "pickProgram",
"description": "Select client or server",
"type": "pickString",
"options": ["client.js", "server.js"],
"default": "client.js"
}
]
}
ユーザー入力変数を既存のコマンドベースの変数と組み合わせて、ユーザー入力変数を拡張機能で提供できるようにする予定です。
拡張機能
以前のバージョンのインストール
現在のバージョンに問題がある場合、拡張機能の以前のバージョンに戻せるようになりました。VS Codeは、インストールされた拡張機能に別のバージョンをインストールアクションを提供し、利用可能なバージョンのドロップダウンが表示されます。

応答しない拡張機能ホスト
VS Codeは拡張機能を別のNode.jsプロセス (拡張機能ホスト) で実行します。これにより、拡張機能コードはVS Code自体から分離されますが、異なる拡張機能同士は分離されません。JavaScriptのシングルスレッドの性質上、拡張機能は意図的であろうとなかろうと、拡張機能ホストのスレッドを独占し、他のすべての拡張機能をブロックし、操作が応答しないように見える可能性があります。
VS Codeは拡張機能ホストを監視し、応答しなくなった場合に拡張機能ホストのプロファイリングを開始します。拡張機能が応答しない原因であると特定された場合、ユーザーに問題を報告するように促す最小限の通知が表示されます。

ユーザーの方は、通知が小さいのでステータスバーのベルアイコンに注意してください。拡張機能の作成者の方は、応答しない問題を受け取った場合、何が起こったのか、そして問題に添付されたCPUプロファイルを開く方法を説明するこのガイドを確認してください。
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
HTMLカスタムタグ/属性のサポート
新しいhtml.experimental.custom.tagsおよびhtml.experimental.custom.attributes設定により、VS Codeが起動時に読み込むタグと属性のリストを指定できるようになりました。HTMLファイルを編集する際、VS Codeはこれらのタグと属性の自動補完とホバーを提供します。これは、例えばWebコンポーネントで非常にうまく機能します。

octref/web-components-examplesリポジトリを開いて、この機能をテストできます。この機能はプレビュー版であり、設定名とJSON形式は変更される可能性があります。
フィードバックや機能リクエストがある場合は、issue #62976に続けてください。
拡張機能のネットワークプロキシサポート
すべての拡張機能でネットワークプロキシサポートを有効にするための実験的な設定Http: Proxy Supportがあります。詳細についてはまだ作業中ですが、試してみて、機能するかどうかをお知らせください。(注: 現在、ネットワークプロキシサポートを有効にすると、GitHub Pull-Request拡張機能のサインインが破損します。)

ほとんどのセットアップではoverrideに設定するのが最適ですが、うまくいかない場合は比較のためにonを試してみてください。
拡張機能の作成
宣言へ移動
宣言へ移動機能をサポートするために拡張機能が実装できるDeclarationProviderインターフェースを追加しました。宣言プロバイダーは、シンボルの宣言である場所を返す必要があります。同じファイルに複数のプロバイダーが登録されている場合、それらの結果はマージされます。
署名ヘルプコンテキスト
SignatureHelpProvidersは、署名ヘルプがどのようにトリガーされたかに関する情報を提供するcontextパラメーターを受け取るようになりました。コンテキストには以下が含まれます。
- 署名ヘルプがどのようにトリガーされたか(トリガー文字、コマンド、またはドキュメントコンテキストの変更)。
- 署名ヘルプがトリガーされた原因となった文字。
- トリガーされたときに署名ヘルプが以前に表示されていたか?
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
vscode.languages.registerSignatureHelpProvider(
'markdown',
new (class implements vscode.SignatureHelpProvider {
provideSignatureHelp(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken,
context: vscode.SignatureHelpContext
): vscode.ProviderResult<vscode.SignatureHelp> {
// Return fake signature help result
const sigHelp = new vscode.SignatureHelp();
sigHelp.activeParameter = 0;
sigHelp.activeSignature = 0;
sigHelp.signatures = [new vscode.SignatureInformation(getLabel(context))];
return sigHelp;
}
})(),
{
triggerCharacters: ['('],
retriggerCharacters: [',']
}
);
}
function getLabel(context: vscode.SignatureHelpContext): string {
const parts = [];
// How was signature help triggered
switch (context.triggerKind) {
case vscode.SignatureHelpTriggerKind.Invoke:
parts.push('invoke');
break;
case vscode.SignatureHelpTriggerKind.ContentChange:
parts.push('change');
break;
case vscode.SignatureHelpTriggerKind.TriggerCharacter:
parts.push('character');
break;
}
// The character (if any) that caused signature help to be triggered
if (context.triggerCharacter) {
parts.push(context.triggerCharacter);
}
// Was signature help already showing when it was triggered again?
if (context.isRetrigger) {
parts.push('retrigger');
}
return parts.join(' ');
}
さらに、SignatureHelpProvidersは、トリガー文字と再トリガー文字の異なるセットで登録できるようになりました。再トリガー文字は、署名ヘルプがすでに表示されている場合にのみ署名ヘルプをトリガーします。
上記のSignatureHelpProviderの動作を以下に示します。

提供されたTypeScriptサーバープラグインの構成
拡張機能は、VS Codeの組み込みTypeScript拡張機能が提供するAPIを通じて、提供されたTypeScriptサーバープラグインに構成データを送信できるようになりました。
// In your VS Code extension
export async function activate(context: vscode.ExtensionContext) {
// Get the TS extension
const tsExtension = vscode.extensions.gettsExtension(
'vscode.typescript-language-features'
);
if (!tsExtension) {
return;
}
await tsExtension.activate();
// Get the API from the TS extension
if (!tsExtension.exports || !tsExtension.exports.getAPI) {
return;
}
const api = tsExtension.exports.getAPI(0);
if (!api) {
return;
}
// Configure the 'my-typescript-plugin-id' plugin
api.configurePlugin('my-typescript-plugin-id', {
someValue: process.env['SOME_VALUE']
});
}
TypeScriptサーバープラグインは、onConfigurationChangedメソッドを通じて構成データを受け取ります。
// In your TypeScript plugin
import * as ts_module from 'typescript/lib/tsserverlibrary';
export = function init({ typescript }: { typescript: typeof ts_module }) {
return {
create(info: ts.server.PluginCreateInfo) {
// Create new language service
},
onConfigurationChanged(config: any) {
// Receive configuration changes sent from VS Code
}
};
};
このAPIにより、VS Code拡張機能はVS Codeの設定をTypeScriptサーバープラグインと同期したり、プラグインの動作を動的に変更したりできます。このAPIが実際にどのように使用されているかについては、TypeScript TSLintプラグインとlit-html拡張機能をご覧ください。
カスタムビュー
ビューにすべて折りたたむアクションを追加するための提案されたAPIが安定しました。
ツリー項目の説明
TreeItemのdescriptionプロパティを使用して、ツリー項目に説明を追加できるようになりました。ツリー項目がリソースによってサポートされている場合、descriptionをtrueに設定することで、VS Codeにリソースから説明を派生させることもできます。
/**
* A human readable string which is rendered less prominently.
* When `true`, it is derived from [resourceUri](#_TreeItem.resourceUri), and when `falsy`, it is not shown.
*/
description?: string | boolean;

デバッグAPI
より豊富なDebugSession
DebugSession APIは、ワークスペースフォルダーと解決されたデバッグ構成を公開するようになりました。解決済みとは、すべての変数が置換され、プラットフォーム固有の属性セクションが一致するプラットフォームに対して「平坦化」され、一致しないプラットフォームに対して削除されたことを意味します。
ブレークポイントの一意のID
Breakpointクラスは、その存続期間全体で変更されない一意のID (id) を公開するようになりました。
デバッグアダプター作成を制御するAPIが確定
このマイルストーンでは、デバッグアダプターの作成を制御する拡張機能APIを確定しました。このAPIは、特定のデバッグタイプに対してvscode.debug.registerDebugAdapterDescriptorFactoryで登録する必要がある新しいDebugAdapterDescriptorFactoryを使用します。ファクトリーには、デバッグアダプターが必要になるたびにVS Codeによって呼び出される単一のメソッドcreateDebugAdapterDescriptorがあります。デバッグセッションが引数として渡され (セッションはワークスペースフォルダーと解決済み構成の両方を公開するようになったため)、実装はデバッグアダプターの作成を要求されたときに完全なコンテキストにアクセスできます。createDebugAdapterDescriptorは、VS Codeにデバッグアダプターを作成および/または接続する方法を記述するオブジェクトを返す必要があります。
DebugAdapterExecutable記述子は、VS Codeがセッションごとにデバッグアダプターを外部プロセスとして起動し、stdin/stdoutを通じて通信するようにします。オプションプロパティバッグは、作業ディレクトリと環境変数を指定できます。DebugAdapterServerは、VS Codeが複数のセッションを処理し、ソケットを介して通信するサーバープロセスに接続するようにします。
ご注意ください: このAPIの最終化に伴い、古い (提案された) API DebugConfigurationProvider.debugAdapterExecutableおよび非常に古いコマンドベースのアプローチ (コントリビューションポイントDebuggers、属性: adapterExecutableCommand) を非推奨とします。次のリリースでこれらのAPIのサポートを削除する予定ですので、これらのAPIの使用を中止してください。
このスニペットは、このAPIを使用してデバッグアダプターをそのコンテナ拡張機能に埋め込んで実行する方法を示しています。
let server: Net.Server;
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable) {
// start server on launch of first debug session
if (!server) {
// start listening on a random port
server = Net.createServer(socket => {
const s = new MockDebugSession();
s.setRunAsServer(true);
s.start(<NodeJS.ReadableStream>socket, socket);
}).listen(0);
}
// make VS Code connect to debug server instead of launching debug adapter
return new DebugAdapterServer(server.address().port);
}
});
Debug Adapter Tracker APIが確定
このマイルストーンでは、VS Codeとデバッガー拡張機能の間で使用されるデバッグアダプタープロトコルを追跡するための拡張機能APIを確定しました。このAPIは、vscode.debug.registerDebugAdapterTrackerFactoryでデバッグタイプに対して登録する必要がある新しいDebugAdapterTrackerFactoryを使用します。ファクトリには、VS Codeがデバッグアダプターとの通信を開始する前に呼び出される単一のメソッドcreateDebugAdapterTrackerがあります。createDebugAdapterDescriptorは、DebugAdapterTrackerの実装を返す必要があります (または追跡を阻止するためにundefinedを返すこともできます)。
このスニペットは、Node.jsデバッガーのデバッグアダプタープロトコルをログに記録するためにこのAPIを使用する方法を示しています。
vscode.debug.registerDebugAdapterTrackerFactory('node', {
createDebugAdapterTracker(session: DebugSession) {
return {
onWillReceiveMessage: m => console.log(`> ${JSON.stringify(m, undefined, 2)}`),
onDidSendMessage: m => console.log(`< ${JSON.stringify(m, undefined, 2)}`)
};
}
});
必要なときに拡張機能がアクティブ化されるように、package.jsonでアクティベーションイベントonDebugAdapterProtocolTracker:<debug type>を使用できます。デバッグタイプを省略すると、すべてのデバッグタイプに対して拡張機能がアクティブ化されます。
{
"activationEvents": ["onDebugAdapterProtocolTracker:node"]
}
Debug Adapter Protocol
runInTerminal応答の新しいshellProcessId属性
デバッグアダプターがターミナルでターゲットを実行する必要がある場合、DAP runInTerminalリクエストを使用できます。このリクエストはオプションでターゲットプロセスのprocessIdを返すことができますが、実際にはフロントエンドの実装がこの情報を提供できたものはありません。このため、ターミナルシェルのプロセスIDを返す新しい属性shellProcessIdを導入しました (これははるかに簡単に判別できます)。
クリップボード
クリップボードAPIが確定され、すべての拡張機能で使用できるようになりました。これにより、拡張機能は文字列をOSのクリップボードにコピーアンドペーストできます。
補完項目
複数行にわたる補完項目を挿入すると、VS Codeはインデントを調整します。これは常に望ましいわけではないため、この動作を制御するためにvscode.CompletionItem.keepWhitespaceを追加しました。
シンボルプロバイダーのラベル
ドキュメントシンボルプロバイダーを登録する際、ラベル (DocumentSymbolProviderMetadata) を提供できるようになりました。このラベルは、ドキュメントに複数のシンボルプロバイダーがある場合に、ブレッドクラムとアウトラインビューに表示されます。
提案された拡張API
各マイルストーンには新しい提案APIが付属しており、拡張機能開発者はこれらを試すことができます。いつものように、皆様からのフィードバックをお待ちしております。提案APIを試すには、次の手順を実行します。
- 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
- 拡張機能の
package.jsonファイルに次の行が必要です:"enableProposedApi": true。 - vscode.proposed.d.tsファイルの最新バージョンをプロジェクトにコピーします。
提案APIを使用する拡張機能は公開できないことに注意してください。次回のリリースでは互換性のない変更が行われる可能性があり、既存の拡張機能を壊すことは決して望ましくありません。
カスタムビューのメッセージテキストのサポート
ツリービューメッセージ
TreeViewのmessageプロパティを使用して、ツリービューにメッセージを設定できるようになりました。
/**
* An optional human-readable message that will be rendered in the view.
*/
message?: string | MarkdownString;

スマート選択と拡張機能
スマート選択機能をサポートするために、提案されたAPIを追加しました。現在、選択範囲を拡大または選択範囲を縮小コマンドを実行すると、選択範囲は弱いヒューリスティックに基づいて計算されます。このヒューリスティックを改善するために取り組んでいますが、拡張機能の作成者も巻き込みたいと考えています。そのため、SelectionRangeProviderの提案されたAPIを追加しました。
エンジニアリング
WinJS-Promiseの削除
VS Codeが始まった頃、JavaScriptは今日のようではありませんでした。例えば、ネイティブなPromiseはなく、当時チームはWinJS.Promiseを使用することを決定しました。今日に早送りすると、状況は異なります。ネイティブなPromiseは現実のものとなり、WinJS.Promiseは時代遅れです。
そのため、私たちはWinJS.Promiseからの移行を進めています。APIとランタイムの動作の違いにより、これは簡単な作業ではありません。WinJS.Promiseへの参照は約10000件から始まり、現在は1471件にまで減少しました。そのうち約500件はインスタンス化であり、単純な型アノテーションではありません。この壮大な旅を間もなく終えると確信しています!
Electron 3.0の継続的な調査
このマイルストーン中に、Electron 3.0.0をVS Codeにバンドルする検討を継続しました。これは主要なElectronリリースであり、Chrome 66とNode.js 10.xが付属しています (現在のバージョンがChrome 61とNode.js 8.xであることを考えると、大幅な進歩です)。12月にはInsidersユーザーにアップデートをプッシュして、追加のフィードバックを収集する予定です。協力にご興味がある場合は、VS Code Insidersを必ずインストールしてください。
コミュニティによる問題追跡
コミュニティは長らく、問題追跡において私たちを定期的に助けてくれました。ますます多くの問題が報告されるにつれて(現在、1日平均70件)、私たちは最も活動的なコミュニティメンバーを招いて、作業中の問題に特定のラベルを追加するようにしました。GitHubにはきめ細かい権限がないため、私たちは問題ボットを使用して特定のコメントを検知し、それらにラベルを追加しています。謝辞については、以下の感謝セクションをご覧ください。
厳密なNullチェック
VS Codeメインコードベースの厳密なnullチェックの作業は継続されています。現在、約800のファイルで厳密なnullチェックを行っており、コードベース全体がカバーされるまでこの作業を継続します。
このエンジニアリングの取り組みとそのプロセスについて詳しくは、課題 #60565で確認できます。
拡張機能への貢献
私たちのチームは、いくつかの VS Code 拡張機能を維持または貢献しています。特に今月は以下です。
GitHubプルリクエスト
このマイルストーンでは、GitHubプルリクエスト拡張機能の改善に取り組みました。
以下にいくつかの新機能を示します。
- ローカルブランチから直接プルリクエストを作成します。
- チェックアウトしたプルリクエストで一連のソースコード変更を提案します。
- プルリクエストの説明ページでステータスチェック情報を表示します。
拡張機能の完全なリリースノートは、vscode-pull-request-github releasesで確認できます。
注目すべき修正点
- 37929: デバッグ環境ドロップダウンメニュー作成時にデバッガをアクティブ化しない
- 60187: デバッガがjestテストでブレークポイントにヒットしない
- 61590: 設定とキーバインドエディタでエディタアクションの表示を一貫させる
- 62370: エディタ内の診断ホバーを改善
- 62500: コマンドパレットに「カーソルまで実行」を追加
- 62778: 中央配置レイアウトでサイズが復元されない
- 63618: Electron 2.0.13 64bitのデバッグが「Cannot connect to runtime process, timeout after 10000ms」エラーで失敗。しかし、Electron 32bitでは成功。
ありがとうございます
最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!
問題追跡への貢献者
vscodeへの貢献者
- Adrien Becchis (@AdrieanKhisbe): 文法インジェクション - より広いスコープを考慮 PR #50534
- David Bailey (@davidbailey00): URLハンドラのデスクトップファイルからStartupWMClassを削除 PR #63750
- Anuj (@desaianuj): presentationの代わりにrepresentation PR #63477
- Donald Pipowitch (@donaldpipowitch): .hintrcを追加し、.babelrcをjsonc文法に移動 PR #63759
- Eric Amodio (@eamodio)
- Alexandr Fadeev (@fadeevab): 最新の文法に合わせてmakefileの色付けテストを更新 PR #61961
- Guillaume Poussel (@gpoussel): Fix #62278: IPv6リンクのサポート PR #62293
- Aleksandr Filatov (@greybax): issue #46816を修正 PR #60404
- Napoleon Oikonomou (@iamnapo): READMEが存在する場合、ウェルカムページではなくREADMEを表示 PR #60061
- Raul Humberto Lopez Lopez (@iBlackShadow): オプション変更によって検索がトリガーされたときに、検索履歴にエントリを追加 PR #61993
- Andrii Dieiev (@IllusionMH): 検索結果におけるアクションの配置を制御するオプション PR #63457
- joan xie (@infinnie): メニューの水平方向の配置 PR #61454
- Matt Q (@irrationalRock): Fixed #34345 - ファイルの末尾/先頭に複数のカーソルを追加するコマンドを追加 PR #50312
- Jeffrey (@JeffreyCA)
- @jokurz: kshスクリプトをシェルスクリプトとして自動検出 PR #62838
- karan verma (@karanisverma): fix: #55946 コメントスニペット変数を追加 PR #63572
- Krish De Souza (@Kedstar99): updateService.linux.tsのcheckForSnapUpdateを修正し、スナップバージョンを正しく識別 PR #63716
- Benjamin Lannon (@lannonbr): 拡張機能情報をクリップボードに出力する機能を追加 PR #56514
- Luo Wenqing (@laphets): autoNavigateNextConflict有効時の最後のマージ競合警告を修正 PR #62788
- Matthew Leon (@leonm1): Fix #62785 デバッグコンソールcopyAllの空行 PR #62823
- Bruno Logerfo (@Logerfo): keyboardMapperTestUtilsの厳密なnullチェック PR #63027
- Mathias Rasmussen (@mathiasvr): Fix #60002 最後のコミットを元に戻す: ステージングされたファイルを保持 PR #60104
- Matt Crupi (@mmcru): Fix #63295: Linuxの保存エラーメッセージでSudoを参照 PR #63394
- Philip Arola (@philiparola): 設定画面で'overwrite'を'override'に変更 PR #61926
- Samuel Toriel (@riltsken): [fix] #27649 IntelliSenseドキュメントウィジェットを上部に固定 PR #62115
- Ryan Scott (@rscott): Git:Fetch (prune) を追加 PR #59735
- Prabhanjan S Koushik (@skprabhanjan)
- SlaneR (@slaner): コメントのタイプミスを修正 PR #62117
- Thomas Struller-Baumann (@Thomas-S-B): 不要なキャストを削除 PR #63947
- Alexander (@usernamehw)
- Konrad Borowski (@xfix): スナップショットローダーでの意図しないフォールスルーを修正 PR #62294
- Yisrael Veller (@YisraelV)
vscode-vsceへのコントリビューション
- Nikolay Kondratyev (@kondratyev-nv): 特定のバージョンでの公開を修正 PR #307
vscode-eslintへの貢献者
- AnguloHerrera (@angulito): パイプラインを改善 PR #569
language-server-protocolへの貢献者
- Jan Keromnes (@jankeromnes): マイナーな改善: タイプミス、文法、言い回し。 PR #579
- Adolfo Ochagavía (@aochagavia): 仕様書のタイプミスを修正 PR #597
vscode-languageserver-nodeへの貢献者
- Remy Suen (@rcjsuen): DefinitionLinkでシンボルに関するメタデータを提供 PR #415
- Guillaume Martres (@smarter): ConverterインターフェースにasVersionedTextDocumentIdentifierを追加 PR #421
vscode-html-languageserviceへの貢献
vscode-generator-codeへの貢献者
- Graham Bartley (@grabartley): Gitリポジトリを作成しない場合、Git関連ファイルは作成されなくなりました PR #141
debug-adapter-protocolへの貢献者
- Danny Tuppeny (@DanTup): Dartプラグインへのリンクを修正 PR #16
vscode-chrome-debug-coreへの貢献
- @digeff: ストレージソースのsrc変更イベントを送信しない PR #378
- Shennie Yao (@Shenniey)
vscode-chrome-debugへの貢献
- Shennie Yao (@Shenniey): Chromeコマンドラインスイッチのランタイム引数テレメトリーを追加 PR #749
- Leslie Leigh (@shrinktofit): targetTypesオプションを修正 PR #760
vscode-azure-accountへの貢献
- Yujin Hong (@yujhongmicrosoft): ソブリン向けログインサポートを追加 PR #79
- Zhe Li (@Sneezry): Azure Chinaのサインイン問題を修正 PR #104
- Mateus Amin (@MateusAmin): 設定付きREADMEを更新 PR #107
vscode-recipesへの貢献
- Damon Jablons (@blackrobot): PythonレシピのMarkdownフォーマットを整理 PR #172
- Vinícius Salomão (@vizeke): vscodeでPHPを実行およびデバッグ PR #169
localizationへの貢献
Transifex VS Codeプロジェクトチームには約1400人のメンバーがおり、毎月約100人のアクティブな貢献者がいます。新しい翻訳の提供、翻訳への投票、プロセス改善の提案など、皆様のご貢献に感謝いたします。
このリリースに貢献してくださった方々のスナップショットを以下に示します。貢献者リストを含むプロジェクトの詳細については、プロジェクトサイトhttps://aka.ms/vscodelocをご覧ください。
- ブルガリア語: Любомир Василев.
- カタルーニャ語: Adolfo Jayme-Barrientos、Enric Soler Rastrollo (MaDDoGo)、Oriol Torrillas。
- チェコ語: Vít Staniček、Ondra Kalousek、Kryštof Černý。
- デンマーク語: Johan Fagerberg。
- フィンランド語: Feetu Nyrhinen、Jussi Palo、Ahto Simakuutio。
- フランス語: Antoine Griffard、Thierry DEMAN-BARCELO、Adrien Clerbois。
- ドイツ語: Carsten Kneip。
- ギリシャ語: George Xenakis、Christos Koutsiaris、dimipapaioan。
- ヒンディー語: Anand Chalakkal Jose Mohan、Kiren Paul、Ashwini Gupta、amgusain、Pointless Banter、Shaswat Rungta、Adnan Shaikh、Shashida Nand Jha。
- ハンガリー語: Tar Dániel.
- 簡体字中国語: feiyun0112 feiyun0112、Tingting Yi、XIANG ZUO、Tony Xia、G.Y. Z、Dave Young、Jessica Zhang、驰 雷、Liam Kennedy、bh wu、WangCG duoduobear、ziqiang sun、正元 刘、越 郑、peng wei、xiong Fu、吉姆 舒、瑜 周、仁松 陈、Jiang LI。
- 繁体字中国語: Winnie Lin、Duran Hsieh、Hans Chiu、Alan Liu。
- インドネシア語: Laurensius Dede Suhardiman、Wildan Mubarok、Joshua Siagian、Rizki A. Wibowo。
- 日本語: 梶浦 諭、田島 俊哉、貫山 裕一、尾崎 義久、dkp sk、森 浩之。
- カンナダ語: Sanjay !、Sushmit Patil。
- マラヤーラム語: Kiren Paul、Anand Chalakkal Jose Mohan。
- ノルウェー語: Espen Klein Nilsen、Ivar L、Simen Dæhlin、Daniel Bjørnbakk。
- ポーランド語: Artur。
- ポルトガル語 (ブラジル): Danilo Dantas、Thiago Custodio、Vinicius Ribeiro、Lucas Santos、Gabriel Henrique Oliveira de Mello。
- ルーマニア語: Szauka。
- ロシア語: Mikhail Zabaluev、Acupofspirt、Ilya Umnov。
- シンハラ語: Anand Chalakkal Jose Mohan。
- スペイン語: Jorge Serrano Pérez、Alejandro Medina、Alberto Poblacion、Carlos Longarela、Carlos Mendible、Guillermo Callaghan、Alfonso Jesus Flores Alvarado、Andy Gonzalez。
- タミル語: Vijay Nirmal、Avinash、Jeyanthinath Muthuram、Narayanan Singaram。
- テルグ語: Raja Tirumala Rao Guna。
- トルコ語: Eyüp DALAN、Mustafa Turhan、Türker YILDIRIM。
- ベトナム語: Nguyễn Nhật Tân。