* lisp/cus-dep.el (custom-make-dependencies): Add a fallback method
authorGlenn Morris <rgm@gnu.org>
Wed, 15 May 2013 23:35:10 +0000 (19:35 -0400)
committerGlenn Morris <rgm@gnu.org>
Wed, 15 May 2013 23:35:10 +0000 (19:35 -0400)
for getting :group.

lisp/ChangeLog
lisp/cus-dep.el

index c14a81b..048b958 100644 (file)
@@ -1,8 +1,10 @@
 2013-05-15  Glenn Morris  <rgm@gnu.org>
 
-       * cus-dep.el (custom-make-dependencies): Ignore dotfiles (dir-locals).
+       * cus-dep.el: Provide a feature.
+       (custom-make-dependencies): Ignore dotfiles (dir-locals).
        Don't mistakenly ignore files whose basenames match a basename
        from preloaded-file-list (eg cedet/ede/simple.el).
+       Add a fallback method for getting :group.
 
 2013-05-15  Juri Linkov  <juri@jurta.org>
 
index d31568b..4c8a977 100644 (file)
@@ -89,13 +89,30 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
                     (while (re-search-forward
                             "^(def\\(custom\\|face\\|group\\)" nil t)
                       (beginning-of-line)
-                      (let ((expr (read (current-buffer))))
+                      (let ((type (match-string 1))
+                           (expr (read (current-buffer))))
                         (condition-case nil
                             (let ((custom-dont-initialize t))
-                              ;; Why do we need to eval just for the name?
-                              (eval expr)
-                              (put (nth 1 expr) 'custom-where name))
-                          (error nil))))
+                              ;; Eval to get the 'custom-group, -tag,
+                              ;; -version, group-documentation etc properties.
+                              (put (nth 1 expr) 'custom-where name)
+                              (eval expr))
+                          ;; Eval failed for some reason.  Eg maybe the
+                          ;; defcustom uses something defined earlier
+                          ;; in the file (we haven't loaded the file).
+                          ;; In most cases, we can still get the :group.
+                          (error
+                           (ignore-errors
+                             (let ((group (cadr (memq :group expr))))
+                               (and group
+                                    (eq (car group) 'quote)
+                                    (custom-add-to-group
+                                     (cadr group)
+                                     (nth 1 expr)
+                                     (intern (format "custom-%s"
+                                                     (if (equal type "custom")
+                                                         "variable"
+                                                       type)))))))))))
                   (error nil)))))))))
   (message "Generating %s..." generated-custom-dependencies-file)
   (set-buffer (find-file-noselect generated-custom-dependencies-file))
@@ -185,5 +202,6 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
   (message "Generating %s...done" generated-custom-dependencies-file))
 
 \f
+(provide 'cus-dep)
 
 ;;; cus-dep.el ends here