読者です 読者をやめる 読者になる 読者になる

MacのEmacs環境を24に上げたときのメモ

Emacs

はじめに

自分は学生の頃にエディタとしてEmacsを使っていた関係で、すっかりEmacsが馴染んだ体になってしまっています。
Emacs Lispとか大して書けるわけではないのですが、文章やプログラムを書くときはEmacsキーバインドが一番調子よく書けます。プログラムはEmacsキーバインドじゃないと打てない体質になってしまいました *1 。Wordとかに文章をまとめる際でも、まずEmacsで下書きしてからWordに貼り付けることが結構多いです。
というわけで、Winodws環境だろうとMac環境だろうと必ずEmacsは入れるようにしていました。

で、現在は家でも仕事場でもMacを使っているのですが、これまではCarbon Emacsを愛用していました。Mac向けにすごく良くカスタマイズされていて、とても便利に活用させてもらっていたのですが、Emacs22ベースでしかも開発も終了しています。
本家Emacsのバージョンは現在は24まで上がっており、ライブラリ等もそろそろ23以上を前提としたものも増えてきたし、何より本家がCocoa対応したので、そろそろ24を入れてみることにしました。

このエントリではその時のメモ (ほとんど自分の備忘録用ですが) をまとめておきます。Emacsのブログエントリなんてネット上に沢山ありますが、自分のような大してELispが書けるわけでもない中途半端なEmacs使いの視点からの説明って意外と少ないんじゃないかなと思ってエントリしてみることにしました。

基本的に自分もWeb上の様々なエントリを参照しながらセットアップしていったので、参考にしたサイトのURLを示しつつ説明するというスタイルで書いていきます。

ビルド

ビルド済みのバイナリもありますが、自分ははソースコードからビルドしてインストールしました。理由としては一応IMEパッチを当てたかったからです。Cocoa化してからは普通にIMEが使えるようになったそうですが、Emacs側からIMEを触るようなことがもしかしたら必要になることがあるかもしれないので。
まあ、Emacs猛者にはEmacsで日本語入力だったらSKKだろJKと言われそうですが...。

以下のWebサイトを参考にビルドしました。

Emacs24 のインストールと新機能
http://sakito.jp/emacs/emacs24.html

基本的のはこのサイトのこちらの説明に従ってビルドしただけです。
ただし、注意点があります。このビルドにはバージョン 2.65 以上の autoconf が必要です。Macの環境によってはバージョンが不足している可能性があります。自分はここで躓きました。
homebrew等を利用して最新バージョンのautoconfを入手し、シンボリックリンクを張り替える等して新しいバージョンのautoconfを使うようにしてください。
以下に自分がhomebrewを使って最新バージョンのautoconfをインストールしたときのログを貼っておきます。

$ brew install autoconf
$ cd /usr/local/bin
$ ln -s ../Cellar/autoconf/2.69/bin/autoconf autoconf
$ ln -s ../Cellar/autoconf/2.69/bin/autoheader autoheader
$ ln -s ../Cellar/autoconf/2.69/bin/autom4te autom4te
$ ln -s ../Cellar/autoconf/2.69/bin/autoreconf autoreconf
$ ln -s ../Cellar/autoconf/2.69/bin/autoscan autoscan
$ ln -s ../Cellar/autoconf/2.69/bin/autoupdate autoupdate
$ ln -s ../Cellar/autoconf/2.69/bin/ifnames ifnames

ビルドに成功すると、ビルドを行ったディレクトリの nextstep ディレクトリ下に Emacs.app ができあがっているので、これを /Applications ディレクトリにでも持っていきましょう。

キーボード設定

使えるようになったらお次はキーボード設定ですね。~/emacs.d/init.el に設定していった内容を順にメモしていきます。
Carbon EmacsからEmacs23以降に移行した人が一番面食らうのは、Metaキーの割り当てが変わっていることでしょう。以前はCmdキーに割り当てられていたのですが、現在はAlt/Optキーに割り当てられています。Macの純正キーボード等を使っていると、Altキーの位置だと押しにくいので、次のようにして元のようにCmdをMetaに割り当てます。

