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

2018年10月 (バージョン 1.29)

更新 1.29.1: この更新により、これらの問題が解決されました。

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


Visual Studio Code の2018年10月リリースへようこそ。このバージョンには、皆さんに気に入っていただけるであろう重要なアップデートが多数含まれており、主なハイライトは以下の通りです。

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

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

  • ワークベンチ - プラットフォーム固有の改行コード、変更されたファイルタブのハイライト表示。
  • 統合ターミナル - 分割ターミナルのカレントディレクトリオプション、Cmd+Backspaceで行頭まで削除。
  • 言語 - ホバー時にCSS詳細度を表示、不明なCSSプロパティの処理。
  • デバッグ - 複数デバッグコンソール、エントリで停止して開始、console.logメッセージのスタイル設定。
  • 拡張機能作成 - アクティブターミナルAPI、カスタムビューのより詳細な制御。

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

VS Codeが複数行検索に対応しました!エディターと同様に、正規表現検索は\nリテラルが含まれる場合にのみ複数行モードで実行されます。検索ビューでは、各複数行の一致の横に、追加の一致行数を示すヒントが表示されます。

Multiline search

この機能は、複数行検索の実装のためにripgrepツールで行われた作業のおかげで実現しました。

"search.usePCRE2": trueを設定することで、正規表現検索で後方参照先読みアサーションを使用できるようになりました。これにより、ripgrepPCRE2正規表現エンジンを使用するように構成されます。PCRE2は他にも多くの機能をサポートしていますが、VS Codeの開いているエディターはエディターのJavaScriptベースの検索を使用して検索されるため、JavaScriptで引き続き有効な正規表現のみをサポートしています。

Fancy regex search

後読みアサーションがまだない場合でも、ご安心ください!その機能は最近JavaScriptでサポートされたばかりで、今後のElectronシェルアップデートでVS Codeにも導入される予定です。

検索ビューで各一致の行番号を表示する設定 search.showLineNumbers を追加しました。

検索と置換のプレビューを無効にする

検索ビューで検索/置換を実行したときに表示されるプレビュー差分を無効にできる新しい設定 search.useReplacePreview が追加されました。

line numbers

Gitでは、core.excludesfile 設定プロパティを使用してグローバルなgitignoreファイルを構成できます。デフォルトでは、検索はグローバルなgitignoreファイルを尊重しませんが、新しい設定search.useGlobalIgnoreFilesを有効にすることで、これを変更できるようになりました。

ワークベンチ

macOS Mojave ダークモード対応

VS CodeでmacOS Mojaveのダークモードがより良くサポートされるようになりました。以前は、macOSがダークテーマで実行されている場合でも、VS Codeのメニューやダイアログはデフォルトのライトテーマで表示されていました。これで、すべてのネイティブUI要素が有効な場合はダークモードで表示されます。

macOS Mojave Dark Mode

macOSフルスクリーンサポート

新しい設定 window.nativeFullScreen が導入されました。これを false に設定すると、ネイティブのmacOSフルスクリーン機能を使用しないVS Codeのフルスクリーンモードが有効になります。これにより、フルスクリーンモードに入ってもデスクトップにmacOSスペースが作成されないという利点があります。デフォルトでは、VS Codeは引き続きmacOSネイティブフルスクリーンを使用します。

files.eolの新しいデフォルト: auto

改行設定 files.eol に新しいデフォルト値 auto が追加されました。auto に設定すると、新規ファイルの改行文字はオペレーティングシステムに固有のものになります。Windowsでは \r\n、macOSとLinuxでは \n です。また、file.eol を明示的に \n または \r\n に設定することも可能です。

変更されたタブをハイライト

新しい設定 workbench.editor.highlightModifiedTabs は、エディターがダーティ状態(未保存の変更がある)の場合に、エディタータブの上部に太い枠線を表示します。これにより、保存が必要なファイルを簡単に見つけることができます。枠線の色はカスタマイズ可能です(下記参照)。

Highlight modified tabs

中央揃えエディターレイアウトの自動リサイズ

中央揃えレイアウトビューは、エディターグループが2つ以上開いている場合、自動的に最大幅にリサイズされるようになりました。これにより、中央揃えレイアウトが使いやすくなり、手動での切り替えが減るはずです。この動作は、新しい設定 workbench.editor.centeredLayoutAutoResize によって制御され、デフォルトで有効になっています。

ブレッドクラムにおけるシンボル順序

ブレッドクラムピッカー内のシンボルの順序を制御する新しい設定 breadcrumbs.symbolSortOrder が追加されました。

