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

2019 年 10 月 (バージョン 1.40)

バージョン 1.40.1 の更新: この更新では、これらの問題に対処しています。

バージョン 1.40.2 の更新: この更新では、これらの問題に対処しています。

ダウンロード: Windows: x64 | Mac: Intel | Linux: deb rpm tarball snap


Visual Studio Code の 2019 年 10 月リリースへようこそ。 10 月のイテレーション計画でお知らせしたとおり、Issue グルーミングガイドに記載されているように、GitHub の Issue とプルリクエストのハウスキーピングに注力しました。すべての VS Code リポジトリ全体で、4622 の Issue をクローズ (トリアージまたは修正) しました。これは、前回の 2018 年 9 月のハウスキーピングイテレーションでクローズした 3918 の Issue よりもさらに多い数です。Issue をクローズする一方で、新たに 2195 の Issue が作成されました。これにより、純減として 2427 の Issue が削減されました。メインの vscode リポジトリには、現在 2162 の未解決の機能リクエストと 725 の未解決のバグがあります。さらに、287 のプルリクエストをクローズしました。この取り組みの一環として、プロセスを調整し、Issue トリアージワークフローを更新しました。

昨年と同様、Benjamin Lannon 氏のライブトラッカーを使用して進捗を追跡しました。

Burn down chart of VS Code issues

このハウスキーピングマイルストーンでは、いくつかの機能リクエストやコミュニティのプルリクエストにも対応しました。新しい機能と設定については、引き続きお読みください。

Workbench

アクティビティバーのインジケーター

アクティビティバーのアクティブな項目がより目立ち、可読性を高めるための新しいインジケーターを導入しました。また、非アクティブな前景色の調整を行い、アクティブな要素とのコントラストを強めました。

Active Activity Bar indicator

アクティブなインジケーターは、新しいカラー トークン activityBar.activeBorder を介して制御できます。また、アクティブな要素にオプションの背景色 activityBar.activeBackground を導入しました。設定すると、次のように表示されます。

Active Activity Bar indicator custom background

テーマ設定可能なウィンドウボーダー

VS Code ウィンドウの周囲にボーダーを設定するための、新しいテーマカラー window.activeBorderwindow.inactiveBorder を導入しました。window.activeBorder はアクティブ (フォーカスされている) ウィンドウに適用され、window.inactiveBorder は非アクティブ (フォーカスされていない) ウィンドウに適用されます。これらの新しい色はどの色からも継承されないため、テーマまたは workbench.colorCustomizations 設定によって提供される必要があります。いずれか 1 色のみが指定された場合、その色のボーダーがアクティブおよび非アクティブの両方のウィンドウに適用されます。

Animated image showing the use of the new window border colors

リストとツリーのキーボードスクロール

キーボードでリストやツリーをスクロールするために、⌘↑ (Windows, Linux Ctrl+Up)⌘↓ (Windows, Linux Ctrl+Down) を押すことができるようになりました。

Zen モードでの通知の削減

Zen モードの使用中、エラーに関する通知を除き、通知トーストは表示されなくなります。この動作は、新しい zenMode.silentNotifications 設定で制御できます。すべての通知は、ステータスバーの右下隅にある通知アイコンをクリックすることで常にアクセスできます。

アウトラインとブレッドクラムの型フィルター

アウトラインビューとブレッドクラムナビゲーションに表示されるシンボルを構成するための新しい設定があります。これらの設定は outline.show{symbol type} および breadcrumbs.show{symbol type} と呼ばれます。たとえば、outline.showVariablesoutline.showFunctions などです。

Filtered Outline view

上記のスクリーンショットは、ローカル変数を表示しないように構成されたアウトラインビューを示しており、変数 hidden が表示されていないことがわかります。

シンボルの種類を割り当てるのは、言語拡張機能の役割であることに注意してください。アウトラインビューでシンボルラベルにホバーすると、使用されているシンボルタイプ (括弧内に表示) を確認できます。

エディターを分割する際のサイズ変更動作の制御

