[Mew-dist 1304] mew-sort.el ver 0.07 (Re: mew-1.86 & im-46 beta release)
Takashi P.KATOH
p-katoh at example.com
1997年 7月 23日 (水) 14:20:46 JST
かとぺ@東北大です。
From: Hironori Ikura/伊倉 広徳 <hikura at example.com>
Subject: [Mew-dist 1287] Re: mew-1.86 & im-46 beta release
> 伊倉です。
>> (1) mew-sort.el を im-46 に合わせて頂けないでしょうか? > 加藤さん
今論文 (+ 慣れない英語) でひどく苦労しているのと、唯一 perl
5.004 が入っていたマシンがふっとんで、perl のインストールを
したりしていたので遅くなりました (_o_)
> imsort が --field=* と、--mode=* の指定に変わったので、
> 現状では、
> 今まで --datefield に渡していたもの
> → --mode=date
> 今まで --textfield に渡していたもの
> → --mode=text
> と、固定でやってます。
mew-sort.el については基本的には伊倉さんのもので良いのですが、
見た目はもう少し綺麗になります。
ということで最後に付けます。
まだ Mew-1.86 をインストールしてないのでそちらでの確認はして
いないのですが、たぶんこれ + 伊倉さんのパッチ (mew.el.patch,
mew-summary.el.patch) で大丈夫でしょう。
-----
> 現状でも、--mode=num がありますし、将来、
> Subject の特殊な取り扱いなどの拡張があったときの
> 為に、--mode を指定する方法があった方がいいと思うのですが、
「Subject の...」の意味が良く分かりませんが、--mode を指定す
る方法については私も考えていました。
> * いつでも、mode も聞いてくる
これは欝陶しいので個人的には避けたいです。
> * optional-argument で、mode も指定できる
C-u ですか? これはすでに使っているので...
# 具体的な仕様があれば根本的に書き直す or キーバインドを変更
# する、も可ですが。
> * field名の後に、例えば、':' や、'/' で区切って、
> modeも指定できる
> (ex.) subject/text
> x-sequence:num
> 個人的には、最後の案(':'などで区切って続ける)が気にいってます。
これはいいかもしれませんね。考えてみます。
# completion がちょっと面倒かも。
> 勿論、オプショナルとしておいて、デフォルトでは、
> date は --mode=date に
> それ以外は、--mode=text に
> とかしておくのがベターだと思います。
> # assoc で 指定できると、もっとベター?
この辺は現在の、
(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-fields
'(("date" . date) ; --mode=date
("x-sequence" . num) ; --mode=num
("subject" . text) ; --mode=text
("from" . text))) ; default は --mode=text
のような感じ (でいいのかな?) に拡張しようと思ってます。
--
東北大学大学院 情報科学研究科 白鳥研究室 加藤 貴司
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: July 22, 1997
;;;
(defconst mew-sort-version "mew-sort.el version 0.07")
(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 (not (mew-summary-exclusive-p))
(message "Try later")
(mew-mark-clean-up)
(setq mew-summary-buffer-process t)
(message "Sorting %s by %s ... " folder field)
(apply 'call-process mew-prog-imsort nil nil nil
(append
(list (concat "--src=" folder)
(concat "--field=" field)
(if (cdr (assoc field mew-summary-sort-fields))
"--mode=date" "--mode=text"))
msgs))
(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 mew-prog-imls
'mew-summary-mode
folder
mew-cs-scan
(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)
Mew-dist メーリングリストの案内