]> git.eshelyaron.com Git - emacs.git/commitdiff
(declare-function): Moved from byte-run.el.
authorRichard M. Stallman <rms@gnu.org>
Mon, 3 Dec 2007 00:33:35 +0000 (00:33 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 3 Dec 2007 00:33:35 +0000 (00:33 +0000)
lisp/ChangeLog
lisp/subr.el

index 373eead8fdc0181987dda9c030883d0e4031f982..2745a811c29ffaf1faafdbceeb0a6214596fe57d 100644 (file)
@@ -1,5 +1,9 @@
 2007-12-03  Richard Stallman  <rms@gnu.org>
 
+       * subr.el (declare-function): Moved from byte-run.el.
+
+       * emacs-lisp/byte-run.el (declare-function): Moved to subr.el
+
        * window.el (recenter-top-bottom): Don't use `ecase'.
 
 2007-12-02  Karl Fogel  <kfogel@red-bean.com>
index 59be9164b60b6f55e80873d290e660f61ae7c040..3461700d6cb3bc817c238fc691bec3e41283a916 100644 (file)
@@ -36,6 +36,42 @@ Each element of this list holds the arguments to one call to `defcustom'.")
   (setq custom-declare-variable-list
        (cons arguments custom-declare-variable-list)))
 
+(defmacro declare-function (fn file &optional arglist fileonly)
+  "Tell the byte-compiler that function FN is defined, in FILE.
+Optional ARGLIST is the argument list used by the function.  The
+FILE argument is not used by the byte-compiler, but by the
+`check-declare' package, which checks that FILE contains a
+definition for FN.  ARGLIST is used by both the byte-compiler and
+`check-declare' to check for consistency.
+
+FILE can be either a Lisp file (in which case the \".el\"
+extension is optional), or a C file.  C files are expanded
+relative to the Emacs \"src/\" directory.  Lisp files are
+searched for using `locate-library', and if that fails they are
+expanded relative to the location of the file containing the
+declaration.  A FILE with an \"ext:\" prefix is an external file.
+`check-declare' will check such files if they are found, and skip
+them without error if they are not.
+
+FILEONLY non-nil means that `check-declare' will only check that
+FILE exists, not that it defines FN.  This is intended for
+function-definitions that `check-declare' does not recognize, e.g.
+`defstruct'.
+
+To specify a value for FILEONLY without passing an argument list,
+set ARGLIST to `t'.  This is necessary because `nil' means an
+empty argument list, rather than an unspecified one.
+
+Note that for the purposes of `check-declare', this statement
+must be the first non-whitespace on a line, and everything up to
+the end of FILE must be all on the same line.  For example:
+
+\(declare-function c-end-of-defun \"progmodes/cc-cmds.el\"
+                  \(&optional arg))
+
+For more information, see Info node `elisp(Declaring Functions)'."
+  ;; Does nothing - byte-compile-declare-function does the work.
+  nil)
 \f
 ;;;; Basic Lisp macros.