🚀 VS Codeでで入手しましょう!

2018年8月 (バージョン 1.27)

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

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


Visual Studio Code 2018年8月リリースへようこそ。このバージョンには、多くの重要な更新が含まれており、きっとご満足いただけると思います。主なハイライトは次のとおりです。

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

Insiders: 最新機能をいち早く試したいですか? 夜間のInsidersビルドをダウンロードして、最新の更新情報をすぐに入手できます。また、Visual Studio Codeの最新ニュース、更新情報、コンテンツについては、Twitter @code をフォローしてください!

ワークベンチ

設定エディター

ここ数ヶ月の間、設定を編集するためのGUIを開発してきました。1.27では、それをデフォルトの設定エディターにしています。

Settings UI

JSON設定エディターには、コマンド Preferences: Open User Settings (JSON) を使用するか、"workbench.settings.editor" 設定でデフォルトの設定エディターを変更することで、引き続きアクセスできます。

今月行った改善点の1つは、設定値の説明 (enumDescriptions) をカスタムドロップダウンコントロールに移動することでUIを整理したことです。

dropdown

変更された設定は、エディターで変更された行のように、青い線で示されるようになりました。歯車アイコンをクリックすると、設定をデフォルト値にリセットするオプションを含むコンテキストメニューが開きます。

modified indicator and context menu

設定値が検証されるようになり、検証エラーが表示されるようになりました。

validation error

目次は検索中も表示されたままになり、一致するカテゴリのみを表示するようにフィルタリングされます。カテゴリをクリックすると、結果をそのカテゴリの設定のみにフィルタリングできます。検索中に目次を非表示にする場合は、"workbench.settings.settingsSearchTocBehavior""hidden" に設定してください。

settings search

設定を検索すると、Bingを利用した検索サービスが、関連性があると思われる結果を依然として提供します。現在、そのサービスは、関連する設定を持つMarketplaceの拡張機能も表示します。設定検索結果の下部に、一致する拡張機能を表示 ボタンが表示されます。クリックすると、一致する拡張機能がExtensionsビューで開きます。

extension settings

WindowsおよびLinuxでのカスタムタイトルバーとメニュー

過去数回のイテレーションにわたって、WindowsおよびLinuxでのタイトルバーとメニューのルックアンドフィールとユーザビリティを改善する作業を行ってきました。今回のイテレーションでは、プレビューラベルを削除し、Windowsでこれをデフォルトのエクスペリエンスにすることを目指しています。この機能を有効にするには、"window.titleBarStyle" 設定を "custom" に設定します。

Custom Title Bar and Menus

新しいエクスペリエンスには、デフォルトよりもいくつかの利点があります。

  • 製品全体のテーマ設定可能なタイトルバー、メニューバー、およびコンテキストメニュー。つまり、ダークテーマはダークなままです!
  • メニューバーでのキーボードナビゲーションの改善。キーボードでメニュー間を切り替えたり、メニューニーモニックを使用したりするのが簡単になりました。
  • 邪魔にならないメニューバー。"window.menuBarVisibility""toggle" に設定した場合、新しいエクスペリエンスはよりコンパクトで、邪魔になりません。
  • アクセシビリティの向上。スクリーンリーダーでのメニューのユーザビリティを向上させるために、いくつかのアクセシビリティの問題が解決されました。

この新しいエクスペリエンスをWindowsでデフォルトにしたいと考えているため、ぜひ試してみて、フィードバックをお寄せください。最高の体験を提供できるようにします。

Breadcrumbsの改善

新しいbreadcrumbsバーを調整し、さまざまな改善を行い、バグを修正しました。

  • フォーカスされたドキュメントシンボルがエディターで強調表示されるようになりました。
  • Breadcrumbsは、フォーカスコマンド (⇧⌘; (Windows、Linux Ctrl+Shift+;)) が実行されると自動的に有効になります。
  • Breadcrumbsはテーマとの相性が大幅に向上しました。
  • Breadcrumbsは、ファイル除外設定を尊重するようになりました。

Breadcrumbs Highlights

新しいターミナルメニュー

Tasks メニューの名前が Terminal に変更され、統合ターミナルのエントリがいくつか追加されました。

Terminal Menu

プラットフォーム固有のキーバインド

