May 2017 (version 1.13)

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

Update 1.13.1: このアップデートでは、これらの問題に対処しています。


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

これらのリリースノートをオンラインで読むには、code.visualstudio.com へアクセスし、Updatesを参照してください

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

  • ワークベンチ - シンボル検索の結果にファイル名を表示、メニューバーのニーモニック無効化
  • エディタ - サイズ変更可能な Find ウィジェット、新しい折りたたみコントロールの設定
  • 言語 - JSX/TSX コンポーネントのハイライト表示、シンボル検索が Markdown ヘッダーをサポート
  • デバッグ - デバッグコンソールからすべてをコピー、起動設定のローカル/リモートパス
  • タスク - VS Code 上で実行される Gulp と Grunt タスクのカスタマイズと自動検出
  • 拡張機能の作成 - エクスプローラのカスタムビュー、テーマカラーのリファレンス

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

Setting changes

設定の変更

Changed setting defaults

変更された設定のデフォルト

5月 のリリースですぐに気づくことは、いくつかの機能設定のデフォルト値を変更したことです。以前のリリースでは、 ミニマップ(アウトラインビュー)、アイコンテーマ、インデントガイドなどの機能はデフォルトでオフになっていましたが、これらの機能はとても有用と考えています。

new setting defaults

新しいデフォルト設定は次のとおりです:

設定新しいデフォルト値概要
editor.minimap.enabledtrue右側にファイルのミニマップ(アウトラインビュー)を表示
workbench.iconTheme“vs-seti”vs-seti ファイルアイコンテーマを使用
editor.renderIndentGuidestrueエディタのインデントガイド表示
editor.dragAndDroptrueエディタで選択された項目をドラッグアンドドロップで移動
extensions.autoUpdatetrueインストール済み拡張機能の自動更新
window.openFilesInNewWindow“off”実行中の VS Code インスタンスからファイルを開く

もちろん、VS Code のユーザーまたはワークスペース設定で変更することが可能です (File > Preferences > Settings または、キーボードショートカット ⌘, (Windows, Linux Ctrl+,)).

Add multiple cursors with Ctrl / Cmd + Click

Ctrl/Cmd +クリックで複数のカーソルを追加

マルチカーソルを適用する修飾キー(Windows と Linux は Ctrl+Click、macOS では Cmd + Click) を変更するための新しい設定 editor.multiCursorModifier を導入しました。これにより、Sublime Text や Atom など他のエディタから移行してきたユーザーにとって、使い慣れたキーボード修飾キーを引き続き使用することが可能です。

次のように設定します:

  • ctrlCmd - Windowsでは Ctrl、macOS では Cmd に対応します
  • alt - 既存のデフォルトキーである Alt

また、新しいメニュー項目 Use Ctrl+Click for Multi-Cursor を使用することで、この設定をすばやく切り替えることができます。

Go To Definition および Open Link ジェスチャーは、この設定を優先し、競合しないように適応します。たとえば、設定が ctrlCmd の場合、Ctrl/Cmd+Click を使って複数のカーソルを追加することができ、Alt+Click を使ってリンクを開くか定義を呼び出すように変更されます。

Issue #2106 を解決したことにより、既存の選択の上に同じジェスチャーを使用してカーソルを削除することが可能になりました。

Workbench

ワークベンチ

Filenames in symbol search results

シンボル検索の結果にファイル名を追加

ワークスペースのシンボル検索 (⌘T (Windows, Linux Ctrl+T)) を使用することで、ワークスペース内のシンボルをすばやく見つけることができますが、検索結果のリストに各シンボルのファイル名が含まれるようになりました:

symbol search includes filename

Disable menu bar mnemonics

メニューバーのニーモニックを無効にする

メニューバーのすべてのニーモニック(ホットキー)を無効にするための新しい設定 window.enableMenuBarMnemonics が追加されました (WindowsおよびLinuxの場合)。false を設定することにより、いくつかの Alt+ キーボードショートカットに他のコマンドに割り当てられるようになります。

Install Additional SCM Providers

追加の SCM プロバイダをインストールする

VS Code マーケットプレイスから SCM プロバイダーを簡単に見つけてインストールするための新しいコマンド その他の SCM プロバイダーをインストール を導入しました。このコマンドは、ソース管理 ビューの SCM プロバイダの切り替え… コマンドか、コマンドパレットSCM: Switch SCM Provider から使用できます。

Install Additional SCM Providers

Go to Implementation and Go to Type Definition added to the Go menu

インプリメンテーションに移動し、Go メニューにタイプ定義を追加

