2018年7月 (バージョン 1.26)
Update 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 の 更新 にアクセスしてください。
この1.26リリースに関するCloud Developer AdvocateのBrian Clark氏によるハイライトビデオもご覧ください。
リリースノートは、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 左) および → (Windows, Linux 右) のキーボードショートカットを使用して、現在の要素の前または後の要素に移動します。ドロップダウンが表示されたら、入力を開始するだけで、一致するすべての要素が強調表示され、最適な一致が選択されてすばやく移動できます。
ピッカーなしでブレッドクラムと対話することもできます。⇧⌘; (Windows, Linux Ctrl+Shift+;) を押して最後の要素にフォーカスし、← (Windows, Linux 左) と → (Windows, Linux 右) を使用して移動し、スペース を使用してエディターで要素を表示します。
問題パネルのクイックフィックス
問題パネルからクイックフィックスを適用できるようになりました。問題のエントリにカーソルを合わせるか選択すると、クイックフィックスを示す電球が表示されます。電球をクリックするか、問題のエントリのコンテキストメニューを開くことでクイックフィックスを適用できます。
注: クイックフィックスを提供する拡張機能が、クイックフィックスに関連する診断情報を提供している場合にのみ、電球インジケータが表示されます。
Windows 用ユーザーセットアップ
前回のリリースで発表されたWindows用のユーザーセットアップパッケージが、安定版で利用可能になりました。ユーザーセットアップのインストールには管理者権限は不要で、インストール場所はユーザーのローカル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 を開く
VS Code で URI をフォルダーとして開けるようになりました。ただし、その URI に FileSystemProvider
を提供する拡張機能がインストールされている必要があります。これを実現するために、新しいコマンドライン引数 --folder-uri
を導入しました。
RemoteHub 拡張機能がインストールされている場合、以下の CLI コマンドは 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ファイル内のすべての不足しているインポートに適用できるようになりました。
このクイックフィックスは、単一の潜在的な定義を持つシンボルに対してのみインポートを追加します。現在のプロジェクトに複数の潜在的なシンボル定義がある場合、たとえば2つの異なるファイルがButton
という名前のシンボルをエクスポートしている場合、個々のエラーをクイックフィックスし、意図した特定のインポートを選択する必要があります。
JavaScriptファイルでこのクイックフィックスを使用するには、意味チェックを有効にしてください。
JSXの折りたたみ
構文認識折りたたみを使用すると、JSXタグを折りたたむことができるようになりました。
名前付きインポートと名前空間インポートの変換
JavaScriptとTypeScriptで、名前付きインポートと名前空間インポートをすばやく変換できる2つの新しいリファクタリングが追加されました。
jsconfig.json および tsconfig.json プロジェクトファイルのクリック可能なリンク
Ctrl
+ クリック(macOSではCmd
+ クリック)で、jsconfig.json
および tsconfig.json
プロジェクト参照パスをすばやく移動できます。
extends
パスもクリックできるようになりました。
デバッグ
デバッグ停止動作の改善
以前のリリースでは、デバッグ: 停止アクション(デバッグツールバーにある)は、デバッグ対象とその子プロセスを、デバッグ対象に適切にクリーンアップする機会を与えることなく、常に即座に強制終了していました。一部のユーザーはこの動作を好まず、デバッグセッションを停止した後、手動でクリーンアップする必要がありました。
このリリースでは、デバッグ: 停止アクションが次のように改善されました。
-
初めて停止を押した際、デバッグ対象は即座に強制終了されず、正常にシャットダウンするように要求されます(必要に応じてすべてクリーンアップするように)。
-
そのシャットダウンコードにブレークポイント(または問題)がない場合、デバッグ対象とデバッグセッションは終了します。ユーザーは以前のバージョンのVS Codeとの動作に違いを感じないでしょう。
-
ただし、シャットダウンコードでデバッガーがブレークポイントにヒットした場合、またはデバッグ対象がそれ自体で適切に終了しなかった場合、デバッグセッションは終了しません。
-
この場合、再度停止ボタンを押すと、デバッグ対象を強制終了します。したがって、赤い停止ボタンを押してもデバッグセッションが終了しない場合は、再度ボタンを押してデバッグ対象を強制シャットダウンしてください。
注: この機能は、実装を選択したデバッガー拡張機能のみがサポートしています。現在、これは組み込みのNode.jsデバッガーのみです。他のデバッガー拡張機能もこの機能をまもなくサポートすることを期待しています。
Node/Chromeデバッグにおけるスマートステップ動作の変更
以前は、"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
を使用して以前の動作に戻すことができます。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イシューにご意見をお寄せください。
先月からの主な変更点の一部は以下のとおりです。
- ヘッダーのUXが刷新され、整理されました。変更された設定のみを表示するアクションと、JSONエディターを開くアクションは、右側の
...
メニューの下に移動されました。 - 左側の目次がデフォルトで折りたたまれるようになり、スクロールすると現在のセクションが表示されるように展開されます。
- 設定の説明がMarkdownとしてレンダリングされるようになりました。一部の設定には関連ドキュメントへの外部リンクがあり、他の設定への参照は、設定にスクロールするクリック可能なリンクになりました。列挙型設定の
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
オブジェクトを返すことができるようになりました。定義リンクは、定義シンボルの範囲を含む、通常の 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 の新しい場所」で、この移動の背景と詳細が説明されています。
古い場所 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 は、タブバーと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'));
});
}
ターミナルアクセス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
アクティベーションイベントと共に提供され、OSによって自身に向けられた URI が開かれるたびに拡張機能がアクティブになります。
参照実装については、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
は、ユーザーが検索ビューを使用するか、拡張機能が新しいAPIworkspace.findTextInFiles
を使用するときに呼び出されます。progress
コールバックを介してテキストの一致を増分的に返します。
ファイル検索を実装する方法は、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 よくある質問
Python 開発者の方は、人工知能 (AI) を使用してソフトウェア開発を強化する新しいツールであるIntelliCodeをご覧ください。IntelliCode 拡張機能は、現在のソースコードのコンテキストに基づいて最も関連性の高い自動補完を推論するなど、Python の IntelliSense に AI 支援機能のセットを提供します。
注目すべき変更
- 53532: エディタ: ファイルがすでにロードされている場合、バックグラウンドでファイルの変更をロードする
- 53586: Node debug: 自動アタッチモードが記憶されない
- 53022: 読み取り専用ファイルのエディタタブに「読み取り専用」ラベル
- 48275:
resourceIsFile
コンテキストキーはサポートされなくなりました。
謝辞
最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!
vscode
への貢献者
- @alexr00: Fixes #48714: Added conversion from local case of the file to git case PR #49397
- Arjun Attam (@arjun27): Adds webview select-all command PR #54851
- Adit Bhatt (@avbhatt): add support for ignored repositories list PR #47890
- @coolreader18: Fix double dash in previewer if @param jsdoc tag has hyphen after param name PR #53365
- Geoffrey (@g3offrey): Allow to update require path with Node.js PR #53964
- @HookyQR: Improve word part move and delete for capitalized snake case PR #53470
- HUA Yang (@imhuay): fix #53590 PR #54257
- Itamar (@itamark)
- Ivor Huang (@ivorhuang): Implement push success notification PR #47790
- Josh Beard (@jlbeard84): Removed OS specific text on 'Open in Terminal' command. PR #53636
- Jongkuen Hong (@Jongkeun): fixed spelling mistake from 'occuring' to 'occurring' PR #54239
- Josh Goldberg (@JoshuaKGoldberg): Trimmed file search strings in the search menu PR #54625
- Leonardo Braga (@LeonardoBraga): Handle --enable-proposed-api w/o extension IDs as "enable all" PR #52861
- Loic Nageleisen (@lloeki): Respect ownership on code command installation PR #46962
- Nikolas (@nikolasburk): Add underscores and asterisks to surrounding pairs PR #55054
- Nilesh Kevlani (@njkevlani): Fixes #53372 PR #53503
- Nick James (@omniomi): Update to powershell grammars PR #52956
- Ori Ashual (@oriash93): Support for updating extensions from CLI PR #45533
- Pradeep Murugesan (@pradeepmurugesan)
- Ahmed Tarek (@pushqrdx): Fixed SCM Badge Issue #42940 PR #43256
- Dániel Tar (@qcz): Improve the macOptionClickForcesSelection message PR #54264
- Ryuichi Inagaki (@ryu1kn): Error on "Undo Last Commit" if executed on initial commit PR #47578
- Sandy Armstrong (@sandyarmstrong): Treat Xamarin .workbook files as markdown PR #51167
- Guillaume Marcoux (@V-ed): Remove confusing Start from wordPartLeft commands ID PR #55492
- Walter M Barajas Jr (@wmb0117): Add option to manually add repos PR #48020
- Yogesh Mangaj (@yogeshmangaj): Add Focus search list command PR #54196
- @zhuowei: [WIP] git: Detect conflict markets in BOTH_ADDED files when staging PR #50252
language-server-protocol
への貢献者
- Luke Lau (@Bubba): Add hierarchicalDocumentSymbolSupport to Text Document Client Capabilities PR #538
- Qiming zhao (@chemzqm): Add coc.nvim PR #537
- Colin Rofls (@cmyr): Fixup typos in specification.md PR #499
- @khng300: Add ccls as an implementation of LSP for C/C++/Objective-C PR #525
- Michael T Lombardi (@michaeltlombardi): Update Puppet Language Server Info PR #509
- Mikhail Arkhipov (@MikhailArkhipov): Add preselect field to CompletionItem PR #515
- Andrey Kolomoets (@muffinmad): Added eglot PR #531
- Olivier FAURE (@PoignardAzur): Fix minor typo in specification PR #529
- Rafał Łasocha (@swistak35): Update servers.md - add new ruby language server PR #535
- Tyson Andre (@TysonAndre)
vscode-chrome-debug
への貢献
- Michael Crane (@mrcrane): Race condition when killing Chrome on Windows on disconnect PR #703
- Todd Chaffee (@tchaffee): Clearer documentation about the webpack devtools option. PR #694
vscode-chrome-debug-core
への貢献
- @digeff
- @Pokute: Added support for URI encoded source maps + tests. PR #344
- Raghav Katyal (@rakatyal)
vscode-vsce
へのコントリビューション
- Jimi (Dimitris) Charalampidis (@JimiC): Fix pattern matching in .vscodeignore PR #271
vscode-recipes
への貢献
- Fabien Allanic (@fallanic)
- Jesus Abarca (@jabas06): Update to make debugging work with version 6 of Angular CLI PR #117
- @NileshParkhe83: Jest issue - SecurityError: localStorage is not available for opaque origins PR #120
- @NiloCK: #96 Distinguish instructions for 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.