[mew-dist 26597] Re: Mew 4.3 に向けて

HASHI Hiroaki hasi at example.com
2005年 9月 13日 (火) 20:10:53 JST


橋です。

> Namazu の改良もマージしたいですが、間に合わなければ Mew 4.4 で、
> ですね。

"k/"が動かないと非常に困るので、動くようにしてみました。

やったこと
  - "k/"でnamazuを使用可能に。
  - "k?","k/"のpattern入力時の補完をmew-nmzと同じに。(現在のメールのヘッ
    ダの値を元に補完リストを作る)
  - "k/"で検索対象のフォルダ名の入力を可能に(namazuの時だけ、pattern入
    力した後にフォルダ名を聞いてくる)

  user interfaceはなるべくmew-nmzと同じにしたかったので、他のmethodを使っ
  ている時とちょっと違ってしまっています。

やってないこと
  - patternの補完は、namazu以外でも使えるかも。(うるさくなければ)
  - mew-nmz.elのいらなくなったコードの削除

namazu以外の検索engineでは試してません。(変化ないはずです)
-------------- next part --------------
Index: mew-complete.el
===================================================================
RCS file: /cvsmew/mew/mew-complete.el,v
retrieving revision 1.71
diff -u -r1.71 mew-complete.el
--- mew-complete.el	4 Feb 2005 15:50:03 -0000	1.71
+++ mew-complete.el	13 Sep 2005 05:18:15 -0000
@@ -473,6 +473,7 @@
   (let* ((pat (mew-delete-pattern))
 	 (clist (append '("(" "!")
 			mew-pick-field-list
+                        mew-nmz-gather-header-list
 			(mapcar 'car mew-pick-macro-alist))))
     (if (null pat)
 	(mew-complete-window-show clist)
Index: mew-nmz.el
===================================================================
RCS file: /cvsmew/mew/mew-nmz.el,v
retrieving revision 1.28
diff -u -r1.28 mew-nmz.el
--- mew-nmz.el	30 Aug 2005 08:42:38 -0000	1.28
+++ mew-nmz.el	13 Sep 2005 05:18:15 -0000
@@ -98,12 +98,12 @@
   :type '(repeat string))
 
 (defcustom mew-nmz-pick-gather-field-list
-  `((,mew-from: address "+from:" "+to:" "+cc:")
-    (,mew-to: address "+from:" "+to:" "+cc:")
-    (,mew-cc: address "+from:" "+to:" "+cc:")
-    (,mew-message-id: msgid "+message-id:" "+in-reply-to:" "+references:")
-    (,mew-in-reply-to: msgid "+message-id:" "+in-reply-to:" "+references:")
-    (,mew-references: msgid "+message-id:" "+in-reply-to:" "+references:"))
+  `((,mew-from: address "from=" "to=" "cc=")
+    (,mew-to: address "from=" "to=" "cc=")
+    (,mew-cc: address "from=" "to=" "cc=")
+    (,mew-message-id: msgid "message-id=" "in-reply-to=" "references=")
+    (,mew-in-reply-to: msgid "message-id=" "in-reply-to=" "references=")
+    (,mew-references: msgid "message-id=" "in-reply-to=" "references="))
   "*A list of completion keyword from message."
   :group 'mew-nmz
   :type '(repeat (list string
@@ -217,6 +217,8 @@
 			  (t mew-cs-text-for-write))
   "*Coding system to write 'NMZ.field.uri'.")
 
+(defvar mew-nmz-pick-folder-name nil)
+
 (defconst mew-nmz-result-regex
   (concat "^\\(.*\\)" (regexp-quote mew-path-separator) "\\([0-9]+\\)"))
 
@@ -907,7 +909,7 @@
   (mew-input-clear)
   (mew-input-folder-clean-up)
   (let ((map (copy-keymap mew-input-folder-map))
-	(case:folder (concat (or (mew-summary-folder-name) "+")
+	(case:folder (concat (or mew-nmz-pick-folder-name "+")
 			     (if mew-nmz-input-folders-asterisk "*" ""))))
     (define-key map "*" 'mew-input-folder-self-insert)
     (let* ((init (mew-canonicalize-case-folder case:folder))
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	13 Sep 2005 05:18:15 -0000
@@ -26,7 +26,7 @@
      nil mew-google-register
      mew-pick-canonicalize-pattern-google)
     (namazu "Namazu" ,mew-prog-namazu
-     mew-search-with-namazu nil
+     mew-search-with-namazu mew-search-virtual-with-namazu
      mew-nmz-index-folder nil
      mew-pick-canonicalize-pattern-namazu)))
 
@@ -98,6 +98,9 @@
 	   (name (mew-search-get-name ent))
 	   (canon-func (mew-search-get-func-canonicalize-pattern ent))
 	   (folder (mew-pickable-folder))
+           (mew-nmz-gather-header-list (if (eq mew-search-method 'namazu)
+                                           (mew-nmz-pick-pattern-gather-header)
+                                         nil))
 	   pattern msgs)
       (mew-pickable
        (if (not (fboundp func))
@@ -118,6 +121,10 @@
 	   (func (mew-search-get-func-virtual ent))
 	   (name (mew-search-get-name ent))
 	   (canon-func (mew-search-get-func-canonicalize-pattern ent))
+           (mew-nmz-gather-header-list (if (eq mew-search-method 'namazu)
+                                           (mew-nmz-pick-pattern-gather-header)
+                                         nil))
+           (mew-nmz-pick-folder-name (mew-summary-folder-name))
 	   vfolder opattern pattern file opts rttl file-rttl)
       (if (not (fboundp func))
 	  (message "This command cannot be used")
@@ -306,6 +313,29 @@
 (defun mew-search-with-namazu (pattern folder)
   (mew-nmz-multi-pick (list (mew-nmz-expand-folder folder)) pattern nil 'single))
 
+(defun mew-search-virtual-with-namazu (pattern) 
+  (let* ((flds (mew-nmz-input-folders))
+         (file (mew-make-temp-name))
+         (rttl 0)
+         nmzdirs fldmsgs fld msgs path)
+    (mew-nmz-setup)
+    (setq nmzdirs (mew-nmz-flds-to-indexs flds))
+    (setq fldmsgs (mew-nmz-multi-pick nmzdirs pattern nil))
+    (while fldmsgs
+      (setq fld (car (car fldmsgs)))
+      (setq path (mew-path-to-folder (mew-expand-folder fld)))
+      (insert "CD: " path "\n")
+      (setq msgs (cdr (car fldmsgs)))
+      (while msgs
+        (setq rttl (1+ rttl))
+        (insert (car msgs) "\n")
+        (setq msgs (cdr msgs)))
+      (setq fldmsgs (cdr fldmsgs)))
+    (mew-frwlet
+     mew-cs-text-for-read mew-cs-text-for-write
+     (write-region (point-min) (point-max) file nil 'nomsg))
+    (list file rttl)))
+
 (defun mew-nmz-index-folder (folder)
   (mew-nmz-mknmz folder nil 'msg))
 


Mew-dist メーリングリストの案内