Mercurial > emacs
changeset 87002:c6a200c4eebd
(declare-function): Moved from byte-run.el.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 03 Dec 2007 00:33:30 +0000 |
parents | f5f1ba43cab1 |
children | c24d6306ce07 |
files | lisp/subr.el |
diffstat | 1 files changed, 36 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Mon Dec 03 00:33:06 2007 +0000 +++ b/lisp/subr.el Mon Dec 03 00:33:30 2007 +0000 @@ -36,6 +36,42 @@ (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) ;;;; Basic Lisp macros.