キーバインドの when 句内で isLinuxisMacisWindows を使用して、特定のオペレーティングシステムのキーボードショートカットを有効にできるようになりました。

[
  {
    "key": "ctrl+o",
    "command": "workbench.action.files.openFolder",
    "when": "!isMac"
  },
  {
    "key": "cmd+o",
    "command": "workbench.action.files.openFolder",
    "when": "isMac"
  }
]

これにより、異なるマシン間で keybindings.json ファイルを共有するのがはるかに簡単になります。

新しいネイティブタブとしてウィンドウを開く

macOS専用の新しいコマンド workbench.action.newWindowTab は、ウィンドウを新しいネイティブタブとして開きます。newWindowTab にはデフォルトのキーバインドがなく、window.nativeTabs 設定を有効にする必要があります。

ファイルが外部で削除/名前変更されたときにファイルが閉じなくなる

workbench.editor.closeOnFileDelete 設定のデフォルトを true から false に変更しました。これは、VS Codeの外部 (またはGitや統合ターミナルのコマンドなどの別のプログラム) によって削除または名前変更されたファイルは、エディタータブとして開いているファイルを閉じなくなることを意味します。代わりに、ファイルはディスクから削除されたことを示し、ファイルを保存するだけで復元できます。

Deleted from Disk

注: ファイルがダーティでない限り、ファイルの内容は再起動間で保持されません。

新しいエディターでファイルを開くための中クリック

エクスプローラービューでマウスの中央ボタンクリックを使用して、プレビューモードで以前のエディターを再利用せずに、新しいエディターでファイルを開くことができるようになりました。

アクセシビリティの改善

キーボードナビゲーション、スクリーンリーダーのサポート、フォーカスを中心としたアクセシビリティの問題をかなり修正しました。完全なリストはこちらにあります。これは継続的な取り組みであり、9月にも継続する予定です。

Windowsバックグラウンドアップデートの改善

一部のユーザーでインストールが破損する問題に対処するために、カスタムWindowsバックグラウンドアップデーターの安定性に関する作業を行いました。これは継続的な作業項目であり、今後のリリースでさらに改善される予定です。

エディター

自動閉じと囲み文字

{[( などの特定の括弧を入力すると、プログラミング言語に応じて、通常は式を開始できない特定の文字 (例: ;:.,=}])>) が後に続く場合、デフォルトで自動的に閉じられます。この動作は、editor.autoClosingBrackets 設定でカスタマイズできます。同様に、"'` などの引用符を入力している間、editor.autoClosingQuotes で自動閉じ動作をカスタマイズできます。

テキストが選択されているときにこれらの文字の1つを入力すると、選択範囲は括弧または引用符で囲まれます。新しい editor.autoSurround 設定を介して、この動作を個別に調整できるようになりました。

言語

CSSインポートのパス補完

CSS、SCSS、Less @import のパス補完が利用可能になりました。SCSSパーシャル @import も処理されます。

css-import

CSS、SCSS、およびLessの @import および url() リンクに対して、定義へのジャンプが追加されました。

css-definition

JSON

組み込みのJSON言語拡張機能は、新しい JSON Schema Draft-07 をサポートするようになりました。

最も興味深い追加は、条件付きスキーマ評価を可能にする ifthenelse キーワードです。

{
  "type": "integer",
  "minimum": 1,
  "maximum": 1000,
  "if": { "minimum": 100 },
  "then": { "multipleOf": 100 },
  "else": {
    "if": { "minimum": 10 },
    "then": { "multipleOf": 10 }
  }
}

if キーワードは、値スキーマの結果が検証に合格した場合、then スキーマを適用し、それ以外の場合は else スキーマを適用することを意味します。

HTML

HTMLフォーマッターが JS Beautifier のバージョン1.8.1に更新されました。

これにより、"html.format.wrapAttributes" 設定に新しいオプションが追加されます。

  • "aligned-multiple" は、最大行長に達したときに属性を折り返し、すべての折り返された行を最初の属性に揃えます。

aligned-multiple

TypeScript 3.0.3

VS CodeにはTypeScript 3.0.3が同梱されるようになりました。このマイナーリリースでは、多くのバグが修正され、安定性が向上しています。変更点の完全なセットについては、こちらをご覧ください。

デバッグ

ロード済みスクリプトビューが再利用可能に

1年以上にわたり、デバッグビューの ロード済みスクリプトエクスプローラー はNode.jsデバッグ拡張機能によって提供されており、他のデバッガーでは利用できませんでした。このリリースでは、ロード済みスクリプトビューを組み込みのデバッガー機能として追加しました。「スクリプト」の概念を持つすべてのデバッグ拡張機能は、動的に更新されるビューでスクリプトへのアクセスをサポートできるようになります。

さらに、古いロード済みスクリプトエクスプローラーのいくつかの欠点を改善しました。

  • 子フォルダが1つのチェーンは、単一のノードに折りたたまれるようになりました。これにより、深くても疎なフォルダ階層をドリルダウンするのがはるかに簡単になります。
  • アクセシビリティの問題に対処し始めました。

ブレークポイントを削除するための中クリック

ブレークポイントビューでマウスの中央ボタンクリックを使用して、ブレークポイントを簡単に削除できるようになりました。

"openDebug" のデフォルトをすべてのセッション開始時に開くように変更

新規ユーザーの場合、デバッグセッションを開始してもデバッグビューが毎回自動的に開かないと、混乱する場合があります。ユーザーがUIにまだ慣れていない場合、UIを開くためにどのようなキーワードを探すべきかわかりません。混乱を避けるために、debug.openDebug のデフォルトを openOnSessionStart に変更しました。これにより、デバッグビューは最初のセッションだけでなく、すべてのセッション開始時に開くようになります (以前のデフォルトの動作でした)。

拡張機能の作成

拡張機能のロギング

activate 関数の引数として提供される ExtensionContext に、新しいプロパティ logPath が追加されました。これは、拡張機能がログファイルを保存できるディレクトリの絶対ファイルパスです。パスは拡張機能ごとに一意であり、他の拡張機能によって再利用されることはありません。

Language Server Protocol

Language Server Protocolの新しいバージョンが利用可能になり、VS Codeで使用するための対応するnodeモジュールが含まれています。

新しいバージョンでは、以下がサポートされています。

  • サーバーからのコードアクション種類の発表により、クライアントは対応するメニューエントリを設定できます。
  • textDocument/prepareRename の実装。
  • Workspace Edits でのファイル操作 (作成、名前変更、削除) のサポート。

vscode-languageclient: JSONログ形式とログストリーミング

以前は、vscode-languageclient を使用してLanguage Server拡張機能を構築する場合、LSPログ をVS Code出力チャネルに送信するために [langId].trace.server を指定できました。

[langId].trace.server は、マシン可読な JSON形式 でロギング情報を出力できるようになりました。

"languageServerExample.trace.server": {
  "format": "json", // or "text"
  "verbosity": "verbose" // or "off" | "messages"
}

これにより、LSP Inspector にLSPログをストリーミングしてLanguage Serverの動作を視覚化するなど、興味深いユースケースが開かれます。

lsp-streaming

詳細については、Microsoft/language-server-protocol-inspector および lsp-log-streaming-sample を参照してください。

デバッグ拡張機能: 組み込みのロード済みスクリプトビュー

ロード済みスクリプトエクスプローラーは、VS Codeデバッガーの組み込みコンポーネントになりました。これを使用するには、デバッガー拡張機能は、次の方法でデバッグアダプターを変更する必要があります。

  • initialize リクエストから返される Capabilities に、値 true を持つ supportsLoadedSourcesRequest 機能を
  • loadedSources リクエストを実装して、ロードされたソースの現在のセットを返します。
  • 新しくロードまたはアンロードされたソースの loadedSource イベントを送信します。

新しいテーマカラー

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

  • breadcrumb.background: breadcrumb項目の背景色。

設定エディターの新しいテーマカラーがあります。

  • settings.dropdownListBorder: 新しいドロップダウンコントロールの境界線の色。
  • settings.modifiedItemIndicator: 変更された設定を示す線の色。

Git拡張機能API

Git拡張機能は、より明確に定義された APIを公開 し始めました。このAPIは、ユーザーのワークスペースで開いているGitリポジトリを操作するために、他の拡張機能から使用できます。まだ初期段階であるため、今後のリリースでAPIを継続的に改善していきます。

