Spacemacsに乗り換えてみた（３）レイヤー編

# はじめに

- ``Spacemacs``の``レイヤー機能``を使ってみる
- 「レイヤー編」とはタイトル詐欺かもしれない・・・自作レイヤーの作り方ではなく、既存のレイヤーの設定について書いた
- まずはじめに``Twitter``を使ってみる


# レイヤーを追加する方法

- [Layer List](http://spacemacs.org/layers/LAYERS.html)から使いたいレイヤーを選択肢、そのドキュメントを読む
- 基本的にはレイヤー名を``~/.spacemacs``の``dotspacemacs-configuration-layers``に追加し、必要な設定は``dotspacemacs/user-config``に記述すればOK（なはず）

```emacs-lisp:dotspacemacs/layers()
(defun dotspacemacs/layers ()
  "Configuration Layers declaration.
You should not put any user code in this function besides modifying the variable
values."
  (setq-default
   dotspacemacs-distribution 'spacemacs
   dotspacemacs-enable-lazy-installation 'unused
   dotspacemacs-ask-for-lazy-installation t
   dotspacemacs-configuration-layer-path '()
   dotspacemacs-configuration-layers
   '(
     ;; ----------------------------------------------------------------
     ;; Example of useful layers you may want to use right away.
     ;; Uncomment some layer names and press <SPC f e R> (Vim style) or
     ;; <M-m f e R> (Emacs style) to install them.
     ;; ----------------------------------------------------------------
     spell-checking
     syntax-checking
     better-defaults
     ibuffer
     smex
     auto-completion
     ivy
     c-c++
     csv
     emacs-lisp
     html
     ipython-notebook
     python
     shell-scripts
     yaml
     git
     version-control
     markdown
     chrome
     pandoc
     twitter
     (latex :variables
            latex-build-command "ptex2pdf -l"
            )
     (mu4e :variables
           mu4e-installation-path "/usr/local/Cellar/mu/1.0/share/emacs/site-lisp/mu/mu4e/")
     ;; org
     ;; (shell :variables
     ;;        shell-default-height 30
     ;;        shell-default-position 'bottom)
     )
   dotspacemacs-additional-packages '()
   dotspacemacs-frozen-packages '()
   dotspacemacs-excluded-packages '()
   dotspacemacs-install-packages 'used-only))
```

# Twitterの設定

```emacs-lisp:twitter
  twitter
```

- レイヤー名``twitter``を追記し、``SPC f e R``で``dotspacemacs``を再読込みする
- ``SPC a t``でTwitter（``twit``）を起動する


| キー | コマンド | 動作 |
|:-----:|-----|-----|
| ``SPC a t`` | ``twit`` | ``twit``を起動 |
| ``V`` | ``twittering-visit-timeline`` | タイムラインの切り替え（候補が表示されるので選択すればOK） |
| ``v`` | ``twittering-other-user-timeline`` | 選択しているユーザのタイムラインを表示 |
| ``g`` | ``twittering-current-timeline`` | 現在のタイムラインを更新 |
| ``q`` | ``twittering-kill-buffer`` | 現在のバッファを消去 |
| ``C-c C-s`` | | 新規ツイートを作成（``C-c C-c``で投稿／``C-c C-k``でキャンセル）

- ``twit``のドキュメントを読むと、新規ツイートの作成は``u``でもできるはずだけど、``Spacemacs``では``update``に取られているのでできなくなっている（なので``C-c C-s``を使うしかない）


## ``twit``起動時の詳細

- ``SPC a t``で``twit``を起動する
- 特に何も設定していない場合、ミニバッファに``Open authorization URL with browser? (using 'browse-url') (y or n)``と表示されるので``y``と答える
- ブラウザが起動するので``Authorize app``をクリックし、表示されるPINコードをコピー
- ``Spacemacs``のミニバッファに``Input PIN code:``と表示されているので、上記のコードをペースト
- 認証に成功すると``Spacemacs``で``Twitter``のタイムラインが表示される
- 操作に困ったときは``?``を押して、キーバインドを表示すればOK

# タイムラインの切り替え

- ``V``で表示するタイムラインを切り替えられるが、Twitter APIが古くて使えないものもあった

| コマンド | 動作 |
|:----- |-----|
| ``:direct_message_events`` | DM一覧 |
| ``:direct_messages`` | |
| ``:direct_message_sent`` | |
| ``:favorites`` | ♥したツイート一覧 |
| ``:friends`` | フォローしてる人のツイート一覧 |
| ``:home`` | |
| ``:mentions`` | 自分がメンションされたツイート一覧 |
| ``:public`` | not supported in the Twitter REST API v1.1 |
| ``:replies`` | リプ一覧（``:mentions``と一緒？） |
| ``:retweeted_by_me`` | not supported in the Twitter REST API v1.1 |
| ``:retweeted_by_user/USERNAME`` | not supported in the Twitter REST API v1.1 |
| ``:retweeted_to_me`` | not supported in the Twitter REST API v1.1 |
| ``:retweeted_to_user/USERNAME`` | not supported in the Twitter REST API v1.1 |
| ``:retweets_of_me`` | RTされた自分のツイート一覧？ |

# パッケージを追加する方法

- 一時的にパッケージを追加するには``M-x package-list-package``などを使ってインストールする
- しかし、この場合、``Emacs``を再起動した時に``Orphan package``だと判断され、アンインストールされてしまう
- ずっと使いたいパッケージは ``dotspacemacs-additional-packages``の中に追記する

```emacs-lisp
;; List of additional packages that will be installed without being
;; wrapped in a layer. If you need some configuration for these
;; packages, then consider creating a layer. You can also put the
;; configuration in `dotspacemacs/user-config'.
dotspacemacs-additional-packages
   '(
     ez-query-replace
     visual-regexp
     )
```
- とりあえず文字列を置換するコマンドの便利パッケージを追加した
- ところで、置換のキーバインドはデフォルトで``M-%``でなのだけれど、入力しにくいので``Esc -> %``で代用していた。``Spacemacs``では``Esc``を入力した時点でモードが変更されるため、この代用キーバインドが使えなくなってしまい、ちょっと不便


# 目次

1. [Spacemacsに乗り換えてみた（１）導入編](https://qiita.com/shotakaha/items/da1282327f0dbc1b6289)
2. [Spacemacsに乗り換えてみた（２）キーバインド編](https://qiita.com/shotakaha/items/bba69546c6cd43ed4927)
3. [Spacemacsに乗り換えてみた（３）レイヤー編](https://qiita.com/shotakaha/items/364fca7d09596d636a8b)
4. [Spacemacsに乗り換えてみた（４）ウェブ制作編](https://qiita.com/shotakaha/items/dcd11c3afade2f0efb49)
5. [Spacemacsに乗り換えてみた（５）メーラ編](https://qiita.com/shotakaha/items/e2ba10457fa9b8d6e895)
6. Spacemacsに乗り換えてみた（６）LaTeX編（予定）