-;;; wl-vars.el -- Variable definitions for Wanderlust.
+;;; wl-vars.el --- Variable definitions for Wanderlust.
-;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
-;; Copyright (C) 1998,1999,2000 Masahiro MURATA <muse@ba2.so-net.ne.jp>
+;; Copyright (C) 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>
;;
(require 'elmo-vars)
-
-(if (module-installed-p 'custom)
- (require 'custom))
+(require 'elmo-util)
+(require 'custom)
;;; 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)
:prefix "wl-"
:group 'wl)
+(defgroup wl-setting nil
+ "Wanderlust common settings."
+ :prefix "wl-"
+ :group 'wl)
+
;;; Emacsen
(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
(> emacs-major-version 19))))
-(require 'elmo-vars)
+(defconst wl-on-nemacs nil) ; backward compatibility.
(eval-when-compile
(defun-maybe locate-data-directory (a)))
(defvar wl-cs-noconv
(cond (wl-on-mule3 'binary)
- (wl-on-mule '*noconv*)
- (wl-on-nemacs 0)
- (t nil)))
+ (wl-on-mule '*noconv*)
+ (t nil)))
(defvar wl-cs-autoconv
(cond (wl-on-mule3 'undecided)
- (wl-on-mule '*autoconv*)
- (wl-on-nemacs 2) ; junet...
- (t nil)))
+ (wl-on-mule '*autoconv*)
+ (t nil)))
(defvar wl-cs-local
(cond (wl-on-mule3 'junet)
- (wl-on-mule '*junet*)
- (wl-on-nemacs 2)
- (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.")
-(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."
- :type 'string
- :group 'wl)
+ :type 'string
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-user-mail-address-list nil
"*A list of user's mail addresses.
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)
+ :group 'wl
+ :group 'wl-setting)
-(defcustom wl-organization nil
+(defcustom wl-organization (getenv "ORGANIZATION")
"Organization name."
:type '(choice (const :tag "none" nil)
- string)
- :group 'wl)
+ string)
+ :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)
-(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)
-(defcustom wl-summary-from-func 'wl-summary-default-from
+(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))
+ (?\[ (wl-summary-line-open-bracket))
+ (?\] (wl-summary-line-close-bracket))
+ (?t (wl-summary-line-thread-indent))
+ (?s (wl-summary-line-subject))
+ (?S (wl-summary-line-size))
+ (?c (wl-summary-line-children-number))
+ (?f (wl-summary-line-from))
+ (?F (wl-summary-line-children-and-from)))
+ "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 is an expression to get string to insert.")
+
+(defcustom wl-summary-line-format "%M/%D(%W)%h:%m %t%[%17F %] %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:
+
+%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.
+%f The from: field string of the message.
+%F The children number of the closed message thread and
+ the from: field string of the message are concatenated.
+%s The subject: field string of the message.
+%S the size of the message (if available)."
+ :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.
+ '((\"^%\" . \"%M/%D(%W)%h:%m %t%[%14F %](%S) %s\")
+ (\"^@2ch\" . \"%M%/%D/%h:%m %t[%9F ]%s\")))"
+ :type '(repeat (cons (regexp :tag "Folder Regexp")
+ (string :tag "line format")))
+ :group 'wl-summary)
+
+(defcustom wl-summary-from-function 'wl-summary-default-from
"*A function for displaying sender (From: field) information."
:type 'function
:group 'wl-summary)
-(defcustom wl-summary-subject-func 'wl-summary-default-subject
+(defcustom wl-summary-subject-function 'wl-summary-default-subject
"*A function for displaying subject."
:type 'function
:group 'wl-summary)
-(defcustom wl-summary-subject-filter-func 'wl-summary-default-subject-filter
+(defcustom wl-summary-subject-filter-function 'wl-summary-default-subject-filter
"*A filter function for comparing subjects."
:type 'function
:group 'wl-summary)
-(defcustom wl-summary-search-parent-by-subject-regexp "^[ \t]*\\(\\[[^:]+[,: ][0-9]+\\]\\)?[ \t]*re[\\^[: ]"
+(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
- :group 'wl-summary)
-
;; Important folders
(defcustom wl-default-folder "%inbox"
"*Default folder used in `wl-summary-goto-folder'."
(defcustom wl-trash-folder "+trash"
"*Trash folder"
:type 'string
- :group 'wl)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-queue-folder "+queue"
"*Queue folder"
:type 'string
"*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)
+ :group 'wl-pref
+ :group 'wl-setting)
(defcustom wl-demo t
"*Display demo at start time."
If nil, `wl-from' is used."
:type '(choice (const :tag "Same as 'From' field." nil)
string)
+ :group 'wl
+ :group 'wl-setting)
+
+(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 t
+(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)
+(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-posting-user nil
"*SMTP authentication user."
:type '(choice (const :tag "none" nil)
- string)
- :group 'wl)
+ string)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-smtp-posting-server nil
"*SMTP server name to send mail (wl-draft-send-mail-with-smtp)."
:type '(choice (const :tag "none" nil)
string)
- :group 'wl)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-smtp-posting-port 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)
- :group 'wl)
+ integer)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-smtp-authenticate-type nil
"*SMTP Authentication type.
(const :tag "CRAM-MD5" "cram-md5")
(const :tag "LOGIN" "login")
(string :tag "Other"))
- :group 'wl)
+ :group 'wl
+ :group 'wl-setting)
(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-pop3-default-user' is used.
To use POP-before-SMTP,
-(setq wl-draft-send-mail-func '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)
- string)
- :group 'wl)
+ string)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-pop-before-smtp-server nil
"*POP3 server for POP-before-SMTP.
-If nil, `elmo-default-pop3-server' is used."
+If nil, `elmo-pop3-default-server' is used."
:type '(choice (const :tag "none" nil)
- string)
- :group 'wl)
+ string)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-pop-before-smtp-port nil
"*POP3 port for POP-before-SMTP.
-If nil, `elmo-default-pop3-port' is used."
+If nil, `elmo-pop3-default-port' is used."
:type '(choice (const :tag "none" nil)
integer string)
- :group 'wl)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-pop-before-smtp-stream-type nil
"*Stream type for POP-before-SMTP.
-If nil, `elmo-default-pop3-stream-type' is used."
+If nil, `elmo-pop3-default-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."
+If nil, `elmo-pop3-default-authenticate-type' is used."
:type '(choice (const :tag "none" nil)
- (const :tag "APOP" "apop")
- (const :tag "POP3" "user"))
- :group 'wl)
+ (const :tag "APOP" 'apop)
+ (const :tag "POP3" 'user))
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-nntp-posting-server nil
"*NNTP server name to post news.
-If nil, `elmo-default-nntp-server' is used."
+If nil, `elmo-nntp-default-server' is used."
:type '(choice (const :tag "none" nil)
- string)
- :group 'wl)
+ string)
+ :group 'wl
+ :group 'wl-setting)
(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-nntp-default-user' is used.
If nil, don't authenticate."
:type '(choice (const :tag "none" nil)
- string)
- :group 'wl)
+ string)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-nntp-posting-port nil
"*NNTP port to post news.
-If nil, `elmo-default-nntp-port' is used."
+If nil, `elmo-nntp-default-port' is used."
:type '(choice (const :tag "none" nil)
integer string)
- :group 'wl)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-nntp-posting-stream-type nil
"*Stream type for posting Netnews.
-If nil, `elmo-default-nntp-stream-type' is used."
+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-prefetch-confirm t
"*Confirm prefetching if message size is larger than `wl-prefetch-threshold'."
:type 'boolean
when `wl-prefetch-confirm' is non-nil."
:type '(choice (integer :tag "Threshold (bytes)")
(const :tag "No limitation" nil))
- :group 'wl-pref)
-
-(defcustom wl-cache-prefetch-threshold 30000
- "*Quit forward cache prefetching if message size is larger than this value."
- :type 'integer
- :group 'wl-pref)
+ :group 'wl-pref
+ :group 'wl-setting)
(defcustom wl-thread-insert-opened nil
"*Non-nil forces to insert thread as opened in updating."
:type 'boolean
- :group 'wl-summary)
+ :group 'wl-summary
+ :group 'wl-setting)
(defcustom wl-thread-open-reading-thread t
"*Non-nil forces to open reading thread."
"A hook called when Message is displayed.")
(defvar wl-message-exit-hook nil
"A hook called when quit message.")
+(defvar wl-summary-exit-pre-hook nil
+ "A hook called before exit summary mode.")
(defvar wl-summary-exit-hook nil
"A hook called when exit summary mode.")
(defvar wl-highlight-headers-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
"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
"A hook called when exit plugged mode.")
;;;; functions for draft
-(defcustom wl-draft-send-func 'wl-draft-normal-send-func
+(defcustom wl-draft-send-function 'wl-draft-normal-send-func
"A function to send message."
:type 'function
:group 'wl-draft)
-(defcustom wl-draft-send-news-func 'wl-draft-elmo-nntp-send
+(defcustom wl-draft-send-news-function 'wl-draft-elmo-nntp-send
"A function to send news."
:type 'function
:group 'wl-draft)
-(defcustom wl-draft-send-mail-func 'wl-draft-send-mail-with-smtp
+(defcustom wl-draft-send-mail-function 'wl-draft-send-mail-with-smtp
"A function to send mail.
Prepared candidates are 'wl-draft-send-mail-with-smtp,
'wl-draft-send-mail-with-qmail and 'wl-draft-send-mail-with-pop-before-smtp."
: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'."
:type 'boolean
(defcustom wl-ldap-server "localhost"
"*LDAP server."
:type '(string :tag "Server")
- :group 'wl)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-ldap-port nil
"*LDAP port."
:type '(choice (const :tag "Default port" nil)
integer)
- :group 'wl)
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-ldap-base "c=US"
"*LDAP base."
:type '(string :tag "Base")
- :group 'wl)
+ :group 'wl
+ :group 'wl-setting)
+
+(defcustom wl-ldap-objectclass "person"
+ "*LDAP objectclass."
+ :type 'string
+ :group 'wl
+ :group 'wl-setting)
(defcustom wl-use-ldap nil
"*If non-nil, use LDAP for address completion."
:type 'boolean
+ :group 'wl
+ :group 'wl-setting)
+
+(defcustom wl-use-acap nil
+ "*If non-nil, use ACAP for configuration."
+ :type 'boolean
:group 'wl)
(defcustom wl-folder-info-save t
: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 "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
:type '(repeat (string :tag "Mark"))
:group 'wl-score)
-(defcustom wl-use-scoring (not wl-on-nemacs)
+(defcustom wl-use-scoring t
"*If non-nil, enable scoring."
:type 'boolean
:group 'wl-pref)
: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
: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"))
(choice (cons (sexp :tag "Field(Variable)")
(sexp :tag "Value"))
(sexp :tag "Function")))))
- :group 'wl-draft)
+ :group 'wl-draft
+ :group 'wl-setting)
(defcustom wl-draft-config-matchone nil
"*If non-nil, applied only one element of `wl-draft-config-alist'."
:type 'boolean
+ :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
(choice (cons (sexp :tag "Field(Variable)")
(sexp :tag "Value"))
(sexp :tag "Function")))))
- :group 'wl-draft)
+ :group 'wl-draft
+ :group 'wl-setting)
(defcustom wl-template-visible-select t
"*If non-nil, select template with visible."
: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
: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."
+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)
:type 'file
:group 'wl-summary)
-(defcustom wl-print-buffer-func 'lpr-buffer
+(defcustom wl-print-buffer-function 'lpr-buffer
"A function to print current buffer."
:type 'function
:group 'wl-pref)
-(defcustom wl-ps-print-buffer-func
+(defcustom wl-ps-print-buffer-function
(if window-system 'ps-print-buffer-with-faces 'ps-print-buffer)
"A function to print current buffer with ps-print."
:type 'function
: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)
- 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)
- 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
: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
(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.
-(Not valid on tm.)"
+ "*Sort order of header fields. Each elements are regexp of field name."
:type '(repeat (string :tag "Field Regexp"))
- :group 'wl-pref)
+ :group 'wl-pref
+ :group 'wl-setting)
(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)
+ :group 'wl-pref
+ :group 'wl-setting)
(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
+ :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
: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
(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)
- string)
+ string)
:group 'wl-draft
:group 'wl-pref)
: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)
(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)
(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
+(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 (if wl-on-nemacs
- 'iso-2022-jp
- 'x-ctext)
+(defcustom wl-mime-charset 'x-ctext
"*MIME Charset for summary and message."
:type 'symbol
:group 'wl-summary
:group 'wl-pref)
-(defcustom wl-generate-mailer-string-func 'wl-generate-user-agent-string
- "A function to create X-Mailer field string ."
+(defcustom wl-generate-mailer-string-function 'wl-generate-user-agent-string
+ "A function for creating User-Agent field string."
:type 'function
:group 'wl-draft)
(const light))
:group 'wl-highlight)
-(defcustom wl-highlight-x-face-func nil
+(defcustom wl-highlight-x-face-function nil
"A function to display X-Face."
:type 'function
:group 'wl-highlight)
: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 '("\\$.*")
- "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
- "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)
:type 'integer
:group 'wl-highlight)
-(defcustom wl-biff-state-indicator-on "[\e$B")\e(B]"
+(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 "[\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)
(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)
+ :group 'wl-pref
+ :group 'wl-setting)
(defcustom wl-interactive-exit t
"*If non-nil, require your confirmation when exiting WL."
If this variable is `new', precede \"N\" mark."
:type '(radio (const new)
(const unread))
- :group 'wl-summary)
+ :group 'wl-summary
+ :group 'wl-setting)
(defvar wl-summary-move-direction-downward t)
(defcustom wl-auto-select-first nil
"*If non-nil, display selected first message when enter summary."
:type 'boolean
- :group 'wl-pref)
+ :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.
(const :tag "on" t)
(const unread)
(const skip-no-unread))
- :group 'wl-pref)
+ :group 'wl-pref
+ :group 'wl-setting)
-(defcustom wl-cache-prefetch-folder-type-list '(imap4 nntp)
+(defcustom wl-message-buffer-prefetch-folder-type-list t
"*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)
-(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.
:type '(repeat (regexp :tag "Folder Regexp"))
:group 'wl-pref)
-(defcustom wl-cache-prefetch-get-next-func 'wl-summary-default-get-next-msg
- "*A function to get message number when prefetch next message."
- :type 'function
+(defcustom wl-message-buffer-prefetch-depth 3
+ "*Depth of buffer prefetch in summary mode."
+ :type 'integer
+ :group 'wl-pref)
+
+(defcustom wl-message-buffer-prefetch-idle-time 0.2
+ "*Idle time of buffer prefetch."
+ :type 'number
:group 'wl-pref)
-;; obsolete
-;(defvar wl-no-cache-folder-list '("^\\$.*")
-; "All folders that match this list won't be cached when reading messages.
-;Each elements are regexp of folder name.")
+(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.
(repeat (regexp :tag "Folder Regexp")))
:group 'wl-pref)
-(defcustom wl-no-save-folder-list '("^/.*$")
+(defcustom wl-no-save-folder-list '("^/.*$" "^\\[.*$")
"All folders that match this list won't save its msgdb.
Each elements are regexp of folder name."
:type '(repeat (regexp :tag "Folder Regexp"))
'(("^-alt\\.chinese" . big5)
("^-relcom\\." . koi8-r)
("^-tw\\." . big5)
- ("^-han\\." . euc-kr))
+ ("^-han\\." . euc-kr)
+ ("@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
:type 'boolean
:group 'wl-pref)
+(defcustom wl-folder-process-duplicates-alist nil
+ "Specify process type of duplicated messages.
+It should be a list of cons cell like: (REGEXP . TYPE)
+REGEXP is a regular expression string of folder name.
+TYPE is one of the symbols `hide' or `read'.
+`hide' means hide duplicated messages.
+`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" hide)
+ (const :tag "Mark as read" read))))
+ :group 'wl-folder)
+
(defcustom wl-folder-move-cur-folder nil
"*Non-nil, move to current folder on folder-mode when goto folder."
:type 'boolean
:group 'wl-folder)
-(defcustom wl-folder-check-async (not wl-on-nemacs)
+(defcustom wl-folder-check-async t
"*Check the folder asynchronous."
:type 'boolean
:group 'wl-folder)
: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)
(defcustom wl-interactive-save-folders t
"*Non-nil require your confirmation when save folders."
:type 'boolean
- :group 'wl-folder)
+ :group 'wl-folder
+ :group 'wl-setting)
(defcustom wl-fldmgr-make-backup t
"*Non-nil make backup file when save folders."
:type 'string
:group 'wl-folder)
-(defcustom wl-fldmgr-sort-func 'wl-fldmgr-sort-standard
+(defcustom wl-fldmgr-sort-function 'wl-fldmgr-sort-standard
"*A function to sort folder."
:type 'function
: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
:group 'wl-expire)
;; for wl-expire-archive-{number1|number2|date}
-(defcustom wl-expire-archive-get-folder-func
+(defcustom wl-expire-archive-get-folder-function
'wl-expire-archive-get-folder
"*A function to get archive folder name."
:type 'function
: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
(const :tag "don't highlight" nil))
:group 'wl-highlight)
-(defcustom wl-highlight-signature-search-func 'wl-highlight-signature-search
+(defcustom wl-highlight-signature-search-function 'wl-highlight-signature-search
"Function to search signature area in the message body."
:type 'function
:group 'wl-highlight)
:type 'boolean
:group 'wl-pref)
-(defcustom wl-demo-display-logo (or (and (featurep 'xemacs)
- (if (featurep 'xpm)
- 'xpm 'xbm))
- (and (module-installed-p 'image)
- (if (image-type-available-p 'xpm)
- 'xpm 'xbm))
- (and (module-installed-p 'bitmap)
- 'xbm))
- "If non-nil, show graphic logo in the startup screen.
-You can set it to a symbol `xbm' to limit the image format to
-XBM even if XPM can be shown."
- :type '(radio (const :tag "OFF" nil)
- (const :tag "XBM (possibly BITMAP-MULE)" xbm)
- (sexp :format "ON (any format)" :value t))
+(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
;; 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)
(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"
"*Icon file for archive folder.")
(defvar wl-pipe-folder-icon "pipe.xpm"
"*Icon file for pipe folder.")
+(defvar wl-nmz-folder-icon "nmz.xpm"
+ "*Icon file for namazu folder.")
+(defvar wl-shimbun-folder-icon "shimbun.xpm"
+ "*Icon file for shimbun folder.")
(defvar wl-maildir-folder-icon "maildir.xpm"
"*Icon file for maildir folder.")
(defvar wl-empty-trash-folder-icon "trash-e.xpm"
(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 "--")
(defvar wl-plugged-port-indent 4)
(defvar wl-plugged-queue-status-column 25)
+;;;; 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-07
+(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)
+(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
+ 'wl-summary-subject-function)
+(elmo-define-obsolete-variable 'wl-summary-subject-filter-func
+ 'wl-summary-subject-filter-function)
+(elmo-define-obsolete-variable 'wl-draft-send-func
+ 'wl-draft-send-function)
+(elmo-define-obsolete-variable 'wl-draft-send-news-func
+ 'wl-draft-send-news-function)
+(elmo-define-obsolete-variable 'wl-draft-send-mail-func
+ 'wl-draft-send-mail-function)
+(elmo-define-obsolete-variable 'wl-print-buffer-func
+ 'wl-print-buffer-function)
+(elmo-define-obsolete-variable 'wl-ps-print-buffer-func
+ 'wl-ps-print-buffer-function)
+(elmo-define-obsolete-variable 'wl-generate-mailer-string-func
+ 'wl-generate-mailer-string-function)
+(elmo-define-obsolete-variable 'wl-highlight-x-face-func
+ 'wl-highlight-x-face-function)
+(elmo-define-obsolete-variable 'wl-fldmgr-sort-func
+ 'wl-fldmgr-sort-function)
+(elmo-define-obsolete-variable 'wl-expire-archive-get-folder-func
+ 'wl-expire-archive-get-folder-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))