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

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 月リリースへようこそ。このバージョンには、皆さんに気に入っていただけるであろう重要なアップデートが多数含まれています。主なハイライトをいくつかご紹介します。

これらのリリースノートをオンラインで読みたい場合は、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 は、診断情報に関連情報を追加できるようになり、これは診断情報が表示されるすべての場所(ホバー、エラーの Peek ウィンドウ、問題パネル)で表示されます。

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

Related Diagnostics Information

大きなファイルを開く簡単な方法

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

Large File Notification

構文ハイライトの最適化

このリリースでは、ファイルを開いた直後に、ビューポートのコンテンツのスコープに基づいてビューポートの構文強調表示を行います。これにより、Go to Definitionコマンドで新しいファイルを開いたときに、以下のように色付けがはるかに高速になります。

: 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: Wrap with Abbreviation または Emmet: Wrap Individual Lines with Abbreviation コマンドを使用すると、折り返されたテキストがどのように表示されるかのプレビューを見ることができるようになりました。

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に設定します。

検索と置換時の自動保存

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

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

検索ビューの包含パターンと除外パターンのボックスが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 デバッガーに、新しい自動アタッチ機能の最初のバージョンが追加されました。有効にすると、VS Code の統合ターミナルからデバッグモードで起動された Node.js プロセスに Node デバッガーが自動的にアタッチされます。

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 を使用する拡張機能の例については、進捗サンプルをご覧ください。

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

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

以前は、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 のいずれかを使用できますが、両方を使用することはできません。

表示

現在、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-value」) に値を代入するために使用できます。対応する supportsSetExpression 機能は、デバッグアダプターがこのリクエストをサポートしていることを示します。

stopped イベントの新しい preserveFocusHint

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

複数選択クイックピック

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 に公開することはできないことにも注意してください。

フォールディングプロバイダー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 Insider をインストールしてください。

注目すべき変更

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

謝辞

最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!

vscodeへの貢献者

vscode-extension-vscode への貢献

  • Danny Tuppeny (@DanTup):
    • フォルダだけでなくコード実行ファイルの存在を確認する (#_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への貢献

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
    • Windows で wmic call create を使用して 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
    • break on load を使用している場合、保留中のブレークポイントを 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 project チームには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。
  • 日本語: 田島 峻也、貫山 雄一、森 弘幸、竹林 崇、百々 成二、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。