[Mew-dist 3227] Mark same subject

Hiroshi ENOMOTO 榎本浩 enomoto at example.com
1997年 12月 19日 (金) 19:37:17 JST


榎本と申します。(1年半ぶりの投稿になります)

現在カーソルのあるメッセージと同じサブジェクトを持つメッセー
ジに '*' マークをつけるというものを作ってみました。

ML などの大量のメールをフォルダーに仕分けしてから、じっくり
読みたいときなど重宝しています。(スレッドを追っているような
気分が味わえます)

ちょっとコードが増えてしまったのは、単純に比較するのではなく、
[mew-dist 9999] や Re: を取り除き、かつ MIME のデコード時に
生ずるスペースの保存問題を解消するために、スペースをすべて取
り除いてマッチさせるということをやっているからです。
ださいのは以下のようにサブジェクトの位置をあらかじめ設定して
おかなければならないところです。
    (setq mew-summary-subject-column 28)
キーバインドは "ms" がふさがっているので、"mm" に割り当てて
使ってます。

それからパート2のパッチをあて、'*' マークがついてるメールに 'D' 
をつけたときに、次の '*' マークがついているメッセージに飛ぶ
(下方向固定ですけど)ようにするとさらに幸せになります。

--
榎本  浩      富士ゼロックス情報システム株式会社

-------------- next part --------------
(setq mew-summary-subject-column 30)
(define-key mew-summary-mode-map "mm" 'mew-summary-mark-same-subject)

(defun mew-summary-mark-same-subject ()
  (interactive)
  (save-excursion
    (let ((case-fold-search t) pattern subject)
      (beginning-of-line)
      (move-to-column mew-summary-subject-column)
      (if (looking-at "[\[(][a-z\-_,:]+[ \t]*[0-9]+[\])]")
	  (goto-char (match-end 0)))
      (if (looking-at "Re: *")
	  (goto-char (match-end 0)))
      (setq pattern (mew-string-replace
		     (buffer-substring
		      (point) (save-excursion (end-of-line) (point)))
		     "\\s-+" ""))
      (setq pattern (substring pattern  0 (min 10 (1- (length pattern)))))
      (goto-char (point-min))
      (while (< (point) (point-max))
	(if (mew-summary-marked-p)
	    ()
	  (move-to-column mew-summary-subject-column)
	  (setq subject (mew-string-replace
			 (buffer-substring
			  (point) (save-excursion (end-of-line) (point)))
			 "\\s-+" ""))
	  (if (string-match (regexp-quote pattern) subject)
	      (mew-summary-mark-weak mew-mark-review)))
	(forward-line 1))
      )))

(defun mew-string-replace (string regexp to-string)
  (let ((pos 0)	(ret-str ""))
    (while (string-match regexp string pos)
      (setq ret-str (concat ret-str 
			    (substring string pos (match-beginning 0))
			    to-string))
      (setq pos (match-end 0)))
    (if (< pos (length string))
	(concat ret-str (substring string pos))
      ret-str)))
-------------- next part --------------
--- mew-mark.el.org	Tue Nov 11 02:09:47 1997
+++ mew-mark.el	Fri Dec 19 18:52:59 1997
@@ -290,7 +290,8 @@
 	    )))
      ((or (equal mark mew-mark-review) (equal mark mew-mark-multi))
       (mew-summary-undo-one)
-      (save-excursion (mew-summary-mark-as mew-mark-delete)))
+      (save-excursion (mew-summary-mark-as mew-mark-delete))
+      (mew-summary-display-review-down))
      (t ;; no mark
       (save-excursion (mew-summary-mark-as mew-mark-delete))
       ;; for C-x C-x


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