許容される値は以下の通りです

  • position - ファイル内の位置 (デフォルト)
  • name - アルファベット順
  • type - シンボルタイプ順

以下の例は、ブレッドクラムシンボルリストが名前順に並べ替えられている様子を示しています。

Breadcrumb picker ordered by name

ブレッドクラムとプレビューエディター

ブレッドクラムナビゲーションのアイテムを中央クリックすると、新しいエディターで開かれるようになり、プレビューエディターを再利用しなくなりました。この動作は、エクスプローラーでファイルを中央クリックする動作と一致するようになりました。

ボタンが表示されていても通知が自動的に非表示になる

以前は、ボタンが含まれている通知はVS Codeが非表示にすることはありませんでした。その結果、通知が右下隅に溜まり、エディターの一部を覆ってしまう可能性がありました。このリリースでは、ボタンが表示されていても通知はタイムアウト後に非表示になります。

2つの例外があります

  • error 深刻度の通知は、ユーザーが何らかのアクションを取る必要があるという仮定に基づき、非表示になりません。
  • VS Codeからの特定の通知は開いたままになります。例えば、VS Code Marketplaceを閲覧した後、拡張機能をインストールするかどうかを尋ねる通知などです。

注: 通知が非表示になっていても、ステータスバーの小さなベルアイコンをクリックするか、通知を表示 (notifications.toggleList) コマンドで、いつでもすべての通知にアクセスできます。

パネル位置ボタンをコンテキストメニューへ

水平方向のスペースを確保し、煩雑さを軽減するために、パネル位置切り替えボタン(右へ移動下へ移動)をパネルタイトル領域から削除しました。このアクションは、パネルタイトル領域のコンテキストメニューおよび表示 > 外観 > パネル位置を切り替えるのメインメニューから利用できるようになりました。このボタンを削除したもう一つの理由は、ユーザーはレイアウトを一度設定すれば、通常は行ったり来たりしないと考えているためです。

Move panel

ファイルタイプごとのファイルアイコンの更新

前回のリリースで、一般的なVS Codeファイルタイプにカスタムアイコンを追加しました。今回、それらのアイコンをより小さなビューにも追加したため、リストビューにも表示されるようになります。

Updated file icons

設定エディターでは、設定が現在選択されているスコープ(ユーザー、ワークスペース)以外のスコープで構成されている場合にヒントを表示します。この他のスコープのヒントは、他のスコープ内の設定に移動するリンクになりました。

modified in link

ツリーウィジェットのパフォーマンス

VS CodeのツリーウィジェットコントロールはVS Code UIの多くの場所で使用されていますが、特定のユースケース(問題パネル、アウトラインビュー)ではパフォーマンスの限界に達していました。APIの利便性とパフォーマンスの異なるレベルに対応できる、より高速な仮想ツリーウィジェットの実装に取り組んできました。詳細についてはこちらをご覧ください。

新しい ObjectTree ウィジェットが問題パネルで使用されるようになり、すでに大幅な改善が見られます。ワークベンチが処理できる問題アイテムの数を劇的に増やし、特定の操作(すべて折りたたむなど)や高度なフィルタリングシナリオの速度も向上させることができました。これらの改善により、大規模なコレクションサイズでも作業が現実的になりました。

ワークベンチナビゲーションコマンド

ワークベンチナビゲーションを改善するために4つのコマンドが追加されました

  • workbench.action.nextSideBarView: サイドバーの次のビューへ移動。
  • workbench.action.previousSideBarView: サイドバーの前のビューへ移動。
  • workbench.action.nextPanelView: 次のパネルへ移動。
  • workbench.action.previousPanelView: 前のパネルへ移動。

デフォルトでは、これらのコマンドにはキーボードショートカットは割り当てられていません。

sideBarFocuspanelFocus の2つのコンテキストキーも追加されました。これにより、異なるワークベンチ領域で異なるコマンドに同じキーバインドを使用できます。

[
  { "key": "cmd+]", "command": "workbench.action.nextEditor" },
  { "key": "cmd+[", "command": "workbench.action.previousEditor" },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextPanelView",
    "when": "panelFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousPanelView",
    "when": "panelFocus"
  }
]

workbench-navigation

ビューグループの親を表示

ビューを開くコマンド(クイックオープンでのview)は、ビュー階層をより良く表現するために、各ビューグループの親を表示するようになりました。例えば、エクスプローラーグループはサイドバー / エクスプローラーとして表示され、ターミナルグループはパネル / ターミナルとして表示されます。

