この文章は引用したものです : https://github.com/ayatokura/JP-VSCode-Docs/blob/master/release-notes/v1_13_ja.md
Update 1.13.1: このアップデートでは、これらの問題に対処しています。
Visual Studio Code の 2017 年 5 月リリースへようこそ。 このリリースではいくつかの重要な更新があり、ハイライトは次のとおりです:
- デフォルト設定の変更 - デフォルトで有効に: 拡張機能の自動更新、エディタのドラッグアンドドロップ、ミニマップ(アウトライン表示)
- Ctrl/Cmd + Click による複数カーソルの追加 - Sublime Text や Atom と同じ操作によるマルチカーソルの追加
- 改良された Git マージ - CodeLens による変更受け入れ可能なインラインマージアクション
- より良い IntelliSense の詳細表示 - 簡単に完全なサジェストドキュメントの表示を切り替え可能に
- Emmet 略語表示の改善 - 入力時に Emmet の展開をプレビュー可能に
- 拡張スニペット - マルチカーソルおよびネストされたスニペットを使用した生産性の向上
- より高速になったデバッガ - ソースコードのステップ実行を高速化
- 例外スタックトレース内のファイルリンク - 例外スタックトレースから直接ソースコードへジャンプ可能に
- Docker と MERN デバッグのレシピ - Docker および MERN スタックプロジェクトのデバッグ構成例
- 追加されたワークベンチテーマカラー - カスタマイズ可能なテーマカラーの追加
- より良い NVDA サポート - NVDA スクリーンリーダーのアクセシビリティ向上
これらのリリースノートをオンラインで読むには、code.visualstudio.com へアクセスし、Updatesを参照してください
VS Code の重要な更新に関連するアップデート情報は、リリースノートの次のセクションに配置されています。その他のアップデートは、次のとおりです:
- ワークベンチ - シンボル検索の結果にファイル名を表示、メニューバーのニーモニック無効化
- エディタ - サイズ変更可能な Find ウィジェット、新しい折りたたみコントロールの設定
- 言語 - JSX/TSX コンポーネントのハイライト表示、シンボル検索が Markdown ヘッダーをサポート
- デバッグ - デバッグコンソールからすべてをコピー、起動設定のローカル/リモートパス
- タスク - VS Code 上で実行される Gulp と Grunt タスクのカスタマイズと自動検出
- 拡張機能の作成 - エクスプローラのカスタムビュー、テーマカラーのリファレンス
Insiders: できるだけ早く新しい機能を試してみたいですか? それならば、毎晩アップデートされる Insiders build をご利用ください。常に最新のアップデートが利用可能になり、最新の機能をいち早く試してみることが可能です
Setting changes
設定の変更
Changed setting defaults
変更された設定のデフォルト
5月 のリリースですぐに気づくことは、いくつかの機能設定のデフォルト値を変更したことです。以前のリリースでは、 ミニマップ(アウトラインビュー)、アイコンテーマ、インデントガイドなどの機能はデフォルトでオフになっていましたが、これらの機能はとても有用と考えています。
新しいデフォルト設定は次のとおりです:
設定 | 新しいデフォルト値 | 概要 |
---|---|---|
editor.minimap.enabled | true | 右側にファイルのミニマップ(アウトラインビュー)を表示 |
workbench.iconTheme | “vs-seti” | vs-seti ファイルアイコンテーマを使用 |
editor.renderIndentGuides | true | エディタのインデントガイド表示 |
editor.dragAndDrop | true | エディタで選択された項目をドラッグアンドドロップで移動 |
extensions.autoUpdate | true | インストール済み拡張機能の自動更新 |
window.openFilesInNewWindow | “off” | 実行中の VS Code インスタンスからファイルを開く |
もちろん、VS Code のユーザーまたはワークスペース設定で変更することが可能です (File > Preferences > Settings または、キーボードショートカット ⌘, (Windows, Linux Ctrl+,)).
Add multiple cursors with Ctrl / Cmd + Click
Ctrl/Cmd +クリックで複数のカーソルを追加
マルチカーソルを適用する修飾キー(Windows と Linux は Ctrl+Click
、macOS では Cmd + Click
) を変更するための新しい設定 editor.multiCursorModifier
を導入しました。これにより、Sublime Text や Atom など他のエディタから移行してきたユーザーにとって、使い慣れたキーボード修飾キーを引き続き使用することが可能です。
次のように設定します:
ctrlCmd
- WindowsではCtrl
、macOS ではCmd
に対応しますalt
- 既存のデフォルトキーであるAlt
また、新しいメニュー項目 Use Ctrl+Click for Multi-Cursor を使用することで、この設定をすばやく切り替えることができます。
Go To Definition および Open Link ジェスチャーは、この設定を優先し、競合しないように適応します。たとえば、設定が ctrlCmd
の場合、Ctrl/Cmd+Click
を使って複数のカーソルを追加することができ、Alt+Click
を使ってリンクを開くか定義を呼び出すように変更されます。
Issue #2106 を解決したことにより、既存の選択の上に同じジェスチャーを使用してカーソルを削除することが可能になりました。
Workbench
ワークベンチ
Filenames in symbol search results
シンボル検索の結果にファイル名を追加
ワークスペースのシンボル検索 (⌘T (Windows, Linux Ctrl+T)) を使用することで、ワークスペース内のシンボルをすばやく見つけることができますが、検索結果のリストに各シンボルのファイル名が含まれるようになりました:
Disable menu bar mnemonics
メニューバーのニーモニックを無効にする
メニューバーのすべてのニーモニック(ホットキー)を無効にするための新しい設定 window.enableMenuBarMnemonics
が追加されました (WindowsおよびLinuxの場合)。false
を設定することにより、いくつかの Alt+
キーボードショートカットに他のコマンドに割り当てられるようになります。
Install Additional SCM Providers
追加の SCM プロバイダをインストールする
VS Code マーケットプレイスから SCM プロバイダーを簡単に見つけてインストールするための新しいコマンド その他の SCM プロバイダーをインストール を導入しました。このコマンドは、ソース管理 ビューの SCM プロバイダの切り替え… コマンドか、コマンドパレット の SCM: Switch SCM Provider から使用できます。
Go to Implementation and Go to Type Definition added to the Go menu
インプリメンテーションに移動し、Go メニューにタイプ定義を追加
Go (移動) メニューに Go to Implementation (実装に移動)と Go to Type Definition (型定義に移動) コマンドが追加されました:
Preserving view state for resource editors
リソースエディタのビューステートの保持
リソースエディタの切り替え時に、リソースエディタのビューステートが保持されるようになりました。これは、内部モジュールエディタのスクロール位置と他のすべてのビューデータを保持するため、内部モジュールをデバッグする際に便利です。ただし、ユーザーがエディタを閉じると、ビューの状態は常にクリアされます。
High Contrast theme
ハイコントラストテーマ
ハイコントラストテーマを改善して、より多くのトークンカラーを追加し、選択とステータスバーのカラーにも適用することで、より明瞭なコントラストを実現しました。
New theming colors
新しいテーマの色
ワークベンチにおけるテーマのサポートについて多くのフィードバックを受け、ワークベンチカラーを採用するテーマが増えてきています。このマイルストーンでは、50 色の新しい色を追加し、既存の色にいくつか微調整を加えました。これらの色は、テーマによって、または workbench.colorCustomizations
設定でユーザーが直接設定できます。
新しく追加されたカラーには、更新された Theme Color Referenceで確認できます。
以下に、既存の色の動作の変更を示します:
Key | Description |
---|---|
panel.border | contrastBorder の値を上書きしますが、contrastBorder が設定されている場合は、より具体的な色指定が可能です |
tab.border | contrastBorder の値を上書きしますが、contrastBorder が設定されている場合は、より具体的な色指定が可能です |
editorGroup.border | contrastBorder の値を上書きしますが、contrastBorder が設定されている場合は、より具体的な色指定が可能です |
list.* | contrastBorder と contrastActiveBorder がある場合でも、すべてのリストカラーを設定できるようになりました |
Multi-root workspaces
複数のルートワークスペース
このマイルストーンでは、VS Code でマルチルート(複数のプロジェクトフォルダ)をサポートするための重要な方向性を示します。この機能要求に取り組むことについて、まだ、少し時間を要するのではないかと疑問を持つ場合は、Daniel の優れた解説を読んでください。
私たちは、UX に焦点を当て、多くの新しい概念を導入せずに、現在のアーキテクチャでどのようにこの機能を提供できるか設計の草案を作成しました。エンジニアリングチームと設計を共有した後、私たちは 2 つのユーザー調査を実施し、前提条件を検証しました。興味をもたれた方は、この機能を実装に至るまでの記録をご覧になることをお勧めするとともに、フィードバックをお寄せいただければと思います:
- group 1: https://youtu.be/48Y6tB3DN1g
- group 2: https://youtu.be/kHL6Rt-dLm0
With the UX work behind us, we feel that we can finally start implementing this feature request. Thanks for your patience!
私たちの背後にある UX の作業により、ついにこの機能要求の実装を開始できると考えています。お待たせしました!
Editor
エディタ
Merge conflict coloring and actions
マージ競合の色付けとアクション
インラインマージの競合は色付けされ、いずれかまたは両方の変更を受け入れるアクションを提供します。以前は、有名な Better Merge 拡張機能として提供されていた機能を、VS Code に組み込みました。Better Merge の開発者である Phil Price(@pprice) に感謝します。
Suggestion list and documentation side by side
サジェストリストとドキュメントを並べて表示
IntelliSense のオートコンプリート/サジェストがトリガーされた場合、⌃Space (Windows, Linux Ctrl+Space) を押すことにより、以前のようにフォーカスのあるサジェスト項目のドキュメントを表示します。ドキュメントは、サジェストウィジェットに重なること無く横に展開され、ドキュメントを読み込むと同時に、継続してサジェストリストをナビゲートすることができます。
ドキュメントが飛び出すように展開されますが、このウィジェットは閉じるボタンを使用して明示的に閉じるか、再度、⌃Space (Windows, Linux Ctrl+Space)を押すまで、オートコンプリート/サジェストがトリガーされるたびに展開されたままになります。
長い文書を上下にナビゲートしたいキーボード中心のユーザの場合は、 ⌃⌥Space (Windows, Linux Ctrl+Alt+Space) を押してフォーカスを展開されたドキュメントに移動することで、ページアップ/ダウンアクションのキーボードショートカットで操作できるようになります。
スクリーンリーダーを利用するユーザーの場合は、ドキュメントが横に展開され、サジェストリストを操作すると、その項目のラベルと文書 (もしあれば) が読み上げられます。
Emmet abbreviation expansion in suggestion list
提案リストの Emmet 省略形展開
これまで Emmet 拡張を展開するためのデフォルトの操作は、Tab キーを使用することでした。しかしながら、このデザインには 2 つの問題がありました:
- ユーザーがインデントを挿入する操作を行った際に、予期せぬ Emmet 拡張の挿入が多数発生する
- 一方で、Emmet 略語が展開されることを期待しているときに、意図していないサジェストリストの項目が挿入される
何れの問題も、展開された Emmet 略語はサジェストリストに表示するように変更し、インデントの挿入にも割り当てられる Tab を Emmet 略語の展開操作に割り当てないことで解決させました。
この新しい機能の使用を開始するには、emmet.useNewEmmet
を true
に設定します。この機能は、入力時にサジェストドキュメントが飛び出すように展開され、展開された Emmet 省略形をプレビューする場合に最適です。また、Tab キーでの Emmet 略語の展開は行われなくなりました。
editor.quickSuggestions
がオフになっている場合は、以下のいずれかの方法で Emmet の展開を行うことができます:
- ⌃Space (Windows, Linux Ctrl+Space) を押して手動で候補をトリガし、サジェストリストから展開を選択
- Command Palette から Emmet: Expand Abbreviation explicit コマンドを実行
- Emmet:Expand Abbreviation (コマンド id: editor.emmet.action.expandAbbreviation) にキーボードショートカットを割り当てる
HTML のようなファイルには 2 種類のサジェストがあります:
- 入力された省略形の展開(
emmet.showExpandedAbbreviation
にfalse
を設定することで、これを無効にできます) - 入力されたプレフィックスと一致する利用可能な略語 (
emmet.showAbbreviationSuggestions
にfalse
を設定することで、これを無効にできます)。たとえば、a
と入力すると、a
、a:link
、a:mail
、area
が表示され、Emmet 略語を見つける手助けとなります
CSS/LESS/SCSS ファイルでは、入力した単一の省略形のみが表示されます。
この機能を実装するために、単一のモノリシックな Emmet ライブラリをより小さく再利用可能な Emmet モジュールに置き換え、ほとんどの Emmet コマンドを再実装しました。新しい Emmet コマンドの動作に差違をみかけた場合は、GitHub に issue を作成してください。次のマイルストーンまでに、この取り組みを完了させ、emmet.useNewEmmet
設定を廃止し新しいモデルをデフォルトにする予定です。
Multi cursor snippets
マルチカーソルスニペット
スニペットとマルチカーソルを組み合わせることが可能になりました。
また、スニペットのプレースホルダを別のスニペットに追加し、プレースホルダをマージすることでスニペットを入れ子にすることもできます。
Strict snippets
厳格なスニペット
スニペットはプレースホルダと変数を持つことができます。スニペットの構文は、こちらで定義されています。ここで $1, $2...
はタブストップを現し、$varName1, $varName2...
は変数です。$
-sign に続くものだけが違うことに注意してください。sign が数字の場合はタブストップを、単語が続く場合は変数を現します。このマイルストーン以前の VS Code では、スニペットにインターナルの構文を使用していました。Textmate スタイルのスニペットがインターナル構文に書き換える際、変数として定義したものをタブストップに変えてしまうという不幸なバグがありました。下記がスムーズな移行を確実にするために行ったことです:
- 変数として認識できない変数を使用するスニペットが出現すると、それらをプレースホルダーに変えて、拡張機能の作成者(拡張機能を利用するエンドユーザーではない)に警告します
- また、テレメトリーイベントを記録するので、このような不幸な構成を使用している拡張機能に対しては、Issue/PR を行うことができます
将来的には、この種のスニペットを少しでもサポートし続けることが期待されます。スニペットは、ユーザーが作成したものと拡張機能から提供される 2 つのカテゴリに分類されます。ユーザーが作成したスニペットをサポートしながら、拡張機能で提供されるスニペットを厳格にします。
Find widget
Find ウィジェット
Find ウィジェットのサイズを水平方向に変更できるようになりました。Find ウィジェットの元の幅よりも長いフルテキストを簡単に確認することができます。
また、Find ウィジェットが表示され、Find ウィジェットが一致した結果に覆い被さらないように、最初の行をスクロールさせるようになりました。一致する検索結果の間を移動する際に、マッチした結果が検索ウィジェットによって隠されないように自動的に少しスクロールさせます。
Find ウィジェットの動作をカスタマイズに役立つ 2 つの設定を導入しました:
- 現在のエディタ上で選択している範囲から、Find ウィジェットで検索文字列をシードしたくない場合は、
editor.find.seedSearchStringFromSelection
をfalse
に設定できるようになりました editor.find.autoFindInSelection
をtrue
に設定することで、Find in Selection フラグをオンにします。エディタで複数の文字や行が選択されている場合に有効です
新しいコマンド toggleFindInSelection
(⌥⌘L (Windows, Linux Alt+L)) の追加により、”Find In Selection” を切り替えることで、すべての検索オプションを切り替えるときにキーボードを操作できます。
すべての検索オプションを切り替えが可能になったことで、キーボードに手を置いて操作することができます。
Folding controls
折りたたみコントロール
行番号の横に表示される折りたたみ (folding) コントロールの可視性を、editor.showFoldingControls
設定で調整できるようになりました:
mouseover
- マウスカーソルがエディタのガター上(行番号とテキストの間)にない場合は、折りたたまれていない領域を示すコントロールが隠されます。これは既存の動作と同様ですalways
- 折りたたみコントロールを、常に表示します
Letter spacing
文字間隔
@hoovercj による PR #22979 のおかげで、CSS の letter-spacing プロパティに似た、新しいエディタ設定 editor.letterSpacing
を追加しました:
Integrated Terminal
統合ターミナル
Dragging files to the terminal to paste path
ファイルをターミナルにドラッグしてパスをペースト
VS Code のファイルエクスプローラや OS ファイルマネージャからファイルまたはフォルダをターミナルにドラッグすることで、パス名を貼り付けることが可能になりました。
Unicode character width improvements
Unicode 文字幅の改善
統合ターミナルにおける Unicode キャラクターの表示は、これらのキャラクターを多用する vtop のようなアプリケーションが正しくレンダリングされるよう明示的にサイズが変更されました。
変更前:
変更後:
Tasks
タスク
Run tasks in the Integrated Terminal
統合ターミナルでタスクを実行する
統合ターミナル内で実行されるようにタスクを構成できるようになりました。 以下のように、task.json
ファイルに runner
プロパティーを追加することで、統合ターミナルが有効になります。
|
古い挙動に戻したい場合は、プロパティを削除するか、値に "process"
を設定してください。
Preview: Tasks version 2.0
プレビュー:タスク バージョン 2.0
タスク機能の新しいバージョン 2.0.0 を選択できますが、このバージョンは、現在プレビュー中であり、アクティブに開発を継続しています。しかしながら、早期のフィードバックを得るためにも、このリリースで利用可能にしました。
このタスク機能のプレビュー版を有効にするには、version
アトリビュートに "2.0.0"
を設定してください:
|
バージョン 2.0.0 を有効にすると、Gulp や Grunt などのさまざまなタスクランナーで構成されるタスクが自動的に検出され、Run Task
コマンドを使用してそれらを実行できます。現在、自動検出対象となるタスクは、Gulp, Grunt, Jake, および package.json
ファイルのスクリプトセクションで構成されるタスクランナーが対象となりますが、これ以外のタスクランナーで構成されるタスクの検出も可能なように、API を提供します。
API は、より新しいリリースに向けてに改良が続けられていますが、まずは、今回のリリースで提案されたものが利用可能です。(vscode.proposed.d.ts を参照)
タスクの選択ダイアログには、task.json
ファイルで設定されたタスクと自動的に検出されたタスクの両方が表示されるようになりました。たとえば、build
と watch
タスクを定義する gulp ファイルと Deploy
タスクを定義するtask.json
ファイルを持つワークスペースでは、タスクの選択ダイアログは、次のようになります。
システムは、タスク(たとえば、gulp ファイルによって提供されるビルド・タスクなど)を検出すると、通常、どの problem matchers をタスクに関連付ければ良いかを知りません。そのため、tasks.json
ファイルの中で検出されたタスクと紐付けるカスタマイズが必要になります。これを行うには、検出されたタスクの右にある歯車アイコンを押します。これは tasks.json
ファイルにセクションを挿入し、検出されたタスクをカスタマイズすることができます。
以下のビデオは、TypeScript problem matchers ($tsc
という名前)を追加し、それを My Main Build
に名前を変更する、gulp build
タスクのカスタマイズ方法を示しています。
Debugging
デバッグ
Improved stepping performance
ステッピング性能の向上
あるユーザーの推奨として、ユーザーが次の “ステップ” 操作をまだ要求していない場合に限り、コールスタックの一部と対応する変数を遅延取得することで、ステッピング性能を向上させました。この変更により、VS Code は、常に現在の場所の正しいソースを表示できるように、スタックのトップフレームを取得します。スタックの残りの部分は、ユーザーが 0.4 秒間ステッピングし続けていない場合にのみ更新されます。
これにより、次の(かなり大きい)Typescriptコンパイラの画面記録でも見られるように、ステッピング性能が大幅に向上しています。
以前までの動作 - 常に完全なコールスタックを取得する:
新しい動作 - コールスタックの残りの部分を遅延的にフェッチする:
File link detection in Exception Peek UI
例外 Peek UI でのファイルリンクの検出
例外が発生した際、一般的に開発者は例外スタックトレースを追跡し、その原因を突き止めようとします。デバッグアダプタから返されたスタックトレース内にあるリンクを検出するメカニズムを追加しました。これにより、Exception UI からソースコードへ直接ジャンプすることが可能になります。さらに、デバッグコンソールにおける既存のリンク検出を改善し、ユーザーから報告されたいくつかの問題も修正しています。
Recipes for nonstandard debugging scenarios
非標準デバッグシナリオのレシピ
標準的ではないシナリオや複雑なシナリオにおいて Node.js のデバッグを設定することはチャレンジです。このリリースでは、新しいリポジトリに様々なシナリオのレシピを収集し始めました。
最初のレシピとして、Docker Container 内における TypeScript デバッグと VS Code を利用した MERN Starter 開発 を用意しています。
Copy All action in Debug Console
デバッグコンソールの All action をコピー
Copy All コンテキストメニューアクションを使用して、デバッグコンソールからすべてのコンテンツをコピーできるようになりました。この機能の実装を動機づけた理由の詳細については、こちらをご覧ください。
New setting debug.internalConsoleOptions
新しい設定 debug.internalConsoleOptions
debug.internalConsoleOptions
の設定を使用して、デバッグコンソールの動作を制御できるようになりました。以前はこの設定は launch.json
でのみ利用できましたが、ユーザーのリクエストによって、これをユーザーおよびワークスペース設定でも指定できるようになりました。両方に設定されている場合は、launch.json
の設定が優先されます。
Node Debugging
Node.js のデバッグ
Local/remote path mapping now supported for “launch” configurations
“launch” コンフィグレーションでローカル/リモートパスマッピングをサポート
リモートデバッグを容易にするために、VS Code は、ローカル VS Code プロジェクトと(リモートの)配置場所の JavaScript パスを localRoot
と remoteRoot
アトリビュートでマッピングすることを既にサポートしていましたが、リモートデバッグは、通常、リモートターゲットに「接続」するため、localRoot
と remoteRoot
アトリビュートは、launch コンフィグレーションのリクエストタイプ "attach"
でしか利用できませんでした。
最近では、任意のプログラムやスクリプトを起動するための launch コンフィグレーションのリクエストタイプ "launch"
をオープンにしています。(ローカルの Node.js ターゲットのデバッグのためだけではなく)
これにより、(たとえば Docker コンテナ内の) リモート Node.js ターゲットを起動し、VS Code の Node.js デバッガを接続することが可能になります。この機能は “起動”と “接続”の違いをさらに緩和し、リクエストタイプ "launch"
の起動設定に localRoot
と remoteRoot
アトリビュートをサポートすることは理にかなっています。(リクエストタイプ "attach"
も加えて)
Docker コンテナ内での TypeScript デバッグレシピで、サンプルを見つけることができます。
Extensions
拡張機能
Enable / Disable commands
有効または無効にするコマンド
Extensions ビューのコンテキストメニューに、拡張機能をすばやく管理するための 2 つの新しいコマンドを追加しました:
- インストール済みの全ての拡張機能有効にする/インストール済みの全ての拡張機能無効にする
- 拡張機能の自動更新を有効にする/拡張機能の自動更新を無効にする
Languages
Syntax coloring for JSX/TSX components
JSX/TSX コンポーネントのシンタックスカラーリング
React JSX と TSX ファイルにおけるコンポーネントクラスは、通常の HTML 要素と異なる色になりました:
Additional JSDoc tags in hover and suggestions
ホバーとサジェストへの追加 JSDoc タグ
@deprecated
や @private
などの JSDoc タグが、ホバーとサジェストのドキュメントに表示されるようになりました。
Open TS Server Log reveals log folder
TS サーバーのログを開くコマンドの変更
TypeScript: TS サーバーのログを開く コマンドは、VS Code でログファイルを開くのではなく、TypeScript のログが配置されるディレクトリを表示するように変更されました。これは、メインの tsserver.log
ファイルとともに生成される追加のタイプ宣言 (typings) インストーラログファイルを確認する際にも役立ちます。(TypeScript 2.2.2 以上が必要)
Markdown preview preserves scroll position
Markdown プレビューではスクロール位置を保持するように
Markdown プレビューは、リリースノートなどの他の Webview ベースのビューと同様に、エディタの切り替えが発生してもスクロール位置を保持すようになりました。
Warnings for missing Markdown preview styles
Markdown プレビュースタイルの紛失に関する警告
プレビューで使用する markdown.styles
設定にセットされたスタイルシートが見つからない場合に警告メッセージが表示されます。
Markdown symbol search includes heading levels
シンボル検索で Markdown の見出しレベルをサポート
Go to Symbol in File… (⇧⌘O (Windows, Linux Ctrl+Shift+O)) を使用して Markdown ファイルの見出しに素早くジャンプできます。このリストに各シンボルの見出しレベルが含まれるようになり、見出しレベルで結果をすばやく絞り込むことができます。
Extension Authoring
拡張機能のオーサリング
Custom views
カスタムビュー
例えば、サンプルリポジトリで公開されている Node Dependencies
ビューのように、VS Code でカスタマイズされたデータビューを表示したいという多くのリクエストがありました。このリリースでは、このようなビューにコントリビュートする VS Code の拡張機能を作成できるようになりました。現在のところ、カスタムビューはエクスプローラでのみ表示することができますが、将来的には、他の場所でも表示できることをサポートする予定です。
ビューのコントリビュートは、次のように簡単です:
- views 拡張機能ポイントを使用してビューを提供します
- TreeDataProvider APIを使用して、ビューのデータプロバイダを登録します
- menus 拡張機能ポイントの
view/title
とview/item/context
の位置を使用して、ビューにアクションをコントリビュートする
サンプルは拡張機能のサンプルリポジトリを参照してください。
Debugger extensions
デバッガ拡張
StackFrame
タイプの presentationHint
アトリビュートにおける新しい enum 値 subtle
デバッグアダプタは、代替となる “subtle” レンダリングを受け取るために、プレゼンテーションヒント subtl
でスタックフレームにフラグを立てることができる。
TerminatedEvent.body.restart
アトリビュート拡張型
TerminatedEvent.body.restart
アトリビュート型が boolean
から any
に拡張されました。この変更により、任意のデータを 1 つのデバッグセッションから次の(再開された)デバッグセッションにループさせることが可能になります。
Add to Watch
と Copy Value
アクションに evaluateName
アトリビュートが必須に
以前までの VS Code では、VARIABLES ビューのデータと評価リクエストで使用できる式を構築するために JavaScript-バイアス・ヒューリスティックを使用して、Add to Watch および Copy Value アクションを実装しようとしました。
しかし、このアプローチは、すべての言語で機能しないため、以前に変数である evaluateName
アトリビュートを導入しました。そして、デバッグアダプタが Watch to Add と Copy Value アクションを正しく動作させるために、evaluateName
アトリビュートをサポートすることが必須となりました。
Glob patterns for workspaceContains
activation event
workspaceContains
アクティベーションイベントの glob パターン
@eamodio からの PR#24570 により、glob パターンに一致するファイルが少なくとも 1 つ含まれるフォルダが開かれたときに、拡張機能を有効化できるようになりました。
拡張機能における package.json
への設定例:
|
フォルダが開かれ、そのサブフォルダのいずれかに .editorconfig
という名前のファイルが含まれていれば、この拡張機能はアクティブになります。
Defining a language’s word pattern in the language configuration file
言語設定ファイルで言語の単語パターンを定義する
@hoovercj からの PR #22478 により、言語構成ファイルで wordPattern
を使って言語の単語パターンを指定することが可能になりました。これまでは、vscode.languages.setLanguageConfiguration(...)
を呼び出すことによってのみ可能でした。
Better control decorations in the editor
エディタ装飾のより良い制御
@CoenraadS からの PR #25776 により、入力/編集のときにデコレーションの動作を設定できるようになりました。これは、DecorationRenderOptions.rangeBehaviour
フィールドで設定できます。
Reference theme colors from extensions
拡張機能のテーマカラーを参照する
ステータスバーのフォアグラウンドにデコレータのテーマカラーを適用できるようになりました。テーマとユーザーがカラーをカスタマイズできますが、実際のカラー値の代わりにテーマカラーを使用するのことを推奨します。
|
テーマカラーのリストはこちらにあります。
Accessibility
アクセシビリティ
Better NVDA support
NVDA (NonVisual Desktop Access) サポートの向上
矢印キーを使用すると、NVDA によっていくつかの行や文字が繰り返されることがあります(Issue #26730 を参照)。NV Access の共同設立者の一人である James Teh のおかげで、根本的な原因(時には 30 msのタイムアウトが発生することがある)を理解できるようになりました。Jamesは NVDA の PR を持っており、デフォルトのタイムアウトを 100ms に変更かつ任意の値に設定可能にしています。新しい NVDA バージョンが出荷されるまで、Derek Riemer による、タイムアウトを 30ms から 200ms に増加させる NVDA プラグインが利用できます。また、30ms のタイムアウトを逃してしまう可能性を減らすためにも、我々の側でいくつかの変更を加えました。
“Screen Reader Detected”
スクリーンリーダーの検出”
現在、スクリーンリーダー利用時、VS Code を最適化するために、Electron APIs を活用しています。Electron は、スクリーンリーダーが接続されていることを認識すると、VS Code のステータスバーにメッセージを表示するとともに:
- ステータスバーから行番号と列のインジケータを削除しました。これらのインジケータは絶えず更新しされるため、スクリーンリーダーが混乱してしまう多くのアクセシビリティイベントが発生してしまいます
- ワードラップを無効にしました。たとえば、下矢印キーを押した場合、スクリーンリーダーはカーソルを次の行に移動させ、同じ行の右にある列に移動させないようにします。
- エディタ内のテキストの現在のページを
<textarea>
と同期してミラーリングさせ入力イベントとして利用します - 30 ミリ秒のアクセシビリティ・イベント・タイムアウトの範囲内で行う可能性を高めるために、特定の文章の機能を無効にします。通常であれば、矢印キーの処理に 4〜5 ms 以上かかることはありませんが、これらの機能を無効にすることで、費やされる時間を 1〜2 ms に短縮することができます。残りの時間は、私たちのプラットフォームが何が起こったのかを把握し、正しいアクセシビリティイベントを出すことに費やされます。
スクリーンリーダーを検出することは簡単なことではありません。もし、”スクリーンリーダーが検出されました” というメッセージがステータスバーに表示され、スクリーンリーダーが接続されていない場合は、
editor.accessibilitySupport
の設定を"auto"
から"off"
に変更してください。
Engineering
エンジニアリング
New crash report handling
新しいクラッシュレポート処理
VS Code のクラッシュレポートが改善されました。VS Code は、VS Code と Electron 自体をより良くするために、解析に必要なクラッシュデータの取得を Electron に組み込まれたクラッシュレポーターにより行います。VS Code がクラッシュした場合、ダンプが取得され、マイクロソフトに送信されますが、いつでもこれを無効にすることができます
この仕組みはうまくいきましたが、クラッシュを分析して理解することは時間がかかる作業でした。マイクロソフトは HockeyApp と呼ばれる優れたクラッシュレポートサービスを提供していますが、クラッシュレポートのために HockeyApp を有効にしました。しかし、組み込みのクラッシュレポーターが HockeyApp が理解できない形式でデータを送信するため、これを可能にする独自の Electron ビルドを作成する必要がありました。この変更は Electron 1.6.6 をベースにしており、クラッシュレポーターは HockeyApp サービスとやり取りを行います。
ソースから VS Code をビルドする場合は、引き続き GitHub バージョンの Electron を利用します。他の Electron へのコントリビュータと協力して、誰でもHockeyApp(またはその他のサービス)を簡単に使用できるように、クラッシュレポートサービスをプラグイン可能にする予定です。
Issue management automation
Issue 管理の自動化
いくつかの issue 管理を自動化するために、Probot インスタンスを導入しました。VSCodeBot
が GitHub 上の issue にラベルを追加したり、条件も満たした古い issue を閉じることがあります。私たちはコミュニティからのフィードバックを求めており、今後も、より多くの自動化が追加される予定です。
Insiders ビルドに対して報告された問題には、insiders
ラベルが追加されます:
needs more info
(より多くの情報が必要) タグが付けられてから、一週間以上更新がなかった場合は、issue をクローズします:
Automated Smoke Test
スモークテストの自動化
このマイルストーンの一環として、各リリースを手動で実行するために使用していた Smoke Test を自動化しました。すべての手動ステップは、Spectron テストフレームワークを使用して自動化され、この issue で詳細な進捗状況が追跡されています。
Smoke Testは、リリースを公開する前にすべての VS Code 基本機能が動作しているかどうかを確認するのに役立ちます。テストを自動化することで、テストにかける時間を節約でき、より多くのリソースを投入し、新機能の開発に集中することができます。
New Commands
新しいコマンド
キー | コマンド | コマンド id |
---|---|---|
Select first child of currently selected item’s parent in tree/lists | list.focusFirstChild | |
Select last child of currently selected item’s parent in tree/lists | list.focusLastChild | |
次の競合 (Next Merge Conflict) | merge-conflict.next | |
前の競合 (Previous Merge Conflict) | merge-conflict.previous | |
Accept Selection | merge-conflict.accept.selection | |
現在の方を取り込む (Accept Current) | merge-conflict.accept.current | |
入力側を取り込む (Accept Incoming) | merge-conflict.accept.incoming | |
両方を取り込む (Accept Both) | merge-conflict.accept.both | |
両方を全て取り込む (Accept All Both) | merge-conflict.accept.all-both | |
Accept All Current | merge-conflict.accept.all-current | |
入力側の全てを取り込む (Accept All Incoming) | merge-conflict.accept.all-incoming | |
現在の競合を比較 (Compare) | merge-conflict.compare |
Contributions to Extensions
拡張機能への貢献
私たちのチームは、いくつかの VS Code 拡張機能の提供とメンテナンスに貢献しています。今月の注目すべき拡張機能は:
- ESLint: Performance improvements to lower CPU load when linting large JavaScript files with lots of code actions.
- VSCodeVim: We refactored the source code to make it easier to contribute to the project.
- PHP language server: We are getting close to merging the pull request to adopt the tolerant PHP parser.
Notable Changes
注目すべき変更
- 25789: Can’t split file when dragging from Explorer
- 19644: Cursor does not go to the maximum line column when pressing “End” twice with word wrap enabled
- 6661: Ctrl+D/Cmd+D merges adjacent selections.
- 4271: Mac Insert Emoji Duplicates Text
- 3623: Match whole word does not work for not latin characters (at least for cyrillic)
- 17534: Search: not possible to remove individual search results in a file
- 16580: Unable to write to settings should offer an action to open settings
- 17609: Line wrapping problem in bash on ubuntu on windows
- 23484: “Ctrl +click to follow link” hover appears only on the last link in the terminal
- 25664: Terminal panel is not properly restored after restarting
Thank You
最後になりましたが、VS Code をより良いものにするために協力してくれた次の方々に多大なる感謝を込めて:
vscode
への貢献:
- actboy168 (@actboy168): Fix lua function colorizing error PR #26880
- Andy (@andy-ms): Remove unnecessary parentheses PR #25573
- @ashirley: Add git.commitType configuration PR #25855
- Bradley Meck (@bmeck): Add .mjs to known JavaScript file extensions PR #25747
- Bugra Cuhadaroglu (@BugraC): Fix - #24242 #24550 PR #25756
- @CoenraadS: Expose Stickiness API #15758 PR #25776
- David Lechner (@dlech): Add .git/subtree-cache/ to files.watcherExclude PR #26665
- Eric Amodio (@eamodio): Fixes #944 - Support wildcards on activationEvents.workspaceContains PR #24570
- Cody Hoover (@hoovercj)
- Yu-Hsin Hung (@hungys): Fix for terminal.foreground not working PR #26788
- Ilie Halip (@ihalip)
- Yuki Ueda (@Ikuyadeu): [bat] support %%(fix #26825) PR #27325
- Jeremy Loy (@JeremyLoy): Added Services Submenu for MacOS PR #26248
- Jan Niklas Hasse (@jhasse)
- João Portela (@jportela)
- Kaide Mu (@kdmu): Markdown: Capture right parenthesis as part of url PR #26449
- Maik Riechert (@letmaik)
- Florent Viel (@luxifer)
- @mappu: extension/php: detect language via shebang PR #26581
- Soo Jae Hwang (@misoguy): Change behavior of home/end button PR #21338
- Nick Snyder (@nicksnyder)
- Phil Price (@pprice): Add better merge extension PR #27150
- Rishii7 (@rishii7): Add a new user configuration
extensions.ignoreRecommendations
PR #25038 - Youngrok Kim (@rokoroku): Add feature to close TMScope inspector PR #26980
- Mike Seese (@seesemichaelj): Issue 15613 all files committed PR #25364
- Dan Balasescu (@smoogipooo): Expose status bar debugging and no-folder foreground colors. PR #27052
- Tereza Tomcova (@the-ress): Fixes #4370: Set default icon for file associations PR #25497
- Fernando Tolentino (@thr0w): Intelli-sense in extensions file PR #26564
- MaruyamaTomoki (@tomoki1207): Markdown preview support the UNC path files. PR #26710
- Nikita Prokopov (@tonsky)
- Wagner Riffel (@wgrriffel): Lua syntax extension is missing ‘goto’ keyword PR #26350
language-server-protocol
への貢献:
- Keith (@ktec): Update protocol-1-x.md PR #244
- Rainer Klute (@RainerKlute)
- Chen (@CXuesong): Fix typo in summary of
interface Registration
. PR #231 - Miro Spönemann (@spoenemann): Fixed typo in WorkspaceClientCapabilities PR #225
vscode-languageserver-node
への貢献:
- Vincenzo Chianese (@XVincentX): Detect and copy npm-shirkwrap file if present PR #193
vscode-tslint
への貢献:
- Prashant Tiwari (@prashaantt): Fix error message PR #207
- Stewart Rand (@stewx): Typo fixes and grammar improvements in readme PR #203
vscode-css-languageservice
への貢献:
- Aleksandr Andrienko (@AndrienkoAleksandr): Clean up duplicate word. PR #27
- Benjamin Lannon (@lannonbr): Update css-schema.xml to support CSS Grid PR #28
vscode-chrome-debug-core
への貢献:
localization
への貢献:
Transifex でコミュニティローカリゼーションを開始してから 2ヶ月がたちました。Transifex VS Code project チームには 200 人以上のメンバーが参加しています。新しい翻訳の提供、翻訳へのに投票、プロセスの改善提案などの貢献に感謝します。
このリリースにおいて、もっとも活躍されたコトリビューターの一覧です。コントリビューターリストを含むプロジェクトの詳細については、プロジェクトサイト(https://aka.ms/vscodeloc. を参照してください。
- French: Vincent Biret, JP Gouigoux, Julien Brochet.
- Italian: Aldo Donetti, Piero Azi, Luca Nardi, Giuseppe Pignataro.
- German: Levin Rickert, Ingo Bleile, Carsten Kneip, Christian Gräfe, Markus Weber.
- Spanish: Andy Gonzalez, Alberto Poblacion, José M. Aguilar, Juan Carlos Gonzalez Martin.
- Russian: Al Fes, Aleksey Nemiro, Orrchy, Serge Rodionov.
- Japanese: EbXpJ6bp, Yuichi Nukiyama, Yosuke Sano, Yuki Ueda, Takayoshi Tanaka, Tetsuya Fukuda, Takashi Kawasaki.
- Korean: Ian Y. Choi.
- Chinese (Simplified): Joel Yang, YF, Alan Tsai, 王韦煊, Jianfeng Fang, kui li.
- Chinese (Traditional): Alan Liu, Alan Tsai, Duran Hsieh, Wei-Ting(DM), JJJ.
また、ブラジルのポルトガル語コミュニティのローカリゼーションチームにお祝いを申し上げます。その努力により、Transifex でのローカリゼーションが完了し、その成果は、Insiders ビルドに統合されテストされています。検証の進捗状況によっては、すぐに翻訳の成果をブラジルのお客様向け安定版ビルドに統合したいと考えています。
- Portuguese (Brazil): Roberto Fonseca, Bruno Sonnino, Alessandro Fragnani, Douglas Eccker, Bruno Ochotorena, Rodrigo Crespi, Anderson Santos, Felipe Caputo, Marcelo Fernandes, Roberto Nunes, Rodrigo Romano, Luan Moreno Medeiros Maciel, Ilton Sequeira.