提案された拡張機能API

すべてのマイルストーンには、新しい提案されたAPIが付属しており、拡張機能の作成者はそれらを試すことができます。いつものように、フィードバックをお待ちしております。提案されたAPIを試すには、次のことを行う必要があります。

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

提案されたAPIを使用する拡張機能を公開することはできません。次のリリースで重大な変更を加える可能性があり、既存の拡張機能を破損させることは決して望んでいません。

SCM: 選択されたソース管理

拡張機能が、UIでの表示のためにユーザーによって選択されたソース管理インスタンスを認識するために、SourceControl インスタンスには、その状態を表す selected プロパティと onDidChangeSelection イベントが追加されました。

export interface SourceControl {
  /**
   * Whether the source control is selected.
   */
  readonly selected: boolean;

  /**
   * An event signaling when the selection state changes.
   */
  readonly onDidChangeSelection: Event<boolean>;
}

コメントプロバイダー

このイテレーションでは、コメントの概念を導入します。これにより、拡張機能はエディターと新しい Comments パネル内で会話を作成および管理できます。これにより、拡張機能はコードレビューシナリオをサポートできます。

コメントはスレッドに整理され、特定のドキュメントに関連付けられています。

export enum CommentThreadCollapsibleState {
  Collapsed = 0,
  Expanded = 1
}

interface CommentThread {
  threadId: string;
  resource: Uri;
  range: Range;
  comments: Comment[];
  collapsibleState?: CommentThreadCollapsibleState;
}

interface Comment {
  commentId: string;
  body: MarkdownString;
  userName: string;
  gravatar: string;
  command?: Command;
}

コメントを表示するには、拡張機能は DocumentCommentProvider または WorkspaceCommentProvider を登録する必要があります。

export interface CommentThreadChangedEvent {
  readonly added: CommentThread[];
  readonly removed: CommentThread[];
  readonly changed: CommentThread[];
}

interface CommentInfo {
  threads: CommentThread[];
  commentingRanges?: Range[];
}

interface DocumentCommentProvider {
  provideDocumentComments(
    document: TextDocument,
    token: CancellationToken
  ): Promise<CommentInfo>;
  createNewCommentThread(
    document: TextDocument,
    range: Range,
    text: string,
    token: CancellationToken
  ): Promise<CommentThread>;
  replyToCommentThread(
    document: TextDocument,
    range: Range,
    commentThread: CommentThread,
    text: string,
    token: CancellationToken
  ): Promise<CommentThread>;
  onDidChangeCommentThreads: Event<CommentThreadChangedEvent>;
}

interface WorkspaceCommentProvider {
  provideWorkspaceComments(token: CancellationToken): Promise<CommentThread[]>;
  onDidChangeCommentThreads: Event<CommentThreadChangedEvent>;
}

DocumentCommentProvider を使用すると、開いているドキュメントのコメントを返すことができます。コメントを提供する場合、拡張機能は、ドキュメントの現在のスレッドと、新しいコメントの追加をサポートするドキュメントの範囲の両方を指定します。コメントは、ドキュメント内から追加または返信できます。

A comment within an editor

WorkspaceCommentProvider が最初に登録されると、CommentsPanel が表示され、そこに提供されたすべてのコメントが表示されます。コメントは、コメントスレッドとリソースによってグループ化されます。パネルでコメントを選択すると、コメントの command が実行されるため、拡張機能は動作を決定します。

Comments panel

プレビュー機能

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

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

エンジニアリング

拡張機能とwebpack

拡張機能のバンドルに webpack を使用するようになりました。これにより、2つの成果が得られます。(1) ロードするファイル数が少なく、解析するソースが少ないため、拡張機能の起動時間を短縮し、(2) 抽出してディスクに書き込む必要のあるファイル数が少ないため、インストール時間を短縮します。これまでのところ、バンドルサイズを約4000ファイル削減しました!

パフォーマンスカナリア

起動パフォーマンスが低下していないことを確認するためのテストハーネスを追加しました。Insiderビルドのパフォーマンスをテストするために専用マシンにデプロイできる新しいスクリプトがあります。スクリプトは最新のビルドをインストールするだけで、制限時間内に起動することを確認します。今のところ、パフォーマンスがウイルス対策ソフトウェアのアップデートの影響を受けやすいWindowsから開始しましたが、サポートしているすべてのプラットフォームでテストする予定です。

