+2014-02-27 Glenn Morris <rgm@gnu.org>
+
+ * minibuf.texi (Programmed Completion):
+ Mention completion-table-with-cache.
+
2014-02-25 Glenn Morris <rgm@gnu.org>
* display.texi (Window Systems):
and the interface for programmed completion functions.
@end defun
+@defun completion-table-with-cache function &optional ignore-case
+This is a wrapper for @code{completion-table-dynamic} that saves the
+last argument-result pair. This means that multiple lookups with the
+same argument only need to call @var{function} once. This can be useful
+when a slow operation is involved, such as calling an external process.
+@end defun
+
@node Completion in Buffers
@subsection Completion in Ordinary Buffers
@cindex inline completion
strings (including for partial or substring completion), or call
`completion-hilit-commonality' to add the highlight.
++++
*** New function `completion-table-with-cache' is a wrapper for
`completion-table-dynamic' that caches the result of the last lookup.
++++
*** New function `completion-table-merge' to combine several
completion tables by merging their completions.
** New minor modes `prettify-symbols-mode' and `global-prettify-symbols-mode'
-let you enable symbol prettification (replacing a string like "lambda" with
-the Greek lambda character).
+display specified symbols as composed characters. E.g., in Emacs Lisp mode,
+this replaces the string "lambda" with the Greek lambda character.
** Terminal changes
2014-02-27 Glenn Morris <rgm@gnu.org>
+ * minibuffer.el (completion-table-dynamic)
+ (completion-table-with-cache): Doc fixes.
+
* emacs-lisp/crm.el (crm-default-separator, crm-separator)
(completing-read-multiple): Doc fixes.
The result of the `completion-table-dynamic' form is a function
that can be used as the COLLECTION argument to `try-completion' and
-`all-completions'. See Info node `(elisp)Programmed Completion'."
+`all-completions'. See Info node `(elisp)Programmed Completion'.
+
+See also the related function `completion-table-with-cache'."
(lambda (string pred action)
(if (or (eq (car-safe action) 'boundaries) (eq action 'metadata))
;; `fun' is not supposed to return another function but a plain old
(complete-with-action action (funcall fun string) string pred)))))
(defun completion-table-with-cache (fun &optional ignore-case)
- "Create dynamic completion table from FUN, with cache.
-This wraps `completion-table-dynamic', but saves the last
+ "Create dynamic completion table from function FUN, with cache.
+This is a wrapper for `completion-table-dynamic' that saves the last
argument-result pair from FUN, so that several lookups with the
same argument (or with an argument that starts with the first one)
-only need to call FUN once. Most useful when FUN performs a relatively
-slow operation, such as calling an external process (see Bug#11906).
+only need to call FUN once. This can be useful when FUN performs a
+relatively slow operation, such as calling an external process.
+
When IGNORE-CASE is non-nil, FUN is expected to be case-insensitive."
+ ;; See eg bug#11906.
(let* (last-arg last-result
(new-fun
(lambda (arg)