[Mew-dist 07484] Re: namazu.el for mew

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
1999年 2月 17日 (水) 13:07:35 JST


From: Takeshi ITOH <titou at example.com> さん曰く
Subject: [Mew-dist 07225] namazu.el for mew
Message-ID: <19990121015038V.titou at example.com>
Date: Thu, 21 Jan 1999 01:56:53 +0900

伊藤> namazu[1]を使って ~/Mail 以下を検索できるようにしています。Emacsの
伊藤> インターフェースとして namazu.el が提供されていますが、これを mew
伊藤> と連携できるように考えてみました。

namazu をインストールして使ってみました。最初に INDEX を作るのに
18時間!! 程かかりましたが、とっても便利です。m(__)m

# その後は、cron で夜中に mknmz しています。15 分ぐらいかな?

あと、folder の指定と、出力の sort もできると最高ですね。

伊藤> 1.mew をあらかじめ起動しておく必要がある。
伊藤> 2.mew-summary-goto-folder したときに Summary の更新がかかりRage: (update)が
伊藤>   聞かれてしまう(場合がある)。ただ単に目的のメッセージを表示するにはど
伊藤>   うしたらよいか。

Range を聞かれるだけなら良いのですが、goto-folder した瞬間に
summary に存在していない Message だとダメですね。1. と 2. でこん
なのはどうですか。

(defun namazu-mew-folder ()
  "show pointed message at mew summary"
  (interactive)
  (if (re-search-forward namazu-output-url-pattern-mew nil t)
      (let ((folder (buffer-substring (match-beginning 1) (match-end 1)))
	    (message (and (match-beginning 2)
			 (buffer-substring 
		  (match-beginning 2) (match-end 2)))))
	(setq namazu-mew-window-config (current-window-configuration))
	(beginning-of-line)
	(sit-for 0)
	(if (or (not (boundp 'mew-mail-path))
		(null mew-mail-path))
	    (mew))
	(mew-summary-goto-folder nil (concat "+" folder))
	(while (processp mew-summary-buffer-process)
	  (sit-for 1))
	(mew-summary-jump-message message)
	(mew-summary-show))))

伊藤> 3.summary mode から *namazu* に戻るのに'l'キーを割りあてている。こ

これは、個人的な都合から "L" にしています。


で、summary の更新の話なのですが……

伊藤さんの namazu-mew-folder() や自作の elisp から
mew-summary-goto-folder() や mew-summary-ls() するときに、range
を聞かれたくない(自動で update して欲しい)ときが多々あります。以
下のパッチを適用すると

(mew-summary-goto-folder nil (concat "+" folder) t)

で自動的に update してくれるのですが、如何でしょう。こういうとき
は、range:update 決めうちで良いじゃないかなぁと思います。

-------------- next part --------------
--- mew-summary.el.orig	Sun Feb 14 22:50:45 1999
+++ mew-summary.el	Wed Feb 17 12:20:15 1999
@@ -514,7 +514,7 @@
 ;;; Folder
 ;;;
 
-(defun mew-summary-goto-folder (&optional arg fld)
+(defun mew-summary-goto-folder (&optional arg fld update)
   "Go to the folder which you input.
 If executed with 'C-u', the cursor always goes to the bottom of 
 Summary mode."
@@ -523,11 +523,11 @@
 	 (dir (mew-expand-folder folder)))
     (cond
      ((mew-folder-newsp folder)
-      (mew-summary-goto-folder-subr folder arg))
+      (mew-summary-goto-folder-subr folder arg update))
      ((mew-folder-virtualp folder)
       (if (get-buffer folder)
 	  (progn
-	    (mew-summary-goto-folder-subr folder arg)
+	    (mew-summary-goto-folder-subr folder arg update)
 	    (mew-virtual-mode))
         (message "No such virtual folder: %s" folder)
 	(mew-folder-delete folder)))
@@ -538,22 +538,22 @@
 		 "Cache directory for %s does not exist. Create it? "
 		 folder)))
 	  (mew-make-directory dir))
-      (mew-summary-goto-folder-subr folder arg))
+      (mew-summary-goto-folder-subr folder arg update))
      (t   ;; mail or local news
       (if (null dir)
 	  (message "Folder is wrong")
 	(if (not (file-directory-p dir))
 	    (message "No such folder %s" folder)
-	  (mew-summary-goto-folder-subr folder arg)
+	  (mew-summary-goto-folder-subr folder arg update)
 	  (if mew-summary-trace-directory (cd dir))))))))
 
-(defun mew-summary-goto-folder-subr (folder arg)
+(defun mew-summary-goto-folder-subr (folder arg update)
   (let (new-folder)
     (if (get-buffer folder)
 	(switch-to-buffer folder)
       (mew-summary-folder-create folder)
       (setq new-folder t))
-    (mew-summary-ls t (or arg new-folder))))
+    (mew-summary-ls t (or arg new-folder) update)))
 
 (defun mew-summary-folder-create (folder)
   (switch-to-buffer (get-buffer-create folder))
-------------- next part --------------
--- mew-scan.el.orig	Wed Feb 17 12:22:49 1999
+++ mew-scan.el	Wed Feb 17 12:16:47 1999
@@ -53,7 +53,7 @@
 	(marker-position mew-summary-inbox-position)
 	(goto-char (marker-position mew-summary-inbox-position)))))
 
-(defun mew-summary-ls (&optional arg jump)
+(defun mew-summary-ls (&optional arg jump update)
   "List this folder asynchronously."
   (interactive "P")
   (mew-summary-only
@@ -67,7 +67,13 @@
 	     (mew-folder-imapp folder)
 	     (and mew-summary-cache-use
 		  (mew-summary-folder-dir-newp)))
-	 (let ((range (mew-input-range folder))
+	 (let ((range
+		(if update
+		    (prog2
+			(get-buffer folder)
+			(mew-update-range)
+		      (mew-decode-syntax-delete))
+		  (mew-input-range folder)))
 	       lines)
 	   (or arg (goto-char (point-max)))
 	   (if (equal (car range) "all")
-------------- next part --------------

-- 
白井秀行 (mailto:Shirai at example.com)


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