* doc/lispref/functions.texi (Declare Form): Document gv-expander,

gv-setter, and compiler-macro.

Fixes: debbugs:16829
This commit is contained in:
Stefan Monnier 2014-02-21 22:39:10 -05:00
parent e59fa9adb3
commit add6de1c94
2 changed files with 55 additions and 12 deletions

View file

@ -1,3 +1,8 @@
2014-02-22 Stefan Monnier <monnier@iro.umontreal.ca>
* functions.texi (Declare Form): Document gv-expander, gv-setter, and
compiler-macro (bug#16829).
2014-02-21 Juanma Barranquero <lekktu@gmail.com>
* windows.texi (Window Configurations): Doc fix.
@ -16,6 +21,11 @@
* functions.texi (Defining Functions): Mention defalias-fset-function.
2014-02-17 Stefan Monnier <monnier@iro.umontreal.ca>
* minibuf.texi (Completion Commands): Don't document obsolete
`common-substring' arg of display-completion-list.
2014-02-17 Glenn Morris <rgm@gnu.org>
* minibuf.texi (Text from Minibuffer): Update read-regexp details.
@ -31,8 +41,8 @@
2014-02-10 Lars Ingebrigtsen <larsi@gnus.org>
* text.texi (User-Level Deletion): Document
`delete-trailing-whitespace' (bug#15309).
* text.texi (User-Level Deletion):
Document `delete-trailing-whitespace' (bug#15309).
2014-02-09 Lars Ingebrigtsen <larsi@gnus.org>
@ -237,8 +247,8 @@
2013-12-24 Tassilo Horn <tsdh@gnu.org>
* control.texi (Pattern matching case statement): Fix missing
argument in simple expression language sample (Bug#16238). Add
some sample programs written in that language. Mention that
argument in simple expression language sample (Bug#16238).
Add some sample programs written in that language. Mention that
`pcase' requires lexical binding.
2013-12-23 Xue Fuqiao <xfq.free@gmail.com>
@ -253,8 +263,8 @@
2013-12-23 Chong Yidong <cyd@gnu.org>
* keymaps.texi (Controlling Active Maps): Renamed
set-temporary-overlay-map to set-transient map. Doc fixes.
* keymaps.texi (Controlling Active Maps):
Rename set-temporary-overlay-map to set-transient map. Doc fixes.
(Searching Keymaps): The transient keymap takes precedence.
2013-12-23 Glenn Morris <rgm@gnu.org>
@ -523,8 +533,8 @@
2013-10-08 Eli Zaretskii <eliz@gnu.org>
Support menus on text-mode terminals.
* keymaps.texi (Defining Menus, Mouse Menus, Menu Bar): Modify
wording to the effect that menus are supported on TTYs.
* keymaps.texi (Defining Menus, Mouse Menus, Menu Bar):
Modify wording to the effect that menus are supported on TTYs.
* frames.texi (Pop-Up Menus, Dialog Boxes)
(Display Feature Testing): Update for menu support on TTYs.
@ -731,8 +741,8 @@
2013-07-22 Michael Albinus <michael.albinus@gmx.de>
* files.texi (Magic File Names): Add file-notify-add-watch,
file-notify-rm-watch and file-notify-supported-p. Move
file-remote-p down.
file-notify-rm-watch and file-notify-supported-p.
Move file-remote-p down.
* errors.texi (Standard Errors): Add file-notify-error.

View file

@ -1554,14 +1554,17 @@ following effects:
This acts like a call to @code{set-advertised-calling-convention}
(@pxref{Obsolete Functions}); @var{signature} specifies the correct
argument list for calling the function or macro, and @var{when} should
be a string indicating when the variable was first made obsolete.
be a string indicating when the old argument list was first made obsolete.
@item (debug @var{edebug-form-spec})
This is valid for macros only. When stepping through the macro with
Edebug, use @var{edebug-form-spec}. @xref{Instrumenting Macro Calls}.
@item (doc-string @var{n})
Use element number @var{n}, if any, as the documentation string.
This is used when defining a function or macro which itself will be used to
define entities like functions, macros, or variables. It indicates that
the @var{n}th argument, if any, should be considered
as a documentation string.
@item (indent @var{indent-spec})
Indent calls to this function or macro according to @var{indent-spec}.
@ -1576,7 +1579,37 @@ instead), a string (specifying the warning message), or @code{nil} (in
which case the warning message gives no extra details). @var{when}
should be a string indicating when the function or macro was first
made obsolete.
@item (compiler-macro @var{expander})
This can only be used for functions, and tells the compiler to use
@var{expander} as an optimization function. When encountering a call to the
function, of the form @code{(@var{function} @var{args}@dots)}, the macro
expander will call @var{expander} with that form as well as with
@var{args}@dots, and @var{expander} can either return a new expression to use
instead of the function call, or it can return just the form unchanged,
to indicate that the function call should be left alone. @var{expander} can
be a symbol, or it can be a form @code{(lambda (@var{arg}) @var{body})} in
which case @var{arg} will hold the original function call expression, and the
(unevaluated) arguments to the function can be accessed using the function's
formal arguments.
@item (gv-expander @var{expander})
Declare @var{expander} to be the function to handle calls to the macro (or
function) as a generalized variable, similarly to @code{gv-define-expander}.
@var{expander} can be a symbol or it can be of the form @code{(lambda
(@var{arg}) @var{body})} in which case that function will additionally have
access to the macro (or function)'s arguments.
@item (gv-setter @var{setter})
Declare @var{setter} to be the function to handle calls to the macro (or
function) as a generalized variable. @var{setter} can be a symbol in which
case it will be passed to @code{gv-define-simple-setter}, or it can be of the
form @code{(lambda (@var{arg}) @var{body})} in which case that function will
additionally have access to the macro (or function)'s arguments and it will
passed to @code{gv-define-setter}.
@end table
@end defmac
@node Declaring Functions