に参加して、VS Code の AI 支援開発について学びましょう。

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 月リリースへようこそ。このバージョンには、気に入っていただけるであろう重要なアップデートがいくつか含まれています。主なハイライトをいくつかご紹介します。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。
また、Cloud Developer Advocate の Brian Clark による 1.26 リリースのハイライトビデオもご覧ください。

リリースノートは、VS Codeの重点分野に関連する以下のセクションにまとめられています。さらに詳しい更新は以下の通りです。

  • ワークベンチ - 新しい表示メニューレイアウト、相対パスのコピーアクション、オフラインモード。
  • 統合ターミナル - 複数行サポートの改善、レンダリングの改善。
  • 言語 - 名前付きインポートから名前空間インポートへの変換、JSX フォールディング。
  • デバッグ - セッション停止とスマートステップデバッグの改善。
  • プレビュー機能 - Windows および Linux 用のテーマ設定可能なカスタムツールおよびメニューバー。
  • 拡張機能の作成 - QuickInput API、extensionPack 宣言、webview のタイトルバーアイコン。

Insiders: 新しい機能をできるだけ早く見たいですか?毎日のInsidersビルドをダウンロードして、利用可能になり次第最新のアップデートを試すことができます。Visual Studio Codeの最新ニュース、アップデート、コンテンツについては、Twitterで@codeをフォローしてください!

Workbench

ブレッドクラム

エディターのコンテンツの上にナビゲーションバーが追加されました。これはブレッドクラムと呼んでいます。現在の場所を表示し、シンボルとファイル間を素早く移動できます。ブレッドクラムを使い始めるには、表示 > ブレッドクラムの表示 コマンドまたは breadcrumbs.enabled 設定で有効にします。

エディタータブを使用している場合(デフォルト)、ブレッドクラムはエディターのタイトルの下の別の行に表示されます。エディタータブを使用していない場合、ブレッドクラムはタイトルの横にインタラクティブなファイルパスとして表示されます。

Breadcrumbs enabled

ブレッドクラムは常にファイルパスを表示し、拡張機能の助けを借りて、カーソル位置までのシンボルパスも表示します。表示されるシンボルはアウトラインビューや「シンボルへ移動」と同じであるため、既存の拡張機能はブレッドクラムでもそのまま動作します。

ブレッドクラムの外観はカスタマイズできます。非常に長いパスを使用している場合や、ファイルパスまたはシンボルパスのいずれかのみに関心がある場合は、breadcrumbs.filePath および breadcrumbs.symbolPath 設定を使用できます。どちらも onofflast をサポートしており、パスのどの部分を表示するかを定義します。

ブレッドクラムを操作するには、ブレッドクラムにフォーカス コマンドを使用するか、⇧⌘. (Windows、Linux Ctrl+Shift+.) を押します。これにより最後の要素が選択され、兄弟ファイルまたはシンボルに移動できるドロップダウンが開きます。 (Windows、Linux ) および (Windows、Linux ) のキーボードショートカットを使用して、現在の要素の前または後の要素に移動します。ドロップダウンが表示されたら、入力を開始するだけで、一致するすべての要素がハイライトされ、最適な一致が選択されて素早くナビゲーションできます。

Breadcrumbs active

ピッカーを使用せずにブレッドクラムを操作することもできます。⇧⌘; (Windows、Linux Ctrl+Shift+;) を押して最後の要素にフォーカスし、 (Windows、Linux ) および (Windows、Linux ) を使用してナビゲートし、スペース を使用してエディターで要素を表示します。

問題パネルのクイックフィックス

問題パネルからクイックフィックスを適用できるようになりました。問題のエントリにカーソルを合わせるか選択すると、クイックフィックスを示す電球が表示されます。クイックフィックスは電球をクリックするか、問題のエントリのコンテキストメニューを開くことで適用できます。

Quick fixes

注: 電球インジケーターは、クイックフィックスを提供する拡張機能がクイックフィックスに関連付けられた 診断情報を提供する場合にのみ表示されます。

Windows 用ユーザーセットアップ

前回のリリースで発表された Windows 用ユーザーセットアップパッケージが stable で利用可能になりました。ユーザーセットアップのインストールには管理者権限は必要なく、インストール場所はユーザーのローカル AppData (LOCALAPPDATA) フォルダになります。ユーザーセットアップは、よりスムーズなバックグラウンド更新エクスペリエンスも提供します。

