* elmo-util.el (elmo-file-field-primitive-condition-match): Fixed
[elisp/wanderlust.git] / wl / wl-vars.el
index 4e9b112..85b895d 100644 (file)
@@ -1,8 +1,10 @@
 ;;; wl-vars.el -- Variable definitions for Wanderlust.
 
-;; Copyright 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 1998,1999,2000,2001 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 1998,1999,2000,2001 Masahiro MURATA <muse@ba2.so-net.ne.jp>
 
 ;; Author: Yuuichi Teranishi <teranisi@gohome.org>
+;;     Masahiro MURATA <muse@ba2.so-net.ne.jp>
 ;; Keywords: mail, net news
 
 ;; This file is part of Wanderlust (Yet Another Message Interface on Emacsen).
 ;;
 
 ;;; Commentary:
-;; 
+;;
 
 ;;; Code:
-;; 
+;;
 
 (require 'elmo-vars)
+(require 'elmo-util)
 
 (if (module-installed-p 'custom)
     (require 'custom))
 
-(defconst wl-appname  "Wanderlust")
-(defconst wl-version  elmo-version) ; equals to ELMO version.
-(defconst wl-codename "Raspberry Beret")
-
 ;;; Customizable Variables
 
 (defgroup wl nil
   "Wanderlust, a news and mail reading software."
   :tag "Wanderlust"
-  :link '(custom-manual "(wl-ja)Top")
+  :link (` (custom-manual
+           (, (if (and (boundp 'current-language-environment)
+                       (string-equal "Japanese"
+                                     (symbol-value 'current-language-environment)))
+                  "(wl-ja)Top"
+                "(wl)Top"))))
   :group 'news
   :group 'mail)
 
   :group 'wl)
 
 ;;; Emacsen
-(defconst wl-on-emacs20 (> emacs-major-version 19))
-
 (defconst wl-on-xemacs (featurep 'xemacs))
 
+(defconst wl-on-emacs21 (and (not wl-on-xemacs)
+                            (>= emacs-major-version 21)))
+
 (defconst wl-on-nemacs (fboundp 'nemacs-version))
 
 (defconst wl-on-mule (featurep 'mule))
 
 (defconst wl-on-mule3
-  (and wl-on-mule (or wl-on-xemacs wl-on-emacs20)))
-
-(require 'elmo-vars)
+  (and wl-on-mule (or wl-on-xemacs
+                     (> emacs-major-version 19))))
 
 (eval-when-compile
   (defun-maybe locate-data-directory (a)))
 (defvar wl-cs-cache wl-cs-local)
 
 (defvar wl-use-semi (module-installed-p 'mime-view) ; If nil, use tm.
-  "*Use SEMI or not")
-
-(defcustom wl-from (if (boundp 'user-mail-address)
-                      user-mail-address)
+  "*Use SEMI or not.")
+
+(defcustom wl-from (and user-mail-address
+                       (concat (and user-full-name
+                                    (concat (elmo-address-quote-specials
+                                             user-full-name)
+                                            " "))
+                               "<" user-mail-address ">"))
   "*From string used in draft."
-  :type 'string
+  :type  'string
   :group 'wl)
 
 (defcustom wl-user-mail-address-list nil
-  "*A list of user's mail addresses. 
+  "*A list of user's mail addresses.
 This list is used to judge whether an address is user's or not.
 You should set this variable if you use multiple e-mail addresses.
 If you don't have multiple e-mail addresses, you don't have to set this."
   :type '(repeat string)
   :group 'wl)
 
-(defcustom wl-organization nil
+(defcustom wl-organization (getenv "ORGANIZATION")
   "Organization name."
   :type '(choice (const :tag "none" nil)
                  string)
@@ -153,8 +161,12 @@ If you don't have multiple e-mail addresses, you don't have to set this."
   :group 'wl)
 
 (defcustom wl-icon-dir (if (fboundp 'locate-data-directory)
-                          (locate-data-directory "wl"))
-  "*Icon directory (XEmacs)."
+                          (locate-data-directory "wl")
+                        (let ((icons (expand-file-name "wl/icons/"
+                                                       data-directory)))
+                          (if (file-directory-p icons)
+                              icons)))
+  "*Icon directory (XEmacs or Emacs 21)."
   :type '(choice (const :tag "none" nil)
                 string)
   :group 'wl)
@@ -174,11 +186,11 @@ If you don't have multiple e-mail addresses, you don't have to set this."
   :type 'function
   :group 'wl-summary)
 
-;(defcustom wl-summary-search-parent-by-subject-regexp "^[ \t]*\\(\\[[^:]+[,: ][0-9]+\\]\\)?[ \t]*re"
-;   "*If message does not have in-reply-to field nor references field and
-; subject matches this regexp, search parent message by subject matching."
-;   :type 'string
-;   :group 'wl-summary)
+(defcustom wl-summary-search-parent-by-subject-regexp "^[ \t]*\\(\\[[^:]+[,: ][0-9]+\\]\\)?[ \t]*re[\\^[:> ]"
+  "*If message does not have in-reply-to field nor references field and
+ subject matches this regexp, search parent message by subject matching."
+  :type 'string
+  :group 'wl-summary)
 
 (defcustom wl-summary-update-confirm-threshold 500
   "*Confirm updating summary if message number is larger than this value."
@@ -187,7 +199,7 @@ If you don't have multiple e-mail addresses, you don't have to set this."
 
 ;; Important folders
 (defcustom wl-default-folder "%inbox"
-  "*Default folder used in wl-summary-goto-folder."
+  "*Default folder used in `wl-summary-goto-folder'."
   :type 'string
   :group 'wl)
 (defcustom wl-draft-folder "+draft"
@@ -224,19 +236,19 @@ If you don't have multiple e-mail addresses, you don't have to set this."
   :group 'wl-draft)
 
 (defcustom wl-auto-insert-x-face t
-  "*Insert X-Face: field automatically"
+  "*Insert X-Face: field automatically."
   :type 'boolean
   :group 'wl-draft)
 
 (defcustom wl-x-face-file "~/.xface"
-  "*If file exists and `wl-auto-insert-x-face' is non-nil, 
-X-Face field is inserted using its contents."
+  "*X-Face field is inserted using its contents.
+If file exists and `wl-auto-insert-x-face' is non-nil."
   :type 'file
   :group 'wl-draft)
 
 (defcustom wl-subscribed-mailing-list nil
-  "*Subscribed mailing list. You had better set this variable 
-if you set wl-insert-mail-followup-to as t."
+  "*Subscribed mailing list.
+You had better set this variable if you set 'wl-insert-mail-followup-to' as t."
   :type '(repeat string)
   :group 'wl-pref)
 
@@ -247,21 +259,27 @@ if you set wl-insert-mail-followup-to as t."
 
 (defcustom wl-envelope-from nil
   "*Envelope From used in SMTP.
-If nil, wl-from is used."
+If nil, `wl-from' is used."
   :type '(choice (const :tag "Same as 'From' field." nil)
                 string)
   :group 'wl)
 
+(defcustom wl-draft-add-references t
+  "*If non-nil, message-id of the cited message is inserted to the
+references field of the current draft."
+  :type 'boolean
+  :group 'wl)
+
 (defcustom wl-smtp-connection-type nil
   "*SMTP connection type.
 If nil, default smtp connection type is used."
   :type '(choice (const :tag "default" nil)
-                (const :tag "Use STARTTLS" starttls)
-                symbol)
+                (const :tag "Use STARTTLS" starttls)
+                symbol)
   :group 'wl)
 
 (defcustom wl-smtp-posting-user nil
-  "*SMTP authentication user. "
+  "*SMTP authentication user."
   :type '(choice (const :tag "none" nil)
                  string)
   :group 'wl)
@@ -280,7 +298,7 @@ If nil, default SMTP port number(25) is used."
   :group 'wl)
 
 (defcustom wl-smtp-authenticate-type nil
-  "*SMTP Authentication type. 
+  "*SMTP Authentication type.
 If nil, don't authenticate."
   :type '(choice (const :tag "none" nil)
                 (const :tag "PLAIN" "plain")
@@ -291,7 +309,7 @@ If nil, don't authenticate."
 
 (defcustom wl-pop-before-smtp-user nil
   "*POP3 user name to send mail using POP-before-SMTP.
-If nil, elmo-default-pop3-user is used.
+If nil, `elmo-default-pop3-user' is used.
 To use POP-before-SMTP,
 (setq wl-draft-send-mail-func 'wl-draft-send-mail-with-pop-before-smtp)"
   :type '(choice (const :tag "none" nil)
@@ -300,27 +318,27 @@ To use POP-before-SMTP,
 
 (defcustom wl-pop-before-smtp-server nil
   "*POP3 server for POP-before-SMTP.
-If nil, elmo-default-pop3-server is used."
+If nil, `elmo-default-pop3-server' is used."
   :type '(choice (const :tag "none" nil)
                  string)
   :group 'wl)
 
 (defcustom wl-pop-before-smtp-port nil
   "*POP3 port for POP-before-SMTP.
-If nil, elmo-default-pop3-port is used."
+If nil, `elmo-default-pop3-port' is used."
   :type '(choice (const :tag "none" nil)
                 integer string)
   :group 'wl)
 
-(defcustom wl-pop-before-smtp-ssl nil
-  "*Non-nil forces using SSL by default for POP-before-SMTP.
-If nil, elmo-default-pop3-ssl is used."
+(defcustom wl-pop-before-smtp-stream-type nil
+  "*Stream type for POP-before-SMTP.
+If nil, `elmo-default-pop3-stream-type' is used."
   :type 'boolean
   :group 'wl)
 
 (defcustom wl-pop-before-smtp-authenticate-type nil
-  "*Default Authentication type for POP-before-SMTP
-If nil, elmo-default-pop3-authenticate-type is used."
+  "*Default Authentication type for POP-before-SMTP.
+If nil, `elmo-default-pop3-authenticate-type' is used."
   :type '(choice (const :tag "none" nil)
                 (const :tag "APOP" "apop")
                 (const :tag "POP3" "user"))
@@ -328,26 +346,26 @@ If nil, elmo-default-pop3-authenticate-type is used."
 
 (defcustom wl-nntp-posting-server nil
   "*NNTP server name to post news.
-If nil, elmo-default-nntp-server is used."
+If nil, `elmo-default-nntp-server' is used."
   :type '(choice (const :tag "none" nil)
                  string)
   :group 'wl)
 (defcustom wl-nntp-posting-user nil
   "*NNTP user name to post news for authinfo.
-If nil, elmo-default-nntp-user is used.
+If nil, `elmo-default-nntp-user' is used.
 If nil, don't authenticate."
   :type '(choice (const :tag "none" nil)
                  string)
   :group 'wl)
 (defcustom wl-nntp-posting-port nil
   "*NNTP port to post news.
-If nil, elmo-default-nntp-port is used."
+If nil, `elmo-default-nntp-port' is used."
   :type '(choice (const :tag "none" nil)
                 integer string)
   :group 'wl)
-(defcustom wl-nntp-posting-ssl nil
-  "*Non-nil forces using SSL to post news.
-If nil, elmo-default-nntp-ssl is used."
+(defcustom wl-nntp-posting-stream-type nil
+  "*Stream type for posting Netnews.
+If nil, `elmo-default-nntp-stream-type' is used."
   :type 'boolean
   :group 'wl)
 
@@ -387,7 +405,10 @@ when `wl-prefetch-confirm' is non-nil."
 
 ;;;; Hooks
 (defvar wl-folder-mode-hook nil
-  "A hook called when wanderlust folder mode is started.")
+  "A hook called when wanderlust folder mode is started.
+This hook may contain the functions `wl-folder-init-icons' and
+`wl-setup-folder' for reasons of system internal to accord facilities
+for the Emacs variants.")
 (defvar wl-summary-toggle-disp-on-hook nil
   "A hook called when message is toggled.")
 (defvar wl-summary-toggle-disp-off-hook nil
@@ -399,7 +420,10 @@ when `wl-prefetch-confirm' is non-nil."
 (defvar wl-summary-toggle-disp-folder-message-resumed-hook nil
   "A hook called when message window is resumed when folder is toggled.")
 (defvar wl-summary-mode-hook nil
-  "A hook called when summary mode is started.")
+  "A hook called when summary mode is started.
+This hook may contain the function `wl-setup-summary' for reasons of
+system internal to accord facilities for the Emacs variants.")
+
 (defvar wl-summary-prepared-pre-hook nil
   "A hook called before the summary buffer has been generated.")
 (defvar wl-summary-prepared-hook nil
@@ -410,10 +434,16 @@ when `wl-prefetch-confirm' is non-nil."
   "A hook called when unread message is displayed.")
 (defvar wl-summary-edit-addresses-hook nil
   "A hook called when address book is edited.")
+(defvar wl-summary-buffer-message-saved-hook nil
+  "A hook called when msgdb is saved.")
+(defvar wl-summary-buffer-mark-saved-hook nil
+  "A hook called when mark is saved.")
 (defvar wl-summary-divide-thread-when-subject-changed nil
   "Divide thread when subject is changed.")
 (defvar wl-init-hook nil
-  "A hook called when initialization is finished.")
+  "A hook called when initialization is finished.  This hook may contain
+the functions `wl-plugged-init-icons' and `wl-biff-init-icons' for
+reasons of system internal to accord facilities for the Emacs variants.")
 (defvar wl-hook nil
   "A hook called when Wanderlust is invoked.")
 (defvar wl-reply-hook nil
@@ -422,7 +452,7 @@ when `wl-prefetch-confirm' is non-nil."
   "A hook called when Draft is prepared.")
 (defvar wl-draft-reedit-hook nil
   "A hook called when Draft is re-edited.")
-(defvar wl-draft-send-hook nil
+(defvar wl-draft-send-hook '(wl-draft-config-exec)
   "A hook called on the draft editing buffer before sending process starts.")
 (defvar wl-mail-send-pre-hook nil
   "A hook called just before the mail sending process starts.")
@@ -440,10 +470,16 @@ when `wl-prefetch-confirm' is non-nil."
   "A hook called when header is highlighted.")
 (defvar wl-highlight-message-hook nil
   "A hook called when message is highlighted.")
+(defvar wl-save-hook nil
+  "A hook called when save summary and folder status.")
 (defvar wl-exit-hook nil
   "A hook called when exit wanderlust.")
 (defvar wl-folder-suspend-hook nil
   "A hook called when suspend wanderlust.")
+(defvar wl-biff-notify-hook '(ding)
+  "A hook called when a biff-notification is invoked.")
+(defvar wl-biff-unnotify-hook nil
+  "A hook called when a biff-notification is removed.")
 (defvar wl-auto-check-folder-pre-hook nil
   "A hook called before auto check folders.")
 (defvar wl-auto-check-folder-hook nil
@@ -464,6 +500,8 @@ when `wl-prefetch-confirm' is non-nil."
   "A hook called when archived.")
 (defvar wl-summary-line-inserted-hook nil
   "A hook called when summary line is inserted.")
+(defvar wl-summary-insert-headers-hook nil
+  "A hook called when insert header for search header.")
 (defvar wl-thread-update-children-number-hook nil
   "A hook called when children number is updated.")
 (defvar wl-folder-update-access-group-hook nil
@@ -478,6 +516,7 @@ when `wl-prefetch-confirm' is non-nil."
   "A hook called when score mode is started.")
 (defvar wl-make-plugged-hook nil
   "A hook called when make plugged alist.")
+
 (defvar wl-plugged-exit-hook nil
   "A hook called when exit plugged mode.")
 
@@ -506,8 +545,10 @@ Prepared candidates are 'wl-draft-send-mail-with-smtp,
   '(("Reply-To" . (("Reply-To") nil nil))
     ("Mail-Reply-To" . (("Mail-Reply-To") nil nil))
     ("From" . (("From") nil nil)))
-  "Alist of cons cell of 
+  "Alist of cons cell of
 ('field-name' .  ('fields for To' 'fields for Cc' 'fields for Newsgroups'))
+'field-name' is a string.
+'fields for ***' is a list of strings.
 If car of each cons cell exists in original message,
 cdr of each cons cell is used for draft message.
 Default is for 'reply-to-author'."
@@ -517,12 +558,13 @@ Default is for 'reply-to-author'."
                             (repeat :tag "Fields For Cc" string)
                             (repeat :tag "Fields For Newsgroups" string))))
   :group 'wl-draft)
-  
+
 (defcustom wl-draft-reply-without-argument-list
   '(("Followup-To" . (nil nil ("Followup-To")))
     ("Mail-Followup-To" . (("Mail-Followup-To") nil ("Newsgroups")))
+    ("Reply-To" . (("Reply-To") ("To" "Cc" "From") ("Newsgroups")))
     ("From" . (("From") ("To" "Cc") ("Newsgroups"))))
-  "Alist of cons cell of 
+  "Alist of cons cell of
 ('field-name' .  ('fields for To' 'fields for Cc' 'fields for Newsgroups'))
 'field-name' is a string.
 'fields for ***' is a list of strings.
@@ -536,13 +578,55 @@ Default is for 'reply-to-all'."
                             (repeat :tag "Fields For Newsgroups" string))))
   :group 'wl-draft)
 
+(defcustom wl-draft-reply-myself-with-argument-list
+  '(("Followup-To" . (("To") ("Cc") ("Followup-To")))
+    ("Newsgroups" . (("To") ("Cc") ("Newsgroups")))
+    ("From" . (("To") ("Cc") nil)))
+  "Alist of cons cell of
+('field-name' .  ('fields for To' 'fields for Cc' 'fields for Newsgroups'))
+'field-name' is a string.
+'fields for ***' is a list of strings.
+If car of each cons cell exists in original message,
+cdr of each cons cell is used for draft message.
+Default is for 'reply-to-me'."
+  :type '(repeat (cons (choice (string :tag "Field Name")
+                              (repeat (string :tag "Field Name")))
+                      (list (repeat :tag "Fields For To" string)
+                            (repeat :tag "Fields For Cc" string)
+                            (repeat :tag "Fields For Newsgroups" string))))
+  :group 'wl-draft)
+
+(defcustom wl-draft-reply-myself-without-argument-list
+  '(("Followup-To" . (("To") ("Cc") ("Followup-To")))
+    ("Newsgroups" . (("To") ("Cc") ("Newsgroups")))
+    ("From" . (("To") ("Cc") nil)))
+  "Alist of cons cell of
+('field-name' .  ('fields for To' 'fields for Cc' 'fields for Newsgroups'))
+'field-name' is a string.
+'fields for ***' is a list of strings.
+If car of each cons cell exists in original message,
+cdr of each cons cell is used for draft message.
+Default is for 'followup-to-me'."
+  :type '(repeat (cons (choice (string :tag "Field Name")
+                              (repeat (string :tag "Field Name")))
+                      (list (repeat :tag "Fields For To" string)
+                            (repeat :tag "Fields For Cc" string)
+                            (repeat :tag "Fields For Newsgroups" string))))
+  :group 'wl-draft)
+
 (defcustom wl-draft-always-delete-myself nil
   "*Always delete myself from reciepient if non-nil."
   :type 'boolean
   :group 'wl-draft)
 
+(defcustom wl-draft-delete-myself-from-bcc-fcc nil
+  "*Do not insert bcc or fcc if To and Cc fields is a member of
+`wl-subscribed-mailing-list'"
+  :type 'boolean
+  :group 'wl-draft)
+
 (defcustom wl-draft-resume-folder-window t
-  "*Resume folder window in wl-draft-hide"
+  "*Resume folder window in `wl-draft-hide'."
   :type 'boolean
   :group 'wl-draft)
 
@@ -556,27 +640,58 @@ Default is for 'reply-to-all'."
   :type 'boolean
   :group 'wl-draft)
 
-;;;; 
+(defcustom wl-draft-remove-group-list-contents t
+  "*If non-nil, remove group list contents in `wl-draft-send-mail-with-smtp'."
+  :type 'boolean
+  :group 'wl-draft)
+
+;;;;
 (defcustom wl-init-file "~/.wl"
   "*User customization setting file."
   :type 'file
   :group 'wl)
 
 (defcustom wl-folders-file "~/.folders"
-  "*Folders file"
+  "*Folders file."
   :type 'file
   :group 'wl)
 
 (defcustom wl-address-file "~/.addresses"
-  "*Addresses file"
+  "*Addresses file."
   :type 'file
   :group 'wl)
 
 (defcustom wl-alias-file "~/.im/Aliases"
-  "*Alias file for completion"
+  "*Alias file for completion."
   :type 'file
   :group 'wl)
 
+(defcustom wl-ldap-server "localhost"
+  "*LDAP server."
+  :type '(string :tag "Server")
+  :group 'wl)
+
+(defcustom wl-ldap-port nil
+  "*LDAP port."
+  :type '(choice (const :tag "Default port" nil)
+                integer)
+  :group 'wl)
+
+(defcustom wl-ldap-base "c=US"
+  "*LDAP base."
+  :type '(string :tag "Base")
+  :group 'wl)
+
+(defcustom wl-ldap-objectclass "person"
+  "*LDAP objectclass."
+  :type 'string
+  :group 'wl)
+
+(defcustom wl-use-ldap nil
+  "*If non-nil, use LDAP for address completion."
+  :type 'boolean
+  :group 'wl)
+
 (defcustom wl-folder-info-save t
   "If non-nil, save elmo-folder-info-alist."
   :type 'boolean
@@ -621,9 +736,12 @@ Default is for 'reply-to-all'."
   :type '(repeat string)
   :group 'wl-summary)
 
-(defcustom wl-summary-fix-timezone "JST"
-  "Non-nil forces to fix timezone of summary date."
-  :type 'string
+(defcustom wl-summary-fix-timezone nil
+  "*Time zone of the date string in summary mode. 
+If nil, it is adjust to the default time zone information
+\(system's default time zone or environment variable TZ\)."
+  :type '(choice (const :tag "Default time zone" nil)
+                string)
   :group 'wl-summary)
 
 (defcustom wl-summary-default-score 0
@@ -641,8 +759,8 @@ This variable is local to the summary buffers."
                 integer)
   :group 'wl-score)
 
-(defcustom wl-summary-temp-above nil
-  "*Mark all messages with a score above this variable as temp.
+(defcustom wl-summary-target-above nil
+  "*Mark all messages with a score above this variable as target.
 This variable is local to the summary buffers."
   :type '(choice (const :tag "off" nil)
                 integer)
@@ -662,7 +780,7 @@ This variable is local to the summary buffers."
                 integer)
   :group 'wl-score)
 
-(defcustom wl-summary-score-marks 
+(defcustom wl-summary-score-marks
   (list wl-summary-new-mark)
   "Persistent marks to scoring."
   :type '(repeat (string :tag "Mark"))
@@ -674,13 +792,14 @@ This variable is local to the summary buffers."
   :group 'wl-pref)
 
 (defcustom wl-summary-rescore-partial-threshold 200
-  "*Summary is not scored entirely if there are messages more than this value
-in sync-all or rescan."
+  "*Summary is not scored entirely if there are messages more than this value.
+In sync-all or rescan."
   :type 'integer
   :group 'wl-score)
 
 (defcustom wl-score-files-dir (concat elmo-msgdb-dir elmo-path-sep)
-  "*Name of the directory where score files will be stored (default \"~/.elmo\")."
+  "*Name of the directory where score files will be stored.
+(default \"~/.elmo\")."
   :type 'directory
   :group 'wl)
 
@@ -773,7 +892,7 @@ This can either be a regular expression or list of regular expressions."
 
 (defcustom wl-draft-fields
   '("To:" "Cc:" "Bcc:" "FCC:" "Distribution:" "Organization:"
-    "Newsgroups:" "Followup-To:" "Mail-Followup-To:" "From:" "Reply-To:") 
+    "Newsgroups:" "Followup-To:" "Mail-Followup-To:" "From:" "Reply-To:")
   "Fields used in draft mode."
   :type '(repeat (string :tag "Field"))
   :group 'wl-draft)
@@ -832,6 +951,12 @@ ex.
   :group 'wl-draft
   :group 'wl-pref)
 
+(defcustom wl-draft-use-cache nil
+  "*If non-nil, sending message is cached."
+  :type 'boolean
+  :group 'wl-draft
+  :group 'wl-pref)
+
 (defcustom wl-auto-flush-queue t
   "*If non-nil, sending queue is flushed when network status is toggled."
   :type 'boolean
@@ -839,15 +964,19 @@ ex.
   :group 'wl-pref)
 
 (defcustom wl-draft-reply-buffer-style 'split
-  "'split or 'full"
+  "'split or 'full."
   :type '(radio (const split)
                (const full))
   :group 'wl-draft)
 
 (defcustom wl-draft-queue-save-variables
-  '(wl-envelope-from
-    wl-smtp-posting-server smtp-service
-    wl-nntp-posting-server elmo-default-nntp-port)
+  '(wl-envelope-from wl-from
+    wl-smtp-posting-server wl-smtp-posting-user wl-smtp-posting-port
+    wl-smtp-authenticate-type wl-smtp-connection-type
+    wl-pop-before-smtp-server wl-pop-before-smtp-user wl-pop-before-smtp-port
+    wl-pop-before-smtp-stream-type wl-pop-before-smtp-authenticate-type
+    wl-nntp-posting-server wl-nntp-posting-server
+    wl-nntp-posting-user wl-nntp-posting-port wl-nntp-posting-stream-type)
   "*Saving variables in queue info."
   :type '(repeat (sexp :tag "Variable"))
   :group 'wl-draft)
@@ -863,7 +992,7 @@ ex.
   :group 'wl-draft)
 
 (defcustom wl-summary-default-number-column 5
-  "number of columns in summary buffer."
+  "Number of columns in summary buffer."
   :type 'integer
   :group 'wl-summary)
 
@@ -882,16 +1011,24 @@ ex.
   :group 'wl-summary
   :group 'wl-highlight)
 
+(defcustom wl-summary-lazy-highlight (and (boundp 'window-scroll-functions)
+                                         (not wl-on-xemacs))
+  "Non-nil forces lazy summary highlighting using `window-scroll-functions'."
+  :type 'boolean
+  :group 'wl-summary
+  :group 'wl-highlight)
+
 (defcustom wl-summary-highlight-partial-threshold 1000
-  "Summary is not highlighted entirely 
-if there are lines more than this value."
+  "Summary is not highlighted entirely if there are lines more than this value.
+Available if only `wl-summary-lazy-highlight' is nil."
   :type 'integer
   :group 'wl-summary
   :group 'wl-highlight)
 
 (defcustom wl-summary-partial-highlight-above-lines 30
-  "If Summary has lines more than wl-summary-highlight-partial-threshold,
-Summary lines are highlighted partialy above current position."
+  "If Summary has lines more than `wl-summary-highlight-partial-threshold',
+Summary lines are highlighted partialy above current position.
+Available if only `wl-summary-lazy-highlight' is nil."
   :type 'integer
   :group 'wl-summary
   :group 'wl-highlight)
@@ -911,19 +1048,19 @@ Summary lines are highlighted partialy above current position."
   :type 'file
   :group 'wl-summary)
 (defcustom wl-summary-view-file ".wl-summary-view"
-  "*current summary view."
+  "*Current summary view."
   :type 'file
   :group 'wl-summary)
 (defcustom wl-thread-top-file ".wl-thread-top"
-  "*current thread top entity... obsolete."
+  "*Current thread top entity... obsolete."
   :type 'file
   :group 'wl-summary)
 (defcustom wl-thread-entity-file ".wl-thread-entity"
-  "*thread entities."
+  "*Thread entities."
   :type 'file
   :group 'wl-summary)
 (defcustom wl-thread-entity-list-file ".wl-thread-entity-list"
-  "*thread top entity list."
+  "*Thread top entity list."
   :type 'file
   :group 'wl-summary)
 
@@ -932,7 +1069,7 @@ Summary lines are highlighted partialy above current position."
   :type 'function
   :group 'wl-pref)
 
-(defcustom wl-ps-print-buffer-func 
+(defcustom wl-ps-print-buffer-func
   (if window-system 'ps-print-buffer-with-faces 'ps-print-buffer)
   "A function to print current buffer with ps-print."
   :type 'function
@@ -946,8 +1083,8 @@ Summary lines are highlighted partialy above current position."
 
 (defcustom wl-use-folder-petname
   '(modeline)
-  "*List of situation using folder petname. Allowed situations are:
-
+  "*List of situation using folder petname.
+Allowed situations are:
   modeline    : displayed on modeline.
   ask-folder  : displayed on minibuffer when ask folder.
   read-folder : can used for completion at `wl-summary-read-folder'."
@@ -958,7 +1095,7 @@ Summary lines are highlighted partialy above current position."
   :group 'wl-pref)
 
 (defcustom wl-folder-petname-alist nil
-  "A list of (realname . petname)"
+  "A list of (realname . petname)."
   :type '(repeat (cons (string :tag "Realname") (string :tag "Petname")))
   :group 'wl-folder)
 
@@ -973,7 +1110,7 @@ Summary lines are highlighted partialy above current position."
   :group 'wl-pref)
 
 (defcustom wl-local-domain nil
-  "*Domain part of this client (without hostname).  
+  "*Domain part of this client (without hostname).
 Set this if (system-name) does not return FQDN."
   :type '(choice (const :tag "Use System Name" nil)
                  string)
@@ -990,23 +1127,46 @@ Set this if (system-name) does not return FQDN."
   :type 'boolean
   :group 'wl-pref)
 
+(defcustom wl-message-truncate-lines default-truncate-lines
+  "*Truncate lines in Message Buffer."
+  :type 'boolean
+  :group 'wl-pref)
+
+(defcustom wl-draft-truncate-lines default-truncate-lines
+  "*Truncate lines in Draft Buffer."
+  :type 'boolean
+  :group 'wl-draft
+  :group 'wl-pref)
+
 (defcustom wl-message-scroll-amount 5
   "*Scroll amount by SPC key."
   :type 'integer
   :group 'wl-pref)
 
 (defcustom wl-message-window-size '(1 . 4)
-  "*Size of summary and message window. cons cell of (Summary : Message)."
+  "*Size of summary and message window.  cons cell of (Summary : Message)."
   :type '(cons integer integer)
   :group 'wl-pref)
 
-(defcustom wl-message-sort-field-list '("Return-Path" "Received" "^To" "^Cc" 
+(defcustom wl-message-sort-field-list '("Return-Path" "Received" "^To" "^Cc"
                                        "Newsgroups" "Subject" "^From")
-  "*Sort order of header fields. Each elements are regexp of field name.
+  "*Sort order of header fields.  Each elements are regexp of field name.
 (Not valid on tm.)"
   :type '(repeat (string :tag "Field Regexp"))
   :group 'wl-pref)
 
+(defcustom wl-message-ignored-field-list nil
+  "All fields that match this list will be hidden in message buffer.
+Each elements are regexp of field-name."
+  :type '(repeat (string :tag "Field Regexp"))
+  :group 'wl-pref)
+
+(defcustom wl-message-visible-field-list nil
+  "All fields that match this list will be displayed in message buffer.
+Each elements are regexp of field-name."
+  :type '(repeat (string :tag "Field Regexp"))
+  :group 'wl-pref)
+
 (defcustom wl-folder-window-width 20
   "*Width of folder window."
   :type 'integer
@@ -1014,11 +1174,21 @@ Set this if (system-name) does not return FQDN."
   :group 'wl-pref)
 
 (defcustom wl-summary-recenter t
-  "*Recenter on redisplay"
+  "*Recenter on redisplay."
   :type 'boolean
   :group 'wl-summary
   :group 'wl-pref)
 
+(defcustom wl-folder-use-frame nil
+  "*Use dedicated frame for folder mode if non-nil."
+  :type 'boolean
+  :group 'wl-pref)
+
+(defcustom wl-summary-use-frame nil
+  "*Use dedicated frame for each folder summary if non-nil."
+  :type 'boolean
+  :group 'wl-pref)
+
 (defcustom wl-stay-folder-window nil
   "*Stay folder window when folder is selected if non-nil."
   :type 'boolean
@@ -1030,6 +1200,18 @@ Set this if (system-name) does not return FQDN."
   :group 'wl-draft
   :group 'wl-pref)
 
+(defcustom wl-draft-reply-use-address-with-full-name t
+  "*Use address with full-name in the draft of replied message."
+  :type 'boolean
+  :group 'wl-pref
+  :group 'wl-draft)
+
+(defcustom wl-subject-prefix-regexp "^[ \t]*\\([Rr][Ee][:>][ \t]*\\)*[ \t]*"
+  "*Regexp matching \"Re: \" in the subject line."
+  :type 'regexp
+  :group 'wl-draft
+  :group 'wl-pref)
+
 (defcustom wl-folder-many-unsync-threshold 70
   "*Folders which contains messages more than this number are highlighted
 with wl-highlight-folder-many-face."
@@ -1040,7 +1222,7 @@ with wl-highlight-folder-many-face."
 (defcustom wl-fcc nil
   "*Folder Carbon Copy."
   :type '(choice (const :tag "disable" nil)
-                 string)
+                 string function)
   :group 'wl-draft
   :group 'wl-pref)
 
@@ -1080,7 +1262,8 @@ with wl-highlight-folder-many-face."
 
 (defcustom wl-summary-width 80
   "*Set summary line width if non nil."
-  :type 'integer
+  :type '(choice (const :tag "Don't truncate" nil)
+                integer)
   :group 'wl-summary
   :group 'wl-pref)
 
@@ -1088,12 +1271,13 @@ with wl-highlight-folder-many-face."
   "*Default field for pick."
   :type '(radio (const "From")
                (const "Subject")
-               (const "Date")
                (const "To")
                (const "Cc")
                (const "Body")
                (const "Since")
                (const "Before")
+               (const "Last")
+               (const "First")
                (string :tag "Other"))
   :group 'wl-summary)
 
@@ -1103,6 +1287,12 @@ with wl-highlight-folder-many-face."
   :group 'wl-summary
   :group 'wl-pref)
 
+(defcustom wl-subject-length-limit 35
+  "*Subject width in summary."
+  :type 'integer
+  :group 'wl-summary
+  :group 'wl-pref)
+
 (defcustom wl-mime-charset (if wl-on-nemacs
                               'iso-2022-jp
                             'x-ctext)
@@ -1119,7 +1309,7 @@ with wl-highlight-folder-many-face."
 (defcustom wl-highlight-background-mode  (if (boundp 'hilit-background-mode)
                                             (or hilit-background-mode 'dark)
                                           'dark)
-  "*Background mode of highlight (for Old Emacsen). 'dark or 'light"
+  "*Background mode of highlight (for Old Emacsen).  'dark or 'light."
   :type '(radio (const dark)
                (const light))
   :group 'wl-highlight)
@@ -1144,10 +1334,10 @@ might set this variable to '(\"-f\" \"you@some.where\")."
   :type '(repeat (string :tag "Argument"))
   :group 'wl-draft)
 
-(defcustom wl-rejected-letter-start 
+(defcustom wl-rejected-letter-start
   "^[\t ]*-+[\t ]+\\(original\\|\\(\\(the \\)?unsent\\)\\) message\\( follows\\)?[\t ]+-+[\t ]*$"
   "Regexp specifying the beginning of the wrapper around a returned letter.
-  This wrapper is generated by the mail system when rejecting a letter."
+This wrapper is generated by the mail system when rejecting a letter."
   :type 'regexp
   :group 'wl-draft)
 
@@ -1166,7 +1356,7 @@ might set this variable to '(\"-f\" \"you@some.where\")."
   :type '(string :tag "Folder")
   :group 'wl-pref)
 
-(defcustom wl-summary-auto-refile-skip-marks 
+(defcustom wl-summary-auto-refile-skip-marks
   (list wl-summary-new-mark
        wl-summary-unread-uncached-mark
        wl-summary-unread-cached-mark)
@@ -1176,14 +1366,14 @@ might set this variable to '(\"-f\" \"you@some.where\")."
 
 (defcustom wl-summary-reserve-mark-list
   (list "o" "O" "D")
-  "If a message is already marked as temporal marks in this list, 
+  "If a message is already marked as temporal marks in this list,
 the message is not marked by any mark command."
   :type '(repeat (string :tag "Temp-Mark"))
   :group 'wl-summary)
 
 (defcustom wl-summary-skip-mark-list
   (list "D")
-  "If a message is already marked as temporal marks in this list, 
+  "If a message is already marked as temporal marks in this list,
 the message is skipped at cursor move."
   :type '(repeat (string :tag "Temp-Mark"))
   :group 'wl-summary)
@@ -1191,7 +1381,7 @@ the message is skipped at cursor move."
 (defcustom wl-summary-incorporate-marks
   (list wl-summary-new-mark
        wl-summary-unread-uncached-mark)
-  "Persistent marks to prefetch at `wl-summary-incorporate'"
+  "Persistent marks to prefetch at `wl-summary-incorporate'."
   :type '(repeat (string :tag "Mark"))
   :group 'wl-summary)
 
@@ -1211,12 +1401,13 @@ e.x.
   :group 'wl-pref)
 
 (defcustom wl-strict-diff-folders nil
-  "Folders in this list are checked its unsync message number strictly."
-  :type '(repeat (string :tag "Folder"))
+  "List of regexps matching folders of which Wanderlust seriously counts unsync messages."
+  :type '(choice (const :tag "Off" nil)
+                (repeat (regexp :tag "Folder Regexp")))
   :group 'wl-folder)
 
 (defcustom wl-folder-use-server-diff t
-  "Checked unread message number on IMAP4 server. 
+  "Checked unread message number on IMAP4 server.
 Only IMAP4 folders have an effect."
   :type 'boolean
   :group 'wl-folder)
@@ -1229,7 +1420,7 @@ Only IMAP4 folders have an effect."
   :group 'wl-folder)
 
 (defcustom wl-auto-check-folder-name nil
-  "*The folder specified by this variable will be automatically checked 
+  "*The folder specified by this variable will be automatically checked
 at start time."
   :type '(choice (string :tag "Folder")
                 (repeat (string :tag "Folder"))
@@ -1237,7 +1428,7 @@ at start time."
   :group 'wl-folder)
 
 (defcustom wl-auto-uncheck-folder-list '("\\$.*")
-  "All folders that match this list won't be checked when group is 
+  "All folders that match this list won't be checked when group is
 automatically checked (or desktop is checked).
 This value is preceded by wl-auto-check-folder-list.
 Each elements are regexp of folder name."
@@ -1245,14 +1436,81 @@ Each elements are regexp of folder name."
   :group 'wl-folder)
 
 (defcustom wl-auto-check-folder-list nil
-  "All folders that match this list are checked when group is 
+  "All folders that match this list are checked when group is
 automatically checked (or desktop is checked).
 This value precedes wl-auto-uncheck-folder-list.
 Each elements are regexp of folder name."
   :type '(repeat (regexp :tag "Folder Regexp"))
   :group 'wl-folder)
 
-(defcustom wl-interactive-send nil
+(defcustom wl-show-plug-status-on-modeline t
+  "If it is non-nil, show plugged status in modeline."
+  :type 'boolean
+  :group 'wl-highlight)
+
+(defcustom wl-plug-state-indicator-on  " [ON] "
+  "String used to show plugged status ON."
+  :type 'string
+  :group 'wl-highlight)
+
+(defcustom wl-plug-state-indicator-off " [--] "
+  "String used to show plugged status OFF."
+  :type 'string
+  :group 'wl-highlight)
+
+(defcustom wl-biff-check-folder-list nil
+  "All folders that match this list are automatically checked
+every intervals specified by wl-biff-check-interval."
+  :type '(repeat (regexp :tag "Folder Regexp"))
+  :group 'wl-highlight)
+
+(defcustom wl-biff-check-interval 40
+  "Number of seconds between updates of new mails in the mode line."
+  :type 'integer
+  :group 'wl-highlight)
+
+(defcustom wl-biff-state-indicator-on (if (and (featurep 'xemacs)
+                                              (not (featurep 'mule)))
+                                         "[Mail]"
+                                       (decode-coding-string
+                                        ;; Youbin mark
+                                        (read "\"[\e$B\\\")\e(B]\"")
+                                        (if (boundp 'MULE)
+                                            '*iso-2022-jp*
+                                          'iso-2022-jp)))
+  "String used to show biff status ON."
+  :type 'string
+  :group 'wl-highlight)
+
+(defcustom wl-biff-state-indicator-off (if (and (featurep 'xemacs)
+                                               (not (featurep 'mule)))
+                                          "[--]"
+                                        ;; Japanese short hyphen
+                                        "[\e$B!>\e(B]")
+  "String used to show biff status OFF."
+  :type 'string
+  :group 'wl-highlight)
+
+(defcustom wl-mode-line-display-priority-list '(biff plug title)
+  "Displaying order of items to be shown in modeline.  The first item will
+be placed in the leftmost.  The significant items are `biff' and `plug';
+otherwise, e.g. `title', corresponds to the things except for the biff
+staus nor the plugged status.  The default order is '(biff plug title)
+even if the value of this option is set to nil.  Here are some samples:
+
+;; Plugged status first:
+\(setq wl-mode-line-display-priority-list '(plug))
+
+;; Biff status, Title of Wanderlust, Plugged status:
+\(setq wl-mode-line-display-priority-list '(biff title plug))
+
+"
+  :type '(repeat (radio (const :format "%v " biff)
+                       (const :format "%v " plug)
+                       (sexp :tag "Other" :value title)))
+  :group 'wl-highlight)
+
+(defcustom wl-interactive-send t
   "*If non-nil, require your confirmation when sending draft message."
   :type 'boolean
   :group 'wl-pref)
@@ -1274,7 +1532,7 @@ If this variable is `new', precede \"N\" mark."
 
 (defcustom wl-summary-move-direction-toggle t
   "*If non-nil, search direction for the next message will be determined
-depends on previous search direction. 
+depends on previous search direction.
 It uses wl-summary-move-direction-downward as a direction flag."
   :type 'boolean
   :group 'wl-summary)
@@ -1286,8 +1544,8 @@ It uses wl-summary-move-direction-downward as a direction flag."
 
 (defcustom wl-auto-select-next nil
   "*If non-nil, offer to go to the next folder from the end of the previous.
-If the value is the symbol `unread', go to the next folder 
-that no unread message exists. If the value is the symbol `skip-no-unread',
+If the value is the symbol `unread', go to the next folder
+that no unread message exists.  If the value is the symbol `skip-no-unread',
 skip the folder that no unread message exists.
 
 See also variable `wl-summary-next-no-unread-command'."
@@ -1298,7 +1556,7 @@ See also variable `wl-summary-next-no-unread-command'."
   :group 'wl-pref)
 
 (defcustom wl-cache-prefetch-folder-type-list '(imap4 nntp)
-  "*All folder types that match this list prefetch next message, 
+  "*All folder types that match this list prefetch next message,
 and reserved buffer cache."
   :type '(set (const localdir)
              (const localnews)
@@ -1310,7 +1568,7 @@ and reserved buffer cache."
   :group 'wl-pref)
 
 (defcustom wl-cache-prefetch-folder-list nil
-  "*All folders that match this list prefetch next message, 
+  "*All folders that match this list prefetch next message,
 and reserved buffer cache.
 e.x.
 '(\"^[-%]\")"
@@ -1330,7 +1588,9 @@ e.x.
 (defcustom wl-summary-always-sticky-folder-list nil
   "All folders that match this list has sticky summary.
 Each elements are regexp of folder name."
-  :type '(repeat (regexp :tag "Folder Regexp"))
+  :type '(radio (const :tag "none" nil)
+               (const :tag "all" t)
+               (repeat (regexp :tag "Folder Regexp")))
   :group 'wl-pref)
 
 (defcustom wl-no-save-folder-list '("^/.*$")
@@ -1345,17 +1605,12 @@ Each elements are regexp of folder name."
   :type '(repeat (regexp :tag "Folder Regexp"))
   :group 'wl-pref)
 
-(defcustom wl-search-mime-charset 'iso-2022-jp
-  "*MIME Charset for searching message."
-  :type 'symbol
-  :group 'wl-pref)
-
 (defcustom wl-folder-mime-charset-alist
   '(("^-alt\\.chinese" . big5)
     ("^-relcom\\." . koi8-r)
     ("^-tw\\." . big5)
     ("^-han\\." . euc-kr))
-  "Charset alist. If no match, wl-mime-charset is used."
+  "Charset alist.  If no match, `wl-mime-charset' is used."
   :type '(repeat (cons (regexp :tag "Folder Regexp") (symbol :tag "Charset")))
   :group 'wl-summary
   :group 'wl-pref)
@@ -1365,8 +1620,8 @@ Each elements are regexp of folder name."
     ("^-relcom\\." . "en")
     ("^-tw\\." . "en")
     ("^-han\\." . "en"))
-  "Weekday name lang alist. If no match, wl-summary-weekday-name-lang 
-is used.
+  "Weekday name lang alist.
+If no match, `wl-summary-weekday-name-lang' is used.
 e.x.
 '((\"xemacs-beta$\" . \"en\")
   (\"^-fj\" . \"ja\"))"
@@ -1383,7 +1638,7 @@ e.x.
     ("^-relcom\\." . (2 "+" "+" "|" "-" " "))
     ("^-tw\\." . (2 "+" "+" "|" "-" " "))
     ("^-han\\." . (2 "+" "+" "|" "-" " ")))
-  "Thread indent set alist. 
+  "Thread indent set alist.
 If no match, following indent set is used.
 (wl-thread-indent-level
  wl-thread-have-younger-brother-str
@@ -1402,12 +1657,11 @@ e.x.
                              (string :tag "Space"))))
   :group 'wl-pref)
 
-(defcustom wl-folder-sync-range-alist 
-  (list (cons "^&.*$" "all")
-       (cons (concat "^" (regexp-quote wl-draft-folder) "$\\|^" 
+(defcustom wl-folder-sync-range-alist
+  (list (cons (concat "^" (regexp-quote wl-draft-folder) "$\\|^"
                      (regexp-quote wl-queue-folder) "$")
              "all"))
-  "*Default sync range alist. If no matches, `wl-default-sync-range' is used."
+  "*Default sync range alist.  If no matches, `wl-default-sync-range' is used."
   :type '(repeat (cons (regexp :tag "Folder Regexp")
                       (choice (const "update")
                               (const "all")
@@ -1430,7 +1684,7 @@ e.x.
   :group 'wl-pref)
 
 (defcustom wl-ask-range t
-  "*If non-nil, ask for a range for summary synchronization. 
+  "*If non-nil, ask for a range for summary synchronization.
 If nil, always use default."
   :type 'boolean
   :group 'wl-pref)
@@ -1458,7 +1712,7 @@ in folder. If the value is 'sync, msgdb would be synchronized."
   :type 'boolean
   :group 'wl-summary)
 
-(defcustom wl-summary-next-no-unread-command 
+(defcustom wl-summary-next-no-unread-command
   '(wl-summary-read wl-summary-down wl-summary-up)
   "*Command list available when the value of `wl-auto-select-next' is 'unread
 or 'skip-no-unread."
@@ -1466,11 +1720,11 @@ or 'skip-no-unread."
   :group 'wl-summary)
 
 (defcustom wl-summary-search-via-nntp 'confirm
-  "*Non-nil, search message via nntp after `wl-summary-jump-to-msg-by-message-id'. If the value is 'confirm, confirm before search."
+  "*Non-nil, search message via nntp after `wl-summary-jump-to-msg-by-message-id'.  If the value is 'confirm, confirm before search."
   :type 'boolean
   :group 'wl-summary)
 
-(defcustom wl-summary-keep-cursor-command 
+(defcustom wl-summary-keep-cursor-command
   '(wl-summary-goto-folder wl-summary-goto-last-visited-folder)
   "*Command list to keep cursor position when folder is changed to
 already existing summary."
@@ -1495,14 +1749,14 @@ Sender information in summary mode."
   :group 'wl-folder)
 
 (defcustom wl-delete-folder-alist '(("^-" . remove))
-  "*Alist of folder and delete policy. 
+  "*Alist of folder and delete policy.
 Each element is (folder-regexp . policy).
 
 The policy is one of the followings:
 'remove or
 'null     : remove message.
 string    : refile to the specified folder.
-'trash or 
+'trash or
 otherwise : refile to the `wl-trash-folder'.
 ex.
 '((\"^%\" . \"%#mh/trash\")
@@ -1519,7 +1773,7 @@ ex.
 
 (defcustom wl-refile-policy-alist '(("^[-=']" . copy)
                                    (".*" . move))
-  "*List of refile policy. Each element is (FOLDER-REGEXP . POLICY).
+  "*List of refile policy.  Each element is (FOLDER-REGEXP . POLICY).
 POLICY is copy or move."
   :type '(repeat (cons (regexp :tag "Folder Regexp")
                       (choice (const copy)
@@ -1562,7 +1816,7 @@ ex.
                                     (regexp :tag "Folder Regexp")))))
   :group 'wl-folder)
 
-;;; For Folder Manager 
+;;; For Folder Manager
 
 (defcustom wl-interactive-save-folders t
   "*Non-nil require your confirmation when save folders."
@@ -1594,6 +1848,20 @@ ex.
   :type 'boolean
   :group 'wl-folder)
 
+(defcustom wl-fldmgr-make-filter-default "Body"
+  "*Default filter key while making filter on Folder."
+  :type '(radio (const "From")
+               (const "Subject")
+               (const "To")
+               (const "Cc")
+               (const "Body")
+               (const "Since")
+               (const "Before")
+               (const "Last")
+               (const "First")
+               (string :tag "Other"))
+  :group 'wl-folder)
+
 ;;; For Expire and Archive
 
 (defcustom wl-expire-alist nil
@@ -1602,7 +1870,7 @@ Each element is (folder-regexp (number or date) policy).
 
 The policy is one of the followings:
 'remove  : remove messsage.
-'trash   : refile wl-trash-folder.
+'trash   : refile `wl-trash-folder'.
 string   : refile string folder.
 function : call function.
 
@@ -1749,10 +2017,10 @@ list  : reserved specified permanent marks."
   "*If the summary is larger than this lines, don't highlight it."
   :type 'integer
   :group 'wl-highlight)
+
 ;; highilght about draft and message
 (defcustom wl-highlight-body-too t
-  "*In addition to header, highlight the body too. if non nil."
+  "*In addition to header, highlight the body too.  if non nil."
   :type 'boolean
   :group 'wl-highlight)
 
@@ -1764,7 +2032,23 @@ list  : reserved specified permanent marks."
   :type '(repeat (cons regexp face))
   :group 'wl-highlight)
 
-(defcustom wl-highlight-citation-prefix-regexp 
+(defcustom wl-highlight-message-header-button-alist
+  (` (("^\\(References\\|Message-Id\\|In-Reply-To\\):" "<[^>]+>"
+       0 wl-message-button-refer-article  0)
+      ("^[^:]+:" "\\(<\\(url: \\)?news:\\([^>\n ]*\\)>\\)"
+       1 wl-message-button-refer-article 3)))
+  "Alist of headers and regexps to match buttons in message headers."
+  :type '(repeat
+         (list (regexp :tag "Header")
+               regexp
+               (integer :tag "Button")
+               (function :tag "Callback")
+               (repeat :tag "Data"
+                       :inline t
+                       (integer :tag "Regexp group"))))
+  :group 'wl-highlight)
+
+(defcustom wl-highlight-citation-prefix-regexp
   "^[>|:} ]*[>|:}]\\([^ \n>]*>\\)?\\|^[^ <\n>]*>"
   "All lines that match this regexp will be highlighted with
  `wl-highlight-message-cited-text-*' face."
@@ -1772,10 +2056,10 @@ list  : reserved specified permanent marks."
   :group 'wl-highlight)
 
 (defcustom wl-highlight-highlight-citation-too nil
-  "*Whether the whole citation line should go in the 
-  `wl-highlight-citation-face' face.
+  "*Whether the whole citation line should go in the
+`wl-highlight-citation-face' face.
 If nil, the text matched by `wl-highlight-citation-prefix-regexp' is in the
-default face, and the remainder of the line is in the 
+default face, and the remainder of the line is in the
 wl-highlight-message-cited-text face."
   :type 'boolean
   :group 'wl-highlight)
@@ -1790,31 +2074,37 @@ the `wl-highlight-message-headers' face."
 
 (defcustom wl-highlight-citation-header-regexp
   (concat "In article.*$\\|In message.*$\\|In the message.*$\\|"
-         "^At[^\n]+\n[^\n]+wrote:\n\\|" 
-         "^.*\\(writes\\|wrote\\|said\\):\n")
+         "^At[^\n]+\n[^\n]+wrote:\n\\|"
+         "^.*\\(writes\\|wrote\\|said\\):\n")
   "*The pattern to match the prolog of a cited block.
 Text in the body of a message which matches this will be displayed in
 the `wl-highlight-message-headers' face."
-   :type 'regexp
-   :group 'wl-highlight)
+  :type 'regexp
+  :group 'wl-highlight)
+
+(defcustom wl-highlight-max-header-size nil
+  "*If the message header is larger than this many chars, don't highlight it.
+If this is nil, all headers will be highlighted."
+  :type 'integer
+  :group 'wl-highlight)
 
 (defcustom wl-highlight-max-message-size 10000
   "*If the message body is larger than this many chars, don't highlight it.
 This is to prevent us from wasting time trying to fontify things like
 uuencoded files and large digests.  If this is nil, all messages will
 be highlighted."
-    :type 'integer
-    :group 'wl-highlight)
-  
+  :type 'integer
+  :group 'wl-highlight)
+
 ;; highilght about signature (of draft and message)
-(defcustom wl-highlight-signature-separator 
+(defcustom wl-highlight-signature-separator
   '("\n--+\n" "\n\n--+.*\n*\\'")
   "List of regexps matching signature separator.
-It will be verified from head to tail looking for a separator.  
+It will be verified from head to tail looking for a separator.
 Verification will be done from the end of the buffer.
-No need to specify \"^-- $\" in this list, 
+No need to specify \"^-- $\" in this list,
 because it is verified by default.
-This variable can also be a regex. "
+This variable can also be a regex."
   :type '(repeat regexp)
   :group 'wl-highlight)
 
@@ -1822,23 +2112,28 @@ This variable can also be a regex. "
   "*If the signature is larger than this chars, don't treat it as a signature."
   :type 'integer
   :group 'wl-highlight)
-  
+
 ;; highilght about mouse
-(defcustom wl-use-highlight-mouse-line (and wl-on-xemacs window-system)
+(defcustom wl-use-highlight-mouse-line (and window-system
+                                           (>= emacs-major-version 19))
   "*Highlight mouse line, if non nil."
   :type 'boolean
   :group 'wl-highlight)
+
 ;; highilght about folder
-(defcustom wl-highlight-folder-with-icon 
-  (and (featurep 'xemacs)
-       (featurep 'xpm))
-  "*Highlight folder with icon(XEmacs)."
+(defcustom wl-highlight-folder-with-icon
+  (or (and (featurep 'xemacs)
+          (featurep 'xpm))
+      wl-on-emacs21)
+  "*Highlight folder with icon(XEmacs or Emacs 21)."
   :type 'boolean
   :group 'wl-highlight)
-(defcustom wl-highlight-group-folder-by-numbers t
-  "*Highlight group folder by numbers."
-  :type 'boolean
+(defcustom wl-highlight-folder-by-numbers t
+  "Highlight folder lines by numbers.
+If it is a number, only numbers will be highlighted."
+  :type '(choice (const :tag "whole line" t)
+                (const :tag "only numbers" 1)
+                (const :tag "don't highlight" nil))
   :group 'wl-highlight)
 
 (defcustom wl-highlight-signature-search-func 'wl-highlight-signature-search
@@ -1857,13 +2152,17 @@ This variable can also be a regex. "
   :type 'boolean
   :group 'wl-pref)
 
-(defcustom wl-demo-display-logo (or (and (featurep 'xemacs)
-                                        (featurep 'xpm))
-                                   (and (module-installed-p 'image)
-                                        (image-type-available-p 'xpm))
-                                   (module-installed-p 'bitmap))
-  "If non-nil, display image (or bitmap) logo in th Wanderlust opening demo."
-  :type 'boolean
+(defcustom wl-demo-display-logo (if (or (featurep 'xemacs)
+                                       (module-installed-p 'image)
+                                       (module-installed-p 'bitmap))
+                                   t)
+  "If it is T, show graphic logo in the startup screen.  You can set it to
+a symbol `bitmap', `xbm' or `xpm' in order to force the image format."
+  :type '(radio (const :tag "Off" nil)
+               (const :tag "On (any format)" t)
+               (const xpm)
+               (const xbm)
+               (const :tag "bitmap (using BITMAP-MULE)" bitmap))
   :group 'wl-pref)
 
 ;;; Internal variables
@@ -1874,27 +2173,29 @@ This variable can also be a regex. "
 (defvar wl-unplugged-hook nil)
 (defvar wl-plugged t)
 
-(defvar wl-plug-state-indicator-on  " [ON] ")
-(defvar wl-plug-state-indicator-off " [--] ")
-(defvar wl-plug-state-indicator wl-plug-state-indicator-on)
-
-(defvar wl-show-plug-status-on-modeline t)
+;; Internal variables used to modeline identifiers.
+(defvar wl-modeline-plug-status nil)
+(defvar wl-modeline-plug-state-on wl-plug-state-indicator-on)
+(defvar wl-modeline-plug-state-off wl-plug-state-indicator-off)
+(defvar wl-modeline-biff-status nil)
+(defvar wl-modeline-biff-state-on wl-biff-state-indicator-on)
+(defvar wl-modeline-biff-state-off wl-biff-state-indicator-off)
 
-;; Advanced thread view.  
+;; Advanced thread view.
 (defvar wl-thread-indent-level 1
   "*Indent level for thread.")
 (defvar wl-thread-have-younger-brother-str "\e$B(2\e(B"
-  "*A string for thread branch line. It should contain one character.")
+  "*A string for thread branch line.  It should contain one character.")
 (defvar wl-thread-youngest-child-str       "\e$B(1\e(B"
-  "*A string for thread branch line. It should contain one character.")
+  "*A string for thread branch line.  It should contain one character.")
 (defvar wl-thread-vertical-str             "\e$B(-\e(B"
-  "*A string for thread branch line. It should contain one character.")
+  "*A string for thread branch line.  It should contain one character.")
 (defvar wl-thread-horizontal-str           "\e$B(,\e(B"
-  "*A string for thread branch line. It should contain one character.")
+  "*A string for thread branch line.  It should contain one character.")
 (defvar wl-thread-space-str                "\e$B!!\e(B"
-  "*A string for thread branch line. It should contain one character.")
+  "*A string for thread branch line.  It should contain one character.")
 
-(defvar wl-highlight-thread-indent-string-regexp "[^\\[]*"
+(defvar wl-highlight-thread-indent-string-regexp "[^[<]*"
   "* A regexp string for thread indent...for highlight.")
 
 ;; folder icons. filename relative to wl-icon-dir
@@ -1936,11 +2237,15 @@ This variable can also be a regex. "
   "*Icon file for plugged state.")
 (defvar wl-unplugged-icon "unplugged.xpm"
   "*Icon file for unplugged state.")
+(defvar wl-biff-mail-icon "letter.xpm"
+  "*Icon file for mail existed state.")
+(defvar wl-biff-nomail-icon "no-letter.xpm"
+  "*Icon file for no mail existed state.")
 (defvar wl-prog-uudecode "uudecode"
-  "*uudecode program name")
-(defvar wl-prog-uudecode-arg '("-p") ;; outout is stdout.
-  "*arguments for uudecode program")
-(defvar wl-prog-uudecode-no-stdout-option nil
+  "*uudecode program name.")
+(defvar wl-prog-uudecode-arg nil
+  "*Arguments for uudecode program.")
+(defvar wl-prog-uudecode-no-stdout-option t
   "*If non-nil, uudecode program don't have option for output to stdout.")
 
 ;; Obsolete variables. for compatibility.
@@ -1952,6 +2257,8 @@ This variable can also be a regex. "
 (make-obsolete-variable 'wl-draft-prepared-config-alist 'wl-draft-config-alist)
 (defvar wl-score-files-directory wl-score-files-dir)
 (make-obsolete-variable 'wl-score-files-directory 'wl-score-files-dir)
+(defvar wl-summary-temp-above wl-summary-target-above)
+(make-obsolete-variable 'wl-summary-temp-above 'wl-summary-target-above)
 
 ;; plug
 (defvar wl-plugged-plug-on "ON")
@@ -1961,6 +2268,7 @@ This variable can also be a regex. "
 (defvar wl-plugged-port-indent 4)
 (defvar wl-plugged-queue-status-column 25)
 
-(provide 'wl-vars)
+(require 'product)
+(product-provide (provide 'wl-vars) (require 'wl-version))
 
 ;;; wl-vars.el ends here