Go (移動) メニューに Go to Implementation (実装に移動)と Go to Type Definition (型定義に移動) コマンドが追加されました:

New Go menu items

Preserving view state for resource editors

リソースエディタのビューステートの保持

リソースエディタの切り替え時に、リソースエディタのビューステートが保持されるようになりました。これは、内部モジュールエディタのスクロール位置と他のすべてのビューデータを保持するため、内部モジュールをデバッグする際に便利です。ただし、ユーザーがエディタを閉じると、ビューの状態は常にクリアされます。

High Contrast theme

ハイコントラストテーマ

ハイコントラストテーマを改善して、より多くのトークンカラーを追加し、選択とステータスバーのカラーにも適用することで、より明瞭なコントラストを実現しました。

High Contrast theme improvements

New theming colors

新しいテーマの色

ワークベンチにおけるテーマのサポートについて多くのフィードバックを受け、ワークベンチカラーを採用するテーマが増えてきています。このマイルストーンでは、50 色の新しい色を追加し、既存の色にいくつか微調整を加えました。これらの色は、テーマによって、または workbench.colorCustomizations 設定でユーザーが直接設定できます。

新しく追加されたカラーには、更新された Theme Color Referenceで確認できます。

以下に、既存の色の動作の変更を示します:

KeyDescription
panel.bordercontrastBorder の値を上書きしますが、contrastBorder が設定されている場合は、より具体的な色指定が可能です
tab.bordercontrastBorder の値を上書きしますが、contrastBorder が設定されている場合は、より具体的な色指定が可能です
editorGroup.bordercontrastBorder の値を上書きしますが、contrastBorder が設定されている場合は、より具体的な色指定が可能です
list.*contrastBordercontrastActiveBorder がある場合でも、すべてのリストカラーを設定できるようになりました

Multi-root workspaces

複数のルートワークスペース

このマイルストーンでは、VS Code でマルチルート(複数のプロジェクトフォルダ)をサポートするための重要な方向性を示します。この機能要求に取り組むことについて、まだ、少し時間を要するのではないかと疑問を持つ場合は、Daniel の優れた解説を読んでください。

私たちは、UX に焦点を当て、多くの新しい概念を導入せずに、現在のアーキテクチャでどのようにこの機能を提供できるか設計の草案を作成しました。エンジニアリングチームと設計を共有した後、私たちは 2 つのユーザー調査を実施し、前提条件を検証しました。興味をもたれた方は、この機能を実装に至るまでの記録をご覧になることをお勧めするとともに、フィードバックをお寄せいただければと思います:

With the UX work behind us, we feel that we can finally start implementing this feature request. Thanks for your patience!
私たちの背後にある UX の作業により、ついにこの機能要求の実装を開始できると考えています。お待たせしました!

Editor

エディタ

Merge conflict coloring and actions

マージ競合の色付けとアクション

インラインマージの競合は色付けされ、いずれかまたは両方の変更を受け入れるアクションを提供します。以前は、有名な Better Merge 拡張機能として提供されていた機能を、VS Code に組み込みました。Better Merge の開発者である Phil Price(@pprice) に感謝します。

markdown symbols with header level

Suggestion list and documentation side by side

サジェストリストとドキュメントを並べて表示

IntelliSense のオートコンプリート/サジェストがトリガーされた場合、⌃Space (Windows, Linux Ctrl+Space) を押すことにより、以前のようにフォーカスのあるサジェスト項目のドキュメントを表示します。ドキュメントは、サジェストウィジェットに重なること無く横に展開され、ドキュメントを読み込むと同時に、継続してサジェストリストをナビゲートすることができます。

auto expanded docs in autocomplete

ドキュメントが飛び出すように展開されますが、このウィジェットは閉じるボタンを使用して明示的に閉じるか、再度、⌃Space (Windows, Linux Ctrl+Space)を押すまで、オートコンプリート/サジェストがトリガーされるたびに展開されたままになります。

長い文書を上下にナビゲートしたいキーボード中心のユーザの場合は、 ⌃⌥Space (Windows, Linux Ctrl+Alt+Space) を押してフォーカスを展開されたドキュメントに移動することで、ページアップ/ダウンアクションのキーボードショートカットで操作できるようになります。

スクリーンリーダーを利用するユーザーの場合は、ドキュメントが横に展開され、サジェストリストを操作すると、その項目のラベルと文書 (もしあれば) が読み上げられます。

Emmet abbreviation expansion in suggestion list

提案リストの Emmet 省略形展開