ユーザーセットアップをダウンロード

システム全体に適用される Windows セットアップの現在のユーザーである場合、ユーザーセットアップのインストールが促されます。今後はユーザーセットアップの使用をお勧めします。ご心配なく、すべての設定と拡張機能は移行中に保持されます。インストール中には、システム全体に適用されるセットアップをアンインストールするようにも促されます。

グリッド: 最小化されたエディターの自動最大化

前回のマイルストーンでグリッドエディターレイアウトを導入した際に失われた機能の 1 つに、エディターが最小化された状態のときにフォーカスすると自動的に最大化される機能がありました。この機能は以前と同様に動作するようになりました。

Grid maximize

注: 表示: エディターグループを最大化 (workbench.action.minimizeOtherEditors) で常にアクティブなエディターを最大化するか、表示: エディターグループのサイズをリセット (workbench.action.evenEditorWidths) ですべてのエディターのサイズをリセットできます。

表示メニューの整理

表示メニューが非常に大きくなっていたため、整理のために多くのエントリを別の外観サブメニューに移動しました。

View menu

相対パスをコピー

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 を使用して無効にできます。これにより、ファイルエクスプローラー、開いているエディター、およびカスタムビューで無効になります。

Custom view decorations

package.json から npm スクリプトを実行

package.json ファイル内の npm スクリプトを、以下に示すようにホバーから、またはコンテキストメニューから実行できるようになりました。

npm script hover

フォルダー URI を開く

その URI に FileSystemProvider を提供する拡張機能がある場合、VS Code で URI をフォルダーとして開くことができるようになりました。これを行うための新しいコマンドライン引数 --folder-uri を導入しました。

RemoteHub 拡張機能がインストールされている場合、次の CLI コマンドは VS Code GitHub リポジトリをフォルダーとして開きます。

code --folder-uri remotehub://github.com/microsoft/vscode

Open folder URI

高速レンダリング

起動時に、基本的なワークベンチレイアウトがはるかに高速に復元されるようになりました。復元順序は、アクティビティバー、サイドバー、ステータスバー、次にヘッダーとアイコン、そしてエクスプローラーとエディター領域が順次表示されます。

Rapid render

高速レンダリングは、空のキャンバスを見る時間を短縮することで、体感パフォーマンスを向上させることを目的としています。レンダリングパフォーマンスを向上させるためのアイデアが他にもあり、皆様からのフィードバックをお待ちしております。

出力パネル

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+クリックによる列選択がサポートされるようになりました。

Terminal column selection

複数行サポートの改善

ターミナルで単語をダブルクリックして選択すると、行にまたがる単語も選択されるようになりました。

フロントエンドとバックエンドの同期

統合ターミナルに入力されるデータストリームは、バッキングとなる擬似ターミナル/シェルプロセスと同期されるようになりました。これにより、ターミナルに入力されるデータが UI スレッドを溢れさせて応答不能になることがなくなり、SIGINT (Ctrl+C) は常に応答するようになり、time コマンドは正確な結果を返すはずです。

動的テクスチャアトラス

統合ターミナルは、キャンバスレンダリングに「動的テクスチャアトラス」をデフォルトで使用するようになりました。これにより、ターミナルが文字グリフを保存するために使用するキャッシュ戦略が変更されます。デフォルトの背景に固定されたグリフセットではなく、グリフは使用されている背景に関係なく、必要に応じてテクスチャアトラスに追加されるようになりました。これにより、最初のターミナル起動時間と、デフォルトの背景を使用しない文字のレンダリング時間が短縮され、全体的なレンダリングパフォーマンスが向上するはずです。

これは xterm.js への上流コミュニティ貢献として導入されました。

言語

TypeScript 3.0

VS Code には TypeScript 3.0.1 が搭載されるようになりました。このメジャーアップデートには、プロジェクト参照のサポート、タプルの改善されたサポート、その他の言語およびツール機能が含まれます。TypeScript 3.0 の詳細についてはこちらをご覧ください。

エラー報告の改善

TypeScript チームは、JavaScript および TypeScript のエラーメッセージをよりスマートで明確にするために多くの作業を行いました。一部のエラーメッセージには、ソースコード内の関連する場所へのリンクが含まれるようになりました。

Related locations showing in a diagnostic. Clicking on 'box.ts' will show the definition of 'width' in 'box'