新しい設定 workbench.editor.splitSizing は、エディターを分割する際のエディターのレイアウトを制御します。既定では、以下に示すように、すべてのエディター間でサイズが均等に分配されます。

splitSizing with distribute value

この設定を split に変更すると、現在のエディターが半分に分割され、他のエディターのサイズには影響しません。

splitSizing with split value

GPU アクセラレーションの無効化

VS Code の UI レンダリングにおける GPU の使用方法に関連していると思われる問題報告をユーザーから受け付けています。これらのユーザーは、追加の --disable-gpu コマンドライン引数を付けて VS Code を実行すると、はるかに良い体験を得られます。この引数を付けて実行すると、GPU ハードウェアアクセラレーションが無効になり、ソフトウェアレンダラーにフォールバックします。

より簡単に利用できるよう、このフラグを設定として追加できるため、毎回コマンドラインで渡す必要がなくなります。

このフラグを追加するには

  • コマンドパレットを開きます (⇧⌘P (Windows, Linux Ctrl+Shift+P))。
  • Preferences: Configure Runtime Argumentsコマンドを実行します。
  • このコマンドは、ランタイム引数を構成するための argv.json ファイルを開きます。すでにいくつかのデフォルト引数が表示されているかもしれません。
  • "disable-hardware-acceleration": true を追加します。
  • VS Code を再起動します。

注意: 問題が発生している場合を除き、この設定を使用しないでください!

エディター

言語ごとの `files.eol` 設定

files.eol 設定を言語ごとに設定できるようになりました。たとえば、「mylanguage」言語識別子のすべてのファイルが、すべての新しいファイルに対してデフォルトの行末シーケンスとして \n を使用するように定義できます。

"[mylanguage]": {
   "files.eol": "\n"
}

行末シーケンスは新しいファイルに適用されます。既存のファイルについては、現在の行末シーケンスが常に保持されます。既存のファイルの行末シーケンスを変更するには、行末シーケンスの変更コマンドを使用します。

files.eol 言語設定を使用することで、「shellscript」のデフォルトの行末シーケンスは \n と定義されるようになりました。

ミニマップのスケーリングとフォントレンダリングの改善

新しい設定 editor.minimap.scale は、ミニマップのサイズをいくつかの定数値のいずれかに構成します。これは、高 DPI または超ワイドディスプレイで特に便利です。また、ミニマップのフォントのレンダリングがより滑らかで鮮明になりました。

Animated image showing the ability to resize the minimap

キーボードからの定義プレビューホバー

定義プレビューホバーウィジェットのアクセシビリティを向上させるための新しいコマンド 定義プレビューホバーを表示 が追加されました。このウィジェットは、マウスでシンボルにホバーし、プラットフォームと設定に依存する修飾キーを押すことでトリガーできます。以前は、ホバーを表示コマンドのみが提供されており、これはマウスカーソルをシンボルにホバーするのと同等でした。今回、定義プレビューホバーを表示により、詳細なホバー情報をキーボードで表示できるようになりました。

Animated image showing the use of the new Show Definition Preview Hover command

括弧のマッチングの改善

以前は、カーソルが括弧文字の隣にある場合にのみ、VS Code は対応する括弧をハイライトしていました。現在、VS Code は、存在する囲む括弧を常にハイライトします。

Image showing highlighted enclosing brackets

また、括弧へ移動および括弧まで選択アクションを調整し、囲む括弧を使用するようにしました。

選択範囲の複製

選択範囲の複製という新しいアクションを追加しました。実行すると、現在の選択範囲が複製され、結果が選択されます。選択範囲がない場合は、現在の行が複製されます。これらはすべてシステムクリップボードに書き込まれることなく実行されます。

フォント機能の設定

フォント機能をより細かく制御できるようになりました。"editor.fontLigatures": true を構成すると、VS Code は ligacalt を有効にしていました。しかし、一部のフォントには、Fira Code が使用するスタイルセットなど、さらに多くの設定があります。

これらのフォント機能を明示的に制御できるようになりました。例:

"editor.fontFamily": "Fira Code",
"editor.fontLigatures": true,
"[javascript]": {
  "editor.fontLigatures": "'ss02', 'ss19'",
},

