2018年3月 (バージョン 1.22)
Update 1.22.2: このアップデートでは、これらの問題が解決されています。
ダウンロード: Windows | Mac | Linux 64-bit: .tar.gz .deb .rpm | Linux 32-bit: .tar.gz .deb .rpm
Visual Studio Code の2018年3月リリースへようこそ。このバージョンには、皆さんが気に入っていただけるであろう重要なアップデートが多数含まれています。主なハイライトをいくつかご紹介します。
- 構文認識型コード折りたたみ - CSS、HTML、JSON、Markdown ファイルの折りたたみ機能を改善します。
- ファイル間でのエラー、警告、参照のナビゲーション - ワークスペース内を素早く移動できます。
- 新しいヒントの提案 - エディター内で提案された修正やリファクタリングを見つけやすくなります。
- ES6への変換リファクタリング - ES6クラスとモジュールへの変換のための新しいコードアクション。
- プロセスへの自動アタッチ - 実行中のNode.jsプロセスにデバッガーを自動的にアタッチします。
- ログポイント - ソースコードを変更したり、デバッグセッションを再起動したりすることなく、ログを挿入できます。
- 大規模ファイルサポートの改善 - 構文ハイライトが高速化され、非常に大きなファイルでも簡単にメモリを増やすことができます。
- ターミナルでの複数行リンク - 統合ターミナルでパスとURLが複数行にわたって表示されます。
- Emmetラッププレビュー - Emmetの省略形でのラップ機能のライブプレビュー。
- Windowsでのアップデートの改善 - バックグラウンドで自動的に更新され、ダウンタイムが短縮されます。
- プレビュー: JS/TSインポートの整理 - 未使用のインポートを削除し、残りのインポートをソートします。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
また、Cloud Developer AdvocateのBrian Clarkによる1.22リリースのハイライトビデオもご覧ください。
リリースノートは、VS Codeの重点分野に関連する以下のセクションにまとめられています。さらに詳しい更新は以下の通りです。
- エディター - Emmetのパフォーマンスとスマートマッチングの改善、新しいスニペット日付変数。
- ワークベンチ - Windowsでのスムーズなスクロール、検索と置換中の自動保存。
- デバッグ - Node.jsプロセスピッカーの改善、launch.jsonのpostDebugTask。
- タスク - コマンドと引数の引用符付けとエスケープサポートの改善。
- 言語 - JSDocでのIntelliSenseの簡素化、CSSパス補完。
- 拡張機能の作成 - キャンセル機能付きの長時間実行操作、診断情報への関連情報の追加。
Insiders: 新しい機能をいち早く試したいですか?毎晩リリースされるInsidersビルドをダウンロードして、最新のアップデートが利用可能になり次第お試しください。
Editor
構文認識型折りたたみ
HTML、JSON、Markdown、CSS、LESS、SCSSの折りたたみ範囲は、既定で言語の構文に基づいて計算されるようになり、整形式のインデントに依存しなくなりました。

TypeScriptとJavaScriptのサポートも利用可能で、設定"typescript.experimental.syntaxFolding": trueで有効にできます。
上記の言語のいずれか (またはすべて) でインデントベースの折りたたみに戻したい場合は、次を使用します。
  "[html]": {
    "editor.foldingStrategy": "indentation"
  },
ヒント: この機能がMarkdownファイルでヘッダー領域を折りたたむためにどのように使用されているかをご覧ください。
拡張機能向けの新しいAPIが提案されており、他の言語でも構文認識型折りたたみプロバイダーを提供できるようになります。
ファイル間でのエラーと参照のナビゲーション
今回のリリースでは、F8 (次の問題へ移動) を介したエラーと警告のナビゲーションで、報告されたすべてのエラーが考慮されるようになりました。単一ファイル内でループするのではなく、エラーのある次のファイルに移動して戻ります。

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

エディター内のヒント
拡張機能APIは、「ヒント」診断の作成をサポートするようになりました。これらはエラーや警告ではなく、特定のrefactoringを実行するなど、何かを改善できる方法の提案です。
問題の単語の開始部分の下に省略記号...でヒント診断をレンダリングします。