structured-view

エディター

IntelliSenseでのファイルとフォルダーのアイコン

IntelliSenseウィジェットは、ファイルアイコンテーマに基づいて、ファイル補完のためのファイルとフォルダーのアイコンを表示するようになりました。これにより、統一された外観が提供され、異なるファイルタイプをすばやく識別するのに役立ちます。

File Icons in IntelliSense

選択範囲のフォーマット

小さなフォーマット操作を高速化するため、エディターの選択範囲がない場合の選択範囲のフォーマットコマンドは、現在の行をフォーマットするようになりました。

エラーコードを表示

エディターでエラーコードが定義されている場合、その問題のエラーコードが表示されるようになりました。エラーコードは行末に角括弧で囲んで表示されます。

以下では、TypeScriptがエラーコード「2339」を表示しているのがわかります。

error codes

統合ターミナル

分割ターミナルで作業ディレクトリを継承可能に

ターミナルが分割されたときに、新しいターミナルのカレントワーキングディレクトリ (cwd) を制御する設定 terminal.integrated.splitCwd が追加されました。

  • workspaceRoot - 以前の動作。新しい分割ターミナルはワークスペースのルートを作業ディレクトリとして使用します。マルチルートワークスペースでは、使用するルートフォルダーの選択肢が提供されます。
  • initial - 新しい分割ターミナルは、親ターミナルが開始した作業ディレクトリを使用します。
  • inherited - macOSとLinuxでは、新しい分割ターミナルは親ターミナルの作業ディレクトリを使用します。Windowsでは、これはinitialと同じ動作をします。

Cmd+Backspace で行頭まで削除

macOSに新しいキーバインド Cmd+Backspace が追加され、ターミナルに \u0015 (Ctrl+U) を送信します。bashでは、これによりカーソルから行頭までが削除され、zshでは行全体が削除されます。

実験的なバッファの改善

新しい設定 terminal.integrated.experimentalBufferImpl を使用すると、ターミナルがバッファを TypedArray/ArrayBuffer ベースの実装で格納する方法を変更できます。これを有効にすると、メモリ使用量とガベージコレクションの削減、ターミナルのスループット全体の向上など、全体的なパフォーマンスの改善が期待できます。

{
  "terminal.integrated.experimentalBufferImpl": "TypedArray"
}

これはまだ始まりに過ぎず、この実装がデフォルトになるまでに、次のいくつかのリリースでスループットとメモリ使用量のさらなる改善を期待しています。この数か月にわたるプロジェクトの主要な原動力となってくれたxterm.jsチームの@jerchに感謝します。

タスク

タスク実行前にターミナルをクリア

タスクのpresentation設定に新しいプロパティ clear が追加されました。タスクが実行される前にターミナルをクリアするには、clear プロパティを true に設定します。

デバッグ

折りたたみ可能なスタックフレーム

デバッガーのコールスタックには、ユーザーにとって興味のないスタックフレーム(外部コード、スキップされたファイルなど)が含まれている場合があります。煩雑さを減らし、垂直スペースを節約するために、それらの興味のないスタックフレームを折りたたんで表示するようになりました。

stack frames

ロード済みスクリプトビューの改善

このマイルストーンでは、ロード済みスクリプトビューを更新してファイルアイコンをサポートし、関連リソースを子要素として表示する機能を追加しました。デバッグ拡張機能は、この機能を使用して、スクリプトにトランスパイルされたソースファイルを表示できます。

Node.jsデバッガーの次の図は、JavaScriptファイルのTypeScriptソース(ソースマップで利用可能)を示しています。

loaded scripts view

関連リソース機能には、デバッグ拡張機能によるオプトインが必要です。10月リリースでは、Node.jsバージョン8.0未満(「レガシー」)に対してのみ、node-debugがこの機能の実験的なサポートを提供しています。

複数のデバッグコンソール

複数のデバッグセッションをデバッグする際、その出力が異なるデバッグコンソールに表示されるようになりました。これにより、どのデバッグセッションがどの出力と評価を担当しているかを区別しやすくなります。

multiple debug consoles

エントリで停止してデバッグを開始

Node.jsデバッグ用に、新しいコマンドデバッグ: デバッグを開始してエントリで停止 (extension.node-debug.startWithStopOnEntry) を追加しました。プログラムのエントリでデバッグを開始してすぐに停止したい場合は、このコマンドを使用してください。デフォルトのキーバインドはF11です。このコマンドは、選択した起動構成がnodeタイプの場合にのみ利用可能です。

