VS Codeのエージェントモードを拡張するには、を試してください!

2018年9月 (バージョン 1.28)

Update 1.28.2: このアップデートでは、これらの問題に対処しています。

Update 1.28.1: このアップデートでは、これらの問題に対処しています。

ダウンロード: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball


Visual Studio Code 2018年9月リリースへようこそ。9月のイテレーション計画で発表した通り、私たちはGitHubのissueとプルリクエストの整理に注力しました。すべてのVS Codeリポジトリで、3918件のissueをクローズしました (トリアージまたは修正)。issueをクローズした一方で、皆様からは2187件の新しいissueが作成されました。これにより、正味1731件のissueが減少しました。メインのvscodeリポジトリには、現在2472件の未解決の機能リクエストと625件の未解決のバグがあります。さらに、212件のプルリクエストをクローズしました。

皆様が私たちの進捗にどれほど関心を持ってくださっているかを知ることができ、大変嬉しく思います。Benjamin Lannonは、私たちのメインリポジトリのissue番号をライブトラッカーで示す個人サイトを公開しました。これは、9月11日以降の私たちの進捗をよく示しています。

Burn down of issues

また、issueの削減に注意を払うのをやめるとどうなるかも示しています。以下は、このリリースに向けて準備をしていた先週の最後の3日間です。ご覧の通り、今後もissueの整理のイテレーションが予定されています。

Increase of issues

この整理のマイルストーンでは、いくつかの機能リクエストに対処し、コミュニティのプルリクエストによっても新機能が追加されました。以下に、リリースの主要なハイライトをいくつか紹介します。

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

Insiders: 新しい機能をいち早く試したいですか?毎晩リリースされるInsidersビルドをダウンロードして、最新のアップデートが利用可能になり次第お試しください。

ワークベンチ

Windowsでのカスタムタイトルとメニューバーがデフォルトに

以前のリリースノートで説明されたカスタムタイトルバーとテーマ適用可能なメニューは、Windowsでデフォルトで有効になりました。設定"window.titleBarStyle"は、過去1か月間InsidersのWindowsで"custom"にデフォルト設定されており、私たちはこれをデフォルトのエクスペリエンスとする準備ができました。

Custom title and menu bar with a dark theme on Windows

ファイルの種類ごとのアイコン

macOSとWindowsでは、VS Codeはよく知られたファイルタイプのデフォルトエディターとして登録されます。VS Codeは、一部の一般的なVS Codeファイルタイプにカスタムアイコンを同梱するようになりました。これらのアイコンは、アイコンのサイズが中から大に設定されている場合、OSエクスプローラーに表示されます。小さいアイコンサイズの場合、アイコンとしてVS Codeロゴを保持することにしました。

File Icons

プロジェクトレベルスニペット

スニペットがプロジェクトにスコープされ、チームと共有できるようになりました。基本設定: ユーザー スニペットの構成コマンドを使用するか、.vscodeフォルダーに*.code-snippetsファイルを作成するだけです。プロジェクトスニペットは他のスニペットと同様に機能し、IntelliSenseおよびスニペットの挿入アクションに表示され、独自のカテゴリが追加されました。

Project Level Snippet

スニペットは複数のプレフィックスもサポートするようになりました。著作権ヘッダースニペットをheaderstub、またはcopyrightのいずれでプレフィックスにするか決められない場合でも、すべて持つことができます。prefixプロパティとして文字列配列を使用するだけです。

{
  "prefix": ["header", "stub", "copyright"],
  "body": "Copyright. Foo Corp 2028",
  "description": "Adds copyright...",
  "scope": "javascript,typescript"
}

長い間、VS Codeはフォルダーを開く際にシンボリックリンクを解決していました。これは、シンボリックリンクが存在する理由があったにもかかわらず、VS Codeがそれを無視し、常に解決されたリンクパスを開いていたことを意味します。私たちはこの動作を変更し、シンボリックリンクを保持することにしました。

注: フォルダーをシンボリックリンクとして開くと、特定の機能が機能制限付きで動作します(例えば、デバッグGit統合)。

キーボードショートカットの記録と検索

キーボードショートカットエディター(⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S))では、キー名('shift'など)を入力する代わりに、キーストロークを入力するだけでキーバインディングを検索できるようになりました。キーの記録モードをオンにして、検索したいキーストロークを入力してください。

Record Keys

⌥⌘K (Windows, Linux Alt+K)を使用して、キーの記録モードに入ることができます。Escキーを押すと、キーの記録モードを終了します。