これまで Emmet 拡張を展開するためのデフォルトの操作は、Tab キーを使用することでした。しかしながら、このデザインには 2 つの問題がありました:

  • ユーザーがインデントを挿入する操作を行った際に、予期せぬ Emmet 拡張の挿入が多数発生する
  • 一方で、Emmet 略語が展開されることを期待しているときに、意図していないサジェストリストの項目が挿入される

何れの問題も、展開された Emmet 略語はサジェストリストに表示するように変更し、インデントの挿入にも割り当てられる Tab を Emmet 略語の展開操作に割り当てないことで解決させました。

この新しい機能の使用を開始するには、emmet.useNewEmmettrue に設定します。この機能は、入力時にサジェストドキュメントが飛び出すように展開され、展開された Emmet 省略形をプレビューする場合に最適です。また、Tab キーでの Emmet 略語の展開は行われなくなりました。

Emmet abbreviation expansion in autocomplete

editor.quickSuggestions がオフになっている場合は、以下のいずれかの方法で Emmet の展開を行うことができます:

  • ⌃Space (Windows, Linux Ctrl+Space) を押して手動で候補をトリガし、サジェストリストから展開を選択
  • Command Palette から Emmet: Expand Abbreviation explicit コマンドを実行
  • Emmet:Expand Abbreviation (コマンド id: editor.emmet.action.expandAbbreviation) にキーボードショートカットを割り当てる

HTML のようなファイルには 2 種類のサジェストがあります:

  • 入力された省略形の展開(emmet.showExpandedAbbreviationfalse を設定することで、これを無効にできます)
  • 入力されたプレフィックスと一致する利用可能な略語 (emmet.showAbbreviationSuggestionsfalse を設定することで、これを無効にできます)。たとえば、a と入力すると、 aa:linka:mailarea が表示され、Emmet 略語を見つける手助けとなります

CSS/LESS/SCSS ファイルでは、入力した単一の省略形のみが表示されます。

この機能を実装するために、単一のモノリシックな Emmet ライブラリをより小さく再利用可能な Emmet モジュールに置き換え、ほとんどの Emmet コマンドを再実装しました。新しい Emmet コマンドの動作に差違をみかけた場合は、GitHub に issue を作成してください。次のマイルストーンまでに、この取り組みを完了させ、emmet.useNewEmmet 設定を廃止し新しいモデルをデフォルトにする予定です。

Multi cursor snippets

マルチカーソルスニペット

スニペットとマルチカーソルを組み合わせることが可能になりました。

multi cursor snippets

また、スニペットのプレースホルダを別のスニペットに追加し、プレースホルダをマージすることでスニペットを入れ子にすることもできます。

Strict snippets

厳格なスニペット

スニペットはプレースホルダと変数を持つことができます。スニペットの構文は、こちらで定義されています。ここで $1, $2... はタブストップを現し、$varName1, $varName2... は変数です。$-sign に続くものだけが違うことに注意してください。sign が数字の場合はタブストップを、単語が続く場合は変数を現します。このマイルストーン以前の VS Code では、スニペットにインターナルの構文を使用していました。Textmate スタイルのスニペットがインターナル構文に書き換える際、変数として定義したものをタブストップに変えてしまうという不幸なバグがありました。下記がスムーズな移行を確実にするために行ったことです:

  • 変数として認識できない変数を使用するスニペットが出現すると、それらをプレースホルダーに変えて、拡張機能の作成者(拡張機能を利用するエンドユーザーではない)に警告します
  • また、テレメトリーイベントを記録するので、このような不幸な構成を使用している拡張機能に対しては、Issue/PR を行うことができます

将来的には、この種のスニペットを少しでもサポートし続けることが期待されます。スニペットは、ユーザーが作成したものと拡張機能から提供される 2 つのカテゴリに分類されます。ユーザーが作成したスニペットをサポートしながら、拡張機能で提供されるスニペットを厳格にします。

Find widget

Find ウィジェット

Find ウィジェットのサイズを水平方向に変更できるようになりました。Find ウィジェットの元の幅よりも長いフルテキストを簡単に確認することができます。

Resize Find widget

また、Find ウィジェットが表示され、Find ウィジェットが一致した結果に覆い被さらないように、最初の行をスクロールさせるようになりました。一致する検索結果の間を移動する際に、マッチした結果が検索ウィジェットによって隠されないように自動的に少しスクロールさせます。

Uncover matched results

Find ウィジェットの動作をカスタマイズに役立つ 2 つの設定を導入しました:

  • 現在のエディタ上で選択している範囲から、Find ウィジェットで検索文字列をシードしたくない場合は、editor.find.seedSearchStringFromSelectionfalse に設定できるようになりました
  • editor.find.autoFindInSelectiontrue に設定することで、Find in Selection フラグをオンにします。エディタで複数の文字や行が選択されている場合に有効です