上記の例の設定では、エディターが Fira Code フォントファミリーを使用し、すべての言語でフォント合字を有効にし、JavaScript ファイルでは「Horizontal Bar」('ss02')と「Dotted zero」('ss19')のフォント機能を有効にするように設定されています。これにより、JavaScript で >= 合字が横棒で、0 が内部に点のある文字としてレンダリングされます。

Image showing font feature settings in the editor

Unicode 結合文字の処理の改善

Unicode 結合文字の処理に関する改善を行い、これらのシーケンスをアトミックな文字として扱います(カーソル移動、編集操作、またはブロックカーソルレンダリングにおいて)。これは、ブロックカーソルスタイルとビフォー/アフターのアニメーションで最もよく示されます。

以前
Animation showing cursor movement before

以後
Animation showing cursor movement after

関連する変更として、ステータスバーの Col セクションに Unicode ポイント数が表示されるようになりました。

カーソルリドゥ

ソフトアンドゥコマンドはカーソルアンドゥに名前が変更されました。このアクションは、たとえば⌘D (Windows, Linux Ctrl+D) を使用して次のマッチを選択しすぎてしまった場合など、最後のカーソル状態の変更のみを元に戻すのに役立ちます。さらに、以前に元に戻されたカーソル状態の変更をやり直すカーソルリドゥを追加しました。

差分エディターの改善

組み込みの差分計算には、以前は 5 秒のハードコードされたタイムアウトがあり、その後は諦めて最小ではない差分を返していました。このタイムアウトは "diffEditor.maxComputationTime" を使用して構成できるようになりました。タイムアウトを 0 に設定すると、どれだけ時間がかかっても常に最小差分が計算されます。さらに、差分エディターは、計算に 1 秒以上かかる場合にプログレスバーを表示するようになりました。

差分エディターを使用する際に混乱の元となっていたのは、先頭または末尾の空白の違いのみがあるファイルを比較し、差分エディターが空白のトリムを無視するように構成されている場合でした。これにより、ソース管理はファイルが変更されたと表示する一方で、差分エディターは差分を表示しないという結果になりました。VS Code は、このケースを検出すると、空白の差分を素早く表示するための空白の差分を表示ボタンを表示するようになりました。これは、差分エディターの上部にある末尾の空白文字の差分を表示/無視コマンドを使用して切り替えることができます。

Animation for button that shows when comparing two files that contain only whitespace diffs but the diff editor is configured to ignore trim whitespace

統合ターミナル

コードがデフォルトでサポートされるように

新しい設定 terminal.integrated.allowChords (既定値 true) により、コードキーバインドの一部であるキーバインドが、ターミナルによる評価をスキップして VS Code によって処理されるようになります (terminal.integrated.commandsToSkipShell 許可リストをバイパスします)。

ターミナルでのキーバインドに関する同じ制限は引き続き適用されることに注意してください。この評価を行う際には、最も優先度の高いコードキーバインドが考慮されます。

たとえば、拡張機能がキーバインド Ctrl+M A に貢献し、keybindings.json ファイルに次のように定義されている場合

[
  { "key": "ctrl+m a", "command": "workbench.action.terminal.toggleTerminal" },
  { "key": "ctrl+m a", "command": "workbench.action.focusLastEditorGroup" }
]

Ctrl+M A は、最終的なキーバインドであり、ユーザーキーバインドが拡張機能が提供するキーバインドよりも優先されるためworkbench.action.focusLastEditorGroup コマンドの実行につながります。

高速スクロールのサポート

ターミナルは、editor.fastScrollSensitivity 設定で定義された乗数に基づいて、Alt キーとマウスホイールを使用して高速にスクロールできるようになりました。

右クリック動作の新しい「貼り付け」オプション

rightClickBehavior 設定に新しいオプションが追加され、右クリックで常にターミナルに貼り付けられるようになりました。

"terminal.integrated.rightClickBehavior": "paste"

単語選択のダブルクリックでより多くの区切り文字を使用