Nodeデバッグがconsole.logのスタイル設定をサポート

Node.js(または「Debugger for Chrome」拡張機能を使用したChrome)をデバッグする際に、Chrome DevToolsがサポートするのと同様に、%c を使用して console.log からのメッセージをスタイル設定できるようになりました。サポートされるプロパティは、colorbackgroundfont-weight: bold、および text-decoration: underline です。

console styles

ブレークポイントウィジェットが複数行に展開

ブレークポイントウィジェットが複数行に展開できるようになりました。Shift+Enterで追加の行を挿入するか、複数行の条件やログメッセージを貼り付けるだけで使用できます。これにより、より複雑な条件やログメッセージの編集が容易になります。

breakpoint widget

言語

TypeScript 3.1.4

このリリースにはTypeScript 3.1.4が含まれており、いくつかの重要なバグを修正した小さなアップデートです。

Markdownスニペットの改善

リンクやコードブロックなどの組み込みMarkdownスニペットは、デフォルトで現在選択されているテキストを使用するようになりました。これにより、現在選択されているテキストをリンクや見出しに変換するキーバインドを作成できます。

{
  "key": "cmd+k",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "langId": "markdown",
    "name": "Insert link"
  }
}

ホバーメッセージにCSS詳細度を表示

CSSホバーでCSSの詳細度が表示されるようになりました。

css-specificity

不明なCSSプロパティの処理

PostCSSなどのCSSプリプロセッサを使用すると、開発中に有効なプロパティにコンパイルされる無効なプロパティを使用する場合があります。[css/less/scss].lint.validProperties 設定により、VS Codeがそれらの無効なプロパティをエラーとしてマークするのを防ぎます。

CSSゼロ単位警告の改善

CSSは、CSSショートハンドプロパティ値で使用されているゼロ単位をlintするようになりました。たとえば、0px は警告を発するようになります。

JSONスキーマ読み込みエラーの優雅な処理

VS CodeがIntelliSenseやJSONファイルのエラーチェックに使用されるJSONスキーマをダウンロードできない場合、ステータスバーに警告が表示されます。

json-schema-loading

以前は、エディターにエラーが表示されていました。

エンジニアリング

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をインストールしてください。

VS Codeコアの厳密なnullチェック

このマイルストーンでは、VS CodeコアソースでTypeScriptの厳密なnullチェックを有効にする作業を開始しました。厳密なnullチェックは、多くの一般的なプログラミングミスを捕捉し、プログラマーの意図をより明確にするのに役立ちます。VS Codeの組み込み拡張機能で厳密なnullチェックを使用する明確な利点を確認しています。

VS Codeのコアソースには数千のファイルが含まれているため、厳密なnullチェックを段階的に採用しています。まずインポートのないファイルの厳密なnullチェックを開始し、次に他の厳密なnullチェック済みファイルのみをインポートするファイルで厳密なnullチェックを繰り返し有効にしています。これはコードベース全体が変換されるまで続きます。

厳密なnullチェックの有効化は大規模なエンジニアリング作業ですが、ソースコードと製品の品質という点でそれだけの価値があると私たちは考えています。厳密なnullチェックの進捗状況はこちらで確認できます。

その他

低コントラストのメニューバー

Ubuntu 18.10 または、ライトまたはダークのコンテキストメニューとアプリケーションメニューバーのテーマが混在しているGTKテーマを使用している場合、コントラストの低いメニューバーが表示され、読みにくい場合があります。

これには2つの回避策があります

  • window.titleBarStyle設定をcustomに設定して、VS Codeカスタムタイトルバースタイルを試してください。
  • GTKテーマを変更します。これは、Gnome Tweaksアプリケーションをインストールし、以前のデフォルトテーマであるAdwaitaを使用することで可能です。

この問題に関する情報は、Issue 62593で追跡できます。

Electronの更新

このリリースでは、Electron 2.0.9から2.0.12にアップデートしました。

プレビュー機能

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

参照ビュー

新しいコマンドすべての参照を検索が追加され、参照検索結果を表示する専用のサイドバービューが表示されます。これは、既存のPeekビュー表示を補完し、より安定した参照リストを提供します。コンテキストメニューですべての参照を検索 () を選択すると、検索結果と同じように、参照が別のビューに表示されます。

References View

結果は安定しており、個々の結果はクリアできるため、ビューをToDoリストとして使用する場合に非常に便利です。F4および⇧F4 (Windows, Linux Shift+F4)を使用して、キーボードから手を離さずに結果をナビゲートできます。

