2019年1月 (バージョン 1.31)
アップデート 1.31.1: このアップデートでは、以下の問題に対処しています。
ダウンロード: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball
Visual Studio Code の 2019 年 1 月リリースへようこそ。このバージョンには、多くの重要なアップデートが含まれており、皆様に気に入っていただけることを願っています。主なハイライトをいくつかご紹介します。
- 拡張機能インストール時の再読み込み不要 - 新しい拡張機能をインストールしても中断されません。
- ツリー UI の改善 - エクスプローラーのナビゲーションとフィルタリングの改善、水平スクロール。
- 「移動」メニューの更新 - 「移動」アクションメニューの再設計、「編集」メニューの「切り取り」コマンド。
- 複数行の問題出力 - 「問題」パネルで複数行にわたる問題の詳細を表示。
- 「すべての参照の検索」履歴 - 以前の参照検索をすばやく再実行。
- HTML、CSS、JSON のセマンティック選択 - 言語のセマンティクスに基づいて選択範囲を拡大/縮小。
- 統合ターミナルのリフローサポート - パネルの幅が変更されると、ターミナルのテキストが自動的にリフロー。
- コマンドベースのユーザー入力変数 - タスクおよびデバッグ構成用のカスタムユーザー入力。
- 更新された拡張機能 API ドキュメント - 拡張機能ガイドで完全に書き直し。
これらのリリースノートをオンラインで読むには、code.visualstudio.com の 更新情報 にアクセスしてください。
また、Cloud Developer Advocate の Brian Clark によるこの 1.31 リリースのハイライト動画もご覧ください。
リリースノートは、VS Code の重点分野に関連する以下のセクションにまとめられています。さらに、いくつかのアップデートがあります。
- ワークベンチ - Zen モードで行番号を非表示、新しい Screencast モードでキー操作を表示。
- エディター - スマート選択の改善、参照 CodeLens の位置調整。
- 統合ターミナル - Windows での ConPTY サポート、検索の改善。
- 拡張機能の作成 - 拡張機能の変更イベント、ブラウザーアクションでのリソースを開く。
Insiders: 新機能をいち早く試したいですか? 夜間の Insiders ビルドをダウンロードして、最新のアップデートをすぐにご利用いただけます。また、Visual Studio Code の最新ニュース、アップデート、コンテンツについては、Twitter @code をフォローしてください!
拡張機能
拡張機能インストール時の再読み込み不要
VS Code の再読み込み (再起動) を強制することなく拡張機能をインストールできることは、最も多く投票された機能リクエストの 1 つであり、このリリースで実現しました。拡張機能をインストールまたは有効にする際に、VS Code を再読み込みする必要はなくなりました。
以下の例では、ユーザーが .vue
ファイルを開いた後、Vetur 拡張機能をインストールするという推奨事項に従っています。Vetur 拡張機能によって提供される言語機能 (構文の色付け、診断エラーなど) は、推奨される拡張機能をインストールした直後に利用可能になることに注意してください。
アクティブ化されていない拡張機能をアンインストールまたは無効にする場合も、再読み込みは不要です。
注: 外部コントリビューション (他の拡張機能の拡張ポイントへのコントリビューション) のために再読み込みが必要な特定の拡張機能があります。これには、extensions.onDidChange
イベントをリッスンすることによる、外部コントリビューションポイントの所有者からの採用が必要です。
ワークベンチ
新しいツリーウィジェット
ウィジェットのゲームを次のレベルに引き上げました。パフォーマンスの問題に対処し、ワークベンチのいくつかの領域でより多くの機能を提供できるように、新しいツリーウィジェットが作成されました。新しいツリーウィジェットは、高性能リストウィジェットを介した構成によって作成されました。このエンジニアリング作業とパフォーマンスの向上に関する個別のブログ投稿を作成する予定です。今のところ、機能に焦点を当てます。
注: 新しいツリーは、ファイルエクスプローラー、すべてのデバッグツリー、検索、およびピーク参照で採用されました。以下で説明する機能は、明示的に無効にされていない限り、これらの UI 領域のほとんどに適用されます。
改善されたキーボードナビゲーション
ツリーには、simple
、highlight
、および filter
の 3 種類のキーボードナビゲーションがあります。highlight
と filter
の両方で、ツリーに入力すると、ツリーの上部にウィジェット (コントロール) が表示され、ツリーをナビゲートしていることを示します。
このウィジェットは、highlight
モードと filter
モードを切り替えるためにも使用できます。モードを切り替えるためのキーボードショートカットが必要な場合は、list.toggleFilterOnType
コマンドを実行するようにキーバインディングを構成できます。ワークベンチ > リスト: キーボードナビゲーション (workbench.list.keyboardNavigation
) 設定は、simple
モードを含むデフォルトモードを設定します。simple
モードでは、ツリー要素の最初の数文字を入力するだけで、その要素にフォーカスが移動します。
リスト/ツリーアクションに単一文字のキーバインディングを持つユーザーは、listAutomaticKeyboardNavigation
コンテキストキーを利用することで、この機能を引き続き使用できます。たとえば、VIM 拡張機能は、自動キーボードナビゲーションを無効にするためにこのコンテキストキーを false
に設定し、/
キーバインディングを list.toggleKeyboardNavigation
コマンドに追加するため、ユーザーは /
を入力してツリーをナビゲートできます。詳細については、VSCodeVIM プルリクエストを参照してください。
テーマ作成者は、次の新しいテーマキーを使用してウィジェットの色をカスタマイズできます。
listFilterWidget.background
listFilterWidget.outline
listFilterWidget.noMatchesOutline
注: これらのキーボードナビゲーションモードは、現在、解決済みのツリーノードでのみ機能します。たとえば、ファイルエクスプローラーでは、フォルダーが一度も展開されたことがない場合、ツリーはその子を検索しません。このエクスペリエンスを向上させるためのいくつかのオプションを検討しています。
階層的な全選択
ツリーで Ctrl+A
(macOS では Cmd+A
) を押すと、ツリーの選択が階層的に展開されるようになりました。
カスタマイズ可能なインデント
ワークベンチ > ツリー: インデント (workbench.tree.indent
) 設定を使用して、ワークベンチ全体のすべてのツリーのノードインデントをカスタマイズできるようになりました。
すべて展開/折りたたみ
ツリーノードを展開/折りたたむときに Alt
キーを押すと、再帰的に動作するようになりました。再帰的な展開は、ツリーで以前に表示されたノードでのみ機能することに注意してください。たとえば、ファイルエクスプローラーは、ユーザーが以前に展開したことがないフォルダーを自動的に展開しません。
水平スクロール
ワークベンチ > ツリー: 水平スクロール (workbench.tree.horizontalScrolling
) 設定により、エクスプローラー、検索、SCM、デバッグなど、より多くのツリーとリストで水平スクロールが有効になりました。
「問題」パネル
複数行メッセージ
「問題」パネルに、複数行の診断メッセージが個別の行で表示されるようになりました。以下の例は、TypeScript からの複数行のエラーメッセージがどのように表示されるかを示しています。
また、折りたたみ/展開ボタンまたは 問題: メッセージを単一行で表示 および 問題: メッセージを複数行で表示 コマンドを使用して、完全なメッセージの表示/非表示を切り替えることもできます。
キーボードショートカットを使用したコードアクションのトリガー
クイックフィックスコマンドと同じデフォルトのキーボードショートカット ⌘. (Windows, Linux Ctrl+.) を使用して、「問題」パネルからコードアクションをトリガーできるようになりました。
「移動」メニューの改善
「移動」メニューにナビゲーションアクションを追加して、見つけやすくしました。
エクスプローラーのコンテキストメニューに「切り取り」コマンドを追加
ユーザーからの要望に基づき、エクスプローラーのコンテキストメニューに「切り取り」コマンドを追加しました。
高速スクロール
Alt
キーを押すと、エディターとエクスプローラーで高速スクロールが有効になります。デフォルトでは、高速スクロールは 5 倍の速度倍率を使用しますが、エディター: 高速スクロール感度 (editor.fastScrollSensitivity
) 設定で倍率を制御できます。
Zen モードで行番号を非表示
Zen モードをオンにすると、エディターの行番号も非表示になるようになりました。この動作は、zenMode.hideLineNumbers
設定で制御できます。
カスタムメニューを使用した Linux でのキーボードナビゲーションの追加
カスタムメニューは、Page Up/Down
キーと Home/End
キーを使用して、メニューの先頭または末尾にすばやくジャンプできるようになりました。
Windows/Linux でアプリケーションアイコンをダブルクリックして閉じる
技術的なトレードオフにより、デフォルトでは、Window および Linux のカスタムタイトルバーは、アプリケーションアイコンをダブルクリックしてウィンドウを閉じる機能を削除します。window.doubleClickIconToClose
設定を有効にすることで、この機能を取り戻すことができますが、この場所からウィンドウをドラッグしたり、Windows でシステムコンテキストメニューを取得したりすることはできなくなります。
エディタータブの閉じる順序
新しい設定 workbench.editor.focusRecentEditorAfterClose
を使用すると、エディタータブが閉じられる順序を変更できます。デフォルトでは、タブは最近使用した順 (MRU) に閉じられます。この設定を変更すると、タブを右から左に閉じることができます。
新しいタイトル変数
window.title
設定内で使用できる 3 つの新しい変数があります。
${activeFolderShort}
: ファイルが含まれているフォルダーの名前。${activeFolderMedium}
: ファイルが含まれているフォルダーのパス (ワークスペースフォルダーからの相対パス)。${activeFolderLong}
: ファイルが含まれているフォルダーのフルパス。
出力パネル
出力パネルのスマートスクロール動作がより効率的になりました。出力パネル内の任意の場所をクリックするとスクロールがロックされ、最後の行をクリックするとロックが解除されます。
Screencast モード
VS Code に新しい Screencast モード が追加されました。これは、カーソル位置とキー操作を強調表示します。Screencast モード (開発者: Screencast モードの切り替え) は、デモンストレーションの目的で役立ちます。
エディター
スマート選択
「選択範囲の展開」および「選択範囲の縮小」の実装を「選択」メニューから改善しました。言語サーバーがセマンティクスの知識に基づいて選択ステップを指定できるように、API を追加するプロセスを進めています。さらに、デフォルトの実装も改善しました。
スマート選択が改善されるにつれて、今後もご期待ください。smart-select
ラベルを使用して、私たちが取り組んでいる内容を確認してください。
参照履歴
参照ビューに 参照: 履歴を表示 コマンドが追加されました。以前の検索をすばやく再実行できる以前の検索を含むクイックピッカーが表示されます。
参照 CodeLens
参照 CodeLens を選択すると、ピークエディターが開きます。これは、references.preferredLocation
設定で制御できるようになりました。オプションは peek
と view
であり、後者は新しいビューで参照を表示します。
スニペットの説明
長い説明を持つスニペットを作成する場合、以前は長い単一の文字列を記述する必要がありました。body
のように配列を使用するためのサポートはありませんでした。これが変更され、長い説明を文字列配列を使用して記述できるようになりました。
{
"prefix": "happy",
"body": "#Happy Coding!",
"description": ["First Line", "Second Line", "Third Line"]
}
レガシー検索モードの削除
20 リリース前に、VS Code での検索に ripgrep を使用し始めました。古い Node.js ベースの検索実装は、search.useLegacySearch
設定の背後でまだ利用可能でした。しかし、Marie Kondo が言うように、喜びをもはやもたらさないものを整理する必要があります。後方参照や先読みなどの正規表現機能を使用している場合は、search.usePCRE2
設定をオンにしてください。
JSON として設定を編集するためのシンプルなテキストエディターの使用
同様のテーマで、設定 UI が数リリース前から導入されているため、JSON 設定の編集エクスペリエンスの簡素化を検討しています。settings.json
ファイルを開いて JSON として設定を編集する場合、または設定 UI の {}
ボタンをクリックするか、基本設定: ユーザー設定を開く (JSON) コマンドを呼び出す場合は、以前使用していた分割 JSON エディターではなく、シンプルな JSON エディターが表示されます。基本設定: デフォルト設定を開く (JSON) コマンドを使用すると、デフォルト設定のリストをまだ確認できます。
左側にデフォルト設定がある分割 JSON エディターが本当に必要な場合は、workbench.settings.useSplitJSON
設定を有効にすることで復元できます。必要に応じて JSON として設定を常に編集できることに注意してください。
拡張機能のネットワークプロキシサポート
Http: プロキシサポート (http.proxySupport
) 設定により、デフォルトで、すべての拡張機能のネットワークプロキシサポートが有効になりました。
言語
TypeScript 3.3
TypeScript 3.3.1 が同梱されるようになりました。この TypeScript アップデートにより、いくつかの重要なバグ修正と polish がもたらされます。
markdown.previewFrontMatter 設定の削除
markdown.previewFrontMatter
設定が削除されました。Markdown プレビューは、YAML フロントマターを常に非表示にするようになりました (これは markdown.previewFrontMatter
のデフォルト設定でした)。
Markdown yaml Preamble や GitHub Markdown Preview などの Markdown 拡張機能は、プレビューでフロントマターをテーブルとしてレンダリングします。
セマンティック選択
セマンティック選択が、HTML、CSS/LESS/SCSS、および JSON で利用可能になりました。
統合ターミナル
リフローサポート
ターミナルは、水平方向にサイズ変更されると、行を折り返したり、折り返しを解除したりするようになりました。
Windows での ConPTY サポート
Windows ConPTY API を介してターミナルプロセスを管理することが、Windows Insiders ファストリング (ビルド番号 18309+) でオプトインオプションとして利用できるようになりました。
{
"terminal.integrated.windowsEnableConpty": true
}
これにより、Windows コンソールチームによって提供される ConPTY システムがターミナルのバックエンドとして使用されます。これを有効にすると、Windows ターミナルの多くの問題、特に色サポート、インタラクティブアプリケーション、および VT シーケンスをネイティブにサポートするシェルに関する問題が修正されるはずです。
WSL ターミナルでの 256 ANSI カラーサポートの前後の様子を以下に示します。
リンクに使用される現在の作業ディレクトリ
Linux および macOS では、ターミナルは、ターミナルの初期ディレクトリではなく、現在の作業ディレクトリを基準にしてリンクを解決するようになりました。
ターミナルでの検索の改善
ターミナルでの検索で、インクリメンタルな「タイプアズユーファインド」検索と、1 行に複数の用語を検索する機能がサポートされるようになりました。
commandsToSkipShell 設定の改善
以前は、terminal.integrated.commandsToSkipShell
設定は、ターミナルによる評価をスキップし、代わりに VS Code によって処理されるすべてのコマンドのリストでした。これを変更するには、設定ファイルに 100 以上のコマンドのリストが必要になるため、扱いにくかったです。これが、追加と削除のリストに変更されるようになりました。デフォルトリストへの変更のみを含めます。
{
"terminal.integrated.commandsToSkipShell": [
// Make ctrl+n open a new file when the terminal is focused
"workbench.action.files.newUntitledFile",
// Send ctrl+e to the terminal
"-workbench.action.quickOpen"
]
}
新しいバッファー実装の有効化
v1.29 で導入された TypedArray/ArrayBuffer ベースのターミナルバッファー がオンになり、古い実装が削除されました。これにより、ターミナルのスループットが大幅に向上し、メモリフットプリントが大幅に削減されるはずです。
デバッグとタスク
カスタムコマンドユーザー入力変数
最後のマイルストーンで導入された 入力変数 は、タスクまたはデバッグ構成でユーザー入力を求める強力なメカニズムです。当初、promptString
および pickString
入力変数を利用できるようにしました。
このマイルストーンでは、入力変数が補間されるときに任意のコマンドを実行する新しいタイプの入力変数 command
を導入します。コマンドは拡張機能によって提供される可能性があるため、ユーザー入力変数を新しい実装で拡張できるようになりました。
次の例は、特定のフォルダーで見つかったすべてのテストケースのリストからユーザーがテストケースを選択できるようにするデバッグ構成で、タイプ command
のユーザー入力変数を使用する方法を示しています。一部の拡張機能が、構成可能な場所にあるすべてのテストケースを検索し、ピッカー UI を表示してそのうちの 1 つを選択する extension.mochaSupport.testPicker
コマンドを提供していると想定されています。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Test",
"program": "${workspaceFolder}/${input:pickTest}"
}
],
"inputs": [
{
"id": "pickTest",
"type": "command",
"command": "extension.mochaSupport.testPicker",
"args": {
"testFolder": "${workspaceFolder}/tests"
}
}
]
}
タスク出力の分割ターミナルサポート
新しいターミナルを作成する代わりに、分割ターミナルパネルに出力を表示するようにタスクを構成できるようになりました。タスク構成は、presentation
セクションの group
属性を使用して、タスクの出力が表示される場所を定義できます。
以下の 2 つのタスクの両方を実行すると、分割ターミナルに表示されるため、両方を同時に確認できます。
{
"version": "2.0.0",
"tasks": [
{
"label": "Task One",
"type": "shell",
"command": "echo One && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
},
{
"label": "Task Two",
"type": "shell",
"command": "echo Two && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
}
]
}
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用するのに十分な機能があります。開発中の初期段階でのフィードバックをお待ちしています。
ワークベンチのグリッドレイアウト
ワークベンチレイアウトは、エディター自体で使用されているのと同じグリッドレイアウトを使用するように再設計されています。ここで行われている作業は、ワークベンチレイアウトを長期的に維持するためのエンジニアリング作業を簡素化するだけでなく、新しいエクスペリエンスを可能にするのにも役立ちます。
このマイルストーンでは、新しいグリッドレイアウトでより簡単に実現できること、つまりエディター領域の切り替えを示すために、そのようなエクスペリエンスの 1 つを出荷しています。実験的なグリッドレイアウトが有効になっている ("workbench.useExperimentalGridLayout": true
) 場合、コードエディターを非表示にする新しいコマンド エディター領域の切り替え があります。これにより、以下に示すように、エディター領域全体を占有する VS Code ターミナルパネルを作成できます。
ターミナルから code file.txt
を使用してファイルを開くと、予想どおりにエディターがポップアップ表示されます。この機能はまだ開発中であり、既知の問題がありますが、ぜひチェックして問題を提出してください。この作業に関する問題の最新情報を このクエリ で入手できます。
HTML および CSS カスタムデータサポート
この機能はプレビュー段階であるため、設定、コントリビューションポイント、およびデータ形式は変更される可能性があります。
今日、フロントエンド開発者は多くの場合、HTML/CSS のスーパーセットでコーディングします。
- Web Components を使用すると、
<my-button type="alert"></my-button>
などのカスタム HTML 要素を使用できます。 - PostCSS を使用すると、
size
などのカスタム CSS プロパティと、:any-link
などのまだ標準化されていない CSS 機能を使用できます。 - さまざまなフレームワークにより、ソース HTML/CSS でさらに優れた柔軟性が実現します。
このイテレーションでは、1.30 で導入された HTML カスタムデータサポート を改善し、CSS カスタムデータサポートを追加しました。
html.experimental.customData
またはcss.experimental.customData
を使用して、カスタムデータをロードします。(html.experimental.custom.tags
およびhtml.experimental.custom.attributes
は削除されました。)- または、
contributes.html.experimental.customData
またはcontributes.css.experimental.customData
を使用して、JSON を拡張機能にバンドルします。 - 最後に、vscode-html-languageservice または vscode-css-languageservice を使用する言語サーバーを作成する場合は、カスタムデータを使用して言語サービスを作成できます。
カスタムデータは、VS Code の HTML/CSS の理解を強化します。たとえば、これらの HTML/CSS JSON コントリビューションを使用すると、VS Code はカスタム HTML タグ/属性および CSS プロパティ/pseudoClass の補完とホバーを提供できます。
{
"version": 1,
"tags": [
{
"name": "my-button",
"description": "My button",
"attributes": [
{
"name": "type",
"description": "My button type",
"values": [{ "name": "alert" }]
}
]
}
]
}
{
"version": 1,
"properties": [
{
"name": "my-size",
"description": "Compiles down to `width` and `height`. See details at https://github.com/postcss/postcss-size."
}
],
"pseudoClasses": [
{
"name": ":my-link",
"description": ":any-link pseudo class. See details at https://preset-env.cssdb.org/features#any-link-pseudo-class."
}
]
}
上記のサンプルは octref/simple-customdata で入手でき、よりフル機能のサンプルは octref/svg-data で入手できます。
これらのガイドでは、データ形式と、設定および拡張機能コントリビューションポイントを介してデータ形式を使用する方法について説明します。
- HTML カスタムデータ の使用に関するガイド
- CSS カスタムデータ の使用に関するガイド
拡張機能の作成
拡張機能の変更イベント
extensions.all
配列が変更されたときに発生する新しいイベント extensions.onDidChange
が追加されました。これは、拡張機能がインストール、アンインストール、有効化、または無効化された場合に発生する可能性があります。「拡張機能インストール時の再読み込み不要」セクションを参照してください。
/**
* An event which fires when `extensions.all` changes. This can happen when extensions are
* installed, uninstalled, enabled or disabled.
*/
export const onDidChange: Event<void>;
注: 新しいコントリビューションポイントを導入する拡張機能の作成者は、このイベントをリッスンし、ワークベンチの状態をそれに応じて更新する必要があります。
ブラウザーでリソースを開く
いくつかの拡張機能が opn
や open
などの node モジュールを使用してブラウザーで URL を開いていることがわかりました。この機能への要望を考慮して、新しい API vscode.env.openExternal
を追加しました。これは URL を予期しており、Web サイトリンク、メールリンク、またはアプリケーション URL ハンドラーを開くために使用できます。また、PDF ファイルなどのデフォルトアプリで開くために、ファイル URL も受け入れられます。
// open default browser
await vscode.env.openExternal(
vscode.Uri.parse('https://github.com/microsoft/vscode/issues/66741')
);
注: 現在 opn
または open
モジュールを使用している拡張機能の作成者は、この新しい API に切り替える必要があります。
グローバルストレージパス
拡張機能には、書き込み/読み取りアクセス権を持つローカルディレクトリを指すグローバルストレージパス ExtensionContext.globalStoragePath
が提供されるようになりました。これは、すべてのワークスペースからアクセスできる大きなファイルを保存する必要がある場合に適したオプションです。
/**
* An absolute file path in which the extension can store global state.
* The directory might not exist on disk and creation is
* up to the extension. However, the parent directory is guaranteed to be existent.
*
* Use [`globalState`](#_ExtensionContext.globalState) to store key value data.
*/
globalStoragePath: string;
VS Code は、拡張機能が削除されたときにこのパスのクリーンアップを処理します。
注: 現在、ワークスペース間で状態を保存するためにカスタムファイルシステムロケーションを使用している拡張機能の作成者は、この新しい API に切り替える必要があります。
CodeActionKind.intersects
CodeActionKind.intersects
メソッドは、CodeActionProvider
がそのコードアクションを計算する価値があるかどうかを確認するのに役立ちます。
import * as vscode from 'vscode';
export class OrganizeImportsProvider implements vscode.CodeActionProvider {
public provideCodeActions(
document: vscode.TextDocument,
range: vscode.Range,
context: vscode.CodeActionContext,
token: vscode.CancellationToken
): vscode.CodeAction[] {
// Only return organize imports actions if they were explicitly requested
// We can check this using `intersects`.
if (!context.only || !vscode.CodeActionKind.SourceOrganizeImports.intersects(context.only)) {
// Organize imports actions were not requested
return [];
}
// Organize imports was requested
...
}
}
contributes.resourceLabelFormatters
拡張機能は、ワークベンチのすべての場所で URI を表示する方法を指定するリソースラベルフォーマッターを提供できるようになりました。たとえば、拡張機能がスキーム remotehub
を持つ URI のフォーマッターを提供する方法を次に示します。
"contributes": {
"resourceLabelFormatters": [
{
"scheme": "remotehub",
"formatting": {
"label": "${path}",
"separator": "/",
"workspaceSuffix": "GitHub"
}
}
]
}
これは、スキーム remotehub
を持つすべての URI が、URI の path
セグメントのみを表示することによってレンダリングされ、区切り文字が /
になることを意味します。remotehub
URI を持つワークスペースは、ラベルに GitHub サフィックスが付きます。
キーバインディングに引数を追加
package.json
でキーバインディングを定義するときに、引数を定義できるようになりました。実行時に、これらの引数がコマンドに渡されます。
以下のサンプルでは、{foo: 1, bar: 2}
です。
"keybindings": {
"key": "cmd+i",
"command": "myCommand",
"args": {
"foo": 1,
"bar": 2
}
}
createTerminal 環境の完全な制御
新しい設定 TerminalOptions.strictEnv
を true に設定すると、ターミナル環境に一切変更を加えず、代わりに拡張機能によって渡されたとおりに正確に使用されます。
// This will create a terminal whose environment only contains the single value
// FOO=BAR.
const terminal = createTerminal({
name: 'Test terminal',
env: {
FOO: 'BAR'
},
strictEnv: true
});
Node.js のアップデート
VS Code が実行されている Electron のバージョンが更新され、Node.js が 8.9
から 10.2.0
に更新されました。すべての拡張機能が、この新しいバージョンの Node.js で実行されるようになります。Node.js 10 での非推奨の一覧については、Node v10.0.0 非推奨 を参照してください。
Octicons の更新
Octicons のバージョンを 8.3.0 に更新し、次のアイコンをサポートするようになりました。
$(arrow-both)
$(bold)
$(color-mode)
$(eye-closed)
$(fold-down)
$(fold-up)
$(grabber)
$(italic)
$(kebab-horizontal)
$(kebab-vertical)
$(note)
$(organization-filled)
$(person-filled)
$(project)
$(request-changes)
$(screen-full)
$(screen-normal)
$(smiley)
$(tasklist)
$(text-size)
$(unverified)
$(verified)
サポートするアイコンの完全なリストを表示するには、ドキュメントを参照してください。変更の詳細なリストについては、Octicon 変更ログを参照してください。
提案された拡張機能 API
すべてのマイルストーンには、新しい提案された API が付属しており、拡張機能の作成者はそれらを試すことができます。いつものように、フィードバックをお待ちしています。提案された API を試すには、次のことを行う必要があります。
- 提案された API は頻繁に変更されるため、Insiders を使用する必要があります。
- 拡張機能の
package.json
ファイルに、"enableProposedApi": true
という行が必要です。 - vscode.proposed.d.ts ファイルの最新バージョンをプロジェクトにコピーします。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的な変更を加える可能性があり、既存の拡張機能を破壊することは決して望ましくありません。
SignatureHelpContext.activeSignatureHelp
提案された SignatureHelpContext.activeSignatureHelp
フィールドは、以前にアクティブだったシグネチャを追跡します。
import * as vscode from 'vscode';
class MySignatureHelpProvider implements vscode.SignatureHelpProvider {
provideSignatureHelp(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken,
context: vscode.SignatureHelpContext
): vscode.ProviderResult<vscode.SignatureHelp> {
// The active signature help when this provider was triggered or undefined if
// no signature help was active.
console.log(context.activeSignatureHelp);
...
}
}
プロバイダーは、これを使用して、シグネチャヘルププロバイダーが再トリガーされる前に選択されていたオーバーロードを追跡できます。
自動修正と CodeAction.isPreferred
Code Action API は、VS Code のクイックフィックス (エディターに表示される電球) を強化します。特定のエラーに対するクイックフィックスが多数存在する可能性がありますが、多くの場合、これらのクイックフィックスの 1 つが問題に対する最も合理的な修正です。たとえば、スペルミスを修正することは、通常、新しいフィールドを生成するよりも可能性の高い修正です。
提案された API を使用することで、拡張機能は CodeAction
で isPreferred
を設定して、それが根本的な問題に対する最も合理的な修正であることを示すことができます。優先される修正は、自動修正 コマンド (⌥⌘. (Windows, Linux Shift+Alt+.)) を使用して自動的に適用できます。
優先されるクイックフィックスは、一般的に次のようになります。
- 根本的なエラーを正しく修正する (そして抑制しない)。
- エラーに対する合理的な修正である。
- 予期せずに広範な操作を実行しない。
リファクタリング コードアクションは、最も妥当なリファクタリングであることを示すために、優先とマークすることもできます。たとえば、複数の定数の抽出リファクタリングが利用可能な場合でも、多くの場合、ユーザーは最も近いローカルへの抽出のみを望んでいます。そのリファクタリング コードアクションが isPreferred
とマークされている場合、ユーザーはそれに対して単一のキーバインドを設定できます。
{
"key": "ctrl+shift+r ctrl+e",
"command": "editor.action.codeAction",
"args": {
"kind": "refactor.extract.constant",
"preferred": true
}
}
すべてのソース アクションを修正
提案されている source.fixAll
CodeActionKind
は、ファイル内のエラーを自動修正できる拡張機能の規約を確立します。この新しいソース アクションの種類は、インポートの整理に似ており、すべてのアクションを修正するためのキーバインドを構成したり、保存時の自動修正を有効にしたりすることが容易になります。
// On save, run both fixAll and organizeImports source actions
"editor.codeActionsOnSave": {
"source.fixAll": true,
"source.organizeImports": true,
}
TSLint 拡張機能 は、提案されているこのソース コードアクションの種類を既に使用して、すべて修正と保存時の自動修正を実装しています。
デバッグ アダプター プロトコル
データ ブレークポイントに関する提案されたデバッグ アダプター プロトコル
データ ブレークポイント (別名「ウォッチポイント」) に関する進行中の作業のフォローアップ ステップとして、データ ブレークポイントのデバッグ アダプター プロトコルの設計において進捗がありました。提案された DAP の変更は、こちらのブランチにあり、対応する TypeScript API は、データ ブレークポイントの提案にあります。
デバッガー拡張機能でデータ ブレークポイントのサポートに関心がある場合は、提案をご覧ください。そしてフィードバックをお寄せください。
ライブ テーマ編集
カラー テーマ拡張機能を開発する際、拡張機能開発ホスト ウィンドウで色の変更がライブで適用されるのを確認できます。
ファイル アイコン テーマでも同様に機能します。
エンジニアリング
Electron 3.0 の更新と Electron 4.0 の調査
このマイルストーンでは、Electron 3 を VS Code にバンドルする調査を完了し、安定版でこの Electron バージョンを初めて出荷しました。これは主要な Electron リリースであり、Chrome 66 と Node.js 10.x (現在のバージョンである Chrome 61 と Node.js 8.x に比べて大幅な進歩) が付属しています。
同時に、Electron 4 への更新の調査を開始しました。これはまもなく Insiders にプッシュしたいと考えています。
パフォーマンス情報の改善
このリリースでは、開発者: 起動パフォーマンス コマンドの出力がエディターに表示されるようになり、DevTools には表示されなくなりました。これにより、読みやすくなり、すばやくアクセスできるようになりました。さらに、情報に関する多くの問題が修正されました。
WinJS.Promise の削除 ✅
VS Code が開始されたとき、JavaScript は今日のようなものではありませんでした。たとえば、ネイティブ Promise が存在しなかったため、チームは非同期処理に WinJS.Promise
を使用することにしました。今日、状況は異なっています。ネイティブ Promise は現実のものとなり、WinJS.Promise
は廃止されました。昨年の半ばに、コードベースから WinJS.Promise
を削除する取り組みを開始し、12 月に完了しました。
厳密な null チェック
メインの VS Code コードベースの厳密な null チェックの作業を継続しました。皆様のご協力のおかげで、このマイルストーンでは、多数のテスト ファイルに対して厳密な null チェックを有効にすることができ、多数のエラーを排除することができました。
次のマイルストーンでも厳密な null チェックの取り組みを継続します。
拡張機能への貢献
私たちのチームは、多数の VS Code 拡張機能を保守または貢献しています。今月特に注目すべきは
TSLint のサポート
新しい TSLint 拡張機能は、source.fixAll
コードアクションを使用して、保存時の自動修正をサポートするようになりました。
"editor.codeActionsOnSave": {
"source.fixAll": true
}
非推奨の TSLint (eg2.tslint) 拡張機能のすべてのユーザーは、新しい TSLint 拡張機能に移行することをお勧めします。
Stylus 言語サポート
Stylus 言語拡張機能 は、vscode-css-languageservice のキュレーションされたデータを使用して、ステータス警告と構文ドキュメントを備えた最新の補完を提供します。
GitHub Pull Requests
このマイルストーンでは、GitHub Pull Requests 拡張機能の改善に取り組み続けました。
以下に新機能の一部を示します
- GitHub レビューのサポート。コメントを個別にではなく、レビューにグループ化できるようになりました。
- ワークスペースが GitHub リポジトリの場合、Live Share セッションに参加すると、拡張機能がシームレスに動作します。
- プロジェクトに GraphQL を段階的に導入したため、説明ビューにはプルリクエストの詳細情報が表示されるようになり、拡張機能の全体的なパフォーマンスが向上しました。
- プルリクエストをマージするときに、マージコミットを作成、Squash してマージ、または Rebase してマージ を選択できるようになりました。
- パフォーマンスの向上。プルリクエスト、ファイルの変更の参照、プルリクエストのチェックアウトを行う際の GitHub および git 操作への API 呼び出しを削減しました。これにより、特に Windows で拡張機能の応答が速くなります。
拡張機能の完全なリリースノートは、vscode-pull-request-github releases で読むことができます。
新しいドキュメント
Python Jupyter Notebooks
新しい Jupyter Notebooks の操作トピックでは、VS Code 内から Jupyter Notebooks を開いたり、デバッグしたり、エクスポートしたりする方法について説明しています。
JavaScript と TypeScript のドキュメントの改善
JavaScript および TypeScript の記事を更新して、最新の状態にし、より役立つ情報を提供できるようにしました。
JavaScript および TypeScript ページでは、VS Code がこれらの言語に提供する機能の概要を説明しています。これらの機能の詳細な説明とチュートリアルは、目次の Node.js / JavaScript および TypeScript の下の新しいページに移動しました。
更新された Extension API ドキュメント
拡張機能の作成者向けに、VS Code API ドキュメントが書き直され、独自の目次に移動されました。
ここでは、次の記事を見つけることができます
注目すべき修正
- 7570: VS Code がオフラインで開かない
- 14372: 拡張機能: 無効化状態をウィンドウ間で伝達する必要がある
- 34396: シングル CPU VM での高 CPU 使用率
- 58167: OS を再開すると、ターミナルとミニマップの復元テクスチャが破損する
- 59794: editor.accessibilitySupport が 'auto' に設定されている場合、ターミナル スクリーン リーダーのサポートが機能しない
- 61649: デバッグで未定義のプロパティ 'onError' を読み取ることができない
- 63832: 拡張機能をデバッグするときに lsp サーバーにアタッチできない
- 64948: GDB C/C++ デバッガーが起動せず、エラーが発生する
- 65697: autoAttachChildProcesses を使用したデバッグ stopOnEntry が、ノード クラスターのフォークされたプロセスで尊重されない
- 66302: Ctrl + L はデフォルトで repl をクリアするようにバインドする必要がある
- 66681: 「比較用に選択」および「選択したものと比較」コマンドが仮想ドキュメントに表示されない
このリリースには、Microsoft Security Response Center CVE-2019-0728 のセキュリティ更新プログラムも含まれています。
謝辞
最後に、しかし決して重要でないわけではありませんが、VS Code をさらに改善するためにご協力いただいた次の皆様に、心から感謝申し上げます!
Issue トラッキングへの貢献。受信 Issue の管理にご協力いただける場合は、コミュニティ Issue トラッキング ページをご覧ください。
- Alexander (@usernamehw)
- Simon Chan (@yume-chan)
- Prabhanjan S Koushik (@skprabhanjan)
- Eric Amodio (@eamodio)
- Christopher Leidigh (@cleidigh)
vscode
への貢献
- Alec Chan (@aechan): 検索: クリア ボタンの動作の改善 PR #63082
- Alexander Eyers-Taylor (@aeyerstaylor)
- Agustín Rodríguez (@agurodriguez): [問題の報告] および [プロセスのエクスプローラー] ウィンドウが全画面モードで開かないようにする PR #64839
- Anirudh Rayabharam (@anirudhrb): Issue 65204 を修正: キーバインドを開くアイコンが消える PR #65968
- @asaf050: ターミナル コンテキスト メニューからターミナルを強制終了できるようにする PR #66535
- Chris Patterson (@chrisrpatterson): ビルド バッジ URL を更新 PR #67008
- Christian Alexander (@ChristianAlexander): git add -N で追加されたファイルの表示処理を追加 PR #59163
- Christian Flach (@cmfcmf): タスクに terminalGroup を追加して、分割ペインで実行できるようにする PR #65973
- Christian Oliff (@coliff): EditorConfig.org への HTTPS リンク PR #65358
- Danny Tuppeny (@DanTup): タイプミスを修正: "accepeted" => "accepted" PR #64976
- @davidwu226: 無効な JSON を修正。 PR #65447
- Donald Pipowitch (@donaldpipowitch): .vscodeignore 構文の強調表示を追加 PR #64960
- Thai Pangsakulyanont (@dtinth): tsconfig.json を解析するときに JSON.parse の代わりに jsonc.parse を使用し、tsconfig.json にコメントが含まれている場合に
-b
フラグがアクティブ化されないバグを修正。 PR #67535 - Thien Do (@dvkndn): nvmrc を node 8 に更新 PR #67183
- Ashwin Ramaswami (@epicfaace)
- Phil (@flurmbo): md 画像リンクを検出 PR #66958
- li zixiang (@fuafa): findModel.test.ts に厳密な null チェックを追加 PR #66436
- Gabriel Arjones (@g-arjones): #59635 を修正 PR #60111
- @g1tman: 表示されていない場合は、サイズ変更時にターミナルでフォントをフェッチしない PR #66781
- Gabriel DeBacker (@GabeDeBacker): ターミナル作成で VSCode のプロセス環境を無視できるようにする PR #64733
- Chris Ganga (@gangachris)
- src/vs/base/test/common/async.test.ts の厳密な null チェックを有効にする PR #65442
- ./vs/base/test/common/keyCodes.test.ts の厳密な null チェックを有効にする PR #65454
- ./vs/base/test/common/octicon.test.ts の厳密な null チェックを有効にする PR #65458
- ./vs/base/test/node/config.test.ts の厳密な null チェックを有効にする PR #65471
- ./vs/base/test/common/event.test.ts の厳密な null チェックを有効にする PR #65444
- ./vs/base/test/common/history.test.ts の厳密な null チェックを有効にする PR #65453
- windowsFinder の厳密な null チェックを有効にする PR #65551
- find controller の厳密な null チェックを有効にする PR #65553
- Gaurav Gupta (@gaurav5430): ./vs/platform/contextkey/test/common/contextkey.test.ts の厳密な null チェックを有効にする PR #65474
- Guy Waldman (@guywald1): [git] 特定の ref からブランチを作成するコマンドを追加 PR #59078
- Henk Mollema (@henkmollema): 著作権の年を 2019 年に更新 PR #65875
- Ilya Biryukov (@IlyaBiryukov): Git ログ、globalConfig、およびツリー diff API を追加 PR #64826
- James Dinh (@jamesdinht): files test の厳密な null チェックを有効にする PR #65249
- James George (@jamesgeorge007): ユーザー スニペットで複数行の説明のサポートを追加 PR #66159
- Jimi (Dimitris) Charalampidis (@JimiC): [themes] エディターを再起動せずにテーマをリロードする機能を追加 PR #66115
- Julia McGeoghan (@jkmdev)
- Joseph Duchesne (@josephduchesne): xtermjs バグを回避するためにレイアウトの更新をトリガーして #58159 を修正… PR #60221
- Josh Goldberg (@JoshuaKGoldberg)
- Krish De Souza (@Kedstar99)
- Kermit Xuan (@Kermit-Xuan)
- Claire (@krider2010): 更新を完全に無効にするか手動にするか、自動にするかを選択できるようにする PR #60973
- Kumar Harsh (@kumarharsh): fix(loc): 透明色の説明の不適切な言い回しを修正 PR #66334
- Anton Marchenko (@marchenko-am): #64379 を修正 - SimpleFindWidget の位置が変更された (非表示状態) PR #64558
- Mathias Rasmussen (@mathiasvr): HTML スニペット: 一貫性のある void タグ PR #66072
- Maksymilian Barnaś (@maxbarnas): #61410 「フォルダー内で検索」アクションにキーバインドを追加 PR #61526
- Mrigank Krishan (@Mrigank11): 既知の巨大なフォルダーを .gitignore に追加するように求める、#44304 を修正 PR #44562
- J.M. Rütter (@mynetx): 用語分割でタイトルが未定義で短時間表示されるのを非表示にする PR #61981
- Néstor Hernández Ojeda (@nesukun): 強制プッシュ用のエントリを scm/git コンテキスト メニューに追加 PR #60387
- Noj Vek (Manoj P) (@nojvek): #27107 を修正 - リンクのユーザー ターミナルの cwd PR #64750
- Nuno Lopes (@nunottlopes): Windows でスペースを含むパスのターミナルでアクティブなファイルを実行する問題を修正 PR #65331
- Oleg Voloshin (@oniondomes): workspaceStats test の厳密な null チェックを有効にする PR #65429
- Raul Piraces Alastuey (@piraces): suggestMemory.test.ts に厳密な null チェックを追加 PR #66754
- Prateek Singh (@punteek): simpleServices test の厳密な null チェックを有効にする PR #65571
- Rich Evans (@rcbevans): xterm mouseleave を追加してウィジェットを閉じる PR #66576
- Matthias Reitinger (@reima): キーバインド リスト ヘッダーの動作に関する問題を修正 (#_41558) PR #60217
- Romain Marcadier-Muller (@RomainMuller): 参照が使用されている場合に「tsc watch」タスクを修正 PR #67148
- Rudi Chen (@rudi-c): breadcrumbs.ts、outlineModel.ts、breadcrumbsModel.ts に対して strictNullChecks を有効にする PR #65062
- Segev Finer (@segevfiner)
- @SimonEggert: タブの閉じる順序の設定を追加 PR #66635
- Prabhanjan S Koushik (@skprabhanjan)
- Tereza Tomcova (@the-ress): bootstrap.js で UNC パスを正しく処理 PR #66128
- Tiago Ribeiro (@TiagoR98): 機能 #24344 を実装 PR #65072
- Tyler James Leonhardt (@TylerLeonhardt): 単一引用符はあるがスペースがないエッジケースを処理 PR #66359
- Alexander (@usernamehw)
- Comparers test の厳密な null チェックを有効にする PR #65301
- コントラスト比を TM ウィジェットの検査に追加 PR #64495
- quickOpenScorer test の厳密な null チェックを有効にする PR #65299
- カーソルを中括弧の中に移動 PR #67164
- ユーザー設定ファイルをめちゃくちゃにする代わりに、commandsToSkipShell を除外/含める PR #66179
- Notifications test の厳密な null チェックを有効にする PR #65291
- snippetVariables test の厳密な null チェックを有効にする PR #65236
- SplitView test の厳密な null チェックを有効にする PR #65307
- テーマ/アイコン テーマ フィルターの後にスペースを追加 PR #64745
- GridView test の厳密な null チェックを有効にする PR #65305
- ダーティ状態が上部の境界線で強調表示されている場合、タブの閉じるボタンを完全に非表示にする PR #64718
- Dipen Ved (@vedipen)
- @vemoo: 名前付き複数行問題パターン解析を修正 PR #65840
- Vladimir Kotikov (@vladimir-kotikov):
git pull
を実行する前に変更を自動的にスタッシュするオプションを追加 PR #59849 - Jeremy Shore (@w9jds): #57910 を修正 - 自動フェッチ タイムアウトの設定を追加 PR #59988
- Matthew Walinga (@walinga): stage line cmd を使用するときに空の最終行の削除をステージング PR #59974
- Yisrael Veller (@YisraelV)
vscode-eslint
への貢献
- Jonathan T L Lee (@Lee182): Issue 529、pnpm のサポートを追加 PR #572
- Loune Lam (@loune): disable-eslint の修正と改善 PR #588
language-server-protocol
への貢献
- Laurent Tréguier (@LaurentTreguier): 重複した label プロパティを削除 PR #638
- Jason Axelson (@axelson): changelog リンクを修正 PR #654
vscode-languageserver-node
への貢献
- Daniel McNab (@DJMcNab):
- Felix Becker (@felixfbecker): package.json に repository.directory フィールドを追加 PR #439
- Laurent Tréguier (@LaurentTreguier): リソース スコープを常に使用しない構成を修正 PR #446
- Aleksey Kladov (@matklad): readme で
npm run symlink
について言及 PR #452
debug-adapter-protocol
への貢献
- Ben Jackson (@puremourning): 実装リストに vimspector を追加 PR #21
- Sean Allred (@vermiculus): 概要のさまざまなタイプミスを修正 PR #22
vscode-vsce
への貢献
- Alexander (@usernamehw): コンソール メッセージに色を追加 PR #324
vscode-json-languageservice
への貢献
vscode-css-languageservice
への貢献
- Krister Kari (@kristerkari): :export ブロック内の不明なプロパティに対して警告しない PR #137
- Simon Chan (@yume-chan)
- Matthew Dean: Less ルート関数、ルックアップ、匿名ミックスインのサポート PR #135
vscode-html-languageservice
への貢献
- Liam Newman (@bitwiseman): 1.9.0-beta1 に更新 PR #43
vscode-generator-code
への貢献
- Aurélien Pupier (@apupier): markdownLint ガイドラインに従って改行 #154 PR #155
vscode-recipes
への貢献
- Alan Agius (@alan-agius4): docs: ng test コマンドを更新 PR #179
- Bryan Chapel (@bryanchapel): README.md を更新 PR #176
- @CannibalKush: angular フローの変更 PR #177
- zhan ishzhanov (@janat08): JEST レシピの引数を分割 PR #174
localization
への貢献
600人以上のCloud + AI LocalizationコミュニティメンバーがMicrosoft Localization Community Platform (MLCP) を利用しており、Visual Studio Codeには100人以上のアクティブなコントリビューターがいます。
新しい翻訳の提供、翻訳への投票、またはプロセス改善の提案など、皆様からの貢献に感謝いたします。
こちらはコントリビューターのスナップショットです。コントリビューター名リストを含むプロジェクトの詳細については、プロジェクトサイト(https://aka.ms/vscodeloc)をご覧ください。
- ブルガリア語: Любомир Василев。
- チェコ語: Samuel Tulach。
- デンマーク語: Johan Fagerberg。
- オランダ語: Jos Verlinde,Eric Algera。
- フィンランド語: Petri Niinimäki, Valtteri Vatanen。
- フランス語: Mohamed Sahbi, Thomas Gouthière。
- ドイツ語: Frank Lindecke,Hans Meiser,Jakob von der Haar,Sebastian Seidl。
- ヘブライ語: Kyle Orin。
- ヒンディー語: Satish Yadav,nirav adatiya,shaswat rungta,Dhanvi Kapila。
- ハンガリー語: Péter Nagy。
- 中国語 (簡体字): 福永 叶, Xiangrui Kong, Licheng Ren, Young Bige, 文 陈, Y F, 彦佐 刘, 九鼎 谭。
- インドネシア語: Azhe Kun。
- イタリア語: Michael Longo。
- 日本語: nh,Masakazu TENMYO, 裕子 知念。
- 韓国語: SeungJin Jeong。
- ノルウェー語: Stephan Eriksen。
- ポーランド語: grzegorz m, Jakub Jedryszek。
- ポルトガル語 (ブラジル): Bruno Talanski, Alan Willian, Letticia Nicoli, Alessandro Fragnani, Cynthia Zanoni。
- ポルトガル語 (ポルトガル): Vitor Barbosa。
- スペイン語: Engel Aguilar, José María Aguilar, julian3xl, Alvaro Enrique Ruano, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta。
- タミル語: Mani M。
- トルコ語: Muhammed Emin TİFTİKÇİ。
- ウクライナ語: Did Kokos。
- ベトナム語: Việt Anh Nguyễn。