;;; 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) ; have to declare in the top.
+(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)) ; APEL 10.2 or earlier
+(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 add codename."
(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'.
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)
(defun wl-extended-emacs-version2 (&optional delimiter with-codename)
"Stringified Emacs version.
-Separate DELIMITER (default it \" \"). If WITH-CODENAME add XEmacs codename."
+Separate DELIMITER (default is \" \"). If WITH-CODENAME add XEmacs codename."
(cond
((and (boundp 'mule-version)
mule-version
(defun wl-extended-emacs-version3 (&optional delimiter with-codename)
"Stringified Emacs version.
-Separate DELIMITER (default it \" \"). If WITH-CODENAME add XEmacs codename."
+Separate DELIMITER (default is \" \"). If WITH-CODENAME add XEmacs codename."
(cond
((and (boundp 'mule-version)
mule-version