パネル切り替えの変更

パネル(ターミナル、出力、問題、デバッグコンソール)を切り替えるコマンドの動作を見直すことにしました。変更の背景については、issue 19400を参照してください。

以前の動作は

  • パネルが非表示の場合に表示される。
  • パネルが表示されている場合に非表示になる。

新しい動作は

  • パネルが非表示の場合に表示される。
  • キーボードフォーカスがある場合にパネルが非表示になる。
  • 表示されているがフォーカスがない場合にパネルがフォーカスされる。

以前の動作に戻すには、関連するパネルがアクティブなときにパネルを閉じるキーバインディングを設定できます。

例えば、出力パネルの場合

{
  "key": "cmd+shift+u",
  "command": "workbench.action.closePanel",
  "when": "activePanel==workbench.panel.output"
}

パネル識別子のリストは次のとおりです。

  • terminal - 統合ターミナル
  • workbench.panel.markers - 問題パネル
  • workbench.panel.output - 出力パネル
  • workbench.panel.repl - デバッグコンソールパネル

相対パスのコピー

ファイルパスを相対パスとしてコピーするコマンドが、ファイルエクスプローラーとエディタータブのコンテキストメニューにより目立つように表示されるようになりました。

Copy Relative Path

最近開いたファイルをクイックオープンから除外

新しい設定search.quickOpen.includeHistoryを使用すると、最近開いたファイルがクイックオープンファイルピッカーに含まれるかどうかを制御できます。デフォルトでは、最近開いたファイルは検索結果の上部に表示され、ワークスペース内の他のファイルはその下に表示されます。最近開いたファイルを上部に表示したくない場合は、この設定をfalseに変更できます。

ファイルを削除する際にゴミ箱を使用しない

エクスプローラーからファイルを削除する際にOSのゴミ箱に移動して問題が発生する場合、files.enableTrashfalseに設定することで、削除時にOSのゴミ箱を使用しないようにできます。これにより、ファイルエクスプローラーの削除アクションとキーバインディングが変更され、OSのゴミ箱をバイパスして完全に削除されます。削除前には引き続きプロンプトが表示されます。

ワークスペースファイルが検出された場合に開くようプロンプト表示

ルートに1つ以上の.code-workspaceファイルを含むフォルダーを開いた場合、VS Codeは代わりにワークスペースファイルを開くかどうかを尋ねる通知を表示するようになりました。ワークスペースファイルを開くと、通常、単にフォルダーを開くよりも優れたエクスペリエンスが得られます。マルチルートワークスペースの詳細については、ドキュメントを参照してください。

Workspace file prompt

ファイルを再オープンしてもビューの状態を復元しない

VS Codeは、ファイルを閉じた後でも、ファイルのビュー状態(カーソル位置、折りたたまれたセクションなど)を常に記憶していました。ファイルを閉じたときにこのビュー状態を破棄する新しい設定workbench.editor.restoreViewStateが追加されました。これにより、ファイルを再オープンするたびに常にファイルの先頭から開始できます。

すべてのエディターグループでファイルを閉じる

新しいコマンドすべてのグループでエディターを閉じる (workbench.action.closeEditorInAllGroups) を使用すると、現在アクティブなファイルをすべてのエディターグループで閉じることができます。

問題パネル

エラーコードの表示

問題パネルが、問題にエラーコードがある場合にそれを表示するようになりました。

Problems panel shows error codes

キーボードナビゲーションの改善

問題パネルがキーボード操作により対応するようになりました。

  • パネルにフォーカスがあるときに、入力し始めることでフィルターできます。
  • ⌘F (Windows, Linux Ctrl+F)を使用してフィルターボックスにフォーカスを与え、⌘↓ (Windows, Linux Ctrl+Down)を使用してフィルターボックスから問題リストにフォーカスを与えることができます。

テレメトリーイベントの出力チャンネル

7月リリースでは、開発者: ログ レベルの設定... コマンドを使用してログレベルをトレースに設定すると、VS Codeによって送信されるすべてのテレメトリーイベントもローカルファイルにログされる機能を追加しました。このファイルの内容は、出力パネルのログ (テレメトリー) チャンネルで表示できるようになりました。以前と同様に、開発者: ログ ファイルを開く... コマンドを使用してファイルを直接表示できます。

カスタムビューにフォーカスを与える

コマンドを使用してカスタムビューにフォーカスを与えられるようになりました。各カスタムビューには個別のコマンドが用意されています。

Custom view focus commands