ご意見をお聞かせください。次回のアップデートでエクスペリエンスをさらに改善していきます。

拡張機能の作成

正規化された拡張機能サンプル

vscode-extension-samplesにあるVS Code拡張機能サンプルが、一貫性を持たせるために更新されました。

各拡張機能サンプルには現在以下が含まれています

  • 統一されたコーディングスタイルと構造。
  • 短いアニメーションでサンプルの機能を説明するREADME。
  • 各サンプルで使用されている vscode APIまたは貢献ポイントのリスト。

拡張機能のバンドル化

バンドルされた拡張機能はより速く読み込まれます。そのため、拡張機能をwebpackする方法を示すサンプルを作成しました。

パブリッシャーを必要とせずに拡張機能を開発

初期の拡張機能開発を簡素化する目的で、Yeoman Extension Generatorテンプレートからpublisherフィールドが削除されました。publisher識別子を持たない拡張機能の場合、VS Codeはそれらをundefined_publisherとして読み込むようになりました。ただし、vsceパブリッシングツールは、Marketplaceに拡張機能を公開しようとした際に有効なパブリッシャーがない場合に警告を表示します。

アクティブターミナルAPI

アクティブなターミナルにアクセスできる提案中のAPI、window.activeTerminalwindow.onDidChangeActiveTerminalが安定版になりました。

ボタン付き通知がタイムアウト後に非表示に

拡張機能が非モーダルオプションとボタン付きでshowInformationMessageまたはshowWarningMessage APIを使用している場合、これらの通知が一定のタイムアウト後に非表示になるようになったことに注意してください。showErrorMessageによってトリガーされ、ボタンがある通知のみが以前と同じように開いたままになります。ユーザーから即座の入力を得る必要がある場合や、メッセージを目立つように表示する必要がある場合は、引き続きオプションとしてmodal: trueを使用できます。これにより、ユーザーが解除するまで操作をブロックするモーダルダイアログが表示されます。ただし、ユーザーの作業を中断するため、このオプションの過剰な使用は推奨しません。

カスタムビュー: 表示された要素を展開

reveal APIのexpandオプションを使用して、要素を展開して表示できるようになりました。また、レベル数を渡すことで子要素を再帰的に展開することもサポートしています。

注: 最大3レベルまでしか展開できません。

/**
 * Reveals the given element in the tree view.
 * If the tree view is not visible then the tree view is shown and element is revealed.
 *
 * By default revealed element is selected.
 * In order to not to select, set the option `select` to `false`.
 * In order to focus, set the option `focus` to `true`.
 * In order to expand the revealed element, set the option `expand` to `true`. To expand recursively set `expand` to the number of levels to expand.
 * **NOTE:** You can expand only to 3 levels maximum.
 *
 * **NOTE:** [TreeDataProvider](#_TreeDataProvider) is required to implement [getParent](#_TreeDataProvider.getParent) method to access this API.
 */
reveal(element: T, options?: { select?: boolean, focus?: boolean, expand?: boolean | number }): Thenable<void>;

新しいテーマカラー

新しいテーマカラーがあります

  • tab.activeModifiedBorder: アクティブグループのアクティブな変更済み(ダーティ)タブの上端にある境界線。
  • tab.inactiveModifiedBorder: アクティブグループの非アクティブな変更済み(ダーティ)タブの上端にある境界線。
  • tab.unfocusedActiveModifiedBorder: フォーカスされていないグループのアクティブな変更済み(ダーティ)タブの上端にある境界線。
  • tab.unfocusedInactiveModifiedBorder: フォーカスされていないグループの非アクティブな変更済み(ダーティ)タブの上端にある境界線。
  • editor.stackFrameHighlightBackground: エディターで最上位のデバッグスタックフレームのハイライトの背景色。デフォルトでは黄色。
  • editor.focusedStackFrameHighlightBackground: エディターでフォーカスされているデバッグスタックフレームのハイライトの背景色。デフォルトでは緑色。

Git拡張機能APIの追加

Git拡張機能APIが更新され、各リポジトリの実際の変更点の詳細が公開されました。

加えて、以下のメソッドが公開されました。

Azure Pipelinesを使用した拡張機能CI

Azure Pipelinesを使用して拡張機能の継続的インテグレーションソリューションを設定する方法に関するドキュメントを更新しました。新しいガイドでは、Windows、macOS、Linuxで同時に拡張機能テストを実行できる構成を提供します。

Azure Pipelines CI results

提案された拡張API

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

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

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