拡張機能の作者は、ヒント診断がコードアクションを宣伝するのに役立つため、常にコードアクションを含むヒントを含めるのが良い習慣です。ただし、一部のユーザーはエディターにヒントを表示したくない場合があるため、それらを無効にするサポートも含まれています。
ヒント: このリリースでは、JavaScript/TypeScript リファクタリングにいくつかのヒントを追加しました。
エラーと警告の関連情報
拡張機能APIは、診断に関連情報を追加できるようになり、これは診断が表示されるすべての場所 (ホバー時、エラー Peek ウィンドウ、および問題パネル) に表示されます。
以下の例では、2回割り当てられた変数が最初に使用された場所を示す関連情報が表示されています。

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

構文ハイライトの最適化
今回のリリースでは、ファイルのオープン直後にビューポートのコンテンツのスコープに基づいて、ビューポートの構文ハイライトが行われます。これにより、ユーザーが定義へ移動コマンドで新しいファイルを開いたときに、以下に示すように、はるかに高速な色付けが実現されます。
左: VS Code 1.21 右: VS Code 1.22

大規模ファイルでの検索と置換の改善
前回のリリースで新しいテキストバッファ実装を導入し(詳細についてはブログ記事をご覧ください)、大規模ファイル向けの検索と置換の最適化を継続しました。
フォーマットオン保存のタイムアウトの構成
VS Codeはファイルをディスクに保存する直前にフォーマッターを実行できるため、遅い拡張機能が保存を遅らせる可能性があるため、速度が重要です。そのため、VS Codeは保存に非常に厳格で、750ms後にフォーマットオン保存のリクエストをキャンセルします。一部の拡張機能、特に大きなファイルを扱う場合、これでは時間が足りないため、タイムアウトを構成するための新しい設定"editor.formatOnSaveTimeout"を追加しました。言語拡張機能がフォーマットにさらに時間が必要であることを知っている場合、デフォルトの言語固有の設定としてタイムアウトを変更できます。
保存を監視するために、ステータスバーに進行状況インジケーターが表示されるようになりました。

より多くのスニペット変数
現在の年月日時に言及するための新しいスニペット変数が追加されました。2018年3月28日のような数字に加えて、「3月28日」のような名前も使えるようになりました。新しい変数は次のとおりです。
- ${CURRENT_DAY_NAME}- 曜日の名前('月曜日')。
- ${CURRENT_DAY_NAME_SHORT}- 曜日の略称('月')。
- ${CURRENT_MONTH_NAME}- 月の正式名称('7月')。
- ${CURRENT_MONTH_NAME_SHORT}- 月の略称('7月')。
Emmet
省略形プレビューで囲む
Emmet: Wrap with AbbreviationまたはEmmet: Wrap Individual Lines with Abbreviationコマンドを使用すると、ラップされたテキストがどのように表示されるかのプレビューが表示されるようになりました。

