って呼んだら、(日本のEmacs 界隈では)山岡師のことでしょうな、普通。
(cond
((fboundp 'replace-in-string)
(defalias 'my-replace-in-string 'replace-in-string))
(t
(defun my-replace-in-string (str regex replace)
(when (stringp str)
(let ((start 0)
(len (length replace)))
(save-match-data
(while (setq start (string-match regex str start))
(setq str (concat (substring str 0 (match-beginning 0))
replace
(substring str (match-end 0))))
(setq start (+ start len))))))
str)))
(setq migemo-after-conv-function 'migemo-add-zenkaku-pattern)
(defun migemo-add-zenkaku-pattern (word pattern)
(let ((zenup (japanese-zenkaku (upcase word)))
(zendown (japanese-zenkaku (downcase word)))
(len (length word))
(i 0)
(zenkaku "")
upchar downchar)
(while (< i len)
(setq upchar (aref zenup i))
(setq downchar (aref zendown i))
(if (eq upchar downchar)
(setq zenkaku (format "%s\a%c" zenkaku upchar))
(setq zenkaku (format "%s\a[%c%c]" zenkaku downchar upchar)))
(setq i (1+ i)))
(if (= len 1)
(setq pattern (format "%s\\|%s" pattern (substring zenkaku 1)))
(setq pattern (format "\\(%s\\)\\|\\(%s\\)" pattern (substring zenkaku 1))))
(my-replace-in-string pattern "\a" migemo-white-space-regexp)))
これ、XEmacs でも動くじゃん ^^;;; 昨日は試してもみないで何を勘違いしていたことやら。
これ、どんな環境の人が落ちているのかな?と再度 2ch を見に行ったら、すでに Emacs part.8 って消えちゃっているのですね。2ch ってそういうものなのか。。。
従来の migemo と 0.40 で一番変わったところは、'^G' を white space を表現するコードとして (rubyな)migemo に出力させて、そいつを elisp で migemo-white-space-regexp に置き換えるところだと思うので、落ちちゃう人は
(1) (setq hoge (migemo-get-pattern "s")) で落ちる。(使う文字は "s" とか "t" が良いと思う)
(2) (re-search-forward hoge) or (re-search-backward hoge) で落ちる。
(3) うんにゃ、連打しなければ大丈夫。
(4) 良く考えたら "C-r" のときに落ちるみたい。(処理が変わったのでありうる)
(5) (setq migemo-options '("-S" "migemo" "-t" "emacs")) したら落ちないぞ。
ぐらいをすべからく実験し報告すべし。Emacs の Version と環境と年齢もね。