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 の Brian Clark によるこの 1.29 リリースのハイライトビデオもご覧ください。

リリースノートは、VS Code の重点分野に関連する以下のセクションで構成されています。以下に、その他のアップデートを示します。

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

Insiders: 最新機能をいち早く試したいですか? nightly Insiders ビルドをダウンロードして、最新のアップデートをいち早くお試しください。また、Visual Studio Code の最新ニュース、アップデート、コンテンツについては、Twitter @code をフォローしてください。

VS Code は複数行検索をサポートするようになりました。エディターと同様に、正規表現検索は \n リテラルが含まれている場合にのみ複数行モードで実行されます。[検索] ビューには、複数行一致ごとにヒントが表示され、追加の一致行数が示されます。

Multiline search

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

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

Fancy regex search

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

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

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

検索ビューで検索/置換を実行するときに表示されるプレビュー diff を無効にできる新しい設定 search.useReplacePreview があります。

line numbers

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

ワークベンチ

macOS Mojave ダークモードのサポート

macOS Mojave ダークモードが VS Code でより適切にサポートされるようになりました。以前は、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

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

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

ブレッドクラムのシンボル順序

ブレッドクラムピッカーのシンボルの順序を制御する新しい設定があります: breadcrumbs.symbolSortOrder

使用できる値は次のとおりです。

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

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

Breadcrumb picker ordered by name

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

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

ボタンを表示している場合でも通知が自動的に非表示になる

以前は、ボタンが含まれている場合、VS Code は通知を非表示にすることはありませんでした。これにより、通知が右下隅に積み重なり、エディターの一部を覆い隠す可能性がありました。今回のリリースでは、ボタンが表示されている場合でも、タイムアウト後に通知が非表示になります。

2 つの例外があります。

  • ユーザーが何らかのアクションを実行する必要があるという前提で、error 重大度の通知は非表示になりません。
  • VS Code からのいくつかの特定の通知は開いたままになります。たとえば、VS Code Marketplace を参照した後、拡張機能をインストールするかどうかを尋ねる通知などです。

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

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

水平方向のスペースを節約し、 clutter を減らすために、パネルタイトル領域からパネル位置切り替えボタン ([右に移動]、[下に移動]) を削除しました。アクションは、パネルタイトル領域のコンテキストメニューと、[表示] > [外観] > [パネル位置の切り替え] メインメニューでも使用できるようになりました。このボタンを削除したもう 1 つの理由は、ユーザーがレイアウトを一度設定すると、通常は前後に切り替えないと考えているためです。

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: 前のパネルに移動します。

デフォルトでは、コマンドにキーボードショートカットはありません。

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

[
  { "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 に感謝します。

タスク

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

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

デバッグ

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

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

stack frames

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

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

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

loaded scripts view

関連リソース機能は、デバッグ拡張機能によるオプトインが必要であることに注意してください。10 月のリリースでは、node-debug のみが Node.js バージョン < 8.0 (別名「レガシー」) のこの機能を実験的にサポートしています。

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

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

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 短縮プロパティ値で使用される ゼロ単位 をリントするようになりました。たとえば、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 をインストールしてください。

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

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

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

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

その他

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

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

これに対する 2 つの可能な回避策があります。

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

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

Electron アップデート

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

プレビュー機能

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

参照ビュー

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

References View

結果は安定しており、個々の結果をクリアできます。これは、ビューを To Do リストとして使用する場合に最適です。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

アクティブターミナル、window.activeTerminal および window.onDidChangeActiveTerminal へのアクセスを提供する提案された API が安定しました。

ボタン付きの通知はタイムアウト後に非表示になる

拡張機能が非モーダルオプションとボタンで 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
}

さらに、この提案により、SignatureHelpProvidertriggerCharacters のセットと、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 モジュール を Go 1.11 で使用する場合に、Go 拡張機能がサポートする主な機能の一部です。

  • コードナビゲーション ([定義へ移動]、[シグネチャヘルプ]、[ホバー時のシンボル情報])
  • コード補完
  • コードカバレッジ
  • コード診断
  • **Go: Import の追加** や **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 チュートリアルがあります。

デバッグ レシピ

レシピ に、PHPPython、および Ruby on Rails 用の新しい VS Code デバッグ レシピ があります。

注目すべき修正

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

謝辞

最後になりましたが、VS 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。