[migemo] Emacs "shy group" 対応と Emacs による連文節対応

Hideyuki SHIRAI ( 白井秀行 ) shirai at meadowy.org
Wed Jun 8 17:44:40 JST 2005


白井です。

ずーーと思っていた内容なのですが、migemo-isearch-min-length に触
発されていろいろと改造しました。目玉は

・shy group が使える Emacs のときは \(?: を使う。
 => Zaurus で心持ち軽くなったかも?

・連文節(というか単語の区切り)のパースを Emacs で行なう。
 => 自由にいろいろと出来るように。

・Migemo の isearch 中は一切の大文字小文字の差異を無視するように
  する。
 => 反対の人がいるかしらん。

です。そのため、以下の改造をしました。


1. Ruby Migemo 側
1.1 shy group 対応
 option に "--type emacsshy" を増やしました。

1.2 機能ダウン (申し訳ない (_ _))
 option に "--noparse (-p)" をつけると一切のパースを行ないません。

2. migemo.el 側
1.1 shy group 対応
 migemo.el ロード時に自動的に決定して、"-t emacs" or
 "-t emacsshy" のどちらかを使います。

 キャッシュファイルも混同しちゃうとまずいので、
 昔の Emacs => ~/.migemo-frequent, ~/.migemo-pattern
 今時 Emacs => ~/.migemo-frequent.shy, ~/.migemo-pattern.shy
 としました。

1.2 Emacs によるパース
 migemo-pattern-parser-function で挙動を指定します。

(1) (setq migemo-pattern-parser-function 'migemo-get-pattern-upcase-kugiri)
  大文字で分割する。記号の処理をのぞいてほぼ現在の migemo と同じ
  挙動。これがデフォルト設定。
  
(2) (setq migemo-pattern-parser-function 'migemo-get-pattern-space-kugiri)
  スペースで分割する。ほとんど白井専用か。

(3) (setq migemo-pattern-parser-function 'migemo-get-pattern-1)
  まったく分割しない。Ruby Migemo でも分割しない。

(4) (setq migemo-pattern-parser-function nil)
  Ruby Megemo 側に分割処理をまかす。現在の migemo と同じ挙動。

(5) (setq migemo-pattern-parser-function 'なにかの関数)
  ご自由に。

 となっています。このうち (1), (2) は
 migemo-pattern-separator-regex で指定される記号も分割対象としま
 す。デフォルトは "[.,]" なので、

 hideyuki.shirai => "hideyuki" "." "shirai"

 のように分割します。ただし、その前の文字が一文字のときは前の文
 字にくっつけます。

 h.shirai => "h." "shirai"

 な感じにします。数字も対象に入れた方が良いかも。

1.3 emacs によるキャッシュ
 migemo-use-pattern-alist が nil でも emacs によるキャッシュを有
 効にしました。ただし、nil のときはファイルに保存しません。その
 場限りです。

 これは、1.2 の Emacs 側のパースを使うと、"shiraiHideyuki" と検
 索するときは、

 "shirai" => "shirai" + "h" => "shirai" + "hi" => "shirai" + "hid" 

 のように migemo エンジン?を動かしますが、"shirai" を何度も
 migemo 側で検索しないですませるためです。
 
1.4 isearch 中の大文字/小文字問題
 以前からたまに case が違うと検索できない、という話を聞いていま
 したが、(真面目に ^^;;;) isearch.el を読んで、migemo な isearch
 中は一切の大文字小文字を無視するようにしました。


といった感じの変更内容です。結構大幅かつ勝手に思い込んでいる内容
なので、とりあえず commit しないでパッチとしてつけておきます。
(反対意見などの)ご意見などよろしくです。

## shy group と emacs パースとわけて作れば良かったと、今頃思って
## います ^^:;;

-- 
白井秀行 (mailto:shirai at meadowy.org)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: shy-parse.diff.gz
Type: application/octet-stream
Size: 4775 bytes
Desc: not available
Url : http://www.namazu.org/pipermail/migemo/attachments/20050608/ec00b762/shy-parse.diff.obj


Migemo メーリングリストの案内