より高速な省略形の展開
大規模なCSS/SCSS/LessファイルでのEmmet省略形の展開が大幅に高速化されました。これは、現在の場所がEmmet省略形を展開するのに有効かどうかを判断する際に、ファイル全体ではなく、カーソルの周りの小さな領域のみを解析することで実現されています。
よりスマートなスニペットマッチング
スタイルシートのEmmet省略形は、事前定義されたスニペットと曖昧に一致し、最も近い一致結果を提供します。emmet.preferencesのcss.fuzzySearchMinScore設定を変更することで、曖昧一致の精度を制御できます。css.fuzzySearchMinScoreは、スニペットが一致と見なされるために必要な最小スコアを設定します。スコアを上げると、一致は少なくても精度が高くなります。デフォルト値は0.3で、0から1の間の任意の値を提供できます。
"emmet.preferences": {
    "css.fuzzySearchMinScore": 0.3
}
Workbench
Windowsでの自動バックグラウンド更新
WindowsのInsiderユーザー向けに、しばらくの間、自動バックグラウンド更新を展開してきました。3月のリリースから、この機能をすべてのユーザーに有効化することにしました。
最も長くかかる更新プロセスが、作業中にバックグラウンドで実行できるようになりました。準備ができたら、最終的な更新を適用するよう通知されます。これははるかに短いステップです。これにより、最新のVS Codeに更新するときでも、より長く作業を続けることができます!
以前の動作に戻したい場合や、新しい更新手順が何らかの形でマシンで問題を引き起こす場合は、update.enableWindowsBackgroundUpdates構成設定を使用してこの機能を無効にできます。
Windows: スクロールラグの回避策
特定のデバイスでWindowsのスクロールが非常に遅く、スムーズに移動しないという報告を受けています(詳細はissue 13612を参照してください)。スムーズなスクロールのための回避策として、新しい設定window.smoothScrollingWorkaroundをtrueに設定できます。これは回避策であり、タスクバーからウィンドウを復元するたびにちらつきが発生する可能性があるため、この設定はデフォルトでは有効になっていません。この設定を有効にしても、他の副作用は発生しないはずです。
引数なしでVS Codeを起動するときに空のウィンドウを開く
引数なしでVS Codeを起動した場合に、最後にアクティブだったインスタンスにフォーカスするか、新しい空のウィンドウを開くかを制御する新しい設定window.openWithoutArgumentsInNewWindowが導入されました。WindowsおよびLinuxでは、プラットフォームの動作に合わせるため、この設定は既定で有効になっています。有効になっている場合、デスクトップからVS Codeアイコンをダブルクリックしたり、コマンドラインから引数なしでVS Codeを実行したりすると、新しい空のウィンドウが開きます。Windowsでは、タスクバーアイコンを中央クリックまたはShiftクリックした場合も同様です。window.openWithoutArgumentsInNewWindowを明示的にoffに設定することで、この動作を無効にできます。
検索と置換時に自動保存
検索結果をすべて置換するときに、すべて保存とすべて閉じるを行う必要がなくなりました。置換アクションは変更を置換して保存するようになります。
検索の含む/除外パターン
検索ビューの含む/除外パターンのボックスが1つのボックスに統合されました。機能はまったく同じですが、除外パターンは!で始まる必要があります。たとえば、!*.jsは.js拡張子を持つファイルの検索をスキップします。

ツリー: 横方向スクロールのサポート
新しいグローバル設定workbench.tree.horizontalScrollingが追加され、ワークベンチ全体のいくつかのツリーウィジェットで横方向スクロールを有効にできるようになりました。ファイルエクスプローラーの深いファイルシステム階層のような広いツリー要素の可読性を向上させるために使用します。
統合ターミナル
複数行リンクのサポートの改善
複数行にまたがるパスとURLがリンクとして機能するようになりました。

実装にはまだいくつかの問題があり、特にウィンドウのサイズを変更したときに発生します。これらは、リフローを実装するときに修正されます。
コマンド追跡
ターミナルに「コマンド追跡」機能が搭載されました。これにより、コマンドがいつ実行されたかを推測し、それらの間を簡単にナビゲートおよび選択できます。

この機能には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がトリガーされた後、メッセージの完了後にフォーカスがターミナルに戻るようになりました。
デバッグ
ログポイント
このマイルストーンには、ログポイントへの最初の作業が含まれています。ログポイントは、デバッガーに「ブレーク」するのではなく、メッセージをコンソールにログするブレークポイントの一種です。ログポイントは、停止できない本番サーバーをデバッグ中にログを挿入するのに特に役立ちます。
ログポイントは「ひし形」のアイコンで表されます。ログメッセージはプレーンテキストですが、中括弧 ('{}') 内に評価される式を含めることができます。

通常のブレークポイントと同様に、ログポイントは有効または無効にでき、条件やヒット数によって制御することもできます。
ログポイントは現在VS Codeの組み込みNode.jsデバッガでサポートされていますが、他のデバッグ拡張機能もすぐにこれに追随すると予想しています。
launch.jsonのpostDebugTask
launch.jsonにpostDebugTaskのサポートを追加しました。このタスクはデバッグセッションの終了後に実行されます。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プロセスに自動的にアタッチします。

この機能を有効にするには、自動アタッチを切り替えるアクションを使用するか、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のヘルパープロセスにアタッチすることが可能になります。

ピッカーにリストされている個々のプロセス項目には、プロセス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ドキュメントを見出しで折りたたむことができるようになりました。

ヘッダーを折りたたむと、そのヘッダーの下にあるすべてのコンテンツとサブヘッダーが折りたたまれます。
TypeScript 2.8
VS CodeはTypeScript 2.8を搭載しています。このアップデートにより、いくつかのクールな新しい言語機能のサポート、および多くの重要なバグ修正とツール改善がもたらされます。
JSDocのクイックサジェストの改善
VS CodeがJSDoc型にIntelliSenseを提供していることをご存知でしたか?この機能は数リリース前に追加されましたが、IntelliSenseが手動で呼び出した場合にのみ表示されていたため、気づかなかったかもしれません。VS Code 1.22では、JSDoc型でクイックサジェストがデフォルトで有効になりました。入力し始めるだけでIntelliSenseが起動します。

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

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



