[mew-dist 26611] Re: 検索
Shuichi KITAGUCHI
ki at example.com
2005年 9月 19日 (月) 23:50:45 JST
北口です。
今頃ですが...
> Spotlight、Google Desktop、Namazu が使えるようになっています。
>
> k? k/ km kM
> Spotlight ○ ○ ○ ○
> Google Desktop × ○ × ○
> Namazu ○ × ○ ×
>
> 注:Google Desktop の "kM" は、gdsgrep.rb を登録するだけです。CPU が使わ
> れないときにインデックスが作成されます。
の、Google Desktop Searchの方が、
・COMコンポーネントの登録を行なうだけになっていて、インデックス作成処理を
kickしていない。
・検索ができない。
のようだったので、以下の修正を行なったパッチを添付します。
・インデックス作成関数追加(mew-google-register()をmew-google-index-all()
に改名)。
終了はとてもじゃないけど待てないので、非同期に実行させています。
(本当は終了を確認すべきでしょうが、とりあえずそこまではなし)
・1フォルダのみのインデックス作成関数(mew-google-index-folder())を追加。
・gdsgrep.rbの出力結果に "^M" が付いているので、これを正規表現で弾いて
しまって検索ができていなかったのを修正(mew-search-virtual-with-google())。
coding-system周りを直せば良いのかもしれませんが、以前調べた時によく
わからなかったのでworkaroundで逃げてます。
・COMコンポーネントの登録&解除関数を追加。
とりあえず、キー割り当てはしてません。
--
Shuichi Kitaguchi // kit at example.com / ki at example.com
-------------- next part --------------
Index: mew-search.el
===================================================================
RCS file: /cvsmew/mew/mew-search.el,v
retrieving revision 1.13
diff -u -r1.13 mew-search.el
--- mew-search.el 6 Sep 2005 09:08:36 -0000 1.13
+++ mew-search.el 19 Sep 2005 14:35:23 -0000
@@ -20,15 +20,18 @@
`((spotlight "Spotlight" ,mew-prog-spotlight
mew-search-with-spotlight mew-search-virtual-with-spotlight
mew-spotlight-index-folder mew-spotlight-index-all
- mew-pick-canonicalize-pattern-spotlight)
+ mew-pick-canonicalize-pattern-spotlight
+ nil nil)
(google "Google" ,mew-prog-google
nil mew-search-virtual-with-google
- nil mew-google-register
- mew-pick-canonicalize-pattern-google)
+ mew-google-index-folder mew-google-index-all
+ mew-pick-canonicalize-pattern-google
+ mew-google-register mew-google-unregister)
(namazu "Namazu" ,mew-prog-namazu
mew-search-with-namazu nil
mew-nmz-index-folder nil
- mew-pick-canonicalize-pattern-namazu)))
+ mew-pick-canonicalize-pattern-namazu
+ nil nil)))
(defun mew-search-get-list (func)
(let ((sw mew-search-switch)
@@ -66,6 +69,12 @@
(defun mew-search-get-func-canonicalize-pattern (ent)
(nth 7 ent))
+(defun mew-search-get-func-register (ent)
+ (nth 8 ent))
+
+(defun mew-search-get-func-unregister (ent)
+ (nth 9 ent))
+
(defvar mew-search-method (car (mew-search-get-list 'mew-search-get-key)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -165,6 +174,26 @@
(funcall func)
(message "This command cannot be used")))))
+(defun mew-summary-search-register ()
+ (interactive)
+ (if (not mew-search-method)
+ (message "No search method")
+ (let* ((ent (mew-search-get-ent mew-search-method))
+ (func (mew-search-get-func-register ent)))
+ (if (not (fboundp func))
+ (message "This command cannot be used")
+ (funcall func)))))
+
+(defun mew-summary-search-unregister ()
+ (interactive)
+ (if (not mew-search-method)
+ (message "No search method")
+ (let* ((ent (mew-search-get-ent mew-search-method))
+ (func (mew-search-get-func-unregister ent)))
+ (if (not (fboundp func))
+ (message "This command cannot be used")
+ (funcall func)))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Spotlight
@@ -269,7 +298,7 @@
(defun mew-search-virtual-with-google (pattern)
(let* ((path (mew-expand-folder mew-folder-local))
(mail-regex (regexp-quote (file-name-as-directory path)))
- (regex (concat "^" mail-regex "\\(.*\\)/" "\\([0-9]+\\)$"))
+ (regex (concat "^" mail-regex "\\(.*\\)/" "\\([0-9]+\\)"))
(file (mew-make-temp-name))
(prev "") (rttl 0)
crnt)
@@ -289,14 +318,35 @@
(write-region (point-min) (point-max) file nil 'no-msg))
(list file rttl)))
-(defun mew-google-register ()
- "Register Google component"
+(defun mew-google-index-folder (folder)
+ "Make Google index for this folder."
+ (interactive)
+ (let* ((ent (mew-search-get-ent mew-search-method))
+ (prog (mew-search-get-prog ent)))
+ (start-process prog nil prog "-m" "-i" (mew-expand-folder folder))
+ (message "Google indexing for %s in background..." folder)))
+
+(defun mew-google-index-all ()
+ "Make Google index for all folders."
(interactive)
(let* ((ent (mew-search-get-ent mew-search-method))
(prog (mew-search-get-prog ent)))
- (message "Registering Google component...")
- (call-process prog nil nil nil "-R")
- (message "Registering Google component...done")))
+ (start-process prog nil prog "-m" "-r" "-i" (mew-expand-folder "+"))
+ (message "Google indexing for all folders in background...")))
+
+(defun mew-google-register ()
+ "Register Google component"
+ (interactive)
+ (message "Registering Google component...")
+ (call-process mew-prog-google nil nil nil "-R")
+ (message "Registering Google component...done"))
+
+(defun mew-google-unregister ()
+ "Unregister Google component"
+ (interactive)
+ (message "Unregistering Google component...")
+ (call-process mew-prog-google nil nil nil "-U")
+ (message "Unregistering Google component...done"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
Mew-dist メーリングリストの案内