srceryというカラースキームは特にemacsをターミナル内でしか使わない人には良かった

Emacs 、ウィンドウシステムでも使えるのは承知しているが、普通に考えてウィンドウシステムでエディタ立ち上げるなら VS Code とか JetBrains とか使うと思うので、その存在意義はターミナル内の作業中にその場で .bash_profile とか .git/config みたいなファイルをひとつだけサクッと書き換えるようなニッチな状況しか考えられず、したがってターミナルというかなり貧弱な色空間において精一杯やってもらわざるを得ない。そもそも Emacs 強い人はウィンドウシステムで立ち上げるし、強い人しか elisp 書かないので、そういう人と同じ運用にしないとおこぼれにあずかれないという構造があり、一方でターミナル向けのカラースキームがあったとして vim を含む各種エディタサポートしていたとしても Emacs はサポートされていなかったりしていて、ひしひしと淘汰圧を感じる日頃であるが、そんな時世にもきちんと Emacs まで対応してくれるカラースキーム [srcery](https://srcery-colors.github.io/) というものを発見できて本当に良かった。なお `Srcery initially started as a vim colorscheme` とのこと。monokai とか zenburn もそんなんだった気がするが。


<img width="908" alt="スクリーンショット 2020-07-24 15.48.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/de4e90b7-b808-9e1a-36b4-ab3cc8a92ba2.png">

<img width="720" alt="スクリーンショット 2020-07-24 15.30.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/d4c97912-69f2-7ca9-f6a9-c3fc702529e2.png">

さて、ターミナルに色を正しく表示させ、その上で Emacs にも色を正しく表示させるにはターミナル自体が256色をエミュレートしているかどうかと、実際に256色出す確認用のスクリプトと、あとは Emacs 上で256色を出す確認方法が必要だ。

## 1. macOS の Terminal.app のカラースキームを適用する。

https://github.com/srcery-colors/srcery-terminal/blob/master/terminal_app/srcery_terminal_app.terminal これをダウンロードして、 Terminal.app の設定画面から読み込ませる

<img width="471" alt="スクリーンショット 2020-07-24 15.54.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/92327a84-0a6e-5568-6632-848c379835a5.png">

## 2. ターミナルの設定

ターミナル(というかターミナルエミュレーター)が256色出力ができる、とエミュレートされているものに伝える必要がある。

<img width="779" alt="スクリーンショット 2020-07-24 15.41.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/4a84a588-207c-5a02-8d21-5f1ac4ed051e.png">

`$ echo $TERM` して `xterm-256color` と出ればよいと思う。

あとついでに「キーボード」タブの `メタキーとしてOptionキーを使用` チェックを入れておく。

## 3. 256color.pl を実行する

出自不明だけどどこかで「256color.pl」というスクリプトをとってきて実行する。 普通に検索すると https://gist.github.com/hSATAC/1095100 が出るのかな。

```
$ chmod +x 256color.pl
$ ./256color.pl
```

<img width="482" alt="スクリーンショット 2020-07-24 15.45.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/25505ce0-6a53-f52a-8e73-3e944a5139ed.png">

もしこの直上に tmux が載って、その上で Emacs という構成だとまた気をつけなきゃいけないことが増えると思うけど `TERM=xterm-256color` になっていたらそれで済んだと思う。

## 4. Emacs で M-x list-colors-display する

256色対応していない場合は、こんな感じ。

<img width="908" alt="スクリーンショット 2020-07-24 15.48.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/c0ff6aaa-6d5b-1f9a-7081-5cac87e0d26a.png">

たとえば `TERM=xterm-256color emacsclient -nw -a ''` で起動すると、こう(ちなみに Emacs とかいう重量級プロセスを使い捨てるのはやめよう。 `alias emacs="TERM=xterm-256color emacsclient -nw -a ''"` するべき)。

<img width="908" alt="スクリーンショット 2020-07-24 15.48.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/de4e90b7-b808-9e1a-36b4-ab3cc8a92ba2.png">

## 6. srcery-theme を package-install して load-theme する

[srcery-theme- MELPA](https://melpa.org/#/srcery-theme) から落とすのが普通だと思う。私は use-package で書くのが好きです。

``` .emacs.d/init.el
(use-package srcery-theme
  :config
  (load-theme 'srcery t))
```

## 例

<img width="416" alt="スクリーンショット 2020-07-24 16.01.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/1bd10d6b-4ca2-1ebf-b4e4-798783a72b90.png">

<img width="440" alt="スクリーンショット 2020-07-24 16.03.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/c1e8f08b-93ee-5532-ec84-cdf1b0a567c8.png">

<img width="416" alt="スクリーンショット 2020-07-24 16.02.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10698/45f12395-3b8c-a42d-052b-ebc4a6507caa.png">

ターミナル内でサクッとファイルをひとつだけ編集するときに、きれなカラースキームがあたっていると、うれしい。