ターミナルで単語を選択するためにダブルクリックする際に、文字 ,:; が単語の区切り文字として数えられるようになりました。

ターミナルの初期作業ディレクトリがシンボリックリンクに設定されている場合、シンボリックリンクはターミナルで保持されるようになりました。

コマンドナビゲーションがスクロール位置から機能するように

コマンドナビゲーションは、ターミナルで実行されたコマンド間を移動したり、選択したりできるようにします。これは、ターミナルのスクロール位置を考慮するようになったため、スクロールして前のコマンドを見つけると、ターミナルがターミナルのビューポートから上にスクロールします (以前は下からスクロールしていました)。

Command navigation jumps to nearest command after scrolling

コマンドナビゲーションは、macOS ではデフォルトで Cmd+Up/Down として、コマンド選択は Cmd+Shift+Up/Down としてのみバインドされています。

Windows または Linux でこの機能を使用したい場合のキーバインドの例をいくつか示します。

{
  // Terminal command tracking on Windows and Linux
  { "key": "ctrl+up",          "command": "workbench.action.terminal.scrollToPreviousCommand", "when": "terminalFocus" },
  { "key": "ctrl+down",        "command": "workbench.action.terminal.scrollToNextCommand", "when": "terminalFocus" },
  { "key": "ctrl+shift+up",    "command": "workbench.action.terminal.selectToPreviousCommand", "when": "terminalFocus" },
  { "key": "ctrl+shift+down",  "command": "workbench.action.terminal.selectToNextCommand", "when": "terminalFocus" },
}

タスク

タスククイックピックリスト

タスク: タスクの構成コマンドは、定義されたタスクが1つしかない場合、常にクイックピックタスクリストをスキップするようになりました。この動作をタスク: タスクの実行およびその他のタスククイックピックにも拡張するには、task.quickOpen.skip 設定を true に設定します。

新しい設定 task.quickOpen.history は、タスククイックピックに最近使用したタスクとして表示されるタスクの数を制御します。最近のタスクセクションを無効にするには、task.quickOpen.history0 に設定します。

detail プロパティを持つタスクは、一部のタスクリストで表示されるようになりました。タスククイックピックで詳細をオフにするには、task.quickOpen.detailfalse に設定します。

フォルダーに対してNPMスクリプトを実行するオプション

npm.enableRunFromFolder 設定が有効になっている場合、フォルダーが選択されると、ファイルエクスプローラーのコンテキストメニューにフォルダー内のNPMスクリプトを実行...コマンドが表示されます。このコマンドは、そのフォルダーに含まれるNPMスクリプトのクイックピックリストを表示し、タスクとして実行するスクリプトを選択できます。

タスクプロバイダーが遅い場合の警告

タスクプロバイダーの実行が遅い場合、遅延を回避するための提案を提供する警告が表示されるようになりました。この警告は、個々のタスクタイプに対して無効にすることも、task.slowProviderWarningfalse に設定することで、すべてのタスクに対して無効にすることもできます。

Slow task provider warning

タスクの自動検出を無効にする

関心のあるすべてのタスクが tasks.json ファイルに定義されている場合、タスクの実行時にパフォーマンスを向上させるために、すべての拡張タスクプロバイダーを無効にしたい場合があります。個々の拡張機能がタスクプロバイダーを無効にする設定を提供するのは良い習慣ですが、task.autoDetectoff に設定することで、すべてのタスクプロバイダーを無効にできるようになりました。

問題マッチャーのプロンプト

以前は、問題マッチャーがないタスクは、問題マッチャーのプロンプトをスキップするために、tasks.json で空の問題マッチャーを設定する必要がありました。現在、task.problemMatchers.neverPrompt を使用すると、すべてのタスクまたは特定のタスクタイプに対して問題マッチャーのプロンプトを無効にできます。また、問題マッチャーのプロンプトには、プロンプトを無効にする新しいオプションも追加されました。

Problem matcher prompt dropdown

ソース管理

アクティブなエディターの変更時にファイルをハイライト