Linux URL処理

以前はWindowsとmacOSに限定されていた機能でしたが、LinuxでもVS CodeのURLを開けるようになりました!これらのURLは、拡張機能の自動インストールなど、さまざまな機能に役立ちます。例えば、vscode-insiders:extension/vscodevim.vimなどです。

エディター

タブ補完

エディターのタブ補完が、あらゆる種類の提案を補完できるようになりました。"editor.tabCompletion": "on"を設定すると、Tabキーを押すとスニペットだけでなく、あらゆるプレフィックスが補完されます。また、Tabを押すと次の提案が挿入され、⇧Tab (Windows, Linux Shift+Tab)を押すと前の提案が挿入されます。

Tab completion

最後の編集位置へ移動

ファイル内で最後に編集した場所に素早く移動するための新しいコマンド最後の編集位置へ移動 (workbench.action.navigateToLastEditLocation) が追加されました。デフォルトのキーバインディングは⌘K ⌘Q (Windows, Linux Ctrl+K Ctrl+Q)です。

フォーマットせずに保存

新しいコマンドフォーマットせずに保存 (workbench.action.files.saveWithoutFormatting) は、保存参加者 (フォーマッター、末尾の空白の削除、最終行の改行など) をトリガーせずにファイルを保存するために使用できます。デフォルトのキーバインディングは⌘K S (Windows Ctrl+K Ctrl+Shift+S, Linux Ctrl+K S)です。これは、異なるフォーマット規約を持つ可能性のある通常のプロジェクト外のファイルを編集する場合に役立ちます。

IntelliSenseの局所性ボーナス

提案がカーソルからの距離に基づいてソートできるようになりました。"editor.suggest.localityBonus": trueに設定すると、例えば、関数パラメーターがIntelliSenseリストの最上位に表示されるようになります。

Locality bonus

Emmet

今回のイテレーションでは、Emmet機能にいくつかの改善を加えました。

  • JavaScriptファイルでEmmetを有効にしている場合、HTMLファイル内の<script>タグ内でEmmetの省略形展開ができるようになりました。
  • Emmet: 省略形で囲む機能は、.html拡張子のファイルに限定されなくなりました。
  • Emmet: バランス (内側へ) 機能は、選択がない場合でも現在のノードで動作するようになりました。
  • SCSSファイルで#を含むCSSセレクターを誤って有効な省略形と見なしていたバグが修正されました。

ソース管理

SCMコミットキーバインディングの変更

scm.acceptInputコマンドを使用して、SCMビューでコミットメッセージを受け入れるデフォルトのキーバインディングを変更できるようになりました。

SCMステータスバーがアクティブなファイルを追跡

左下にあるSCMステータスバーの表示が、現在アクティブなファイルが属するリポジトリを追跡するようになりました。これにより、複数のフォルダーがあるワークスペースでファイルを編集する際の混乱が軽減されます。

Git 統合

削除競合のより良い処理

削除競合は常にVS Codeによって検出されていました。今回、それらを処理するためのより良いUIフローが提供され、変更を開くと削除されていないバージョンが表示され、ファイルをステージングする際にどうするか(保持するか、削除するか)を決定できるようになりました。

Keep or delete deletion conflicts

長いコミットメッセージ警告のしきい値を設定

git.inputValidationLength設定により、コミットメッセージを編集する際に警告が表示されるまでのメッセージの長さを設定できるようになりました。

'git init'後にフォルダーをワークスペースに追加

Gitリポジトリを初期化した後、VS Codeは現在のワークスペースにそれを追加するかどうかを尋ねるようになりました。

ブランチ検証ルールの設定

強力なgit.branchValidationRegexおよびgit.branchWhitespaceChar設定を使用して、ブランチ名検証の動作を制御できるようになりました。詳細については、issue 50241を参照してください。

同期実行時に常にリベース

git.rebaseWhenSync設定により、同期コマンドを実行する際に、マージの代わりに常にリベースを使用するように構成できます。

進行状況報告の無効化

git.showProgress設定を使用すると、Git操作中の進行状況の表示を無効にできます。

プッシュ --force

開発の日常において、リスクを冒したいと感じる時があります。git push --forceはその素晴らしい例です!VS Codeは、ターミナルに入る必要なく、コミットをリモートに強制的にプッシュできるようになりました。この動作を制御するには、git.allowForcePushgit.useForcePushWithLease、およびgit.confirmForcePush設定を使用します。詳細については、issue 53286を参照してください。

