🚀 VS Codeでをゲットしましょう!

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

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

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

ダウンロード: 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が作成されました。その結果、issue数は1731件の純減となりました。メインのvscodeリポジトリには、現在2472件の未解決の機能リクエストと625件の未解決のバグがあります。さらに、212件のプルリクエストをクローズしました。

皆様が私たちの進捗状況をどれほど気にされているかを知ることができて大変嬉しかったです。Benjamin Lannon氏は、私たちのメインリポジトリのissue数をライブトラッカーで追跡する個人サイトを公開しました。9月11日以降の私たちの進捗状況がよくわかります。

Burn down of issues

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

Increase of issues

この整理のマイルストーン期間中に、いくつかの機能リクエストに対処し、コミュニティからのプルリクエストも新しい機能につながりました。以下に、リリースのハイライトをいくつか紹介します。

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

Insiders: 最新機能をいち早く試したいですか?毎晩更新されるInsidersビルドをダウンロードして、最新のアップデートをいち早くお試しください。

ワークベンチ

Windowsでデフォルトでカスタムタイトルバーとメニューバーを使用

以前のリリースノートで説明したカスタムタイトルバーとテーマ対応メニューが、Windowsでデフォルトで有効になりました。"window.titleBarStyle"設定は、InsidersのWindowsで先月1か月間"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

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

スニペットをプロジェクトにスコープし、チームと共有できるようになりました。Preferences: Configure User Snippetsコマンドを使用するか、.vscodeフォルダーに*.code-snippetsファイルを作成するだけです。プロジェクトスニペットは他のスニペットと同じように機能し、IntelliSenseとInsert Snippetアクションに表示され、独自のカテゴリを持つようになりました。

Project Level Snippet

スニペットは複数のプレフィックスもサポートするようになりました。著作権ヘッダーのスニペットのプレフィックスをheaderstubcopyrightのどれにするか決められない場合は、すべてを指定できます。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から送信されたすべてのテレメトリーイベントを、Developer: Set Log Level...コマンドを使用してログレベルをTraceに設定すると、ローカルファイルにも記録する機能を追加しました。出力パネルのログ(テレメトリー)チャネルでこのファイルの内容を表示できるようになりました。以前と同様に、Developer: Open Log File...コマンドを使用してファイルを直接表示できます。

カスタムビューにフォーカスを当てる

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

Custom view focus commands

Linux URL処理

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

エディター

Tab補完

エディターのTab補完は、あらゆる種類の候補を補完できるようになりました。"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: Wrap with Abbreviation機能は、.html拡張子を持つファイルに限定されなくなりました。
  • Emmet: Balance (inward)機能は、選択範囲がない場合でも現在のノードで動作するようになりました。
  • 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操作中の進捗状況の表示を無効にできます。

Push --force

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

Stash apply

次のgit stash applyコマンドが、グローバルコマンドパレットに追加されました。Git: Stashを適用...Git: 最新のStashを適用

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

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チェーンを使用する関数を、asyncawaitを使用するように書き換えます。

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.enabledおよびtypescript.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つのオプションは、操作の完了を待機し、通知を無視することです。別のオプションは、Running Extensionsビューに移動し、拡張機能ホストのプロファイリングを開始することで、どの拡張機能が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を起動します。これにより、拡張機能は、ユーザーをWebページから特定の状態で拡張機能を実行するまでスムーズな起動フローを実現できます。

診断エラーコード

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

より優れた構成when句

キーバインドまたはメニューの表示を作成する場合、when句が使用されます。when句では、構成(設定)値をconfig.をプレフィックスとして付けることで参照できます。例:config.editor.tabCompletion。ブール値の構成プロパティのみがサポートされていましたが、このリリースでは、文字列値と数値も使用できます。

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

ドキュメントの言語モードを変更するための新しいAPI関数vscode.languages.setTextDocumentLanguageがあります。APIは、ドキュメントと使用する言語識別子を受け取ります。利用可能な言語IDを知るには、vscode.languages.getLanguagesを使用します。

workspaceContainsアクティベーション

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

これらの検索の影響を軽減するために、いくつかの変更を加えました。最初の変更は、これらの検索がユーザーの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

launch.jsonを開くには、resolveDebugConfigurationが明示的にnullを返す必要があります

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

現在、デバッグセッションが開始されるのを防ぎ、代わりにlaunch.jsonを開くには、resolveDebugConfigurationが明示的に値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で公開されている拡張機能では使用できないことに注意してください。ただし、45220の問題に関するDebugConfigurationProvider.provideDebugAdapterに対するフィードバックをお待ちしております。

コメントの編集と削除

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

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 using Azure Pipelinesで、VS Code エンジニアの João Moreno が、VS Code がビルドおよび継続的インテグレーション(CI)インフラストラクチャにAzure Pipelinesをどのように使用しているかについて説明しています。

新しい PowerShell トピック

Visual Studio Code の PowerShell では、Microsoft PowerShell 拡張機能による PowerShell の統合について説明しています。この拡張機能は、IntelliSense、定義へ移動、すべての参照の検索などの強力な言語機能と、デバッグおよびコードスニペットをサポートしています。

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

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

注目すべき修正

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

謝辞

最後になりましたが、VS Codeをさらに良くするためにご協力いただいた以下の皆様に、心から感謝申し上げます!

vscodeへの貢献

language-server-protocolへの貢献

vscode-languageserver-nodeへの貢献

debug-adapter-protocolへの貢献

vscode-recipesへの貢献

vscode-chrome-debugへの貢献

vscode-chrome-debug-coreへの貢献

  • @digeff
    • ソースをログに記録しないようにロギングメカニズムを更新 PR #355
    • 最初の行のbp 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。
  • 日本語: 梶浦 智史, 田嶋 俊哉, 貫名 悠一, 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。