2018年3月 (バージョン 1.22)

アップデート 1.22.2: このアップデートでは、これらの問題に対処しています。

ダウンロード: Windows | Mac | Linux 64 ビット: .tar.gz .deb .rpm | Linux 32 ビット: .tar.gz .deb .rpm


Visual Studio Code 2018年3月リリースへようこそ。このバージョンには、皆様に気に入っていただけるであろう重要な更新が多数含まれています。主なハイライトを以下に示します。

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

リリースノートは、VS Code の重点分野に関連する以下のセクションで構成されています。その他の更新情報は以下のとおりです。

  • エディター - Emmet のパフォーマンスとスマートマッチングの改善、新しいスニペット日付変数。
  • ワークベンチ - Windows でのスムーズなスクロール、検索と置換中の自動保存。
  • デバッグ - Node.js プロセスピッカーの改善、launch.json の postDebugTask。
  • タスク - コマンドと引数の引用符とエスケープのサポートが向上しました。
  • 言語 - JSDoc での IntelliSense の容易化、CSS パス補完。
  • 拡張機能の作成 - キャンセル可能な長時間実行操作、診断への関連情報の追加。

Insiders: 最新機能をいち早く試したいですか? 夜間の Insiders ビルドをダウンロードして、最新の更新プログラムをすぐに試すことができます。

エディター

構文認識型フォールディング

HTML、JSON、Markdown、CSS、LESS、SCSS のフォールディング範囲は、デフォルトで言語の構文に基づいて計算されるようになり、適切なインデントに依存しなくなりました。

Syntax folding

TypeScript と JavaScript のサポートも利用可能で、設定 "typescript.experimental.syntaxFolding": true で有効にできます。

上記の言語のいずれか (またはすべて) でインデントベースのフォールディングに戻したい場合は、以下を使用してください。

  "[html]": {
    "editor.foldingStrategy": "indentation"
  },

ヒント: この機能が Markdown ファイルの見出しレベルでの折りたたみ にどのように使用されているかをご覧ください。

拡張機能用の新しい API が 提案されており、他の言語も構文認識型フォールディングプロバイダーを提供できるようになります。

ファイル間のエラーと参照ナビゲーション

このリリースでは、F8 (次の問題へ移動) によるエラーと警告のナビゲーションは、報告されたすべてのエラーを考慮に入れます。1 つのファイル内をループする代わりに、エラーのある次のファイルに移動し、戻ります。

Visit All Diagnostics

同様に、参照検索結果をナビゲートする新しいコマンドがあります。シンボルで すべての参照を検索 をトリガーし、F4⇧F4 (Windows、Linux Shift+F4) を使用して各参照を訪問します。これは、指をキーボードから離す必要がないため、シンボルを参照するすべての場所で編集を行うのに最適です。

Visit All References

エディターでのヒント

拡張機能 API は、'ヒント' 診断の作成をサポートするようになりました。これらはエラーや警告ではありませんが、特定のリファクタリングを実行するなど、何かを改善する方法に関する提案です。

問題の単語の先頭に省略記号 ... を付けてヒント診断をレンダリングします。

Hint Diagnostics

拡張機能の作成者は、コードアクションをアドバタイズするのに役立つため、常にコードアクションを含むヒントを含めるのが良い習慣です。ただし、一部のユーザーはエディターにヒントを表示したくない場合があるため、ヒントを無効にするためのサポートも含まれています。

ヒント: このリリースでは、JavaScript/TypeScript リファクタリングのヒントをいくつか追加しました。

拡張機能 API は、診断に関連情報を追加することをサポートするようになり、これは、ホバー、エラーピークウィンドウ、および 問題パネル など、診断が表示されるすべての場所に表示されます。

以下の例では、2 回割り当てられた変数が最初に使用された場所を指摘する関連情報を見ることができます。

Related Diagnostics Information

大規模なファイルをより簡単に開く方法

以前は、エディターで大規模なファイル (~2GB+) を開くと、コマンドラインからフラグ --max-memory=NEWSIZE を付けて再起動するように求められていました。この摩擦を軽減するために、アプリケーションが現在使用できるメモリよりも多くのメモリを必要とするファイルを開こうとすると、アプリケーションで使用できるメモリを増やしてすばやく再起動できる新しい通知が表示されるようになります。再起動後に使用できる最大メモリは、新しい設定 files.maxMemoryForLargeFilesMB で構成可能で、デフォルトは 4096 (4GB) です。

Large File Notification

構文強調表示の最適化

このリリースでは、ファイルが開かれるとすぐに、ビューポートのコンテンツのスコープに基づいて、ビューポートの構文強調表示を行います。これにより、ユーザーが 定義へ移動 コマンドで新しいファイルを開くときに、以下に示すように、カラーライズが大幅に高速化されます。

: VS Code 1.21 : VS Code 1.22