ソース管理ビューは、アクティブなエディターファイルをツリー/リストビューで自動的にハイライトするようになりました。

SCM view highlighting the active file

Git: 未追跡ファイルの管理を改善

Git: Untracked Changes 設定を使用して、未追跡ファイルを個別に管理できるようになりました。ソース管理ビューで未追跡ファイルを別のグループで表示したい場合は、separate オプションを選択します。表示したくない場合は hidden を選択します。デフォルトのコミットアクションはこの設定に合わせて調整され、mixed 設定値を使用している場合にのみ未追跡の変更をコミットに含めます。

Git untracked files

Git: マージコミット時の自動コミットメッセージ

Git マージコミットの最中であることを VS Code が検出すると、Git のデフォルトのコミットメッセージが自動的にコミット入力ボックスに入力されます。

Git merge commit message

Git: エクスプローラーで表示

ソース管理ビューの Git リポジトリから、ファイルエクスプローラーでファイルを表示するためのコンテキストメニューアクションエクスプローラーで表示が追加されました。

Git Reveal in Explorer

Git: クローン進行状況

クローン操作が、右下隅の通知で進行状況を表示できるようになりました。

Git clone progress

デバッグ

ブレークポイントを概要ルーラーに表示可能

大きなファイルでブレークポイントを扱う際をより簡単にするため、新しい設定 debug.showBreakpointsInOverviewRuler を有効にすることで、エディターの概要ルーラーにブレークポイントを表示できるようになりました。

breakpoints in overview ruler

複合デバッグ構成のプレローンチタスク

現在、すべてのデバッグ構成は、preLaunchTask 属性を介してデバッグセッションが開始される前に実行されるタスクを指定できます。これは単一のプログラムをデバッグする場合にはうまく機能しますが、複数のプログラムが関与する複合構成を使用する場合には扱いにくくなります。

このマイルストーンでは、複合デバッグ構成ごとの preLaunchTask のサポートを追加しました。これにより、個々のデバッグセッションが開始される前に、単一のタスクですべてのデバッグターゲットをビルドできます。ビルドエラーが発生した場合、セッションは開始されません。

prelaunch task for compound debug configurations

言語

CSS メディアクエリシンボル

CSS/SCSS/Less ファイルでは、メディアクエリシンボルがアウトラインビュー、ブレッドクラムパス、およびファイル内のシンボルへ移動リストに表示されるようになりました。

CSS media query symbols

typescript.tsserver.maxTsServerMemory

数千のファイルを含む大規模な TypeScript プロジェクトで作業している場合、新しい typescript.tsserver.maxTsServerMemory 設定により、IntelliSense を強化する TypeScript サーバーの最大メモリ使用量を増やすことができます。

拡張機能作成

vscode.env.uiKind

拡張機能がどの種類の UI で実行されているかを知ることができるように、新しい API vscode.env.uiKind が追加されました。ブラウザでの VS Code の実行をサポートするため、可能な値は UIKind.WebUIKind.Desktop です。

コールヒエラルキープロバイダーAPI

コールヒエラルキープロバイダーAPI (CallHierarchyProvider) を最終決定しました。これは、関数やメソッドなどの呼び出し元と呼び出しを見つけるコールヒエラルキーのピーク機能をサポートしています。

タスク CustomExecution

CustomExecution タスクタイプ API が最終決定されました。シェルまたはプロセスタスクがタスクに適さない場合、CustomExecution タスクを使用して拡張機能でコールバックを実行できます。詳細については、タスクプロバイダー拡張ガイドを参照してください。

デバッグAPI: "startDebugging" リクエストの "consoleMode" オプション

前回のマイルストーンで、デバッグセッションの階層が単一のデバッグコンソールを共有するか、個別のコンソールを使用するかを制御するための新しい提案されたAPIを導入しました。このAPIは正式になり、マーケットプレイスで公開されている拡張機能で使用できるようになりました。

アイコンのカラー トークン

アイコン用の新しいカラー トークンをようやく導入できたことを嬉しく思います。一部の領域にこれらを徐々に追加しており、以下が最初のバッチです。

シンボル

