]> git.eshelyaron.com Git - emacs.git/commitdiff
(byte-compile-nogroup-warn): New function.
authorRichard M. Stallman <rms@gnu.org>
Sat, 14 May 2005 12:30:08 +0000 (12:30 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 14 May 2005 12:30:08 +0000 (12:30 +0000)
(byte-compile-form): Call byte-compile-nogroup-warn.
(byte-compile-warning-types): Doc fix.

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

index 94b9b54e0acc384d50d4ad16ca4644d2e11a25b1..12c1da63322e2cc8bdf5326ec7c51e8b5c117645 100644 (file)
@@ -1,5 +1,9 @@
 2005-05-14  Richard M. Stallman  <rms@gnu.org>
 
+       * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn): New function.
+       (byte-compile-form): Call byte-compile-nogroup-warn.
+       (byte-compile-warning-types): Doc fix.
+
        * progmodes/cc-engine.el (c-literal-faces):
        Add font-lock-comment-delimiter-face.
 
index b93979de82c1876309ddc05bf8a3d7f09d3cb146..970a64d062bb811a680ddbe90ecae837e3859e8d 100644 (file)
@@ -338,8 +338,8 @@ Elements of the list may be be:
 
   free-vars   references to variables not in the current lexical scope.
   unresolved  calls to unknown functions.
-  callargs    lambda calls with args that don't match the definition.
-  redefine    function cell redefined from a macro to a lambda or vice
+  callargs    function calls with args that don't match the definition.
+  redefine    function name redefined from a macro to ordinary function or vice
               versa, or redefined to take a different number of arguments.
   obsolete    obsolete variables and functions.
   noruntime   functions that may not be defined at runtime (typically
@@ -1244,6 +1244,20 @@ extra args."
 (dolist (elt '(format message error))
   (put elt 'byte-compile-format-like t))
 
+;; 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)))
+    (unless (plist-get keyword-args :group)
+      (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))))
+       (if (and (consp name) (eq (car name) 'quote))
+          (cadr name) name)))))
+
 ;; Warn if the function or macro is being redefined with a different
 ;; number of arguments.
 (defun byte-compile-arglist-warn (form macrop)
@@ -2729,7 +2743,7 @@ If FORM is a lambda or a macro, byte-compile it as a function."
           (when (byte-compile-const-symbol-p fn)
             (byte-compile-warn "`%s' called as a function" fn))
           (and (memq 'interactive-only byte-compile-warnings)
-               (memq (car form) byte-compile-interactive-only-functions)
+               (memq fn byte-compile-interactive-only-functions)
                (byte-compile-warn "`%s' used from Lisp code\n\
 That command is designed for interactive use only" fn))
           (if (and handler
@@ -2739,8 +2753,10 @@ That command is designed for interactive use only" fn))
               (progn
                 (byte-compile-set-symbol-position fn)
                 (funcall handler form))
-            (if (memq 'callargs byte-compile-warnings)
-                (byte-compile-callargs-warn form))
+            (when (memq 'callargs byte-compile-warnings)
+              (if (memq fn '(custom-declare-group custom-declare-variable custom-declare-face))
+                  (byte-compile-nogroup-warn form))
+              (byte-compile-callargs-warn form))
             (byte-compile-normal-call form))
           (if (memq 'cl-functions byte-compile-warnings)
               (byte-compile-cl-warn form))))