この文章は引用したものです : https://github.com/ayatokura/JP-VSCode-Docs/blob/master/release-notes/v1_14_ja.md
アップデート 1.14.1: このアップデートでは、これらの問題 に対処しています
- JavaScript ES5 スタイルの関数クラスを ES6 クラスに変換するリファクタリング機能は無効になっています
アップデート 1.14.2: このアップデートでは、これらの問題 に対処しています
Downloads: Windows | Mac | Linux 64-bit: .tar.gz .deb .rpm | Linux 32-bit: .tar.gz .deb .rpm
Visual Studio Code の 2017 年 6 月リリースへようこそ。このリリースでは、いくつかの重要な更新があり、ハイライトは次のとおりです:
- Integrated Terminal improvements - 検索をサポート、複数ページからの選択/コピー
- Command Palette MRU list - 最近使用したコマンドをすばやく見つけて実行
- New Tasks menu - ビルドの実行とタスクランナーを設定するためのトップレベル Tasks メニューの追加
- Automatic indentation - ソースコードの入力、移動、貼り付け時の自動インデント
- Emmet abbreviation enhancements - Emmet を任意の言語に追加可能、マルチカーソルのサポート
- New Diff review pane - Diff エディタのナビゲートを
F7
キーで素早く変更、パッチ形式での表示 - Angular debugging recipe - VS Code で Angularクライアントのデバッグ
- Better screen reader support - リストとドロップダウンアイテムをより良く表示するために Aria プロパティを導入
- Preview: 64-bit Windows build - Windows 64-bit 版の提供 (Insiders build)
- Preview: Multi-root workspaces - 同じエディタで複数のプロジェクトを開く (Insiders build)
これらのリリースノートをオンラインで読むには、code.visualstudio.com へアクセスし、Updatesを参照してください
VS Code の重要な更新に関連するアップデート情報は、リリースノートの次のセクションに配置されています。その他のアップデートは、次のとおりです:
- Workbench - 空のワークスペースとファイルの復元、実行中のウィンドウ(インスタンス)の素早い切り替え
- Languages - TypeScript 2.4、JavaScript ファイルでのより関連性の高いサジェスト
- Debugging - Node.js デバッグ設定の簡略化
- Tasks - VS Code で実行する npm スクリプトと TypeScript コンパイラの自動検出によるカスタマイズ
- Extension Authoring - SVG レンダリングの制約、カスタムビューの可視性、新しい Debug API
Insiders: できるだけ早く新しい機能を試してみたいですか? それならば、毎晩アップデートされる Insiders build をご利用ください。常に最新のアップデートが利用可能になり、最新の機能をいち早く試してみることが可能です
Workbench
ワークベンチ
Lighter update experience
軽いアップデートエクスペリエンス
アップデート通知をどのようにユーザーへ伝えるかについて取り組んでいます。VS Code の更新を促すポップアップメッセージは、破壊的であると意見が一致したため、様々なより良い UI を試しています。今月のリリースから、アップデートが利用可能なときにワークベンチの左下隅に小さなインジケータが表示されます。
このインジケータをクリックすることで、アップデートを適用するだけでなく、他のグローバルアクション(コマンドパレット、設定 など)にアクセスすることができます。
この通知を見失う心配はありません。macOS ユーザーは、VS Code を再起動するとすぐに自動的に更新が適用されます。数日たってもアップデートの通知を受け入れない場合、Windows および Linux ユーザーは、以前の古いポップアップメッセージを受け取ることになります。
Command Palette improvements
コマンドパレットの改善
Command Palette のドロップダウン (⇧⌘P (Windows, Linux Ctrl+Shift+P)) を使いやすく改善しました。
よくあるリクエストの一つが、Command Palette を再び開く際に、最後に実行された入力履歴を表示することでした。新しい設定 workbench.commandPalette.preserveInput
でこの動作を有効にできます。
また、VS Code の再起動が行われるまでの間、保持されるコマンドの最新リスト (MRU = Most recently used) を追加しました。実行された最新のコマンドは常に先頭に表示されます。新しい設定 workbench.commandPalette.history
では、表示するエントリの数を制御できます(この機能を無効にするには、0 を設定します)。MRU を有効にすると、Command Palette を開いたときの履歴が常に最後に実行されたコマンドをデフォルトで選択するため、workbench.commandPalette.preserveInput
を有効にする必要はありません。
実行されたコマンドの履歴からすべてのエントリを消去する新しいコマンド Clear Commands History が追加されました。
最後に、ドロップダウンに表示されるキーボードショートカットは、 Keyboard Shortcuts エディタと同じビジュアルフォームで表示されます。
Restore empty workspaces
空のワークスペースを復元する
VS Code では、フォルダを開いているワークスペースと何も開かれていない空のワークスペースで作業することができます。空のワークスペースは、特定のフォルダに開放されていませんが、ファイルをディスクから開くことができます。
これまでの、VS Code の終了は、空のワークスペースの UI 状態を復元することは決してなく、ファイルだけ開いている場合でもレイアウトを失うことになりました。(ウィンドウの再読み込みでも同様)
今回のリリースでは、開かれたフォルダを持つワークスペースと同様の方法で、空のワークスペースの UI 状態を復元することが可能です。
新しい設定 window.restoreWindows
がこの動作を制御します。設定可能な値は、次のとおりです:
none
- ワークスペースを復元しないone
- 最後のアクティブなワークスペースを復元 (デフォルト)folders
- 開かれたフォルダのみを復元all
- すべてのワークスペースを復元
新しい設定 window.restoreWindows
の採用により、以前の設定である window.reopenFolders
は廃止されます。まだいくつかのリリースにおいて古い設定はサポートされますが、新しい設定に移行してください。
Close unmodified files
未修正ファイルを閉じる
アクティブなエディタグループに存在する未編集のエディタを閉じるための新しいコマンドが導入されました。これにより、変更がなく保存の必要がない (not dirty) エディタのタブを簡単に閉じることができます。アクションは、キーバインディング (⌘K U (Windows, Linux Ctrl+K U)) だけでなく、タブ (ヘッダー) のコンテキストメニューやエクスプローラーの 開いているエディター (OPEN EDITORS) ビューからも実行できます。
この機能のプルリクエストを提供してくれた Soney Mathew (@soneymathew) に感謝します!
Switch window improvements
スイッチウィンドウの改善
以前のリリースでは、開いているウィンドウを切り替えるためのクイック・ピッカーが追加されました (workbench.action.switchWindow
コマンド)。このリリースでは、操作性をより良くするためにいくつかの微調整を行っています。
ファイルアイコンテーマの利用を適用している場合、現在アクティブなファイルまたはフォルダのアイコンがウィンドウに表示されます。
さらに、開いたウィンドウをすばやく切り替えるための新しいコマンド workbench.action.quickSwitchWindow
が追加されました。修飾キーを押したままにすると、ウィンドウのリストの移動を繰り返し、すべてのキーを放すことで選択されたものを開くことができます。
例として、 Ctrl+R
キーボードショートカットにこの機能を割り当て使用するには、キーバインディングエディタで次のルールを設定します:
|
Ctrl+R
を押し、Ctrl
キーを押したままにしておきます。 R
キーを押している限り、ウィンドウのリストをナビゲートすることができます。そして、フォーカスを合わせ、すべてのキーを放します。
New keybindings context per quick picker
クイックピッカーごとの新しいキーバインドコンテキスト
ウィンドウピッカー周りの改善に関連して、クイックピック機能を備えたピッカーをより簡単に設定することが可能になりました。ピッカーが開くたびに、キーバインドの割り当てに使用できる特定のキーバインドコンテキストがアクティブになります。たとえば、ウィンドウピッカーは、開いたときに inWindowsPicker
のコンテキストキーを有効にします。より強力なピッカーですばやくナビゲートできるだけでなく、いくつかの厄介なバグも修正されました。クイックピッカーが既に表示されている場合でも、クイックピッカーを開くことができます(たとえば、Command Palette が開いている間に Quick Open ファイルピッカーを開くなど)
次の例は、最近開いたフォルダを切り替えるためのクイックナビゲートキーバインドを設定する方法を示しています:
たとえば、キーボードショートカット Ctr+J
でこの機能を使用するには、キーバインディングエディタで次のルールを設定します:
|
Ctrl+J
を押し、Ctrl
キーだけを押したままにします。J
キーを押すことで、表示されている最近開いたフォルダとファイルのリストをナビゲートすることができます。目的のリストにフォーカスを移動させすべてのキーを離すことで開きます。
Extensions Installed / Recommended sections
拡張機能のインストール/推奨セクション
推奨される拡張機能をより目立たせるために、拡張機能 ビューには、インストール済み と 推奨 される拡張機能の 2 つのセクションが表示されます。
Lists and quick pick leverage aria properties
リストとクイックピックにおける、aria プロパティの活用
サジェストウィジェット、例外リスト、Quick Open ドロップダウンなどのリストで、aria-setsize
と aria-posinset
が設定されました。これらのリストは仮想的であり、これらの aria プロパティがなければ、スクリーンリーダーはエントリの数を正しく判別できませんでした。
Integrated Terminal
統合ターミナル
Selection re-implemented
実装し直された選択機能
統合ターミナルでの選択の操作は、通常の Web 選択から、端末自身が管理しレンダリングするモデルに移行することによって完全に再実装されています。これにより、多くの問題) が修正され、いくつかの主要な変更があります:
- ターミナルの複数のページからテキストを選択してコピーできるようになりました
- 新しい すべて選択 コマンドを追加
- ラップされた行をコピーする際、ラップされた箇所に改行が追加されなくなりました
- ダブルクリックによる単語選択が改善され、フラグメントだけでなく URL とパスが選択されるようになりました
tmux
のマウスモードにて、選択が正しく動作するようになりました
Find in the terminal
ターミナルで検索
統合ターミナルには基本的な find 機能が追加され、⌘F (Windows, Linux Ctrl+F) で起動できます。
Linux や Windows 上で、 Ctrl+F
で Find ウィジェットを起動するのではなく、シェル操作に利用する場合は、次のようにキーバインディングを削除する必要があります:
|
Rename terminal sessions
ターミナルのセッション名を変更
統合ターミナルに作成されたセッション名を、workbench.action.terminal.rename
コマンドを使ってリネームすることができるようになりました。新しい名前は、ターミナル選択ドロップダウンに表示されます。
Git
Pull from specific remote
特定のリモートから pull する
@BugraC, @matthewshirley, @Krzysztof-Cieslak のおかげで、リモートリポジトリの特定のブランチから Pull from… コマンドを使って変更を取り込むことができるようになりました。
Manage your .gitignore file
.gitignore ファイルの管理
@BugraC により、ソースコントロールビューのコンテキストメニューまたはグローバルの Git: Add File to .gitignore コマンドを使って .gitignore
にファイルを追加できるようになりました。
Tasks
タスク
タスクをより使いやすくするために、Tasks メニューをトップレベルのメニューバーに追加しました:
Tasks メニューには、デフォルトのビルドタスクを設定する新しいアクション Configure Default Build Task が用意されていますが、0.1.0
バージョンの tasks.json
ファイルを使用する場合は、単に tasks.json
ファイルを開くだけです。Tasks メニューの機能を最大限に活用するためには、2.0.0
バージョンの tasks.json
を用意する必要があり、デフォルトで tasks.json
ファイルが存在しない場合に作成することができます。
多くの素敵な機能には、新しいタスク形式が付属しています:
Run Task
コマンドは、使用頻度の高いタスクを最初に表示し、カスタム定義されたタスクおよび自動検出されたタスクを最後に表示するようになりました- タスクは統合ターミナルで実行されます。これにより、出力エンコーディングが改善し、完全な ANSI 制御シーケンス(色など)がサポートされ、タスクへの入力をサポートします
- TypeScript、Gulp、Jake、Grunt、npm タスクの自動検出:
今後は、拡張機能の作成者とも協力し、.Net や Maven などのサポートを追加する予定です
上記の画像からわかるように、自動検出されたタスクの先頭にはタスクタイプ (‘npm:’, ‘gulp:’, ‘grunt:’, ‘tsc:’ または ‘jake:’) が付きます。
launch.json
のpreLaunchTask
のように、別のファイルから自動検出されたタスクを参照している場合は、そのタスク参照をプレフィックスで更新する必要があります。ワークスペースは、次のようなlaunch.json
を持っており、build
タスクは、gulp ファイルで定義されていると仮定すると、
|
これを次のように変更する必要があります:
|
- タスクなしでタスクを実行するときのガイド付き問題マッチャーの選択:
- ガイド付きデフォルトビルドタスクの選択を呼び出すには、グローバルメニューバーから
Configure Default Build Task
を実行します。 もちろん、自分で作成したカスタムタスクを
tasks.json
ファイルに定義することができ、ターミナル上で実行方法を完全に制御できます。たとえば、以下のタスクは、端末でテストスクリプトを実行し、テストを実行するたびに新しい端末を生成し使用します:{"version": "2.0.0","tasks": [{"taskName": "Run tests","type": "shell","command": "./scripts/test.sh","windows": {"command": ".\\scripts\\test.bat"},"group": "test","presentation": {"reveal": "always","panel": "new"}}]}
新しい機能の詳細なリストと使い方、そして 0.1.0
バージョンの task.json
から 2.0.0
への最適な変換方法については、tasks documentation を参照してください。
現在、ワークスペースで利用可能な Gulp, Grunt, Jake, および npm タスクを自動検出しますが、タスク名を launch.json ファイルから参照するときに、タスク名を修飾する必要があります。ワークスペースは、次のような launch.json
を持っていると仮定します:
|
"build"
タスクは、gulp ファイルで定義されています。これを変更する必要があります:
|
タスク名がどのように見えるかわからない場合は、グローバルの Tasks メニューから Run Task… を実行し、タスクのリストに表示されるラベルを使用してください。
また、タスク API もリリースしました。プログラミング言語にタスク検出を提供する場合は、API や npm scripts autodetect のような VS Code タスク検出拡張機能を参照してください。
Debugging
デバッグ
Recipe for Angular debugging
Angular デバッグのレシピ
非標準のシナリオや複雑なシナリオで、Node.js のデバッグを設定することは、チャレンジになることがあります。5 月のリリースでは、recipe repository を作成し、様々なシナリオのレシピの収集を始めました。
このリリースでは、Chrome Debugging with Angular CLI の Tony Sneed (@tonysneed) による新しいレシピが追加されました。
Debug hover has scroll bar for long values
デバッグホバー上でスクロールバーによるは長い文字列値を表示可能に
コミュニティへの pull request により、デバッグホバー上でスクロールバーを使って長い文字列値を表示できるようになりました。
Node Debugging
Node デバッグ
Windows executables are found even if no extension is specified
拡張子が指定されていない場合でも Windows 実行ファイルを見つける
Windows では、以前まで下記のように runtimeExecutable
パスに正しいファイル拡張子を含める必要があり、クロスプラットフォーム構成を複雑にしていました:
|
このリリースでは、プラットフォーム間での移植性を高めるために、パスにファイル拡張子を含める必要はなくなりました:
|
Simplified setup for “Restart debug session”
“Restart debug session” の設定を簡略化
VS Code の Node.js デバッグは、常にデバッグセッションを自動的に再開することをサポートしていました。これは、nodemon のようなファイル監視ツールを使用して、ファイルの変更を検出し Node.js を再起動させる場合に役立ちます。起動設定属性 restart
を true に設定すると、node デバッガは、Node.js が終了した後、自動的に Node.js ランタイムに再接続しようと試みます。詳細は、Node.js Debugging を参照してください。
今回のリリースでは、デバッグフラグとポート属性を明示的に設定する必要がなくなり、単純化されました。プロトコル (“legacy” または “inspector”) に応じて、VS Code は正しい --debug
、--debug-brk
、 --inspect
、--inspect-brk
引数とランダムなポートを runtimeExecutable
として指定されたプログラムに渡します。このポートはその後の restarted セッションでも使用されます。
また、この機能を使用することで、グローバルにインストールされた nodemon のデバッグ設定をより簡単に行えます:
|
“Attach by process ID” support for all Node.js versions
すべての Node.js バージョンで “プロセス ID によるアタッチ” をサポート
VS Code Node.js デバッグは、デバッグモードで起動されていなくても Node.js プロセスのデバッグを常にサポートしていました。このために、”attach” タイプのデバッグ設定に、processId
属性を指定しなければなりません。このリリースでは、Node.js のすべてのバージョンでこの機能をサポートしています。(8.0 より以前のバージョンの場合だけでなく)
Node.js v8.0 related changes
Node.js v8.0 に関連した変更
Node.js のバージョンにより、サポートされるデバッグプロトコルが異なります。VS Code Node.js デバッガは、この差違を吸収して、使用するプロトコルを自動的に決定しようとします。しかし、これが不可能な場合、デフォルトでは、8.0 以前のすべての Node.js バージョンでサポートされている “legacy” プロトコルを使用します。詳細については、Node.js Debugging documentation を参照してください。また、Node.js v8.x の採用が着実に増えてきているため、特定のシナリオのデフォルトプロトコルを “legacy” から “inspector” へ変更することに着手しています。
今回のリリースの Node.js デバッグでは、起動コンフィグレーションの runtimeExecutable
属性が設定されるたびに “inspector” プロトコルが仮定されます。もし、デバッグ構成が失敗する場合は、この変更が原因かもしれません。これを修正するには、Node.js をバージョン 8.x にアップグレードするか、 "protocol": "legacy"
を起動設定に追加することによって “legacy” プロトコルの使用を明示的に強制することができます。
Languages
TypeScript 2.4
TypeScript 2.4
本リリースの VS Code には、TypeScript 2.4.1 が付属しています。このリリースには、多くの新しい言語機能、バグ修正、エディタの改良が含まれており、いくつかのハイライトは次のとおりです:
Dynamic Import Expressions
動的なインポート式
遅延読み込みモジュール用の新しい ECMAScript import
式をサポート:
|
Parent method suggestions in subclasses
サブクラスでの親メソッドサジェスト
IntelliSense は、インターフェイスと親メソッドのクラスメソッドをサブクラスで表示するようになりました:
これは、親メソッドのオーバーライドやインタフェースの実装に役立ちます。
More relevant suggestions in JavaScript files
JavaScript ファイルでのより関連性の高い提案
VS Code 1.13 では、JavaScript ファイル上でのサジェストに型のサジェストが含まれています:
この機能により、EvalErrorConstructor
や EventInit
のように、JavaScript には通常必要のない多くのサジェストが表示されたことを意味していました。
VS Code 1.14 では、普通の JavaScript で作業している間、JavaScript のサジェストをフィルタリングにより関連性の高いものだけを含めることができます:
Simpler building TypeScript using Tasks
Tasksを使用したTypeScriptの構築の簡素化
⇧⌘B (Windows, Linux Ctrl+Shift+B) を使用することで tasks.json
ファイルを設定せずに TypeScript プロジェクトをビルドできるようになりました。必要なのは tsconfig.json
ファイルだけです:
TypeScript は、ビルドを実行するためにワークスペース内のすべての tsconfig.json
プロジェクトを取得します。
Formatting option for spaces after TypeScript type assertions
TypeScript 型アサーション後のスペースの書式設定オプション
新しい typescript.format.insertSpaceAfterTypeAssertion
設定で、TypeScript のタイプアサーション後のスペース配置を制御できます。
|
Refactoring support for JavaScript and TypeScript
JavaScript と TypeScript のリファクタリングサポート
注: パフォーマンス問題により一部のシナリオでは、VS Code 1.14.1 でこのリファクタリングは無効になっています
VS Code 1.14 には、JavaScript と TypeScript コードのリファクタリングの初期サポートが含まれています。最初にサポートされているリファクタリングは、JavaScript ES5 スタイルの関数クラスを ES6 クラスに変換します:
We plan to add additional refactorings in the future.
今後、リファクタリングを追加する予定です。
Control handling of line breaks in the Markdown preview
Markdown プレビューの改行処理制御
新しい markdown.preview.breaks
設定は、Markdown プレビューの改行のレンダリングを制御します。デフォルトでは、1 つの改行は Markdown の段落としては無視されます。たとえば、以下の Markdown では:
|
Markdown プレビューでは、次のように表示されます:
"markdown.preview.breaks": true
が設定されている場合、段落内のすべての改行は、出力される HTML 内で <br>
タグに変換されます:
Editor
エディタ
Emmet abbreviation improvements
Emmet 略語の改善
1.13 で、Emmet 機能の新しいモデルを導入しました。このモデルは、emmet.useNewEmmet
を true
に設定することで有効にできます。現在の 1.14 リリースにおける、この新しいモデルの改善点を以下に示します:
Multi cursor support in Emmet
Emmet でのマルチカーソルサポート
emmet.useNewEmmet
を true
に設定した後で、多くの Emmet コマンドのマルチカーソルサポートを試してください。そして、期待どおりに動かないものがあれば、issue として報告することを忘れないでください。
Emmet customizations in the new Emmet model
新しい Emmet モデルでの Emmet カスタマイズ
新しい Emmet モデルでは、次の Emmet 設定をサポートしています。
emmet.includeLanguages
Emmet でサポートされている既存言語とのマッピングを提供することにより、Emmet: Expand Abbreviation と Emmet: Wrap with Abbreviation を任意の言語に追加できます。Emmet を追加したい言語を左側に、Emmet がサポートしている言語を右側に記載します。マッピングの両側に言語 ID を指定します。
たとえば:
"emmet.includeLanguages": { "javascript": "javascriptreact", "vue-html": "html", "plaintext": "jade"}
emmet.excludeLanguages
Emmet の展開を表示したくない言語がある場合は、この設定の配列に対象とする言語 ID を追加します
emmet.syntaxProfiles
See Emmet Customization of output profile to learn how you can customize the output of your HTML abbreviations.
For example:"emmet.syntaxProfiles": {"html": {"attr_quotes": "single"},"jsx": {"self_closing_tag": true}}emmet.variables
Emmet スニペットで使用される変数をカスタマイズします。
たとえば:"emmet.variables": {"lang": "de","charset": "UTF-16"}emmet.showExpandedAbbreviation
提案または補完リストに表示される Emmet サジェストを制御します。
never
- どの言語のサジェストリストにも Emmet 略語を表示しないinMarkupAndStylesheetFilesOnly
- マークアップとスタイルシートベースの言語モードでのみサジェストリストに Emmet 略語を表示 (‘html’,’pug’,’slim’,’haml’,’xml’,’xsl’,’css’,’scss’,’sass’,’less’,’stylus’) (デフォルト)always
-javascriptreact
、typescriptreact
および、新しい設定emmet.includeLanguages
にマップされている言語だけでなく、マークアップやスタイルシートベースの言語モードでサジェストリストに Emmet 略語を表示注意:
always
モードに設定した場合、新しい Emmet の実装はコンテキストを意識していません。たとえば、JavaScript React ファイルを編集している場合、マークアップを書くときだけでなく JavaScript を書くときにも Emmet サジェストが得られます。
Enable language extensions to provide Emmet suggestions
Emmet のサジェストを提供する言語拡張を有効化
Emmet サジェストがソースコードの非マークアップや非スタイルシートのセクションに現れる問題を回避するために、Emmet 補完プロバイダを独自のモジュールとして抜き出しました。
言語拡張機能の作成者は、組み込まれた 言語構造をより良く認識する実装である npm モジュール [vscode-emmet-helper] (https://www.npmjs.com/package/vscode-emmet-helper) を使用することにより、Emmet 拡張機能よりも適切なコンテキストで Emmet サジェストを提供できるようになります。
Auto indent on type, move lines and paste
自動インデントタイプ、行とペーストの移動
このリリースでは、TypeScript、JavaScript、HTML、CSS、JSON、または、字下げルールを持つ言語で、行の移動や、コンテンツのペーストした際に、自動でインデント調整を適用することが可能になりました。この機能を有効にするには、editor.autoIndent
を true
に設定します。インデントルールについては、まだ開発中のため、問題が発生した場合はお知らせください。
Indentation rules
インデントルール
VS Code 1.9 リリースでは、インデントルールに関する初期の改良が行われました。本リリースでは、拡張機能のアクティベーション段階で登録するのではなく、言語拡張機能の作成者は、language-configuration.json
ファイルでインデントルールを宣言できます。
|
TypeScript, JavaScript, CSS, HTML, JSON の言語モードには、インデントルールが組み込まれています。ほかの言語のインデントルールは含まれていませんが、ルールを定義する言語拡張機能を導入することで、editor.autoIndent
機能が動作することがわかります。
タイプ
C のような言語では、すでに括弧をうまく扱うことができます。開いた括弧を入力し、一致する閉じ括弧を入力したときにインデントが調整され、次の行がインデントされます。ただし、キーワードを使用してブロックをラップする言語はサポートされていません。新しい自動インデント機能により、その言語のインデントルールを作成することができます。
行の移動
ネストされたブロックからソースコードを移動するか、あるブロックから別のブロックにコードを移動すると、エディタはインデントレベルを自動的に調整します。
ペースト
ペーストされた行の処理は、行の移動に似ていますが、ペーストされた領域の前の行に基づいてインデントを調整します。
Minimap
ミニマップ
新しい "editor.minimap.showSlider"
設定に "always"
を設定すると、常にミニマップ(アウトラインビュー)スライダーを表示できます。また、スライダ内では、水平スクロールを行うためのインジケータもあります。スライダジオメトリの計算には多くの改善点がありました(注目の変更点セクションを参照):
Diff editor review pane
Diff エディタレビューペイン
Diff エディタに、スクリーンリーダーのユーザー向けに特別に設計されたレビューペインを追加しました。diff エディタは 2 つのエディタの組成として実装され、それぞれはスクリーンリーダーに標準的なコードエディタとして公開されています。コードエディタのコンテキストから、diff 領域の入力やスクリーンリーダーへの実際の diff の入力を自動的にアナウンスする方法は、(可能であっても)明確ではありません。
そこで、F7
と Shift+F7
を追加しました。これは diff をナビゲートし、統一されたパッチ形式で表示します。行は矢印キーでナビゲートすることができ、Enter
キーを押すと、diff エディタと選択された行にジャンプします。
Extension Authoring
Constraints for rendering SVG images
SVGイメージをレンダリングするための制約
セキュリティ上の懸念から、ユーザーが提供する SVG イメージを VS Code 内でレンダリングさせないようにしました。また、VS Code 内における拡張機能の管理をより安全に使用するための制約がいくつか追加されました:
package.json
で提供される拡張機能のアイコンに、SVG を利用できなくなりましたpackage.json
で提供される拡張機能のバッジに SVG は利用できなくなり、承認バッジプロバイダからのものでなければなりませんREADME.md
とCHANGELOG.md
で使用するイメージの URL はhttps
ではじまる URL での解決が必要になりましたREADME.md
とCHANGELOG.md
で使用するイメージに SVG は利用できなくなり、バッジも承認バッジプロバイダからのものでなければなりませんREADME.md
とCHANGELOG.md
の画像は、データ URI を使用できません
これらの制約を適用するために、VS Code は、拡張機能の package.json
, README.md
および CHANGELOG.md
ファイルのリンティングエラーを報告します。また、拡張機能を公開するために利用する vsce
ツールは、コンプライアンスチェックを実行し、問題がある場合には、新しいバージョンを Marketplace へアップロードする事を許可しません。
Custom views
カスタムビュー
when
コンテキスト値を package.json
の views
セクションで定義することで、カスタムビューの可視性を制御できるようになりました。
Example:
|
New Debug API
新しいデバッグ API
今回のリリースから、拡張機能のために Debug API の提供を開始しました。
The initial API covers the life-cycle of debug sessions:
初期 API には、デバッグセッションのライフサイクルが含まれています:
- メモリ内の起動設定に基づいてデバッグセッションを開始するための
createDebugSession
- デバッグセッションが終了したことを示す
onDidTerminateDebugSession
イベント
注意: 現在、この API は提案段階であるため、使用するには
enableProposedApi":true
をpackage.json
追記し、vscode.proposed.d.ts
ファイルを拡張機能のプロジェクトに追加します。また、enableProposedApi
属性を使用する拡張機能を Marketplace に公開することはできません。
New Task API
新しいタスク API
プログラミング言語にタスク検出機能を実装するために、公式なタスク API が使用できるようになりました。 API と VS Code タスク検出拡張機能の 1 つとして実装された [npm scripts autodetect] (https://github.com/Microsoft/vscode/blob/master/extensions/npm/src/main.ts) を参照してください。
Debug Adapter Protocol
デバッグアダプタプロトコル
新しい機能 supportsDelayedStackTraceLoading
5 月のリリース版では、呼び出しスタックの一部と対応する変数を遅延取得することで、ステッピング性能を向上させました。
その後、すべてのデバッグ拡張機能がスタックをチャンクで返すように実装されているわけではなく、トップスタックフレームの重複が発生する可能性があることを学びました。
しかしながら、この問題を安定した方法で修正することはできませんでした。そのため、デバッグアダプタは、スタックフレームの遅延ロードを明示的にオプトインする必要があり、そのための新しい機能 supportsDelayedStackTraceLoading
がデバッグプロトコルに導入されました。したがって、スタックフレームの遅延読み込みがデバッグ拡張機能で正常に動作していて、デバッグアダプタが stackTrace
リクエストの startFrame
属性と levels
属性の両方をサポートしていることがわかっている場合、supportsDelayedStackTraceLoading
機能のために true
を返すべきです。これにより、6 月のリリースでは、さらに改良されたステッピング性能を提供できる予定です。
StackFrameFormat
のための新しいオプション属性 includeAll
この新しいオプションにより、StackTraceRequest
は、デバッグアダプタにより隠される可能性のあるスタックフレームを含めたすべてのスタックフレームを含めてパラメータ化することができます。
Engineering
エンジニアリング
Windows 64 bit Insiders
Windows の Visual Studio Code 64-bit Insiders build
Windows の Visual Studio Code 64-bit ビルドは、Insiders build にて利用可能になりました。通常のインストーラ 形式と ZIP アーカイブ 形式で提供されます。64-bit 版をインストールする前に、必ず 32-bit 版をアンインストールしてください。
来月には、安定版の 64-bit ビルドが提供される予定です。
Issue management automation
問題管理の自動化
issue 管理を支援するために導入した Probot は、機械学習アルゴリズムを使用して、新しく報告された issue と機能の関連性を推測します。アルゴリズムにより、関連付けが正確であるという十分に高い確率を推定する場合、bot は、エリアラベルを追加し(場合によっては) issue をチームの開発者に直接割り当てます。
bot は、新しいリリースから数日は、そのリリースのために報告された新しい issue に new release
ラベルを追加します。これにより、新しいリリースに紛れ込んでしまったバグなどをすばやく見つけることができます。そして、数日後にラベルを削除します:
今後もコミュニティからのフィードバックも楽しみにしながら、より多くの自動化を追加する予定です。
Monaco Editor
Monaco Editor の新しいバージョンを公開するとともに、VS Code を最新の状態にし数多くのアクセシビリティを向上させました。
Preview: Multi Root Workspaces
プレビュー: マルチルートワークスペース
VS Code の “Multi-Root Workspaces“ 実装で、このマイルストーンは忙しくなっています。(設計上の決定については、以前のリリースノートを参照してください)。この作業の結果は、複数のルートフォルダワークスペースでのテストを可能にするために、”最小実行可能製品 (Minimum Viable Product)” (MVP) と呼ばれています。下記の機能は、現時点で Insiders ビルドでのみ利用可能であり、安定した機能ではありません。すべてのユーザーがこの機能を使用できるようにするには、もっと多くの作業が必要です。それを試してみるには、インサイダービルドを https://code.visualstudio.com/insiders から入手してください。
File Explorer
ファイルエクスプローラー
ファイルエクスプローラでは、1 つのツリーに複数のルートフォルダを表示できるようになりました。File メニューまたはコンテキストメニューから簡単にルートフォルダを追加できます:
ルートフォルダーが追加されると、エクスプローラーは新しいフォルダーをルートとしてファイルツリーに表示します。いずれかのルートフォルダを右クリックすること表示されるメニューから、ルートフォルダを追加したり削除したりすることができます。
ファイルエクスプローラは以前と同じように動作し機能します。ルートフォルダ間でファイルを移動したり、コンテキストメニューとエクスプローラビューで提供されている一般的なファイル操作アクションも使用できます。files.exclude
のような設定は、ルートフォルダにも同じように適用され、グローバルユーザー設定として設定されている場合は、すべてのフォルダに適用されます。
Search
検索
フルテキスト検索と Quick Open ファイルピッカーは、追加のルートフォルダも対象として動作し、すべてのルートフォルダの結果が検索結果ビューに表示されます:
ルートフォルダ間で同じファイル名の結果を区別するために、結果リストで相対パスのプレフィックスとしてルートフォルダーの名前が使用されます。search.exclude
のような設定については、設定されている場合は各ルートフォルダに、グローバルユーザー設定として設定されている場合は、すべてのフォルダでサポートされます。
Settings
設定
1 つのワークスペースに複数のルートフォルダがある場合、各ルートフォルダに .vscode
フォルダを用意して、それぞれのフォルダに適用する設定を定義することができます。ワークスペースとフォルダのレベルでどの設定を適用できるかを判断するために、設定をワークスペースとフォルダスコープに分類しました。
このような環境では、フォルダレベルで次の設定がサポートされています:
editor.*
files.exclude
files.trimTrailingWhitespace
files.insertFinalNewLine
files.encoding
files.autoGuessEncoding
files.watcherExclude
search.exclude
現在、これ以外の設定は、フォルダ単位ではサポートされていません。将来、上記のリストに追加する予定です。
マルチルートワークスペースに設定が適用される手法の詳細については、issue を参照してください。
Proposed multi-root API
提案されたマルチルート API
複数のフォルダをエディタで開くために、より強力な API が必要になります。単一ルートのみをサポートする、rootPath
API は、互換性のために残します。開発段階において、新しい強力な API を実装しました。現在、提案段階 にある API を以下に示します。これにより、すべてのワークスペースフォルダを調査し、変更を検出した際にイベントを送信できます。また、新しい構成モデルにアクセスすることもできます。
|
注: API は提案段階であり、拡張機能毎に有効にする必要があります。作成している拡張機能の package.json
ファイルに、次の行を追加してください:
|
また、vscode.proposed.d.ts
ファイルをリポジトリからプロジェクトにコピーします。このファイルをプロジェクトに含めることで、型のチェックと IntelliSense が有効になります。
API は提案段階であり、まだ、洗練されていないため、大きな変更が入る可能性があります。そのため、提案された API を使用する拡張機能の Marketplace への公開は、サポートしていません。しかしながら、拡張 API を利用する拡張機能の作者自身が、最終的な API のデザインとサポートすべき点を定義するために協力してください。恥ずかしがらずにフィードバックをください!
Upcoming features
今後予定される新機能
マルチルートにおける様々なエクスペリエンスを優れたものにするためには、まだまだ多くの作業が必要です。
この機能は、次のマイルストーンで特に注目を集めると考えます:
- 複数のルートフォルダのソース管理 UI
- タスクとデバッグのサポート
- ルートフォルダ間での豊富な言語サポート
New Commands
新しいコマンド
キー | コマンド | コマンド id |
---|---|---|
⌘K U (Windows, Linux Ctrl+K U) | グループ内の未変更のエディターを閉じる | workbench.action.closeUnmodifiedEditors |
ウィンドウをすぐに切り替える… (instances) | workbench.action.quickSwitchWindow | |
最近使用したものを開く… | workbench.action.quickOpenRecent | |
⌘F (Windows, Linux Ctrl+F) | 検索ウィジェットにフォーカスする | workbench.action.terminal.focusFindWidget |
⌘A (Windows, Linux ) | すべて選択 | workbench.action.terminal.selectAll |
名前変更 | workbench.action.terminal.rename | |
F7 | 次の差分に移動 | editor.action.diffReview.next |
⇧F7 (Windows, Linux Shift+F7) | 前の差分に移動 | editor.action.diffReview.prev |
Notable Changes
注目すべき変更
transform:translate3d(...)
の代わりにwill-change:transform
を使って、エディタのブラウザレイヤを示唆します。”隠された” エディタオプションであったeditor.disableTranslate3d
はeditor.disableLayerHinting
に置き換えられます。詳細は、monaco-editor#426 を参照してください- ループ内の
Array.splice
の悪い使い方を置き換えることにより、大規模なペーストを大幅に高速化させます。詳細は、monaco-editor#351 を参照してください - スクロールバーのスライダジオメトリ計算を再実装し、より早い段階での人為的なスライダサイズの膨張を考慮する実装にしました。その結果、大きなファイルで正しいマウス制御が行われます。詳細は、6710 を参照してください
- 同様の考え方でミニマップのスライダージオメトリを再実装しました: 21346, 29326, 28944.
- CSS の画面ピクセル比率が整数でない場合に、細い線をレンダリングするための回避策を見つけて実装しました。(@fj128 の助けを借りて)
クローズされたバグ一覧と、1.14 アップデートにてクローズされた機能のリクエスト一覧です。
Contributions to Extensions
拡張機能への貢献
PHP language server: Tolerant PHP Parser を採用するための pull requestを完了しました。PHP IntelliSense 拡張機能で試してください。
GitHub Issues and PRs: ユーザーとマイルストーンに割り当てられた issue と PR を表示するための拡張機能を公開しました。
Git Lens: Git Lens に stash explorer (Pull requests: #94, #102)を追加しました。これにより VS Code Diff Editor にてローカル・スタッシュの内容の変化を見ることが可能になります
VSTS Build Status: 複数のビルド定義を 1 つのビルドステータスバーインジケータにグループ化する機能を追加しました(pull request #12)
Thank You
最後になりましたが、VS Code をより良いものにするために協力してくれた次の方々に多大なる感謝を込めて:
vscode
への貢献:
- Brandon Ruggles (@brandonrninefive): QuickOpen looks misaligned in monokai theme. PR #29860
- Bugra Cuhadaroglu (@BugraC)
- @campersau: cleanup duplicate semicolons in minimapCharRenderer PR #28106
- Ernest Wong (@chewong): Added setting to enable/disable clickable URL PR #28160
- Christopher Leidigh (@cleidigh)
- @cristianhosu: #22622 PR #23211
- traBpUkciP (@Duroktar): Open old version of file in Git side bar. PR #26629
- Dustin Campbell (@DustinCampbell): Update C# grammar with fixes from csharp-tmLanguage PR #28120
- Dmitry Zabello (@foreverest): Multi root folders name not updated on removing … PR #29596
- Georgios Andreadis (@gandreadis): Improve grammar of config setting description PR #28957
- Rokas (@gecharo): Ability to merge local git branches PR #25731
- Hasan Ali (@hasali19): Add options to theme notification buttons and badges PR #28471
- Anton Vildyaev (@hun1ahpu)
- Ishan Arora (@ishanarora): fixes #22593 PR #28816
- Jammerware (@jammerware): Implement terminal rename action PR #28464
- Jens Hausdorf (@jens1o)
- Jeremy Loy (@JeremyLoy): Added darwinHelpBook, darwinHelpName to macOS build PR #28654
- Kate Miháliková (@katemihalikova): Handle diff3-style merge correctly PR #27405
- Keegan Carruthers-Smith (@keegancsmith): Filter settings from no search results link PR #29261
- Krzysztof Cieślak (@Krzysztof-Cieslak)
- Matthew Shirley (@matthewshirley): Add “pullFrom” git command PR #26981
- @mbeatrizmagalhaes: Correct misspelled occurrences and occurred PR #28569
- Sam El-Husseini (@microsoftsam): Turn autocomplete off on Mobile device keyboards PR #27778
- Yu Zhang (@neilsustc)
- Nick Snyder (@nicksnyder)
- @PeteX: Don’t split words at U+2019, the right single quotation mark. PR #28903
- Rohith Reddy Kumbharkar (@RohithKumbharkar): Fixes issue with tooltips in Activity Bar PR #28783
- Soney Mathew (@soneymathew): Provide a command to close all unchanged files PR #25692
- Tomáš Hübelbauer (@TomasHubelbauer): Add spaces and fix switch to actual MarkDown PR #28696
- @WaiSiuKei: Add entry file of oniguruma when packing PR #27123
vscode-node-debug2
への貢献:
vscode-languageserver-node
への貢献:
- Sven Efftinge (@svenefftinge): Only convert
undefined
argument to null PR #216 - Remy Suen (@rcjsuen): Fix typo in README.md PR #219
vscode-recipes
への貢献:
- Tony Sneed (@tonysneed): Add recipe for Chrome Debugging with Angular CLI PR #2
vscode-extension-vscode
への貢献:
- Brian Vandre (@bvandre): Honor npm config proxy settings PR #67
- Nick Chen (@vazexqi): Add CODE_EXTENSIONS_PATH env var PR #71
localization
への貢献:
Transifex でコミュニティローカリゼーションを開始してから3ヶ月目です。 Transifex VS Code project チームには 270 人以上のメンバーとなりました。新しい翻訳の提供、翻訳への投票、プロセスの改善提案などの貢献に感謝します。
このリリースにおいて活躍いただいたコントリビュータのリストです。コントリビュータのリストを含むプロジェクトの詳細については、プロジェクトサイト (https://aka.ms/vscodeloc. を訪れてください。
- French: Antoine Griffard, Julien Brochet, JP Gouigoux.
- Italian: Aldo Donetti, Steve Roger.
- German: Jonas Thelemann, Levin Rickert, Christian Gräfe.
- Spanish: Raúl Rama, Alberto Poblacion, José M. Aguilar, Andy Gonzalez.
- Russian: sberbanker, Nikita Gryzlov, Friedrich von Never.
- Japanese: Yuichi Nukiyama, EbXpJ6bp, Yosuke Sano, Yuki Ueda, tempura.sukiyaki.
- Korean: Ian Y. Choi.
- Chinese (Simplified): Joel Yang, 陈嘉恺, 王韦煊, Zijian Zhou, lychichem, YF.
- Chinese (Traditional): Duran Hsieh, jasperjn, Alan Liu, balduran, Wei-Ting(DM), Will 保哥, Alan Tsai, Terry Sheng.
先月のリリースでは、ブラジルポルトガル語の翻訳が成功しましたが、今月は、ハンガリー語とトルコ語の翻訳が開始されました。ハンガリー語、トルコ語、ブラジルポルトガル語コミュニティのローカリゼーションチームと、3500 文字列におよぶ大部分をローカライズした TarDániel と AdemCoşkuner に感謝します。コミュニティメンバーの努力により、Transifex でローカリゼーションが完了し、翻訳は Insiders ビルドに統合されテストされました。検証の進捗状況に応じて、すぐに翻訳を安定したビルドに統合したいと考えています。
- Portuguese (Brazil): Bruno Sonnino, Roberto Fonseca, Douglas Eccker, Miguel de Mousa, Fabio Oliveira.
- Hungarian: Tar Dániel, Milán Boleradszki, Béla Kovács.
- Turkish: Adem Coşkuner, Ata Binen, Meriç Bağlayan, Mehmet Kut, Sertac Ozercan, Serkan Inci, Ramis Eren.