これらのアイコンは、アウトラインビュー、ブレッドクラムナビゲーション、サジェストウィジェットに表示されます。

  • symbolIcon.arrayForeground
  • symbolIcon.booleanForeground
  • symbolIcon.classForeground
  • symbolIcon.colorForeground
  • symbolIcon.constructorForeground
  • symbolIcon.constantForeground
  • symbolIcon.enumeratorForeground
  • symbolIcon.enumeratorMemberForeground
  • symbolIcon.eventForeground
  • symbolIcon.fieldForeground
  • symbolIcon.fileForeground
  • symbolIcon.folderForeground
  • symbolIcon.functionForeground
  • symbolIcon.interfaceForeground
  • symbolIcon.keyForeground
  • symbolIcon.keywordForeground
  • symbolIcon.methodForeground
  • symbolIcon.moduleForeground
  • symbolIcon.namespaceForeground
  • symbolIcon.nullForeground
  • symbolIcon.numberForeground
  • symbolIcon.objectForeground
  • symbolIcon.operatorForeground
  • symbolIcon.packageForeground
  • symbolIcon.propertyForeground
  • symbolIcon.referenceForeground
  • symbolIcon.snippetForeground
  • symbolIcon.stringForeground
  • symbolIcon.structForeground
  • symbolIcon.textForeground
  • symbolIcon.typeParameterForeground
  • symbolIcon.unitForeground
  • symbolIcon.variableForeground

Symbol icon colors

問題と通知

問題と通知のアイコンのデフォルトカラーは、エディターのフォアグラウンドカラーを継承するように設定しました。これにより、これらのカラーを変更すると、他の領域にも継承されます。

Problem icon colors

問題パネルと通知のアイコンの色も明示的に設定できます。

  • problemsErrorIcon.foreground
  • problemsWarningIcon.foreground
  • problemsInfoIcon.foreground
  • notificationsErrorIcon.foreground
  • notificationsInfoIcon.foreground
  • notificationsWarningIcon.foreground

電球

電球アイコンもテーマ設定可能です。

  • editorLightBulb.foreground
  • editorLightBulbAutoFix.foreground

Lightbulb icon colors

vscode.env.asExternalUri

vscode.env.asExternalUri API は、拡張機能が実行されている場所から、クライアントマシン上の同じリソースの URI に、http: または https: URI のような外部 URI を解決することを可能にします。これは vscode.env.openExternal API の伴侶ですが、解決された URI を外部プログラムを使用して開く代わりに、結果を拡張機能に返します。

import * as vscode from 'vscode';
import * as http from 'http';

const PORT = 3000;

export function activate(context: vscode.ExtensionContext) {
  startLocalServer(PORT);

  context.subscriptions.push(
    vscode.commands.registerCommand('example.command', async () => {
      const resolved = vscode.env.asExternalUri(
        vscode.Uri.parse(`https://:${PORT}`)
      );
      vscode.window.showInformationMessage(
        `Resolved to: ${resolved} on client and copied to clipboard`
      );
      vscode.env.clipboard.writeText(resolved.toString());
    })
  );
}

function startLocalServer(port: number) {
  const server = http.createServer((req, res) => {
    res.end('Hello world!');
  });
  server.on('clientError', (err, socket) => {
    socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
  });
  server.listen(port);
  vscode.window.showInformationMessage(`Started local server on port: ${port}`);
}

http: および https: URI の場合、拡張機能がクライアントマシンで実行されている場合、asExternalUri は何もしません。ただし、拡張機能がリモートで実行されている場合、vscode.env.asExternalUri はローカルマシンからリモートの target へのポート転送トンネルを自動的に確立し、トンネルへのローカル URI を返します。

asExternalUrivscode.env.uriScheme URI とともに呼び出された場合、その URI は、ブラウザで開かれた場合 (例えば openExternal 経由で)、登録された URI ハンドラーがトリガーされる結果となる URI を返します。

試験的なカスタムデータ設定と貢献ポイントの削除

[html/css].experimental.customData 設定と contributes.[html/css].experimental.customData 貢献ポイントは、1.38 で非推奨になり、現在は削除されています。代わりに安定版のカスタムデータ設定と貢献ポイントを使用できます。カスタムデータ形式の詳細については、microsoft/vscode-custom-data リポジトリを参照してください。

extensionKind が配列に

package.json では、extensionKind プロパティは、リモートの場合に拡張機能がどこで実行されるかを示すために、"ui" または "workspace" の値を持つことができました。今回のリリースで、extensionKind は配列にできるようになりました。たとえば、["ui", "workspace"] は、拡張機能が "ui" 側と "workspace" 側の両方で実行できることを示し、"ui" 側にインストールされている場合は "ui" 側で実行する方が優先されます。

提案された拡張API

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

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

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

IntelliSense の置換モードのサポート

ユーザーが提案を既存のテキストと置き換えるべきか、単に挿入すべきかを決定できる機能に取り組んでいます。たとえば、con|st の内部で console を受け入れると、console (置換) または consolest (挿入) になることがあります。どちらのモードにも利点があり、最終的には現在のコンテキストとユーザーの設定に依存します。この機能が最適に機能するためには、拡張機能に何をすべきかを伝える必要があります。したがって、CompletionItem#range プロパティに新しいタイプを追加することを提案しており、次のように変更されます。

interface CompletionItem {
  range?: Range | { insert: Range; replace: Range };
}

範囲は引き続きオプションであるか、シンプルな範囲であることができますが、挿入用と置換用の2つの範囲にすることもできます。詳細については、Issue #10266 を参照してください。

タスク詳細

タスクプロバイダーがUIに表示されるタスクにdetailを追加するために使用できる、Taskに新しいプロパティが追加されました。tasks.jsonでも詳細プロパティを使用できます。組み込みのnpm拡張機能は、タスク詳細を使用してどのnpmスクリプトが実行されるかを表示します。

tasks with detail

Custom Editor に WebviewPanelOptions を渡すサポート

このイテレーションでも、Custom Editor API 提案に関する作業を継続しました。提案された registerWebviewEditorProvider 関数は、カスタムエディターのウェブビューで retainContextWhenHidden およびその他の機能を有効にするための options のセットを受け取るようになりました。

export function registerWebviewEditorProvider(
  viewType: string,
  provider: WebviewEditorProvider,
  options?: WebviewPanelOptions
): Disposable;

エンジニアリング

ブラウザで動作する VS Code のテスト

VS Code をブラウザで実行するための最小限のセットアップが、開発およびテスト用に利用可能になりました。ブラウザインスタンスはまだ一部の機能が不足しており、活発に開発中です。

vscode リポジトリのローカルフォークで、コマンドラインから yarn web を実行し、https://:8080/ にアクセスしてください。vscode リポジトリのクローンとビルドの詳細については、セットアップ手順を参照してください。

VS Code running in a browser

注意: このセットアップを本格的な開発に使用しないでください。目的は、コミュニティが変更を VS Code に貢献し、ブラウザでの全体的なエクスペリエンスを向上させることです。

TypeScript 3.7 での VS Code のビルド

VS Code は TypeScript 3.7 を使用してビルドされるようになりました。これは、コードベースでOptional Chaining (?.) を使用できるようになった素晴らしいアップデートです (その他多くの改善ももたらされます)。

JavaScript および TypeScript Nightly 拡張機能をインストールすることで、今日から VS Code で TypeScript 3.7 の機能を使用できます。

Electron 6.0 アップデート

このマイルストーンで、Electron 6 を VS Code にバンドルする検討を完了し、この Electron バージョンが初めて安定版として出荷されることになりました。これは主要な Electron リリースであり、Chromium 76.0.3809.146 と Node.js 12.4.0 を搭載しています (現在の Chromium 69 と Node.js 10.11.0 バージョンから大幅な進歩です)。

Electron 7 への更新を検討し始めており、近いうちに Insiders にプッシュしたいと考えています。

