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-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
+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
If nil, `elmo-nntp-default-stream-type' is used."
:type 'boolean
:group 'wl)
+(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
"*Confirm prefetching if message size is larger than `wl-prefetch-threshold'."
("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,
("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,
("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,
("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,
:type 'file
:group 'wl)
-(defcustom wl-ldap-server "localhost"
+(defcustom wl-ldap-server nil
"*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)
-(defcustom wl-ldap-base "c=US"
+(defcustom wl-ldap-base nil
"*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)
: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
- "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\"
- (\"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
: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
: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")
:type 'boolean
:group 'wl-pref)
+(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-draft
:group 'wl-pref)
-(defcustom wl-message-scroll-amount 5
+(defcustom wl-message-scroll-amount nil
"*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-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
(string :tag "Other"))
:group 'wl-summary)
-(defcustom wl-summary-from-width 17
- "*From width in summary."
- :type 'integer
- :group 'wl-summary
- :group 'wl-pref)
-
-(defcustom wl-summary-subject-length-limit nil
- "*Set subject width in summary when wl-summary-width is nil.
-Nil means unlimited"
- :type '(choice (const :tag "Unlimited" nil)
- integer)
- :group 'wl-summary
- :group 'wl-pref)
-
(defcustom wl-mime-charset 'x-ctext
"*MIME Charset for summary and message."
:type 'symbol
: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)
: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
:group 'wl-pref
:group 'wl-setting)
-(defcustom wl-message-buffer-prefetch-folder-type-list t
+(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."
:type `(choice (const :tag "all" t)
:type '(repeat (regexp :tag "Folder Regexp"))
:group 'wl-pref)
-(defcustom wl-message-buffer-prefetch-depth 3
+(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 0.2
+(defcustom wl-message-buffer-prefetch-idle-time 1
"*Idle time of buffer prefetch."
:type 'number
: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)
(elmo-define-obsolete-variable 'wl-tmp-dir
'wl-temporary-file-directory)
-;; 2001-12-07
-(elmo-define-obsolete-variable 'wl-from-width
- 'wl-summary-from-width)
-(elmo-define-obsolete-variable 'wl-subject-length-limit
- 'wl-summary-subject-length-limit)
-
;; 2001-12-10
(elmo-define-obsolete-variable 'wl-summary-update-confirm-threshold
'elmo-folder-update-threshold)