Mercurial > emacs
changeset 6589:764913e8463c
(Vcompletion_regexp_list): New var.
(syms_of_minibuf): Set up Lisp var.
(Ftry_completion, Fall_completions):
Limit possible completions to strings matching those regexps.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 30 Mar 1994 05:17:30 +0000 |
parents | fa33a3332906 |
children | 2c66255e9469 |
files | src/minibuf.c |
diffstat | 1 files changed, 42 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/minibuf.c Wed Mar 30 03:12:53 1994 +0000 +++ b/src/minibuf.c Wed Mar 30 05:17:30 1994 +0000 @@ -87,6 +87,10 @@ int completion_ignore_case; +/* List of regexps that should restrict possible completions. */ + +Lisp_Object Vcompletion_regexp_list; + /* Nonzero means raise the minibuffer frame when the minibuffer is entered. */ @@ -656,12 +660,27 @@ /* Is this element a possible completion? */ - if (XTYPE (eltstring) == Lisp_String && - XSTRING (string)->size <= XSTRING (eltstring)->size && - 0 > scmp (XSTRING (eltstring)->data, XSTRING (string)->data, - XSTRING (string)->size)) + if (XTYPE (eltstring) == Lisp_String + && XSTRING (string)->size <= XSTRING (eltstring)->size + && 0 > scmp (XSTRING (eltstring)->data, XSTRING (string)->data, + XSTRING (string)->size)) { /* Yes. */ + Lisp_Object regexps; + Lisp_Object zero; + XFASTINT (zero) = 0; + + /* Ignore this element if it fails to match all the regexps. */ + for (regexps = Vcompletion_regexp_list; CONSP (regexps); + regexps = XCONS (regexps)->cdr) + { + tem = Fstring_match (XCONS (regexps)->car, eltstring, zero); + if (NILP (tem)) + break; + } + if (CONSP (regexps)) + continue; + /* Ignore this element if there is a predicate and the predicate doesn't like it. */ @@ -855,6 +874,21 @@ XSTRING (string)->size)) { /* Yes. */ + Lisp_Object regexps; + Lisp_Object zero; + XFASTINT (zero) = 0; + + /* Ignore this element if it fails to match all the regexps. */ + for (regexps = Vcompletion_regexp_list; CONSP (regexps); + regexps = XCONS (regexps)->cdr) + { + tem = Fstring_match (XCONS (regexps)->car, eltstring, zero); + if (NILP (tem)) + break; + } + if (CONSP (regexps)) + continue; + /* Ignore this element if there is a predicate and the predicate doesn't like it. */ @@ -1581,6 +1615,10 @@ "*Non-nil means entering the minibuffer raises the minibuffer's frame."); minibuffer_auto_raise = 0; + DEFVAR_LISP ("completion-regexp-list", &Vcompletion_regexp_list, + "List of regexps that should restrict possible completions."); + Vcompletion_regexp_list = Qnil; + defsubr (&Sread_from_minibuffer); defsubr (&Seval_minibuffer); defsubr (&Sread_minibuffer);