> From: Juri Linkov <[EMAIL PROTECTED]> > Date: Fri, 16 Sep 2005 01:01:48 +0300 > Cc: [EMAIL PROTECTED], emacs-devel@gnu.org > > > That approach seems good to me. It will work with aspell 0.50 as > > well as it would have worked with ispell. > > > > Does anyone see a problem with that patch? > > This patch seems good for versions older than 0.60, but now I get > another error for version numbers greater than 0.60: > > Debugger entered--Lisp error: (error "Invalid version syntax: > '0.60.3-20050121'") > signal(error ("Invalid version syntax: '0.60.3-20050121'")) > error("Invalid version syntax: '%s'" "0.60.3-20050121") > version-to-list("0.60.3-20050121") > version<("0.60.3-20050121" "0.60") > ispell-check-version() > ispell-init-process() > ispell-buffer-local-words() > ispell-accept-buffer-local-defs() > ispell-word(nil nil nil) > call-interactively(ispell-word)
That's because version-to-list doesn't support this syntax of version numbers. In addition, it isn't case-insensitive to strings it does support, like "alpha". So how about the following patch, which fixes the case-fold issue, improves the doc string, and extends the valid syntax for version numbers? Index: lisp/subr.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/subr.el,v retrieving revision 1.478 diff -u -r1.478 subr.el --- lisp/subr.el 26 Aug 2005 12:31:55 -0000 1.478 +++ lisp/subr.el 17 Sep 2005 10:52:52 -0000 @@ -2862,9 +2862,11 @@ (defvar version-regexp-alist - '(("^a\\(lpha\\)?$" . -3) - ("^b\\(eta\\)?$" . -2) - ("^\\(pre\\|rc\\)$" . -1)) + '(("^[-_]?a\\(lpha\\)?$" . -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)) "*Specify association between non-numeric version part and a priority. This association is used to handle version string like \"1.0pre2\", @@ -2887,6 +2889,9 @@ Where: REGEXP regexp used to match non-numeric part of a version string. + It should begin with a `^' anchor and end with a `$' to + prevent false hits. Letter-case is ignored while matching + REGEXP. PRIORITY negative integer which indicate the non-numeric priority.") @@ -2903,9 +2908,12 @@ SEPARATOR ::= `version-separator' (which see) | `version-regexp-alist' (which see). +The NUMBER part is optional if SEPARATOR is a match for an element +in `version-regexp-alist'. + As an example of valid version syntax: - 1.0pre2 1.0.7.5 22.8beta3 0.9alpha1 + 1.0pre2 1.0.7.5 22.8beta3 0.9alpha1 6.9.30Beta As an example of invalid version syntax: @@ -2928,7 +2936,7 @@ (error "Invalid version string: '%s'" ver)) (save-match-data (let ((i 0) - case-fold-search ; ignore case in matching + (case-fold-search t) ; ignore case in matching lst s al) (while (and (setq s (string-match "[0-9]+" ver i)) (= s i)) _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel