2018年7月 (バージョン 1.26)
アップデート 1.26.1: このアップデートでは、以下の問題に対処しています。
ダウンロード: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball
Visual Studio Code 2018年7月リリースへようこそ。このバージョンには多くの重要なアップデートが含まれており、皆様に気に入っていただけることを願っています。主なハイライトをいくつかご紹介します。
- ブレッドクラム - ブレッドクラムナビゲーションを使用すると、ワークスペース内のシンボルやファイルにジャンプできます。
- 問題パネルからのクイックフィックス - 警告やエラーを確認しながらコード修正を適用します。
- Windows ユーザーセットアップ - Windows セットアップ中に管理者権限が不要になりました。
- ターミナル列選択 - Alt+クリックで統合ターミナル内のテキストブロックを選択します。
- 不足しているインポートをすべて追加 - JavaScript/TypeScript ファイル内の不足しているインポートをすべて追加する単一のアクション。
- JSX タグ補完 - HTML と同様に JavaScript/TypeScript で JSX タグを操作します。
- より優れた JS/TS エラー報告 - 関連するソースコードへのリンクを含む、簡潔で明確なメッセージ。
- 改善された拡張機能検索 - Marketplace クエリをフィルタリングして、必要な拡張機能を見つけます。
- 拡張機能パックの管理の見直し - 拡張機能パックを単一のユニットとして、または個々の拡張機能として管理します。
- プレビュー: 設定エディター - 豊富な設定の説明表示、「目次」がスクロールを追跡します。
これらのリリースノートをオンラインで読む場合は、アップデート ( code.visualstudio.com 上) にアクセスしてください。
クラウドデベロッパーアドボケートのBrian Clarkによる、この 1.26 リリースのハイライトビデオもご覧ください。
リリースノートは、VS Code の注力分野に関連する以下のセクションで構成されています。さらに、いくつかのアップデートをご紹介します。
- ワークベンチ - 新しい [表示] メニューレイアウト、相対パスのコピーアクション、オフラインモード。
- 統合ターミナル - 改善された複数行サポート、レンダリングの改善。
- 言語 - 名前付きインポートから名前空間インポートへの変換、JSX の折りたたみ。
- デバッグ - 改善された停止セッションとスマートステップデバッグ。
- プレビュー機能 - Windows および Linux 用のテーマ対応のカスタムツールバーとメニューバー。
- 拡張機能の作成 - QuickInput API、extensionPack 宣言、webview タイトルバーアイコン。
Insiders: 最新機能をいち早く試してみたいですか?毎晩更新されるInsidersビルドをダウンロードして、最新のアップデートをすぐに試すことができます。また、Visual Studio Code の最新ニュース、アップデート、コンテンツについては、Twitter @code をフォローしてください!
ワークベンチ
ブレッドクラム
エディターのコンテンツの上にナビゲーションバーが表示されるようになりました。これはブレッドクラムと呼ばれています。ブレッドクラムは現在の場所を示し、シンボルやファイル間をすばやく移動できます。ブレッドクラムの使用を開始するには、[表示] > [ブレッドクラムを表示] コマンドを使用するか、breadcrumbs.enabled
設定で有効にします。
エディタータブ (デフォルト) を使用している場合、ブレッドクラムはエディタータイトルの下の別の行に表示されます。エディタータブを使用していない場合、ブレッドクラムはタイトルの横にインタラクティブなファイルパスとして表示されます。
ブレッドクラムは常にファイルパスを表示し、拡張機能の助けを借りて、カーソル位置までのシンボルパスを表示します。表示されるシンボルは、アウトラインビューや [シンボルへ移動] と同じであるため、既存の拡張機能はブレッドクラムでそのまま動作します。
ブレッドクラムの外観はカスタマイズできます。パスが非常に長い場合、またはファイルパスまたはシンボルパスのいずれかのみに関心がある場合は、breadcrumbs.filePath
および breadcrumbs.symbolPath
設定を使用できます。どちらも on
、off
、および last
をサポートしており、パスのどの部分を表示するかを定義します。
ブレッドクラムを操作するには、[ブレッドクラムにフォーカス] コマンドを使用するか、⇧⌘. (Windows, Linux Ctrl+Shift+.) を押します。これにより、最後の要素が選択され、兄弟ファイルまたはシンボルに移動できるドロップダウンが開きます。← (Windows, Linux Left) および → (Windows, Linux Right) キーボードショートカットを使用して、現在の要素の前後の要素に移動します。ドロップダウンが表示されたら、単に入力を開始します。一致するすべての要素が強調表示され、最適な一致が選択されて、すばやくナビゲーションできます。
ピッカーなしでブレッドクラムを操作することもできます。⇧⌘; (Windows, Linux Ctrl+Shift+;) を押して最後の要素にフォーカスし、← (Windows, Linux Left) および → (Windows, Linux Right) を使用してナビゲートし、Space を使用してエディターで要素を表示します。
問題パネルのクイックフィックス
問題パネルからクイックフィックスを適用できるようになりました。問題エントリにマウスカーソルを合わせるか選択すると、クイックフィックスを示す電球が表示されます。クイックフィックスは、電球をクリックするか、問題エントリのコンテキストメニューを開くことで適用できます。
注: 電球インジケーターは、クイックフィックスを提供する拡張機能が、クイックフィックスに関連付けられた診断情報を提供する場合にのみ表示されます。
Windows ユーザーセットアップ
前回のリリースでお知らせしたように、Windows ユーザーセットアップパッケージが安定版で利用可能になりました。ユーザーセットアップのインストールには、ユーザーの Local AppData (LOCALAPPDATA) フォルダーの下にインストールされるため、管理者権限は必要ありません。ユーザーセットアップは、よりスムーズなバックグラウンド更新エクスペリエンスも提供します。
システム全体の Windows セットアップを現在使用している場合は、ユーザーセットアップをインストールするように求められます。今後はユーザーセットアップを使用することをお勧めします。移行中にすべての設定と拡張機能が保持されるのでご安心ください。インストール中に、システム全体のセットアップをアンインストールするように求められます。
グリッド: 最小化されたエディターの自動最大化
前回のマイルストーンでグリッドエディターレイアウトを導入した際に失われた機能の 1 つは、エディターが最小化された状態でフォーカスすると自動的に最大化される機能でした。この機能は以前と同様に動作するようになりました。
注: [表示: エディターグループを最大化] (workbench.action.minimizeOtherEditors
) を使用してアクティブなエディターを常に最大化したり、[表示: エディターグループのサイズをリセット] (workbench.action.evenEditorWidths
) を使用してすべてのエディターサイズをリセットしたりできます。
[表示] メニューの整理
[表示] メニューが非常に大きくなっていたため、多くのエントリを個別の [外観] サブメニューに移動して整理することにしました。
相対パスのコピー
VS Code には、ファイルの絶対パスをクリップボードにコピーするアクション (⌘K ⌥⌘C (Windows Shift+Alt+C, Linux Ctrl+K Ctrl+Alt+C)) が常にありました。ワークスペースフォルダーのルートに対する相対ファイルパスをコピーする新しいアクション [相対パスのコピー] (⌘K ⇧⌥⌘C (Windows Ctrl+K Ctrl+Shift+C, Linux Ctrl+K Ctrl+Shift+Alt+C)) が追加されました。
注: このアクションには、コンテキストメニュー (たとえば、タブまたはファイルエクスプローラー内のファイル) から、メニューを開く前に Shift
キー (macOS では Alt
キー) を押したままにすることでアクセスできます。
カスタムビュー: ファイルリソースの装飾
ファイルリソースを表示するカスタムビューに、ファイル装飾 (Git、問題) が表示されるようになりました。設定 explorer.decorations.colors
および explorer.decorations.badges
を使用してこれらを無効にすることができます。これらの設定は、ファイルエクスプローラー、[開いているエディター]、およびカスタムビューで無効になります。
package.json から npm スクリプトを実行
以下に示すように、package.json
ファイル内の npm スクリプトをホバーまたはコンテキストメニューから実行できるようになりました。
フォルダー URI を開く
URI の FileSystemProvider
を提供する拡張機能がある場合、VS Code で URI をフォルダーとして開くことができるようになりました。これを行うための新しいコマンドライン引数 --folder-uri
を導入しました。
次の CLI コマンドは、RemoteHub 拡張機能がインストールされている場合、VS Code GitHub リポジトリをフォルダーとして開きます。
code --folder-uri remotehub://github.com/microsoft/vscode
高速レンダリング
起動時に、基本的なワークベンチレイアウトが以前よりはるかに高速に復元されるようになりました。復元順序は、アクティビティバー、サイドバー、ステータスバー、ヘッダーとアイコン、そしてエクスプローラーとエディター領域が順に表示されます。
高速レンダリングは、空のキャンバスを見ている時間を短縮するため、体感パフォーマンスを向上させることを目的としています。レンダリングパフォーマンスを向上させるためのアイデアがさらにあり、皆様からのフィードバックをお待ちしております。
出力パネル
VS Code のメインプロセス、ウィンドウプロセス、および共有プロセスにはそれぞれ独自のログチャネルがあり、ログレベルが "Trace" に設定されている場合に送信されるテレメトリイベントを表示できるようになりました。すべてのテレメトリイベントに共通するデータは、簡潔にするためにここでは表示されません。各テレメトリイベントの完全なペイロードは、[開発者: ログファイルを開く...] コマンドからアクセスできる telemetry.log
という名前の個別のログファイルに記録されます。
オフラインモード
オンラインアクセスが必要な機能を明示的に呼び出す場合を除き、VS Code からの送信ネットワークリクエストを一切望まないユーザーもいます。このオフラインモードをサポートするために、拡張機能の自動更新チェック、A/B テストの設定クエリ、オートコンプリート用のオンラインデータの取得などの機能をオフにする新しい設定を追加しました。
ネットワークリクエストを行う VS Code 機能を制御するための設定の完全なリストを以下に示します。
update.mode
update.showReleaseNotes
extensions.autoupdate
extensions.autoCheckUpdates
extensions.showRecommendationsOnlyOnDemand
workbench.settings.enableNaturalLanguageSearch
workbench.enableExperiments
telemetry.enableTelemetry
telemetry.enableCrashReporter
git.autofetch
npm.fetchOnlinePackageInfo
アクセシビリティの改善
キーボードナビゲーション、スクリーンリーダーのサポート、および色のコントラストを中心に、多数のアクセシビリティの問題を修正しました。完全なリストはこちらにあります。
統合ターミナル
列選択
統合ターミナル内で Alt+クリック
を使用して列選択がサポートされるようになりました。
改善された複数行サポート
ターミナルで単語をダブルクリックして選択すると、複数行に分割された単語が選択されるようになりました。
フロントエンドとバックエンドが同期されるようになりました
統合ターミナルに入ってくるデータストリームが、バックエンドの疑似ターミナル/シェルプロセスと同期されるようになりました。これは、ターミナルに入ってくるデータが UI スレッドをフラッディングして応答しなくなることがなくなり、SIGINT (Ctrl+C) が常に応答し、time
コマンドが正確な結果を返す必要があることを意味します。
動的テクスチャアトラス
統合ターミナルは、キャンバスレンダリングに「動的テクスチャアトラス」を使用するようにデフォルト設定されるようになりました。これにより、ターミナルで使用されるキャッシュ戦略が、文字グリフを格納するように変更されます。デフォルトの背景上のグリフの固定セットではなく、背景に関係なく、必要に応じてグリフがテクスチャアトラスに追加されるようになりました。これにより、最初のターミナルの起動時間と、デフォルトの背景を使用していない文字のレンダリング時間が短縮され、全体的なレンダリングパフォーマンスが向上するはずです。
これは、xterm.js へのアップストリームコミュニティコントリビューションとして提供されました。
言語
TypeScript 3.0
VS Code には TypeScript 3.0.1 が同梱されるようになりました。このメジャーアップデートでは、プロジェクト参照、タプルに対するより優れたサポート、その他の言語およびツール機能が導入されています。TypeScript 3.0 の詳細については、こちらをご覧ください。
より優れたエラー報告
TypeScript チームは、JavaScript および TypeScript のエラーメッセージをよりスマートで明確にするために多くの作業を行ってきました。一部のエラーメッセージには、ソースコード内の関連する場所へのリンクが含まれるようになりました。
ユニオンやその他の複雑な型のメッセージも、より簡潔で役立つようになりました。たとえば、JSX の単純な型エラーでは、次のような複雑なエラーメッセージが生成されることがありました。
TypeScript 3.0 のおかげで、VS Code 1.26 ではエラーがはるかに読みやすくなっています。
JSX タグ補完
JavaScript または TypeScript ファイルで >
を入力すると、JSX タグが自動的に閉じられるようになりました。
この動作は、VS Code が HTML ファイルですでに提供していたものと一致しています。タグの自動閉じを無効にするには、"javascript.autoClosingTags": false
および "typescript.autoClosingTags": false
を設定します。
[不足しているインポートをすべて追加] クイックフィックス
[不足しているインポートを追加] クイックフィックスを、JavaScript/TypeScript ファイル内の不足しているすべてのインポートに適用できるようになりました。
このクイックフィックスは、単一の潜在的な定義を持つシンボルに対してのみインポートを追加します。現在のプロジェクトにシンボルの潜在的な定義が複数ある場合 (たとえば、Button
というシンボルをエクスポートする 2 つの異なるファイルがある場合)、個々のエラーをクイックフィックスし、目的の特定のインポートを選択する必要があります。
JavaScript ファイルでこのクイックフィックスを使用するには、セマンティックチェックを有効にします。
JSX の折りたたみ
構文認識折りたたみを使用すると、JSX タグを折りたたむことができるようになりました。
名前付きインポートと名前空間インポート間の変換
2 つの新しいリファクタリングにより、JavaScript および TypeScript で名前付きインポートと名前空間インポートをすばやく変換できます。
jsconfig.json および tsconfig.json プロジェクトファイル内のクリック可能なリンク
プロジェクト参照パスを Ctrl
クリック (macOS では Cmd+クリック
) することで、jsconfig.json
および tsconfig.json
プロジェクト参照をすばやくナビゲートします。
extends
パスもクリック可能になりました。
デバッグ
改善されたデバッグ停止の動作
以前のリリースでは、[デバッグ: 停止] アクション ([デバッグ] ツールバーにあります) は、デバッグ対象とその子プロセスを常に即座に強制終了し、デバッグ対象に正常にクリーンアップする機会を与えませんでした。一部のユーザーは、デバッグセッションを停止した後で手動でクリーンアップする必要があったため、この動作を好みませんでした。
このリリースでは、[デバッグ: 停止] アクションを次の方法で改善しました。
-
[停止] を最初に押すと、デバッグ対象はすぐに強制終了されなくなりましたが、正常にシャットダウン (および必要に応じてすべてをクリーンアップ) するように要求されます。
-
シャットダウンコードにブレークポイント (または問題) がない場合、デバッグ対象とデバッグセッションは終了します。ユーザーは、以前のバージョンの VS Code との動作の違いに気付かないでしょう。
-
ただし、デバッガーがシャットダウンコードでブレークポイントにヒットした場合、またはデバッグ対象が適切に終了しない場合、デバッグセッションは終了しません。
-
この場合、[停止] ボタンをもう一度押すと、デバッグ対象が強制終了されます。赤い [停止] ボタンを押してもデバッグセッションが終了しない場合は、もう一度ボタンを押してデバッグ対象を強制的にシャットダウンしてください。
注: この機能は、実装を選択したデバッガー拡張機能でのみサポートされています。現在、これは組み込みの Node.js デバッガーのみです。他のデバッグ拡張機能もまもなくこの機能をサポートする予定です。
Node/Chrome デバッグのスマートステップ動作の変更
以前は、"smartStep": true
にすると、Node.js デバッガーがソースマップのないソースコードで停止しなくなっていました。これは、次の 2 つの方法で発生する可能性があります。
- ソースマップがまったくないファイル (トランスパイルされていないソースコードまたは node モジュールに同梱されている .js ファイル)。
- ソースマップがあるトランスパイルされたファイルですが、マップされていない個々の行があります (async/await などの一部の機能をダウンコンパイルするときに TypeScript が挿入する追加の行)。
VS Code 1.26 では、"smartStep": true
は 2 番目のタイプ、つまりソースマップに欠落している行にのみ影響します。これで、TS async/await コードをスキップしながら、.js ファイルにステップインできるようになります。
古いスマートステップの動作があまりにも強引すぎることに気付いたため、これを変更しました。挿入されたコードをスキップするのは通常は正しいですが、最初のシナリオでスキップするのは一部のプロジェクトとユーザーにとってのみ意味があります。さらに、launch.json
構成ファイルの skipFiles
オプションを使用すると、ファイル全体の場合をより適切にカバーできます。これは、ファイルをより正確にターゲットにでき、高速であるためです。
したがって、smartStep
を使用していて、デバッガーがソースマップのないファイルを自動的にスキップしなくなったことに気付いた場合は、skipFiles
を使用して以前の動作に戻すことができます。node_modules、内部ノードファイル、またはステップスルーしたくないその他のファイルでソースコードをスキップするように skipFiles
を構成する方法の例については、[興味のないコードをスキップ] を参照してください。
拡張機能
拡張機能検索の IntelliSense
このリリースでは、拡張機能検索フィールドに IntelliSense オートコンプリートを追加することで、拡張機能をより簡単に検索できるようになりました。これにより、カテゴリやインストール状態などの項目に基づいて結果をフィルタリングしたり、名前、評価、またはインストール数で結果をソートしたりするために、拡張機能検索を絞り込むのに役立ちます。'@' または ⌃Space (Windows, Linux Ctrl+Space) を入力して、サポートされているクエリパラメーターの候補をトリガーします。
拡張機能パックの管理
拡張機能パックの管理がこのリリースで大幅にスムーズになりました。拡張機能パックは、常に単一のパックとしてインストール、アンインストール、有効化、または無効化されます。また、拡張機能パック全体をアンインストールまたは無効化しなくても、拡張機能パックに属する拡張機能をアンインストールまたは無効化できるようになりました。
拡張機能の詳細を開くと、どの拡張機能が拡張機能パックにバンドルされているかを示す新しい [拡張機能パック] タブもあります。
注: これには、拡張機能パックによる採用が必要です。詳細については、[拡張機能パックの管理の見直し] を参照してください。
コマンドラインからの拡張機能の無効化
新しい引数 --disable-extension
を使用して、コマンドラインから拡張機能を無効にできるようになりました。
code <folder_path> --disable-extension ms-python.python
-ms-python.python
拡張機能を無効にしてフォルダーを開きます。code <folder_path> --disable-extension ms-python.python --disable-extension ms-dotnettools.csharp
-ms-python.python
およびms-dotnettools.csharp
拡張機能を無効にしてフォルダーを開きます。
プレビュー機能
プレビュー機能はリリース準備が整っていませんが、使用するのに十分な機能があります。開発中の早期フィードバックをお待ちしております。
新しい設定エディター
このマイルストーンでは、設定を編集するための GUI の作業を継続しました。まだプレビュー段階ですが、試してみたい場合は、[基本設定: 設定を開く (プレビュー)] コマンドで開くことができます。フィードバックをお待ちしております。こちらの GitHub issue に残してください。
先月からの新しい変更の一部は次のとおりです。
- ヘッダー UX が更新および整理され、変更された設定のみを表示するアクションと JSON エディターを開くアクションが右側の
...
メニューの下に移動されました。 - 左側の目次がデフォルトで折りたたまれ、スクロールすると展開して現在のセクションが表示されるようになりました。
- 設定の説明が Markdown としてレンダリングされるようになりました。一部の設定には、関連ドキュメントへの外部リンクがあり、他の設定への参照は、設定にスクロールするクリック可能なリンクになりました。enum 型の設定の
enumDescriptions
が、設定の説明の後 (および JSON エディターでも) に表示されるようになりました。
files.exclude
およびsearch.exclude
設定の新しいコントロールにより、グロパターンを簡単に追加または削除したり、現在のスコープに適用されているパターンを確認したりできます。
- 設定エディターのコントロールは、テーマ対応になりました。[新しいテーマカラー] の下の新しいテーマカラーを参照してください。
Windows/Linux 用のカスタムタイトルバーとメニュー
このマイルストーンでは、カスタムタイトルバーが有効になっている場合の Windows および Linux のカスタムメニューを改善しました。まだプレビュー段階ですが、settings.json
で window.titleBarStyle
を custom
に設定して試すことができます。
主なハイライトをいくつかご紹介します。
-
メニューがテーマ対応になりました。[新しいテーマカラー] の下の新しいテーマカラーを参照してください。
-
メニューとのキーボードおよびマウスのインタラクションがより一貫性のあるものになりました。以前は、メニューを不明瞭にするフォーカスインジケーターがいくつかありました。現在、メニューははるかに馴染みのある方法で機能します。
-
大きなズームレベルが必要な場合やスクリーンリーダーを使用している場合の操作性を向上させるために、多くのアクセシビリティの問題が解決されました。
新しいメニューとタイトルバーの改善を継続し、workbench-title
または workbench-menu
ラベルでタグ付けされた問題に対処していきます。
拡張機能の作成
QuickInput API
QuickPick
および InputBox
API が安定版になりました。これらにより、既存の showQuickPick
および showInputBox
API よりも柔軟なユーザー入力の収集が可能になります。サンプル拡張機能に QuickInput API の使用例があります。
拡張機能パックの見直し
拡張機能パックの定義では、package.json
で extensionDependencies
の代わりに extensionPack
という新しいプロパティを使用するようになりました。これは、extensionDependencies
が主に拡張機能間の機能的な依存関係を定義するために使用され、依存する拡張機能をアンインストールまたは無効にせずに拡張機能の依存関係をアンインストールまたは無効にすることを防ぐためです。
拡張機能パックは、バンドルされた拡張機能との機能的な依存関係を持つべきではなく、パックとは独立して管理できる必要があります。以下は、いくつかのデバッガー拡張機能をバンドルする拡張機能パックを定義する extensionPack
エントリの例です。
"extensionPack": [
"andreweinand.mock-debug",
"ms-vscode.mono-debug",
"ms-vscode.cpptools",
"ms-dotnettools.csharp",
"vscjava.vscode-java-debug"
]
これにより、ユーザーは拡張機能パックとそのバンドルされた拡張機能をはるかに簡単に管理できるようになります。[拡張機能パックの管理] を参照してください。
より優れたワークスペース編集
WorkspaceEdit
および applyEdit
API が拡張され、拡張機能がファイルを作成、名前変更、および削除できるようになりました。以前は、テキスト編集のみが可能でした。新しい API により、より優れたリファクタリングが可能になります。たとえば、クラス名が変更されたときにファイル名を変更するなどです。
新しいテーマカラー
ブレッドクラムの新しいテーマカラーがあります。
breadcrumb.foreground
: ブレッドクラムアイテムの色。breadcrumb.focusForeground
: フォーカスされたブレッドクラムアイテムの色。breadcrumb.activeSelectionForeground
: 選択されたブレッドクラムアイテムの色。breadcrumbPicker.background
: ブレッドクラムアイテムピッカーの背景色。
新しい設定エディターのコントロールはテーマ対応になりました。
settings.headerForeground
: セクションヘッダーまたはアクティブタイトルの前景色。settings.modifiedItemForeground
: 変更された設定インジケーターの前景色。settings.inactiveSelectedItemBorder
: 設定リストにフォーカスがない場合に、選択された設定行の境界線の色。settings.dropdownBackground
: ドロップダウンの背景。settings.dropdownForeground
: ドロップダウンの前景色。settings.dropdownBorder
: ドロップダウンの境界線。settings.checkboxBackground
: チェックボックスの背景。settings.checkboxForeground
: チェックボックスの前景色。settings.checkboxBorder
: チェックボックスの境界線。settings.textInputBackground
: テキスト入力ボックスの背景。settings.textInputForeground
: テキスト入力ボックスの前景色。settings.textInputBorder
: テキスト入力ボックスの境界線。settings.numberInputBackground
: 数値入力ボックスの背景。settings.numberInputForeground
: 数値入力ボックスの前景色。settings.numberInputBorder
: 数値入力ボックスの境界線。
Windows および Linux のカスタムメニューがテーマ対応になりました。
menu.background
: メニューおよびコンテキストメニューの背景。menu.foreground
: メニューおよびコンテキストメニューの前景色。menu.selectionBackground
: メニューおよびコンテキストメニューで選択された項目の背景。menu.selectionForeground
: メニューおよびコンテキストメニューで選択された項目の前景色。menu.selectionBorder
: メニューおよびコンテキストメニューで選択された項目の境界線。menubar.selectionBackground
: メニューバーで選択されたトップレベルメニューの背景。menubar.selectionForeground
: メニューバーで選択されたトップレベルメニューの前景色。menubar.selectionBorder
: メニューバーで選択されたトップレベルメニューのボーダー。
デフォルトテーマカラーの更新
アクセシビリティの向上の一環として、カラーコントラストの要件を満たすように、いくつかのデフォルトテーマの色を更新しました。カラーコントラスト修正の完全なリストはこちらにあります。
DefinitionLink
定義プロバイダーは、DefinitionLink
オブジェクトを返すことができるようになりました。定義リンクは、通常のロケーション定義よりも追加のメタデータを提供し、定義シンボルの範囲を含みます。
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
vscode.languages.registerDefinitionProvider('markdown', new LineLinkDefinitionProvider());
}
export class LineLinkDefinitionProvider implements vscode.DefinitionProvider {
async provideDefinition(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken
): Promise<vscode.DefinitionLink[]> {
const wordRange = document.getWordRangeAtPosition(position, /<\d+>/);
if (wordRange.isEmpty) {
return [];
}
const targetLine = +document.getText(wordRange).slice(1, -1);
return [
{
// Definition location
targetRange: new vscode.Range(targetLine - 1, 0, targetLine, 0),
targetUri: document.uri,
// Range of the defining symbol
originSelectionRange: new vscode.Range(
wordRange.start.translate({ characterDelta: 1 }),
wordRange.end.translate({ characterDelta: -1 })
)
}
];
}
}
デバッグ拡張機能
デバッグアダプタープロトコルの新しいホーム
デバッグアダプタープロトコルを以前の場所から、新しいウェブサイトhttps://microsoft.github.io/debug-adapter-protocolと、対応するリポジトリhttps://github.com/microsoft/debug-adapter-protocolに移動しました。
関連ブログ記事「デバッグアダプタープロトコルの新しいホーム」では、移行の背景と追加の詳細について説明しています。
古い場所https://raw.githubusercontent.com/Microsoft/vscode-debugadapter-node/main/debugProtocol.jsonからDAP JSONスキーマをプログラムで利用しているすべてのユーザーは、ソースコードを新しい場所に更新する必要があります。
https://microsoft.github.io/debug-adapter-protocol/debugAdapterProtocol.json
次の2つのリリース(8月と9月)では、古い場所のスキーマを最新の状態に保ちますが、10月には削除する予定です。
デバッグアダプタープロトコルの新しいterminate
リクエスト
デバッグ対象の正常なシャットダウンをサポートするために、新しいterminate
リクエストと対応するsupportsTerminateRequest
機能がデバッグアダプタープロトコルに追加されました(上記で説明)。デバッグアダプターがsupportsTerminateRequest
機能に対してtrue
を返す場合、VS Codeはデバッグセッションを停止するときに、最初にterminate
リクエストをデバッグアダプターに送信します。デバッグアダプターでのterminate
リクエストの実装は、デバッグ対象に自身の終了を要求する必要があります。Unixベースのオペレーティングシステムでは、これはSIGINT
シグナルをデバッグ対象に送信することで簡単に実現できます。
Webviewアイコン
Webviewは、タブバーとエディターを[開く]ビューに表示されるカスタムアイコンを提供できるようになりました。
import * as vscode from 'vscode';
import * as path from 'path';
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.commands.registerCommand('catCoding.start', () => {
const panel = vscode.window.createWebviewPanel('catCoding',
"Coding Cat", vscode.ViewColumn.One, { });
panel.iconPath = vscode.Uri.file(path.join(context.extensionPath, 'media', 'cat.png'));
});
}
ターミナルアクセスAPI
ターミナルアクセスAPIが安定版になりました。これにより、拡張機能は、拡張機能が作成したかどうかに関係なく、Terminal
オブジェクトにアクセスできます。
export namespace window {
export const terminals: ReadonlyArray<Terminal>;
export const onDidOpenTerminal: Event<Terminal>;
}
URIハンドラーAPI
URIハンドラーAPIが安定版になりました。これにより、拡張機能はシステム全体のURIを処理できます。
export interface UriHandler {
handleUri(uri: Uri): ProviderResult<void>;
}
export namespace window {
export function registerUriHandler(handler: UriHandler): Disposable;
}
onUri
アクティベーションイベントが付属しており、URIがオペレーティングシステムによって自身に向けられて開かれるたびに拡張機能をアクティブにします。
リファレンス実装については、Git拡張機能のGitProtocolHandlerを参照してください。
Node.jsのアップデート
VS Codeが実行されているElectronのバージョンが更新され、VS Codeに同梱されているNode.jsも7.9から8.9に更新されました。すべての拡張機能は、この新しいバージョンのNode.jsで実行されるようになります。
拡張機能に影響を与える可能性のある変更がいくつかあります。
natives
nodeモジュールは動作しなくなりました(#47569を参照)。- レガシーデバッグプロトコルと
--debug
フラグはサポートされなくなりました(#55907を参照)。 - stdioをトランスポートとして使用するNode.jsで記述された言語サーバーでVS Code 1.26で問題が発生した場合、LSP クライアントおよびサーバーライブラリを使用する拡張機能作成者向けの修正は、トランスポートを
TransportKind.stdio
の代わりにTransportKind.ipc
に切り替えて、拡張機能を再公開することです。
提案された拡張機能 API
すべてのマイルストーンには、新しい提案されたAPIが付属しており、拡張機能の作成者はそれらを試すことができます。いつものように、フィードバックをお待ちしております。提案されたAPIを試すには、次の手順を実行する必要があります。
- 提案されたAPIは頻繁に変更されるため、Insidersビルドを使用する必要があります。
- 拡張機能の
package.json
ファイルに次の行が必要です:"enableProposedApi": true
。 - vscode.proposed.d.tsファイルの最新バージョンをプロジェクトにコピーします。
提案されたAPIを使用する拡張機能を公開することはできません。次のリリースで破壊的な変更を加える可能性があり、既存の拡張機能を破壊することは決して望んでいません。
TextSearchProvider、FileSearchProvider、FileIndexProvider
拡張機能がVS Codeでテキスト検索とファイル検索を実装できるようにするAPIのセットを追加しました。
TextSearchProvider
は、ユーザーが検索ビューを使用するか、拡張機能が新しいAPI workspace.findTextInFiles
を使用するときに呼び出されます。テキスト一致をprogress
コールバックを通じて段階的に返します。
ファイル検索を実装するには、一般的な2つのユースケースをカバーする2つの方法があります。FileIndexProvider
またはFileSearchProvider
を使用します。FileIndexProvider
は、ユーザーがクイックオープンを開くと一度呼び出され、ワークスペース内のすべてのファイルの配列を返す必要があります。VS Codeは、このリスト内を検索し、独自のファジーマッチングロジックを適用して、ユーザーに正しい結果セットを返します。拡張機能がワークスペース内のすべてのファイルのリストを提供できる場合は、FileIndexProvider
を実装する方がファイル検索をサポートする簡単な方法です。
代わりに、拡張機能がユーザーの検索クエリを処理し、フィルター処理された結果の独自のリストを返す必要がある場合は、FileSearchProvider
を実装します。これは、ユーザーがクイックオープンでキーを押すたびに呼び出され、フィルター処理およびソートされたファイル一致のセットを返す必要があります。
export interface TextSearchProvider {
provideTextSearchResults(
query: TextSearchQuery,
options: TextSearchOptions,
progress: Progress<TextSearchResult>,
token: CancellationToken
): Thenable<void>;
}
export interface FileIndexProvider {
provideFileIndex(options: FileIndexOptions, token: CancellationToken): Thenable<Uri[]>;
}
export interface FileSearchProvider {
provideFileSearchResults(
query: FileSearchQuery,
options: FileSearchOptions,
token: CancellationToken
): Thenable<Uri[]>;
}
export namespace workspace {
export function registerTextSearchProvider(
scheme: string,
provider: TextSearchProvider
): Disposable;
export function registerFileIndexProvider(
scheme: string,
provider: FileIndexProvider
): Disposable;
export function registerFileSearchProvider(
scheme: string,
provider: FileSearchProvider
): Disposable;
}
findTextInFiles API
ワークスペース内のテキストパターンを検索できるようにする新しい提案されたAPIが追加されました。
export namespace workspace {
export function findTextInFiles(
query: TextSearchQuery,
options: FindTextInFilesOptions,
callback: (result: TextSearchResult) => void,
token?: CancellationToken
): Thenable<void>;
}
これは、ワークスペース内のファイルを検索するworkspace.findFiles
の対になるものです。
その他
Electronのアップデート
このリリースでは、Electron 1.7.12から2.0.5にアップデートしました。これにより、Chromiumのバージョンが58から61に、Node.jsが7.9から8.9にアップデートされました。
新しいドキュメント
ログポイントに関するブログ記事
Node.jsデバッグのログポイントと自動アタッチについては、Kennethの最近のブログ記事をご覧ください。ログポイントを使用すると、ソースコードを変更したり、デバッグセッションを中断したりせずに、ログ情報をすばやく出力できます。
IntelliCode FAQ
Python開発者の場合は、人工知能(AI)を使用してソフトウェア開発を強化する新しいツールであるIntelliCodeをご覧ください。IntelliCode拡張機能は、現在のソースコードコンテキストに基づいて最も関連性の高いオートコンプリートを推測するなど、PythonのIntelliSense向けのAI支援機能のセットを提供します。
注目すべき変更
- 53532:エディター:ファイルが既にロードされている場合、バックグラウンドでファイルへの変更をロードする
- 53586:Nodeデバッグ:自動アタッチモードが記憶されない
- 53022:読み取り専用のファイルのエディタータブの「読み取り専用」ラベル
- 48275:
resourceIsFile
コンテキストキーはサポートされなくなりました
謝辞
最後になりましたが、VS Codeをさらに良くするためにご協力いただいた以下の皆様に、心から感謝申し上げます!
vscode
への貢献
- @alexr00:#48714修正:ファイルのローカルケースからgitケースへの変換を追加 PR #49397
- Arjun Attam (@arjun27):webview select-allコマンドを追加 PR #54851
- Adit Bhatt (@avbhatt):無視されたリポジトリリストのサポートを追加 PR #47890
- @coolreader18:@param jsdocタグにパラメーター名の後にハイフンがある場合、プレビューアーの二重ダッシュを修正 PR #53365
- Geoffrey (@g3offrey):Node.jsでrequireパスを更新できるようにする PR #53964
- @HookyQR:大文字のスネークケースの単語部分の移動と削除を改善 PR #53470
- HUA Yang (@imhuay):#53590を修正 PR #54257
- Itamar (@itamark)
- Ivor Huang (@ivorhuang):プッシュ成功通知を実装 PR #47790
- Josh Beard (@jlbeard84):「ターミナルで開く」コマンドでOS固有のテキストを削除。 PR #53636
- Jongkuen Hong (@Jongkeun):「occuring」から「occurring」へのスペルミスを修正 PR #54239
- Josh Goldberg (@JoshuaKGoldberg):検索メニューでファイル検索文字列をトリミング PR #54625
- Leonardo Braga (@LeonardoBraga):「--enable-proposed-api」を拡張機能IDなしで「すべて有効にする」として処理 PR #52861
- Loic Nageleisen (@lloeki):コードコマンドインストール時の所有権を尊重する PR #46962
- Nikolas (@nikolasburk):アンダースコアとアスタリスクを囲みペアに追加 PR #55054
- Nilesh Kevlani (@njkevlani):#53372を修正 PR #53503
- Nick James (@omniomi):powershell文法を更新 PR #52956
- Ori Ashual (@oriash93):CLIからの拡張機能の更新のサポート PR #45533
- Pradeep Murugesan (@pradeepmurugesan)
- Ahmed Tarek (@pushqrdx):SCMバッジの問題#42940を修正 PR #43256
- Dániel Tar (@qcz):macOptionClickForcesSelectionメッセージを改善 PR #54264
- Ryuichi Inagaki (@ryu1kn):最初のコミットで実行した場合、「最後のコミットを元に戻す」でエラー PR #47578
- Sandy Armstrong (@sandyarmstrong):Xamarin .workbookファイルをmarkdownとして扱う PR #51167
- Guillaume Marcoux (@V-ed):紛らわしいStart from wordPartLeftコマンドIDを削除 PR #55492
- Walter M Barajas Jr (@wmb0117):リポジトリを手動で追加するオプションを追加 PR #48020
- Yogesh Mangaj (@yogeshmangaj):検索リストをフォーカスするコマンドを追加 PR #54196
- @zhuowei:[WIP] git:ステージング時にBOTH_ADDEDファイルで競合マーカーを検出 PR #50252
language-server-protocol
への貢献
- Luke Lau (@Bubba):階層型ドキュメントシンボルサポートをテキストドキュメントクライアント機能に追加 PR #538
- Qiming zhao (@chemzqm):coc.nvimを追加 PR #537
- Colin Rofls (@cmyr):specification.mdのタイプミスを修正 PR #499
- @khng300:C/C++/Objective-C用のLSPの実装としてcclsを追加 PR #525
- Michael T Lombardi (@michaeltlombardi):Puppet Language Server情報を更新 PR #509
- Mikhail Arkhipov (@MikhailArkhipov):CompletionItemにpreselectフィールドを追加 PR #515
- Andrey Kolomoets (@muffinmad):eglotを追加 PR #531
- Olivier FAURE (@PoignardAzur):specificationのマイナーなタイプミスを修正 PR #529
- Rafał Łasocha (@swistak35):servers.mdを更新 - 新しいruby言語サーバーを追加 PR #535
- Tyson Andre (@TysonAndre)
vscode-chrome-debug
への貢献
- Michael Crane (@mrcrane):切断時のWindowsでのChromeの強制終了時の競合状態 PR #703
- Todd Chaffee (@tchaffee):webpack devtoolsオプションに関するより明確なドキュメント。 PR #694
vscode-chrome-debug-core
への貢献
- @digeff
- @Pokute:URIエンコードされたソースマップ+テストのサポートを追加。 PR #344
- Raghav Katyal (@rakatyal)
vscode-vsce
への貢献
- Jimi (Dimitris) Charalampidis (@JimiC):.vscodeignoreのパターンマッチングを修正 PR #271
vscode-recipes
への貢献
- Fabien Allanic (@fallanic)
- Jesus Abarca (@jabas06):Angular CLIのバージョン6でデバッグが動作するように更新 PR #117
- @NileshParkhe83:Jestの問題 - SecurityError:localStorageは不透明なオリジンでは利用できません PR #120
- @NiloCK:#96 vue-cli 2.x / 3.xの指示を区別 PR #121
localization
への貢献
Transifex VS Codeプロジェクトチームには800人以上のメンバーがおり、毎月約100人のアクティブなコントリビューターがいます。新しい翻訳の提供、翻訳への投票、またはプロセス改善の提案など、皆様のご貢献に感謝いたします。
これは、今回のリリースのコントリビューターのスナップショットです。コントリビューター名リストを含むプロジェクトの詳細については、プロジェクトサイト(https://aka.ms/vscodeloc)をご覧ください。
- 中国語(簡体字): Joel Yang, Yusong, pluwen, Liu Dingming 刘丁明, hackereric, Simon Chan, 韦煊 王, gzponline, Ziming Wang。
- 中国語(繁体字): Duran Hsieh, Will 保哥, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin, MartinLau, Ben Tsai 蔡和恩, Alan Liu。
- フランス語: Antoine Griffard, Ludovic P, William Thibodeau, Adrien Clerbois, Alain BUFERNE。
- ドイツ語: Carsten Siemens, Carsten Kneip, Markus Hatvan, Väinämö Lumikero, Ettore Atalan, AlCalzone, Levin Rickert。
- イタリア語: Alessandro Alpi, Andrea Dottor, Emilie Rollandin, Riccardo Cappello, Aldo Donetti, Massimo。
- 日本語: 梶浦 智史, 貫山 雄一, 田嶋 俊哉, yoshioms, 中村 雄太。
- 韓国語: Helloyunho。
- ロシア語: Michel Ace。
- スペイン語: Alberto Poblacion, Julián Martínez, Alejandro Medina, José M. Aguilar, Carlos Mendible, Pedro Sanchez, Lio Fleishman。
- ボスニア語: Bahrudin Hrnjica。
- ブルガリア語: Любомир Василев。
- チェコ語: Ľuboš Uličný, Ľubomír Kováč, Frantisek Veris。
- オランダ語: Gerald Versluis, RubenJacobse, Armand Duijn, Dirk Doesburg, Maarten van Stam, Dean Wyns。
- 英語(イギリス): Matthew John Cheetham, Swotboy2000。
- フィンランド語: Feetu Nyrhinen, Petri Niinimäki, Make。
- ギリシャ語: Ioannis Paraskevopoulos, Theodore Tsirpanis。
- ハンガリー語: Dóczi Dominik。
- インドネシア語: Laurensius Dede Suhardiman, Wildan Mubarok, Riwut Libinuko, Bagus Ilman, Lundy Orlando。
- ノルウェー語: andreona, Daniel Bjørnbakk。
- ポーランド語: Patryk Brejdak, Sebastian Baran, Igor Śpiączka, Lukasz Woznicki。
- ポルトガル語(ブラジル): Lucas Miranda, Otacilio Saraiva Maia Neto, Roberto Fonseca, Marcelo Camargo, Marcelo Novaes, Victor Hugo Schmidt, Pedro Sereno, Rafael Oliveira, Danilo Dantas, Vitor Dutra Freire, Luan Moreno Medeiros Maciel, Fabio Correia。
- ポルトガル語(ポルトガル): Daniel Correia, Pavlo Zakharuk, António Santos, João Mata, Diogo Barros, Danilo Dantas。
- ルーマニア語: Schiriac Robert, Cornel Cocioaba, Dan Ichim, Alexandru Spinu, ovisan, Bogdan Mateescu。
- タミル語: Jeyanthinath Muthuram, Jam Station。
- ウクライナ語: Oleksandr, Fedir Gordiienko, Volodymyr Holovka。