新しいコマンド toggleFindInSelection (⌥⌘L (Windows, Linux Alt+L)) の追加により、”Find In Selection” を切り替えることで、すべての検索オプションを切り替えるときにキーボードを操作できます。
すべての検索オプションを切り替えが可能になったことで、キーボードに手を置いて操作することができます。

Folding controls

折りたたみコントロール

行番号の横に表示される折りたたみ (folding) コントロールの可視性を、editor.showFoldingControls 設定で調整できるようになりました:

  • mouseover - マウスカーソルがエディタのガター上(行番号とテキストの間)にない場合は、折りたたまれていない領域を示すコントロールが隠されます。これは既存の動作と同様です
  • always - 折りたたみコントロールを、常に表示します

Letter spacing

文字間隔

@hoovercj による PR #22979 のおかげで、CSS の letter-spacing プロパティに似た、新しいエディタ設定 editor.letterSpacing を追加しました:

letter spacing

Integrated Terminal

統合ターミナル

Dragging files to the terminal to paste path

ファイルをターミナルにドラッグしてパスをペースト

VS Code のファイルエクスプローラや OS ファイルマネージャからファイルまたはフォルダをターミナルにドラッグすることで、パス名を貼り付けることが可能になりました。

Unicode character width improvements

Unicode 文字幅の改善

統合ターミナルにおける Unicode キャラクターの表示は、これらのキャラクターを多用する vtop のようなアプリケーションが正しくレンダリングされるよう明示的にサイズが変更されました。

変更前:

Better unicode width before

変更後:

Better unicode width after

Tasks

タスク

Run tasks in the Integrated Terminal

統合ターミナルでタスクを実行する

統合ターミナル内で実行されるようにタスクを構成できるようになりました。 以下のように、task.json ファイルに runner プロパティーを追加することで、統合ターミナルが有効になります。

{
"version": "0.1.0",
"runner": "terminal",
...
}

古い挙動に戻したい場合は、プロパティを削除するか、値に "process" を設定してください。

Preview: Tasks version 2.0

プレビュー:タスク バージョン 2.0

タスク機能の新しいバージョン 2.0.0 を選択できますが、このバージョンは、現在プレビュー中であり、アクティブに開発を継続しています。しかしながら、早期のフィードバックを得るためにも、このリリースで利用可能にしました。

このタスク機能のプレビュー版を有効にするには、version アトリビュートに "2.0.0" を設定してください:

{
"version": "2.0.0"
}

バージョン 2.0.0 を有効にすると、Gulp や Grunt などのさまざまなタスクランナーで構成されるタスクが自動的に検出され、Run Task コマンドを使用してそれらを実行できます。現在、自動検出対象となるタスクは、Gulp, Grunt, Jake, および package.json ファイルのスクリプトセクションで構成されるタスクランナーが対象となりますが、これ以外のタスクランナーで構成されるタスクの検出も可能なように、API を提供します。
API は、より新しいリリースに向けてに改良が続けられていますが、まずは、今回のリリースで提案されたものが利用可能です。(vscode.proposed.d.ts を参照)

タスクの選択ダイアログには、task.json ファイルで設定されたタスクと自動的に検出されたタスクの両方が表示されるようになりました。たとえば、buildwatch タスクを定義する gulp ファイルと Deploy タスクを定義するtask.json ファイルを持つワークスペースでは、タスクの選択ダイアログは、次のようになります。

task selection

システムは、タスク(たとえば、gulp ファイルによって提供されるビルド・タスクなど)を検出すると、通常、どの problem matchers をタスクに関連付ければ良いかを知りません。そのため、tasks.json ファイルの中で検出されたタスクと紐付けるカスタマイズが必要になります。これを行うには、検出されたタスクの右にある歯車アイコンを押します。これは tasks.json ファイルにセクションを挿入し、検出されたタスクをカスタマイズすることができます。

以下のビデオは、TypeScript problem matchers ($tsc という名前)を追加し、それを My Main Build に名前を変更する、gulp build タスクのカスタマイズ方法を示しています。

task customize

Debugging

デバッグ

Improved stepping performance

ステッピング性能の向上

あるユーザーの推奨として、ユーザーが次の “ステップ” 操作をまだ要求していない場合に限り、コールスタックの一部と対応する変数を遅延取得することで、ステッピング性能を向上させました。この変更により、VS Code は、常に現在の場所の正しいソースを表示できるように、スタックのトップフレームを取得します。スタックの残りの部分は、ユーザーが 0.4 秒間ステッピングし続けていない場合にのみ更新されます。