Syntax highlighting optimization

大規模ファイルに対する検索と置換の改善

前回のリリースで新しいテキストバッファー実装をリリースし (詳細についてはブログ投稿を参照してください)、大規模ファイルに対する検索と置換の最適化を継続しました。

構成可能な保存時のフォーマットタイムアウト

VS Code は、ファイルをディスクに保存する直前にフォーマッターを実行できるため、拡張機能が遅いと保存が遅くなる可能性があるため、速度が重要になります。そのため、VS Code は保存に関して非常に厳格であり、保存時のフォーマット要求を 750ms 後にキャンセルします。一部の拡張機能、特に大規模ファイルを扱う場合、それでは時間が足りません。そのため、タイムアウトを構成するための新しい設定 "editor.formatOnSaveTimeout" を追加しました。言語拡張機能がフォーマットにさらに時間が必要になることを認識している場合は、タイムアウトをデフォルトの 言語固有の設定 として変更できます。

保存を監視するために、ステータスバーに進捗インジケーターが表示されるようになりました。

Save Participant

より多くのスニペット変数

現在の日付と時刻を参照するための新しいスニペット変数があります。数字 (例: 2018/3/28) に加えて、「3月28日」のような名前を使用できるようになりました。新しい変数は次のとおりです。

  • ${CURRENT_DAY_NAME} - 曜日の名前 ('月曜日')。
  • ${CURRENT_DAY_NAME_SHORT} - 曜日の省略名 ('月')。
  • ${CURRENT_MONTH_NAME} - 月のフルネーム ('7月')。
  • ${CURRENT_MONTH_NAME_SHORT} - 月の省略名 ('7月')。

Emmet

省略形によるラッププレビュー

Emmet: 省略形によるラップ コマンドまたは Emmet: 省略形による個別行のラップ コマンドを使用する場合、ラップされたテキストがどのように表示されるかのプレビューを表示できるようになりました。

Wrap text with abbreviation preview

省略形の展開を高速化

大規模な CSS/SCSS/Less ファイルで Emmet 省略形を展開するのが大幅に高速になりました。これは、現在の場所が Emmet 省略形を展開するのに有効かどうかを判断しようとするときに、ファイル全体ではなくカーソル周辺の小さな領域のみを解析することで実現されます。

よりスマートなスニペットマッチング

スタイルシートの Emmet 省略形は、事前定義されたスニペットとあいまい一致され、最も近い一致結果が得られます。emmet.preferencescss.fuzzySearchMinScore 設定を変更することで、あいまい一致の精度を制御できます。css.fuzzySearchMinScore は、スニペットを一致と見なすために必要な最小スコアを設定します。スコアを上げると、一致するものが少なくなりますが、より正確になります。デフォルト値は 0.3 で、0 から 1 の間の任意の値を指定できます。

"emmet.preferences": {
    "css.fuzzySearchMinScore": 0.3
}

ワークベンチ

Windows での自動バックグラウンド更新

Windows の Insider ユーザー向けに自動バックグラウンド更新をしばらくの間展開してきました。3 月のリリースでは、これをすべての人に有効にすることにしました。

最長の更新プロセスをバックグラウンドで実行できるようになり、作業を続行できます。準備が整うと、最終的な更新を適用するために通知が表示されます。これは、はるかに短いステップです。つまり、最新の VS Code に更新する場合、より長く作業を続けることができます。

古い動作に戻したい場合や、新しい更新手順がマシンで何らかの問題がある場合は、update.enableWindowsBackgroundUpdates 構成設定を使用してこの機能を無効にすることができます。

Windows: スクロールラグの回避策

特定のデバイスでの Windows でのスクロールが非常に遅く、スムーズに移動しないという報告を受けています (詳細については issue 13612 を参照してください)。スムーズなスクロールの回避策として、新しい設定 window.smoothScrollingWorkaroundtrue に設定できます。これは回避策であり、タスクバーからウィンドウを復元するたびにちらつきが発生する可能性があるため、この設定はデフォルトでは有効になっていません。設定を有効にしても、他の副作用は見られないはずです。

引数なしで VS Code を起動するときに空のウィンドウを開く

新しい設定 window.openWithoutArgumentsInNewWindow が導入され、引数なしで VS Code を起動するときに、最後にアクティブだったインスタンスにフォーカスを当てるか、新しい空のウィンドウを開くかを制御できるようになりました。Windows と Linux では、プラットフォームの動作により適合するように、この設定はデフォルトで有効になっています。有効にすると、デスクトップから VS Code アイコンをダブルクリックするか、コマンドラインから引数なしで VS Code を実行すると、新しい空のウィンドウが開きます。Windows でタスクバーアイコンを中クリックまたは Shift キーを押しながらクリックした場合も同様です。window.openWithoutArgumentsInNewWindow を明示的に off に設定して、この動作を無効にします。

