* lisp/cus-dep.el (custom-make-dependencies): Sort the output.

(custom-versions-load-alist): Convert comment to doc.
This commit is contained in:
Glenn Morris 2013-05-17 20:22:56 -04:00
parent a21ba35d21
commit 521a54c51c
2 changed files with 50 additions and 41 deletions

View file

@ -1,3 +1,8 @@
2013-05-18 Glenn Morris <rgm@gnu.org>
* cus-dep.el (custom-make-dependencies): Sort the output.
(custom-versions-load-alist): Convert comment to doc.
2013-05-17 Leo Liu <sdl.web@gmail.com>
* newcomment.el (comment-search-backward): Stricter in finding

View file

@ -121,36 +121,32 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
(insert (autoload-rubric generated-custom-dependencies-file
"custom dependencies" t))
(search-backward " ")
(mapatoms (lambda (symbol)
(let ((members (get symbol 'custom-group))
where found)
(when members
(dolist (member
;; So x and no-x builds won't differ.
(sort (mapcar 'car members) 'string<))
(setq where (get member 'custom-where))
(unless (or (null where)
(member where found))
(push where found)))
(when found
(insert "(put '" (symbol-name symbol)
" 'custom-loads '")
(prin1 (nreverse found) (current-buffer))
(insert ")\n"))))))
(let (alist)
(mapatoms (lambda (symbol)
(let ((members (get symbol 'custom-group))
where found)
(when members
(dolist (member (mapcar 'car members))
(setq where (get member 'custom-where))
(unless (or (null where)
(member where found))
(push where found)))
(when found
(push (cons (symbol-name symbol)
(with-output-to-string
(prin1 (sort found 'string<)))) alist))))))
(dolist (e (sort alist (lambda (e1 e2) (string< (car e1) (car e2)))))
(insert "(put '" (car e) " 'custom-loads '" (cdr e) ")\n")))
(insert "\
;; These are for handling :version. We need to have a minimum of
;; information so `customize-changed-options' could do its job.
;; The remainder of this file is for handling :version.
;; We provide a minimum of information so that `customize-changed-options'
;; can do its job.
;; For groups we set `custom-version', `group-documentation' and
;; `custom-tag' (which are shown in the customize buffer), so we
;; don't have to load the file containing the group.
;; `custom-versions-load-alist' is an alist that has as car a version
;; number and as elts the files that have variables or faces that
;; contain that version. These files should be loaded before showing
;; the customization buffer that `customize-changed-options'
;; generates.
;; This macro is used so we don't modify the information about
;; variables and groups if it's already set. (We don't know when
;; " (file-name-nondirectory generated-custom-dependencies-file)
@ -161,7 +157,8 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
(put ,symbol ,propname ,value)))
")
(let ((version-alist nil))
(let ((version-alist nil)
groups)
(mapatoms (lambda (symbol)
(let ((version (get symbol 'custom-version))
where)
@ -179,25 +176,32 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
(push where (cdr (assoc version version-alist))))
(push (list version where) version-alist)))
;; This is a group
(insert "(custom-put-if-not '" (symbol-name symbol)
" 'custom-version ")
(prin1 version (current-buffer))
(insert ")\n")
(insert "(custom-put-if-not '" (symbol-name symbol))
(insert " 'group-documentation ")
(prin1 (get symbol 'group-documentation) (current-buffer))
(insert ")\n")
(when (get symbol 'custom-tag)
(insert "(custom-put-if-not '" (symbol-name symbol))
(insert " 'custom-tag ")
(prin1 (get symbol 'custom-tag) (current-buffer))
(insert ")\n"))
))))))
(push (list (symbol-name symbol)
(with-output-to-string (prin1 version))
(with-output-to-string
(prin1 (get symbol 'group-documentation)))
(if (get symbol 'custom-tag)
(with-output-to-string
(prin1 (get symbol 'custom-tag)))))
groups)))))))
(dolist (e (sort groups (lambda (e1 e2) (string< (car e1) (car e2)))))
(insert "(custom-put-if-not '" (car e) " 'custom-version '"
(nth 1 e) ")\n")
(insert "(custom-put-if-not '" (car e) " 'group-documentation "
(nth 2 e) ")\n")
(if (nth 3 e)
(insert "(custom-put-if-not '" (car e) " 'custom-tag "
(nth 3 e) ")\n")))
(insert "\n(defvar custom-versions-load-alist "
(if version-alist "'" ""))
(prin1 version-alist (current-buffer))
(insert "\n \"For internal use by custom.\")\n"))
(prin1 (sort version-alist (lambda (e1 e2) (version< (car e1) (car e2))))
(current-buffer))
(insert "\n \"For internal use by custom.
This is an alist whose members have as car a version string, and as
elements the files that have variables or faces that contain that
version. These files should be loaded before showing the customization
buffer that `customize-changed-options' generates.\")\n\n"))
(save-buffer)
(message "Generating %s...done" generated-custom-dependencies-file))