コントリビューションポイント
貢献点は、package.json
のcontributes
フィールドで行うJSON宣言のセットです。拡張機能マニフェスト。拡張機能は、Visual Studio Code内のさまざまな機能を拡張するために貢献点を登録します。以下に、利用可能なすべての貢献点のリストを示します。
認証
ブレークポイント
色
コマンド
構成
configurationDefaults
カスタムエディター
デバッガー
文法
アイコン
アイコンテーマ
jsonValidation
キーバインディング
言語
メニュー
問題マッチャー
問題パターン
製品アイコンテーマ
リソースラベルフォーマッター
semanticTokenModifiers
semanticTokenScopes
semanticTokenTypes
スニペット
サブメニュー
タスク定義
ターミナル
テーマ
typescriptServerPlugins
ビュー
viewsContainers
viewsWelcome
ウォークスルー
contributes.authentication
認証プロバイダーを貢献します。これにより、プロバイダーのアクティベーションイベントが設定され、拡張機能の機能に表示されます。
{
"contributes": {
"authentication": [
{
"label": "Azure Dev Ops",
"id": "azuredevops"
}
]
}
}
contributes.breakpoints
通常、デバッガー拡張機能には、ブレークポイントの設定が有効になる言語ファイルの種類を拡張機能がリストするcontributes.breakpoints
エントリも含まれます。
{
"contributes": {
"breakpoints": [
{
"language": "javascript"
},
{
"language": "javascriptreact"
}
]
}
}
contributes.colors
新しいテーマカラーを貢献します。これらの色は、エディターデコレーターやステータスバーで拡張機能によって使用できます。一度定義されると、ユーザーはworkspace.colorCustomization
設定で色をカスタマイズでき、ユーザーテーマは色の値を設定できます。
{
"contributes": {
"colors": [
{
"id": "superstatus.error",
"description": "Color for error message in the status bar.",
"defaults": {
"dark": "errorForeground",
"light": "errorForeground",
"highContrast": "#010203",
"highContrastLight": "#feedc3"
}
}
]
}
}
色のデフォルト値は、明るいテーマ、暗いテーマ、および高コントラストテーマ用に定義でき、既存の色への参照または色の16進値のいずれかになります。
拡張機能は、ThemeColor
APIで新規および既存のテーマカラーを使用できます。
const errorColor = new vscode.ThemeColor('superstatus.error');
contributes.commands
タイトルと(オプションで)アイコン、カテゴリ、有効状態からなるコマンドのUIを貢献します。有効状態はwhen句で表現されます。デフォルトでは、コマンドはコマンドパレットに表示されます(⇧⌘P(Windows、Linux Ctrl+Shift+P))が、他のメニューにも表示できます。
貢献されたコマンドの表示は、含まれるメニューによって異なります。例えば、コマンドパレットは、コマンドのcategory
をプレフィックスとして表示し、簡単にグループ化できます。ただし、コマンドパレットはアイコンや無効なコマンドは表示しません。一方、エディターのコンテキストメニューは、無効な項目は表示しますが、カテゴリラベルは表示しません。
注:コマンドが(キーバインディング、コマンドパレット、その他のメニュー、またはプログラム的に)呼び出されると、VS Codeは
onCommand:${command}
アクティベーションイベントを発行します。
注:製品アイコンのアイコンを使用する場合、
light
とdark
を設定するとアイコンが無効になります。正しい構文は"icon": "$(book)"
です。
コマンドの例
{
"contributes": {
"commands": [
{
"command": "extension.sayHello",
"title": "Hello World",
"category": "Hello",
"icon": {
"light": "path/to/light/icon.svg",
"dark": "path/to/dark/icon.svg"
}
}
]
}
}
VS Code拡張機能でコマンドを使用する方法の詳細については、コマンド拡張ガイドを参照してください。
コマンドアイコンの仕様
サイズ:
アイコンは16x16で1ピクセルのパディング(画像は14x14)があり、中央に配置する必要があります。色:
アイコンは単色を使用する必要があります。形式:
アイコンはSVG形式が推奨されますが、任意の画像ファイルタイプも受け入れられます。
contributes.configuration
ユーザーに公開される設定を貢献します。ユーザーは、これらの構成オプションを[設定]エディターで、またはsettings.jsonファイルを直接編集することで設定できます。
このセクションは、単一の設定カテゴリを表す単一のオブジェクト、または複数の設定カテゴリを表すオブジェクトの配列のいずれかです。複数の設定カテゴリがある場合、[設定]エディターは、その拡張機能の目次のサブメニューを表示し、タイトルキーはサブメニューのエントリ名に使用されます。
設定の例
{
"contributes": {
"configuration": {
"title": "Settings Editor Test Extension",
"type": "object",
"properties": {
"settingsEditorTestExtension.booleanExample": {
"type": "boolean",
"default": true,
"description": "Boolean Example"
},
"settingsEditorTestExtension.stringExample": {
"type": "string",
"default": "Hello World",
"description": "String Example"
}
}
}
}
}
これらの値は、vscode.workspace.getConfiguration('myExtension')
を使用して拡張機能から読み取ることができます。
設定スキーマ
設定エントリは、JSONエディターで設定を編集するときにインテリセンスを提供するためにも、設定UIでの表示方法を定義するためにも使用されます。
タイトル
カテゴリのtitle
1️⃣️は、そのカテゴリの見出しとして使用されます。
{
"configuration": {
"title": "GitMagic"
}
}
複数の設定カテゴリを持つ拡張機能の場合、いずれかのカテゴリのタイトルが拡張機能の表示名と同じである場合、設定UIはそのカテゴリを「デフォルトカテゴリ」として扱い、そのカテゴリのorder
フィールドを無視し、その設定をメインの拡張機能見出しの下に配置します。
title
フィールドとdisplayName
フィールドの両方で、「Extension」、「Configuration」、「Settings」などの単語は冗長です。
- ✔
"title": "GitMagic"
- ❌
"title": "GitMagic Extension"
- ❌
"title": "GitMagic Configuration"
- ❌
"title": "GitMagic Extension Configuration Settings"
プロパティ
configuration
オブジェクト内のproperties
2️⃣は、キーが設定IDで、値がその設定に関する詳細情報を提供する辞書を形成します。拡張機能は複数の設定カテゴリを含むことができますが、拡張機能の各設定は独自のユニークなIDを持つ必要があります。設定IDは、他の設定IDの完全なプレフィックスであってはなりません。
明示的なorder
フィールドのないプロパティは、設定UIで辞書順に表示されます(マニフェストにリストされている順序ではありません)。
設定タイトル
設定UIでは、各設定の表示タイトルを構築するために複数のフィールドが使用されます。キー内の大文字は単語の区切りを示します。
単一カテゴリおよびデフォルトカテゴリ構成の表示タイトル
構成に単一のカテゴリの設定がある場合、またはカテゴリのタイトルが拡張機能の表示名と同じである場合、そのカテゴリ内の設定については、設定UIは設定IDと拡張機能のname
フィールドを使用して表示タイトルを決定します。
例として、設定IDがgitMagic.blame.dateFormat
で拡張機能名がauthorName.gitMagic
の場合、設定IDのプレフィックスが拡張機能名のサフィックスと一致するため、設定IDのgitMagic
部分は表示タイトルから削除されます:「Blame: Date Format」。
複数カテゴリ設定の表示タイトル
設定に複数のカテゴリがあり、そのカテゴリのタイトルが拡張機能の表示名と同じでない場合、そのカテゴリ内の設定については、設定UIは設定IDとカテゴリid
フィールドを使用して表示タイトルを決定します。
例として、設定IDがcss.completion.completePropertyWithSemicolon
でカテゴリIDがcss
の場合、設定IDのプレフィックスがカテゴリIDのサフィックスと一致するため、設定IDのcss
部分は設定UIから削除され、生成される設定のタイトルは「Completion: Complete Property With Semicolon」となります。
構成プロパティのスキーマ
構成キーは、JSON Schemaのスーパーセットを使用して定義されます。
説明 / markdownDescription
description
3️⃣ はタイトルの後、入力フィールドの前に表示されます。ただし、ブール値の場合は、説明がチェックボックスのラベルとして使用されます。 6️⃣
{
"gitMagic.blame.heatMap.enabled": {
"description": "Specifies whether to provide a heatmap indicator in the gutter blame annotations"
}
}
description
の代わりにmarkdownDescription
を使用すると、設定の説明は設定UIでMarkdownとして解析されます。
{
"gitMagic.blame.dateFormat": {
"markdownDescription": "Specifies how to format absolute dates (e.g. using the `${date}` token) in gutter blame annotations. See the [Moment.js docs](https://momentjs.dokyumento.jp/docs/#/displaying/format/) for valid formats"
}
}
markdownDescription
では、改行または複数の段落を追加するには、\n
ではなく、文字列\n\n
を使用して段落を区切ります。
種類
タイプnumber
4️⃣、string
5️⃣、boolean
6️⃣のエントリは、設定UIで直接編集できます。
{
"gitMagic.views.pageItemLimit": {
"type": "number",
"default": 20,
"markdownDescription": "Specifies the number of items to show in each page when paginating a view list. Use 0 to specify no limit"
}
}
文字列設定は、構成エントリで"editPresentation": "multilineText"
を設定すると、複数行のテキスト入力でレンダリングできます。
boolean
エントリの場合、markdownDescription
(markdownDescription
が指定されていない場合はdescription
)がチェックボックスの横のラベルとして使用されます。
{
"gitMagic.blame.compact": {
"type": "boolean",
"description": "Specifies whether to compact (deduplicate) matching adjacent gutter blame annotations"
}
}
一部のobject
およびarray
型設定は、設定UIでレンダリングされます。number
、string
、またはboolean
の単純な配列は、編集可能なリストとしてレンダリングされます。string
、number
、integer
、および/またはboolean
型のプロパティを持つオブジェクトは、キーと値の編集可能なグリッドとしてレンダリングされます。オブジェクト設定は、UIでレンダリングするために、additionalProperties
をfalse
、または適切なtype
プロパティを持つオブジェクトに設定する必要もあります。
object
またはarray
型の設定が、ネストされたオブジェクト、配列、またはnullなどの他の型を含むことができる場合、その値は設定UIにはレンダリングされず、JSONを直接編集することによってのみ変更できます。ユーザーは上記のスクリーンショットに示すように、settings.jsonで編集へのリンクが表示されます。8️⃣
順序
カテゴリとそのカテゴリ内の設定はどちらも、他のカテゴリや設定と比較してどのようにソートされるべきかを示す整数order
型のプロパティを持つことができます。
2つのカテゴリにorder
プロパティがある場合、小さい順序番号を持つカテゴリが最初に表示されます。カテゴリにorder
プロパティが指定されていない場合、そのプロパティが指定されたカテゴリの後に表示されます。
同じカテゴリ内の2つの設定にorder
プロパティがある場合、小さい順序番号を持つ設定が最初に表示されます。同じカテゴリ内の別の設定にorder
プロパティが指定されていない場合、そのカテゴリ内でそのプロパティが指定された設定の後に表示されます。
2つのカテゴリが同じorder
プロパティ値を持つ場合、または同じカテゴリ内の2つの設定が同じorder
プロパティ値を持つ場合、設定UIでは辞書順に昇順でソートされます。
enum / enumDescriptions / markdownEnumDescriptions / enumItemLabels
enum
7️⃣ プロパティの下に項目の配列を提供すると、設定UIはそれらの項目のドロップダウンメニューをレンダリングします。
また、enum
プロパティと同じ長さの文字列配列であるenumDescriptions
プロパティも提供できます。enumDescriptions
プロパティは、各enum
項目に対応するドロップダウンメニューの下部に設定UIで説明を提供します。enumDescriptions
の代わりにmarkdownEnumDescriptions
を使用することもでき、その場合、説明はMarkdownとして解析されます。markdownEnumDescriptions
はenumDescriptions
よりも優先されます。
設定UIのドロップダウンオプション名をカスタマイズするには、enumItemLabels
を使用できます。
例
{
"settingsEditorTestExtension.enumSetting": {
"type": "string",
"enum": ["first", "second", "third"],
"markdownEnumDescriptions": [
"The *first* enum",
"The *second* enum",
"The *third* enum"
],
"enumItemLabels": ["1st", "2nd", "3rd"],
"default": "first",
"description": "Example setting with an enum"
}
}
deprecationMessage / markdownDeprecationMessage
deprecationMessage
またはmarkdownDeprecationMessage
を設定すると、指定されたメッセージで設定に警告の下線が表示されます。また、ユーザーが設定しない限り、設定は設定UIから非表示になります。markdownDeprecationMessage
を設定しても、設定ホバーまたは問題ビューではmarkdownはレンダリングされません。両方のプロパティを設定すると、deprecationMessage
はホバーと問題ビューに表示され、markdownDeprecationMessage
は設定UIでMarkdownとしてレンダリングされます。
例
{
"json.colorDecorators.enable": {
"type": "boolean",
"description": "Enables or disables color decorators",
"markdownDeprecationMessage": "**Deprecated**: Please use `#editor.colorDecorators#` instead.",
"deprecationMessage": "Deprecated: Please use editor.colorDecorators instead."
}
}
その他のJSONスキーマプロパティ
構成値のその他の制約を記述するために、任意の検証JSONスキーマプロパティを使用できます。
- プロパティのデフォルト値を定義するための
default
- 数値の値を制限するための
minimum
とmaximum
- 文字列の長さを制限するための
maxLength
、minLength
- 特定の正規表現に文字列を制限するための
pattern
- パターンが一致しない場合にカスタマイズされたエラーメッセージを表示するための
patternErrorMessage
date
、time
、ipv4
、email
、uri
などの既知の形式に文字列を制限するためのformat
- 配列の長さを制限するための
maxItems
、minItems
- 設定エディターで文字列設定に対して単一行の入力ボックスまたは複数行のテキストエリアがレンダリングされるかを制御するための
editPresentation
サポートされていないJSONスキーマプロパティ
構成セクションではサポートされていません
$ref
とdefinition
: 構成スキーマは自己完結している必要があり、集約された設定JSONスキーマドキュメントがどのように見えるかについて仮定することはできません。
これらの機能やその他の機能の詳細については、JSONスキーマリファレンスを参照してください。
スコープ
設定には、次のいずれかのスコープがあります。
application
- VS Codeのすべてのインスタンスに適用され、ユーザー設定でのみ構成できる設定。machine
- ユーザー設定またはリモート設定でのみ設定できる、マシン固有の設定。例えば、マシン間で共有すべきではないインストールパスなど。これらの設定の値は同期されません。machine-overridable
- ワークスペースまたはフォルダ設定で上書きできる、マシン固有の設定。これらの設定の値は同期されません。window
- ユーザー、ワークスペース、またはリモート設定で構成できる、ウィンドウ(インスタンス)固有の設定。resource
- ファイルとフォルダに適用されるリソース設定で、フォルダ設定を含むすべての設定レベルで構成できます。language-overridable
- 言語レベルで上書きできるリソース設定。
構成スコープは、設定が設定エディターを通じてユーザーに利用可能になる時期と、設定が適用可能かどうかを決定します。scope
が宣言されていない場合、デフォルトはwindow
です。
以下は、組み込みのGit拡張機能からの構成スコープの例です。
{
"contributes": {
"configuration": {
"title": "Git",
"properties": {
"git.alwaysSignOff": {
"type": "boolean",
"scope": "resource",
"default": false,
"description": "%config.alwaysSignOff%"
},
"git.ignoredRepositories": {
"type": "array",
"default": [],
"scope": "window",
"description": "%config.ignoredRepositories%"
},
"git.autofetch": {
"type": ["boolean", "string"],
"enum": [true, false, "all"],
"scope": "resource",
"markdownDescription": "%config.autofetch%",
"default": false,
"tags": ["usesOnlineServices"]
}
}
}
}
}
git.alwaysSignOff
はresource
スコープを持ち、ユーザーごと、ワークスペースごと、またはフォルダごとに設定できますが、window
スコープを持つ無視されたリポジトリリストは、VS Codeウィンドウまたはワークスペース(マルチルートである可能性があります)に対してよりグローバルに適用されることがわかります。
ignoreSync
設定がユーザーの設定と同期されないようにするには、ignoreSync
をtrue
に設定します。これは、ユーザー固有ではない設定に役立ちます。例えば、remoteTunnelAccess.machineName
設定はユーザー固有ではないため、同期すべきではありません。scope
をmachine
またはmachine-overridable
に設定した場合、ignoreSync
の値に関係なく設定は同期されませんのでご注意ください。
{
"contributes": {
"configuration": {
"properties": {
"remoteTunnelAccess.machineName": {
"type": "string",
"default": "",
"ignoreSync": true
}
}
}
}
}
```json
{
"remoteTunnelAccess.machineName": {
"type": "string",
"default": '',
"ignoreSync": true
}
}
設定へのリンク
マークダウン型プロパティでこの特殊な構文「`#target.setting.id#`
」を使用することで、別の設定へのリンクを挿入できます。これは設定UIでクリック可能なリンクとしてレンダリングされます。これはmarkdownDescription
、markdownEnumDescriptions
、およびmarkdownDeprecationMessage
で機能します。例
"files.autoSaveDelay": {
"markdownDescription": "Controls the delay in ms after which a dirty editor is saved automatically. Only applies when `#files.autoSave#` is set to `afterDelay`.",
// ...
}
設定UIでは、これは次のようにレンダリングされます。
contributes.configurationDefaults
他の登録された構成のデフォルト値を貢献し、それらのデフォルトを上書きします。
次の例は、files.autoSave
設定のデフォルトの動作を、フォーカス変更時にファイルを自動保存するようにオーバーライドします。
"configurationDefaults": {
"files.autoSave": "onFocusChange"
}
提供された言語のデフォルトエディター構成を貢献することもできます。たとえば、次のスニペットはmarkdown
言語のデフォルトエディター構成を貢献します。
{
"contributes": {
"configurationDefaults": {
"[markdown]": {
"editor.wordWrap": "on",
"editor.quickSuggestions": {
"comments": "off",
"strings": "off",
"other": "off"
}
}
}
}
}
contributes.customEditors
customEditors
貢献点は、拡張機能が提供するカスタムエディターについてVS Codeに伝える方法です。たとえば、VS Codeは、カスタムエディターが機能するファイルの種類や、UIでカスタムエディターを識別する方法を知る必要があります。
カスタムエディター拡張機能のサンプルに対する基本的なcustomEditor
貢献は次のとおりです。
"contributes": {
"customEditors": [
{
"viewType": "catEdit.catScratch",
"displayName": "Cat Scratch",
"selector": [
{
"filenamePattern": "*.cscratch"
}
],
"priority": "default"
}
]
}
customEditors
は配列なので、拡張機能は複数のカスタムエディターを貢献できます。
-
viewType
- カスタムエディタの一意の識別子。これは、VS Codeが
package.json
のカスタムエディター貢献とコード内のカスタムエディター実装を関連付ける方法です。これはすべての拡張機能で一意である必要があり、"preview"
のような一般的なviewType
の代わりに、拡張機能に固有のもの(例:"viewType": "myAmazingExtension.svgPreview"
)を使用するようにしてください。 -
displayName
- VS CodeのUIでカスタムエディタを識別する名前。表示名は、ビュー: 別の方法で再度開くドロップダウンなどのVS Code UIでユーザーに表示されます。
-
selector
- カスタムエディタがアクティブになるファイルを指定します。selector
は1つ以上のグロブパターンの配列です。これらのグロブパターンは、ファイル名と照合され、カスタムエディターがそれらに使用できるかどうかを判断します。*.png
のようなfilenamePattern
は、すべてのPNGファイルに対してカスタムエディターを有効にします。また、ファイル名やディレクトリ名に一致するより具体的なパターンを作成することもできます。例えば、
**/translations/*.json
。 -
priority
- (オプション) カスタムエディタが使用される時期を指定します。priority
は、リソースが開かれたときにカスタムエディタがいつ使用されるかを制御します。可能な値は次のとおりです。"default"
- カスタムエディターのselector
に一致するすべてのファイルに対してカスタムエディターを使用しようとします。特定のファイルに対して複数のカスタムエディターがある場合、ユーザーは使用したいカスタムエディターを選択する必要があります。"option"
- デフォルトではカスタムエディターを使用しませんが、ユーザーがそれに切り替えたり、デフォルトとして設定したりできるようにします。
カスタムエディター拡張機能ガイドで詳細を学ぶことができます。
contributes.debuggers
VS Codeにデバッガーを貢献します。デバッガーの貢献には以下のプロパティがあります。
type
は、起動構成でこのデバッガーを識別するために使用される一意のIDです。label
は、UIでこのデバッガーのユーザーに表示される名前です。program
は、実際のデバッガーまたはランタイムに対してVS Codeデバッグプロトコルを実装するデバッグアダプターへのパスです。runtime
は、デバッグアダプターへのパスが実行可能ファイルではなく、ランタイムが必要な場合に使用します。configurationAttributes
は、このデバッガーに固有の起動構成引数のスキーマです。JSONスキーマ構成$ref
およびdefinition
はサポートされていませんのでご注意ください。initialConfigurations
は、初期のlaunch.jsonを埋めるために使用される起動構成をリストします。configurationSnippets
は、launch.jsonを編集する際にIntelliSenseを通じて利用できる起動構成をリストします。variables
は、置換変数を導入し、デバッガー拡張機能によって実装されたコマンドにバインドします。languages
は、デバッグ拡張機能が「デフォルトのデバッガー」と見なされる可能性のある言語です。
デバッガーの例
{
"contributes": {
"debuggers": [
{
"type": "node",
"label": "Node Debug",
"program": "./out/node/nodeDebug.js",
"runtime": "node",
"languages": ["javascript", "typescript", "javascriptreact", "typescriptreact"],
"configurationAttributes": {
"launch": {
"required": ["program"],
"properties": {
"program": {
"type": "string",
"description": "The program to debug."
}
}
}
},
"initialConfigurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/app.js"
}
],
"configurationSnippets": [
{
"label": "Node.js: Attach Configuration",
"description": "A new configuration for attaching to a running node program.",
"body": {
"type": "node",
"request": "attach",
"name": "${2:Attach to Port}",
"port": 9229
}
}
],
"variables": {
"PickProcess": "extension.node-debug.pickNodeProcess"
}
}
]
}
}
debugger
を統合する方法の詳細については、デバッガー拡張機能を参照してください。
contributes.grammars
TextMate文法を言語に貢献します。この文法が適用されるlanguage
、文法のTextMate scopeName
、およびファイルパスを指定する必要があります。
注:文法を含むファイルは、JSON(ファイル名が.jsonで終わる)またはXML plist形式(その他のすべてのファイル)のいずれかになります。
文法の例
{
"contributes": {
"grammars": [
{
"language": "markdown",
"scopeName": "text.html.markdown",
"path": "./syntaxes/markdown.tmLanguage.json",
"embeddedLanguages": {
"meta.embedded.block.frontmatter": "yaml"
}
}
]
}
}
構文強調表示を受け取るために言語に関連付けられたTextMate文法を登録する方法の詳細については、構文強調表示ガイドを参照してください。
contributes.icons
IDとデフォルトアイコンを指定して新しいアイコンを貢献します。アイコンIDは、拡張機能(または拡張機能に依存する他の拡張機能)がThemeIcon
を使用できる場所ならどこでもnew ThemeIcon("iconId")
、Markdown文字列($(iconId)
)、および特定の貢献点のアイコンとして使用できます。
{
"contributes": {
"icons": {
"distro-ubuntu": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E001"
}
},
"distro-fedora": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E002"
}
}
}
}
}
contributes.iconThemes
VS Codeにファイルアイコンテーマを貢献します。ファイルアイコンはファイル名の横に表示され、ファイルの種類を示します。
ID(設定で使用)、ラベル、およびファイルアイコン定義ファイルへのパスを指定する必要があります。
ファイルアイコンテーマの例
{
"contributes": {
"iconThemes": [
{
"id": "my-cool-file-icons",
"label": "Cool File Icons",
"path": "./fileicons/cool-file-icon-theme.json"
}
]
}
}
ファイルアイコンテーマの作成方法については、ファイルアイコンテーマガイドを参照してください。
contributes.jsonValidation
特定の種類のjson
ファイルの検証スキーマを提供します。url
値は、拡張機能に含まれるスキーマファイルへのローカルパス、またはjsonスキーマストアなどのリモートサーバーURLのいずれかです。
{
"contributes": {
"jsonValidation": [
{
"fileMatch": ".jshintrc",
"url": "https://json.schemastore.org/jshintrc"
}
]
}
}
contributes.keybindings
ユーザーがキーの組み合わせを押したときに呼び出されるべきコマンドを定義するキーバインディングルールを貢献します。キーバインディングの詳細については、キーバインディングトピックを参照してください。
キーバインディングを貢献すると、デフォルトのキーボードショートカットにルールが表示され、コマンドのすべてのUI表現に、追加したキーバインディングが表示されます。そしてもちろん、ユーザーがキーの組み合わせを押すと、コマンドが呼び出されます。
注:VS CodeはWindows、macOS、Linuxで動作し、モディファイアが異なるため、「key」を使用してデフォルトのキーの組み合わせを設定し、特定のプラットフォームで上書きできます。
注:コマンドが(キーバインディングまたはコマンドパレットから)呼び出されると、VS Codeはアクティベーションイベント
onCommand:${command}
を発行します。
キーバインディングの例
WindowsとLinuxでCtrl+F1、macOSでCmd+F1が"extension.sayHello"
コマンドをトリガーするように定義する。
{
"contributes": {
"keybindings": [
{
"command": "extension.sayHello",
"key": "ctrl+f1",
"mac": "cmd+f1",
"when": "editorTextFocus"
}
]
}
}
contributes.languages
プログラミング言語の定義を貢献します。これにより、新しい言語が導入されるか、VS Codeが言語について持っている知識が豊かになります。
contributes.languages
の主な効果は次のとおりです。
vscode.TextDocument.languageId
やonLanguage
アクティベーションイベントなど、VS Code APIの他の部分で再利用できるlanguageId
を定義します。aliases
フィールドを使用して人間が読める名前を貢献できます。リストの最初の項目が人間が読めるラベルとして使用されます。
- ファイル名拡張子 (
extensions
)、ファイル名 (filenames
)、ファイル名グロブパターン (filenamePatterns
)、特定の行で始まるファイル (ハッシュバンなど) (firstLine
)、およびmimetypes
をそのlanguageId
に関連付けます。 - 貢献された言語に対して、宣言型言語機能のセットを貢献します。言語構成ガイドで構成可能な編集機能について詳しく学びましょう。
- テーマに言語のアイコンが含まれていない場合、ファイルアイコンテーマでアイコンとして使用できるアイコンを貢献します。
言語の例
{
"contributes": {
"languages": [
{
"id": "python",
"extensions": [".py"],
"aliases": ["Python", "py"],
"filenames": [],
"firstLine": "^#!/.*\\bpython[0-9.-]*\\b",
"configuration": "./language-configuration.json",
"icon": {
"light": "./icons/python-light.png",
"dark": "./icons/python-dark.png"
}
}
]
}
}
contributes.menus
コマンドのメニュー項目をエディターまたはエクスプローラーに貢献します。メニュー項目の定義には、選択時に呼び出されるコマンドと、項目が表示される条件が含まれます。後者は、キーバインディングwhen句コンテキストを使用するwhen
句で定義されます。
command
プロパティは、メニュー項目を選択したときに実行するコマンドを示します。submenu
プロパティは、この場所にレンダリングするサブメニューを示します。
command
メニュー項目を宣言する際、alt
プロパティを使用して代替コマンドも定義できます。これは、メニューを開くときにAltキーを押すと表示され、呼び出されます。WindowsおよびLinuxではShiftキーもこれを実行し、Altキーがウィンドウのメニューバーをトリガーする状況で役立ちます。
最後に、group
プロパティはメニュー項目のソートとグループ化を定義します。navigation
グループは特別で、常にメニューの先頭/上部にソートされます。
注意:
when
句はメニューに適用され、enablement
句はコマンドに適用されます。enablement
はすべてのメニューとキーバインディングに適用されますが、when
は単一のメニューにのみ適用されます。
現在、拡張機能開発者は以下に貢献できます。
commandPalette
- グローバルなコマンドパレットcomments/comment/title
- コメントタイトルメニューバーcomments/comment/context
- コメントコンテキストメニューcomments/commentThread/title
- コメントスレッドタイトルメニューバーcomments/commentThread/context
- コメントスレッドコンテキストメニューdebug/callstack/context
- デバッグ呼び出しスタックビューコンテキストメニューdebug/callstack/context
グループinline
- デバッグ呼び出しスタックビューインラインアクションdebug/toolBar
- デバッグビューツールバーdebug/variables/context
- デバッグ変数ビューコンテキストメニューeditor/context
- エディターコンテキストメニューeditor/lineNumber/context
- エディター行番号コンテキストメニューeditor/title
- エディタータイトルメニューバーeditor/title/context
- エディタータイトルコンテキストメニューeditor/title/run
- エディタータイトルメニューバーの実行サブメニューexplorer/context
- エクスプローラービューコンテキストメニューextension/context
- 拡張機能ビューコンテキストメニューfile/newFile
- ファイルメニューとようこそページの新しいファイル項目interactive/toolbar
- 対話型ウィンドウツールバーinteractive/cell/title
- 対話型ウィンドウセルタイトルメニューバーnotebook/toolbar
- ノートブックツールバーnotebook/cell/title
- ノートブックセルタイトルメニューバーnotebook/cell/execute
- ノートブックセル実行メニューscm/title
- SCMタイトルメニューscm/resourceGroup/context
- SCMリソースグループメニューscm/resourceFolder/context
- SCMリソースフォルダメニューscm/resourceState/context
- SCMリソースメニューscm/change/title
- SCM変更タイトルメニューscm/sourceControl
- SCMソース管理メニューterminal/context
- ターミナルコンテキストメニューterminal/title/context
- ターミナルタイトルコンテキストメニューtesting/item/context
- テストエクスプローラー項目コンテキストメニューtesting/item/gutter
- テスト項目のガターデコレーション用メニューtimeline/title
- タイムラインビュータイトルメニューバーtimeline/item/context
- タイムラインビュー項目コンテキストメニューtouchBar
- macOSタッチバーview/title
- ビュータイトルメニューview/item/context
- ビュー項目コンテキストメニューwebview/context
- 任意のwebviewコンテキストメニュー- すべての貢献されたサブメニュー
注1:コマンドが(コンテキスト)メニューから呼び出されると、VS Codeは現在選択されているリソースを推測し、コマンドを呼び出す際にそれをパラメータとして渡します。たとえば、エクスプローラー内のメニュー項目には選択されたリソースのURIが渡され、エディター内のメニュー項目にはドキュメントのURIが渡されます。
注2:
editor/lineNumber/context
に貢献されたメニュー項目のコマンドには、行番号も渡されます。さらに、これらの項目は、when
句でeditorLineNumber
コンテキストキーを参照できます。たとえば、in
またはnot in
演算子を使用して、拡張機能が管理する配列値のコンテキストキーに対してテストできます。
タイトルに加えて、貢献されたコマンドは、呼び出し元のメニュー項目がボタンとして表示される場合にVS Codeが表示するアイコンを指定できます。たとえば、タイトルメニューバーの場合です。
メニューの例
コマンドメニュー項目は次のとおりです。
{
"contributes": {
"menus": {
"editor/title": [
{
"when": "resourceLangId == markdown",
"command": "markdown.showPreview",
"alt": "markdown.showPreviewToSide",
"group": "navigation"
}
]
}
}
}
同様に、特定のビューに追加されたコマンドメニュー項目を次に示します。以下の例は、ターミナルなどの任意のビューに貢献します。
{
"contributes": {
"menus": {
"view/title": [
{
"command": "terminalApi.sendText",
"when": "view == terminal",
"group": "navigation"
}
]
}
}
}
サブメニュー項目は次のとおりです。
{
"contributes": {
"menus": {
"scm/title": [
{
"submenu": "git.commit",
"group": "2_main@1",
"when": "scmProvider == git"
}
]
}
}
}
コマンドパレットメニュー項目のコンテキストに応じた表示設定
package.json
にコマンドを登録すると、自動的にコマンドパレット(⇧⌘P(Windows、Linux Ctrl+Shift+P))に表示されます。コマンドの表示をより詳細に制御するために、commandPalette
メニュー項目があります。これにより、コマンドをコマンドパレットに表示するかどうかを制御するwhen
条件を定義できます。
以下のスニペットは、「Hello World」コマンドをエディターで何かが選択されている場合にのみコマンドパレットに表示されるようにします。
{
"commands": [
{
"command": "extension.sayHello",
"title": "Hello World"
}
],
"menus": {
"commandPalette": [
{
"command": "extension.sayHello",
"when": "editorHasSelection"
}
]
}
}
グループのソート
メニュー項目はグループにソートできます。これらは、以下のデフォルト/ルールに従って辞書順にソートされます。これらのグループにメニュー項目を追加したり、その間に、その下またはその上に新しいメニュー項目のグループを追加したりできます。
エディターのコンテキストメニューには、次のデフォルトグループがあります。
navigation
-navigation
グループはすべての場合で最初に表示されます。1_modification
- このグループは次に表示され、コードを変更するコマンドが含まれます。9_cutcopypaste
- 基本的な編集コマンドを含む2番目に最後のデフォルトグループ。z_commands
- コマンドパレットを開くエントリを含む最後のデフォルトグループ。
エクスプローラーのコンテキストメニューには、次のデフォルトグループがあります。
navigation
- VS Code全体でのナビゲーションに関連するコマンド。このグループはすべての場合で最初に表示されます。2_workspace
- ワークスペース操作に関連するコマンド。3_compare
- 差分エディターでのファイルの比較に関連するコマンド。4_search
- 検索ビューでの検索に関連するコマンド。5_cutcopypaste
- ファイルの切り取り、コピー、貼り付けに関連するコマンド。6_copypath
- ファイルパスのコピーに関連するコマンド。7_modification
- ファイルの変更に関連するコマンド。
エディタータブのコンテキストメニューには、これらのデフォルトグループがあります。
1_close
- エディターのクローズに関連するコマンド。3_preview
- エディターのピン留めに関連するコマンド。
エディターのタイトルメニューには、次のデフォルトグループがあります。
navigation
- ナビゲーションに関連するコマンド。1_run
- エディターの実行とデバッグに関連するコマンド。1_diff
- 差分エディターの操作に関連するコマンド。3_open
- エディターのオープンに関連するコマンド。5_close
- エディターのクローズに関連するコマンド。
navigation
と1_run
はプライマリエディタータイトル領域に表示されます。他のグループはセカンダリエリア(...
メニューの下)に表示されます。
ターミナルタブのコンテキストメニューには、これらのデフォルトグループがあります。
1_create
- ターミナルの作成に関連するコマンド。3_run
- ターミナルで何かを実行することに関連するコマンド。5_manage
- ターミナルの管理に関連するコマンド。7_configure
- ターミナルの構成に関連するコマンド。
ターミナルコンテキストメニューには、以下のデフォルトグループがあります。
1_create
- ターミナルの作成に関連するコマンド。3_edit
- テキスト、選択範囲、またはクリップボードの操作に関連するコマンド。5_clear
- ターミナルのクリアに関連するコマンド。7_kill
- ターミナルの終了/停止に関連するコマンド。9_config
- ターミナル構成に関連するコマンド。
タイムラインビュー項目コンテキストメニューには、以下のデフォルトグループがあります。
inline
- 重要または頻繁に使用されるタイムライン項目コマンド。ツールバーとしてレンダリングされます。1_actions
- タイムライン項目の操作に関連するコマンド。5_copy
- タイムライン項目情報のコピーに関連するコマンド。
拡張機能ビューのコンテキストメニューには、以下のデフォルトグループがあります。
1_copy
- 拡張機能情報のコピーに関連するコマンド。2_configure
- 拡張機能の設定に関連するコマンド。
グループ内のソート
グループ内の順序は、タイトルまたは順序属性に依存します。メニュー項目のグループローカルの順序は、以下に示すようにグループ識別子に@<number>
を追加することで指定されます。
{
"editor/title": [
{
"when": "editorHasSelection",
"command": "extension.Command",
"group": "myGroup@1"
}
]
}
contributes.problemMatchers
問題マッチャーパターンを貢献します。これらの貢献は、出力パネルランナーとターミナルランナーの両方で機能します。以下は、拡張機能でgccコンパイラの問題マッチャーを貢献する例です。
{
"contributes": {
"problemMatchers": [
{
"name": "gcc",
"owner": "cpp",
"fileLocation": ["relative", "${workspaceFolder}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
]
}
}
この問題マッチャーは、$gcc
という名前参照を介してtasks.json
ファイルで使用できるようになります。例は次のようになります。
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "gcc",
"args": ["-Wall", "helloWorld.c", "-o", "helloWorld"],
"problemMatcher": "$gcc"
}
]
}
こちらも参照:問題マッチャーの定義
contributes.problemPatterns
問題マッチャーで使用できる名前付き問題パターンを貢献します(上記参照)。
contributes.productIconThemes
VS Codeに製品アイコンテーマを貢献します。製品アイコンとは、ファイルアイコンと拡張機能から貢献されたアイコンを除く、VS Codeで使用されるすべてのアイコンです。
ID(設定で使用)、ラベル、およびアイコン定義ファイルへのパスを指定する必要があります。
製品アイコンテーマの例
{
"contributes": {
"productIconThemes": [
{
"id": "elegant",
"label": "Elegant Icon Theme",
"path": "./producticons/elegant-product-icon-theme.json"
}
]
}
}
製品アイコンテーマの作成方法については、製品アイコンテーマガイドを参照してください。
contributes.resourceLabelFormatters
ワークベンチのあらゆる場所でURIを表示する方法を指定するリソースラベルフォーマッターを貢献します。たとえば、拡張機能がスキームremotehub
のURIのフォーマッターを貢献する方法を次に示します。
{
"contributes": {
"resourceLabelFormatters": [
{
"scheme": "remotehub",
"formatting": {
"label": "${path}",
"separator": "/",
"workspaceSuffix": "GitHub"
}
}
]
}
}
これは、スキームremotehub
を持つすべてのURIが、URIのpath
セグメントのみを表示してレンダリングされ、区切り文字は/
になることを意味します。remotehub
URIを持つワークスペースは、ラベルにGitHubサフィックスを持ちます。
contributes.semanticTokenModifiers
テーマルールを介して強調表示できる新しいセマンティックトークン修飾子を貢献します。
{
"contributes": {
"semanticTokenModifiers": [
{
"id": "native",
"description": "Annotates a symbol that is implemented natively"
}
]
}
}
セマンティック強調表示の詳細については、セマンティック強調表示ガイドを参照してください。
contributes.semanticTokenScopes
セマンティックトークンの種類と修飾子とスコープのマッピングを、フォールバックとして、または言語固有のテーマをサポートするために貢献します。
{
"contributes": {
"semanticTokenScopes": [
{
"language": "typescript",
"scopes": {
"property.readonly": ["variable.other.constant.property.ts"]
}
}
]
}
}
セマンティック強調表示の詳細については、セマンティック強調表示ガイドを参照してください。
contributes.semanticTokenTypes
テーマルールを介して強調表示できる新しいセマンティックトークンタイプを貢献します。
{
"contributes": {
"semanticTokenTypes": [
{
"id": "templateType",
"superType": "type",
"description": "A template type."
}
]
}
}
セマンティック強調表示の詳細については、セマンティック強調表示ガイドを参照してください。
contributes.snippets
特定の言語のスニペットを貢献します。language
属性は言語識別子であり、path
はVS Codeスニペット形式でスニペットを定義するスニペットファイルへの相対パスです。
以下の例は、Go言語のスニペットを追加する方法を示しています。
{
"contributes": {
"snippets": [
{
"language": "go",
"path": "./snippets/go.json"
}
]
}
}
contributes.submenus
メニュー項目を貢献できるプレースホルダーとしてサブメニューを貢献します。サブメニューには、親メニューに表示するlabel
が必要です。
タイトルに加えて、コマンドはVS Codeがエディタータイトルメニューバーに表示するアイコンも定義できます。
サブメニューの例
{
"contributes": {
"submenus": [
{
"id": "git.commit",
"label": "Commit"
}
]
}
}
contributes.taskDefinitions
システム内で貢献されたタスクを一意に識別できるオブジェクトリテラル構造を貢献し、定義します。タスク定義には最低限type
プロパティがありますが、通常は追加のプロパティを定義します。たとえば、package.jsonファイル内のスクリプトを表すタスクのタスク定義は次のようになります。
{
"taskDefinitions": [
{
"type": "npm",
"required": ["script"],
"properties": {
"script": {
"type": "string",
"description": "The script to execute"
},
"path": {
"type": "string",
"description": "The path to the package.json file. If omitted the package.json in the root of the workspace folder is used."
}
}
}
]
}
タスク定義は、required
およびproperties
プロパティにJSONスキーマ構文を使用して定義されます。type
プロパティはタスクタイプを定義します。上記の例の場合
"type": "npm"
は、タスク定義をnpmタスクに関連付けます。"required": [ "script" ]
は、script
属性を必須と定義します。path
プロパティはオプションです。"properties" : { ... }
は、追加のプロパティとその型を定義します。
拡張機能が実際にタスクを作成する場合、package.jsonファイルに貢献されたタスク定義に準拠するTaskDefinition
を渡す必要があります。npm
の例では、package.jsonファイル内のテストスクリプトのタスク作成は次のようになります。
let task = new vscode.Task({ type: 'npm', script: 'test' }, ....);
contributes.terminal
VS Codeにターミナルプロファイルを貢献し、拡張機能がプロファイルの作成を処理できるようにします。定義されている場合、プロファイルはターミナルプロファイルの作成時に表示されるはずです。
{
"activationEvents": ["onTerminalProfile:my-ext.terminal-profile"],
"contributes": {
"terminal": {
"profiles": [
{
"title": "Profile from extension",
"id": "my-ext.terminal-profile"
}
]
}
}
}
定義されている場合、プロファイルはターミナルプロファイルセレクタに表示されます。アクティブ化されると、ターミナルオプションを返すことでプロファイルの作成を処理します。
vscode.window.registerTerminalProfileProvider('my-ext.terminal-profile', {
provideTerminalProfile(
token: vscode.CancellationToken
): vscode.ProviderResult<vscode.TerminalOptions | vscode.ExtensionTerminalOptions> {
return { name: 'Profile from extension', shellPath: 'bash' };
}
});
contributes.themes
VS Codeにカラーテーマを貢献し、エディター内の構文トークンのワークベンチの色とスタイルを定義します。
ラベル、テーマがダークテーマかライトテーマか(VS Codeの残りの部分がテーマに合わせて変更されるように)、およびファイルへのパス(JSON形式)を指定する必要があります。
テーマの例
{
"contributes": {
"themes": [
{
"label": "Monokai",
"uiTheme": "vs-dark",
"path": "./themes/monokai-color-theme.json"
}
]
}
}
カラーテーマの作成方法については、カラーテーマガイドを参照してください。
contributes.typescriptServerPlugins
VS CodeのJavaScriptおよびTypeScriptサポートを拡張するTypeScriptサーバープラグインを貢献します。
{
"contributes": {
"typescriptServerPlugins": [
{
"name": "typescript-styled-plugin"
}
]
}
}
上記の例の拡張機能は、JavaScriptおよびTypeScriptにスタイル付きコンポーネントのIntelliSenseを追加するtypescript-styled-plugin
を貢献します。このプラグインは拡張機能からロードされ、拡張機能に通常のNPM dependency
としてインストールされている必要があります。
{
"dependencies": {
"typescript-styled-plugin": "*"
}
}
TypeScriptサーバープラグインは、ユーザーがVS CodeのTypeScriptバージョンを使用している場合、すべてのJavaScriptおよびTypeScriptファイルに対してロードされます。ユーザーがワークスペースバージョンのTypeScriptを使用している場合、プラグインが明示的に"enableForWorkspaceTypeScriptVersions": true
を設定しない限り、アクティブ化されません。
{
"contributes": {
"typescriptServerPlugins": [
{
"name": "typescript-styled-plugin",
"enableForWorkspaceTypeScriptVersions": true
}
]
}
}
プラグイン構成
拡張機能は、VS Codeの組み込みTypeScript拡張機能が提供するAPIを通じて、貢献されたTypeScriptプラグインに構成データを送信できます。
// In your VS Code extension
export async function activate(context: vscode.ExtensionContext) {
// Get the TS extension
const tsExtension = vscode.extensions.getExtension('vscode.typescript-language-features');
if (!tsExtension) {
return;
}
await tsExtension.activate();
// Get the API from the TS extension
if (!tsExtension.exports || !tsExtension.exports.getAPI) {
return;
}
const api = tsExtension.exports.getAPI(0);
if (!api) {
return;
}
// Configure the 'my-typescript-plugin-id' plugin
api.configurePlugin('my-typescript-plugin-id', {
someValue: process.env['SOME_VALUE']
});
}
TypeScriptサーバープラグインは、onConfigurationChanged
メソッドを通じて構成データを受け取ります。
// In your TypeScript plugin
import * as ts_module from 'typescript/lib/tsserverlibrary';
export = function init({ typescript }: { typescript: typeof ts_module }) {
return {
create(info: ts.server.PluginCreateInfo) {
// Create new language service
},
onConfigurationChanged(config: any) {
// Receive configuration changes sent from VS Code
}
};
};
このAPIにより、VS Code拡張機能はVS Code設定をTypeScriptサーバープラグインと同期したり、プラグインの動作を動的に変更したりできます。このAPIが実際にどのように使用されているかについては、TypeScript TSLintプラグインとlit-html拡張機能をご覧ください。
contributes.views
VS Codeにビューを貢献します。ビューの識別子と名前を指定する必要があります。次のビューコンテナに貢献できます。
explorer
: アクティビティバーのエクスプローラービューコンテナscm
: アクティビティバーのソース管理管理(SCM)ビューコンテナdebug
: アクティビティバーの実行とデバッグビューコンテナtest
: アクティビティバーのテストビューコンテナ- 拡張機能によって貢献されたカスタムビューコンテナ。
ユーザーがビューを開くと、VS CodeはアクティベーションイベントonView:${viewId}
(以下の例ではonView:nodeDependencies
)を発行します。また、when
コンテキスト値を指定することでビューの可視性を制御できます。指定されたicon
は、タイトルを表示できない場合(例:ビューがアクティビティバーにドラッグされた場合)に使用されます。contextualTitle
は、ビューがデフォルトのビューコンテナから移動され、追加のコンテキストが必要な場合に使用されます。
{
"contributes": {
"views": {
"explorer": [
{
"id": "nodeDependencies",
"name": "Node Dependencies",
"when": "workspaceHasPackageJSON",
"icon": "media/dep.svg",
"contextualTitle": "Package Explorer"
}
]
}
}
}
ビューの内容は、次の2つの方法で設定できます。
- TreeViewを使用し、
createTreeView
APIを通じてデータプロバイダーを提供するか、registerTreeDataProvider
APIを通じてデータプロバイダーを直接登録してデータを設定します。TreeViewsは、階層データとリストの表示に最適です。tree-view-sampleを参照してください。 - WebviewViewを使用して、
registerWebviewViewProvider
でプロバイダーを登録します。Webviewビューは、ビューに任意のHTMLをレンダリングできます。詳細については、webview view sample extensionを参照してください。
contributes.viewsContainers
カスタムビューを貢献できるビューコンテナを貢献します。ビューコンテナの識別子、タイトル、アイコンを指定する必要があります。現在、アクティビティバー(activitybar
)とパネル(panel
)に貢献できます。以下の例は、Package Explorer
ビューコンテナがアクティビティバーに貢献され、ビューがそれに貢献される方法を示しています。
{
"contributes": {
"viewsContainers": {
"activitybar": [
{
"id": "package-explorer",
"title": "Package Explorer",
"icon": "resources/package-explorer.svg"
}
]
},
"views": {
"package-explorer": [
{
"id": "package-dependencies",
"name": "Dependencies"
},
{
"id": "package-outline",
"name": "Outline"
}
]
}
}
}
アイコンの仕様
-
サイズ:
アイコンは24x24で中央に配置する必要があります。 -
色:
アイコンは単色を使用する必要があります。 -
形式:
アイコンはSVG形式が推奨されますが、任意の画像ファイルタイプも受け入れられます。 -
状態:
すべてのアイコンは以下の状態スタイルを継承します。状態 不透明度 既定値 60% ホバー 100% アクティブ 100%
contributes.viewsWelcome
カスタムビューにようこそコンテンツを貢献します。ようこそコンテンツは空のツリービューにのみ適用されます。ツリーに子がなく、TreeView.message
がない場合、ビューは空と見なされます。慣例として、それ自体が1行にあるコマンドリンクはボタンとして表示されます。view
プロパティを使用して、ようこそコンテンツが適用されるビューを指定できます。ようこそコンテンツの表示は、when
コンテキスト値で制御できます。ようこそコンテンツとして表示されるテキストは、contents
プロパティで設定されます。
{
"contributes": {
"viewsWelcome": [
{
"view": "scm",
"contents": "In order to use git features, you can open a folder containing a git repository or clone from a URL.\n[Open Folder](command:vscode.openFolder)\n[Clone Repository](command:git.clone)\nTo learn more about how to use git and source control in VS Code [read our docs](https://aka.ms/vscode-scm).",
"when": "config.git.enabled && git.state == initialized && workbenchState == empty"
}
]
}
}
複数のようこそコンテンツ項目を1つのビューに貢献できます。この場合、VS Codeコアからのコンテンツが最初に表示され、次に組み込み拡張機能からのコンテンツ、次に他のすべての拡張機能からのコンテンツが続きます。
contributes.walkthroughs
「はじめに」ページに表示されるウォークスルーを貢献します。ウォークスルーは拡張機能のインストール時に自動的に開き、ユーザーに拡張機能の機能を紹介する便利な方法を提供します。
ウォークスルーは、タイトル、説明、ID、および一連のステップで構成されます。さらに、コンテキストキーに基づいてウォークスルーを非表示または表示するためにwhen
条件を設定できます。たとえば、Linuxプラットフォームでのセットアップを説明するウォークスルーには、Linuxマシンでのみ表示されるようにwhen: "isLinux"
を指定できます。
ウォークスルーの各ステップには、タイトル、説明、ID、メディア要素(画像またはMarkdownコンテンツのいずれか)があり、オプションでステップがチェックされる原因となる一連のイベント(以下の例に示す)があります。ステップの説明はMarkdownコンテンツであり、**太字**
、__下線__
、および``コード``
のレンダリング、さらにリンクをサポートしています。ウォークスルーと同様に、ステップにはコンテキストキーに基づいて非表示または表示するためのwhen条件を与えることができます。
SVGは、そのスケーラビリティとVS Codeのテーマカラーのサポートを考慮して、画像に推奨されます。Visual Studio Code Color Mapper Figmaプラグインを使用して、SVG内のテーマカラーを簡単に参照できます。
{
"contributes": {
"walkthroughs": [
{
"id": "sample",
"title": "Sample",
"description": "A sample walkthrough",
"steps": [
{
"id": "runcommand",
"title": "Run Command",
"description": "This step will run a command and check off once it has been run.\n[Run Command](command:getting-started-sample.runCommand)",
"media": { "image": "media/image.png", "altText": "Empty image" },
"completionEvents": ["onCommand:getting-started-sample.runCommand"]
},
{
"id": "changesetting",
"title": "Change Setting",
"description": "This step will change a setting and check off when the setting has changed\n[Change Setting](command:getting-started-sample.changeSetting)",
"media": { "markdown": "media/markdown.md" },
"completionEvents": ["onSettingChanged:getting-started-sample.sampleSetting"]
}
]
}
]
}
}
完了イベント
デフォルトでは、completionEvents
イベントが提供されていない場合、ステップはボタンがクリックされたとき、またはボタンがない場合は開かれたときにチェックされます。よりきめ細かな制御が必要な場合は、completionEvents
のリストを提供できます。
利用可能な完了イベントは次のとおりです。
onCommand:myCommand.id
: コマンドが実行されたときにステップをチェックします。onSettingChanged:mySetting.id
: 指定された設定が変更されたときにステップをチェックします。onContext:contextKeyExpression
: コンテキストキー式がtrueと評価されたときにステップをチェックします。extensionInstalled:myExt.id
: 指定された拡張機能がインストールされている場合にステップをチェックします。onView:myView.id
: 指定されたビューが表示されたときにステップをチェックします。onLink:https://...
: ウォークスルーを通じて指定されたリンクが開かれたときにステップをチェックします。
ステップがチェックされると、ユーザーが明示的にステップのチェックを外すか、進行状況をリセットする(はじめに: 進行状況をリセットコマンドを使用)までチェックされたままになります。