クリップボードAPI

クリップボードにアクセスするための提案中のAPIがあります。これは、今後のブラウザClipboard APIに準拠しており、現在テキストの読み書きが可能です。

export interface Clipboard {
  readText(): Thenable<string>;
  writeText(value: string): Thenable<void>;
}
export namespace env {
  const clipboard: Clipboard;
}

補完テキストの挿入ルール

補完項目の挿入動作を変更するための新しい提案APIがあります。デフォルトでは、複数行の補完は現在の行のインデントに一致するように「再フォーマット」されます。このインデントが不要な場合があり、新しい提案APIでは補完でこれをオフにできます。CompletionItemInsertTextRule は、補完が設定できる KeepWhitespace ルールを持つビットマスクです。

カスタムビュー

すべて折りたたむアクション

TreeViewを作成する際にshowCollapseAllオプションをtrueに設定するだけで、すべて折りたたむアクションをビューに追加できます。

/**
 * Options for creating a [TreeView](#_TreeView]
 */
export interface TreeViewOptions<T> {
  /**
   * A data provider that provides tree data.
   */
  treeDataProvider: TreeDataProvider<T>;

  /**
   * Whether to show collapse all action or not.
   */
  showCollapseAll?: boolean;
}

namespace window {
  export function createTreeView<T>(
    viewId: string,
    options: TreeViewOptions<T>
  ): TreeView<T>;
}

VS Codeはすべて折りたたむ機能を提供し、オプトインしたすべてのビューで同じアイコンと場所で表示します。

Collapse All

TreeItemラベルのハイライト

highlightsオプションを使用して範囲を指定することで、TreeItemラベルをハイライト表示できます。これは提案中のAPIであるため、ハイライトを更新するにはTreeItem2を使用する必要があります。

/**
 * Label describing the [Tree item](#_TreeItem)
 */
export interface TreeItemLabel {
  /**
   * A human-readable string describing the [Tree item](#_TreeItem).
   */
  label: string;

  /**
   * Ranges in the label to highlight. A range is defined as a tuple of two number where the
   * first is the inclusive start index and the second the exclusive end index
   */
  highlights?: [number, number][];
}

export class TreeItem2 extends TreeItem {
  /**
   * Label describing this item. When `falsy`, it is derived from [resourceUri](#_TreeItem.resourceUri).
   */
  label?: string | TreeItemLabel | /* for compilation */ any;

  /**
   * @param label Label describing this item
   * @param collapsibleState [TreeItemCollapsibleState](#_TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#_TreeItemCollapsibleState.None)
   */
  constructor(label: TreeItemLabel, collapsibleState?: TreeItemCollapsibleState);
}

Label highlights

ソース管理入力ボックスを非表示

SourceControlInputBoxインスタンスに新しい提案APIプロパティが追加され、ソース管理プロバイダーUIビューの上部にある入力ボックスを非表示にできるようになりました。

export interface SourceControlInputBox {
  /**
   * Controls whether the input box is visible (default is  true`).
   */
  visible: boolean;
}

SignatureHelpContext

提案されているSignatureHelpContextは、シグネチャヘルプが要求された理由に関する追加情報をSignatureHelpProvidersに提供します。

export interface SignatureHelpProvider {
  provideSignatureHelp(
    document: TextDocument,
    position: Position,
    token: CancellationToken,
    context: SignatureHelpContext
  ): ProviderResult<SignatureHelp>;
}

SignatureHelpContext には以下が含まれます

  • シグネチャヘルプがトリガーされたアクション
  • トリガー文字(もしあれば)
  • これは再トリガーだったか?(シグネチャヘルプはすでに表示されていたか)
/**
 * Contains additional information about the context in which a
 * [signature help provider](#_SignatureHelpProvider.provideSignatureHelp) is triggered.
 */
export interface SignatureHelpContext {
  /**
   * Action that caused signature help to be requested.
   */
  readonly triggerReason: SignatureHelpTriggerReason;

  /**
   * Character that caused signature help to be requested.
   *
   * This is `undefined` when signature help is not triggered by typing, such as when invoking signature help
   * or when moving the cursor.
   */
  readonly triggerCharacter?: string;

  /**
   * Whether or not signature help was previously showing when triggered.
   *
   * Retriggers occur when the signature help is already active and can be caused by typing a trigger character
   * or by a cursor move.
   */
  readonly isRetrigger: boolean;
}

/**
 * How a [Signature provider](#_SignatureHelpProvider) was triggered
 */
export enum SignatureHelpTriggerReason {
  /**
   * Signature help was invoked manually by the user or by a command.
   */
  Invoke = 1,

  /**
   * Signature help was triggered by a trigger character.
   */
  TriggerCharacter = 2,

  /**
   * Signature help was triggered by the cursor moving or by the document content changing.
   */
  ContentChange = 3
}

さらに、この提案により、SignatureHelpProvider を一連の triggerCharacters と個別の retriggerCharacters で登録できるようになります。

export interface SignatureHelpProviderMetadata {
  readonly triggerCharacters: ReadonlyArray<string>;
  readonly retriggerCharacters: ReadonlyArray<string>;
}

namespace languages {
  export function registerSignatureHelpProvider(
    selector: DocumentSelector,
    provider: SignatureHelpProvider,
    metadata: SignatureHelpProviderMetadata
  ): Disposable;
}

retriggerCharacters は、シグネチャヘルプがすでに表示されている場合にのみ、シグネチャヘルププロバイダーを呼び出す原因となります。

拡張機能への貢献

私たちのチームは、いくつかの VS Code 拡張機能を維持または貢献しています。特に今月は以下です。

Go

Go 1.11で新しいGoモジュールを使用する際に、Go拡張機能が現在サポートしている主な機能は以下の通りです。

  • コードナビゲーション(定義へ移動、シグネチャヘルプ、ホバー時のシンボル情報)
  • コード補完
  • コードカバレッジ
  • コード診断
  • Go: インポートを追加Go: パッケージを参照 などのパッケージ関連コマンド

詳細については、Visual Studio CodeでのGoモジュールサポートに関するwikiをお読みください。

Go拡張機能のその他の注目すべき機能は以下の通りです。

  • SourcegraphのLanguage ServerがWindowsでもサポートされるようになりました。
  • オートコンプリートウィジェットで、提案されたシンボルのドキュメントが表示されるようになりました。⌃Space (Windows, Linux Ctrl+Space)を押すと、オートコンプリートウィジェットの詳細セクションを展開/折りたたむことができます。
  • クロスコンパイル時にもオートコンプリートがサポートされるようになりました。これはGo 1.11の新しいWebAssemblyサポートを試す際に特に役立ちます。
  • デバッグビューの変数ペインで、値のコピー式としてコピーウォッチに追加のオプションがコンテキストメニューから利用できるようになりました。
  • ファイルを保存する際に現在のファイルのみをlintするオプション。

TypeScript TSLintプラグイン

新しいTypeScript TSLintプラグインは、TSLintをTypeScript言語サービスプラグインとして有効にします。これらのプラグインは、VS Code、Visual Studio、Atom、Sublime Textなど、TypeScript言語サービスを使用するあらゆるエディターで動作します。

また、TypeScript TSLintプラグインをバンドルした拡張機能もリリースしました。これにより、ワークスペースでプラグインを設定する必要がありません。

GitHubプルリクエスト

このマイルストーンでは、GitHub Pull Requests拡張機能の改善に取り組みました。この拡張機能は、エディター内と説明ページの両方でコメントの編集と削除をサポートするようになり、まだ送信されていないコメントのキャッシュも改善されました。拡張機能の完全なリリースノートはこちらで読むことができます。

新しいドキュメント

Pythonチュートリアルのデプロイ

VS CodeでPython Webアプリケーションをデプロイする方法を示す2つの新しいPythonチュートリアルがあります。

デバッグレシピ

PHPPythonRuby on Rails向けの新しいVS Codeデバッグレシピがあります。

主な修正

  • 54214: ビルドが失敗してもvscodeのstartDebuggingメソッドがtrueを返す
  • 57289: 設定UIはリロード時に検索内容を記憶すべき
  • 57321: 設定検索で結果がない場合に「検索をクリア」と「フィルターをクリア」ボタンを表示する
  • 59305: .code-workspaceファイルに「ワークスペースを開く」ボタンを表示する
  • 59430: nodeの内部ファイルでブレークできなくなった
  • 61711: 全てのブレークポイントが未検証
  • 62085: PauseRequestがdebugAdapterによって受信されない
  • 62346: デバッグセッションの初期化中にキャンセルできない
  • 62354: Node 10.12以降のリモートデバッグの問題

謝辞

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

vscodeへの貢献者

vscode-eslintへの貢献者

vscode-languageserver-nodeへの貢献者

language-server-protocolへの貢献者

vscode-html-languageserviceへの貢献

vscode-css-languageserviceへの貢献者

vscode-json-languageserviceへの貢献

