From ab5111e3df50ec7c21ffc86fb19e969db23c1f85 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 8 Jun 2008 02:07:25 +0000 Subject: [PATCH] (byte-compile-current-group): New var. (byte-compile-file): Initialize it. (byte-compile-nogroup-warn): Keep track of the current group. --- lisp/ChangeLog | 8 +++++++- lisp/emacs-lisp/bytecomp.el | 25 ++++++++++++++++++------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 53305d3ad21..d8d74ab2053 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2008-06-08 Stefan Monnier + + * 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 * 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 diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index e0a3f2221e2..1908e5790dd 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -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) -- 2.39.2