fix
[elisp/wanderlust.git] / wl / wl-version.el
index 911aeb1..4c83a1c 100644 (file)
@@ -1,8 +1,10 @@
 ;;; wl-version.el -- Version information for Wanderlust.
 
-;; Copyright 2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 2000 TAKAHASHI Kaoru <kaoru@kaisei.org>
 
 ;; Author: Yuuichi Teranishi <teranisi@gohome.org>
+;;     TAKAHASHI Kaoru <kaoru@kaisei.org>
 ;; Keywords: mail, net news
 
 ;; This file is part of Wanderlust (Yet Another Message Interface on Emacsen).
 ;;; Code:
 ;;
 (require 'product)
-(provide 'wl-version)
+(require 'elmo-version)                        ; product-version-as-string
+(provide 'wl-version)                  ; before product-provide
 
+;; product-define in the first place
 (product-provide 'wl-version
   (product-define
    "Wanderlust" nil
    (eval-when-compile
-     (require 'elmo-version)
      (product-version (product-find 'elmo-version))) ; equals to ELMO version.
-   "Roam"))
+   "Smooth"))
 
 ;; set version-string
-(if (fboundp 'product-version-as-string)
-    (product-version-as-string 'wl-version)
-  (product-string-1 'wl-version))
+(product-version-as-string 'wl-version)
 
 ;; require wl-util after product-provide.
 (eval-when-compile (require 'wl-util)) ; wl-match-string
 
-;; compile warning
-(defvar mule-version)
-(defvar nemacs-version)
-(defvar emacs-beta-version)
-(defvar xemacs-codename)
-(defvar mime-edit-insert-user-agent-field)
-(defvar mime-edit-user-agent-value)
-(defvar mime-editor/version)
-(defvar mime-editor/codename)
-
 (defun wl-version (&optional with-codename)
-  "Return Wanderlust version.  If WITH-CODENAME is non-nil, add codename."
+  "Return Wanderlust version.
+If WITH-CODENAME add codename."
   (product-string-1 'wl-version with-codename))
 
 (defun wl-version-show (&optional arg)
@@ -69,46 +61,85 @@ If ARG insert string at point."
       (insert (message "%s" (wl-version t)))
     (message "%s" (wl-version t))))
 
+(defvar wl-version-status-alist
+  '(((eq (% (nth 1 (product-version (product-find 'wl-version))) 2) 0)
+     . "stable")
+    (t . "beta"))
+  "An alist to define the version status.")
+
+(defun wl-version-status ()
+  "Return version status (\"stable\" or \"beta\")."
+  (let ((salist wl-version-status-alist)
+       status)
+    (while salist
+      (when (eval (car (car salist)))
+       (setq status (cdr (car salist)))
+       (setq salist nil))
+      (setq salist (cdr salist)))
+    status))
+
+;; compile warning
+(defvar mule-version)
+(defvar nemacs-version)
+(defvar emacs-beta-version)
+(defvar xemacs-codename)
+(defvar mime-edit-insert-user-agent-field)
+(defvar mime-edit-user-agent-value)
+(defvar mime-editor/version)
+(defvar mime-editor/codename)
+
 (defun wl-generate-user-agent-string ()
-  "A candidate of wl-generate-mailer-string-func.
+  "A candidate of `wl-generate-mailer-string-func'.
 Insert User-Agent field instead of X-Mailer field."
-  (let ((mime-user-agent (and (boundp 'mime-edit-insert-user-agent-field)
-                             mime-edit-insert-user-agent-field
-                             mime-edit-user-agent-value)))
-    (if mime-user-agent
-       (concat "User-Agent: "
-               (product-string-verbose 'wl-version) " "
-               mime-user-agent)
-      (if (and (boundp 'mime-editor/version)
-              mime-editor/version)
-         (concat "User-Agent: "
-                 (product-string-verbose 'wl-version) " "
-                 "tm/" mime-editor/version
-                 (if (and (boundp 'mime-editor/codename)
-                          mime-editor/codename)
-                     (concat " (" mime-editor/codename ")"))
-                 (if (and (boundp 'mime-library-product)
-                          mime-library-product)
-                     (concat " " (aref mime-library-product 0)
-                             "/"
-                             (mapconcat 'int-to-string
-                                        (aref mime-library-product 1)
-                                        ".")
-                             " (" (aref mime-library-product 2) ")"))
-                 (condition-case nil
-                     (progn
-                       (require 'apel-ver)
-                       (concat " " (apel-version)))
-                   (file-error nil))
-                 " " (wl-extended-emacs-version3 "/" t))
-       ;; Don't use product-string-verbose for short User-Agent field.
-       (concat "User-Agent: " (product-string-1 'wl-version t) " "
-               (wl-extended-emacs-version3 "/" t))))))
+  (concat "User-Agent: "
+         (wl-generate-user-agent-string-1
+          (or (and (boundp 'mime-edit-insert-user-agent-field)
+                   mime-edit-insert-user-agent-field)
+              (and (boundp 'mime-editor/version)
+                   mime-editor/version)))))
+
+(defun wl-generate-user-agent-string-1 (&optional verbose)
+  "Return User-Agent field value.
+If VERBOSE return with SEMI, FLIM and APEL version."
+  (if (not verbose)
+      ;; Don't use product-string-verbose for short User-Agent field value.
+      (concat (product-string-1 'wl-version t) " "
+             (wl-extended-emacs-version3 "/" t))
+    ;; verbose
+    (cond
+     ;; SEMI
+     ((and (boundp 'mime-edit-user-agent-value) mime-edit-user-agent-value)
+      (concat (product-string-verbose 'wl-version) " "
+             mime-edit-user-agent-value))
+     ;; tm
+     ((and (boundp 'mime-editor/version) mime-editor/version)
+      (concat (product-string-verbose 'wl-version) " "
+             "tm/" mime-editor/version
+             (if (and (boundp 'mime-editor/codename)
+                      mime-editor/codename)
+                 (concat " (" mime-editor/codename ")"))
+             (if (and (boundp 'mime-library-product)
+                      mime-library-product)
+                 (concat " " (aref mime-library-product 0)
+                         "/"
+                         (mapconcat 'int-to-string
+                                    (aref mime-library-product 1)
+                                    ".")
+                         " (" (aref mime-library-product 2) ")"))
+             (condition-case nil
+                 (progn
+                   (require 'apel-ver)
+                   (concat " " (apel-version)))
+               (file-error nil))
+             " " (wl-extended-emacs-version3 "/" t)))
+     ;; error case
+     (t
+      (product-string-1 'wl-version nil)))))
 
 ;; from gnus
 (defun wl-extended-emacs-version (&optional with-codename)
-  "Stringified Emacs version"
-  (interactive)
+  "Stringified Emacs version.
+If WITH-CODENAME add XEmacs codename."
   (cond
    ((string-match "^\\([0-9]+\\.[0-9]+\\)\\.[.0-9]+$" emacs-version)
     (concat "Emacs " (wl-match-string 1 emacs-version)
@@ -126,8 +157,8 @@ Insert User-Agent field instead of X-Mailer field."
    (t emacs-version)))
 
 (defun wl-extended-emacs-version2 (&optional delimiter with-codename)
-  "Stringified Emacs version"
-  (interactive)
+  "Stringified Emacs version.
+Separate DELIMITER (default is \" \").  If WITH-CODENAME add XEmacs codename."
   (cond
    ((and (boundp 'mule-version)
         mule-version
@@ -165,8 +196,8 @@ Insert User-Agent field instead of X-Mailer field."
    (t emacs-version)))
 
 (defun wl-extended-emacs-version3 (&optional delimiter with-codename)
-  "Stringified Emacs version"
-  (interactive)
+  "Stringified Emacs version.
+Separate DELIMITER (default is \" \").  If WITH-CODENAME add XEmacs codename."
   (cond
    ((and (boundp 'mule-version)
         mule-version
@@ -227,4 +258,4 @@ Insert User-Agent field instead of X-Mailer field."
  'wl-codename
  "use (product-code-name (product-find 'wl-version)) instead.")
 
-;; wl-version.el ends here
+;;; wl-version.el ends here