に参加して、VS Code の AI 支援開発について学びましょう。

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更新 にアクセスしてください。
この 1.29 リリースに関するハイライトビデオも、Cloud Developer Advocate のBrian Clark が公開しています。

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

  • ワークベンチ - プラットフォーム固有の行末文字、変更されたファイルタブのハイライト表示。
  • 統合ターミナル - ターミナルを分割する際の cwd オプション、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 は他の多くの機能をサポートしていますが、開いているエディターはエディターの JavaScript ベースの検索を使用して検索されるため、JavaScript で有効な正規表現のみをサポートしています。

Fancy regex search

後方参照アサーションがまだ不足している場合でも心配しないでください!この機能は最近 JavaScript でサポートされたばかりであり、今後の Electron シェルアップデートで VS Code に搭載されるはずです。

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

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

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

line numbers

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

Workbench

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) コマンドから、いつでもすべての通知にアクセスできます。

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

水平方向のスペースを節約し、ごちゃごちゃ感を減らすため、パネルタイトル領域からパネル位置切り替えボタン (右に移動下に移動) を削除しました。このアクションは、パネルタイトル領域のコンテキストメニューと、表示 > 外観 > パネル位置の切り替え メインメニューで利用できるようになりました。このボタンを削除したもう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: 前のパネルに移動します。

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

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

Editor

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 に設定します。

デバッグ

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

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

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 の省略形プロパティ値で使用されているゼロ単位をリンとできるようになりました。たとえば、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.titleBarStyle 設定を custom に設定して、VS Code のカスタムタイトルバースタイルを試してみてください。
  • GTK テーマを変更する。これは Gnome Tweaks アプリケーションをインストールし、以前のデフォルトテーマ Adwaita を使用することで可能です。

この問題に関する情報は、問題 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

アクティブなターミナルへのアクセスを提供する提案された 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 があります。これは、今後のブラウザのクリップボード 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 アプリケーションを展開する方法を示す新しい Python チュートリアルが2つあります。

デバッグのレシピ

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をご覧ください。

  • ボスニア語: ダリオ・フジナート
  • ブルガリア語: Любомир Василев.
  • カタルーニャ語: joanmiro pisa.
  • チェコ語: ヴィート・スタニチェク、クリシュトフ・チェルニー、ミハル・フランツ。
  • オランダ語: ジェラルド・ヴェルシュイス、ヴィンセント・ヴァービスト。
  • 英語 (英国): マシュー・ジョン・チータム、アレクサンダー・オギルビー。
  • フィンランド語: ペトリ・ニーニマキ、フェートゥ・ニューヒネン。
  • フランス語: アントワーヌ・グリファール、アドリアン・クレルボワ。
  • ドイツ語: J.M. リュッター、フォルクマー・リゴ。
  • ギリシャ語: ディミトリス・シアカヴェリス、クリストス・クツィアリス。
  • ヒンディー語: アシュウィニ・グプタ、ビマル・、ブラフマ・デヴ、ラフル・バムマーカー。
  • ハンガリー語: 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。
  • イタリア語: アレッサンドロ・アルピ、リカルド・カッペロ、マルコ・ダル・ピーノ、ロベルト・アルバノ、アンドレア・ドットー、ルイージ・ブルーノ。
  • 日本語: 田島隼也、抜き山祐一、梶浦哲、尾崎義久。
  • カンナダ語: Sanjay !.
  • 韓国語: コ・ギョンヒ、チャン・ジュンソン。
  • リトアニア語: Martynas Jusys.
  • マラヤーラム語: Ajith S Punalur, Anand Chalakkal Jose Mohan, Kiren Paul.
  • ノルウェー語 (ブークモール): エスペン・クライン・ニルセン。
  • ポーランド語: アルトゥール、アンジェイ・スーパーモツニー、ヤン・ボンコフスキ、マテウシュ・ヴィチャフスキ、ヴァーチラク。
  • ポルトガル語 (ブラジル): 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。
  • ポルトガル語 (ポルトガル): ディオゴ・バロス、アントニオ・サントス、アントニオ・ロレンソ。
  • ロシア語: イワン・クズメンコ、ローマン・スラウタ、マイケル・クレーン。
  • スペイン語: 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。
  • テルグ語: ラマ・チャンドゥ、ハリ・ジュッジャヴァルプ、サイ・パヴァン・カウンディニャ・ウパディヤユラ。
  • ウクライナ語: スヴィトラーナ・ガリアーノヴァ、ボリス・レベダ、ドミトロ・キリチュク、ヴィクトル・クブラック、ヴォロディミル・ホロフカ。
  • ウルドゥー語: ハシーブ・アンウェル、サキブ・アミーン、アフマド・アワイス。
  • ベトナム語: タン・フー、ダニエル・グエン、グエン・ニャット・タン、フン・グエン、ヴオン。
© . This site is unofficial and not affiliated with Microsoft.