今後も提案を追加していく予定です。ご覧になりたいものがあればお知らせください。
提案コードアクションは、JavaScriptとTypeScriptでデフォルトで有効になっています。"typescript.suggestionActions.enabled": falseまたは"javascript.suggestionActions.enabled": falseを設定することで無効にできます。
CSSパス補完
HTMLに加えて、CSSでもパス補完が利用できるようになりました。

拡張機能の作成
キャンセル機能付きの長時間実行操作を通知として表示
オプションのキャンセルサポート付きで、長時間実行操作を通知センターに表示する新しいAPIを追加しました。ここに長時間実行操作を表示する利点は以下のとおりです。
- 複数の操作が同時に進行状況を報告できます。
- 操作の進行状況を表示できます。
- ユーザーは操作をキャンセルするオプションがあります。

新しい進行状況の場所ProgressLocation.Notificationを指定してwindow.withProgressを呼び出します。キャンセルボタンを表示するにはcancellableをtrueに設定し、コールバックで提供されるCancellationTokenでキャンセルを確認します。進行状況を表示するには、進行状況を報告するときにincrement値を利用します。この新しいAPIを使用する拡張機能の進行状況サンプルを参照してください。
関連診断情報のサポート
診断にDiagnosticRelatedInformationという関連情報を提供するAPIを追加しました。スコープ内で変数名が再利用されたために発生するコンパイラエラーのケースを想像してみてください。実際のエラーは「シンボル 'Foo' の重複定義は許可されていません」であり、不正な宣言を指すでしょう。診断に関連情報を含めることで、シンボル 'Foo' の最初の宣言も指すことができ、エラーをより理解しやすく修正しやすくなります。
CancellationTokenSourceを破棄しても、トークンはキャンセル状態に設定されなくなりました。
以前は、CancellationTokenSourceでdispose()を呼び出すと、トークンがキャンセル状態になり、キャンセルイベントがトリガーされました。この動作を変更し、トークンをキャンセルせずに破棄できるようにしました。トークンのキャンセルに依存する場合は、cancel()メソッドを呼び出してください。
簡易エディターは拡張機能に渡されません
デバッグREPL入力など、エディターを使用する入力は、エディターとして拡張機能に渡されなくなりました。これは、ユーザーがデバッグREPLにフォーカスしてもonDidChangeActiveTextEditorがトリガーされず、onDidChangeTextDocumentも発火しないことを意味します。この変更の理由は、REPL入力はエディターを実装詳細として使用しており、これが「実際のエディター」ではないため、拡張機能に通知されるべきではないからです。
カスタムビュー
TreeView
新しいTreeView APIを使用して、カスタムビューで操作を実行できるようになりました。これは、viewIdとTreeDataProviderを指定して新しいAPI createTreeViewを使用することでアクセスできます。
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を有効にするには、提供されるTreeDataProviderがgetParentメソッドを実装している必要があります。
新しいテーマカラー
新しい「ヒント」診断には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>;
}
Debug Adapter Protocol
ログポイントのサポート
新しく導入されたログポイントは、デバッグアダプタープロトコルで、SourceBreakpointの新しい属性logMessageとして、また新しい機能supportsLogPointsとして公開されています。ログポイントをサポートするデバッグアダプターは、supportsLogPoints機能に対してtrueを返し、空でないlogMessage属性に対しては「ブレーク」(停止)せず、代わりにメッセージをログに記録します。中括弧('{...}')内の式は評価され、結果はログメッセージ内の'{...}'を置き換えます。
initializeリクエストの新しいclientName属性
フロントエンドは、initializeリクエストの新しいオプション属性clientNameを使用して、フロントエンドの人間が読める名前をデバッグアダプターに渡すことができます。
新しいterminateThreadsリクエスト
新しいterminateThreadsリクエストは、フロントエンドが1つ以上のスレッドを終了するために使用できます。対応するsupportsTerminateThreadsRequest機能は、デバッグアダプターがそのリクエストをサポートしていることを示します。
新しいsetExpressionリクエスト
新しいsetExpressionリクエストは、代入可能な式 (別名「左辺値」) に値を割り当てるために使用できます。対応するsupportsSetExpression機能は、デバッグアダプターがそのリクエストをサポートしていることを示します。
stoppedイベントの新しいpreserveFocusHint
stoppedイベントのtrueish preserveFocusHintは、停止イベントがフォーカスを変更すべきではないことをフロントエンドに示唆します。
複数選択クイックピッカー
QuickPick API にオプションを追加し、ユーザーが任意の数の項目を選択できる新しい UI を使用して、選択された項目のリストを返すようにしました。

