# HG changeset patch # User Richard M. Stallman # Date 1058198132 0 # Node ID 9cd313749c97711c514d03628795c671a85ab020 # Parent 3abc365e9d905f548d6f52847ccd4b6645cac6cd (Basic Completion): Add lazy-completion-table. (Programmed Completion): Add dynamic-completion-table. diff -r 3abc365e9d90 -r 9cd313749c97 lispref/minibuf.texi --- a/lispref/minibuf.texi Mon Jul 14 15:53:56 2003 +0000 +++ b/lispref/minibuf.texi Mon Jul 14 15:55:32 2003 +0000 @@ -84,7 +84,7 @@ @item @code{minibuffer-local-ns-map} is similar, except that @key{SPC} exits -just like @key{RET}. This is used mainly for Mocklisp compatibility. +just like @key{RET}. @item @code{minibuffer-local-completion-map} is for permissive completion. @@ -520,7 +520,7 @@ * High-Level Completion:: Convenient special cases of completion (reading buffer name, file name, etc.) * Reading File Names:: Using completion to read file names. -* Programmed Completion:: Finding the completions for a given file name. +* Programmed Completion:: Writing your own completion-function. @end menu @node Basic Completion @@ -662,6 +662,22 @@ non-@code{nil}, Emacs does not consider case significant in completion. @end defvar +@defmac lazy-completion-table var fun &rest args +This macro provides a way to initialize the variable @var{var} as a +completion table in a lazy way, not computing its actual contents +until they are first needed. You use this macro to produce a value +that you store in @var{var}. The actual computation of the proper +value is done the first time you do completion using @var{var}. It is +done by calling @var{fun} with the arguments @var{args}. The value +@var{fun} returns becomes the permanent value of @var{var}. + +@example +(defvar foo (lazy-completion-table foo make-my-alist 'global)) +(make-local-variable 'bar) +(setq bar (lazy-completion-table foo make-my-alist 'local) +@end example +@end defmac + @node Minibuffer Completion @subsection Completion and the Minibuffer @@ -1219,6 +1235,15 @@ Emacs uses programmed completion when completing file names. @xref{File Name Completion}. +@defmac dynamic-completion-table function +This macro is a convenient way to write a function that can act as +programmed completion function. The argument @var{function} should be +a function that takes one argument, a string, and returns an alist of +possible completions of it. You can think of +@code{dynamic-completion-table} as a transducer between that interface +and the interface for programmed completion functions. +@end defmac + @node Yes-or-No Queries @section Yes-or-No Queries @cindex asking the user questions