ユニオン型やその他の複雑な型に関するメッセージも、より簡潔で役立つものになりました。例えば、JSX での単純な型エラーが、以前は次のような複雑なエラーメッセージを生成することがありました。

How this simple type error used to be reported by TypeScript 2.8

TypeScript 3.0 のおかげで、VS Code 1.26 ではエラーがはるかに読みやすくなりました。

How the error is now reported

JSX タグの補完

JavaScript または TypeScript ファイルで > と入力すると、JSX タグが自動的に閉じられるようになりました。

Tag completion of JSX tags

この動作は、VS Code が HTML ファイルですでに提供しているものと一致します。タグの自動クローズは、"javascript.autoClosingTags": false および "typescript.autoClosingTags": false を設定することで無効にできます。

すべての不足しているインポートをクイック修正

不足しているインポートを追加 クイックフィックスが、JavaScript/TypeScript ファイル内のすべての不足しているインポートに適用できるようになりました。

Adding multiple missing imports with a single quick fix

このクイックフィックスは、単一の潜在的な定義を持つシンボルに対してのみインポートを追加します。現在のプロジェクトに複数の潜在的なシンボル定義がある場合 (例えば、2つの異なるファイルが Button という名前のシンボルをエクスポートしている場合)、個々のエラーをクイックフィックスし、意図した特定のインポートを選択する必要があります。

JavaScript ファイルでこのクイックフィックスを使用するには、セマンティックチェックを有効にする必要があります。

JSX 折りたたみ

構文認識折りたたみを使用している場合、JSX タグが折りたたみ可能になりました。

Folding JSX tags

名前付きインポートと名前空間インポートの変換

JavaScript と TypeScript で、名前付きインポートと名前空間インポートの間を素早く変換できる 2 つの新しいリファクタリングが追加されました。

convert to namespace import

Ctrl キーを押しながらプロジェクト参照パスをクリックする (macOS では Cmd+クリック) と、jsconfig.json および tsconfig.json プロジェクト参照を素早くナビゲートできるようになりました。

Cmd click on the path to open the referenced project's tsconfig

extends パスもクリックできるようになりました。

デバッグ

デバッグ停止動作の改善

以前のリリースでは、デバッグ: 停止アクション (デバッグツールバーにあります) は、デバッグ対象が適切にクリーンアップする機会を与えずに、デバッグ対象とその子プロセスを常に即座に強制終了していました。一部のユーザーはこの動作を好まず、デバッグセッションを停止した後に手動でクリーンアップする必要がありました。

今回のリリースでは、デバッグ: 停止アクションを次の方法で改善しました。

  1. 初めて停止を押すと、デバッグ対象はすぐには強制終了されず、適切にシャットダウンするように要求されます(必要に応じてすべてをクリーンアップします)。

  2. そのシャットダウンコードにブレークポイント (または問題) がない場合、デバッグ対象とデバッグセッションは終了します。ユーザーは以前のバージョンの VS Code との動作の違いを感じないでしょう。

  3. しかし、デバッガーがシャットダウンコード内のブレークポイントにヒットした場合や、デバッグ対象が適切に終了しない場合、デバッグセッションは終了しません。

  4. この場合、もう一度停止ボタンを押すと、デバッグ対象が強制終了されます。したがって、赤い停止ボタンを押してもデバッグセッションが終了しない場合は、もう一度ボタンを押してデバッグ対象を強制的にシャットダウンしてください。

: この機能は、それを実装することをオプトインしたデバッガー拡張機能のみがサポートしています。現在、これは組み込みの Node.js デバッガーのみです。他のデバッグ拡張機能もすぐにこの機能をサポートすると予想されます。

Node/Chrome デバッグにおける smartStep の動作変更

以前は、"smartStep": true を設定すると、Node.js デバッガーはソースマップのないソースコードで停止しないように動作していました。これは次の2つの方法で発生します。

  • ソースマップがまったくないファイル(トランスパイルされていないソースコードやノードモジュールに同梱されている .js ファイル)。
  • ソースマップがあるトランスパイル済みファイルだが、個々の行がマップされていない場合(TypeScript が async/await などの一部の機能をダウンコンパイルするときに挿入する余分な行)。

VS Code 1.26 では、"smartStep": true は2番目のタイプ、つまりソースマップから欠落している行にのみ影響します。これにより、TS の async/await コードをスキップしながら、.js ファイルにステップインできるようになります。

