Visual Studio Code February 2017

この文章は引用したものです : https://github.com/ayatokura/JP-VSCode-Docs/blob/master/release-notes/v1_10_ja.md

1.10.2 Update

1.10 で予定されていたメッセージの翻訳を追加するとともに、いくつかの問題を修正した 1.10.2 アップデートをリリースしました。

Downloads: Windows | Mac | Linux 64-bit: .tar.gz .deb .rpm | Linux 32-bit: .tar.gz .deb .rpm

1.10.1 Update

重要な拡張機能に影響を与えるいくつかの新しい問題を発見したため、緊急アップデートを公開しました。

February Release Summary

Visual Studio Code の 2017 年 2 月リリースへようこそ。 このリリースではいくつかの重要な更新があり、ハイライトは次のとおりです:

VS Code の重要な更新に関連するアップデート情報は、リリースノートの次のセクションに配置されています。その他のアップデートは、次のとおりです:

  • Editor - 単語折り返し設定の簡素化、ファイル保存の手動アクション、新しいカーソルスタイルのトリガー
  • Workbench - 設定可能なウィンドウタイトル、選択されたテキストまたはファイル全体を統合ターミナルから実行
  • Languages - TypeScript 2.2, カラープレビューのデコレータを無効化, Markdown でのより良いリンクナビゲーション.
  • Debugging - キーボード操作からのデバッガ起動、新しい変数構文、未保存ファイル上のコードのデバッグ
  • Tasks - タスクを別々の端末で実行、新しい ${lineNumber} 変数
  • Extension Authoring - プラガブルな SCM プロバイダ、モーダルメッセージダイアログ、言語固有の設定

ヒント: できるだけ早く新しい機能を試してみたいですか? それならば、毎晩アップデートされる Insiders build をご利用ください。常に最新のアップデートが利用可能になり、最新の機能をいち早く試してみることが可能です

エディタ (Editor)

実装のプレビュー: Minimap (Preview: Minimap)

Minimap は、ソースコードの概要を表示する機能です。これは、迅速なナビゲーションとコードの理解に非常に役立つ機能です。 Minimap 機能を有効にするには、"editor.minimap.enabled": true を設定することで、現在、開いているファイルの Minimap レンダリングがオンになります。

Minimap

このスクリーンショットは、Surface Book (高 DPI ディスプレイ) における Minimap の表示例となりますが、Minimap は デバイスピクセル比 (devicePixelRatio - 例えば、レギュラーまたは Retina/高 DPI ディスプレイ)に基づき、文字を 4x2 ピクセルまたは 2x1 ピクセルでキャラクタをレンダリングします。

より概略的な表現を望む場合には、editor.minimap.renderCharactersfalse を設定することで Minimap を文字ではなくブロックでレンダリングすることが可能です。

下記は、レギュラーディスプレイでの表示例です:

Minimap Blocks

VS Code 1.10 の実装では、文字を高速でインクリメンタルにレンダリングすることに焦点を当てています(新しいフレームをレンダリングする際、直前のフレームからできるだけ多くのピクセルを再利用します)。今後は、選択されたテキスト、検索の一致、Git の diff アノテーションなど、さらに有用な情報を Minimap に追加する予定です。

実装のプレビュー: 選択されたテキストのドラッグアンドドロップ (Preview: Drag and Drop selected text)

マウスで選択したテキストをエディタ内にてドラッグ&ドロップができるようになりました。この機能はデフォルトでは無効になっており、editor.dragAndDroptrue に設定することで有効できます。

Drag and drop

現時点では、選択されたテキストのドラッグアンドドロップは、エディタ間やエディタとさまざまなアプリケーション間ではサポートされていません。

シンタックスハイライトのコピー (Copy with syntax highlighting)

選択されたテキストは、シンタックスハイライトが適用された状態でクリップボードにコピーされるようになりました。これは、コンテンツを別のアプリケーション (たとえば、Outlook など) に貼り付けるときに非常に便利です。アプリケーションへ貼り付けられる内容は、正しいフォーマットと色付けを保持しています。