既存のwindow.showQuickPick API関数でこれらを使用する方法については、QuickPickOptions.canPickManyオプションとQuickPickItem.pickedフラグを参照してください。
提案された拡張API
このマイルストーンでは、いくつかの新しい提案された拡張機能APIを追加しました。これらのAPIは、将来のマイルストーンで十分な自信が得られたら安定版に昇格させる予定です。拡張機能での動作について、ぜひフィードバックをお寄せください。
注: これらのAPIはまだ提案段階にあるため、使用するには
package.jsonに"enableProposedApi": trueを追加してオプトインし、vscode.proposed.d.tsを拡張機能プロジェクトにコピーする必要があります。また、enableProposedApi属性を使用する拡張機能をマーケットプレイスに公開することはできませんのでご注意ください。
折りたたみプロバイダー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でプレビュー送信ボタンはそのリポジトリを使用します。

プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
JavaScriptとTypeScriptのインポートの整理
新しいインポートの整理コマンド()は、未使用のインポートを削除し、残りのインポートをソートします。

このコマンドは、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月上旬に Insider ユーザーにこのアップデートをプッシュアウトする予定です。ご協力いただける場合は、VS Code Insidersをインストールしてください。
注目すべき変更
- 13905: Windows: タスクバーアイコンの中央クリックで新しいウィンドウが開かない
- 35675: Linuxでフォントのレンダリングが醜く見える
- 36307: 実験的なファイルウォッチャー - 「循環」シンボリックリンクで高CPU使用率
- 42401: 出力チャンネルのスマートなグループ化
- 42402: チャンネル内からログを表示するオプションを追加
- 43813: アップデート後に拡張機能が不完全
- 44411: 解決できない変数の起動から中止
- 44554: 複数のルートフォルダをDNDできるようにする
- 45872: ローカライズパックのインストール後、UIの言語を変更するようユーザーに促す
- 45972: Explorer: isEqualOrParentの呼び出し回数を減らす
謝辞
最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!
vscodeへの貢献者
- Julian Tu (@AiryShift): Fixes #46075 PR #46227
- @amalik12: リンクフォローツールチップにMac固有のテキストを追加 PR #44885
- 朝歌 (@amtlib-dot-dll)
- Andreas Offenhaeuser (@anoff): ローカルHTTPコンテンツを許可するためのMarkdownセキュリティポリシー PR #46473
- @Arnie97: ini言語のファイル拡張子を更新 PR #45729
- Aliaksandr Ushakou (@aushakou): Fix #43465 PR #44006
- Robin Bartholdson (@buyology): formatOnSaveのタイムアウトを構成可能にする PR #43702
- Juan Camilo Giraldo Chaverra (@camilogiraldo): 依存関係を持つ拡張機能のアンインストールダイアログを改善。 PR #45929
- Cherry Wang (@chryw)
- Christian Oliff (@coliff): HTTPSリンク PR #46849
- Mikhail Bodrov (@Connormiha): lang.mimetypesのチェックを簡素化 PR #42932
- Daniel Frankcom (@danielfrankcom)
- Darius Keeley (@Dari-K): サイズ縮小と閉じるボタン左/オフでテキストがオーバーフローするまでタブフェードを非表示にする PR #45815
- Dominik Ivosevic (@DominikDitoIvosevic): スペースを含むパスリンクのサポートを追加 PR #43733
- Fathy Boundjadj (@fathyb): MonacoEnvironmentにgetWorkerを追加 PR #46032
- Mihai Balaceanu (@gizm0bill): ガイドをレンダリングするためにbox-shadow CSSを使用することで#46027を修正 PR #46029
- Jackson Kearl (@JacksonKearl)
- Jean Pierre (@jeanp413): #46106の修正 PR #46309
- JYX (@jjyyxx): 未定義/null値のvsWorkerへのアクセスを回避 PR #46012
- Ievgen Andrushchak (@killerDJO): ローカルTypescript言語サービスプラグインの検索 PR #45858
- Dominic Valenciana (@Kiricon): クイックフィックスウィジェットのクリックにフォーカスを追加 PR #44073
- Kumar Harsh (@kumarharsh): fix(feedback): フィードバックフォームでButtonウィジェットを使用する。#46490を閉じる PR #46503
- Matheus Salmi (@mathsalmi): php文法更新スクリプトを修正 PR #44171
- Mika Andrianarijaona (@mikaoelitiana): cursorColumnSelectUpのデフォルトキーバインディングをctrl+shift+...に変更 PR #41471
- Mark Marron (@mrkmarron): タイムトラベル開始時にfakeFireContinuedを防止するための変更 PR #46441
- Bruno Ribeiro (@nikonso): 部分的なステージングアクションを差分エディターのコンテキストメニューに追加 PR #43941
- Ori Ashual (@oriash93)
- Pradeep Murugesan (@pradeepmurugesan): 提案の最初の選択と最後の選択のキーバインディングを追加。 PR #45881
- Roman Salvador (@rsalvador)
- Shobhit Chittora (@shobhitchittora)
- Tobias Kahlert (@SrTobi): 水平モードでの中央揃えレイアウト PR #45671
- Steve Desmond (@stevedesmond-ca): envスクリプトでelectronバージョンを適切に設定 PR #45696
- Alexander (@usernamehw)
- Waldir Pimenta (@waldyrious): ステータスバーのインデントアクションのラベルを変更 PR #37515
- Zim Kalinowski (@zikalino): yamlファイルにyml拡張子がデフォルトであることを確認 PR #45756
vscode-extension-vscodeへの貢献
vscode-nlsへの貢献
- Ruben Bridgewater (@BridgeAR): 同期fs.mkdirを使用 PR #17
language-server-protocolへの貢献者
- Igor Matuszewski (@Xanewok): メッセージパラメータの型をJSON-RPC仕様に一致させるように変更 PR #373
vscode-css-languageserviceへの貢献者
- Avi Vahl (@AviVahl): esmモードでの関数呼び出しを修正 PR #74
vscode-html-languageserviceへの貢献
- Sibiraj (@Sibiraj-S): AngularJS ng-strict-diタグを追加 PR #25
node-jsonc-parserへの貢献
- @sqs: 配列の末尾のカンマを許可 PR #6
- Huachao Mao (@sqs):
vscode-generator-codeへの貢献者
- Alessandro Fragnani (@alefragnani): Keymap拡張機能テンプレートを追加 PR #110
- Nikita Shiryakov (@nikselite): 不要なスペースを削除 PR #106
vscode-languageserver-nodeへの貢献者
- Matt Acosta (@mattacosta): タイプミスを修正 PR #327
vscode-loaderへの貢献
- Geoffrey Gilmore (@ggilmore): 実行時にスコープ付きモジュールの読み込みをサポート PR #10
vscode-azurecli への貢献
- Derek Bekoe (@derekbekoe): HomebrewでのPYTHONPATHの修正 PR #31
vscode-azure-accountへの貢献
- Sheng Chen (@jdneo): promise raceにタイムアウトを追加 PR #46
vscode-chrome-debugへの貢献
- AJ Richardson (@aj-r): WindowsでのChromeセッション復元プロンプトを修正 PR #606
- Chance An (@changsi-an)
- @digeff
- Chris Wells (@msft-cwells)
- Raghav Katyal (@rakatyal)
vscode-chrome-debug-coreへの貢献
- Chance An (@changsi-an)
- @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
- Chris Wells (@msft-cwells)
- Raghav Katyal (@rakatyal): Pinezorroから渡されたロケールを尊重 PR #180
vscode-recipesへの貢献
- @bladedeyna: README.mdを現在のlaunch.jsonに一致させるように更新 PR #90
- @dvlsg: docs: デバッグセクションのスペルミス PR #75
- Liran Tal (@lirantal): docs(README): スペルミスを修正 PR #88
- Marek Kaczkowski (@marekkaczkowski): debugging-jest-tests Windowsでの「Jest Current File」 PR #89
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。