]> git.eshelyaron.com Git - emacs.git/commitdiff
(byte-compile-current-group): New var.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 8 Jun 2008 02:07:25 +0000 (02:07 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 8 Jun 2008 02:07:25 +0000 (02:07 +0000)
(byte-compile-file): Initialize it.
(byte-compile-nogroup-warn): Keep track of the current group.

lisp/ChangeLog
lisp/emacs-lisp/bytecomp.el

index 53305d3ad21b4cfad6cc25323c1360a3224dfaf7..d8d74ab205347304da3692107c82918d214c08bf 100644 (file)
@@ -1,3 +1,9 @@
+2008-06-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/bytecomp.el (byte-compile-current-group): New var.
+       (byte-compile-file): Initialize it.
+       (byte-compile-nogroup-warn): Keep track of the current group.
+
 2008-06-08  Glenn Morris  <rgm@gnu.org>
 
        * Makefile.in (compile, compile-always, bootstrap-prepare):
@@ -7,7 +13,7 @@
 
        * language/hanja-util.el (hanja-init-load): Use a char-table for
        hanja-table.
-       (hangul-to-hanja-char): Adjusted for the above change.
+       (hangul-to-hanja-char): Adjust for the above change.
 
 2008-06-07  Glenn Morris  <rgm@gnu.org>
 
index e0a3f2221e2cf4e434f0c77bc9ff72f8503e6dcb..1908e5790ddbba851a37126e77418830ec96a2e7 100644 (file)
@@ -924,6 +924,7 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
 (defvar byte-compile-current-form nil)
 (defvar byte-compile-dest-file nil)
 (defvar byte-compile-current-file nil)
+(defvar byte-compile-current-group nil)
 (defvar byte-compile-current-buffer nil)
 
 ;; Log something that isn't a warning.
@@ -1335,9 +1336,13 @@ extra args."
 
 ;; Warn if a custom definition fails to specify :group.
 (defun byte-compile-nogroup-warn (form)
-  (let ((keyword-args (cdr (cdr (cdr (cdr form)))))
-        (name (cadr form)))
-    (or (not (eq (car-safe name) 'quote))
+  (if (and (memq (car form) '(custom-declare-face custom-declare-variable))
+           byte-compile-current-group)
+      ;; The group will be provided implicitly.
+      nil
+    (let ((keyword-args (cdr (cdr (cdr (cdr form)))))
+          (name (cadr form)))
+      (or (not (eq (car-safe name) 'quote))
         (and (eq (car form) 'custom-declare-group)
              (equal name ''emacs))
         (plist-get keyword-args :group)
@@ -1345,10 +1350,15 @@ extra args."
         (byte-compile-warn
          "%s for `%s' fails to specify containing group"
          (cdr (assq (car form)
-                    '((custom-declare-group . defgroup)
-                      (custom-declare-face . defface)
-                      (custom-declare-variable . defcustom))))
-         (cadr name)))))
+                      '((custom-declare-group . defgroup)
+                        (custom-declare-face . defface)
+                        (custom-declare-variable . defcustom))))
+           (cadr name)))
+      ;; Update the current group, if needed.
+      (if (and byte-compile-current-file ;Only when byte-compiling a whole file.
+               (eq (car form) 'custom-declare-group)
+               (eq (car-safe name) 'quote))
+          (setq byte-compile-current-group (cadr name))))))
 
 ;; Warn if the function or macro is being redefined with a different
 ;; number of arguments.
@@ -1713,6 +1723,7 @@ The value is non-nil if there were no errors, nil if errors."
   ;; Force logging of the file name for each file compiled.
   (setq byte-compile-last-logged-file nil)
   (let ((byte-compile-current-file bytecomp-filename)
+        (byte-compile-current-group nil)
        (set-auto-coding-for-load t)
        target-file input-buffer output-buffer
        byte-compile-dest-file)