Mercurial > emacs
changeset 69922:dc1f0ab7e276
* custom.el (defcustom, custom-handle-keyword): Add :package-version
keyword.
(custom-add-package-version): New function. Sets value of new property
'custom-package-version from :package-version keyword.
* cus-edit.el (customize-package-emacs-version-alist): New variable.
(customize-changed-options): Add check for custom-package-version.
(customize-package-emacs-version): New function to look up Emacs
version corresponding to the given package version.
author | Bill Wohler <wohler@newt.com> |
---|---|
date | Mon, 10 Apr 2006 23:43:34 +0000 |
parents | 055c0dc190ac |
children | 9e0c65fe8bd1 |
files | lisp/ChangeLog lisp/cus-edit.el lisp/custom.el |
diffstat | 3 files changed, 67 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Mon Apr 10 22:33:51 2006 +0000 +++ b/lisp/ChangeLog Mon Apr 10 23:43:34 2006 +0000 @@ -1,5 +1,16 @@ 2006-04-10 Bill Wohler <wohler@newt.com> + * custom.el (defcustom, custom-handle-keyword): Add + :package-version keyword. + (custom-add-package-version): New function. Sets value of new + property 'custom-package-version from :package-version keyword. + + * cus-edit.el (customize-package-emacs-version-alist): New + variable. + (customize-changed-options): Add check for custom-package-version. + (customize-package-emacs-version): New function to look up Emacs + version corresponding to the given package version. + * emacs-lisp/find-func.el (find-function-regexp): Allow dashes in defun name, in similar fashion to find-variable-regexp.
--- a/lisp/cus-edit.el Mon Apr 10 22:33:51 2006 +0000 +++ b/lisp/cus-edit.el Mon Apr 10 23:43:34 2006 +0000 @@ -786,7 +786,7 @@ (if (or (and (= 1 (length children)) (memq (widget-type (car children)) '(custom-variable custom-face))) - (y-or-n-p "Reset all settings' buffer text to show current values? ")) + (y-or-n-p "Reset all settings' buffer text to show current values? ")) (mapc (lambda (widget) (if (memq (widget-get widget :custom-state) '(modified changed)) @@ -1079,6 +1079,18 @@ (defvar customize-changed-options-previous-release "21.1" "Version for `customize-changed-options' to refer back to by default.") +;; Packages will update this variable, so make it available. +;;;###autoload +(defvar customize-package-emacs-version-alist nil + "Alist that maps packages to alists of package to Emacs versions. +The value alists map all package versions used with +the :package-version keyword to Emacs versions. Packages are +symbols and versions are strings. + +For example: + '((MH-E (\"7.4\" \"22.1\") (\"8.0\" \"22.1\")) + (Gnus (\"5.11\" \"22.1\")))") + ;;;###autoload (defalias 'customize-changed 'customize-changed-options) @@ -1119,7 +1131,12 @@ (let (found) (mapatoms (lambda (symbol) - (let ((version (get symbol 'custom-version))) + (let* ((package-version (get symbol 'custom-package-version)) + (version + (or (and package-version + (customize-package-emacs-version symbol + package-version)) + (get symbol 'custom-version)))) (if version (when (customize-version-lessp since-version version) (if (or (get symbol 'custom-group) @@ -1135,6 +1152,31 @@ (error "No user option defaults have been changed since Emacs %s" since-version)))) +(defun customize-package-emacs-version (symbol package-version) + "Return Emacs version of SYMBOL. +PACKAGE-VERSION has the form (PACKAGE VERSION). The VERSION of +PACKAGE is looked up in the associated list +`customize-package-emacs-version-alist' to find the version of +Emacs that is associated with it." + (let (package-versions emacs-version) + ;; Use message instead of error since we want user to be able to + ;; see the rest of the symbols even if a package author has + ;; botched things up. + (cond ((not (listp package-version)) + (message "Invalid package-version value for %s" symbol)) + ((setq package-versions (assq (car package-version) + customize-package-emacs-version-alist)) + (setq emacs-version + (cadr (assoc (cadr package-version) package-versions))) + (unless emacs-version + (message "Package version of %s not found in %s" symbol + "customize-package-emacs-version-alist"))) + (t + (message "Package %s neglected to update %s" + (car package-version) + "customize-package-emacs-version-alist"))) + emacs-version)) + (defun customize-version-lessp (version1 version2) ;; Why are the versions strings, and given that they are, why aren't ;; they converted to numbers and compared as such here? -- fx
--- a/lisp/custom.el Mon Apr 10 22:33:51 2006 +0000 +++ b/lisp/custom.el Mon Apr 10 23:43:34 2006 +0000 @@ -268,6 +268,12 @@ VALUE should be a string specifying that the variable was first introduced, or its default value was changed, in Emacs version VERSION. +:package-version + VALUE should be a list with the form (PACKAGE VERSION) + specifying that the variable was first introduced, or its + default value was changed, in PACKAGE version VERSION. This + keyword takes priority over :version. The PACKAGE and VERSION + must appear in the alist `customize-package-emacs-version-alist'. :tag LABEL Use LABEL, a string, instead of the item's name, to label the item in customization menus and buffers. @@ -489,6 +495,8 @@ (custom-add-to-group value symbol type)) ((eq keyword :version) (custom-add-version symbol value)) + ((eq keyword :package-version) + (custom-add-package-version symbol value)) ((eq keyword :link) (custom-add-link symbol value)) ((eq keyword :load) @@ -540,6 +548,10 @@ "To the custom option SYMBOL add the version VERSION." (put symbol 'custom-version (purecopy version))) +(defun custom-add-package-version (symbol version) + "To the custom option SYMBOL add the package version VERSION." + (put symbol 'custom-package-version (purecopy version))) + (defun custom-add-load (symbol load) "To the custom option SYMBOL add the dependency LOAD. LOAD should be either a library file name, or a feature name."