これにより、次の(かなり大きい)Typescriptコンパイラの画面記録でも見られるように、ステッピング性能が大幅に向上しています。

以前までの動作 - 常に完全なコールスタックを取得する:

step before

新しい動作 - コールスタックの残りの部分を遅延的にフェッチする:

step after

File link detection in Exception Peek UI

例外 Peek UI でのファイルリンクの検出

例外が発生した際、一般的に開発者は例外スタックトレースを追跡し、その原因を突き止めようとします。デバッグアダプタから返されたスタックトレース内にあるリンクを検出するメカニズムを追加しました。これにより、Exception UI からソースコードへ直接ジャンプすることが可能になります。さらに、デバッグコンソールにおける既存のリンク検出を改善し、ユーザーから報告されたいくつかの問題も修正しています。

File Link Detection in Exception Peek UI

Recipes for nonstandard debugging scenarios

非標準デバッグシナリオのレシピ

標準的ではないシナリオや複雑なシナリオにおいて Node.js のデバッグを設定することはチャレンジです。このリリースでは、新しいリポジトリに様々なシナリオのレシピを収集し始めました。
最初のレシピとして、Docker Container 内における TypeScript デバッグVS Code を利用した MERN Starter 開発 を用意しています。

Copy All action in Debug Console

デバッグコンソールの All action をコピー

Copy All コンテキストメニューアクションを使用して、デバッグコンソールからすべてのコンテンツをコピーできるようになりました。この機能の実装を動機づけた理由の詳細については、こちらをご覧ください。

copy all

New setting debug.internalConsoleOptions

新しい設定 debug.internalConsoleOptions

debug.internalConsoleOptions の設定を使用して、デバッグコンソールの動作を制御できるようになりました。以前はこの設定は launch.json でのみ利用できましたが、ユーザーのリクエストによって、これをユーザーおよびワークスペース設定でも指定できるようになりました。両方に設定されている場合は、launch.json の設定が優先されます。

Node Debugging

Node.js のデバッグ

Local/remote path mapping now supported for “launch” configurations

“launch” コンフィグレーションでローカル/リモートパスマッピングをサポート

リモートデバッグを容易にするために、VS Code は、ローカル VS Code プロジェクトと(リモートの)配置場所の JavaScript パスを localRootremoteRoot アトリビュートでマッピングすることを既にサポートしていましたが、リモートデバッグは、通常、リモートターゲットに「接続」するため、localRootremoteRoot アトリビュートは、launch コンフィグレーションのリクエストタイプ "attach" でしか利用できませんでした。
最近では、任意のプログラムやスクリプトを起動するための launch コンフィグレーションのリクエストタイプ "launch" をオープンにしています。(ローカルの Node.js ターゲットのデバッグのためだけではなく)

これにより、(たとえば Docker コンテナ内の) リモート Node.js ターゲットを起動し、VS Code の Node.js デバッガを接続することが可能になります。この機能は “起動”と “接続”の違いをさらに緩和し、リクエストタイプ "launch" の起動設定に localRootremoteRoot アトリビュートをサポートすることは理にかなっています。(リクエストタイプ "attach" も加えて)

Docker コンテナ内での TypeScript デバッグレシピで、サンプルを見つけることができます。

Extensions

拡張機能

Enable / Disable commands

有効または無効にするコマンド

Extensions ビューのコンテキストメニューに、拡張機能をすばやく管理するための 2 つの新しいコマンドを追加しました:

  • インストール済みの全ての拡張機能有効にする/インストール済みの全ての拡張機能無効にする
  • 拡張機能の自動更新を有効にする/拡張機能の自動更新を無効にする

Extensions actions

Languages

Syntax coloring for JSX/TSX components

JSX/TSX コンポーネントのシンタックスカラーリング

React JSX と TSX ファイルにおけるコンポーネントクラスは、通常の HTML 要素と異なる色になりました:

new jsx coloring

Additional JSDoc tags in hover and suggestions

ホバーとサジェストへの追加 JSDoc タグ

@deprecated@private などの JSDoc タグが、ホバーとサジェストのドキュメントに表示されるようになりました。

JSDocs tags sections

Open TS Server Log reveals log folder

TS サーバーのログを開くコマンドの変更

TypeScript: TS サーバーのログを開く コマンドは、VS Code でログファイルを開くのではなく、TypeScript のログが配置されるディレクトリを表示するように変更されました。これは、メインの tsserver.log ファイルとともに生成される追加のタイプ宣言 (typings) インストーラログファイルを確認する際にも役立ちます。(TypeScript 2.2.2 以上が必要)

Markdown preview preserves scroll position

Markdown プレビューではスクロール位置を保持するように

Markdown プレビューは、リリースノートなどの他の Webview ベースのビューと同様に、エディタの切り替えが発生してもスクロール位置を保持すようになりました。

Warnings for missing Markdown preview styles

Markdown プレビュースタイルの紛失に関する警告

プレビューで使用する markdown.styles 設定にセットされたスタイルシートが見つからない場合に警告メッセージが表示されます。

Markdown symbol search includes heading levels

シンボル検索で Markdown の見出しレベルをサポート

Go to Symbol in File… (⇧⌘O (Windows, Linux Ctrl+Shift+O)) を使用して Markdown ファイルの見出しに素早くジャンプできます。このリストに各シンボルの見出しレベルが含まれるようになり、見出しレベルで結果をすばやく絞り込むことができます。

markdown symbols with header level

Extension Authoring

拡張機能のオーサリング

Custom views

カスタムビュー

例えば、サンプルリポジトリで公開されている Node Dependencies ビューのように、VS Code でカスタマイズされたデータビューを表示したいという多くのリクエストがありました。このリリースでは、このようなビューにコントリビュートする VS Code の拡張機能を作成できるようになりました。現在のところ、カスタムビューはエクスプローラでのみ表示することができますが、将来的には、他の場所でも表示できることをサポートする予定です。

Custom view

ビューのコントリビュートは、次のように簡単です:

  • views 拡張機能ポイントを使用してビューを提供します
  • TreeDataProvider APIを使用して、ビューのデータプロバイダを登録します
  • menus 拡張機能ポイントの view/titleview/item/context の位置を使用して、ビューにアクションをコントリビュートする

サンプルは拡張機能のサンプルリポジトリを参照してください。

Debugger extensions

デバッガ拡張

StackFrame タイプの presentationHint アトリビュートにおける新しい enum 値 subtle

デバッグアダプタは、代替となる “subtle” レンダリングを受け取るために、プレゼンテーションヒント subtlでスタックフレームにフラグを立てることができる。

TerminatedEvent.body.restart アトリビュート拡張型

TerminatedEvent.body.restart アトリビュート型が boolean から any に拡張されました。この変更により、任意のデータを 1 つのデバッグセッションから次の(再開された)デバッグセッションにループさせることが可能になります。

Add to WatchCopy Value アクションに evaluateName アトリビュートが必須に

以前までの VS Code では、VARIABLES ビューのデータと評価リクエストで使用できる式を構築するために JavaScript-バイアス・ヒューリスティックを使用して、Add to Watch および Copy Value アクションを実装しようとしました。

しかし、このアプローチは、すべての言語で機能しないため、以前に変数である evaluateName アトリビュートを導入しました。そして、デバッグアダプタが Watch to AddCopy Value アクションを正しく動作させるために、evaluateName アトリビュートをサポートすることが必須となりました。

Glob patterns for workspaceContains activation event

workspaceContains アクティベーションイベントの glob パターン

@eamodio からの PR#24570 により、glob パターンに一致するファイルが少なくとも 1 つ含まれるフォルダが開かれたときに、拡張機能を有効化できるようになりました。

拡張機能における package.json への設定例:

{
...
"activationEvents": [
"workspaceContains:**/.editorconfig"
]
}

フォルダが開かれ、そのサブフォルダのいずれかに .editorconfig という名前のファイルが含まれていれば、この拡張機能はアクティブになります。

Defining a language’s word pattern in the language configuration file

言語設定ファイルで言語の単語パターンを定義する

@hoovercj からの PR #22478 により、言語構成ファイルで wordPattern を使って言語の単語パターンを指定することが可能になりました。これまでは、vscode.languages.setLanguageConfiguration(...) を呼び出すことによってのみ可能でした。

Better control decorations in the editor

エディタ装飾のより良い制御

@CoenraadS からの PR #25776 により、入力/編集のときにデコレーションの動作を設定できるようになりました。これは、DecorationRenderOptions.rangeBehaviour フィールドで設定できます。

Reference theme colors from extensions

拡張機能のテーマカラーを参照する

ステータスバーのフォアグラウンドにデコレータのテーマカラーを適用できるようになりました。テーマとユーザーがカラーをカスタマイズできますが、実際のカラー値の代わりにテーマカラーを使用するのことを推奨します。

