[Mew-dist 530] Re: new mew-sort.el

Takashi P.KATOH p-katoh at example.com
1997年 2月 27日 (木) 15:43:50 JST


かとぺ@東北大です。

From: SAKAI Kiyotaka <ksakai at example.com>
Subject: [Mew-dist 527] Re: new mew-sort.el
>> - "S" とすると sort する field を聞いてくる。
>> - C-u で region に対して sort を行なう。
     ^^^
       C-u S です (_o_)

> 使ってみましたが、なかなかいいですね。ただ、region に対する sort がう
> まく動いていないように思えます。

すみません。bug です (_o_)

>>    (それ以前に mew-summary-sort-fields の形式が格好悪い...)
> それならば、変数を 2つに分けてしまうのはどうでしょうか?
> もっとも、今のままでも問題ないという気もしますが。

そうですね。
mew-summary-sort-datefields と mew-summary-sort-textfields 
ってとこでしょうか。
う〜ん、今のままとどっちがいいのかな...


あと、field の補完のときの default ですが、
- (あれば) 前回使ったもの (<- 現状)
- 固定 (pick のように)
のどっちが便利でしょう?

そうそう、最大の問題点なんですが、どなたか英語を直してくださ
いませんか? f(^^;
# あまりにダサすぎるので...

ということで version 0.03 (主に bug fix) を付けます。

ついでに http://www.shiratori.riec.tohoku.ac.jp/~p-katoh/Mew/ 
ってのも作ってみました (ほとんど情報ないですが)。

-- 
  東北大学大学院 情報科学研究科 白鳥研究室    加藤 貴司
  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: Febraury 27, 1997
;;;

(defconst mew-sort-version "mew-sort.el version 0.03")
(require 'mew)

(defvar mew-summary-sort-fields
  '(("Date" t) ("Subject") ("From") ("To") ("Newsgroups") ("Posted" t))
  "*Field list for mew-summary-sort.
(\"Foo\" t) means sortm will be executed with \"-datefield\" option.")

(defvar mew-summary-sort-last-field "From"
  "Latest field used by mew-summary-sort.")

(defun mew-summary-sort-body (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 " ") folder " by?"
		   (if mew-summary-sort-last-field
		       (concat " (default " mew-summary-sort-last-field "): ")
		     ": ")) mew-summary-sort-fields)))
    (setq field (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))
    (mew-summary-sort-body "all")))

(defun mew-summary-sort-region (r1 r2)
  (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-body (concat from "-" to) "region")
	(mew-summary-sort-body (concat to "-" from) "region")))))

(defun mew-summary-mark-sort (&optional r1 r2)
  (interactive)
  (mew-summary-sort-body
   (mew-summary-mark-collect
    mew-mark-hop (or r1 (point-min)) (or r2 (point-max)))
   "marked messages"))

(provide 'mew-sort)


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