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

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
1999年 2月 22日 (月) 08:57:26 JST


こんにちは、白井です。

# ちょっと、オフラインが続いたら user-meeting の話が……
# 是非、参加させていただきます。

From: Takeshi ITOH <titou at example.com> さん曰く
Subject: [Mew-dist 07503] Re: namazu.el for mew
Message-ID: <19990218081237D.titou at example.com>
Date: Thu, 18 Feb 1999 09:28:56 +0900

伊藤> 伊藤@Bitsです。

伊藤> 最初にmewへ提案です。mew-grep というコマンドがあったら嬉しいです。

便利そうですね。

>>>>> Hideyuki SHIRAI (白井秀行) <shirai at example.com> さんは

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

伊藤> namazu.el の関係者から '?' mew-summary-search-mark の機能として
伊藤> namazu が使えるようにしたら、という suggestion をいただいて添付の
伊藤> ような改造して試しています。とっても効率の悪いつくりなのでおはずか
伊藤> しいし私自身もあまりテストしてないのですが。

こちらも今度試させていただきます。

伊藤> いただきました。^@^

どうも。その後、いろいろ改造して以下の様になっていますので、よろ
しかったら、こちらもどうぞ。設定はほとんど個人的な趣味です。^^;

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

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

伊藤> こちらは試してないのですが、この方が嬉しいと思います。

両方対応しています。:-)

(if (locate-library "namazu")
    (progn
      (autoload 'namazu "namazu" nil t)

      (defvar namazu-mew-default-dir "~/namazu/index")
      (defvar namazu-mew-argument "-Hl")
      (defvar namazu-output-url-pattern-mew
	    "^/.*Mail/\\(.*\\)/\\([0-9]+\\) \\(size ([^)]*)\\)")
      (defvar namazu-mew-full-window t)
      (defvar namazu-mew-history nil)
      (defvar namazu-mew-window-config nil)

      (setq namazu-default-dir namazu-mew-default-dir)
      (setq namazu-argument namazu-mew-argument)
      (setq namazu-buffer "*namazu*")
      (setq namazu-history nil)

      (defun namazu-mew-folder ()
	"show pointed message at mew summary"
	(interactive)
	(setq namazu-mew-window-config (current-window-configuration))
	(if (or (not (boundp 'mew-mail-path))
		(null mew-mail-path))
	    (mew))
	(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)))))
	      (beginning-of-line)
	      (sit-for 0)
	      (condition-case err
		  (mew-summary-goto-folder nil (concat "+" folder) t)
		(error 
		 (mew-summary-goto-folder nil (concat "+" folder))))
	      (if namazu-mew-full-window
		  (delete-other-windows))
	      (while (processp mew-summary-buffer-process)
		(sit-for 1))
	      (mew-summary-jump-message message)
	      (mew-summary-show))
	  (mew-summary-goto-folder nil (mew-input-folder mew-inbox-folder))
	  (if namazu-mew-full-window
	      (delete-other-windows))))

      (defun namazu-mew-search (&optional arg)
	"search with namazu from mew summary buffer."
	(interactive "P")
	(if (or arg
		(not (get-buffer namazu-buffer)))
	    (let ((folders (mew-input-folders "+"))
		  dirs key)
	      (setq dirs
		    (mapconcat
		     (lambda (i)
		       (format "+url:%s" (mew-expand-folder i)))
		     folders " "))
	      (setq namazu-mew-history
		    (mapcar
		     (lambda (i)
		       (progn
			 (while (string-match "^\\+url:[^ ]+ " i)
			   (setq i (substring i (match-end 0))))
			 (if (string-match "^ *( *\\(.*\\)) *$" i)
			     (setq i (substring i (match-beginning 1) (match-end 1))))
			 (if (string-match " *$" i)
			     (setq i (substring i 0 (match-beginning 0))))
			 i))
		     namazu-history))
	      (setq key
		    (read-from-minibuffer
		     "Namazu Keyword: "
		     (car namazu-mew-history) nil nil 'namazu-mew-history))
	      (setq key
		    (if (and dirs key)
			(format "%s ( %s )" dirs key)
		      (if dirs
			  (format "%s" dirs key)
			(if key
			    (format "%s" key)))))
	      (add-to-list 'namazu-history key)
	      (let ((namazu-default-dir namazu-mew-default-dir)
		    (namazu-argument namazu-mew-argument))
		(namazu 0 namazu-default-dir key)))
	  (switch-to-buffer namazu-buffer)
	  (if (window-configuration-p namazu-mew-window-config)
	      (set-window-configuration namazu-mew-window-config))
	  (if namazu-mew-full-window
	      (delete-other-windows))))
      
      (add-hook 'mew-summary-mode-hook
		'(lambda ()
		   (define-key mew-summary-mode-map "L" 'namazu-mew-search)))
      (add-hook 'namazu-mode-hook
		'(lambda ()
		   (define-key namazu-mode-map "m" 'namazu-mew-folder)))
      (add-hook 'namazu-mode-hook
		'(lambda ()
		   (define-key namazu-mode-map "L" 'namazu-re-search)))
      ))

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



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