[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 メーリングリストの案内