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がおすすめです。
#!/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に以下を加筆をしてください。
; 加筆
(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になります)
; 加筆
; 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
以上です。