var decorationType = vscode.window.createTextEditorDecorationType({
before: {
contentText: "\u26A0",
color: new vscode.ThemeColor('editorWarning.foreground')
}
});

テーマカラーのリストはこちらにあります。

Accessibility

アクセシビリティ

Better NVDA support

NVDA (NonVisual Desktop Access) サポートの向上

矢印キーを使用すると、NVDA によっていくつかの行や文字が繰り返されることがあります(Issue #26730 を参照)。NV Access の共同設立者の一人である James Teh のおかげで、根本的な原因(時には 30 msのタイムアウトが発生することがある)を理解できるようになりました。Jamesは NVDA の PR を持っており、デフォルトのタイムアウトを 100ms に変更かつ任意の値に設定可能にしています。新しい NVDA バージョンが出荷されるまで、Derek Riemer による、タイムアウトを 30ms から 200ms に増加させる NVDA プラグインが利用できます。また、30ms のタイムアウトを逃してしまう可能性を減らすためにも、我々の側でいくつかの変更を加えました。

“Screen Reader Detected”

スクリーンリーダーの検出”

現在、スクリーンリーダー利用時、VS Code を最適化するために、Electron APIs を活用しています。Electron は、スクリーンリーダーが接続されていることを認識すると、VS Code のステータスバーにメッセージを表示するとともに:

  • ステータスバーから行番号と列のインジケータを削除しました。これらのインジケータは絶えず更新しされるため、スクリーンリーダーが混乱してしまう多くのアクセシビリティイベントが発生してしまいます
  • ワードラップを無効にしました。たとえば、下矢印キーを押した場合、スクリーンリーダーはカーソルを次の行に移動させ、同じ行の右にある列に移動させないようにします。
  • エディタ内のテキストの現在のページを <textarea>と同期してミラーリングさせ入力イベントとして利用します
  • 30 ミリ秒のアクセシビリティ・イベント・タイムアウトの範囲内で行う可能性を高めるために、特定の文章の機能を無効にします。通常であれば、矢印キーの処理に 4〜5 ms 以上かかることはありませんが、これらの機能を無効にすることで、費やされる時間を 1〜2 ms に短縮することができます。残りの時間は、私たちのプラットフォームが何が起こったのかを把握し、正しいアクセシビリティイベントを出すことに費やされます。

スクリーンリーダーを検出することは簡単なことではありません。もし、”スクリーンリーダーが検出されました” というメッセージがステータスバーに表示され、スクリーンリーダーが接続されていない場合は、editor.accessibilitySupport の設定を "auto" から "off" に変更してください。

Engineering

エンジニアリング

New crash report handling

新しいクラッシュレポート処理

VS Code のクラッシュレポートが改善されました。VS Code は、VS Code と Electron 自体をより良くするために、解析に必要なクラッシュデータの取得を Electron に組み込まれたクラッシュレポーターにより行います。VS Code がクラッシュした場合、ダンプが取得され、マイクロソフトに送信されますが、いつでもこれを無効にすることができます

この仕組みはうまくいきましたが、クラッシュを分析して理解することは時間がかかる作業でした。マイクロソフトは HockeyApp と呼ばれる優れたクラッシュレポートサービスを提供していますが、クラッシュレポートのために HockeyApp を有効にしました。しかし、組み込みのクラッシュレポーターが HockeyApp が理解できない形式でデータを送信するため、これを可能にする独自の Electron ビルドを作成する必要がありました。この変更は Electron 1.6.6 をベースにしており、クラッシュレポーターは HockeyApp サービスとやり取りを行います。

ソースから VS Code をビルドする場合は、引き続き GitHub バージョンの Electron を利用します。他の Electron へのコントリビュータと協力して、誰でもHockeyApp(またはその他のサービス)を簡単に使用できるように、クラッシュレポートサービスをプラグイン可能にする予定です。

Issue management automation

Issue 管理の自動化

いくつかの issue 管理を自動化するために、Probot インスタンスを導入しました。VSCodeBot が GitHub 上の issue にラベルを追加したり、条件も満たした古い issue を閉じることがあります。私たちはコミュニティからのフィードバックを求めており、今後も、より多くの自動化が追加される予定です。

Insiders ビルドに対して報告された問題には、insiders ラベルが追加されます:

VSCodeBot labels issues reported against Insiders build

needs more info (より多くの情報が必要) タグが付けられてから、一週間以上更新がなかった場合は、issue をクローズします:

VSCodeBot closes stale \`needs more info\` issue

Automated Smoke Test

スモークテストの自動化

このマイルストーンの一環として、各リリースを手動で実行するために使用していた Smoke Test を自動化しました。すべての手動ステップは、Spectron テストフレームワークを使用して自動化され、この issue で詳細な進捗状況が追跡されています。

Smoke Testは、リリースを公開する前にすべての VS Code 基本機能が動作しているかどうかを確認するのに役立ちます。テストを自動化することで、テストにかける時間を節約でき、より多くのリソースを投入し、新機能の開発に集中することができます。

New Commands

新しいコマンド

キーコマンドコマンド id
Select first child of currently selected item’s parent in tree/listslist.focusFirstChild
Select last child of currently selected item’s parent in tree/listslist.focusLastChild
次の競合 (Next Merge Conflict)merge-conflict.next
前の競合 (Previous Merge Conflict)merge-conflict.previous
Accept Selectionmerge-conflict.accept.selection
現在の方を取り込む (Accept Current)merge-conflict.accept.current
入力側を取り込む (Accept Incoming)merge-conflict.accept.incoming
両方を取り込む (Accept Both)merge-conflict.accept.both
両方を全て取り込む (Accept All Both)merge-conflict.accept.all-both
Accept All Currentmerge-conflict.accept.all-current
入力側の全てを取り込む (Accept All Incoming)merge-conflict.accept.all-incoming
現在の競合を比較 (Compare)merge-conflict.compare

Contributions to Extensions

拡張機能への貢献

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

Notable Changes

注目すべき変更

  • 25789: Can’t split file when dragging from Explorer
  • 19644: Cursor does not go to the maximum line column when pressing “End” twice with word wrap enabled
  • 6661: Ctrl+D/Cmd+D merges adjacent selections.
  • 4271: Mac Insert Emoji Duplicates Text
  • 3623: Match whole word does not work for not latin characters (at least for cyrillic)
  • 17534: Search: not possible to remove individual search results in a file
  • 16580: Unable to write to settings should offer an action to open settings
  • 17609: Line wrapping problem in bash on ubuntu on windows
  • 23484: “Ctrl +click to follow link” hover appears only on the last link in the terminal
  • 25664: Terminal panel is not properly restored after restarting

Thank You

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

vscode への貢献:

language-server-protocol への貢献:

vscode-languageserver-node への貢献:

vscode-tslint への貢献:

vscode-css-languageservice への貢献:

vscode-chrome-debug-core への貢献:

localization への貢献:

Transifex でコミュニティローカリゼーションを開始してから 2ヶ月がたちました。Transifex VS Code project チームには 200 人以上のメンバーが参加しています。新しい翻訳の提供、翻訳へのに投票、プロセスの改善提案などの貢献に感謝します。

このリリースにおいて、もっとも活躍されたコトリビューターの一覧です。コントリビューターリストを含むプロジェクトの詳細については、プロジェクトサイト(https://aka.ms/vscodeloc. を参照してください。

  • French: Vincent Biret, JP Gouigoux, Julien Brochet.
  • Italian: Aldo Donetti, Piero Azi, Luca Nardi, Giuseppe Pignataro.
  • German: Levin Rickert, Ingo Bleile, Carsten Kneip, Christian Gräfe, Markus Weber.
  • Spanish: Andy Gonzalez, Alberto Poblacion, José M. Aguilar, Juan Carlos Gonzalez Martin.
  • Russian: Al Fes, Aleksey Nemiro, Orrchy, Serge Rodionov.
  • Japanese: EbXpJ6bp, Yuichi Nukiyama, Yosuke Sano, Yuki Ueda, Takayoshi Tanaka, Tetsuya Fukuda, Takashi Kawasaki.
  • Korean: Ian Y. Choi.
  • Chinese (Simplified): Joel Yang, YF, Alan Tsai, 王韦煊, Jianfeng Fang, kui li.
  • Chinese (Traditional): Alan Liu, Alan Tsai, Duran Hsieh, Wei-Ting(DM), JJJ.

また、ブラジルのポルトガル語コミュニティのローカリゼーションチームにお祝いを申し上げます。その努力により、Transifex でのローカリゼーションが完了し、その成果は、Insiders ビルドに統合されテストされています。検証の進捗状況によっては、すぐに翻訳の成果をブラジルのお客様向け安定版ビルドに統合したいと考えています。

  • Portuguese (Brazil): Roberto Fonseca, Bruno Sonnino, Alessandro Fragnani, Douglas Eccker, Bruno Ochotorena, Rodrigo Crespi, Anderson Santos, Felipe Caputo, Marcelo Fernandes, Roberto Nunes, Rodrigo Romano, Luan Moreno Medeiros Maciel, Ilton Sequeira.