Next: , Previous: Inline Functions, Up: Functions

12.12 The declare Form

declare is a special macro which can be used to add “meta” properties to a function or macro: for example, marking it as obsolete, or giving its forms a special <TAB> indentation convention in Emacs Lisp mode.

— Macro: declare specs...

This macro ignores its arguments and evaluates to nil; it has no run-time effect. However, when a declare form occurs in the declare argument of a defun or defsubst function definition (see Defining Functions) or a defmacro macro definition (see Defining Macros), it appends the properties specified by specs to the function or macro. This work is specially performed by defun, defsubst, and defmacro.

Each element in specs should have the form (property args...), which should not be quoted. These have the following effects:

(advertised-calling-convention signature when)
This acts like a call to set-advertised-calling-convention (see Obsolete Functions); signature specifies the correct argument list for calling the function or macro, and when should be a string indicating when the variable was first made obsolete.
(debug edebug-form-spec)
This is valid for macros only. When stepping through the macro with Edebug, use edebug-form-spec. See Instrumenting Macro Calls.
(doc-string n)
Use element number n, if any, as the documentation string.
(indent indent-spec)
Indent calls to this function or macro according to indent-spec. This is typically used for macros, though it works for functions too. See Indenting Macros.
(obsolete current-name when)
Mark the function or macro as obsolete, similar to a call to make-obsolete (see Obsolete Functions). current-name should be a symbol (in which case the warning message says to use that instead), a string (specifying the warning message), or nil (in which case the warning message gives no extra details). when should be a string indicating when the function or macro was first made obsolete.