[Mew-dist 15324] どこでも親探し

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2000年 12月 7日 (木) 13:49:26 JST


mew-thread.el の mew-summary-thread-parent() なのですが、thread
の indent を使わなくても、以下の様にすると『普通の folder』でも
親や子供を検索できますがいかがなものでしょうか。

"親探し" は thread folder より普通の folder の方がありがたみがあ
ります。

(defun mew-summary-thread-parent (&optional child)
  "Move onto the parent message of the current message.
If called with '\\[universal-argument]', move onto the child message."
  (interactive "P")
  (mew-summary-msg
   (let ((pos (point))
	 (msg (if child "Child" "Parent"))
	 id regex)
     (if (not (looking-at "[^\r]*\r[^<]+\\(<[^>]*>\\) \\(<[^>]*>\\)\n"))
     	 (message "No required header.")
       (if child
	   (setq id (mew-match 1)
		 regex (concat "\r[^<]+<[^>]*> " (regexp-quote id)))
	 (setq id (mew-match 2)
	       regex (concat "\r[^<]+" (regexp-quote id))))
       (if (string= id "<>")
	   (message "No required header.")
	 (goto-char (point-min))
	 (if (re-search-forward regex nil t)
	     (progn
	       (beginning-of-line)
	       (mew-summary-display nil)
	       (message (format "%s detect." msg)))
	   (goto-char pos)
	   (message (format "No %s detect in this folder." msg))))))))

# 少々力付くで regex を書いてますけど。^^;

また、

(defun mew-scan-get-line (mew-vec WIDTH &optional VIRTUALP)
  (let* ((TOTAL 0)
	 (line (mapconcat (function mew-scan-get-piece)
			  mew-summary-buffer-scan-form ""))
	 (my-id "") (par-id "") fld msg ld)
    (if (string-match mew-regex-id (MEW-ID))
	(setq my-id (mew-match 1 (MEW-ID))))
    (if (string-match mew-regex-id (MEW-IRT))
	(setq par-id (mew-match 1 (MEW-IRT)))
      (if (string-match mew-regex-id (MEW-REF))
	  (let ((beg (match-beginning 1))
		(end (match-end 1))
		(start (match-end 0)))
	    (while (string-match mew-regex-id (MEW-REF) start)
	      (setq beg (match-beginning 1))
	      (setq end (match-end 1))
	      (setq start (match-end 0)))
	    (setq par-id (substring (MEW-REF) beg end)))))
    (if (null VIRTUALP)
	(setq ld (format "\r <%s> <%s>\n" my-id par-id))
      (setq fld (mew-scan-get-folder mew-vec))
      (setq msg (mew-scan-get-message mew-vec))
      (setq ld (format "\r %s %s <%s> <%s>\n" fld msg my-id par-id)))
    (cons line ld)))

の様にして『普通の virtual folder』でも my-id, par-id をつけるよ
うにすれば、virtual でも親や子供をたどれる様になります。これも便
利かと。

# これをやると mew-nmz.el で一カ所動作不良を起こしますが、それ以
# 外の動作は大丈夫だと思います。

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



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