技術的には、HTML コンテンツの新しいエントリをクリップボードに追加することで実現していますが、貼り付けを行うアプリケーション側でリッチテキストの貼り付けをサポートしていない場合には、今までと同様にテキストのみが貼り付けれられます。

Copy with syntax highlighting

プレーンテキストをクリップボードにコピーすること自体は複雑ではなく簡単ですが、シンタックスハイライトを適用したままテキストをコピーするという処理は、使用しているテーマに基づいたレンダリングコストを払わなければなりません。そのため、この機能が VS Code の動作を著しく遅くしないためにも、65,536 を超える文字が含まれた選択のコピーには、この機能は適用されません。

もし、常に正しい書式と色でコピー&ペーストすることを最優先としたいならば、新しいコマンドである editor.action.clipboardCopyWithSyntaxHighlightingActionctrl/cmd+c にバインドし手動で実行することも可能です。このコマンドを利用する場合は、65,536 を超える文字選択の限界は適用されません。

単語の折り返し設定の再設計 (Word wrap settings redesign)

VS Code 1.9 では、Toggle Word Wrap アクションがユーザー設定にて永続的に設定されるよう変更されました。この変更は、コミュニティ上において様々な感情を伴いました。そのため、VS Code 1.10 では、その変更をロールバックするともに、そのアクションは、現在フォーカスされたエディタにのみ一時的に有効になるように変更しました。

この変更により、エディタの折り返し動作の設定の難しさに関する健全な議論も開始されました。それに伴い実装を見直し、editor.wrappingColumn (-1、0、>0の場合)を非推奨とし、新たに editor.wordWrap を使用することにしました。

新しい単語の折り返しオプションは次のとおりです:

  • editor.wordWrap: "off" - 行は折り返されません
  • editor.wordWrap: "on" - 行はビューポートの幅で折り返されます
  • editor.wordWrap: "wordWrapColumn" - 行は editor.wordWrapColumn の値で折り返されます
  • editor.wordWrap: "bounded" - 行は最小限のビューポート幅と editor.wordWrapColumn の値で折り返されます

また、VS Code のデフォルト設定を editor.wordWrap: "off" に変更しました。

今回のリリースでは、言語固有のデフォルト設定のサポートを追加しており、例えば、Markdown ファイルのデフォルトは、単語の折り返しを有効にしています。

手動で保存アクションをトリガする (Manually trigger save actions)

ファイルがダーティファイルでなくても、保存時にアクションを実行するような拡張機能が起動された場合でも、⌘S (Windows, Linux Ctrl+S) により手動でエディタを保存できるようになりました。これにより、ファイルが保存されている場合でも、保存時のフォーマットをトリガーすることが可能になりました。

新しいカーソルスタイル (New cursor styles)

PR #14237 により、さらに細かい 3 つのカーソルスタイルを用意しました: 'line-thin', 'underline-thin''block-outline'.

ワークベンチ (Workbench)

設定可能なエクスプローラのキーバインディング (Configurable Explorer key bindings)

多くの要望により、ファイルエクスプローラ開いているエディタビュー (OPEN EDITORS ビュー)が提供する、ほとんどのコマンドをキーバインディングに設定できるようになりました。

VS Code 1.10 以前から既にファイルエクスプローラでは、下記のコマンドを割り当てることが可能でした:

  • explorer.newFile - 新しいファイルを作成
  • explorer.newFolder- 新しいフォルダを作成

ファイルエクスプローラ開いているエディタビューの両方で動作する新しいコマンド:

  • explorer.openToSide - 横に並べて開く
  • copyFilePath - ファイルまたはフォルダのパスをコピー
  • revealFileInOS - OS のエクスプローラ (Windwos) や Finder (macOS) などでファイルを表示

