diff options
author | Per Abrahamsen <abraham@dina.kvl.dk> | 1997-04-11 13:09:47 +0000 |
---|---|---|
committer | Per Abrahamsen <abraham@dina.kvl.dk> | 1997-04-11 13:09:47 +0000 |
commit | 52233b0cd3880708c336e3dca3200dad4501f981 (patch) | |
tree | 15c3299dab4e6b2aff5fcf36c566de417924cdf5 /lisp/cus-dep.el | |
parent | 124dbbe583765f5d81f527ce01208b420eddef91 (diff) | |
download | emacs-52233b0cd3880708c336e3dca3200dad4501f981.tar.gz |
Initial revision
Diffstat (limited to 'lisp/cus-dep.el')
-rw-r--r-- | lisp/cus-dep.el | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/lisp/cus-dep.el b/lisp/cus-dep.el new file mode 100644 index 00000000000..d2364c29029 --- /dev/null +++ b/lisp/cus-dep.el @@ -0,0 +1,67 @@ +;;; cus-dep.el --- Find customization dependencies. +;; +;; Copyright (C) 1997 Free Software Foundation, Inc. +;; +;; Author: Per Abrahamsen <abraham@dina.kvl.dk> +;; Keywords: internal + +;;; Code: + +(require 'cl) +(load-file "widget.el") +(load-file "custom.el") +(load-file "cus-face.el") + +(defun custom-make-dependencies () + "Batch function to extract custom dependencies from .el files. +Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies" + (let ((enable-local-eval nil) + (files (directory-files "" nil "\\`[^=].*\\.el\\'" t)) + file) + (while files + (setq file (car files) + files (cdr files)) + (message "Checking %s..." file) + (set-buffer (find-file-noselect file)) + (goto-char (point-min)) + (string-match "\\`\\(.*\\)\\.el\\'" file) + (condition-case nil + (let ((name (file-name-nondirectory (match-string 1 file)))) + (while t + (let ((expr (read (current-buffer)))) + (when (and (listp expr) + (memq (car expr) '(defcustom defface defgroup))) + (eval expr) + (put (nth 1 expr) 'custom-where name))))) + (error nil)) + (kill-buffer (current-buffer)))) + (message "Generating cus-load.el...") + (find-file "cus-load.el") + (erase-buffer) + (insert "\ +;;; cus-load.el --- automatically extracted custom dependencies +;; +;;; Code: +") + (mapatoms (lambda (symbol) + (let ((members (get symbol 'custom-group)) + item where found) + (when members + (while members + (setq item (car (car members)) + members (cdr members) + where (get item 'custom-where)) + (unless (or (null where) + (member where found)) + (if found + (insert " ") + (insert "(put '" (symbol-name symbol) + " 'custom-loads '(")) + (insert (prin1-to-string where)) + (push where found))) + (insert "))\n"))))) + (insert "\n;;; cus-load.el ends here\n") + (save-buffer) + (message "Generating cus-load.el...")) + +;;; cus-dep.el ends here |