注目すべき修正点

  • 78634: ターミナルのコンテンツがサイズ変更時に消える (powershell/conpty)
  • 25854: Markdown プレビューをドラッグして新しいエディターグループを開始できない
  • 81824: Webview エディターが「履歴から前のエディターを開く」コマンドに表示されない

ありがとうございます

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

問題追跡への貢献者

受信した問題の管理にご協力いただける場合は、コミュニティ問題追跡ページをご覧ください。

vscodeへの貢献者

language-server-protocolへの貢献者

vscode-eslintへの貢献者

vscode-json-languageserviceへの貢献

vscode-css-languageserviceへの貢献者

node-jsonc-parserへの貢献

debug-adapter-protocolへの貢献者

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

inno-updaterへの貢献

localizationへの貢献

Microsoft Localization Community Platform (MLCP) を利用している Cloud + AI ローカリゼーションコミュニティメンバーは 800 人以上おり、Visual Studio Code には活発な貢献者が約 100 人います。新しい翻訳の提供、翻訳への投票、またはプロセスの改善提案など、皆様の貢献に感謝いたします。

貢献者のスナップショットを以下に示します。貢献者名リストを含むプロジェクトの詳細については、プロジェクトサイト (https://aka.ms/vscodeloc) を参照してください。

  • ボスニア語 (ラテン文字、ボスニア・ヘルツェゴビナ): Adnan Rizvan。
  • チェコ語: Michal Franc, Jan Hruby。
  • デンマーク語: Lasse Stilvang, Frederik bruun。
  • オランダ語: Laurens Kwanten, Lemuel Gomez, Niels ter Haar。
  • 英語 (イギリス): Graham Smith, Martin Littlecott, Alexander McLean。
  • フランス語: Antoine Griffard, Rodolphe NOEL, Bruno Lewin, Maxime Bouveron, DJ Dakta。
  • ドイツ語: Simon Haag, Adrian Bähr, Julian Tomsik。
  • ヘブライ語: Ariel Bachar.
  • ヒンディー語: Kishan K, Rohit Raj。
  • 中国語 (簡体字): Yizhi Gu, paul cheung, 斌 项, 顺 谭, 一斤瓜子, Charles Lee, Peng Zeng, Charles Dong, 楠 姜, yungkei fan, ztluo, David Huang, 普鲁文, Zhen-Qi Liu, zhichen zhao, Phil Wang。
  • 中国語 (繁体字): Jimmy Hu, 船長, E L, Winnie Lin。
  • インドネシア語: Jakka Prihatna, Eriawan Kusumawardhono, Nicko Satria Utama, Christian Elbrianno, Septian Adi。
  • イタリア語: Alessandro Alpi, Luigi Bruno.
  • 日本語: Yuta Ojima, Michihito Kumamoto, Aya Tokura, TENMYO Masakazu, Takayuki Fuwa, Koichi Makino。
  • 韓国語: Hongju, Sungjin Jeong。
  • ポーランド語: Andrzej Poblocki, Kacper Łakomski。
  • ポルトガル語 (ブラジル): Marcelo Fernandes, Marcondes Alexandre, Roberto Fonseca, Alessandro Fragnani, Arthur Renato, Jota Freitas Jr, Caio Felippe Curitiba Marcellos。
  • ポルトガル語 (ポルトガル): Pedro Filipe。
  • ルーマニア語: Andrei Tudor, Bogdan Mateescu, Stefan Gabos。
  • ロシア語: Kazakov Lex, Vadim Svitkin, TJS。
  • スペイン語: Aleks M, José María Aguilar, Jerónimo Milea, Ricardo Estrada Rdez, Abdón Rodríguez P。
  • スウェーデン語: Sven Axelsson, Patric Högman。
  • タミル語: Pradeep Krishnan。
  • トルコ語: Ahmetcan Aksu, Cansu Gürler, Mehmet Yönügül, Umut Can Alparslan。
  • ウクライナ語: Arthur Murauskas, Oleh Hatsenko, Oleksandr Krasnokutskyi, Did Kokos。
  • ベトナム語: huy dk, Việt Anh Nguyễn, Ha Xuan Anh Nguyen, Quoc Han Dinh。