トップ «前の日記(2003-07-23 (Wed)) 最新 次の日記(2003-07-27 (Sun))» 編集

猫熊は燃えつきた?!日記

最近なんにもやっていませんが、なにかやったらこちらに置くようにしています。
2002|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|
2011|09|
2012|02|


2003-07-24 (Thu) 今日も Emacs(で、げんじつとーひ) [長年日記]

大御所/御大

って呼んだら、(日本のEmacs 界隈では)山岡師のことでしょうな、普通。

migemo: ぼくの XEmacs-21.4.11 で落ちる

悔しいのでお昼休みにいろいろためしてみたら こいつが作った正規表現が XEmacs のお気に召さなかったようで、(re-search-forward (migemo-get-pattern "s")) の re-search-forward() で落ちた。
というわけで、山勘で昨日の関数をちょっと変更。もしかすると、migemo.el で定義している replace-regexp-in-string() もだめなのかもしれないので、そっちも replace-in-string() を使うように変更してみたら、快調快調。
(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 でも動くじゃん ^^;;; 昨日は試してもみないで何を勘違いしていたことやら。

migemo: Emacs が落ちる(その2)

これ、どんな環境の人が落ちているのかな?と再度 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 と環境と年齢もね。


書いている人: 白井秀行 (mailto:shirai@meadowy。org)
訪問して下さった人: 今日: 人, 昨日: , 過去: 人 (2007年5月10日から)
RDF Feed