Emacs(中略)設定講座 その2「elisp のインストールと設定編」。

追記 この記事を元に書籍が出来ました!

時間と命を削って、より詳細に解説しましたので、Emacs に興味がある人はぜひ一度手に取ってみて下さい。

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

前回は .emacs を作って、install-elisp.el をインストールするところまで紹介しましたが、今回は、更に Elisp をインストールして、色々な設定をするための基礎知識を紹介していきたいと思います。

候補を表示しながら補完する auto-complete.el を install-elisp を使ってインストールする。

まず、簡単に導入できて、設定も楽な auto-complete.el をインストールしてみましょう。

M-x install-elisp-from-emacswiki<RET>auto-complete.el<RET>C-c C-c

M-x は、Meta キー(通常は Alt キー)を押しながら x。すると、下のミニバッファーと呼ばれる所に、M-x と表示されるので、install-elisp-from-emacswiki とタイプします。 はリターンです。C-c は、Ctr キーを押しながら c。C-c C-c なので、Ctr キーを押しながら c で、そのまま Ctr キーを離さず c です。
といっても、実際に全てタイプしなくても、inst あたりで TAB キーを押すと、install-elisp あたりまで補完してくれます。シェルを使った事がある人にはおなじみですね。TAB を連打すると、補完候補一覧が表示されます。
画像を使って解説すると、まず M-x を押した状態で、install-elisp-from-emacswiki と入力したところです。

エンタを押すと、"PageName:" と表示されて、EmacsWikiからインストールしたいページの名前を聞かれるので、

「auto-complete.el」とタイプして、エンタを押しましょう。

elisp ファイルのダウンロードが完了すると、バッファに読み込まれますので、C-c C-c と入力します。
すると、ファイルがバイトコンパイル(Emacsの起動を高速にするためのおまじないです)されて、Emacs の機能として auto-complete.el が利用できる様になります。
何やら少しエラーが表示されたかもしれませんが、これは、byte-compile 時の警告です。まぁ、HTML Varidater の警告みたいなものなので、使う人には関係ありませんのでひとまず無視しましょう。

M-x auto-complete-mode<RET>

とタイプすると、ステータスラインに AC と表示され、auto-complete-mode がオンになります。

auto-complete-mode が起動すると、文字をタイプするだけで、補完できるリストを表示してくれて、文字のタイプが大幅に省略できる様になります。

これは、Emacs Lisp のシンボルの補完リストです。
先ほど、コマンドで auto-complete-mode をオンにしましたが、Emacs を起動するたびにコマンドを実行するのは少々面倒です。というか、実は再起動すると、auto-complete.el は読み込まれないため、何もしないとコマンドすら使えません。
Emacs の最大の利点は、自分好みの環境を作る事が出来るところだと思うので、auto-complete-mode に関する自分好みの設定をしていってみましょう。

auto-complete-mode の設定を .emacs ファイルに書く。

auto-complete-mode に関する設定は、どういった事ができるのか、という事を学ぶ方法は2つあります。
1つは、誰かが書いた auto-complete-mode に関する記事を見つけて学ぶ方法です。これは、非常に分かりやすくて有効ですが、その方法をここで推奨すると、ぜんぜん設定講座にならないので、自分で設定を調べる方法を紹介します。
自分で設定を調べるという2つ目の方法は、ズバリ auto-complete.el を読めです。
xcezx さんも言っていますが、emacs は self documented なアプリケーションですので、基本的な設定に関する情報は全て elisp 内に書く文化となっています。なんで、auto-complete.el にも様々な設定についての解説がコメントに書かれております。
という訳で、auto-complete.el を開いて見てみましょう。

C-x C-f ~/.emacs.d/elisp/auto-complete.el<RET>

開くのが面倒な人は、ウェブ上にあるファイルをブラウザで見ましょう。EmacsWiki: auto-complete.el
ライセンスと簡単な説明の後に、最初の設定が書かれています。

;; To use this extension, locate this file to load-path directory,
;; and add the following code to your .emacs.
;; ------------------------------
;; (require 'auto-complete)
;; (global-auto-complete-mode t)
;; ------------------------------

.emacs に --- で挟まれた2行をあなたの .emacs に追加して下さいとあります。
Emacs は起動時に、.emacs 等の設定ファイルを読み込んで、あなたの書いた設定に従った、あなたのための Emacs を作ってくれます。
1行目の (require 'auto-complete) は、auto-complete.el を読み込んで下さいという指定です。perl で言うところの use みたいな感じ。これで、auto-complete.el に書かれた全ての機能が利用できる様になります。
2行目の (global-auto-complete-mode t) は、色々なメジャーモードで auto-complete-mode が自動的に使える様にするための設定です。global-auto-complete-mode について詳しく知りたい場合は、describe-function を使って調べるができます。describe 系のコマンドについては、xcezx さんの記事をどうぞ。

global-auto-complete-mode is an interactive compiled Lisp function in `auto-complete.el'.
(global-auto-complete-mode &optional arg)

Toggle Auto-Complete mode in every possible buffer.
With prefix arg, turn Global-Auto-Complete mode on if and only if arg is positive.
Auto-Complete mode is enabled in all buffers where `auto-complete-mode-maybe' would do it.
See `auto-complete-mode' for more information on Auto-Complete mode.

global-auto-complete-mode は対話型の関数です。Auto-Complete mode がご利用可能なバッファ全部をトグれます。みたな感じ。トグルっていうのは、オン・オフで切り替えるっていう意味です。
この関数に真(真偽値って奴です)の引数を与えると、オンになります。というわけで、(global-auto-complete-mode t) は global-auto-complete-mode という関数に、t = true という引数を与えて、オンにしている訳です。
t を 1 *1に変えても、もちろんオッケーですが、lisp の慣例として、単に真という引数を与えたい場合は、t に統一している様です。
ここら辺の Lisp に関する詳しい話は、今後の記事でもうちょっと詳しく紹介しますので、とりあえず、この設定は global-auto-complete-mode をオンにしているんだとさえ理解してもらえればオッケーです。
というわけで、上の2行を .emacs に追記して保存して Emacs を再起動すると、auto-complete-mode が、ひとまず利用できる様になっているという訳です。

長くなってきたので、今回はここで纏め。

  • install-elisp を利用して elisp をインストールする。
  • インストールした elisp から設定を調べてみる。
  • .emacs に設定を書いて、再起動で反映させる。

という3点を紹介しました。
auto-complete-mode の設定については、他にも色々な設定がコメントに書かれていますので、続きも読んでみて .emacs に書いてみると良いと思われます。
今回は基礎の操作も説明したので、記事が長くなってしまったので、今後は基礎操作については省略していきたいと思います。Emacs と仲良くしたい素敵なみなさん、お付き合いお願いします。

*1:ていうか、0 以外の数字。文字は t 以外はシンボルとして扱われてしまうので駄目です。' を頭に付ければ文字でもオッケーです(謎)。