検索と置換時に自動的に保存

すべての検索結果を置換する場合、すべて保存すべて閉じる を行う必要がなくなりました。置換アクションは、変更を置換して保存するようになりました。

検索の include/exclude パターン

検索ビューの include パターンと exclude パターンのボックスが 1 つのボックスに結合されました。機能はまったく同じですが、exclude パターンには ! をプレフィックスとして付ける必要があります。たとえば、!*.js は、.js 拡張子を持つファイルの検索をスキップします。

Combined search patterns inputs

ツリー: 水平スクロールのサポート

新しいグローバル設定 workbench.tree.horizontalScrolling があり、ワークベンチ全体のいくつかのツリーウィジェットで水平スクロールを有効にします。ファイルエクスプローラーの深いファイルシステム階層など、幅の広いツリー要素の可読性を向上させるために使用します。

統合ターミナル

複数行にまたがるパスと URL がリンクとして機能するようになりました。

Multiline terminal links

実装にはまだいくつかの問題があり、特にウィンドウのサイズを変更するときに問題が発生します。これらは、リフロー を実装するときに修正されます。

コマンド追跡

ターミナルに「コマンド追跡」機能が追加されました。これは、コマンドがいつ実行されたかを推測し、コマンド間の簡単なナビゲーションと選択を可能にするものです。

Terminal command tracking

この機能には、macOS で次のデフォルトキーバインドがあります。

  • 前のコマンドまでスクロール: Cmd+Up*
  • 次のコマンドまでスクロール: Cmd+Down*
  • 前のコマンドまで選択: Cmd+Shift+Up
  • 次のコマンドまで選択: Cmd+Shift+Down

* : 1 行上/下にスクロールは Cmd+Alt+PgUp/Cmd+Alt+PgDown に移動されました

Windows および Linux では、keybindings.json ファイルに以下を追加することで、これらのコマンドのカスタムキーバインドを構成できます。

{ "key": "ctrl+down",       "command": "workbench.action.terminal.scrollToNextCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+up",         "command": "workbench.action.terminal.scrollToPreviousCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+shift+down", "command": "workbench.action.terminal.selectToNextCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+shift+up",   "command": "workbench.action.terminal.selectToPreviousCommand",
                               "when": "terminalFocus" },

より自然なスクロール

ピクセル、行、またはページ単位でスクロールするかどうかを定義する OS スクロール設定が考慮されるようになったため、ターミナルアプリケーション内のスクロールがより自然に感じられるようになりました。

VS Code を Git エディターとして使用した後、ターミナルに再フォーカス

VS Code を Git エディターとして使用し、統合ターミナルから Git がトリガーされた場合、メッセージを終了すると、フォーカスがターミナルに戻るようになりました。

デバッグ

ログポイント

このマイルストーンには、ログポイントに向けた最初の取り組みが含まれています。ログポイントは、デバッガーに「ブレーク」するのではなく、代わりにメッセージをコンソールに記録するブレークポイントのバリアントです。ログポイントは、停止できない本番サーバーをデバッグしながらロギングを挿入する場合に特に役立ちます。

ログポイントは、「ひし形」のアイコンで表されます。ログメッセージはプレーンテキストですが、中括弧 ('{}') 内で評価される式を含めることができます。

Logpoints

通常のブレークポイントと同様に、ログポイントを有効または無効にしたり、条件やヒットカウントで制御したりすることもできます。

ログポイントは現在、VS Code の組み込み Node.js デバッガーでサポートされていますが、他のデバッグ拡張機能もすぐに追随することを期待しています。

launch.json の postDebugTask

launch.jsonpostDebugTask のサポートを追加しました。このタスクは、デバッグセッションの終了後に実行されます。preLaunchTask と同様に、tasks.json のタスクを名前で参照できます。以下は、postDebugTask を使用する起動構成の例です。

{
  "name": "Attach to node server",
  "type": "node",
  "request": "attach",
  "port": 8008,
  "preLaunchTask": "Start Server",
  "postDebugTask": "Stop Server"
}

Node デバッグ

Node.js プロセスへの自動アタッチ

新しい 自動アタッチ 機能の最初のバージョンが VS Code の Node.js デバッガーに追加されました。有効にすると、Node デバッガーは、VS Code の統合ターミナルからデバッグモードで起動された Node.js プロセスに自動的にアタッチします。

Auto Attach

機能を有効にするには、自動アタッチの切り替え アクションを使用するか、Node デバッガーがすでにアクティブになっている場合は、自動アタッチ ステータスバー項目を使用します。

プロセスが「デバッグモード」であるかどうかは、プログラム引数を分析することで判断されます。現在、--inspect--inspect-brk--inspect-port--debug--debug-brk--debug-port パターンを検出します (すべてオプションで '=' とポート番号が続きます)。

