changeset 110013:0fb70b0c7489

Let version-to-list handle versions like "10.3d". * lisp/subr.el (version-regexp-alist): Don't use "a" and "b" for "alpha" and "beta". (version-to-list): Handle versions like "10.3d".
author Chong Yidong <cyd@stupidchicken.com>
date Sat, 28 Aug 2010 21:31:45 -0400
parents ba0e3bffdb8b
children f576b550fb69
files lisp/ChangeLog lisp/subr.el
diffstat 2 files changed, 16 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Aug 28 20:52:36 2010 +0200
+++ b/lisp/ChangeLog	Sat Aug 28 21:31:45 2010 -0400
@@ -1,3 +1,9 @@
+2010-08-29  Chong Yidong  <cyd@stupidchicken.com>
+
+	* subr.el (version-regexp-alist): Don't use "a" and "b" for
+	"alpha" and "beta".
+	(version-to-list): Handle versions like "10.3d".
+
 2010-08-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* emacs-lisp/macroexp.el (macroexpand-all-1): Use pcase.
--- a/lisp/subr.el	Sat Aug 28 20:52:36 2010 +0200
+++ b/lisp/subr.el	Sat Aug 28 21:31:45 2010 -0400
@@ -3584,11 +3584,11 @@
 
 
 (defconst version-regexp-alist
-  '(("^[-_+ ]?a\\(lpha\\)?$"   . -3)
+  '(("^[-_+ ]?alpha$"   . -3)
     ("^[-_+]$"                 . -3) ; treat "1.2.3-20050920" and "1.2-3" as alpha releases
     ("^[-_+ ]cvs$"             . -3)	; treat "1.2.3-CVS" as alpha release
-    ("^[-_+ ]?b\\(eta\\)?$"    . -2)
-    ("^[-_+ ]?\\(pre\\|rc\\)$" . -1))
+    ("^[-_+ ]?beta$"    . -2)
+    ("^[-_+ ]?\\(pre\\|rcc\\)$" . -1))
   "*Specify association between non-numeric version and its priority.
 
 This association is used to handle version string like \"1.0pre2\",
@@ -3681,8 +3681,13 @@
 	    (setq al version-regexp-alist)
 	    (while (and al (not (string-match (caar al) s)))
 	      (setq al (cdr al)))
-	    (or al (error "Invalid version syntax: '%s'" ver))
-	    (setq lst (cons (cdar al) lst)))))
+	    (cond (al
+		   (push (cdar al) lst))
+		  ;; Convert 22.3a to 22.3.1.
+		  ((string-match "^[-_+ ]?\\([a-zA-Z]\\)$" s)
+		   (push (- (aref (downcase (match-string 1 s)) 0) ?a -1)
+			 lst))
+		  (t (error "Invalid version syntax: '%s'" ver))))))
       (if (null lst)
 	  (error "Invalid version syntax: '%s'" ver)
 	(nreverse lst)))))