スタッシュの適用

以下のgit stash applyコマンドがグローバルコマンドパレットに表示されるようになりました: Git: スタッシュを適用...Git: 最新のスタッシュを適用

常に表示されるステージされた変更セクション

git.alwaysShowStagedChangesResourceGroup設定を使用すると、SCMビューのステージされた変更セクションが空の場合でも常に表示されるようにできます。

Staged changes visible

ターミナル

カスタムシーケンスを送信するキーバインディングを定義

新しいコマンドworkbench.action.terminal.sendSequenceが追加され、カスタムシーケンスをアクティブなターミナルに直接送信できるようになりました。これにより、Unicode文字を送信するための\u形式を使用して、矢印キーやEnterキーなどを送信できます。

{
  "key": "ctrl+u",
  "command": "workbench.action.terminal.sendSequence",
  "args": { "text": "\u001b[1;5D\u007f" }
}

検索の改善

ターミナルの検索が改善され、エディターの検索と同様に動作するようになりました。

  • 正規表現、大文字と小文字の区別、単語全体の照合をサポート。
  • 標準の次を検索/前を検索のキーバインディング (F3, Shift+F3) が動作するようになりました。
  • 複数行にまたがる検索結果が返されます。

言語

TypeScript 3.1

VS Code 1.28にはTypeScript 3.1.1が同梱されています。このリリースには、マップ可能なタプルおよび配列型などの新しい言語機能に加え、多くのツール改善とバグ修正が含まれています。

インポートパスのリネーム

インポートされたファイルに、より良い名前を付けられることに気づきましたか?インポートの名前を変更するだけで、参照されているファイルの名前を変更できるようになりました。

Renaming an JavaScript import to rename a file

async関数への変換

JavaScriptおよびTypeScriptの新しいasync関数への変換提案は、.then Promiseチェインを使用する関数をasyncおよびawaitを使用するように書き換えます。

Converting a promise chain to an async function

この機能を使用するには、javascript.validate.enable設定がtrueに設定されている必要があります。

JS/TS提案のための新しい設定

JavaScriptおよびTypeScriptの提案に関連する設定名を整理し、より詳細な制御を提供するいくつかの追加設定を加えました。

  • すべての提案関連設定は、javascript.suggest.*typescript.suggest.*の下にあります。
  • typescript.useCodeSnippetOnMethodSuggestは、javascript.suggest.completeFunctionCallsおよびtypescript.suggest.completeFunctionCallsに名前が変更されました。
  • javascript.nameSuggestionsは、javascript.suggest.namesに名前が変更されました。
  • typescript.autoImportSuggestions.enabledは、javascript.suggest.autoImportsおよびtypescriptscript.suggest.autoImportsに名前が変更されました。
  • 新しいjavascript.suggest.enabledtypescript.suggest.enabledを使用すると、JSまたはTSの提案を完全に無効にできます。

JS/TSのコミット文字としてのセミコロン