IPCスタックの改善

プロセス間の バイトバッファメッセージ をサポートするために、自作のIPCスタックを改善しました。これにより、オーバーヘッドなしで異なるプロセス間でバイナリデータを送信したり、パフォーマンスのためにIPCを最適化したりするなど、特定のシナリオが可能になります。

注目すべき修正

  • 6363: 保存時に代替データストリームが削除される
  • 25919: 新しいウィンドウをネイティブタブとして強制的に開く新しいコマンド
  • 49021: 保存時にWSL権限メタデータをリセットしない
  • 49403: 統合ターミナルでデバッグするときの自動アタッチの問題
  • 55025: 拡張機能ホストが再起動したときにデバッグを続行できるようにする
  • 56084: 開いているエディター: グループの順序を視覚的な順序に基づいて再検討する
  • 56691: パスに # が存在する場合のvscodeの起動エラー
  • 57018: デバッガーの停止/再起動がbabel-nodeを停止できない

謝辞

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

vscode への貢献

vscode-vsce への貢献

vscode-eslint への貢献

language-server-protocol への貢献

vscode-languageserver-node への貢献

debug-adapter-protocol への貢献

vscode-css-languageservice への貢献

vscode-html-languageservice への貢献

vscode-json-languageservice への貢献

node-jsonc-parser への貢献

vscode-generator-code への貢献

ローカライズへの貢献

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

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

  • ブルガリア語: Любомир Василев。
  • クロアチア語: Nikša Mihaica。
  • デンマーク語: Christoffer Bech。
  • 英語 (英国): Matthew John Cheetham, Swotboy2000。
  • フィンランド語: Petri Niinimäki, Feetu Nyrhinen, Jussi Palo。
  • フランス語: Antoine Griffard, Guillaume Bauer, Smrman。
  • ドイツ語: Carsten Siemens, Carsten Kneip, Jonas Droste, Markus Hatvan, Christian Studer, Peter Schneider, Jonas Keller, thefreshman89。
  • ハンガリー語: Tar Dániel, Bence László。
  • 中国語 (簡体字): Joel Yang, 子实 王, Wang Dongcheng, pluwen, DongWei, Henry Chu, aimin guo, Chris Pan 潘冬冬, 子昂 马。
  • 中国語 (繁体字): Duran Hsieh, Winnie Lin, Poy Chang, Alan Tsai。
  • インドネシア語: Wildan Mubarok, G-RiNe Project。
  • イタリア語: Luca Bruni, Alessandro Alpi, Andrea Dottor, Emanuele Curati, Riccardo Cappello, Gianluca Acerbis, Emilie Rollandin, Marco Dal Pino, Luigi Bruno, Lorthirk, Aldo Donetti。
  • 日本語: Shunya Tajima, Satoshi Kajiura, Yuichi Nukiyama, Hiroyuki Mori, yoshioms。
  • 韓国語: Kyunghee Ko, PaulNara, smallsnail, Kwangjin Hwang。
  • リトアニア語: Tomas Cimermonas。
  • ポーランド語: Artur, hawkeye116477, Patryk Brejdak, Mateusz Gazdziak, Robert Skórski, Sebastian Baran。
  • ポルトガル語 (ブラジル): Roberto Fonseca, Bruno Sonnino, Marcelo Fernandes, Lucas Miranda, João Mesquita, Danilo Dantas, Rodrigo Crespi, Arthur Bruel, Thiago Moreira de Souza Arrais, Otacilio Saraiva Maia Neto, Loiane Groner, Fabio Correia。
  • ポルトガル語 (ポルトガル): Richard Nunes, Daniel Correia, Tiago Costa。
  • ルーマニア語: Bogdan Mateescu, Szauka。
  • ロシア語: Roman Slauta, Ivan Kuzmenko。
  • スペイン語: Alejandro Medina, José M. Aguilar, Roberto Fonseca, Javier Moreno, Andy Gonzalez, Alberto Poblacion, Nancy Todd, Antonio Sanmartín。
  • テルグ語: Hari Jujjavarapu, Sridhar L。