2019年1月 (バージョン 1.31)
更新 1.31.1: この更新では、これらの問題に対処しています。
ダウンロード: Windows: x64 | Mac: Intel | Linux 64ビット: deb rpm tarball | 32ビット: deb rpm tarball
Visual Studio Code 2019年1月リリースへようこそ。このバージョンには、気に入っていただけるであろう重要な更新が多数含まれており、主なハイライトは次のとおりです。
- 拡張機能のインストール時にリロード不要 - 新しい拡張機能をインストールしても中断されません。
- ツリーUIの改善 - エクスプローラーのナビゲーションとフィルタリング、水平スクロールを改善しました。
- メインメニューの更新 - [Go]アクションメニューの再設計、[編集]メニューの[切り取り]コマンド。
- 複数行の問題出力 - [問題]パネルで、複数行にわたる問題の詳細をすべて表示できます。
- すべての参照の検索履歴 - 以前の参照検索を素早く再実行できます。
- HTML、CSS、JSONのセマンティック選択 - 言語のセマンティクスに基づいて選択範囲を拡大/縮小します。
- 統合ターミナルのリフロー対応 - パネルの幅が変更されると、ターミナルのテキストが自動的にリフローされます。
- コマンドベースのユーザー入力変数 - タスクおよびデバッグ構成のためのカスタムユーザー入力。
- 拡張機能APIドキュメントの更新 - 拡張機能ガイドを含めて完全に書き直しました。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
また、クラウド開発者アドボケートのブライアン・クラークによるこの1.31リリースハイライト動画もご覧ください。
リリースノートは、VS Codeの重点分野に関連する以下のセクションにまとめられています。さらに詳しい更新は以下の通りです。
- ワークベンチ - Zenモードで行番号が非表示に、新しいスクリーンキャストモードでキーストロークが表示されます。
- エディター - スマート選択の改善、参照CodeLensの場所の調整。
- 統合ターミナル - WindowsでのConPTYサポート、検索機能の改善。
- 拡張機能の作成 - 拡張機能変更イベント、ブラウザーでリソースを開くアクション。
Insiders: 新機能をできるだけ早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。Visual Studio Codeの最新ニュース、更新、コンテンツについては、Twitterで@codeをフォローしてください!
拡張機能
インストール時のリロードなし
VS Codeを強制的にリロード(再起動)することなく拡張機能をインストールできることは、最も多くの票を集めた機能リクエストの1つであり、今回のリリースで実現しました。拡張機能をインストールまたは有効にする際に、VS Codeをリロードする必要がなくなりました。
以下の例では、ユーザーが.vue
ファイルを開いた後にVetur拡張機能をインストールする推奨事項に従っています。Vetur拡張機能によって提供される言語機能(構文の色付け、診断エラーなど)が、推奨される拡張機能のインストール後すぐに利用可能になることに注目してください。
拡張機能がアクティブ化されていない場合、アンインストールまたは無効にした際もリロードは不要です。
注: 外部の貢献(他の拡張機能の拡張ポイントへの貢献)により、リロードが必要な拡張機能もあります。これは、extensions.onDidChange
イベントをリッスンすることで、外部の貢献ポイント所有者による採用が必要です。
ワークベンチ
新しいツリーウィジェット
ウィジェット機能を次のレベルに引き上げました。パフォーマンスの問題に対処し、いくつかのワークベンチ領域でより多くの機能を提供するために、新しいツリーウィジェットが作成されました。新しいツリーウィジェットは、当社の高性能リストウィジェットのコンポジションによって作成されました。このエンジニアリング作業とパフォーマンスの改善については、別途ブログ記事を書く予定です。現時点では、機能に焦点を当てます。
注: 新しいツリーは、ファイルエクスプローラー、すべてのデバッグツリー、検索、およびPeek Referencesに採用されました。以下に説明する機能は、当社によって明示的に無効にされていない限り、これらのほとんどのUI領域に適用されます。
キーボードナビゲーションの改善
ツリーでのキーボードナビゲーションには、simple
、highlight
、filter
の3種類があります。highlight
とfilter
のいずれの場合でも、ツリー内で入力すると、ツリーの上部にウィジェット(コントロール)が表示され、ツリーをナビゲートしていることを示します。
このウィジェットは、highlight
モードとfilter
モードを切り替えるためにも使用できます。モードを切り替えるキーボードショートカットが必要な場合は、list.toggleFilterOnType
コマンドを実行するキーバインドを設定できます。Workbench > List: Keyboard Navigation (workbench.list.keyboardNavigation
) 設定は、ツリー要素の最初の数文字を入力するだけでその要素にフォーカスするsimple
モードを含む、デフォルトモードを設定します。
リスト/ツリーアクションに単一の文字キーバインドを設定しているユーザーでも、listAutomaticKeyboardNavigation
コンテキストキーを使用することでこの機能を利用できます。例えば、VIM拡張機能はこのコンテキストキーをfalse
に設定して自動キーボードナビゲーションを無効にし、list.toggleKeyboardNavigation
コマンドにキーバインド/
を追加することで、ユーザーが/
と入力するだけでツリーをナビゲートできるようにしています。詳細については、VSCodeVIMプルリクエストをご覧ください。
テーマの作成者は、以下の新しいテーマキーでウィジェットの色をカスタマイズできます
listFilterWidget.background
listFilterWidget.outline
listFilterWidget.noMatchesOutline
注: これらのキーボードナビゲーションモードは現在、解決済みツリーノードでのみ機能します。たとえば、ファイルエクスプローラーでフォルダーが一度も展開されなかった場合、ツリーはその子を検索しません。このエクスペリエンスを改善するためにいくつかのオプションを検討しています。
階層的なすべて選択
ツリーでCtrl+A
(macOSではCmd+A
)を押すと、ツリーの選択が階層的に展開されるようになりました。
カスタマイズ可能なインデント
Workbench > Tree: Indent (workbench.tree.indent
) 設定を使用して、ワークベンチ全体でツリーのノードのインデントをカスタマイズできるようになりました。
すべて展開/折りたたみ
ツリーノードを展開/折りたたむ際にAlt
キーを押し続けると、再帰的に機能するようになりました。再帰的な展開は、以前ツリーで表示されたノードに対してのみ機能することに注意してください。たとえば、ファイルエクスプローラーは、ユーザーによって以前に展開されたことのないフォルダーを自動的に展開することはありません。
水平スクロール
Workbench > Tree: Horizontal Scrolling (workbench.tree.horizontalScrolling
) 設定により、エクスプローラー、検索、SCM、デバッグなど、より多くのツリーやリストで水平スクロールが有効になりました。
問題パネル
複数行メッセージ
[問題]パネルで、複数行の診断メッセージが個別の行に表示されるようになりました。以下の例は、TypeScriptからの複数行エラーメッセージがどのように表示されるかを示しています。
折りたたみ/展開ボタン、またはProblems: Show message in single lineおよびProblems: Show message in multiple linesコマンドを使用して、完全なメッセージの表示/非表示を切り替えることもできます。
キーボードショートカットでコードアクションをトリガー
[問題]パネルからコードアクションをトリガーできるようになりました。クイックフィックスコマンドと同じデフォルトのキーボードショートカット⌘. (Windows、Linux Ctrl+.)を使用します。
[Go]メニューの改善
Goメニューにナビゲーションアクションを追加し、より見つけやすくしました。
エクスプローラーのコンテキストメニューに切り取りコマンド
多くのリクエストに基づき、エクスプローラーのコンテキストメニューに切り取りコマンドを追加しました。
高速スクロール
Alt
キーを押すと、エディターやエクスプローラーで高速スクロールが有効になります。デフォルトでは、高速スクロールは5倍の速度倍率を使用しますが、Editor: Fast Scroll Sensitivity (editor.fastScrollSensitivity
) 設定で倍率を制御できます。
Zenモードで行番号を非表示
Zenモードをオンにすると、エディターの行番号も非表示になるようになりました。この動作は、zenMode.hideLineNumbers
設定で制御できます。
カスタムメニューを持つLinuxでのキーボードナビゲーションを追加
カスタムメニューが、Page Up/Down
およびHome/End
キーを使用して、メニューの先頭または末尾に素早く移動する機能をサポートするようになりました。
Windows/Linuxでアプリケーションアイコンをダブルクリックして閉じる
技術的なトレードオフのため、デフォルトでは、WindowsおよびLinux上のカスタムタイトルバーは、アプリケーションアイコンをダブルクリックしてウィンドウを閉じる機能を削除します。この機能は、window.doubleClickIconToClose
設定を有効にすることで回復できますが、この場所からウィンドウをドラッグしたり、Windowsでシステムコンテキストメニューを取得したりできなくなるという注意点があります。
エディタータブの閉じる順序
新しい設定workbench.editor.focusRecentEditorAfterClose
により、エディタータブが閉じられる順序を変更できます。デフォルトでは、タブは最近使用された(MRU)順序で閉じられます。この設定を変更すると、代わりに右から左にタブを閉じることができます。
新しいタイトル変数
window.title
設定内で使用できる3つの新しい変数があります
${activeFolderShort}
: ファイルが含まれているフォルダーの名前。${activeFolderMedium}
: ファイルが含まれているフォルダーのパスで、ワークスペースフォルダーからの相対パス。${activeFolderLong}
: ファイルが含まれているフォルダーの完全パス。
出力パネル
出力パネルのスマートスクロール動作がより効率的になりました。出力パネルの任意の場所をクリックするとスクロールがロックされ、最後の行をクリックするとロックが解除されます。
スクリーンキャストモード
VS Codeに新しいスクリーンキャストモードが追加されました。これはカーソルの位置とキーストロークをハイライトします。スクリーンキャストモード(開発者: スクリーンキャストモードの切り替え)はデモンストレーション目的で役立ちます。
エディター
スマート選択
選択メニューからの選択範囲の拡大と選択範囲の縮小の実装改善に取り組んできました。言語サーバーがそのセマンティクス知識に基づいて選択ステップを指定できるよう、APIを追加している最中です。さらに、デフォルトの実装も改善しました。
スマート選択は改善され続けていますので、ご期待ください。私たちが取り組んでいることを確認するには、smart-select
ラベルを使用してください。
参照履歴
参照ビューにReferences: Show Historyコマンドが追加されました。これにより、以前の検索結果をQuick Pickで表示し、迅速に再実行できます。
参照CodeLens
参照CodeLensを選択すると、ピークエディターが開きます。これはreferences.preferredLocation
設定で制御できるようになりました。オプションはpeek
とview
で、後者は新しいビューに参照を表示します。
スニペットの説明
長い説明を持つスニペットを作成する際、以前は長い単一の文字列を記述する必要がありました。body
のように配列を使用するサポートはありませんでした。これが変更され、文字列配列を使用して長い説明を記述できるようになりました。
{
"prefix": "happy",
"body": "#Happy Coding!",
"description": ["First Line", "Second Line", "Third Line"]
}
レガシー検索モードを削除
20回のリリース前、VS Codeの検索にripgrepの使用を開始しました。以前のNode.jsベースの検索実装は、search.useLegacySearch
設定の背後に引き続き利用可能でした。しかし、こんまりさんが言うように、「ときめかないもの」は片付けなければなりません。後方参照や先読みなどの正規表現機能を使用していた場合は、必ずsearch.usePCRE2
設定をオンにしてください。
JSONとして設定を編集するためのシンプルなテキストエディターの使用
同様のテーマで、設定UIがいくつかリリースされてきた今、JSON設定の編集エクスペリエンスを簡素化することを検討しています。settings.json
ファイルを開く、設定UIの{}
ボタンをクリックする、または基本設定: ユーザー設定を開く (JSON) コマンドを呼び出すことでJSONとして設定を編集すると、以前の分割JSONエディターの代わりにシンプルなJSONエディターが表示されるようになりました。デフォルト設定のリストは、基本設定: 既定の設定を開く (JSON) コマンドで引き続き確認できます。
左側にデフォルト設定が表示される分割JSONエディターがどうしても恋しい場合は、workbench.settings.useSplitJSON
設定を有効にすることで復元できます。希望する場合、常にJSONとして設定を編集できることに注意してください。
拡張機能のネットワークプロキシサポート
設定のHttp: Proxy Support (http.proxySupport
) により、デフォルトですべての拡張機能でネットワークプロキシがサポートされるようになりました。
言語
TypeScript 3.3
現在、TypeScript 3.3.1を同梱しています。このTypeScriptの更新には、いくつかの重要なバグ修正と改良が含まれています。
markdown.previewFrontMatter 設定の削除
markdown.previewFrontMatter
設定は削除されました。Markdownプレビューは、常にYAMLフロントマターを非表示にするようになりました(これはmarkdown.previewFrontMatter
のデフォルト設定でした)。
Markdown yaml PreambleやGitHub Markdown PreviewなどのMarkdown拡張機能は、プレビューでフロントマターをテーブルとしてレンダリングします。
セマンティック選択
HTML、CSS/LESS/SCSS、JSONでセマンティック選択が可能になりました。
統合ターミナル
リフロー対応
ターミナルは、水平方向にリサイズされると、行を自動的に折り返したり解除したりするようになりました。
WindowsでのConPTYサポート
Windows ConPTY APIを介したターミナルプロセスの管理が、Windows Insiders fast ring (ビルド番号18309以上) でオプトインオプションとして利用できるようになりました。
{
"terminal.integrated.windowsEnableConpty": true
}
これにより、Windowsコンソールチームによって提供されるConPTYシステムがターミナルのバックエンドとして使用されます。これを有効にすることで、Windowsターミナルに関する多くの問題、特に色のサポート、対話型アプリケーション、およびVTシーケンスをネイティブでサポートするシェルに関する問題が修正されるはずです。
WSLターミナルでの256 ANSIカラーサポートのビフォーアフターです。
リンクに使用される現在の作業ディレクトリ
LinuxおよびmacOSでは、ターミナルはリンクをターミナルの初期ディレクトリではなく、現在の作業ディレクトリからの相対パスで解決するようになりました。
ターミナル内の検索機能の改善
ターミナル内の検索は、インクリメンタルな「タイプしながら検索」に加え、1行内で複数の用語を検索する機能をサポートするようになりました。
commandsToSkipShell設定の改善
以前は、設定terminal.integrated.commandsToSkipShell
は、ターミナルによる評価をスキップし、代わりにVS Codeによって処理されるすべてのコマンドのリストでした。これを変更するには、設定ファイルに100以上のコマンドのリストが必要となるため、扱いにくいものでした。これが追加および削除のリストに変更されたため、デフォルトリストへの変更のみを含めるだけでよくなりました。
{
"terminal.integrated.commandsToSkipShell": [
// Make ctrl+n open a new file when the terminal is focused
"workbench.action.files.newUntitledFile",
// Send ctrl+e to the terminal
"-workbench.action.quickOpen"
]
}
新しいバッファ実装が有効になりました
v1.29で導入されたTypedArray/ArrayBufferベースのターミナルバッファが有効になり、古い実装は削除されました。これにより、ターミナルのスループットが大幅に向上し、メモリ使用量も大幅に削減されるはずです。
デバッグとタスク
カスタムコマンドユーザー入力変数
前回のマイルストーンで導入された入力変数は、タスクまたはデバッグ構成でユーザー入力を求める強力なメカニズムです。当初は、promptString
およびpickString
入力変数を利用可能にしました。
このマイルストーンでは、新しい種類の入力変数command
を導入します。これは、入力変数が補間される際に任意のコマンドを実行します。コマンドは拡張機能によって提供できるため、新しい実装によってユーザー入力変数を拡張できるようになりました。
以下の例は、特定のフォルダーで見つかったすべてのテストケースのリストからユーザーがテストケースを選択できるようにするデバッグ構成で、command
型のユーザー入力変数をどのように使用するかを示しています。これは、何らかの拡張機能が、構成可能な場所にあるすべてのテストケースを特定し、それらの1つを選択するためのピッカーUIを表示するextension.mochaSupport.testPicker
コマンドを提供することを前提としています。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Test",
"program": "${workspaceFolder}/${input:pickTest}"
}
],
"inputs": [
{
"id": "pickTest",
"type": "command",
"command": "extension.mochaSupport.testPicker",
"args": {
"testFolder": "${workspaceFolder}/tests"
}
}
]
}
タスク出力が分割ターミナルをサポート
タスクの出力を新しいターミナルパネルを作成するのではなく、分割ターミナルパネルに表示するように設定できるようになりました。タスク構成では、presentation
セクションのgroup
属性を使用して、タスクの出力をどこに表示するかを定義できます。
以下の2つのタスクを両方実行すると、分割ターミナルに表示されるため、両方を同時に確認できます。
{
"version": "2.0.0",
"tasks": [
{
"label": "Task One",
"type": "shell",
"command": "echo One && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
},
{
"label": "Task Two",
"type": "shell",
"command": "echo Two && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
}
]
}
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
ワークベンチのグリッドレイアウト
ワークベンチのレイアウトは、エディター自体が使用するのと同じグリッドレイアウトを使用するように再構築されています。ここで行われている作業は、長期的にはワークベンチレイアウトを維持するエンジニアリング作業を簡素化するだけでなく、新しいエクスペリエンスを実現するのにも役立ちます。
このマイルストーンでは、新しいグリッドレイアウトでより簡単に実現できること、つまりエディター領域の切り替えを実証するため、そのようなエクスペリエンスを搭載しています。実験的なグリッドレイアウトが有効になっている("workbench.useExperimentalGridLayout": true
)場合、コードエディターを非表示にする新しいコマンドエディター領域の切り替えがあります。これにより、以下に示すように、エディター領域全体を占めるVS Codeターミナルパネルを作成できます。
ターミナルからcode file.txt
を使用してファイルを開くと、期待どおりにエディターがポップアップ表示されます。この機能はまだ開発中であり、既知の問題がありますが、ぜひ試して問題報告をしてください。この作業に関する最新の問題は、このクエリで確認できます。
HTMLおよびCSSカスタムデータサポート
この機能はプレビュー段階であるため、設定、貢献ポイント、およびデータ形式は変更される可能性があります。
今日、フロントエンド開発者はしばしばHTML/CSSのスーパーセットでコーディングします。
- Web Componentsは、
<my-button type="alert"></my-button>
のようなカスタムHTML要素を可能にします。 - PostCSSは、
size
のようなカスタムCSSプロパティや、:any-link
のようなまだ標準化されていないCSS機能を可能にします。 - 様々なフレームワークは、ソースHTML/CSSにおいてさらに大きな柔軟性を提供します。
このイテレーションでは、1.30で導入されたHTMLカスタムデータサポートを改善し、CSSカスタムデータサポートを追加しました。
- カスタムデータをロードするには、
html.experimental.customData
またはcss.experimental.customData
を使用します。(html.experimental.custom.tags
とhtml.experimental.custom.attributes
は削除されました。) - あるいは、
contributes.html.experimental.customData
またはcontributes.css.experimental.customData
を使用して、JSONを拡張機能にバンドルすることもできます。 - 最後に、vscode-html-languageserviceまたはvscode-css-languageserviceを使用する言語サーバーを作成している場合は、カスタムデータを使用して言語サービスを作成できます。
カスタムデータは、VS CodeのHTML/CSSの理解を向上させます。たとえば、これらのHTML/CSS JSON貢献により、VS CodeはカスタムHTMLタグ/属性およびCSSプロパティ/擬似クラスに対して補完とホバーを提供できます。
{
"version": 1,
"tags": [
{
"name": "my-button",
"description": "My button",
"attributes": [
{
"name": "type",
"description": "My button type",
"values": [{ "name": "alert" }]
}
]
}
]
}
{
"version": 1,
"properties": [
{
"name": "my-size",
"description": "Compiles down to `width` and `height`. See details at https://github.com/postcss/postcss-size."
}
],
"pseudoClasses": [
{
"name": ":my-link",
"description": ":any-link pseudo class. See details at https://preset-env.cssdb.org/features#any-link-pseudo-class."
}
]
}
上記のサンプルはoctref/simple-customdataで利用可能であり、より高機能なサンプルはoctref/svg-dataで利用可能です。
これらのガイドでは、データ形式と、設定および拡張機能の貢献ポイントを通じてそれらを使用する方法について説明しています。
拡張機能作成
拡張機能変更イベント
extensions.all
配列が変更されたときに発生する新しいイベントextensions.onDidChange
が追加されました。これは、拡張機能がインストール、アンインストール、有効化、または無効化されたときに発生します。拡張機能のインストール時にリロードなしセクションを参照してください。
/**
* An event which fires when `extensions.all` changes. This can happen when extensions are
* installed, uninstalled, enabled or disabled.
*/
export const onDidChange: Event<void>;
注: 新しい貢献ポイントを導入する拡張機能の作成者は、このイベントをリッスンし、それに応じてワークベンチの状態を更新する必要があります。
ブラウザーでリソースを開く
いくつかの拡張機能が、ブラウザーでURLを開くためにopn
やopen
のようなNodeモジュールを使用していることを確認しました。この機能への要望を考慮し、新しいAPI vscode.env.openExternal
を追加しました。これはURLを期待し、ウェブサイトリンク、メールリンク、またはアプリケーションURLハンドラーを開くために使用できます。また、PDFファイルのように、ファイルURLもデフォルトのアプリで開くために受け入れられます。
// open default browser
await vscode.env.openExternal(
vscode.Uri.parse('https://github.com/microsoft/vscode/issues/66741')
);
注: 現在opn
またはopen
モジュールを使用している拡張機能の作成者は、この新しいAPIに切り替える必要があります。
グローバルストレージパス
拡張機能に、書き込み/読み取りアクセス権を持つローカルディレクトリを指すグローバルストレージパスExtensionContext.globalStoragePath
が提供されるようになりました。これは、すべてのワークスペースからアクセスできる大きなファイルを保存する必要がある場合に良いオプションです。
/**
* An absolute file path in which the extension can store global state.
* The directory might not exist on disk and creation is
* up to the extension. However, the parent directory is guaranteed to be existent.
*
* Use [`globalState`](#_ExtensionContext.globalState) to store key value data.
*/
globalStoragePath: string;
拡張機能が削除されると、VS Codeがこのパスのクリーンアップを行います。
注: 現在、カスタムファイルシステムロケーションを使用してワークスペース間で状態を保存している拡張機能の作成者は、この新しいAPIに切り替える必要があります。
CodeActionKind.intersects
CodeActionKind.intersects
メソッドは、CodeActionProvider
がコードアクションを計算する必要があるかどうかを確認するのに役立ちます。
import * as vscode from 'vscode';
export class OrganizeImportsProvider implements vscode.CodeActionProvider {
public provideCodeActions(
document: vscode.TextDocument,
range: vscode.Range,
context: vscode.CodeActionContext,
token: vscode.CancellationToken
): vscode.CodeAction[] {
// Only return organize imports actions if they were explicitly requested
// We can check this using `intersects`.
if (!context.only || !vscode.CodeActionKind.SourceOrganizeImports.intersects(context.only)) {
// Organize imports actions were not requested
return [];
}
// Organize imports was requested
...
}
}
contributes.resourceLabelFormatters
拡張機能は、ワークベンチのどこでもURIを表示する方法を指定するリソースラベルフォーマッターを提供できるようになりました。たとえば、以下は、スキームremotehub
を持つURIのフォーマッターを拡張機能がどのように提供できるかを示しています。
"contributes": {
"resourceLabelFormatters": [
{
"scheme": "remotehub",
"formatting": {
"label": "${path}",
"separator": "/",
"workspaceSuffix": "GitHub"
}
}
]
}
これは、スキームremotehub
を持つすべてのURIが、URIのpath
セグメントのみを表示してレンダリングされ、区切り文字が/
になることを意味します。remotehub
URIを持つワークスペースには、ラベルにGitHubの接尾辞が付きます。
キーバインドに引数を追加
package.json
でキーバインドを定義する際に、引数を定義できるようになりました。実行時、それらの引数はコマンドに渡されます。
以下のサンプルでは、{foo: 1, bar: 2}
です。
"keybindings": {
"key": "cmd+i",
"command": "myCommand",
"args": {
"foo": 1,
"bar": 2
}
}
createTerminal環境の完全な制御
新しい設定TerminalOptions.strictEnv
をtrueに設定すると、ターミナル環境に一切変更を加えず、拡張機能によって渡されたとおりに正確に使用されます。
// This will create a terminal whose environment only contains the single value
// FOO=BAR.
const terminal = createTerminal({
name: 'Test terminal',
env: {
FOO: 'BAR'
},
strictEnv: true
});
Node.jsの更新
VS Codeが実行されるElectronのバージョンが更新され、それに伴いNode.jsが8.9
から10.2.0
に更新されました。すべての拡張機能は、この新しいバージョンのNode.jsで実行されるようになります。Node.js 10での非推奨機能のリストについては、Node v10.0.0の非推奨機能をご覧ください。
Octiconsの更新
Octiconsのバージョンを8.3.0に更新し、以下のアイコンをサポートするようになりました。
$(arrow-both)
$(bold)
$(color-mode)
$(eye-closed)
$(fold-down)
$(fold-up)
$(grabber)
$(italic)
$(kebab-horizontal)
$(kebab-vertical)
$(note)
$(organization-filled)
$(person-filled)
$(project)
$(request-changes)
$(screen-full)
$(screen-normal)
$(smiley)
$(tasklist)
$(text-size)
$(unverified)
$(verified)
サポートされているアイコンの完全なリストは、ドキュメントで確認できます。変更点の詳細については、Octiconの変更履歴をご覧ください。
提案された拡張API
各マイルストーンには新しい提案APIが付属しており、拡張機能開発者はこれらを試すことができます。いつものように、皆様からのフィードバックをお待ちしております。提案APIを試すには、次の手順を実行します。
- 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
- 拡張機能の
package.json
ファイルに次の行が必要です:"enableProposedApi": true
。 - vscode.proposed.d.tsファイルの最新バージョンをプロジェクトにコピーします。
提案APIを使用する拡張機能は公開できないことに注意してください。次回のリリースでは互換性のない変更が行われる可能性があり、既存の拡張機能を壊すことは決して望ましくありません。
SignatureHelpContext.activeSignatureHelp
提案されたSignatureHelpContext.activeSignatureHelp
フィールドは、以前アクティブだったシグネチャを追跡します。
import * as vscode from 'vscode';
class MySignatureHelpProvider implements vscode.SignatureHelpProvider {
provideSignatureHelp(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken,
context: vscode.SignatureHelpContext
): vscode.ProviderResult<vscode.SignatureHelp> {
// The active signature help when this provider was triggered or undefined if
// no signature help was active.
console.log(context.activeSignatureHelp);
...
}
}
プロバイダーはこれを使用して、シグネチャヘルププロバイダーが再トリガーされる前にどのオーバーロードが選択されたかを追跡できます。
自動修正とCodeAction.isPreferred
コードアクションAPIは、VS Codeのクイックフィックス(エディターに表示される電球アイコン)を強化します。特定のエラーに対して多くのクイックフィックスが存在する場合がありますが、多くの場合、それらのクイックフィックスの1つが問題に対する最も合理的な修正です。たとえば、スペルミスを修正することは、通常、新しいフィールドを生成するよりも可能性の高い修正です。
提案されたAPIを使用することで、拡張機能はCodeAction
にisPreferred
を設定し、それが根本的な問題に対する最も合理的な修正であることを示すことができます。優先される修正は、自動修正コマンド(⌥⌘. (Windows、Linux Shift+Alt+.))を使用して自動的に適用できます。
優先されるクイックフィックスは通常、次のとおりであるべきです。
- 根本的なエラーを正しく修正すること(抑制しないこと)。
- エラーに対する合理的な修正であること。
- 予期せず広範な操作を実行しないこと。
リファクタリングのコードアクションも、最も合理的なリファクタリングであることを示すために優先としてマークできます。たとえば、複数の定数の抽出リファクタリングが利用可能な場合がありますが、多くの場合、ユーザーは単に最も近いローカルに抽出したいだけです。そのリファクタリングのコードアクションがisPreferred
とマークされている場合、ユーザーはそれに対して単一のキーバインドを設定できます。
{
"key": "ctrl+shift+r ctrl+e",
"command": "editor.action.codeAction",
"args": {
"kind": "refactor.extract.constant",
"preferred": true
}
}
すべてのソースアクションを修正
提案されたsource.fixAll
CodeActionKind
は、ファイル内のエラーを自動修正できる拡張機能のための慣例を確立します。この新しいソースアクションの種類は、インポートの整理に似ており、すべての修正アクションのキーバインドを設定したり、保存時に自動修正を有効にしたりするのを容易にします。
// On save, run both fixAll and organizeImports source actions
"editor.codeActionsOnSave": {
"source.fixAll": true,
"source.organizeImports": true,
}
TSLint拡張機能は、この提案されたソースコードアクションの種類をすでに使用して、すべてを修正し、保存時に自動修正を実装しています。
デバッグアダプタープロトコル
データブレークポイントのデバッグアダプタープロトコル提案
データブレークポイント(別名「ウォッチポイント」)に関する進行中の作業の次のステップとして、データブレークポイントのデバッグアダプタープロトコルの設計でいくつかの進展がありました。提案されたDAPの変更はこのブランチにあり、対応するTypeScript APIはデータブレークポイント提案で見つけることができます。
デバッガー拡張機能でデータブレークポイントをサポートすることに興味がある場合は、提案を確認し、フィードバックをお願いします。
ライブテーマ編集
カラーテーマ拡張機能を開発する際、拡張機能開発ホストウィンドウで色の変更がライブで適用されるのを確認できます。
ファイルアイコンテーマも同様に機能します。
エンジニアリング
Electron 3.0への更新とElectron 4.0の検討
このマイルストーンでは、Electron 3をVS Codeにバンドルする検討を完了し、このElectronバージョンを安定版で初めて提供することになりました。これはElectronのメジャーリリースであり、Chrome 66とNode.js 10.x(Chrome 61とNode.js 8.xを搭載した現在のバージョンと比較して大幅な飛躍)が付属しています。
同時に、Electron 4への更新の検討を開始しました。これは間もなくInsidersにプッシュしたいと考えています。
より良いパフォーマンス情報
このリリースでは、開発者: 起動パフォーマンスコマンドの出力がエディターに表示されるようになり、DevToolsには表示されなくなりました。これにより、読みやすくなり、素早くアクセスできるようになりました。さらに、情報に関する多くの問題も修正されました。
WinJS.Promiseの削除 ✅
VS Codeが開始されたとき、JavaScriptは今日とは異なりました。例えば、ネイティブなPromiseは存在せず、チームは非同期作業のためにWinJS.Promise
を使用することにしました。今日では状況が異なり、ネイティブなPromiseは現実のものであり、WinJS.Promise
は廃止されています。昨年の中頃に、コードベースからWinJS.Promise
を削除する取り組みを開始し、12月に完了しました。
厳密なnullチェック
主要なVS Codeコードベースの厳密なnullチェック作業を続けました。皆様のご協力のおかげで、このマイルストーンでは、多数のテストファイルに対して厳密なnullチェックを有効にすることができ、多数のエラーを解消しました。
次のマイルストーンでも厳密なnullチェックの取り組みを継続します。
拡張機能への貢献
私たちのチームは、いくつかの VS Code 拡張機能を維持または貢献しています。特に今月は以下です。
TSLintサポート
新しいTSLint拡張機能は、source.fixAll
コードアクションを使用して保存時の自動修正をサポートするようになりました。
"editor.codeActionsOnSave": {
"source.fixAll": true
}
非推奨のTSLint (eg2.tslint) 拡張機能を使用しているすべてのユーザーは、新しいTSLint拡張機能への移行を推奨します。
Stylus言語サポート
Stylus言語拡張機能は、vscode-css-languageserviceから厳選されたデータを使用するようになり、ステータス警告と構文ドキュメントを含む最新の補完機能を提供します。
GitHubプルリクエスト
このマイルストーンでは、GitHubプルリクエスト拡張機能の改善作業を続けました。
以下にいくつかの新機能を示します。
- GitHubレビューサポート。コメントを個別にではなく、レビューにグループ化できるようになりました。
- ワークスペースがGitHubリポジトリの場合、Live Shareセッションに参加すると、拡張機能はシームレスに動作します。
- プロジェクトにGraphQLを段階的に導入したことで、説明ビューにプルリクエストの詳細情報がより多く表示され、拡張機能全体のパフォーマンスが向上しました。
- プルリクエストをマージする際に、マージコミットの作成、スカッシュしてマージ、またはリベースしてマージを選択できるようになりました。
- パフォーマンスの改善。プルリクエストの閲覧、ファイルの変更、プルリクエストのチェックアウト時に、GitHubへのAPI呼び出しとgit操作の両方を削減し、特にWindowsでの拡張機能の応答速度を向上させました。
拡張機能の完全なリリースノートは、vscode-pull-request-githubリリースで読むことができます。
新しいドキュメント
Python Jupyter Notebooks
新しいJupyter Notebooksの操作トピックでは、VS Code内からJupyter Notebooksを開き、デバッグし、エクスポートする方法について説明しています。
JavaScriptおよびTypeScriptドキュメントの改善
JavaScriptおよびTypeScriptの記事を更新し、最新の情報を提供できるよう内容を刷新しました。
JavaScriptとTypeScriptのページでは、これらの言語に対してVS Codeが提供する機能の概要が示されるようになりました。これらの機能に関するより詳細な説明とチュートリアルは、目次内のそれぞれNode.js / JavaScriptおよびTypeScriptの下の新しいページに移動されました。
拡張機能APIドキュメントの更新
拡張機能の作成者向けに、VS Code APIドキュメントが書き直され、独自の目次に移動されました。
ここでは、次の記事を見つけることができます。
注目すべき修正点
- 7570: VS Codeがオフラインで開かない
- 14372: 拡張機能: 無効化状態をウィンドウ間で通信する必要がある
- 34396: シングルCPU VMでの高CPU使用率
- 58167: OS再開後、ターミナルとミニマップの復元テクスチャが破損する
- 59794: editor.accessibilitySupport が 'auto' に設定されている場合、ターミナルスクリーンリーダーのサポートが機能しない
- 61649: デバッグが未定義のプロパティ 'onError' を読み取れない
- 63832: 拡張機能をデバッグする際にlspサーバーにアタッチできない
- 64948: GDB C/C++デバッガが起動せず、エラーを出す
- 65697: nodeクラスタのフォークプロセスで、autoAttachChildProcesses を伴う Debug stopOnEntry が尊重されない
- 66302: Ctrl + Lはデフォルトでreplクリアにバインドされるべき
- 66681: 仮想ドキュメントに対して「比較のために選択」および「選択と比較」コマンドが表示されない
このリリースには、Microsoft Security Response Center CVE-2019-0728のセキュリティ更新も含まれています。
ありがとうございます
最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!
課題追跡への貢献。寄せられた課題の管理にご協力いただける場合は、Community Issue Tracking ページをご覧ください。
- Alexander (@usernamehw)
- Simon Chan (@yume-chan)
- Prabhanjan S Koushik (@skprabhanjan)
- Eric Amodio (@eamodio)
- Christopher Leidigh (@cleidigh)
vscode
への貢献者
- Alec Chan (@aechan): 検索: クリアボタンの動作の改善 PR #63082
- Alexander Eyers-Taylor (@aeyerstaylor)
- Agustín Rodríguez (@agurodriguez): 「問題の報告」および「プロセスエクスプローラー」ウィンドウが全画面モードで開くのを防止 PR #64839
- Anirudh Rayabharam (@anirudhrb): 問題65204を修正: キーバインドアイコンが開かなくなる PR #65968
- @asaf050: ターミナルコンテキストメニューからターミナルを終了できるようにする PR #66535
- Chris Patterson (@chrisrpatterson): ビルドバッジURLの更新 PR #67008
- Christian Alexander (@ChristianAlexander): git add -N で追加されたファイルの表示処理を追加 PR #59163
- Christian Flach (@cmfcmf): タスクにterminalGroupを追加し、分割ペインで実行できるようにする PR #65973
- Christian Oliff (@coliff): EditorConfig.orgへのHTTPSリンク PR #65358
- Danny Tuppeny (@DanTup): スペルミスを修正: "accepeted" => "accepted" PR #64976
- @davidwu226: 不正なJSONを修正。 PR #65447
- Donald Pipowitch (@donaldpipowitch): .vscodeignoreのシンタックスハイライトを追加 PR #64960
- Thai Pangsakulyanont (@dtinth): tsconfig.jsonを解析する際にJSON.parseの代わりにjsonc.parseを使用することで、tsconfig.jsonにコメントが含まれている場合に-bフラグがアクティブにならないバグを修正。 PR #67535
- Thien Do (@dvkndn): nvmrcをnode 8に更新 PR #67183
- Ashwin Ramaswami (@epicfaace)
- Phil (@flurmbo): md画像リンクを検出 PR #66958
- li zixiang (@fuafa): findModel.test.tsに厳密なnullチェックを追加 PR #66436
- Gabriel Arjones (@g-arjones): #59635を修正 PR #60111
- @g1tman: ターミナルが非表示の場合、リサイズ時にフォントをフェッチしない PR #66781
- Gabriel DeBacker (@GabeDeBacker): ターミナル作成時にVSCodeのプロセス環境を無視できるようにする PR #64733
- Chris Ganga (@gangachris)
- src/vs/base/test/common/async.test.tsの厳密なnullチェックを有効にする PR #65442
- ./vs/base/test/common/keyCodes.test.tsの厳密なnullチェックを有効にする PR #65454
- ./vs/base/test/common/octicon.test.tsの厳密なnullチェックを有効にする PR #65458
- ./vs/base/test/node/config.test.tsの厳密なnullチェックを有効にする PR #65471
- ./vs/base/test/common/event.test.tsの厳密なnullチェックを有効にする PR #65444
- ./vs/base/test/common/history.test.tsの厳密なnullチェックを有効にする PR #65453
- windowsFinderの厳密なnullチェックを有効にする PR #65551
- find controllerの厳密なnullチェックを有効にする PR #65553
- Gaurav Gupta (@gaurav5430): ./vs/platform/contextkey/test/common/contextkey.test.tsの厳密なnullチェックを有効にする PR #65474
- Guy Waldman (@guywald1): [git] 特定の参照からブランチを作成するコマンドを追加 PR #59078
- Henk Mollema (@henkmollema): 著作権年を2019に更新 PR #65875
- Ilya Biryukov (@IlyaBiryukov): Gitログ、globalConfig、ツリー差分APIを追加 PR #64826
- James Dinh (@jamesdinht): ファイルテストの厳密なnullチェックを有効にする PR #65249
- James George (@jamesgeorge007): ユーザー定義スニペットに複数行の説明のサポートを追加 PR #66159
- Jimi (Dimitris) Charalampidis (@JimiC): [テーマ] エディターを再起動せずにテーマをリロードする機能を追加 PR #66115
- Julia McGeoghan (@jkmdev)
- Joseph Duchesne (@josephduchesne): xtermjsのバグを回避するためにレイアウトのリフレッシュをトリガーすることで#58159を修正… PR #60221
- Josh Goldberg (@JoshuaKGoldberg)
- Krish De Souza (@Kedstar99)
- Kermit Xuan (@Kermit-Xuan)
- Claire (@krider2010): 更新を完全に無効にするか、手動または自動にできるようにする PR #60973
- Kumar Harsh (@kumarharsh): fix(loc): 透明色の説明の誤った表現を修正 PR #66334
- Anton Marchenko (@marchenko-am): #64379を修正 - SimpleFindWidgetの位置が変更された(非表示状態) PR #64558
- Mathias Rasmussen (@mathiasvr): HTMLスニペット: 一貫したボイドタグ PR #66072
- Maksymilian Barnaś (@maxbarnas): #61410 「フォルダー内で検索」アクションにキーバインドを追加 PR #61526
- Mrigank Krishan (@Mrigank11): 既知の巨大なフォルダーを.gitignoreに追加するように要求、#44304を修正 PR #44562
- J.M. Rütter (@mynetx): ターミナル分割時に一時的に表示される未定義のタイトルを非表示にする PR #61981
- Néstor Hernández Ojeda (@nesukun): 強制プッシュのためにscm/gitコンテキストメニューにエントリを追加 PR #60387
- Noj Vek (Manoj P) (@nojvek): #27107を修正 - リンク用のユーザーターミナルのcwd PR #64750
- Nuno Lopes (@nunottlopes): Windows上のスペースを含むパスで、ターミナルでアクティブファイルを正しく実行できるように修正 PR #65331
- Oleg Voloshin (@oniondomes): workspaceStatsテストの厳密なnullチェックを有効にする PR #65429
- Raul Piraces Alastuey (@piraces): suggestMemory.test.tsに厳密なnullチェックを追加 PR #66754
- Prateek Singh (@punteek): simpleServicesテストの厳密なnullチェックを有効にする PR #65571
- Rich Evans (@rcbevans): xtermのmouseleaveを追加してウィジェットを閉じる PR #66576
- Matthias Reitinger (@reima): キーバインドリストヘッダーの動作に関する問題を修正 (#_41558) PR #60217
- Romain Marcadier-Muller (@RomainMuller): 参照が使用されている場合の「tsc watch」タスクを修正 PR #67148
- Rudi Chen (@rudi-c): breadcrumbs.ts, outlineModel.ts, breadcrumbsModel.tsにstrictNullChecksを有効にする PR #65062
- Segev Finer (@segevfiner)
- @SimonEggert: タブを閉じる順序の設定を追加 PR #66635
- Prabhanjan S Koushik (@skprabhanjan)
- Tereza Tomcova (@the-ress): bootstrap.jsでUNCパスを正しく処理 PR #66128
- Tiago Ribeiro (@TiagoR98): 機能 #24344を実装 PR #65072
- Tyler James Leonhardt (@TylerLeonhardt): 単一引用符はあるがスペースがないエッジケースを処理 PR #66359
- Alexander (@usernamehw)
- Comparersテストの厳密なnullチェックを有効にする PR #65301
- TMウィジェットの検査にコントラスト比を追加 PR #64495
- quickOpenScorerテストの厳密なnullチェックを有効にする PR #65299
- カーソルを波括弧の中に移動 PR #67164
- ユーザー設定ファイルを破壊する代わりにcommandsToSkipShellを除外/含める PR #66179
- Notificationsテストの厳密なnullチェックを有効にする PR #65291
- snippetVariablesテストの厳密なnullチェックを有効にする PR #65236
- SplitViewテストの厳密なnullチェックを有効にする PR #65307
- テーマ/アイコンテーマフィルターの後にスペースを追加 PR #64745
- GridViewテストの厳密なnullチェックを有効にする PR #65305
- ダーティ状態が上部境界線でハイライトされている場合、タブの閉じるボタンを完全に非表示にする PR #64718
- Dipen Ved (@vedipen)
- @vemoo: 名前付き複数行問題パターン解析を修正 PR #65840
- Vladimir Kotikov (@vladimir-kotikov):
git pull
実行前に変更を自動的にスタッシュするオプションを追加 PR #59849 - Jeremy Shore (@w9jds): #57910を修正 - 自動フェッチのタイムアウト設定を追加 PR #59988
- Matthew Walinga (@walinga): 行ステージコマンド使用時に、空の最終行削除をステージする PR #59974
- Yisrael Veller (@YisraelV)
vscode-eslint
への貢献者
- Jonathan T L Lee (@Lee182): 問題529、pnpmのサポートを追加 PR #572
- Loune Lam (@loune): disable-eslintの修正と改善 PR #588
language-server-protocol
への貢献者
- Laurent Tréguier (@LaurentTreguier): 重複したラベルプロパティを削除 PR #638
- Jason Axelson (@axelson): 変更履歴リンクを修正 PR #654
vscode-languageserver-node
への貢献者
- Daniel McNab (@DJMcNab):
- Felix Becker (@felixfbecker): package.jsonにrepository.directoryフィールドを追加 PR #439
- Laurent Tréguier (@LaurentTreguier): 設定が常にリソーススコープを使用しない問題を修正 PR #446
- Aleksey Kladov (@matklad): readmeに
npm run symlink
について言及 PR #452
debug-adapter-protocol
への貢献者
- Ben Jackson (@puremourning): 実装リストにvimspectorを追加 PR #21
- Sean Allred (@vermiculus): 概要内の様々なタイプミスを修正 PR #22
vscode-vsce
へのコントリビューション
- Alexander (@usernamehw): コンソールメッセージに色を追加 PR #324
vscode-json-languageservice
への貢献
vscode-css-languageservice
への貢献者
- Krister Kari (@kristerkari): :exportブロック内の不明なプロパティについて警告しない PR #137
- Simon Chan (@yume-chan)
- Matthew Dean: Lessのルート関数、ルックアップ、匿名mixinのサポート PR #135
vscode-html-languageservice
への貢献
- Liam Newman (@bitwiseman): 1.9.0-beta1に更新 PR #43
vscode-generator-code
への貢献者
- Aurélien Pupier (@apupier): 改行に関するmarkdownLintガイドラインに従う #154 PR #155
vscode-recipes
への貢献
- Alan Agius (@alan-agius4): ドキュメント: ng testコマンドを更新 PR #179
- Bryan Chapel (@bryanchapel): README.mdを更新 PR #176
- @CannibalKush: angularフローへの変更 PR #177
- zhan ishzhanov (@janat08): JESTレシピの引数を分割 PR #174
localization
への貢献
Microsoft Localization Community Platform (MLCP) を使用しているCloud + AI Localizationコミュニティメンバーは600人を超え、Visual Studio Codeには約100人の活発な貢献者がいます。
新しい翻訳の提供、翻訳への投票、プロセス改善の提案など、皆様の貢献に感謝いたします。
貢献者のスナップショットです。貢献者名リストを含むプロジェクトの詳細については、プロジェクトサイトhttps://aka.ms/vscodelocをご覧ください。
- ブルガリア語: Любомир Василев.
- チェコ語: Samuel Tulach.
- デンマーク語: Johan Fagerberg.
- オランダ語: Jos Verlinde,Eric Algera.
- フィンランド語: Petri Niinimäki, Valtteri Vatanen.
- フランス語: Mohamed Sahbi, Thomas Gouthière.
- ドイツ語: Frank Lindecke,Hans Meiser,Jakob von der Haar,Sebastian Seidl.
- ヘブライ語: Kyle Orin.
- ヒンディー語: Satish Yadav,nirav adatiya,shaswat rungta,Dhanvi Kapila.
- ハンガリー語: Péter Nagy.
- 簡体字中国語: 福永 叶, Xiangrui Kong, Licheng Ren, Young Bige, 文 陈, Y F, 彦佐 刘, 九鼎 谭.
- インドネシア語: Azhe Kun.
- イタリア語: Michael Longo.
- 日本語: nh,Masakazu TENMYO, 裕子 知念.
- 韓国語: SeungJin Jeong.
- ノルウェー語: Stephan Eriksen.
- ポーランド語: grzegorz m, Jakub Jedryszek.
- ポルトガル語 (ブラジル): Bruno Talanski, Alan Willian, Letticia Nicoli, Alessandro Fragnani, Cynthia Zanoni.
- ポルトガル語 (ポルトガル): Vitor Barbosa.
- スペイン語: Engel Aguilar, José María Aguilar, julian3xl, Alvaro Enrique Ruano, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta.
- タミル語: Mani M.
- トルコ語: Muhammed Emin TİFTİKÇİ.
- ウクライナ語: Did Kokos.
- ベトナム語: Việt Anh Nguyễn.