debug-adapter-protocolへの貢献者

vscode-debugadapter-node への貢献

vscode-chrome-debug-coreへの貢献

  • @digeff
    • file:///を使用するNode.jsの最新バージョンに適応し、存在するファイルにはsourceRefを送信しない PR #373
    • NTVSユニットテストの最初の行でBPにヒットしない問題を修正 PR #369
    • ネットワークパスでノードがブレークポイントにヒットしない問題を修正 PR #368
  • @rdegelo
    • デバッグコンソールのスタイルを改善。下線と背景色をサポート PR #374
    • デバッグコンソールでの基本的なカラーエスケープシーケンスのサポートを追加 PR #367

vscode-generator-codeへの貢献者

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

vscode-extension-samplesへの貢献

vscode-recipesへの貢献

inno-updaterへの貢献

localizationへの貢献

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

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

  • ボスニア語: Dario Fuzinato。
  • ブルガリア語: Любомир Василев.
  • カタルーニャ語: joanmiro pisa。
  • チェコ語: Vít Staniček, Kryštof Černý, Michal Franc。
  • オランダ語: Gerald Versluis, Vincent Verbist。
  • 英語 (イギリス): Matthew John Cheetham, Alexander Ogilvie。
  • フィンランド語: Petri Niinimäki, Feetu Nyrhinen。
  • フランス語: Antoine Griffard, Adrien Clerbois。
  • ドイツ語: J.M. Rütter, Volkmar Rigo。
  • ギリシャ語: Dimitris Siakavelis, Christos Koutsiaris。
  • ヒンディー語: Ashwini Gupta, Bimal ., Brahma Dev, Rahul Bhammarker。
  • ハンガリー語: Tar Dániel.
  • 簡体字中国語: Joel Yang, pluwen, Zijian Zhou, Simon Chan。
  • 繁体字中国語: Duran Hsieh, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin。
  • インドネシア語: Rizki A. Wibowo, Laurensius Dede Suhardiman, Fahmi Irsyad khairi, Wildan Mubarok, G-RiNe Project, Pratikto Ariestyadi, Joshua Siagian, William Tantiono, Herman Prawiro, Febrian Setianto (Feber), Angger Rafi Akbar, Joseph Aditya P G, Oka bRionZ, rodin。
  • イタリア語: Alessandro Alpi, Riccardo Cappello, Marco Dal Pino, Roberto Albano, Andrea Dottor, Luigi Bruno。
  • 日本語: Shunya Tajima, Yuichi Nukiyama, Satoshi Kajiura, Yoshihisa Ozaki。
  • カンナダ語: Sanjay !。
  • 韓国語: Kyunghee Ko, Junseong Jang。
  • リトアニア語: Martynas Jusys.
  • マラヤーラム語: Ajith S Punalur, Anand Chalakkal Jose Mohan, Kiren Paul。
  • ノルウェー語ブークモール: Espen Klein Nilsen。
  • ポーランド語: Artur, Andrzej Supermocny, Jan Bońkowski, Mateusz Wyczawski, Warchlak。
  • ポルトガル語 (ブラジル): Rodrigo Crespi, Roberto Fonseca, Danilo Dantas, Thiago Aragão, Thiago Moreira de Souza Arrais, Atílio Dadalto, Marcelo Fernandes, Douglas Heydt, Robson Cassiano, Lucas Miranda, Thiago Custodio。
  • ポルトガル語 (ポルトガル): Diogo Barros, António Santos, Antonio Lourenco。
  • ロシア語: Ivan Kuzmenko, Roman Slauta, Michael Crane。
  • スペイン語: José M. Aguilar, Matias Menich, Alberto Poblacion, Daniel J. Pérez Nieto, Andrés Reyes Galgani。
  • タミル語: Nadar Solomon Sunder, Sarath Jasrin, Sakthi Raj, rajakvk, Avinash, ஜெகன் லங்கா சாமி துரை, Anand AV, Jeyanthinath Muthuram, Narayanan Singaram。
  • テルグ語: Rama Chandu, Hari Jujjavarapu, Sai Pavan Koundinya Upadhyayula。
  • ウクライナ語: Svitlana Galianova, Borys Lebeda, Dmytro Kyrychuk, Victor Kubrak, Volodymyr Holovka。
  • ウルドゥー語: Haseeb Anwer, Saqib Ameen, Ahmad Awais。
  • ベトナム語: Thanh Phu, Daniel Nguyen, Nguyễn Nhật Tân, Hung Nguyen, Vuong。