わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Cygwin + NTEmacs + C/Migemo

新たに設定中のWindows 7のマシンに,NTEmacs + cmigemoをインストールしました.先に書いておきますが,一部うまく動いていません.

cmigemoのインストール

Cygwinのシェルを起動します.

$ wget http://cmigemo.googlecode.com/files/cmigemo-default-src-20110227.zip
$ unzip cmigemo-default-src-20110227.zip
$ cd cmigemo-default-src
$ chmod +x configure
$ ./configure
$ vim config.mk

(「prefix = /usr/local」の行を編集してパス変更)

$ make cyg

途中で

src/wordbuf.c:118:19: error: ‘INT_MAX’ undeclared (first use in this function)

というエラーが出て,コンパイルに失敗した.そこで,src/wordbuf.cの先頭部に「#include 」を追加しました.

$ make cyg
$ cd dict
$ make utf-8
$ cd ..
$ make cyg-install

Emacs Lisp

http://gist.github.com/457761からmigemo.elをダウンロードして,適当な場所に置きます.
~/.emacsには次の設定をしました.

(when (and (executable-find "インストール先/cmigemo/bin/cmigemo.exe")
           (require 'migemo nil t))
  (setq migemo-command "インストール先/cmigemo/bin/cmigemo.exe")
  (setq migemo-options '("-q" "--emacs" "-i" "\a"))
  (setq migemo-dictionary "インストール先/cmigemo/share/migemo/utf-8/migemo-dict")
  (setq migemo-user-dictionary nil)
  (setq migemo-regex-dictionary nil)
  (setq migemo-use-pattern-alist t)
  (setq migemo-use-frequent-pattern-alist t)
  (setq migemo-pattern-alist-lenght 1000)
  (setq migemo-coding-system 'utf-8-unix)
  (migemo-init)
  ; http://d.hatena.ne.jp/lapis25/20100918/1284775330
  (set-process-query-on-exit-flag migemo-process nil))

; [migemo]isearch で IME をオフにする
; http://www.jaist.ac.jp/~n-yoshi/tips/elisp_tips.html#ime-off
(wrap-function-to-control-ime 'isearch-forward t nil)
(wrap-function-to-control-ime 'isearch-forward-regexp t nil)
(wrap-function-to-control-ime 'isearch-backward t nil)
(wrap-function-to-control-ime 'isearch-backward-regexp t nil)

検索できない

それでNTEmacsを起動*1
C-sで,スクラッチバッファ内の「buffer」にマッチできるか,試すと,最初の「b」を打っただけで,失敗と出ました.

タスク マネージャーを起動して,プロセスを見てみると,cmigemo.exeが起動していないことが分かりました.
NTEmacsでM-x shellを実行しても,出てくるのは,Cygwinのシェルではありません.
パスを追加しました.コントロール パネル>システム>システムの詳細設定>詳細設定(タブ)>環境変数 の順に選び,システム環境変数Pathの先頭に「C:\cygwin\bin;」を挿入します.念のためOS再起動.

それでも検索できない

NTEmacsで,cmigemo.exeが起動するようになりました.しかし先ほどの「b」は依然として失敗します.
検索語を変えてみると,うまくいく場合とダメな場合が見えてきました.b, c, e, n, m ,wから始まるものがダメでした.スクラッチバッファ内に限れば,C-sのあと,空白を打ち,その後にbufferとタイプすれば,マッチしました.
別に問題なく動いているマシンから,辞書ファイルや実行ファイルを転送してそれらに取り替え,起動・検索しても,またNTEmacsをダウングレードしても,事情は変わりませんでした.

*1:runemacs.exeをランチャに登録しています.