;;; wl-summary.el -- Summary mode for Wanderlust.
-;; Copyright 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
-;; Masahiro MURATA <muse@ba2.so-net.ne.jp>
-;; Copyright 1999,2000 TSUMURA Tomoaki <tsumura@kuis.kyoto-u.ac.jp>
-;; Copyright 1999,2000 Kenichi OKADA <okada@opaopa.org>
+;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 1998,1999,2000 Masahiro MURATA <muse@ba2.so-net.ne.jp>
+;; Copyright (C) 1999,2000 TSUMURA Tomoaki <tsumura@kuis.kyoto-u.ac.jp>
+;; Copyright (C) 1999,2000 Kenichi OKADA <okada@opaopa.org>
;; Author: Yuuichi Teranishi <teranisi@gohome.org>
-;; Masahiro MURATA <muse@ba2.so-net.ne.jp>
+;; Masahiro MURATA <muse@ba2.so-net.ne.jp>
;; TSUMURA Tomoaki <tsumura@kuis.kyoto-u.ac.jp>
-;; Kenichi OKADA <okada@opaopa.org>
+;; Kenichi OKADA <okada@opaopa.org>
;; Keywords: mail, net news
;; This file is part of Wanderlust (Yet Another Message Interface on Emacsen).
(define-key wl-summary-mode-map "P" 'wl-summary-up)
;;;(define-key wl-summary-mode-map "w" 'wl-draft)
(define-key wl-summary-mode-map "w" 'wl-summary-write)
- (define-key wl-summary-mode-map "W" 'wl-summary-write-current-newsgroup)
+ (define-key wl-summary-mode-map "W" 'wl-summary-write-current-folder)
;;;(define-key wl-summary-mode-map "e" 'wl-draft-open-file)
(define-key wl-summary-mode-map "e" 'wl-summary-save)
(define-key wl-summary-mode-map "\C-c\C-o" 'wl-jump-to-draft-buffer)
wl-folder-entity-hashtb))
nil nil (or init wl-default-spec)
'wl-read-folder-hist)))
- (setq fld (elmo-string (wl-folder-get-realname fld)))
- (if (string-match "\n" fld)
- (error "Not supported folder name: %s" fld))
(if (or (string= fld wl-default-spec)
(string= fld ""))
(setq fld default))
+ (setq fld (elmo-string (wl-folder-get-realname fld)))
+ (if (string-match "\n" fld)
+ (error "Not supported folder name: %s" fld))
(unless no-create
(if ignore-error
(ignore-errors (wl-folder-confirm-existence fld))
(or (and (memq number wl-summary-buffer-delete-list) "D")
(and (assq number wl-summary-buffer-copy-list) "O")
(and (assq number wl-summary-buffer-refile-list) "o")
- (and (assq number wl-summary-buffer-target-mark-list) "*")))
+ (and (memq number wl-summary-buffer-target-mark-list) "*")))
(defsubst wl-summary-reserve-temp-mark-p (mark)
"Return t if temporal MARK should be reserved."
(when (and (not (wl-summary-no-auto-refile-message-p number
mark-alist))
(setq dst
- (wl-refile-guess-by-rule
- (elmo-msgdb-overview-get-entity
- number wl-summary-buffer-msgdb)))
+ (wl-folder-get-realname
+ (wl-refile-guess-by-rule
+ (elmo-msgdb-overview-get-entity
+ number wl-summary-buffer-msgdb))))
(not (equal dst spec)))
(when (not (member dst checked-dsts))
(wl-folder-confirm-existence dst)
(run-hooks 'wl-mail-setup-hook)
(mail-position-on-field "To"))
-(defun wl-summary-write-current-newsgroup (&optional folder)
- ""
+(defvar wl-summary-write-current-folder-functions
+ '(wl-folder-get-newsgroups
+;;; wl-folder-guess-mailing-list-by-refile-rule
+ )
+ "Newsgroups or Mailing List address guess functions list.
+Call from `wl-summary-write-current-folder'")
+
+(defun wl-summary-write-current-folder (&optional folder)
+ "Write message to current FOLDER's newsgroup or mailing-list.
+Use function list is `wl-summary-write-current-folder-functions'."
(interactive)
- (let* ((folder (or folder wl-summary-buffer-folder-name))
- (flist (elmo-folder-get-primitive-folder-list folder))
- newsgroups fld ret)
- (while (setq fld (car flist))
- (if (setq ret
- (cond ((eq 'nntp (elmo-folder-get-type fld))
- (nth 1 (elmo-folder-get-spec fld)))
- ((eq 'localnews (elmo-folder-get-type fld))
- (elmo-replace-in-string
- (nth 1 (elmo-folder-get-spec fld)) "/" "\\."))))
- (setq newsgroups (cond (newsgroups
- (concat newsgroups "," ret))
- (t ret))))
- (setq flist (cdr flist)))
- (if newsgroups
- (progn
- (wl-draft nil nil nil nil nil newsgroups)
- (run-hooks 'wl-mail-setup-hook))
- (error "%s is not newsgroup" folder))))
+ (let (newsgroups to cc)
+ ;; default FOLDER is current buffer folder
+ (setq folder (or folder wl-summary-buffer-folder-name))
+ (let ((flist wl-summary-write-current-folder-functions)
+ guess-list)
+ (while flist
+ (setq guess-list (funcall (car flist) folder))
+ (if (or (nth 0 guess-list) ; To:
+;;; (nth 1 guess-list) ; Cc:
+ (nth 2 guess-list)) ; Newsgroups:
+ (setq flist nil)
+ (setq flist (cdr flist))))
+ (if guess-list
+ (progn
+ (wl-draft (nth 0 guess-list) ; To:
+ nil nil
+ (nth 1 guess-list) ; Cc:
+ nil
+ (nth 2 guess-list)) ; Newsgroups:
+ (run-hooks 'wl-mail-setup-hook))
+;;; (error "%s is not newsgroup" folder)
+ (error "Can't guess by folder %s" folder)))))
(defun wl-summary-forward (&optional without-setup-hook)
""
(if (setq message-buf (wl-message-get-original-buffer))
(set-buffer message-buf))
(unless (wl-message-news-p)
- (error "This is not a news article; canceling is impossible"))
+ (set-buffer summary-buf)
+ (if (and (eq (elmo-folder-get-type wl-summary-buffer-folder-name)
+ 'nntp)
+ (y-or-n-p "Cannot get Newsgroups. Fetch again? "))
+ (progn
+ (wl-summary-redisplay t)
+ (wl-summary-supersedes-message))
+ (error "This is not a news article; supersedes is impossible")))
(when (yes-or-no-p "Do you really want to cancel this article? ")
(let (from newsgroups message-id distribution buf)
(save-excursion
(if (setq message-buf (wl-message-get-original-buffer))
(set-buffer message-buf))
(unless (wl-message-news-p)
- (error "This is not a news article; supersedes is impossible"))
+ (set-buffer summary-buf)
+ (if (and (eq (elmo-folder-get-type wl-summary-buffer-folder-name)
+ 'nntp)
+ (y-or-n-p "Cannot get Newsgroups. Fetch again? "))
+ (progn
+ (wl-summary-redisplay t)
+ (wl-summary-supersedes-message))
+ (error "This is not a news article; supersedes is impossible")))
(save-excursion
(setq from (std11-field-body "from"))
;; Make sure that this article was written by the user.