ファイルエクスプローラでのみ動作する新しいコマンド:

  • filesExplorer.copy - ファイルエクスプローラ上からファイルをコピーする
  • filesExplorer.paste - ファイルエクスプローラ上からコピーされたファイルを貼り付ける
  • renameFile - ファイルエクスプローラ上でファイル/フォルダの名前を変更する
  • moveFileToTrash - ファイルエクスプローラ上からファイル/フォルダをゴミ箱に移動する
  • deleteFile - ゴミ箱を利用せず、ファイルエクスプローラ上からファイル/フォルダを削除する
  • filesExplorer.findInFolder - ファイルエクスプローラ上からフォルダを検索する

これらのコマンドに加え、キーバインディングには when 句で利用できる次のコンテキストが導入されています:

  • filesExplorerFocus - キーボードのフォーカス、がファイルエクスプローラ上にある場合
  • openEditorsFocus - キーボードのフォーカスが、開いているエディタビュー上にある場合
  • explorerViewletFocus - キーボードフォーカスが、ファイルエクスプローラまたは開いているエディタビューのいずれかにある場合

設定可能なツリー/リスト・キーバインディング (Configurable tree/list key bindings)

キーボード操作を中心とするユーザーにとって、VS Code のツリーとリスト UI 要素の操作をより詳細に設定できるように、新しいコマンドを導入しました(以下を参照)
以下は、すべてのツリーとリストで動作する新しいコマンドリストです:

コマンドキーボード・ショートカット
list.focusUpUp Arrow (更に macOS で利用できるショートカット: Ctrl+P)
list.focusDownDown Arrow (更に macOS で利用できるショートカット: Ctrl+N)
list.focusFirstHome
list.focusLastEnd
list.focusPageDownPageDown
list.focusPageUpPageUp
list.collapseLeft Arrow (更に macOS で利用できるショートカット: Cmd+Up Arrow)
list.expandRight Arrow
list.clearEscape
list.selectEnter (更に macOS で利用できるショートカット: Cmd+Enter)
list.toggleExpandSpace

これらの新しいコマンドを使用して、Ctrl+PCtrl+N による、macOS 上でのツリーとリストの上下移動にも他のプラットフォームと同じ一貫した操作方法を提供します。

たとえば、ファイルエクスプローラからファイルを開く操作を Enter になるようにコマンドを変更するには、macOS で次のように設定します。(通常はリネームモードになります):

{
"key": "enter",
"command": "list.select",
"when": "filesExplorerFocus"
}

設定可能なウィンドウタイトル (Configurable window title)

開かれているアクティブエディタに基づき、ウィンドウタイトルを変更するために使用できる新しい設定 window.title を導入しました。

次の変数を使用することでタイトルを作成できます(/Users/Development/myProject/myFolder/myFile.txt を表示する場合):

  • ${activeEditorLong} - /Users/Development/myProject/myFolder/myFile.txt
  • ${activeEditorMedium} - myFolder/myFile.txt
  • ${activeEditorShort} - myFile.txt
  • ${rootName} - myProject
  • ${rootPath} - /Users/Development/myProject
  • ${appName} - Visual Studio Code
  • ${dirty} - アクティブエディタが未保存のダーティファイルである場合、ダーティ・インジケータを表示
  • ${separator} - 区切り文字 (“ - “)。上記何れかの変数で囲まれたときにのみ表示される

window.title は、プラットフォームにより以下のデフォルト値を持っています:

  • Windows/Linux: ${dirty}${activeEditorName}${separator}${rootName}${separator}${appName}
  • macOS: ${activeEditorName}${separator}${rootName}

注: この window.title 設定の追加により window.showFullPath 設定はサポートされなくなりました。同様の機能として、${activeEditorLong} 変数を指定することにより、フルパスを表示することができます。

Zen モードの復元 (Restore Zen Mode)