この機能は、'tmux' のようなターミナルマルチプレクサ (起動されたプロセスが VS Code の統合ターミナルの子ではない場合) では (まだ) 機能しないことに注意してください。

プロセスピッカーの改善

以前のリリースでは、Node.js プロセス用のプロセスピッカーは、起動構成内から使用できる「対話型変数」としてのみ利用可能でした。

このリリースでは、ピッカーを起動構成なしで使用できる Node プロセスへのアタッチ アクションとして利用できるようにしました。

ピッカーと新しいアクションをより便利にするために、(プロセス ID を介したアタッチに加えて) デバッグポートを介して Node.js プロセスにアタッチすることをサポートするようになりました。

Node.js プロセスに加えて、ピッカーには、--debug または --inspect 引数のさまざまな形式のいずれかで起動されたすべてのプログラムが表示されるようになりました。これにより、Electron または VS Code のヘルパープロセスにアタッチすることが可能になります。

Node.js Process Picker

ピッカーにリストされている個々のプロセス項目には、プロセス ID に加えて、デバッグポートと検出されたプロトコルが表示されます。

タスク

引数の引用符の改善

タスクが更新され、bash や PowerShell などのシェルで実行されたときに、引数とコマンド自体の引用符で囲み方をより細かく制御できるようになりました。タイプ shell のタスクは、コマンドとその引数を個別に指定することをサポートするようになりました。以下は、folder with spaces という名前のフォルダーのディレクトリをリストするタスクの例です (名前にスペースが含まれていることに注意してください)。

{
  "label": "dir",
  "type": "shell",
  "command": "dir",
  "args": ["folder with spaces"]
}

シェルタスクは引数を個別に指定するため、VS Code は 'dir' コマンドに 1 つの引数として渡される必要があることを認識し、使用されるシェルに基づいて引数を引用符で囲みます。cmd.exe の場合、VS Code は " を使用し、PowerShell '、Linux および macOS ' のシェルも同様です。引数の引用符で囲み方を制御する場合は、引数を値と引用符スタイルを指定するリテラルにすることができます。例えば

{
  "label": "dir",
  "type": "shell",
  "command": "dir",
  "args": [
    {
      "value": "folder with spaces",
      "quoting": "escape"
    }
  ]
}

これにより、引数のスペースがシェルのエスケープ文字を使用してエスケープされます。これは、PowerShell ではバッククォート、bash では \ です。使用されているシェルが文字エスケープをサポートしていない場合は、強い引用符が使用されます。