以前の smartStep の動作が積極的すぎると判断したため、この変更を行いました。挿入されたコードをスキップすることは通常正しいですが、最初のシナリオでのスキップは一部のプロジェクトとユーザーにとってのみ意味があります。さらに、launch.json 設定ファイルで skipFiles オプションを使用すると、ファイル全体の場合をより適切にカバーできます。これは、ファイルをより正確にターゲット設定でき、高速であるためです。

したがって、smartStep を使用していて、デバッガーがソースマップなしでファイルを自動的にスキップしなくなったことに気づいた場合は、skipFiles を使用して以前の動作に戻すことができます。skipFiles を設定して、node_modules、内部ノードファイル、またはステップ実行したくないその他のファイル内のソースコードをスキップする方法の例については、興味のないコードをスキップするを参照してください。

拡張機能

このリリースでは、拡張機能の検索フィールドに IntelliSense の自動補完を追加することで、拡張機能の検索が容易になりました。これにより、カテゴリやインストール状態などの要素に基づいて結果をフィルタリングしたり、名前、評価、インストール数で結果をソートしたりして、拡張機能の検索を絞り込むことができます。「@」または ⌃Space (Windows、Linux Ctrl+Space) を入力すると、サポートされているクエリパラメーターの候補がトリガーされます。

Extension Search IntelliSense

拡張機能パックの管理

今回のリリースでは、拡張機能パックの管理が大幅にスムーズになりました。拡張機能パックは、常に単一のパックとしてインストール、アンインストール、有効化、または無効化されます。また、拡張機能パック全体をアンインストールまたは無効化することなく、拡張機能パックに属する拡張機能を個別にアンインストールまたは無効化できるようになりました。

拡張機能の詳細を開くと、新しい拡張機能パックタブが表示され、拡張機能パックにバンドルされている拡張機能が表示されます。

Extension Pack

注: これには、拡張機能パックによる採用が必要です。詳細については、拡張機能パックの再検討を参照してください。

コマンドラインからの拡張機能の無効化

新しい引数 --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 に残すことができます。

New Settings editor

先月からの新しい変更点の一部は次のとおりです。

  • ヘッダーの UX が刷新され、整理されました。変更された設定のみを表示するアクションと JSON エディターを開くアクションは、右側の ... メニューに移動されました。
  • 左側の目次はデフォルトで折りたたまれており、スクロールすると現在のセクションが表示されるように展開されます。
  • 設定の説明が Markdown としてレンダリングされるようになりました。一部の設定には関連ドキュメントへの外部リンクがあり、他の設定への参照はクリック可能なリンクになり、その設定にスクロールします。列挙型設定の enumDescriptions は、設定の説明の後に表示されるようになりました(JSON エディターでも同様)。

setting links and Markdown

  • files.exclude および search.exclude 設定用の新しいコントロールにより、グロブパターンを追加または削除しやすくなり、現在のスコープでどのパターンが適用されているかを確認しやすくなりました。

new exclude control

  • 設定エディターのコントロールはテーマ設定可能になりました。新しいテーマカラーの下にある新しいテーマカラーを参照してください。

Windows/Linux 用のカスタムタイトルバーとメニュー

このマイルストーンでは、カスタムタイトルバーが有効になっている場合の Windows と Linux のカスタムメニューを改善しました。まだプレビュー版ですが、settings.jsonwindow.titleBarStylecustom に設定することで試すことができます。

主なハイライトは次のとおりです。

  • メニューがテーマ設定可能になりました。新しいテーマカラーの下にある新しいテーマカラーを参照してください。

    Themed Menus

  • メニューとのキーボードとマウスのインタラクションがより一貫性を持つようになりました。以前は、いくつかのフォーカスインジケーターがあり、メニューが不明瞭でした。現在は、メニューがより馴染み深い方法で機能します。

  • より大きなズームレベルが必要な方やスクリーンリーダーを使用している方のエクスペリエンスを向上させるため、多くのアクセシビリティの問題が解決されました。

workbench-title または workbench-menu ラベルが付けられた問題に対処するとともに、新しいメニューとタイトルバーの改善を継続します。

拡張機能の作成

QuickInput API