ユーザーからのリクエストにより、Zen モード利用時に終了したウィンドウの状態を次回起動時の Zen モードで復元するかを制御する zenMode.restore 設定を新たに追加しました。

テーマ構成の設定 (Theme configurations in settings)

利用中のカラーテーマとファイルアイコンテーマを定義する新しい設定が追加されました:

{
// Specifies the color theme used in the workbench.
"workbench.colorTheme": "Default Dark+",
// Specifies the icon theme used in the workbench.
"workbench.iconTheme": null
}

また、上記のオプションをワークスペース設定に配置することで、ワークスペースごとに異なるテーマを作成できるようになり、このリリースからは設定ファイルに保存されるようになりました。
テーマの変更には、 Preferences メニューの Preferences:Color Theme および Preferences:File Icon Theme コマンドで呼び出されるテーマ選択ダイアログを引き続き使用することができます。

統合ターミナルでのリンク (Links in the terminal)

統合ターミナルに出力されるファイルパスや URL テキストがリンクとして生成されるようになりました。作成されたリンクは、ブラウザまたはエディタで開くことができます。

terminal link

端末で実行コマンド (Run in terminal commands)

以前のリリースでは、テキストを統合ターミナルに送信する workbench.action.terminal.runSelectedText コマンドを提供していました。このコマンドは、選択されたテキストであれば選択部分を、そうでない場合はファイル全体を送信します。これにより、選択されたテキストがなければ、現在の行を実行することを期待した場合に、誤ってファイル全体を実行することになるため、いくつかの問題を抱えていました。シェルは、全体としてではなく、チャンク内のテキストを解釈するため、ファイルを実行するということは、一部のシェルでは機能しませんでした。これらのシナリオを改善するために、異なる動作を持つ 2 つのコマンドで新たに置き換えました。

  • workbench.action.terminal.runSelectedText: 選択されている部分を統合ターミナルに送信し、そうでない場合はカーソルが置かれている現在の行を送信します
  • workbench.action.terminal.runActiveFile: アクティブなファイルの ファイルパス を統合ターミナルに送信します(ほとんどのシェルではファイルを実行することになります)

メニューにコードキーバインディングを表示する (Display chord key bindings in menus)

以前のリリースでは、キーバインディングが割り当てられていても、メニューエントリにキーボードショートカットが表示されない場合がありました。その理由は、いくつかのキーバインディング(例えば、複数のキーコード)をメニューにキーボードショートカットとして表示することができないためです。(コンテキストメニューを含む)

回避策として、これらのキーバインディングをメニューラベルの一部として表示するようにしました。

menu

検索結果の数 (Search results count)

検索ビューにて、検索されたファイルと一致した総数が表示されるようになりました。

Search results count

今後の検索速度の向上 (Improving search speed going forward)

より高速にファイル検索を行う方法に取り組んでおり、Silver Searcherripgrep という 2 つの選択肢を検討しています。検索のパフォーマンスにおける考察に興味を持って頂けたなら、調査結果を見てください。とても興味深い内容になっています。

言語サポート (Languages)

TypeScript

VS Code には、TypeScript 2.2 が同梱されています。このリリースには、いくつかの新しい言語機能、バグ修正、およびその他の機能強化が含まれています。

TypeScript 2.2では、以下を含むいくつかの新しいクイックフィックスもサポートされています。

  • 不足している import を追加
  • 不足しているプロパティを追加する
  • 変数への this 追加忘れ
  • 未使用の宣言を削除する
  • インターフェイスまたは抽象クラスを実装する

JSDoc コメントの自動生成 (Auto JSDoc comments)


