Visual Studio Code の バージョン 1.20 がリリースされたので、リリースノートを眺めてみてどんな機能が追加されたのか見てみる。(過去分はこちら。1.19 / 1.18 / 1.17 / 1.16 / 1.15)
(自分的に良いと思った新機能)
- エクスプローラでの複数選択
- エクスプローラでのエラー視覚化
- 設定画面での賢い検索
- 管理者権限ファイルの保存
- グローバルスニペット
- スニペット変数の追加
- ターミナル選択テキストの自動コピー
あと、注目すべき変更点の中で出てきた「Quick Open ビュー」はこれ自体は既存の機能だが知らなかった(か忘れていた)。
ワークベンチ関連
エクスプローラでの複数選択
- ファイルエクスプローラで、ファイルを複数選択しての操作ができるようになった。
- Ctrl+クリックで追加選択、Shift+クリックで範囲選択というおなじみの操作で複数ファイルを選択する。マウスをドラッグして範囲選択することによる複数選択はできない。
- この機能により、今まではCtrl+クリックはエディタを横に並べて表示する操作だったが、複数選択の操作に変更された。以前の操作に戻したい場合は設定
workbench.list.multiSelectModifier
をAlt
に変更すると、複数選択操作はAlt
キーに変更される。
以前、複数ファイルを削除したいときに1個1個しか削除できず面倒だった記憶がある。一見地味だけとこういう機能追加は重要!
エクスプローラでのエラー視覚化
- エラーや警告のあるファイルについてエクスプローラで視覚化されるようになった。エラーの個数も表示される。
- この機能は、設定
problems.decorations.enabled
によって有効/無効を切り替えられる(デフォルトはtrue
)。
設定画面での検索
- 設定画面ではキーワードを入力して項目の絞り込みが行えるが、今回から単純なキーワード一致だけではなく、代替文言、タイポ、活用形なども考慮されたより自然な言語検索を行えるようになった。
- 以前の検索に戻すには、設定
workbench.settings.enableNaturalLanguageSearch
をfalse
にする。
実際に試してみるとタイポとか結構よさげに忖度してくれる。
検索処理は2段階で行われているらしく、最初キーワード一致で検索しに行って一瞬「設定が見つかりません」と表示されたあと、上記の忖度検索が行われるっぽい。さすがに忖度検索のほうは若干時間がかかるが、それでも自分のようなtypoerにとってはありがたい。
管理者権限が必要なファイル保存が可能に
-
hosts
ファイルなどの、保存に管理者権限が必要なファイルの保存ができるようになり、これらのファイルの保存時に「管理者権限で再試行」という選択肢が選べるようになった。 - なお、当然だが権限自体は必要。
うん、これは便利!
256MB以上のラージファイルの保存
- ファイルサイズが256MB以上のファイルを保存できるようになった。
- これはディスクへの保存方法の実装の変更により実現できたもので、コンテンツのスナップショットを活用して64KBのチャンクでファイルをストリーミングしている。
スマートケース検索
- 設定
search.smartCase
にtrue
を設定するとグローバル検索のスマートケースモードが有効になり、大文字を含むキーワードを指定すると自動的に大文字・小文字が区別され、すべて小文字のキーワードを指定すると大文字・小文字が区別されない検索になる。
設定:false | 設定:true |
---|---|
リストやツリーでのダブルクリックによるオープン
- 新しい設定
workbench.list.openMode
をdoubleClick
に変更すると、ツリーやリスト内のアイテム選択やツリー展開がダブルクリックになる。
イメージプレビューのズーム機能
- イメージのプレビューでズーム機能が付いた。
- Ctrl(Windows)やAlt(Linux/mac)を押しながらのホイール操作でズームイン/アウトが行える。
- トラックパッドのピンチ操作にも対応。
- クリックでズームイン、Ctrl+クリックでズームアウトも可。
- ステータスバーに現在の倍率が表示され、クリックすると指定された倍率に変更することができる。
- これに伴い、イメージの表示位置が左上から中央になった。
テーマ固有の色のカスタマイズ
- ユーザー設定で特定のカラーテーマを微調整できるようになった。
エディタタブ用のテーマカラー追加
- エディタタブ用の新しいテーマカラーが追加された。
- tab.hoverBackground
- tab.unfocusedHoverBackground
- tab.hoverBorder
- tab.unfocusedHoverBorder
- これらの設定は
workbench.colorCustomizations
を使用する。
ドロップダウンのUI変更(Windows, Linux)
- WindowsおよびLinuxのドロップダウンでHTMLコントロールの代わりにカスタムウィジェットが使用されるようになり、他のツリーやリストのウィジェットと同じUIになった。
v1.19 | v1.20 |
---|---|
開いてるエディターの変更
- 設定
explorer.openEditors.visible
で指定された最大サイズに達すると、開いているエディタービューのサイズを変更できるようになった(スクロールすれば表示される)。デフォルト値は9
。この変更により、explorer.openEditors.dynamicHeight
の設定はサポートされなくなった。 - 開いてるエディタービューを非表示にするために
explorer.openEditors.visible
を0
に設定する機能は今回のリリースで非推奨になっており、次回で削除する予定。開いてるエディタービューを非表示にするには、エクスプローラのタイトル領域にあるコンテキストメニューを使用する。
macOSタッチバーエントリの使用不可設定
- 新しい設定
keyboard.touchbar.enabled
により、macOSタッチバーのエントリを無効にすることができる。
フォントエイリアシング設定(macOS)
- macOSで
workbench.fontAliasing
設定をauto
に変更すると、モニタのDPIに応じてフォントエイリアシングを制御できる。
出力パネル
- VS Codeのログ出力は、前回のリリースではコマンドによってログファイルを表示する形式だったが、今回晴れて出力パネルから表示できるようになり、さらにシンタックスハイライトもされるようなった。
- また、新しい実装ではメモリリソースの消費量がより少なくなり、表示されていない時はメモリリソースが解放される。
エディタ関連
グローバルスニペットのサポート
- 今までのスニペット機能は言語ごとの設定になっていたが、今回から言語を横断したグローバルなスニペットもサポートされるようになった。
- コマンド「基本設定: ユーザスニペットの構成」を選ぶと、言語の選択肢の他に「新しいグローバルスニペットファイル」が選べるので、新規スニペットファイルを作成する。
-
scope
属性に複数の言語を列挙すると、それらの言語の共通のスニペット定義になる。空文字を設定すればすべての言語共通のスニペットになる。 - 拡張機能開発者はグローバルスニペットを投稿することができる。拡張機能に
code-snippets
ファイルを含め、package.json
のcontributes.snippets
セクションの言語プロパティを省略する。
これも良い改善!より柔軟なスニペットが定義できるようにった!
スニペット変数の追加
- スニペット定義の中で使える変数として新たに、クリップボードの値の読む
CLIPBOARD
や、現在日時を挿入する以下の変数が追加された。- CURRENT_YEAR
- CURRENT_YEAR_SHORT
- CURRENT_MONTH
- CURRENT_DATE
- CURRENT_HOUR
- CURRENT_MINUTE
- CURRENT_SECOND
これも良い!!現在日付とか欲しかった!クリップボードも使いでがありそう。
クイックフィックスやコードアクションのキーバインド
- 新しいコマンド
editor.action.codeAction
を使用すると、特定のコードアクションのキーバインドを設定できるようになった。 - 例えば、関数を抽出するリファクタリングのコードアクションのキーバインド定義は以下のようになる。
{
"key": "ctrl+shift+r ctrl+e",
"command": "editor.action.codeAction",
"args": {
"kind": "refactor.extract.function"
}
}
- コードアクションの種類は、拡張された
CodeActionProvided
APIを使用して拡張機能によって指定される。種類は階層的なので、"kind":"refactor"
はすべてのリファクタリングコードアクションを表示し、"kind":"refactor.extract.function"
はExtract関数リファクタリングのみを表示する。 - 定義されたキーが押された時、単一の
"refactor.extract.function"
コードアクションのみが使用可能な場合は自動的に適用され、複数の抽出機能コードアクションが利用可能な場合はそれらを選択するコンテキストメニューを表示する。この判断は"args:"
の下で定義する"apply:"
の値によって指定できる。-
"first"
可能なコードアクションの1つ目を自動的に適用する -
"ifSingle"
デフォルト値。可能なコードアクションが1つの時のみ自動的に適用する -
"never"
可能なコードアクションが1つの時であっても必ずコンテキストメニューを表示する
-
ちょっと設定が大変だけど、ショートカットキーメインで操作したいと思っている人にとってはよさげな機能。
サジェストの改善
- 新しい設定
editor.suggestSelection
を追加して、サジェストの一覧の中のどの選択肢をあらかじめ選択させておくかを制御できるようにした。-
first
一番上の項目が常に選択されている -
recentlyUsed
以前に使用された項目が選択されている(デフォルト) -
recentlyUsedByPrefix
以前に選択した時のプレフィクスに基づいて使用された項目が選択されている
-
一番最後の設定値のルールがわかりづらいが、例えば過去にco
と打ってconsole
を選択し、con
と打ってconst
を選択したことがある場合、co
まで打つとconsole
がデフォルト選択され、さらにn
を打つとconst
がデフォルト選択される。複雑そうだが慣れれば器用に入力し分けられそう。
Emmetの改善
- CSSの略語の前に
-
を付けると、展開された略語に含まれるすべての適用可能なベンダープレフィクスを取得できる。
カーソル幅の変更
- 新しい設定
editor.cursorWidth
により、カーソル幅をピクセル単位で変更できるようになった(設定editor.cursorStyle
がline
の場合のみ有効)。なお、文字の幅以上に広くすることはできない。
グローバルmacOS検索クリップボード
- 前回のリリースでmacOSグローバル検索クリップボードと統合され、アプリケーション間で検索テキストを簡単に共有できるようになった。この設定はデフォルトで無効になっているが、設定
"editor.find.globalFindClipboard"
で有効にすることができる。 - また、検索ビューでもサポートされるようになり、これは設定
"search.globalFindClipboard"
で有効にすることができる。
カッコ間のテキスト選択
- 新しいコマンド
Select to Bracket
(対応日本語なし)により、対になっている括弧の間にあるテキストを選択することができるようになった。 - なお、既存のコマンドである「ブラケットへ移動」は、対応する括弧にカーソルを移動するだけである。
おいっ!既存のコマンドのほうを知らなかったぞ!ってかこっちのほうが重要!
ミニマップの左側表示サポート
- 新しい設定
editor.minimap.side
により、ミニマップを左側にも表示できるようなった。
そういえばミニマップ、使ってないなぁ。
差分エディタでのホワイトスペースのトリミングを無視する/しない切り替え
- 差分エディタのタイトルエリアに新しいアクションが追加され(「=」のアイコン)、これにより、ホワイトスペースのトリミングを無視する/しない設定をすばやく切り替えることができるようになった。
用途は、変更内容を確認したい時にインデントの修正とかは無視したい時用とか?
ソース管理関連
Gitサブモジュールのサポート
- 今回のリリースでGitのサブモジュールをサポートするようになった。
- サブモジュールはGitリポジトリそのものなのでリポジトリリストに表示される。
- 外部リポジトリのサブモジュールの変更をステージ、ステージ解除、破棄するための基本的なサポートが用意されている。
- サブモジュールを自動的に検出する設定の無効化は、設定
git.detectSubmodules
を使用する。
Gitにサブモジュール機能というのがあるのを今回初めて知った!
Git: コミット前の未保存ファイル確認
- コミット時に未保存状態のファイルが存在した場合に、それを保存してコミットするかどうかを確認するプロンプトが出せるようになった。
- 設定
git.promptToSaveFilesBeforeCommit
をtrue
にするとチェックが行われるようになる(デフォルトはfalse
)。
「とにかくコミット」って・・・
Git: コミットコメント入力文字数のチェック
- コミットコメント入力時に、一行の推奨文字数である72文字のチェックを行う機能が追加された。設定
git.inputValidation
の値によってチェックタイミングを変更できる。-
always
文字数をオーバーしていない状態でも文字数チェックが表示される -
warn
文字数をオーバーした場合だけ文字数チェックが表示される(デフォルト) -
off
文字数チェックを行わない
-
under(always ) |
over(warn &always ) |
---|---|
コミットコメントに推奨文字数とかあったんだ・・・
エディタの差分デコレータの表示設定
- 変更された行を表すインライン差分デコレーションの表示設定を設定
scm.diffDecorations
で行えるようになった。-
gutter
左側の行番号横の表示のみ -
overview
右側のオーバービューでの表示のみ -
all
どちらも表示(デフォルト) -
none
どちらも非表示
-
gutter |
overview |
all |
---|---|---|
統合ターミナル関連
スクリーンリーダーのサポート
- ターミナルでスクリーンリーダーのサポートが追加された。
- この機能を有効にするには、VS Codeを「スクリーンリーダー最適化」モードにする必要がある。このモードは通常自動的に検出されるが、
Alt
+F1
(アクセシビリティのヘルプを表示)を開いて手動で切り替えることもできる。 - これを第一歩として、視覚障害のある方に端末を使いやすくする方法を積極的に検討している。
ターミナルアプリケーションでのマウスホイール動作
-
vim
やtmux
などのアプリケーションにおいて、マウスホイールイベントが矢印イベントに変換され、スクロールが可能になった。
macOS上のoptionキーのメタキー対応
- optionキーをターミナルのメタキーとして使用できるようになり、
option
+B
のような典型的なシェルショートカットを使用して単語を飛ばしたり、option
+F
を使用して単語を飛ばしたりすることができるようになった。 - この設定を有効にするには、設定
terminal.integrated.macOptionIsMeta
にtrue
をセットする(デフォルトはfalse
)。
選択テキストの自動コピー
- ターミナルでテキストを選択すると自動的にクリップボードにコピーできるようになった。
- この設定を有効にするには、設定
terminal.integrated.copyOnSelection
にtrue
をセットする(デフォルトはfalse
)。
これは地味に便利。
環境変数設定でのVS Code変数サポート
- ターミナルで使用できる追加の環境変数の設定
terminal.integrated.env.*
において、VS Codeの変数が使用できるようになった。 - 他の設定でも使われている標準の変数形式を使用する。
"terminal.integrated.env.windows": {
"FOO": "${workspaceRoot}",
"BAR": "${env:PATH}"
}
デバッグ関連
マルチルートワークスペースのデバッグサポートの改善
- マルチルートワークスペース機能を使用して、単一のワークスペースの関連プロジェクト(例えば"Server"と"Client"など)を操作することができ、これらのフォルダにはそれぞれの起動設定(例えば"Launch Server"と"Launch Client"など)が存在するが、これまでは異なるフォルダの起動設定を1つの複合的な起動設定として定義することはできなかった(フォルダを横断しての起動設定を参照する仕組みが存在しなかった)。
- 今回のリリースではまず、ワークスペーススコープの起動構成をサポートするようにし、次に、フォルダー間で起動構成を参照する仕組みを導入した。この「複合」起動構成を使用すると、異なるフォルダの起動構成をワークスペースレベルで保持することができる。
- ワークスペーススコープの起動構成は、ワークスペース構成ファイルの
"launch"
セクションに定義する。このセクションはコマンドパレットの「ワークスペース構成ファイルを開く」で編集できる。
- あるいは、デバッグビューにあるドロップダウンメニューの「設定(ワークスペース)の追加」を使用して新しい起動設定を追加することもできる。
- 複合起動構成では、名前がワークスペース内で一意である限り、個々の起動構成を名前で参照できる。
- 個々の起動構成名が一意でない場合、"folder"構文を使用することにより一意に定義することができる。
- ワークスペース構成ファイルの
launch
セクションには、conpounds
に加えて、通常の起動構成も含まれるので、設定で使用されているすべての変数が明示的に正しいフォルダにスコープされていることを確認する必要がある。明示的にスコープされた変数の詳細については次の項目を参照。
スコープ設定変数
-
launch.json
とtasks.json
ファイルのスコープ設定変数に、ワークスペースフォルダを特定するための新しい変数構文が導入された。「ルートフォルダ名:変数」と表記することで、ワークスペース内の該当ルートフォルダを指し示すことができる。ルートフォルダ名がないと、変数は使用されているのと同じフォルダーにスコープされる。 - 例えば、フォルダ
Server
とClient
を持つマルチルートワークスペースの場合、${workspaceFolder:Client}
はClient
のルートパスの参照になる。
Nodeデバッグ
Node.jsサブプロセスにデバッガを自動的にアタッチする
- Nodeデバッグでは、デバッグ対象のすべてのサブプロセスを追跡し、デバッグモードで起動されるプロセスに自動的にアタッチするメカニズムを追加した。この機能は、"cluster"ノードモジュールに基づくプログラムのように、Node.jsプロセスをforkまたはspawnするプログラムのデバッグを簡略化する。
- この機能は、起動設定属性
autoAttachChildProcesses
をtrue
に設定すると有効になる。 - 注:サブプロセスを追跡できるようにするには、親のプロセスIDが必要。このためには、起動設定から起動される主なデバッグ対象がNode.jsプロセスであり、プロセスIDを見つけるために "evaluate"を使用する必要がある。
- プロセスがデバッグモードにあるかどうかは、プログラムの引数によって判定される。現在、
--inspect
、--inspect-brk
、--inspect-port
、--debug
、--debug-brk
、--debug-port
のパターンを検出している(すべてオプションで「=ポート番号」が続く)。
"nvm”のサポート
- "nvm"(あるいは"nvm-windows")をNode.jsのバージョン管理のために使用している場合、特定のバージョンのNode.jsを使用するために、起動設定の
runtimeVersion
属性を指定できるようになった。 - 注意:この機能は、該当バージョンのNode.jsのダウンロード・インストールは行わないため、
runtimeVersion
属性で指定したバージョンのNode.jsがインストールされているか確認する必要がある。したがって、起動設定に"runtimeVersion": "7.10.1"
を追加する予定の場合は、統合ターミナルなどからnvm install 7.10.1
のようなインストールコマンドを実行する必要がある。
拡張機能関連
推奨拡張機能の通知
- VS Code標準またはインストール済みの拡張機能でサポートされていないファイルタイプで作業している場合は、構文ハイライトが表示されないことがある。このようなファイルをサポートできる拡張機能がマーケットプレイスにある場合、通知が表示されるようになった。
- 拡張機能の推奨リストに、同じリポジトリで作業している他のユーザーの間で人気のある拡張機能が追加されるようになった。
この、2つめのやつ、すごいね。
言語関連
TypeScript 2.7.1
- VS CodeにはTypeScript 2.7.1が付属している。今回のリリースではいくつかの新機能とバグ修正が行われている。
JavaScriptとTypeScriptのクイックフィックス
- JavaScriptとTypeScript用の新しいクイックフィックスによりエラーをすばやく修正できるようになった。
- 未使用の変数などの修正可能なエラー箇所にカーソルを移動し、電球アイコンまたは
Ctrl+.
を押してクイックフィックスを起動する。 - 使用可能なクイックフィックスの1つが現在のファイル内の複数のエラーに適用できる場合は、 ファイル内のすべてのコードを修正する。
ブラケット表記プロパティのサジェスト
- JavaScriptとTypeScriptで
.
を入力してコード補完を行った際、プロパティ名に空白やその他の非識別子文字が含まれていても、プロパティがすべて表示されるようになった。
- これらのプロパティを選択すると、自動的にブラケット表記に変換される。
メンバプロパティの自動サジェスト
- JavaScriptやTypeScriptのクラスプロパティにアクセスするためには
this.
とタイプする必要があったが、this.
を入力せずに利用可能なメンバーがサジェストされるようになった。
- サジェストからクラスプロパティ選択すると自動的に
this.
を補完してくれる。
オプションプロパティのサジェスト
- TypeScriptのオプションプロパティのサジェストが、ちゃんと末尾に
?
が付く形で表示されるようになった。
ファイル名に基づく自動インポート
- JavaScriptおよびTypeScriptの自動インポートで、ファイル名に基づいてデフォルトでエクスポートされたオブジェクトをインポートできるようになった。
拡張機能が提供するTypeScriptプラグイン
- TypeScriptプラグインを使用すると、開発者はVS CodeのJavaScriptおよびTypeScript言語サポートを拡張できる。 例えば、JavaScriptテンプレート文字列内で作業するときに、ファイルに追加のlintを追加したり、インテリセンスを追加することができる。
- TypeScriptプラグインはTypeScript 2.3で初めて導入されたが、以前は
npm
で作業領域にプラグインをインストールしてから、jsconfig.json
またはtsconfig.json
ファイルをロードしてロードする必要があった。今回のリリースで、拡張機能が設定なしで自動的にアクティブになるグローバルTypeScriptプラグインのセットを提供できるようにすることで作業が単純化され、拡張機能をインストールするだけで済むようになった。 - いくつかの拡張機能がすでにこれを利用している。
- vscode-styled-components - styled-components CSS文字列用のシンタックスハイライト、インテリセンス、エラーリポート機能
- lit-html - lit-html テンプレート文字列用のシンタックスハイライト、インテリセンス、フォーマット機能
- 拡張機能が提供しているプラグインは、VS CodeのバージョンのTypeScript用に自動的に有効化される。ワークスペースのバージョンのTypeScriptを使用している場合は、引き続きTypeScriptプラグインをワークスペースにインストールする必要がある。
- 拡張機能開発者向けドキュメントには、TypeScriptプラグインの提供ポイントについての情報が記載されている。
サービスアビリティ関連
- コマンド「ヘルプ:問題の報告」「ヘルプ:パフォーマンスの問題をレポート」によって独立したウィンドウが開き、問題の報告を行うことができるようになった(以前は直接GitHubのIssue画面が開くようになっていた)。
- このウィンドウでは、報告したい問題の種類に基づいて情報を収集することができる。これにはシステムの基本情報、アクティブな拡張機能、実行中のVS Codeプロセス、ワークスペースのファイルタイプが含まれる。送信する情報を選択するとブラウザウィンドウが開かれ、GitHub上で問題をプレビューできる。
「英語で記入して下さい」と書かれていても、ウィンドウが日本語表示だと、つい日本語で記入したくなってしまいそう・・。
拡張機能開発関連
カスタムビューの改善
カスタムビューは以下の追加APIによって改善された。
- インラインアクション
-
view/item/context
メニューの設定にinline
グループを登録することでツリーアイテムにインラインアクションを登録できるようになった。
-
- リソースURI
- カスタムツリービューがファイルリソースに基づいている場合、リソースURIを表す
TreeItem
にリソースURIを登録できるようになった。これにより、ビューをユーザが設定したファイルアイコンテーマに取り入れて、エクスプローラのファイルエクスプローラビューと同様の外観となる。
- カスタムツリービューがファイルリソースに基づいている場合、リソースURIを表す
- idプロパティ
-
TreeItem
にid
を渡すことができるようになり、これによりツリーの選択や展開の状態が変更されたときに確実に保持されるようになる。
-
エクスプローラコマンドの複数選択コンテキスト
- 今回のリリースで、エクスプローラでの複数選択機能が導入された。エクスプローラにコマンドを登録する拡張機能は、コマンドに渡される新しい引数を使用することで、エクスプローラでの複数選択に対応できる。
- 前述のように、VS Codeはエクスプローラで現在選択されているリソースを推測しようとし、コマンドを呼び出すときにこれをパラメータとして渡す。しかし、複数選択が有効な場合、VS Codeはコマンドに追加の第2引数、つまり選択されたリソースの配列を渡す。この配列には常に最初のリソース引数が含まれる。
新しいメニューグループ識別子
- いくつかのメニューには、コマンドの配置をより細かく制御するための新しいグループ識別子が追加された。
- エクスプローラコンテキストメニュー
-
navigation
: VS Code間のナビゲーションに関連するコマンド。以前と同じようにエクスプローラのコンテキストメニューの主要なグループ。 -
2_workspace
: ワークスペース操作に関連するコマンド -
3_compare
: 差分エディタでのファイル比較に関連するコマンド -
4_search
: 検索ビューでの検索に関連するコマンド -
5_cutcopypaste
: ファイルのカット、コピー、ペーストに関するコマンド -
7_modification
: ファイルの変更に関するコマンド
-
- エディタタブコンテキストメニュー
-
1_close
: エディタを閉じる処理に関連するコマンド -
3_preview
: エディタの固定に関連するコマンド
-
- エディタタイトルメニュー
-
1_diff
: 差分エディタの動作に関連するコマンド -
3_open
: エディタを開く処理に関連するコマンド -
5_close
: エディタを閉じる処理に関連するコマンド
-
新しいキーボードショートカットコンテキスト演算子
- キーボードショートカットコンテキストを使用すると、キーバインディングがいつ有効になるかを制御できる。これらはキーバインディングが有効であるか使用可能になっているかを定義するため、
when
節とも呼ばれる。今回のリリースでは、when
句の新しいキーと値のペア演算子がある。 式key =~ value
は、右辺を正規表現として扱い、左辺とマッチングさせる。
CodeActionProviderの改善
-
CodeActionProvider
は新しいCodeAction
クラスのオブジェクトを返すようになった。CodeAction
はCommand
よりも多くのメタデータと機能を追加し、コードアクションがどのようなもので、どのようにVS CodeのUIで使用されるのかをよく把握している。 -
CodeAction
は、主にタイトル、種類、少なくとも1つのCommand
またはWorkspaceEdit
(今回の新機能)で構成されている。 -
CodeAction
はコードアクションの種類とコードアクションが扱う診断セットを含むコードアクションに関するメタデータも追加される。このメタデータを使用して、Refactor
コマンドやvscode.action.codeAction
キーバインディングなどの機能を実装し、将来使用するために追加機能を構築する予定。
最近使用した項目を開くのリストからのファイル削除
- 新しいコマンド
vscode.removeFromRecentlyOpened
によって、ファイルメニューの「最近使用した項目を開く」のリストから項目を削除できるようになった。
ターミナルを生成したときにカレントディレクトリを設定
- 新しいプロパティ
cwd
によって、createTermial
を呼び出したときにカレント作業ディレクトリをセットできるようになった。
デバッグAPI
ブレークポイントの追加/削除
- ブレークポイントデバッグAPIの改善は引き続き行われ、今回のリリースでは
SourceBreakpoints
とFunctionBreakpoints
の追加と削除が行えるようになった。 - 注:ブレークポイントAPIはまだ提案の段階なので、使用するには
package.json
に"enableProposedApi": true
を追加し、vscode.proposed.d.ts
を拡張機能プロジェクトの中にコピーする必要がある。 また、enableProposedApi
属性を使用する拡張機能をマーケットプレイス公開することはできない。
adapterExecutableCommand
コマンドに代わる新しいDebugConfigurationProvider.debugAdapterExecutable
- 現在、デバッガ拡張機能は、「フック」のようなコマンド
adapterExecutableCommand
を提供して、VS Codeによって起動される予定のデバッグアダプタの動的に計算されたパス(および対応するプログラム引数)を返すことができる。今回のリリースでは、型指定されていないコマンドベースのメカニズムを型付きのソリューションに置き換える「本当の」APIを提案している。同時にadapterExecutableCommand
コマンドは非推奨になった(使用されなくなった時点でサポートが削除される)。 - 新しいAPIは、
DebugAdapterExecutable
オブジェクトとしてラップされたパスと引数を返すDebugConfigurationProvider
のオプションのメソッドdebugAdapterExecutable
。
コマンドvscode.logToDebugConsole
の削除予定
-
以前のリリースで発表されているように、本物のデバッグAPIのために
vscode.logToDebugConsole
コマンドを非推奨にした。次回のリリースでvscode.logToDebugConsole
コマンドのサポートを削除する予定。
デバッグ拡張機能の内部でのデバッグアダプタの実行
- デバッガ拡張機能を開発するには、通常、拡張機能とデバッグアダプタの両方を2つの並列セッションでデバッグする必要がある。VS Codeはこれをうまくサポートするが、拡張機能とデバッグアダプタの両方が1つのセッションでデバッグできる1つのプログラムであれば、開発が容易になる。
- 今回のリリースでは、拡張機能モジュール内でデバッグアダプタを実行する方法を検討した。基本的な考え方は、
DebugConfigurationProvider
のresolveDebugConfiguration
メソッドでデバッグセッションの開始をインターセプトし、接続要求をリッスンし始め、すべての要求に対して新しいデバッグアダプタセッションを作成する。VS Codeで(常に新しいデバッグアダプタを起動するのではなく)接続要求を使用するには、debugServer
属性を追加して起動設定を変更する。 -
これらのコードは、「モックデバッグ」拡張拡張のためのこのアプローチを実装している(この機能を有効にするには、コンパイル時フラグ
EMBED_DEBUG_ADAPTER
をtrueに設定する)。
提案された拡張機能API
今回のリリースでは2つの分野で、新たに提案された拡張APIが追加された。これらのAPIは今後のリリースで安定版に追加される予定。
注:これらのAPIはまだ提案状態なので、使用するにはpackage.json
に"enableProposedApi": true
を追加する必要があり、vscode.proposed.d.ts
を拡張機能プロジェクトにコピーする必要がある。また、enableProposedApi
属性を使用する拡張機能をマーケットプレイスに公開することはできない。
拡張機能のロギング
- 拡張機能で、VS Codeのログフォルダ内の自フォルダにログを出力することが可能になった。
- 拡張機能は
Logger
のメソッドを使用して何らかのログレベルでログメッセージの出力をすることができ、利用者は「開発者: ログレベルの設定」コマンドを使用して、ログメッセージを記録したい最小のログレベルを指定することができる。 - 「開発者: ログフォルダーを開く」コマンドを実行することによって、ログファイルを見つけることができる。このフォルダは、ログを書き込んだ拡張機能の実行中のインスタンスごとのフォルダが含まれている。
ワークスペースフォルダの追加、削除、変更
- 現在開いているワークスペースのワークスペースフォルダを変更するために、新しく提案されたAPIが追加された。このAPIは以下のことが行える。
- 既存のワークスペースフォルダの削除(削除するフォルダの場所を
start
で指定し、削除するフォルダの数をdeleteCount
で指定する)。 - 新しいワークスペースフォルダの特定の場所への追加(追加する場所を
start
で指定し、deleteCount
を0
にして、ワークスペースフォルダを引数として追加する)。 - 移動や名前変更など、既存フォルダの変更(最初に存在するフォルダを削除してから、再度フォルダを追加する)。
- 既存のワークスペースフォルダの削除(削除するフォルダの場所を
RenameProvider2
-
RenameProvider
を継承したRenameProvider2
では、名前を変更するシンボルの範囲やユーザーが名前を変更したときに表示される初期名など、名前変更時の追加情報を拡張機能に提供できる。
プレビュー機能
言語パック
- 拡張機能を使用してVS Codeに追加の翻訳を追加できる言語パックのサポートを追加した。
- Transifexの翻訳者と協力して、マーケットプレイスの言語パック拡張機能として翻訳を最適に公開するプロセスを確立する予定。
通知のUXデザイン
- 今回のマイルストーンで、UX(ユーザーエクスペリエンス)チームはVS Codeの通知表示を再設計した。次のマイルストーンでこれらのデザインの開発作業を開始する予定。デザインに関する詳細はこのGitHubのIssueで確認することができる。
新しいドキュメント
DockerおよびAzure App Service向けのNode.js開発チュートリアル
- 「Node.jsアプリケーションのAzureへのデプロイ」に2つの新しいチュートリアルを追加した。
- Azure App Serviceを使用したデプロイ - Azure App Service拡張機能を使用してVS CodeでAzureリソースを直接管理する
- Dockerを使用したデプロイ - Docker拡張機能を備えたDockerコンテナを使用してWebサイトを展開する
変数置換リファレンス
- VS Codeがサポートする変数リファレンスの記述に、デバッグとタスクの設定ファイルでの変数置換(例えば
${workspaceFolder}
や${file}
)を追加した。
Vue.js用のVS Codeレシピ
- 一般的なVue.jsフレームワークを使用するアプリケーション向けにChromeデバッガを設定するためのVue.jsデバッグレシピが追加された。
言語サーバプロトコルWebサイト
- 拡張機能開発者向けに、ドキュメント、LSP仕様、および現在の実装の一覧を提供する新しい言語サーバプロトコルWebサイトを作成した。
新しいコマンド
- 「リファクタリング」
Shift
+Win
+R
コマンドID:workbench.action.refactor
- 現在位置のリファクタリングコンテキストメニューを開く
- 「表示: エディターを1番目のグループに移動」
Shift
+Alt
+1
コマンドID:workbench.action.moveEditorToFirstGroup
- 「表示: エディターを2番目のグループに移動」
Shift
+Alt
+1
コマンドID:workbench.action.moveEditorToSecondGroup
- 「表示: エディターを3番目のグループに移動」
Shift
+Alt
+1
コマンドID:workbench.action.moveEditorToThirdGroup
- (リスト/ツリーの複数選択を下に伸縮)
Shift
+↓
コマンドID:list.expandSelectionDown
- (リスト/ツリーの複数選択を上に伸縮)
Shift
+↑
コマンドID:list.expandSelectionUp
- 「開発者: ログファイルを開く」 (キー未定義) コマンドID:
workbench.action.openLogFile
- 「開発者: ログフォルダーを開く」 (キー未定義) コマンドID:
workbench.action.openLogsFolder
- 「開発者: ログの表示」 (キー未定義) コマンドID:
workbench.action.showLogs
- 「開発者: ログレベルの設定」 (キー未定義) コマンドID:
workbench.action.setLogLevel
- (設定エディタでフォーカスされた設定を編集する)
Ctrl
+.
コマンドID:settings.action.editFocusedSetting
- 設定画面で検索後、Enter/Shift+Enterで項目のフォーカス移動ができるが、その時にこのコマンドを使うと現在フォーカスがある項目の編集が行える。
- コマンド
workbench.action.files.revealActiveFileInWindows
は、すでに使用可能なコマンドrevealFileInOS
の複製であり、今回のリリースでworkbench.action.files.revealActiveFileInWindows
コマンドを非推奨にし、次回リリースで削除する予定。 - コマンド
workbench.action.files.copyPathOfActiveFile
は、すでに使用可能なコマンドcopyFilePath
の複製であり、今回のリリースでworkbench.action.files.copyPathOfActiveFile
コマンドを非推奨にし、次回リリースで削除する予定。
注目すべき変更点
-
7893: ウィンドウ右下にあるニコちゃんマーク(フィードバックツイートボタン)を非表示にできるようにした
- これそういうボタンだったのか!今回初めて押してみた!
- 16852: コマンドパレットで"error"や"warning"の入力で「問題の切り替え」「問題のフォーカス」コマンドが表示されるようにする
- 19707: Windowsで管理者として実行しているときにウィンドウタイトルに"(Administrator)"を付加する
- 31988: ウィンドウのクローズがキャンセルされた時にターミナルプロセスが終了してしまう問題の解消
- 34320: 異なるDPIのモニターを切り替えたときにターミナルのフォントが潰れてしまう問題の解消
- 35462: ファイルエクスプローラのカスタムビューの表示/非表示設定をすべてのウィンドウに対して有効にする
- 37589: 統合ターミナルで、複数のプロセスのデバッグができない問題の解消
- 39371: 再起動後にコールスタックがトップフレームしか表示されない問題の解消
- 39536: モーダルダイアログで非同期APIを使用するように変更する
- 39574: 実行時にすべてのログサービスのログレベルを変更できるようにする
- 39719: デバッガのウォッチパネルでダブルクリックすると新しいウォッチUIを表示する改善
- 40088: 拡張機能を無効にするアクションの提供
- 41071: 「ビューを開く」「Quick Open ビュー」でファイルエクスプローラのカスタムビューも開けるように改善
- 41759: VSIX拡張機能のインストール中にインストールステータスを表示する