changeset 51914:9cd313749c97

(Basic Completion): Add lazy-completion-table. (Programmed Completion): Add dynamic-completion-table.
author Richard M. Stallman <rms@gnu.org>
date Mon, 14 Jul 2003 15:55:32 +0000
parents 3abc365e9d90
children ac3f1b24be99
files lispref/minibuf.texi
diffstat 1 files changed, 27 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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