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月リリースへようこそ。このバージョンには、気に入っていただけるであろう重要なアップデートが多数含まれています。主なハイライトをいくつかご紹介します。
- 構文認識コード折りたたみ - CSS、HTML、JSON、Markdownファイルで折りたたみ機能が向上しました。
- ファイル横断でのエラー、警告、参照ナビゲーション - ワークスペース内を素早く移動できます。
- 新しいヒントの提案 - エディターで提案される修正やリファクタリングを簡単に見つけられます。
- ES6への変換リファクタリング - ES6クラスとモジュールに変換する新しいコードアクション。
- プロセスへの自動アタッチ - 実行中のNode.jsプロセスにデバッガーを自動的にアタッチします。
- ログポイント - ソースコードを変更したり、デバッグセッションを再起動したりすることなくロギングを挿入します。
- 大規模ファイルサポートの改善 - 構文ハイライトが高速化され、非常に大きなファイルでも簡単にメモリを増やせるようになりました。
- ターミナルでの複数行リンク - 統合ターミナルでパスとURLが複数行にまたがって表示されるようになりました。
- Emmet wrap preview - Emmetのabbreviationによるラップ機能のライブプレビュー。
- 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ビルドをダウンロードして、最新のアップデートが利用可能になり次第お試しください。
エディター
構文認識折りたたみ
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は「ヒント」診断の作成をサポートするようになりました。これらはエラーや警告ではなく、例えば特定のリファクタリングを実行することで改善できる可能性のある提案です。
ヒント診断は、該当する単語の先頭に省略記号...
を付けて表示されます。
拡張機能の作者は、ヒント診断がコードアクションを宣伝するのに役立つため、常にコードアクションにヒントを含めるのが良い習慣です。ただし、一部のユーザーはエディターにヒントを表示したくない場合があるため、ヒントを無効にするサポートも含まれてください。
ヒント: このリリースでは、JavaScript/TypeScriptのリファクタリングのためにいくつかのヒントを追加しました。
エラーと警告に関連情報
拡張APIは診断情報に関連情報を追加できるようになり、これは診断情報が表示されるすべての場所(ホバー時、エラーピークウィンドウ、問題パネル)で表示されます。
以下の例では、2回代入された変数が最初に使用された場所を指し示す関連情報が表示されています。
大きなファイルを開くのがより簡単に
以前は、エディターで大きなファイル(約2GB以上)を開くと、コマンドラインから--max-memory=NEWSIZE
フラグを付けて再起動するよう促されました。この手間を軽減するため、アプリケーションが現在使用を許可されているメモリよりも多くのメモリを必要とするファイルを開こうとすると、新しい通知が表示され、アプリケーションにより多くのメモリを割り当ててすぐに再起動できるようになります。再起動後に利用可能な最大メモリは、新しい設定files.maxMemoryForLargeFilesMB
で設定でき、デフォルトは4096
(4GB)です。
構文ハイライトの最適化
このリリースでは、ファイルのオープン直後にビューポートのコンテンツのスコープに基づいて、ビューポートの構文ハイライトが行われるようになりました。これにより、ユーザーが定義へ移動コマンドで新しいファイルを開いたときに、以下に示すように色付けが大幅に高速化されます。
左: VS Code 1.21 右: VS Code 1.22
大規模ファイルの検索と置換の改善
前回のリリースで新しいテキストバッファ実装をリリースし(詳細についてはブログ記事をご覧ください)、大規模ファイルの検索と置換の最適化を継続しました。
Format On Saveタイムアウトの設定
VS Codeはファイルをディスクに保存する直前にフォーマッターを実行できるため、遅い拡張機能が保存を遅らせる可能性があるため速度が重要です。そのため、VS Codeは保存について非常に厳格であり、format-on-saveリクエストを750ms後にキャンセルします。一部の拡張機能、特に大きなファイルを扱う場合、それでは時間が足りないため、タイムアウトを設定するための新しい設定"editor.formatOnSaveTimeout"
を追加しました。言語拡張機能がフォーマットにこれ以上の時間が必要であることを認識している場合、言語固有の設定としてタイムアウトをデフォルトで変更できます。
保存を監視するため、ステータスバーに進行状況インジケーターが表示されるようになりました。
より多くのスニペット変数
現在の日付と時刻を参照するための新しいスニペット変数が追加されました。例えば、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コマンドを使用する際に、ラップされたテキストがどのように表示されるかのプレビューを見ることができるようになりました。
高速なAbbreviation展開
大規模なCSS/SCSS/LessファイルでのEmmet abbreviationの展開が大幅に高速化されました。これは、Emmet abbreviationを展開するのに現在の場所が有効であるかどうかを判断する際に、ファイル全体ではなくカーソル周辺の小さな領域のみを解析することで実現されています。
よりスマートなスニペットマッチング
スタイルシート内のEmmet abbreviationは、事前定義されたスニペットとあいまいマッチングされ、最も近いマッチ結果を提供します。emmet.preferences
のcss.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.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のdisposeはトークンをキャンセル状態に設定しなくなりました
以前は、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
のいずれかを使用できますが、両方を使用することはできません。
Reveal
現在、TreeView
はビュー内の項目を表示して選択するreveal
メソッドを公開しています。
customView.reveal('element');
デフォルトでは、表示される項目が選択されます。項目を選択しないようにするには、select
オプションをfalse
に設定します。例えば:
customView.reveal('element', { select: false });
より多くのTreeView
の例はこちらで確認できます。
注: reveal
APIを有効にするには、貢献されたTreeDataProvider
がgetParent
メソッドを実装している必要があります。
新しいテーマの色
新しい「ヒント」診断には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で、選択された項目のリストを返すことができるようになりました。
既存の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でプレビュー送信ボタンはそのリポジトリを使用します。
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
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: Added Mac specific text for link follow tooltip PR #44885
- 朝歌 (@amtlib-dot-dll)
- Andreas Offenhaeuser (@anoff): Markdown Security Policy to allow local HTTP content PR #46473
- @Arnie97: Update file extensions for the ini language PR #45729
- Aliaksandr Ushakou (@aushakou): Fix #43465 PR #44006
- Robin Bartholdson (@buyology): make the timeout for formatOnSave configurable PR #43702
- Juan Camilo Giraldo Chaverra (@camilogiraldo): Better uninstall dialog for extensions with dependencies. PR #45929
- Cherry Wang (@chryw)
- Christian Oliff (@coliff): HTTPS link PR #46849
- Mikhail Bodrov (@Connormiha): Simplify check lang.mimetypes PR #42932
- Daniel Frankcom (@danielfrankcom)
- Darius Keeley (@Dari-K): Hide tab fade until text overflows with sizing-shrink and close-button-left/off PR #45815
- Dominik Ivosevic (@DominikDitoIvosevic): Add support for path links with spaces PR #43733
- Fathy Boundjadj (@fathyb): Add getWorker to MonacoEnvironment PR #46032
- Mihai Balaceanu (@gizm0bill): Fixes #46027 by using box-shadow CSS to render guides PR #46029
- Jackson Kearl (@JacksonKearl)
- Jean Pierre (@jeanp413): Fix for #46106 PR #46309
- JYX (@jjyyxx): Avoid accessing vsWorker of undefined / null value PR #46012
- Ievgen Andrushchak (@killerDJO): Search of local Typescript Language Service Plugins PR #45858
- Dominic Valenciana (@Kiricon): Added focus to quick fix widget click PR #44073
- Kumar Harsh (@kumarharsh): fix(feedback): use the Button widget in Feedback form. Closes #46490 PR #46503
- Matheus Salmi (@mathsalmi): Fix php grammar update script PR #44171
- Mika Andrianarijaona (@mikaoelitiana): Change default keybinding of cursorColumnSelectUp to ctrl+shift+… PR #41471
- Mark Marron (@mrkmarron): Change to prevent fakeFireContinued when initiating time-travel PR #46441
- Bruno Ribeiro (@nikonso): Add partial staging actions to diff editor context menu PR #43941
- Ori Ashual (@oriash93)
- Pradeep Murugesan (@pradeepmurugesan): added the key bindings for first and last selection in suggestions. PR #45881
- Roman Salvador (@rsalvador)
- Shobhit Chittora (@shobhitchittora)
- Tobias Kahlert (@SrTobi): Centered layout in horizontal mode PR #45671
- Steve Desmond (@stevedesmond-ca): Properly set electron version in env scripts PR #45696
- Alexander (@usernamehw)
- Waldir Pimenta (@waldyrious): Change label of indentation action in status bar PR #37515
- Zim Kalinowski (@zikalino): make sure yml extension is default for yaml files PR #45756
vscode-extension-vscode
への貢献
vscode-nls
への貢献
- Ruben Bridgewater (@BridgeAR): Use sync fs.mkdir PR #17
language-server-protocol
への貢献者
- Igor Matuszewski (@Xanewok): Change message params types to match JSON-RPC spec PR #373
vscode-css-languageservice
への貢献者
- Avi Vahl (@AviVahl): Fix function calls in esm mode PR #74
vscode-html-languageservice
への貢献
- Sibiraj (@Sibiraj-S): add AngularJS
ng-strict-di
tag PR #25
node-jsonc-parser
への貢献
- @sqs: Allow trailing commas in array PR #6
- Huachao Mao (@sqs):
vscode-generator-code
への貢献者
- Alessandro Fragnani (@alefragnani): Add Keymap extension template PR #110
- Nikita Shiryakov (@nikselite): Remove unnecessary space PR #106
vscode-languageserver-node
への貢献者
- Matt Acosta (@mattacosta): Typo fixes PR #327
vscode-loader
への貢献
- Geoffrey Gilmore (@ggilmore): support loading scoped modules at runtime PR #10
vscode-azurecli
への貢献
- Derek Bekoe (@derekbekoe): Fix for PYTHONPATH on Homebrew PR #31
vscode-azure-account
への貢献
- Sheng Chen (@jdneo): Add timeout in promise race PR #46
vscode-chrome-debug
への貢献
- AJ Richardson (@aj-r): Fix chrome session restore prompt in Windows PR #606
- Chance An (@changsi-an)
- @digeff
- Chris Wells (@msft-cwells)
- Raghav Katyal (@rakatyal)
vscode-chrome-debug-core
への貢献
- Chance An (@changsi-an)
- @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
への貢献
- @digeff
- Chris Wells (@msft-cwells)
- Raghav Katyal (@rakatyal): Respect locale passed from Pinezorro PR #180
vscode-recipes
への貢献
- @bladedeyna: Update README.md to match current launch.json PR #90
- @dvlsg: docs: spelling in debugging section PR #75
- Liran Tal (@lirantal): docs(README): fix spelling typo PR #88
- Marek Kaczkowski (@marekkaczkowski): debugging-jest-tests "Jest Current File" on Windows PR #89
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.