エスケープに加えて、次の値がサポートされています。

  • strong: 文字列内のすべての評価を抑制するシェルの強い引用符メカニズムを使用します。PowerShell および Linux および macOS のシェルでは、単一引用符 (') が使用されます。cmd.exe の場合は、" が使用されます。
  • weak: 文字列内の式 (環境変数など) を引き続き評価するシェルの弱い引用符メカニズムを使用します。PowerShell および Linux および macOS のシェルでは、二重引用符 (") が使用されます。cmd.exe は弱い引用符をサポートしていないため、VS Code も " を使用します。

コマンド自体にスペースが含まれている場合、VS Code はデフォルトでコマンドも強い引用符で囲みます。引数の場合と同様に、ユーザーは同じリテラルスタイルを使用してコマンドの引用符を制御できます。

command プロパティにコマンドライン全体を含める古いスタイルも引き続きサポートされていることに注意してください。

タスクプロバイダーも引用符とエスケープを完全に制御できるように、同じサポートがタスク API に追加されました。

言語

見出しレベルで Markdown を折りたたむ

見出しで Markdown ドキュメントを折りたたむことができるようになりました。

Markdown folding

ヘッダーを折りたたむと、そのヘッダーの下のすべてのコンテンツとサブヘッダーが折りたたまれます。

TypeScript 2.8

VS Code に TypeScript 2.8 が同梱されるようになりました。このアップデートでは、いくつかのクールな 新しい言語機能 に加えて、多くの重要なバグ修正とツール改善がもたらされています。

JSDoc でのクイック提案の改善

VS Code が JSDoc 型の IntelliSense を提供していることをご存知ですか? この機能は数リリース前に追加されましたが、IntelliSense を手動で呼び出した場合にのみ表示されるため、気づいていない可能性があります。VS Code 1.22 では、クイック提案が JSDoc 型でデフォルトで有効になりました。IntelliSense を起動するには、入力を開始するだけです。

JSDoc suggestions

JavaScript および TypeScript の提案コードアクション

JavaScript および TypeScript の提案コードアクションの検出可能性も改善しました。これらは、ソースコードをすばやく改善またはクリーンアップするのに役立つ提案された変更です。これらは電球ウィジェットを使用して表示されますが、クイックフィックスとは異なり、ソースコード内の特定のエラーまたは警告に対処するものではありません。提案コードアクションの例としては、ES5 クラスから ES6 クラスへの変換や、CommonJS モジュールから ES6 モジュールへの変換などがあります。

提案コードアクションは、エディターで ... で示されるようになりました。

Triple dots in the editor indicate a suggested Code Action

... にカーソルを移動し、電球をクリックするか、⌘. (Windows、Linux Ctrl+.) を押して、利用可能なコードアクションを表示します。

Hovering over a suggestion indicator

Clicking on the lightbulb

After applying the Code Action

今後も提案を追加していく予定です。ご希望の提案があればお知らせください。

提案コードアクションは、JavaScript および TypeScript でデフォルトで有効になっています。"typescript.suggestionActions.enabled": false または "javascript.suggestionActions.enabled": false を設定することで無効にできます。

CSS パス補完

HTML に加えて、CSS でもパス補完が利用できるようになりました。

CSS Path Completion

拡張機能の作成

キャンセルサポート付きの通知として長時間実行操作を表示

キャンセルサポートオプション付きの通知センターに長時間実行操作を表示するための新しい API を追加しました。ここで長時間実行操作を表示することの利点は次のとおりです。

  • 複数の操作が同時に進捗状況を報告できます。
  • 操作の進捗状況を表示できます。
  • ユーザーは操作をキャンセルするオプションがあります。

long running task

新しい進捗状況の場所 ProgressLocation.Notificationwindow.withProgress を呼び出します。キャンセルボタンを表示するには cancellabletrue に設定し、コールバックで提供された CancellationToken でキャンセルを確認します。進捗状況を表示するには、進捗状況を報告するときに increment 値を活用します。この新しい API を使用する拡張機能については、進捗状況サンプル を参照してください。

診断に関連情報を提供するための API - DiagnosticRelatedInformation を追加しました。変​​数名がスコープ内で再利用されているため、コンパイラーエラーが発生する場合を想像してみてください。実際のエラーは「シンボル 'Foo' の重複定義は許可されていません」であり、不正な宣言を指摘します。診断に関連情報を含めることで、シンボル 'Foo' の最初の宣言も指摘でき、エラーを理解して修正しやすくすることができます。

CancellationTokenSource を破棄しても、トークンはキャンセル状態に設定されなくなりました。

CancellationTokenSourcedispose() を呼び出すと、以前はトークンがキャンセルされる状態に設定され、キャンセルイベントがトリガーされていました。トークンをキャンセルせずに破棄できるように、動作を変更しました。トークンのキャンセルに依存する場合は、cancel() メソッドを呼び出してください。

単純なエディターは拡張機能に渡されません

デバッグ REPL 入力のようにエディターを使用する入力は、エディターとして拡張機能に渡されなくなりました。これは、ユーザーがデバッグ REPL にフォーカスを当てても onDidChangeActiveTextEditor がトリガーされず、onDidChangeTextDocument も発生しないことを意味します。この変更の理由は、REPL 入力が実装の詳細としてエディターを使用しており、拡張機能はこれが「実際のエディター」ではないため、通知されるべきではないためです。

カスタムビュー

TreeView

新しい TreeView API を使用して、カスタムビューで操作を実行できるようになりました。これは、新しい API createTreeViewviewIdTreeDataProvider を指定することでアクセスできます。

const customView = vscode.window.createTreeView<string>('customView', {
  treeDataProvider: new CustomViewDataProvider<string>()
});

注: 既存の registerTreeDataProvider API は、ビューにデータをコントリビュートするために引き続きサポートされています。TreeDataProvider をコントリビュートするには、registerTreeDataProvider または createTreeView のいずれかを使用できますが、両方を使用することはできません。

表示

現在、TreeView はビュー内の項目を表示および選択するための reveal メソッドを公開しています。

customView.reveal('element');

デフォルトでは、表示される項目が選択されます。項目を選択しないようにするには、select オプションを false に設定します。例えば

customView.reveal('element', { select: false });

TreeView のその他の例は、こちらにあります。

注: reveal API を有効にするには、コントリビュートされた TreeDataProvidergetParent メソッドを実装する必要があります。

新しいテーマの色

新しい「ヒント」診断には 2 つの色があります。

  • editorHint.foreground: エディター内のヒントの前景色。
  • editorHint.border: エディター内のヒントの境界線の色。

エディターの表示範囲

エディターの表示範囲 API が安定版に昇格しました。

export interface TextEditor {
  /**
   * The current visible ranges in the editor (vertically).
   * This accounts only for vertical scrolling, and not for horizontal scrolling.
   */
  readonly visibleRanges: Range[];
}

export namespace window {
  /**
   * An [event](#_Event) which fires when the selection in an editor has changed.
   */
  export const onDidChangeTextEditorVisibleRanges: Event<TextEditorVisibleRangesChangeEvent>;
}

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

ログポイントのサポート

新しく導入されたログポイントは、デバッグアダプタープロトコルで SourceBreakpoint の新しい属性 logMessage および新しい機能 supportsLogPoints として表面化されます。ログポイントをサポートするデバッグアダプターは、supportsLogPoints 機能に対して true を返し、空でない logMessage 属性に対して「ブレーク」(停止) せず、代わりにメッセージをログに記録します。中括弧 ('{...}') 内の式が評価され、結果がログメッセージ内の '{...}' を置き換えます。

initialize リクエストの新しい clientName 属性

フロントエンドは、initialize リクエストの新しいオプション属性 clientName を使用して、フロントエンドの人間が読める名前をデバッグアダプターに渡すことができます。

新しい terminateThreads リクエスト

新しい terminateThreads リクエストをフロントエンドで使用して、1 つまたは複数のスレッドを終了できます。対応する supportsTerminateThreadsRequest 機能は、デバッグアダプターがリクエストをサポートしていることを示します。

新しい setExpression リクエスト

新しい setExpression リクエストを使用して、割り当て可能な式 (別名「l 値」) に値を割り当てることができます。対応する supportsSetExpression 機能は、デバッグアダプターがリクエストをサポートしていることを示します。

stopped イベントの新しい preserveFocusHint

stopped イベントの true のような preserveFocusHint は、停止したイベントがフォーカスを変更すべきではないことをフロントエンドに示唆します。

複数選択クイックピック

ユーザーが任意の数の項目を選択できる新しい UI で、選択された項目のリストを返す QuickPick API にオプションを追加しました。

Multi-select QuickPick

既存の window.showQuickPick API 関数でこれらを使用する方法については、QuickPickOptions.canPickMany オプションと QuickPickItem.picked フラグを参照してください。

提案された拡張機能 API

このマイルストーンでは、いくつかの新しい提案された拡張機能 API を追加しました。これらの API が拡張機能でどのように機能するかについて十分な自信が得られたら、将来のマイルストーンで安定版 API に追加する予定です。皆様からのフィードバックをお待ちしております。

注: これらの API はまだ提案されているため、使用するには、package.json"enableProposedApi": true を追加してオプトインする必要があり、vscode.proposed.d.ts を拡張機能プロジェクトにコピーする必要があります。また、enableProposedApi 属性を使用する拡張機能を Marketplace に公開することはできないことに注意してください。

フォールディングプロバイダー API

拡張機能が言語認識型フォールディング範囲を提供できるようにするために、新しいプロバイダー API が提案されています。

export namespace languages {
  /**
   * Register a folding provider.
   *
   * Multiple folding can be registered for a language. In that case providers are sorted
   * by their [score](#_languages.match) and the best-matching provider is used. Failure
   * of the selected provider will cause a failure of the whole operation.
   *
   * @param selector A selector that defines the documents this provider is applicable to.
   * @param provider A folding provider.
   * @return A [disposable](#_Disposable) that unregisters this provider when being disposed.
   */
  export function registerFoldingProvider(
    selector: DocumentSelector,
    provider: FoldingProvider
  ): Disposable;
}

完全な API については、こちらをご覧ください。

同等の API は、言語サーバープロトコルへのプロトコル拡張機能として こちら で提案されています。フィードバックをお待ちしております。

タスク API

現在、次のタスク API があります。

  • システム内の既存のすべてのタスクのクエリ。
  • プログラムによるタスクの実行。
  • 実行中のタスクの終了。
  • タスクの開始および終了イベントのリスン。

提案された API は、こちらにあります。

新しい API は、以前にタスクプロバイダーを介してタスクを返さずにタスクを実行することもサポートしています。以下の例は、単純な echo タスクを実行します。

let task = new vscode.Task(
  {
    type: 'myCustomTask'
  },
  'echo',
  'myExtension',
  new vscode.ShellExecution('echo', ['Hello World'])
);
vscode.workspace.executeTask(task);

保守性

VS Code 内から拡張機能に関する問題をファイルできるようになりました。問題報告ツールに、VS Code 自体または拡張機能のどちらに関する問題を報告しているかを選択するためのドロップダウンが追加されました。拡張機能に GitHub 上のリポジトリがある場合、同様の問題検索と GitHub でプレビュー 送信ボタンはそのリポジトリを使用します。

report on extensions

プレビュー機能

プレビュー機能はリリース準備が整っていませんが、使用できる程度には機能します。開発中の早期フィードバックをお待ちしております。

JavaScript および TypeScript のインポートの整理

新しい インポートの整理 コマンド () は、未使用のインポートを削除し、残りのインポートをソートします。

Organize Imports

このコマンドは、JavaScript と TypeScript の両方の ES6 モジュールで動作します。

Electron 2.0 の調査

このマイルストーンでは、Electron 2.0.0 を VS Code にバンドルすることを検討しました。これは Electron のメジャーリリースであり、Chrome 61 と Node.js 8.x が付属しています (現在のバージョンは Chrome 58 と Node.js 7.x であるため、大幅な飛躍です)。追加のフィードバックを収集するために、4 月上旬に Insiders ユーザーにアップデートをプッシュアウトする予定です。協力に興味がある場合は、VS Code Insiders をインストールしてください。

注目すべき変更

  • 13905: Windows: タスクバーアイコンの中クリックで新しいウィンドウが開かない
  • 35675: Linux でのフォントのレンダリングが汚く見える
  • 36307: 試験的なファイルウォッチャー - 「循環」シンボリックリンクでCPU使用率が高い
  • 42401: アウトプットチャンネルのよりスマートなグループ化
  • 42402: チャンネル内からログを表示するオプションを追加
  • 43813: アップデート後、拡張機能が不完全になる
  • 44411: 解決不能な変数の場合、起動を中止する
  • 44554: 複数のルートフォルダのDNDを許可する
  • 45872: ローカライズパックのインストール後、UIの言語を変更するようにユーザーに促す
  • 45972: エクスプローラー:isEqualOrParentの呼び出し回数を減らす

謝辞

最後になりましたが、VS Code をさらに良くするためにご協力いただいた以下の皆様に心から感謝申し上げます!

vscode への貢献

vscode-extension-vscode への貢献

  • Danny Tuppeny (@DanTup):
    • 単なるフォルダではなく、code 実行可能ファイルの存在を確認する (#_95) PR #95
    • VS Code を .vs-test の insiders/stable サブフォルダ内に配置する (#_97) PR #97
    • Windows で毎回 Code をダウンロードしない (#_102) PR #102
    • Mocha の forbidOnly のサポートを追加 (#_103) PR #103

vscode-nls への貢献

language-server-protocol への貢献

vscode-css-languageservice への貢献

vscode-html-languageservice への貢献

node-jsonc-parser への貢献

  • @sqs: 配列の末尾のカンマを許可する PR #6
  • Huachao Mao (@sqs):
    • computeIndentLevel メソッドをリファクタリング PR #9
    • トークンのタイプミスを修正 PR #8

vscode-generator-code への貢献

vscode-languageserver-node への貢献

vscode-loader への貢献

vscode-azurecli への貢献

vscode-azure-account への貢献

vscode-chrome-debug への貢献

  • AJ Richardson (@aj-r): Windows での chrome セッション復元プロンプトを修正 PR #606
  • Chance An (@changsi-an)
    • テレメトリコレクターを使用して、起動リクエストに追加のテレメトリプロパティを追加する。 PR #631
    • setExpression リクエストを実装する。 PR #612
    • wmic call create を使用して Windows で昇格されていない状態で Chrome を起動する。 PR #619
  • @digeff
    • テレメトリにブラウザバージョンを追加 PR #621
    • スタートアップが失敗した理由を提供するようになった PR #630
    • ターゲットのバージョン情報を含むイベントを追加 PR #627
    • 起動してユーザーページを表示するまでに行われるさまざまなタスクの時間を報告する PR #610
  • Chris Wells (@msft-cwells)
    • 不要なファイルを削除するための msbuild 署名プロジェクトへの変更 PR #622
    • msbuild 署名プロジェクトの簡素化 PR #624
    • 署名マイクロビルドプロジェクトへの LOC ファイルの追加 PR #615
    • 署名 msbuild ファイルの追加 PR #614
  • Raghav Katyal (@rakatyal)
    • breakonload が無効になっている場合でもランディングページを使用する PR #613
    • Pinezorro から渡されたロケールを尊重する PR #616

vscode-chrome-debug-core への貢献

  • Chance An (@changsi-an)
    • テレメトリコレクターを導入する。 PR #314
    • テレメトリイベントを一括送信するメカニズムを導入する。 PR #292
    • エラーメッセージを UI に表示する方法を変更する。 PR #303
    • 一部のイベント通知のテレメトリを一括送信する。 PR #300
  • @digeff
    • 不足している await を追加 PR #306
    • テレメトリを送信する前に、グローバルテレメトリプロパティの準備が整うのを待たない PR #310
    • テレメトリにバージョンを追加 PR #307
    • スタートアップタイミングイベントに失敗理由を含めることができるようになった PR #316
    • 一部のエラーに対してより多くのテレメトリ情報を送信するようになった PR #319
    • 起動してユーザーページを表示するまでに行われるさまざまなタスクの時間を報告する PR #301
    • スタートアップタイミングイベントのすべてのテレメトリプロパティを文頭大文字で送信する PR #313
    • 説明のつかないブレークポイントの動作をいくつか修正する PR #296
    • ロード時にブレークを使用する場合、onScriptPaused ではなく onScriptParsed で保留中のブレークポイントを解決する PR #290
  • Raghav Katyal (@rakatyal): 複数の削除イベントの送信を避けるためにコンテキストをクリアする… PR #318

vscode-node-debug2 への貢献

  • @digeff
    • FinishedStartingUpEventName を新しい署名に更新 PR #184
    • すべてのテレメトリイベントにバージョンを追加し、スタートアップテレメトリを適切にトリガーする PR #183
  • Chris Wells (@msft-cwells)
    • 不要なファイルを削除するための msbuild 署名プロジェクトへの変更 PR #181
    • 署名マイクロビルドプロジェクトへの LOC ファイルの追加 PR #179
    • msbuild 署名ファイルの追加 PR #178
  • Raghav Katyal (@rakatyal): Pinezorro から渡されたロケールを尊重する PR #180

vscode-recipes への貢献

localization への貢献

今月は、2017年4月10日に Transifex で VS Code コミュニティローカライズを公開してから1周年を迎えます。

  • Transifex VS Code プロジェクトチームには 800 人以上のメンバーがおり、毎月約 100 人のアクティブなコントリビューターがいます。
  • コミュニティの貢献により、9 つのコア言語の月次アップデートを国際的なユーザーにリリースすることに成功しました。
  • さらに、コミュニティメンバーによって完全にローカライズされ、Language Pack VS Code 拡張機能としてリリースされた言語が 4 つあります。さらに多くの言語が近日公開予定です。
  • VS Code コミュニティローカライズ貢献者の皆様に称賛を!

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

  • フランス語: Antoine Griffard, Adrien Clerbois, Smrman.
  • イタリア語: Alessandro Alpi, Piero Azi, Aldo Donetti, Simone Chiaretta, Emilie Rollandin, Francesco Mugnai.
  • ドイツ語: Dejan Dinic, Jakob von der Haar, Carsten Kneip, Jakob, Ettore Atalan.
  • スペイン語: Alberto Poblacion, José M. Aguilar, David Silva, Alejandro M, Andy Gonzalez, AlanThinks, David Triana, Santiago Porras Rodríguez, Carlos Mendible, Jorge Serrano Pérez.
  • 日本語: 多々良 峻也, 貫名 悠一, 森 博之, 竹林 隆弘, 百々 誠司, yoshioms, 上田 祐己, 小島 富治雄, 梶浦 諭史.
  • 中国語 (簡体字): Joel Yang.
  • 中国語 (繁体字): Duran Hsieh, Winnie Lin, Poy Chang, balduran, Will 保哥.
  • 韓国語: ChangJoon Lee, Ian Y. Choi.
  • ロシア語: Ivan, Andrei Makarov.
  • ブルガリア語: Любомир Василев.
  • ハンガリー語: Tar Dániel.
  • ポルトガル語 (ブラジル): Roberto Fonseca, Matheus Palu, Rodrigo Crespi, Danilo Dantas, Douglas Ivatiuk Martim, Alessandro Fragnani, Kayky de Brito dos Santos.
  • ポルトガル語 (ポルトガル): Diogo Barros, Ruben Mateus, António Lourenço, João Mata, Gustavo Silva.
  • トルコ語: Adem Coşkuner, Ömer Büyükçelik, Mustafa Turhan, Tuğrul Kaşıkcı.
  • ボスニア語: Bahrudin Hrnjica, Muharem Basanovic, Ismar Bašanović, Almir Vuk.
  • チェコ語: Michal Vondracek, Vít Staniček, Filip Vlček, Vojtěch Habarta, Ferdinand Prantl.
  • オランダ語: Maurits Kammer, Gerald Versluis, Marco van den Hout.
  • フィンランド語: Feetu Nyrhinen, Petri Niinimäki.
  • ギリシャ語: Dimitris Trachiotis.
  • インドネシア語: Joseph Aditya P G, Najih Azkalhaq, Adrian M. R., Wildan Mubarok, G-RiNe Project, Lundy Orlando, Azhe-kun, Febrian Setianto, Riwut Libinuko, Laurensius Dede Suhardiman, Mulia Arifandi Nasution, Herman Prawiro.
  • ラトビア語: Pēteris Kļaviņš, Simone Chiaretta, kozete, Lafriks.
  • リトアニア語: Martynas Jusys.
  • ポーランド語: Patryk Brejdak, Joanna Skurzyńska, Paweł Sołtysiak, KarbonKitty.
  • セルビア語: Марко М. Костић, Nikola Radovanović.
  • スウェーデン語: Joakim Olsson, Kalle Wallin, Johan Hedén.
  • タイ語: Sirisak Lueangsaksri, Phongphan Bunlom, ภูมิไผท จันทรศรีวงศ์.
  • ウクライナ語: Андрій Іванченко, R.M., Max Plotitsyn, Svitlana Galianova.
  • ベトナム語: Hung Nguyen.