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ビルドをダウンロードして、最新のアップデートが利用可能になり次第お試しください。
エディター
構文認識型折りたたみ
HTML、JSON、Markdown、CSS、LESS、SCSS の折りたたみ範囲は、デフォルトで言語の構文に基づいて計算されるようになり、整形式のインデントに依存しなくなりました。
TypeScript と JavaScript のサポートも利用可能で、設定 "typescript.experimental.syntaxFolding": true
で有効にできます。
上記の言語のいずれか (またはすべて) で、インデントベースの折りたたみに戻したい場合は、
"[html]": {
"editor.foldingStrategy": "indentation"
},
ヒント: この機能がMarkdown ファイルでのヘッダー領域の折りたたみにどのように使用されているかをご覧ください。
拡張機能のための新しい API が提案されており、他の言語も構文認識型折りたたみプロバイダーを提供できるようになります。
ファイル間のエラーと参照のナビゲーション
このリリースでは、F8 (次の問題へ移動) を使用したエラーと警告のナビゲーションで、報告されたすべてのエラーが考慮されるようになりました。1 つのファイル内をループするのではなく、エラーのある次のファイルへ、そして戻るように移動します。
同様に、参照検索結果に移動するための新しいコマンドがあります。シンボルですべての参照を検索をトリガーし、F4 および ⇧F4 (Windows、Linux Shift+F4) を使用して各参照にアクセスできるようになりました。これにより、キーボードから指を離すことなく、シンボルを参照するすべての場所で編集を行うことができます。
エディターのヒント
拡張機能 API は、「ヒント」診断の作成をサポートするようになりました。これらはエラーや警告ではなく、特定のコード変更を実行するなど、何かを改善する方法に関する提案です。
ヒント診断は、問題の単語の開始位置の下に省略記号 ...
で表示されます。
ヒント診断はコードアクションを宣伝するのに役立つため、拡張機能の作者は常にコードアクション付きのヒントを含めるのが良い習慣です。ただし、一部のユーザーはエディターにヒントを表示したくない場合があるため、ヒントを無効にするサポートも含まれています。
ヒント: このリリースでは、JavaScript/TypeScript リファクタリングにいくつかのヒントを追加しました。
エラーと警告の関連情報
拡張機能 API は、診断情報に関連情報を追加できるようになり、これは診断情報が表示されるすべての場所(ホバー、エラーの Peek ウィンドウ、問題パネル)で表示されます。
以下の例では、2回割り当てられた変数が最初に使用された場所を指す関連情報を見ることができます
大きなファイルを開く簡単な方法
以前は、エディターで大きなファイル(約2GB以上)を開くと、--max-memory=NEWSIZE
フラグを使用してコマンドラインから再起動するよう促されていました。この摩擦を減らすために、アプリケーションが現在使用を許可されているメモリよりも多くのメモリを必要とするファイルを開こうとすると、新しい通知が表示され、アプリケーションに利用可能なメモリを増やして素早く再起動できるようになります。再起動後に利用可能な最大メモリは、新しい設定files.maxMemoryForLargeFilesMB
で設定可能で、デフォルトは4096
(4GB)です。
構文ハイライトの最適化
このリリースでは、ファイルを開いた直後に、ビューポートのコンテンツのスコープに基づいてビューポートの構文強調表示を行います。これにより、Go to Definitionコマンドで新しいファイルを開いたときに、以下のように色付けがはるかに高速になります。
左: 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
}
ワークベンチ
Windowsでの自動バックグラウンド更新
WindowsのInsiderユーザー向けには、しばらく前から自動バックグラウンド更新を展開していました。3月リリースでは、これをすべての人に対して有効にすることにしました。
最も時間のかかる更新プロセスが、作業中にバックグラウンドで実行できるようになりました。準備が整うと、最終的な更新を適用するための通知が届きます。この最終的な更新ははるかに短いステップです。これにより、最新のVS Codeに更新する際に、より長く作業を続けることができます!
古い動作に戻したい場合や、新しい更新手順が何らかの形でマシン上で問題を引き起こす場合は、update.enableWindowsBackgroundUpdates
設定を使用してこの機能を無効にすることができます。
Windows: スクロールラグの回避策
特定のデバイスでWindows上のスクロールが非常に遅く、スムーズに移動しないという報告を受けています(詳細はissue 13612を参照)。スムーズなスクロールの回避策として、新しい設定window.smoothScrollingWorkaround
をtrue
に設定できます。これは回避策であり、タスクバーからウィンドウを復元するたびにちらつきが発生する可能性があるため、この設定はデフォルトでは有効になっていません。この設定を有効にしても、その他の副作用は発生しないはずです。
引数なしでVS Codeを起動すると空のウィンドウを開く
新しい設定window.openWithoutArgumentsInNewWindow
が導入され、引数なしでVS Codeを起動したときに、最後にアクティブだったインスタンスにフォーカスするか、新しい空のウィンドウを開くかを制御できるようになりました。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 デバッガーに、新しい自動アタッチ機能の最初のバージョンが追加されました。有効にすると、VS Code の統合ターミナルからデバッグモードで起動された Node.js プロセスに Node デバッガーが自動的にアタッチされます。
この機能を有効にするには、自動アタッチの切り替えアクションを使用するか、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 を使用する拡張機能の例については、進捗サンプルをご覧ください。
関連診断情報のサポート
診断情報に関連情報を提供する 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>;
}
デバッグアダプタープロトコル
ログポイントのサポート
新しく導入されたログポイントは、デバッグアダプタープロトコルで、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 を使用して、選択された項目のリストを返すオプションを追加しました。
既存の 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 でプレビュー送信ボタンは、そのリポジトリを使用します。
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
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 Insider をインストールしてください。
注目すべき変更
- 13905: Windows: タスクバーアイコンの中央クリックで新しいウィンドウが開かない
- 35675: Linuxでのフォントレンダリングが醜い
- 36307: 実験的なファイルウォッチャー - 「循環」シンボリックリンクで高CPU使用率
- 42401: 出力チャンネルのよりスマートなグループ化
- 42402: チャンネル内からログを表示するオプションを追加
- 43813: 更新後に拡張機能が不完全になる
- 44411: 未解決変数での起動を中止する
- 44554: 複数のルートフォルダのDNDを許可する
- 45872: ローカリゼーションパックのインストール後、UIの言語を変更するようユーザーに促す
- 45972: エクスプローラー: 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): 言語の MIME タイプチェックを簡素化 PR #42932
- Daniel Frankcom (@danielfrankcom)
- Darius Keeley (@Dari-K): sizing-shrink および close-button-left/off でテキストがオーバーフローするまでタブフェードを非表示にする 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): FeedbackフォームでButtonウィジェットを使用する。Closes #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): 部分的なステージングアクションを diff エディターのコンテキストメニューに追加 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): sync 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): プロミス競合にタイムアウトを追加 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
- break on load を使用している場合、保留中のブレークポイントを 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 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。