QuickPick および InputBox API が安定版になりました。これらは、既存の showQuickPick および showInputBox API よりも柔軟なユーザー入力の収集を可能にします。QuickInput API の使用例は、サンプル拡張機能にあります。

Multi-step input sample

拡張機能パックの再検討

拡張機能パックの定義には、package.jsonextensionDependencies の代わりに extensionPack という新しいプロパティを使用するようになりました。これは、extensionDependencies が主に、依存する拡張機能をアンインストールまたは無効にすることなく拡張機能の依存関係をアンインストールまたは無効にすることを防ぐ、拡張機能間の機能的な依存関係を定義するために使用されるためです。

拡張機能パックは、バンドルされた拡張機能との機能的な依存関係を持つべきではなく、パックとは独立して管理できるべきです。以下は、いくつかのデバッガー拡張機能をバンドルする拡張機能パックを定義する extensionPack エントリの例です。

"extensionPack": [
    "andreweinand.mock-debug",
    "ms-vscode.mono-debug",
    "ms-vscode.cpptools",
    "ms-dotnettools.csharp",
    "vscjava.vscode-java-debug"
]

これにより、ユーザーは拡張機能パックとそのバンドルされた拡張機能をはるかに簡単かつシンプルに管理できるようになります。詳細については、拡張機能パックの管理を参照してください。

ワークスペース編集の改善

WorkspaceEditapplyEdit 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: メニューバーで選択されたトップレベルメニューの枠線。

デフォルトのテーマカラーを更新

アクセシビリティの改善の一環として、いくつかのデフォルトのテーマカラーを更新し、色のコントラスト要件を満たすようにしました。色のコントラスト修正の完全なリストはこちらで確認できます。

Definition プロバイダーは、DefinitionLink オブジェクトを返すことができるようになりました。定義リンクは、定義シンボルの範囲を含む、通常の location 定義よりも追加のメタデータを提供します。

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に移動しました。

関連ブログ、Debug Adapter Protocol の新しい拠点では、移動の背景と詳細について説明しています。

DAP JSON スキーマを旧所在地 https://raw.githubusercontent.com/Microsoft/vscode-debugadapter-node/main/debugProtocol.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 シグナルをデバッグ対象に送信することで簡単に達成できます。

ウェブビューアイコン

Webviews は、タブバーおよび OPEN EDITORS ビューに表示されるカスタムアイコンを提供するようになりました。

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'));
    });
}

A webview with a custom icon

ターミナルアクセス 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;
}

これは、OSによって自分自身に向けられたURIが開かれるたびに拡張機能をアクティブ化する onUri アクティベーションイベントが付属しています。

参照実装については、Git 拡張機能の GitProtocolHandler を参照してください。

Node.jsの更新

VS Code が動作する Electron のバージョンが更新され、VS Code に同梱されている Node.js のバージョンも 7.9 から 8.9 に更新されました。すべての拡張機能は、この新しいバージョンの Node.js で実行されるようになります。

いくつかの変更点が拡張機能に影響を与える可能性があります。

  • natives ノードモジュールが機能しなくなりました(#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つの一般的なユースケースをカバーするファイル検索を実装する方法は、FileIndexProvider または FileSearchProvider の2つがあります。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 支援機能のセットを提供します。

IntelliCode extension

注目すべき変更

  • 53532: エディター: ファイルが既にロードされている場合、変更をバックグラウンドでロード
  • 53586: Node デバッグ: 自動アタッチモードが記憶されない
  • 53022: 読み取り専用ファイルのエディタータブに「読み取り専用」ラベル
  • 48275: resourceIsFile コンテキストキーはサポートされなくなりました。

謝辞

最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!

vscodeへの貢献者

language-server-protocolへの貢献者

vscode-chrome-debugへの貢献

vscode-chrome-debug-coreへの貢献

  • @digeff
    • win32 パスを小文字に正規化 PR #342
    • Windows でパスを小文字に正規化 PR #341
  • @Pokute: URI エンコードされたソースマップとテストのサポートを追加。 PR #344
  • Raghav Katyal (@rakatyal)
    • 接続を試みる際に、ブラウザとプロトコルバージョンをログに記録するようになりました... PR #338
    • ソースマップされたブレークポイントをリセットする際に、クライアント ID を永続化する... PR #337

vscode-vsceへのコントリビューション

vscode-recipesへの貢献

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.
© . This site is unofficial and not affiliated with Microsoft.