/** を入力することで、VS Code は JavaScript と TypeScript 関数用の JSDoc コメントテンプレートを生成します:

JSDoc autofill

HTML

ドキュメントシンボルが、HTML でも使用できるようになり、ID およびクラス名で DOM ノードにすばやく移動することが可能になりました。

kb(workbench.action.gotoSymbol)を押すことでファイル中のシンボルが現れます。

HTML document symbols

貢献してくれた Cody Hoover に感謝します。

CSS

CSS, LESS, SCSS のカラープレビューデコレータは、以下の設定に false をセットすることで無効にできます:

"css.colorDecorators.enable": true,
"scss.colorDecorators.enable": true,
"less.colorDecorators.enable": true

Jade

過去 Jade と呼ばれていましたが、現在は、Pug として知られています。VS Code では、言語 ID は jade のままであり、言語ラベルは変更されていません。.jade ファイル拡張子の取り扱いはは引き続き提供されます。

Vue

Vue.js で利用されるファイルは、HTML ファイル似た構文で書かれていますが、それとは大きく異なります。そのため、.vue ファイル拡張子を持つファイルは、デフォルトで HTML 言語モードへ関連付けされないようにしました。引き続き、言語サポートを得るためにも vetur 拡張機能を利用し、 Vue.js 固有のファイル拡張子を使用することをお勧めします。

Go, Make, YAML, Markdown

これらの言語では、言語ごとにデフォルトの言語固有のエディタ設定を新たにサポートしました(詳細はデフォルトの言語固有のエディタ設定を参照してください)。Go, Make, YAML のデフォルトの設定では、これらの言語で定義されている Tab の動作を設定します。Markdown の場合は、デフォルトでは単語の折り返しが有効になり、クイック・サジェストが無効になります。

Markdown のフラグメント識別子によるリンクナビゲーション (Fragment link navigation for Markdown)

フラグメント識別子を含む Markdown ファイルへのリンクをサポートしました。対応するヘッダ部分を表示するようにファイルを開こうとします:

* [Section](#header)
* [Another file](./other_file.html#header)
# Header
...

これにより、VS Code エディタ内でドキュメントをすばやくナビゲートすることが可能になります。

デバッグ (Debugging)

カラムブレークポイント (Column breakpoints)

リクエストにより、エディタ上のカラムにブレークポイントを設定することが可能になりました。これにより、大量の連鎖した promise や minified されたソースなど、1 行に複数のステートメントを含むコードのデバッグに役立ちます。カラムブレークポイントは、⇧F9 (Windows, Linux Shift+F9) または、デバッグセッション中にコンテキストメニューから設定できます。

column

注意: デバッグ拡張機能のバックエンドは、ブレークポイントの位置を ‘デバッグ可能な’ 位置に調整します。これにより、デバッグセッションの開始時や、アクティブなセッションでカラムブレークポイントを設定するときなど、ブレークポイントが移動することがあります。

例外発生時のエクスペリエンスを向上 (Improved Exception experience)

デバッグ中に発生する例外の可視性を向上させるために、エディタ上に直接例外を表示する Peek UI を導入しました。

launch

この問題は、例外が発生したことユーザーが気付けない場合がある(特にライブラリコードで)ために発生しました。ピーク UI の導入のもう一つの理由としては、簡単により多くの例外の詳細を表示できるようにするためです。

キーボードを使用したデバッグ設定の選択および実行機能 (Ability to select and start a launch using keyboard)

このリクエストにより、キーボードだけを使用してデバッグ設定を起動するオプション(マウスジェスチャーが不要)が追加されました。
これは、タスクの起動と良く似た動作となり、Command Palette からデバッグセッションを起動することができます。
コマンドパレット へキーワード 'debug ' を入力するか、Debug:Select and Start Debugging コマンドを使用して、launch.json に設定されたデバッグ設定を選択し起動することが可能です。

launch

新しい変数構文 (New variable syntax)

今回のリリースから、変数名のプレフィックスセパレータとして使用できる文字としてコロン ‘:’ をサポートしました(そして、 ‘.’ は廃止されました)。 この変更により、’env’、’command’、’config’ 変数の新しい(そして推奨される)構文は ${prefix:id} となります。

この変更により、コマンド変数がより読みやすくなります:

"processID": "${command:extension.node-debug.pickProcess}"

保存されていないファイルのデバッグ (Unsaved file debugging)

作成されたばかりで保存されていない単一ファイルに書かれたコードのデバッグが可能になりました。これは、VS Code でコマンドラインから新しいファイルを開き、F5を押してデバッグを開始する場合などに役立ちます。

デバッガタイプに基づく前提条件 (Precondition based on debugger type)

現在のデバッグタイプに基づいて前提条件を設定できるようになりました。キーボードショートカットを定義するときや、新しいコマンドを拡張機能として登録するときに、この前提条件を使うことができます。

type ‘node’でデバッグしている間だけ有効になるショートカットキーの例です:

{ "key": "f6", "command": "workbench.action.debug.continue", "when": "debugType == 'node'" }

デバッグビューのサイズ (Debug views sizes)

We have fine-tuned the default sizes of Debug views. Also once the size is changed by the user, we preserve it across different VS Code sessions.

デバッグビューのデフォルトサイズを微調整しました。 また、ユーザーがサイズを変更した後は、さまざまな VS Code セッションでそのサイズが保持されます。

Node のデバッグ (Node Debugging)

Node 2 への移行について (Node2 transitioning_

このマイルストーンでは、2 つの Node デバッガ (‘node’と ‘node2’) を一つの Node デバッガとして提供できるよう(デバッグタイプ ‘node’ として)組み合わせることに着手しました。対象の Node.js ランタイムでサポートされているデバッグプロトコルを自動的に検出し、そのプロトコルに基づいて最適なデバッガ実装を選択できることを目的とし、新しいプロトコル ‘inspector’ と(今は時代遅れとなってしまった) v8 デバッガプロトコル ‘legacy’ を呼び出します。

そのため、このリリースからは、デバッグタイプとして ‘node’ を使用することをお勧めします。’node2’ タイプは廃止されました (‘node2’ は引き続き使用できますが、起動設定での使用には廃止予定である警告が表示されます)。

使用するデバッガ実装を制御できるようにするために、次の値を持つ新しい属性 protocol を導入しました:

  • auto: ターゲットとなる Node.js ランタイムが使用するプロトコルを自動的に検出しようとします。リクエストタイプ launch の設定で、runtimeExecutable が指定されていなければ、PATH 上から --version 引数を指定して Node.js を実行し、ランタイムのバージョンを判断します。バージョンが >= 6.9 の場合は、新しい ‘inspector’ プロトコルが使用されます。リクエストタイプ ‘attach’ の設定では、新しいプロトコルに接続しようとします。それが可能であるならば、’inspector’ プロトコルを使用します。これより以前のバージョンの ‘inspector’ プロトコルは問題を抱えていたため、バージョン >= 6.9 では、新しい ‘inspector’ プロトコルに切り替えるだけです。
  • inspector: Node デバッガにインスペクタ・プロトコル・ベースの実装 (別名 ‘node2’) を強制的に使用させます。これは、Node.jsバージョン >= 6.3 でサポートされていますが、Electron では、未だサポートされていません。
  • legacy: Node デバッガに ‘legacy’ プロトコルベースの実装を使用させます。これは Node.js バージョン < v8.0 でサポートされています

将来は auto がデフォルトになる予定ですが、現時点では、新しい Node デバッグ環境への移行は、まだ完了していないため(そしてデフォルトで有効にするには準備不足のため)、引き続き legacy を使用します。
しかし、より良い実装の為にも、私たちは 'protocol': 'auto' を使用することを推奨し、問題が発生した場合は、フィードバックを提供してくれることを望みます。

タスクのサポート (Task support)

タスクをキーバインドに割り当てる (Key bindings per task)

任意のタスクにキーボードショートカットを割り当てることが可能になりました。
設定はとても簡単で、次のようなキーバインディングを追加するだけです:

{
"key": "ctrl+h",
"command": "workbench.action.tasks.runTask",
"args": "tsc"
}

この例は、tsc という名前のタスクを ctrl+h に割り当てます。

ターミナルランナーに関するその他の変更 (More work on Terminal Runner)

以前のリリースで発表されているように、出力パネルの代わりに統合端末でタスクを実行するように取り組んでいます。今回のリリースでは、より単純なタスク同士を組み合わせ、一つのタスクを作成するためのサポートを追加しました。
たとえば、client と server という名前のフォルダを持つワークスペースがあり、両方にビルドスクリプトが含まれている場合は、別々の端末で両方のビルドスクリプトを開始する 1 つのタスクを作成できるようになりました。

このようなタスクの tasks.json ファイルは、次のようになります:

{
"version": "2.0.0",
"tasks": [
{
"taskName": "Client Build",
"command": "gulp",
"args": ["build"],
"isShellCommand": true,
"options": {
"cwd": "${workspaceRoot}/client"
}
},
{
"taskName": "Server Build",
"command": "gulp",
"args": ["build"],
"isShellCommand": true,
"options": {
"cwd": "${workspaceRoot}/server"
}
},
{
"taskName": "Build",
"dependsOn": ["Client Build", "Server Build"]
}
]
}

しかしながら、以下のことに注意してください:

  • このサポートは暫定的なものであり、変更される可能性があります。
  • ターミナルタスクランナーを利用する場合には、"version": "2.0.0" プロパティを使用することで有効にできます

自動化の為の ${lineNumber} 変数 (Facilitating automation with ${lineNumber})

${lineNumber} による自動化の促進

コミュニティ からの要求に応じて、tasks.jsonlaunch.json に新しい変数 ${lineNumber} を追加しました。現在、開いているファイルの選択されている行番号を取得することができます。この新しい変数は、カーソル選択の下での自動化(例えば、テストの実行)を容易にするための手助けとなります。

拡張機能のオーサリング (Extension Authoring)

Contributable SCM providers

VS Code 1.10.0 では、VS Code 用のプラガブルなソース管理機能について進展させ、すべての Git 機能は Git 拡張機能 に移植されました。

すべての VS Code Insiders が、この新しいインターフェースを入手し、3月のマイルストーンを使って調整して行きます。この新しいソース管理機能は SCM: Enable Preview SCM コマンドで試してみることができます。このコマンドは、従来の Git 機能を SCM プロバイダで実装された実験的な Git 機能に置き換えます (SCM: Disable Preview SCM を実行することで元に戻すことが可能です)。

モーダルメッセージ (Modal messages)

window.showInformationMessage や同様の機能を提供する API コールが更新され、モーダルメッセージダイアログが使用できるようになりました。

下記は、modal パラメータを使った例です:

window.showInformationMessage('Do you want to continue?', { modal: true }, 'Yes', 'No');

コマンドパレットメニュー項目のコンテキスト固有の表示 (Context specific visibility of Command Palette menu items)

コマンドを package.json に登録することで、自動的に コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P))に表示されます。コマンドの可視性をより詳細に制御できるように、commandPalette メニュー項目を追加しました。 これにより、コマンドパレット でコマンドを表示するかどうかを制御する when 条件を定義することができます。

以下のスニペットでは、エディタで何かが選択されている場合にだけ、コマンドパレット 上に ‘Hello World’ コマンドが表示されます:

"commands": [{
"command": "extension.sayHello",
"title": "Hello World"
}],
"menus": {
"commandPalette": [{
"command": "extension.sayHello",
"when": "editorHasSelection"
}]
}

言語固有のエディタ設定 (Language specific editor settings)

言語固有のエディタ設定にて、下記の設定項目のサポートを追加しました:

editor.tabSize
editor.insertSpaces
editor.detectIndentation
editor.trimAutoWhitespace

デフォルトの言語固有のエディタ設定: 拡張機能の作成者は、package.json に新しく導入された、拡張ポイント configurationDefaults を使用して、デフォルトの言語固有のエディタ設定を提供できるようになりました。

次の例では、 markdown モードに適用されるデフォルトのエディタ設定を package.json に定義します:

contributes": {
"configurationDefaults": {
"[markdown]": {
"editor.wordWrap": "on",
"editor.quickSuggestions": false
}
}
}

デバッグアダプタプロトコル (Debug Adapter Protocol)

新しいオプションの属性 clientIDInitializeRequestArguments に追加されました。この追加により、デバッグアダプタはクライアント(フロントエンド)を識別することができます。ここでクライアント ID のリストを提供しています。

thrown 例外の詳細を得るために、新しい ExceptionInfoRequest とそれに対応する ExceptionDetails 型を導入しました。

その他 (Miscellaneous)

Linux の公式署名リポジトリ (Official signed repositories for Linux)

Debian ベースのディストリビューションでは、Stable と Insider の両ビルドを署名された apt リポジトリから提供し、.deb パッケージの自動インストールとプラットフォームの更新メカニズムを使用した自動更新が可能になります。

apt repository

Red Hat ベースのディストリビューションのために、署名された yum リポジトリから Stable 版を提供します。 こちらの手順 に従うことで、リポジトリを追加できます。

起動パフォーマンスの監視 (Monitoring startup performance)

VS Code 起動時のパフォーマンスは重要であり、継続的に改善を試みています。時には、起動時のパフォーマンスが低下することがありますが、主に、意図しない影響の変化や依存関係の変化によるものです。これを早期に確認し、パフォーマンスの低下を修正するために、我々が用意した専用マシンにおける起動パフォーマンスの監視を始めました。若干古くて埃の多いラップトップを取り出し、ビルドマシンとしてセットアップしました。 その ‘ビルド結果’ には、VS Code を数回起動し、スタートアップタイミングをテレメトリストアに送信することが含まれています。 また、そのデータを視覚化したダッシュボード(PowerBI)と、数字が何であるかを 1 日に 1 回、私たちに知らせる slack bot (Azure Functions) も作成しました。

perf bot

注目すべき変更 (Notable Changes)

  • 1426: macOS: file events are not reported when using workspace path with different casing
  • 12000: Terminals created in the background by the API will not display/retain any output until the terminal panel is initialized
  • 15364: Make tabs smaller when workbench.editor.showTabCloseButton: false
  • 16820: Hot Exit: Opens the same file twice in two separate windows
  • 19625: API doesn’t update settings if there are trailing commas in settings.json.
  • 19526: Filter installed extensions.
  • 10610: When I hit a breakpoint VS Code opens a new readonly version of the file, breakpoints not shown in gutter.
  • 19840: IntelliSense freezes at random instances
  • 19993: Search perf regression in 1.9

クローズされたバグ一覧と、1.10 アップデートにてクローズされた機能のリクエスト一覧です。

既知の問題 (Known Issues)

拡張機能への貢献 (Contributions to Extensions)

私たちのチームは、いくつかの VS Code 拡張機能の提供とメンテナンスに貢献しています。注目すべき拡張機能は:

また、PHP parser の開発も継続しています。拡張機能の開発者が PHP のためのより優れたツールサポートを提供できるようにデザインされています。この、新たなデザインを検証し、具体的な最初のステップとして PHP コミュニティを支援するために、まずは、PHP language server でこのパーサを採用しました。

Thank You

最後になりましたが、VS Code をより良いものにするために協力してくれた次の方々に多大なる感謝を込めて:

vscode への貢献::

vscode-eslint への貢献::

  • darkred (@darkred): Move the ‘Release Notes’ from inside ‘eslint/README.md’ to a separate ‘eslint/CHANGELOG.md’ PR #205

language-server-protocol への貢献::

vscode-languageserver-node への貢献::

vscode-languageserver-node-example への貢献:

vscode-html-languageservice への貢献: