VS Codeのエージェントモードを拡張するには、を試してください!

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

アップデート1.22.2: このアップデートは、これらのイシューに対応しています。

ダウンロード: Windows | Mac | Linux 64-bit: .tar.gz .deb .rpm | Linux 32-bit: .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次の問題へ移動)によるエラーおよび警告のナビゲーションで、報告されたすべてのエラーが考慮されるようになりました。単一のファイル内でループする代わりに、エラーのある次のファイルに移動し、そして戻るようになります。

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

大規模ファイルの検索と置換の改善

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

Format On Saveタイムアウトの設定

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

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

Save Participant

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

現在の日付と時刻を参照するための新しいスニペット変数が追加されました。例えば、2018年3月28日といった数字だけでなく、「3月28日」といった名前も使用できるようになりました。新しい変数は以下の通りです。

  • ${CURRENT_DAY_NAME} - 曜日の名前 ('Monday')。
  • ${CURRENT_DAY_NAME_SHORT} - 曜日の短い名前 ('Mon')。
  • ${CURRENT_MONTH_NAME} - 月の正式名称 ('July')。
  • ${CURRENT_MONTH_NAME_SHORT} - 月の短い名前 ('Jul')。

Emmet

Wrap with Abbreviationのプレビュー

Emmet: Wrap with AbbreviationまたはEmmet: Wrap Individual Lines with Abbreviationコマンドを使用する際に、ラップされたテキストがどのように表示されるかのプレビューを見ることができるようになりました。

Wrap text with abbreviation preview

高速なAbbreviation展開

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

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

スタイルシート内のEmmet abbreviationは、事前定義されたスニペットとあいまいマッチングされ、最も近いマッチ結果を提供します。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を起動する際の空のウィンドウを開く

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

検索と置換時に自動保存

すべての検索結果を置換する際に、もはやすべて保存すべて閉じるを行う必要はありません。置換アクションは変更を置換して保存するようになりました。

検索の包含/除外パターン

検索ビューの包含パターンと除外パターンのボックスが1つのボックスに結合されました。機能はまったく同じですが、除外パターンには!をプレフィックスとして付ける必要があります。例えば、!*.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.Notificationを指定してwindow.withProgressを呼び出します。キャンセルボタンを表示するにはcancellabletrueに設定し、コールバックで提供されたCancellationTokenでのキャンセルをチェックします。進行状況を表示するには、進行状況を報告するときにincrement値を活用します。この新しいAPIを使用する拡張機能の例については、進行状況のサンプルを参照してください。

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

CancellationTokenSourceのdisposeはトークンをキャンセル状態に設定しなくなりました

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

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

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

カスタムビュー

TreeView

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

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

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

Reveal

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

customView.reveal('element');

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

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

より多くのTreeViewの例はこちらで確認できます。

注: reveal APIを有効にするには、貢献されたTreeDataProvidergetParentメソッドを実装している必要があります。

新しいテーマの色

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

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

エディターの表示範囲

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

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イベントの真偽値preserveFocusHintは、フロントエンドに対して、停止イベントがフォーカスを変更すべきではないことを示唆します。

複数選択QuickPick

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

Multi-select QuickPick

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

提案された拡張API

このマイルストーンでは、いくつかの新しい提案された拡張機能APIを追加しました。これらのAPIは、十分な確信が得られ次第、今後のマイルストーンで安定版に含める予定です。拡張機能での動作について、ぜひフィードバックをお寄せください。

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

Folding Provider 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月上旬には、追加のフィードバックを収集するために、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への貢献者

vscode-extension-vscodeへの貢献

  • Danny Tuppeny (@DanTup):
    • Check for presence of code executable instead of just folder (#_95) PR #95
    • Place VS Code inside insiders/stable sub-folders of .vs-test (#_97) PR #97
    • Don't download Code every time on Windows (#_102) PR #102
    • Add support for Mocha's forbidOnly (#_103) PR #103

vscode-nlsへの貢献

language-server-protocolへの貢献者

vscode-css-languageserviceへの貢献者

vscode-html-languageserviceへの貢献

node-jsonc-parserへの貢献

vscode-generator-codeへの貢献者

vscode-languageserver-nodeへの貢献者

vscode-loaderへの貢献

vscode-azurecli への貢献

vscode-azure-accountへの貢献

vscode-chrome-debugへの貢献

vscode-chrome-debug-coreへの貢献

  • Chance An (@changsi-an)
    • Introduces a telemetry collector. PR #314
    • Introduces a mechanism to batch-sending telemetry events. PR #292
    • Change the way error message is surfaced up to the UI. PR #303
    • Batch sending telemetry for some of the event notifications. PR #300
  • @digeff
    • Add missing await PR #306
    • Don't wait for global telemetry properties to be ready before sending telemetry PR #310
    • Add versions to telemetry PR #307
    • Now the start-up timings events can include a failure reason PR #316
    • Now we send more telemetry information for some errors PR #319
    • Report times the different tasks that happen until we launch and show the user page PR #301
    • Send all telemetry properties of the start-up timings event in sentence case PR #313
    • Fix some unexplained breakpoints behavior PR #296
    • Resolve pending breakpoints onScriptParsed instead onScriptPaused when using break on load PR #290
  • Raghav Katyal (@rakatyal): Clear context to avoid sending multiple remove eve… PR #318

vscode-node-debug2への貢献

vscode-recipesへの貢献

localizationへの貢献

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

  • Transifex VS Codeプロジェクトチームには800人以上のメンバーがおり、毎月約100人のアクティブな貢献者がいます。
  • コミュニティの貢献により、9つのコア言語の月次アップデートを国際的なユーザーに成功裏にリリースしてきました。
  • さらに、4つの言語がコミュニティメンバーによって完全にローカライズされ、言語パックVS Code拡張機能としてリリースされています。さらに多くの言語が近日登場予定です。
  • 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.
  • 日本語: Shunya Tajima, Yuichi Nukiyama, Hiroyuki Mori, Takashi Takebayashi, Seiji Momoto, yoshioms, Yuki Ueda, 小島 富治雄, Satoshi Kajiura.
  • 中国語 (簡体字): 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.