オッサン仕様CentOS7のEmacsの設定(MarkSet, MewでGmailを読む)

# CentOS7でEmacs
とりあえずEmacsとメールリーダーのMewをInstall済みの環境で話をしています。

Emacsはyumで入ります。

```
$ yum install emacs
```

Mewは各自お調べください。うちではMew-6.7をソースから入れてます。

# MarkSet
CentOS7に日本語環境入れてGUIでEmacsを動作させるすると、MarkSet(Ctrl+SPACE)が使えません。IME (仮名漢字変換)が起動してします。

昔からEmacsを使ってる人間としてはMarkSetが使えないのは死ぬほど辛い。というかCtrl+SPACEにIMEのOn/Offを割り当てた人誰だよ。

IMEを停止しましょう。環境変数XMODIFIERSにおまじないを書けばよいです。ですがこれをデフォルトにしてしまうと他のアプリでIMEが動かなくなります。なのでEmacsのみに反映させる必要あります。以下のWARPPERがおすすめです。

``` bash:/usr/bin/emacs-markset
#!/bin/sh

PROG_NAME=`basename $0`
export XMODIFIERS="@im=none"
exec -a ${PROG_NAME} /usr/bin/emacs-24.3 "$@"

```

以下のコマンドで/usr/bin/emacsを置き換えます。

```
$ chmod +x /usr/bin/emacs-markset
$ update-alternatives --install /usr/bin/emacs emacs /usr/bin/emacs-markset 1
$ update-alternatives --config emacs
   -> 2を選ぶ．
```

おそらくMarkSetが復活したかと思います。

# EmacsでIMEを停止したら日本語入力できないじゃん！

Emacsに標準で組み込まれているIME(名前がよくわからないです)が「Ctrl+\」で起動しますが、これどうも変換精度が悪いです。Anthyを入れましょう。

```
$ yum install epel-release
$ yum install emacs-anthy
```

続いて~/.emacsに以下を加筆をしてください。

``` lisp:~.emacs
; 加筆
(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(setq file-name-coding-system 'utf-8)

(set-input-method nil)
(require 'anthy)
```

これでAnthyがCtrl+\が起動すると思います。

# GMAILが読みたい
メールを読むためにわざわざアプリを起動などしたくありません。Emacsで読みたいですね。

Emacs用のメールリーダーはいくつかありますが、MewとRMAILしか使ったことないんですが、RMAILは調べてないですが、今回はMewで試してみました。

参考文献：
https://qiita.com/taumu/items/5b965d841492aee2211b
https://jedipunkz.github.io/blog/2013/08/12/emacs-mew-gmail/

mewはデフォルトではSSLを話せないのでトンネル用のアプリを入れます。

```
$ yum install stunnel
```

ネットでググるとstunnelの設定が必要なような記載がありますが、CentOS7では特になにも設定せずに動きました(^_^;

続いて、GMAIL側の設定。GMAILのWebから以下の設定を変えてください。

- IMAP機能を有効にしてください。
- 「安全性の低いアプリの許可」を有効にしないと恐らく読めません。

続いて~/.emacsに以下を加筆をしてください。個人的趣味でDCCを設定しています。(一般的なメーラーでのBCCはMewではDCCになります)

``` lisp:~.emacs
; 加筆
; REF: https://www.mew.org/ja/info/release/mew_1.html#Overview
(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)

;; Optional setup (Read Mail menu):
(setq read-mail-command 'mew)

;; Optional setup (e.g. C-xm for sending a message):
(autoload 'mew-user-agent-compose "mew" nil t)
(if (boundp 'mail-user-agent)
    (setq mail-user-agent 'mew-user-agent))
(if (fboundp 'define-mail-user-agent)
    (define-mail-user-agent
      'mew-user-agent
      'mew-user-agent-compose
      'mew-draft-send-message
      'mew-draft-kill
      'mew-send-hook))

; GMAIL設定

; Stunnel
(setq mew-prog-ssl "/usr/bin/stunnel")
; IMAP
(setq mew-proto "%")
(setq mew-imap-server "imap.gmail.com")
(setq mew-imap-user "あなたのID@gmail.com")
(setq mew-imap-auth  t)
(setq mew-imap-ssl t)
(setq mew-imap-ssl-port "993")

(setq mew-smtp-auth t)
(setq mew-smtp-ssl t)
(setq mew-smtp-ssl-port "465")
(setq mew-smtp-user "あなたのID@gmail.com")
(setq mew-smtp-server "smtp.gmail.com")

; パスワードを保存する。
;(setq mew-use-cached-passwd t)

(setq mew-ssl-verify-level 0)

(setq mew-dcc "あなたのID@gmail.com")
(setq mew-from "あなたのID@gmail.com")
```

これでおそらく読めるでしょう(^_^;

あと時たまSSLトンネルを行う「stunnel」のデーモンが残ってる場合があります。以下のような設定をMewを実行しているユーザのCrontabに入れておくと自動的に止めてくれます。（深夜1:35に実行します。この時間にMewを使ってると通信が異常停止しますのでご注意ください。）

```
$ crontab -l
35 1 * * *    kill `pgrep stunnel` > /dev/null 2>&1
```

以上です。