Update to version 2003-01-27.08.
[elisp/wanderlust.git] / wl / wl-vars.el
index 6a28dd5..4f222ba 100644 (file)
@@ -1,4 +1,4 @@
-;;; wl-vars.el -- Variable definitions for Wanderlust.
+;;; wl-vars.el --- Variable definitions for Wanderlust.
 
 ;; 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>
 
 ;; 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>
 
 (defvar wl-cs-noconv
   (cond (wl-on-mule3 'binary)
 
 (defvar wl-cs-noconv
   (cond (wl-on-mule3 'binary)
-        (wl-on-mule  '*noconv*)
-        (t           nil)))
+       (wl-on-mule  '*noconv*)
+       (t           nil)))
 
 (defvar wl-cs-autoconv
   (cond (wl-on-mule3 'undecided)
 
 (defvar wl-cs-autoconv
   (cond (wl-on-mule3 'undecided)
-        (wl-on-mule  '*autoconv*)
-        (t           nil)))
+       (wl-on-mule  '*autoconv*)
+       (t           nil)))
 
 (defvar wl-cs-local
   (cond (wl-on-mule3  'junet)
 
 (defvar wl-cs-local
   (cond (wl-on-mule3  'junet)
-        (wl-on-mule   '*junet*)
-        (t           nil)))
+       (wl-on-mule   '*junet*)
+       (t           nil)))
 
 (defvar wl-cs-cache wl-cs-local)
 
 (defvar wl-use-semi (module-installed-p 'mime-view) ; If nil, use tm.
   "*Use SEMI or not.")
 
 
 (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)
+(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."
   "*From string used in draft."
-  :type 'string
+  :type  'string
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
@@ -147,29 +151,163 @@ If you don't have multiple e-mail addresses, you don't have to set this."
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
-(defcustom wl-organization nil
+(defcustom wl-organization (getenv "ORGANIZATION")
   "Organization name."
   :type '(choice (const :tag "none" nil)
   "Organization name."
   :type '(choice (const :tag "none" nil)
-                 string)
+                string)
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
-(defcustom wl-tmp-dir "~/tmp/"
+(defcustom wl-temporary-file-directory "~/tmp/"
   "*Default temporary directory to save message, part."
   :type 'directory
   :group 'wl)
 
   "*Default temporary directory to save message, part."
   :type 'directory
   :group 'wl)
 
-(defcustom wl-icon-dir (if (fboundp 'locate-data-directory)
-                          (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)."
+(defcustom wl-icon-directory (if (fboundp 'locate-data-directory)
+                                (locate-data-directory "wl")
+                              (let ((icons (expand-file-name "wl/icons/"
+                                                             data-directory)))
+                                (if (file-directory-p icons)
+                                    icons)))
+  "*Directory to load the icon files from, or nil if none."
   :type '(choice (const :tag "none" nil)
                 string)
   :group 'wl)
 
   :type '(choice (const :tag "none" nil)
                 string)
   :group 'wl)
 
+(defcustom wl-summary-default-view 'thread
+  "Default status of summary view, thread or sequential view."
+  :type '(choice (const :tag "Thread" thread)
+                (const :tag "Sequential" sequence))
+  :group 'wl-summary)
+
+(defcustom wl-summary-default-view-alist nil
+  "An alist of regexp for folder name and summary default view.
+If no match, `wl-summary-default-view' is used."
+  :type '(repeat (cons (regexp :tag "Folder Regexp")
+                      (choice (const :tag "Thread" thread)
+                              (const :tag "Sequential" sequence))))
+  :group 'wl-summary)
+
+(defvar wl-summary-mode-line-format-spec-alist
+  '((?f (if (memq 'modeline wl-use-folder-petname)
+           (wl-folder-get-petname (elmo-folder-name-internal
+                                   wl-summary-buffer-elmo-folder))
+         (elmo-folder-name-internal wl-summary-buffer-elmo-folder)))
+    (?t (if (eq wl-summary-buffer-view 'thread) "T" "S"))
+    (?n wl-summary-buffer-new-count)
+    (?u (+ wl-summary-buffer-new-count
+          wl-summary-buffer-unread-count))
+    (?a (length wl-summary-buffer-number-list)))
+  "An alist of format specifications that can appear in summary mode-lines.
+Each element is a list of following:
+\(SPEC STRING-EXP)
+SPEC is a character for format specification.
+STRING-EXP is an expression to get string to insert.")
+
+(defcustom wl-summary-mode-line-format "Wanderlust: %f {%t}(%n/%u/%a)"
+  "*A format string for summary mode-line of Wanderlust.
+It may include any of the following format specifications
+which are replaced by the given information:
+
+%f The folder name.
+%t The thread status of the summary ('T' for thread, 'S' for sequential).
+%n The number of new messages.
+%u The number of unread messages (includes new messages).
+%a The number of all messages."
+  :group 'wl-summary
+  :type 'string)
+
+(defvar wl-summary-line-format-spec-alist
+  '((?Y (wl-summary-line-year))
+    (?M (wl-summary-line-month))
+    (?D (wl-summary-line-day))
+    (?W (wl-summary-line-day-of-week))
+    (?h (wl-summary-line-hour))
+    (?m (wl-summary-line-minute))
+    (?\[ (if wl-thr-linked "<" "["))
+    (?\] (if wl-thr-linked ">" "]"))
+    (?t (or wl-thr-indent-string ""))
+    (?s (wl-summary-line-subject))
+    (?S (wl-summary-line-size))
+    (?C (if wl-thr-children-number
+           (concat "[+" (number-to-string wl-thr-children-number) "] ")
+         (if wl-parent-message-entity
+             (if wl-thr-linked ">>" ">")
+           "")))
+    (?~ (if (zerop (length wl-line-string)) "" " "))
+    (?c (if wl-thr-children-number
+           (concat "+" (number-to-string wl-thr-children-number) ":")
+         ""))
+    (?f (wl-summary-line-from))
+    (?# (wl-summary-line-list-info))
+    (?l (wl-summary-line-list-count))
+    (?T (or wl-temp-mark " "))
+    (?P (or wl-persistent-mark " "))
+    (?n (wl-summary-line-number))
+    (?@ (wl-summary-line-attached)))
+  "An alist of format specifications that can appear in summary lines.
+Each element is a list of following:
+\(SPEC STRING-EXP)
+SPEC is a character for format specification.
+STRING-EXP is an expression to get string to insert.")
+
+(defcustom wl-summary-line-format "%n%T%P%M/%D(%W)%h:%m %t%[%17(%c %f%) %] %s"
+  "*A default format string for summary line of Wanderlust.
+It may include any of the following format specifications
+which are replaced by the given information:
+
+%n The number of the message.
+   The width is decided using `wl-summary-default-number-column' and
+   `wl-summary-number-column-alist'.
+%T The temporal mark (*, D, o, O).
+%P The persistent mark (status of the message).
+%Y The year of the date field of the message (zero padded).
+%M The month of the date field of the message (zero padded).
+%D The day of the date field of the message (zero padded).
+%W The weekday name of the date field of the message (zero padded).
+%h The hour of the date field of the message (zero padded).
+%m The minute of the date field of the message (zero padded).
+%[ An open bracket.  If the message thread is linked,
+   it is replaced with '<'.
+%] A close bracket.  If the message thread is linked,
+   it is replaced with '>'.
+%c The children number of the closed message thread.
+   Children number is printed like '+??:'.
+%C The children number of the closed message thread.
+   Children number is printed like '[+??] '.
+   If the message is opened, '>' or '>>' (linked) is displayed.
+%f The from: field string of the message.
+%s The subject: field string of the message.
+%S The size of the message (if available).
+%~ If the previous spec is not zero-length, replaced with ' '.
+
+If the format string contains the specifiers %( and %), the text between
+them will have the specified number of columns."
+  :group 'wl-summary
+  :type 'string)
+
+(defcustom wl-folder-summary-line-format-alist nil
+  "An alist of folder name and a summary line format.
+If no match, `wl-summary-line-format' is used.
+e.x.
+      '((\"^%\" . \"%n%T%P%M/%D(%W)%h:%m %t%[%14(%c %f%) %](%S) %s\")
+       (\"^@2ch\" . \"%n%T%P%M%/%D/%h:%m %t[%9(%c %f%) ]%s\")))"
+  :type '(repeat (cons (regexp :tag "Folder Regexp")
+                      (string :tag "line format")))
+  :group 'wl-summary)
+
+(defcustom wl-summary-check-line-format t
+  "*Check summary line format change if non-nil.
+When summary line format is changed, current summary cache is discarded.
+It is highly recommended to set this value to t."
+  :type 'boolean
+  :group 'wl-summary)
+
+(defcustom wl-summary-line-format-file ".wl-summary-line-format"
+  "*Cache file for summary line format."
+  :type 'file
+  :group 'wl-summary)
+
 (defcustom wl-summary-from-function 'wl-summary-default-from
   "*A function for displaying sender (From: field) information."
   :type 'function
 (defcustom wl-summary-from-function 'wl-summary-default-from
   "*A function for displaying sender (From: field) information."
   :type 'function
@@ -187,13 +325,10 @@ If you don't have multiple e-mail addresses, you don't have to set this."
 
 (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
 
 (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."
-  :type 'integer
+subject matches this regexp, search parent message by subject matching.
+If nil, never search search parent by subject."
+  :type '(choice string
+                (const :tag "Don't search parent" nil))
   :group 'wl-summary)
 
 ;; Important folders
   :group 'wl-summary)
 
 ;; Important folders
@@ -266,12 +401,35 @@ If nil, `wl-from' is used."
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
-(defcustom wl-draft-add-references t
+(defcustom wl-draft-additional-header-alist nil
+  "*Additional headers in the draft."
+  :type '(repeat (cons (symbol :tag "Field Name")
+                      (choice (string :tag "String")
+                              (function :tag "Function")))))
+
+(defcustom wl-draft-add-in-reply-to t
+  "*If non-nil, message-id of the cited message is inserted to the
+in-reply-to field of the current draft."
+  :type 'boolean
+  :group 'wl)
+
+(defcustom wl-draft-add-references nil
   "*If non-nil, message-id of the cited message is inserted to the
 references field of the current draft."
   :type 'boolean
   :group 'wl)
 
   "*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-draft-cite-function 'wl-default-draft-cite
+  "*A function for citation."
+  :type 'function
+  :group 'wl-draft)
+
+(defcustom wl-default-draft-cite-decorate-author t
+  "*If non-nil, the author of cited message is arranged by
+`wl-summary-from-func-internal' in `wl-default-draft-cite'."
+  :type 'boolean
+  :group 'wl-draft)
+
 (defcustom wl-smtp-connection-type nil
   "*SMTP connection type.
 If nil, default smtp connection type is used."
 (defcustom wl-smtp-connection-type nil
   "*SMTP connection type.
 If nil, default smtp connection type is used."
@@ -283,7 +441,7 @@ If nil, default smtp connection type is used."
 (defcustom wl-smtp-posting-user nil
   "*SMTP authentication user."
   :type '(choice (const :tag "none" nil)
 (defcustom wl-smtp-posting-user nil
   "*SMTP authentication user."
   :type '(choice (const :tag "none" nil)
-                 string)
+                string)
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
@@ -298,7 +456,7 @@ If nil, default smtp connection type is used."
   "*SMTP port number in `wl-smtp-posting-server'.
 If nil, default SMTP port number(25) is used."
   :type '(choice (const :tag "Default (25)" nil)
   "*SMTP port number in `wl-smtp-posting-server'.
 If nil, default SMTP port number(25) is used."
   :type '(choice (const :tag "Default (25)" nil)
-                 integer)
+                integer)
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
@@ -317,9 +475,9 @@ If nil, don't authenticate."
   "*POP3 user name to send mail using POP-before-SMTP.
 If nil, `elmo-pop3-default-user' is used.
 To use POP-before-SMTP,
   "*POP3 user name to send mail using POP-before-SMTP.
 If nil, `elmo-pop3-default-user' is used.
 To use POP-before-SMTP,
-\(setq wl-draft-send-mail-function 'wl-draft-send-mail-with-pop-before-smtp\)"
+\(setq wl-draft-send-mail-function 'wl-draft-send-mail-with-pop-before-smtp)"
   :type '(choice (const :tag "none" nil)
   :type '(choice (const :tag "none" nil)
-                 string)
+                string)
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
@@ -327,7 +485,7 @@ To use POP-before-SMTP,
   "*POP3 server for POP-before-SMTP.
 If nil, `elmo-pop3-default-server' is used."
   :type '(choice (const :tag "none" nil)
   "*POP3 server for POP-before-SMTP.
 If nil, `elmo-pop3-default-server' is used."
   :type '(choice (const :tag "none" nil)
-                 string)
+                string)
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
@@ -349,8 +507,8 @@ If nil, `elmo-pop3-default-stream-type' is used."
   "*Default Authentication type for POP-before-SMTP.
 If nil, `elmo-pop3-default-authenticate-type' is used."
   :type '(choice (const :tag "none" nil)
   "*Default Authentication type for POP-before-SMTP.
 If nil, `elmo-pop3-default-authenticate-type' is used."
   :type '(choice (const :tag "none" nil)
-                (const :tag "APOP" "apop")
-                (const :tag "POP3" "user"))
+                (const :tag "APOP" 'apop)
+                (const :tag "POP3" 'user))
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
@@ -358,7 +516,7 @@ If nil, `elmo-pop3-default-authenticate-type' is used."
   "*NNTP server name to post news.
 If nil, `elmo-nntp-default-server' is used."
   :type '(choice (const :tag "none" nil)
   "*NNTP server name to post news.
 If nil, `elmo-nntp-default-server' is used."
   :type '(choice (const :tag "none" nil)
-                 string)
+                string)
   :group 'wl
   :group 'wl-setting)
 (defcustom wl-nntp-posting-user nil
   :group 'wl
   :group 'wl-setting)
 (defcustom wl-nntp-posting-user nil
@@ -366,7 +524,7 @@ If nil, `elmo-nntp-default-server' is used."
 If nil, `elmo-nntp-default-user' is used.
 If nil, don't authenticate."
   :type '(choice (const :tag "none" nil)
 If nil, `elmo-nntp-default-user' is used.
 If nil, don't authenticate."
   :type '(choice (const :tag "none" nil)
-                 string)
+                string)
   :group 'wl
   :group 'wl-setting)
 (defcustom wl-nntp-posting-port nil
   :group 'wl
   :group 'wl-setting)
 (defcustom wl-nntp-posting-port nil
@@ -381,11 +539,32 @@ If nil, `elmo-nntp-default-port' is used."
 If nil, `elmo-nntp-default-stream-type' is used."
   :type 'boolean
   :group 'wl)
 If nil, `elmo-nntp-default-stream-type' is used."
   :type 'boolean
   :group 'wl)
-
-(defcustom wl-fetch-confirm-threshold 30000
-  "*Confirm fetching if message size is larger than this value."
-  :type 'integer
-  :group 'wl-pref
+(defcustom wl-nntp-posting-function 'elmo-nntp-post
+  "A function to post news.
+Prepared candidate is 'elmo-nntp-post."
+  :type '(radio (function-item elmo-nntp-post)
+               (function :tag "Other"))
+  :group 'wl-draft)
+(defcustom wl-nntp-posting-config-alist nil
+  "*Alist of configuration on nntp posting.
+ex.
+'((\",?local.test\" . \"news.media.kyoto-u.ac.jp\")
+  (\",?ku\\.\" .
+   ((server . \"news.media.kyoto-u.ac.jp\")
+    (user . \"newsmaster\")
+    (port . 119)
+    (function . elmo-nntp-post))
+  (\".*\" . \"newsfeed.kuee.kyoto-u.ac.jp\")))"
+  :type '(repeat (cons (sexp :tag "Match")
+                      (choice (string :tag "Server")
+                              (repeat :inlie t
+                                      (cons (choice (const server)
+                                                    (const user)
+                                                    (const port)
+                                                    (const stream-type)
+                                                    (const function))
+                                            (sexp :tag "Value"))))))
+  :group 'wl-draft
   :group 'wl-setting)
 
 (defcustom wl-prefetch-confirm t
   :group 'wl-setting)
 
 (defcustom wl-prefetch-confirm t
@@ -403,11 +582,6 @@ when `wl-prefetch-confirm' is non-nil."
   :group 'wl-pref
   :group 'wl-setting)
 
   :group 'wl-pref
   :group 'wl-setting)
 
-(defcustom wl-cache-prefetch-threshold 30000
-  "*Quit forward cache prefetching if message size is larger than this value."
-  :type 'integer
-  :group 'wl-pref)
-
 (defcustom wl-thread-insert-opened nil
   "*Non-nil forces to insert thread as opened in updating."
   :type 'boolean
 (defcustom wl-thread-insert-opened nil
   "*Non-nil forces to insert thread as opened in updating."
   :type 'boolean
@@ -494,7 +668,7 @@ reasons of system internal to accord facilities for the Emacs variants.")
   "A hook called when exit wanderlust.")
 (defvar wl-folder-suspend-hook nil
   "A hook called when suspend wanderlust.")
   "A hook called when exit wanderlust.")
 (defvar wl-folder-suspend-hook nil
   "A hook called when suspend wanderlust.")
-(defvar wl-biff-notify-hook nil
+(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.")
   "A hook called when a biff-notification is invoked.")
 (defvar wl-biff-unnotify-hook nil
   "A hook called when a biff-notification is removed.")
@@ -520,6 +694,10 @@ reasons of system internal to accord facilities for the Emacs variants.")
   "A hook called when summary line is inserted.")
 (defvar wl-summary-insert-headers-hook nil
   "A hook called when insert header for search header.")
   "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-message-display-internal-hook nil
+  "A hook called when message buffer is created and message is displayed.
+This hook may contain the functions `wl-setup-message' for
+reasons of system internal to accord facilities for the Emacs variants.")
 (defvar wl-thread-update-children-number-hook nil
   "A hook called when children number is updated.")
 (defvar wl-folder-update-access-group-hook nil
 (defvar wl-thread-update-children-number-hook nil
   "A hook called when children number is updated.")
 (defvar wl-folder-update-access-group-hook nil
@@ -534,8 +712,6 @@ reasons of system internal to accord facilities for the Emacs variants.")
   "A hook called when score mode is started.")
 (defvar wl-make-plugged-hook nil
   "A hook called when make plugged alist.")
   "A hook called when score mode is started.")
 (defvar wl-make-plugged-hook nil
   "A hook called when make plugged alist.")
-(defvar wl-biff-notify-hook '(beep)
-  "A hook called when a biff-notification is invoked.")
 
 (defvar wl-plugged-exit-hook nil
   "A hook called when exit plugged mode.")
 
 (defvar wl-plugged-exit-hook nil
   "A hook called when exit plugged mode.")
@@ -566,7 +742,7 @@ Prepared candidates are 'wl-draft-send-mail-with-smtp,
     ("Mail-Reply-To" . (("Mail-Reply-To") nil nil))
     ("From" . (("From") nil nil)))
   "Alist of cons cell of
     ("Mail-Reply-To" . (("Mail-Reply-To") nil nil))
     ("From" . (("From") nil nil)))
   "Alist of cons cell of
-('field-name' .  ('fields for To' 'fields for Cc' 'fields for Newsgroups'))
+\('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,
 'field-name' is a string.
 'fields for ***' is a list of strings.
 If car of each cons cell exists in original message,
@@ -585,7 +761,7 @@ Default is for 'reply-to-author'."
     ("Reply-To" . (("Reply-To") ("To" "Cc" "From") ("Newsgroups")))
     ("From" . (("From") ("To" "Cc") ("Newsgroups"))))
   "Alist of cons cell of
     ("Reply-To" . (("Reply-To") ("To" "Cc" "From") ("Newsgroups")))
     ("From" . (("From") ("To" "Cc") ("Newsgroups"))))
   "Alist of cons cell of
-('field-name' .  ('fields for To' 'fields for Cc' 'fields for Newsgroups'))
+\('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,
 'field-name' is a string.
 'fields for ***' is a list of strings.
 If car of each cons cell exists in original message,
@@ -603,7 +779,7 @@ Default is for 'reply-to-all'."
     ("Newsgroups" . (("To") ("Cc") ("Newsgroups")))
     ("From" . (("To") ("Cc") nil)))
   "Alist of cons cell of
     ("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' .  ('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,
 'field-name' is a string.
 'fields for ***' is a list of strings.
 If car of each cons cell exists in original message,
@@ -621,7 +797,7 @@ Default is for 'reply-to-me'."
     ("Newsgroups" . (("To") ("Cc") ("Newsgroups")))
     ("From" . (("To") ("Cc") nil)))
   "Alist of cons cell of
     ("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' .  ('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,
 'field-name' is a string.
 'fields for ***' is a list of strings.
 If car of each cons cell exists in original message,
@@ -686,9 +862,10 @@ Default is for 'followup-to-me'."
   :type 'file
   :group 'wl)
 
   :type 'file
   :group 'wl)
 
-(defcustom wl-ldap-server "localhost"
+(defcustom wl-ldap-server nil
   "*LDAP server."
   "*LDAP server."
-  :type '(string :tag "Server")
+  :type '(choice (const :tag "Default server(localhost)" nil)
+                (string :tag "Server"))
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
@@ -699,15 +876,10 @@ Default is for 'followup-to-me'."
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
-(defcustom wl-ldap-base "c=US"
+(defcustom wl-ldap-base nil
   "*LDAP base."
   "*LDAP base."
-  :type '(string :tag "Base")
-  :group 'wl
-  :group 'wl-setting)
-
-(defcustom wl-ldap-objectclass "person"
-  "*LDAP objectclass."
-  :type 'string
+  :type '(choice (const :tag "Default base" nil)
+                (string :tag "Base"))
   :group 'wl
   :group 'wl-setting)
 
   :group 'wl
   :group 'wl-setting)
 
@@ -760,16 +932,15 @@ Default is for 'followup-to-me'."
   :type '(string :tag "Mark")
   :group 'wl-summary-marks)
 
   :type '(string :tag "Mark")
   :group 'wl-summary-marks)
 
-(defcustom wl-summary-no-mime-folder-list
-  (list (concat "^" (regexp-quote wl-draft-folder) "$"))
+(defcustom wl-summary-no-mime-folder-list nil
   "*All folders that match this list don't analysis mime."
   :type '(repeat string)
   :group 'wl-summary)
 
 (defcustom wl-summary-fix-timezone nil
   "*All folders that match this list don't analysis mime."
   :type '(repeat string)
   :group 'wl-summary)
 
 (defcustom wl-summary-fix-timezone nil
-  "*Time zone of the date string in summary mode. 
+  "*Time zone of the date string in summary mode.
 If nil, it is adjust to the default time zone information
 If nil, it is adjust to the default time zone information
-\(system's default time zone or environment variable TZ\)."
+\(system's default time zone or environment variable TZ)."
   :type '(choice (const :tag "Default time zone" nil)
                 string)
   :group 'wl-summary)
   :type '(choice (const :tag "Default time zone" nil)
                 string)
   :group 'wl-summary)
@@ -827,7 +998,7 @@ In sync-all or rescan."
   :type 'integer
   :group 'wl-score)
 
   :type 'integer
   :group 'wl-score)
 
-(defcustom wl-score-files-dir (concat elmo-msgdb-dir elmo-path-sep)
+(defcustom wl-score-files-directory (concat elmo-msgdb-directory elmo-path-sep)
   "*Name of the directory where score files will be stored.
 (default \"~/.elmo\")."
   :type 'directory
   "*Name of the directory where score files will be stored.
 (default \"~/.elmo\")."
   :type 'directory
@@ -921,21 +1092,55 @@ This can either be a regular expression or list of regular expressions."
   :group 'wl-score)
 
 (defcustom wl-draft-fields
   :group 'wl-score)
 
 (defcustom wl-draft-fields
-  '("To:" "Cc:" "Bcc:" "FCC:" "Distribution:" "Organization:"
+  '("To:" "Cc:" "Bcc:" "Fcc:" "Distribution:" "Organization:"
     "Newsgroups:" "Followup-To:" "Mail-Followup-To:" "From:" "Reply-To:")
   "Fields used in draft mode."
   :type '(repeat (string :tag "Field"))
   :group 'wl-draft)
 
     "Newsgroups:" "Followup-To:" "Mail-Followup-To:" "From:" "Reply-To:")
   "Fields used in draft mode."
   :type '(repeat (string :tag "Field"))
   :group 'wl-draft)
 
+;; MIME Bcc.
+(defcustom wl-draft-mime-bcc-field-name "Ecc"
+  "Field name for MIME-encapsulated Bcc."
+  :type '(string :tag "Field Name")
+  :group 'wl-draft)
+
+(defcustom wl-draft-mime-bcc-body nil
+  "Body string for MIME-encapsulated Bcc.
+If nil, a string `This is a blind carbon copy.' is used."
+  :type '(string :tag "Body")
+  :group 'wl-draft)
+
+(defcustom wl-draft-disable-bcc-for-mime-bcc t
+  "Disable Bcc while MIME-encapsulated Bcc."
+  :type 'boolean
+  :group 'wl-draft)
+
+(defcustom wl-draft-disable-fcc-for-mime-bcc t
+  "Disable Fcc while MIME-encapsulated Bcc."
+  :type 'boolean
+  :group 'wl-draft)
+
 (defcustom wl-draft-config-alist nil
 (defcustom wl-draft-config-alist nil
-  "Alist of configuration field on draft.
+  "Alist of condition and actions for dynamical draft modification.
+First element of each list is some condition for the draft buffer (regular
+expression for header or elisp expression) and remaining elements indicate
+actions.
+If the first element is `reply' keyword, the next element be the condition
+for the message being replied, and remaining elements are actions.
+
+The configuration is applied when `wl-draft-config-exec' is called, or
+applied automatically before sending message.
+
 ex.
 '((\"^To: .*wl@lists.airs.net\"
 ex.
 '((\"^To: .*wl@lists.airs.net\"
-   (\"From\" . wl-from2)
-   (\"Organization\" . wl-organization2))
-  (\"^To: .*hogehoge@\"
-   (\"From\" . \"Anonymous <hogehoge@aaa.ne.jp>\")
-   wl-my-draft-config-func-hoge))"
+   (\"From\" . my-from-address-for-wl-list)
+   (\"Organization\" . my-organization-for-wl-list))
+  (reply
+   \"^To: .*hogehoge@aaa.ne.jp\"
+   (\"From\" . \"Alternative Address <hogehoge@aaa.ne.jp>\")
+   my-draft-config-function-hogehoge))
+
+See also variable `wl-draft-parent-folder'."
   :type '(repeat (list (sexp :tag "Match")
                       (repeat
                        :inline t
   :type '(repeat (list (sexp :tag "Match")
                       (repeat
                        :inline t
@@ -951,6 +1156,11 @@ ex.
   :group 'wl-draft
   :group 'wl-setting)
 
   :group 'wl-draft
   :group 'wl-setting)
 
+(defcustom wl-draft-elide-ellipsis "\n[...]\n\n"
+  "*The string which is inserted for elided text."
+  :type 'string
+  :group 'wl-draft)
+
 (defcustom wl-template-alist nil
   "Alist of template."
   :type '(repeat (list (string :tag "Name")
 (defcustom wl-template-alist nil
   "Alist of template."
   :type '(repeat (list (string :tag "Name")
@@ -984,6 +1194,24 @@ ex.
   :group 'wl-draft
   :group 'wl-pref)
 
   :group 'wl-draft
   :group 'wl-pref)
 
+(defcustom wl-draft-force-queuing nil
+  "*Non-nil forces queued sending for mail and news."
+  :type 'boolean
+  :group 'wl-draft
+  :group 'wl-pref)
+
+(defcustom wl-draft-force-queuing-mail nil
+  "*Non-nil forces queued sending for mail."
+  :type 'boolean
+  :group 'wl-draft
+  :group 'wl-pref)
+
+(defcustom wl-draft-force-queuing-news nil
+  "*Non-nil forces queued sending for news."
+  :type 'boolean
+  :group 'wl-draft
+  :group 'wl-pref)
+
 (defcustom wl-draft-use-cache nil
   "*If non-nil, sending message is cached."
   :type 'boolean
 (defcustom wl-draft-use-cache nil
   "*If non-nil, sending message is cached."
   :type 'boolean
@@ -1044,8 +1272,7 @@ ex.
   :group 'wl-summary
   :group 'wl-highlight)
 
   :group 'wl-summary
   :group 'wl-highlight)
 
-(defcustom wl-summary-lazy-highlight (and (boundp 'window-scroll-functions)
-                                         (not wl-on-xemacs))
+(defcustom wl-summary-lazy-highlight (boundp 'window-scroll-functions)
   "Non-nil forces lazy summary highlighting using `window-scroll-functions'."
   :type 'boolean
   :group 'wl-summary
   "Non-nil forces lazy summary highlighting using `window-scroll-functions'."
   :type 'boolean
   :group 'wl-summary
@@ -1132,7 +1359,11 @@ Allowed situations are:
   :type '(repeat (cons (string :tag "Realname") (string :tag "Petname")))
   :group 'wl-folder)
 
   :type '(repeat (cons (string :tag "Realname") (string :tag "Petname")))
   :group 'wl-folder)
 
-(defcustom wl-summary-weekday-name-lang "ja"
+(defcustom wl-summary-weekday-name-lang
+  (if (and (boundp 'current-language-environment)
+          (string-equal "Japanese"
+                        (symbol-value 'current-language-environment)))
+      "ja" "en")
   "*Language to display week day."
   :type '(choice (const "ja")
                 (const "en")
   "*Language to display week day."
   :type '(choice (const "ja")
                 (const "en")
@@ -1142,17 +1373,28 @@ Allowed situations are:
   :group 'wl-summary
   :group 'wl-pref)
 
   :group 'wl-summary
   :group 'wl-pref)
 
+(defcustom wl-message-id-use-wl-from nil
+  "*Use `wl-from' for domain part of Message-ID if non-nil."
+  :type 'boolean
+  :group 'wl-pref)
+
 (defcustom wl-local-domain nil
   "*Domain part of this client (without hostname).
 Set this if (system-name) does not return FQDN."
   :type '(choice (const :tag "Use System Name" nil)
 (defcustom wl-local-domain nil
   "*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)
+                string)
   :group 'wl-pref)
 
 (defcustom wl-message-id-domain nil
   "*Specific domain part of Message-ID."
   :type '(choice (const :tag "Use System Name" nil)
   :group 'wl-pref)
 
 (defcustom wl-message-id-domain nil
   "*Specific domain part of Message-ID."
   :type '(choice (const :tag "Use System Name" nil)
-                 string)
+                string)
+  :group 'wl-pref)
+
+(defcustom wl-unique-id-suffix ".wl"
+  "*Specific string in generated Message-ID
+which appear just before @."
+  :type 'string
   :group 'wl-pref)
 
 (defcustom wl-break-pages t
   :group 'wl-pref)
 
 (defcustom wl-break-pages t
@@ -1160,9 +1402,42 @@ Set this if (system-name) does not return FQDN."
   :type 'boolean
   :group 'wl-pref)
 
   :type 'boolean
   :group 'wl-pref)
 
-(defcustom wl-message-scroll-amount 5
+(defvar wl-message-mode-line-format-spec-alist
+  '((?f (if (memq 'modeline wl-use-folder-petname)
+           (wl-folder-get-petname wl-message-buffer-cur-folder)
+         wl-message-buffer-cur-folder))
+    (?n wl-message-buffer-cur-number))
+  "An alist of format specifications for message buffer's mode-lines.
+Each element is a list of following:
+\(SPEC STRING-EXP)
+SPEC is a character for format specification.
+STRING-EXP is an expression to get string to insert.")
+
+(defcustom wl-message-mode-line-format "Wanderlust: << %f / %n >>"
+  "*A format string for message buffer's mode-line of Wanderlust.
+It may include any of the following format specifications
+which are replaced by the given information:
+
+%f The folder name.
+%n The number of the message."
+  :group 'wl-pref
+  :type 'string)
+
+(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 nil
   "*Scroll amount by SPC key."
   "*Scroll amount by SPC key."
-  :type 'integer
+  :type '(choice (const :tag "scrolling by screenfuls" nil)
+                integer)
   :group 'wl-pref)
 
 (defcustom wl-message-window-size '(1 . 4)
   :group 'wl-pref)
 
 (defcustom wl-message-window-size '(1 . 4)
@@ -1191,6 +1466,38 @@ Each elements are regexp of field-name."
   :group 'wl-pref
   :group 'wl-setting)
 
   :group 'wl-pref
   :group 'wl-setting)
 
+(defcustom wl-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-pref)
+
+(defcustom wl-message-body-button-alist
+  '(("<mailto:[^>]+>" 0 'ignore 0 1024)
+    ("<[^>]+@[^>]+>" 0 wl-message-button-refer-article 0 1024))
+  "Alist of regexps to match buttons in message body."
+  :type '(repeat
+         (list regexp
+               (integer :tag "Button")
+               (function :tag "Callback")
+               (repeat :tag "Data"
+                       :inline t
+                       (integer :tag "Regexp group"))
+               (integer :tag "Max Length")))
+  :group 'wl-pref)
+
 (defcustom wl-folder-window-width 20
   "*Width of folder window."
   :type 'integer
 (defcustom wl-folder-window-width 20
   "*Width of folder window."
   :type 'integer
@@ -1224,6 +1531,12 @@ Each elements are regexp of field-name."
   :group 'wl-draft
   :group 'wl-pref)
 
   :group 'wl-draft
   :group 'wl-pref)
 
+(defcustom wl-forward-subject-prefix "Forward: "
+  "*Prefix of the subject of the forwarded message."
+  :type 'string
+  :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
 (defcustom wl-draft-reply-use-address-with-full-name t
   "*Use address with full-name in the draft of replied message."
   :type 'boolean
@@ -1246,14 +1559,20 @@ with wl-highlight-folder-many-face."
 (defcustom wl-fcc nil
   "*Folder Carbon Copy."
   :type '(choice (const :tag "disable" nil)
 (defcustom wl-fcc nil
   "*Folder Carbon Copy."
   :type '(choice (const :tag "disable" nil)
-                 string)
+                string function)
+  :group 'wl-draft
+  :group 'wl-pref)
+
+(defcustom wl-fcc-force-as-read nil
+  "*If non-nil, mark copied message as read."
+  :type 'boolean
   :group 'wl-draft
   :group 'wl-pref)
 
 (defcustom wl-bcc nil
   "*Blind Carbon Copy."
   :type '(choice (const :tag "disable" nil)
   :group 'wl-draft
   :group 'wl-pref)
 
 (defcustom wl-bcc nil
   "*Blind Carbon Copy."
   :type '(choice (const :tag "disable" nil)
-                 string)
+                string)
   :group 'wl-draft
   :group 'wl-pref)
 
   :group 'wl-draft
   :group 'wl-pref)
 
@@ -1264,8 +1583,9 @@ with wl-highlight-folder-many-face."
   :group 'wl-pref)
 
 (defcustom wl-summary-indent-length-limit 46
   :group 'wl-pref)
 
 (defcustom wl-summary-indent-length-limit 46
-  "*Limit of indent length for thread."
-  :type 'integer
+  "*Limit of indent length for thread. Nil means unlimited"
+  :type '(choice (const :tag "Unlimited" nil)
+                integer)
   :group 'wl-summary
   :group 'wl-pref)
 
   :group 'wl-summary
   :group 'wl-pref)
 
@@ -1305,18 +1625,6 @@ with wl-highlight-folder-many-face."
                (string :tag "Other"))
   :group 'wl-summary)
 
                (string :tag "Other"))
   :group 'wl-summary)
 
-(defcustom wl-from-width 17
-  "*From width in summary."
-  :type 'integer
-  :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 'x-ctext
   "*MIME Charset for summary and message."
   :type 'symbol
 (defcustom wl-mime-charset 'x-ctext
   "*MIME Charset for summary and message."
   :type 'symbol
@@ -1324,7 +1632,7 @@ with wl-highlight-folder-many-face."
   :group 'wl-pref)
 
 (defcustom wl-generate-mailer-string-function 'wl-generate-user-agent-string
   :group 'wl-pref)
 
 (defcustom wl-generate-mailer-string-function 'wl-generate-user-agent-string
-  "A function to create X-Mailer field string ."
+  "A function for creating User-Agent field string."
   :type 'function
   :group 'wl-draft)
 
   :type 'function
   :group 'wl-draft)
 
@@ -1357,7 +1665,7 @@ might set this variable to '(\"-f\" \"you@some.where\")."
   :group 'wl-draft)
 
 (defcustom wl-rejected-letter-start
   :group 'wl-draft)
 
 (defcustom wl-rejected-letter-start
-  "^[\t ]*-+[\t ]+\\(original\\|\\(\\(the \\)?unsent\\)\\) message\\( follows\\)?[\t ]+-+[\t ]*$"
+  "^[\t ]*-+[\t ]+\\(\\(original\\|\\(\\(the \\)?unsent\\)\\) message\\( follows\\)?[\t ]+-+[\t ]*\\|Below this line is a copy of the message\\..*\\)$"
   "Regexp specifying the beginning of the wrapper around a returned letter.
 This wrapper is generated by the mail system when rejecting a letter."
   :type 'regexp
   "Regexp specifying the beginning of the wrapper around a returned letter.
 This wrapper is generated by the mail system when rejecting a letter."
   :type 'regexp
@@ -1442,25 +1750,26 @@ Only IMAP4 folders have an effect."
   :group 'wl-folder)
 
 (defcustom wl-auto-check-folder-name nil
   :group 'wl-folder)
 
 (defcustom wl-auto-check-folder-name nil
-  "*The folder specified by this variable will be automatically checked
-at start time."
+  "*A folder, a group or a list of folders and groups specified which
+will be automatically checked at the startup time."
   :type '(choice (string :tag "Folder")
                 (repeat (string :tag "Folder"))
                 (const none))
   :group 'wl-folder)
 
 (defcustom wl-auto-uncheck-folder-list '("\\$.*")
   :type '(choice (string :tag "Folder")
                 (repeat (string :tag "Folder"))
                 (const none))
   :group 'wl-folder)
 
 (defcustom wl-auto-uncheck-folder-list '("\\$.*")
-  "All folders that match this list won't be checked when group is
-automatically checked (or desktop is checked).
+  "All folders that match this list won't be checked at the startup
+time even if they are embedded in some groups specified by
+wl-auto-check-folder-name.
+Those folders are also skipped when you check on the Desktop.
 This value is preceded by wl-auto-check-folder-list.
 Each elements are regexp of folder name."
   :type '(repeat (regexp :tag "Folder Regexp"))
   :group 'wl-folder)
 
 (defcustom wl-auto-check-folder-list nil
 This value is preceded by wl-auto-check-folder-list.
 Each elements are regexp of folder name."
   :type '(repeat (regexp :tag "Folder Regexp"))
   :group 'wl-folder)
 
 (defcustom wl-auto-check-folder-list nil
-  "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.
+  "A list of patterns for exceptional folders against
+wl-auto-uncheck-folder-list.
 Each elements are regexp of folder name."
   :type '(repeat (regexp :tag "Folder Regexp"))
   :group 'wl-folder)
 Each elements are regexp of folder name."
   :type '(repeat (regexp :tag "Folder Regexp"))
   :group 'wl-folder)
@@ -1504,7 +1813,11 @@ every intervals specified by wl-biff-check-interval."
   :type 'string
   :group 'wl-highlight)
 
   :type 'string
   :group 'wl-highlight)
 
-(defcustom wl-biff-state-indicator-off "[\e$B!>\e(B]"
+(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)
   "String used to show biff status OFF."
   :type 'string
   :group 'wl-highlight)
@@ -1528,7 +1841,7 @@ even if the value of this option is set to nil.  Here are some samples:
                        (sexp :tag "Other" :value title)))
   :group 'wl-highlight)
 
                        (sexp :tag "Other" :value title)))
   :group 'wl-highlight)
 
-(defcustom wl-interactive-send nil
+(defcustom wl-interactive-send t
   "*If non-nil, require your confirmation when sending draft message."
   :type 'boolean
   :group 'wl-pref
   "*If non-nil, require your confirmation when sending draft message."
   :type 'boolean
   :group 'wl-pref
@@ -1563,6 +1876,12 @@ It uses wl-summary-move-direction-downward as a direction flag."
   :group 'wl-pref
   :group 'wl-setting)
 
   :group 'wl-pref
   :group 'wl-setting)
 
+(defcustom wl-auto-prefetch-first nil
+  "*If non-nil, prefetch selected first message when enter summary."
+  :type 'boolean
+  :group 'wl-pref
+  :group 'wl-setting)
+
 (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
 (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
@@ -1577,19 +1896,30 @@ See also variable `wl-summary-next-no-unread-command'."
   :group 'wl-pref
   :group 'wl-setting)
 
   :group 'wl-pref
   :group 'wl-setting)
 
-(defcustom wl-cache-prefetch-folder-type-list '(imap4 nntp)
+(defcustom wl-message-buffer-name " *WL:Message*"
+  "*Buffer name for message buffers."
+  :group 'wl-pref
+  :group 'wl-setting)
+
+(defcustom wl-message-buffer-prefetch-folder-type-list '(imap4 nntp)
   "*All folder types that match this list prefetch next message,
 and reserved buffer cache."
   "*All folder types that match this list prefetch next message,
 and reserved buffer cache."
-  :type '(set (const localdir)
-             (const localnews)
-             (const imap4)
-             (const nntp)
-             (const pop3)
-             (const archive)
-             (const internal))
+  :type `(choice (const :tag "all" t)
+                (const :tag "never" nil)
+                (set (const localdir)
+                     (const localnews)
+                     (const maildir)
+                     (const imap4)
+                     (const nntp)
+                     (const pop3)
+                     (const shimbun)
+                     (const nmz)
+                     (const archive)
+                     (const mark)
+                     (const cache)))
   :group 'wl-pref)
 
   :group 'wl-pref)
 
-(defcustom wl-cache-prefetch-folder-list nil
+(defcustom wl-message-buffer-prefetch-folder-list nil
   "*All folders that match this list prefetch next message,
 and reserved buffer cache.
 e.x.
   "*All folders that match this list prefetch next message,
 and reserved buffer cache.
 e.x.
@@ -1597,6 +1927,21 @@ e.x.
   :type '(repeat (regexp :tag "Folder Regexp"))
   :group 'wl-pref)
 
   :type '(repeat (regexp :tag "Folder Regexp"))
   :group 'wl-pref)
 
+(defcustom wl-message-buffer-prefetch-depth 1
+  "*Depth of buffer prefetch in summary mode."
+  :type 'integer
+  :group 'wl-pref)
+
+(defcustom wl-message-buffer-prefetch-idle-time 1
+  "*Idle time of buffer prefetch."
+  :type 'number
+  :group 'wl-pref)
+
+(defcustom wl-message-buffer-prefetch-threshold 30000
+  "*Quit forward cache prefetching if message size is larger than this value."
+  :type 'integer
+  :group 'wl-pref)
+
 (defcustom wl-summary-always-sticky-folder-list nil
   "All folders that match this list has sticky summary.
 Each elements are regexp of folder name."
 (defcustom wl-summary-always-sticky-folder-list nil
   "All folders that match this list has sticky summary.
 Each elements are regexp of folder name."
@@ -1622,7 +1967,8 @@ Each elements are regexp of folder name."
     ("^-relcom\\." . koi8-r)
     ("^-tw\\." . big5)
     ("^-han\\." . euc-kr)
     ("^-relcom\\." . koi8-r)
     ("^-tw\\." . big5)
     ("^-han\\." . euc-kr)
-    ("@sponichi" . shift_jis))
+    ("@sponichi" . shift_jis)
+    ("@2ch" . shift_jis))
   "Charset alist.  If no match, `wl-mime-charset' is used."
   :type '(repeat (cons (regexp :tag "Folder Regexp") (symbol :tag "Charset")))
   :group 'wl-summary
   "Charset alist.  If no match, `wl-mime-charset' is used."
   :type '(repeat (cons (regexp :tag "Folder Regexp") (symbol :tag "Charset")))
   :group 'wl-summary
@@ -1653,7 +1999,7 @@ e.x.
     ("^-han\\." . (2 "+" "+" "|" "-" " ")))
   "Thread indent set alist.
 If no match, following indent set is used.
     ("^-han\\." . (2 "+" "+" "|" "-" " ")))
   "Thread indent set alist.
 If no match, following indent set is used.
-(wl-thread-indent-level
+\(wl-thread-indent-level
  wl-thread-have-younger-brother-str
  wl-thread-youngest-child-str
  wl-thread-vertical-str
  wl-thread-have-younger-brother-str
  wl-thread-youngest-child-str
  wl-thread-vertical-str
@@ -1711,7 +2057,7 @@ TYPE is one of the symbols `hide' or `read'.
 `read' means mark as read duplicated messages.
 If TYPE is nil, do nothing for duplicated messages."
   :type '(repeat (cons (regexp :tag "Folder regexp")
 `read' means mark as read duplicated messages.
 If TYPE is nil, do nothing for duplicated messages."
   :type '(repeat (cons (regexp :tag "Folder regexp")
-                      (choice (const :tag "Hide" kill)
+                      (choice (const :tag "Hide" hide)
                               (const :tag "Mark as read" read))))
   :group 'wl-folder)
 
                               (const :tag "Mark as read" read))))
   :group 'wl-folder)
 
@@ -1807,8 +2153,8 @@ POLICY is copy or move."
   :group 'wl-summary
   :group 'wl-pref)
 
   :group 'wl-summary
   :group 'wl-pref)
 
-(defcustom wl-folder-hierarchy-access-folders '("-" "-alt")
-  "*Access group folders to make hierarchy structure."
+(defcustom wl-folder-hierarchy-access-folders '("^-$" "^-alt$")
+  "*Access group REGEXPs to make hierarchy structure."
   :type '(repeat (string :tag "Folder"))
   :group 'wl-folder)
 
   :type '(repeat (string :tag "Folder"))
   :group 'wl-folder)
 
@@ -1889,6 +2235,11 @@ ex.
                (string :tag "Other"))
   :group 'wl-folder)
 
                (string :tag "Other"))
   :group 'wl-folder)
 
+(defcustom wl-fldmgr-allow-rename-access-group nil
+  "*If non-nil, allow to rename folder in access group."
+  :type 'boolean
+  :group 'wl-folder)
+
 ;;; For Expire and Archive
 
 (defcustom wl-expire-alist nil
 ;;; For Expire and Archive
 
 (defcustom wl-expire-alist nil
@@ -2059,22 +2410,6 @@ list  : reserved specified permanent marks."
   :type '(repeat (cons regexp face))
   :group 'wl-highlight)
 
   :type '(repeat (cons regexp face))
   :group 'wl-highlight)
 
-(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
 (defcustom wl-highlight-citation-prefix-regexp
   "^[>|:} ]*[>|:}]\\([^ \n>]*>\\)?\\|^[^ <\n>]*>"
   "All lines that match this regexp will be highlighted with
@@ -2192,13 +2527,22 @@ a symbol `bitmap', `xbm' or `xpm' in order to force the image format."
                (const :tag "bitmap (using BITMAP-MULE)" bitmap))
   :group 'wl-pref)
 
                (const :tag "bitmap (using BITMAP-MULE)" bitmap))
   :group 'wl-pref)
 
+(defcustom wl-invalid-character-message "(WL:Invalid characters.)"
+  "*A string displayed when invalid character exists."
+  :type 'string
+  :group 'wl-pref)
+
 ;;; Internal variables
 (defvar wl-init nil)
 
 ;; For disconnected operations.
 (defvar wl-plugged-hook nil)
 (defvar wl-unplugged-hook nil)
 ;;; Internal variables
 (defvar wl-init nil)
 
 ;; For disconnected operations.
 (defvar wl-plugged-hook nil)
 (defvar wl-unplugged-hook nil)
-(defvar wl-plugged t)
+(defcustom wl-plugged t
+  "*Plugged state at the startup.  Nil means off-line."
+  :type 'boolean
+  :group 'wl
+  :group 'wl-setting)
 
 ;; Internal variables used to modeline identifiers.
 (defvar wl-modeline-plug-status nil)
 
 ;; Internal variables used to modeline identifiers.
 (defvar wl-modeline-plug-status nil)
@@ -2225,7 +2569,7 @@ a symbol `bitmap', `xbm' or `xpm' in order to force the image format."
 (defvar wl-highlight-thread-indent-string-regexp "[^[<]*"
   "* A regexp string for thread indent...for highlight.")
 
 (defvar wl-highlight-thread-indent-string-regexp "[^[<]*"
   "* A regexp string for thread indent...for highlight.")
 
-;; folder icons. filename relative to wl-icon-dir
+;; folder icons. filename relative to wl-icon-directory
 (defvar wl-opened-group-folder-icon "opened.xpm"
   "*Icon file for opened group folder.")
 (defvar wl-closed-group-folder-icon "closed.xpm"
 (defvar wl-opened-group-folder-icon "opened.xpm"
   "*Icon file for opened group folder.")
 (defvar wl-closed-group-folder-icon "closed.xpm"
@@ -2279,18 +2623,6 @@ a symbol `bitmap', `xbm' or `xpm' in order to force the image format."
 (defvar wl-prog-uudecode-no-stdout-option t
   "*If non-nil, uudecode program don't have option for output to stdout.")
 
 (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.
-(defvar wl-address-filename wl-address-file)
-(make-obsolete-variable 'wl-address-filename 'wl-address-file)
-(defvar wl-score-default-file-name wl-score-default-file)
-(make-obsolete-variable 'wl-score-default-file-name 'wl-score-default-file)
-(defvar wl-draft-prepared-config-alist nil)
-(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")
 (defvar wl-plugged-plug-off "--")
 ;; plug
 (defvar wl-plugged-plug-on "ON")
 (defvar wl-plugged-plug-off "--")
@@ -2299,7 +2631,30 @@ a symbol `bitmap', `xbm' or `xpm' in order to force the image format."
 (defvar wl-plugged-port-indent 4)
 (defvar wl-plugged-queue-status-column 25)
 
 (defvar wl-plugged-port-indent 4)
 (defvar wl-plugged-queue-status-column 25)
 
-;; Obsolete variables.
+;;;; Obsolete variables.
+
+;; 2001-12-11: *-dir -> *-directory
+(elmo-define-obsolete-variable 'wl-icon-dir
+                              'wl-icon-directory)
+(elmo-define-obsolete-variable 'wl-mime-save-dir
+                              'wl-mime-save-directory)
+(elmo-define-obsolete-variable 'wl-score-files-dir
+                              'wl-score-files-directory)
+(elmo-define-obsolete-variable 'wl-tmp-dir
+                              'wl-temporary-file-directory)
+
+;; 2001-12-10
+(elmo-define-obsolete-variable 'wl-summary-update-confirm-threshold
+                              'elmo-folder-update-threshold)
+(elmo-define-obsolete-variable 'wl-fetch-confirm-threshold
+                              'elmo-message-fetch-threshold)
+
+(elmo-define-obsolete-variable 'wl-cache-prefetch-folder-type-list
+                              'wl-message-buffer-prefetch-folder-type-list)
+(elmo-define-obsolete-variable 'wl-cache-prefetch-folder-list
+                              'wl-message-buffer-prefetch-folder-list)
+
+;; 2001-02-27: *-func -> *-function
 (elmo-define-obsolete-variable 'wl-summary-from-func
                               'wl-summary-from-function)
 (elmo-define-obsolete-variable 'wl-summary-subject-func
 (elmo-define-obsolete-variable 'wl-summary-from-func
                               'wl-summary-from-function)
 (elmo-define-obsolete-variable 'wl-summary-subject-func
@@ -2327,6 +2682,22 @@ a symbol `bitmap', `xbm' or `xpm' in order to force the image format."
 (elmo-define-obsolete-variable 'wl-highlight-signature-search-func
                               'wl-highlight-signature-search-function)
 
 (elmo-define-obsolete-variable 'wl-highlight-signature-search-func
                               'wl-highlight-signature-search-function)
 
+;; 2000-01-25: temp mark -> target mark
+(elmo-define-obsolete-variable 'wl-summary-temp-above
+                              'wl-summary-target-above)
+
+;; 1999-11-07: Unified with `wl-draft-config-alist'.
+(defvar wl-draft-prepared-config-alist nil)
+(make-obsolete-variable 'wl-draft-prepared-config-alist
+                       'wl-draft-config-alist)
+
+;; 1999-10-10
+(elmo-define-obsolete-variable 'wl-address-filename
+                              'wl-address-file)
+(elmo-define-obsolete-variable 'wl-score-default-file-name
+                              'wl-score-default-file)
+
+
 (require 'product)
 (product-provide (provide 'wl-vars) (require 'wl-version))
 
 (require 'product)
 (product-provide (provide 'wl-vars) (require 'wl-version))