(setq ns-command-modifier (quote meta))
(setq ns-alternate-modifier (quote super))

ちなみに家のMacではHHKB Professional JPを利用していて、このキーボードだとAltキーも打ちやすい位置に配置されているので、この設定変更は行っていません。:-P

それから個人的に面食らったのが、[Home] [End] キーでこれまではバッファの先頭、末尾に移動していたのが、他のソフトウェアのように行の先頭、末尾に移動するように変わっていた点です。これは次のようにして元の設定で動くように変更しました。

(global-set-key [home] 'beginning-of-buffer)
(global-set-key [end] 'end-of-buffer)

次の設定はバックスラッシュを入力できるようにする設定です。Macユーザーの方はご存じでしょうが、Macでバックスラッシュを入力するためには Alt/Opt-\ と打つ必要があります。ところが、Emacsだと Alt/Opt のキーストロークが奪われてしまうので、設定が必要です。

;; バックスラッシュを入力できるようにする
;(define-key global-map [?\M-\] "\\") ;; Alt/OptキーをMetaキーとして使っている場合
(define-key global-map [?\s-\] "\\") ;; CmdキーをMetaキーとして使っている場合

そして、忘れずにこの設定も。Ctrl-H をバックスペースに割り当てるお約束の設定ですね。

(global-set-key "\C-h" 'backward-delete-char)

フォント設定

フォント設定は苦労しました。まず、デフォルトの状態でも日本語は表示できるのですが、中国語っぽいフォントが割り当てられていて結構見辛いです。で、次の条件の沿うようなフォント設定を色んなWebサイトを参照しながら調べたのですが、なかなか自分の満足する設定が見つかりませんでした。

  • 日本語が読みやすいこと。
  • 半角のフォントと全角のフォントで幅が揃っていること。

特に後者の条件が意外と難しいです。実はCarbon Emacsもこの条件を満たしていませんでした。

色々悩んでいたところ、@さんがこんなドンぴしゃなツイートを!

@さんがRTしたツイートはこちらです。

ここで紹介されているブログエントリは以下です。

MacEmacsフォント設定(Emacs 24.1)
http://d.hatena.ne.jp/shammer/20120811/1344701212

ここで紹介されている設定通りにして、自分の満足する結果が得られました。
ただし、ここで紹介されている方法は、InconsolataフォントとTakaoフォントが導入されていることが前提です。それぞれ以下のWebサイトから入手してください。

Inconsolataフォント
http://www.levien.com/type/myfonts/inconsolata.html

Takaoフォント
https://launchpad.net/takao-fonts

Inconsolataフォントの場合はOTFファイルをダウンロード、Takaoフォントの場合はTTFファイルをダウンロードして、ダブルクリックすれば簡単にインストールできます。

howmの設定

続いて howm の設定です。howmEmacsで断片的なメモを取るときに便利なツールです。仕事等の活動メモはこれで取るようにしています。本当はこういう用途はEvernoteに移行したいのですが、Evernoteのエディタがタコなので、未だにこれを愛用しています。
howm は以下の本家サイトから入手します。

howm: 一人お手軽 Wiki もどき
http://howm.sourceforge.jp/index-j.html

Emacs24で使う場合は必ず最新版の1.4をダウンロードしてください。
自分は次のようにしてビルドしました。

$ ./configure --with-howmdir=/Applications/Emacs.app/Contents/Resources/site-lisp/howm --prefix=$HOME
$ make
$ make install

こうすることで、howm の *.el、*.elc ファイルが Emacs.app の site-lisp 以下にインストールされるようになります。
後は ~/.emacs.d/init.el に次の設定を追加することで完了です。

;; howmの設定
(setq howm-menu-lang 'ja)
(global-set-key "\C-c,," 'howm-menu)
(mapc
 (lambda (f)
   (autoload f
     "howm" "Hitori Otegaru Wiki Modoki" t))
 '(howm-menu howm-list-all howm-list-recent
             howm-list-grep howm-create
             howm-keyword-to-kill-ring))

howm の詳しい使い方については上で紹介した本家サイトを参照してください。
ちなみに、howm で取ったメモは $HOME/howm 以下に保存されていくのですが、自分はこれをDropboxに保存するようにしています (Mac上ではDropboxのパスへのシンボリックリンクにしている) 。

TwitterEmacsから利用する

さて、お次はTwitterEmacsで使いたいですよねえw
最近 TwitteringMode なるEmacsTwitterクライアントとして使えるようにするライブラリがあることを知りました。中々高機能です。

Twittering-mode
http://twmode.sourceforge.net/ja/
TwitteringMode-ja
http://emacswiki.org/emacs/TwitteringMode-ja

基本的には上に挙げた本家サイトからダウンロードを行って、site-lisp 以下に展開すればOKです。
パスワードファイルを暗号化したい場合は gpg が必要です。homebrew などを利用してインストールしておいてください ("brew install gpg" でインストールできます) 。
設定については以下のブログエントリを参考にさせて頂きました。

EmacsTwitter: twittering-modeの設定メモった。
http://fukuyama.co/twittering-mode

自分は次のような設定を ~/.emacs.d/init.el に入れています。

;; twittering-mode読み込み
(require 'twittering-mode)
;; 起動時パスワード認証 *要 gpgコマンド
(setq twittering-use-master-password t)
;; パスワード暗号ファイル保存先変更 (デフォはホームディレクトリ)
(setq twittering-private-info-file "/Users/username/.emacs.d/twittering-mode.gpg")
;; 表示する書式 区切り線いれたら見やすい
(setq twittering-status-format "%i @%s %S %p: \n %T  [%@]%r %R %f%L\n -------------------------------------------")
;; アイコンを表示する
(setq twittering-icon-mode t)
;; 更新の頻度(秒)
(setq twittering-timer-interval 60)
;; ツイート取得数
(setq twittering-number-of-tweets-on-retrieval 200)
;; o で次のURLをブラウザでオープン
(add-hook 'twittering-mode-hook
          (lambda ()
            (local-set-key (kbd "o")
               (lambda ()
                 (interactive)
                 (twittering-goto-next-uri)
                 (execute-kbd-macro (kbd "C-m"))
                 ))))

なお、twittering-private-info-file 変数の設定はフルパスじゃないと自分の環境ではうまく動きませんでした。

ホワイトスペース表示の設定

Emacs23以降では、何とホワイトスペースを視覚化できるようになっています。これは特にプログラマには嬉しい機能ではないでしょうか。
設定は色々あるので、Customize経由で行うことを個人的にはお勧めします。
[Emacs group] - [Convenience] - [Whitespace]グループに設定があります。
[Global Whitespace Mode] を on にすれば有効化されます。結構細かい設定が色々できるので、是非この設定画面の設定項目を一通り眺めてみてください。

ちなみに話が少しずれますが、Emacs24になって嬉しかったことの1つに、Cutomizeの検索機能が付いたことです。

このようにキーワードを入力して検索できるようになりました。Customizeはどこにどんな設定があるのか分かりにくかったので、これはとても便利です!

その他細々とした設定

他にもこんな設定とかも自分は行っています。お好みでどうぞ。
自動的に作られるバックアップファイルがウザいと思う人は結構多いと思っているので、このように別ディレクトリに吐くようにする設定は個人的にお勧めです。

;; 背景を透過に設定
(set-frame-parameter nil 'alpha 85)

;; メニューバーにファイルパスを表示する
(setq frame-title-format
      (format "%%f - Emacs@%s" (system-name)))

;; バックアップファイルの置き場所を指定する
(setq make-backup-files t)
(setq backup-directory-alist
      (cons (cons "\\.*$" (expand-file-name "~/bak"))
            backup-directory-alist))

以上、こんなところでしょうか。大したものではありませんが、少しでも参考になれば。

*1:なので、IDEを選定する第一基準はEmacsキーバインドが使えるか?です