From takesi @ teria.com Tue Jun 19 04:33:56 2007 From: takesi @ teria.com (takesi@teria.com) Date: Tue Jun 19 05:07:09 2007 Subject: [migemo] =?iso-2022-jp?b?TWlnZW1vGyRCJE5CJTI7PWhNfRsoQg==?= Message-ID: はじめまして、佐々木毅史というものです。 ながらく migemoを使っていましたが、促音の処理について 疑問 & 改善案があります。 いまは入力した文字列が "s" など子音で終わっている場合、 さ し す せ そ っ と expand_kanas で展開されます。が、これは さ し す せ そ っさ っし っす っせ っそ に展開した方がより候補が絞れてよいのではないでしょうか? 例えば "kas" を入力したときに「勝手」などにマッチしてしまうのは 違和感があります。 そこでちょこっと変更してみました。 問題ないようでしたら取り入れていただければ幸いです。 以上、よろしくおねがいします。 takesi -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: 070618.diff 型: application/octet-stream サイズ: 971 バイト 説明: 無し URL: http://www.namazu.org/pipermail/migemo/attachments/20070618/ea38509b/070618.obj From boochang @ m4.kcn.ne.jp Fri Jun 22 14:08:54 2007 From: boochang @ m4.kcn.ne.jp (M.Fujii) Date: Fri Jun 22 14:37:03 2007 Subject: [migemo] =?iso-2022-jp?b?UmU6IG1pZ2VtbyAbJEJNeE1RO34kThsoQiBpc2Vh?= =?iso-2022-jp?b?cmNoIBskQjBKMzAkThsoQiBsYXp5LWhpZ2hsaWdodCAbJEIkTjVzGyhC?= =?iso-2022-jp?b?GyRCRjAbKEI=?= In-Reply-To: <20050805.182941.10649034.shirai.hideyuki@rdmg.mgcs.mei.co.jp> References: <20050731.115225.262176086.boochang@m4.kcn.ne.jp> <20050805.182941.10649034.shirai.hideyuki@rdmg.mgcs.mei.co.jp> Message-ID: <20070622.140854.01369706.boochang@m4.kcn.ne.jp> 藤井です。 # 2 年前のメールのリプライで恐縮です。 From: Hideyuki SHIRAI (白井秀行) Subject: [migemo] Re: migemo 利用時の isearch 以外の lazy-highlight の挙動 Date: Fri, 05 Aug 2005 18:29:41 +0900 (JST) > 現在、migemo な isearch をするときは、search-forward(), > search-backward() の挙動を migemo-do-isearch の値によって変えて > いますが、このあたりの「やり方」を変えて、半恒久的な対策をした方 > が良いと思っているのですが、まだうまい考えにはたどり着いていませ > ん ^^;;; Emacs 22.1 がリリースされたようなので対応を考えてみました。 私としては、Emacs 22 以降では以下のようにするのが良いと思います。 1. search-forward() 等の挙動を変えるのを止めて isearch-search-fun-function を設定することにする。 2. isearch-search-fun-function を設定するモードでは、 原則として migemo は使用されない。 そのようなモードで migemo を使用したい場合は個別対応する。 なお、Emacs 22.1 標準のモードのうち isearch-search-fun-function を 設定するモードは以下の 4 つのようです。 - hexl-mode - info-mode - longlines-mode - reftex-isearch-minor-mode isearch-search-fun-function を設定するモードは isearch に特殊な振舞いを 追加したいという要望がある訳ですが、この特殊な振舞いと migemo の振舞い をどう折合いを付けるかはそのモードによって異なるはずなので、個別対応し た方が良いのではないかと思います。 個別対応の方針ですが、migemo.el で個別対応の枠組みを提供する必要はなく、 各モードで isearch-search-fun-function に設定される関数に対して defadvice して振舞いを変えるというので十分ではないかと思います。 検討よろしくお願いします。 また、上記のように振舞いを変えるパッチを作成してみました。添付しますの で、試してみてください。 パッチを適用することによって Emacs 22 以降では、migemo.el は以下のよう に変わります。(Emacs 21 以前では振舞いは変わりません) ユーザレベルでの変更: - query-replace で置換される文字列が正しくハイライトされるようになり ました。 - 以下の 4 つのモードでは migemo が無効になるようにしました。 - hexl-mode - info-mode - longlines-mode - reftex-isearch-minor-mode 実装レベルでの変更: - 以下の関数の振舞いを変更しないようにしました。 search-forward, search-backward, isearch-search-and-update, isearch-lazy-highlight-search - migemo-isearch-search-function() を追加しました。 (この関数で isearch の振舞いを変えます) - migemo-init() において isearch-search-fun-function に migemo-isearch-search-function を設定するようにしました。 - 定数 migemo-emacs22p を導入しました。 上記の変更はすべてこの定数で条件分岐しています。 -- 藤井 正行 / Masayuki FUJII -------------- next part -------------- Index: migemo.el.in =================================================================== RCS file: /cvsroot/migemo/migemo/migemo.el.in,v retrieving revision 1.8 diff -u -r1.8 migemo.el.in --- migemo.el.in 22 Sep 2006 08:43:33 -0000 1.8 +++ migemo.el.in 22 Jun 2007 04:55:22 -0000 @@ -155,6 +155,7 @@ (defvar migemo-pattern-alist nil) (defvar migemo-frequent-pattern-alist nil) (defconst migemo-emacs21p (and (> emacs-major-version 20) (not (featurep 'xemacs)))) +(defconst migemo-emacs22p (and (> emacs-major-version 21) (not (featurep 'xemacs)))) (defvar migemo-search-pattern-alist nil) (defvar migemo-do-isearch nil) @@ -211,7 +212,9 @@ (setq migemo-process (migemo-start-process "migemo" migemo-buffer migemo-command options)) (process-kill-without-query migemo-process) - t))) + t)) + (when migemo-emacs22p + (setq isearch-search-fun-function 'migemo-isearch-search-function))) (defun migemo-replace-in-string (string from to) (with-temp-buffer @@ -379,6 +382,19 @@ (delete-region (point) pos) (insert jrpat)))) +(defun migemo-isearch-search-function () + (if (and migemo-isearch-enable-p + (not (or isearch-regexp isearch-word))) + (lambda (string &optional bound noerror count) + (funcall + (if isearch-forward 're-search-forward 're-search-backward) + (if (delq 'ascii (find-charset-string string)) + string + (migemo-search-pattern-get string)) + bound noerror count)) + (let ((isearch-search-fun-function nil)) + (isearch-search-fun)))) + (defun migemo-forward (word &optional bound noerror count) (interactive "sSearch: \nP\nP") (if (delq 'ascii (find-charset-string word)) @@ -511,28 +527,29 @@ ad-do-it (setq migemo-do-isearch nil))) -(defadvice isearch-search-and-update (around migemo-search-ad activate) - "adviced by migemo." - (let ((isearch-adjusted isearch-adjusted)) - (when (and migemo-isearch-enable-p - (not isearch-forward) (not isearch-regexp) (not isearch-word)) - ;; don't use 'looking-at' - (setq isearch-adjusted t)) - ad-do-it)) +(unless migemo-emacs22p + (defadvice isearch-search-and-update (around migemo-search-ad activate) + "adviced by migemo." + (let ((isearch-adjusted isearch-adjusted)) + (when (and migemo-isearch-enable-p + (not isearch-forward) (not isearch-regexp) (not isearch-word)) + ;; don't use 'looking-at' + (setq isearch-adjusted t)) + ad-do-it)) -(defadvice search-forward (around migemo-search-ad activate) - "adviced by migemo." - (if migemo-do-isearch - (setq ad-return-value - (migemo-forward (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3))) - ad-do-it)) + (defadvice search-forward (around migemo-search-ad activate) + "adviced by migemo." + (if migemo-do-isearch + (setq ad-return-value + (migemo-forward (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3))) + ad-do-it)) -(defadvice search-backward (around migemo-search-ad activate) - "adviced by migemo." - (if migemo-do-isearch - (setq ad-return-value - (migemo-backward (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3))) - ad-do-it)) + (defadvice search-backward (around migemo-search-ad activate) + "adviced by migemo." + (if migemo-do-isearch + (setq ad-return-value + (migemo-backward (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3))) + ad-do-it))) ;; Turn off input-method automatically when C-s or C-r are typed. (defadvice isearch-mode (before migemo-search-ad activate) @@ -572,6 +589,9 @@ (when migemo-emacs21p (put-text-property 0 (length str) 'face migemo-message-prefix-face str)) (when (and migemo-isearch-enable-p + (or (not migemo-emacs22p) + (eq isearch-search-fun-function + 'migemo-isearch-search-function)) (not (or isearch-regexp isearch-word))) (setq ad-return-value (concat str " " ret))))) @@ -609,7 +629,8 @@ (window-start))) t))) -(when (fboundp 'isearch-lazy-highlight-search) +(when (and (not migemo-emacs22p) + (fboundp 'isearch-lazy-highlight-search)) (defalias 'isearch-lazy-highlight-search 'migemo-isearch-lazy-highlight-search)) ;;;; for isearch-highlightify-region (XEmacs 21) From shirai @ meadowy.org Tue Jun 26 11:24:46 2007 From: shirai @ meadowy.org (Hideyuki SHIRAI (=?iso-2022-jp?B?GyRCR3IwZj0oOVQbKEI=?=)) Date: Tue Jun 26 11:30:32 2007 Subject: [migemo] =?iso-2022-jp?b?UmU6IE1pZ2VtbxskQiROQiUyOz1oTX0bKEI=?= In-Reply-To: References: Message-ID: <20070626.112446.202919189.shirai.hideyuki@rdmg.mgcs.mei.co.jp> 白井です。 # migemo ML にメール書くのって、最近、年に一回ペースですね :-) From: takesi@teria.com さん曰く Subject: [migemo] Migemoの促音処理 Message-ID: Date: Mon, 18 Jun 2007 12:33:56 -0700 > いまは入力した文字列が "s" など子音で終わっている場合、 > さ し す せ そ っ > と expand_kanas で展開されます。が、これは > さ し す せ そ っさ っし っす っせ っそ > に展開した方がより候補が絞れてよいのではないでしょうか? > 例えば "kas" を入力したときに「勝手」などにマッチしてしまうのは > 違和感があります。 ぼくもすごくそう思います。 > そこでちょこっと変更してみました。 > 問題ないようでしたら取り入れていただければ幸いです。 一週間程使ってみました。素晴らしいです。が、手元の migemo は全然 オリジナルと違っちゃっているので、コミットは暫くお待ち下さい (__) オリジナルと違っていて、辞書を作るところだとこれかな?アルファベッ ト一文字は要素(?)から外しています。効能は、例えば、isearch を "kas" の "k" の上で始めて、C-d を何回か押すとわかります。 migemo-convert.rb ..... words = $2.split('/').map {|x| # remove annotations and elisp codes x.sub(/;.*/, "").sub(/^\((\w+)\b.+\)$/, "") }.delete_if {|x| x == "" || x =~ /^[a-z]$/i} ..... P.S. 「Emacs "shy group" 対応と Emacs による連文節対応」 http://www.namazu.org/pipermail/migemo/2005-June/000020.html をコミットしてしまおうかと思う今日この頃。 ## 止めるなら今のうちです :-) -- 白井秀行 (mailto:shirai@meadowy.org) From shirai @ meadowy.org Tue Jun 26 11:30:14 2007 From: shirai @ meadowy.org (Hideyuki SHIRAI (=?iso-2022-jp?B?GyRCR3IwZj0oOVQbKEI=?=)) Date: Tue Jun 26 11:30:32 2007 Subject: [migemo] =?iso-2022-jp?b?UmU6IG1pZ2VtbyAbJEJNeE1RO34kThsoQiBpc2Vh?= =?iso-2022-jp?b?cmNoIBskQjBKMzAkThsoQiBsYXp5LWhpZ2hsaWdodCAbJEIkTjVzGyhC?= =?iso-2022-jp?b?GyRCRjAbKEI=?= In-Reply-To: <20070622.140854.01369706.boochang@m4.kcn.ne.jp> References: <20050731.115225.262176086.boochang@m4.kcn.ne.jp> <20050805.182941.10649034.shirai.hideyuki@rdmg.mgcs.mei.co.jp> <20070622.140854.01369706.boochang@m4.kcn.ne.jp> Message-ID: <20070626.113014.133005021.shirai.hideyuki@rdmg.mgcs.mei.co.jp> 白井です。 From: "M.Fujii" さん曰く Subject: [migemo] Re: migemo 利用時の isearch 以外の lazy-highlight の挙動 Message-ID: <20070622.140854.01369706.boochang@m4.kcn.ne.jp> Date: Fri, 22 Jun 2007 14:08:54 +0900 (JST) > # 2 年前のメールのリプライで恐縮です。 ## とぉ〜〜〜い目。。。 > From: Hideyuki SHIRAI (白井秀行) > Subject: [migemo] Re: migemo 利用時の isearch 以外の lazy-highlight の挙動 > Date: Fri, 05 Aug 2005 18:29:41 +0900 (JST) > > 現在、migemo な isearch をするときは、search-forward(), > > search-backward() の挙動を migemo-do-isearch の値によって変えて > > いますが、このあたりの「やり方」を変えて、半恒久的な対策をした方 > > が良いと思っているのですが、まだうまい考えにはたどり着いていませ > > ん ^^;;; > > Emacs 22.1 がリリースされたようなので対応を考えてみました。 > > 私としては、Emacs 22 以降では以下のようにするのが良いと思います。 > > 1. search-forward() 等の挙動を変えるのを止めて > isearch-search-fun-function を設定することにする。 あぁ、これはまったく考え付きませんでした。素晴らしい。 > 2. isearch-search-fun-function を設定するモードでは、 > 原則として migemo は使用されない。 > そのようなモードで migemo を使用したい場合は個別対応する。 > > なお、Emacs 22.1 標準のモードのうち isearch-search-fun-function を > 設定するモードは以下の 4 つのようです。 > - hexl-mode > - info-mode > - longlines-mode > - reftex-isearch-minor-mode 前に調べたときは hexl-mode と info-mode だけだったのですが、増え ましたね。 > isearch-search-fun-function を設定するモードは isearch に特殊な振舞いを > 追加したいという要望がある訳ですが、この特殊な振舞いと migemo の振舞い > をどう折合いを付けるかはそのモードによって異なるはずなので、個別対応し > た方が良いのではないかと思います。 > > 個別対応の方針ですが、migemo.el で個別対応の枠組みを提供する必要はなく、 > 各モードで isearch-search-fun-function に設定される関数に対して > defadvice して振舞いを変えるというので十分ではないかと思います。 > > 検討よろしくお願いします。 > > また、上記のように振舞いを変えるパッチを作成してみました。添付しますの > で、試してみてください。 へい、もう一通のメールに書いてある理由でちょっと手間がかかるので すが、試してみて(藤井さんっていうぐらいで問題ないでしょうから)コ ミットするまでやってみます。 -- 白井秀行 (mailto:shirai@meadowy.org)