[Mew-dist 06866] Re: mew-refile-view.el (Re: mew-refile.el)
Hideyuki SHIRAI ( 白井秀行 )
shirai at example.com
1998年 11月 4日 (水) 09:31:34 JST
白井です。
# ふと気付くと結構ハードな仕事をしていたので、使用したご報告が遅
# くなってしまいました。
From: "Takashi P.KATOH" <p-katoh at example.com> さん曰く
Subject: [Mew-dist 06790] Re: mew-refile-view.el (Re: mew-refile.el)
Message-ID: <19981025140505L.p-katoh at example.com>
Date: Sun, 25 Oct 1998 14:05:10 +0900
加藤> しばらく手をつけるつもりはなかったのですが、なぜだか code が
加藤> 倍近くなっちゃいました ;-)
感謝、感謝です。
加藤> From: Hideyuki SHIRAI (白井秀行) <shirai at example.com>
加藤> Subject: [Mew-dist 06772] Re: mew-refile-view.el (Re: mew-refile.el)
加藤> 3. *Mew refile view* buffer で `l', `.', `q' とかを試してみま
加藤> しょう :-)
加藤> (Menu を見る、も可)
"." がめちゃくちゃ便利なので、調子にのって "u","o","d" などを追
加してしまいました。さすがに "x" は止めましたが。^^;
それと、"q" をちょっと変えました。
加藤> Known Problem:
加藤> "o" mark が無くなった後で mew-refile-view-again をしても、
加藤> 以前の buffer が残って、ちょっとイヤ。
"u" を加えたことにより、どうにかしなければならなくなったため
ad-hoc に対応してしまいました。とっても汚いのですが、いかがでしょ
う。
加藤> なお、もはや現実逃避する暇すらなくなってしまったので (;_;)、
加藤> 次に手をつけるのはしばらく後になると思います。
今日もしごとだぁ〜。しかし、あまりにつらいと現実逃避をしたくなる
かもしれません。:)
-------------- next part --------------
--- mew-refile-view.el.orig Wed Nov 4 09:09:18 1998
+++ mew-refile-view.el Wed Nov 4 08:52:40 1998
@@ -29,9 +29,14 @@
["Prev page" scroll-down t]
["Top" beginning-of-buffer t]
["Bottom" end-of-buffer t]
+ ["Prev message" mew-refile-view-prev-msg t]
+ ["Next message" mew-refile-view-next-msg t]
"----"
["Show again" mew-refile-view-again t]
["Goto summary" mew-refile-view-goto-summary t]
+ ["Unmark" mew-refile-view-unmark t]
+ ["Refile" mew-refile-view-refile t]
+ ["Delete" mew-refile-view-delete t]
["Quit" mew-refile-view-quit t]
))
@@ -46,6 +51,11 @@
(define-key mew-refile-view-mode-map "h" 'mew-refile-view-goto-summary)
(define-key mew-refile-view-mode-map "." 'mew-refile-view-goto-summary)
(define-key mew-refile-view-mode-map "q" 'mew-refile-view-quit)
+ (define-key mew-refile-view-mode-map "n" 'mew-refile-view-next-msg)
+ (define-key mew-refile-view-mode-map "p" 'mew-refile-view-prev-msg)
+ (define-key mew-refile-view-mode-map "u" 'mew-refile-view-unmark)
+ (define-key mew-refile-view-mode-map "o" 'mew-refile-view-refile)
+ (define-key mew-refile-view-mode-map "d" 'mew-refile-view-delete)
(if mew-temacs-p
(easy-menu-define
mew-refile-view-mode-menu
@@ -82,7 +92,16 @@
(interactive)
(mew-summary-only
(if (null mew-summary-buffer-refile)
- (message "No refile marks")
+ (let* ((folder (buffer-name))
+ (bufname (format "*Mew refile view* (%s)" folder)))
+ (message "No refile marks")
+ (if (not (buffer-live-p (get-buffer bufname)))
+ ()
+ (set-buffer bufname)
+ (setq buffer-read-only nil)
+ (erase-buffer)
+ (insert "No refile marks\n")
+ (setq buffer-read-only nil)))
(save-restriction
(widen)
(let* ((folder (buffer-name))
@@ -128,9 +147,12 @@
(setq num (if (looking-at mew-summary-message-regex)
(mew-match 1))))
(if (not (and original-folder (get-buffer original-folder)))
- (message "No Summary mode for %s" original-folder)
+ (progn
+ (message "No Summary mode for %s" original-folder)
+ nil)
(mew-pop-to-buffer original-folder)
- (if num (mew-summary-jump-message num)))))
+ (if num (mew-summary-jump-message num))
+ t)))
(defun mew-refile-view-again ()
(interactive)
@@ -142,10 +164,76 @@
(defun mew-refile-view-quit ()
"Exit from mew-refile-view-mode."
(interactive)
- (delete-window)
- ;; and/or do `kill-buffer'?
- ;; (kill-buffer (current-buffer))
- )
+ (condition-case nil
+ (delete-window)
+ ;; and/or do `kill-buffer'?
+ ;; (kill-buffer (current-buffer))
+ (error
+ (if (not (and original-folder (get-buffer original-folder)))
+ (progn
+ (message "No Summary mode for %s" original-folder)
+ (kill-buffer (current-buffer)))
+ (mew-pop-to-buffer original-folder)
+ (delete-other-windows)))))
+
+(defun mew-refile-view-next-msg ()
+ "Next message search in mew-refile-view-mode."
+ (interactive)
+ (let ((orig (point)))
+ (end-of-line)
+ (if (re-search-forward mew-summary-message-regex nil t)
+ (beginning-of-line)
+ (goto-char orig))))
+
+(defun mew-refile-view-prev-msg ()
+ "Previous message search in mew-refile-view-mode."
+ (interactive)
+ (let ((orig (point)))
+ (beginning-of-line)
+ (if (re-search-backward mew-summary-message-regex nil t)
+ (beginning-of-line)
+ (goto-char orig))))
+
+(defun mew-refile-view-unmark ()
+ "Unmark this message."
+ (interactive)
+ (mew-refile-view-msg 'undo))
+
+(defun mew-refile-view-refile ()
+ "Refile this message."
+ (interactive)
+ (mew-refile-view-msg 'refile))
+
+(defun mew-refile-view-delete ()
+ "Delete this message."
+ (interactive)
+ (mew-refile-view-msg 'delete))
+
+(defun mew-refile-view-msg (msg-com)
+ "New mark on this message."
+ (interactive)
+ (beginning-of-line)
+ (let ((orig-point (point))
+ (orig-buff (current-buffer)))
+ (if (not (looking-at mew-summary-message-regex))
+ (message "No message here.")
+ ;; in mew summary buffer
+ (if (mew-refile-view-goto-summary)
+ (mew-summary-only
+ (cond
+ ((eq msg-com 'refile)
+ (mew-summary-refile))
+ ((eq msg-com 'undo)
+ (mew-summary-undo 1))
+ ((eq msg-com 'delete)
+ (mew-summary-delete 1)))
+ (mew-refile-view)))
+ ;; out mew summary buffer
+ (mew-pop-to-buffer orig-buff)
+ (if (< orig-point (point-max))
+ (goto-char orig-point)
+ (goto-char (point-max)))
+ (beginning-of-line))))
(defun mew-refile-view-mode (&optional folder)
"Major mode for display refile alist.
@@ -153,8 +241,13 @@
SPC Scroll up this message.
DEL Back-scroll this message.
+n Next message show.
+p Previous message show.
h Get back to Summary mode.
-l Reshow.
+u Unmark this message.
+o Refile this message.
+d Delete this message.
+l Reshow this message.
q Quit.
< Go to top.
> Go to bottom.
Mew-dist メーリングリストの案内