X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=wl%2Fwl.el;h=209e08fbe54d5da192d2bcc526ec6b81c0e427ea;hb=a042bf9c4ba9de35aae4f231fe1f2c3c5cf594cd;hp=ae39fb33ff0e679f9f161ec395b5433ff23a26c4;hpb=d109daffc109dca3bb9440e0539e6f9ca879b5a2;p=elisp%2Fwanderlust.git diff --git a/wl/wl.el b/wl/wl.el index ae39fb3..209e08f 100644 --- a/wl/wl.el +++ b/wl/wl.el @@ -56,8 +56,10 @@ (provide 'wl) ; circular dependency (require 'wl-folder) (require 'wl-summary) +(require 'wl-action) (require 'wl-thread) (require 'wl-address) +(require 'wl-news) (wl-draft-mode-setup) (require 'wl-draft) @@ -71,7 +73,8 @@ (require 'smtp) (require 'wl-score) (require 'wl-fldmgr) - (require 'wl-mime)) + (require 'wl-mime) + (require 'wl-spam)) (defun wl-plugged-init (&optional make-alist) (setq elmo-plugged wl-plugged) @@ -109,7 +112,10 @@ (progn ;; flush queue!! (elmo-dop-queue-flush) - (unless queue-flush-only (wl-biff-start)) + (unless queue-flush-only + (when wl-biff-check-folder-list + (wl-biff-check-folders) + (wl-biff-start))) (if (and wl-draft-enable-queuing wl-auto-flush-queue) (wl-draft-queue-flush)) @@ -629,23 +635,33 @@ Entering Plugged mode calls the value of `wl-plugged-mode-hook'." (wl-save-status 'keep-summary) (run-hooks 'wl-save-hook)) +(defun wl-execute-temp-marks () + "Execute temporary marks in summary buffers." + (interactive) + (let ((summaries (wl-collect-summary))) + (while summaries + (with-current-buffer (car summaries) + (wl-summary-exec-with-confirmation) + (wl-summary-save-status)) + (setq summaries (cdr summaries))))) + (defun wl-save-status (&optional keep-summary) (message "Saving summary and folder status...") - (let (summary-buf) - (save-excursion - (let ((summaries (wl-collect-summary))) - (while summaries - (with-current-buffer (car summaries) - (unless keep-summary - (wl-summary-cleanup-temp-marks)) - (wl-summary-save-view) - (elmo-folder-commit wl-summary-buffer-elmo-folder) - (unless keep-summary - (kill-buffer (car summaries)))) - (setq summaries (cdr summaries)))))) + (save-excursion + (let ((summaries (wl-collect-summary))) + (while summaries + (with-current-buffer (car summaries) + (unless keep-summary + (wl-summary-cleanup-temp-marks)) + (wl-summary-save-view) + (elmo-folder-commit wl-summary-buffer-elmo-folder) + (unless keep-summary + (kill-buffer (car summaries)))) + (setq summaries (cdr summaries))))) (wl-refile-alist-save) (wl-folder-info-save) (and (featurep 'wl-fldmgr) (wl-fldmgr-exit)) + (and (featurep 'wl-spam) (wl-spam-save-status)) (elmo-crosspost-message-alist-save) (message "Saving summary and folder status...done")) @@ -656,6 +672,7 @@ Entering Plugged mode calls the value of `wl-plugged-mode-hook'." (elmo-quit) (when wl-use-acap (funcall (symbol-function 'wl-acap-exit))) (wl-biff-stop) + (elmo-passwd-alist-clear) (run-hooks 'wl-exit-hook) (wl-save-status) (wl-folder-cleanup-variables) @@ -694,8 +711,15 @@ Entering Plugged mode calls the value of `wl-plugged-mode-hook'." (symbol-value 'wl-summary-subject-function)) (fset 'wl-summary-subject-filter-func-internal (symbol-value 'wl-summary-subject-filter-function)) + (wl-summary-define-mark-action) + (dolist (spec wl-summary-flag-alist) + (set-face-foreground + (make-face (intern + (format "wl-highlight-summary-%s-flag-face" (car spec)))) + (nth 1 spec))) (setq elmo-no-from wl-summary-no-from-message) (setq elmo-no-subject wl-summary-no-subject-message) + (wl-news-check) (setq wl-init t) ;; This hook may contain the functions `wl-plugged-init-icons' and ;; `wl-biff-init-icons' for reasons of system internal to accord @@ -703,36 +727,29 @@ Entering Plugged mode calls the value of `wl-plugged-mode-hook'." (run-hooks 'wl-init-hook))) (defun wl-check-environment (no-check-folder) - (unless wl-from (error "Please set `wl-from'")) + (unless wl-from (error "Please set `wl-from' to your mail address")) ;; Message-ID - (let (from domain) - (if wl-message-id-use-wl-from - (if (and (setq from (wl-address-header-extract-address wl-from)) - (string-match "^\\(.*\\)@\\(.*\\)$" from)) - (setq domain (match-string 2 from)) - (error "Please set `wl-from' to get valid Message-ID string.")) - (setq domain - (or wl-message-id-domain - (if wl-local-domain - (concat (system-name) "." wl-local-domain) - (system-name))))) - (unless (string-match "[^.]\\.[^.]" domain) - (error "Please set `wl-local-domain' to get valid FQDN")) - (if (string-match "@" domain) - (error "Please remove `@' from `wl-message-id-domain'")) - (if (string= wl-local-domain "localdomain") - (error "Please set `wl-local-domain'")) - (if (string= domain "localhost.localdomain") - (error "Please set `wl-message-id-domain'"))) + (when wl-insert-message-id + (let ((message-id (funcall wl-message-id-function)) + domain) + (unless (string-match "^<\\([^@]*\\)@\\([^@]*\\)>$" message-id) + (cond + ((string-match "@" wl-message-id-domain) + (error "Please remove `@' from `wl-message-id-domain'")) + (t + (error + "Check around `wl-message-id-function' to get valid Message-ID string")))) + (setq domain (match-string 2 message-id)) + (if (or (not (string-match "[^.]\\.[^.]" domain)) + (string= domain "localhost.localdomain")) + (elmo-warning + "Please set `wl-message-id-domain' to get valid Message-ID string.")))) ;; folders (when (not no-check-folder) (let ((draft-folder (wl-folder-get-elmo-folder wl-draft-folder)) (queue-folder (wl-folder-get-elmo-folder wl-queue-folder)) - (trash-folder (wl-folder-get-elmo-folder wl-trash-folder)) (lost+found-folder (wl-folder-get-elmo-folder elmo-lost+found-folder))) - (if (not (elmo-folder-message-file-p draft-folder)) - (error "%s is not allowed for draft folder" wl-draft-folder)) (unless (elmo-folder-exists-p draft-folder) (if (y-or-n-p (format "Draft Folder %s does not exist, create it? " @@ -747,12 +764,6 @@ Entering Plugged mode calls the value of `wl-plugged-mode-hook'." (elmo-folder-create queue-folder) (error "Queue Folder is not created"))) (when (not (eq no-check-folder 'wl-draft)) - (unless (elmo-folder-exists-p trash-folder) - (if (y-or-n-p - (format "Trash Folder %s does not exist, create it? " - wl-trash-folder)) - (elmo-folder-create trash-folder) - (error "Trash Folder is not created"))) (unless (elmo-folder-exists-p lost+found-folder) (elmo-folder-create lost+found-folder))) ;; tmp dir @@ -787,7 +798,7 @@ Entering Plugged mode calls the value of `wl-plugged-mode-hook'." (defun wl-check-variables-2 () (if (< wl-message-buffer-cache-size 1) - (error "`wl-message-buffer-cache-size' must be larger than 0.")) + (error "`wl-message-buffer-cache-size' must be larger than 0")) (when wl-message-buffer-prefetch-depth (if (not (< wl-message-buffer-prefetch-depth wl-message-buffer-cache-size)) @@ -802,7 +813,6 @@ If ARG (prefix argument) is specified, folder checkings are skipped." (interactive "P") (unless wl-init (wl-load-profile) - (wl-folder-init) (elmo-init)) (let (demo-buf check) (unless wl-init @@ -812,28 +822,28 @@ If ARG (prefix argument) is specified, folder checkings are skipped." (condition-case obj (progn (if check - (condition-case nil - (progn - (message "Checking environment...") - (wl-check-environment arg) - (message "Checking environment...done")) - ((error quit)))) - (message "Checking type of variables...") - (wl-check-variables) - (wl-check-variables-2) - (message "Checking type of variables...done") - (wl-plugged-init (wl-folder arg)) + (progn + (message "Checking environment...") + (wl-check-environment arg) + (message "Checking environment...done") + (message "Checking type of variables...") + (wl-check-variables) + (wl-check-variables-2) + (message "Checking type of variables...done"))) + (let ((inhibit-quit t)) + (wl-plugged-init (wl-folder))) (unless arg (run-hooks 'wl-auto-check-folder-pre-hook) (wl-folder-auto-check) - (run-hooks 'wl-auto-check-folder-hook)) - (unless arg (wl-biff-start))) + (run-hooks 'wl-auto-check-folder-hook))) (error (if (buffer-live-p demo-buf) (kill-buffer demo-buf)) - (setq wl-init nil) (signal (car obj)(cdr obj))) (quit)) + (when wl-biff-check-folder-list + (unless arg (wl-biff-check-folders)) + (wl-biff-start)) (if (buffer-live-p demo-buf) (kill-buffer demo-buf))) (run-hooks 'wl-hook))