[Mew-dist 07889] mew-vars.el w/ customize-support for 1.94b12

sen_ml at example.com sen_ml at example.com
1999年 3月 4日 (木) 16:20:13 JST


attached is a diff against the mew-vars.el in 1.94b12 for customize
support.

-------------- next part --------------
--- 1.94b12/mew-vars.el	Wed Mar  3 22:41:38 1999
+++ 1.94b12-custom/mew-vars.el	Thu Mar  4 16:14:32 1999
@@ -10,6 +10,112 @@
 
 (require 'mew-env)
 
+; groups for customization
+(defgroup mew nil
+  "Messaging in the Emacs World"
+  ; should change this when we are done testing
+  :group 'emacs)
+
+(defgroup mew-hooks nil
+  "Hooks"
+  :group 'mew)
+
+(defgroup mew-mime-types nil
+  "MIME types"
+  :group 'mew)
+
+(defgroup mew-limits nil
+  "Limits"
+  :group 'mew)
+
+(defgroup mew-window nil
+  "Window"
+  :group 'mew)
+
+(defgroup mew-appearance nil
+  "Appearance"
+  :group 'mew)
+
+(defgroup mew-summary-mode nil
+  "Summary Mode"
+  :group 'mew)
+
+(defgroup mew-message-mode nil
+  "Message Mode"
+  :group 'mew)
+
+(defgroup mew-draft-mode nil
+  "Draft Mode"
+  :group 'mew)
+
+(defgroup mew-im-config nil
+  "IM Config"
+  :group 'mew)
+
+(defgroup mew-completion nil
+  "Completion"
+  :group 'mew)
+
+(defgroup mew-citation nil
+  "Citation"
+  :group 'mew)
+
+(defgroup mew-signature nil
+  "Signature"
+  :group 'mew)
+
+(defgroup mew-folders nil
+  "Folders"
+  :group 'mew)
+
+(defgroup mew-refile-delete nil
+  "Refile and Delete"
+  :group 'mew)
+
+(defgroup mew-file nil
+  "File"
+  :group 'mew)
+
+(defgroup mew-demo nil
+  "Demo"
+  :group 'mew)
+
+(defgroup mew-ask nil
+  "Ask"
+  :group 'mew)
+
+(defgroup mew-field-magic nil
+  "Field Magic"
+  :group 'mew)
+
+(defgroup mew-use nil
+  "Use (Petnames, IMAP)"
+  :group 'mew)
+
+(defgroup mew-x-face nil
+  "X face"
+  :group 'mew)
+
+(defgroup mew-auto nil
+  "Auto"
+  :group 'mew)
+
+(defgroup mew-pick-sort nil
+  "Pick and Sort"
+  :group 'mew)
+
+(defgroup mew-pgp nil
+  "PGP"
+  :group 'mew)
+
+(defgroup mew-marks nil
+  "Marks"
+  :group 'mew)
+
+(defgroup mew-highlight nil
+  "Cursor and Highlighting"
+  :group 'mew)
+
 ;;;
 ;;; Global Constants
 ;;;
@@ -214,34 +320,75 @@
 ;; Hooks
 ;;
 
-(defvar mew-init-hook nil
-  "*Hook called at initialize time.")
-(defvar mew-summary-mode-hook nil
-  "*Hook called in Summary mode.")
-(defvar mew-virtual-mode-hook nil
-  "*Hook called in Virtual mode.")
-(defvar mew-draft-mode-hook nil
-  "*Hook called in Draft mode.")
-(defvar mew-message-mode-hook nil
-  "*Hook called in Message mode.")
-(defvar mew-message-hook nil
-  "*Hook called whenever message displayed.")
-(defvar mew-send-hook nil
-  "*Hook called before sending a message")
-(defvar mew-real-send-hook nil
-  "*Hook called before really sending a message")  
-(defvar mew-suspend-hook nil
-  "*Hook called on suspend.")
-(defvar mew-quit-hook nil
-  "*Hook called on quit.")
-(defvar mew-summary-inc-sentinel-hook nil
-  "*Hook called when inc finished.")
-(defvar mew-summary-scan-sentinel-hook nil
-  "*Hook called when scan finished.")
-(defvar mew-summary-exec-hook nil
-  "*Hook called when mew-summary-exec finished.")
-(defvar mew-syntax-format-hook nil
-  "*Hook called when mew-syntax-format is called.")
+(defcustom mew-init-hook nil
+  "*Hook called at initialize time."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-summary-mode-hook nil
+  "*Hook called in Summary mode."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-virtual-mode-hook nil
+  "*Hook called in Virtual mode."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-draft-mode-hook nil
+  "*Hook called in Draft mode."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-message-mode-hook nil
+  "*Hook called in Message mode."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-message-hook nil
+  "*Hook called whenever message displayed."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-send-hook nil
+  "*Hook called before sending a message"
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-real-send-hook nil
+  "*Hook called before really sending a message"
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-suspend-hook nil
+  "*Hook called on suspend."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-quit-hook nil
+  "*Hook called on quit."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-summary-inc-sentinel-hook nil
+  "*Hook called when inc finished."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-summary-scan-sentinel-hook nil
+  "*Hook called when scan finished."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-summary-exec-hook nil
+  "*Hook called when mew-summary-exec finished."
+  :group 'mew-hooks
+  :type 'hook)
+
+(defcustom mew-syntax-format-hook nil
+  "*Hook called when mew-syntax-format is called."
+  :group 'mew-hooks
+  :type 'hook)
 
 ;;
 ;;
@@ -291,29 +438,39 @@
 ;; MIME types
 ;;
 
-(defvar mew-mime-content-type-text-list
+(defcustom mew-mime-content-type-text-list
   '("Text/Plain" "Text/Html"
     "Application/Postscript"
     "Message/Rfc822")
-  "Content-Type: list for text which are treated as text when encoded.")
+  "Content-Type: list for text which are treated as text when encoded."
+  :group 'mew-mime-types
+  :type '(repeat string))
 
-(defvar mew-mime-content-type-multipart-list
+(defcustom mew-mime-content-type-multipart-list
   '("Multipart/Mixed" "Multipart/Alternative"
     ;;"Multipart/Digest" "Multipart/Parallel"
     )
   "Candidate of 'Content-Type: Multipart' when CT: is changed in draft buffer."
-  )
+  :group 'mew-mime-types
+  :type '(repeat string))
 
-(defvar mew-mime-content-type-binary-list
+(defcustom mew-mime-content-type-binary-list
   '("Application/Octet-Stream"
     "Image/Jpeg" "Image/Gif" "Image/Tiff"
     "Image/x-xwd" "Image/x-xbm" "Image/x-xpm" 
     "Image/x-bmp" "Image/Png" "Audio/Basic" "Video/Mpeg")
-  "Content-Type: list to save as binary file in mew-summary-save on Mule.")
-
-(defvar mew-mime-content-type-others-list
-  '("Message/Rfc822" "Message/External-body"))
+  "Content-Type: list to save as binary file in mew-summary-save on Mule."
+  :group 'mew-mime-types
+  :type '(repeat string))
+
+(defcustom mew-mime-content-type-others-list
+  '("Message/Rfc822" "Message/External-body")
+  "Content-Type: ...?"
+  :group 'mew-mime-types
+  :type '(repeat string))
 
+; how do we update this value when each of the above lists is modified?
+; do we update the value of this variable when we set the other ones?
 (defvar mew-mime-content-type-list
   (append mew-mime-content-type-text-list
 	  mew-mime-content-type-multipart-list
@@ -321,9 +478,11 @@
 	  mew-mime-content-type-others-list)
   "Candidate of Content-Type: when CT: is changed in draft buffer.")
 
-(defvar mew-mime-content-type-ignore-cdp
+(defcustom mew-mime-content-type-ignore-cdp
   '("Message/.*" "Multipart/.*")
-  "Content-Type: list to ignore for insertion Content-Disposition:.")
+  "Content-Type: list to ignore for insertion Content-Disposition:."
+  :group 'mew-mime-types
+  :type '(repeat string))
 
 ;;
 ;; Separators
@@ -343,72 +502,120 @@
 ;; Limits
 ;;
 
-(defvar mew-file-max-size 100000
+(defcustom mew-file-max-size 100000
   "*The max size of messages. If the size of a message is greater
-than mew-file-max-size, Mew skips MIME analysis.")
+than mew-file-max-size, Mew skips MIME analysis."
+  :group 'mew-limits
+  :type 'integer)
 
-(defvar mew-header-max-length 100
+(defcustom mew-header-max-length 100
   "*If the length of a header exceeds this value, 
 it is not arranged nor MIME decoded.
-See also mew-header-max-depth.")
+See also mew-header-max-depth."
+  :group 'mew-limits
+  :type 'integer)
 
-(defvar mew-header-max-depth 50
+(defcustom mew-header-max-depth 50
   "*A value to decide loop depth for header field syntax analysis.
 It was known as mew-loop-depth.
-See also mew-header-max-length.")
+See also mew-header-max-length."
+  :group 'mew-limits
+  :type 'integer)
 
-(defvar mew-references-max-count 3
+(defcustom mew-references-max-count 3
   "*A value to the max number of message IDs in References: when reply.
-Non-integer means no limit.")
+Non-integer means no limit."
+  :group 'mew-limits
+  :type 'integer)
 
 ;; 
 ;; Mail Addresses
 ;;
 
-(defvar mew-mail-domain-list nil
+(defcustom mew-mail-domain-list nil
   "*Your e-mail address domain list like 
 (\"Mew.org\" \"iijlab.net\").
-They are used for mail-domain completion in Draft mode(C-cTAB)")
-
-(defvar mew-mail-domain (or (car mew-mail-domain-list) "")
-  "*Your e-mail address domain.")
+They are used for mail-domain completion in Draft mode(C-cTAB)"
+  :group 'mew-mail-addresses
+  :type '(repeat string))
+
+(defcustom mew-mail-domain (or (car mew-mail-domain-list) "")
+  "*Your e-mail address domain."
+  :group 'mew-mail-addresses
+  :type 'string)
 
-(defvar mew-mail-address-list nil
+(defcustom mew-mail-address-list nil
   "*The addresses included in this list never appear on the Cc:
-field on a draft buffer.")
-
-(cond 
- ((string= mew-mail-domain "")
-  (defvar mew-mail-address (user-login-name)))
- (t
-  (defvar mew-mail-address (concat (user-login-name) "@" mew-mail-domain))))
+field on a draft buffer."
+  :group 'mew-mail-addresses
+  :type '(repeat string))
+
+; i don't understand why this is done this way...
+
+;(cond 
+; ((string= mew-mail-domain "")
+;  (defvar mew-mail-address (user-login-name)))
+; (t
+;  (defvar mew-mail-address (concat (user-login-name) "@" mew-mail-domain))))
+
+; why not like this?
+(defcustom mew-mail-address
+  (cond
+   ((string= mew-mail-domain "")
+    (user-login-name))
+   (t
+    (concat (user-login-name) "@" mew-mail-domain)))
+  "Mail address?"
+  :group 'mew-mail-addresses
+  :type 'string)
 
 ;;
 ;; Window
 ;;
 
-(defvar mew-window-configuration 
+; customize-support not done yet
+(defcustom mew-window-configuration 
   '((summary (1  0))
     (message (8 31))
     (draft   (1  0)))
-  "*Ratio of windows")
+  "*Ratio of windows"
+  :group 'mew-window
+  :type '(list 
+	  (list (const :tag "summary" :value 'summary) 
+		(list integer integer))
+	  (list (const :tag "message" :value 'message) 
+		(list integer integer))
+	  (list (const :tag "draft" :value 'draft) 
+		(list integer integer))
+	  ))
 
-(defvar mew-window-use-full nil
+(defcustom mew-window-use-full nil
   "*Dynamic window configuration when nil. This variable will be obsolated
-because mew will support mew-window-percent(e.g 50, 100, etc.).")
+because mew will support mew-window-percent(e.g 50, 100, etc.)."
+  :group 'mew-window
+  :type 'boolean)
 
 ;;
 ;; Appearance
 ;;
 
-(defvar mew-mode-line-id '("Mew: %12b")
-  "*A default value of mode-line-buffer-identification for each Mew mode.")
+(defcustom mew-mode-line-id '("Mew: %12b")
+  "*A default value of mode-line-buffer-identification for each Mew mode."
+  :group 'mew-appearance
+  :type '(list string))
 
-(defvar mew-multipart-icon-position 'right
+(defcustom mew-multipart-icon-position 'right
   "*Position where multipart icons are displayed. 
 If 'left, displayed at the left size of the default toolbar.
 If 'right, displayed at the right size of the default toolbar.
-Otherwise, not displayed.")
+Otherwise, not displayed."
+  :group 'mew-appearance
+  ; i don't really know how to get radio to work w/o at least one sexp...
+  :type '(radio
+	  (const :tag "left" :value 'left)
+	  (const :tag "right" :value 'right)
+	  (sexp :tag "other")
+	  ))
 
 ;; Low level
 (defvar mew-folder-list-function 'mew-folder-list)
@@ -417,117 +624,190 @@
 ;; Summary mode
 ;;
 
-(defvar mew-analysis t
+(defcustom mew-analysis t
   "*MIME syntax analysis and cache when *non-nil*.
-   Skip syntax analysis when nil.")
+   Skip syntax analysis when nil."
+  :group 'mew-summary-mode
+  :type 'boolean)
 
-(defvar mew-decode-quoted nil
+(defcustom mew-decode-quoted nil
   "*Decode quoted MIME encoded-word when *non-nil*. 
-  Skip decode when nil.")
+  Skip decode when nil."
+  :group 'mew-summary-mode
+  :type 'boolean)
 
-(defvar mew-summary-cache-use t
+(defcustom mew-summary-cache-use t
   "*If *non-nil*, insert mew-summary-cache-file into Summary mode buffer 
 when the Summary mode is visited and it does not exist in buffer. 
-mew-summary-cache-file is automatically saved on inc and scan.")
-
-(defvar mew-cache-size 10
-  "*Number of buffer for message cache.")
+mew-summary-cache-file is automatically saved on inc and scan."
+  :group 'mew-summary-mode
+  :type 'boolean)
+
+(defcustom mew-cache-size 10
+  "*Number of buffer for message cache."
+  :group 'mew-summary-mode
+  :type 'integer)
+
+(defcustom mew-summary-cache-file ".mew-cache"
+  "*Cache file for Summary mode contents."
+  :group 'mew-summary-mode
+  :type 'string)
+
+(defcustom mew-window-home-buffer "*scratch*"
+  "*Buffer name to return if window stack is empty."
+  :group 'mew-summary-mode
+  :type 'string)
 
-(defvar mew-summary-cache-file ".mew-cache"
-  "*Cache file for Summary mode contents.")
-
-(defvar mew-window-home-buffer "*scratch*"
-  "*Buffer name to return if window stack is empty.")
-
-(defvar mew-summary-show-direction 'down
+(defcustom mew-summary-show-direction 'down
   "*Direction for SPC at end of message. 
-'up 'down 'next(current direction) 'stop")
+'up 'down 'next(current direction) 'stop"
+  :group 'mew-summary-mode
+  :type '(radio 
+	  (const :tag "up" :value 'up)
+	  (const :tag "down" :value 'down)
+	  (const :tag "next" :value 'next)
+	  (const :tag "stop" :value 'stop)
+	  (sexp :tag "other")
+	  ))
+
+(defcustom mew-summary-trace-directory t
+  "*If non-nil, trace directory when mew-summary-goto-folder."
+  :group 'mew-summary-mode
+  :type 'boolean)
 
-(defvar mew-summary-trace-directory t
-  "*If non-nil, trace directory when mew-summary-goto-folder.")
-
-(defvar mew-summary-recenter-p t
+(defcustom mew-summary-recenter-p t
   "*If *non-nil*, the current message is recentered in Summary mode when
-displayed.")
-
-(defvar mew-summary-scan-width nil
-  "*If *non-nil*, used as --width value.")
-
-(defvar mew-save-dir mew-home
-  "The default directory to save messages or parts in Summary mode.")
+displayed."
+  :group 'mew-summary-mode
+  :type 'boolean)
+
+(defcustom mew-summary-scan-width nil
+  "*If *non-nil*, used as --width value."
+  :group 'mew-summary-mode
+  :type '(choice integer (const nil)))
+
+(defcustom mew-save-dir mew-home
+  "The default directory to save messages or parts in Summary mode."
+  :group 'mew-summary-mode
+  :type 'directory)
 
 ;;
 ;; Message mode
 ;;
 
-(defvar mew-end-of-message-string nil
-  "*A value inserted on the end of message buffer if *non-nil*.")
-
-(defvar mew-end-of-part-string nil
-  "*A value inserted on the end of message buffer if *non-nil*.")
+(defcustom mew-end-of-message-string nil
+  "*A value inserted on the end of message buffer if *non-nil*."
+  :group 'mew-message-mode
+  :type '(choice string (const nil)))
+
+(defcustom mew-end-of-part-string nil
+  "*A value inserted on the end of message buffer if *non-nil*."
+  :group 'mew-message-mode
+  :type '(choice string (const nil)))
+
+(defcustom mew-break-pages t
+  "*If *non-nil*, a message is broken by mew-page-delimiter."
+  :group 'mew-message-mode
+  :type 'boolean)
 
-(defvar mew-break-pages t
-  "*If *non-nil*, a message is broken by mew-page-delimiter.")
-
-(defvar mew-field-other-visible t
+(defcustom mew-field-other-visible t
   "*If *non-nil*, fields which is not found in \"mew-field-spec\"
 are displayed after visible fields. Otherwise they are
-hidden before visible fields (and after invisible fields).")
+hidden before visible fields (and after invisible fields)."
+  :group 'message-mode
+  :type 'boolean)
 
 ;;
 ;; Draft mode
 ;;
 
-(defvar mew-reply-to nil
-  "*A value inserted into Reply-To: field in Draft mode if *non-nil*.")
-
-(defvar mew-fcc nil
-  "*A value inserted into Fcc: field in Draft mode if *non-nil*.")
-
-(defvar mew-cc nil
-  "*A value inserted into Cc: field in Draft mode if *non-nil*.")
-
-(defvar mew-dcc nil
-  "*A value inserted into Dcc: field in Draft mode if *non-nil*.")
-
-(defvar mew-from-list nil
-  "*A list of From: for circular completion in Draft mode.")
-
-(defvar mew-from (car mew-from-list)
-  "*A value inserted into From: field in Draft mode if *non-nil*.")
+(defcustom mew-reply-to nil
+  "*A value inserted into Reply-To: field in Draft mode if *non-nil*."
+  :group 'mew-draft-mode
+  :type '(choice string (const nil)))
+
+(defcustom mew-fcc nil
+  "*A value inserted into Fcc: field in Draft mode if *non-nil*."
+  :group 'mew-draft-mode
+  :type '(choice string (const nil)))
+
+(defcustom mew-cc nil
+  "*A value inserted into Cc: field in Draft mode if *non-nil*."
+  :group 'mew-draft-mode
+  :type '(choice string (const nil)))
+
+(defcustom mew-dcc nil
+  "*A value inserted into Dcc: field in Draft mode if *non-nil*."
+  :group 'mew-draft-mode
+  :type '(choice string (const nil)))
+
+(defcustom mew-from-list nil
+  "*A list of From: for circular completion in Draft mode."
+  :group 'mew-draft-mode
+  :type '(repeat string))
+
+(defcustom mew-from (car mew-from-list)
+  "*A value inserted into From: field in Draft mode if *non-nil*."
+  :group 'mew-draft-mode
+  :type '(choice string (const nil)))
 
-(defvar mew-header-alist nil
+(defcustom mew-header-alist nil
   "*Alist of key and value pair for header field to be inserted on draft.
 '((\"X-fingerprint:\" . \"6B 63 38 88 67 5E 96 8E  CE A4 62 73 3F 11 64 94\")
   (\"X-URL:\" . \"http://www.Mew.org/~kazu/\"))"
-  )
+  :group 'mew-draft-mode
+  :type '(repeat
+	  (cons string string)))
 
-(defvar mew-require-final-newline t 
+(defcustom mew-require-final-newline t 
   "*If non-nil, Mew adds a new line to the draft if ended without a new
-line.")
-
-(defvar mew-draft-backup-file ".mew-backup")
-(defvar mew-draft-syntax-file ".mew-syntax")
-(defvar mew-draft-coverpage "CoverPage")
+line."
+  :group 'mew-draft-mode
+  :type 'boolean)
+
+(defcustom mew-draft-backup-file ".mew-backup"
+  "Filename for saving draft backups?"
+  :group 'mew-draft-mode
+  :type 'string)
+
+(defcustom mew-draft-syntax-file ".mew-syntax"
+  "Filename for?"
+  :group 'mew-draft-mode
+  :type 'string)
+
+(defcustom mew-draft-coverpage "CoverPage"
+  "?"
+  :group 'mew-draft-mode
+  :type 'string)
 
 ;;
 ;; IM Config
 ;;
 
-(defvar mew-config-guess-alist nil
+(defcustom mew-config-guess-alist nil
   "*If *non-nil*, this value is used to guess values of the Config: field.
-The syntax is exactly the same as \"mew-refile-guess-alist\".")
+The syntax is exactly the same as \"mew-refile-guess-alist\"."
+  :group 'mew-im-config
+  ; feels like a hack :-)
+  :type '(repeat 
+	  (cons string
+		(repeat
+		 (cons regexp regexp)))))
 
-(defvar mew-config-insert-when-prepared nil 
+(defcustom mew-config-insert-when-prepared nil 
   "*If *non-nil*, the Config: field is inserted according to
-\"mew-config-guess-alist\" when the draft is prepared.")
+\"mew-config-guess-alist\" when the draft is prepared."
+  :group 'mew-im-config
+  :type 'boolean)
 
-(defvar mew-config-insert-when-composed nil
+(defcustom mew-config-insert-when-composed nil
   "*If *non-nil*, the Config: field is inserted according to
-\"mew-config-guess-alist\" when the message is composed.")
+\"mew-config-guess-alist\" when the message is composed."
+  :group 'mew-im-config
+  :type 'boolean)
 
 (defconst mew-config-default "default"
-  "The default value for IM Config to avoid hard cording.
+  "The default value for IM Config to avoid hard coding.
 Do not change this value.")
 
 (defvar mew-config-list nil
@@ -543,12 +823,14 @@
 ;; Completion
 ;;
 
-(defvar mew-fields
+(defcustom mew-fields
   (list mew-from: mew-to: mew-cc: mew-subj: mew-dcc: mew-fcc: mew-bcc:
 	mew-reply-to: mew-followup-to: mew-newsgroups: mew-config:)
-  "*Completion field list in Draft mode.")
+  "*Completion field list in Draft mode."
+  :group 'mew-completion
+  :type '(repeat string))
 
-(defvar mew-field-completion-switch
+(defcustom mew-field-completion-switch
   '(("To:"       . mew-complete-address)
     ("Cc:"       . mew-complete-address)
     ("Dcc:"      . mew-complete-address)
@@ -556,9 +838,11 @@
     ("Reply-To:" . mew-complete-address)
     ("Fcc:"      . mew-complete-folder)
     ("Config:"   . mew-complete-config))
-  "*Completion function alist concerned with the key.")
+  "*Completion function alist concerned with the key."
+  :group 'mew-completion
+  :type '(repeat (cons string function)))
 
-(defvar mew-field-circular-completion-switch
+(defcustom mew-field-circular-completion-switch
   '(("To:"       . mew-circular-complete-domain)
     ("Cc:"       . mew-circular-complete-domain)
     ("Dcc:"      . mew-circular-complete-domain)
@@ -566,68 +850,105 @@
     ("Reply-To:" . mew-circular-complete-domain)
     ("From:"     . mew-circular-complete-from)
     ("Config:"   . mew-circular-complete-config))
-  "*Circular completion function alist concerned with the key.")
+  "*Circular completion function alist concerned with the key."
+  :group 'mew-completion
+  :type '(repeat (cons string function)))
 
 ;;
 ;; Citation
 ;;
 
-(defvar mew-cite-prefix "> "
-  "*Prefix of citation.")
-(defvar mew-cite-hook nil
-  "*If you want to use super-cite, (setq mew-cite-hook 'sc-cite-original).")
-(defvar mew-before-cite-hook nil
-  "Called in mew-summary-reply-with-citation before citation.")
+(defcustom mew-cite-prefix "> "
+  "*Prefix of citation."
+  :group 'mew-citation
+  :type 'string)
+
+(defcustom mew-cite-hook nil
+  "*If you want to use super-cite, (setq mew-cite-hook 'sc-cite-original)."
+  :group 'mew-citation
+  :type 'hook)
+
+(defcustom mew-before-cite-hook nil
+  "Called in mew-summary-reply-with-citation before citation."
+  :group 'mew-citation
+  :type 'hook)
 
-(defvar mew-cite-prefix-function nil
+(defcustom mew-cite-prefix-function nil
   "*Function called on citations. A good candidate is 
-'mew-cite-prefix-username")
+'mew-cite-prefix-username"
+  :group 'mew-citation
+  :type 'function)
 
-(defvar mew-cite-prefix-confirmp nil
+(defcustom mew-cite-prefix-confirmp nil
   "*If *non-nil*, ciattion prefix (such as \"kazu> \") is
-confirmed to be used.")
+confirmed to be used."
+  :group 'mew-citation
+  :type '(choice string (const nil)))
 
-(defvar mew-cite-fields (list mew-from: mew-subj: mew-date:)
+(defcustom mew-cite-fields (list mew-from: mew-subj: mew-date:)
   "*The fields that you want to extract as citation label. 
 If you change this valuable, you must change mew-cite-format.
 The value of the first field becomes the first argment for mew-cite-format.
 (e.g. The default first argment is a value of From: field.)
 The value of the second field becomes the second argment for mew-cite-format.
-....
-If this is nil, label is not generated.")
-
-(defvar mew-cite-format "From: %s\nSubject: %s\nDate: %s\n\n"
-  "*Format for the citation label.")
+...."
+  :group 'mew-citation
+  :type '(repeat string))
+
+(defcustom mew-cite-format "From: %s\nSubject: %s\nDate: %s\n\n"
+  "*Format for the citation label."
+  :group 'mew-citation
+  :type 'string)
 
-(defvar mew-summary-reply-position 'body
+(defcustom mew-summary-reply-position 'body
   "If 'body, the cursor locates in the beginning of the body. 
-Otherwise, the cursor is after To:.")
+Otherwise, the cursor is after To:."
+  :group 'mew-citation
+  :type '(radio 
+	  (const :tag "body" :value 'body)
+	  (const :tag "end" :value 'end)
+	  (sexp :tag "other")
+	  ))
 
-(defvar mew-summary-reply-with-citation-position 'end
+(defcustom mew-summary-reply-with-citation-position 'end
   "If 'body, the cursor locates in the beginning of the body. 
 If 'end, the cursor locates after the citation.
-Otherwise, the cursor is after To:.")
+Otherwise, the cursor is after To:."
+  :group 'mew-citation
+  :type '(radio
+	  (const :tag "body" :value 'body)
+	  (const :tag "end" :value 'end)
+	  (sexp :tag "other")
+	  ))
 
 ;;
 ;; Signature
 ;; 
 
-(defvar mew-signature-file "~/.signature"
+(defcustom mew-signature-file "~/.signature"
   "*A signature file to be inserted in Draft mode. To support multiple
-signature files, use \"c-sig.el\".")
+signature files, use \"c-sig.el\"."
+  :group 'mew-signature
+  :type '(file :must-match t))
 
-(defvar mew-signature-insert-last nil 
+(defcustom mew-signature-insert-last nil
   "*If *non-nil*, the signature file is inserted in the last of body. 
 Otherwise, it is inserted at the currect point. If you created multipart
-and mew-signature-as-lastpart is *non-nil*, this variable is ignored.")
+and mew-signature-as-lastpart is *non-nil*, this variable is ignored."
+  :group 'mew-signature
+  :type 'boolean)
 
-(defvar mew-signature-as-lastpart nil
+(defcustom mew-signature-as-lastpart nil
   "*If *non-nil*, the signature file is appended as the final part 
-when you create multipart.")
+when you create multipart."
+  :group 'mew-signature
+  :type 'boolean)
 
-(defvar mew-signature-description "My signature"
+(defcustom mew-signature-description "My signature"
   "*This variable is used as a description if the signature is appended
-as the final part.")
+as the final part."
+  :group 'mew-signature
+  :type 'string)
 
 ;;
 ;; Temporary solution to decide To: when reply
@@ -649,37 +970,56 @@
 ;; Folders
 ;;
 
-(defvar mew-folder-mode 448 ;; decimal for octal 0700
+(defcustom mew-folder-mode 448 ;; decimal for octal 0700
   "Secure file mode for folders. 448(0700 in octal) is STRONGLY recommended
-for privacy reasons.")
+for privacy reasons."
+  :group 'mew-folders
+  :type 'integer)
 
-(defvar mew-file-mode 384 ;; decimal for octal 0600
+(defcustom mew-file-mode 384 ;; decimal for octal 0600
   "Secure file mode. 384(0600 in octal) is STRONGLY recommended
-for privacy reasons.")
+for privacy reasons."
+  :group 'mew-folders
+  :type 'integer)
 
-(defvar mew-use-folders-file-p nil
+(defcustom mew-use-folders-file-p nil
   "*If *non-nil*, Mew tries to load mew-folders-file to make bootup faster.
-And C-u Z saves folder list to mew-folders-file.")
+And C-u Z saves folder list to mew-folders-file."
+  :group 'mew-folders
+  :type 'boolean)
 
-(defvar mew-folders-file ".folders"
+(defcustom mew-folders-file ".folders"
   "*A file to save folder list. It is used on start-up to
-make start-up much faster.")
+make start-up much faster."
+  :group 'mew-folders
+  :type 'string)
 
-(defvar mew-folders-ignore '("+from" "+draft" "=")
+(defcustom mew-folders-ignore '("+from" "+draft" "=")
   "*Folder list to contain messages whose To: is you and From: is
 personal, e.g. a friend. Directories under this folder is ignored
-for refile guess.")
+for refile guess."
+  :group 'mew-folders
+  :type '(repeat string))
 
-(defvar mew-folders-default-folder "+from"
+(defcustom mew-folders-default-folder "+from"
   "*A default folder used by mew-guess-by-default.
 mew-guess-by-default append the From: value to it.
-e.g. \"+from/kazu\"")
+e.g. \"+from/kazu\""
+  :group 'mew-folders
+  :type 'string)
 
-(defvar mew-mime-compose-folder-delete 'delete
+(defcustom mew-mime-compose-folder-delete 'delete
  "*Action to delete MIME draft directory after sending a multipart letter.
-Proper value is 'ask', 'delete', and 'retain'.")
+Proper value is 'ask', 'delete', and 'retain'."
+ :group 'mew-folders
+ :type '(radio 
+	 (const :tag "ask" :value 'ask)
+	 (const :tag "delete" :value 'delete)
+	 (const :tag "retain" :value 'retain)
+	 (sexp :tag "other")
+	 ))
 
-(defvar mew-folder-list-skip-pattern
+(defcustom mew-folder-list-skip-pattern
   (if (and (eq system-type 'windows-nt)
 	   (not (featurep 'meadow)))
       "^[0-9]+$"
@@ -690,15 +1030,21 @@
 not available on some OSes. So, if a regular express pattern is 
 set to this value, Mew skips directories whose name are matched
 this value. A good example value is \"^[0-9]+$\",
-especially for Windows (excluding WNT).")
+especially for Windows (excluding WNT)."
+  :group 'mew-folders
+  :type '(choice regexp (const nil)))
+
+(defcustom mew-touch-folder-p nil
+  "?"
+  :group 'mew-folders
+  :type 'boolean) 
 
-(defvar mew-touch-folder-p nil) 
 
 ;;
 ;; Refile and delete
 ;;
 
-(defvar mew-msg-rm-policy 'trashonly
+(defcustom mew-msg-rm-policy 'trashonly
   "*Set remove policy. You can set one of the followings:
 'totrash   : Refile to the +trash folder if not in the +trash folder.
              Just unmark the 'D' mark if in the +trash folder.
@@ -708,18 +1054,29 @@
 'uselist   : Really remove messages marked with 'D' if in a folder found
 	     in @samp{mew-msg-rm-folder-list}. In other folders, refile 
              to the +trash folder.
-otherwise  : considered as 'totrash.")
-
-(defvar mew-msg-rm-folder-list nil
-  "*Folder list to remove message really.")
+otherwise  : considered as 'totrash."
+  :group 'mew-refile-delete
+  :type '(radio 
+	  (const :tag "totrash" :value 'totrash)
+	  (const :tag "always" :value 'always)
+	  (const :tag "trashonly" :value 'trashonly)
+	  (const :tag "uselist" :value 'uselist)
+	  (sexp :tag "other")))
+
+(defcustom mew-msg-rm-folder-list nil
+  "*Folder list to remove message really."
+  :group 'mew-refile-delete
+  :type '(repeat string))
 
 ;;
 ;; File
 ;;
 
-(defvar mew-file-append-p nil
+(defcustom mew-file-append-p nil
   "*If *non-nil*, a message or a part is appended to the existing file
-on mew-summary-save(\"y\"). Otherwise overwrited.")
+on mew-summary-save(\"y\"). Otherwise overwrited."
+  :group 'mew-file
+  :type 'boolean)
 
 (defvar mew-temp-file-initial
   (expand-file-name (user-login-name) (or (getenv "TMP")
@@ -730,28 +1087,43 @@
 mew-temp-file a file name prefix contained the directory name. The
 directory must be unreadable from others, otherwise it might become a
 big security hole. And this directory must not be gained access
-through network to prevent tire-tapping. Mew never uses 
+through network to prevent wire-tapping. Mew never uses 
 'call-process-region' rather does use 'call-process' creating a
 temporary file with mew-temp-file by itself.  If 'call-process-region'
 is used, Emacs creates a temporary file (probably in /tmp). So bad
 guys can wiretap the temporary file.")
 
-(defvar mew-delete-temp-file t
-  "*If *non-nil*, delete temporary files when external commands terminate.")
+(defcustom mew-delete-temp-file t
+  "*If *non-nil*, delete temporary files when external commands terminate."
+  :group 'mew-file
+  :type 'boolean)
 
 ;;
 ;; Demo
 ;;
 
-(defvar mew-demo t
-  "*Mew demo is displayed at boot time if *non-nil*.")
-
-(defvar mew-demo-picture mew-xemacs-p
-  "*A picture of cats is displayed if *non-nil* on XEmacs.")
-
-(defvar mew-icon-mew "Mew.png")
-(defvar	mew-icon-mew-mono "Mew.xbm")
-(defvar	mew-icon-mew-mule-bitmap-image "Mew.img")
+(defcustom mew-demo t
+  "*Mew demo is displayed at boot time if *non-nil*."
+  :group 'mew-demo
+  :type 'boolean)
+
+(defcustom mew-demo-picture mew-xemacs-p
+  "*A picture of cats is displayed if *non-nil* on XEmacs."
+  :group 'mew-demo
+  :type 'boolean)
+
+(defcustom mew-icon-mew "Mew.png"
+  "PNG icon for Mew?"
+  :group 'mew-demo
+  :type 'string)
+(defcustom mew-icon-mew-mono "Mew.xbm"
+  "XBM icon for Mew?"
+  :group 'mew-demo
+  :type 'string)
+(defcustom mew-icon-mew-mule-bitmap-image "Mew.img"
+  "Mule bitmap image for Mew?"
+  :group 'mew-demo
+  :type 'string)
 
 (defvar mew-logo nil)
 
@@ -759,41 +1131,72 @@
 ;; Ask?
 ;; 
 
-(defvar mew-ask-cc t
-  "*Prompt user for CC: field if *non-nil*.")
+(defcustom mew-ask-cc t
+  "*Prompt user for CC: field if *non-nil*."
+  :group 'mew-ask
+  :type 'boolean)
+
+(defcustom mew-ask-subject nil
+  "*Prompt user for Subject: field when send if *non-nil*."
+  :group 'mew-ask
+  :type 'boolean)
 
-(defvar mew-ask-subject nil
-  "*Prompt user for Subject: field when send if *non-nil*.")
-
-(defvar mew-ask-range t
+(defcustom mew-ask-range t
   "*If *non-nil*, ask for a range for scanning. If false, always
-use default.")
-
-(defvar mew-ask-newsgroups nil
-  "*If *non-nil*, prompt user if he/she want to include Newsgroups: field.")
+use default."
+  :group 'mew-ask
+  :type 'boolean)
+
+(defcustom mew-ask-newsgroups nil
+  "*If *non-nil*, prompt user if he/she want to include Newsgroups: field."
+  :group 'mew-ask
+  :type 'boolean)
 
-(defvar mew-ask-config nil
+(defcustom mew-ask-config nil
   "*If *non-nil*, prompt user if he/she want to include/change Config: 
-field.")
-
-(defvar mew-ask-cite-prefix nil
-  "*If *non-nil*, ask citation prefix when cite a message.")
-
-(defvar mew-ask-pack t
-  "*If *non-nil*, ask whether or not you really want to pack.")
+field."
+  :group 'mew-ask
+  :type 'boolean)
+
+(defcustom mew-ask-cite-prefix nil
+  "*If *non-nil*, ask citation prefix when cite a message."
+  :group 'mew-ask
+  :type 'boolean)
+
+(defcustom mew-ask-pack t
+  "*If *non-nil*, ask whether or not you really want to pack."
+  :group 'mew-ask
+  :type 'boolean)
 
-(defvar mew-ask-send t
+(defcustom mew-ask-send t
   "*If *non-nil*, ask whether or not you really want to send the message
-which you composed without explicit C-cC-m.")
+which you composed without explicit C-cC-m."
+  :group 'mew-ask
+  :type 'boolean)
 
 ;;
 ;; Field Magic
 ;;
 
-(defvar mew-reply-string "Re: ")
-(defvar mew-reply-regex "^Re:")
-(defvar mew-forward-string "Fw: ")
-(defvar mew-forward-regex "^\\(Fw\\|Forward\\):")
+(defcustom mew-reply-string "Re: "
+  "String prepended to subject line when replying?"
+  :group 'mew-field-magic
+  :type 'string)
+
+(defcustom mew-reply-regex "^Re:"
+  "Regex used to match replies?"
+  :group 'mew-field-magic
+  :type 'regexp)
+
+(defcustom mew-forward-string "Fw: "
+  "String prepended to subject line when forwarding?"
+  :group 'mew-field-magic
+  :type 'string)
+
+(defcustom mew-forward-regex "^\\(Fw\\|Forward\\):"
+  "Regex used to match forwarded messages?"
+  :group 'mew-field-magic
+  :type 'regexp)
 
 ;;
 ;; Use
@@ -803,63 +1206,83 @@
 (defvar mew-use-bbdb nil
   "*Use Insidious Big Brother Database if t")
 
-(defvar mew-use-petname nil)
+(defcustom mew-use-petname nil
+  "Use petnames if *non-nil*."
+  :group 'mew-use
+  :type 'boolean)
 
-(defvar mew-use-imap nil
+(defcustom mew-use-imap nil
   "If nil, both immv and imrm are called synchronously for speed when
 \"x\" is typed. If *non-nil*, they are called asynchronously to catch 
-user's password for IMAP operation.")
+user's password for IMAP operation."
+  :group 'mew-use
+  :type 'boolean)
 
 ;;
 ;; X face
 ;;
 
 (defvar mew-x-face-filter (list mew-prog-uncompface "ikon2xbm"))
-(defvar mew-x-face-prog "xv")
+
+(defcustom mew-x-face-prog "xv"
+  "X face program?"
+  :group 'mew-x-face
+  :type 'string)
+
 (defvar mew-x-face-args nil)
-(defvar mew-x-face-file "~/.xface"
-  "*If *non-nil* and the file exists, X-Face: fields is inserted.")
+
+(defcustom mew-x-face-file "~/.xface"
+  "*If *non-nil* and the file exists, X-Face: fields is inserted."
+  :group 'mew-x-face
+  :type '(file :must-match t))
 
 ;;
 ;; Auto
 ;;
 
-(defvar mew-auto-get t
+(defcustom mew-auto-get t
   "If *non-nil* mew-auto-get, Mew gets messages from your spool 
 automatically. 'C-u M-x mew' forces to get messages even if
-mew-auto-get is nil.")
+mew-auto-get is nil."
+  :group 'mew-auto
+  :type 'boolean)
 
-(defvar mew-auto-flush-queue nil
+(defcustom mew-auto-flush-queue nil
   "If *non-nil* and if there are queued messages in  IM's QueueDir,
 they are flushed at \"imget\"(i.e. 'i'). This idea saves money in 
-dial up environment.")
+dial up environment."
+  :group 'mew-auto
+  :type 'boolean)
 
 ;;
 ;; Pick and Sort
 ;;
 
-(defvar mew-pick-default-field nil
+(defcustom mew-pick-default-field nil
   "*Default prefix string to be appeared when inputing a pick pattern.
-A good example is \"from=\".")
+A good example is \"from=\"."
+  :group 'mew-pick-sort
+  :type '(choice string (const nil)))
 
-(defvar mew-pick-field-list
+(defcustom mew-pick-field-list
   '("head=" "body=" "all="
     "to=" "cc=" "subject=" "dcc=" "fcc=" "bcc=" "date="
     "reply-to=" "followup-to=" "from=" "newsgroups=")
-  "*A list of key for pick pattern.")
+  "*A list of key for pick pattern."
+  :group 'mew-pick-sort
+  :type '(repeat string))
 
-(defvar mew-sort-default-key "date"
+(defcustom mew-sort-default-key "date"
   "*Default sort key when inputing a sort key. 
-Its format is key:mode where more is found in \"mew-sort-modes\".")
-
-(defvar mew-sort-default-key-alist nil
-  "*Alist of (folder . sort-key) to decide a default sort-key
-of a specific folder. An example is follows:
-(setq mew-sort-default-key-alist
-      '((\"+tmp/beginners\" . \"x-sequence\")
-        (\"+tmp/elips\" . \"x-mail-count\")))")
+Its format is key:mode where more is found in \"mew-sort-modes\"."
+  :group 'mew-pick-sort
+  :type '(choice
+	  (const "date")
+	  (const "num")
+	  (const "text")
+	  (const "ml")))
 
-(defvar mew-sort-key-alist
+(defcustom mew-sort-key-alist
   '(("date" . "date") ("subject") ("from") ("to") ("newsgroups")
     ("posted" . "date") ("x-sequence" . "num") ("x-mail-count" . "num")
     ("x-ml-count" . "num"))
@@ -869,9 +1292,19 @@
                \"num\"  (sort by numerical order) or
                \"text\" (sort by alphabetical order) or
                \"ml\"   (modify subject).
-(nil means \"text\").")
-
-(defvar mew-sort-modes '("date" "num" "text" "ml"))
+(nil means \"text\")."
+  :group 'mew-pick-sort
+  :type '(repeat
+          (cons string (choice string (const nil)))))
+
+(defcustom mew-sort-modes '("date" "num" "text" "ml")
+  "?"
+  :group 'mew-pick-sort
+  :type '(list
+	  (const "date")
+	  (const "num")
+	  (const "text")
+	  (const "ml")))
 
 ;;
 ;; Range
@@ -890,63 +1323,122 @@
 ;; PGP Public key fetch
 ;;
 
-(defvar mew-pgp-keyserver-url-template
+(defcustom mew-pgp-keyserver-url-template
   "http://pgp5.ai.mit.edu:11371/pks/lookup?op=get&search=%s"
+  "PGP keyserver url template"
 ;;  "http://pgp.nic.ad.jp/cgi-bin/pgpsearchkey.pl?op=get&search=%s"
-  )
+  :group 'mew-pgp
+  :type 'string)
 
-(defvar mew-x-pgp-key-list
+(defcustom mew-x-pgp-key-list
   '("x-pgp-key:" "x-pgp-key-url:" "x-pgp-public-key:" "x-pgp-public-key-url:"
     "x-pgp5-key:" "x-pgp5-key-url:" "x-pgp5-public-key:"
-    "x-pgp5-public-key-url:" "x-public-key:"))
+    "x-pgp5-public-key-url:" "x-public-key:")
+  "?" 
+  :group 'mew-pgp
+  :type '(repeat string))
    
-(defvar mew-pgp-fetch-key-process nil)
+(defcustom mew-pgp-fetch-key-process nil
+  "?"
+  :group 'mew-pgp
+  :type 'boolean)
 
 ;;
 ;; Marks
 ;;
 
-(defvar mew-mark-multi  ?@)
-(defvar mew-mark-review ?*)
-(defvar mew-mark-delete ?D)
-(defvar mew-mark-refile ?o) ;; do you like "^"?
-(defvar mew-mark-tmp    ?%) ;; temporary use only.
+(defcustom mew-mark-multi  ?@
+  "Default is ?@"
+  :group 'mew-marks
+  :type 'character)
+
+(defcustom mew-mark-review ?*
+  "Default is ?*"
+  :group 'mew-marks
+  :type 'character)
+
+(defcustom mew-mark-delete ?D
+  "Default is ?D"
+  :group 'mew-marks
+  :type 'character)
+
+(defcustom mew-mark-refile ?o
+  "Default is ?o"
+  :group 'mew-marks
+  :type 'character) ;; do you like "^"?
+
+(defcustom mew-mark-tmp    ?%
+  "Default is ?%"
+  :group 'mew-marks
+  :type 'character) ;; temporary use only.
 
 ;;
 ;; Highlight
 ;;
 
-(defvar mew-cursor-mark ">"
+(defcustom mew-cursor-mark ">"
   "*The mark in the beginning of the cursor line if
-mew-use-cursor-mark is *non-nil*. ")
-(defvar mew-use-cursor-mark nil
+mew-use-cursor-mark is *non-nil*. "
+  :group 'mew-highlight
+  :type 'string)
+
+(defcustom mew-use-cursor-mark nil
   "*If *non-nil*, show mew-cursor-mark in the beginning of the cursor line.
-This is convenient if underline is not available.")
+This is convenient if underline is not available."
+  :group 'mew-highlight
+  :type 'boolean)
+
+(defcustom mew-use-highlight-cursor-line t
+  "*Put underline on the current line in Summary mode."
+  :group 'mew-highlight
+  :type 'boolean)
+
+(defcustom mew-use-highlight-mouse-line mew-xemacs-p
+  "*Paint the line where mouse locates in Summary mode."
+  :group 'mew-highlight
+  :type 'boolean)
+
+(defcustom mew-use-highlight-mark t
+  "*Paint marked lines in Summary mode."
+  :group 'mew-highlight
+  :type 'boolean)
+
+(defcustom mew-use-highlight-header t
+  "*Paint header in Message and Draft mode."
+  :group 'highlight
+  :type 'boolean)
+
+(defcustom mew-use-highlight-body nil
+  "*Paint body in Message and Draft mode."
+  :group 'highlight
+  :type 'boolean)
+
+(defcustom mew-use-highlight-url t
+  "*Emphasize URL lines in Message mode."
+  :group 'highlight
+  :type 'boolean)
 
-(defvar mew-use-highlight-cursor-line t
-  "*Put underline on the current line in Summary mode.")
-(defvar mew-use-highlight-mouse-line mew-xemacs-p
-  "*Paint the line where mouse locates in Summary mode.")
-(defvar mew-use-highlight-mark t
-  "*Paint marked lines in Summary mode.")
-(defvar mew-use-highlight-header t
-  "*Paint header in Message and Draft mode.")
-(defvar mew-use-highlight-body nil
-  "*Paint body in Message and Draft mode.")
-(defvar mew-use-highlight-url t
-  "*Emphasize URL lines in Message mode.")
-(defvar mew-use-highlight-url-regex
+(defcustom mew-use-highlight-url-regex
   "\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]"
-  "*Regular expression to find URL.")
-
-(defvar mew-use-highlight-x-face mew-xemacs-p
-  "*Iconify X-Face: on XEmacs in Message mode.")
-
-(defvar mew-highlight-body-max-line 200)
+  "*Regular expression to find URL."
+  :group 'mew-highlight
+  :type 'regexp)
+
+(defcustom mew-use-highlight-x-face mew-xemacs-p
+  "*Iconify X-Face: on XEmacs in Message mode."
+  :group 'mew-highlight
+  :type 'boolean)
+
+(defcustom mew-highlight-body-max-line 200
+  "?"
+  :group 'mew-highlight
+  :type 'integer)
 
-(defvar mew-highlight-url-max-size 10000
+(defcustom mew-highlight-url-max-size 10000
   "*Use bold font at url maximize size.
-If nil, all contents are parsed.")
+If nil, all contents are parsed."
+  :group 'mew-highlight
+  :type 'integer)
 
 ;;
 ;; Styles and colors


Mew-dist メーリングリストの案内