1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-02 08:22:22 +00:00

Avoid errors in completion due to 'completion-regexp-list'

* doc/lispref/minibuf.texi (Basic Completion):
* src/minibuf.c (syms_of_minibuf) <completion-regexp-list>:
Document that global non-nil settings of 'completion-regexp-list'
are not safe.

* lisp/minibuffer.el (completion-pcm--merge-completions): Avoid
errors in 'try-completion' when PREFIX is nil.  (Bug#64351)
This commit is contained in:
Eli Zaretskii 2023-07-02 09:16:58 +03:00
parent 15ff876177
commit 37ed3d15f3
3 changed files with 14 additions and 2 deletions

View File

@ -1052,6 +1052,12 @@ This is a list of regular expressions. The completion functions only
consider a completion acceptable if it matches all regular expressions
in this list, with @code{case-fold-search} (@pxref{Searching and Case})
bound to the value of @code{completion-ignore-case}.
Do not set this variable to a non-@code{nil} value globally, as that
is not safe and will probably cause errors in completion commands.
This variable should be only let-bound to non-@code{nil} values around
calls to basic completion functions: @code{try-completion},
@code{test-completion}, and @code{all-completions}.
@end defvar
@defmac lazy-completion-table var fun

View File

@ -4027,7 +4027,8 @@ the same set of elements."
(setq ccs (nreverse ccs))
(let* ((prefix (try-completion fixed comps))
(unique (or (and (eq prefix t) (setq prefix fixed))
(eq t (try-completion prefix comps)))))
(and (stringp prefix)
(eq t (try-completion prefix comps))))))
(unless (or (eq elem 'prefix)
(equal prefix ""))
(push prefix res))

View File

@ -2471,7 +2471,12 @@ The basic completion functions only consider a completion acceptable
if it matches all regular expressions in this list, with
`case-fold-search' bound to the value of `completion-ignore-case'.
See Info node `(elisp)Basic Completion', for a description of these
functions. */);
functions.
Do not set this variable to a non-nil value globally, as that is not
safe and will probably cause errors in completion commands. This
variable should be only let-bound to non-nil values around calls to
basic completion functions like `try-completion' and `all-completions'. */);
Vcompletion_regexp_list = Qnil;
DEFVAR_BOOL ("minibuffer-allow-text-properties",