Unityで使うためにVidualStudio Code（VSCode）入れてやったこと

UnityでVSCodeを使うまでの手順はこちら
UntiyでVisual Studio Codeを使う - http://qiita.com/STAR_ZERO/items/6708b69d18eb8c815963#comment-521fbcf4c631035dfb68


Unityのためにと言っていますが他のところで役に立つ知識かも。

## キーボードショートカット変更

フォーマットは「cmd+alt+l」派なので変更する。

```json:keybinding.json
// Place your key bindings in this file to overwrite the defaults
[
	 { "key": "cmd+alt+l", "command": "editor.action.format" }
]
```

## 壁紙
以下のエントリーを参考にしました。

VisualStudioCodeでエディタの背景に画像を設定する
http://qiita.com/hyakuson/items/2e79ec024cd4a15ea54d

```css:native.main.css
@media only screen and (min-width: 1000px) {
	.monaco-editor.vs-dark {		
		background: url('./background.png') no-repeat;
    	background-size: contain;
    	background-position: right bottom;
	}
}
```
![ss 2015-05-03 22.13.51.png](https://qiita-image-store.s3.amazonaws.com/0/5549/820078ba-e516-ce1d-bbd6-740a134ebdc8.png)

画面を分割すると2つ表示されてしまうのは、うーん。

![ss 2015-05-03 22.13.39.png](https://qiita-image-store.s3.amazonaws.com/0/5549/3030c1f8-b3d1-5873-e20b-a152cf72be51.png)

## settings.json

SublimeTextでいう「*.sublime-project」みたいなもの？

```json:settings.json
// Place your settings in this file to overwrite default and user settings.
{
   	"search.excludeFolders": [
		".git",
		"Library",
		"obj",
		"Temp",
		"ProjectSettings"
	]
}
```
`search.excludeFolders`で検索対象外にする。`search.excludeFiles`がなくて少し残念。

## Awake、Start、Update などをスニペットとして追加

https://github.com/anchan828/unity-snippets/blob/master/VSCode/csharp.json

これを`Visual Studio Code.app/Contents/Resources/app/plugins/vs.language.csharp.o/features/snippets.js`に置く

![ss 2015-05-04 2.26.07.png](https://qiita-image-store.s3.amazonaws.com/0/5549/0c72851f-d868-ff12-2f63-62ed1907e9cf.png)


## UnityのクラスをHighlight

MonoBehaviour や Debug のようなUnityが用意しているクラスに色を付けたい。

![ss 2015-05-04 2.20.39.png](https://qiita-image-store.s3.amazonaws.com/0/5549/919e5196-1671-b8dd-250c-b4b8ae313294.png)

charpDef.js で言語の設定などやっているみたいなので、ここに`keywords`と同じように`unity-keywords`を追加します。

### tokenizer に case を追加

`unityKeywords`として追加

```js:charpDef.js
tokenizer: {
            root: [
                [/\@?[a-zA-Z_]\w*/, { cases: {
                    '@namespaceFollows': { token: 'keyword.$0', next: '@namespace' },
                    '@keywords': { token: 'keyword.$0', next: '@qualified' },
                    '@unityKeywords': { token: 'unity-keyword.$0', next: '@qualified' },
                    '@default': { token: 'identifier', next: '@qualified' }
                    }
                } }],
```

### unityKeywords を追加

keywordsと同じように追加していく。追加した`charpDef.js`をgistに上げました。 https://gist.github.com/anchan828/3600b16d1e51f4de2889
ただVSCodeがプレビュー版ということもあり、大幅な変更も予想されるため丸コピしてしまうと動かなくなる可能性もあるので、どのように設定するかの参考程度にしてください。

```js:charpDef.js
keywords: [
 ...
],
unityKeywords: [
 ...
],
```

### 色を変える

`native.main.css`に以下のスタイルを適用する。

```css:native.main.css
.monaco-editor.vs .token.unity-keyword		{ color: #008a8c; }
.monaco-editor.vs-dark .token.unity-keyword	{ color: #d69056; }
```

テーマごとに設定しなくても良い場合は以下のようにする。

```css:native.main.css
.monaco-editor .token.unity-keyword		{ color: #008a8c; }
```

![ss 2015-05-04 2.19.58.png](https://qiita-image-store.s3.amazonaws.com/0/5549/7caf31f8-58ab-af6c-5424-03c18531c71f.png)

## おまけ

### VSCode日本語化

`native.main.nls.js`にある文章を訳せばOKっぽい？

![ss 2015-05-03 23.25.40.png](https://qiita-image-store.s3.amazonaws.com/0/5549/267544e8-8684-8d78-0752-fa1371b4f132.png)

ただこれだとパネルの検索も日本語でやらないといけないのでこの方法での日本語化はおすすめしない。

![ss 2015-05-03 23.27.28.png](https://qiita-image-store.s3.amazonaws.com/0/5549/adb8dc2d-df55-4be8-09b6-8db33934f520.png)