Visual Studio Code で ExtendScript を実行させるメモ

Visual Studio Code（以下vscode）でAdobe系スクリプトを動作させるメモ。説明用。気がついたら追記。

## vscode で開いているスクリプトを実行する

- [ExtendScript Debugger](https://marketplace.visualstudio.com/items?itemName=Adobe.extendscript-debug) エクステンションをインストール
- プロジェクトのフォルダを vscode で開く
- `デバッグ` メニュー → `構成の追加` を開く
  - セレクタが出たら `ExtendScript Debag` を選択
- 開いた `launch.json` を、以下に書き換え（もしくは追記）

  ```json
  {
      // IntelliSense を使用して利用可能な属性を学べます。
      // 既存の属性の説明をホバーして表示します。
      // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [{
          "type": "extendscript-debug",
          "request": "launch",
          "name": "開いているスクリプトを実行",
          "program": "${file}",
          "stopOnEntry": false
      }]
  }
  ```

- ファイルを作成し、拡張子 `.jsx` 、エンコードは `UTF-8 with BOM` で保存
- アクティビティバーから <img width="37" alt="ss 2020-02-05 11.35.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956/21b08277-b196-38a4-1ffc-60873b7f6bd8.png"> アイコンをクリックし、「デバッグと実行」画面を開く
- ステータスバーの `ターゲットアプリケーションを選択` から、対象のアプリを選択
  <img width="785" alt="ss 2020-02-05 11.21.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956/0a9dfedb-eccb-c214-aac4-8b2d272e8122.png">
  - もし `ターゲットアプリケーションを選択` がない場合は、一度実行すれば表示される。
- 左上の ▶︎ ボタンをクリック<br/><img width="313" alt="ss 2020-02-05 11.24.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956/f8e2d281-73b7-6a0c-0942-04b2dd943d60.png">


## vscodeで `*.jsx` と `*.jsxinc` 拡張子を ExtendScript と認識させる

- [ExtendScript](https://marketplace.visualstudio.com/items?itemName=hennamann.jsx) エクステンションをインストール
- `code` メニュー → `基本設定` → `設定[⌘]` を開く
- 右上の <img width="21" alt="ss 2020-02-05 11.43.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956/4fd402aa-a85c-1cc4-d663-0aeaa2d110f8.png">
 アイコンをクリックし、 `settings.json` を開く
- `settings.json` の `files.assosiations` ブロックに以下を追記

  ```json
    "files.associations": {
      "*.jsx": "jsx",
      "*.jsxinc": "jsx"
    },
  ```

## ExtendScript 用のユーザースニペットを追加する

- [ExtendScript](https://marketplace.visualstudio.com/items?itemName=hennamann.jsx) エクステンションがインストールされていて、拡張子が設定されているのを確認（上記参照）
- `code` メニュー → `基本設定` → `ユーザー スニペット` を開く
- セレクタで `jsx.json` を選択
- 開いた `jsx.json` に、以下の例のように追記する

  ```json
  {
  	// Place your snippets for jsx here. Each snippet is defined under a snippet name and has a prefix, body and 
  	// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
  	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 
  	// same ids are connected.
  	// Example:
  	"start": {
  		"prefix": "start",
  		"body": [
  			"(function () {",
  			"    if (app.documents.length) {",
  			"        main(app.activeDocument);",
  			"    }",
  			"}());",
  			"",
  			"function main(doc) {",
  			"    $1",
  			"}"
  		],
  		"description": "start script"
  	}
  }
  ```

- スクリプトを開き、 `start` と入力すると、作成したスニペットの一覧が表示される
  ![ss 2020-02-05 11.50.20_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956/6260086a-8331-5b8d-c315-6ade6999fe15.png)

- ↑↓で選択し、 tab で決定
- スニペットが挿入される
  ![ss 2020-02-05 11.50.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956/4911127c-ec3b-87f3-124a-d3fa76160041.png)