Visual Studio Codeの拡張機能開発で必ずお世話になる、拡張機能をアクティベートするタイミングの制御について解説する。
今回解説する方法を使えば、プロジェクトフォルダーにREADME.mdなるファイルがあるときだけアクティベートしたり、C#ファイルを開いたときだけアクティベートしたりできる。
Contents
activationEventsの書き方
プロジェクトフォルダーの最上位にpackage.jsonを置き、”activationEvents”というプロパティ内に複数の条件を書く。それぞれの条件は並列に判断され、1つでも合致する条件があれば拡張機能がアクティベートされるという仕組みになっている。
1 2 3 4 5 6 7 |
... "activationEvents": [ "onLanguage:python", "onCommand:extension.sayHello", "workspaceContains:.editorconfig" ] ... |
onLanguage
任意の拡張子のファイルを開いたときに拡張機能がアクティベートされる。
記述方法としては、ファイル拡張子に対応した言語ID(csharpやtypescript)をこのように並べる。
1 2 3 4 5 6 |
... "activationEvents": [ "onLanguage:csharp", "onLanguage:typescript" ] ... |
こう書くと、C#かTypeScriptファイル(.cs or .ts)を開いたときに拡張機能がアクティベートされる。
他の言語IDはこのとおり。
- handlebars
- html
- javascript
- json
- markdown
- php
- plaintext
- razor
- css
- less
- sass
- Log
- bat
- clojure
- coffeescript
- c
- cpp
- dockerfile
- fsharp
- go
- groovy
- ini
- jade
- java
- javascriptreact
- csharp
- lua
- makefile
- objective-c
- perl
- perl6
- powershell
- python
- r
- ruby
- rust
- shaderlab
- shellscript
- sql
- swift
- typescript
- typescriptreact
- vb
- xml
- xsl
- yaml
onCommand
コマンドが呼び出されたときに初めてアクティベートされる。
例えば、”extension.sayHello”なるIDのコマンド(コマンド名は”Hello World”)が呼び出されたタイミングでアクティベートしたい時はこうなる。
1 2 3 4 5 |
... "activationEvents": [ "onCommand:extension.sayHello" ] ... |
workspaceContains
特定のファイルがフォルダーに存在する場合、フォルダーを開いた時に拡張機能がアクティベートされる。
フォルダーオープン時に自動でウォッチを開始させる拡張機能 Blade Runner は、tasks.jsonがある時にだけ有効にしているけれど、まさにこれを使っている。
1 2 3 4 5 |
... "activationEvents": [ "workspaceContains:.vscode/tasks.json" ] ... |
Blade Runner – Run Task When Open
*
Visual Studio Codeが起動した際にアクティベートしたいならこれを使う。
拡張機能のデザインとして、必要になったタイミングでアクティベートする方向性があるため、なるべくならこれは使わないようにすべきと公式レファレンスにある。
ちなみに他の条件と並べた場合、* が優先されて結果的に他の条件は無視される。
1 2 3 4 5 6 |
... "activationEvents": [ "onLanguage:javascript", "*" ] ... |
公式レファレンス
Visual Studio Code Activation Events – package.json
Visual Studio Code関連記事
Visual Studio Code API コマンド編 -vscode.commands-
Visual Studio Codeのコマンドパレットでリスト(Quick Pick)を出す方法
Visual Studio Codeの拡張機能をTypeScriptで作る方法
Visual Studio Codeの拡張機能を公開する方法
Visual Studio CodeのES6用拡張機能で爆速ES6コーディング
Visual Studio CodeでTypeScriptをトランスパイルする方法
Visual Studio Code 拡張機能を使ってASP.NET 5によるWebアプリを作ってみる。
言語を越えて活用できる、役に立ちすぎる技術書はこちら。