spacemacs 0.200 のリリースノートを読みながら独り言

# はじめに

spacemacs 0.200 の [リリースノート](http://spacemacs.org/news/news01.html)
を読みながら、つぶやきます。決して網羅的に翻訳したりはしないので、
多くの人の役には立たないと思います。

# Introduction

すげーたくさん変更があるよー、詳細は `CHANGELOG.org` みてねー、
ってことが書いてますね。すっ飛ばす。

# Breaking Changes

## Support for Emacs 24.3 has been dropped

タイトルの通り。次っ。

## Some modifications in the layer format

レイヤーのファイル構造がちょっと変わったよー、的な話。
レイヤーを自作したりカスタマイズしない人にはあんまり関係なさそう。

## Controlling downloaded packages

使ってるパッケージだけをダウンロードするのか、全部をダウンロードするのか
を適切に定義できるようにしましたよ、的な？多くの人には関係ないだろう。
デフォルト値(`used-only`)のままでオッケーだと思う。

## Key bindings

> Here is the scary section

そうだねw

### `SPC SPC` は以前は `avy` を起動してたけど、 `M-x` に変えますよ

ｶﾞ━━(;ﾟДﾟ)━━ﾝ!!

`SPC SPC` めちゃめちゃ使ってたよ。まぁ、でも

> The SPC key in Spacemacs is a central key as it acts as the leader key for all the key bindings

というポリシーには同意できるので、慣れるしかないね...


で、 `avy` はどこに行ったのかというと、`jump` をまとめた
`SPC j` に移動したよ、と。

なので、例えば `t` を検索して移動するとき、以前は
`SPC SPC t` でよかったんだけど、これからは
`SPC j j t` に変わりますよ、と。タイプ数が1回増えちゃうね...


でも `SPC j l`(行の移動) などとの整合性には納得できるので、
がんばって慣れましょうか。

これに伴ってもともと `SPC j` にバインドされていたいくつかの機能の
キーバインドも変わってるけど、この辺はもともとそんなに使ってなかったから
いっか。

### Closing, deleting or killing things ? 

Close には `c` が割り当たってたり、 Delete には `d` が
割り当たってたり、 Kill には `k` が割り当たってたりなど、「閉じる」的な
操作のキーに統一感がなかったので、全部 `d` に統一しますよ、と。

うん、これは私も混乱してたので、大変ありがたい。

### map prefixes `SPC b` and `SPC w` to the same actions and bring a convention with `avy` commands

バッファの操作とウインドウの操作は動作として共通のものが多いので、
統一させて、 `avy` にも対応しましたよ、と。これは良いんじゃないですかね。
まぁ、バッファ操作は旧来の `C-x k` とか使っちゃてるし、
ウインドウの選択も `SPC 2` とか使ってるので、この辺はどうでもいいや。

### `Helm` has a new friend in this release, it is called `ivy`

Helm に対応したパッケージを増やすので、 `SPC h` にバインドしていた
helm 系のコマンドは他へ移して、 `SPC h` は help に統一することに
しましたよ、と。

ivy の説明がほとんどないけど、 ivy は使わないからいいや。
余計なものがいっぱいヒットしてきて嫌いなんだよね...

> - `SPC h l` for `helm-resume` is now `SPC r l`

ｶﾞ━━(;ﾟДﾟ)━━ﾝ!! めちゃめちゃ使ってたよ...慣れるしかないね...

`SPC r` は resume とか register がまとめてあるところらしい。

### The `git` related commands have been drastically simplified to leverage the `magit` dispatch menu.

ふーん、ディスパッチメニューなんてものがあったのね。 `SPC g m` で
出せますよ、と。

`SPC g s`(`magit-status`) してから、直接 `b c`(Checkout new branch)
とか `p p`(Push) とかしてたので、あまり使わなさそうな気が...

### Spacemacs layouts now restrict the scope of the buffer list opened with `SPC b b`

レイアウトの中でバッファ一覧を出すと全バッファが出ちゃってたんだけど、
レイアウト内のバッファのみに限定しますよ、と。

ごもっともですねぇ。でも、だいたい helm で用事済んでるから影響なし。

### `micro-states` in Spacemacs are dead, say hi to the `transient-states`

`micro-states` は `transient-states` に置き換えますよ、と。

軽く使ってみたけど、使い心地変わらないから良いんじゃないですかねー。

# What's new ?

## Startup improvments

起動時間が 20-25% 減りましたよ、と。

一回起動したら1週間は起動しっぱなしなので、どうでも良いです。

## Improved composability

`spacemacs` の機能を `spacemacs` ディレクトリ以下に
分割整理したので、自由に取捨選択できますよ、と。

だいたい全部使ってるからどうでもいいかなー。

## Improved stability

`elpa` のミラーを作って、 `elpa` が落ちてた時は
fallback するようにしましたよ、と。

あんまり困ってないかなー。

## Lazy installation of layers

`.ex` を初めて開いた時に、`elixir` レイヤーをインストールできるように
したけど、デフォルトでは OFF ですよ、と。

自分がどういう機能を使うかはだいたい事前にわかってるし、
ファイルを開こうとした瞬間にダウンロード、コンパイル、インストールが走って
待たされるのはあんまり嬉しくなさそう。

## A better hybrid editing style

Hybrid スタイルでの挙動を少し向上させましたよ、と。

> - `hybrid-mode-enable-hjkl-bindings`, if non nil navigation on `hjkl` keys is enabled (for instance in `helm` or `ivy` buffers),

はちょっと嬉しいかもしれない。helm を起動したときに、「あれ？ここでのカーソル移動どうやってやるんだろう？」って迷うことがあったので。

## Support for Ivy

ふーん、 Ivy 勢力って結構居るのねぇ...

## Better transient-states

前述しましたね。

## More debugging tools

設定ファイルなどでエラーしたときや、速度計測などのツールを
充実させましたよ、と。

ほとんど困ってないので、必要になったら使わせて頂きます。

## New keyboard layouts

`keyboard-layout` レイヤーを追加して、 `bépo` や `dvorak` を
使えるようにしましたよ、と。

一部の人には便利そう。

## Directory and file local variables

例えば、 ruby モードを使っているときに、プロジェクトによって rspec を使ってたり、 testunit を使ってたりする、という状況の話。

従来の spacemacs だと
「ruby-mode では rspec を使います！」っていうグローバルな設定しかできなかった
んだけど、 0.200 からは「プロジェクトXではrspec、プロジェクトYではtestunit」
を使える（テスト実行するキーを叩いたときに、適切なコマンドを
起動してテストを実行してくれる）ようになりましたよ、と。私はだいたい rspec で
統一してるので、そんなにこの辺で困ったことないんですが、必要になりそうな
場面は容易に想像つきます。

## More useful abstraction

タグジャンプをするツールがいろいろあるんだけど、 どのツールを使っていても
同一の操作方法で使えるように抽象化しましたよ、と。

## New welcome screen

起動画面がちゃんと真ん中に表示されるようにしたり、
フッターをつけるようにしましたよ、と。これのことかな？

![スクリーンショット 2016-10-09 13.55.58.png](https://qiita-image-store.s3.amazonaws.com/0/30009/d6e23000-4324-6892-e651-f31cfc71c246.png)


また、agenda や todo を表示できるようにもしましたよ、と。

## About Spacemacs update notifications

新バージョンのチェックを起動時と、起動後は6時間ごとにしてたけど、
GitHub へ負荷をかけすぎていたので、6時間チェックは止めたり、
多くても1日に1回しかチェックしないような仕組みを入れましたよ、と。

## A new community document

`COMMUNITY.org` にユーザーやコントリビューターのルールを明文化しましたよ、と。

## The Spacemacs shop

Tシャツを買うことで、Spacemacsへの支持を表明できますよ、とw

[Spacemacs Shop](https://shop.spreadshirt.com/spacemacs-shop)

パーカーちょっと欲しいw

# What's next ?

## Even more stability

`elpa` の安定したスナップショットを用意して気軽にバージョンアップしたり
ロールバックしたりできるようにしますよ、と。

## More consistent window behaviour

[emacs-purpose](https://github.com/bmag/emacs-purpose)
を統合しますよ、と。

これは楽しみ。

## New layers

新しいレイヤーのPRは、レビューに時間がかかるので優先度低くしてきたんだけど、
0.201 では新レイヤーの優先度を高めてレイヤーをいっぱい増やしますよ、と。

# A few thanks

感謝。

# さいごに

レイヤーの定義などは結構変わってる印象を受けたので、
0.1xx から移行する人は、今一度 layers フォルダ一通り眺めて
`.spacemacs` をゼロから作り直した方が良いかもしれないですねー。

私は 0.105 の `.spacemacs` のままだと `SPC SPC`(`M-x`) が動きませんでした。

ちなみに私の環境は以下です。
- OSX el capitan
- Emacs 25.1.1 (brew tap railwaycat/emacsmacport)
- spacemacs 0.200