セミコロンがJavaScriptおよびTypeScriptの提案のコミット文字になりました。これにより、;と入力するだけで現在の提案を受け入れることができます。既存のコミット文字には.(も含まれます。

"editor.acceptSuggestionOnCommitCharacter": falseを設定することで、コミット文字を無効にできます。

HTMLとCSSのパス補完でドットファイルを排除

.で始まるファイルは、パス補完の結果から除外されるようになりました。

Markdownの折りたたみ機能の改善

複数行リスト、フェンスされたコードブロック、および生のHTMLがMarkdownファイルで折りたたみ可能になりました。

Folding Markdown code blocks and lists

Markdownプレビューで、ローカルファイルへのリンクをクリックすると、そのファイルのプレビューが開かれるようになりました。

Local file link open in preview

これにより、ドキュメントの閲覧が容易になります。リンクの処理方法を設定するには、markdown.preview.openMarkdownLinks設定を使用します。有効な設定値は次のとおりです。

  • inEditor - ローカルのMarkdownリンクをエディターで開きます。
  • inPreview - ローカルのMarkdownリンクを現在のプレビューで開きます。これが新しいデフォルトの動作です。

拡張機能

検索フィルタリングの改善

@categoryフィルターを、@installed@enabled@disabled@outdatedのようなインストール済み拡張機能の他のフィルターと組み合わせて、拡張機能の検索クエリを作成できるようになりました。例えば、@installed @category:themesというクエリを使用してインストール済みテーマを検索したり、@installed @category:snippetsを使用してスニペットを提供するインストール済み拡張機能を検索したりできます。

無効化された拡張機能は古いものとしてカウントされない

アクティビティバーの拡張機能ビューに表示される、古い拡張機能の数を示すバッジに、無効化された拡張機能は含まれなくなりました。このバッジの意図は、更新が必要な古い拡張機能があることを知らせるものでした。無効化された拡張機能は現在使用されていないため、カウントに含めることは単なる邪魔になります。

拡張機能ホストの応答なし

VS Codeは、拡張機能ホストと呼ばれる別のプロセスで拡張機能を実行します。このプロセスは、メッセージパッシングを使用してレンダラー/UIプロセスと通信します。拡張機能ホストへのメッセージの追跡を改善し、メッセージが10秒以内に確認されない場合、以下の通知を表示するようになりました。

Extension Host Unresponsive

これは何を意味するか: ほとんどの場合、拡張機能がCPU負荷の高い操作を実行しており、その結果拡張機能ホストプロセスを10秒以上ブロックしていることを意味します。

何をすべきか: 1つのオプションは、操作の完了を待って、単に通知を無視することです。別のオプションは、実行中の拡張機能ビューに移動して拡張機能ホストのプロファイリングを開始することで、どの拡張機能がCPU使用率が高い原因となっているかを調査することです。その後、問題のある拡張機能に対して直接issueを作成できます。最後に、拡張機能が無限ループに入っており、回復する見込みがないと思われる場合は、拡張機能ホストを再起動できます。

エンジニアリング

拡張機能とwebpack

私たちはwebpackの取り組みを継続し、現在ほとんどのバンドルされた拡張機能がwebpack化されています。復習として:これは、読み込むファイルが少なく、解析するソースコードが少ないため、拡張機能の起動時間を短縮するのに役立ちます。また、抽出してディスクに書き込むファイルが少ないため、インストール時間を短縮するのにも役立ちます。

このマイルストーンでは、バンドルをさらに2803ファイル削減しました。7月には9000ファイルから開始し、8月には4650ファイルに減り、9月には1847ファイルになりました!

プレビュー機能

プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。

Electron 3.0の継続的な調査

このマイルストーン中、Electron 3.0.0をVS Codeにバンドルする検討を継続しました。これは主要なElectronリリースであり、Chrome 66とNode.js 10.x(現在のChrome 61とNode.js 8.xと比較して大幅な進歩)が付属しています。近いうちにInsidersユーザーにアップデートをプッシュして、追加のフィードバックを収集する予定です。もし協力に興味がある場合は、VS Code Insidersをインストールしてください。

その他

macOS Mojaveでのぼやけ

macOS 10.14 (Mojave) にアップデートした場合、高DPIモニターを使用していないと、VS Codeのフォントがぼやけて見えることに気づいたかもしれません。

これに対する回避策は、ターミナルから以下を実行し、

defaults write com.microsoft.VSCode.helper CGFontRenderingFontSmoothingDisabled -bool NO

その後コンピューターを再起動することです。

この変更はVS Code固有のものではなく、すべてのアプリケーションにグローバルに適用されることに注意してください。関連する議論については、issue 51132を参照してください。

Electronの更新

このリリースでは、Electronを2.0.7から2.0.9にアップデートしました。特にこれにより、VS CodeがArchLinuxで再び動作するようになりました (issue 55934)。

拡張機能の作成

インストールされていない拡張機能のURL処理

7月には、拡張機能がシステム全体のURIを処理するためのURIハンドラーAPIをリリースしました。最新のリリースでは、VS Codeはまだインストールされていない拡張機能のURIさえも処理できます。ユーザーがそのようなURIを開くと、VS CodeはMarketplaceで拡張機能を検索し、インストールを提案し、URIを渡してVS Codeを起動します。これにより、拡張機能は、ウェブページから特定の状態で拡張機能を実行するまでのスムーズな起動フローを持つことができます。

診断エラーコード

診断エラーコードは問題パネルに表示されるようになったため、拡張機能がエラーコードをDiagnostic.messageプロパティに追加する必要がなくなりました。

より良い構成when句

キーバインディングやメニューの可視性を設定する際に、when句が使用されます。when句では、config.を接頭辞として構成(設定)値を参照できます。たとえば、config.editor.tabCompletionなどです。これまではブール型構成プロパティのみがサポートされていましたが、このリリースからは文字列および数値も使用できるようになりました。

テキストドキュメントの言語を変更

ドキュメントの言語モードを変更する新しいAPI関数、vscode.languages.setTextDocumentLanguageが追加されました。このAPIは、ドキュメントと使用したい言語識別子を引数に取ります。利用可能な言語IDを知るには、vscode.languages.getLanguagesを使用してください。

workspaceContainsアクティベーション

拡張機能は、workspaceContainsアクティベーションイベントを使用して、特定のパターンに一致するファイルを含むワークスペースが開かれたときにアクティベートされるようにできます。たとえば、PHP拡張機能は、**/*.phpに一致するファイルを含むワークスペースが開かれたときにアクティベートされるように要求するかもしれません。これは新しいことではありませんが、大規模なワークスペースが開かれた場合、検索プロセスが長時間実行され、多くのCPUを使用する可能性があるとユーザーから指摘がありました。

これらの検索の影響を少なくするために、いくつかの変更を加えました。1つ目は、これらの検索がユーザーのfiles.excludesearch.exclude、およびsearch.useIgnoreFiles設定を尊重するようになったことです。つまり、ユーザーが通常のテキスト検索やクイックオープンを介したファイル検索でファイルを見つけられない場合、workspaceContainsパターンはそのファイルに一致しません。これにより、workspaceContainsのために検索しなければならないファイルの数が大幅に減少し、例えばnode_modules/に埋もれているようなプロジェクトに実際には含まれないファイルに一致した場合の誤ったアクティベーションが減少します。

2つ目の変更は、これらの検索に7秒の制限を課すことです。検索が7秒後に完了しない場合、検索プロセスを停止し、それでも拡張機能をアクティベートします。

全体として、これによりVS Codeで大きなワークスペースを開いた後にラップトップが謎めいた熱を発するケースが減少するはずです。

新しいテーマカラー

新しいテーマカラー

  • menu.separatorBackground: メニュー内の区切りメニュー項目の色。
  • sideBarSectionHeader.border: サイドバーセクションヘッダーのボーダー色。
  • inputValidation.infoForeground: 情報の重大度に対する入力検証のフォアグラウンド色。
  • inputValidation.warningForeground: 警告の重大度に対する入力検証のフォアグラウンド色。
  • inputValidation.errorForeground: エラーの重大度に対する入力検証のフォアグラウンド色。
  • editor.snippetTabstopHighlightBackground: スニペットタブストップのハイライト背景色。
  • editor.snippetTabstopHighlightBorder: スニペットタブストップのハイライトボーダー色。
  • editor.snippetFinalTabstopHighlightBackground: スニペットの最終タブストップのハイライト背景色。
  • editor.snippetFinalTabstopHighlightBorder: スニペットの最終タブストップのハイライトボーダー色。
  • activityBar.inactiveForeground: アクティビティバーアイテムが非アクティブな場合のフォアグラウンド色。

デバッグAPI

resolveDebugConfigurationlaunch.jsonを開くために明示的にnullを返す必要がある

以前は、resolveDebugConfigurationtype属性を持たない起動構成を返した場合、VS Codeは自動的に基礎となるlaunch.jsonファイルを開いていました。拡張機能作成者からのフィードバックを受けて、私たちはこのシナリオについて拡張機能にさらなる制御を与えることにしました。

現在、resolveDebugConfigurationは、デバッグセッションの開始を防ぎ、代わりにlaunch.jsonを開くために、明示的に値nullを返す必要があります。値undefinedを返すと、デバッグセッションの開始が単に防がれます。以前と同様に、type属性を持つ構成を返すと、デバッグセッションが開始されます。

提案された拡張API

各マイルストーンには新しい提案APIが付属しており、拡張機能開発者はこれらを試すことができます。いつものように、皆様からのフィードバックをお待ちしております。提案APIを試すには、次の手順を実行します。

  • 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
  • 拡張機能のpackage.jsonファイルに次の行が必要です: "enableProposedApi": true
  • vscode.proposed.d.tsファイルの最新バージョンをプロジェクトにコピーします。

提案APIを使用する拡張機能は公開できないことに注意してください。次回のリリースでは互換性のない変更が行われる可能性があり、既存の拡張機能を壊すことは決して望ましくありません。

デバッグAPI

新しいDebugConfigurationProvider.provideDebugAdapterDebugConfigurationProvider.debugAdapterExecutableコマンドを置き換える

以前、VS Codeによって起動されようとしているデバッグアダプターの動的に計算されたパス(および対応するプログラム引数)を拡張機能が返すことができるように、提案されたAPI DebugConfigurationProvider.debugAdapterExecutableを追加しました。このマイルストーンでは、受け取ったフィードバック(例えば#45220#56646#57706#54465)に基づいて、当初のデザインを見直しています。

新しいAPIメソッドprovideDebugAdapterと呼ばれ、デバッグセッション、ワークスペースフォルダー、package.jsonからの実行可能情報、および解決された起動構成を渡します。この情報により、拡張機能はデバッグアダプターの作成を要求されたときに「全体像」を把握できます。

さらに、デバッグアダプターの実装を開始および接続するためのより多くの方法をサポートするようになりました。このため、provideDebugAdapterメソッドから記述子オブジェクトを返すことができます。

  • DebugAdapterExecutable記述子は、セッションごとにデバッグアダプターを外部プロセスとして起動し、stdin/stdoutを介して通信するために使用できます。新しいAPIでは、デバッグアダプターの作業ディレクトリと環境変数を指定できるようになりました。
  • DebugAdapterServerは、複数のセッションを処理し、ソケットを介して通信するサーバープロセスを記述します。
  • DebugAdapterImplementationは、通信オーバーヘッドのないインプレース実装に使用できます。このオプションは、DAPのNode.jsベースのクライアントライブラリのわずかな変更に依存しており、10月に予定されています。

これは提案されたAPIであり、Marketplaceで公開されている拡張機能では使用できないことに注意してください。ただし、issue 45220でのDebugConfigurationProvider.provideDebugAdapterに関する皆様のフィードバックを高く評価いたします。

コメントの編集と削除

前回のイテレーションでは、拡張機能がエディター内でコメントを作成および管理できるようにDocumentCommentProviderを導入しました。このプロバイダーに新しいメソッドを追加し、コメントの編集と削除をサポートしました。コメント自体も、編集または削除をサポートするかどうかを示すフラグを持つようになりました。拡張機能がこれらのフラグのいずれかを設定し、適切な編集または削除メソッドを提供すると、エディター内でコメントにホバーまたはフォーカスしたときに、コメントを編集または削除するアクションが表示されます。

Comment editing

新コマンド

キー コマンド コマンドID
⌘K ⌘Q (Windows, Linux Ctrl+K Ctrl+Q) 最後に編集した位置へ移動 workbench.action.navigateToLastEditLocation
⌘K S (Windows Ctrl+K Ctrl+Shift+S, Linux Ctrl+K S) 保存参加者(フォーマッターなど)を実行せずにファイルを保存 workbench.action.files.saveWithoutFormatting
すべてエディターグループでアクティブなファイルを閉じる workbench.action.closeEditorInAllGroups
差分エディターのインラインモードとサイドバイサイドモードを切り替える (toggle.diff.editorModeは非推奨) toggle.diff.renderSideBySide

新しいドキュメント

GitHub Pull Request拡張機能のブログ投稿

Kennethによる新しいGitHub Pull Request拡張機能の発表と、VS CodeとGitHub Editorチーム間の共同作業について議論した最近のブログ投稿を読むことができます。

Azure Pipelinesの使用に関するブログ投稿

Visual Studio CodeをAzure Pipelinesで使用するでは、VS CodeエンジニアのJoão Morenoが、VS Codeが現在どのようにAzure Pipelinesをビルドおよび継続的インテグレーション(CI)インフラストラクチャとして使用しているかを説明しています。

新しいPowerShellトピック

Visual Studio CodeにおけるPowerShellでは、MicrosoftのPowerShell拡張機能によるPowerShell統合が示されています。この拡張機能は、IntelliSense、定義へ移動、すべての参照の検索などの強力な言語機能に加え、デバッグやコードスニペットもサポートしています。

新しいPython Djangoチュートリアル

VS CodeでPython Djangoウェブアプリケーションを素早く作成、編集、デバッグする方法を示す新しいVisual Studio CodeでDjangoを使用するチュートリアルがあります。

主な修正

  • 48051: フォーマット後に左にスクロールする必要がある
  • 31619: スニペットで削除されたタブストップをタブで移動する必要がある
  • 58327: デバッグツールバーボタンが無効になっている
  • 35935: "最近開いたものをクリア"はエディターのクイックピック履歴もクリアするべき
  • 58799: 保存時に無題のファイルを公開する
  • 29553: Escapeキーでクイックオープン入力を保持する
  • 58222: UriDisplayServiceにリモート共有パス名がない
  • 54213: launch.jsonを表示せずにデバッグ起動を中止するメカニズム
  • 52511: デバッグホバーウィジェット - オーバーフローが隠れている長いアイテムのウィジェットサイズ変更を有効にする
  • 50569: 条件付きブレークポイントのプロンプトで、ブレークポイントがすでに無効になっている場合に有効にするオプションを提供するべき
  • 42737: 拡張機能: ギアメニューを表示するために右クリックを許可する
  • 58434: CLIから拡張機能をインストールする際にプロンプトを防止するために--force引数を使用する。

謝辞

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

vscodeへの貢献者

language-server-protocolへの貢献者

vscode-languageserver-nodeへの貢献者

debug-adapter-protocolへの貢献者

vscode-recipesへの貢献

vscode-chrome-debugへの貢献

  • Sasha (@stristr): 高度なデバッグのためにnull許容のtargetTypesプロパティを使用する。 PR #727

vscode-chrome-debug-coreへの貢献

  • @digeff
    • ログ機構を更新してソースをログに記録しないようにする PR #355
    • Chrome 69の最初の行のブレークポイントを修正 PR #352
    • アタッチ時にブレークポイントが機能するように、ブレークオンロードを修正 PR #332

localizationへの貢献

Transifex VS Codeプロジェクトチームには約1200人のメンバーがおり、毎月約100人が活発に貢献しています。新しい翻訳の提供、翻訳への投票、またはプロセス改善の提案など、皆様のご貢献に感謝いたします。

このリリースに貢献してくださった方々のスナップショットを以下に示します。貢献者リストを含むプロジェクトの詳細については、プロジェクトサイトhttps://aka.ms/vscodelocをご覧ください。

  • ベンガル語: Anisuzzaman Khan, abm_prottoy, Mushiar Khan, Mehedi Hassan.
  • ブルガリア語: Любомир Василев.
  • クロアチア語: Nikša Mihaica.
  • チェコ語: Vít Staniček.
  • デンマーク語: Kenneth Greig, Johan Fagerberg, Martin Fruensgaard.
  • オランダ語: Gerald Versluis, Marco van den Hout.
  • フランス語: Antoine Griffard, MayakoLyyn, Smrman, Etienne Blanc-Coquand.
  • ドイツ語: J.M., Carsten Kneip, Volkmar Rigo, SetTrend.
  • ギリシャ語: Nikolaos Maliakkas.
  • ヒンディー語: Ashwini Gupta, Shaswat Rungta.
  • ハンガリー語: Tar Dániel.
  • 中国語 (簡体字): Joel Yang, 子实 王, pluwen, Chris Pan 潘冬冬, danyeh.
  • 中国語 (繁体字): Duran Hsieh, Poy Chang, Alan Tsai, Han Lin, Shih-Ming Tung, Will 保哥.
  • インドネシア語: G-RiNe Project, Wildan Mubarok, Rizki A. Wibowo, Riwut Libinuko, Azhe-kun, rodin, Febrian Setianto (Feber).
  • イタリア語: Luigi Bruno, Luca Bruni, Alessandro Alpi, Emilie Rollandin, Pascal Brax, Andrea Dottor, Riccardo Cappello.
  • 日本語: Satoshi Kajiura, Shunya Tajima, Yuichi Nukiyama, yoshioms, daisuke osada (daiskeh).
  • 韓国語: Kyunghee Ko, jaeyeon Kim, Junseong Jang, Jisan Oh.
  • リトアニア語: Martynas Jusys.
  • マラヤーラム語: Kiren Paul.
  • ノルウェー語: Espen Klein Nilsen.
  • ポーランド語: Artur, Patryk Brejdak, Adam Borowski, Mateusz Wyczawski.
  • ポルトガル語 (ブラジル): Roberto Fonseca, Bruno Sonnino, Danilo Dantas, Marcelo Fernandes, Thiago Custodio, Rodrigo Crespi, Marcelo Andrade, Alessandro Fragnani, Lucas Miranda, Otacilio Saraiva Maia Neto.
  • ポルトガル語 (ポルトガル): António Santos,Diogo Barros, António Lourenço, jp2masa, Ruben Mateus, Henrique Silva, André Vala.
  • ロシア語: Ivan Kuzmenko, Roman Slauta.
  • スペイン語: Jorge Serrano Pérez, José M. Aguilar, Alberto Poblacion, Carlos Mendible, Alejandro Medina, Andy Gonzalez,Carlos Herrera.
  • タミル語: Vijay Nirmal, rajakvk, Anand AV.
  • トルコ語: Mustafa Turhan, Fırat Payalan, Selim Ata.