[Mew-dist 774] mew-sort.el ver 0.04 and patch for 1.67
Takashi P.KATOH
p-katoh at example.com
1997年 3月 28日 (金) 21:20:54 JST
かとぺ%ほどよく忙しい (^^;@東北大です。
やっと Mew の version を 1.67 に上げました。
ってことで new mew-sort.el と patch for 1.67 です。
mew-sort.el の主な変更点は以下の通りです。
1.
- "Subject" を sortm の引数として与えると Re: をはずして
sort してくれない
- "date" とすると datefield として扱ってくれない (たぶん)
という問題を回避するため、mew-summary-sort-fields は全て強制
的に小文字にして扱うようにした。
なお、内部で downcase しているので、いままで通り "Subject"
としてもおっけーです。
(see Subject: [Mew-dist 668] Re: new mew-sort.el
From: Kazutaka SHIGENO <shigeno at example.com>)
2.
mew-summary-sort で prefix なしの時 sort の対象を
「folder 内の全ての message」から「summary buffer に表示され
ている全ての message」に変更。
(see Subject: [Mew-dist 540] Re: new mew-sort.el
From: SAKAI Kiyotaka <ksakai at example.com>)
--
東北大学大学院 情報科学研究科 白鳥研究室 加藤 貴司
p-katoh at example.com / Takashi P.KATOH
http://www.shiratori.riec.tohoku.ac.jp/~p-katoh/MAIL/
-------------- next part --------------
;;; mew-sort.el
;;;
;;; Copyright (C) 1996 and 1997 Takashi P.KATOH
;;;
;;; This emacs lisp library confirms
;;; GNU GENERAL PUBLIC LICENSE Version 2.
;;;
;;; Author: Takashi P.KATOH <p-katoh at example.com>
;;; Kazuhiko Yamamoto <kazu at example.com>
;;; Created: Febraury 6, 1996
;;; Revised: March 28, 1997
;;;
(defconst mew-sort-version "mew-sort.el version 0.04")
(require 'mew)
(defvar mew-summary-sort-fields
'(("date" . t) ("subject") ("from") ("to") ("newsgroups") ("posted" . t))
"*List of fields for `mew-summary-sort'.
Each element is (FIELD-NAME) or (FIELD-NAME . DATE-P).
If DATE-P is non-nil, messages will be sorted by chronological order.")
(defvar mew-summary-sort-last-field "date")
(defun mew-summary-sort-subr (msgs &optional method)
(let* ((folder (buffer-name))
(msgs (if (listp msgs) msgs (list msgs)))
(completion-ignore-case t)
(field
(completing-read
(concat "Sort " method (if method " ") "by?"
(if mew-summary-sort-last-field
(concat " (default " mew-summary-sort-last-field "): ")
": ")) mew-summary-sort-fields)))
(setq field
(downcase
(if (string-equal field "") mew-summary-sort-last-field field))
mew-summary-sort-last-field field)
(if (null (mew-summary-exclusive-p))
()
(if (mew-summary-mark-exist-p (list mew-mark-rmm mew-mark-refile))
(if (mew-y-or-n-p
"Marked messages exist. Process mark before scan? ")
(mew-summary-exec)))
(setq mew-summary-buffer-process t)
(message "Sorting %s by %s ... " folder field)
(if (cdr (assoc field mew-summary-sort-fields))
(apply 'call-process mew-prog-sortm nil nil nil
(append (list folder) msgs (list "-datefield" field)))
(apply 'call-process mew-prog-sortm nil nil nil
(append (list folder)
msgs
(list "-textfield" field "-limit" "0"))))
(message "Sorting %s by %s ... done" folder field)
(setq mew-summary-buffer-process nil)
(let ((buffer-read-only nil)) (erase-buffer));; for update
(mew-summary-scan-body folder (mew-input-range folder))
)
))
(defun mew-summary-sort (&optional arg)
(interactive "P")
(if arg
(mew-summary-sort-region (region-beginning) (region-end) "region")
(mew-summary-sort-region (point-min) (point-max))))
(defun mew-summary-sort-region (r1 r2 &optional method)
(interactive "r")
(let (from to msgs)
(save-excursion
(goto-char r1)
(setq from
(or (mew-summary-message-number)
(progn
(re-search-backward mew-summary-message-regex nil t nil)
(mew-summary-message-number))))
(goto-char r2)
(setq to
(or (mew-summary-message-number)
(progn
(re-search-backward mew-summary-message-regex nil t nil)
(mew-summary-message-number))))
(if (< (string-to-int from) (string-to-int to))
(mew-summary-sort-subr (concat from "-" to) method)
(mew-summary-sort-subr (concat to "-" from) method)))))
(defun mew-summary-mark-sort (&optional r1 r2)
(interactive)
(mew-summary-sort-subr
(mew-summary-mark-collect
mew-mark-hop (or r1 (point-min)) (or r2 (point-max)))
"marked messages"))
(provide 'mew-sort)
-------------- next part --------------
--- mew-summary.el,orig Wed Mar 26 17:04:01 1997
+++ mew-summary.el Fri Mar 28 20:48:17 1997
@@ -34,6 +34,7 @@
["Refile" mew-summary-refile (equal major-mode 'mew-summary-mode)]
["Mark mark" mew-summary-mark-mark t]
["Mark hop" mew-summary-mark-hop t]
+ ["Sort marked msgs" mew-summary-mark-sort t]
["Undo" mew-summary-undo t]
["Undo all" mew-summary-undo-all t]
["Execute" mew-summary-exec (equal major-mode 'mew-summary-mode)]
@@ -157,6 +158,7 @@
(define-key mew-summary-mode-map "mr" 'mew-summary-mark-regexp)
(define-key mew-summary-mode-map "ma" 'mew-summary-mark-all)
(define-key mew-summary-mode-map "mu" 'mew-summary-mark-undo-all)
+ (define-key mew-summary-mode-map "mS" 'mew-summary-mark-sort)
(define-key mew-summary-mode-map "\C-c\C-k" 'mew-summary-kill-subprocess)
;;
(if mew-xemacs-p
@@ -284,6 +286,7 @@
m* Change mark \"@\" into mark \"*\".
m@ Change mark \"*\" into mark \"@\".
ms Swap mark \"@\" and \"*\".
+mS Sort messages whose marks are \"*\".
C-cC-s Incremental search forward on the message buffer.
C-cC-r Incremental search backward on the message buffer.
@@ -1522,27 +1525,27 @@
;;; Sorting and Packing
;;;
-(defun mew-summary-sort ()
- (interactive)
- (let ((folder (buffer-name)))
- (if (null (mew-summary-exclusive-p))
- ()
- (if (mew-summary-mark-exist-p (list mew-mark-rmm mew-mark-refile))
- (if (mew-y-or-n-p
- "Marked messages exist. Process mark before scan? ")
- (mew-summary-exec)))
- (if (null (mew-y-or-n-p (format "Sort %s ? " folder)))
- ()
- (setq mew-summary-buffer-process t)
- (message "Sorting %s ... " folder)
- (call-process mew-prog-sortm nil nil nil folder)
- (message "Sorting %s ... done" folder)
- (setq mew-summary-buffer-process nil)
- (let ((buffer-read-only nil)) (erase-buffer)) ;; for update
- (mew-summary-scan-body folder (mew-input-range folder))
- )
- )
- ))
+;(defun mew-summary-sort ()
+; (interactive)
+; (let ((folder (buffer-name)))
+; (if (null (mew-summary-exclusive-p))
+; ()
+; (if (mew-summary-mark-exist-p (list mew-mark-rmm mew-mark-refile))
+; (if (mew-y-or-n-p
+; "Marked messages exist. Process mark before scan? ")
+; (mew-summary-exec)))
+; (if (null (mew-y-or-n-p (format "Sort %s ? " folder)))
+; ()
+; (setq mew-summary-buffer-process t)
+; (message "Sorting %s ... " folder)
+; (call-process mew-prog-sortm nil nil nil folder)
+; (message "Sorting %s ... done" folder)
+; (setq mew-summary-buffer-process nil)
+; (let ((buffer-read-only nil)) (erase-buffer)) ;; for update
+; (mew-summary-scan-body folder (mew-input-range folder))
+; )
+; )
+; ))
(defun mew-summary-pack ()
(interactive)
--- mew.el,orig Tue Mar 25 23:28:21 1997
+++ mew.el Fri Mar 28 20:48:54 1997
@@ -926,6 +926,7 @@
(require 'mew-refile)
(require 'mew-ext)
(require 'mew-fib)
+(require 'mew-sort)
;;;
;;; End of Mew
;;;
Mew-dist メーリングリストの案内