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

UbuntuにC/MigemoをインストールしてEmacsで使う

Migemoが便利です。これを使えば、日本語の文字列をいちいち変換することなくインクリメンタル検索できるんです。
例えば「日本語」と検索したい場合、普通なら C-s 日本語 ってやりますが、Migemoを使えば…
f:id:ser1zw:20100825000232p:image
わざわざ C-s 日本語 ってやらなくても、C-s nihongo で済んでしまうんです。便利ですよねー。
今回は、UbuntuEmacsからMigemo(をCで書きなおしたC/Migemo)を使えるようにしてみます。


インストール方法
バージョンは以下の通り


1. SubversionNKFをインストール

$ sudo apt-get install subversion
$ sudo apt-get install nkf


2. 普通にMigemoをインストール
EmacsからMigemoを使うにはmigemo.elが必要なので、とりあえずインストール

$ sudo apt-get install migemo


3. svnでC/Migemoのソースを取ってくる

$ svn co http://cvs.kaoriya.net/svn/CMigemo/trunk/

2011/05/25 追記: リポジトリがGoogle Codeに移ったようです。
ソースコードは下記URLからダウンロードできるようになっています。
http://code.google.com/p/cmigemo/downloads/list


4. ソースの修正
そのままだとmakeしたときに

src/wordbuf.c:118: error: ‘INT_MAX’ undeclared (first use in this function)
src/wordbuf.c:118: error: (Each undeclared identifier is reported only once
src/wordbuf.c:118: error: for each function it appears in.)

っていうエラーが出るので、src/wordbuf.cの12行目あたりに

#include <limits.h>

を追加

編集後のwordbuf.cはこんな感じ

/* vim:set ts=8 sts=4 sw=4 tw=0: */
/*
 * wordbuf.h -
 *
 * Written By:  MURAOKA Taro <koron@tka.att.ne.jp>
 * Last Change: 20-Sep-2009.
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h> /* これを追加 */
#include "wordbuf.h"

#define WORDLEN_DEF 64
・
・
・


5. コンパイルしてインストール

$ cd trunk
$ ./configure
$ make gcc
$ cd dict
$ make utf-8
$ cd ..
$ sudo make gcc-install


6. .emacsに以下を追加
インサイドフラッギング: Migemo(C/Migemo)のインストールで紹介されているのをそのまま使用

(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs"))
(setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict")
(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(setq migemo-coding-system 'utf-8-unix)
(load-library "migemo")
(migemo-init)

これでC-sしたときにMigemoが有効になるはず。上のスクリーンショットみたいに、ミニバッファが [Migemo] I-search: になっていればOK。


まとめ
やっぱEmacsかわいいよEmacs


参考


おまけ
typoなさってる件
f:id:ser1zw:20100824233656p:image